diff --git a/LaiPuLaser.sln b/LaiPuLaser.sln new file mode 100644 index 0000000..0c011b9 --- /dev/null +++ b/LaiPuLaser.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Laipu", "LaiPuLaser\LaiPuLaser.vcxproj", "{2AD399A8-0907-418E-8F7F-42C75175C7FE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2AD399A8-0907-418E-8F7F-42C75175C7FE}.Debug|Win32.ActiveCfg = Debug|Win32 + {2AD399A8-0907-418E-8F7F-42C75175C7FE}.Debug|Win32.Build.0 = Debug|Win32 + {2AD399A8-0907-418E-8F7F-42C75175C7FE}.Release|Win32.ActiveCfg = Release|Win32 + {2AD399A8-0907-418E-8F7F-42C75175C7FE}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/LaiPuLaser/341-bian11_T0.def b/LaiPuLaser/341-bian11_T0.def new file mode 100644 index 0000000..9c12e8a Binary files /dev/null and b/LaiPuLaser/341-bian11_T0.def differ diff --git a/LaiPuLaser/341-bian11_T1.def b/LaiPuLaser/341-bian11_T1.def new file mode 100644 index 0000000..bad0411 --- /dev/null +++ b/LaiPuLaser/341-bian11_T1.def @@ -0,0 +1 @@ +L? \ No newline at end of file diff --git a/LaiPuLaser/ADVMOT.lib b/LaiPuLaser/ADVMOT.lib new file mode 100644 index 0000000..d03a936 Binary files /dev/null and b/LaiPuLaser/ADVMOT.lib differ diff --git a/LaiPuLaser/ActCoordErr/2018_06_2219_08_17_X_ErrCnt_[5.0].txt b/LaiPuLaser/ActCoordErr/2018_06_2219_08_17_X_ErrCnt_[5.0].txt new file mode 100644 index 0000000..3122f51 --- /dev/null +++ b/LaiPuLaser/ActCoordErr/2018_06_2219_08_17_X_ErrCnt_[5.0].txt @@ -0,0 +1 @@ +\ActCoordErr\2018_06_2219_08_17_X_ErrCnt_[5.0].txt \ No newline at end of file diff --git a/LaiPuLaser/ActCoordErr/2018_06_2219_08_20_X_ErrCnt_[5.0].txt b/LaiPuLaser/ActCoordErr/2018_06_2219_08_20_X_ErrCnt_[5.0].txt new file mode 100644 index 0000000..7c75fab --- /dev/null +++ b/LaiPuLaser/ActCoordErr/2018_06_2219_08_20_X_ErrCnt_[5.0].txt @@ -0,0 +1 @@ +\ActCoordErr\2018_06_2219_08_20_X_ErrCnt_[5.0].txt \ No newline at end of file diff --git a/LaiPuLaser/ActCoordErr/2018_06_2219_08_21_X_ErrCnt_[5.0].txt b/LaiPuLaser/ActCoordErr/2018_06_2219_08_21_X_ErrCnt_[5.0].txt new file mode 100644 index 0000000..3119124 --- /dev/null +++ b/LaiPuLaser/ActCoordErr/2018_06_2219_08_21_X_ErrCnt_[5.0].txt @@ -0,0 +1 @@ +\ActCoordErr\2018_06_2219_08_21_X_ErrCnt_[5.0].txt \ No newline at end of file diff --git a/LaiPuLaser/AdvMotApi.h b/LaiPuLaser/AdvMotApi.h new file mode 100644 index 0000000..0c82564 --- /dev/null +++ b/LaiPuLaser/AdvMotApi.h @@ -0,0 +1,768 @@ +// +// Copyright (c) Advantech Corporation. All rights reserved. +// +// +// Use of this source code is subject to the terms of the Advantech end-user +// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. +// If you did not accept the terms of the EULA, you are not authorized to use +// this source code. For a copy of the EULA, please see the LICENSE.RTF on your +// install media. +// +//л˶ƿӿͷļ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "AdvMotDev.h" +#include "AdvMotDrv.h" +#include "AdvMotPropID.h" +#include "AdvMotErr.h" + + +//Add for other Corp. // [6/8/2011 dan.yang] +#ifndef tagPT_DEVLIST +#define tagPT_DEVLIST +typedef struct tagPT_DEVLIST +{ + DWORD dwDeviceNum; + char szDeviceName[50]; + SHORT nNumOfSubdevices; +} DEVLIST, *LPDEVLIST; + +#endif + +// [11/26/2014 dan] +#ifndef _DEV_IO_MAP_INFO +#define _DEV_IO_MAP_INFO +typedef struct _DEV_IO_MAP_INFO +{ + char Name[50]; + ULONG Index; + ULONG Offset; + ULONG ByteLength; + ULONG SlotID; + + ULONG PortChanID; + ULONG ModuleID; + char ModuleName[16]; + char Description[100]; +} DEV_IO_MAP_INFO, *PDEV_IO_MAP_INFO; +#endif + +#ifndef _ADVAPI_SLAVE_INFO +#define _ADVAPI_SLAVE_INFO +typedef struct { + ULONG desc; /**< Port descriptors. */ + ULONG link_up; /**< Link detected. */ + ULONG loop_closed; /**< Loop closed. */ + ULONG next_slave; /**< Connected Position of slaves. */ + ULONG delay_to_next_dc; +} port_info; + +typedef struct _ADVAPI_SLAVE_INFO_ +{ + ULONG SlaveID; + ULONG Position; + ULONG VendorID; + ULONG ProductID; + ULONG RevisionNo; + ULONG SerialNo; + ULONG driverCnts; + port_info ports[4]; + ULONG transmission_delay; + char DeviceName[64]; +}ADVAPI_SLAVE_INFO, *PADVAPI_SLAVE_INFO; +#endif + +#ifndef _DEV_ARES_INFO +#define _DEV_ARES_INFO +typedef struct _DEV_ARES_INFO +{ + char Name[10][32]; +} DEV_ARES_INFO, *PDEV_ARES_INFO; +#endif + +#ifndef _DEV_PRE_SCAN_DATA +#define _DEV_PRE_SCAN_DATA +typedef struct _DEV_PRE_SCAN_DATA +{ + F64 XScanData; + F64 YScanData; + F64 ZScanData; +} DEV_PRE_SCAN_DATA, *PDEV_PRE_SCAN_DATA; +#endif + +#ifndef ADVCMNAPI +#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) +#define ADVCMNAPI __stdcall +#endif +#endif + +/* ++-----------------------------------------------------------------------------+ +| ************ Advantech Motion Master Device Type ID************************ | ++-----------------------------------------------------------------------------+ +*/ +//U32 ADVCMNAPI Acm_GetAvailableDevNum(U32 *DeviceNum); //Add for other corp. [dan.yang 2011.06.08] +U32 ADVCMNAPI Acm_GetAvailableDevs(DEVLIST *DeviceList, U32 MaxEntries, PU32 OutEntries); //Add for other corp. [dan.yang 2011.06.08] +void ADVCMNAPI GetAvailalbe_AMONet(DWORD dwMasDevNum, //Add for other corp. [dan.yang 2011.07.13] + DEVLIST *DeviceList, + ULONG *devIndex, + ULONG *OutEntries); +BOOL ADVCMNAPI Acm_GetErrorMessage(U32 ErrorCode, PI8 lpszError, U32 nMaxError);// [9/5/2011 dan.yang] + +U32 ADVCMNAPI Acm_GpMoveCircularRel_Angle(HAND GroupHandle, // [8/15/2012 dan.yang] + PF64 CenterArray, + U16 Degree, + PU32 ArrayElements, + I16 Direction); + +U32 ADVCMNAPI Acm_GpMoveCircularAbs_Angle(HAND GroupHandle, // [8/15/2012 dan.yang] + PF64 CenterArray, + U16 Degree, + PU32 ArrayElements, + I16 Direction); +//Device operation + U32 ADVCMNAPI Acm_DevOpen(U32 DeviceNumber, PHAND DeviceHandle); + U32 ADVCMNAPI Acm_DevReOpen(HAND DeviceHandle); // [11/25/2014 dan] + U32 ADVCMNAPI Acm_DevClose(PHAND DeviceHandle); + U32 ADVCMNAPI Acm_DevReadEEPROM(HAND DeviceHandle, U16 EEPROMAddr, PU16 readValue); + U32 ADVCMNAPI Acm_DevWriteEEPROM(HAND DeviceHandle, U16 EEPROMAddr, U16 writeValue); + + U32 ADVCMNAPI Acm_DevReadEEPROM_Ex(HAND DeviceHandle, U16 PrivateID, PU32 PassWordArray, U32 PassArrayCnt, PU32 ReadArray, U32 BufferLength);// [6/15/2012 dan.yang] + U32 ADVCMNAPI Acm_DevWriteEEPROM_Ex(HAND DeviceHandle, U16 PrivateID, PU32 PassWordArray, U32 PassArrayCnt, PU32 WriteArray, U32 BufferLength); // [6/15/2012 dan.yang] + + U32 ADVCMNAPI Acm_GetProperty(HAND Handle, U32 ProperyID, PVOID Buffer, PU32 BufferLength); + U32 ADVCMNAPI Acm_SetProperty(HAND Handle, U32 ProperyID, PVOID Buffer, U32 BufferLength); + U32 ADVCMNAPI Acm_EnableMotionEvent(HAND DeviceHandle, + PU32 AxEnableEvtArray, + PU32 GpEnableEvtArray, + U32 AxArrayElements, + U32 GpArrayElements); + U32 ADVCMNAPI Acm_CheckMotionEvent(HAND DeviceHandle, + PU32 AxEvtStatusArray, + PU32 GpEvtStatusArray, + U32 AxArrayElements, + U32 GpArrayElements, + U32 Millisecond); + U32 ADVCMNAPI Acm_CancelCheckEvent (HAND ObjectHandle); + U32 ADVCMNAPI Acm_DevLoadConfig(HAND DeviceHandle, PI8 ConfigPath); + U32 ADVCMNAPI Acm_DevFwDownload(HAND DeviceHandle, U32 Data, U32 DataID); //internal function don't release. + U32 ADVCMNAPI Acm_DevSlaveFwDownload(HAND DeviceHandle, U16 RingNo, U16 Position, PI8 FileName, PI8 FilePath, U32 Password); // [6/4/2015 andy.wang] + U32 ADVCMNAPI Acm_DevDownloadCAMTable (HAND DeviceHandle, + U32 CamTableID, + PF64 pMasterArray, + PF64 pSlaveArray, + PF64 pPointRangeArray, + PF64 pPointSlopeArray, + U32 ArrayElements); + U32 ADVCMNAPI Acm_DevLoadCAMTableFile(HAND DeviceHandle, PI8 FilePath, U32 CamTableID, PU32 Range, PU32 PointsCount); // [dan.yang 2011.08.22] + U32 ADVCMNAPI Acm_DevConfigCAMTable(HAND DeviceHandle, //Add for pci1265 and pci1245 [dan.yang 2011.06.23] + U32 CamTableID, + U32 Periodic, + U32 MasterAbsolute, + U32 SlaveAbsolute); + U32 ADVCMNAPI Acm_DevReadMailBox(HAND Handle, U16 par_id, U32 data_index, U32 data_count, PU32 DataBuffer); //[dan.yang 2012.12.28] + U32 ADVCMNAPI Acm_DevWriteMailBox(HAND Handle, U16 par_id, U32 data_index, U32 data_count, PU32 DataBuffer); //[dan.yang 2012.12.28] + U32 ADVCMNAPI Acm_LoadENI(HAND DeviceHandle, PI8 FilePath); // [11/12/2014 dan] + U32 ADVCMNAPI Acm_DevGetComStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus); // [11/20/2014 dan] + U32 ADVCMNAPI Acm_DevGetSlaveStates(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU16 pStatus); + U32 ADVCMNAPI Acm_DevGetErrorTable(HAND DeviceHandle, U16 RingNo, PU32 ErrorTableArray, PU32 ArrayElements); + U32 ADVCMNAPI Acm_DevEnableEvent(HAND DeviceHandle, U32 MasEnableEvt); // [11/20/2014 dan] + U32 ADVCMNAPI Acm_DevCheckEvent(HAND DeviceHandle, PU32 MasCheckEvt, U32 Millisecond); // [11/20/2014 dan] + U32 ADVCMNAPI Acm_DevGetSlaveInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PVOID pInfo); + U32 ADVCMNAPI Acm_DevGetMasInfo(HAND DeviceHandle, PVOID pMasInfo, PU16 SlaveIPArray, PU32 SlvCnt); + U32 ADVCMNAPI Acm_DevGetSlaveDataCnt(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U8 DataType, PU32 DataCnt); + U32 ADVCMNAPI Acm_DevGetSlaveFwVersion(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, OUT char *VersionInfo); // [6/4/2015 andy.wang] + U32 ADVCMNAPI Acm_DevSetSlaveID(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U16 SlaveNewIP); // [6/23/2015 andy.wang] + U32 ADVCMNAPI Acm_WriteRingBuffer(HAND Handle, U32 cmd_id, U32 data_index, U32 data_cnt, PU32 dataBuffer); + U32 ADVCMNAPI Acm_ReadRingBuffer(HAND Handle, PU32 cmd_id, PU32 data_index, U32 data_cnt, PU32 dataBuffer); + U32 ADVCMNAPI Acm_DevGetModuleInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU32 ModIDArray, PU32 ModCnt); + U32 ADVCMNAPI Acm_DevSetSlaveID(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U16 SlaveNewIP); + // [2/28/2014 dan.yang] + U32 ADVCMNAPI Acm_GetU32Property(HAND Handle, U32 ProperyID, PU32 Value); + U32 ADVCMNAPI Acm_GetI32Property(HAND Handle, U32 ProperyID, PI32 Value); + U32 ADVCMNAPI Acm_GetF64Property(HAND Handle, U32 ProperyID, PF64 Value); + U32 ADVCMNAPI Acm_GetStringProperty (HAND Handle, U32 ProperyID, PU8 Value); + U32 ADVCMNAPI Acm_SetU32Property (HAND Handle, U32 ProperyID, U32 Value); + U32 ADVCMNAPI Acm_SetI32Property (HAND Handle, U32 ProperyID, I32 Value); + U32 ADVCMNAPI Acm_SetF64Property (HAND Handle, U32 ProperyID, F64 Value); + U32 ADVCMNAPI Acm_SetStringProperty (HAND Handle, U32 ProperyID, PU8 Value); + + U32 ADVCMNAPI Acm_CheckVersion(HAND DeviceHandle, U32 VersionID, PU32 Result); // [11/3/2015 dandan.yang]:just for utility + + // [11/20/2014 dan] + U32 ADVCMNAPI Acm_GetChannelProperty(HAND Handle, U32 ChannelID, U32 ProperyID, PF64 Value); + U32 ADVCMNAPI Acm_SetChannelProperty(HAND Handle, U32 ChannelID, U32 ProperyID, F64 Value); + U32 ADVCMNAPI Acm_GetMultiChannelProperty(HAND Handle, U32 ProperyID, U32 StartChID, U32 ChCount, PF64 ValueArray); + U32 ADVCMNAPI Acm_SetMultiChannelProperty(HAND Handle, U32 ProperyID, U32 StartChID, U32 ChCount, PF64 ValueArray); + U32 ADVCMNAPI Acm_DevMutiTrigSetCmpDO(HAND DeviceHandle,U32 OFForON); + U32 ADVCMNAPI Acm_DevMutiTrigForceCmpOut(HAND DeviceHandle, U32 OFForON); + //Master device operation + U32 ADVCMNAPI Acm_MasStartRing(HAND DeviceHandle, U16 RingNo); + U32 ADVCMNAPI Acm_MasStopRing(HAND DeviceHandle, U16 RingNo); + U32 ADVCMNAPI Acm_MasGetComStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus); + U32 ADVCMNAPI Acm_MasGetComCyclicTime(HAND DeviceHandle, U16 RingNo, PF64 pTime); + U32 ADVCMNAPI Acm_MasGetDataCyclicTime(HAND DeviceHandle, U16 RingNo, PF64 DataCyclicTime); + U32 ADVCMNAPI Acm_MasGetActiveTable(HAND DeviceHandle, U16 RingNo, PU32 ActiveTableArray, PU32 ArrayElements); + U32 ADVCMNAPI Acm_MasGetErrorTable(HAND DeviceHandle, U16 RingNo, PU32 ErrorTableArray, PU32 ArrayElements); + U32 ADVCMNAPI Acm_MasGetSlaveInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU32 pInfo); + U32 ADVCMNAPI Acm_MasLogComStatus(HAND DeviceHandle, U16 RingNo); + U32 ADVCMNAPI Acm_MasTrigOut(HAND DeviceHandle, U16 RingNo);//Engineer function, don't release + U32 ADVCMNAPI Acm_MasGetRingStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus);//internal function don't release. + +//Axis operation +U32 ADVCMNAPI Acm_AxOpen(HAND DeviceHandle, U16 PhyAxis, PHAND AxisHandle); +U32 ADVCMNAPI Acm_AxOpenbyID(HAND DeviceHandle, U16 SlaveIP, PHAND AxisHandle);//Add for pci1203 +U32 ADVCMNAPI Acm_AxClose(PHAND AxisHandle); +U32 ADVCMNAPI Acm_AxSetSvOn(HAND AxisHandle, U32 OnOff); +U32 ADVCMNAPI Acm_AxSetErcOn(HAND AxisHandle, U32 OnOff); +U32 ADVCMNAPI Acm_AxResetAlm(HAND AxisHandle, U32 OnOff); +U32 ADVCMNAPI Acm_AxMoveRel(HAND AxisHandle, F64 Distance); +U32 ADVCMNAPI Acm_AxMoveAbs(HAND AxisHandle, F64 Position); +U32 ADVCMNAPI Acm_AxMoveRel_EC(HAND AxisHandle, F64 Position);//zhaocui add 20131203 for hongjin +U32 ADVCMNAPI Acm_AxMoveVel(HAND AxisHandle, U16 Direction); +U32 ADVCMNAPI Acm_AxStopDec(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxStopEmg(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxMoveImpose(HAND AxisHandle, F64 Position, F64 NewVel); //Add for pci1265 and pci1245 [dan.yang 2011.04.20] +U32 ADVCMNAPI Acm_AxHomeEx(HAND AxisHandle, U32 DirMode); +U32 ADVCMNAPI Acm_AxHome(HAND AxisHandle, U32 HomeMode, U32 DirMode); +U32 ADVCMNAPI Acm_AxMoveHome(HAND AxisHandle, U32 HomeMode, U32 Dir); +// U32 Acm_AxPauseMotion(U32 AxisHandle); +// U32 Acm_AxResumeMotion(U32 AxisHandle); +U32 ADVCMNAPI Acm_AxChangeVel(HAND AxisHandle, F64 NewVel); +U32 ADVCMNAPI Acm_AxChangePos(HAND AxisHandle, F64 NewPos); +U32 ADVCMNAPI Acm_AxChangeVelByRate(HAND AxisHandle, U32 Rate); // [11/21/2012 dan.yang] +U32 ADVCMNAPI Acm_AxResetError(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxGetState(HAND AxisHandle, PU16 State); +U32 ADVCMNAPI Acm_AxGetMotionIO(HAND AxisHandle, PU32 Status); +U32 ADVCMNAPI Acm_AxGetMotionStatus(HAND AxisHandle, PU32 Status); +U32 ADVCMNAPI Acm_GetLastError(HAND Handle); +U32 ADVCMNAPI Acm_AxGetCmdPosition(HAND AxisHandle, PF64 Position); +U32 ADVCMNAPI Acm_AxGetMachPosition(HAND AxisHandle, PF64 Position); +U32 ADVCMNAPI Acm_AxSetCmdPosition(HAND AxisHandle, F64 Position); +U32 ADVCMNAPI Acm_AxGetActualPosition(HAND AxisHandle, PF64 Position); +U32 ADVCMNAPI Acm_AxSetActualPosition(HAND AxisHandle, F64 Position); +U32 ADVCMNAPI Acm_AxGetCmdVelocity(HAND AxisHandle, PF64 Velocity); +U32 ADVCMNAPI Acm_AxGetLagCounter(HAND AxisHandle, PF64 Position); +U32 ADVCMNAPI Acm_AxGetLatchData(HAND AxisHandle, U32 PositionNo, PF64 Position); // [5/30/2011 dan.yang] +U32 ADVCMNAPI Acm_AxStartSoftLatch(U32 AxisHandle); +U32 ADVCMNAPI Acm_AxSetExtDrive(HAND AxisHandle, U16 ExtDrvMode); +U32 ADVCMNAPI Acm_AxDoSetBit(HAND AxisHandle, U16 DoChannel, U8 BitData); +U32 ADVCMNAPI Acm_AxDoGetBit(HAND AxisHandle, U16 DoChannel, PU8 BitData); +U32 ADVCMNAPI Acm_AxDiGetBit(HAND AxisHandle, U16 DiChannel, PU8 BitData); +U32 ADVCMNAPI Acm_AxSimStartSuspendVel(HAND AxisHandle, U16 DriDir); +U32 ADVCMNAPI Acm_AxSimStartSuspendRel(HAND AxisHandle,F64 Distance); +U32 ADVCMNAPI Acm_AxSimStartSuspendAbs(HAND AxisHandle,F64 EndPoint); +U32 ADVCMNAPI Acm_AxSimStart(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxSimStop(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxResetLatch(HAND AxisHandle);//Add for pci1245 and pci1265 [dan.yang 2011.05.05] +U32 ADVCMNAPI Acm_AxGetLatchFlag(HAND AxisHandle, PU8 LatchFlag);//Add for pci1245 and pci1265 [dan.yang 2011.05.05] +U32 ADVCMNAPI Acm_AxTriggerLatch(HAND AxisHandle); //Add for pci1245 and pci1265 [dan.yang 2011.05.10] +U32 ADVCMNAPI Acm_AxCamInAx (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.05.10] + HAND MasAxisHandle, + F64 MasterOffset, + F64 SlaveOffset, + F64 MasterScaling, + F64 SlaveScaling, + U32 CamTableID, + U32 RefSrc); +U32 ADVCMNAPI Acm_AxGearInAx(HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.23] + HAND MasAxisHandle, + I32 Numerator, + I32 Denominator, + U32 RefSrc, + U32 Absolute); +U32 ADVCMNAPI Acm_AxTangentInGp (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.24] + HAND MasGroupHandle, + PI16 StartVectorArray, //must three dimension + U8 Working_plane, // 0: XY plane (default), 1: YZ plane, 2: XZ plane + I16 Direction); //0: same with master group. 1:opposite +U32 ADVCMNAPI Acm_AxGantryInAx (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.24] + HAND MasAxisHandle, + I16 RefMasterSrc, + I16 direction); //0: same with master axis. 1:opposite +U32 ADVCMNAPI Acm_AxPhaseAx(HAND AxisHandle, F64 Acc, F64 Dec, F64 PhaseSpeed, F64 PhaseDist); +// [12/14/2012 dan.yang] +U32 ADVCMNAPI Acm_AxChangeVelEx(HAND AxisHandle, + F64 NewVel, + F64 NewAcc, + F64 NewDec); +U32 ADVCMNAPI Acm_AxChangeVelExByRate(HAND AxisHandle, + U32 Rate, //The percentage of velocity to be changed. + F64 NewAcc, // New acceleration. + F64 NewDec); // New deceleration. +// [12/14/2012 dan.yang] +U32 ADVCMNAPI Acm_AxStopDecEx(HAND AxisHandle, + F64 NewDec); + +// [10/30/2013 dan.yang]: Add compare channel +U32 ADVCMNAPI Acm_AxSetChannelCmpSetting(HAND AxisHandle, U16 ChannelID, U32 CmpSrc, U32 CmpMethod, U32 CmpPulseMode, U32 CmpPulseWidth); +U32 ADVCMNAPI Acm_AxGetChannelCmpSetting(HAND AxisHandle, U16 ChannelID, PU32 CmpSrc, PU32 CmpMethod, PU32 CmpPulseMode, PU32 CmpPulseWidth); +U32 ADVCMNAPI Acm_AxResetChannelCmp (HAND AxisHandle, U16 ChannelID); +U32 ADVCMNAPI Acm_AxAddChannelCmpDatas(HAND AxisHandle, U16 ChannelID, PF64 TableArray, U32 ArrayCount); +U32 ADVCMNAPI Acm_AxGetChannelCmpData(HAND AxisHandle, U16 ChannelID, PF64 CmpData); +U32 ADVCMNAPI Acm_AxLoadChannelNextData(HAND AxisHandle, U16 ChannelID); +U32 ADVCMNAPI Acm_AxGetCmpbufferRemainCount(HAND AxisHandle, U16 ChannelID,PU32 DataCount); + +U32 ADVCMNAPI Acm_AxDoSetByte(HAND AxisHandle, U16 DoPort, U8 ByteData); +U32 ADVCMNAPI Acm_AxDoGetByte(HAND AxisHandle, U16 DoPort, PU8 ByteData); +U32 ADVCMNAPI Acm_AxDiGetByte(HAND AxisHandle, U16 DiPort, PU8 ByteData); +//Group operation +U32 ADVCMNAPI Acm_GpAddAxis(PHAND GpHandle,HAND AxHandle); +U32 ADVCMNAPI Acm_GpRemAxis(HAND GroupHandle, HAND AxisHandle); +U32 ADVCMNAPI Acm_GpClose(PHAND GroupHandle); +U32 ADVCMNAPI Acm_GpGetState(HAND GroupHandle, PU16 State); +U32 ADVCMNAPI Acm_GpResetError(HAND GroupHandle); + +U32 ADVCMNAPI Acm_GpMoveLinearRel(HAND GroupHandle, PF64 DistanceArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpMoveLinearAbs(HAND GroupHandle, PF64 PositionArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpMoveDirectRel(HAND GroupHandle, PF64 DistanceArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpMoveDirectAbs(HAND GroupHandle, PF64 PositionArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpMoveCircularRel(HAND GroupHandle, PF64 CenterArray, PF64 EndArray, + PU32 ArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_GpMoveCircularAbs(HAND GroupHandle, PF64 CenterArray, PF64 EndArray, + PU32 ArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_GpMoveCircularRel_3P(HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction ); +U32 ADVCMNAPI Acm_GpMoveCircularAbs_3P(HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction ); +U32 ADVCMNAPI Acm_GpMoveHelixAbs(HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction); // [6/21/2011 dan.yang] +U32 ADVCMNAPI Acm_GpMoveHelixRel(HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction); // [6/21/2011 dan.yang] +U32 ADVCMNAPI Acm_GpMoveHelixAbs_3P(HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction ); // [6/21/2011 dan.yang] +U32 ADVCMNAPI Acm_GpMoveHelixRel_3P(HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction ); // [6/21/2011 dan.yang] +U32 ADVCMNAPI Acm_GpLoadPath(HAND GroupHandle, PI8 FilePath, PHAND PathHandle, PU32 pTotalCount); +U32 ADVCMNAPI Acm_GpUnloadPath(HAND GroupHandle, PHAND PathHandle); +U32 ADVCMNAPI Acm_GpMovePath(HAND GroupHandle, HAND PathHandle); +U32 ADVCMNAPI Acm_GpMoveAllPath(PHAND GroupHandle, U32 ArrayElements); +U32 ADVCMNAPI Acm_GpAddPath (HAND GroupHandle,U16 MoveCmd,U16 MoveMode,F64 FH,F64 FL, + PF64 EndPoint_DataArray,PF64 CenPoint_DataArray,PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpResetPath (PHAND GroupHandle); +U32 ADVCMNAPI Acm_GpGetPathStatus (HAND GroupHandle, // IN, Group Handle + PU32 pCurIndex, // IN, OUT, Current index of path data in path buffer + PU32 pCurCmdFunc, // IN, OUT, Return current command function in executing + PU32 pRemainCount, // IN, OUT, Number of unexecuted path data in path + PU32 pFreeSpaceCount ); +U32 ADVCMNAPI Acm_GpStopDec(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpStopEmg(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpChangeVel(HAND GroupHandle, F64 NewVelocity); +U32 ADVCMNAPI Acm_GpChangeVelByRate(HAND GroupHandle, U32 Rate);// [11/21/2012 dan.yang] +U32 ADVCMNAPI Acm_GpGetCmdVel(HAND GroupHandle, PF64 CmdVel); //Add for PCI1245 and PCI1265.[Dan.Yang 20110607] +U32 ADVCMNAPI Acm_GpMoveSelPath(HAND GroupHandle, // [6/22/2011 dan.yang] + HAND PathHandle, + U32 StartIndex, // range: 0~9999 + U32 EndIndex, // range: 0~9999 + U8 Repeat); +U32 ADVCMNAPI Acm_GpGetPathIndexStatus(HAND GroupHandle, // [6/22/2011 dan.yang] + U32 Index, // index of path + PU16 CmdFunc, + PU16 MoveMode, + PF64 FH, + PF64 FL, + PF64 EndPoint_DataArray, + PF64 CenPoint_DataArray, + PU32 ArrayElements); +U32 ADVCMNAPI Acm_GpResumeMotion(HAND GroupHandle); // [10/12/2012 dan.yang] +U32 ADVCMNAPI Acm_GpPauseMotion(HAND GroupHandle); // [10/12/2012 dan.yang] +U32 ADVCMNAPI Acm_GpMove3DArcAbs( HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction);//zhaocui add 201308 + +U32 ADVCMNAPI Acm_GpMove3DArcRel( HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction);//zhaocui add 201308 + +U32 ADVCMNAPI Acm_GpMove3DArcAbs_V( HAND GroupHandle, + PF64 CenterArray, + PF64 NVectorArray, + F64 Degree, + PU32 pArrayElements, + I16 Direction);//zhaocui add 201308 + +U32 ADVCMNAPI Acm_GpMove3DArcRel_V( HAND GroupHandle, + PF64 CenterArray, + PF64 NVectorArray, + F64 Degree, + PU32 pArrayElements, + I16 Direction);//zhaocui add 201308 + +U32 ADVCMNAPI Acm_GpMove3DArcAbs_3P( HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction, + U16 cycCount); + +U32 ADVCMNAPI Acm_GpMove3DArcRel_3P( HAND GroupHandle, + PF64 RefArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction, + U16 cycCount); + +U32 ADVCMNAPI Acm_GpAddBSplinePath( + HAND GroupHandle, // Handle + F64 FH, // Feed rate + F64 FL, // Initial feed rate + F64 *CtrlP0List, // The control points of axis 0 (X-Axis) + F64 *CtrlP1List, // The control points of axis 1 (Y-Axis) + U32 CtrlPCount, // The number of control points + F64 *NodeList, // *B-Spine knot list + U32 NodeCount, // *The number of knot + U32 Degree, // B-Spline degree + U32 CutPointCount // The number of line segments used in interpolation + ); + +U32 Acm_GpAddCSplinePath( + HAND GroupHandle, // Group Handle + F64 FH, // Feed rate + F64 FL, // Initial feed rate + F64 *CtrlP0List, // The control points of axis 0 (X-Axis) + F64 *CtrlP1List, // The control points of axis 1 (Y-Axis) + F64 *Tightness, // + U32 CtrlPCount, // The number of control points + U32 CutPointCount // The number of line segments used in interpolation + ); + +// DIO +U32 ADVCMNAPI Acm_DaqDiGetByte(HAND DeviceHandle, U16 DiPort,PU8 ByteData); +U32 ADVCMNAPI Acm_DaqDiGetBit(HAND DeviceHandle, U16 DiChannel, PU8 BitData); +U32 ADVCMNAPI Acm_DaqDoSetByte(HAND DeviceHandle, U16 DoPort, U8 ByteData); +U32 ADVCMNAPI Acm_DaqDoSetBit(HAND DeviceHandle, U16 DoChannel, U8 BitData); +U32 ADVCMNAPI Acm_DaqDoGetByte(HAND DeviceHandle, U16 DoPort, PU8 ByteData); +U32 ADVCMNAPI Acm_DaqDoGetBit(HAND DeviceHandle, U16 DoChannel, PU8 BitData); +U32 ADVCMNAPI Acm_DaqDiGetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray); +U32 ADVCMNAPI Acm_DaqDoSetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray); +U32 ADVCMNAPI Acm_DaqDoGetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray); + +//AIO [Dan.Yang 2011.07.19] +U32 ADVCMNAPI Acm_DaqAiGetRawData(HAND DeviceHandle, U16 AiChannel, PU16 AiData); +U32 ADVCMNAPI Acm_DaqAiGetVoltData(HAND DeviceHandle, U16 AiChannel, PF32 AiData); +U32 ADVCMNAPI Acm_DaqAiGetCurrData(HAND DeviceHandle, U16 AiChannel, PF32 AiData); +U32 ADVCMNAPI Acm_DaqAiZeroCalibration(HAND DeviceHandle, U16 AiChannel); +U32 ADVCMNAPI Acm_DaqAiSpanCalibration(HAND DeviceHandle, U16 AiChannel); +U32 ADVCMNAPI Acm_DaqAiGetChannelStatus(HAND DeviceHandle, U16 AiChannel, PU32 ChanStatus); +U32 ADVCMNAPI Acm_DaqAoSetRawData(HAND DeviceHandle, U16 AoChannel, U16 AoData); +U32 ADVCMNAPI Acm_DaqAoSetVoltData(HAND DeviceHandle, U16 AoChannel, F32 AoData); +U32 ADVCMNAPI Acm_DaqAoSetCurrData(HAND DeviceHandle, U16 AoChannel, F32 AoData); +U32 ADVCMNAPI Acm_DaqAoGetRawData(HAND DeviceHandle, U16 AoChannel, PU16 AoData); +U32 ADVCMNAPI Acm_DaqAoGetVoltData(HAND DeviceHandle, U16 AoChannel, PF32 AoData); +U32 ADVCMNAPI Acm_DaqAoGetCurrData(HAND DeviceHandle, U16 AoChannel, PF32 AoData); +U32 ADVCMNAPI Acm_DaqAoSetCaliType(HAND DeviceHandle, U16 AoChannel, U16 TrimType); +U32 ADVCMNAPI Acm_DaqAoSetCaliValue(HAND DeviceHandle, U16 AoChannel, U16 CaliData); +U32 ADVCMNAPI Acm_DaqAoCaliDone(HAND DeviceHandle, U16 AoChannel, bool done); +U32 ADVCMNAPI Acm_DaqAoCaliDefault(HAND DeviceHandle, U16 AoChannel); +U32 ADVCMNAPI Acm_DaqGetIOLinkStatus(HAND DeviceHandle, PU32 pStatus); //ydd 16.2.4 + +//Counter [Andy.Wang 2015.04.21] +U32 ADVCMNAPI Acm_DaqCntTriggerCmp(HAND DeviceHandle, U16 CntChannel); +U32 ADVCMNAPI Acm_DaqCntResetLatch(HAND DeviceHandle, U16 CntChannel); +U32 ADVCMNAPI Acm_DaqCntResetCmp(HAND DeviceHandle, U16 CntChannel); +U32 ADVCMNAPI Acm_DaqCntResetCnt(HAND DeviceHandle, U16 CntChannel); +U32 ADVCMNAPI Acm_DaqCntGetCounterData(HAND DeviceHandle, U16 CntChannel, PI32 CounterData); +U32 ADVCMNAPI Acm_DaqCntGetLatchData(HAND DeviceHandle, U16 CntChannel, PI32 LatchData); +U32 ADVCMNAPI Acm_DaqCntGetCmpData(HAND DeviceHandle, U16 CntChannel, PI32 CmpData); + +//mining: Compare functions +U32 ADVCMNAPI Acm_AxSetCmpAuto(HAND AxisHandle, F64 Start, F64 End, F64 Interval); +U32 ADVCMNAPI Acm_AxGetCmpData(HAND AxisHandle, PF64 CmpPosition); +U32 ADVCMNAPI Acm_AxSetCmpData(HAND AxisHandle, F64 CmpPosition); +U32 ADVCMNAPI Acm_AxSetCmpTable(HAND AxisHandle, PF64 TableArray, I32 ArrayCount); + +//Dan.Yang 2011.07.12 :Add for download Dsp Firmware program. +U32 ADVCMNAPI Acm_GetDSPFrmWareDwnLoadRate(HAND DeviceHandle, PF64 Percentage); +U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP1(HAND DeviceHandle); +U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP2(HAND DeviceHandle, PI8 FilePath); +U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP3(HAND DeviceHandle); + +U32 ADVCMNAPI Acm_DownLoadMCU_ST2(HAND DeviceHandle, U16 CPLDNo, PI8 FilePath); +U32 ADVCMNAPI Acm_DownLoadMCU_ST1(HAND DeviceHandle, U16 CPLDNo); +U32 ADVCMNAPI Acm_GetMCUDownLoadRate(HAND DeviceHandle, PF64 Percentage); + +U32 ADVCMNAPI Acm_AxPWMOut(HAND AxisHandle,U32 OFForON,U32 PulseCount); +U32 ADVCMNAPI Acm_AxGetPWMOutState(HAND AxisHandle,PU32 OFForON); + + + +U32 ADVCMNAPI Acm_DownLoadCPLD_ST2(HAND DeviceHandle, U16 CPLDNo, PI8 FilePath); +U32 ADVCMNAPI Acm_DownLoadCPLD_ST1(HAND DeviceHandle, U16 CPLDNo); +U32 ADVCMNAPI Acm_GetCPLDDownLoadRate(HAND DeviceHandle, PF64 Percentage); +U32 ADVCMNAPI Acm_DevMDaqConfig(HAND DeviceHandle, U16 ChannelID, U32 Period, U32 AxisNo, U32 Method, U32 ChanType, U32 Count); +U32 ADVCMNAPI Acm_DevMDaqStart(HAND DeviceHandle); +U32 ADVCMNAPI Acm_DevMDaqStop(HAND DeviceHandle); +U32 ADVCMNAPI Acm_DevMDaqReset(HAND DeviceHandle, U16 ChannelID); +U32 ADVCMNAPI Acm_DevMDaqGetStatus(HAND DeviceHandle, U16 ChannelID, PU16 CurrentCnt, PU8 Status); +U32 ADVCMNAPI Acm_DevMDaqGetData(HAND DeviceHandle, U16 ChannelID, U16 StartIndex, U16 MaxCount, PI32 DataBuffer); +U32 ADVCMNAPI Acm_DevMDaqGetConfig(HAND DeviceHandle, U16 ChannelID, PU32 Period, PU32 AxisNo, PU32 Method, PU32 ChanType, PU32 Count); + +U32 ADVCMNAPI Acm_AxReadLatchBuffer(HAND AxisHandle, PF64 LatchDataArray, PU32 DataCnt); +U32 ADVCMNAPI Acm_AxResetLatchBuffer(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxGetLatchBufferStatus(HAND AxisHandle, PU32 RemainCnt, PU32 SpaceCnt); + +//******************SCARA Robot*************************************************/ +U32 Acm_GpRbSetMode(HAND GroupHandle, U16 Mode, PI32 CurActPosiArray, U32 ArrayElement); +U32 Acm_GpRbGetCmdPosition(HAND GroupHandle, PF64 PositionArray, U32 ArrayElement); +U32 Acm_GpRbGetActualPosition(HAND GroupHandle, PF64 PositionArray, U32 ArrayElement); +U32 Acm_GpRbGetArmCmdPosition(HAND GroupHandle, U16 ArmID, PF64 CurPosi); +U32 Acm_GpRbGetArmActualPosition(HAND GroupHandle, U16 ArmID, PF64 CurPosi); +//******************************************************************************/ + +//add by dujunling on 2012.11.22,for GM code function , +U32 ADVCMNAPI Acm_GmOpen( IN HAND DeviceHandle, OUT PHAND GMSHandle ); +U32 ADVCMNAPI Acm_GmClose(IN HAND GMSHandle); + +U32 ADVCMNAPI Acm_GmLoadJob(IN HAND GMSHandle, IN PI8 JobFilePath, OUT PU32 ErrorRow); +U32 ADVCMNAPI Acm_GmUploadJob( IN HAND GMSHandle, IN OUT PI8 GCodeBuffer, IN OUT PU32 GCodeLength); +U32 ADVCMNAPI Acm_GmResetJob( IN HAND GMSHandle); + +U32 ADVCMNAPI Acm_GmCommand(IN HAND GMSHandle, IN PI8 InputCmd); + +U32 ADVCMNAPI Acm_GmRemoveAxisFromSystem(IN HAND GMSHandle, IN U32 uAxisId); + +U32 ADVCMNAPI Acm_GmSetCompensationRadius(IN HAND GMSHandle, IN U32 DValue,IN F64 Radius); +U32 ADVCMNAPI Acm_GmGetCompensationRadius(IN HAND GMSHandle, OUT PU32 pCRArray,IN OUT PU32 pCRArrayLength); +U32 ADVCMNAPI Acm_GmSetCurrentCompensationRadius(IN HAND GMSHandle, IN F64 Radius); +U32 ADVCMNAPI Acm_GmGetCurrentCompensationRadius(IN HAND GMSHandle, IN OUT PF64 pCRadius); +U32 ADVCMNAPI Acm_GmSetToolLengthOffset(IN HAND GMSHandle, IN U32 HValue,IN F64 ToolLengthOffset); +U32 ADVCMNAPI Acm_GmGetToolLengthOffset(IN HAND GMSHandle, OUT PU32 pTLOArray,IN OUT PU32 pTLOArrayLength); +U32 ADVCMNAPI Acm_GmSetCurrentToolLengthOffset(IN HAND GMSHandle,IN F64 ToolLengthOffset); +U32 ADVCMNAPI Acm_GmGetCurrentToolLengthOffset(IN HAND GMSHandle, IN OUT PF64 pToolLengthOffset); + +U32 ADVCMNAPI Acm_GmSetMacro(IN HAND GMSHandle, IN U32 uMacroCmd,IN const PI8 MacroCmdContent); +U32 ADVCMNAPI Acm_GmGetMacro(IN HAND GMSHandle, IN U32 uMacroCmd,OUT PI8 pMacroCmdContent,IN OUT PU32 pMacroCmdContentLength); +U32 ADVCMNAPI Acm_GmGetMacroArray(IN HAND GMSHandle,OUT PU32 pMacroArray,IN OUT PU32 pMacroArrayLength); + +U32 ADVCMNAPI Acm_GmSetPreCustomFunction(IN HAND GMSHandle, IN U32 (*ptrPreCustomFunction)(const U32 CustomMCommand,U32 TWordValue,bool &bDone)); +U32 ADVCMNAPI Acm_GmSetFinalCustomFunction(IN HAND GMSHandle, IN U32 (*ptrFinalCustomFunction)(const U32 CustomMCommand,U32 TWordValue,bool &bDone)); + +U32 ADVCMNAPI Acm_GmSetExtDoFunction(IN HAND GMSHandle, IN U32 (*ptrExtDoFunction)(U32 uDoCh,U32 uDoLevel)); +U32 ADVCMNAPI Acm_GmSetExtDiFunction(IN HAND GMSHandle, IN U32 (*ptrExtDiFunction)(U32 uDiCh)); + +U32 ADVCMNAPI Acm_GmSetBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint); +U32 ADVCMNAPI Acm_GmAddBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint); +U32 ADVCMNAPI Acm_GmRemoveBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint); +U32 ADVCMNAPI Acm_GmClearBreakPoint(IN HAND GMSHandle); + +U32 ADVCMNAPI Acm_GmSetSpindleRatio(IN HAND GMSHandle, IN F64 fSpindleRatio); +U32 ADVCMNAPI Acm_GmSetJogRatio(IN HAND GMSHandle, IN F64 fJogRatio); +U32 ADVCMNAPI Acm_GmSetFastFeedRateRatio(IN HAND GMSHandle, IN U32 uAxis,IN F64 fFastFeedRateRatio); +U32 ADVCMNAPI Acm_GmGetFastFeedRateRatio(IN HAND GMSHandle, IN U32 uAxis,OUT PF64 pFastFeedRateRatio); +U32 ADVCMNAPI Acm_GmSetFeedRateRatio(IN HAND GMSHandle, IN F64 fFeedRateRatio); +U32 ADVCMNAPI Acm_GmGetFeedRateRatio(IN HAND GMSHandle, OUT PF64 pFeedRateRatio); +U32 ADVCMNAPI Acm_GmSetFeedRate(IN HAND GMSHandle, IN F64 fFeedRate); +U32 ADVCMNAPI Acm_GmGetFeedRate(IN HAND GMSHandle, IN PF64 pFeedRate); +U32 ADVCMNAPI Acm_GmSetFastFeedRate(IN HAND GMSHandle, IN F64 fFastFeedRate); +U32 ADVCMNAPI Acm_GmGetFastFeedRate(IN HAND GMSHandle, OUT PF64 pFastFeedRate); +U32 ADVCMNAPI Acm_GmSetOptionPause(IN HAND GMSHandle, IN U32 uOptionPause); +U32 ADVCMNAPI Acm_GmGetOptionPause(IN HAND GMSHandle, OUT PU32 pOptionPause); +U32 ADVCMNAPI Acm_GmSetOptionSkip(IN HAND GMSHandle, IN U32 uOptionSkip); +U32 ADVCMNAPI Acm_GmGetOptionSkip(IN HAND GMSHandle, OUT PU32 pOptionSkip); +U32 ADVCMNAPI Acm_GmSetModuleRange(IN HAND GMSHandle, IN U32 ModuleRange); +U32 ADVCMNAPI Acm_GmGetModuleRange(IN HAND GMSHandle, IN PU32 pModuleRange); + +U32 ADVCMNAPI Acm_GmGetCurrentFeedRate(IN HAND GMSHandle, OUT PF64 pCurrentFeedRate); +U32 ADVCMNAPI Acm_GmGetCurrentRow(IN HAND GMSHandle, OUT PU32 CurrentRow); +U32 ADVCMNAPI Acm_GmGetErrorRow(IN HAND GMSHandle, OUT PU32 ErrorRow); +U32 ADVCMNAPI Acm_GmGetCurrentCommand(IN HAND GMSHandle, OUT PI8 CurrentCmd, IN OUT PU32 CurrentCmdLength); +U32 ADVCMNAPI Acm_GmGetState(IN HAND GMSHandle, OUT PU32 GmsState); +U32 ADVCMNAPI Acm_GmGetPattern(IN HAND GMSHandle, IN U32 GmsPatternId, PVOID Buffer, PU32 BufferLength); +U32 ADVCMNAPI Acm_GmGetCurrentCoordinateSystem(IN HAND GMSHandle, OUT PU32 pCurrentCoordinateIndex,OUT PF64 pCoordinateArray,IN OUT PU32 pArrayLength); +U32 ADVCMNAPI Acm_GmGetError(IN HAND GMSHandle, OUT PU32 ErrorCode, OUT PU32 LastError); +U32 ADVCMNAPI Acm_GmDxfToGCodeTextEx(IN PI8 DxfFilePath, IN F64 DxfProportion, IN U32 Ellipse_Cut_Min_Angel , IN U32 Spline_Cut_Step ,OUT PI8 GCodeBuffer, IN OUT PU32 Length); +U32 ADVCMNAPI Acm_GmDxfToGCodeText(IN PI8 DxfFilePath, IN F64 DxfProportion, OUT PI8 GCodeBuffer, IN OUT PU32 Length); +U32 ADVCMNAPI Acm_GmDxfToGCodeFileEx(IN PI8 DxfFilePath, IN F64 DxfProportion,IN U32 Ellipse_Cut_Min_Angel , IN U32 Spline_Cut_Step ,IN PI8 GcodeFilePath,OUT PU32 Length); +U32 ADVCMNAPI Acm_GmDxfToGCodeFile(IN PI8 DxfFilePath, IN F64 DxfProportion,IN PI8 GcodeFilePath,PU32 Length); + +//Added by W.Y.Z on 2014.08.28 for P point function +U32 ADVCMNAPI Acm_GmSetPoint(IN HAND GMSHandle, IN U32 id, IN PF64 fPoint); +U32 ADVCMNAPI Acm_GmGetPoint(IN HAND GMSHandle, IN U32 id,OUT PF64 fPoint); +U32 ADVCMNAPI Acm_GmLoadPoint(IN HAND GMSHandle, IN PI8 FilePath); +U32 ADVCMNAPI Acm_GmSavePoint(IN HAND GMSHandle, IN PI8 FilePath); +U32 ADVCMNAPI Acm_GmResetPoint(IN HAND GMSHandle); + +U32 ADVCMNAPI Acm_GmSetPointF(IN HAND GMSHandle, IN U32 id, IN PF64 fPoint,IN U32 filterFlag); +U32 ADVCMNAPI Acm_GmGetPointF(IN HAND GMSHandle, IN U32 id,OUT PF64 fPoint,OUT PU32 filterflag); +//U32 ADVCMNAPI Acm_GmLoadPointF(IN HAND GMSHandle, IN PI8 FilePath); +//U32 ADVCMNAPI Acm_GmSavePointF(IN HAND GMSHandle, IN PI8 FilePath); +//U32 ADVCMNAPI Acm_GmResetPointF(IN HAND GMSHandle); + +U32 ADVCMNAPI Acm_GpMoveHelixRel_Angle(HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction);//added by zhaocui 201305 +U32 ADVCMNAPI Acm_GpMoveHelixAbs_Angle(HAND GroupHandle, + PF64 CenterArray, + PF64 EndArray, + PU32 pArrayElements, + I16 Direction);//added by zhaocui 201305 + +U32 ADVCMNAPI Acm_AxSetPWMTableOnTime(HAND AxisHandle, PU32 TimeTableArray, I32 ArrayCount);//zhaocui add + + +U32 ADVCMNAPI Acm_AxGetINxStopStatus(HAND AxisHandle,PU32 Stop_Flag);// [2/28/2014 deng] +U32 ADVCMNAPI Acm_AxResetINxStopStatus(HAND AxisHandle);// [2/28/2014 deng] +U32 ADVCMNAPI Acm_GpGetINxStopStatus(HAND GroupHandle,PU32 Stop_Flag);// [2/28/2014 deng] +U32 ADVCMNAPI Acm_GpResetINxStopStatus(HAND GroupHandle);// [2/28/2014 deng] + +U32 ADVCMNAPI Acm_AxJog(HAND AxisHandle,U16 Direction); //[5/22/2014 kai.yang] + +U32 ADVCMNAPI Acm_AxSetCmpDO(HAND AxisHandle,U32 OFForON);// [12/3/2014 deng] +U32 ADVCMNAPI Acm_AxDownloadTorqueTable (HAND AxisHandle, PF64 pPositionArray, PF64 pTorqueArray, U32 ArrayElements); //[8/6/2015 andy.wang] +U32 ADVCMNAPI Acm_AxLoadTorqueTableFile(HAND AxisHandle, PI8 FilePath, PU32 PointsCount); //[8/6/2015 andy.wang] +U32 ADVCMNAPI Acm_AxResetPVTTable(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxLoadPVTTable(HAND AxisHandle, U16 Num, PF64 Pos, PF64 Vel, PF64 Time); +U32 ADVCMNAPI Acm_AxStartPVT(HAND AxisHandle, U16 rNum); +U32 ADVCMNAPI Acm_AxCheckPTBuffer(HAND AxisHandle,U16* remainblock); +U32 ADVCMNAPI Acm_AxAddPTData(HAND AxisHandle, F64 Pos, F64 time); +U32 ADVCMNAPI Acm_AxStartPT(HAND AxisHandle, U8 BfMode, U16 rNum); +U32 ADVCMNAPI Acm_AxResetPTData(HAND AxisHandle); +U32 ADVCMNAPI Acm_AxAddPVAData(HAND AxisHandle, F64 Position, PF64 VelArray, PF64 AccArray, PF64 DecArray, U32 ArrayElements); + +//zhao cui add for robot 201307 +U32 ADVCMNAPI Acm_RbGetActualPosition(HAND RbHandle, PF64 PositionArray, U32 ArrayElement); +U32 ADVCMNAPI Acm_RbGetCmdPosition(HAND RbHandle, PF64 PositionArray, U32 ArrayElement); +U32 ADVCMNAPI Acm_RbGetArmActualPosition(HAND RbHandle, U16 ArmID, PF64 CurPosi); +U32 ADVCMNAPI Acm_RbGetArmCmdPosition(HAND RbHandle, U16 ArmID, PF64 CurPosi); +U32 ADVCMNAPI Acm_RbOpen (HAND DeviceHandle,PHAND RbHandle); +U32 ADVCMNAPI Acm_RbClose (PHAND pRbHandle); +U32 ADVCMNAPI Acm_RbResetError (HAND RbHandle); +U32 ADVCMNAPI Acm_RbGetState (HAND RbHandle, PU16 PStates); +U32 ADVCMNAPI Acm_RbSetActPosition (HAND RbHandle, PF64 PositionArray, U32 ArrayElement); +U32 ADVCMNAPI Acm_RbMoveRel(HAND RbHandle, PF64 PosArray, PU32 ArrayElement); +U32 ADVCMNAPI Acm_RbMoveAbs(HAND RbHandle, PF64 PosArray, PU32 ArrayElement); +U32 ADVCMNAPI Acm_RbMoveDirectRel (HAND RbHandle, PF64 PositionArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_RbMoveDirectAbs (HAND RbHandle, PF64 PositionArray, PU32 ArrayElements); +U32 ADVCMNAPI Acm_RbMoveLinearRel( HAND RbHandle,PF64 PositionArray,PU32 pArrayElements); +U32 ADVCMNAPI Acm_RbMoveLinearAbs( HAND RbHandle,PF64 PositionArray,PU32 pArrayElements); +U32 ADVCMNAPI Acm_RbMoveArcAbs( HAND RbHandle,PF64 CenterArray,PF64 EndArray,PU32 pArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_RbMoveArcRel( HAND RbHandle,PF64 CenterArray,PF64 EndArray,PU32 pArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_RbMoveArcRel_3P ( HAND RbHandle,PF64 RefArray,PF64 EndArray,PU32 pArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_RbMoveArcAbs_3P ( HAND RbHandle,PF64 RefArray,PF64 EndArray,PU32 pArrayElements, I16 Direction); +U32 ADVCMNAPI Acm_RbAddPath (HAND RbHandle,U16 MoveCmd,U16 MoveMode,F64 FH,F64 FL, + PF64 EndPoint_DataArray,PF64 CenPoint_DataArray,PU32 ArrayElements); +U32 ADVCMNAPI Acm_RbResetPath (PHAND RbHandle); +U32 ADVCMNAPI Acm_RbGetPathStatus (HAND RbHandle, // IN, Group Handle + PU32 pCurIndex, // IN, OUT, Current index of path data in path buffer + PU32 pCurCmdFunc, // IN, OUT, Return current command function in executing + PU32 pRemainCount, // IN, OUT, Number of unexecuted path data in path + PU32 pFreeSpaceCount ); +U32 ADVCMNAPI Acm_RbMovePath(HAND RbHandle, HAND PathHandle); +U32 ADVCMNAPI Acm_RbChangeVel(HAND RbHandle, F64 NewVelocity); +U32 ADVCMNAPI Acm_RbChangeVelByRate(HAND RbHandle, U32 Rate); +U32 ADVCMNAPI Acm_RbGetCmdVel(HAND RbHandle, PF64 CmdVel); +U32 ADVCMNAPI Acm_RbStopDec ( HAND RbHandle); +U32 ADVCMNAPI Acm_RbStopEmg(HAND RbHandle); +U32 ADVCMNAPI Acm_RbPauseMotion(HAND RbHandle); +U32 ADVCMNAPI Acm_RbResumeMotion(HAND RbHandle); +bool IsGMSHandleValid(HAND GMSHandle); +U32 ADVCMNAPI Acm_RbLoadPath(HAND RbHandle, PI8 FilePath, PHAND PathHandle, PU32 pTotalCount);// [6/26/2014 deng] +U32 ADVCMNAPI Acm_RbUnloadPath(HAND RbHandle, PHAND PathHandle);// [6/26/2014 deng] +U32 ADVCMNAPI Acm_RbMoveSelPath(HAND RbHandle, + HAND PathHandle, + U32 StartIndex, // range: 0~9999 + U32 EndIndex, // range: 0~9999 + U8 Repeat);// [6/26/2014 deng] +U32 ADVCMNAPI Acm_RbGetPathIndexStatus(HAND RbHandle, + U32 Index, // index of path + PU16 CmdFunc, + PU16 MoveMode, + PF64 FH, + PF64 FL, + PF64 EndPoint_DataArray, + PF64 CenPoint_DataArray, + PU32 ArrayElements);// [6/26/2014 deng] +U32 ADVCMNAPI Acm_RbSetExtDrive(HAND RbHandle, U16 ExtDrvMode);// [7/3/2014 deng] +U32 ADVCMNAPI Acm_RbJog(HAND RbHandle,U16 Direction);// [7/3/2014 deng] + +U32 ADVCMNAPI Acm_ServoSetCom(U32 ComPortID, U32 Baudrate, U32 Timeout);// [7/17/2014 yang.kai] +U32 ADVCMNAPI Acm_ServoGetAbsPosition( + U32 ComPortID, + U32 ServoType, + U32 ServoID, + U32 ServoAbsResolution, + U32 ServoCmdResolution, + U32 EncoderDir, + PF64 AbsPosition + ); // [7/17/2014 yang.kai] +U32 ADVCMNAPI Acm_AxSetCmdPosi_Pulse(HAND AxisHandle,F64 Position); // [7/17/2014 yang.kai] +U32 ADVCMNAPI Acm_AxMoveAbs_EC(HAND AxisHandle, F64 Position);// [8/18/2014 deng] +U32 ADVCMNAPI Acm_RbGetWorldPosFromJoint(HAND RbHandle,PF64 JointPosArray, PF64 WorldPosArray); // [8/12/2014 yang.kai] +U32 ADVCMNAPI Acm_GetDevNum(U32 DevType,U32 BoardID,PU32 DeviceNumber); // [9/2/2014 yang.kai] +U32 ADVCMNAPI Acm_GpMoveArcRel_Angle(HAND GroupHandle, // [9/22/2014 yang.kai] + PF64 CenterArray, + F64 Degree, + PU32 ArrayElements, + I16 Direction); + +U32 ADVCMNAPI Acm_GpMoveArcAbs_Angle(HAND GroupHandle, // [9/22/2014 yang.kai] + PF64 CenterArray, + F64 Degree, + PU32 ArrayElements, + I16 Direction); + +U32 ADVCMNAPI Acm_AxChangeCmpIndex(HAND AxisHandle, // [9/22/2014 yang.kai] + U32 CmpIndex); + +//mapping +U32 ADVCMNAPI Acm_DevSaveMapFile(HAND DeviceHandle, PI8 FilePath); +U32 ADVCMNAPI Acm_DevLoadMapFile(HAND DeviceHandle, PI8 FilePath); +U32 ADVCMNAPI Acm_DevUpLoadMapInfo(HAND DeviceHandle, U16 MapType, PDEV_IO_MAP_INFO MapInfoArray, PU32 ArrayLength); +U32 ADVCMNAPI Acm_DevDownLoadMapInfo(HAND DeviceHandle, U16 MapType, PDEV_IO_MAP_INFO MapInfoArray, U32 ArrayLength); +//SDO +U32 ADVCMNAPI Acm_DevWriteSDOData(HAND DeviceHandle, IN U16 RingNo, IN U16 SlaveIP, IN U16 Index, IN U16 SubIndex, IN U16 Type, IN U16 DataSize, IN VOID *pValue); +U32 ADVCMNAPI Acm_DevReadSDOData(HAND DeviceHandle, IN U16 RingNo, IN U16 SlaveIP, IN U16 Index, IN U16 SubIndex, IN U16 Type, IN U16 DataSize, OUT VOID *pValue); + +//ARES +U32 ADVCMNAPI Acm_DevDownloadAres(HAND DeviceHandle, PI8 FilePath); +U32 ADVCMNAPI Acm_DevGetAresVariable(HAND DeviceHandle, U32 Address, PF64 Value); +U32 ADVCMNAPI Acm_DevSetAresVariable(HAND DeviceHandle, U32 Address, F64 Value); +U32 ADVCMNAPI Acm_DevGetDownloadedAresName(HAND DeviceHandle, PDEV_ARES_INFO FileName, PU32 Count); +U32 ADVCMNAPI Acm_DevDeleteAresFile(HAND DeviceHandle, PI8 FileName); +U32 ADVCMNAPI Acm_DevClearAresFile(HAND DeviceHandle); + +U32 ADVCMNAPI Acm_GpGetRunningAresName(HAND GroupHandle, PI8 FileName); +U32 ADVCMNAPI Acm_GpGetAresState(HAND GroupHandle, PU16 pState); +U32 ADVCMNAPI Acm_GpLoadAresProgram(HAND GroupHandle, PI8 FileName); +U32 ADVCMNAPI Acm_GpRunAres(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpHoldAres(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpStopAres(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpGetAresCrc(HAND GroupHandle, PU32 Crc); +U32 ADVCMNAPI Acm_GpStepAres(HAND GroupHandle, U32 Offset); +U32 ADVCMNAPI Acm_GpSetAresBreakPoint(HAND GroupHandle, U32 Offset); +U32 ADVCMNAPI Acm_GpRemoveAresBreakPoint(HAND GroupHandle, U32 Offset); +U32 ADVCMNAPI Acm_GpClearAresBreakPoints(HAND GroupHandle); +U32 ADVCMNAPI Acm_GpGetAresBreakPoints(HAND GroupHandle, PU32 Breakpoints, PU32 Count); +U32 ADVCMNAPI Acm_GpGetAresNextOffset(HAND GroupHandle, PU32 Offset); + +#ifdef __cplusplus +} +#endif diff --git a/LaiPuLaser/ApplicationPriority.cpp b/LaiPuLaser/ApplicationPriority.cpp new file mode 100644 index 0000000..46c47fe --- /dev/null +++ b/LaiPuLaser/ApplicationPriority.cpp @@ -0,0 +1,78 @@ +#include "StdAfx.h" +#include "ApplicationPriority.h" +#include "PropertieMgr.h" +#include "Propertie.h" +#include "LogMgr.h" +#include "AuthorityMgr.h" + +CAppPriorityMgr *gAppPriorityMgr = new CAppPriorityMgr; + +CAppPriorityMgr::CAppPriorityMgr(void) +{ + m_bGetHighestPriority = false;//Ƿڴʱȡȼ +} +CAppPriorityMgr::~CAppPriorityMgr(void) +{ +} +CMFCPropertyGridProperty *CAppPriorityMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("AppPriority");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ȼ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bGetHighestPriority");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bGetHighestPriority); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȼ"); + Description = _T("Ƿ񽫳ȼϵͳ߼úҪ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bGetHighestPriority, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CAppPriorityMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CAppPriorityMgr]------------------------------------------------"<WriteDebugLog(str); + } + else + { + str += "ʧ"; + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } +} \ No newline at end of file diff --git a/LaiPuLaser/ApplicationPriority.h b/LaiPuLaser/ApplicationPriority.h new file mode 100644 index 0000000..933ea33 --- /dev/null +++ b/LaiPuLaser/ApplicationPriority.h @@ -0,0 +1,21 @@ +#pragma once +#include "module.h" +#include "EnumPropertieType.h" + +//ȼ +class CAppPriorityMgr :public CModule +{ +public: + CAppPriorityMgr(void); + ~CAppPriorityMgr(void); + virtual void Ini(); + virtual MODULE GetModuleType(){return _APP_PRIORITY_PROP;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); +private: + void GetHighestPriority(); +private: + bool m_bGetHighestPriority;//Ƿڴʱȡȼ +}; + +extern CAppPriorityMgr *gAppPriorityMgr; \ No newline at end of file diff --git a/LaiPuLaser/ArrayMgr.cpp b/LaiPuLaser/ArrayMgr.cpp new file mode 100644 index 0000000..c5cc715 --- /dev/null +++ b/LaiPuLaser/ArrayMgr.cpp @@ -0,0 +1,155 @@ +#include "StdAfx.h" +#include "ArrayMgr.h" +#include "GlobalFunction.h" +#include "CommandArray.h" +#include "CommandMgr.h" + + +CArrayMgr::CArrayMgr(void) +{ +} +CArrayMgr::~CArrayMgr(void) +{ +} +void CArrayMgr::Creat(SArrayPar &ArrayPar) +{ + //ʼ + m_ObjContainer.Clear(); + if(ArrayPar.m_bRectArray) + { + RectCreat(ArrayPar); + } + else if(ArrayPar.m_bCircleArray) + { + CircleCreat(ArrayPar); + } + else + { + FillCreat(ArrayPar); + } + //ָ + CreatCmd(); +} +//зʽ +void CArrayMgr::RectCreat(SArrayPar &ArrayPar) +{ + //ָÿο¡һobj m_ObjContainer + for(int i=0;iSaveBaseObj(layer.GetObjContainer()); + //ָ-------end + pCmd->Excute(); + } +} diff --git a/LaiPuLaser/ArrayMgr.h b/LaiPuLaser/ArrayMgr.h new file mode 100644 index 0000000..9194054 --- /dev/null +++ b/LaiPuLaser/ArrayMgr.h @@ -0,0 +1,56 @@ +#pragma once +#include "ObjContainer.h" +//ò +struct SArrayPar{ +public: + SArrayPar() + { + m_bRectArray = true;//ǷΪ + m_bCircleArray = false; + m_bFillArray = false; + m_ArrayCntH = 10;// + m_ArrayCntV = 10;// + m_ArrayOffsetH = 1;// + m_ArrayOffsetV = 1;// + + m_ArrayCnt = 36;//Բе + m_Radius = 10;//а뾶 + m_StartAngle = 90;//пʼǶ + m_GapAngle = 10;//мǶ(360 Ƚ) + + m_FillOffset = -0.1; + m_FillCnt = 1000; + } +public: + bool m_bRectArray;//ǷΪ + bool m_bCircleArray; + bool m_bFillArray; + + int m_ArrayCntH;// + int m_ArrayCntV;// + double m_ArrayOffsetH;// + double m_ArrayOffsetV;// + + int m_ArrayCnt;//Բе + double m_Radius;//а뾶 + double m_StartAngle;//пʼǶ(360 Ƚ) + double m_GapAngle;//мǶ(360 Ƚ) + + double m_FillOffset; + int m_FillCnt; +}; +class CArrayMgr +{ +public: + CArrayMgr(void); + ~CArrayMgr(void); + void Creat(SArrayPar &par); +private: + void RectCreat(SArrayPar &ArrayPar); + void CircleCreat(SArrayPar &ArrayPar); + void FillCreat(SArrayPar &ArrayPar); + void CreatCmd(); +private: + CObjContainer m_ObjContainer; +}; + diff --git a/LaiPuLaser/AuthorityMgr.cpp b/LaiPuLaser/AuthorityMgr.cpp new file mode 100644 index 0000000..5f92265 --- /dev/null +++ b/LaiPuLaser/AuthorityMgr.cpp @@ -0,0 +1,285 @@ +#include "StdAfx.h" +#include "AuthorityMgr.h" +#include "MsgBox.h" +#include "FileMgr.h" +#include "LogMgr.h" +#include "PropertieMgr.h" +#include "Propertie.h" + +#define LAIPU_NAME "laipu" +#define LAIPU_PASSWORD "laipu" +#define FILE_PATH _T("\\Parameter\\Authority\\Authority.par") + +bool CompareUser(CAccount Account1,CAccount Account2) +{ + return Account1.m_Authority>Account2.m_Authority; +} +CAuthorityMgr *gAuthorityMgr = new CAuthorityMgr; +CAuthorityMgr::CAuthorityMgr(void) +{ + m_CurAuthority = _USER;//ǰȨ + m_AutoFactory = false;//ԶԱȨ +} +CAuthorityMgr::~CAuthorityMgr(void) +{ +} +CMFCPropertyGridProperty *CAuthorityMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("AuthorityMgr");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("Ȩ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_AutoFactory");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AutoFactory); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ȩ"); + Description = _T("ʱԶóȨ,"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AutoFactory, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CAuthorityMgr::Ini() +{ + SaveOrLoad(false);//ȡļ + if(m_AutoFactory) + m_CurAuthority = _FACTORY; +} +//鵱ǰȨ +bool CAuthorityMgr::CheckAuthority(AUTHORITY_TYPE authority,bool bShowMsgbox) +{ + if((int)m_CurAuthority >= (int)authority) + { + return true; + } + else + { + if(bShowMsgbox) + { + CMsgBox MsgBox; + CString str = "Ҫ["+GetAccountName(authority) + "]Ȩ!"; + MsgBox.Show(str, true); + } + return false; + } +} +//Ƿ¼ +bool CAuthorityMgr::IsLogin() +{ + return m_CurAuthority != _NO_LOGIN; +} +//ûȨޱδ¼ +void CAuthorityMgr::Lock() +{ + SetAuthority(_NO_LOGIN); + m_CurUserName = ""; +} +//¼ +bool CAuthorityMgr::Login(CString name,CString PassWord) +{ + bool ret = false; + AUTHORITY_TYPE authority = GetCurAuthority(); + if(name == LAIPU_NAME && PassWord == LAIPU_PASSWORD) + { + ret = true; + authority = _FACTORY; + } + else + { + vector::iterator iter = m_UserVec.begin(); + vector::iterator iter_end = m_UserVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).m_Name == name) + { + if((*iter).m_PassWord == PassWord) + { + ret = true; + authority = (*iter).m_Authority; + break; + } + else + { + CMsgBox MsgBox; + MsgBox.Show("˺Ųƥ"); + break; + } + } + } + if(iter==iter_end) + { + CMsgBox MsgBox; + MsgBox.Show("˺Ż!"); + } + } + if(ret) + { + SetAuthority(authority); + m_CurUserName = name; + CMsgBox MsgBox; + CString str("¼ɹ---->"); + str += ("[Type:") + GetCurAccountName() + "]"; + str += ("[Name:") + m_CurUserName + "]"; + MsgBox.Show(str); + } + return ret; +} +CString CAuthorityMgr::GetAccountName(AUTHORITY_TYPE authority) +{ + if(authority==_FACTORY) + return ACCOUNT_FACTORY; + if(authority==_ADMIN) + return ACCOUNT_ADMIN; + if(authority==_USER) + return ACCOUNT_USER; + return ACCOUNT_NO_LOGIN; +} +//ǰ˻ +CString CAuthorityMgr::GetCurAccountName() +{ + return GetAccountName(GetCurAuthority()); +} +//߶ȡ +void CAuthorityMgr::SaveOrLoad(bool bSave) +{ + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FILE_PATH);//ȡ· + + if(bSave) + { + CFile file(filepath,CFile::modeReadWrite|CFile::modeCreate); + CArchive ar(&file,CArchive::store); + SaveOrLoadExt(ar); + } + else + { + CFile file; + if(file.Open(filepath,CFile::modeRead)) + { + CArchive ar(&file,CArchive::load); + SaveOrLoadExt(ar); + } + else + { + gLogMgr->WriteDebugLog("Ȩļȡʧ", _LOG_ERROR); + } + } +} +void CAuthorityMgr::SaveOrLoadExt(CArchive &ar) +{ + int size = 0; + if(ar.IsStoring()) + { + size = m_UserVec.size();//area + ar<>size; + for(int i=0;i::iterator iter = m_UserVec.begin(); + vector::iterator iter_end = m_UserVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).m_Name == Account.m_Name) + { + CMsgBox MsgBox; + CString str(_T("û:")); + str += Account.m_Name + "Ѵ!"; + MsgBox.Show(str); + return; + } + } + m_UserVec.push_back(Account); + // + SortUserVec(); + SaveOrLoad(true); + CMsgBox MsgBox; + MsgBox.Show("ɹ!"); +} +//ɾָû +void CAuthorityMgr::DelUser(int idx) +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + { + return; + } + vector::iterator iter = m_UserVec.begin(); + vector::iterator iter_end = m_UserVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + if(i==idx) + { + CMsgBox MsgBox; + + if((*iter).m_Authority>m_CurAuthority) + { + MsgBox.Show(_T("ɾ߼û!")); + return; + } + + CString str(_T("ɾ")); + str += (*iter).m_Name + "?"; + if(MsgBox.ConfirmOkCancel(str)) + { + m_UserVec.erase(iter); + SortUserVec(); + SaveOrLoad(true); + } + return; + } + } +} +void CAuthorityMgr::InsertToList(CListCtrl &List) +{ + int size = m_UserVec.size(); + for(int i=0;i>tmp; + m_Authority = (AUTHORITY_TYPE)tmp; + ar>>m_Name; + ar>>m_PassWord; + } + } +public: + AUTHORITY_TYPE m_Authority;//Ȩ + CString m_Name;//û + CString m_PassWord;// +}; +//Ȩ޹ +class CAuthorityMgr:public CModule +{ +public: + CAuthorityMgr(void); + ~CAuthorityMgr(void); + virtual void Ini(); + virtual MODULE GetModuleType(){return _AUTHORITY_PROP;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + + void SetAuthority(AUTHORITY_TYPE authority){m_CurAuthority = authority;};//õǰȨ + bool CheckAuthority(AUTHORITY_TYPE authority,bool bShowMsgbox = false);//鵱ǰȨ + AUTHORITY_TYPE GetCurAuthority(){return m_CurAuthority;}; + void AddAccount(CAccount Account); + bool Login(CString name,CString PassWord); + CString GetAccountName(AUTHORITY_TYPE authority); + void SaveOrLoad(bool bSave); + void InsertToList(CListCtrl &List); + void DelUser(int idx); + CString GetCurAccountName(); + CString GetCurUserName(){return m_CurUserName;}; + bool IsAutoFactory(){return m_AutoFactory;}; + void Lock(); + bool IsLogin(); +private: + void SaveOrLoadExt(CArchive &ar); + void SortUserVec(); +private: + AUTHORITY_TYPE m_CurAuthority;//ǰȨ + CString m_CurUserName;//ǰû + vector m_UserVec;//еû + bool m_AutoFactory;//ԶԱȨ +}; + +extern CAuthorityMgr *gAuthorityMgr; \ No newline at end of file diff --git a/LaiPuLaser/BarCodeModule.cpp b/LaiPuLaser/BarCodeModule.cpp new file mode 100644 index 0000000..ca41ff7 --- /dev/null +++ b/LaiPuLaser/BarCodeModule.cpp @@ -0,0 +1,2 @@ +#include "StdAfx.h" +#include "BarCodeModule.h" diff --git a/LaiPuLaser/BarCodeModule.h b/LaiPuLaser/BarCodeModule.h new file mode 100644 index 0000000..b3aa73f --- /dev/null +++ b/LaiPuLaser/BarCodeModule.h @@ -0,0 +1,13 @@ +#pragma once + +//߶λһС +class CBarCodeModule{ +public: + CBarCodeModule(bool bBlack) + { + m_bBlack = bBlack;//ǷǺɫ + } + bool IsBlack(){return m_bBlack;}; +private: + bool m_bBlack;//ǷǺɫ +}; \ No newline at end of file diff --git a/LaiPuLaser/BinaryFilters.bin b/LaiPuLaser/BinaryFilters.bin new file mode 100644 index 0000000..524ae89 Binary files /dev/null and b/LaiPuLaser/BinaryFilters.bin differ diff --git a/LaiPuLaser/BitOperation.h b/LaiPuLaser/BitOperation.h new file mode 100644 index 0000000..ec12a7e --- /dev/null +++ b/LaiPuLaser/BitOperation.h @@ -0,0 +1,30 @@ +#pragma once +//λ㺯 + +//PortVal PortIdx λΪ1 +inline long SetBitOn(long PortVal,int PortIdx) +{ + PortVal= PortVal |(1<>PortIdx)&1) + return TRUE; + else + return FALSE; +} + +inline long SetBitByBool(BYTE PortVal,int PortIdx,bool b) +{ + if(b) + return SetBitOn(PortVal,PortIdx); + return SetBitOff(PortVal,PortIdx); +} \ No newline at end of file diff --git a/LaiPuLaser/CCDCamera.INI b/LaiPuLaser/CCDCamera.INI new file mode 100644 index 0000000..d795502 --- /dev/null +++ b/LaiPuLaser/CCDCamera.INI @@ -0,0 +1,2 @@ +[CameraParam] +Shutter=80000 diff --git a/LaiPuLaser/CH365DLL.DLL b/LaiPuLaser/CH365DLL.DLL new file mode 100644 index 0000000..60a6e26 Binary files /dev/null and b/LaiPuLaser/CH365DLL.DLL differ diff --git a/LaiPuLaser/CH365DLL.H b/LaiPuLaser/CH365DLL.H new file mode 100644 index 0000000..0b53178 --- /dev/null +++ b/LaiPuLaser/CH365DLL.H @@ -0,0 +1,558 @@ +// 2003.09.10 +// 2003.12.08 V1.2 +// 2004.05.08 V1.3 +// 2004.12.10 V1.5 +//**************************************** +//** Copyright (C) W.ch 1999-2004 ** +//** Web: http://www.winchiphead.com ** +//**************************************** +//** DLL for PCI interface chip CH365 ** +//** C, VC5.0 ** +//**************************************** +// +// PCI߽ӿоƬCH365Ӧòӿڿ V1.5 +// Ͼߺ޹˾ : W.ch 2004.12 +// CH365-DLL V1.5 , Support: IO/MEM/INT +// л: Windows 98/ME, Windows 2000/XP + +#ifndef _CH365_DLL_H +#define _CH365_DLL_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define mOFFSET( s, m ) ( (ULONG) & ( ( ( s * ) 0 ) -> m ) ) // ȡṹԱƫƵַĺ + +#ifndef max +#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) // ϴֵ +#endif + +#ifndef min +#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) // Сֵ +#endif + +#ifdef ExAllocatePool +#undef ExAllocatePool // ɾTAGڴ +#endif + +#ifndef NTSTATUS +typedef LONG NTSTATUS; // ״̬ +#endif + + +typedef struct _PCI_CONFIG { // PCIÿռݽṹ + USHORT mPcVendorId; // 00H Ӧ̱ʶ + USHORT mPcDeviceId; // 02H 豸ʶ + USHORT mPcCommandReg; // 04H Ĵ + USHORT mPcStatusReg; // 06H ״̬Ĵ + UCHAR mPcRevisionId; // 08H ޸ıʶ + UCHAR mPcProgramIf; // 09H Ĵ̽ӿ + UCHAR mPcSubClass; // 0AH + UCHAR mPcBaseClass; // 0BH + UCHAR mPcCacheLine; // 0CH г + UCHAR mPcLatenTimer; // 0DH ӳټ + UCHAR mPcHeaderType; // 0EH ͷ + UCHAR mPcBistReg; // 0FH ںԲԼĴ + ULONG mPcBaseAddr0; // 10H ַĴ0 + ULONG mPcBaseAddr1; // 14H ַĴ1 + ULONG mPcBaseAddr2; // 18H ַĴ2 + ULONG mPcBaseAddr3; // 1CH ַĴ3 + ULONG mPcBaseAddr4; // 20H ַĴ4 + ULONG mPcBaseAddr5; // 24H ַĴ5 + ULONG mPcCardCis; // 28H + USHORT mPcSubSysVen; // 2CH ϵͳӦ̱ʶ + USHORT mPcSubSysDev; // 2EH ϵͳ豸ʶ + ULONG mPcExpansRom; // 30H չROMַĴ + UCHAR mPcCapPtr; // 34H + UCHAR mPcReserved1[3]; // 35H + ULONG mPcReserved2; // 38H + UCHAR mPcInterLine; // 3CH ж߼Ĵ + UCHAR mPcInterPin; // 3DH жżĴ + UCHAR mPcMinGrant; // 3EH + UCHAR mPcMaxLatency; // 3FH +} mPCI_CONFIG, *mPPCI_CONFIG; + +typedef struct _PCI_EXP_ROM { // PCIչROMݽṹ + UCHAR mPerRomSig[4]; // 00H PCIչROMǩַ'PCIR' + USHORT mPerVendorId; // 04H Ӧ̱ʶ + USHORT mPerDeviceId; // 06H 豸ʶ + USHORT mPerVpdPtr; // 08H ҪƷָ + USHORT mPerStrucLen; // 0AH PCIչROMݽṹij + UCHAR mPerRevision; // 0CH PCIչROMݽṹ޸İ汾 + UCHAR mPerProgramIf; // 0DH Ĵ̽ӿ + UCHAR mPerSubClass; // 0EH + UCHAR mPerBaseClass; // 0FH + USHORT mPerImageLen; // 10H ӳ񳤶 + USHORT mPerImageRev; // 12H ӳд/ݵ޸İ汾 + UCHAR mPerCodeType; // 14H + UCHAR mPerIndicator; // 15H ӳָʾ־ + USHORT mPerReserved; // 16H +} mPCI_EXP_ROM, *mPPCI_EXP_ROM; + +typedef struct _CH365_CFG_REG { // CH365оƬüĴ + mPCI_CONFIG mCh365CfgPci; // 00H-3FH,64ֽΪ׼PCIÿռ + UCHAR mCh365CfgCtrl; // 40H оƬƼĴ,5λֻ + UCHAR mCh365CfgDin; // 41H 8λ˿,ֻ + UCHAR mCh365CfgState; // 42H оƬ״̬Ĵ,ֻ + UCHAR mCh365CfgResv; // 43H +} mCH365_CFG_REG, *mPCH365_CFG_REG; + +typedef struct _CH365_IO_REG { // CH365оƬI/Oռ + UCHAR mCh365IoPort[0xf0]; // 00H-EFH,240ֽΪ׼I/O˿ + union { // ֻֽΪλдȡ + USHORT mCh365MemAddr; // F0H 洢ӿ: A15-A0ַ趨Ĵ + struct { // ֽΪλдȡ + UCHAR mCh365MemAddrL; // F0H 洢ӿ: A7-A0ַ趨Ĵ + UCHAR mCh365MemAddrH; // F1H 洢ӿ: A15-A8ַ趨Ĵ + }; + }; + UCHAR mCh365IoResv2; // F2H + UCHAR mCh365MemData; // F3H 洢ӿ: 洢ݴȡĴ + UCHAR mCh365I2cData; // F4H I2Cнӿ: I2CݴȡĴ + UCHAR mCh365I2cCtrl; // F5H I2Cнӿ: I2Cƺ״̬Ĵ + UCHAR mCh365I2cAddr; // F6H I2Cнӿ: I2Cַ趨Ĵ + UCHAR mCh365I2cDev; // F7H I2Cнӿ: I2C豸ַĴ + UCHAR mCh365IoCtrl; // F8H оƬƼĴ,5λֻ + UCHAR mCh365IoBuf; // F9H 뻺Ĵ + UCHAR mCh365Speed; // FAH оƬٶȿƼĴ + UCHAR mCh365IoResv3; // FBH + UCHAR mCh365IoTime; // FCH ӲѭĴ + UCHAR mCh365IoResv4[3]; // FDH +} mCH365_IO_REG, *mPCH365_IO_REG; + +typedef struct _CH365_MEM_REG { // CH365оƬĴ洢ռ + UCHAR mCh365MemPort[0x8000]; // 0000H-7FFFH,32768ֽΪ׼Ĵ洢Ԫ +} mCH365_MEM_REG, *mPCH365_MEM_REG; + +typedef struct _WIN32_COMMAND { // WIN32ӿڽṹ + union { + ULONG mFunction; // ʱָܴ + NTSTATUS mStatus; // ʱز״̬ + }; + PVOID mAddress; // ʼַ,صַ + ULONG mLength; // ȡ,غݵij + UCHAR mBuffer[4]; // ݻ,Ϊ032KB +} mWIN32_COMMAND, *mPWIN32_COMMAND; + +// WIN32Ӧòӿ +#define IOCTL_CH365_COMMAND ( FILE_DEVICE_UNKNOWN << 16 | FILE_ANY_ACCESS << 14 | 0x0f36 << 2 | METHOD_BUFFERED ) // רýӿ + +#define mWIN32_COMMAND_HEAD mOFFSET( mWIN32_COMMAND, mBuffer ) // WIN32ӿڵͷ + +#define mCH365_MAX_NUMBER 16 // ͬʱӵCH365 + +#define mMAX_BUFFER_LENGTH max( sizeof( mCH365_IO_REG ), sizeof( mCH365_MEM_REG ) ) // ݻ󳤶 + +#define mMAX_COMMAND_LENGTH ( mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH ) // ݳȼṹͷij + +#define mCH365_MEM_BASE_AUTO ( (PVOID)0xffffffff ) // Զ趨CH365Ĵ洢ַ + +#define mCH365_INT_TOOL_LINE_AUTO 0xffffffff // ԶCH365жϺ + + +// Ĵλ +#define mBitAddr15Out 0x01 // 趨A15ֵ,1*:high,0:low +#define mBitSysExtOut 0x02 // 趨SYS_EXֵ,1:high,0*:low +#define mBitIntAction 0x04 // 趨жϼ״̬,1:action,0*:inaction +#define mBitPciIdDef 0x01 // ֻ,PCI豸ʶĵǰѡ,1*:default,0:external +#define mBitPortHit 0x04 // ֻ,Ӳַܵ״̬,1:,0*: +#define mBitInterRom 0x10 // ֻ,ڲMini-ROMܵ״̬,1:,0*: +#define mBitSysExtOe 0x40 // ֻ,SYS_EX̬/ʹ,1*:,0: +#define mBitIntEnable 0x80 // ֻ,жϹܵ״̬,1:,0*: +#define mBitI2cStatus 0x01 // I2CӿڵIJƺ״̬,1:ʼ/ڲ,0*:/ +#define mBitI2cSclOut 0x80 // ѡI2CӿڵSCL,1:SYS_EX,0*:A15 +#define mBitSpeedAct 0x07 // ٶȿ,״̬,ʵʿΪֵ30nS +#define mBitSpeedInact 0x10 // ٶȿ,Ǽ״̬Ŀп,1:ǰ45nS/15nS,0:ǰ15nS/15nS +#define mBitSpeedPreft 0x80 // ٶȿ,Ԥȡ״̬λ,1:ԤȡλЧ,0:ԤȡλЧ + + +// ӦòӿڵĹܴ +#define mFuncNoOperation 0x00000000 // ޲ +#define mFuncGetVersion 0x00000001 // ȡ汾 +#define mFuncGetIoBaseAddr 0x00000004 // ȡI/O˿ڻַ +#define mFuncSetIoBaseAddr 0x00000005 // I/O˿ڻַ +#define mFuncGetMemBaseAddr 0x00000006 // ȡ洢ַ +#define mFuncSetMemBaseAddr 0x00000007 // ô洢ַ,Զ趨洢ַ +#define mFuncGetInterLine 0x00000008 // ȡжϺ +#define mFuncSetInterLine 0x00000009 // жϺ,ԶжϺ +#define mFuncWaitInterrupt 0x0000000a // ȴж,ֱCH365ж +#define mFuncAbortWaitInter 0x0000000b // ȴж,ֹȴ +#define mFuncSetExclusive 0x0000000c // öռʹ +#define mFuncReadIoByte 0x00000010 // ȡ˿,ͬһ˿ڵַֽΪλȡ +#define mFuncReadIoWord 0x00000011 // ȡ˿,ͬһ˿ڵַΪλȡ +#define mFuncReadIoDword 0x00000012 // ȡ˿,ͬһ˿ڵַ˫Ϊλȡ +#define mFuncReadIoBlock 0x00000013 // ȡ˿,ÿȡһֽ,˿ڵַһ +#define mFuncWriteIoByte 0x00000014 // д˿,ͬһ˿ڵַֽΪλд +#define mFuncWriteIoWord 0x00000015 // д˿,ͬһ˿ڵַΪλд +#define mFuncWriteIoDword 0x00000016 // д˿,ͬһ˿ڵַ˫Ϊλд +#define mFuncWriteIoBlock 0x00000017 // д˿,ÿдһֽ,˿ڵַһ +#define mFuncReadMemByte 0x00000018 // ȡ洢/Ĵ +#define mFuncReadMemWord 0x00000019 // ȡ洢/Ĵ +#define mFuncReadMemDword 0x0000001a // ȡ洢/Ĵ +#define mFuncWriteMemByte 0x0000001c // д洢/Ĵ +#define mFuncWriteMemWord 0x0000001d // д洢/Ĵ +#define mFuncWriteMemDword 0x0000001e // д洢/Ĵ +#define mFuncReadConfig 0x00000020 // ȡPCIÿռ +#define mFuncWriteConfig 0x00000021 // дPCIÿռ +#define mFuncReadBuffer1 0x00000024 // ȡж1 +#define mFuncWriteBuffer1 0x00000025 // дж1 +#define mFuncReadBuffer2 0x00000026 // ȡж2 +#define mFuncWriteBuffer2 0x00000027 // дж2 + + +typedef VOID ( CALLBACK * mPCH365_INT_ROUTINE ) ( VOID ); // жϷ + + +HANDLE WINAPI CH365OpenDevice( // CH365豸,ؾ,Ч + BOOL iEnableMemory, // ǷҪִ֧洢 + BOOL iEnableInterrupt ); // ǷҪ֧ж + + +VOID WINAPI CH365CloseDevice( ); // رCH365豸 + + +ULONG WINAPI CH365GetVersion( ); // DLL汾,ذ汾 + + +ULONG WINAPI CH365DriverCommand( // ֱӴ,򷵻0,򷵻ݳ + mPWIN32_COMMAND ioCommand ); // ṹָ +// óڵú󷵻ݳ,Ȼṹ,Ƕ,ݷṹ, +// صݳڲʧʱΪ0,ɹʱΪṹij,һֽ,򷵻mWIN32_COMMAND_HEAD+1, +// ṹڵǰ,ֱṩ:ܴ,ʼַ(ѡ),ȡݵij(ѡ), +// ṹڵú,ֱ𷵻:״̬,صĻַ(ѡ),ݵij(ѡ), +// ״̬WINDOWSĴ,ԲοNTSTATUS.H, +// صĻַֻ:ȡI/Oַ,ȡ洢ַ,ȡжϺ,򱣳ʱʼַ +// ݵijָصݳ,ݴĻ,дһΪ0 + + +ULONG WINAPI CH365GetDrvVersion( ); // 汾,ذ汾,򷵻0 + + +BOOL WINAPI CH365GetIoBaseAddr( // ȡI/O˿ڵĻַ + mPCH365_IO_REG *oIoBaseAddr ); // I/O˿ڻַĵԪַ + + +BOOL WINAPI CH365SetIoBaseAddr( // 趨I/O˿ڵĻַ + mPCH365_IO_REG iIoBaseAddr ); // ָI/O˿ڻַ + + +BOOL WINAPI CH365GetMemBaseAddr( // ȡ洢Ļַ + mPCH365_MEM_REG *oMemBaseAddr ); // 洢ַĵԪַ + + +BOOL WINAPI CH365SetMemBaseAddr( // 趨洢Ļַ + mPCH365_MEM_REG iMemBaseAddr ); // ָ洢ַ,Ϊ0رմ洢,Ϊ-1Զ趨 + + +BOOL WINAPI CH365GetIntLine( // ȡжϺ + PULONG oIntLine ); // жϺŵĵԪַ + + +BOOL WINAPI CH365SetIntLine( // 趨жϺ + ULONG iIntLine ); // ָжϺ,Ϊ0رж,Ϊ-1ԶⲢ趨 + + +BOOL WINAPI CH365WaitInterrupt( ); // ȴж¼ + + +BOOL WINAPI CH365AbortWaitInt( ); // ȴж + + +BOOL WINAPI CH365SetIntRoutine( // 趨жϷ + mPCH365_INT_ROUTINE iIntRoutine ); // ָжϷ,ΪNULLȡжϷ,жʱøó + + +BOOL WINAPI CH365ReadIntCommand( // ȡж + mPWIN32_COMMAND oCommand, // ָһ㹻Ļ,ڱȡṹ + ULONG iCmdIndex ); // ж,Ϊ12 + + +BOOL WINAPI CH365WriteIntCommand( // дж + mPWIN32_COMMAND iCommand, // ָΪжṹ + ULONG iCmdIndex ); // ж,Ϊ12 + + +BOOL WINAPI CH365ReadIoByte( // I/O˿ڶȡһֽ + PVOID iAddr, // ָI/O˿ڵĵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365ReadIoWord( // I/O˿ڶȡһ + PVOID iAddr, // ָI/O˿ڵĵַ + PUSHORT oWord ); // ָһֵԪ,ڱȡ + + +BOOL WINAPI CH365ReadIoDword( // I/O˿ڶȡһ˫ + PVOID iAddr, // ָI/O˿ڵĵַ + PULONG oDword ); // ָһ˫ֵԪ,ڱȡ˫ + + +BOOL WINAPI CH365WriteIoByte( // I/O˿дһֽ + PVOID iAddr, // ָI/O˿ڵĵַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365WriteIoWord( // I/O˿дһ + PVOID iAddr, // ָI/O˿ڵĵַ + USHORT iWord ); // д + + +BOOL WINAPI CH365WriteIoDword( // I/O˿дһ˫ + PVOID iAddr, // ָI/O˿ڵĵַ + ULONG iDword ); // д˫ + + +BOOL WINAPI CH365ReadMemByte( // Ӵ洢ȡһֽ + PVOID iAddr, // ָ洢ĵַ,ַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365ReadMemDword( // Ӵ洢ȡһ˫ + PVOID iAddr, // ָ洢ĵַ,ַ + PULONG oDword ); // ָһ˫ֵԪ,ڱȡ˫ + + +BOOL WINAPI CH365WriteMemByte( // 洢дһֽ + PVOID iAddr, // ָ洢ĵַ,ַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365WriteMemDword( // 洢дһ˫ + PVOID iAddr, // ָ洢ĵַ,ַ + ULONG iDword ); // д˫ + + +BOOL WINAPI CH365ReadConfig( // ÿռȡһֽ + PVOID iOffset, // ָƫƵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365WriteConfig( // ÿռдһֽ + PVOID iOffset, // ָƫƵַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365SetA15_A8( // øߵַ,A15-A8 + UCHAR iA15_A8 ); // λ7-λ0ӦA15-A8,1Ϊߵƽ,0Ϊ͵ƽ + + +BOOL WINAPI CH365ReadI2C( // I2Cӿڶȡһֽ + UCHAR iDevice, // 7λָI2C豸ַ + UCHAR iAddr, // ָݵԪĵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365WriteI2C( // I2Cӿдһֽ + UCHAR iDevice, // 7λָI2C豸ַ + UCHAR iAddr, // ָݵԪĵַ + UCHAR iByte ); // дֽ + + +HANDLE WINAPI CH365mOpenDevice( // CH365豸,ؾ,Ч + ULONG iIndex, // ָCH365豸,0Ӧһ豸 + BOOL iEnableMemory, // ǷҪִ֧洢 + BOOL iEnableInterrupt ); // ǷҪ֧ж + + +VOID WINAPI CH365mCloseDevice( // رCH365豸 + ULONG iIndex ); // ָCH365豸 + + +ULONG WINAPI CH365mDriverCommand( // ֱӴ,򷵻0,򷵻ݳ + ULONG iIndex, // ָCH365豸 + mPWIN32_COMMAND ioCommand ); // ṹָ +// óڵú󷵻ݳ,Ȼṹ,Ƕ,ݷṹ, +// صݳڲʧʱΪ0,ɹʱΪṹij,һֽ,򷵻mWIN32_COMMAND_HEAD+1, +// ṹڵǰ,ֱṩ:ܴ,ʼַ(ѡ),ȡݵij(ѡ), +// ṹڵú,ֱ𷵻:״̬,صĻַ(ѡ),ݵij(ѡ), +// ״̬WINDOWSĴ,ԲοNTSTATUS.H, +// صĻַֻ:ȡI/Oַ,ȡ洢ַ,ȡжϺ,򱣳ʱʼַ +// ݵijָصݳ,ݴĻ,дһΪ0 + + +BOOL WINAPI CH365mGetIoBaseAddr( // ȡI/O˿ڵĻַ + ULONG iIndex, // ָCH365豸 + mPCH365_IO_REG *oIoBaseAddr ); // I/O˿ڻַĵԪַ + + +BOOL WINAPI CH365mSetIoBaseAddr( // 趨I/O˿ڵĻַ + ULONG iIndex, // ָCH365豸 + mPCH365_IO_REG iIoBaseAddr ); // ָI/O˿ڻַ + + +BOOL WINAPI CH365mGetMemBaseAddr( // ȡ洢Ļַ + ULONG iIndex, // ָCH365豸 + mPCH365_MEM_REG *oMemBaseAddr ); // 洢ַĵԪַ + + +BOOL WINAPI CH365mSetMemBaseAddr( // 趨洢Ļַ + ULONG iIndex, // ָCH365豸 + mPCH365_MEM_REG iMemBaseAddr ); // ָ洢ַ,Ϊ0رմ洢,Ϊ-1Զ趨 + + +BOOL WINAPI CH365mGetIntLine( // ȡжϺ + ULONG iIndex, // ָCH365豸 + PULONG oIntLine ); // жϺŵĵԪַ + + +BOOL WINAPI CH365mSetIntLine( // 趨жϺ + ULONG iIndex, // ָCH365豸 + ULONG iIntLine ); // ָжϺ,Ϊ0رж,Ϊ-1ԶⲢ趨 + + +BOOL WINAPI CH365mWaitInterrupt( // ȴж¼ + ULONG iIndex ); // ָCH365豸 + + +BOOL WINAPI CH365mAbortWaitInt( // ȴж + ULONG iIndex ); // ָCH365豸 + + +BOOL WINAPI CH365mSetIntRoutine( // 趨жϷ + ULONG iIndex, // ָCH365豸 + mPCH365_INT_ROUTINE iIntRoutine ); // ָжϷ,ΪNULLȡжϷ,жʱøó + + +BOOL WINAPI CH365mReadIntCommand( // ȡж + ULONG iIndex, // ָCH365豸 + mPWIN32_COMMAND oCommand, // ָһ㹻Ļ,ڱȡṹ + ULONG iCmdIndex ); // ж,Ϊ12 + + +BOOL WINAPI CH365mWriteIntCommand( // дж + ULONG iIndex, // ָCH365豸 + mPWIN32_COMMAND iCommand, // ָΪжṹ + ULONG iCmdIndex ); // ж,Ϊ12 + + +BOOL WINAPI CH365mReadIoByte( // I/O˿ڶȡһֽ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365mReadIoWord( // I/O˿ڶȡһ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + PUSHORT oWord ); // ָһֵԪ,ڱȡ + + +BOOL WINAPI CH365mReadIoDword( // I/O˿ڶȡһ˫ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + PULONG oDword ); // ָһ˫ֵԪ,ڱȡ˫ + + +BOOL WINAPI CH365mWriteIoByte( // I/O˿дһֽ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365mWriteIoWord( // I/O˿дһ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + USHORT iWord ); // д + + +BOOL WINAPI CH365mWriteIoDword( // I/O˿дһ˫ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָI/O˿ڵĵַ + ULONG iDword ); // д˫ + + +BOOL WINAPI CH365mReadMemByte( // Ӵ洢ȡһֽ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָ洢ĵַ,ַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365mReadMemDword( // Ӵ洢ȡһ˫ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָ洢ĵַ,ַ + PULONG oDword ); // ָһ˫ֵԪ,ڱȡ˫ + + +BOOL WINAPI CH365mWriteMemByte( // 洢дһֽ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָ洢ĵַ,ַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365mWriteMemDword( // 洢дһ˫ + ULONG iIndex, // ָCH365豸 + PVOID iAddr, // ָ洢ĵַ,ַ + ULONG iDword ); // д˫ + + +BOOL WINAPI CH365mReadConfig( // ÿռȡһֽ + ULONG iIndex, // ָCH365豸 + PVOID iOffset, // ָƫƵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365mWriteConfig( // ÿռдһֽ + ULONG iIndex, // ָCH365豸 + PVOID iOffset, // ָƫƵַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365mSetA15_A8( // øߵַ,A15-A8 + ULONG iIndex, // ָCH365豸 + UCHAR iA15_A8 ); // λ7-λ0ӦA15-A8,1Ϊߵƽ,0Ϊ͵ƽ + + +BOOL WINAPI CH365mReadI2C( // I2Cӿڶȡһֽ + ULONG iIndex, // ָCH365豸 + UCHAR iDevice, // 7λָI2C豸ַ + UCHAR iAddr, // ָݵԪĵַ + PUCHAR oByte ); // ָһֽڵԪ,ڱȡֽ + + +BOOL WINAPI CH365mWriteI2C( // I2Cӿдһֽ + ULONG iIndex, // ָCH365豸 + UCHAR iDevice, // 7λָI2C豸ַ + UCHAR iAddr, // ָݵԪĵַ + UCHAR iByte ); // дֽ + + +BOOL WINAPI CH365DelayUS( // ʱָ΢ + ULONG iDelay ); // ָҪʱ΢,ʱС10ϴ + + +BOOL WINAPI CH365mAccessBlock( // ȡдݿ + ULONG iIndex, // ָCH365豸 + ULONG iAccessMode, // ο˵ + PVOID iAddr, // ָI/O˿ڻߴ洢ĵַ + PVOID ioBuffer, // ָĻ + ULONG iLength ); // ݿ鳤,ҲǶȡдֽ,Ȳ32KB +// iAccessMode +// #define mFuncReadIoByte 0x00000010 // ȡ˿,ͬһ˿ڵַֽΪλȡ,󳤶32KB +// #define mFuncReadIoWord 0x00000011 // ȡ˿,ͬһ˿ڵַΪλȡ,󳤶32KB +// #define mFuncReadIoDword 0x00000012 // ȡ˿,ͬһ˿ڵַ˫Ϊλȡ,󳤶32KB +// #define mFuncReadIoBlock 0x00000013 // ȡ˿,ÿȡһֽ,˿ڵַһ,󳤶240B(ƫƵַ00HEFH) +// #define mFuncWriteIoByte 0x00000014 // д˿,ͬһ˿ڵַֽΪλд,󳤶32KB +// #define mFuncWriteIoWord 0x00000015 // д˿,ͬһ˿ڵַΪλд,󳤶32KB +// #define mFuncWriteIoDword 0x00000016 // д˿,ͬһ˿ڵַ˫Ϊλд,󳤶32KB +// #define mFuncWriteIoBlock 0x00000017 // д˿,ÿдһֽ,˿ڵַһ,󳤶240B(ƫƵַ00HдEFH) +// #define mFuncReadMemByte 0x00000018 // ȡ洢/Ĵ,ֽΪλ,ÿȡһֽ,ַһ,󳤶32KB(ƫƵַ0000H7FFFH) +// #define mFuncReadMemWord 0x00000019 // ȡ洢/Ĵ,Ϊλ,ÿȡһ,ַӶ,󳤶32KB(ƫƵַ0000H7FFFH) +// #define mFuncReadMemDword 0x0000001a // ȡ洢/Ĵ,˫Ϊλ,ÿȡһֽ,ַ,󳤶32KB(ƫƵַ0000H7FFFH) +// #define mFuncWriteMemByte 0x0000001c // д洢/Ĵ,ֽΪλд,ÿȡһֽ,ַһ,󳤶32KB(ƫƵַ0000Hд7FFFH) +// #define mFuncWriteMemWord 0x0000001d // д洢/Ĵ,Ϊλд,ÿȡһ,ַӶ,󳤶32KB(ƫƵַ0000Hд7FFFH) +// #define mFuncWriteMemDword 0x0000001e // д洢/Ĵ,˫Ϊλд,ÿȡһ˫,ַ,󳤶32KB(ƫƵַ0000Hд7FFFH) +// ʽ֧,ļCH365DLL.H + + +BOOL WINAPI CH365mSetExclusive( // öռʹõǰCH365豸 + ULONG iIndex, // ָCH365豸 + ULONG iExclusive ); // Ϊ0豸Թʹ,0ռʹ + + +#ifdef __cplusplus +} +#endif + +#endif // _CH365_DLL_H diff --git a/LaiPuLaser/CStringFuc.h b/LaiPuLaser/CStringFuc.h new file mode 100644 index 0000000..6ca0ce4 --- /dev/null +++ b/LaiPuLaser/CStringFuc.h @@ -0,0 +1,99 @@ +#pragma once +#include "GlobalDefine.h" + +#define TRUE_STR _T("TRUE") +#define FALSE_STR _T("FALSE") +//MFC CString صһЩ + +//ȥС治Ҫ0 +inline void DeleteZero(CString &s) +{ + int nIndex; + nIndex=s.Find('.'); + if (nIndex>=0) + { + s.TrimRight('0'); + if (s.GetLength()==nIndex+1) + { + s=s.Left(nIndex); + if (s.IsEmpty()) + s='0'; + } + } +} + +//double תΪCString +inline CString Db2CString(double n) +{ + CString s; + s.Format("%lf",n); + DeleteZero(s); + return s; +} +//int תΪCString +inline CString Int2CString(int n) +{ + CString s; + s.Format("%ld",n); + return s; +} +//ȡbool ͵str +inline CString GetBoolValStr(bool b) +{ + if(b) + return TRUE_STR; + else + return FALSE_STR; +} +//str вSubStr ,ҵtrue +inline bool FindSubStr(CString &str,CString &SubStr) +{ + return (str.Find(SubStr) != -1); +} +//ɾӴʣұߵIJ +inline CString DelSubStr(CString str,CString &SubStr) +{ + int pos = str.Find(SubStr); + if(pos != -1) + { + str = str.Right(str.GetLength()-(pos+SubStr.GetLength())); + } + return str; +} +inline int CStringToInt(CString &str) +{ + return _tstoi(LPCTSTR(str)); +} +inline double CStringToDouble(CString &str) +{ + return _tstof(LPCTSTR(str)); +} +inline bool CStringToBool(CString &str) +{ + if(str == TRUE_STR) + return true; + return false; +} +inline CString Bool2Str(bool b) +{ + if(b) + return "TRUE"; + else + return "FALSE"; +} +inline bool Str2Bool(CString &str) +{ + if(str == _T("TRUE")) + return true; + else + return false; +} +inline CString Time2Str(int n) +{ + CString s; + if(n<10) + s.Format("0%ld",n);//߲0 + else + s.Format("%ld",n); + return s; +} \ No newline at end of file diff --git a/LaiPuLaser/Camera.cpp b/LaiPuLaser/Camera.cpp new file mode 100644 index 0000000..55aece8 --- /dev/null +++ b/LaiPuLaser/Camera.cpp @@ -0,0 +1,497 @@ +#include "StdAfx.h" +#include "Camera.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "LogMgr.h" +#include "AuthorityMgr.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "PlatformXY.h" +#include "ExceptionMsg.h" + +CCamera::CCamera(void) +{ + m_OnePixDis = 1;//һضӦʵʳߴ(mm/pix) + m_bIni = false;//Ƿʼɹ + m_bRotatoPtByAngle = false;//ǷİװǶץȡ + m_Angle = 0; + m_bUse = true;//Ƿʹ + m_bLeftTop = true;//׼ǷΪϽ(false Ϊ½) + m_bPixCoord = true;//ץȡǷΪ(ʿصmm λֵ) + m_bCatch = true;//ʵץȡ + m_CatchFrontDelay = 100;//ץȡǰʱms + m_CatchWaitDelay = 200;//ץȡȴʱms +} +CCamera::~CCamera(void) +{ +} +CMFCPropertyGridProperty *CCamera::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("Camera");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ͨ趨"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUse");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUse); + pPropertie->SetType(_PROP_TYPE_BOOL ); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿʹ"); + Description = _T("Ƿʹcamera"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUse, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCatch");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatch); + pPropertie->SetType(_PROP_TYPE_BOOL ); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿץȡ"); + Description = _T("FALSE ʱ򷵻0,Dz"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatch, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_CatchFrontDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CatchFrontDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ץȡǰʱ"); + Description = _T("ץȡǰʱms"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CatchFrontDelay, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_CatchWaitDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CatchWaitDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ץȡȴʱ"); + Description = _T("ʶ𴥷ȴݴocx ʱms"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CatchWaitDelay, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bRotatoPtByAngle");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bRotatoPtByAngle); + pPropertie->SetType(_PROP_TYPE_BOOL ); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƕ"); + Description = _T("ǷİװǶץȡ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bRotatoPtByAngle, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_Angle");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Angle); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("װǶ"); + Description = _T("CCD X ڵX ĽǶ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Angle, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bLeftTop");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bLeftTop); + pPropertie->SetType(_PROP_TYPE_BOOL ); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ͻǻ׼"); + Description = _T("׼ǷΪϽ(false Ϊ½)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bLeftTop, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bPixCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bPixCoord); + pPropertie->SetType(_PROP_TYPE_BOOL ); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("ץȡǷΪ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bPixCoord, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_OnePixDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OnePixDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("سߴ"); + Description = _T("һضӦʵʳߴ絥λ(mm/)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OnePixDis, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + + { + //Աӳ + Name = _T("m_Coord_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ׼x"); + Description = _T("CCD ӳ׼ƽ̨ԭ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord.x, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_Coord_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ׼y"); + Description = _T("CCD ӳ׼ƽ̨ԭ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord.y, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + + { + //Աӳ + Name = _T("m_Coord2_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord2.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ2׼x"); + Description = _T("CCD2 ӳ׼ƽ̨ԭ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord2.x, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_Coord2_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord2.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ2׼y"); + Description = _T("CCD2 ӳ׼ƽ̨ԭ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord2.y, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + + { + //Աӳ + Name = _T("m_Size_w");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Size.w); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ"); + Description = _T("CCD ӳʵʿ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Size.w, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_Size_h");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Size.h); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӳ߶"); + Description = _T("CCD ӳʵʸ߶(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Size.h, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CCamera::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [Camera]------------------------------------------------"<WriteDebugLog(LogStr); + + //תΪmm λ----------------------- + if(m_bPixCoord) + { + CCDpt.x *= m_OnePixDis; + CCDpt.y *= m_OnePixDis; + } + + if(((CCDpt.x<0)||(CCDpt.x>m_Size.w))||((CCDpt.y<0)||(CCDpt.y>m_Size.h)))//ķֵ + { + CString str = _T("λץȡʧ"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + + LogStr.Format(_T("[MM_Coordx] = [%0.3f] ,[MM_Coordy] = [%0.3f]"),CCDpt.x,CCDpt.y); + gLogMgr->WriteDebugLog(LogStr); + + //Ϊƽ̨ ------------------------------------------- + #if 0 + Dbxy pt = CCDpt2Platcoord(CCDpt); + + LogStr.Format(_T("[m_Coordx] = [%0.3f] ,[m_Coordy] = [%0.3f]"),m_Coord.x,m_Coord.y); + gLogMgr->WriteDebugLog(LogStr); + + + //ƽ̨ǰƶ,ʵʲ + Dbxy PlatformPt = gPlatformXY->GetCoord(); + LogStr.Format(_T("[PlatformPtx] = [%0.3f] ,[PlatformPty] = [%0.3f]"),PlatformPt.x,PlatformPt.y); + gLogMgr->WriteDebugLog(LogStr); + + pt.x -= PlatformPt.x; + pt.y -= PlatformPt.y; + #else + Dbxy CameraCoord = m_Coord; //GetCenterPt(); + if (m_CamIndex != 0) + { + CameraCoord = m_Coord2; + } + + LogStr.Format(_T("[CameraCoord.x] = [%0.3f] ,[CameraCoord.y] = [%0.3f]"),CameraCoord.x,CameraCoord.y); + gLogMgr->WriteDebugLog(LogStr); + Dbxy PlatformPt = gPlatformXY->GetCoord(); + LogStr.Format(_T("[PlatformCoord.x] = [%0.3f] ,[PlatformCoord.y] = [%0.3f]"),PlatformPt.x,PlatformPt.y); + gLogMgr->WriteDebugLog(LogStr); + CameraCoord.x = CameraCoord.x - PlatformPt.x; + CameraCoord.y = CameraCoord.y + PlatformPt.y; + LogStr.Format(_T("[CameraCoord_Now.x] = [%0.3f] ,[CameraCoord_Now.y] = [%0.3f]"),CameraCoord.x,CameraCoord.y); + gLogMgr->WriteDebugLog(LogStr); + + Dbxy pt; + pt.x = CameraCoord.x + CCDpt.x; + pt.y = CameraCoord.y - CCDpt.y; + + LogStr.Format(_T("[CatchPt.x] = [%0.3f] ,[CatchPt.y] = [%0.3f]"),pt.x,pt.y); + gLogMgr->WriteDebugLog(LogStr); + #endif + return pt; +} +//ץȡ, תΪƽ̨(pt ץȡĽ) +bool CCamera::CatchPtToPlatformcoord(Dbxy &pt) +{ + Dbxy CatchPt; + bool ret; + if(!m_bCatch)//ʵץȡ + { + ret = true; + CatchPt.x = 1296; + CatchPt.y = 972; + } + else + { + ret = CatchPoint(CatchPt); + } + if(IsDbxyZero(CatchPt)) + return false; + + if(ret) + { + pt = CCDcoord2Platformcoord(CatchPt); + } + return ret; +} + + diff --git a/LaiPuLaser/Camera.h b/LaiPuLaser/Camera.h new file mode 100644 index 0000000..cb72c8b --- /dev/null +++ b/LaiPuLaser/Camera.h @@ -0,0 +1,51 @@ +#pragma once +#include "GlobalDefine.h" +#include "module.h" + +class CCamera:public CModule +{ +public: + CCamera(void); + virtual ~CCamera(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual void Draw(CDC* pDC); + virtual bool CatchPoint(Dbxy &pt){return false;}; + virtual Dbxy GetCoord();// {return m_Coord;}; + virtual Dbxy CCDpt2Platcoord(Dbxy CCDpt); + virtual Dbxy GetCenterPt(); + void SetCoord(Dbxy pt); + + void SetCamIndex(int index) { m_CamIndex = index; };//0,1 + int GetCamIndex() {return m_CamIndex ; };//ȡ0,1 + bool IsOpen() { return m_bOpen; }; + void SetbOpen(bool bOpen) { m_bOpen=bOpen; }; + + Dbxy CCDcoord2Platformcoord(Dbxy CCDpt); + bool CatchPtToPlatformcoord(Dbxy &pt); + double GetOnePixDis(){return m_OnePixDis;}; + double GetAngle(){return m_Angle;}; + int GetCatchFrontDelay(){return m_CatchFrontDelay;}; +protected: + bool m_bUse;//Ƿʹ + bool m_bIni;//Ƿʼɹ + double m_OnePixDis;//һضӦʵʳߴ(mm/pix) ,ͨҪõֵ,еCCD ʹֵ,ʿľڲ + + bool m_bLeftTop;//׼ǷΪϽ(false Ϊ½) + bool m_bPixCoord;//ץȡǷΪ(ʿصmm λֵ) + Dbxy m_Coord;//CCD ӳ׼ƽ̨ԭֵ(һϽ,½) + Dbxy m_Coord2;//˫ͷ,,ΪCCD2 + DbSize m_Size;//CCD ӳΧʵʳߴ(ץȡλֵ) + + bool m_bRotatoPtByAngle;//ǷİװǶץȡ + double m_Angle;//װǶ,ڵX (360 Ƚ) + + bool m_bCatch;//ʵץȡ + + int m_CamIndex=0;//( 0 1) + bool m_bOpen = false; + + int m_CatchFrontDelay;//ץȡǰʱms + int m_CatchWaitDelay;//ץȡȴʱms +}; + diff --git a/LaiPuLaser/CameraHawkvis.cpp b/LaiPuLaser/CameraHawkvis.cpp new file mode 100644 index 0000000..37a87d8 --- /dev/null +++ b/LaiPuLaser/CameraHawkvis.cpp @@ -0,0 +1,305 @@ +#include "StdAfx.h" +#include "CameraHawkvis.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "LogMgr.h" +#include "AuthorityMgr.h" +#include "GlobalFunction.h" +#include "ExceptionMsg.h" +#include "FileMgr.h" +#include "CStringFuc.h" +#include "DlgDnCutCamera.h" + +#define RESULT_CNT 10 //ץȡģ + + +CCameraHawkvis *gCameraHawkvis = new CCameraHawkvis; +CCameraHawkvis::CCameraHawkvis(void) +{ + m_nCam1Expore = 80000;//عֵ + m_nCam2Expore = 80000;//عֵ + m_bOpen = false;//Ƿ + m_bRotate180 = true;//Ƿת180 + m_bMirrorH = false;//ˮƽ + m_bMirrorV = false;//ֱ +} +CCameraHawkvis::~CCameraHawkvis(void) +{ +} +CMFCPropertyGridProperty *CCameraHawkvis::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("HawkvisCCD");;//洢· + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T("CCD "); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + + //Ȱѹͬ趨ӽ + CMFCPropertyGridProperty* pBase = CCamera::CreatGridProperty(); + pGroup->AddSubItem(pBase); + + PropertyName = _T("趨"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bRotate180");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bRotate180); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ת180 "); + Description = _T("ĻǷת180 "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bRotate180, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_nExpore");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_nCam1Expore); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Cam1عֵ"); + Description = _T("1عֵ(0~2000000)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_nCam1Expore, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_n2Expore");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_nCam2Expore); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Cam2عֵ"); + Description = _T("2عֵ(0~2000000)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_nCam2Expore, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bMirrorH");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bMirrorH); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ˮƽ"); + Description = _T("ˮƽ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMirrorH, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bMirrorV");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bMirrorV); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ֱ"); + Description = _T("ֱ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMirrorV, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + return pGroup; +} +void CCameraHawkvis::ExportPar(ofstream *pFile) +{ + CCamera::ExportPar(pFile); + (*pFile) << "[ģ] [CCameraHawkvis]------------------------------------------------" << endl; + +} +void CCameraHawkvis::Ini() +{ + //󶨻Ӿocx ؼ + m_HawkvisCtrl = (GetFrame()->m_DlgHawkvisCamera.m_pHawkvisCtrl); +#if 0//def __HAWKVIS_MINDVISION_CCD__ + // + m_HawkvisCtrl->MV_SetReversal(0, m_bMirrorH);//ˮƽ + m_HawkvisCtrl->MV_SetReversal(1, m_bMirrorV);//ֱ + + //óɹû + BOOL bMirrorH, bMirrorV; + m_HawkvisCtrl->MV_GetReversal(0, &bMirrorH); + m_HawkvisCtrl->MV_GetReversal(1, &bMirrorV); + + gLogMgr->WriteDebugLog("Hawkvis : MV_GetReversal : bMirrorH = " + Bool2Str(bMirrorH)); + gLogMgr->WriteDebugLog("Hawkvis : MV_GetReversal : bMirrorV = " + Bool2Str(bMirrorV)); +#endif +} +// +bool CCameraHawkvis::SwitchCamera(long CamIndex) +{ + SetCamIndex(CamIndex); + return true; +} +//ץȡ() (һֻץȡһmark ͼ) +bool CCameraHawkvis::CatchPoint(Dbxy &pt) +{ + if (!m_bUse) + return false; + auto & m_HawkvisCtrl = (GetFrame()->m_DlgHawkvisCamera.m_pHawkvisCtrl); + //֮ǰƵԲ + m_HawkvisCtrl->ClearGraphicObject(); + //ץȡһ֡ +#ifdef __HAWKVIS_MINDVISION_CCD__ + m_HawkvisCtrl->MV_GetOneFrame(); + Sleep(100); + if (!m_HawkvisCtrl->MV_GetOneFrame()) +#else + if (!m_HawkvisCtrl->HV_GetOneFrame()) +#endif + { + CString str = _T("func : Hawkvis Get One Frame----->Error"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + + if (!gDlgHawkvisCamera->bCurPicDefinitionOK()) + { + gTrackWorkFlow1.RadAlamOnOff(true); + CString str = _T("ǰͼƬȹ!!!"); + AfxMessageBox(str); + gTrackWorkFlow1.RadAlamOnOff(false); + + CExceptionMsg Msg; + Msg.SetMsg(CString("")); + throw Msg; + } + + +#ifdef USE_Virtual_CCD_DATA + pt.x = 10; + pt.y = 10; +#else + Sleep(m_CatchWaitDelay);//ȴݽocx ؼ + //ģ + double pdbX[10], pdbY[10], pdbAngles[10], pdbScale[10], pdbSore[10]; + long nCount[1] = { 1 }; + //FindShapeMode ؼģҺ + //һȡֵΧ15 + //ڶҵĿ + //ҵĿ + //ĸҵĿǶ + //ҵĿ + //ҵĿ + //߸ҵĿ + //ڰ˸ģID + VARIANT *v_pdbX = new VARIANT[1]; + VARIANT *v_pdbY = new VARIANT[1]; + VARIANT *v_pdbAngles = new VARIANT[1]; + VARIANT *v_pdbScale = new VARIANT[1]; + VARIANT *v_pdbSore = new VARIANT[1]; + bool ret = false; + try + { + ret = m_HawkvisCtrl->FindShapeModel(GetCurShapeModelID(), v_pdbY, v_pdbX, v_pdbAngles, v_pdbScale, v_pdbSore, nCount); + + } + catch (...) + { + ret = false; + } + if (!ret)//2018-01-15 ӱ,ܻᱨ + { + CString str = _T("func : Hawkvis Find Shape Model----->Error"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + //pdbX + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbX->parray); ++index) { + ::SafeArrayGetElement(v_pdbX->parray, &index, pdbX + index); + } + //pdbY + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbY->parray); ++index) { + ::SafeArrayGetElement(v_pdbY->parray, &index, pdbY + index); + } + //pdbAngles + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbAngles->parray); ++index) { + ::SafeArrayGetElement(v_pdbAngles->parray, &index, pdbAngles + index); + } + //pdbScale + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbScale->parray); ++index) { + ::SafeArrayGetElement(v_pdbScale->parray, &index, pdbScale + index); + } + //pdbSore + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbSore->parray); ++index) { + ::SafeArrayGetElement(v_pdbSore->parray, &index, pdbSore + index); + } + + //ʾҵģλ +#if 1 + CString str; + str.Format("X: %0.3f, Y:%0.f", pdbX[0], pdbY[0]); + pt.x = pdbX[0]; + pt.y = pdbY[0]; + str.Format("X: %0.3f, Y:%0.3f", pt.x, pt.y); + gLogMgr->WriteDebugLog(str); +#endif + +#endif//USE_Virtual_CCD_DATA + + + + if (!IsDbxyZero(pt)) + { + m_HawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, true); + m_HawkvisCtrl->ZoomFitWindow(); + } + //m_HawkvisCtrl->MV_GetContinueFrame(); + return true; +} +//ģ +void CCameraHawkvis::OpenTemp() +{ + CFileMgr FileMgr; + CString path = FileMgr.GetWorkPath(); + m_HawkvisCtrl->LoadShapeModel((LPCTSTR)path); + gLogMgr->WriteDebugLog("Hawkvis : LoadCatchTemp"); +} +#if 0 +Dbxy CCameraHawkvis::CCDpt2Platcoord(Dbxy CCDpt) +{ + Dbxy pt; + pt.x = m_Coord.x - CCDpt.x; + pt.y = m_Coord.y + CCDpt.y; + return pt; +} +#endif diff --git a/LaiPuLaser/CameraHawkvis.h b/LaiPuLaser/CameraHawkvis.h new file mode 100644 index 0000000..f444b88 --- /dev/null +++ b/LaiPuLaser/CameraHawkvis.h @@ -0,0 +1,37 @@ +#pragma once +#include "Camera.h" +#include "EnumPropertieType.h" +#include "hawkvisctrlctrl1.h" + +//Ӿ(CCD Ļ׼Ͻ) +class CCameraHawkvis :public CCamera +{ +public: + CCameraHawkvis(void); + ~CCameraHawkvis(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _HAWKVIS_CCD_PROP;}; + virtual void Ini(); + virtual void ExportPar(ofstream *pFile); + virtual bool CatchPoint(Dbxy &pt); + //virtual Dbxy CCDpt2Platcoord(Dbxy CCDpt); + bool SwitchCamera(long CamIndex); // 01 лؼڶԻTimmer⵱ǰлֱ߳л + void OpenTemp(); + + unsigned char GetCurShapeModelID() { return m_CurShapeModelID; }; + void SetCurShapeModelID(int ID) { m_CurShapeModelID=ID; }; + +public: + CHawkvisctrlctrl1 *m_HawkvisCtrl;//Ӿocx ؼ + int m_nCam1Expore;//عֵ + int m_nCam2Expore;//عֵ + unsigned char m_CurShapeModelID=0;//ǰģID +private: + + bool m_bOpen;//Ƿ + bool m_bRotate180;//Ƿת180 + bool m_bMirrorH;//ˮƽ + bool m_bMirrorV;//ֱ +}; + +extern CCameraHawkvis *gCameraHawkvis; \ No newline at end of file diff --git a/LaiPuLaser/CameraKeyence.cpp b/LaiPuLaser/CameraKeyence.cpp new file mode 100644 index 0000000..71f55c1 --- /dev/null +++ b/LaiPuLaser/CameraKeyence.cpp @@ -0,0 +1,213 @@ +#include "StdAfx.h" +#include "CameraKeyence.h" +#include "SocketMgr.h" +#include "LogMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "GlobalFunction.h" + + +#define SEND_MASSAGE_TO_CCD_DELAYE_TIME 500//ϢCCD շĵȴʱ + +CCameraKeyence *gCameraKeyence = new CCameraKeyence; +CCameraKeyence::CCameraKeyence(void) +:m_IPAddrStr("192.168.0.10")//CCD IPַ +{ +} + +CCameraKeyence::~CCameraKeyence(void) +{ +} +#if 1 +CMFCPropertyGridProperty *CCameraKeyence::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("DaHenCCD");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("CCD "); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + + //Ȱѹͬ趨ӽ + CMFCPropertyGridProperty* pBase = CCamera::CreatGridProperty(); + pGroup->AddSubItem(pBase); +//-------------------------------------------------------------------------------// + PropertyName = _T("趨"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_IPAddrStr");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_IPAddrStr); + pPropertie->SetType(_PROP_TYPE_STRING); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("CCD IP ַ"); + Description = _T("CCD IP ַ͵ͨ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_IPAddrStr, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + pGroup->AddSubItem(pGroup1); + return pGroup; +} +void CCameraKeyence::ExportPar(ofstream *pFile) +{ + CCamera::ExportPar(pFile); + + (*pFile)<<"[ģ] [CCameraKeyence]------------------------------------------------"<Receive(recvBuf,sizeof(recvBuf)); + CString str = recvBuf; + gLogMgr->WriteDebugLog(str); + gSocketMgr->Close(); + //ȡCCD ؽеֵ + double arr[20]; + if(GetNumFromRecvBuf(recvBuf,arr)) + { + Dbxy CCDpt(arr[0],arr[1]); + if(IsDbxyZero(CCDpt)) + return false; + return true; + } + } + return false; +} +//ȡCCD ؽеֵ +BOOL CCameraKeyence::GetNumFromRecvBuf(char* recvBuf,double *arr) +{ + CString Str = recvBuf; + int CommaPosPer;//һŵλ + CommaPosPer = Str.Find(",",0); + if(CommaPosPer == -1)//ûҵֱӷ + { + return FALSE; + } + + int idx = 0; + int CommaPosNext = CommaPosPer; + do + { + CommaPosNext = Str.Find(",",CommaPosPer+1);//һŵλ + if(CommaPosNext==-1)//һ + { + CString Str1(recvBuf+CommaPosPer+1); + arr[idx] = atof(Str1); + } + else + { + CString Str1(recvBuf+CommaPosPer+1,CommaPosNext-CommaPosPer); + arr[idx] = atof(Str1); + } + CommaPosPer = CommaPosNext; + idx++; + }while(CommaPosNext!=-1); + + //δ⵽mark + if((Str[0]!= 'T' && Str[1]!='1')) + { + return FALSE; + } + else + { + return TRUE; + } +} +#endif + +#if 1 +//CCD Դ +void CCameraKeyence::OpenCCDLight() +{ + if(gSocketMgr->Connect(m_IPAddrStr,8500)) + { + gSocketMgr->Send("CLV,2,100\r",strlen("CLV,1,100\r")+1); + Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME); + gSocketMgr->Close(); + } +} +//رCCD Դ +void CCameraKeyence::CloseCCDLight() +{ + if(gSocketMgr->Connect(m_IPAddrStr,8500)) + { + gSocketMgr->Send("CLV,2,0\r",strlen("CLV,1,0\r")+1); + Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME); + gSocketMgr->Close(); + } +} +//лCCD ij"PW," & CStr(sd) & "," & nnn & Chr(13) & Chr(10) +void CCameraKeyence::ChangeCCDScene() +{ +#if 0 + CGraphSoftView* pView= m_pView; + if(pView->GetDocument()->m_CurrOpenFileName=="") + return; + DEBUG_LOG_START + pView->m_DebugLogFile<< "Function :[ChangeCCDScene][ԶлCCD ]"<m_CommunicationManager.SocketConnect(); + CString str1 = "PW,1,"; + CString str2 = str1 + pView->GetDocument()->m_CurrOpenFileName+"\r"; + pView->m_CommunicationManager.m_SocketClient.Send(str2,str2.GetLength()+1,0); + DEBUG_LOG_START + pView->m_DebugLogFile<< ": "<m_CommunicationManager.SocketClose(); +#endif +} +//лǰʾCCD idx(1~4) Ϊ0 ʾʾȫ +bool CCameraKeyence::ChangeCCDScreen(int idx) +{ + if(gSocketMgr->Connect(m_IPAddrStr,8500)) + { + if(idx == 1) + { + gLogMgr->WriteDebugLog("ChangeCCDScreen id = 1"); + gSocketMgr->Send("VW,0,1\r",strlen("VW,0,1\r")+1); + } + if(idx == 2) + { + gLogMgr->WriteDebugLog("ChangeCCDScreen id = 2"); + gSocketMgr->Send("VW,0,2\r",strlen("VW,0,1\r")+1); + } + Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME); + char recvBuf[100];//ؽ + gSocketMgr->Receive(recvBuf,sizeof(recvBuf)); + CString str = recvBuf; + gLogMgr->WriteDebugLog(str); + + gSocketMgr->Close(); + } + return true; +} +#endif diff --git a/LaiPuLaser/CameraKeyence.h b/LaiPuLaser/CameraKeyence.h new file mode 100644 index 0000000..327ca9d --- /dev/null +++ b/LaiPuLaser/CameraKeyence.h @@ -0,0 +1,25 @@ +#pragma once +#include "Camera.h" + + +//ʿCCD Ĺ +class CCameraKeyence:public CCamera +{ +public: + CCameraKeyence(void); + ~CCameraKeyence(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _KEYENCE_CCD_PROP;}; + virtual void ExportPar(ofstream *pFile); + virtual bool CatchPoint(Dbxy &pt); + virtual Dbxy GetCoord(); + void OpenCCDLight(); + void CloseCCDLight(); + void ChangeCCDScene(); + BOOL GetNumFromRecvBuf(char* recvBuf,double *arr); + bool ChangeCCDScreen(int idx); + private: + CString m_IPAddrStr;//CCD IPַ +}; + +extern CCameraKeyence *gCameraKeyence; \ No newline at end of file diff --git a/LaiPuLaser/CatchMgr.cpp b/LaiPuLaser/CatchMgr.cpp new file mode 100644 index 0000000..8d3ac67 --- /dev/null +++ b/LaiPuLaser/CatchMgr.cpp @@ -0,0 +1,301 @@ +#include "StdAfx.h" +#include "CatchMgr.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "DrawSimpleShape.h" +#include "ObjComponentMgr.h" +#include "MouseToolmgr.h" + +CCatchMgr gCatchMgr;//׽ +CCatchMgr::CCatchMgr() +{ + ResetCatchNode(); +} +CCatchMgr::~CCatchMgr(void) +{ +} +#if 1//׽ +void CCatchMgr::DrawCatchPoint(CCatchPoint CatchPt,CDC* pDC) +{ + if(m_CatchPointVec.empty()) + { + ResetCatchPoint(pDC); + } + else + { + //֮ǰ + if(!CatchPt.Equal(m_CatchNode)) + { + ResetCatchPoint(pDC); + } + if(!CatchPt.Equal(m_CatchNode)) + { + DrawCatchPointExt(CatchPt,pDC); + //浱ǰIJ + m_CatchNode = CatchPt; + } + } +} +void CCatchMgr::DrawCatchPointExt(CCatchPoint pt,CDC* pDC) +{ + DbRect NodeRect(pt,gDraw->GetCatchNodeSize()); + switch(pt.GetType()) + { + case _CATCH_NODE: + DrawRect(pDC,gDraw->GetCatchNodePen(),NodeRect); + break; + case _CATCH_INTERSECT: + case _CATCH_ORTHO: + case _CATCH_CUT_TRACK: + XorDrawCrossX(pDC,gDraw->GetCatchNodePen(),NodeRect); + break; + default: + break; + } +} +void CCatchMgr::ResetCatchNode() +{ + m_CatchNode.x = -10000.123456; + m_CatchNode.y = -10000.123456; +} +void CCatchMgr::ResetCatchPoint(CDC* pDC) +{ + if(HasCatchPoint()) + { + //֮ǰ + DrawCatchPointExt(m_CatchNode,pDC); + } + // + ResetCatchNode(); +} +bool CCatchMgr::HasCatchPoint() +{ + if(m_CatchNode.x == -10000.123456) + { + return false; + } + return true; +} +bool CCatchMgr::GetCatchPoint(CPoint &pt) +{ + if(HasCatchPoint()) + { + pt = gDraw->Dbxy2CPoint(m_CatchNode); + return true; + } + return false; +} +//ȡIJ +CCatchPoint CCatchMgr::GetNearestCatchPt(Dbxy pt) +{ + CCatchPoint CatchPt; + double MinDis; + vector::iterator iter = m_CatchPointVec.begin(); + vector::iterator iter_end = m_CatchPointVec.end(); + for(;iter!=iter_end;iter++) + { + double dis = CalDistance(pt,(*iter)); + if(iter == m_CatchPointVec.begin()) + { + MinDis = dis; + CatchPt = (*iter); + } + else if(disGetCurCatchRect(pt); + + //ռrect Χе߶ + GetLineInRect(rect,bCatchTemp); + //rect Χڵnode ڵ + CatchNode(rect); + //rect Χ߶εĽ + CatchIntersectPointOfLines(rect); + //rect ߶εĽ + CatchIntersectPointWithMouse(rect); + // + CatchOrthoPoint(DownPt,pt,rect); + //׽ԪиĽ㣬ָmark + CatchCutTrack(rect); + //ѡĵΪ + CCatchPoint CatchPt; + if(!m_CatchPointVec.empty()) + { + CatchPt = GetNearestCatchPt(pt); + } + //Ʋ + DrawCatchPoint(CatchPt,pDC); +} +//ռrect Χе߶ +void CCatchMgr::GetLineInRect(DbRect &rect,bool bCatchTemp) +{ + GetLayerInstance().GetLineInRect(rect,m_DataPtLineVec,bCatchTemp); +} +//ռrect ΧڵĽڵ +void CCatchMgr::CatchNode(DbRect rect) +{ + if(gDraw->IsCatchObjNode()== false) + return; + //ȼ + if(!m_CatchPointVec.empty()) + return; + //߶εĶ˵Ƿھڼ + vector::iterator iter = m_DataPtLineVec.begin(); + vector::iterator iter_end = m_DataPtLineVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).m_pt1.IsNode()) + { + Dbxy pt = (*iter).m_pt1.GetPt(); + if(IsPointInRect(pt,rect)) + { + CCatchPoint CatchPoint(pt.x,pt.y,_CATCH_NODE); + m_CatchPointVec.push_back(CatchPoint); + } + } + if((*iter).m_pt2.IsNode()) + { + Dbxy pt = (*iter).m_pt2.GetPt(); + if(IsPointInRect(pt,rect)) + { + CCatchPoint CatchPoint(pt.x,pt.y,_CATCH_NODE); + m_CatchPointVec.push_back(CatchPoint); + } + } + } +} +//ռrect Χڵ߶ν +void CCatchMgr::CatchIntersectPointOfLines(DbRect rect) +{ + if(gDraw->IsCatchCrossPoint()== false) + return; + //ȼ + if(!m_CatchPointVec.empty()) + return; + int size = m_DataPtLineVec.size(); + for(int i=0;iIsCatchObjLine()== false) + return; + //ȼ + if(!m_CatchPointVec.empty()) + return; + vector::iterator iter = m_DataPtLineVec.begin(); + vector::iterator iter_end = m_DataPtLineVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy LinePt1 = (*iter).m_pt1.GetPt(); + Dbxy LinePt2 = (*iter).m_pt2.GetPt(); + if(IsPointInRect(LinePt1,rect)||IsPointInRect(LinePt2,rect))//Ҫ׽˵IJ + { + break; + } + Dbxy pt = IntersectionOfRectAndLine(LinePt1,LinePt2,rect); + CCatchPoint CatchPoint(pt.x,pt.y,_CATCH_INTERSECT); + m_CatchPointVec.push_back(CatchPoint); + } +} +// +void CCatchMgr::CatchOrthoPoint(Dbxy DownPt,Dbxy MousePt,DbRect rect) +{ + if(gDraw->IsCatchOrthoPoint()== false) + return; + //ȼ + if(!m_CatchPointVec.empty()) + return; + + DbSize size = rect.GetSize(); + if(abs(MousePt.x-DownPt.x)<=size.w/2) + { + CCatchPoint CatchPoint(DownPt.x,MousePt.y,_CATCH_ORTHO); + m_CatchPointVec.push_back(CatchPoint); + } + else if(abs(MousePt.y-DownPt.y)<=size.h/2) + { + CCatchPoint CatchPoint(MousePt.x,DownPt.y,_CATCH_ORTHO); + m_CatchPointVec.push_back(CatchPoint); + } +} +//׽ԪиĽ㣬ָmark +void CCatchMgr::CatchCutTrack(DbRect rect) +{ + if(gDraw->IsCatchCutTrack()== false) + return; + //ȼ + if(!m_CatchPointVec.empty()) + return; + //ֻڲʱŲ׽ + MOUSE_TOOL tool = gMouseToolMgr.GetToolType(); + if(tool == _TOOL_MEASURE) + { + vector&vec = gObjComponentMgr->GetComponentVec(); + + Dbxy pt = rect.GetCenterPt(); + + double MinDis = 0;//ľ + + int MinIdx = -1; + int size = vec.size(); + for(int i=0;i m_DataPtLineVec;//rect Χе߶ + vector m_CatchPointVec;//귶ΧڵIJ + CCatchPoint m_CatchNode;//֮ǰץȡĵ +}; + +extern CCatchMgr gCatchMgr; \ No newline at end of file diff --git a/LaiPuLaser/ChildFrm.cpp b/LaiPuLaser/ChildFrm.cpp new file mode 100644 index 0000000..5337fd9 --- /dev/null +++ b/LaiPuLaser/ChildFrm.cpp @@ -0,0 +1,66 @@ + +// ChildFrm.cpp : CChildFrame ʵ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" + +#include "ChildFrm.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CChildFrame + +IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWndEx) + +BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWndEx) + ON_WM_SYSCOMMAND() +END_MESSAGE_MAP() + +// CChildFrame / + +CChildFrame::CChildFrame() +{ + // TODO: ڴӳԱʼ +} + +CChildFrame::~CChildFrame() +{ +} + + +BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: ڴ˴ͨ޸ CREATESTRUCT cs ޸Ĵʽ + + if( !CMDIChildWndEx::PreCreateWindow(cs) ) + return FALSE; + cs.style |= WS_MAXIMIZE; + return TRUE; +} + +// CChildFrame + +#ifdef _DEBUG +void CChildFrame::AssertValid() const +{ + CMDIChildWndEx::AssertValid(); +} + +void CChildFrame::Dump(CDumpContext& dc) const +{ + CMDIChildWndEx::Dump(dc); +} +#endif //_DEBUG + +// CChildFrame Ϣ +void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) +{ + if(nID == SC_CLOSE) + return; + CMDIChildWndEx::OnSysCommand(nID, lParam); +} \ No newline at end of file diff --git a/LaiPuLaser/ChildFrm.h b/LaiPuLaser/ChildFrm.h new file mode 100644 index 0000000..c193cd3 --- /dev/null +++ b/LaiPuLaser/ChildFrm.h @@ -0,0 +1,34 @@ + +// ChildFrm.h : CChildFrame Ľӿ +// + +#pragma once + +class CChildFrame : public CMDIChildWndEx +{ + DECLARE_DYNCREATE(CChildFrame) +public: + CChildFrame(); + +// +public: + +// +public: + +// д + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + +// ʵ +public: + virtual ~CChildFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +// ɵϢӳ亯 +protected: + afx_msg void OnSysCommand( UINT nID, LPARAM lParam ); + DECLARE_MESSAGE_MAP() +}; diff --git a/LaiPuLaser/ClassDiagram1.cd b/LaiPuLaser/ClassDiagram1.cd new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/LaiPuLaser/ClassDiagram1.cd @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/ClassDiagram2.cd b/LaiPuLaser/ClassDiagram2.cd new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/LaiPuLaser/ClassDiagram2.cd @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/ClientMgr.cpp b/LaiPuLaser/ClientMgr.cpp new file mode 100644 index 0000000..f29fa54 --- /dev/null +++ b/LaiPuLaser/ClientMgr.cpp @@ -0,0 +1,351 @@ +// CientMgr.cpp : ʵļ +// + +#include "stdafx.h" +#include "ClientMgr.h" +#include "Program_SZ_XL.h" +#include "CameraHawkvis.h" +#include "FileMgr.h" +#include "LogMgr.h" +#include "ObjComponentMgr.h" +// CCientMgr +CClientMgr * gClientMgr = new CClientMgr; +CClientMgr::CClientMgr() +{ +} + +CClientMgr::~CClientMgr() +{ + DisConnectServer(); +} + +bool CClientMgr::Connect2Server() +{ + if (m_bDisableServer)//θӲָ + { + return false; + } + m_ClientIP = gProgram_SZ_XL->m_ServerIP; + m_ClientPort = gProgram_SZ_XL->m_ServerPort; + if (m_hSocket == INVALID_SOCKET) + { + if (!Socket()) + { + AfxMessageBox("Socketʼʧܡ"); + return false; + } + + } + if (!m_bOnline) + { + if (!Connect(m_ClientIP, m_ClientPort)) + { + return false; + } + m_bOnline = true; + } + + + + return true; +} + +void CClientMgr::DisConnectServer() +{ + if (m_hSocket!=INVALID_SOCKET) + { + Close(); + } +} + +void CClientMgr::SendCmd_TransFile(CString filePath) +{ + + int sPos = filePath.ReverseFind('\\'); + int ePos1 = filePath.ReverseFind('.'); + int ePos2 = filePath.GetLength(); + CString fileName = filePath.Mid(sPos, ePos1 - sPos); + CString fileType = filePath.Mid(ePos1, ePos2 - ePos1); //.DXF OR .MAK + + CFileMgr fg; + CString parFileDir = fg.GetWorkPath() + "\\Cutpar"; + CString parFile = parFileDir + fileName + ".par"; + CString areFile = parFileDir + fileName + ".are"; + + CString PIFileDir = fg.GetWorkPath() + "\\WorkPar"; + CString PIFile = PIFileDir + fileName + ".txt"; + + CString DestFolder = fg.GetWorkPath() + "\\TempMarkData"; + if (!PathIsDirectory(DestFolder))//򴴽ļ + { + CreateDirectory(DestFolder, 0); + } + + CString NewFilePath = DestFolder + fileName + fileType; + CString NewParFilePath = DestFolder + fileName + ".par"; + CString NewAreFilePath = DestFolder + fileName + ".are"; + CString NewPIFilePath = DestFolder + fileName + ".txt"; + + + + CopyFile(filePath, NewFilePath, false); + CopyFile(parFile, NewParFilePath, false); + CopyFile(areFile, NewAreFilePath, false); + CopyFile(PIFile, NewPIFilePath, false); + +} + +void CClientMgr::SendCmd_OpenFile(CString filePath) +{ + + SendCmd_TransFile(filePath); + Sleep(100); + if (Connect2Server()) + { + CString str = "OPEN_FILE;" + filePath; + Send(str, str.GetLength()); + } + +} + +void CClientMgr::SendCmd_CollectData() +{ + if (Connect2Server()) + { + bool b = gProgram_SZ_XL->IsbSelMarkMode(); + gClientMgr->SendCmd_bMarkSelMode(b); + if (b) + { + gClientMgr->SendCmd_SelObj(); + Sleep(200); + } + CString str = ";COLLECT_DATA;"; + Send(str, str.GetLength()); + } +} + +void CClientMgr::SendCmd_ProductInfo(CProduct product) +{ + if (Connect2Server()) + { + m_bServerReady = false; + + CString str = ACTION_TANSPRODUCTINFO; + if (gCameraHawkvis->GetCamIndex() == 0) + { + str += TRACK_1; + } + if (gCameraHawkvis->GetCamIndex() == 1) + { + str += TRACK_2; + } + + CString temp; + temp.Format("[%.6f][%.6f][%.6f][%.6f][%.6f][%.6f]", product.m_p00, product.m_p01, product.m_p02, \ + product.m_p10, product.m_p11, product.m_p12); + str += temp; + Send(str, str.GetLength()); + //m_bServerMarkReady = false; + gLogMgr->WriteDebugLog("Send: "+str); + + + /*Send(str, str.GetLength()); + Sleep(50); + Send(&product, sizeof(product));*/ + } + +} + +void CClientMgr::SendCmd_SetSpecialObj() +{ + if (Connect2Server()) + { + int SelObjCnt = m_SelObjIndexVec.size(); + if (SelObjCnt > 0) + { + CString str; + str.Format("%s%d", ACTION_SETSPECAILOBJ, SelObjCnt); + gLogMgr->WriteDebugLog(str); + Send(str, str.GetLength()); + Sleep(50); + int* IdxArry = new int[SelObjCnt](); + for (int i = 0; i < SelObjCnt; i++) + { + IdxArry[i] = m_SelObjIndexVec[i]; + } + Send(IdxArry, SelObjCnt*(sizeof(int))); + delete[]IdxArry; + IdxArry = NULL; + } + + } +} + +void CClientMgr::SendCmd_SelObj() +{ + if (Connect2Server()) + { + auto & ComponentVec = gObjComponentMgr->GetComponentVec(); + auto & SelIndexVec = gClientMgr->m_SelObjIndexVec; + SelIndexVec.clear(); + + int cnt = ComponentVec.size(); + if (cnt == 0)//ûдļֱӷ + return; + + for (int idx = 0; idx < cnt; idx++) + { + if ((ComponentVec[idx]).IsSelected()) + { + SelIndexVec.push_back(idx); + } + } + + int SelObjCnt = m_SelObjIndexVec.size(); + + CString str; + str.Format("%s%d", ACTION_SELECTOBJ, SelObjCnt); + gLogMgr->WriteDebugLog(str); + Send(str, str.GetLength()); + + if (SelObjCnt == 0)//ѡݣٷ + return; + + int* IdxArry = new int[SelObjCnt](); + for (int i = 0; i < SelObjCnt; i++) + { + IdxArry[i] = m_SelObjIndexVec[i]; + } + Send(IdxArry, SelObjCnt*(sizeof(int))); + delete[]IdxArry; + IdxArry = NULL; + + } +} + +void CClientMgr::SendCmd_bMarkSelMode(int bMarkSel) +{ + if (Connect2Server()) + { + CString str; + str.Format("%s%d", ACTION_BMARKSELOBJMODE, bMarkSel); + Send(str, str.GetLength()); + } +} + +void CClientMgr::SendCmd_StartLaserMark(int AreaIndex) +{ + if (Connect2Server()) + { + int cnt = 0; + while (!m_bServerReady&&cnt<100) + { + Sleep(200); + cnt++; + } + if (cnt==15) + { + AfxMessageBox("׼ݳʱ!"); + return; + } + + CString str; + str.Format("%s%d", ACTION_STARTWORK, AreaIndex); + Send(str, str.GetLength()); + m_bAreaMarkDone = false; + } +} + + +// CCientMgr Ա + + +int CClientMgr::Send(const void * lpBuf, int nBufLen, int nFlags) +{ + if (!CheckServerDoneCmd()) + { + return -1; + } + int sendcnt = CSocket::Send(lpBuf, nBufLen, nFlags); + m_bLastCmdFinished = false; + return sendcnt; +} + +void CClientMgr::OnReceive(int nErrorCode) +{ + // TODO: ڴרô/û + + if (0 == nErrorCode) + { + char buf[512] = { 0 }; + int nRcved = Receive(buf, sizeof(buf)); + if (SOCKET_ERROR != nRcved) + { + CString RcvStr = (CString)buf; + if (RcvStr.Find("OK") != -1) + { + m_bLastCmdFinished = true; + } + if (RcvStr.Find("AREA_FINISHED") != -1) + { + m_bAreaMarkDone = true; + } + + if (RcvStr.Find("READY") != -1) + { + m_bServerReady = true; + } + } + } + CSocket::OnReceive(nErrorCode); +} + + +void CClientMgr::OnClose(int nErrorCode) +{ + // TODO: ڴרô/û + Close(); + m_bOnline = false; + m_bLastCmdFinished = true; + m_bAreaMarkDone = true; + + AfxMessageBox("븱ѶϿ!"); + CSocket::OnClose(nErrorCode); +} + + +void CClientMgr::OnConnect(int nErrorCode) +{ + // TODO: ڴרô/û + if (nErrorCode == 0) + { + m_bOnline = true; + } + CSocket::OnConnect(nErrorCode); +} + +bool CClientMgr::CheckServerDoneCmd() +{ + int waitCnt = 0; + while ((!m_bLastCmdFinished)||(!m_bAreaMarkDone) && waitCnt < 12000) + { + DoEvents(); + Sleep(10); + waitCnt++; + } + if (waitCnt == 12000) + { + return false; + } + return true; +} + +void CClientMgr::DoEvents() +{ + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //鿴ϢǷϢϢطѭ //Ϣ0 + { + TranslateMessage(&msg); //ϢʱϢתΪַϢ + DispatchMessage(&msg);//Ϣڳ + } +} diff --git a/LaiPuLaser/ClientMgr.h b/LaiPuLaser/ClientMgr.h new file mode 100644 index 0000000..66fc40a --- /dev/null +++ b/LaiPuLaser/ClientMgr.h @@ -0,0 +1,69 @@ +#pragma once + +// CCientMgr Ŀ +#include "Product.h" + +#define ACTION_OPENFILE (CString)"OPEN_FILE;"//ļ +#define ACTION_TANSPRODUCTINFO (CString)"TRANS_PRODUCT;" //Product +#define ACTION_STARTWORK (CString)"START_WORK;" //ָ +#define ACTION_TRANSFILE (CString)"TRANS_FILE;"//ļ +#define ACTION_SETSPECAILOBJ (CString)"SET_SPECAILOBJ;"// +#define ACTION_BMARKSELOBJMODE (CString)"MARK_SELOBJMODE;"//ѡӹģʽ +#define ACTION_SELECTOBJ (CString)"SELECT_OBJ;"//ѡOBJ + + +#define TRACK_1 (CString)"TRACK1;" +#define TRACK_2 (CString)"TRACK2;" + +class CClientMgr : public CSocket +{ +public: + CClientMgr(); + virtual ~CClientMgr(); + bool Connect2Server(); + void DisConnectServer(); + + void SendCmd_OpenFile(CString filePath); //ָ,ļ + + void SendCmd_CollectData(); //Productݸͻ + + void SendCmd_ProductInfo(CProduct product); //Productݸͻ + + void SendCmd_SetSpecialObj(); //ָ, + + void SendCmd_SelObj(); //ָ,ʹ֮ѡбѡObj + + void SendCmd_bMarkSelMode(int bMarkSel); //ָ,ǷΪѡӹģʽ1ǣ0 + + void SendCmd_StartLaserMark(int AreaIndex); //ָ,ָ + + //void SendCmd_PauseLaserMark( ); //ָ,ָ + //void SendCmd_ResumeLaserMark( ); //ָ,ָ + //void SendCmd_AbortLaserMark(); //ָ,ָ + + bool CheckServerDoneCmd(); //Ƿһָɲܷһ + + + void SetbDisableServer(bool bDis) { m_bDisableServer = bDis; }; //θ + bool IsbDisableServer(){ return m_bDisableServer; }; //ѯǷθ + + CString m_ClientIP ; + int m_ClientPort ; + bool m_bLastCmdFinished=true;//һָ,ͻǷ.ɲܷһָ. + vector m_SelObjIndexVec; //ǰѡеObjVec + bool m_bDisableServer = false;//Ƿθ + + bool m_bAreaMarkDone= true;//һmarkָ,ͻǷ + bool m_bServerReady = false;//һָ,ͻǷ +private: + + virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0 ); + virtual void OnReceive(int nErrorCode); + virtual void OnClose(int nErrorCode); + virtual void OnConnect(int nErrorCode); + void SendCmd_TransFile(CString filePath);//ŷ˴ļƵ̣ͨţ + void DoEvents(); + bool m_bOnline = false; +}; + +extern CClientMgr * gClientMgr; diff --git a/LaiPuLaser/CommPortClass.h b/LaiPuLaser/CommPortClass.h new file mode 100644 index 0000000..f27a218 --- /dev/null +++ b/LaiPuLaser/CommPortClass.h @@ -0,0 +1,689 @@ +/* +Comm Base Library(WIN98/NT/2000) ver 1.1 +Compile by BC++ 5; C++ Builder 4, 5, 6, X; VC++ 5, 6; VC.net; GCC; +copyright(c) 2004.5 - 2005.8 llbird wushaojian@21cn.com +*/ +#ifndef _CN_COMM_H_ +#define _CN_COMM_H_ + +#pragma warning(disable: 4530) +#pragma warning(disable: 4786) +#pragma warning(disable: 4800) +//α뾯 +#pragma warning(disable : 4244) +#pragma warning(disable : 4305) +#pragma warning(disable : 4996) +#pragma warning(disable : 4101) + +#include +#include +#include + +//Ĵ: ṩͨõĴڲ +/* +崮ڶ +cnComm com; + +1.ʹʱҪڳʼʱ򿪴ڣò +com.Open(); + +2.ַ +com.Write(m_send);//m_sendΪ͵ַ + +3.մϢҪõԻ(Զȡ) +ΪڵĽ¼һûϢON_COM_RECEIVE +afx_msg void OnCommRecv(WPARAM wParam, LPARAM lParam); +ON_MESSAGE(ON_COM_RECEIVE,OnCommRecv) + +ԻʼʱϢ +com.SetWnd(AfxGetMainWnd()->m_hWnd); +Ϣ +void CSerialPortClassDlg::OnCommRecv(WPARAM wParam, LPARAM lParam) +{ +//ȡϵַ +char str[100]; +com.ReadString(str, 100); +} +*/ + + + +//͵ڵϢ WPARAM ˿ں +#define ON_COM_RECEIVE WM_USER + 618 +#define ON_COM_CTS WM_USER + 619 //LPARAM 1 valid +#define ON_COM_DSR WM_USER + 621 //LPARAM 1 valid +#define ON_COM_RING WM_USER + 623 +#define ON_COM_RLSD WM_USER + 624 +#define ON_COM_BREAK WM_USER + 625 +#define ON_COM_TXEMPTY WM_USER + 626 +#define ON_COM_ERROR WM_USER + 627 //LPARAM save Error ID +#define DEFAULT_COM_MASK_EVENT EV_RXCHAR | EV_ERR | EV_CTS | EV_DSR | EV_BREAK | EV_TXEMPTY | EV_RING | EV_RLSD + +class cnComm +{ + public: + //------------------------------Construction----------------------------------- + //1ΪǷڴ򿪴ʱ̣߳ 2ΪIOʽ ʽ0/ 첽صʽĬϣ + cnComm(bool fAutoBeginThread = true, DWORD dwIOMode = FILE_FLAG_OVERLAPPED): _dwIOMode(dwIOMode), _fAutoBeginThread(fAutoBeginThread) + { + Init(); + } + + virtual ~cnComm() + { + Close(); + UnInit(); + } + + //----------------------------------Attributes---------------------------------- + //жϴǷ + inline bool IsOpen() + { + return _hCommHandle != INVALID_HANDLE_VALUE; + } + //жϴǷ + operator bool() + { + return _hCommHandle != INVALID_HANDLE_VALUE; + } + //ôھ + inline HANDLE GetHandle() + { + return _hCommHandle; + } + //ôھ + operator HANDLE() + { + return _hCommHandle; + } + //ôڲ DCB + DCB *GetState() + { + return IsOpen() && ::GetCommState(_hCommHandle, &_DCB) == TRUE ? + &_DCB: NULL; + } + //ôڲ DCB + bool SetState(DCB *pdcb = NULL) + { + return IsOpen() ? ::SetCommState(_hCommHandle, pdcb == NULL ? &_DCB:pdcb) == TRUE: false; + } + //ôڲʣֹͣλ ַ֧ "9600, 8, n, 1" + bool SetState(char *szSetStr) + { + if (IsOpen()) + { + if (::GetCommState(_hCommHandle, &_DCB) != TRUE) + return false; + if (::BuildCommDCB(szSetStr, &_DCB) != TRUE) + return false; + return ::SetCommState(_hCommHandle, &_DCB) == TRUE; + } + return false; + } + //ôڲʣֹͣλ + bool SetState(DWORD dwBaudRate, DWORD dwByteSize = 8, DWORD dwParity = NOPARITY, DWORD dwStopBits = ONESTOPBIT) + { + if (IsOpen()) + { + if (::GetCommState(_hCommHandle, &_DCB) != TRUE) + return false; + _DCB.BaudRate = dwBaudRate; + _DCB.ByteSize = (unsigned char)dwByteSize; + _DCB.Parity = (unsigned char)dwParity; + _DCB.StopBits = (unsigned char)dwStopBits; + return ::SetCommState(_hCommHandle, &_DCB) == TRUE; + } + return false; + } + //óʱṹ + LPCOMMTIMEOUTS GetTimeouts(void) + { + return IsOpen() && ::GetCommTimeouts(_hCommHandle, &_CO) == TRUE ? &_CO: NULL; + } + //óʱ + bool SetTimeouts(LPCOMMTIMEOUTS lpCO) + { + return IsOpen() ? ::SetCommTimeouts(_hCommHandle, lpCO) == TRUE:false; + } + //ôڵI/OС + bool SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize) + { + return IsOpen() ? ::SetupComm(_hCommHandle, dwInputSize, dwOutputSize)== TRUE: false; + } + //ϢĴھ + inline void SetWnd(HWND hWnd) + { + assert(::IsWindow(hWnd)); + _hNotifyWnd = hWnd; + } + //趨֪ͨ, ַСֵ + inline void SetNotifyNum(DWORD dwNum) + { + _dwNotifyNum = dwNum; + } + //߳Ƿ + inline bool IsThreadRunning() + { + return _hThreadHandle != NULL; + } + //߳̾ + inline HANDLE GetThread() + { + return _hThreadHandle; + } + //Ҫӵ¼ ǰЧ + void SetMaskEvent(DWORD dwEvent = DEFAULT_COM_MASK_EVENT) + { + _dwMaskEvent = dwEvent; + } + //öַ + int GetInputSize() + { + COMSTAT Stat; + DWORD dwError; + + return ::ClearCommError(_hCommHandle, &dwError, &Stat) == TRUE ? Stat.cbInQue : (DWORD) - 1L; + } + + //----------------------------------Operations---------------------------------- + //򿪴 ȱʡ 9600, 8, n, 1 + bool Open(DWORD dwPort) + { + return Open(dwPort, 9600); + } + //򿪴 ȱʡ baud_rate, 8, n, 1 + bool Open(DWORD dwPort, DWORD dwBaudRate) + { + if (dwPort < 1 || dwPort > 1024) + return false; + BindCommPort(dwPort); + + if (!OpenCommPort()) + return false; + + if (!SetupPort()) + return false; + + return SetState(dwBaudRate); + } + //򿪴, ʹ"9600, 8, n, 1"ַô + bool Open(DWORD dwPort, char *szSetStr) + { + if (dwPort < 1 || dwPort > 1024) + return false; + + BindCommPort(dwPort); + + if (!OpenCommPort()) + return false; + + if (!SetupPort()) + return false; + + return SetState(szSetStr); + } + //ȡ dwBufferLengthַ Buffer ʵʶַ ɶ + DWORD Read(LPVOID Buffer, DWORD dwBufferLength, DWORD dwWaitTime = 10) + { + if (!IsOpen()) + return 0; + + COMSTAT Stat; + DWORD dwError; + + if (::ClearCommError(_hCommHandle, &dwError, &Stat) && dwError > 0) + { + ::PurgeComm(_hCommHandle,PURGE_RXABORT | PURGE_RXCLEAR); + return 0; + } + if (!Stat.cbInQue) + // + return 0; + + unsigned long uReadLength = 0; + + dwBufferLength = dwBufferLength > Stat.cbInQue ? Stat.cbInQue :dwBufferLength; + + if (!::ReadFile(_hCommHandle, Buffer, dwBufferLength, &uReadLength,&_ReadOverlapped)) + { + if (::GetLastError() == ERROR_IO_PENDING) + { + WaitForSingleObject(_ReadOverlapped.hEvent, dwWaitTime); + // 첽I/O + if (!::GetOverlappedResult(_hCommHandle, &_ReadOverlapped,&uReadLength, false)) + { + if (::GetLastError() != ERROR_IO_INCOMPLETE) + uReadLength = 0; + } + } + else + uReadLength = 0; + } + + return uReadLength; + } + //ȡ dwBufferLength - 1 ַ szBuffer ANSI C ģʽַָ ʺһַͨѶ + + char *ReadString(char *szBuffer, DWORD dwBufferLength, DWORD dwWaitTime =20) + { + unsigned long uReadLength = Read(szBuffer, dwBufferLength - 1,dwWaitTime); + szBuffer[uReadLength] = '\0'; + return szBuffer; + } + //д д "abcd" or "\x0\x1\x2" + DWORD Write(LPVOID Buffer, DWORD dwBufferLength) + { + if (!IsOpen()) + return 0; + + DWORD dwError; + + if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0) + ::PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_TXCLEAR); + + unsigned long uWriteLength = 0; + + if (!::WriteFile(_hCommHandle, Buffer, dwBufferLength, &uWriteLength,&_WriteOverlapped)) + if (::GetLastError() != ERROR_IO_PENDING) + uWriteLength = 0; + + return uWriteLength; + } + //д дANSI C ģʽַָ + DWORD Write(const char *szBuffer) + { + assert(szBuffer); + + return Write((void*)szBuffer, strlen(szBuffer)); + } + // ͬӦ + DWORD ReadSync(LPVOID Buffer, DWORD dwBufferLength) + { + if (!IsOpen()) + return 0; + + DWORD dwError; + if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0) + { + ::PurgeComm(_hCommHandle,PURGE_RXABORT | PURGE_RXCLEAR); + return 0; + } + + DWORD uReadLength = 0; + ::ReadFile(_hCommHandle, Buffer, dwBufferLength, &uReadLength, NULL); + return uReadLength; + } + //д ͬӦ + DWORD WriteSync(LPVOID Buffer, DWORD dwBufferLength) + { + if (!IsOpen()) + return 0; + + DWORD dwError; + if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0) + ::PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_TXCLEAR); + + unsigned long uWriteLength = 0; + ::WriteFile(_hCommHandle, Buffer, dwBufferLength, &uWriteLength, NULL); + return uWriteLength; + } + //д szBuffer ʽַ + DWORD Write(char *szBuffer, DWORD dwBufferLength, char *szFormat, ...) + { + if (!IsOpen()) + return 0; + + va_list va; + va_start(va, szFormat); + _vsnprintf(szBuffer, dwBufferLength, szFormat, va); + va_end(va); + + return Write(szBuffer); + } + //д szBuffer ʽַ 黺 С + DWORD Write(char *szBuffer, char *szFormat, ...) + { + if (!IsOpen()) + return 0; + + va_list va; + va_start(va, szFormat); + vsprintf(szBuffer, szFormat, va); + va_end(va); + + return Write(szBuffer); + } + //رմ ͬʱҲرչ߳ + virtual void Close() + { + if (IsOpen()) + { + PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_TXCLEAR); + + EndThread(); + ::CloseHandle(_hCommHandle); + + _hCommHandle = INVALID_HANDLE_VALUE; + } + } + //DTR ƽ + bool SetDTR(bool OnOrOff) + { + return IsOpen() ? EscapeCommFunction(_hCommHandle, OnOrOff ? SETDTR :CLRDTR): false; + } + //RTS ƽ + bool SetRTS(bool OnOrOff) + { + return IsOpen() ? EscapeCommFunction(_hCommHandle, OnOrOff ? SETRTS :CLRRTS): false; + } + // + bool SetBreak(bool OnOrOff) + { + return IsOpen() ? EscapeCommFunction(_hCommHandle, OnOrOff ? SETBREAK: CLRBREAK): false; + } + //߳̿ ߳ + bool BeginThread() + { + if (!IsThreadRunning()) + { + _fRunFlag = true; + _hThreadHandle = NULL; + + DWORD id; + + _hThreadHandle = ::CreateThread(NULL, 0, CommThreadProc, this, 0,&id); + + return (_hThreadHandle != NULL); + } + return false; + } + //ͣ߳ + inline bool SuspendThread() + { + return IsThreadRunning() ? ::SuspendThread(_hThreadHandle) !=0xFFFFFFFF: false; + } + //ָ߳ + inline bool ResumeThread() + { + return IsThreadRunning() ? ::ResumeThread(_hThreadHandle) !=0xFFFFFFFF: false; + } + //ֹ߳ + bool EndThread(DWORD dwWaitTime = 100) + { + if (IsThreadRunning()) + { + _fRunFlag = false; + ::SetCommMask(_hCommHandle, 0); + ::SetEvent(_WaitOverlapped.hEvent); + if (::WaitForSingleObject(_hThreadHandle, dwWaitTime) !=WAIT_OBJECT_0) + if (!::TerminateThread(_hThreadHandle, 0)) + return false; + + ::CloseHandle(_hThreadHandle); + ::ResetEvent(_WaitOverlapped.hEvent); + + _hThreadHandle = NULL; + + return true; + } + return false; + } + + protected: + volatile DWORD _dwPort; //ں + volatile HANDLE _hCommHandle; //ھ + char _szCommStr[20]; //COM1Ƶַ + + DCB _DCB; //ʣֹͣλ + COMMTIMEOUTS _CO; //ʱṹ + + DWORD _dwIOMode; // 0 ͬ Ĭ FILE_FLAG_OVERLAPPEDصI/O첽 + OVERLAPPED _ReadOverlapped, _WriteOverlapped; // صI/O + + volatile HANDLE _hThreadHandle; //߳ + volatile HWND _hNotifyWnd; // ֪ͨ + volatile DWORD _dwNotifyNum; //ֽܶ(>=_dwNotifyNum)֪ͨϢ + volatile DWORD _dwMaskEvent; //ӵ¼ + volatile bool _fRunFlag; //߳ѭ־ + bool _fAutoBeginThread; //Open() Զ BeginThread(); + OVERLAPPED _WaitOverlapped; //WaitCommEvent use + + //ʼ + void Init() + { + memset(_szCommStr, 0, 20); + memset(&_DCB, 0, sizeof(_DCB)); + _DCB.DCBlength = sizeof(_DCB); + _hCommHandle = INVALID_HANDLE_VALUE; + + memset(&_ReadOverlapped, 0, sizeof(_ReadOverlapped)); + memset(&_WriteOverlapped, 0, sizeof(_WriteOverlapped)); + + _ReadOverlapped.hEvent = ::CreateEvent(NULL, true, false, NULL); + assert(_ReadOverlapped.hEvent != INVALID_HANDLE_VALUE); + + _WriteOverlapped.hEvent = ::CreateEvent(NULL, true, false, NULL); + assert(_WriteOverlapped.hEvent != INVALID_HANDLE_VALUE); + + _hNotifyWnd = NULL; + _dwNotifyNum = 0; + _dwMaskEvent = DEFAULT_COM_MASK_EVENT; + _hThreadHandle = NULL; + + memset(&_WaitOverlapped, 0, sizeof(_WaitOverlapped)); + _WaitOverlapped.hEvent = ::CreateEvent(NULL, true, false, NULL); + assert(_WaitOverlapped.hEvent != INVALID_HANDLE_VALUE); + } + // + void UnInit() + { + if (_ReadOverlapped.hEvent != INVALID_HANDLE_VALUE) + CloseHandle(_ReadOverlapped.hEvent); + + if (_WriteOverlapped.hEvent != INVALID_HANDLE_VALUE) + CloseHandle(_WriteOverlapped.hEvent); + + if (_WaitOverlapped.hEvent != INVALID_HANDLE_VALUE) + CloseHandle(_WaitOverlapped.hEvent); + } + //󶨴 + void BindCommPort(DWORD dwPort) + { + assert(dwPort >= 1 && dwPort <= 1024); + + char p[5]; + + _dwPort = dwPort; + strcpy(_szCommStr, "\\\\.\\COM"); + ltoa(_dwPort, p, 10); + strcat(_szCommStr, p); + } + //򿪴 + virtual bool OpenCommPort() + { + if (IsOpen()) + Close(); + + _hCommHandle = ::CreateFile(_szCommStr, GENERIC_READ | GENERIC_WRITE, 0, NULL, +OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | _dwIOMode,NULL); + + if (_fAutoBeginThread) + { + if (IsOpen() && BeginThread()) + return true; + else + { + Close(); //߳ʧ + return false; + } + } + return IsOpen(); + } + //ô + virtual bool SetupPort() + { + if (!IsOpen()) + return false; + + if (!::SetupComm(_hCommHandle, 4096, 4096)) + return false; + + if (!::GetCommTimeouts(_hCommHandle, &_CO)) + return false; + _CO.ReadIntervalTimeout = 0; + _CO.ReadTotalTimeoutMultiplier = 1; + _CO.ReadTotalTimeoutConstant = 1000; + _CO.WriteTotalTimeoutMultiplier = 1; + _CO.WriteTotalTimeoutConstant = 1000; + if (!::SetCommTimeouts(_hCommHandle, &_CO)) + return false; + + if (!::PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR)) + return false; + return true; + } + + //---------------------------------------threads callback----------------------------------- + //߳յϢԶ, 細ھЧ, ͳϢ, ڱţ Ϊ麯ڻչ + virtual void OnReceive() //EV_RXCHAR + { + if (::IsWindow(_hNotifyWnd)) + ::PostMessage(_hNotifyWnd, ON_COM_RECEIVE, WPARAM(_dwPort), LPARAM (0)); + } + + virtual void OnDSR() + { + if (::IsWindow(_hNotifyWnd)) + { + DWORD Status; + if (GetCommModemStatus(_hCommHandle, &Status)) + ::PostMessage(_hNotifyWnd, ON_COM_DSR, WPARAM(_dwPort),LPARAM((Status &MS_DSR_ON) ? 1 : 0)); + } + } + + virtual void OnCTS() + { + if (::IsWindow(_hNotifyWnd)) + { + DWORD Status; + if (GetCommModemStatus(_hCommHandle, &Status)) + ::PostMessage(_hNotifyWnd, ON_COM_CTS, WPARAM(_dwPort), LPARAM( (Status &MS_CTS_ON) ? 1 : 0)); + } + } + + virtual void OnBreak() + { + if (::IsWindow(_hNotifyWnd)) + { + ::PostMessage(_hNotifyWnd, ON_COM_BREAK, WPARAM(_dwPort), LPARAM(0)); + } + } + + virtual void OnTXEmpty() + { + if (::IsWindow(_hNotifyWnd)) + ::PostMessage(_hNotifyWnd, ON_COM_TXEMPTY, WPARAM(_dwPort), LPARAM (0)); + } + + virtual void OnError() + { + DWORD dwError; + ::ClearCommError(_hCommHandle, &dwError, NULL); + if (::IsWindow(_hNotifyWnd)) + ::PostMessage(_hNotifyWnd, ON_COM_ERROR, WPARAM(_dwPort), LPARAM (dwError)); + } + + virtual void OnRing() + { + if (::IsWindow(_hNotifyWnd)) + ::PostMessage(_hNotifyWnd, ON_COM_RING, WPARAM(_dwPort), LPARAM(0)); + } + + virtual void OnRLSD() + { + if (::IsWindow(_hNotifyWnd)) + ::PostMessage(_hNotifyWnd, ON_COM_RLSD, WPARAM(_dwPort), LPARAM(0)); + } + + virtual DWORD ThreadFunc() + { + if (!::SetCommMask(_hCommHandle, _dwMaskEvent)) + { + char szBuffer[256]; + _snprintf(szBuffer, 255, +"%s(%d) : COM%d Call WINAPI SetCommMask(%x, %x) Fail, thread work invalid! GetLastError() = %d;", __FILE__, __LINE__, _dwPort, _hCommHandle, _dwMaskEvent, GetLastError()); + MessageBox(NULL, szBuffer, "Class cnComm", MB_OK); + return 1; + } + + COMSTAT Stat; + DWORD dwError; + + for (DWORD dwLength, dwMask = 0; _fRunFlag && IsOpen(); dwMask = 0) + { + if (!::WaitCommEvent(_hCommHandle, &dwMask, &_WaitOverlapped)) + { + if (::GetLastError() == ERROR_IO_PENDING) + // asynchronous + ::GetOverlappedResult(_hCommHandle, &_WaitOverlapped,&dwLength, TRUE); + else + continue; + } + + if (dwMask == 0) + continue; + + switch (dwMask) + { + case EV_RXCHAR: + ::ClearCommError(_hCommHandle, &dwError, &Stat); + if (Stat.cbInQue >= _dwNotifyNum) + OnReceive(); + break; + + case EV_TXEMPTY: + OnTXEmpty(); + break; + + case EV_CTS: + OnCTS(); + break; + + case EV_DSR: + OnDSR(); + break; + + case EV_RING: + OnRing(); + break; + + case EV_RLSD: + OnRLSD(); + break; + + case EV_BREAK: + OnBreak(); + break; + + case EV_ERR: + OnError(); + break; + } //case + } //for + return 0; + } + + private: + //the function protected + + cnComm(const cnComm &); + cnComm &operator = (const cnComm &); + + //base function for thread + static DWORD WINAPI CommThreadProc(LPVOID lpPara) + { + return ((cnComm*)lpPara)->ThreadFunc(); + } + }; +#endif //_CN_COMM_H_ + diff --git a/LaiPuLaser/CommPortMgr.cpp b/LaiPuLaser/CommPortMgr.cpp new file mode 100644 index 0000000..3cf375d --- /dev/null +++ b/LaiPuLaser/CommPortMgr.cpp @@ -0,0 +1,138 @@ +#include "StdAfx.h" +#include "CommPortMgr.h" +#include "LogMgr.h" + +CCommPortMgr::CCommPortMgr(void) +{ + +} +CCommPortMgr::~CCommPortMgr(void) +{ + +} +//com (dwBaudRate Dz) +bool CCommPortMgr::Open(DWORD dwPort, DWORD dwBaudRate) +{ + if(IsOpen())//״ֱ̬ӷ + return true; + + CString str = "Function :[CCommPortMgr::Open][com ]"; + gLogMgr->WriteDebugLog(str); + + CString str1; + str1.Format("%ld",dwPort); + + str = "Result :[com <"+str1+">]"; + bool ret; + if(m_Com.Open(dwPort,dwBaudRate) == false) + { + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + ret = false; + } + else + { + str += "[OK]"; + gLogMgr->WriteDebugLog(str); + ret = true; + } + return ret; +} +//򿪴, ʹ"9600, n, 8, 1"ַô +bool CCommPortMgr::Open(DWORD dwPort, char *szSetStr) +{ + CString str = "Function :[CCommPortMgr::Open][com ]"; + //gLogMgr->WriteDebugLog(str); + + CString str1; + str1.Format("%ld",dwPort); + + str = "Result :[com <"+str1+">]"; + bool ret; + if(m_Com.Open(dwPort,szSetStr) == false) + { + //gLogMgr->WriteDebugLog(str,_LOG_ERROR); + ret = false; + } + else + { + str += "[OK]"; + //gLogMgr->WriteDebugLog(str); + ret = true; + } + return ret; +} + +//󶨴ϢĴID +void CCommPortMgr::SetWnd(HWND hWnd) +{ + CString str = "Function :[SetWnd][󶨴ϢӦID]"; + gLogMgr->WriteDebugLog(str); + + m_Com.SetWnd(hWnd); +} +//ȡϢszBuffer +CString CCommPortMgr::ReadBuf(char *szBuffer,DWORD dwBufferLength) +{ + CString str = "Function :[ReadString][ȡϢ]"; + //gLogMgr->WriteDebugLog(str); + m_Com.ReadString(szBuffer,dwBufferLength); + return str; +} + +CString CCommPortMgr::ReadStr() +{ + CString str = "Function :[ReadString][ȡϢ]"; + gLogMgr->WriteDebugLog(str); + + const int dwBufferLength = 500; + char szBuffer[dwBufferLength]; + memset(szBuffer,'0',dwBufferLength); + + m_Com.ReadString(szBuffer,dwBufferLength); + //תΪCString + str = szBuffer; + + //gLogMgr->WriteDebugLog(str); + return str; +} + +int CCommPortMgr::Read(LPVOID Buffer, DWORD dwBufferLength) +{ + //CString str = "Function :[ReadString][ȡϢ]"; + //gLogMgr->WriteDebugLog(str); + + return m_Com.Read(Buffer,dwBufferLength); +} +//Ϣ +void CCommPortMgr::Write(const char *szBuffer) +{ + //CString str = "Function :[Write][Ϣ]"; + //gLogMgr->WriteDebugLog(str+szBuffer); + + m_Com.Write(szBuffer); +} + +void CCommPortMgr::WriteBuf(LPVOID Buffer, DWORD dwBufferLength) +{ + //CString str = "Function :[Write][Ϣ]"; + //gLogMgr->WriteDebugLog(str); + m_Com.Write(Buffer,dwBufferLength); +} +//رմ +void CCommPortMgr::Close() +{ + CString str = "Function :[Close][رմ]"; + gLogMgr->WriteDebugLog(str); + + m_Com.Close(); +} +void CCommPortMgr::SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize) +{ + m_Com.SetBufferSize(dwInputSize,dwOutputSize); +} +int CCommPortMgr::GetInputSize() +{ + gLogMgr->WriteDebugLog("BufferSize","",m_Com.GetInputSize()); + return 0; +} + diff --git a/LaiPuLaser/CommPortMgr.h b/LaiPuLaser/CommPortMgr.h new file mode 100644 index 0000000..043b176 --- /dev/null +++ b/LaiPuLaser/CommPortMgr.h @@ -0,0 +1,24 @@ +#pragma once + +#include "CommPortClass.h" +//Եcom ٷװһ +class CCommPortMgr +{ +public: + CCommPortMgr(void); + ~CCommPortMgr(void); + bool Open(DWORD dwPort, DWORD dwBaudRate = 9600); + bool Open(DWORD dwPort, char *szSetStr); + void Close(); + void SetWnd(HWND hWnd); + void Write(const char *szBuffer); + void WriteBuf(LPVOID Buffer, DWORD dwBufferLength); + CString ReadStr(); + CString ReadBuf(char *szBuffer,DWORD dwBufferLength); + int Read(LPVOID Buffer, DWORD dwBufferLength); + bool IsOpen(){return m_Com.IsOpen();}; + void SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize); + int GetInputSize(); +private: + cnComm m_Com;//PLC ڹ +}; \ No newline at end of file diff --git a/LaiPuLaser/CommandAddNode.cpp b/LaiPuLaser/CommandAddNode.cpp new file mode 100644 index 0000000..ace1126 --- /dev/null +++ b/LaiPuLaser/CommandAddNode.cpp @@ -0,0 +1,49 @@ +#include "StdAfx.h" +#include "CommandAddNode.h" + + +CCommandAddNode::CCommandAddNode(void) +{ +} + + +CCommandAddNode::~CCommandAddNode(void) +{ +} +void CCommandAddNode::ExcuteExt() +{ + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->InsertNode(m_idx,m_pt); + } + } +} +void CCommandAddNode::UndoExt() +{ + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->DelNodePtByIdx(m_idx); + } + } +} +CString CCommandAddNode::GetStr() +{ + CString str = "_add_node ӽڵ-----"; + return str; +} +void CCommandAddNode::SetPar(int idx,Dbxy pt) +{ + m_idx = idx; + m_pt = pt; +} + diff --git a/LaiPuLaser/CommandAddNode.h b/LaiPuLaser/CommandAddNode.h new file mode 100644 index 0000000..f49e457 --- /dev/null +++ b/LaiPuLaser/CommandAddNode.h @@ -0,0 +1,17 @@ +#pragma once +#include "commandbase.h" +//ӽڵ +class CCommandAddNode :public CCommandBase +{ +public: + CCommandAddNode(void); + ~CCommandAddNode(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetPar(int idx,Dbxy pt); +private: + int m_idx;//ڵֵ + Dbxy m_pt;//ڵ +}; + diff --git a/LaiPuLaser/CommandArray.cpp b/LaiPuLaser/CommandArray.cpp new file mode 100644 index 0000000..6576148 --- /dev/null +++ b/LaiPuLaser/CommandArray.cpp @@ -0,0 +1,47 @@ +#include "StdAfx.h" +#include "CommandArray.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandArray::CCommandArray(void) +{ +} +CCommandArray::~CCommandArray(void) +{ +} +void CCommandArray::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + //ɾл׼obj + layer.DelObj(m_BaseObjContainer); + //ٵж + layer.AddObject(m_ObjContainer); +} +void CCommandArray::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + //ɾж + layer.DelObj(m_ObjContainer); + //׼ + layer.AddObject(m_BaseObjContainer); +} +CString CCommandArray::GetStr() +{ + CString str = "_array -----"; + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + if(vec.size()>1) + { + CString str1; + str1.Format("%ld",vec.size()); + str +="[] : <"+str1+">"; + } + return str; +}; +//׼obj +void CCommandArray::SaveBaseObj(CObjContainer &ObjContainer) +{ + ObjContainer.AllObjAddToContainer(m_BaseObjContainer,true); +} \ No newline at end of file diff --git a/LaiPuLaser/CommandArray.h b/LaiPuLaser/CommandArray.h new file mode 100644 index 0000000..9587a42 --- /dev/null +++ b/LaiPuLaser/CommandArray.h @@ -0,0 +1,16 @@ +#pragma once +#include "commandbase.h" +class CCommandArray : + public CCommandBase +{ +public: + CCommandArray(void); + ~CCommandArray(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); + void SaveBaseObj(CObjContainer &ObjContainer); +private: + CObjContainer m_BaseObjContainer;//׼ +}; + diff --git a/LaiPuLaser/CommandBase.cpp b/LaiPuLaser/CommandBase.cpp new file mode 100644 index 0000000..9d6d1c9 --- /dev/null +++ b/LaiPuLaser/CommandBase.cpp @@ -0,0 +1,36 @@ +#include "StdAfx.h" +#include "CommandBase.h" +#include "EasyOperationMgr.h" + +CCommandBase::CCommandBase(void) +{ +} +CCommandBase::~CCommandBase(void) +{ +} +//Ӳ +void CCommandBase::AddOpObj(Sptr p) +{ + m_ObjContainer.AddObject(p); +} +void CCommandBase::AddOpObj(CObjBase *p) +{ + //浽ָ + Sptr sPtr(p); + AddOpObj(sPtr); +} +//Ƿв +bool CCommandBase::HasOpObj() +{ + return !m_ObjContainer.Empty(); +} +void CCommandBase::Excute() +{ + ExcuteExt(); + gEasyOperationMgr->Refresh(); +} +void CCommandBase::Undo() +{ + UndoExt(); + gEasyOperationMgr->Refresh(); +} \ No newline at end of file diff --git a/LaiPuLaser/CommandBase.h b/LaiPuLaser/CommandBase.h new file mode 100644 index 0000000..5990c5d --- /dev/null +++ b/LaiPuLaser/CommandBase.h @@ -0,0 +1,25 @@ +#pragma once +#include "GlobalDefine.h" +#include "SmartPtr.h" +#include "ObjContainer.h" +#include "ObjBase.h" + +class CCommandBase +{ +public: + CCommandBase(void); + virtual ~CCommandBase(void); + virtual CString GetStr() = 0; + virtual void ExcuteExt(){}; + virtual void UndoExt(){}; + void Excute(); + void Undo(); + void AddOpObj(CObjBase *p); + void AddOpObj(Sptr); + bool HasOpObj(); + void SetOperatePar(SObjOperatePar par){m_Par = par;}; +protected: + CObjContainer m_ObjContainer;//obj + SObjOperatePar m_Par;// +}; + diff --git a/LaiPuLaser/CommandBreakNode.cpp b/LaiPuLaser/CommandBreakNode.cpp new file mode 100644 index 0000000..ba3ea0d --- /dev/null +++ b/LaiPuLaser/CommandBreakNode.cpp @@ -0,0 +1,67 @@ +#include "StdAfx.h" +#include "CommandBreakNode.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandBreakNode::CCommandBreakNode(void) +{ +} +CCommandBreakNode::~CCommandBreakNode(void) +{ +} +//һǴ֮ǰobj +void CCommandBreakNode::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(true); + if((*iter).IsNull()==false) + { + if(iter == vec.begin()) + { + layer.DelObj((*iter)); + } + else + { + layer.AddObject((*iter)); + } + } + } + } +} +void CCommandBreakNode::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(true); + if(iter == vec.begin()) + { + layer.AddObject((*iter)); + } + else + { + layer.DelObj((*iter)); + } + + } + } +} +CString CCommandBreakNode::GetStr() +{ + CString str = "_break Ͻڵ-----"; + return str; +} + diff --git a/LaiPuLaser/CommandBreakNode.h b/LaiPuLaser/CommandBreakNode.h new file mode 100644 index 0000000..1bcf795 --- /dev/null +++ b/LaiPuLaser/CommandBreakNode.h @@ -0,0 +1,12 @@ +#pragma once +#include "commandbase.h" +class CCommandBreakNode :public CCommandBase +{ +public: + CCommandBreakNode(void); + ~CCommandBreakNode(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandCopy.cpp b/LaiPuLaser/CommandCopy.cpp new file mode 100644 index 0000000..4663d21 --- /dev/null +++ b/LaiPuLaser/CommandCopy.cpp @@ -0,0 +1,37 @@ +#include "StdAfx.h" +#include "CommandCopy.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandCopy::CCommandCopy(void) +{ +} +CCommandCopy::~CCommandCopy(void) +{ +} +void CCommandCopy::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + layer.AddObject(m_ObjContainer); +} +void CCommandCopy::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + layer.DelObj(m_ObjContainer); +} +CString CCommandCopy::GetStr() +{ + CString str = "_copy -----"; + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + if(vec.size()>1) + { + CString str1; + str1.Format("%ld",vec.size()); + str +="[] : <"+str1+">"; + } + return str; +}; + diff --git a/LaiPuLaser/CommandCopy.h b/LaiPuLaser/CommandCopy.h new file mode 100644 index 0000000..8efab66 --- /dev/null +++ b/LaiPuLaser/CommandCopy.h @@ -0,0 +1,13 @@ +#pragma once +#include "commandbase.h" +class CCommandCopy : + public CCommandBase +{ +public: + CCommandCopy(void); + ~CCommandCopy(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandCreat.cpp b/LaiPuLaser/CommandCreat.cpp new file mode 100644 index 0000000..c31c91b --- /dev/null +++ b/LaiPuLaser/CommandCreat.cpp @@ -0,0 +1,47 @@ +#include "StdAfx.h" +#include "CommandCreat.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandCreat::CCommandCreat(void) +{ +} +CCommandCreat::~CCommandCreat(void) +{ +} +CString CCommandCreat::GetStr() +{ + CString str = "_creat -----"; + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + str += ((*iter)->GetStr()+" "); + break; + } + } + if(vec.size()>1) + { + CString str1; + str1.Format("%ld",vec.size()); + str +="[] : <"+str1+">"; + } + return str; +}; +void CCommandCreat::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + layer.AddObject(m_ObjContainer); +} +void CCommandCreat::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + layer.DelObj(m_ObjContainer); + +} + + diff --git a/LaiPuLaser/CommandCreat.h b/LaiPuLaser/CommandCreat.h new file mode 100644 index 0000000..3a8021b --- /dev/null +++ b/LaiPuLaser/CommandCreat.h @@ -0,0 +1,12 @@ +#pragma once +#include "CommandBase.h" +class CCommandCreat :public CCommandBase +{ +public: + CCommandCreat(void); + ~CCommandCreat(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandCut.cpp b/LaiPuLaser/CommandCut.cpp new file mode 100644 index 0000000..f356e12 --- /dev/null +++ b/LaiPuLaser/CommandCut.cpp @@ -0,0 +1,68 @@ +#include "StdAfx.h" +#include "CommandCut.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandCut::CCommandCut(void) +{ +} +CCommandCut::~CCommandCut(void) +{ +} +//m_ObjContainer ĵһΪеobj +//кobj Ϊ0~2 +void CCommandCut::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(false); + if((*iter).IsNull()==false) + { + if(iter == vec.begin()) + { + layer.DelObj((*iter)); + } + else + { + layer.AddObject((*iter)); + } + + } + } + } +} +void CCommandCut::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + if(iter == vec.begin()) + { + layer.AddObject((*iter)); + } + else + { + layer.DelObj((*iter)); + } + + } + } +} +CString CCommandCut::GetStr() +{ + CString str = "_cut ޼-----"; + return str; +} + diff --git a/LaiPuLaser/CommandCut.h b/LaiPuLaser/CommandCut.h new file mode 100644 index 0000000..a101c5b --- /dev/null +++ b/LaiPuLaser/CommandCut.h @@ -0,0 +1,12 @@ +#pragma once +#include "commandbase.h" +class CCommandCut :public CCommandBase +{ +public: + CCommandCut(void); + ~CCommandCut(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandDelNode.cpp b/LaiPuLaser/CommandDelNode.cpp new file mode 100644 index 0000000..67ffe24 --- /dev/null +++ b/LaiPuLaser/CommandDelNode.cpp @@ -0,0 +1,47 @@ +#include "StdAfx.h" +#include "CommandDelNode.h" + + +CCommandDelNode::CCommandDelNode(void) +{ +} +CCommandDelNode::~CCommandDelNode(void) +{ +} +void CCommandDelNode::ExcuteExt() +{ + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->DelNodePtByIdx(m_idx); + } + } +} +void CCommandDelNode::UndoExt() +{ + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->InsertNode(m_idx,m_pt); + } + } +} +CString CCommandDelNode::GetStr() +{ + CString str = "_del_node ɾڵ-----"; + return str; +} +void CCommandDelNode::SetPar(int idx,Dbxy pt) +{ + m_idx = idx; + m_pt = pt; +} + diff --git a/LaiPuLaser/CommandDelNode.h b/LaiPuLaser/CommandDelNode.h new file mode 100644 index 0000000..c5d441b --- /dev/null +++ b/LaiPuLaser/CommandDelNode.h @@ -0,0 +1,16 @@ +#pragma once +#include "commandbase.h" +class CCommandDelNode :public CCommandBase +{ +public: + CCommandDelNode(void); + ~CCommandDelNode(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetPar(int idx,Dbxy pt); +private: + int m_idx; + Dbxy m_pt; +}; + diff --git a/LaiPuLaser/CommandDelete.cpp b/LaiPuLaser/CommandDelete.cpp new file mode 100644 index 0000000..775ffdf --- /dev/null +++ b/LaiPuLaser/CommandDelete.cpp @@ -0,0 +1,38 @@ +#include "StdAfx.h" +#include "CommandDelete.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandDelete::CCommandDelete(void) +{ +} + +CCommandDelete::~CCommandDelete(void) +{ +} + +void CCommandDelete::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + layer.DelObj(m_ObjContainer); + +} +void CCommandDelete::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + layer.AddObject(m_ObjContainer); +} +CString CCommandDelete::GetStr() +{ + CString str = "_erase ɾ-----"; + vector> &vec = m_ObjContainer.GetObjVec(); + if(vec.empty()==false) + { + CString str1; + str1.Format("%ld",vec.size()); + str +="[] : <"+str1+">"; + } + return str; +} + diff --git a/LaiPuLaser/CommandDelete.h b/LaiPuLaser/CommandDelete.h new file mode 100644 index 0000000..305646c --- /dev/null +++ b/LaiPuLaser/CommandDelete.h @@ -0,0 +1,12 @@ +#pragma once +#include "CommandBase.h" +class CCommandDelete :public CCommandBase +{ +public: + CCommandDelete(void); + ~CCommandDelete(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandJion.cpp b/LaiPuLaser/CommandJion.cpp new file mode 100644 index 0000000..ce043c7 --- /dev/null +++ b/LaiPuLaser/CommandJion.cpp @@ -0,0 +1,68 @@ +#include "StdAfx.h" +#include "CommandJion.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandJion::CCommandJion(void) +{ +} +CCommandJion::~CCommandJion(void) +{ +} +//һǺϲobj +void CCommandJion::ExcuteExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(true); + if((*iter).IsNull()==false) + { + if(iter == vec.end()-1) + { + layer.AddObject((*iter)); + } + else + { + layer.DelObj((*iter)); + } + + } + } + } +} +void CCommandJion::UndoExt() +{ + CLayer &layer = GetLayerInstance(); + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(true); + if(iter == vec.end()-1) + { + layer.DelObj((*iter)); + } + else + { + layer.AddObject((*iter)); + } + + } + } +} +CString CCommandJion::GetStr() +{ + CString str = "_jion ϲ-----"; + return str; +} + diff --git a/LaiPuLaser/CommandJion.h b/LaiPuLaser/CommandJion.h new file mode 100644 index 0000000..1c45de5 --- /dev/null +++ b/LaiPuLaser/CommandJion.h @@ -0,0 +1,13 @@ +#pragma once +#include "commandbase.h" +//ϲ +class CCommandJion :public CCommandBase +{ +public: + CCommandJion(void); + ~CCommandJion(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandMgr.cpp b/LaiPuLaser/CommandMgr.cpp new file mode 100644 index 0000000..79527ad --- /dev/null +++ b/LaiPuLaser/CommandMgr.cpp @@ -0,0 +1,125 @@ +#include "StdAfx.h" +#include "CommandMgr.h" +#include "LogMgr.h" +#include "GlobalFunction.h" + + +#define MAX_UNDO_CNT 100// + +CCommandMgr gCommandMgr; +CCommandMgr::CCommandMgr(void) +{ +} +CCommandMgr::~CCommandMgr(void) +{ + DelAllCmd(); +} +void CCommandMgr::DelAllCmd() +{ + m_UndoQueue.clear(); + m_RedoQueue.clear(); +} +//p ָضIJ +void CCommandMgr::AddUndoCommand(CCommandBase *p) +{ + vector> Vec; + AddUndoCommand(p,Vec); +} +void CCommandMgr::AddUndoCommand(CCommandBase *p,vector> &pMarkObjectVec) +{ + if(p->HasOpObj()==false) + { + //ָ + if(pMarkObjectVec.empty()==false) + { + vector>::iterator iter = pMarkObjectVec.begin(); + vector>::iterator iter_end = pMarkObjectVec.end(); + for(;iter!=iter_end;iter++) + { + p->AddOpObj((*iter)); + } + } + else//ûָͼ뵱ǰѡobj + { + GetLayerInstance().GetObjContainer().AddObjToCmd(p,true); + } + } + if(p->HasOpObj()==false)//ûвʱҪָ + { + delete p; + return; + } + gCommandMgr.AddUndoCommandExt(p); +} +//ָ +void CCommandMgr::AddUndoCommandExt(CCommandBase *p) +{ + //------------------------------------־start + CLog log; + log.AddCmdLog(); + log.str = p->GetStr(); + gLogMgr->WriteLog(log); + //------------------------------------־end + //浽ָ + Sptr sPtr(p); + + m_UndoQueue.push_back(sPtr); + if(m_UndoQueue.size()>MAX_UNDO_CNT) + { + m_UndoQueue.pop_front(); + } + //֮ǰredo ȫ + m_RedoQueue.clear(); +} +bool CCommandMgr::HasUndoCmd() +{ + return !m_UndoQueue.empty(); +} +bool CCommandMgr::HasRedoCmd() +{ + return !m_RedoQueue.empty(); +} +void CCommandMgr::Undo() +{ + if(!m_UndoQueue.empty()) + { + Sptr p = m_UndoQueue[m_UndoQueue.size()-1]; + p->Undo(); + m_RedoQueue.push_back(p); + m_UndoQueue.pop_back(); + //------------------------------------־start + CLog log; + log.AddCmdLog(); + { + CString str = p->GetStr(); + log.str = "_undo "+str; + } + gLogMgr->WriteLog(log); + //------------------------------------־end + } +} +void CCommandMgr::Redo() +{ + if(!m_RedoQueue.empty()) + { + Sptr p = m_RedoQueue[m_RedoQueue.size()-1]; + p->Excute(); + m_UndoQueue.push_back(p); + m_RedoQueue.pop_back(); + //------------------------------------־start + CLog log; + log.AddCmdLog(); + { + CString str = p->GetStr(); + log.str = "_redo "+str; + } + gLogMgr->WriteLog(log); + //------------------------------------־end + } +} +//ûسָ״̬ +void CCommandMgr::Reset() +{ + m_UndoQueue.clear(); + m_RedoQueue.clear(); +} \ No newline at end of file diff --git a/LaiPuLaser/CommandMgr.h b/LaiPuLaser/CommandMgr.h new file mode 100644 index 0000000..4b3759b --- /dev/null +++ b/LaiPuLaser/CommandMgr.h @@ -0,0 +1,26 @@ +#pragma once + +#include "CommandBase.h" +#include "GlobalDefine.h" + +//ָ +class CCommandMgr +{ +public: + CCommandMgr(void); + ~CCommandMgr(void); + void AddUndoCommand(CCommandBase *p); + void AddUndoCommand(CCommandBase *p,vector> &pMarkObjectVec); + void AddUndoCommandExt(CCommandBase *p); + bool HasUndoCmd(); + bool HasRedoCmd(); + void Undo(); + void Redo(); + void Reset(); + void DelAllCmd(); +private: + deque> m_UndoQueue; + deque> m_RedoQueue; +}; + +extern CCommandMgr gCommandMgr; \ No newline at end of file diff --git a/LaiPuLaser/CommandMirror.cpp b/LaiPuLaser/CommandMirror.cpp new file mode 100644 index 0000000..3448562 --- /dev/null +++ b/LaiPuLaser/CommandMirror.cpp @@ -0,0 +1,19 @@ +#include "StdAfx.h" +#include "CommandMirror.h" + + +CCommandMirror::CCommandMirror(void) +{ +} +CCommandMirror::~CCommandMirror(void) +{ +} +void CCommandMirror::ExcuteExt() +{ + m_ObjContainer.OperateObj(m_Par,false); +} +void CCommandMirror::UndoExt() +{ + m_ObjContainer.OperateObj(m_Par,false); +} + diff --git a/LaiPuLaser/CommandMirror.h b/LaiPuLaser/CommandMirror.h new file mode 100644 index 0000000..4068314 --- /dev/null +++ b/LaiPuLaser/CommandMirror.h @@ -0,0 +1,12 @@ +#pragma once +#include "CommandBase.h" +class CCommandMirror :public CCommandBase +{ +public: + CCommandMirror(void); + ~CCommandMirror(void); + virtual CString GetStr(){return "";}; + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandModifiCircle.cpp b/LaiPuLaser/CommandModifiCircle.cpp new file mode 100644 index 0000000..29c160b --- /dev/null +++ b/LaiPuLaser/CommandModifiCircle.cpp @@ -0,0 +1,48 @@ +#include "StdAfx.h" +#include "CommandModifiCircle.h" +#include "ObjCircle.h" + +CCommandModifiCircle::CCommandModifiCircle(void) +{ +} +CCommandModifiCircle::~CCommandModifiCircle(void) +{ +} +//b Ϊtrue ʱþɲ +void CCommandModifiCircle::SetPar(double Radius,int EdgeCnt,bool b) +{ + if(b) + { + m_OldRadius = Radius;//뾶 + m_OldEdgeCnt = EdgeCnt;// + } + else + { + m_Radius = Radius;//뾶 + m_EdgeCnt = EdgeCnt;// + } +} +void CCommandModifiCircle::ExcuteExt() +{ + ReCreatObj(true); +} +void CCommandModifiCircle::UndoExt() +{ + ReCreatObj(false); +} +void CCommandModifiCircle::ReCreatObj(bool bExcute) +{ + CObjBase *pBase = m_ObjContainer.GetCurOpObj(); + if(pBase) + { + CObjCircle *p = dynamic_cast(pBase); + if(bExcute) + { + p->ReCreat(m_Radius,m_EdgeCnt); + } + else + { + p->ReCreat(m_OldRadius,m_OldEdgeCnt); + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/CommandModifiCircle.h b/LaiPuLaser/CommandModifiCircle.h new file mode 100644 index 0000000..5790a87 --- /dev/null +++ b/LaiPuLaser/CommandModifiCircle.h @@ -0,0 +1,24 @@ +#pragma once +#include "commandbase.h" + +//޸Բ +class CCommandModifiCircle : + public CCommandBase +{ +public: + CCommandModifiCircle(void); + ~CCommandModifiCircle(void); + virtual CString GetStr(){return "޸circle";}; + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetPar(double Radius,int EdgeCnt,bool b); +private: + void ReCreatObj(bool bExcute); +private: + double m_OldRadius;//뾶 + int m_OldEdgeCnt;// + + double m_Radius;//뾶 + int m_EdgeCnt;// +}; + diff --git a/LaiPuLaser/CommandModifiFill.cpp b/LaiPuLaser/CommandModifiFill.cpp new file mode 100644 index 0000000..e887211 --- /dev/null +++ b/LaiPuLaser/CommandModifiFill.cpp @@ -0,0 +1,31 @@ +#include "StdAfx.h" +#include "CommandModifiFill.h" + +CCommandModifiFill::CCommandModifiFill(void) +{ +} + + +CCommandModifiFill::~CCommandModifiFill(void) +{ +} +//b Ϊtrue ʱþɲ +void CCommandModifiFill::SetPar(SFillPar par,bool b) +{ + if(b) + { + m_OldPar = par; + } + else + { + m_NewPar = par; + } +} +void CCommandModifiFill::ExcuteExt() +{ + m_ObjContainer.FillObj(m_NewPar,false); +} +void CCommandModifiFill::UndoExt() +{ + m_ObjContainer.FillObj(m_OldPar,false); +} \ No newline at end of file diff --git a/LaiPuLaser/CommandModifiFill.h b/LaiPuLaser/CommandModifiFill.h new file mode 100644 index 0000000..e1db87c --- /dev/null +++ b/LaiPuLaser/CommandModifiFill.h @@ -0,0 +1,20 @@ +#pragma once +#include "commandbase.h" +#include "SFillPar.h" + +// +class CCommandModifiFill :public CCommandBase +{ +public: + CCommandModifiFill(void); + ~CCommandModifiFill(void); + virtual CString GetStr(){return "޸fill";}; + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetPar(SFillPar par,bool b); +private: + // + SFillPar m_OldPar; + SFillPar m_NewPar; +}; + diff --git a/LaiPuLaser/CommandModifiFont.cpp b/LaiPuLaser/CommandModifiFont.cpp new file mode 100644 index 0000000..b4dc9a4 --- /dev/null +++ b/LaiPuLaser/CommandModifiFont.cpp @@ -0,0 +1,49 @@ +#include "StdAfx.h" +#include "CommandModifiFont.h" +#include "ObjTxt.h" + +CCommandModifiFont::CCommandModifiFont(void) +{ +} + + +CCommandModifiFont::~CCommandModifiFont(void) +{ +} +//b Ϊtrue ʱþɲ +void CCommandModifiFont::SetStringPar(SFontPar &par,bool b) +{ + if(b) + { + m_OldFontPar = par; + } + else + { + m_NewFontPar = par; + } +} +void CCommandModifiFont::ExcuteExt() +{ + ReCreatObj(true); +} +void CCommandModifiFont::UndoExt() +{ + ReCreatObj(false); +} +void CCommandModifiFont::ReCreatObj(bool bExcute) +{ + CObjBase *pBase = m_ObjContainer.GetCurOpObj(); + if(pBase) + { + CObjTxt *p = dynamic_cast(pBase); + if(bExcute) + { + p->SetFontPar(m_NewFontPar); + } + else + { + p->SetFontPar(m_OldFontPar); + } + p->Creat(); + } +} \ No newline at end of file diff --git a/LaiPuLaser/CommandModifiFont.h b/LaiPuLaser/CommandModifiFont.h new file mode 100644 index 0000000..9dd1e64 --- /dev/null +++ b/LaiPuLaser/CommandModifiFont.h @@ -0,0 +1,21 @@ +#pragma once +#include "commandbase.h" +#include "SFontPar.h" + +class CCommandModifiFont :public CCommandBase +{ +public: + CCommandModifiFont(void); + ~CCommandModifiFont(void); + virtual CString GetStr(){return "޸font";}; + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetStringPar(SFontPar &par,bool b); +private: + void ReCreatObj(bool bExcute); +private: + // + SFontPar m_OldFontPar; + SFontPar m_NewFontPar; +}; + diff --git a/LaiPuLaser/CommandModifiString.cpp b/LaiPuLaser/CommandModifiString.cpp new file mode 100644 index 0000000..715d48e --- /dev/null +++ b/LaiPuLaser/CommandModifiString.cpp @@ -0,0 +1,55 @@ +#include "StdAfx.h" +#include "CommandModifiString.h" +#include "ObjTxt.h" + +CCommandModifiString::CCommandModifiString() +{ +} +CCommandModifiString::~CCommandModifiString(void) +{ +} +//b Ϊtrue ʱþɲ +void CCommandModifiString::SetStringPar(SStringPar &par,bool b) +{ + if(b) + { + m_OldStringPar.Copy(par); + } + else + { + m_NewStringPar.Copy(par); + } +} +void CCommandModifiString::ExcuteExt() +{ + ReCreatObj(true); +} +void CCommandModifiString::UndoExt() +{ + ReCreatObj(false); +} +void CCommandModifiString::ReCreatObj(bool bExcute) +{ + CObjBase *pBase = m_ObjContainer.GetCurOpObj(); + if(pBase) + { + CObjString *p = dynamic_cast(pBase); + if(bExcute) + { + //ɱı + p->SetValStr(m_NewStringPar.m_ValString); + // + p->SetFontTypeName(m_NewStringPar.m_FontTypeName); + p->SetFontName(m_NewStringPar.m_FontName); + } + else + { + //ɱı + p->SetValStr(m_OldStringPar.m_ValString); + // + p->SetFontTypeName(m_OldStringPar.m_FontTypeName); + p->SetFontName(m_OldStringPar.m_FontName); + } + p->Creat(); + } +} \ No newline at end of file diff --git a/LaiPuLaser/CommandModifiString.h b/LaiPuLaser/CommandModifiString.h new file mode 100644 index 0000000..1025653 --- /dev/null +++ b/LaiPuLaser/CommandModifiString.h @@ -0,0 +1,21 @@ +#pragma once +#include "commandbase.h" +#include "SStringPar.h" + +//޸ĺϳɶ +class CCommandModifiString :public CCommandBase +{ +public: + CCommandModifiString(); + ~CCommandModifiString(void); + virtual CString GetStr(){return "޸string";}; + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetStringPar(SStringPar &par,bool b); +private: + void ReCreatObj(bool bExcute); +private: + SStringPar m_OldStringPar; + SStringPar m_NewStringPar; +}; + diff --git a/LaiPuLaser/CommandMove.cpp b/LaiPuLaser/CommandMove.cpp new file mode 100644 index 0000000..fe0a518 --- /dev/null +++ b/LaiPuLaser/CommandMove.cpp @@ -0,0 +1,32 @@ +#include "StdAfx.h" +#include "CommandMove.h" + +CCommandMove::CCommandMove(void) +{ +} +CCommandMove::~CCommandMove(void) +{ +} +CString CCommandMove::GetStr() +{ + CString str1 = "_move ƶ--------[x ] : <"; + CString str2; + str2.Format("%lf",m_Par.MoveX); + CString str3 = "> [y ] : <"; + CString str4; + str4.Format("%lf",m_Par.MoveY); + CString str5 = ">"; + return str1+str2+str3+str4+str5; +} +void CCommandMove::ExcuteExt() +{ + m_ObjContainer.OperateObj(m_Par,false); +} +void CCommandMove::UndoExt() +{ + //ƶ + SObjOperatePar par = m_Par; + par.MoveX = par.MoveX*(-1); + par.MoveY = par.MoveY*(-1); + m_ObjContainer.OperateObj(par,false); +} diff --git a/LaiPuLaser/CommandMove.h b/LaiPuLaser/CommandMove.h new file mode 100644 index 0000000..2e39972 --- /dev/null +++ b/LaiPuLaser/CommandMove.h @@ -0,0 +1,13 @@ +#pragma once +#include "CommandBase.h" + +class CCommandMove :public CCommandBase +{ +public: + CCommandMove(void); + ~CCommandMove(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandMoveNode.cpp b/LaiPuLaser/CommandMoveNode.cpp new file mode 100644 index 0000000..12c585a --- /dev/null +++ b/LaiPuLaser/CommandMoveNode.cpp @@ -0,0 +1,44 @@ +#include "StdAfx.h" +#include "CommandMoveNode.h" + + +CCommandMoveNode::CCommandMoveNode(void) +{ +} +CCommandMoveNode::~CCommandMoveNode(void) +{ +} +CString CCommandMoveNode::GetStr() +{ + CString str = "_moveNode ƶڵ"; + return str; +} +void CCommandMoveNode::SetPar(int idx,Dbxy OldPt,Dbxy NewPt) +{ + m_NodeIdx = idx;//node ڵֵ + m_OldPt = OldPt;//ɵ + m_NewPt = NewPt;//µ +} +void CCommandMoveNode::ExcuteExt() +{ + SetNode(true); +} +void CCommandMoveNode::UndoExt() +{ + SetNode(false); +} +void CCommandMoveNode::SetNode(bool bExcute) +{ + CObjBase *pBase = m_ObjContainer.GetCurOpObj(); + if(pBase) + { + if(bExcute) + { + pBase->SetNodePtByIdx(m_NodeIdx,m_NewPt); + } + else + { + pBase->SetNodePtByIdx(m_NodeIdx,m_OldPt); + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/CommandMoveNode.h b/LaiPuLaser/CommandMoveNode.h new file mode 100644 index 0000000..83a0a6f --- /dev/null +++ b/LaiPuLaser/CommandMoveNode.h @@ -0,0 +1,19 @@ +#pragma once +#include "commandbase.h" +class CCommandMoveNode :public CCommandBase +{ +public: + CCommandMoveNode(void); + ~CCommandMoveNode(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetPar(int idx,Dbxy OldPt,Dbxy NewPt); +private: + void SetNode(bool bExcute); +private: + int m_NodeIdx;//node ڵֵ + Dbxy m_OldPt;//ɵ + Dbxy m_NewPt;//µ +}; + diff --git a/LaiPuLaser/CommandReverse.cpp b/LaiPuLaser/CommandReverse.cpp new file mode 100644 index 0000000..1c2e212 --- /dev/null +++ b/LaiPuLaser/CommandReverse.cpp @@ -0,0 +1,45 @@ +#include "StdAfx.h" +#include "CommandReverse.h" +#include "Layer.h" +#include "GlobalFunction.h" + + +CCommandReverse::CCommandReverse(void) +{ +} +CCommandReverse::~CCommandReverse(void) +{ +} +void CCommandReverse::ExcuteExt() +{ + Operater(); +} +void CCommandReverse::UndoExt() +{ + Operater(); +} +CString CCommandReverse::GetStr() +{ + CString str = "_reverse ת˳-----"; + vector> &vec = m_ObjContainer.GetObjVec(); + if(vec.empty()==false) + { + CString str1; + str1.Format("%ld",vec.size()); + str +="[] : <"+str1+">"; + } + return str; +} +void CCommandReverse::Operater() +{ + vector> &vec = m_ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->Operate(m_Par); + } + } +} diff --git a/LaiPuLaser/CommandReverse.h b/LaiPuLaser/CommandReverse.h new file mode 100644 index 0000000..64f3879 --- /dev/null +++ b/LaiPuLaser/CommandReverse.h @@ -0,0 +1,15 @@ +#pragma once +#include "commandbase.h" +//תڵ˳ +class CCommandReverse :public CCommandBase +{ +public: + CCommandReverse(void); + ~CCommandReverse(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +private: + void Operater(); +}; + diff --git a/LaiPuLaser/CommandRotato.cpp b/LaiPuLaser/CommandRotato.cpp new file mode 100644 index 0000000..a7702eb --- /dev/null +++ b/LaiPuLaser/CommandRotato.cpp @@ -0,0 +1,34 @@ +#include "StdAfx.h" +#include "CommandRotato.h" + + +CCommandRotato::CCommandRotato(void) +{ +} +CCommandRotato::~CCommandRotato(void) +{ +} +CString CCommandRotato::GetStr() +{ + CString str1 = "_rotato ת-------- [Ƕ] : <"; + double angle = m_Par.Angle; + if(angle>180) + { + angle = (360-angle)*(-1); + } + CString str2; + str2.Format("%lf",angle); + CString str3 = ">"; + return str1+str2+str3; +} +void CCommandRotato::ExcuteExt() +{ + m_ObjContainer.OperateObj(m_Par,false); +} +void CCommandRotato::UndoExt() +{ + SObjOperatePar par = m_Par; + par.Angle = par.Angle*(-1); + m_ObjContainer.OperateObj(par,false); +} + diff --git a/LaiPuLaser/CommandRotato.h b/LaiPuLaser/CommandRotato.h new file mode 100644 index 0000000..55adc7a --- /dev/null +++ b/LaiPuLaser/CommandRotato.h @@ -0,0 +1,12 @@ +#pragma once +#include "CommandBase.h" +class CCommandRotato :public CCommandBase +{ +public: + CCommandRotato(void); + ~CCommandRotato(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); +}; + diff --git a/LaiPuLaser/CommandStretch.cpp b/LaiPuLaser/CommandStretch.cpp new file mode 100644 index 0000000..d7cbd23 --- /dev/null +++ b/LaiPuLaser/CommandStretch.cpp @@ -0,0 +1,70 @@ +#include "StdAfx.h" +#include "CommandStretch.h" + + +CCommandStretch::CCommandStretch(void) +{ + m_bSetXY = false;//ǷͬʱXY +} +CCommandStretch::~CCommandStretch(void) +{ +} +CString CCommandStretch::GetStr() +{ + CString str1 = "_stretch -------- [] : <"; + CString str2; + if(m_Par.xy == _X) + str2 = "X> [ɳߴ] : <"; + else + str2 = "Y> [ɳߴ] : <"; + CString str3; + str3.Format("%lf",m_Par.OldSize); + CString str4 = "> [³ߴ] : <"; + CString str5; + str5.Format("%lf",m_Par.NewSize); + CString str6 = ">"; + return str1+str2+str3+str4+str5+str6; +}; +void CCommandStretch::SetOperateParY(SObjOperatePar par) +{ + m_bSetXY = true;//ǷͬʱXY + m_ParY = par; +}; +void CCommandStretch::ExcuteExt() +{ + if(m_bSetXY) + { + m_ObjContainer.OperateObj(m_Par,true); + m_ObjContainer.OperateObj(m_ParY,true); + } + else + { + m_ObjContainer.OperateObj(m_Par,true); + } +} +void CCommandStretch::UndoExt() +{ + SObjOperatePar par = m_Par; + par.OpType = _OP_STRETCH; + par.BasePt = m_Par.BasePt; + par.OldSize = m_Par.NewSize; + par.Diff = m_Par.Diff*(-1); + par.xy = m_Par.xy; + + SObjOperatePar parY = m_ParY; + parY.OpType = _OP_STRETCH; + parY.BasePt = m_ParY.BasePt; + parY.OldSize = m_ParY.NewSize; + parY.Diff = m_ParY.Diff*(-1); + parY.xy = m_ParY.xy; + + if(m_bSetXY) + { + m_ObjContainer.OperateObj(par,true); + m_ObjContainer.OperateObj(parY,true); + } + else + { + m_ObjContainer.OperateObj(par,true); + } +} diff --git a/LaiPuLaser/CommandStretch.h b/LaiPuLaser/CommandStretch.h new file mode 100644 index 0000000..8566877 --- /dev/null +++ b/LaiPuLaser/CommandStretch.h @@ -0,0 +1,16 @@ +#pragma once +#include "commandBase.h" +class CCommandStretch :public CCommandBase +{ +public: + CCommandStretch(void); + ~CCommandStretch(void); + virtual CString GetStr(); + virtual void ExcuteExt(); + virtual void UndoExt(); + void SetOperateParY(SObjOperatePar par); +private: + bool m_bSetXY;//ǷͬʱXY + SObjOperatePar m_ParY;// +}; + diff --git a/LaiPuLaser/CommonFlowMgr.cpp b/LaiPuLaser/CommonFlowMgr.cpp new file mode 100644 index 0000000..26353e9 --- /dev/null +++ b/LaiPuLaser/CommonFlowMgr.cpp @@ -0,0 +1,1728 @@ +#include "StdAfx.h" +#include "CommonFlowMgr.h" +#include "WorkCmdMovePlatformXY.h" +#include "MsgBox.h" +#include "WorkCmdInvoker.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "LogMgr.h" +#include "Camera.h" +#include "Product.h" +#include "WorkCmdCameraCatch.h" +#include "CStringFuc.h" +#include "PlatformXY.h" +#include "Laser.h" +#include "MarkAreaMgr.h" +#include "WorkCmdMarkArea.h" +#include "WorkCmdMoveMotor.h" +#include "ObjComponentMgr.h" +#include "WorkCmdPciPortSwitch.h" +#include "PciPortMgr.h" +#include "MeasureMgr.h" +#include "ExceptionMsg.h" +#include "FileMgr.h" +#include "CameraHawkvis.h" +#include "WorkCmdMotorToOffsetPos.h" +#include "WorkCmdMotorToMachineOrigin.h" +#include "Motor.h" +#include "WorkCmdDeviceParReset.h" +#include "WorkCmdWorkStart.h" +#include "WorkCmdWorkEnd.h" +#include "ProductMgr.h" +#include "DeviceState.h" +#include "WorkFileMgr.h" +#include "CommPortMgr.h" +#include "PlcIOMgr.h" +#include "PciCh365Mgr.h" +#include "WorkCmdResetAllMotorErr.h" +#include "WorkCmdWaitMotorStop.h" +#include "WorkCmdSetMotorSpeed.h" + + + +CCommonFlowMgr *gCommonFlowMgr = new CCommonFlowMgr; +CCommonFlowMgr::CCommonFlowMgr(void) +{ + m_bIniPlatfrom = true;//Ƿʼƽ̨ + m_bIniConfirmMsgBox = true;//Ƿ񵯳ʼȷ϶Ի + m_bIniMotorX = true;//ǷʼX + m_bIniMotorY = true;//ǷʼY + m_bIniMotorZ = false;//ǷʼZ + m_bInitedToProductPt = false;//ʼɺǷ񷵻ϵ + + m_bFocalAdjust = false;//ӹʱǷʵʱ + m_FocalAdjustDis = 0;//佹mm + m_FocalAdjustCnt = 0;//佹(ÿ佹һΰIJӹһ) + m_AreaCycleCnt = 1;//ÿһworkarea ѭӹ + m_OneObjMarkCnt = 1;//Ԫӹ + m_SpecialOneObjMarkCnt = 1;//и + m_CutSpeed = 800;//иٶ + m_bBackToProductPt = false;//ӹɺǷ񷵻ȡϵ + m_bSetLightState = false;//Ƿþʾ״̬ + + + m_bUseLaser = false;//Ƿ񿪹ؼ + + m_CalibrationPointGap = 2;//֮ļmm + m_CalibrationRange = 50;//У׼Χmm + + m_AlamDelay = 1000;//ʱ(ms) + + m_bConnectObj = true;//ǷӶobj + + m_bVacuum = false;//Ƿʹ(ӹǰ,ſ) + + m_ConcentricCnt = 0;//ͬݵ + m_FirstGap = 0;//һߴ + m_ConcentricGap = 0.05;//ͬݵļmm(0 )(С0 ) + + m_RotatoAdjust = 0;//תmm + m_NoMarkCanWork = true;//ûжλʱҲԼӹ + m_bCheckObjDataConsistency = true;//Ƿݵһ(obj ݲȵ) + + m_bWorkStop = false;//Ƿֹͣ + + m_FindOriginTimes = 5;//Զԭļӹ(0 ʱЧ) + m_CurWorktimes = 1;//ǰļӹ + + m_bStartWorkMsg = true;//ӹǰʾ + m_AllWorkExecTimes = 1;//ظִд() + m_CurWorkExecTimes = 0;//ǰִд() + + m_bCollectSpecialObj = false;//Ƿռ + m_bStretchDataToRealSize = false;//ץȡ +} +CCommonFlowMgr::~CCommonFlowMgr(void) +{ +} +CMFCPropertyGridProperty * CCommonFlowMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("CommonFlowMgr");;//洢· + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bSetLightState");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bSetLightState); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("״̬"); + Description = _T("Ƿþʾ״̬"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bSetLightState, Description); + pGroup->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bStartWorkMsg");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bStartWorkMsg); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӹǰʾ"); + Description = _T("ӹǰǷҪԻȷ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bStartWorkMsg, Description); + pGroup->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_AllWorkExecTimes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AllWorkExecTimes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("ӹʱظִеĴ,"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AllWorkExecTimes, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_FindOriginTimes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FindOriginTimes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ԭ"); + Description = _T("ÿӹٴλһԭ(0 ʱЧ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FindOriginTimes, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_AlamDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AlamDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʱ"); + Description = _T("ʾʱʱ(ms)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AlamDelay, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCheckObjDataConsistency");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCheckObjDataConsistency); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("һ"); + Description = _T("Ƿݵһ(obj ݲȵ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCheckObjDataConsistency, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_NoMarkCanWork");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NoMarkCanWork); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("޶λӹ"); + Description = _T("ûжλʱҲԼӹ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_NoMarkCanWork, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } + //-------------------------------------------------------------------------------// + { + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("豸ʼ")); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bIniConfirmMsgBox");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bIniConfirmMsgBox); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʼmsgbox"); + Description = _T("Ƿ񵯳Իȷ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bIniConfirmMsgBox, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bIniPlatfrom");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bIniPlatfrom); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʼƽ̨"); + Description = _T("ǷʼXY ƽ̨"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bIniPlatfrom, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bIniMotorX");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bIniMotorX); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʼX"); + Description = _T("ǷʼX"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bIniMotorX, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bIniMotorY");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bIniMotorY); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʼY"); + Description = _T("ǷʼY"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bIniMotorY, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bIniMotorZ");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bIniMotorZ); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʼZ"); + Description = _T("ǷʼZ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bIniMotorZ, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bInitedToProductPt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bInitedToProductPt); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ϵ"); + Description = _T("ʼɺǷ񷵻ϵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bInitedToProductPt, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ӹ")); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bStretchDataToRealSize");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bStretchDataToRealSize); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Զ"); + Description = _T("Ƿץȡmark ԶƷߴ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bStretchDataToRealSize, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_AdjustOffset_X");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AdjustOffset.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ƫ΢X"); + Description = _T("ƫ΢X (mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AdjustOffset.x, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_AdjustOffset_Y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AdjustOffset.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ƫ΢Y"); + Description = _T("ƫ΢Y(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AdjustOffset.y, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_SizeAdjust_X");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_SizeAdjust.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ߴ΢X"); + Description = _T("Ʒߴ΢X (mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_SizeAdjust.x, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_SizeAdjust_Y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_SizeAdjust.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ߴ΢Y"); + Description = _T("Ʒߴ΢Y(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_SizeAdjust.y, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } +#if 0 + { + //Աӳ + Name = _T("m_RotatoAdjust");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_RotatoAdjust); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ת"); + Description = _T("ת(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_RotatoAdjust, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } +#endif + { + //Աӳ + Name = _T("m_bFocalAdjust");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bFocalAdjust); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʵʱ佹"); + Description = _T("ӹʱǷʵʱ,ڼӹȽϺIJƷ(Z 綯)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bFocalAdjust, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_FocalAdjustCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FocalAdjustCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("佹"); + Description = _T("ڱȽϺIJƷ,ӹһε࣬ٴμӹ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustCnt, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_FocalAdjustDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FocalAdjustDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("佹"); + Description = _T("Ӧ佹ÿνľ,Ϊ,Ϊ(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustDis, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bConnectObj");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bConnectObj); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("obj "); + Description = _T("ǷӶobj "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bConnectObj, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_ConcentricCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ConcentricCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ͬ"); + Description = _T("ͬݵ,1 ʱֻһԲ,ͿԵobj ݵijߴ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ConcentricCnt, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_FirstGap");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FirstGap); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Frist "); + Description = _T("ıԭߴļ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FirstGap, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_ConcentricGap");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ConcentricGap); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ͬļ"); + Description = _T("ͬݵļmm(0 )"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ConcentricGap, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bBackToProductPt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bBackToProductPt); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ϵ"); + Description = _T("ӹɺƽ̨Ƿ񷵻ϵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bBackToProductPt, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ƽ̨и")); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUseLaser");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUseLaser); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ؼ"); + Description = _T("ΪFALSE ʱֻƶƽ̨"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseLaser, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("У׼")); + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_CalibrationRange");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CalibrationRange); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("У׼Χ"); + Description = _T("У׼ķΧ(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CalibrationRange, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_CalibrationPointGap");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CalibrationPointGap); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("֮ļ(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CalibrationPointGap, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } + } + return pGroup; +} +void CCommonFlowMgr::Ini() +{ + m_CurCamera = gCameraHawkvis;//󶨵ǰʹõ +} +#if 1 +void CCommonFlowMgr::WriteWorkFileExt(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_ONE_OBJ_CUT_TIMES, m_OneObjMarkCnt)); + LabVec.push_back(CLab(LAB_SPECIAL_ONE_OBJ_CUT_TIMES, m_SpecialOneObjMarkCnt)); + LabVec.push_back(CLab(LAB_ONE_AREA_CUT_TIMES, m_AreaCycleCnt)); + LabVec.push_back(CLab(LAB_ONE_CUT_SPEED, m_CutSpeed)); + LabVec.push_back(CLab(LAB_ADJUST_OFFSET_X, m_ProductOffset.x)); + LabVec.push_back(CLab(LAB_ADJUST_OFFSET_Y, m_ProductOffset.y)); +} +void CCommonFlowMgr::ReadWorkFile(CLabVecRang &LabVecRang) +{ + CWorkFileMgr WorkFileMgr; + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_ONE_OBJ_CUT_TIMES); + if (Lab.m_ValType != _TYPE_NULL) + { + m_OneObjMarkCnt = Lab.m_Int; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_SPECIAL_ONE_OBJ_CUT_TIMES); + if (Lab.m_ValType != _TYPE_NULL) + { + m_SpecialOneObjMarkCnt = Lab.m_Int; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_ONE_AREA_CUT_TIMES); + if (Lab.m_ValType != _TYPE_NULL) + { + m_AreaCycleCnt = Lab.m_Int; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_ONE_CUT_SPEED); + if (Lab.m_ValType != _TYPE_NULL) + { + m_CutSpeed = Lab.m_Int; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_ADJUST_OFFSET_X); + if (Lab.m_ValType != _TYPE_NULL) + { + m_ProductOffset.x = Lab.m_Double; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang, LAB_ADJUST_OFFSET_Y); + if (Lab.m_ValType != _TYPE_NULL) + { + m_ProductOffset.y = Lab.m_Double; + } + } +} +#endif + +#if 1 +bool CCommonFlowMgr::StartWorkConfirm(bool bSelMark) +{ + if (!m_bStartWorkMsg) + return true; + + CString str; + if (bSelMark) + str = "ʼѡи?"; + else + str = "ʼȫи?"; + + CMsgBox MsgBox; + return MsgBox.ConfirmOkCancel(str); +} +//ǷҪٴִ +bool CCommonFlowMgr::IsNeedExecAgain() +{ + //ѯǷۼӵǰ + m_CurWorkExecTimes++; + if (m_CurWorkExecTimes >= m_AllWorkExecTimes) + { + m_CurWorkExecTimes = 0;// + return false; + } + return true; +} +//þʾ +void CCommonFlowMgr::SetLightStateCmd(CWorkCmdContainer &CmdContainer, bool bStart) +{ + if (!m_bSetLightState) + return; +#if 1 + if (bStart) + { + //رеƺͷ + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_R, false); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_Y, false); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_G, false); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_ALARM, false); + CmdContainer.AddCmd(pCmd); + } + } + else// + { + //Ƶ------------------------------------ + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_Y, true); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_R, false); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_G, false); + CmdContainer.AddCmd(pCmd); + } + //ʾ----------------------------- + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_ALARM, true); + pCmd->SetAfterDelay(m_AlamDelay); + CmdContainer.AddCmd(pCmd); + } + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_ALARM, false); + CmdContainer.AddCmd(pCmd); + } + } +#endif + + +} +//þʾ +void CCommonFlowMgr::SetLightStateCmd(bool bStart) +{ + if (!m_bSetLightState) + return; + + CCommPortMgr com; + //򿪴 + if (com.Open(gPlcIOMgr->GetComPort(), 115200) == false) + { + return; + } + CString strY = "$(KQ1)#";//Ƶ + CString strG = "$(KQ2)#";//̵ + CString strR = "$(KQ3)#";// + + CString str; + com.Write(str); + if (bStart) + { + str = strG + char(13) + char(10); + com.Write(str); + } + else + { + str = strR + char(13) + char(10); + com.Write(str); + Sleep(m_AlamDelay); + str = strY + char(13) + char(10); + com.Write(str); + } + com.Close(); +} + +//ʼ豸(ƽ̨,Z ) +bool CCommonFlowMgr::InitDevice() +{ + CMsgBox MsgBox; + if (m_bIniConfirmMsgBox) + { + if (MsgBox.ConfirmOkCancel(_T("ʼ豸?")) == false) + return false; + } + + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(false); + + //ʼʱ򲻼ƽ̨Χ + bool OldbUseMoveRange = gPlatformXY->GetbUseMoveRange(); + gPlatformXY->SetbUseMoveRange(false); + + //رռ˿ + gPciCh365Mgr->CloseLaserPort(); + + gLogMgr->WriteDebugLog("Fuc---->InitDevice"); + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + + //Ĵ״̬ + { + CWorkCmdResetAllMotorErr *pCmd = new CWorkCmdResetAllMotorErr(); + CmdContainer.AddCmd(pCmd); + } + + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorX(); + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetbSetMotorZ(); + pCmd->SetSpeedType(_SpeedType_Org); + CmdContainer.AddCmd(pCmd); + } + //ƶһξ + if (m_bIniMotorZ) + { + CMotor *pMotorZ = CMotor::GetMotor(MOTOR_Z); + double Dis = pMotorZ->GetReverseMoveDis(); + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(*pMotorZ, Dis); + pCmd->SetMoveFlg(true);//ƶһξ + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorZ)//ȴƶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorZ(); + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorZ) + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(*(CMotor::GetMotor("Z"))); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + if (m_bIniMotorZ) + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorZ(); + CmdContainer.AddCmd(pCmd); + } + //XY ƽ̨------------------------------------------------------------ + if (m_bIniPlatfrom) + { + //ƶ + CMotor *pMotorX = CMotor::GetMotor(MOTOR_X); + double Dis = pMotorX->GetReverseMoveDis(); + CWorkCmdMoveMotor *pCmdRMX = new CWorkCmdMoveMotor(*pMotorX, Dis); + pCmdRMX->SetMoveFlg(true);//ƶһξ + CmdContainer.AddCmd(pCmdRMX); + + CMotor *pMotorX2 = CMotor::GetMotor(MOTOR_X2); + Dis = pMotorX2->GetReverseMoveDis(); + CWorkCmdMoveMotor *pCmdRMX2 = new CWorkCmdMoveMotor(*pMotorX2, Dis); + pCmdRMX2->SetMoveFlg(true);//ƶһξ + CmdContainer.AddCmd(pCmdRMX2); + + CMotor *pMotorY = CMotor::GetMotor(MOTOR_Y); + Dis = pMotorY->GetReverseMoveDis(); + CWorkCmdMoveMotor *pCmdRMY = new CWorkCmdMoveMotor(*pMotorY, Dis); + pCmdRMY->SetMoveFlg(true);//ƶһξ + CmdContainer.AddCmd(pCmdRMY); + + //ȴƶ˶ + CWorkCmdWaitMotorStop *pCmdWait = new CWorkCmdWaitMotorStop(); + pCmdWait->SetbWaitMotorX(); + pCmdWait->SetbWaitMotorX2(); + pCmdWait->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmdWait); + + + if (m_bIniMotorX) + { + //ԭ + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(*(CMotor::GetMotor("X"))); + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorX) + { + //ԭ + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(*(CMotor::GetMotor("X2"))); + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorY) + { + + //ԭ + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(*(CMotor::GetMotor("Y"))); + CmdContainer.AddCmd(pCmd); + } + //ȴԭ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorX(); + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + //Ĵ״̬ + { + CWorkCmdResetAllMotorErr *pCmd = new CWorkCmdResetAllMotorErr(); + CmdContainer.AddCmd(pCmd); + } + + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorX(); + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetbSetMotorZ(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //ƶԭƫλ + if (m_bIniMotorY) + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(*(CMotor::GetMotor("Y"))); + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorX) + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(*(CMotor::GetMotor("X"))); + CmdContainer.AddCmd(pCmd); + } + if (m_bIniMotorX) + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(*(CMotor::GetMotor("X2"))); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorX(); + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + } + if (m_bIniMotorZ) + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(*(CMotor::GetMotor("Z"))); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + if (m_bIniMotorZ) + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorZ(); + CmdContainer.AddCmd(pCmd); + } + //豸״̬(õǰΪԭ) + { + CWorkCmdDeviceParReset *pCmd = new CWorkCmdDeviceParReset; + CmdContainer.AddCmd(pCmd); + } + + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(); + //ָ + gPlatformXY->SetbUseMoveRange(OldbUseMoveRange); + + bool Ret = !Invoker.IsCancel(); + if (Ret) + { + gCameraHawkvis->SwitchCamera(0); + } + return Ret; +} +//ͨ񾵴깦(layer еͼ,ƽ̨ƶ) +//ʹpci (times ӹ) (CyclicTimes ѭ) +bool CCommonFlowMgr::NormalMarkByPciCard(bool bSel, int times, int CyclicTimes) +{ + gLogMgr->WriteDebugLog("Fuc---->NormalMarkByPciCard : bSel = " + Bool2Str(bSel)); + //ʱProduct + CProduct Product; + //һʱarea + CMarkArea MarkArea(Dbxy(0, 0), DbSize(100, 100)); + //ռӹ + MarkArea.CollectOrgWorkData(bSel); + MarkArea.CollectWorkData(bSel, Product); + + if (MarkArea.HasWorkData()) + { + for (int k = 0; k < CyclicTimes; k++) + { + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + CWorkCmdMarkArea *pCmd = new CWorkCmdMarkArea(MarkArea); + pCmd->CreatWorkDataByTimes(times); + CmdContainer.AddCmd(pCmd); + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(false);//Ҫִ߳ + if (Invoker.IsCancel()) + return false; + } + return true; + } + gLogMgr->WriteDebugLog("Error---->Not Have Wrok Data"); + return false; +} +//ƶһarea (ȴƶ) +void CCommonFlowMgr::MoveToFirstArea() +{ + gLogMgr->WriteDebugLog("Fuc---->MoveToFirstArea"); + CWorkCmdContainer CmdContainer; + //һarea ÿٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbSetMotorX(); + else + pCmd->SetbSetMotorX2(); + + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + vector &AreaVec = gMarkAreaMgr->GetAreaVec(); + if (AreaVec.empty()) + return; + + Dbxy TargetPt = gLaser->GetCoord();//ӹĵ + //ƶarea ĵ㵽 + { + Dbxy AreaRealBasePt = AreaVec[0].GetRealBasePt();//ƶʵλ + Dbxy MovePt;//ƶ= area ۵ + MovePt.x = AreaRealBasePt.x; + MovePt.y = AreaRealBasePt.y; + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(MovePt, TargetPt); + pCmd->InWorkState(); + pCmd->SetAfterDelay(500);//ִкǿƵȴ + CmdContainer.AddCmd(pCmd); + } + + CWorkCmdInvoker Invoker; + Invoker.Excute(CmdContainer); +} + +#include "ClientMgr.h" + +//ƴӴ(ƽ̨ƶ,ƴ,Ϊobj ) (bSel ==true ʱΪѡ) +bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel) +{ + gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMark : bSel = " + Bool2Str(bSel)); + + //ƶһarea (ȴƶ) + MoveToFirstArea(); + + //Ѽӹ(ȽϺķʱ) + gMarkAreaMgr->CollectWorkData(bSel, Product); + if (!gMarkAreaMgr->HasWorkData()) + return false; + //ǷҪԶԭ + bool bAutoFindOrigin = (m_FindOriginTimes > 0 && m_CurWorktimes >= m_FindOriginTimes && Product.IsbLastOne()); + //obj marked ״̬ + gObjComponentMgr->ResetAllMarkedState(); + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + + //佹---------------------------------------- + int FocalAdjustCnt = m_FocalAdjustCnt;//佹 + double FocalAdjustDis = m_FocalAdjustDis;//佹 + if (!m_bFocalAdjust)//佹 + { + FocalAdjustCnt = 0; + FocalAdjustDis = 0; + } + //ʼ֮ǰĹ + { + CWorkCmd *pCmd = new CWorkCmdWorkStart(); + CmdContainer.AddCmd(pCmd); + } + + SetLightStateCmd(CmdContainer, true);//ʾ + //ӹʱ̵----------------------------------------- + if (m_bSetLightState) + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LIGHT_G, true); + CmdContainer.AddCmd(pCmd); + } + if (m_bVacuum)// + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_VACUUM_OUT1, true); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + pCmd->SetbCheckActCoord();//ʵʹդߵ + CmdContainer.AddCmd(pCmd); + } + //лΪٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbSetMotorX(); + else + pCmd->SetbSetMotorX2(); + + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Work); + CmdContainer.AddCmd(pCmd); + } + + bool bFirstArea = true; + int AreaIndex = 0; + vector &AreaVec = gMarkAreaMgr->GetAreaVec(); + vector::iterator iter = AreaVec.begin(); + vector::iterator iter_end = AreaVec.end(); + Dbxy TargetPt = gLaser->GetCoord();//ӹĵ + gLogMgr->WriteDebugLog("ʼӹ"); + for (; iter != iter_end; iter++) + { + if ((*iter).HasWorkData())//ֻӹݵarea + { + //ƶarea ĵ㵽 + { + Dbxy AreaRealBasePt = (*iter).GetRealBasePt();//ƶʵλ + Dbxy MovePt;//ƶ= area ۵ + MovePt.x = AreaRealBasePt.x; + MovePt.y = AreaRealBasePt.y; + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(MovePt, TargetPt); + pCmd->InWorkState();//ٶ + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + pCmd->SetbCheckActCoord();//ʵʹդߵ + CmdContainer.AddCmd(pCmd); + } + //ӹǰarea + { + CWorkCmdMarkArea *pCmd = new CWorkCmdMarkArea((*iter), AreaIndex); + pCmd->SetbSelMark(bSel); + CmdContainer.AddCmd(pCmd); + } + } + + AreaIndex++; + } + + /*gClientMgr->CheckServerDoneCmd();//ȷһӹ꣬ٽ + gLogMgr->WriteDebugLog("һӹɡ"); + AfxMessageBox("һӹɡ");*/ + + if (m_bVacuum)//ر + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_VACUUM_OUT1, false); + CmdContainer.AddCmd(pCmd); + } + //֮Ĺ + { + CWorkCmd *pCmd = new CWorkCmdWorkEnd(); + CmdContainer.AddCmd(pCmd); + } + if (Product.IsbLastOne() && !bAutoFindOrigin) + { + SetLightStateCmd(CmdContainer, false);//ʾ + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(); + + if (Invoker.IsCancel()) + return false; + if (!bSel)//¼ + { + gProductMgr->WorkTimesInc(); + } + + return !bSel;//ȫӹһβŷtrue +} +//ͨƽ̨λиlayer еͼ(ⲻ,ֻƽ̨) +bool CCommonFlowMgr::CutShapeByPlatform(CProduct &Product, bool bSel) +{ + gLogMgr->WriteDebugLog("Fuc---->CutShapeByPlatform : bSel = " + Bool2Str(bSel)); + //Ѽӹ---------------------------- + gMarkAreaMgr->CollectWorkData(bSel, Product); + if (!gMarkAreaMgr->HasWorkData()) + return false; + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + + Dbxy TargetPt = gLaser->GetCoord();//ӹĵ + //ʹ + vector &AreaVec = gMarkAreaMgr->GetAreaVec(); + vector::iterator iter = AreaVec.begin(); + vector::iterator iter_end = AreaVec.end(); + for (; iter != iter_end; iter++) + { + vector> &Vec = (*iter).GetDataVec(); + vector>::iterator iter1 = Vec.begin(); + vector>::iterator iter1_end = Vec.end(); + for (int i = 0; iter1 != iter1_end; i++, iter1++) + { + vector::iterator iter2 = (*iter1).begin(); + vector::iterator iter2_end = (*iter1).end(); + for (; iter2 != iter2_end; iter2++) + { + //ƶƽ̨--------------------------------------------- + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt((*iter2), TargetPt); + if (iter2 != (*iter1).begin())//ƶһǿ + { + pCmd->InWorkState();//ǹ + } + CmdContainer.AddCmd(pCmd); + } + if (m_bUseLaser) + { + if (iter2 == (*iter1).begin())// + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER, true); + CmdContainer.AddCmd(pCmd); + } + } + } + if (m_bUseLaser)//ؼ + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER, false); + pCmd->CanNotCancel();//ȡ + CmdContainer.AddCmd(pCmd); + } + } + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(); + return !Invoker.IsCancel(); +} +#endif +#if 1 +//CCD ʶ𴥷,ľ +bool CCommonFlowMgr::CameraCatch() +{ + CCamera &Camera = *m_CurCamera; + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + + vector ResultVec; + //ץȡ-------------------------------------------------------- + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + pCmd->SetResultVec(ResultVec);//󶨽 + CmdContainer.AddCmd(pCmd); + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(false);//Ҫִ߳ + + if (!ResultVec.empty()) + { + gMeasureMgr.SetNewPt(ResultVec[0]);//ò + } + return true; +} +//ץȡmark ,Ʒƫƺת(Product ) +bool CCommonFlowMgr::CameraCatchTwoMark() +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if (!DeviceState.CheckInitState()) + return false; + + bool ret = true; + vector &ProductVec = gProductMgr->GetProductVec(); + int size = ProductVec.size(); + for (int i = 0; i < size; i++) + { + CProduct &Product = ProductVec[i]; + Dbxy MarkPt1; + Dbxy MarkPt2; + if (gObjComponentMgr->GetTwoMarkPt(MarkPt1, MarkPt2))//ȡλ + { + Product.SetTheoryMarkPt(MarkPt1, MarkPt2);//öλ + CameraCatchMarkExt(Product); + } + else//ûλ + { + ret = false; + //Ĭƫ + Product.UseDefualtOffset(); + break; + } + } + return ret; +} +void CCommonFlowMgr::CameraCatchTwoMark(CProduct &Product) +{ + gLogMgr->WriteDebugLog("CCommonFlowMgr::CameraCatchTwoMark"); + Dbxy MarkPt1; + Dbxy MarkPt2; + if (gObjComponentMgr->GetTwoMarkPt(MarkPt1, MarkPt2))//ObjComponent лȡλ + { + Product.SetTheoryMarkPt(MarkPt1, MarkPt2);//öλ + CameraCatchMarkExt(Product); + } + else//ûλ + { + //Ĭƫ + Product.UseDefualtOffset(); + } +} +//ʶλ3 +bool CCommonFlowMgr::CameraCatchMark3(CProduct &Product) +{ + CCamera &Camera = *m_CurCamera; + gLogMgr->WriteDebugLog("Fuc---->CameraCatchMark3"); + //ȡmark Ĵλ + Dbxy MarkPt3; + //ƶĿ(ccd ) + Dbxy CameraPt = Camera.GetCenterPt(); + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + //õƶٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbSetMotorX(); + else + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //mark3 ʶmark3 + Product.SetbHasMarkPt3(false); + if (gObjComponentMgr->GetMark3Pt(MarkPt3)) + { + Product.SetbHasMarkPt3(true); + Product.SetTheoryMark3Pt(MarkPt3); + //ƶmark 3 CCD + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + Dbxy P2CatchMarkPos = MarkPt3; + if (Product.IsbNewAddProduct())//ץȡλʱ,ҪƫƵλ. + { + Dbxy NPoffset = GetNPOffset(); + P2CatchMarkPos.x += NPoffset.x; + P2CatchMarkPos.y += NPoffset.y; + } + pCmd->MoveToTargetPt(P2CatchMarkPos, CameraPt); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + //ץȡmark 3 + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + pCmd->SetFrontDelay(Camera.GetCatchFrontDelay()); + pCmd->SetProduct(Product); + pCmd->SetbCatchMark3(true);//ʶץȡmark3 + CmdContainer.AddCmd(pCmd); + } + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(false);//Ҫִ߳ + if (Invoker.IsCancel())//жϵʱ + { + Product.ResetRealMarkPt(); + return false; + } + return true; +} + +Dbxy CCommonFlowMgr::GetNPOffset() +{ + Dbxy NPoffset = gProgram_SZ_XL->GetNPOffsetT1(); + if (m_CurCamera->GetCamIndex() != 0) + { + NPoffset = gProgram_SZ_XL->GetNPOffsetT2(); + } + return NPoffset; +} + +bool CCommonFlowMgr::CameraCatchMarkExt(CProduct &Product) +{ + CCamera &Camera = *m_CurCamera; + gLogMgr->WriteDebugLog("Fuc---->CameraCatchTwoMark"); + //ȡmark Ĵλ + Dbxy MarkPt1, MarkPt2, MarkPt3; + + Product.GetMarkCoord(MarkPt1, MarkPt2); + //ƶĿ(ccd ) + Dbxy CameraPt = Camera.GetCenterPt(); + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + //õƶٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbSetMotorX(); + else + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + + Dbxy P2CatchMarkPos1 = MarkPt1; + Dbxy P2CatchMarkPos2 = MarkPt2; + if (Product.IsbNewAddProduct()) + { + Dbxy NPoffset = GetNPOffset(); + P2CatchMarkPos1.x += NPoffset.x; + P2CatchMarkPos1.y += NPoffset.y; + P2CatchMarkPos2.x += NPoffset.x; + P2CatchMarkPos2.y += NPoffset.y; + + } + + //ʶmark1 mark2 + if (!Product.IsSetRealMarkPt1() || (Product.IsSetRealMarkPt1() && Product.IsSetRealMarkPt2())) + { + //ƶmark 1 CCD + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(P2CatchMarkPos1, CameraPt); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + //ץȡmark 1 + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + pCmd->SetFrontDelay(Camera.GetCatchFrontDelay()); + pCmd->SetProduct(Product); + CmdContainer.AddCmd(pCmd); + } + + } + else + { + //ƶmark 2 CCD + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(P2CatchMarkPos2, CameraPt); + CmdContainer.AddCmd(pCmd); + } + //ȴ˶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (gMotionCard_PCI1245->GetCurGpIdx() == 0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + //ץȡmark 2 + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + pCmd->SetProduct(Product); + pCmd->SetFrontDelay(Camera.GetCatchFrontDelay()); + CmdContainer.AddCmd(pCmd); + } + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(false);//Ҫִ߳ + if (Invoker.IsCancel())//жϵʱ + { + Product.ResetRealMarkPt(); + } + + + return true; +} + +/*У׼õvision.data +ܾmarking_pci ܲʱʹ +1.marking_pci У׼ +2.ҵƶһ(½) +3.ʼɵõvision.dat +4.marking_pci ȥУ׼ļ +*/ +bool CCommonFlowMgr::AutoMeasureVisionData() +{ + gLogMgr->WriteDebugLog("func---->AutoMeasureVisionData"); + //ƶ + vector PtVec; + Dbxy CurPlatCoord = gPlatformXY->GetCoord();//ǰƽ̨ + int PtCnt = m_CalibrationRange / m_CalibrationPointGap + 1;//һƶ + + CString LogStr; + LogStr.Format(_T("[񾵷Χ] = [%f] ,[] = [%f]"), m_CalibrationRange, m_CalibrationPointGap); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[] = [%d]"), PtCnt*PtCnt); + gLogMgr->WriteDebugLog(LogStr); + + for (int i = 0; i < PtCnt; i++)// + { + for (int k = 0; k < PtCnt; k++)// + { + Dbxy pt; + pt.x = CurPlatCoord.x - m_CalibrationPointGap*k; + pt.y = CurPlatCoord.y - m_CalibrationPointGap*i; + PtVec.push_back(pt); + } + } + //ƶƽ̨۲----------------------------------- + vector ResultVec;// + MovePtToCamera(PtVec, ResultVec, true); + //vision.dat ļ----------------------------- + if (!ResultVec.empty()) + { + CString FilePath; + CFileMgr FileMgr; + FileMgr.GetFullFilePath(FilePath, "\\vision_data.dat"); + + ofstream file; + file.open(FilePath); + //Χͼ + file << m_CalibrationRange << "," << m_CalibrationRange << "," << m_CalibrationPointGap << "," << m_CalibrationPointGap << endl; + FileMgr.WriteDbxyVecToFile(ResultVec, &file); + file.close(); + //ƵĿ¼ + CString DestPath = "C:\\Program Files\\Laipu Soft\\Marking System\\vision_data.dat"; + if (!CopyFile(FilePath, DestPath, false)) + { + AfxMessageBox("Զvision_data.datĿ¼ʧ!\r\nֶ!!!"); + } + return true; + } + return false; +} + +//ƶƽ̨һϵ꣬ResultVecץȡĽ +void CCommonFlowMgr::MovePtToCamera(vector &PtVec, vector &ResultVec, bool bCatch) +{ + CCamera &Camera = *m_CurCamera; + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + + vector::iterator iter = PtVec.begin(); + vector::iterator iter_end = PtVec.end(); + for (; iter != iter_end; iter++) + { + //ƶƽ̨------------------------------------------------- + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(Dbxy(0, 0), (*iter)); + pCmd->InWorkState();//ٶ + pCmd->SetAfterDelay(300);//ƶʱ + CmdContainer.AddCmd(pCmd); + } + //ץȡ-------------------------------------------------------- + if (bCatch) + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + pCmd->SetResultVec(ResultVec);//󶨽 + pCmd->SetFrontDelay(Camera.GetCatchFrontDelay());//ץȡǰʱ + pCmd->SetAfterDelay(300);//ƶʱ + pCmd->SetbAlam(false);//Ҫʾ + CmdContainer.AddCmd(pCmd); + } + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(true);//ִ߳ + +} +//ƶһ㵽ccd +void CCommonFlowMgr::MovePtToCamera(Dbxy pt) +{ + CCamera &Camera = *m_CurCamera; + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + //ƶƽ̨------------------------------------------------- + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt(Camera.GetCenterPt(), pt); + pCmd->InWorkState();//ٶ + CmdContainer.AddCmd(pCmd); + } + //ץȡ-------------------------------------------------------- + { + CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(Camera); + CmdContainer.AddCmd(pCmd); + } + //ִָ----------------------------------------------------- + Invoker.ExcuteAllCmd(false); +} +//ƶһobj CCD ۲(۲obj Ϊѹ۲) +void CCommonFlowMgr::MoveSelObjToCamera(CProduct &Product) +{ + gLogMgr->WriteDebugLog("Fuc---->MoveSelObjToCamera"); + CCamera &Camera = *m_CurCamera; + + bool flg = false; + vector&ComponentVec = gObjComponentMgr->GetComponentVec(); + vector::iterator iter = ComponentVec.begin(); + vector::iterator iter_end = ComponentVec.end(); + for (; iter != iter_end; iter++) + { + if ((*iter).IsSelected()) + { + Dbxy pt = (*iter).GetBasePt(); + pt = Product.TheoryPtToRealPt(pt);//ʵλ + MovePtToCamera(pt);//ƶ۲ + (*iter).SetSelected(false); + flg = true; + break; + } + } + if (flg) + GetCurViewPtr()->RefreshView(); +} +#endif +void CCommonFlowMgr::SetAdjustOffsetAll(Dbxy Offset) +{ + m_AdjustOffsetAll.x = Offset.x + m_ProductOffset.x; + m_AdjustOffsetAll.y = Offset.y + m_ProductOffset.y; + /*m_AdjustOffsetAll.x = m_ProductOffset.x; + m_AdjustOffsetAll.y = m_ProductOffset.y;*/ +} +void CCommonFlowMgr::ResetProductOffset() +{ + m_ProductOffset.x = m_ProductOffset.y = 0; +} diff --git a/LaiPuLaser/CommonFlowMgr.h b/LaiPuLaser/CommonFlowMgr.h new file mode 100644 index 0000000..3fca24a --- /dev/null +++ b/LaiPuLaser/CommonFlowMgr.h @@ -0,0 +1,122 @@ +#pragma once +#include "module.h" + +class CCamera; +class CProduct; +class CWorkCmdContainer; +// +class CCommonFlowMgr :public CModule +{ + friend class DlgCutDeviceCtrl; + friend class CDlgSW_XL_Flow; +public: + CCommonFlowMgr(void); + ~CCommonFlowMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _COMMON_FLOW_PROP;}; + virtual void Ini(); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + bool InitDevice(); + bool CameraCatchTwoMark(); + bool MultipleAreaMark(CProduct &Product,bool bSel); + bool CutShapeByPlatform(CProduct &Product,bool bSel); + bool NormalMarkByPciCard(bool bSel,int times,int CyclicTimes); + bool CameraCatch(); + bool AutoMeasureVisionData(); + void MovePtToCamera(vector &PtVec,vector &ResultVec,bool bCatch); + void MovePtToCamera(Dbxy pt); + int GetAreaCycleCnt(){return m_AreaCycleCnt;}; + void SetAreaCycleCnt(int n){m_AreaCycleCnt = n;}; + int GetOneObjMarkCnt(){return m_OneObjMarkCnt;}; + void SetOneObjMarkCnt(int val){m_OneObjMarkCnt = val;}; + int GetSpecialOneObjMarkCnt(){return m_SpecialOneObjMarkCnt;}; + void SetSpecialOneObjMarkCnt(int val){m_SpecialOneObjMarkCnt = val;}; + int GetCutSpeed(){return m_CutSpeed;}; + void SetCutSpeed(int val){m_CutSpeed = val;}; + bool IsbConnectObj(){return m_bConnectObj;}; + void MoveSelObjToCamera(CProduct &Product); + double GetFirstGap(){return m_FirstGap;}; + Dbxy GetAdjustOffset(){return m_AdjustOffset;}; + void SetAdjustOffset(Dbxy pt){m_AdjustOffset = pt;}; + Dbxy GetAdjustOffsetAll(){return m_AdjustOffsetAll;}; + void SetAdjustOffsetAll(Dbxy Offset); + Dbxy GetAdjustSize(){return m_SizeAdjust;}; + void SetAdjustSize(Dbxy s){m_SizeAdjust = s;}; + double GetRotatoAdjust(){return m_RotatoAdjust;}; + void SetRotatoAdjust(double val){m_RotatoAdjust = val;}; + bool IsNoMarkCanWork(){return m_NoMarkCanWork;}; + bool IsbWorkStop(){return m_bWorkStop;}; + void SetbWorkStop(bool b){m_bWorkStop = b;}; + void CameraCatchTwoMark(CProduct &Product); + void SetLightStateCmd(bool bStart); + bool StartWorkConfirm(bool bSelMark); + bool IsNeedExecAgain(); + void ResetProductOffset(); + void SetbCollectSpecialObj(bool b){m_bCollectSpecialObj = b;}; + bool IsbCollectSpecialObj(){return m_bCollectSpecialObj;}; + bool IsbStretchDataToRealSize(){return m_bStretchDataToRealSize;}; + bool CameraCatchMark3(CProduct &Product); + + Dbxy GetNPOffset(); //ȡƬλƫ +private: + void SetLightStateCmd(CWorkCmdContainer &CmdContainer,bool bStart); + bool CameraCatchMarkExt(CProduct &Product); + void MoveToFirstArea(); +private: + CCamera *m_CurCamera;//ǰʹõ + int m_AlamDelay;//ʱ(ms) + int m_FindOriginTimes;//Զԭļӹ(0 ʱЧ) + int m_CurWorktimes;//ǰļӹ + int m_AllWorkExecTimes;//ظִд() + int m_CurWorkExecTimes;//ǰִд() + bool m_bStartWorkMsg;//ӹǰʾ + bool m_NoMarkCanWork;//ûжλʱҲԼӹ + bool m_bWorkStop;//Ƿֹͣ + bool m_bVacuum;//Ƿʹ(ӹǰ,ſ) + bool m_bCheckObjDataConsistency;//Ƿݵһ(obj ݲȵ) + //ʼز----------------------------------------------------- + bool m_bIniConfirmMsgBox;//Ƿ񵯳ʼȷ϶Ի + bool m_bIniPlatfrom;//Ƿʼƽ̨ + bool m_bIniMotorX;//ǷʼX + bool m_bIniMotorY;//ǷʼY + bool m_bIniMotorZ;//ǷʼZ + bool m_bInitedToProductPt;//ʼɺǷ񷵻ϵ + //ӹ------------------------------------------------------- + //ÿobj ܼӹ= (m_FocalAdjustCnt-1)*m_AreaCycleCnt*m_OneObjMarkCnt + bool m_bFocalAdjust;//ӹʱǷʵʱ + double m_FocalAdjustDis;//佹mm + int m_FocalAdjustCnt;//佹(ÿ佹һΰIJӹһ) + + //Ʒصи + int m_AreaCycleCnt;//ÿһworkarea ѭӹ + int m_OneObjMarkCnt;//Ԫӹ + int m_SpecialOneObjMarkCnt;//⵶ӵи + bool m_bCollectSpecialObj;//Ƿռ + int m_CutSpeed;//иٶ + Dbxy m_ProductOffset;//ԲƷиƫ + + + bool m_bConnectObj;//ǷӶobj + bool m_bBackToProductPt;//ӹɺǷ񷵻ȡϵ + bool m_bSetLightState;//Ƿþʾ״̬ + + int m_ConcentricCnt;//ͬݵ + double m_FirstGap;//һߴ + double m_ConcentricGap;//ͬݵļmm(0 )(С0 ) + + Dbxy m_AdjustOffset;//ƫ΢mm + Dbxy m_AdjustOffsetAll;//ƫ΢mm () + Dbxy m_SizeAdjust;//ߴmm + double m_RotatoAdjust;//תmm + + bool m_bStretchDataToRealSize;//ץȡ + //ƽ̨cut -------------------------------------------------------------- + bool m_bUseLaser;//Ƿ񿪹ؼ + //У׼-------------------------------------------------------------- + double m_CalibrationPointGap;//֮ļmm + double m_CalibrationRange;//У׼Χmm +}; + +extern CCommonFlowMgr *gCommonFlowMgr; \ No newline at end of file diff --git a/LaiPuLaser/CreaterCatchMark.cpp b/LaiPuLaser/CreaterCatchMark.cpp new file mode 100644 index 0000000..b9b2776 --- /dev/null +++ b/LaiPuLaser/CreaterCatchMark.cpp @@ -0,0 +1,23 @@ +#include "StdAfx.h" +#include "CreaterCatchMark.h" +#include "GlobalFunction.h" +#include "CameraKeyence.h" +#include "WorkCmdCameraCatch.h" + + +CCreaterCatchMark::CCreaterCatchMark(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterCatchMark::~CCreaterCatchMark(void) +{ +} +void CCreaterCatchMark::Creat() +{ + CCamera *pCamera = gCameraKeyence; + //ץȡmark + { + //CWorkCmdCameraCatch *pCmd = new CWorkCmdCameraCatch(*pCamera); + //AddCmd(pCmd); + } +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterCatchMark.h b/LaiPuLaser/CreaterCatchMark.h new file mode 100644 index 0000000..ad76f94 --- /dev/null +++ b/LaiPuLaser/CreaterCatchMark.h @@ -0,0 +1,14 @@ +#pragma once +#include "createrworkcmd.h" + + +//ץȡλָ +class CCreaterCatchMark :public CCreaterWorkCmd +{ +public: + CCreaterCatchMark(const CString &str); + ~CCreaterCatchMark(void); + virtual void Creat(); +private: +}; + diff --git a/LaiPuLaser/CreaterCatchMarkFlow.cpp b/LaiPuLaser/CreaterCatchMarkFlow.cpp new file mode 100644 index 0000000..d4ed562 --- /dev/null +++ b/LaiPuLaser/CreaterCatchMarkFlow.cpp @@ -0,0 +1,36 @@ +#include "StdAfx.h" +#include "CreaterCatchMarkFlow.h" +#include "GlobalFunction.h" +#include "WorkCmdMovePlatformXY.h" +#include "CameraKeyence.h" +#include "WorkCmdCameraCatch.h" +#include "ProductMgr.h" +#include "ObjComponentMgr.h" + + + +CCreaterCatchMarkFlow::CCreaterCatchMarkFlow(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterCatchMarkFlow::~CCreaterCatchMarkFlow(void) +{ +} +void CCreaterCatchMarkFlow::Creat() +{ + //ԶŲʱҪץȡ + if(gObjComponentMgr->IsAutoArray()) + return; + + vector &ProductVec = gProductMgr->GetProductVec(); + vector::iterator iter = ProductVec.begin(); + vector::iterator iter_end = ProductVec.end(); + for(;iter!=iter_end;iter++) + { + CreatExt(*iter); + } +} +void CCreaterCatchMarkFlow::CreatExt(CProduct &Product) +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterCatchMarkFlow.h b/LaiPuLaser/CreaterCatchMarkFlow.h new file mode 100644 index 0000000..657534d --- /dev/null +++ b/LaiPuLaser/CreaterCatchMarkFlow.h @@ -0,0 +1,15 @@ +#pragma once +#include "createrworkcmd.h" + +class CProduct; +//ץȡλ +class CCreaterCatchMarkFlow :public CCreaterWorkCmd +{ +public: + CCreaterCatchMarkFlow(const CString &str); + ~CCreaterCatchMarkFlow(void); + virtual void Creat(); +private: + void CreatExt(CProduct &Product); +}; + diff --git a/LaiPuLaser/CreaterCutFlow.cpp b/LaiPuLaser/CreaterCutFlow.cpp new file mode 100644 index 0000000..32e3c49 --- /dev/null +++ b/LaiPuLaser/CreaterCutFlow.cpp @@ -0,0 +1,75 @@ +#include "StdAfx.h" +#include "CreaterCutFlow.h" +#include "GlobalFunction.h" +#include "MarkAreaMgr.h" +#include "WorkCmdMovePlatformXY.h" +#include "WorkCmdPciPortSwitch.h" +#include "Laser.h" +#include "PciPortMgr.h" + +#define MARK_ALL "ALL" +#define MARK_SEL "SEL" + +CCreaterCutFlow::CCreaterCutFlow(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterCutFlow::~CCreaterCutFlow(void) +{ +} +//ݹи +void CCreaterCutFlow::Creat() +{ + //1 ʾǷȫӹ + CString MarkType = GetPar(1); + //Ѽ------------------------------------------------- + if(MarkType == MARK_SEL) + CollectWorkData(true); + else + CollectWorkData(false); + + //ʹ + vector &AreaVec = gMarkAreaMgr->GetAreaVec(); + vector::iterator iter = AreaVec.begin(); + vector::iterator iter_end = AreaVec.end(); + for(;iter!=iter_end;iter++) + { + vector> &Vec = (*iter).GetDataVec(); + CreatExt(Vec); + } +} +void CCreaterCutFlow::CreatExt(vector> &Vec) +{ + vector>::iterator iter = Vec.begin(); + vector>::iterator iter_end = Vec.end(); + for(int i=0;iter!=iter_end;i++,iter++) + { + vector::iterator iter1 = (*iter).begin(); + vector::iterator iter1_end = (*iter).end(); + for(;iter1!=iter1_end;iter1++) + { + //ƶƽ̨--------------------------------------------- + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + pCmd->MoveToTargetPt((*iter1),gLaser->GetCoord()); + if(iter1 != (*iter).begin())//ƶһǿ + { + pCmd->InWorkState();//ǹ + } + AddCmd(pCmd); + } + //------------------------------------------------- + if(iter1==(*iter).begin()) + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,true); + AddCmd(pCmd); + } + } + //ؼ------------------------------------------------- + { + CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,false); + pCmd->CanNotCancel();//ȡ + AddCmd(pCmd); + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterCutFlow.h b/LaiPuLaser/CreaterCutFlow.h new file mode 100644 index 0000000..c322924 --- /dev/null +++ b/LaiPuLaser/CreaterCutFlow.h @@ -0,0 +1,14 @@ +#pragma once +#include "createrworkcmd.h" + +//workarea ڵobj и +class CCreaterCutFlow :public CCreaterWorkCmd +{ +public: + CCreaterCutFlow(const CString &str); + ~CCreaterCutFlow(void); + virtual void Creat(); +private: + void CreatExt(vector> &Vec); +}; + diff --git a/LaiPuLaser/CreaterDeviceParReset.cpp b/LaiPuLaser/CreaterDeviceParReset.cpp new file mode 100644 index 0000000..30e9199 --- /dev/null +++ b/LaiPuLaser/CreaterDeviceParReset.cpp @@ -0,0 +1,16 @@ +#include "StdAfx.h" +#include "CreaterDeviceParReset.h" +#include "WorkCmdDeviceParReset.h" + +CCreaterDeviceParReset::CCreaterDeviceParReset(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterDeviceParReset::~CCreaterDeviceParReset(void) +{ +} +void CCreaterDeviceParReset::Creat() +{ + CWorkCmd *pCmd = new CWorkCmdDeviceParReset; + AddCmd(pCmd); +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterDeviceParReset.h b/LaiPuLaser/CreaterDeviceParReset.h new file mode 100644 index 0000000..5a234c4 --- /dev/null +++ b/LaiPuLaser/CreaterDeviceParReset.h @@ -0,0 +1,12 @@ +#pragma once +#include "createrworkcmd.h" + +//豸λ +class CCreaterDeviceParReset :public CCreaterWorkCmd +{ +public: + CCreaterDeviceParReset(const CString &str); + ~CCreaterDeviceParReset(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CreaterMarkFlow.cpp b/LaiPuLaser/CreaterMarkFlow.cpp new file mode 100644 index 0000000..55096d5 --- /dev/null +++ b/LaiPuLaser/CreaterMarkFlow.cpp @@ -0,0 +1,105 @@ +#include "StdAfx.h" +#include "CreaterMarkFlow.h" +#include "GlobalFunction.h" +#include "MarkAreaMgr.h" +#include "WorkCmdMovePlatformXY.h" +#include "Laser.h" +#include "WorkCmdMarkArea.h" +#include "ProductMgr.h" +#include "Motor.h" +#include "WorkCmdMoveMotor.h" + +#define MARK_ALL "ALL" +#define MARK_SEL "SEL" + +CCreaterMarkFlow::CCreaterMarkFlow(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterMarkFlow::~CCreaterMarkFlow(void) +{ +} +//ݹ +void CCreaterMarkFlow::Creat() +{ + //1 ʾǷȫӹ + CString MarkType = GetPar(1); + bool bMarkSel = (MarkType == MARK_SEL); + + vector &ProductVec = gProductMgr->GetProductVec(); + vector::iterator iter = ProductVec.begin(); + vector::iterator iter_end = ProductVec.end(); + for(int i=0;iter!=iter_end;i++,iter++) + { + if((*iter).IsUsed()) + { + //õǰĹƫת + gProductMgr->SetCurProductIdx(i); + CreatExt(bMarkSel); + } + #if 0 + if(iter!=iter_end-1)//ӹһƶԭ + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + Dbxy MovePt; + Dbxy TargetPt; + pCmd->MoveToTargetPt(MovePt,TargetPt); + AddCmd(pCmd); + } + #endif + } +} +void CCreaterMarkFlow::CreatExt(bool bMarkSel) +{ + //Ѽ------------------------------------------------- + CollectWorkData(bMarkSel); + + //area ĵת------------------------------- + CMarkAreaMgr *MarkAreaMgr = gMarkAreaMgr; + //ʹ---------------------------- + vector &AreaVec = MarkAreaMgr->GetAreaVec(); + vector::iterator iter = AreaVec.begin(); + vector::iterator iter_end = AreaVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).HasWorkData()) + { + //ƶarea ʵĵ㵽 + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + // pCmd->MoveToTargetPt((*iter).GetRealBasePt(),gLaser->GetCoord()); + pCmd->InWorkState();//ٶ + AddCmd(pCmd); + } + //佹 + int FocalAdjustCnt = gProductMgr->GetFocalAdjustCnt(); + double FocalAdjustDis = gProductMgr->GetFocalAdjustDis(); + + for(int i=0;i0 && !IsDbEqualZero(FocalAdjustDis) && i0 && !IsDbEqualZero(FocalAdjustDis)) + { + for(int i=0;i0) + { + pCmd->SetMaxCheckDelay(MaxDelay); + } + AddCmd(pCmd); +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterPciPortCheck.h b/LaiPuLaser/CreaterPciPortCheck.h new file mode 100644 index 0000000..a3708db --- /dev/null +++ b/LaiPuLaser/CreaterPciPortCheck.h @@ -0,0 +1,10 @@ +#pragma once +#include "createrworkcmd.h" +class CCreaterPciPortCheck :public CCreaterWorkCmd +{ +public: + CCreaterPciPortCheck(const CString &str); + ~CCreaterPciPortCheck(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CreaterPciPortSwitch.cpp b/LaiPuLaser/CreaterPciPortSwitch.cpp new file mode 100644 index 0000000..789bdf5 --- /dev/null +++ b/LaiPuLaser/CreaterPciPortSwitch.cpp @@ -0,0 +1,23 @@ +#include "StdAfx.h" +#include "CreaterPciPortSwitch.h" +#include "WorkCmdPciPortSwitch.h" +#include "GlobalFunction.h" +#include "CStringFuc.h" + +CCreaterPciPortSwitch::CCreaterPciPortSwitch(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterPciPortSwitch::~CCreaterPciPortSwitch(void) +{ +} +void CCreaterPciPortSwitch::Creat() +{ + //1 ʾ˿ڿƵ + CString CtrlContent = GetPar(1); + //2 ʾ򿪻ǹر + bool bOpen = Str2Bool(GetPar(2)); + CWorkCmd *pCmd = NULL; + pCmd = new CWorkCmdPciPortSwitch(CtrlContent,bOpen); + AddCmd(pCmd); +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterPciPortSwitch.h b/LaiPuLaser/CreaterPciPortSwitch.h new file mode 100644 index 0000000..ea2815e --- /dev/null +++ b/LaiPuLaser/CreaterPciPortSwitch.h @@ -0,0 +1,10 @@ +#pragma once +#include "createrworkcmd.h" +class CCreaterPciPortSwitch :public CCreaterWorkCmd +{ +public: + CCreaterPciPortSwitch(const CString &str); + ~CCreaterPciPortSwitch(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CreaterPlatformMove.cpp b/LaiPuLaser/CreaterPlatformMove.cpp new file mode 100644 index 0000000..126a605 --- /dev/null +++ b/LaiPuLaser/CreaterPlatformMove.cpp @@ -0,0 +1,48 @@ +#include "StdAfx.h" +#include "CreaterPlatformMove.h" +#include "WorkCmdPciPortCheck.h" +#include "GlobalFunction.h" +#include "WorkCmdMovePlatformXY.h" + + +//ƶԭ +#define TO_ORIGIN _T("TO_ORIGIN") +//ƶȡϵ +#define TO_WORK_PT _T("TO_WORK_PT") + + +CCreaterPlatformMove::CCreaterPlatformMove(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterPlatformMove::~CCreaterPlatformMove(void) +{ +} +void CCreaterPlatformMove::Creat() +{ + //1 ʾ˿ڿƵ + CString MoveMode = GetPar(1); + if(MoveMode == TO_ORIGIN)//عԭ + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + Dbxy MovePt; + Dbxy TargetPt; +#ifdef __PROGRAM_SHILAN_TUIHUO__ + pCmd->SetMoveOrder(2);//Y ȶ +#endif + pCmd->MoveToTargetPt(MovePt,TargetPt); + AddCmd(pCmd); + } + else if(MoveMode == TO_WORK_PT)//ȡϵ + { + CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY(); + Dbxy MovePt; + Dbxy TargetPt(gPlatformXY->GetProductPoint()); + +#ifdef __LPS_IS3000__ + pCmd->SetMoveOrder(2);//X ȶ +#endif + pCmd->MoveToTargetPt(MovePt,TargetPt); + AddCmd(pCmd); + } +} diff --git a/LaiPuLaser/CreaterPlatformMove.h b/LaiPuLaser/CreaterPlatformMove.h new file mode 100644 index 0000000..429446e --- /dev/null +++ b/LaiPuLaser/CreaterPlatformMove.h @@ -0,0 +1,10 @@ +#pragma once +#include "createrworkcmd.h" +class CCreaterPlatformMove :public CCreaterWorkCmd +{ +public: + CCreaterPlatformMove(const CString &str); + ~CCreaterPlatformMove(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CreaterWorkCmd.cpp b/LaiPuLaser/CreaterWorkCmd.cpp new file mode 100644 index 0000000..a468556 --- /dev/null +++ b/LaiPuLaser/CreaterWorkCmd.cpp @@ -0,0 +1,50 @@ +#include "StdAfx.h" +#include "CreaterWorkCmd.h" +#include "MarkAreaMgr.h" +#include "ExceptionMsg.h" +#include "CStringFuc.h" + +CCreaterWorkCmd::CCreaterWorkCmd(const CString &str) +:m_CreatStr(str) +{ +} +CCreaterWorkCmd::~CCreaterWorkCmd(void) +{ +} +//ȡָIJ(idx ʾڼ) +CString CCreaterWorkCmd::GetPar(int idx) +{ + CString Ret;// + CString StrPar; + StrPar.Format(_T("Par%d"),idx); + + //ҵParX λ + int StrParPos = m_CreatStr.Find(StrPar); + if(StrParPos != -1) + { + int Start = m_CreatStr.Find(_T("["),StrParPos);//ŵλ + int End = m_CreatStr.Find(_T("]"),StrParPos);//ŵλ + if(Start != -1 && End != -1 && StartSetAfterDelay(delay); + } + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + CmdContainer.AddCmd(p); +} +//Ѽ +void CCreaterWorkCmd::CollectWorkData(bool bNeedSel) +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterWorkCmd.h b/LaiPuLaser/CreaterWorkCmd.h new file mode 100644 index 0000000..abca688 --- /dev/null +++ b/LaiPuLaser/CreaterWorkCmd.h @@ -0,0 +1,19 @@ +#pragma once +#include "WorkCmd.h" +#include "WorkCmdContainer.h" + +//ָĹӿ +class CCreaterWorkCmd +{ +public: + CCreaterWorkCmd(const CString &str); + virtual ~CCreaterWorkCmd(void); + virtual void Creat(){}; +protected: + CString GetPar(int idx); + void AddCmd(CWorkCmd *p); + void CollectWorkData(bool bNeedSel); +protected: + const CString m_CreatStr;// +}; + diff --git a/LaiPuLaser/CreaterWorkEnd.cpp b/LaiPuLaser/CreaterWorkEnd.cpp new file mode 100644 index 0000000..b32c8bf --- /dev/null +++ b/LaiPuLaser/CreaterWorkEnd.cpp @@ -0,0 +1,17 @@ +#include "StdAfx.h" +#include "CreaterWorkEnd.h" +#include "WorkCmdWorkEnd.h" + +CCreaterWorkEnd::CCreaterWorkEnd(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterWorkEnd::~CCreaterWorkEnd(void) +{ +} +void CCreaterWorkEnd::Creat() +{ + CWorkCmd *pCmd = NULL; + pCmd = new CWorkCmdWorkEnd(); + AddCmd(pCmd); +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterWorkEnd.h b/LaiPuLaser/CreaterWorkEnd.h new file mode 100644 index 0000000..6ea11db --- /dev/null +++ b/LaiPuLaser/CreaterWorkEnd.h @@ -0,0 +1,10 @@ +#pragma once +#include "createrworkcmd.h" +class CCreaterWorkEnd :public CCreaterWorkCmd +{ +public: + CCreaterWorkEnd(const CString &str); + ~CCreaterWorkEnd(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CreaterWorkStart.cpp b/LaiPuLaser/CreaterWorkStart.cpp new file mode 100644 index 0000000..3b3e49b --- /dev/null +++ b/LaiPuLaser/CreaterWorkStart.cpp @@ -0,0 +1,17 @@ +#include "StdAfx.h" +#include "CreaterWorkStart.h" +#include "WorkCmdWorkStart.h" + +CCreaterWorkStart::CCreaterWorkStart(const CString &str) +:CCreaterWorkCmd(str) +{ +} +CCreaterWorkStart::~CCreaterWorkStart(void) +{ +} +void CCreaterWorkStart::Creat() +{ + CWorkCmd *pCmd = NULL; + pCmd = new CWorkCmdWorkStart(); + AddCmd(pCmd); +} \ No newline at end of file diff --git a/LaiPuLaser/CreaterWorkStart.h b/LaiPuLaser/CreaterWorkStart.h new file mode 100644 index 0000000..cfa8370 --- /dev/null +++ b/LaiPuLaser/CreaterWorkStart.h @@ -0,0 +1,10 @@ +#pragma once +#include "createrworkcmd.h" +class CCreaterWorkStart :public CCreaterWorkCmd +{ +public: + CCreaterWorkStart(const CString &str); + ~CCreaterWorkStart(void); + virtual void Creat(); +}; + diff --git a/LaiPuLaser/CutPar/11.are b/LaiPuLaser/CutPar/11.are new file mode 100644 index 0000000..ec5ed7b Binary files /dev/null and b/LaiPuLaser/CutPar/11.are differ diff --git a/LaiPuLaser/CutPar/11.par b/LaiPuLaser/CutPar/11.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/11.par differ diff --git a/LaiPuLaser/CutPar/1111.are b/LaiPuLaser/CutPar/1111.are new file mode 100644 index 0000000..134e8fe Binary files /dev/null and b/LaiPuLaser/CutPar/1111.are differ diff --git a/LaiPuLaser/CutPar/1111.par b/LaiPuLaser/CutPar/1111.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/1111.par differ diff --git a/LaiPuLaser/CutPar/1234.are b/LaiPuLaser/CutPar/1234.are new file mode 100644 index 0000000..bf10ed3 Binary files /dev/null and b/LaiPuLaser/CutPar/1234.are differ diff --git a/LaiPuLaser/CutPar/1234.par b/LaiPuLaser/CutPar/1234.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/1234.par differ diff --git a/LaiPuLaser/CutPar/219-2D.are b/LaiPuLaser/CutPar/219-2D.are new file mode 100644 index 0000000..ec1f762 Binary files /dev/null and b/LaiPuLaser/CutPar/219-2D.are differ diff --git a/LaiPuLaser/CutPar/219-2D.par b/LaiPuLaser/CutPar/219-2D.par new file mode 100644 index 0000000..5657f27 Binary files /dev/null and b/LaiPuLaser/CutPar/219-2D.par differ diff --git a/LaiPuLaser/CutPar/219.are b/LaiPuLaser/CutPar/219.are new file mode 100644 index 0000000..fa534d1 Binary files /dev/null and b/LaiPuLaser/CutPar/219.are differ diff --git a/LaiPuLaser/CutPar/219.par b/LaiPuLaser/CutPar/219.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/CutPar/219.par differ diff --git a/LaiPuLaser/CutPar/219xb.are b/LaiPuLaser/CutPar/219xb.are new file mode 100644 index 0000000..ec1f762 Binary files /dev/null and b/LaiPuLaser/CutPar/219xb.are differ diff --git a/LaiPuLaser/CutPar/219xb.par b/LaiPuLaser/CutPar/219xb.par new file mode 100644 index 0000000..4212337 Binary files /dev/null and b/LaiPuLaser/CutPar/219xb.par differ diff --git a/LaiPuLaser/CutPar/341-3dd.are b/LaiPuLaser/CutPar/341-3dd.are new file mode 100644 index 0000000..969c704 Binary files /dev/null and b/LaiPuLaser/CutPar/341-3dd.are differ diff --git a/LaiPuLaser/CutPar/341-3dd.par b/LaiPuLaser/CutPar/341-3dd.par new file mode 100644 index 0000000..c10594d Binary files /dev/null and b/LaiPuLaser/CutPar/341-3dd.par differ diff --git a/LaiPuLaser/CutPar/8972(11).are b/LaiPuLaser/CutPar/8972(11).are new file mode 100644 index 0000000..984be6e Binary files /dev/null and b/LaiPuLaser/CutPar/8972(11).are differ diff --git a/LaiPuLaser/CutPar/8972(11).par b/LaiPuLaser/CutPar/8972(11).par new file mode 100644 index 0000000..2e258dc Binary files /dev/null and b/LaiPuLaser/CutPar/8972(11).par differ diff --git a/LaiPuLaser/CutPar/D147-1.are b/LaiPuLaser/CutPar/D147-1.are new file mode 100644 index 0000000..1412b24 Binary files /dev/null and b/LaiPuLaser/CutPar/D147-1.are differ diff --git a/LaiPuLaser/CutPar/D147-1.par b/LaiPuLaser/CutPar/D147-1.par new file mode 100644 index 0000000..931a924 Binary files /dev/null and b/LaiPuLaser/CutPar/D147-1.par differ diff --git a/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.are b/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.are new file mode 100644 index 0000000..e8c1373 Binary files /dev/null and b/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.are differ diff --git a/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.par b/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.par new file mode 100644 index 0000000..ac03676 Binary files /dev/null and b/LaiPuLaser/CutPar/D147.dwg用这个.dwg用这个——旋转90.par differ diff --git a/LaiPuLaser/CutPar/D147.dwg用这个.par b/LaiPuLaser/CutPar/D147.dwg用这个.par new file mode 100644 index 0000000..8623b37 Binary files /dev/null and b/LaiPuLaser/CutPar/D147.dwg用这个.par differ diff --git a/LaiPuLaser/CutPar/D386-2.are b/LaiPuLaser/CutPar/D386-2.are new file mode 100644 index 0000000..031eae2 Binary files /dev/null and b/LaiPuLaser/CutPar/D386-2.are differ diff --git a/LaiPuLaser/CutPar/D386-2.par b/LaiPuLaser/CutPar/D386-2.par new file mode 100644 index 0000000..9f7b9dd Binary files /dev/null and b/LaiPuLaser/CutPar/D386-2.par differ diff --git a/LaiPuLaser/CutPar/D714 3D.are b/LaiPuLaser/CutPar/D714 3D.are new file mode 100644 index 0000000..23baaaf Binary files /dev/null and b/LaiPuLaser/CutPar/D714 3D.are differ diff --git a/LaiPuLaser/CutPar/D714 3D.par b/LaiPuLaser/CutPar/D714 3D.par new file mode 100644 index 0000000..de257aa Binary files /dev/null and b/LaiPuLaser/CutPar/D714 3D.par differ diff --git a/LaiPuLaser/CutPar/D714.are b/LaiPuLaser/CutPar/D714.are new file mode 100644 index 0000000..7eae466 Binary files /dev/null and b/LaiPuLaser/CutPar/D714.are differ diff --git a/LaiPuLaser/CutPar/D714.par b/LaiPuLaser/CutPar/D714.par new file mode 100644 index 0000000..0cc2429 Binary files /dev/null and b/LaiPuLaser/CutPar/D714.par differ diff --git a/LaiPuLaser/CutPar/D812.are b/LaiPuLaser/CutPar/D812.are new file mode 100644 index 0000000..06cc203 Binary files /dev/null and b/LaiPuLaser/CutPar/D812.are differ diff --git a/LaiPuLaser/CutPar/D812.par b/LaiPuLaser/CutPar/D812.par new file mode 100644 index 0000000..67642d5 Binary files /dev/null and b/LaiPuLaser/CutPar/D812.par differ diff --git a/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.are b/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.are new file mode 100644 index 0000000..f9da8b4 Binary files /dev/null and b/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.are differ diff --git a/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.par b/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/CutPar/D979.E219 原图.E219 原图.dxfxin.par differ diff --git a/LaiPuLaser/CutPar/Debug.are b/LaiPuLaser/CutPar/Debug.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/CutPar/Debug.are differ diff --git a/LaiPuLaser/CutPar/Debug.par b/LaiPuLaser/CutPar/Debug.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/Debug.par differ diff --git a/LaiPuLaser/CutPar/Drawing1.are b/LaiPuLaser/CutPar/Drawing1.are new file mode 100644 index 0000000..ec5ed7b Binary files /dev/null and b/LaiPuLaser/CutPar/Drawing1.are differ diff --git a/LaiPuLaser/CutPar/Drawing1.par b/LaiPuLaser/CutPar/Drawing1.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/Drawing1.par differ diff --git a/LaiPuLaser/CutPar/E006 原图.are b/LaiPuLaser/CutPar/E006 原图.are new file mode 100644 index 0000000..f6f3125 Binary files /dev/null and b/LaiPuLaser/CutPar/E006 原图.are differ diff --git a/LaiPuLaser/CutPar/E006 原图.par b/LaiPuLaser/CutPar/E006 原图.par new file mode 100644 index 0000000..7f2c9db Binary files /dev/null and b/LaiPuLaser/CutPar/E006 原图.par differ diff --git a/LaiPuLaser/CutPar/E114 原图.are b/LaiPuLaser/CutPar/E114 原图.are new file mode 100644 index 0000000..26a33a0 Binary files /dev/null and b/LaiPuLaser/CutPar/E114 原图.are differ diff --git a/LaiPuLaser/CutPar/E114 原图.par b/LaiPuLaser/CutPar/E114 原图.par new file mode 100644 index 0000000..80a8ac7 Binary files /dev/null and b/LaiPuLaser/CutPar/E114 原图.par differ diff --git a/LaiPuLaser/CutPar/E114YT.are b/LaiPuLaser/CutPar/E114YT.are new file mode 100644 index 0000000..0fb6b2e Binary files /dev/null and b/LaiPuLaser/CutPar/E114YT.are differ diff --git a/LaiPuLaser/CutPar/E114YT.par b/LaiPuLaser/CutPar/E114YT.par new file mode 100644 index 0000000..d1137fe Binary files /dev/null and b/LaiPuLaser/CutPar/E114YT.par differ diff --git a/LaiPuLaser/CutPar/E129-1.are b/LaiPuLaser/CutPar/E129-1.are new file mode 100644 index 0000000..429797c Binary files /dev/null and b/LaiPuLaser/CutPar/E129-1.are differ diff --git a/LaiPuLaser/CutPar/E129-1.par b/LaiPuLaser/CutPar/E129-1.par new file mode 100644 index 0000000..9d36b5c Binary files /dev/null and b/LaiPuLaser/CutPar/E129-1.par differ diff --git a/LaiPuLaser/CutPar/E129.are b/LaiPuLaser/CutPar/E129.are new file mode 100644 index 0000000..bd6c84a Binary files /dev/null and b/LaiPuLaser/CutPar/E129.are differ diff --git a/LaiPuLaser/CutPar/E129.par b/LaiPuLaser/CutPar/E129.par new file mode 100644 index 0000000..43678e2 Binary files /dev/null and b/LaiPuLaser/CutPar/E129.par differ diff --git a/LaiPuLaser/CutPar/E189-3点.are b/LaiPuLaser/CutPar/E189-3点.are new file mode 100644 index 0000000..2f296de Binary files /dev/null and b/LaiPuLaser/CutPar/E189-3点.are differ diff --git a/LaiPuLaser/CutPar/E189-3点.par b/LaiPuLaser/CutPar/E189-3点.par new file mode 100644 index 0000000..d9101dc Binary files /dev/null and b/LaiPuLaser/CutPar/E189-3点.par differ diff --git a/LaiPuLaser/CutPar/E192 两点定位.are b/LaiPuLaser/CutPar/E192 两点定位.are new file mode 100644 index 0000000..b311c93 Binary files /dev/null and b/LaiPuLaser/CutPar/E192 两点定位.are differ diff --git a/LaiPuLaser/CutPar/E192 两点定位.par b/LaiPuLaser/CutPar/E192 两点定位.par new file mode 100644 index 0000000..6c6f6e3 Binary files /dev/null and b/LaiPuLaser/CutPar/E192 两点定位.par differ diff --git a/LaiPuLaser/CutPar/E192-3点.are b/LaiPuLaser/CutPar/E192-3点.are new file mode 100644 index 0000000..fd1a307 Binary files /dev/null and b/LaiPuLaser/CutPar/E192-3点.are differ diff --git a/LaiPuLaser/CutPar/E192-3点.par b/LaiPuLaser/CutPar/E192-3点.par new file mode 100644 index 0000000..f61199b Binary files /dev/null and b/LaiPuLaser/CutPar/E192-3点.par differ diff --git a/LaiPuLaser/CutPar/E219 二供.are b/LaiPuLaser/CutPar/E219 二供.are new file mode 100644 index 0000000..b07c160 Binary files /dev/null and b/LaiPuLaser/CutPar/E219 二供.are differ diff --git a/LaiPuLaser/CutPar/E219 二供.par b/LaiPuLaser/CutPar/E219 二供.par new file mode 100644 index 0000000..82f65d3 Binary files /dev/null and b/LaiPuLaser/CutPar/E219 二供.par differ diff --git a/LaiPuLaser/CutPar/E219 5-29.are b/LaiPuLaser/CutPar/E219 5-29.are new file mode 100644 index 0000000..ebeea4a Binary files /dev/null and b/LaiPuLaser/CutPar/E219 5-29.are differ diff --git a/LaiPuLaser/CutPar/E219 5-29.par b/LaiPuLaser/CutPar/E219 5-29.par new file mode 100644 index 0000000..ad7b4e8 Binary files /dev/null and b/LaiPuLaser/CutPar/E219 5-29.par differ diff --git a/LaiPuLaser/CutPar/E219 二供.are b/LaiPuLaser/CutPar/E219 二供.are new file mode 100644 index 0000000..108321c Binary files /dev/null and b/LaiPuLaser/CutPar/E219 二供.are differ diff --git a/LaiPuLaser/CutPar/E219 二供.par b/LaiPuLaser/CutPar/E219 二供.par new file mode 100644 index 0000000..b675c87 Binary files /dev/null and b/LaiPuLaser/CutPar/E219 二供.par differ diff --git a/LaiPuLaser/CutPar/E219.are b/LaiPuLaser/CutPar/E219.are new file mode 100644 index 0000000..49518f0 Binary files /dev/null and b/LaiPuLaser/CutPar/E219.are differ diff --git a/LaiPuLaser/CutPar/E219.par b/LaiPuLaser/CutPar/E219.par new file mode 100644 index 0000000..557521d Binary files /dev/null and b/LaiPuLaser/CutPar/E219.par differ diff --git a/LaiPuLaser/CutPar/E219R-二供.are b/LaiPuLaser/CutPar/E219R-二供.are new file mode 100644 index 0000000..d8be28c Binary files /dev/null and b/LaiPuLaser/CutPar/E219R-二供.are differ diff --git a/LaiPuLaser/CutPar/E219R-二供.par b/LaiPuLaser/CutPar/E219R-二供.par new file mode 100644 index 0000000..69405ec Binary files /dev/null and b/LaiPuLaser/CutPar/E219R-二供.par differ diff --git a/LaiPuLaser/CutPar/E219ttttt3.are b/LaiPuLaser/CutPar/E219ttttt3.are new file mode 100644 index 0000000..d8f20a5 Binary files /dev/null and b/LaiPuLaser/CutPar/E219ttttt3.are differ diff --git a/LaiPuLaser/CutPar/E219ttttt3.par b/LaiPuLaser/CutPar/E219ttttt3.par new file mode 100644 index 0000000..3a2b21e Binary files /dev/null and b/LaiPuLaser/CutPar/E219ttttt3.par differ diff --git a/LaiPuLaser/CutPar/E219yt-11.are b/LaiPuLaser/CutPar/E219yt-11.are new file mode 100644 index 0000000..f9da8b4 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-11.are differ diff --git a/LaiPuLaser/CutPar/E219yt-11.par b/LaiPuLaser/CutPar/E219yt-11.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-11.par differ diff --git a/LaiPuLaser/CutPar/E219yt-12.are b/LaiPuLaser/CutPar/E219yt-12.are new file mode 100644 index 0000000..0fb6b2e Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-12.are differ diff --git a/LaiPuLaser/CutPar/E219yt-12.par b/LaiPuLaser/CutPar/E219yt-12.par new file mode 100644 index 0000000..80f3fc3 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-12.par differ diff --git a/LaiPuLaser/CutPar/E219yt-3.are b/LaiPuLaser/CutPar/E219yt-3.are new file mode 100644 index 0000000..06e0110 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-3.are differ diff --git a/LaiPuLaser/CutPar/E219yt-3.par b/LaiPuLaser/CutPar/E219yt-3.par new file mode 100644 index 0000000..78a0107 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt-3.par differ diff --git a/LaiPuLaser/CutPar/E219yt.are b/LaiPuLaser/CutPar/E219yt.are new file mode 100644 index 0000000..a4d6aa6 Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt.are differ diff --git a/LaiPuLaser/CutPar/E219yt.par b/LaiPuLaser/CutPar/E219yt.par new file mode 100644 index 0000000..2fff9fb Binary files /dev/null and b/LaiPuLaser/CutPar/E219yt.par differ diff --git a/LaiPuLaser/CutPar/E279.are b/LaiPuLaser/CutPar/E279.are new file mode 100644 index 0000000..eb41596 Binary files /dev/null and b/LaiPuLaser/CutPar/E279.are differ diff --git a/LaiPuLaser/CutPar/E279.par b/LaiPuLaser/CutPar/E279.par new file mode 100644 index 0000000..a1b208c Binary files /dev/null and b/LaiPuLaser/CutPar/E279.par differ diff --git a/LaiPuLaser/CutPar/E279微连点切割.are b/LaiPuLaser/CutPar/E279微连点切割.are new file mode 100644 index 0000000..2d9cd52 Binary files /dev/null and b/LaiPuLaser/CutPar/E279微连点切割.are differ diff --git a/LaiPuLaser/CutPar/E279微连点切割.par b/LaiPuLaser/CutPar/E279微连点切割.par new file mode 100644 index 0000000..17ff796 Binary files /dev/null and b/LaiPuLaser/CutPar/E279微连点切割.par differ diff --git a/LaiPuLaser/CutPar/E341 原图.are b/LaiPuLaser/CutPar/E341 原图.are new file mode 100644 index 0000000..a83ca5a Binary files /dev/null and b/LaiPuLaser/CutPar/E341 原图.are differ diff --git a/LaiPuLaser/CutPar/E341 原图.par b/LaiPuLaser/CutPar/E341 原图.par new file mode 100644 index 0000000..d43f2b5 Binary files /dev/null and b/LaiPuLaser/CutPar/E341 原图.par differ diff --git a/LaiPuLaser/CutPar/E407.are b/LaiPuLaser/CutPar/E407.are new file mode 100644 index 0000000..d96ef07 Binary files /dev/null and b/LaiPuLaser/CutPar/E407.are differ diff --git a/LaiPuLaser/CutPar/E407.par b/LaiPuLaser/CutPar/E407.par new file mode 100644 index 0000000..a558875 Binary files /dev/null and b/LaiPuLaser/CutPar/E407.par differ diff --git a/LaiPuLaser/CutPar/MarkFile.are b/LaiPuLaser/CutPar/MarkFile.are new file mode 100644 index 0000000..984be6e Binary files /dev/null and b/LaiPuLaser/CutPar/MarkFile.are differ diff --git a/LaiPuLaser/CutPar/MarkFile.par b/LaiPuLaser/CutPar/MarkFile.par new file mode 100644 index 0000000..3df8efc Binary files /dev/null and b/LaiPuLaser/CutPar/MarkFile.par differ diff --git a/LaiPuLaser/CutPar/MarkFile2.are b/LaiPuLaser/CutPar/MarkFile2.are new file mode 100644 index 0000000..bc36aca Binary files /dev/null and b/LaiPuLaser/CutPar/MarkFile2.are differ diff --git a/LaiPuLaser/CutPar/MarkFile2.par b/LaiPuLaser/CutPar/MarkFile2.par new file mode 100644 index 0000000..3efd3cc Binary files /dev/null and b/LaiPuLaser/CutPar/MarkFile2.par differ diff --git a/LaiPuLaser/CutPar/TrackRecord1.txt b/LaiPuLaser/CutPar/TrackRecord1.txt new file mode 100644 index 0000000..6c87d81 Binary files /dev/null and b/LaiPuLaser/CutPar/TrackRecord1.txt differ diff --git a/LaiPuLaser/CutPar/TrackRecord2.txt b/LaiPuLaser/CutPar/TrackRecord2.txt new file mode 100644 index 0000000..618eda3 Binary files /dev/null and b/LaiPuLaser/CutPar/TrackRecord2.txt differ diff --git a/LaiPuLaser/CutPar/e114-3D.are b/LaiPuLaser/CutPar/e114-3D.are new file mode 100644 index 0000000..c14e856 Binary files /dev/null and b/LaiPuLaser/CutPar/e114-3D.are differ diff --git a/LaiPuLaser/CutPar/e114-3D.par b/LaiPuLaser/CutPar/e114-3D.par new file mode 100644 index 0000000..52fc471 Binary files /dev/null and b/LaiPuLaser/CutPar/e114-3D.par differ diff --git a/LaiPuLaser/CutPar/jiaozhuntu.are b/LaiPuLaser/CutPar/jiaozhuntu.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/CutPar/jiaozhuntu.are differ diff --git a/LaiPuLaser/CutPar/jiaozhuntu.par b/LaiPuLaser/CutPar/jiaozhuntu.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/jiaozhuntu.par differ diff --git a/LaiPuLaser/CutPar/tt01.are b/LaiPuLaser/CutPar/tt01.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/CutPar/tt01.are differ diff --git a/LaiPuLaser/CutPar/tt01.par b/LaiPuLaser/CutPar/tt01.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/CutPar/tt01.par differ diff --git a/LaiPuLaser/DataPoint.cpp b/LaiPuLaser/DataPoint.cpp new file mode 100644 index 0000000..d1af208 --- /dev/null +++ b/LaiPuLaser/DataPoint.cpp @@ -0,0 +1,96 @@ +#include "StdAfx.h" +#include "DataPoint.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" + +CDataPoint::CDataPoint(Dbxy _pt) +{ + m_bIsNode = false;//ǷΪڵ + m_pt = _pt; +} +CDataPoint::~CDataPoint(void) +{ +} +//ػõĻ +CPoint CDataPoint::GetDevicePt() +{ + return gDraw->Dbxy2CPoint(m_pt); +} +#if 1 +//ݲַ +void CDataPoint::Operate(SObjOperatePar &par) +{ + switch(par.OpType) + { + case _OP_MOVE: + Move(par.MoveX,par.MoveY); + break; + case _OP_MIRROR: + Mirror(par.BasePt,par.xy); + break; + case _OP_ROTATO: + Rotato(par.BasePt,_360ToAngle(par.Angle)); + break; + case _OP_STRETCH: + Stretch(par.BasePt,par.OldSize,par.Diff,par.xy); + break; + default: + break; + } +} +//ƶ +void CDataPoint::Move(double MoveX,double MoveY) +{ + m_pt.x = m_pt.x+MoveX; + m_pt.y = m_pt.y+MoveY; +} +// +//BasePt ׼ +//Size ǰijߴ +//Diff Ǿɳߴ³ߴIJ +void CDataPoint::Stretch(Dbxy BasePt,double Size,double Diff,X_OR_Y xy) +{ + if(Diff == 0) + return; + if(xy == _X) + { + m_pt.x = m_pt.x+Diff*((m_pt.x-BasePt.x)/Size); + } + else + { + m_pt.y = m_pt.y+Diff*((m_pt.y-BasePt.y)/Size); + } +} +//pt Ϊ׼ +void CDataPoint::Mirror(Dbxy pt,X_OR_Y xy) +{ + if(xy == _X) + { + m_pt.x = m_pt.x+(pt.x-m_pt.x)*2; + } + else + { + m_pt.y = m_pt.y+(pt.y-m_pt.y)*2; + } +} +//Angle : Ƚpt : תĵ +void CDataPoint::Rotato(Dbxy pt,double Angle) +{ + m_pt = RotatoPt(m_pt,Angle,pt); +} +#endif +bool CDataPoint::Equal(CDataPoint &pt) +{ + return pt.GetPt().Equal(m_pt); +} + +//ж߶Ƿ +bool DbLine::IsSerialLine(DbLine &line) +{ + if(m_pt1.Equal(line.m_pt1)||m_pt1.Equal(line.m_pt2) + ||m_pt2.Equal(line.m_pt1)||m_pt2.Equal(line.m_pt2)) + { + return true; + } + return false; +} \ No newline at end of file diff --git a/LaiPuLaser/DataPoint.h b/LaiPuLaser/DataPoint.h new file mode 100644 index 0000000..aedb6a7 --- /dev/null +++ b/LaiPuLaser/DataPoint.h @@ -0,0 +1,38 @@ +#pragma once +#include "GlobalDefine.h" + +//ݵĽṹ +class CDataPoint +{ +public: + CDataPoint(Dbxy _pt); + ~CDataPoint(void); + Dbxy GetPt(){return m_pt;}; + void SetPt(Dbxy pt){m_pt = pt;}; + CPoint GetDevicePt(); + void Operate(SObjOperatePar &par); + bool IsNode(){return m_bIsNode;}; + void SetIsNode(bool bIsNode){m_bIsNode = bIsNode;}; + bool Equal(CDataPoint &pt); +private: + void Move(double MoveX,double MoveY); + void Mirror(Dbxy pt,X_OR_Y xy); + void Rotato(Dbxy pt,double Angle); + void Stretch(Dbxy BasePt,double Size,double MaxStep,X_OR_Y xy); +private: + Dbxy m_pt;//ֵ + bool m_bIsNode;//ǷΪڵ +}; + +class DbLine +{ +public: + DbLine(CDataPoint pt1,CDataPoint pt2):m_pt1(pt1),m_pt2(pt2){}; + ~DbLine(void){}; + bool IsSerialLine(DbLine &line); + Dbxy GetPt1(){return m_pt1.GetPt();}; + Dbxy GetPt2(){return m_pt2.GetPt();}; +public: + CDataPoint m_pt1; + CDataPoint m_pt2; +}; diff --git a/LaiPuLaser/Debug.mak b/LaiPuLaser/Debug.mak new file mode 100644 index 0000000..78cd90c Binary files /dev/null and b/LaiPuLaser/Debug.mak differ diff --git a/LaiPuLaser/Debug.txt b/LaiPuLaser/Debug.txt new file mode 100644 index 0000000..e69de29 diff --git a/LaiPuLaser/DeviceCut.cpp b/LaiPuLaser/DeviceCut.cpp new file mode 100644 index 0000000..5bc9fe0 --- /dev/null +++ b/LaiPuLaser/DeviceCut.cpp @@ -0,0 +1,118 @@ +#include "StdAfx.h" +#include "DeviceCut.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "WorkAreaMgr.h" +#include "MsgBox.h" +#include "GlobalDrawMgr.h" +#include "WorkCmdMotorToMachineOrigin.h" + +CDeviceCut::CDeviceCut(void) +{ + m_DelayAfterOpenLaser = 3000;//ǰʱ + m_DelayAfterCloseLaser = 1000;//ؼʱ() + + m_bPrepareState = false;//豸Ƿ񱻳ʼ(δʼʱʹijЩ) +} +CDeviceCut::~CDeviceCut(void) +{ +} +#if 1//дmodule ĺ +CMFCPropertyGridProperty *CDeviceCut::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("cut");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("и"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_DelayAfterOpenLaser");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DelayAfterOpenLaser); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("(λ: )򿪼ʱһʱƽ̨˶,ΪһĹ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DelayAfterOpenLaser, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_DelayAfterCloseLaser");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DelayAfterCloseLaser); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ؼʱ"); + Description = _T("(λ: )رռʱһʱƽ̨˶β"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DelayAfterCloseLaser, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + + return pGroup; +} +void CDeviceCut::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CDeviceCut]------------------------------------------------"<WriteDebugLog("豸׼״̬--ERROR",_LOG_ERROR); +}; +//ȡ豸׼״̬ +bool CDeviceCut::GetPrepareState() +{ + if(!m_bPrepareState) + { + CMsgBox MsgBox; + MsgBox.Show("豸δ׼״̬,ȳʼ豸!",true); + } + return m_bPrepareState; +} +#if 1 +// +void CDeviceCut::StartWork() +{ + Work(false); +} +//ģ⹤ +void CDeviceCut::StartSimulateWork() +{ + Work(true); +} +#endif +#if 1 +//ȡָ +void CDeviceCut::GetPointData(CObjContainer &ObjContainer,vector &vec) +{ + //ȡobj ݵvec -------------------------------------------------- + ObjContainer.GetOnePoint(vec); +} +#endif diff --git a/LaiPuLaser/DeviceCut.h b/LaiPuLaser/DeviceCut.h new file mode 100644 index 0000000..9cbb768 --- /dev/null +++ b/LaiPuLaser/DeviceCut.h @@ -0,0 +1,30 @@ +#pragma once +#include "Module.h" +#include "EnumPropertieType.h" +#include "WorkCmdInvoker.h" +#include "ObjContainer.h" + +class CDeviceCut :public CModule +{ +public: + CDeviceCut(void); + virtual ~CDeviceCut(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _TOOL_CUT_PROP;}; + + virtual void InitializeDevice(){};//豸ʼ + virtual void Work(bool bSimulate){}; + + void StartWork();// + void StartSimulateWork();//ģ⹤ + void SetPrepareState(bool b);//豸׼״̬ + bool GetPrepareState(); + void GetPointData(CObjContainer &ObjContainer,vector &vec); +protected: + int m_DelayAfterOpenLaser;//ǰʱ() + int m_DelayAfterCloseLaser;//ؼʱ() + + bool m_bPrepareState;//豸׼״̬(FALSE ʱʹijЩ) +}; + diff --git a/LaiPuLaser/DeviceState.cpp b/LaiPuLaser/DeviceState.cpp new file mode 100644 index 0000000..18b06b8 --- /dev/null +++ b/LaiPuLaser/DeviceState.cpp @@ -0,0 +1,62 @@ +#include "StdAfx.h" +#include "DeviceState.h" +#include "MsgBox.h" +#include "LogMgr.h" + +CDeviceState CDeviceState::m_Instance; +CDeviceState::CDeviceState(void) +{ + m_State = _STATE_WAIT; + m_bIsIni = false;//Ƿʼ +} +CDeviceState::~CDeviceState(void) +{ +} +bool CDeviceState::CheckState(DEVICE_STATE state,bool flg) +{ + bool ret; + if(flg) + ret = (m_State == state); + else + ret = (m_State != state); + + if(!ret) + { + CString str(_T("error : 豸")); + gLogMgr->WriteDebugLog(str+GetStateStr()); + } + return ret; +} +CString CDeviceState::GetStateStr() +{ + if(!m_bIsIni) + return _T("δʼ"); + CString str; + switch(m_State) + { + case _STATE_WAIT: + str = _T(""); + break; + case _STATE_WORKING: + str = _T(""); + break; + default: + break; + } + return str; +} +void CDeviceState::SetIniState(bool b) +{ + m_bIsIni = b; +} +//ʼ״̬ +bool CDeviceState::CheckInitState() +{ + if(!m_bIsIni) + { + CMsgBox MsgBox; + CString str(_T("error : 豸δʼ")); + MsgBox.Show(str); + } + return m_bIsIni; +} \ No newline at end of file diff --git a/LaiPuLaser/DeviceState.h b/LaiPuLaser/DeviceState.h new file mode 100644 index 0000000..37c4537 --- /dev/null +++ b/LaiPuLaser/DeviceState.h @@ -0,0 +1,30 @@ +#pragma once + +enum DEVICE_STATE +{ + _STATE_WAIT = 0,// + _STATE_WORKING,// +}; + + +//豸״̬() +class CDeviceState +{ +public: + ~CDeviceState(void); + static CDeviceState &GetInstance(){return m_Instance;}; + void SetState(DEVICE_STATE s){m_State = s;}; + bool CheckState(DEVICE_STATE state,bool flg); + DEVICE_STATE GetState(){return m_State;}; + CString GetStateStr(); + void SetIniState(bool b); + bool IsDeviceIni(){return m_bIsIni;};//豸Ƿʼ + bool IsWorking(){return m_State==_STATE_WORKING;}; + bool CheckInitState(); +private: + CDeviceState(void); + static CDeviceState m_Instance; + DEVICE_STATE m_State;//ǰ״̬ + bool m_bIsIni;//Ƿʼ +}; + diff --git a/LaiPuLaser/DlgAdjustObjPos.cpp b/LaiPuLaser/DlgAdjustObjPos.cpp new file mode 100644 index 0000000..cac238b --- /dev/null +++ b/LaiPuLaser/DlgAdjustObjPos.cpp @@ -0,0 +1,78 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgAdjustObjPos.h" +#include "afxdialogex.h" +#include "ObjComponentMgr.h" + +IMPLEMENT_DYNAMIC(CDlgAdjustObjPos, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgAdjustObjPos, CDialogEx) + ON_BN_CLICKED(IDC_UP_BTN, &CDlgAdjustObjPos::OnBnClickedUpBtn) + ON_BN_CLICKED(IDC_DOWN_BTN, &CDlgAdjustObjPos::OnBnClickedDownBtn) + ON_BN_CLICKED(IDC_LEFT_BTN, &CDlgAdjustObjPos::OnBnClickedLeftBtn) + ON_BN_CLICKED(IDC_RIGHT_BTN, &CDlgAdjustObjPos::OnBnClickedRightBtn) +END_MESSAGE_MAP() + +double gMoveRange = 0.01; +CDlgAdjustObjPos::CDlgAdjustObjPos(CWnd* pParent /*=NULL*/) +: CDialogEx(CDlgAdjustObjPos::IDD, pParent) +{ +} + +CDlgAdjustObjPos::~CDlgAdjustObjPos() +{ +} + +void CDlgAdjustObjPos::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_MOVE_RANGE, m_MoveRange); + DDX_Control(pDX, IDC_LEFT_BTN, m_XLeftBtn); + DDX_Control(pDX, IDC_RIGHT_BTN, m_XRightBtn); + DDX_Control(pDX, IDC_UP_BTN, m_XTopBtn); + DDX_Control(pDX, IDC_DOWN_BTN, m_XDownBtn); +} + +BOOL CDlgAdjustObjPos::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + m_MoveRange = gMoveRange; + m_XLeftBtn.LoadBitmaps(IDB_LEFT_BTN,IDB_LEFT_DOWN_BTN,IDB_LEFT_BTN,IDB_LEFT_BTN); + m_XRightBtn.LoadBitmaps(IDB_RIGHT_BTN,IDB_RIGHT_BTN_DOWN,IDB_RIGHT_BTN,IDB_RIGHT_BTN); + m_XTopBtn.LoadBitmaps(IDB_TOP_BTN,IDB_TOP_DOWN_BTN,IDB_TOP_BTN,IDB_TOP_BTN); + m_XDownBtn.LoadBitmaps(IDB_DOWN_BTN,IDB_DOWN_DOWN_BTN,IDB_DOWN_BTN,IDB_DOWN_BTN); + UpdateData(FALSE); + return TRUE; +} +void CDlgAdjustObjPos::OnBnClickedUpBtn() +{ + UpdateData(TRUE); + Dbxy Offset; + Offset.y = m_MoveRange; + gMoveRange = m_MoveRange; + gObjComponentMgr->MoveSelObjComponent(Offset); +} +void CDlgAdjustObjPos::OnBnClickedDownBtn() +{ + UpdateData(TRUE); + Dbxy Offset; + Offset.y = m_MoveRange*(-1); + gMoveRange = m_MoveRange; + gObjComponentMgr->MoveSelObjComponent(Offset); +} +void CDlgAdjustObjPos::OnBnClickedLeftBtn() +{ + UpdateData(TRUE); + Dbxy Offset; + Offset.x = m_MoveRange*(-1); + gMoveRange = m_MoveRange; + gObjComponentMgr->MoveSelObjComponent(Offset); +} +void CDlgAdjustObjPos::OnBnClickedRightBtn() +{ + UpdateData(TRUE); + Dbxy Offset; + Offset.x = m_MoveRange; + gMoveRange = m_MoveRange; + gObjComponentMgr->MoveSelObjComponent(Offset); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgAdjustObjPos.h b/LaiPuLaser/DlgAdjustObjPos.h new file mode 100644 index 0000000..3a47f9c --- /dev/null +++ b/LaiPuLaser/DlgAdjustObjPos.h @@ -0,0 +1,30 @@ +#pragma once + +class CDlgAdjustObjPos : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgAdjustObjPos) + +public: + CDlgAdjustObjPos(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgAdjustObjPos(); + +// Ի + enum { IDD = IDD_ADJUST_OBJ_POS_DLG }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + afx_msg void OnBnClickedUpBtn(); + afx_msg void OnBnClickedDownBtn(); + afx_msg void OnBnClickedLeftBtn(); + afx_msg void OnBnClickedRightBtn(); + DECLARE_MESSAGE_MAP() +private: + CBitmapButton m_XLeftBtn; //ƽ̨ưť + CBitmapButton m_XRightBtn; //ƽ̨ưť + CBitmapButton m_XTopBtn; //ƽ̨ưť + CBitmapButton m_XDownBtn; //ƽ̨ưť + CBitmapButton m_ZUpBtn;//Z + CBitmapButton m_ZDownBtn;//Z + + double m_MoveRange;//ƶ +}; diff --git a/LaiPuLaser/DlgArray.cpp b/LaiPuLaser/DlgArray.cpp new file mode 100644 index 0000000..d957e10 --- /dev/null +++ b/LaiPuLaser/DlgArray.cpp @@ -0,0 +1,210 @@ +// ArrayDlg.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgArray.h" +#include "afxdialogex.h" + + +// CDlgArray Ի + +IMPLEMENT_DYNAMIC(CDlgArray, CDialogEx) + +CDlgArray::CDlgArray(CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgArray::IDD, pParent) +{ +} + +CDlgArray::~CDlgArray() +{ +} + +void CDlgArray::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_ARRAY_CNT_H,m_ArrayPar.m_ArrayCntH); + DDX_Text(pDX, IDC_ARRAY_CNT_V, m_ArrayPar.m_ArrayCntV); + DDX_Text(pDX, IDC_ARRAY_OFFSET_H, m_ArrayPar.m_ArrayOffsetH); + DDX_Text(pDX, IDC_ARRAY_OFFSET_V, m_ArrayPar.m_ArrayOffsetV); + DDX_Text(pDX, IDC_ARRAY_CNT,m_ArrayPar.m_ArrayCnt); + DDX_Text(pDX, IDC_RADIUS, m_ArrayPar.m_Radius); + DDX_Text(pDX, IDC_GAP_ANGLE, m_ArrayPar.m_GapAngle); + DDX_Text(pDX, IDC_FILL_OFFSET, m_ArrayPar.m_FillOffset); + DDX_Text(pDX, IDC_FIIL_CNT, m_ArrayPar.m_FillCnt); +} + + +BEGIN_MESSAGE_MAP(CDlgArray, CDialogEx) + ON_BN_CLICKED(IDOK,OnBnClickedOk) + ON_BN_CLICKED(IDC_RECT, &CDlgArray::OnBnClickedRect) + ON_BN_CLICKED(IDC_CIRCLE, &CDlgArray::OnBnClickedCircle) + ON_BN_CLICKED(IDC_CIRCLE2, &CDlgArray::OnBnClickedCircle2) +END_MESSAGE_MAP() + +BOOL CDlgArray::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + ((CButton *)GetDlgItem(IDC_RECT))->SetCheck(TRUE); + OnBnClickedRect(); + + UpdateData(FALSE); + return TRUE; +} + +void CDlgArray::OnBnClickedRect() +{ + m_ArrayPar.m_bRectArray = true; + m_ArrayPar.m_bCircleArray = false; + m_ArrayPar.m_bFillArray = false; + ((CButton *)GetDlgItem(IDC_CIRCLE))->SetCheck(FALSE); + ((CButton *)GetDlgItem(IDC_CIRCLE2))->SetCheck(FALSE); + CWnd *pWnd; + pWnd = GetDlgItem(IDC_STATIC4); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC5); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC6); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC7); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_ARRAY_CNT_H); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_ARRAY_CNT_V); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_H); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_V); + pWnd->ShowWindow(SW_SHOW); + + pWnd = GetDlgItem(IDC_STATIC1); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC2); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC3); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_CNT); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_RADIUS); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_GAP_ANGLE); + pWnd->ShowWindow(SW_HIDE); + + + pWnd = GetDlgItem(IDC_STATIC8); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC9); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_FILL_OFFSET); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_FIIL_CNT); + pWnd->ShowWindow(SW_HIDE); +} +void CDlgArray::OnBnClickedCircle() +{ + m_ArrayPar.m_bRectArray = false; + m_ArrayPar.m_bCircleArray = true; + m_ArrayPar.m_bFillArray = false; + ((CButton *)GetDlgItem(IDC_RECT))->SetCheck(FALSE); + ((CButton *)GetDlgItem(IDC_CIRCLE2))->SetCheck(FALSE); + CWnd *pWnd; + pWnd = GetDlgItem(IDC_ARRAY_CNT_H); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_CNT_V); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_H); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_V); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC4); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC5); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC6); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC7); + pWnd->ShowWindow(SW_HIDE); + + + pWnd = GetDlgItem(IDC_STATIC1); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC2); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC3); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_ARRAY_CNT); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_RADIUS); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_GAP_ANGLE); + pWnd->ShowWindow(SW_SHOW); + + pWnd = GetDlgItem(IDC_STATIC8); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC9); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_FILL_OFFSET); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_FIIL_CNT); + pWnd->ShowWindow(SW_HIDE); +} +void CDlgArray::OnBnClickedOk() +{ + UpdateData(TRUE); + //й + CArrayMgr ArrayMgr; + // + ArrayMgr.Creat(m_ArrayPar); + OnOK(); +} + +void CDlgArray::OnBnClickedCircle2() + { + m_ArrayPar.m_bRectArray = false; + m_ArrayPar.m_bCircleArray = false; + m_ArrayPar.m_bFillArray = true; + ((CButton *)GetDlgItem(IDC_RECT))->SetCheck(FALSE); + ((CButton *)GetDlgItem(IDC_CIRCLE))->SetCheck(FALSE); + CWnd *pWnd; + pWnd = GetDlgItem(IDC_ARRAY_CNT_H); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_CNT_V); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_H); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_OFFSET_V); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC4); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC5); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC6); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC7); + pWnd->ShowWindow(SW_HIDE); + + + pWnd = GetDlgItem(IDC_STATIC1); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC2); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_STATIC3); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_ARRAY_CNT); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_RADIUS); + pWnd->ShowWindow(SW_HIDE); + pWnd = GetDlgItem(IDC_GAP_ANGLE); + pWnd->ShowWindow(SW_HIDE); + + pWnd = GetDlgItem(IDC_STATIC8); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_STATIC9); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_FILL_OFFSET); + pWnd->ShowWindow(SW_SHOW); + pWnd = GetDlgItem(IDC_FIIL_CNT); + pWnd->ShowWindow(SW_SHOW); + } + diff --git a/LaiPuLaser/DlgArray.h b/LaiPuLaser/DlgArray.h new file mode 100644 index 0000000..d8928fb --- /dev/null +++ b/LaiPuLaser/DlgArray.h @@ -0,0 +1,28 @@ +#pragma once + +#include "ArrayMgr.h" +// CDlgArray Ի + +class CDlgArray : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgArray) + +public: + CDlgArray(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgArray(); + +// Ի + enum { IDD = IDD_ARRAY_DLG }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + afx_msg void OnBnClickedOk(); + DECLARE_MESSAGE_MAP() +private: + SArrayPar m_ArrayPar;//в +public: + afx_msg void OnBnClickedRect(); + afx_msg void OnBnClickedCircle(); + afx_msg void OnBnClickedCircle2(); + +}; diff --git a/LaiPuLaser/DlgAuthorityMgr.cpp b/LaiPuLaser/DlgAuthorityMgr.cpp new file mode 100644 index 0000000..2c585e0 --- /dev/null +++ b/LaiPuLaser/DlgAuthorityMgr.cpp @@ -0,0 +1,90 @@ +// DlgAuthorityMgr->cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgAuthorityMgr.h" +#include "afxdialogex.h" + +#include "MsgBox.h" +#include "AuthorityMgr.h" +// CDlgAuthorityMgr Ի + +IMPLEMENT_DYNAMIC(CDlgAuthorityMgr, CDialogEx) + +CDlgAuthorityMgr::CDlgAuthorityMgr(CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgAuthorityMgr::IDD, pParent) + , m_CurUser(_T("")) +{ + +} +CDlgAuthorityMgr::~CDlgAuthorityMgr() +{ +} +void CDlgAuthorityMgr::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_AUTHORITY, m_CurAuthority); + DDX_Text(pDX, IDC_NAME, m_Name); + DDX_Text(pDX, IDC_PASSWORD, m_PassWord); + DDX_Text(pDX, IDC_CUR_USER, m_CurUser); + DDX_Control(pDX, IDC_LOGIN, m_LoginBtn); + DDX_Control(pDX, IDC_LOCK_USER, m_LockBtn); +} +BEGIN_MESSAGE_MAP(CDlgAuthorityMgr, CDialogEx) + + ON_BN_CLICKED(IDC_LOGIN, &CDlgAuthorityMgr::OnBnClickedLogin) + ON_BN_CLICKED(IDC_LOCK_USER, &CDlgAuthorityMgr::OnBnClickedLock) +END_MESSAGE_MAP() + +//ػһּ +BOOL CDlgAuthorityMgr::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + if(c==VK_RETURN || c==VK_ESCAPE) + { + return TRUE; + } + } + return CDialogEx::PreTranslateMessage(pMsg); +} +// CDlgCreatAccount Ϣ +BOOL CDlgAuthorityMgr::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + m_LoginBtn.SetUpColor(RGB_GREEN); + //ˢµǰȨ + RefreashAuthority(); + + UpdateData(FALSE); + return TRUE; +} +//¼ +void CDlgAuthorityMgr::OnBnClickedLogin() +{ + UpdateData(TRUE); + if(gAuthorityMgr->Login(m_Name,m_PassWord)) + { + //ˢµǰȨ + RefreashAuthority(); + OnOK(); + } +} +//ˢµǰȨ +void CDlgAuthorityMgr::RefreashAuthority() +{ + m_CurAuthority = gAuthorityMgr->GetAccountName(gAuthorityMgr->GetCurAuthority()); + m_CurUser = gAuthorityMgr->GetCurUserName(); + UpdateData(FALSE); +} + + +void CDlgAuthorityMgr::OnBnClickedLock() +{ + gAuthorityMgr->Lock(); + CMsgBox MsgBox; + MsgBox.Show("ûLock"); + CDialogEx::OnCancel(); +} diff --git a/LaiPuLaser/DlgAuthorityMgr.h b/LaiPuLaser/DlgAuthorityMgr.h new file mode 100644 index 0000000..40ef8c8 --- /dev/null +++ b/LaiPuLaser/DlgAuthorityMgr.h @@ -0,0 +1,33 @@ +#pragma once +#include "MyBttom.h" + + +// CDlgAuthorityMgr Ի +//Ȩ޹ +class CDlgAuthorityMgr : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgAuthorityMgr) + +public: + CDlgAuthorityMgr(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgAuthorityMgr(); + void RefreashAuthority(); +// Ի + enum { IDD = IDD_AUTHORITY_MGR }; +private: + CString m_CurAuthority;//ǰȨ + CString m_CurUser; + CString m_Name; + CString m_PassWord; + + CMyBttom m_LoginBtn; + CMyBttom m_LockBtn; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +public: + afx_msg BOOL PreTranslateMessage(MSG* pMsg); + afx_msg void OnBnClickedLogin(); + afx_msg void OnBnClickedLock(); +}; diff --git a/LaiPuLaser/DlgCreatAccount.cpp b/LaiPuLaser/DlgCreatAccount.cpp new file mode 100644 index 0000000..b1b2ba3 --- /dev/null +++ b/LaiPuLaser/DlgCreatAccount.cpp @@ -0,0 +1,98 @@ +// DlgCreatAccount.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgCreatAccount.h" +#include "afxdialogex.h" +#include "AuthorityMgr.h" +#include "MsgBox.h" +// CDlgCreatAccount Ի + +IMPLEMENT_DYNAMIC(CDlgCreatAccount, CDialogEx) + +CDlgCreatAccount::CDlgCreatAccount(CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgCreatAccount::IDD, pParent) +{ + +} + +CDlgCreatAccount::~CDlgCreatAccount() +{ +} + +void CDlgCreatAccount::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_NAME, m_Name); + DDX_Text(pDX, IDC_PASSWORD, m_PassWord1); + DDX_Text(pDX, IDC_PASSWORD2, m_PassWord2); + DDX_Control(pDX, IDC_AUTHORITY_COMB, m_AuthorityComb); +} + + +BEGIN_MESSAGE_MAP(CDlgCreatAccount, CDialogEx) + ON_BN_CLICKED(IDOK, &CDlgCreatAccount::OnBnClickedOk) +END_MESSAGE_MAP() + + +// CDlgCreatAccount Ϣ +BOOL CDlgCreatAccount::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + IniAuthorityComb(); + + UpdateData(FALSE); + return TRUE; +} +void CDlgCreatAccount::IniAuthorityComb() +{ + AUTHORITY_TYPE CurAuthority = gAuthorityMgr->GetCurAuthority(); + + if(CurAuthority== _NO_LOGIN || CurAuthority== _USER) + return; + int idx = 0; + m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_USER)); + m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_ADMIN)); + if(CurAuthority== _FACTORY) + { + m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_FACTORY)); + } + m_AuthorityComb.SetCurSel(_USER); +} +void CDlgCreatAccount::OnBnClickedOk() +{ + AUTHORITY_TYPE CurAuthority = gAuthorityMgr->GetCurAuthority(); + if(CurAuthority== _USER) + { + CMsgBox MsgBox; + MsgBox.Show("ǰȨ޲ܴ˺!"); + return; + } + UpdateData(TRUE); + if(m_Name=="") + { + CMsgBox MsgBox; + MsgBox.Show("ûΪ!"); + return; + } + if(m_PassWord1=="") + { + CMsgBox MsgBox; + MsgBox.Show("벻Ϊ!"); + return; + } + if(m_PassWord1 != m_PassWord2) + { + CMsgBox MsgBox; + MsgBox.Show("ȷ벻һ!"); + return; + } + CAccount Account; + Account.m_Name = m_Name; + Account.m_PassWord = m_PassWord1; + Account.m_Authority = (AUTHORITY_TYPE)(m_AuthorityComb.GetCurSel()+1);//Ȩ + gAuthorityMgr->AddAccount(Account); + CDialogEx::OnOK(); +} diff --git a/LaiPuLaser/DlgCreatAccount.h b/LaiPuLaser/DlgCreatAccount.h new file mode 100644 index 0000000..c6b0920 --- /dev/null +++ b/LaiPuLaser/DlgCreatAccount.h @@ -0,0 +1,29 @@ +#pragma once + + +// CDlgCreatAccount Ի + +class CDlgCreatAccount : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgCreatAccount) + +public: + CDlgCreatAccount(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgCreatAccount(); + +// Ի + enum { IDD = IDD_CREAT_ACCOUNT2 }; +private: + CString m_Name; + CString m_PassWord1; + CString m_PassWord2; + CComboBox m_AuthorityComb; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + void IniAuthorityComb(); +public: + afx_msg void OnBnClickedOk(); +}; diff --git a/LaiPuLaser/DlgCutDeviceCtrl.cpp b/LaiPuLaser/DlgCutDeviceCtrl.cpp new file mode 100644 index 0000000..828d650 --- /dev/null +++ b/LaiPuLaser/DlgCutDeviceCtrl.cpp @@ -0,0 +1,530 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgCutDeviceCtrl.h" +#include "afxdialogex.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" +#include "DlgAuthorityMgr.h" +#include "ProgramCutMgr.h" +#include "CommonFlowMgr.h" +#include "ProgramCutMgr.h" +#include "PlatformXY.h" +#include "ProductMgr.h" +#include "LaserDeviceMgr.h" +#include "MarkParMgr.h" +#include "PropertieMgr.h" +#include "Propertie.h" +#include "WorkTime.h" +#include "MsgBox.h" +#include "EncryptionMgr.h" +#include "PciCh365Mgr.h" +#include "CStringFuc.h" +#include "WorkCmdContainer.h" +#include "MarkAreaMgr.h" +//#include "SuperDogMgr.h" +#include "ObjComponentMgr.h" + + +IMPLEMENT_DYNAMIC(DlgCutDeviceCtrl, CDialogEx) +BEGIN_MESSAGE_MAP(DlgCutDeviceCtrl, CDialogEx) + ON_WM_TIMER() + ON_BN_CLICKED(IDC_INI_DEVICE_BTN, &DlgCutDeviceCtrl::OnBnClickedIniDeviceBtn) + ON_BN_CLICKED(IDC_OPEN_DXF, &DlgCutDeviceCtrl::OnBnClickedOpenDxfWorkFile) + + + ON_BN_CLICKED(IDC_START_WORK, &DlgCutDeviceCtrl::OnBnClickedStartWork) + ON_BN_CLICKED(IDC_BOOL_SEL_MARK, &DlgCutDeviceCtrl::OnBnClickedSelectedMark) + ON_BN_CLICKED(IDC_SAVE_PAR, &DlgCutDeviceCtrl::OnBnClickedSavePar) + ON_BN_CLICKED(IDC_OPEN_MAK, &DlgCutDeviceCtrl::OnBnClickedOpenMarkFile) + ON_BN_CLICKED(IDC_PRODUCT_1, &DlgCutDeviceCtrl::OnBnClickedProduct1) + ON_BN_CLICKED(IDC_PRODUCT_2, &DlgCutDeviceCtrl::OnBnClickedProduct2) + ON_BN_CLICKED(IDC_PRODUCT_3, &DlgCutDeviceCtrl::OnBnClickedProduct3) + ON_BN_CLICKED(IDC_PRODUCT_4, &DlgCutDeviceCtrl::OnBnClickedProduct4) + + ON_BN_CLICKED(IDC_ADJUST_PRODUCT_POS, &DlgCutDeviceCtrl::OnBnClickedAdjustProductPos) +END_MESSAGE_MAP() + + +#define WORK_TIMER1 1 +#define WORK_TIME_DELAY1 200 + + +#define WORK_TIMER2 2 +#define WORK_TIME_DELAY2 200 + +#define WORK_TIMER3 3 +#define WORK_TIME_DELAY3 200 + +#define WORK_TIMER5 5 +#define WORK_TIME_DELAY5 200 + +#define LASER_INFO_TIMER 6 +#define LASER_INFO_TIMER_DELAY5 500 + +bool gbSelMark = false; + +DlgCutDeviceCtrl::DlgCutDeviceCtrl(CWnd* pParent /*=NULL*/) +{ + m_LaserPower = 7.5;//ֵ + m_LaserFre = 50000; + m_LaserSpeed =300; + m_CutCount = 1;//и + m_MarkAreaCutCount = 1; + m_RotatoAdjust = 0;//תmm + m_CurWorkStep = 0; + m_CurProductIdx = -1;//ǰ +} +DlgCutDeviceCtrl::~DlgCutDeviceCtrl() +{ + m_CurWorkStep = 0; +} +void DlgCutDeviceCtrl::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + + DDX_Control(pDX, IDC_OPEN_DXF, m_ReadDxfBtn); + DDX_Control(pDX, IDC_INI_DEVICE_BTN, m_IniDeviceBtn); + DDX_Control(pDX, IDC_START_WORK, m_StartWorkBtn); + DDX_Control(pDX, IDC_BOOL_SEL_MARK, m_SelMarkBtn); + DDX_Control(pDX, IDC_SAVE_PAR, m_SaveParBtn); + DDX_Control(pDX, IDC_OPEN_MAK, m_ReadMarkBtn); + DDX_Control(pDX, IDC_SAVE_MAK, m_SaveMarkBtn); + + DDX_Control(pDX, IDC_PRODUCT_1, m_ProductBtn1); + DDX_Control(pDX, IDC_PRODUCT_2, m_ProductBtn2); + DDX_Control(pDX, IDC_PRODUCT_3, m_ProductBtn3); + DDX_Control(pDX, IDC_PRODUCT_4, m_ProductBtn4); + DDX_Control(pDX, IDC_ADJUST_PRODUCT_POS, m_AdjustProductPosBtn); + + DDX_Text(pDX, IDC_LAESR_DIODE, m_LaserPower); + DDX_Text(pDX, IDC_LASER_FRE, m_LaserFre); + DDX_Text(pDX, IDC_CUT_SPEED, m_LaserSpeed); + DDX_Text(pDX, IDC_CUT_CNT, m_CutCount); + DDX_Text(pDX, IDC_SIZE_ADJUST, m_SizeAdjust.x); + DDX_Text(pDX, IDC_SIZE_ADJUSTY, m_SizeAdjust.y); + DDX_Text(pDX, IDC_CUR_WORK_TIME, m_CurWorkTimes); + DDX_Text(pDX, IDC_TOTAL_WORK_TIME, m_TotalWorkTimes); + DDX_Text(pDX, IDC_WORK_TIME, m_WorkTime); + DDX_Text(pDX, IDC_POS_ADJUSTX, m_OffsetAdjust.x); + DDX_Text(pDX, IDC_POS_ADJUSTY, m_OffsetAdjust.y); + DDX_Text(pDX, IDC_AREA_CUT_CNT, m_MarkAreaCutCount); + + DDX_Text(pDX, IDC_ROTATO_ADJUST, m_RotatoAdjust); +} + +BOOL DlgCutDeviceCtrl::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_IniDeviceBtn.SetUpColor(RGB_RED); + m_EndInspectionBtn.SetUpColor(RGB_BLUE1); + m_SelMarkBtn.SetUpColor(RGB_GRAY1); + m_StartWorkBtn.SetUpColor(RGB_GREEN); + m_AdjustProductPosBtn.SetUpColor(RGB_PINK); + + UpdateInfo(); + + + //SetTimer(WORK_TIMER3,WORK_TIME_DELAY3,NULL); + + //SetTimer(LASER_INFO_TIMER,LASER_INFO_TIMER_DELAY5,NULL); + UpdateData(FALSE); + return TRUE; +} +#if 1 +//۲ƽ̨ı仯 +void DlgCutDeviceCtrl::UpdateInfo() +{ + m_CurWorkTimes = gProductMgr->GetCurWorkTimes(); + m_TotalWorkTimes = gProductMgr->GetTotalWorkTimes(); + m_WorkTime = gWorkTime.GetTimeSpanStr(); + m_OffsetAdjust = gCommonFlowMgr->GetAdjustOffset(); + m_SizeAdjust = gCommonFlowMgr->GetAdjustSize(); + m_RotatoAdjust = gCommonFlowMgr->GetRotatoAdjust();//ת + m_MarkAreaCutCount = gCommonFlowMgr->GetAreaCycleCnt(); + UpdateData(FALSE); +} +void DlgCutDeviceCtrl::Update() +{ + SetTimer(WORK_TIMER1,WORK_TIME_DELAY1,NULL);//timer£ᱨ +} +void DlgCutDeviceCtrl::OnTimer(UINT nIDEvent) +{ + if(nIDEvent == WORK_TIMER1) + { + UpdateInfo(); + KillTimer(WORK_TIMER1); + } + if(nIDEvent == WORK_TIMER2)//ӹ + { + KillTimer(WORK_TIMER2); + AutoWork(); + } + if(nIDEvent == WORK_TIMER3)//ǷҪӹ + { + SetProductBtnState(); + CheckStartState(); + } + + if(nIDEvent == WORK_TIMER5)//ظӹ + { + KillTimer(WORK_TIMER5); + OnBnClickedStartWork(); + } + if(nIDEvent == LASER_INFO_TIMER)//⼤ + { + #ifdef __READ_LASER_DEVICE_INFO__ + //¼ + UpdateLaserParInfo(); + #endif + } + CDialog::OnTimer(nIDEvent); +} +#endif +#if 1 +void DlgCutDeviceCtrl::OnBnClickedIniDeviceBtn() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + if(gProgramCutMgr->InitDevice()) + { + m_IniDeviceBtn.SetUpColor(RGB_GREEN); + } + else + { + m_IniDeviceBtn.SetUpColor(RGB_RED); + } + m_IniDeviceBtn.Refreash(); +} +#endif +#if 1 + +//dxf ļ--ӹԭ +void DlgCutDeviceCtrl::OnBnClickedOpenDxfWorkFile() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + OpenWorkFile(true); +} +void DlgCutDeviceCtrl::OnBnClickedOpenMarkFile() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + OpenWorkFile(false); +} +void DlgCutDeviceCtrl::OpenWorkFile(bool bDxf) +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + // + gProgramCutMgr->OpenWorkFile(bDxf); + //ȡļӦļӹļ + gProgramCutMgr->ReadWorkParFile(); + gDevicePropertieMgr.SaveAllPropertie(); + //ò,ʾ + SetPar(); + //ѼԴ + //gProgramCutMgr->CollectSrcWorkData(); + + UpdateInfo(); +} +#endif +#if 1 +void DlgCutDeviceCtrl::SetProductBtnState() +{ + vector &ProductVec = gProductMgr->GetProductVec(); + int size = ProductVec.size(); + for(int k=0;k &ProductVec = gProductMgr->GetProductVec(); + int size = ProductVec.size(); + if(size>idx) + { + bool b = ProductVec[idx].IsUsed(); + ProductVec[idx].SetUsed(!b); + SetProductBtnState(); + gDevicePropertieMgr.SaveAllPropertie(); + + int ProductCnt = gProductMgr->GetUsedProductCnt(); + if(ProductCnt == 1) + { + int size = ProductVec.size(); + for(int i=0;iMoveObjData(CurBasePt); + break; + } + } + } + + GetCurViewPtr()->RefreshView(); + } +} +//Ʒץȡƫλ +void DlgCutDeviceCtrl::OnBnClickedAdjustProductPos() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel("ץȡƫλ?")==false) + return; + gProductMgr->SetProductCenterPt(); + //ӹ + gProgramCutMgr->SaveWorkParFile(); +} +#endif +#if 1 +//ѡӹ +void DlgCutDeviceCtrl::OnBnClickedSelectedMark() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + gbSelMark = !gbSelMark; + if(gbSelMark) + m_SelMarkBtn.SetUpColor(RGB_YELLOW); + else + m_SelMarkBtn.SetUpColor(RGB_GRAY1); +} +//ʼ +void DlgCutDeviceCtrl::OnBnClickedStartWork() +{ + + if(gEncryptionMgr->CheckLockState()==false) + { + CMsgBox MsgBox; + MsgBox.Show("豸ʹȨ ϵӦ!"); + return; + } + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + //ظ + if(m_CurWorkStep != 0) + return; + //ӹǰʾ + if(gCommonFlowMgr->StartWorkConfirm(gbSelMark)==false) + return; + + m_CurProductIdx = -1; + //product ״̬(һproduct) + gProductMgr->UpdateProductState(); + //ȡֹͣ״̬ + gCommonFlowMgr->SetbWorkStop(false); + //õһӹproduct + gProductMgr->SetCurProductIdx(0); +} +//Զӹ(ÿμӹһproduct ) +void DlgCutDeviceCtrl::AutoWork() +{ + if(gCommonFlowMgr->IsbWorkStop()) + { + m_CurWorkStep = 0; + } + int Idx = gProductMgr->GetCurProductIdx(); + if(Idx<0) + { + return; + } + CProduct &Product = gProductMgr->GetProduct(Idx); + if(Product.IsUsed()==false)//˵ʹõproduct + { + m_CurWorkStep = 0; + } + if(m_CurWorkStep == 1)//ץȡλ1 + { + //ץһ֡,CCD ͣ + if(Idx ==0)//һproduct + { + gWorkTime.StartRecordTime();//ʱʼ + } + //ƶǰproduct Ļ׼ + gProgramCutMgr->MoveObjData(Product.GetProductBasePt()); + gCommonFlowMgr->CameraCatchTwoMark(Product);//ֻץȡһ + if(Product.IsSetRealMarkPt1()) + { + m_CurWorkStep = 2; + } + else + { + m_CurWorkStep = 0; + } + } + else if(m_CurWorkStep == 2)//ץȡλ2 + { + gCommonFlowMgr->CameraCatchTwoMark(Product); + if(Product.IsMarkReady()) + { + m_CurWorkStep = 3; + } + else + { + m_CurWorkStep = 0; + } + } + else if(m_CurWorkStep == 3)//ʼи + { + if(Product.IsMarkReady()) + { + if(!gbSelMark)//ȫʱֱȫѡ2018-04-20 + { + gObjComponentMgr->SelAllObj(); + } + gProgramCutMgr->StartWork(Product,true); + CLayer &layer = GetLayerInstance(); + CObjContainer ObjContainer = layer.GetObjContainer(); + ObjContainer.NotSelAllObj(); + } + m_CurWorkStep = 0;// + } + if(m_CurWorkStep == 0)// + { + gProductMgr->CurProductIdxInc();//product ֵ++ + if(gProductMgr->GetCurProductIdx()<0)//product ӹ + { + //ƶĬϵλ + gProgramCutMgr->MoveObjData(Dbxy(0,0)); + gCommonFlowMgr->SetLightStateCmd(false); + gWorkTime.StopRecordTime();//ֹͣʱ + //ƶproduct 0 Ļ׼ + CProduct &Product0 = gProductMgr->GetProduct(0); + gProgramCutMgr->MoveObjData(Product0.GetProductBasePt()); + + if(gCommonFlowMgr->IsNeedExecAgain())//ٴ + { + SetTimer(WORK_TIMER5,WORK_TIME_DELAY5,NULL); + } + //ָ + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + gLogMgr->WriteDebugLog("All Work End"); + } + + } + //ûAutoWork() + if(m_CurWorkStep>=1 && m_CurWorkStep<=3) + { + SetTimer(WORK_TIMER2,WORK_TIME_DELAY2,NULL); + } +} + +//״̬(︺иproduct мӹ) +void DlgCutDeviceCtrl::CheckStartState() +{ + int Idx = gProductMgr->GetCurProductIdx(); + if(Idx>=0 && Idx != m_CurProductIdx)//Ҫظ + { + m_CurProductIdx = Idx;//ǰӹproduct + m_CurWorkStep = 1;//ƼӹǰproductIJ + if(Idx == 0) + { + gCommonFlowMgr->SetLightStateCmd(true); + } + AutoWork(); + } +} +//ͨťӹ +void DlgCutDeviceCtrl::StartWrokByBottom() +{ + +} +#endif +#if 1 +void DlgCutDeviceCtrl::SetPar() +{ + m_LaserPower = gCLaserDeviceMgr->GetPower(); + m_LaserFre = gCLaserDeviceMgr->GetLaserFre(); + CMarkPar& MarkPar = gMarkParMgr->GetCurPen(); + m_LaserSpeed = MarkPar.ms;//иٶ + m_CutCount = gCommonFlowMgr->m_OneObjMarkCnt;//и + m_OffsetAdjust = gCommonFlowMgr->GetAdjustOffset(); + m_RotatoAdjust = gCommonFlowMgr->GetRotatoAdjust();//ת + m_SizeAdjust = gCommonFlowMgr->GetAdjustSize(); + m_MarkAreaCutCount = gCommonFlowMgr->GetAreaCycleCnt();//ѭ + UpdateData(FALSE); +} +//Ӧò +void DlgCutDeviceCtrl::OnBnClickedSavePar() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + + UpdateData(TRUE); + + gCLaserDeviceMgr->SetPower(m_LaserPower); + gCLaserDeviceMgr->SetFre(m_LaserFre); + CMarkPar& MarkPar = gMarkParMgr->GetCurPen(); + MarkPar.ms = m_LaserSpeed;//иٶ + gMarkParMgr->SaveCurPen(MarkPar); + gCommonFlowMgr->m_OneObjMarkCnt = m_CutCount;//и + gCommonFlowMgr->SetAdjustOffset(m_OffsetAdjust); + gCommonFlowMgr->SetRotatoAdjust(m_RotatoAdjust); + gCommonFlowMgr->SetAdjustSize(m_SizeAdjust); + gCommonFlowMgr->SetAreaCycleCnt(m_MarkAreaCutCount); + + gDevicePropertieMgr.SaveAllPropertie(); + //üIJ + gCLaserDeviceMgr->SetParToLaserDevice(false); + + //ѼԴ + gProgramCutMgr->CollectSrcWorkData(); + + CMsgBox MsgBox; + MsgBox.Show("Ӧóɹ"); + + //ӹ + gProgramCutMgr->SaveWorkParFile(); +} +#endif +//¼ +void DlgCutDeviceCtrl::UpdateLaserParInfo() +{ + double LaserCurr = gCLaserDeviceMgr->GetCurLaserCurr(); + double LaserFre = gCLaserDeviceMgr->GetCurLaserFre(); + if(LaserCurr<0 ||LaserCurr>100) + LaserCurr = 0; + if(LaserFre<0 ||LaserFre>100) + LaserFre = 0; + + GetDlgItem(IDC_SLEEP_TIME)->SetWindowText(gCLaserDeviceMgr->GetCurLeftTimes()); + GetDlgItem(IDC_CUR_LASER_CURR)->SetWindowText(Db2CString(LaserCurr)); + GetDlgItem(IDC_CUR_LASER_FRE)->SetWindowText(Db2CString(LaserFre)); +} diff --git a/LaiPuLaser/DlgCutDeviceCtrl.h b/LaiPuLaser/DlgCutDeviceCtrl.h new file mode 100644 index 0000000..36ef9d6 --- /dev/null +++ b/LaiPuLaser/DlgCutDeviceCtrl.h @@ -0,0 +1,86 @@ +#pragma once +#include "Observer.h" +#include "DlgPane.h" +#include "MyBttom.h" + + + +class DlgCutDeviceCtrl : public CDlgPane,public CObserver +{ + DECLARE_DYNAMIC(DlgCutDeviceCtrl) +public: + DlgCutDeviceCtrl(CWnd* pParent = NULL); // ׼캯 + virtual ~DlgCutDeviceCtrl(); + virtual UINT GetIDD(){return DlgCutDeviceCtrl::IDD;}; + virtual void Update(); + void SetPar(); + void CheckStartState(); + void StartWrokByBottom(); + void SetWorkTime(CString s){m_WorkTime = s;}; + void UpdateLaserParInfo(); + // Ի + enum { IDD = IDD_DEVICE_CTRL_DLG }; +private: + + CMyBttom m_ReadDxfBtn; + CMyBttom m_IniDeviceBtn; + CMyBttom m_EndInspectionBtn; + + CMyBttom m_StartWorkBtn; + CMyBttom m_SelMarkBtn; + CMyBttom m_SaveParBtn; + + CMyBttom m_ReadMarkBtn; + CMyBttom m_SaveMarkBtn; + + CMyBttom m_ProductBtn1; + CMyBttom m_ProductBtn2; + CMyBttom m_ProductBtn3; + CMyBttom m_ProductBtn4; + + CMyBttom m_AdjustProductPosBtn; + + double m_LaserPower; + int m_LaserFre; + float m_LaserSpeed; + int m_MarkAreaCutCount;//ѭи + int m_CutCount;//и + //double m_SizeAdjust;//ԭߴ + + int m_CurWorkTimes; + int m_TotalWorkTimes; + CString m_WorkTime;//ӹʱ + + int m_CurProductIdx;//ǰ + Dbxy m_OffsetAdjust;//ƫƵ + Dbxy m_SizeAdjust;//ƫƵ + double m_RotatoAdjust;//תmm + int m_CurWorkStep; + + double m_MouldThickness;//ģߵĺmm +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + DECLARE_MESSAGE_MAP() +private: + void UpdateInfo(); + void AutoWork(); + void SetProductBtnState(); + void SetProductBtnStateExt(CMyBttom &btn,bool b); + void OnBnClickedProduct(int idx); + void OpenWorkFile(bool bDxf); +public: + afx_msg void OnBnClickedIniDeviceBtn(); + afx_msg void OnBnClickedOpenDxfWorkFile(); + afx_msg void OnBnClickedOpenMarkFile(); + + afx_msg void OnBnClickedStartWork(); + afx_msg void OnBnClickedSelectedMark(); + afx_msg void OnBnClickedSavePar(); + afx_msg void OnBnClickedProduct1(); + afx_msg void OnBnClickedProduct2(); + afx_msg void OnBnClickedProduct3(); + afx_msg void OnBnClickedProduct4(); + afx_msg void OnBnClickedAdjustProductPos(); +}; diff --git a/LaiPuLaser/DlgDnCutCamera.cpp b/LaiPuLaser/DlgDnCutCamera.cpp new file mode 100644 index 0000000..97d19e0 --- /dev/null +++ b/LaiPuLaser/DlgDnCutCamera.cpp @@ -0,0 +1,642 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgDnCutCamera.h" +#include "afxdialogex.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" +#include "FileMgr.h" +#include "LogMgr.h" +#include "CommonFlowMgr.h" +#include "CameraHawkvis.h" +#include "ProgramCutMgr.h" + +#include "SmartArchive.h" +#include +#include +#include +#include +using namespace cv; + +DlgHawkvisCamera *gDlgHawkvisCamera; + +IMPLEMENT_DYNAMIC(DlgHawkvisCamera, CDialogEx) +BEGIN_MESSAGE_MAP(DlgHawkvisCamera, CDialogEx) + ON_WM_TIMER() + ON_BN_CLICKED(IDC_OPEN_CAM, &DlgHawkvisCamera::OnBnClickedOpenCam) + ON_BN_CLICKED(IDC_FRAME_ONE, &DlgHawkvisCamera::OnBnClickedFrameOne) + ON_BN_CLICKED(IDC_FRAME_CONTINUE, &DlgHawkvisCamera::OnBnClickedFrameContinue) + ON_BN_CLICKED(IDC_READ_BMP, &DlgHawkvisCamera::OnBnClickedReadBmp) + ON_BN_CLICKED(IDC_SAVE_BMP, &DlgHawkvisCamera::OnBnClickedSaveBmp) + ON_BN_CLICKED(IDC_CREAT_CATCH_TEMP, &DlgHawkvisCamera::OnBnClickedCreatCatchTemp) + ON_BN_CLICKED(IDC_SET_EXPORE, &DlgHawkvisCamera::OnBnClickedSetExpore) + ON_BN_CLICKED(IDC_ZOOM_FULL, &DlgHawkvisCamera::OnBnClickedZoomFull) + ON_BN_CLICKED(IDC_HK_ZOOM_IN, &DlgHawkvisCamera::OnBnClickedHkZoomIn) + ON_BN_CLICKED(IDC_HK_ZOOM_OUT, &DlgHawkvisCamera::OnBnClickedHkZoomOut) + ON_BN_CLICKED(IDC_CLOSE_CAM, &DlgHawkvisCamera::OnBnClickedCloseCam) + ON_BN_CLICKED(IDC_TEST_CATCH_TEMP, &DlgHawkvisCamera::OnBnClickedTestCatchTemp) + ON_BN_CLICKED(IDC_LOAD_CATCH_TEMP, &DlgHawkvisCamera::OnBnClickedLoadCatchTemp) + ON_BN_CLICKED(IDC_SAVE_CATCH_TEMP, &DlgHawkvisCamera::OnBnClickedSaveCatchTemp) + ON_BN_CLICKED(IDC_RADIO3, &DlgHawkvisCamera::OnBnClickedToCam1) + ON_BN_CLICKED(IDC_RADIO1, &DlgHawkvisCamera::OnBnClickedToCam2) + ON_BN_CLICKED(IDC_TEST_CATCH_TEMP2, &DlgHawkvisCamera::OnBnClickedTestDefinition) + ON_MESSAGE(WM_UPDATE_FALSE, OnUpdateFalse) + //ON_MESSAGE_VOID(WM_UPDATE_FALSE, OnUpdateFalse) + ON_BN_CLICKED(IDC_TEST_CATCH_TEMP3, &DlgHawkvisCamera::OnBnClickedSetThreshold) +END_MESSAGE_MAP() + +#define WORK_TIMER1 1 +#define WORK_TIME_DELAY1 200 + +DlgHawkvisCamera::DlgHawkvisCamera(CWnd* pParent /*=NULL*/) + : m_CurPic_Definition(0) + , m_CurTrackThreshold(0) +{ + m_nExpore = (60000); +} +DlgHawkvisCamera::~DlgHawkvisCamera() +{ +} +void DlgHawkvisCamera::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_ISP3000_LOGO_BTN, m_ISP3000LogoBtn); + DDX_Control(pDX, IDC_HAWKVISCTRLCTRL3, m_HawkvisCtrl1); + DDX_Control(pDX, IDC_HAWKVISCTRLCTRL4, m_HawkvisCtrl2); + + DDX_Control(pDX, IDC_OPEN_CAM, m_OpenCamBtn); + DDX_Control(pDX, IDC_CLOSE_CAM, m_CloseCamBtn); + DDX_Control(pDX, IDC_FRAME_ONE, m_OneFrameBtn); + DDX_Control(pDX, IDC_FRAME_CONTINUE, m_ContinueFrameBtn); + DDX_Control(pDX, IDC_READ_BMP, m_ReadBmpBtn); + DDX_Control(pDX, IDC_SAVE_BMP, m_SaveBmpBtn); + DDX_Control(pDX, IDC_SET_EXPORE, m_SetExpBtn); + DDX_Control(pDX, IDC_HK_ZOOM_IN, m_ZoomInBtn); + DDX_Control(pDX, IDC_HK_ZOOM_OUT, m_ZoomOutBtn); + DDX_Control(pDX, IDC_ZOOM_FULL, m_ZoomFullBtn); + DDX_Control(pDX, IDC_LOAD_CATCH_TEMP, m_ReadTempBtn); + DDX_Control(pDX, IDC_CREAT_CATCH_TEMP, m_EditTempBtn); + DDX_Control(pDX, IDC_TEST_CATCH_TEMP, m_TestTempBtn); + DDX_Control(pDX, IDC_SAVE_CATCH_TEMP, m_SaveTempBtn); + DDX_Text(pDX, IDC_EDIT_SET_EXP, m_nExpore); + DDX_Control(pDX, IDC_TEST_CATCH_TEMP2, m_TestDefinitionBtn); + DDX_Control(pDX, IDC_TEST_CATCH_TEMP3, m_SetThresholdBtn); + + DDX_Text(pDX, IDC_EDIT_SET_EXP2, m_CurTrackThreshold); + DDX_Text(pDX, IDC_STATIC_CurValue, m_CurPic_Definition); + + +} +BOOL DlgHawkvisCamera::OnInitDialog() +{ + gDlgHawkvisCamera = this; + CDialogEx::OnInitDialog(); + m_ISP3000LogoBtn.SetUpColor(RGB_YELLOW); + + m_OpenCamBtn.SetUpColor(RGB_GREEN); + m_CloseCamBtn.SetUpColor(RGB_GREEN); + + m_ReadTempBtn.SetUpColor(RGB_GREEN1); + m_EditTempBtn.SetUpColor(RGB_GREEN1); + m_TestTempBtn.SetUpColor(RGB_GREEN1); + m_SaveTempBtn.SetUpColor(RGB_GREEN1); + + m_OneFrameBtn.SetUpColor(RGB_PINK); + m_ContinueFrameBtn.SetUpColor(RGB_PINK); + + + Update(); + + try + { + if (m_HawkvisCtrl1.MV_SelectAdapterByIdx(0)) + { + if (m_HawkvisCtrl1.MV_OpenCamera()) + { + m_pHawkvisCtrl = &m_HawkvisCtrl1; + m_HawkvisCtrl1.MV_SetCameraExpTime(gCameraHawkvis->m_nCam1Expore); + m_nExpore = gCameraHawkvis->m_nCam1Expore; + } + m_HawkvisCtrl1.SetCrossShow(1, 30, 30, -1, -1, TRUE); + if (m_HawkvisCtrl1.MV_GetOneFrame()) + { + m_HawkvisCtrl1.ZoomFitWindow(); + } + } + + if (m_HawkvisCtrl2.MV_SelectAdapterByIdx(1)) + { + if (m_HawkvisCtrl2.MV_OpenCamera()) + { + m_pHawkvisCtrl = &m_HawkvisCtrl2; + m_HawkvisCtrl2.MV_SetCameraExpTime(gCameraHawkvis->m_nCam2Expore); + //m_nExpore = gCameraHawkvis->m_nCam2Expore; + } + m_HawkvisCtrl2.SetCrossShow(1, 30, 30, -1, -1, TRUE); + if (m_HawkvisCtrl2.MV_GetOneFrame()) + { + m_HawkvisCtrl2.ZoomFitWindow(); + } + } + } + catch (...) + { + AfxMessageBox("쳣."); + } + UpdateData(FALSE); + return TRUE; +} +//۲ƽ̨ı仯 +void DlgHawkvisCamera::UpdateInfo() +{ + //ļʱ,Զģ + if ( (!gLogMgr->IsDebuging()) && gCameraHawkvis->GetCurShapeModelID() != m_ShapeModelID) + { + m_ShapeModelID = gCameraHawkvis->GetCurShapeModelID(); + + m_pHawkvisCtrl = &m_HawkvisCtrl1; + OnBnClickedLoadCatchTemp(); + Sleep(200); + m_pHawkvisCtrl = &m_HawkvisCtrl2; + OnBnClickedLoadCatchTemp(); + + } + if (m_DlgCurCamIndex == gCameraHawkvis->GetCamIndex()) + return; + + m_DlgCurCamIndex = gCameraHawkvis->GetCamIndex(); //ϵˢ,ظ + + if (gCameraHawkvis->GetCamIndex() == 0) + { + m_pHawkvisCtrl = &m_HawkvisCtrl1; + ( (CButton*)GetDlgItem(IDC_RADIO1) )->SetCheck(FALSE); + ( (CButton*)GetDlgItem(IDC_RADIO3) )->SetCheck(TRUE); + } + if (gCameraHawkvis->GetCamIndex() == 1) + { + m_pHawkvisCtrl = &m_HawkvisCtrl2; + ((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE); + ((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(FALSE); + //OnBnClickedToCam2(); + } + + UpdateData(FALSE); +} +void DlgHawkvisCamera::Update() +{ + SetTimer(WORK_TIMER1, WORK_TIME_DELAY1, NULL);//timer£ᱨ +} +void DlgHawkvisCamera::OnTimer(UINT nIDEvent) +{ + if (nIDEvent == WORK_TIMER1) + { + UpdateInfo(); + //KillTimer(WORK_TIMER1); + } + CDialog::OnTimer(nIDEvent); +} + +#if 1 +void DlgHawkvisCamera::OnBnClickedOpenCam() +{ +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (m_pHawkvisCtrl->MV_OpenCamera()) +#else + if (m_HawkvisCtrl.HV_OpenCamera()) +#endif + { + gLogMgr->WriteDebugLog("Hawkvis : Open Cam ---->OK"); + } + else + gLogMgr->WriteDebugLog("Hawkvis : Open Cam ---->ERR"); + } +void DlgHawkvisCamera::OnBnClickedCloseCam() +{ +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (m_pHawkvisCtrl->MV_CloseCamera()) + { + gLogMgr->WriteDebugLog("Hawkvis : Close Cam OK"); + } + else + { + gLogMgr->WriteDebugLog("Hawkvis : Close Cam Failed!"); + } +#else + m_HawkvisCtrl.HV_CloseCamera(); +#endif + +} +void DlgHawkvisCamera::OnBnClickedFrameOne() +{ + m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck()); +#ifdef __HAWKVIS_MINDVISION_CCD__ + /*m_pHawkvisCtrl->MV_GetOneFrame(); + Sleep(100);*/ + if (m_pHawkvisCtrl->MV_GetOneFrame()) +#else + if (m_HawkvisCtrl.HV_GetOneFrame()) +#endif + { + //m_HawkvisCtrl.Rotate180(); + m_pHawkvisCtrl->ZoomFitWindow(); + gLogMgr->WriteDebugLog("Hawkvis : FrameOne --OK"); + } + else + { + gLogMgr->WriteDebugLog("Hawkvis : FrameOne --ERR"); + } +} +void DlgHawkvisCamera::OnBnClickedFrameContinue() +{ + m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck()); +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (m_pHawkvisCtrl->MV_GetContinueFrame()) +#else + if (m_HawkvisCtrl.HV_GetContinueFrame()) +#endif + { + m_pHawkvisCtrl->ZoomFitWindow(); + gLogMgr->WriteDebugLog("Hawkvis : FrameContinue --OK"); + } + else + { + gLogMgr->WriteDebugLog("Hawkvis : FrameContinue --ERR"); + } +} +void DlgHawkvisCamera::OnBnClickedReadBmp() +{ + m_pHawkvisCtrl->ReadImage(); +} +void DlgHawkvisCamera::OnBnClickedSaveBmp() +{ + CFileMgr FileMgr; + CString path = FileMgr.GetWorkPath(); + m_pHawkvisCtrl->WriteImage((LPCTSTR)path, "OutputImg"); + gLogMgr->WriteDebugLog("Hawkvis : SaveBmp"); +} +//عֵ +void DlgHawkvisCamera::OnBnClickedSetExpore() +{ + UpdateData(TRUE); +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (m_DlgCurCamIndex == 0) + { + gCameraHawkvis->m_nCam1Expore = m_nExpore; + } + else + { + gCameraHawkvis->m_nCam2Expore = m_nExpore; + } + m_pHawkvisCtrl->MV_SetCameraExpTime(m_nExpore); +#else + m_HawkvisCtrl.HV_SetCameraExpTime(m_nExpore); +#endif + gLogMgr->WriteDebugLog("Hawkvis : SetExpore"); + OnBnClickedFrameOne(); +} + +#endif + +void DlgHawkvisCamera::OnBnClickedZoomFull() +{ + m_pHawkvisCtrl->ZoomFitWindow(); +} +void DlgHawkvisCamera::OnBnClickedHkZoomIn() +{ + m_pHawkvisCtrl->ZoomIn(); +} +void DlgHawkvisCamera::OnBnClickedHkZoomOut() +{ + m_pHawkvisCtrl->ZoomOut(); +} +#if 1 +//༭ģ +void DlgHawkvisCamera::OnBnClickedCreatCatchTemp() +{ + //ÿؼӿڣ״ģ壬ΪģIDšؼִ֧100ģ壬ģΪ099 + // m_HawkvisCtrl.CreateShapeModel(0); + try + { + m_pHawkvisCtrl->CreateShapeModel(gCameraHawkvis->GetCurShapeModelID()); + } + catch (...) + { + AfxMessageBox("༭ģ 쳣"); + } + +} +void DlgHawkvisCamera::OnBnClickedTestCatchTemp() +{ + //֮ǰƵԲ + m_pHawkvisCtrl->ClearGraphicObject(); + //ץȡһ֡ +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (!m_pHawkvisCtrl->MV_GetOneFrame()) +#else + if (!m_HawkvisCtrl->HV_GetOneFrame()) +#endif + { + CString str = _T("func : Hawkvis Get One Frame----->Error"); + //CExceptionMsg Msg; + //Msg.SetMsg(str); + //throw Msg; + gLogMgr->WriteDebugLog(str); + } + Sleep(300);//ȴݽocx ؼ + //ģ + double pdbX[10], pdbY[10], pdbAngles[10], pdbScale[10], pdbSore[10]; + long nCount[1] = { 1 }; + //FindShapeMode ؼģҺ + //һȡֵΧ15 + //ڶҵĿ + //ҵĿ + //ĸҵĿǶ + //ҵĿ + //ҵĿ + //߸ҵĿ + //ڰ˸ģID + VARIANT *v_pdbX = new VARIANT[1]; + VARIANT *v_pdbY = new VARIANT[1]; + VARIANT *v_pdbAngles = new VARIANT[1]; + VARIANT *v_pdbScale = new VARIANT[1]; + VARIANT *v_pdbSore = new VARIANT[1]; + bool ret = false; + try + { + ret = m_pHawkvisCtrl->FindShapeModel(gCameraHawkvis->GetCurShapeModelID(), v_pdbY, v_pdbX, v_pdbAngles, v_pdbScale, v_pdbSore, nCount); + } + catch (...) + { + ret = false; + } + if (!ret)//2018-01-15 ӱ,ܻᱨ + { + CString str = _T("func : Hawkvis Find Shape Model----->Error"); + //CExceptionMsg Msg; + //Msg.SetMsg(str); + //throw Msg; + gLogMgr->WriteDebugLog(str); + return; + } + //pdbX + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbX->parray); ++index) { + ::SafeArrayGetElement(v_pdbX->parray, &index, pdbX + index); + } + //pdbY + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbY->parray); ++index) { + ::SafeArrayGetElement(v_pdbY->parray, &index, pdbY + index); + } + //pdbAngles + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbAngles->parray); ++index) { + ::SafeArrayGetElement(v_pdbAngles->parray, &index, pdbAngles + index); + } + //pdbScale + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbScale->parray); ++index) { + ::SafeArrayGetElement(v_pdbScale->parray, &index, pdbScale + index); + } + //pdbSore + for (long index = 0; index < ::SafeArrayGetElemsize(v_pdbSore->parray); ++index) { + ::SafeArrayGetElement(v_pdbSore->parray, &index, pdbSore + index); + } + + //ʾҵģλ +#if 1 + Dbxy pt; + CString str; + str.Format("X: %0.3f, Y:%0.f", pdbX[0], pdbY[0]); + pt.x = pdbX[0]; + pt.y = pdbY[0]; + str.Format("X: %0.3f, Y:%0.3f", pt.x, pt.y); + gLogMgr->WriteDebugLog(str); +#endif + //gCommonFlowMgr->CameraCatch(); +} +void DlgHawkvisCamera::OnBnClickedLoadCatchTemp() +{ + CFileMgr FileMgr; + CString path = FileMgr.GetWorkPath(); + // auto b=m_HawkvisCtrl.LoadShapeModel((LPCTSTR)path); + try + { + auto b = m_pHawkvisCtrl->LoadShapeModelByID(gCameraHawkvis->GetCurShapeModelID(), (LPCTSTR)path); + CString str; + str.Format("Hawkvis : LoadatchTemp [%d]", gCameraHawkvis->GetCurShapeModelID()); + + if (b) + str += " ɹ!"; + else + str += " ʧ!"; + gLogMgr->WriteDebugLog(str); + } + catch (...) + { + AfxMessageBox("ģ 쳣"); + } + + //gLogMgr->WriteDebugLog("Hawkvis : LoadCatchTemp"); +} +void DlgHawkvisCamera::OnBnClickedSaveCatchTemp() +{ + //SaveShapeMode ģ庯 + //һģ屣· + //ڶģ屣· + CFileMgr FileMgr; + CString path = FileMgr.GetWorkPath(); + //auto b= m_HawkvisCtrl.SaveShapeModel((LPCTSTR)path); + try + { + auto b = m_pHawkvisCtrl->SaveShapeModelByID(gCameraHawkvis->GetCurShapeModelID(), (LPCTSTR)path); + CString str; + str.Format("Hawkvis : SaveCatchTemp [%d]", gCameraHawkvis->GetCurShapeModelID()); + if (b) + str += " ɹ!"; + else + str += " ʧ!"; + gLogMgr->WriteDebugLog(str); + } + catch (...) + { + AfxMessageBox("ģ 쳣"); + } + +} +#endif + + + +void DlgHawkvisCamera::OnBnClickedToCam1() +{ + m_pHawkvisCtrl = &m_HawkvisCtrl1; + return; + /*try + { + m_pHawkvisCtrl->MV_CloseCamera(); + if (m_pHawkvisCtrl->MV_SelectAdapterByIdx(0)) + { + if (m_pHawkvisCtrl->MV_OpenCamera()) + { + OnBnClickedLoadCatchTemp();//ȡģ + m_pHawkvisCtrl->MV_SetCameraExpTime(gCameraHawkvis->m_nCam1Expore); + m_nExpore = gCameraHawkvis->m_nCam1Expore; + //UpdateData(FALSE); + //OnBnClickedSetExpore();//ع + } + + m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck()); + if (m_pHawkvisCtrl->MV_GetOneFrame()) + { + m_pHawkvisCtrl->ZoomFitWindow(); + } + / *else + { + static bool bfirst = true; + if (bfirst) + { + AfxMessageBox("1ɼʧ!");//һ + bfirst = false; + } + }* / + } + else + { + static bool bfirst = true; + if (bfirst) + { + bfirst = false; + AfxMessageBox("1ʧ!");//һ + + } + } + m_DlgCurCamIndex = 0; + gCameraHawkvis->SetCamIndex(0); + ((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(TRUE); + ((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE); + gLogMgr->WriteDebugLog("Switch To Cam1"); + } + catch (...) + { + AfxMessageBox("1 쳣!");//һ + }*/ + +} + + +void DlgHawkvisCamera::OnBnClickedToCam2() +{ + + m_pHawkvisCtrl = &m_HawkvisCtrl2; + return; + +/* + try + { + m_pHawkvisCtrl->MV_CloseCamera(); + if (m_pHawkvisCtrl->MV_SelectAdapterByIdx(1)) + { + if (m_pHawkvisCtrl->MV_OpenCamera()) + { + OnBnClickedLoadCatchTemp();//ȡģ + m_pHawkvisCtrl->MV_SetCameraExpTime(gCameraHawkvis->m_nCam2Expore); + m_nExpore = gCameraHawkvis->m_nCam2Expore; + //UpdateData(FALSE); + //OnBnClickedSetExpore();//ع + } + m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck()); + if (m_pHawkvisCtrl->MV_GetOneFrame()) + { + m_pHawkvisCtrl->ZoomFitWindow(); + } + } + else + { + static bool bfirst = true; + if (bfirst) + { + AfxMessageBox("2ʧ!");//һ + bfirst = false; + } + } + + m_DlgCurCamIndex = 1; + gCameraHawkvis->SetCamIndex(1); + ((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE); + ((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(FALSE); + gLogMgr->WriteDebugLog("Switch To Cam2"); +} + catch (...) + { + AfxMessageBox("2 쳣!");//һ + }*/ + +} + + +void DlgHawkvisCamera::OnBnClickedTestDefinition() +{ +#ifdef __HAWKVIS_MINDVISION_CCD__ + if (m_pHawkvisCtrl->MV_GetOneFrame()) +#else + if (m_HawkvisCtrl.HV_GetOneFrame()) +#endif + { + m_pHawkvisCtrl->ZoomFitWindow(); + gLogMgr->WriteDebugLog("Hawkvis : FrameOne --OK"); + } + else + { + gLogMgr->WriteDebugLog("Hawkvis : FrameOne --ERR"); + m_CurPic_Definition = 0; + PostMessage(WM_UPDATE_FALSE); + return; + } + + CFileMgr fg; + CString path = fg.GetWorkPath(); + m_pHawkvisCtrl->WriteImage((LPCTSTR)path, "PicForDefinition"); + Sleep(50); + path += "\\PicForDefinition.bmp"; + Mat imageSource = imread((LPCTSTR)path); + + /*Mat imageGray; + cvtColor(imageSource, imageGray, CV_RGB2GRAY);*/ + Mat imageSobel; + //Laplacian(imageSource, imageSobel, CV_16U); + Sobel(imageSource, imageSobel, CV_16U, 1, 1); + m_CurPic_Definition = mean(imageSobel)[0]; + PostMessage(WM_UPDATE_FALSE); +} + +bool DlgHawkvisCamera::bCurPicDefinitionOK() +{ + m_CurTrackThreshold = 0; + auto FileName = gProgramCutMgr->GetCurOpenFileName(); + if (FileName.IsEmpty()) + return true; + CString nameTail; + nameTail.Format("_T%d.def", m_DlgCurCamIndex); + CSmartArchive ar(FileName + nameTail, false); + ar + m_CurTrackThreshold; + + OnBnClickedTestDefinition(); + + if (m_CurTrackThreshold > 0.1) + { + if (m_CurPic_Definition < m_CurTrackThreshold) + return false; + } + return true; +} + + +void DlgHawkvisCamera::OnBnClickedSetThreshold() +{ + UpdateData(TRUE); + + auto FileName = gProgramCutMgr->GetCurOpenFileName(); + if (FileName.IsEmpty()) + return; + CString nameTail; + nameTail.Format("_T%d.def", m_DlgCurCamIndex); + CSmartArchive ar(FileName + nameTail, true); + ar + m_CurTrackThreshold; +} diff --git a/LaiPuLaser/DlgDnCutCamera.h b/LaiPuLaser/DlgDnCutCamera.h new file mode 100644 index 0000000..4d1db8a --- /dev/null +++ b/LaiPuLaser/DlgDnCutCamera.h @@ -0,0 +1,88 @@ +#pragma once +#include "Observer.h" +#include "DlgPane.h" +#include "MyBttom.h" +#include "hawkvisctrlctrl1.h" +#include "afxwin.h" + +#define WM_UPDATE_FALSE (WM_USER+200) + +class DlgHawkvisCamera : public CDlgPane, public CObserver +{ + DECLARE_DYNAMIC(DlgHawkvisCamera) + friend class CCameraHawkvis; +public: + DlgHawkvisCamera(CWnd* pParent = NULL); // ׼캯 + virtual ~DlgHawkvisCamera(); + virtual UINT GetIDD() { return DlgHawkvisCamera::IDD; }; + virtual void Update(); + // Ի + enum { IDD = IDD_CAMERA_DLG }; +private: + CMyBttom m_ISP3000LogoBtn;//log ť,ûʲôô + int m_nExpore;//عֵ0 ~ 2000000 + + CHawkvisctrlctrl1* m_pHawkvisCtrl;//ӾĿؼָ + CHawkvisctrlctrl1 m_HawkvisCtrl1;//ӾĿؼ + CHawkvisctrlctrl1 m_HawkvisCtrl2;//ӾĿؼ + int m_DlgCurCamIndex=-1; + int m_ShapeModelID = -1; + + CMyBttom m_OpenCamBtn; + CMyBttom m_CloseCamBtn; + CMyBttom m_OneFrameBtn; + CMyBttom m_ContinueFrameBtn; + CMyBttom m_ReadBmpBtn; + CMyBttom m_SaveBmpBtn; + CMyBttom m_SetExpBtn; + CMyBttom m_ZoomInBtn; + CMyBttom m_ZoomOutBtn; + CMyBttom m_ZoomFullBtn; + CMyBttom m_ReadTempBtn; + CMyBttom m_EditTempBtn; + CMyBttom m_TestTempBtn; + CMyBttom m_SaveTempBtn; + CMyBttom m_TestDefinitionBtn; + CMyBttom m_SetThresholdBtn; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + afx_msg LRESULT OnUpdateFalse(WPARAM wPar,LPARAM lPar) { UpdateData(FALSE); return 0; }; + DECLARE_MESSAGE_MAP() +public: + +private: + void UpdateInfo(); +public: + + afx_msg void OnBnClickedOpenCam(); + afx_msg void OnBnClickedFrameOne(); + afx_msg void OnBnClickedFrameContinue(); + afx_msg void OnBnClickedReadBmp(); + afx_msg void OnBnClickedSaveBmp(); + afx_msg void OnBnClickedCreatCatchTemp(); + afx_msg void OnBnClickedSetExpore(); + afx_msg void OnBnClickedZoomFull(); + afx_msg void OnBnClickedHkZoomIn(); + afx_msg void OnBnClickedHkZoomOut(); + afx_msg void OnBnClickedCloseCam(); + afx_msg void OnBnClickedTestCatchTemp(); + afx_msg void OnBnClickedLoadCatchTemp(); + afx_msg void OnBnClickedSaveCatchTemp(); + afx_msg void OnBnClickedToCam1(); + afx_msg void OnBnClickedToCam2(); + afx_msg void OnBnClickedTestDefinition(); + + + bool bCurPicDefinitionOK();//жǰͼƬǷϸ + + afx_msg void OnBnClickedSetThreshold(); + + float m_CurPic_Definition; + float m_CurTrackThreshold; + +}; + +extern DlgHawkvisCamera *gDlgHawkvisCamera; + diff --git a/LaiPuLaser/DlgFill.cpp b/LaiPuLaser/DlgFill.cpp new file mode 100644 index 0000000..e9d0c6d --- /dev/null +++ b/LaiPuLaser/DlgFill.cpp @@ -0,0 +1,76 @@ +// + +#include "stdafx.h" +#include "DlgFill.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "CommandModifiFill.h" +#include "CommandMgr.h" + +IMPLEMENT_DYNAMIC(CDlgFill, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgFill, CDialogEx) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +ON_BN_CLICKED(IDC_DEL_FILL, &CDlgFill::OnBnClickedDelFill) +END_MESSAGE_MAP() + +CDlgFill::CDlgFill(SFillPar FontPar,CWnd* pParent) + : CDialogEx(CDlgFill::IDD,pParent),m_OldPar(FontPar) +{ + m_NewPar = m_OldPar; +} +CDlgFill::~CDlgFill() +{ +} +void CDlgFill::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_FILL_GAP, m_NewPar.m_FillGap); + DDX_Text(pDX, IDC_FILL_ANGLE, m_NewPar.m_FillAngle); +} +BOOL CDlgFill::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + UpdateData(FALSE); + return TRUE; +} + +// +bool CDlgFill::CheckInput() +{ + return true; +} + +//ִ޸ָ +void CDlgFill::AddModifiCmd() +{ + CLayer &layer = GetLayerInstance(); + if(layer.HasObjSel()) + { + CCommandModifiFill *pCmd = new CCommandModifiFill; + pCmd->SetPar(m_OldPar,true);//ɵIJ + pCmd->SetPar(m_NewPar,false);//µIJ + + gCommandMgr.AddUndoCommand(pCmd); + pCmd->Excute(); + } +} + +void CDlgFill::OnBnClickedOk() +{ + UpdateData(TRUE); + if(!CheckInput()) + return; + m_NewPar.bFill = true; + //ִ޸ָ + AddModifiCmd(); + OnOK(); +} +//ɾ +void CDlgFill::OnBnClickedDelFill() +{ + m_NewPar.bFill = false; + //ִ޸ָ + AddModifiCmd(); + OnOK(); +} diff --git a/LaiPuLaser/DlgFill.h b/LaiPuLaser/DlgFill.h new file mode 100644 index 0000000..4c74a26 --- /dev/null +++ b/LaiPuLaser/DlgFill.h @@ -0,0 +1,32 @@ +#pragma once + +#include "afxwin.h" +#include "SFillPar.h" + + +class CDlgFill : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgFill) + +public: + CDlgFill(SFillPar FontPar,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgFill(); + +// Ի + enum { IDD = IDD_FILL_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + void AddModifiCmd(); + bool CheckInput(); +private: + SFillPar m_OldPar; + SFillPar m_NewPar; +public: + afx_msg void OnBnClickedDelFill(); +}; + diff --git a/LaiPuLaser/DlgFontSet.cpp b/LaiPuLaser/DlgFontSet.cpp new file mode 100644 index 0000000..318c5c0 --- /dev/null +++ b/LaiPuLaser/DlgFontSet.cpp @@ -0,0 +1,202 @@ +// DlgValStrFixed.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgFontset.h" +#include "afxdialogex.h" +#include "CommandModifiFont.h" +#include "GlobalFunction.h" +#include "CommandMgr.h" +// CDlgValStrFixed Ի + +IMPLEMENT_DYNAMIC(CDlgFontSet, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgFontSet, CDialogEx) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +ON_BN_CLICKED(IDC_ARC_TXT_CHECK, &CDlgFontSet::OnBnClickedArcTxtCheck) +ON_BN_CLICKED(IDC_GAP_TYPE1, &CDlgFontSet::OnBnClickedGapType1) +ON_BN_CLICKED(IDC_GAP_TYPE2, &CDlgFontSet::OnBnClickedGapType2) +END_MESSAGE_MAP() + +CDlgFontSet::CDlgFontSet(SFontPar FontPar,CWnd* pParent) + : CDialogEx(CDlgFontSet::IDD,pParent),m_FontPar(FontPar) +{ + m_FontParTmp = m_FontPar; +} +CDlgFontSet::~CDlgFontSet() +{ +} +void CDlgFontSet::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_CHAR_GAP, m_FontParTmp.m_CharGap); + DDX_Text(pDX, IDC_ARC_RADIUS, m_FontParTmp.m_ArcRadius); + DDX_Text(pDX, IDC_CHAR_HEIGHT, m_FontParTmp.m_CharHeight); + DDX_Text(pDX, IDC_ITALIC_ANGLE, m_FontParTmp.m_ItalicAngle); + DDX_Text(pDX, IDC_ARC_ANGLE, m_FontParTmp.m_ArcAngle); + + DDX_Control(pDX, IDC_ARC_TXT_CHECK, m_bArcCheck); + DDX_Control(pDX, IDC_REVERSE_COMBO, m_bReverseComb); + DDX_Control(pDX, IDC_DIR_COMBO, m_bDirectComb); + + DDX_Control(pDX, IDC_IN_OUT_SIDE_COB, m_bOutDirComb); + DDX_Control(pDX, IDC_ARC_RADIUS, m_ArcRadiusEdit); + DDX_Control(pDX, IDC_ARC_ANGLE, m_ArcAngleEdit); + + +} +BOOL CDlgFontSet::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_bArcCheck.SetCheck(m_FontParTmp.m_bArc); + + IniGapTypeRadio(); + + EnableArcTxtCtr(m_FontParTmp.m_bArc); + IniReverseComb(m_FontParTmp.m_bReverse); + IniOutDirComb(m_FontParTmp.m_bOutDir); + IniDirComb(m_FontParTmp.m_bVertical); + + UpdateData(FALSE); + return TRUE; +} +void CDlgFontSet::IniGapTypeRadio() +{ + if(m_FontParTmp.m_GapType ==SFontPar::_Center) + { + ((CButton *)GetDlgItem(IDC_GAP_TYPE1))->SetCheck(TRUE); + } + else + { + ((CButton *)GetDlgItem(IDC_GAP_TYPE2))->SetCheck(TRUE); + } + //ͼƬ + { + HBITMAP hBitmap; + hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_GAP_TYPE2)); + ((CButton *)GetDlgItem(IDC_GAP_TYPE1))->SetBitmap(hBitmap); + } + { + HBITMAP hBitmap; + hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_GAP_TYPE1)); + ((CButton *)GetDlgItem(IDC_GAP_TYPE2))->SetBitmap(hBitmap); + } +} +void CDlgFontSet::IniReverseComb(bool b) +{ + m_bReverseComb.InsertString(0,""); + m_bReverseComb.InsertString(1,""); + if(b) + { + m_bReverseComb.SetCurSel(1); + } + else + { + m_bReverseComb.SetCurSel(0); + } +} +void CDlgFontSet::IniDirComb(bool b) +{ + m_bDirectComb.InsertString(0,"ˮƽ"); + m_bDirectComb.InsertString(1,"ֱ"); + if(b) + { + m_bDirectComb.SetCurSel(1); + } + else + { + m_bDirectComb.SetCurSel(0); + } +} +void CDlgFontSet::IniOutDirComb(bool b) +{ + m_bOutDirComb.InsertString(0,""); + m_bOutDirComb.InsertString(1,""); + if(b) + { + m_bOutDirComb.SetCurSel(1); + } + else + { + m_bOutDirComb.SetCurSel(0); + } +} +// +bool CDlgFontSet::CheckInput() +{ + return true; +} +//޸ĵIJֵ +void CDlgFontSet::SetFontPar() +{ + if(m_bReverseComb.GetCurSel()==0)//Ƿ + { + m_FontParTmp.m_bReverse = false; + } + else + { + m_FontParTmp.m_bReverse = true; + } + if(m_bOutDirComb.GetCurSel()==0)//ǷΪı + { + m_FontParTmp.m_bOutDir = false; + } + else + { + m_FontParTmp.m_bOutDir = true; + } + if(m_bDirectComb.GetCurSel()==0)//ַ + { + m_FontParTmp.m_bVertical = false; + } + else + { + m_FontParTmp.m_bVertical = true; + } +} +//ִ޸ָ +void CDlgFontSet::AddModifiCmd() +{ + CCommandModifiFont *pCmd = new CCommandModifiFont; + pCmd->SetStringPar(m_FontPar,true);//ɵIJ + pCmd->SetStringPar(m_FontParTmp,false);//µIJ + + gCommandMgr.AddUndoCommand(pCmd); + pCmd->Excute(); +} +void CDlgFontSet::OnBnClickedArcTxtCheck() +{ + UpdateData(TRUE); + m_FontParTmp.m_bArc = m_bArcCheck.GetCheck(); + EnableArcTxtCtr(m_FontParTmp.m_bArc); +} +//ǷԲıصĿؼ +void CDlgFontSet::EnableArcTxtCtr(bool b) +{ + m_ArcRadiusEdit.EnableWindow(b); + m_ArcAngleEdit.EnableWindow(b); +} +//ĵΪ׼ +void CDlgFontSet::OnBnClickedGapType1() +{ + m_FontParTmp.m_GapType = SFontPar::_Center; +} +//һַұΪ׼ +void CDlgFontSet::OnBnClickedGapType2() +{ + m_FontParTmp.m_GapType = SFontPar::_Boundary; +} +void CDlgFontSet::OnBnClickedOk() +{ + UpdateData(TRUE); + if(!CheckInput()) + return; + + //޸ĵIJֵ + SetFontPar(); + + //ִ޸ָ + AddModifiCmd(); + OnOK(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgFontset.h b/LaiPuLaser/DlgFontset.h new file mode 100644 index 0000000..47532f6 --- /dev/null +++ b/LaiPuLaser/DlgFontset.h @@ -0,0 +1,46 @@ +#pragma once + +#include "ObjTxt.h" +#include "afxwin.h" + +class CDlgFontSet : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgFontSet) + +public: + CDlgFontSet(SFontPar FontPar,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgFontSet(); + +// Ի + enum { IDD = IDD_FONT_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + afx_msg void OnBnClickedArcTxtCheck(); + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + void IniReverseComb(bool b); + void IniOutDirComb(bool b); + void IniDirComb(bool b); + bool CheckInput(); + void EnableArcTxtCtr(bool b); + void IniGapTypeRadio(); + void SetFontPar(); + void AddModifiCmd(); +private: + SFontPar m_FontPar; + SFontPar m_FontParTmp; + + CComboBox m_bReverseComb;//Ƿ + CComboBox m_bDirectComb;//: ˮƽֱ + CButton m_bArcCheck;//ǷΪԲı + CComboBox m_bOutDirComb;//Ƿ + //ڿؼ--------------------------------------- + CEdit m_ArcRadiusEdit; + CEdit m_ArcAngleEdit; +public: + afx_msg void OnBnClickedGapType1(); + afx_msg void OnBnClickedGapType2(); +}; diff --git a/LaiPuLaser/DlgMarkArea.cpp b/LaiPuLaser/DlgMarkArea.cpp new file mode 100644 index 0000000..a77c147 --- /dev/null +++ b/LaiPuLaser/DlgMarkArea.cpp @@ -0,0 +1,397 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgMarkArea.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "MsgBox.h" +#include "LogMgr.h" +#include "ObjComponentMgr.h" +#include "AuthorityMgr.h" +#include "FileMgr.h" +#include "EnumDirection.h" +#include "MarkAreaMgr.h" +#include "Mirror.h" + + + +IMPLEMENT_DYNAMIC(CDlgMarkArea, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgMarkArea, CDialogEx) + ON_BN_CLICKED(IDC_NEW, &CDlgMarkArea::OnBnClickedNew) + ON_BN_CLICKED(IDC_DELETE, &CDlgMarkArea::OnBnClickedDelete) + ON_BN_CLICKED(IDC_COMMIT, &CDlgMarkArea::OnBnClickedCommit) + ON_BN_CLICKED(IDC_UP_BTN, &CDlgMarkArea::OnBnClickedUpBtn) + ON_BN_CLICKED(IDC_DOWN_BTN, &CDlgMarkArea::OnBnClickedDownBtn) + ON_BN_CLICKED(IDC_LEFT_BTN, &CDlgMarkArea::OnBnClickedLeftBtn) + ON_BN_CLICKED(IDC_RIGHT_BTN, &CDlgMarkArea::OnBnClickedRightBtn) + ON_NOTIFY(NM_CLICK, IDC_BASE_OBJ_LIST, &CDlgMarkArea::OnNMClickValStrList) + ON_BN_CLICKED(IDC_MOVE_UP, &CDlgMarkArea::OnBnClickedMoveUp) + ON_BN_CLICKED(IDC_MOVE_DOWN, &CDlgMarkArea::OnBnClickedMoveDown) + ON_BN_CLICKED(IDC_ZOOM_OUT, &CDlgMarkArea::OnBnClickedZoomOut) + ON_BN_CLICKED(IDC_ZOOM_IN, &CDlgMarkArea::OnBnClickedZoomIn) + ON_BN_CLICKED(IDC_SHOW_AREA, &CDlgMarkArea::OnBnClickedShowArea) + ON_BN_CLICKED(IDC_DEL_ALL, &CDlgMarkArea::OnBnClickedDelAll) + ON_BN_CLICKED(IDCANCEL, &CDlgMarkArea::OnBnClickedCancel) + ON_BN_CLICKED(IDOK, &CDlgMarkArea::OnBnClickedOk) + ON_BN_CLICKED(IDC_READ_FILE, &CDlgMarkArea::OnBnClickedReadFile) + ON_BN_CLICKED(IDC_SAVE_FILE, &CDlgMarkArea::OnBnClickedSaveFile) + ON_BN_CLICKED(IDC_BY_OBJ, &CDlgMarkArea::OnBnClickedByObj) + ON_BN_CLICKED(IDC_ARRAY_CREAT, &CDlgMarkArea::OnBnClickedArrayCreat) + ON_BN_CLICKED(IDC_SET_SIZE, &CDlgMarkArea::OnBnClickedSetSize) + ON_BN_CLICKED(IDC_CREAT_CROSS, &CDlgMarkArea::OnBnClickedCreatCross) +END_MESSAGE_MAP() + +CDlgMarkArea::CDlgMarkArea(CMarkAreaMgr &Mgr,CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgMarkArea::IDD, pParent),m_Mgr(Mgr) +{ + m_CntX = 4; + m_CntY = 3; +} + +CDlgMarkArea::~CDlgMarkArea() +{ + m_Mgr.SetbDrawIdx(false); + GetCurViewPtr()->RefreshView(); +} + +void CDlgMarkArea::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_LEFT_BTN, m_XLeftBtn); + DDX_Control(pDX, IDC_RIGHT_BTN, m_XRightBtn); + DDX_Control(pDX, IDC_UP_BTN, m_XTopBtn); + DDX_Control(pDX, IDC_DOWN_BTN, m_XDownBtn); + DDX_Text(pDX, IDC_MOVE_DIS, m_MoveDis); + + DDX_Control(pDX, IDC_BASE_OBJ_LIST, m_List); + DDX_Text(pDX, IDC_CENTER_X, m_CurObj.m_BasePt.x); + DDX_Text(pDX, IDC_CENTER_Y, m_CurObj.m_BasePt.y); + DDX_Text(pDX, IDC_OFFSET_X, m_CurObj.m_Offset.x); + DDX_Text(pDX, IDC_OFFSET_Y, m_CurObj.m_Offset.y); + DDX_Text(pDX, IDC_OFFSET_X2, m_CurObj.m_Offset2.x); + DDX_Text(pDX, IDC_OFFSET_Y2, m_CurObj.m_Offset2.y); + DDX_Text(pDX, IDC_AREA_W, m_CurObj.m_Size.w); + DDX_Text(pDX, IDC_AREA_H, m_CurObj.m_Size.h); + + DDX_Control(pDX, IDC_SHOW_AREA, m_ShowArea); + DDX_Text(pDX, IDC_CNT_X, m_CntX); + DDX_Text(pDX, IDC_CNT_Y, m_CntY); + DDX_Control(pDX, IDC_ALL_AREA_MOVE_CHECK, m_AllAreaMove); + +} + +BOOL CDlgMarkArea::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + m_MoveDis = 10;//ƶľ(mm) + m_XLeftBtn.LoadBitmaps(IDB_LEFT_BTN,IDB_LEFT_DOWN_BTN,IDB_LEFT_BTN,IDB_LEFT_BTN); + m_XRightBtn.LoadBitmaps(IDB_RIGHT_BTN,IDB_RIGHT_BTN_DOWN,IDB_RIGHT_BTN,IDB_RIGHT_BTN); + m_XTopBtn.LoadBitmaps(IDB_TOP_BTN,IDB_TOP_DOWN_BTN,IDB_TOP_BTN,IDB_TOP_BTN); + m_XDownBtn.LoadBitmaps(IDB_DOWN_BTN,IDB_DOWN_DOWN_BTN,IDB_DOWN_BTN,IDB_DOWN_BTN); + //ʼб + IniList(); + + + m_OldMgr = m_Mgr;//ݶ + UpdateAreaList(); + + //Ƿʾ + m_ShowArea.SetCheck(m_Mgr.GetbDraw()); + m_Mgr.SetbDrawIdx(true); + + UpdateData(FALSE); + return TRUE; +} +#if 1 +//ʼб +void CDlgMarkArea::IniList() +{ + //÷ + m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + int w = 80; + m_List.InsertColumn(idx,"",LVCFMT_CENTER,40,-1); + idx++; + m_List.InsertColumn(idx,"1ƫX",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"1ƫY",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"2ƫX",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"2ƫY",LVCFMT_CENTER,w,-1); + idx++; +} +//ˢ²б +void CDlgMarkArea::UpdateAreaList() +{ + m_List.DeleteAllItems(); + m_Mgr.InsertList(m_List); + + //бѡ + m_List.SetItemState(m_CurSelListIdx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); + m_List.SetFocus(); + + + GetCurViewPtr()->MoveViewCenter(); + GetCurViewPtr()->RefreshView(); + + UpdateData(FALSE); +} +//ȡlist ǰѡк +int CDlgMarkArea::GetCurListIdx(CListCtrl &list) +{ + POSITION pos = m_List.GetFirstSelectedItemPosition(); + if (pos == NULL) + { + return -1; + } + else + { + while (pos) + { + int nItem = m_List.GetNextSelectedItem(pos); + return nItem; + } + } + return -1; +} + +//б +void CDlgMarkArea::OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult) +{ + *pResult = 0; + AreaListEvent(); +} +//list ¼ +void CDlgMarkArea::AreaListEvent() +{ + UpdateData(TRUE); + m_CurSelListIdx=GetCurListIdx(m_List); + m_Mgr.OpArea(m_CurSelListIdx,m_CurObj,true); + m_Mgr.SetCurSelIdx(m_CurSelListIdx); + UpdateData(FALSE); + + DbSize size = m_CurObj.GetSize(); + CString LogStr; + LogStr.Format(_T("[Area size W] = [%f] ,[Area size H] = [%f]"),size.w,size.h); + gLogMgr->WriteDebugLog(LogStr); + Dbxy pt = m_CurObj.GetRealBasePt(); + LogStr.Format(_T("[RealBasePt X] = [%f] ,[RealBasePt Y] = [%f]"),pt.x,pt.y); + gLogMgr->WriteDebugLog(LogStr); + + //ʾarea Χobj + gObjComponentMgr->ResetAllMarkedState(); + gObjComponentMgr->SetMarkedStateRect(m_CurObj.GetRect(),false); + GetCurViewPtr()->RefreshView(); +} +#endif + +#if 1 +void CDlgMarkArea::OnBnClickedNew() +{ + m_Mgr.Add(); + UpdateAreaList(); +} +//ɾ +void CDlgMarkArea::OnBnClickedDelete() +{ + if(m_CurSelListIdx>=0) + { + m_Mgr.DelSel(m_CurSelListIdx); + UpdateAreaList(); + } +} +//ȫɾ +void CDlgMarkArea::OnBnClickedDelAll() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ȫɾ?"))) + { + m_Mgr.DelAll(); + UpdateAreaList(); + } +} + +//Ӧ +void CDlgMarkArea::OnBnClickedCommit() +{ + UpdateData(TRUE); + DbSize MirrorSize = gMirror->GetRange(); + if(m_CurObj.m_Size.w>MirrorSize.w || m_CurObj.m_Size.h>MirrorSize.h) + { + CMsgBox MsgBox; + CString s; + s.Format(_T("ӹ򳬳񾵷Χ[%0.0f][%0.0f]"),MirrorSize.w,MirrorSize.h); + MsgBox.Show(s); + } + m_Mgr.OpArea(m_CurSelListIdx,m_CurObj,false); + UpdateAreaList(); +} +void CDlgMarkArea::OnBnClickedMoveUp() +{ + m_Mgr.Order(m_CurSelListIdx,true); + m_Mgr.SetCurSelIdx(m_CurSelListIdx); + UpdateAreaList(); +} +void CDlgMarkArea::OnBnClickedMoveDown() +{ + m_Mgr.Order(m_CurSelListIdx,false); + m_Mgr.SetCurSelIdx(m_CurSelListIdx); + UpdateAreaList(); +} +void CDlgMarkArea::OnBnClickedUpBtn() +{ + UpdateData(TRUE); + if(m_AllAreaMove.GetCheck()) + m_Mgr.MoveAllArea(m_MoveDis,_DIR_U); + else + m_CurObj.m_BasePt.y += m_MoveDis; + UpdateData(FALSE); + OnBnClickedCommit(); +} +void CDlgMarkArea::OnBnClickedDownBtn() +{ + UpdateData(TRUE); + if(m_AllAreaMove.GetCheck()) + m_Mgr.MoveAllArea(m_MoveDis*(-1),_DIR_D); + else + m_CurObj.m_BasePt.y -= m_MoveDis; + UpdateData(FALSE); + OnBnClickedCommit(); +} +void CDlgMarkArea::OnBnClickedLeftBtn() +{ + UpdateData(TRUE); + if(m_AllAreaMove.GetCheck()) + m_Mgr.MoveAllArea(m_MoveDis*(-1),_DIR_L); + else + m_CurObj.m_BasePt.x -= m_MoveDis; + UpdateData(FALSE); + OnBnClickedCommit(); +} +void CDlgMarkArea::OnBnClickedRightBtn() +{ + UpdateData(TRUE); + if(m_AllAreaMove.GetCheck()) + m_Mgr.MoveAllArea(m_MoveDis,_DIR_R); + else + m_CurObj.m_BasePt.x += m_MoveDis; + UpdateData(FALSE); + OnBnClickedCommit(); +} +#endif +#if 1 +void CDlgMarkArea::OnBnClickedZoomOut() +{ + GetCurViewPtr()->OnZoomOut(); +} +void CDlgMarkArea::OnBnClickedZoomIn() +{ + GetCurViewPtr()->OnZoomIn(); +} +void CDlgMarkArea::OnBnClickedShowArea() +{ + UpdateData(TRUE); + m_Mgr.SetbDraw(m_ShowArea.GetCheck()); + GetCurViewPtr()->RefreshView(); +} +#endif + + +#if 1 +void CDlgMarkArea::OnBnClickedCancel() +{ + m_Mgr = m_OldMgr;//ָ + m_Mgr.SetCurSelIdx(-1); + CDialogEx::OnCancel(); +} + + +void CDlgMarkArea::OnBnClickedOk() +{ + m_Mgr.SaveOrLoad(true);//дļ + m_Mgr.SetCurSelIdx(-1); + CDialogEx::OnOK(); +} + +//ⲿļָ +void CDlgMarkArea::OnBnClickedReadFile() +{ + TCHAR szFilters[]=("PAR ļ(*.par)|*.par"); + CFileDialog dlg(TRUE,("par"),("ParFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + CFile file; + if(file.Open(dlg.GetPathName(),CFile::modeRead)) + { + CArchive ar(&file,CArchive::load); + m_Mgr.SaveOrLoadExt(ar); + file.Close(); + UpdateAreaList(); + } + else + { + gLogMgr->WriteDebugLog(_T("ļȡʧ"), _LOG_ERROR); + } + } +} + +//浽ⲿļ +void CDlgMarkArea::OnBnClickedSaveFile() +{ + TCHAR szFilters[]=("PAR ļ(*.par)|*.par"); + CFileDialog dlg(FALSE,("par"),("ParFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + CFile file(dlg.GetPathName(),CFile::modeReadWrite|CFile::modeCreate); + CArchive ar(&file,CArchive::store); + m_Mgr.SaveOrLoadExt(ar); + } +} +#endif + + +void CDlgMarkArea::OnBnClickedByObj() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("Creat By Obj?"))) + { + m_Mgr.DelAll(); + gObjComponentMgr->CreatAreaByObj(m_Mgr); + UpdateAreaList(); + } +} +//Ͻǿʼarea +void CDlgMarkArea::OnBnClickedArrayCreat() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("Զ?"))) + { + UpdateData(TRUE); + m_Mgr.ArrayCreat(m_CntX,m_CntY); + UpdateAreaList(); + } +} + + +void CDlgMarkArea::OnBnClickedSetSize() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("³ߴ?"))) + { + gMarkAreaMgr->SetAllMarkSize(); + UpdateAreaList(); + } +} + + +void CDlgMarkArea::OnBnClickedCreatCross() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ÿĴһʮ?"))) + { + gMarkAreaMgr->CreatCenterCrossObj(); + GetCurViewPtr()->RefreshView(); + } +} diff --git a/LaiPuLaser/DlgMarkArea.h b/LaiPuLaser/DlgMarkArea.h new file mode 100644 index 0000000..481806d --- /dev/null +++ b/LaiPuLaser/DlgMarkArea.h @@ -0,0 +1,68 @@ +#pragma once +#include "MarkAreaMgr.h" + +class CDlgMarkArea : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgMarkArea) + +public: + CDlgMarkArea(CMarkAreaMgr &Mgr,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgMarkArea(); + +// Ի + enum { IDD = IDD_MARK_AREA }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + afx_msg void OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult); + DECLARE_MESSAGE_MAP() +private: + void IniList(); + void UpdateAreaList(); + int GetCurListIdx(CListCtrl &list); + void AreaListEvent(); +private: + CMarkAreaMgr &m_Mgr; + CMarkAreaMgr m_OldMgr;//޸֮ǰĶڻָ + + CMarkArea m_CurObj;//ǰѡ + CListCtrl m_List; + int m_CurSelListIdx;//ǰѡк + + + CBitmapButton m_XLeftBtn; //ƽ̨ưť + CBitmapButton m_XRightBtn; //ƽ̨ưť + CBitmapButton m_XTopBtn; //ƽ̨ưť + CBitmapButton m_XDownBtn; //ƽ̨ưť + double m_MoveDis;//ƶľ(mm) + + bool m_bShowArea;//Ƿʾarea + CButton m_ShowArea; + CButton m_AllAreaMove; + //Զarea + int m_CntX; + int m_CntY; +public: + afx_msg void OnBnClickedNew(); + afx_msg void OnBnClickedDelete(); + afx_msg void OnBnClickedCommit(); + afx_msg void OnBnClickedUpBtn(); + afx_msg void OnBnClickedDownBtn(); + afx_msg void OnBnClickedLeftBtn(); + afx_msg void OnBnClickedRightBtn(); + afx_msg void OnBnClickedMoveUp(); + afx_msg void OnBnClickedMoveDown(); + afx_msg void OnBnClickedZoomOut(); + afx_msg void OnBnClickedZoomIn(); + afx_msg void OnBnClickedShowArea(); + afx_msg void OnBnClickedDelAll(); + afx_msg void OnBnClickedCancel(); + afx_msg void OnBnClickedOk(); + afx_msg void OnBnClickedReadFile(); + afx_msg void OnBnClickedSaveFile(); + afx_msg void OnBnClickedByObj(); + afx_msg void OnBnClickedArrayCreat(); + afx_msg void OnBnClickedSetSize(); + afx_msg void OnBnClickedCreatCross(); +}; diff --git a/LaiPuLaser/DlgMarkPar.cpp b/LaiPuLaser/DlgMarkPar.cpp new file mode 100644 index 0000000..9a46ccf --- /dev/null +++ b/LaiPuLaser/DlgMarkPar.cpp @@ -0,0 +1,158 @@ + +#include "stdafx.h" +#include "DlgMarkPar.h" +#include "afxdialogex.h" +#include "MarkParMgr.h" +#include "GlobalFunction.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" +#include "MarkCtrl.h" +#include "LaipuVbDllMgr.h" + + + + + +IMPLEMENT_DYNAMIC(CDlgMarkPar, CDialogEx) + +CDlgMarkPar::CDlgMarkPar(CWnd* pParent /*=NULL*/) +{ + m_CurPen = 0;//ǰʺ +} + +CDlgMarkPar::~CDlgMarkPar() +{ +} + +void CDlgMarkPar::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_PAR_LIST, m_PenList); + DDX_Text(pDX, IDC_CUR_PEN, m_CurPen); + DDX_Text(pDX, IDC_MS, m_CurPar.ms); + DDX_Text(pDX, IDC_MMS, m_CurPar.mms); + DDX_Text(pDX, IDC_TOF, m_CurPar.tof); + DDX_Text(pDX, IDC_TOH, m_CurPar.toh); + DDX_Text(pDX, IDC_TCF, m_CurPar.tcf); + DDX_Text(pDX, IDC_TCH, m_CurPar.tch); + DDX_Text(pDX, IDC_DR, m_CurPar.dr_time); + DDX_Text(pDX, IDC_LASER_FRE, m_CurPar.laserfre); + DDX_Text(pDX, IDC_LASER_POWER, m_CurPar.laserpower); +} +BEGIN_MESSAGE_MAP(CDlgMarkPar, CDialogEx) + ON_NOTIFY(NM_CLICK, IDC_PAR_LIST, &CDlgMarkPar::OnNMClickParList) + ON_NOTIFY(NM_CUSTOMDRAW, IDC_PAR_LIST, OnCustomdrawMyList) + ON_BN_CLICKED(IDC_COMMIT, &CDlgMarkPar::OnBnClickedCommit) +END_MESSAGE_MAP() + +// CDlgStdMarkCtr Ϣ +BOOL CDlgMarkPar::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + IniPenList(); + UpdatePenList(); + + gMarkParMgr->SaveOrLoad(false);//ļȡ + gMarkParMgr->SetCurPenNum(m_CurPen); + + UpdatePar(); + UpdateData(FALSE); + return TRUE; +} +#if 1 +void CDlgMarkPar::IniPenList() +{ + //÷ + m_PenList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + m_PenList.InsertColumn(idx,"ʺ",LVCFMT_CENTER,50,-1); + idx++; + m_PenList.InsertColumn(idx,"ɫ",LVCFMT_CENTER,90,-1); +} +void CDlgMarkPar::UpdatePenList() +{ + m_PenList.DeleteAllItems(); + gMarkParMgr->InsertToList(m_PenList); +} +void CDlgMarkPar::UpdatePar() +{ + m_CurPar = gMarkParMgr->GetPen(m_CurPen); + UpdateData(FALSE); +} +void CDlgMarkPar::OnNMClickParList(NMHDR *pNMHDR, LRESULT *pResult) +{ + LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); + *pResult = 0; + + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + UpdateData(TRUE); + m_CurPen=GetCurListIdx(m_PenList); + gMarkParMgr->SetCurPenNum(m_CurPen); + m_CurPar = gMarkParMgr->GetPen(m_CurPen); + UpdateData(FALSE); + } +} +//ȡlist ǰѡк +int CDlgMarkPar::GetCurListIdx(CListCtrl &list) +{ + POSITION pos = list.GetFirstSelectedItemPosition(); + if (pos == NULL) + { + return -1; + } + else + { + while (pos) + { + int nItem = list.GetNextSelectedItem(pos); + return nItem; + } + } + return -1; +} +//ñʺŶӦɫ +void CDlgMarkPar::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult ) +{ + NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR ); + *pResult = CDRF_DODEFAULT; + if( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) + { + *pResult = CDRF_NOTIFYITEMDRAW; + } + else if( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) + { + *pResult = CDRF_NOTIFYSUBITEMDRAW; + } + else if((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage ) + { + COLORREF crText, crBkgnd; + if(1 == pLVCD->iSubItem) + { + crText = RGB_BLACK; + crBkgnd = gMarkParMgr->GetPenColor(pLVCD->nmcd.dwItemSpec); + } + else + { + crText = RGB_BLACK; + crBkgnd = RGB_WHITE; + } + pLVCD->clrText = crText; + pLVCD->clrTextBk = crBkgnd; + + *pResult = CDRF_DODEFAULT; + } +} +#endif +//浱ǰʵIJ +void CDlgMarkPar::OnBnClickedCommit() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + gMarkParMgr->SaveCurPen(m_CurPen,m_CurPar); + CMsgBox MsgBox; + MsgBox.Show("ѱ",false); +} diff --git a/LaiPuLaser/DlgMarkPar.h b/LaiPuLaser/DlgMarkPar.h new file mode 100644 index 0000000..31e389f --- /dev/null +++ b/LaiPuLaser/DlgMarkPar.h @@ -0,0 +1,33 @@ +#pragma once + +#include "DlgPane.h" +#include "MarkPar.h" + + +class CDlgMarkPar : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgMarkPar) +public: + CDlgMarkPar(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgMarkPar(); + virtual UINT GetIDD(){return CDlgMarkPar::IDD;}; + void UpdatePar(); +// Ի + enum { IDD = IDD_MARK_PAR }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult ); + afx_msg BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + void IniPenList(); + void UpdatePenList(); + int GetCurListIdx(CListCtrl &list); +private: + CListCtrl m_PenList;//ʺб + int m_CurPen;//ǰʺ + CMarkPar m_CurPar;//ǰõIJ +public: + afx_msg void OnNMClickParList(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnBnClickedCommit(); +}; diff --git a/LaiPuLaser/DlgObjComponent.cpp b/LaiPuLaser/DlgObjComponent.cpp new file mode 100644 index 0000000..5aea246 --- /dev/null +++ b/LaiPuLaser/DlgObjComponent.cpp @@ -0,0 +1,237 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgObjComponent.h" +#include "DlgObjComponentArr.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "TemplateMgr.h" +#include "MsgBox.h" +#include "MeasureMgr.h" +#include "ProductMgr.h" + + + +IMPLEMENT_DYNAMIC(CDlgObjComponent, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgObjComponent, CDialogEx) + ON_BN_CLICKED(IDC_NEW, &CDlgObjComponent::OnBnClickedNew) + ON_BN_CLICKED(IDC_DELETE, &CDlgObjComponent::OnBnClickedDelete) + ON_BN_CLICKED(IDC_COMMIT, &CDlgObjComponent::OnBnClickedCommit) + ON_NOTIFY(NM_CLICK, IDC_BASE_OBJ_LIST, &CDlgObjComponent::OnNMClickValStrList) + ON_BN_CLICKED(ID_OK, &CDlgObjComponent::OnBnClickedOk) + ON_BN_CLICKED(IDC_ZOOM_IN, &CDlgObjComponent::OnBnClickedZoomIn) + ON_BN_CLICKED(IDC_ZOOM_OUT, &CDlgObjComponent::OnBnClickedZoomOut) + ON_BN_CLICKED(IDCANCEL, &CDlgObjComponent::OnBnClickedCancel) + ON_BN_CLICKED(IDC_ARRAY_INFO, &CDlgObjComponent::OnBnClickedArrayInfo) + ON_BN_CLICKED(IDC_RADIO_CIRCLE, &CDlgObjComponent::OnBnClickedRadioCircle) + ON_BN_CLICKED(IDC_RADIO_RECT, &CDlgObjComponent::OnBnClickedRadioRect) +END_MESSAGE_MAP() + +CDlgObjComponent::CDlgObjComponent(CObjComponentMgr &Mgr,CWnd* pParent) +: CDialogEx(CDlgObjComponent::IDD, pParent),m_ObjComponentMgr(Mgr) +{ + m_DefualtAng = 0; +} + +CDlgObjComponent::~CDlgObjComponent() +{ + m_ObjComponentMgr.SetDrawBase(false); + GetCurViewPtr()->RefreshView(); +} + +void CDlgObjComponent::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_BASE_OBJ_LIST, m_List); + DDX_Text(pDX, IDC_CENTER_X, m_CurObj.m_BasePt.x); + DDX_Text(pDX, IDC_CENTER_Y, m_CurObj.m_BasePt.y); + DDX_Text(pDX, IDC_WIDTH, m_CurObj.m_Size.w); + DDX_Text(pDX, IDC_HEIGHT, m_CurObj.m_Size.h); + DDX_Text(pDX, IDC_DEFAULT_ANG, m_DefualtAng); +} + +BOOL CDlgObjComponent::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_ObjComponentMgr.SetDrawAllObj(true); + m_ObjComponentMgrBak = m_ObjComponentMgr;//޸֮ǰϢ + m_ObjComponentMgr.SetDrawBase(true); + + //ʼб + IniList(); + + //ˢб + UpdateAreaList(); + + gTemplateMgr->ClearTempNull(); + gTemplateMgr->BindNullTemp(); + GetCurViewPtr()->RefreshView(); + + m_DefualtAng = AngleTo360(m_ObjComponentMgr.GetDefaultAng());//ĬϽǶ + + UpdateData(FALSE); + return TRUE; +} +#if 1 +//ʼб +void CDlgObjComponent::IniList() +{ + //÷ + m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + int w = 60; + m_List.InsertColumn(idx,"",LVCFMT_CENTER,50,-1); + idx++; + m_List.InsertColumn(idx,"X",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"Y",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"",LVCFMT_CENTER,w,-1); + idx++; + m_List.InsertColumn(idx,"߶",LVCFMT_CENTER,w,-1); + idx++; +} +//ˢб +void CDlgObjComponent::UpdateAreaList() +{ + m_List.DeleteAllItems(); + m_ObjComponentMgr.InsertList(m_List); + + //бѡ + m_List.SetItemState(m_CurSelListIdx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); + m_List.SetFocus(); + + GetCurViewPtr()->RefreshView(); + + UpdateData(FALSE); +} +//ȡlist ǰѡк +int CDlgObjComponent::GetCurListIdx(CListCtrl &list) +{ + POSITION pos = m_List.GetFirstSelectedItemPosition(); + if (pos == NULL) + { + return -1; + } + else + { + while (pos) + { + int nItem = m_List.GetNextSelectedItem(pos); + return nItem; + } + } + return -1; +} + +//б +void CDlgObjComponent::OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult) +{ + *pResult = 0; + AreaListEvent(); + SetCtrlState(); +} +//list ¼ +void CDlgObjComponent::AreaListEvent() +{ + UpdateData(TRUE); + m_CurSelListIdx=GetCurListIdx(m_List); + m_ObjComponentMgr.OpArea(m_CurSelListIdx,m_CurObj,true); + m_ObjComponentMgr.SetCurSelIdx(m_CurSelListIdx); + UpdateData(FALSE); + GetCurViewPtr()->RefreshView(); +} +#endif + +#if 1 +//½obj +void CDlgObjComponent::OnBnClickedNew() +{ + m_ObjComponentMgr.AddBaseComponent(); + UpdateAreaList(); +} +void CDlgObjComponent::OnBnClickedDelete() +{ + if(m_CurSelListIdx>=0) + { + m_ObjComponentMgr.DelSel(m_CurSelListIdx); + UpdateAreaList(); + } +} +//޸Ļ׼Ԫ +void CDlgObjComponent::OnBnClickedCommit() +{ + UpdateData(TRUE); + m_ObjComponentMgr.OpArea(m_CurSelListIdx,m_CurObj,false); + m_ObjComponentMgr.Array(); + UpdateAreaList(); +} +#endif +#if 1//۲ +void CDlgObjComponent::OnBnClickedZoomOut() +{ + GetCurViewPtr()->OnZoomOut(); +} +void CDlgObjComponent::OnBnClickedZoomIn() +{ + GetCurViewPtr()->OnZoomIn(); +} +#endif + +#if 1 +void CDlgObjComponent::OnBnClickedOk() +{ + //޸Ļ׼Ԫ + OnBnClickedCommit(); + OnOK(); +} +void CDlgObjComponent::OnBnClickedCancel() +{ + m_ObjComponentMgr = m_ObjComponentMgrBak;//ָ + CDialogEx::OnCancel(); +} +#endif + +#if 1 +//ԭϢ +void CDlgObjComponent::OnBnClickedArrayInfo() +{ + CDlgObjComponentArr dlg(m_ObjComponentMgr); + dlg.DoModal(); +} +#endif + +#if 1 +void CDlgObjComponent::SetCtrlState() +{ + if(m_CurObj.IsCircle()) + { + ((CButton *)GetDlgItem(IDC_RADIO_CIRCLE))->SetCheck(true); + ((CButton *)GetDlgItem(IDC_RADIO_RECT))->SetCheck(false); + GetDlgItem(IDC_OBJ_W)->SetWindowText("ֱ"); + GetDlgItem(IDC_OBJ_H)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_HEIGHT)->ShowWindow(SW_HIDE); + } + else + { + ((CButton *)GetDlgItem(IDC_RADIO_RECT))->SetCheck(true); + ((CButton *)GetDlgItem(IDC_RADIO_CIRCLE))->SetCheck(false); + GetDlgItem(IDC_OBJ_W)->SetWindowText(""); + GetDlgItem(IDC_OBJ_H)->ShowWindow(SW_SHOW); + GetDlgItem(IDC_HEIGHT)->ShowWindow(SW_SHOW); + } + UpdateData(FALSE); +} +void CDlgObjComponent::OnBnClickedRadioCircle() +{ + m_CurObj.SetIsCircle(true); + SetCtrlState(); +} +void CDlgObjComponent::OnBnClickedRadioRect() +{ + m_CurObj.SetIsCircle(false); + SetCtrlState(); +} +#endif diff --git a/LaiPuLaser/DlgObjComponent.h b/LaiPuLaser/DlgObjComponent.h new file mode 100644 index 0000000..d075b24 --- /dev/null +++ b/LaiPuLaser/DlgObjComponent.h @@ -0,0 +1,44 @@ +#pragma once +#include "ObjComponentMgr.h" + +class CDlgObjComponent : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgObjComponent) + +public: + CDlgObjComponent(CObjComponentMgr &Mgr,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgObjComponent(); + +// Ի + enum { IDD = IDD_OBJ_COMPONENT__DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + afx_msg void OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult); + DECLARE_MESSAGE_MAP() +private: + void IniList(); + void UpdateAreaList(); + int GetCurListIdx(CListCtrl &list); + void AreaListEvent(); + void SetCtrlState(); +private: + CObjComponentMgr &m_ObjComponentMgr; + CObjComponentMgr m_ObjComponentMgrBak;//֮ǰĶڻָ + CObjComponent m_CurObj;//ǰѡ + CListCtrl m_List; + int m_CurSelListIdx;//ǰѡк + double m_DefualtAng;//ƷĬϵĽǶ +public: + afx_msg void OnBnClickedNew(); + afx_msg void OnBnClickedDelete(); + afx_msg void OnBnClickedCommit(); + afx_msg void OnBnClickedOk(); + afx_msg void OnBnClickedZoomIn(); + afx_msg void OnBnClickedZoomOut(); + afx_msg void OnBnClickedCancel(); + afx_msg void OnBnClickedArrayInfo(); + afx_msg void OnBnClickedRadioCircle(); + afx_msg void OnBnClickedRadioRect(); +}; diff --git a/LaiPuLaser/DlgObjComponentArr.cpp b/LaiPuLaser/DlgObjComponentArr.cpp new file mode 100644 index 0000000..180d19a --- /dev/null +++ b/LaiPuLaser/DlgObjComponentArr.cpp @@ -0,0 +1,196 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgObjComponentArr.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" + + +IMPLEMENT_DYNAMIC(CDlgObjComponentArr, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgObjComponentArr, CDialogEx) + ON_BN_CLICKED(ID_OK, &CDlgObjComponentArr::OnBnClickedOk) + ON_BN_CLICKED(IDC_ZOOM_IN, &CDlgObjComponentArr::OnBnClickedZoomIn) + ON_BN_CLICKED(IDC_ZOOM_OUT, &CDlgObjComponentArr::OnBnClickedZoomOut) + ON_BN_CLICKED(IDC_USE_AREA, &CDlgObjComponentArr::OnBnClickedUseArea) + ON_BN_CLICKED(IDC_RECT, &CDlgObjComponentArr::OnBnClickedRect) + ON_BN_CLICKED(IDC_CIRCLE, &CDlgObjComponentArr::OnBnClickedCircle) + ON_BN_CLICKED(IDCANCEL, &CDlgObjComponentArr::OnBnClickedCancel) + ON_BN_CLICKED(IDC_RADIO_ARRAY, &CDlgObjComponentArr::OnBnClickedRadioArray) + ON_BN_CLICKED(IDC_RADIO_AUTO_ARRAY, &CDlgObjComponentArr::OnBnClickedRadioAutoArray) +END_MESSAGE_MAP() + +CDlgObjComponentArr::CDlgObjComponentArr(CObjComponentMgr &Mgr,CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgObjComponentArr::IDD, pParent),m_ObjComponentMgr(Mgr) +{ + m_AutoArrOffset = 0; +} + +CDlgObjComponentArr::~CDlgObjComponentArr() +{ + GetCurViewPtr()->RefreshView(); +} + +void CDlgObjComponentArr::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + + DDX_Text(pDX, IDC_OFFSET_X, m_OffsetX); + DDX_Text(pDX, IDC_OFFSET_Y, m_OffsetY); + DDX_Text(pDX, IDC_AREA_CENTER_X, m_AreaBasePt.x); + DDX_Text(pDX, IDC_AREA_CENTER_Y, m_AreaBasePt.y); + DDX_Text(pDX, IDC_AREA_WIDTH, m_AreaSize.w); + DDX_Text(pDX, IDC_AREA_HEIGHT, m_AreaSize.h); + DDX_Text(pDX, IDC_AREA_DIA, m_AreaRadius); + + DDX_Control(pDX, IDC_USE_AREA, m_UseArea); + DDX_Text(pDX, IDC_CNT_X_Z, m_ArrayXcntZ); + DDX_Text(pDX, IDC_CNT_X_F, m_ArrayXcntF); + DDX_Text(pDX, IDC_CNT_Y_Z, m_ArrayYcntZ); + DDX_Text(pDX, IDC_CNT_Y_F, m_ArrayYcntF); + DDX_Text(pDX, IDC_AUTO_ARR_OFFSET, m_AutoArrOffset); +} + +BOOL CDlgObjComponentArr::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_ObjComponentMgrBak = m_ObjComponentMgr;//޸֮ǰϢ + + m_ArrayXcntZ = m_ObjComponentMgr.m_ArrayXcntZ;//X + m_ArrayXcntF = m_ObjComponentMgr.m_ArrayXcntF;//X + m_ArrayYcntZ = m_ObjComponentMgr.m_ArrayYcntZ;//Y + m_ArrayYcntF = m_ObjComponentMgr.m_ArrayYcntF;//Y + m_OffsetX = m_ObjComponentMgr.m_OffsetX;//X + m_OffsetY = m_ObjComponentMgr.m_OffsetY;//Y + //޶ԪķΧ + m_bUseArea = m_ObjComponentMgr.m_bUseArea;//Ƿʹ޶Χ + m_UseArea.SetCheck(m_bUseArea); + m_bRectArea = m_ObjComponentMgr.m_bRectArea;//true ΪηΧ,false ΪԲηΧ + m_bAutoArr = m_ObjComponentMgr.m_bAutoArray; + m_AutoArrOffset = m_ObjComponentMgr.m_AutoArrayGap; + //ÿؼ״̬ + SetCtrlState(); + + if(m_bRectArea) + { + ((CButton *)GetDlgItem(IDC_RECT))->SetCheck(TRUE); + } + else + { + ((CButton *)GetDlgItem(IDC_CIRCLE))->SetCheck(TRUE); + } + if(m_bAutoArr) + { + ((CButton *)GetDlgItem(IDC_RADIO_AUTO_ARRAY))->SetCheck(TRUE); + } + else + { + ((CButton *)GetDlgItem(IDC_RADIO_ARRAY))->SetCheck(TRUE); + } + m_AreaBasePt = m_ObjComponentMgr.m_AreaBasePt;//ΧĻ׼ + m_AreaSize = m_ObjComponentMgr.m_AreaSize;//ηΧijߴ + m_AreaRadius = m_ObjComponentMgr.m_AreaRadius;//ԲηΧֱ + + UpdateData(FALSE); + return TRUE; +} + +#if 1//۲ +void CDlgObjComponentArr::OnBnClickedZoomOut() +{ + GetCurViewPtr()->OnZoomOut(); +} +void CDlgObjComponentArr::OnBnClickedZoomIn() +{ + GetCurViewPtr()->OnZoomIn(); +} +#endif + +#if 1 +void CDlgObjComponentArr::OnBnClickedUseArea() +{ + UpdateData(TRUE); + m_bUseArea = m_UseArea.GetCheck(); +} +//ÿؼ״̬ +void CDlgObjComponentArr::SetCtrlState() +{ + GetDlgItem(IDC_AREA_WIDTH)->EnableWindow(true); + GetDlgItem(IDC_AREA_HEIGHT)->EnableWindow(true); + GetDlgItem(IDC_AREA_DIA)->EnableWindow(true); + if(m_bRectArea) + { + GetDlgItem(IDC_AREA_DIA)->EnableWindow(false); + } + else + { + GetDlgItem(IDC_AREA_WIDTH)->EnableWindow(false); + GetDlgItem(IDC_AREA_HEIGHT)->EnableWindow(false); + } + + GetDlgItem(IDC_OFFSET_X)->EnableWindow(true); + GetDlgItem(IDC_OFFSET_Y)->EnableWindow(true); + GetDlgItem(IDC_AUTO_ARR_OFFSET)->EnableWindow(true); + if(m_bAutoArr) + { + GetDlgItem(IDC_OFFSET_X)->EnableWindow(false); + GetDlgItem(IDC_OFFSET_Y)->EnableWindow(false); + } + else + { + GetDlgItem(IDC_AUTO_ARR_OFFSET)->EnableWindow(false); + } +} +void CDlgObjComponentArr::OnBnClickedRect() +{ + m_bRectArea = true; + //ÿؼ״̬ + SetCtrlState(); +} +void CDlgObjComponentArr::OnBnClickedCircle() +{ + m_bRectArea = false; + //ÿؼ״̬ + SetCtrlState(); +} +void CDlgObjComponentArr::OnBnClickedRadioArray() +{ + m_bAutoArr = false; + SetCtrlState(); +} +void CDlgObjComponentArr::OnBnClickedRadioAutoArray() +{ + m_bAutoArr = true; + SetCtrlState(); +} +#endif +#if 1 +void CDlgObjComponentArr::OnBnClickedOk() +{ + UpdateData(TRUE); + m_ObjComponentMgr.m_ArrayXcntZ = m_ArrayXcntZ;//X + m_ObjComponentMgr.m_ArrayXcntF = m_ArrayXcntF;//X + m_ObjComponentMgr.m_ArrayYcntZ = m_ArrayYcntZ;//Y + m_ObjComponentMgr.m_ArrayYcntF = m_ArrayYcntF;//Y + m_ObjComponentMgr.m_OffsetX = m_OffsetX;//X + m_ObjComponentMgr.m_OffsetY = m_OffsetY;//Y + //޶ԪķΧ + m_ObjComponentMgr.m_bUseArea = m_bUseArea;//Ƿʹ޶Χ + m_ObjComponentMgr.m_bRectArea = m_bRectArea;//true ΪηΧ,false ΪԲηΧ + m_ObjComponentMgr.m_bAutoArray = m_bAutoArr; + m_ObjComponentMgr.m_AutoArrayGap = m_AutoArrOffset; + m_ObjComponentMgr.m_AreaBasePt = m_AreaBasePt;//ΧĻ׼ + m_ObjComponentMgr.m_AreaSize = m_AreaSize;//ηΧijߴ + m_ObjComponentMgr.m_AreaRadius = m_AreaRadius;//ԲηΧֱ + //Ԫ + m_ObjComponentMgr.Array(); + + GetCurViewPtr()->RefreshView(); + OnOK(); +} +void CDlgObjComponentArr::OnBnClickedCancel() +{ + m_ObjComponentMgr = m_ObjComponentMgrBak;//ָ + CDialogEx::OnCancel(); +} +#endif diff --git a/LaiPuLaser/DlgObjComponentArr.h b/LaiPuLaser/DlgObjComponentArr.h new file mode 100644 index 0000000..e273274 --- /dev/null +++ b/LaiPuLaser/DlgObjComponentArr.h @@ -0,0 +1,53 @@ +#pragma once +#include "ObjComponentMgr.h" + +class CDlgObjComponentArr : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgObjComponentArr) + +public: + CDlgObjComponentArr(CObjComponentMgr &Mgr,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgObjComponentArr(); + +// Ի + enum { IDD = IDD_OBJ_COMPONENT_A_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + void SetCtrlState(); +private: + CObjComponentMgr &m_ObjComponentMgr; + CObjComponentMgr m_ObjComponentMgrBak;//֮ǰĶڻָ + + //Ԫ + int m_ArrayXcntZ;//X + int m_ArrayXcntF;//X + int m_ArrayYcntZ;//Y + int m_ArrayYcntF;//Y + double m_OffsetX;//X + double m_OffsetY;//Y + //޶ԪķΧ + CButton m_UseArea; + bool m_bUseArea;//Ƿʹ޶Χ + bool m_bRectArea;//true ΪηΧ,false ΪԲηΧ + Dbxy m_AreaBasePt;//ΧĻ׼ + DbSize m_AreaSize;//ηΧijߴ + double m_AreaRadius;//ԲηΧֱ + + + double m_AutoArrOffset;//ԶŲ + bool m_bAutoArr;//ǷԶŲ +public: + afx_msg void OnBnClickedZoomIn(); + afx_msg void OnBnClickedZoomOut(); + afx_msg void OnBnClickedUseArea(); + afx_msg void OnBnClickedRect(); + afx_msg void OnBnClickedCircle(); + afx_msg void OnBnClickedOk(); + afx_msg void OnBnClickedCancel(); + afx_msg void OnBnClickedRadioArray(); + afx_msg void OnBnClickedRadioAutoArray(); +}; diff --git a/LaiPuLaser/DlgObjList.cpp b/LaiPuLaser/DlgObjList.cpp new file mode 100644 index 0000000..d684a5e --- /dev/null +++ b/LaiPuLaser/DlgObjList.cpp @@ -0,0 +1,69 @@ + +#include "stdafx.h" +#include "DlgObjList.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" + +IMPLEMENT_DYNAMIC(CDlgObjList, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgObjList, CDialogEx) +END_MESSAGE_MAP() + +CDlgObjList::CDlgObjList(CWnd* pParent /*=NULL*/) +{ + +} + +CDlgObjList::~CDlgObjList() +{ +} + +void CDlgObjList::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_OBJ_LIST, m_List); +} + +// CDlgStdMarkCtr Ϣ +BOOL CDlgObjList::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + m_ObjContainer = NULL;//obj + + //ʼб + IniList(); + + UpdateData(FALSE); + return TRUE; +} +//ʼб +void CDlgObjList::IniList() +{ + //÷ + m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + m_List.InsertColumn(idx,"",LVCFMT_CENTER,45,-1); + idx++; + m_List.InsertColumn(idx,"",LVCFMT_CENTER,100,-1); + idx++; +} +//ˢ¶б +void CDlgObjList::RefreshObjList() +{ + if(NULL == m_ObjContainer) + return; + m_List.DeleteAllItems(); + + m_ObjContainer->InsertList(m_List); + UpdateData(FALSE); +} +//obj +void CDlgObjList::BindObjContainer(CObjContainer *p) +{ + if(NULL == p) + return; + + m_ObjContainer = p; + + RefreshObjList(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgObjList.h b/LaiPuLaser/DlgObjList.h new file mode 100644 index 0000000..875ce36 --- /dev/null +++ b/LaiPuLaser/DlgObjList.h @@ -0,0 +1,29 @@ +#pragma once + +#include "DlgPane.h" +#include "ObjContainer.h" + + + +class CDlgObjList : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgObjList) +public: + CDlgObjList(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgObjList(); + virtual UINT GetIDD(){return CDlgObjList::IDD;}; + + void RefreshObjList(); + void BindObjContainer(CObjContainer *p); +// Ի + enum { IDD = IDD_OBJ_LIST}; +private: + void IniList(); +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + CObjContainer *m_ObjContainer;//obj + CListCtrl m_List; +}; diff --git a/LaiPuLaser/DlgPane.cpp b/LaiPuLaser/DlgPane.cpp new file mode 100644 index 0000000..b2155fa --- /dev/null +++ b/LaiPuLaser/DlgPane.cpp @@ -0,0 +1,31 @@ + +#include "stdafx.h" +#include "DlgPane.h" +#include "afxdialogex.h" + + +IMPLEMENT_DYNAMIC(CDlgPane, CDialogEx) + +CDlgPane::CDlgPane(CWnd* pParent /*=NULL*/) + : CDialogEx(GetIDD(), pParent) +{ + +} +CDlgPane::~CDlgPane() +{ +} +//ػһּ봫ݸview +BOOL CDlgPane::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + if(c==VK_RETURN || c==VK_ESCAPE) + { + return TRUE; + } + } + return CDialogEx::PreTranslateMessage(pMsg); +} + + diff --git a/LaiPuLaser/DlgPane.h b/LaiPuLaser/DlgPane.h new file mode 100644 index 0000000..f884af9 --- /dev/null +++ b/LaiPuLaser/DlgPane.h @@ -0,0 +1,13 @@ +#pragma once + +//pane ĶԻ,صǿԻöԻID +class CDlgPane: public CDialogEx +{ + DECLARE_DYNAMIC(CDlgPane) +public: + CDlgPane(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgPane(); + virtual UINT GetIDD(){return 0;}; + + afx_msg BOOL PreTranslateMessage(MSG* pMsg); +}; diff --git a/LaiPuLaser/DlgPlatformCtrl.cpp b/LaiPuLaser/DlgPlatformCtrl.cpp new file mode 100644 index 0000000..e6d2486 --- /dev/null +++ b/LaiPuLaser/DlgPlatformCtrl.cpp @@ -0,0 +1,566 @@ + +// TestDlg.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgPlatformCtrl.h" +#include "afxdialogex.h" +#include "WorkCmdMovePlatformXY.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" +#include "WorkCmdInvoker.h" +#include "WorkCmdMoveMotor.h" +#include "ExceptionMsg.h" +#include "WorkCmdMotorToMachineOrigin.h" +#include "WorkCmdMotorToOffsetPos.h" +#include "PropertieMgr.h" +#include "DeviceState.h" +#include "Laser.h" +#include "ObjComponentMgr.h" +#include "MotionCard_PCI1245.h" +#include "WorkCmdSetMotorSpeed.h" +#include "WorkCmdWaitMotorStop.h" + + +#define MAX_MOVE_DIS 100//ƽ̨һƶ +#define MAX_Z_MOVE_DIS 10//Zƶ + +#define WORK_TIMER1 1 +#define WORK_TIME_DELAY1 200 + +#define WORK_TIMER2 2 +#define WORK_TIME_DELAY2 50 + + +IMPLEMENT_DYNAMIC(DlgPlatformCtrl, CDialogEx) +BEGIN_MESSAGE_MAP(DlgPlatformCtrl, CDialogEx) + ON_WM_TIMER() + ON_BN_CLICKED(IDC_UP_BTN, &DlgPlatformCtrl::OnBnClickedUpBtn) + ON_BN_CLICKED(IDC_DOWN_BTN, &DlgPlatformCtrl::OnBnClickedDownBtn) + ON_BN_CLICKED(IDC_LEFT_BTN, &DlgPlatformCtrl::OnBnClickedLeftBtn) + ON_BN_CLICKED(IDC_RIGHT_BTN, &DlgPlatformCtrl::OnBnClickedRightBtn) + ON_BN_CLICKED(IDC_TO_ORIGIN, &DlgPlatformCtrl::OnBnClickedToOrigin) + ON_BN_CLICKED(IDC_BY_DIS, &DlgPlatformCtrl::OnBnClickedByDis) + ON_BN_CLICKED(IDC_BY_PULSE, &DlgPlatformCtrl::OnBnClickedByPulse) + ON_BN_CLICKED(IDC_MOTOR_Z_UP, &DlgPlatformCtrl::OnBnClickedMotorZUp) + ON_BN_CLICKED(IDC_MOTOR_Z_DOWN, &DlgPlatformCtrl::OnBnClickedMotorZDown) + ON_BN_CLICKED(IDC_SET_XY_ORIGIN, &DlgPlatformCtrl::OnBnClickedSetOrigin) + ON_BN_CLICKED(IDC_TO_WORK_PT, &DlgPlatformCtrl::OnBnClickedToWorkPt) + ON_BN_CLICKED(IDC_INI_PLAT, &DlgPlatformCtrl::OnBnClickedIniPlat) + ON_BN_CLICKED(IDC_SET_Z_FOCUS, &DlgPlatformCtrl::OnBnClickedSetZFocus) + ON_BN_CLICKED(IDC_RESET_XY_ORIGIN, &DlgPlatformCtrl::OnBnClickedResetXyOrigin) + ON_BN_CLICKED(IDC_ADJUST_PLAT_SPEED, &DlgPlatformCtrl::OnBnClickedAdjustPlatSpeed) + ON_BN_CLICKED(IDC_TEST_Z_FOCUS, &DlgPlatformCtrl::OnBnClickedTestZFocus) + ON_EN_CHANGE(IDC_MOVE_RANGE, &DlgPlatformCtrl::OnEnChangeMoveRange) + ON_EN_CHANGE(IDC_MOVE_DIS_Z, &DlgPlatformCtrl::OnEnChangeMoveDisZ) + ON_BN_CLICKED(IDC_MOVE_TO_PT, &DlgPlatformCtrl::OnBnClickedMoveToPt) + ON_BN_CLICKED(IDC_INI_MOTOR_Z, &DlgPlatformCtrl::OnBnClickedIniMotorZ) + ON_BN_CLICKED(IDC_SET_PRODUCT_POS, &DlgPlatformCtrl::OnBnClickedSetProductPos) + ON_BN_CLICKED(IDC_USE_MOTOR_X2_CHECK, &DlgPlatformCtrl::OnBnClickedUseMotorX2Check) + ON_BN_CLICKED(IDC_RESET_ERR, &DlgPlatformCtrl::OnBnClickedResetErr) + ON_BN_CLICKED(IDC_SEVON_BTN, &DlgPlatformCtrl::OnBnClickedSevonBtn) +END_MESSAGE_MAP() + +DlgPlatformCtrl::DlgPlatformCtrl(CWnd* pParent /*=NULL*/) +{ + bMoveByDis = true;//Ƿ񰴾ƶ(false Ϊƶ) + m_MoveRange = 10;//ƶ + m_ZMotorMoveDis = 0.1; + m_CoordZ = 0; + m_CoordZ2 = 0; + m_ZMotorMoveDis = 1; + m_MovePtX = 0; + m_MovePtY = 0; + m_bMotorInit = false;//ZǷʼ +} +DlgPlatformCtrl::~DlgPlatformCtrl() +{ +} +void DlgPlatformCtrl::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_LEFT_BTN, m_XLeftBtn); + DDX_Control(pDX, IDC_RIGHT_BTN, m_XRightBtn); + DDX_Control(pDX, IDC_UP_BTN, m_XTopBtn); + DDX_Control(pDX, IDC_DOWN_BTN, m_XDownBtn); + DDX_Control(pDX, IDC_MOTOR_Z_UP, m_ZUpBtn); + DDX_Control(pDX, IDC_MOTOR_Z_DOWN, m_ZDownBtn); + DDX_Text(pDX, IDC_MOVE_RANGE, m_MoveRange); + DDX_Text(pDX, IDC_COORD_X, m_PlatformCoord.x); + DDX_Text(pDX, IDC_COORD_Y, m_PlatformCoord.y); + DDX_Text(pDX, IDC_COORD_Z, m_CoordZ); + DDX_Text(pDX, IDC_COORD_Z2, m_CoordZ2); + DDX_Text(pDX, IDC_MOVE_DIS_Z, m_ZMotorMoveDis); + DDX_Text(pDX, IDC_MOVE_PT_X, m_MovePtX); + DDX_Text(pDX, IDC_MOVE_PT_Y, m_MovePtY); + DDX_Control(pDX, IDC_INI_PLAT, m_InitPlatBtn); + DDX_Control(pDX, IDC_TO_ORIGIN, m_ToOriginPtBtn); + DDX_Control(pDX, IDC_TO_WORK_PT, m_ToProductPtBtn); + DDX_Control(pDX, IDC_RESET_XY_ORIGIN, m_PlatCoordZeroBtn); + DDX_Control(pDX, IDC_SET_XY_ORIGIN, m_SetOriginPtBtn); + DDX_Control(pDX, IDC_SET_PRODUCT_POS, m_SetProductPtBtn); + DDX_Control(pDX, IDC_MOVE_TO_PT, m_MovePlatToPtBtn); + DDX_Control(pDX, IDC_INI_MOTOR_Z, m_InitZMotorBtn); + DDX_Control(pDX, IDC_SET_Z_FOCUS, m_SetZMotorOriginBtn); + DDX_Control(pDX, IDC_TEST_Z_FOCUS, m_ReadZMotorOriginBtn); + DDX_Control(pDX, IDC_RESET_ERR, m_ResetMotorErrBtn); + +} +BOOL DlgPlatformCtrl::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_XLeftBtn.LoadBitmaps(IDB_LEFT_BTN,IDB_LEFT_DOWN_BTN,IDB_LEFT_BTN,IDB_LEFT_BTN); + m_XRightBtn.LoadBitmaps(IDB_RIGHT_BTN,IDB_RIGHT_BTN_DOWN,IDB_RIGHT_BTN,IDB_RIGHT_BTN); + m_XTopBtn.LoadBitmaps(IDB_TOP_BTN,IDB_TOP_DOWN_BTN,IDB_TOP_BTN,IDB_TOP_BTN); + m_XDownBtn.LoadBitmaps(IDB_DOWN_BTN,IDB_DOWN_DOWN_BTN,IDB_DOWN_BTN,IDB_DOWN_BTN); + m_ZUpBtn.LoadBitmaps(IDB_TOP_BTN,IDB_TOP_DOWN_BTN,IDB_TOP_BTN,IDB_TOP_BTN); + m_ZDownBtn.LoadBitmaps(IDB_DOWN_BTN,IDB_DOWN_DOWN_BTN,IDB_DOWN_BTN,IDB_DOWN_BTN); + + //Ĭϰƶ + ((CButton *)GetDlgItem(IDC_BY_DIS))->SetCheck(TRUE); + + m_SetOriginPtBtn.SetUpColor(RGB_RED); + m_SetProductPtBtn.SetUpColor(RGB_RED); + m_SetZMotorOriginBtn.SetUpColor(RGB_RED); + + UpdateData(FALSE); + return TRUE; +} +//۲ƽ̨ı仯 +void DlgPlatformCtrl::UpdateInfo() +{ + m_PlatformCoord = gPlatformXY->GetCoord(); + //Ҫѧʾ + if(IsDbEqualZero(m_PlatformCoord.x)) + m_PlatformCoord.x = 0; + if(IsDbEqualZero(m_PlatformCoord.y)) + m_PlatformCoord.y = 0; + + CMotor *pMotorZ = CMotor::GetMotor(MOTOR_Z); + m_CoordZ = pMotorZ->GetCoord(); + m_CoordZ2 = pMotorZ->GetCoord2(); + //Ҫѧʾ + if(IsDbEqualZero(m_CoordZ)) + m_CoordZ = 0; + UpdateData(FALSE); +} +void DlgPlatformCtrl::Update() +{ + SetTimer(WORK_TIMER1,WORK_TIME_DELAY1,NULL);//timer£ᱨ +} +void DlgPlatformCtrl::OnTimer(UINT nIDEvent) +{ + if(nIDEvent == WORK_TIMER1) + { + UpdateInfo(); + KillTimer(WORK_TIMER1); + } + if(nIDEvent == WORK_TIMER2) + { + gMotionCard_PCI1245->ResetAllAsixErr(); + KillTimer(WORK_TIMER2); + } + CDialog::OnTimer(nIDEvent); +} + +void DlgPlatformCtrl::SetAllBtnState(bool b) +{ + GetDlgItem(IDC_TO_ORIGIN)->EnableWindow(b); + GetDlgItem(IDC_TO_WORK_PT)->EnableWindow(b); + GetDlgItem(IDC_INI_PLAT)->EnableWindow(b); + GetDlgItem(IDC_RESET_XY_ORIGIN)->EnableWindow(b); + GetDlgItem(IDC_ADJUST_PLAT_SPEED)->EnableWindow(b); +} +#if 1 +//ƶ(ǰǵֱȷ) +void DlgPlatformCtrl::OnBnClickedByDis() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + bMoveByDis = true; +} +//ƶ +void DlgPlatformCtrl::OnBnClickedByPulse() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + bMoveByDis = false; +} +void DlgPlatformCtrl::OnBnClickedUpBtn() +{ + UpdateData(TRUE); + gPlatformXY->ManualMovePlatForm(bMoveByDis,m_MoveRange,_DIR_U); +} +void DlgPlatformCtrl::OnBnClickedDownBtn() +{ + UpdateData(TRUE); + gPlatformXY->ManualMovePlatForm(bMoveByDis,m_MoveRange,_DIR_D); +} +void DlgPlatformCtrl::OnBnClickedLeftBtn() +{ + UpdateData(TRUE); + gPlatformXY->ManualMovePlatForm(bMoveByDis,m_MoveRange,_DIR_L); +} +void DlgPlatformCtrl::OnBnClickedRightBtn() +{ + UpdateData(TRUE); + gPlatformXY->ManualMovePlatForm(bMoveByDis,m_MoveRange,_DIR_R); +} +#endif +#if 1 +//ƽ̨ +void DlgPlatformCtrl::OnBnClickedResetXyOrigin() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ƽ̨?"))==false) + return; + + vector CmdVec; + CmdVec.push_back(_T("CmdName[CMD_DEVICE_PAR_RESET]")); + CWorkCmdInvoker Invoker; + Invoker.ExcuteCmd(CmdVec); +} + + +//ʼƽ̨ +void DlgPlatformCtrl::OnBnClickedIniPlat() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gPlatformXY->IniPlat(); +} + +//عԭ +void DlgPlatformCtrl::OnBnClickedToOrigin() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gPlatformXY->MoveToOriginPt(); +} +//õǰλΪƽ̨ԭ() +void DlgPlatformCtrl::OnBnClickedSetOrigin() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("õǰλΪƽ̨ԭ\n Ч"))==false) + return; + + CMotor &MotorX = *(CMotor::GetMotor(MOTOR_X)); + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + + //ԭ,¼ + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(MotorX); + pCmd->SetPar(true); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + //ԭ,¼ + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(MotorY); + pCmd->SetPar(true); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + // + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(MotorY); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + // + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(MotorX); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + gDevicePropertieMgr.SaveAllPropertie(); +} +//ȡϵ +void DlgPlatformCtrl::OnBnClickedToWorkPt() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gPlatformXY->MoveToWorkPt(); +} +#endif + +#if 1 +void DlgPlatformCtrl::MoveMotorZ(bool bDirZ) +{ + //Զнֹƶ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + //dzȨƶ + if(gAuthorityMgr->CheckAuthority(_FACTORY,false)==false) + return; + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + unsigned int PulseCnt = 0; + if(bMoveByDis) + { + PulseCnt = (unsigned int)(m_ZMotorMoveDis/Motor.GetOnePulseDis()); + } + else + { + PulseCnt = (unsigned int)m_ZMotorMoveDis; + } + double dis = bDirZ?m_ZMotorMoveDis:m_ZMotorMoveDis*(-1); + CWorkCmdContainer CmdContainer; + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorZ(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //ƶ + { + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,dis); + pCmd->SetMoveFlg(true);//ƶ + CmdContainer.AddCmd(pCmd); + } + //ȴƶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorZ(); + CmdContainer.AddCmd(pCmd); + } + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.Excute(CmdContainer); + + Motor.NotifyObservers(); +} +bool DlgPlatformCtrl::CheckZMoveDis() +{ + UpdateData(TRUE); + if(m_ZMotorMoveDis>MAX_Z_MOVE_DIS) + { + CMsgBox MsgBox; + MsgBox.Show("Z ÿƶ(mm)"); + return false; + } + return true; +} +void DlgPlatformCtrl::OnBnClickedMotorZUp() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + if(CheckZMoveDis()) + { + MoveMotorZ(true); + } +} +void DlgPlatformCtrl::OnBnClickedMotorZDown() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + if(CheckZMoveDis()) + { + MoveMotorZ(false); + } +} +//õǰΪZ ԭ +void DlgPlatformCtrl::OnBnClickedSetZFocus() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("õǰΪZ Ľ?"))==false) + return; + + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + + if(gMotionCard_PCI1245->IsbUsed()) + { + if(!m_bMotorInit) + { + CMsgBox MsgBox; + MsgBox.Show("ȳʼZ "); + return; + } + //õǰĽλΪԭƫλ + Motor.SetOriginOffsetDis(Motor.GetCoord2()); + } + else + { + //ԭ,¼ + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(Motor); + pCmd->SetPar(true); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + //ؽ + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(Motor); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + //֪ͨ۲ƽ̨仯 + gPlatformXY->NotifyObservers(); + } + gDevicePropertieMgr.SaveAllPropertie(); +} +void DlgPlatformCtrl::OnBnClickedTestZFocus() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("Z ?"))==false) + return; + + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + + //ԭ,Ҫ¼ + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(Motor); + pCmd->SetPar(false); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + //ؽ + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(Motor); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + + gDevicePropertieMgr.SaveAllPropertie(); + + //֪ͨ۲ƽ̨仯 + gPlatformXY->NotifyObservers(); +} +//ʼZ +void DlgPlatformCtrl::OnBnClickedIniMotorZ() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ʼZ ?"))==false) + return; + + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + + //ԭ,¼ + { + CWorkCmdMotorToMachineOrigin *pCmd = new CWorkCmdMotorToMachineOrigin(Motor); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + //ؽ + { + CWorkCmdMotorToOffsetPos *pCmd = new CWorkCmdMotorToOffsetPos(Motor); + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.ExcuteOneCmd(pCmd); + } + m_bMotorInit = true;//ZǷʼ + //֪ͨ۲ƽ̨仯 + gPlatformXY->NotifyObservers(); +} + +#endif + + +void DlgPlatformCtrl::OnBnClickedAdjustPlatSpeed() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("У׼ƽ̨˶ٶ?"))==false) + return; + gPlatformXY->AdjustPlatformSpeed(); +} + + + + + +void DlgPlatformCtrl::OnEnChangeMoveRange() +{ + // TODO: ÿؼ RICHEDIT ؼ + // ʹ֪ͨд __super::OnInitDialog() + // CRichEditCtrl().SetEventMask() + // ͬʱ ENM_CHANGE ־㵽С + + // TODO: ڴӿؼ֪ͨ + + //UpdateData(TRUE); +} + + +void DlgPlatformCtrl::OnEnChangeMoveDisZ() +{ + // TODO: ÿؼ RICHEDIT ؼ + // ʹ֪ͨд __super::OnInitDialog() + // CRichEditCtrl().SetEventMask() + // ͬʱ ENM_CHANGE ־㵽С + + // TODO: ڴӿؼ֪ͨ + //UpdateData(TRUE); +} +//ƶָ +void DlgPlatformCtrl::OnBnClickedMoveToPt() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + Dbxy TargetPt(m_MovePtX,m_MovePtY); + gPlatformXY->MoveToPt(Dbxy(0,0),TargetPt); +} +//ǰΪȡϵ +void DlgPlatformCtrl::OnBnClickedSetProductPos() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gPlatformXY->SetCurPosAsProductPt(); + //浽 + gDevicePropertieMgr.SaveAllPropertie(); +} +//лX2 +void DlgPlatformCtrl::OnBnClickedUseMotorX2Check() +{ + int idx = (((CButton *)GetDlgItem(IDC_USE_MOTOR_X2_CHECK))->GetCheck())?1:0; + gMotionCard_PCI1245->SetCurGpIdx(idx); +} + +void DlgPlatformCtrl::ResetAllMotorErr() +{ + SetTimer(WORK_TIMER2,WORK_TIME_DELAY2,NULL); +} + +void DlgPlatformCtrl::OnBnClickedResetErr() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("?"))==false) + return; + gMotionCard_PCI1245->ResetAllAsixErr(); + //¼ + gMotionCard_PCI1245->SetSvOn(false); + Sleep(500); + gMotionCard_PCI1245->SetSvOn(true); + //Ҫ³ʼ豸 + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(false); +} +void DlgPlatformCtrl::OnBnClickedSevonBtn() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gMotionCard_PCI1245->SetSvOn(false); + Sleep(500); + gMotionCard_PCI1245->SetSvOn(true); + //Ҫ³ʼ豸 + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(false); +} diff --git a/LaiPuLaser/DlgPlatformCtrl.h b/LaiPuLaser/DlgPlatformCtrl.h new file mode 100644 index 0000000..40b40a2 --- /dev/null +++ b/LaiPuLaser/DlgPlatformCtrl.h @@ -0,0 +1,91 @@ +#pragma once +#include "Observer.h" +#include "EnumDirection.h" +#include "DlgPane.h" +#include "MyBttom.h" + + + +class DlgPlatformCtrl : public CDlgPane,public CObserver +{ + DECLARE_DYNAMIC(DlgPlatformCtrl) + +public: + DlgPlatformCtrl(CWnd* pParent = NULL); // ׼캯 + virtual ~DlgPlatformCtrl(); + virtual UINT GetIDD(){return DlgPlatformCtrl::IDD;}; + virtual void Update(); + void SetAllBtnState(bool b); + void ResetAllMotorErr(); +// Ի + enum { IDD = IDD_PLATFORM_DLG }; +private: + CBitmapButton m_XLeftBtn; //ƽ̨ưť + CBitmapButton m_XRightBtn; //ƽ̨ưť + CBitmapButton m_XTopBtn; //ƽ̨ưť + CBitmapButton m_XDownBtn; //ƽ̨ưť + CBitmapButton m_ZUpBtn;//Z + CBitmapButton m_ZDownBtn;//Z + + bool bMoveByDis;//Ƿ񰴾ƶ(false Ϊƶ) + double m_MoveRange;//ƶ + Dbxy m_PlatformCoord;//ƽ̨ + double m_MovePtX;//ƶָ + double m_MovePtY; + + bool m_bMotorInit;//ZǷʼ + double m_CoordZ;//Z + double m_CoordZ2;//Z (ʾ㵽Z ԭľ) + double m_ZMotorMoveDis;//zƶmm + + CMyBttom m_InitPlatBtn; + CMyBttom m_ToOriginPtBtn; + CMyBttom m_ToProductPtBtn; + CMyBttom m_PlatCoordZeroBtn; + CMyBttom m_SetOriginPtBtn; + CMyBttom m_SetProductPtBtn; + CMyBttom m_MovePlatToPtBtn; + CMyBttom m_InitZMotorBtn; + CMyBttom m_SetZMotorOriginBtn; + CMyBttom m_ReadZMotorOriginBtn; + + CMyBttom m_ResetMotorErrBtn; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedUpBtn(); + afx_msg void OnBnClickedDownBtn(); + afx_msg void OnBnClickedLeftBtn(); + afx_msg void OnBnClickedRightBtn(); + afx_msg void OnBnClickedToOrigin(); + afx_msg void OnBnClickedByDis(); + afx_msg void OnBnClickedByPulse(); + afx_msg void OnBnClickedSetOrigin(); +private: + void MoveMotorZ(bool bDirZ); + bool CheckZMoveDis(); + void UpdateInfo(); +public: + afx_msg void OnBnClickedMotorZUp(); + afx_msg void OnBnClickedMotorZDown(); + afx_msg void OnBnClickedToWorkPt(); + afx_msg void OnBnClickedIniPlat(); + + afx_msg void OnBnClickedSetZFocus(); + afx_msg void OnBnClickedResetXyOrigin(); + afx_msg void OnBnClickedAdjustPlatSpeed(); + + afx_msg void OnBnClickedTestZFocus(); + afx_msg void OnEnChangeMoveRange(); + afx_msg void OnEnChangeMoveDisZ(); + afx_msg void OnBnClickedMoveToPt(); + + afx_msg void OnBnClickedIniMotorZ(); + afx_msg void OnBnClickedSetProductPos(); + afx_msg void OnBnClickedUseMotorX2Check(); + afx_msg void OnBnClickedResetErr(); + afx_msg void OnBnClickedSevonBtn(); +}; diff --git a/LaiPuLaser/DlgProgress.cpp b/LaiPuLaser/DlgProgress.cpp new file mode 100644 index 0000000..46235c5 --- /dev/null +++ b/LaiPuLaser/DlgProgress.cpp @@ -0,0 +1,77 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgProgress.h" +#include "afxdialogex.h" +#include "GlobalDrawMgr.h" + + +#define WORK_TIMER1 1 +#define WORK_TIME_DELAY1 20 + +IMPLEMENT_DYNAMIC(CDlgProgress, CDialogEx) + +CDlgProgress::CDlgProgress(CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgProgress::IDD, pParent) +{ +} + +CDlgProgress::~CDlgProgress() +{ +} + +void CDlgProgress::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_PROGRESS1, m_WorkProgress1); +} + + +BEGIN_MESSAGE_MAP(CDlgProgress, CDialogEx) + ON_WM_TIMER() +END_MESSAGE_MAP() + +BOOL CDlgProgress::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + //öԻλ + CRect rect; + CWnd* pWnd = AfxGetMainWnd(); + pWnd->GetWindowRect(rect); + + CPoint pos = gDraw->GetProgressDlgPos(); + + MoveWindow(rect.left+pos.x, rect.top+pos.y, 500, 90); + + //ùرհť + CMenu* pMenu = this->GetSystemMenu(FALSE); + pMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED ); + SetTimer(WORK_TIMER1,WORK_TIME_DELAY1,NULL); + + UpdateData(FALSE); + return TRUE; +} +//ػһּ봫ݸview +BOOL CDlgProgress::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + if(c==VK_RETURN || c==VK_ESCAPE) + { + return TRUE; + } + } + return CDialogEx::PreTranslateMessage(pMsg); +} +void CDlgProgress::OnTimer(UINT nIDEvent) +{ + if(nIDEvent == WORK_TIMER1) + { + //Ƿ + if(m_WorkProgress1.GetPos()>99) + CDialog::OnOK(); + } + CDialog::OnTimer(nIDEvent); +} + diff --git a/LaiPuLaser/DlgProgress.h b/LaiPuLaser/DlgProgress.h new file mode 100644 index 0000000..d9324bd --- /dev/null +++ b/LaiPuLaser/DlgProgress.h @@ -0,0 +1,22 @@ +#pragma once + +class CDlgProgress : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgProgress) + +public: + CDlgProgress(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgProgress(); + CProgressCtrl &GetProgress(){return m_WorkProgress1;}; +// Ի + enum { IDD = IDD_PROGRESS_DLG }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + DECLARE_MESSAGE_MAP() +private: + CProgressCtrl m_WorkProgress1;// +public: + afx_msg BOOL PreTranslateMessage(MSG* pMsg); +}; diff --git a/LaiPuLaser/DlgSW_XL_Flow.cpp b/LaiPuLaser/DlgSW_XL_Flow.cpp new file mode 100644 index 0000000..7fe6e73 --- /dev/null +++ b/LaiPuLaser/DlgSW_XL_Flow.cpp @@ -0,0 +1,735 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgSW_XL_Flow.h" +#include "afxdialogex.h" +#include "Program_SZ_XL.h" +#include "DeviceState.h" +#include "CommonFlowMgr.h" +#include "ProgramCutMgr.h" +#include "ProductMgr.h" +#include "MsgBox.h" +#include "MarkParMgr.h" +#include "PropertieMgr.h" +#include "ProgramCutMgr.h" +#include "ObjComponentMgr.h" +#include "WorkTime.h" +#include "MarkAreaMgr.h" +#include "WorkFileMgr.h" +#include "GlobalFunction.h" +#include "DlgMarkArea.h" +#include "AuthorityMgr.h" +#include "DlgAuthorityMgr.h" +#include "DlgAdjustObjPos.h" +#include "ClientMgr.h" +#include "FileMgr.h" +#include "CameraHawkvis.h" +#include "SmartArchive.h" + +IMPLEMENT_DYNAMIC(CDlgSW_XL_Flow, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgSW_XL_Flow, CDialogEx) + ON_WM_TIMER() + + ON_BN_CLICKED(IDC_START_BTN_1, &CDlgSW_XL_Flow::OnBnClickedStartBtn1) + ON_BN_CLICKED(IDC_LOAD_BTN_1, &CDlgSW_XL_Flow::OnBnClickedLoadBtn1) + ON_BN_CLICKED(IDC_WAIT_BTN_1, &CDlgSW_XL_Flow::OnBnClickedWaitBtn1) + ON_BN_CLICKED(IDC_CATCH_MARK_BTN_1, &CDlgSW_XL_Flow::OnBnClickedCatchMarkBtn1) + ON_BN_CLICKED(IDC_LASER_BTN_1, &CDlgSW_XL_Flow::OnBnClickedLaserBtn1) + ON_BN_CLICKED(IDC_UNLOAD_BTN_1, &CDlgSW_XL_Flow::OnBnClickedUnloadBtn1) + + ON_BN_CLICKED(IDC_START_BTN_2, &CDlgSW_XL_Flow::OnBnClickedStartBtn2) + ON_BN_CLICKED(IDC_LOAD_BTN_2, &CDlgSW_XL_Flow::OnBnClickedLoadBtn2) + ON_BN_CLICKED(IDC_WAIT_BTN_2, &CDlgSW_XL_Flow::OnBnClickedWaitBtn2) + ON_BN_CLICKED(IDC_CATCH_MARK_BTN_2, &CDlgSW_XL_Flow::OnBnClickedCatchMarkBtn2) + ON_BN_CLICKED(IDC_LASER_BTN_2, &CDlgSW_XL_Flow::OnBnClickedLaserBtn2) + ON_BN_CLICKED(IDC_UNLOAD_BTN_2, &CDlgSW_XL_Flow::OnBnClickedUnloadBtn2) + ON_BN_CLICKED(IDC_MANUAL_LOAD_BTN_1, &CDlgSW_XL_Flow::OnBnClickedManualLoadBtn1) + ON_BN_CLICKED(IDC_MANUAL_LOAD_BTN_2, &CDlgSW_XL_Flow::OnBnClickedManualLoadBtn2) + ON_BN_CLICKED(IDC_INIT_DEVICE_BTN, &CDlgSW_XL_Flow::OnBnClickedInitDeviceBtn) + ON_BN_CLICKED(IDC_OPEN_DXF, &CDlgSW_XL_Flow::OnBnClickedOpenDxf) + ON_BN_CLICKED(IDC_BOOL_SEL_MARK, &CDlgSW_XL_Flow::OnBnClickedBoolSelMark) + + ON_BN_CLICKED(IDC_TRACK1_PRODUCT_OPEN_CLOSE, &CDlgSW_XL_Flow::OnBnClickedTrack1ProductCarrierOpenClose) + ON_BN_CLICKED(IDC_TRACK2_PRODUCT_OPEN_CLOSE, &CDlgSW_XL_Flow::OnBnClickedTrack2ProductCarrierOpenClose) + ON_BN_CLICKED(IDC_SAVE_PAR, &CDlgSW_XL_Flow::OnBnClickedSavePar) + ON_BN_CLICKED(IDC_SPECIAL_OBJ, &CDlgSW_XL_Flow::OnBnClickedSpecialObj) + ON_BN_CLICKED(IDC_OPEN_MAK, &CDlgSW_XL_Flow::OnBnClickedOpenMak) + ON_BN_CLICKED(IDC_SAVE_MAK, &CDlgSW_XL_Flow::OnBnClickedSaveMak) + ON_BN_CLICKED(IDC_MARK_AREA, &CDlgSW_XL_Flow::OnBnClickedMarkArea) + ON_BN_CLICKED(IDC_TRACK2_CLEAR_TIMES, &CDlgSW_XL_Flow::OnBnClickedTrack2ClearTimes) + ON_BN_CLICKED(IDC_TRACK1_CLEAR_TIMES, &CDlgSW_XL_Flow::OnBnClickedTrack1ClearTimes) + ON_BN_CLICKED(IDC_THROW_EDGE_BTN_2, &CDlgSW_XL_Flow::OnBnClickedThrowEdgeBtn2) + ON_BN_CLICKED(IDC_THROW_EDGE_BTN_1, &CDlgSW_XL_Flow::OnBnClickedThrowEdgeBtn1) + ON_BN_CLICKED(IDC_MANUAL_OP_CHECK, &CDlgSW_XL_Flow::OnBnClickedManualOpCheck) + ON_BN_CLICKED(IDC_CIRCLE_STOP_CHECK2, &CDlgSW_XL_Flow::OnBnClickedCircleStopCheck2) + ON_BN_CLICKED(IDC_CIRCLE_STOP_CHECK1, &CDlgSW_XL_Flow::OnBnClickedCircleStopCheck1) + ON_BN_CLICKED(IDC_LOGIN_BTN, &CDlgSW_XL_Flow::OnBnClickedLoginBtn) + ON_BN_CLICKED(IDC_ADJUST_OBJ_POS, &CDlgSW_XL_Flow::OnBnClickedAdjustObjPos) + ON_BN_CLICKED(IDC_CHECK3, &CDlgSW_XL_Flow::OnBnClickedbMarkSelObj) + ON_BN_CLICKED(IDC_BOOL_SEL_MARK2, &CDlgSW_XL_Flow::OnBnClickedAdjustProductPos) + ON_BN_CLICKED(IDC_CHECK4, &CDlgSW_XL_Flow::OnBnClickedDisableServer) +END_MESSAGE_MAP() + + +#define UPDATE_INFO_TIMER 1 +#define UPDATE_INFO_DELAY 200 + +bool bTrack1ProductFlg = false;//н׿flg +bool bTrack2ProductFlg = false;//н׿flg +bool bSaveLockFlg = false; + +CDlgSW_XL_Flow::CDlgSW_XL_Flow(CWnd* pParent /*=NULL*/) +{ + m_LaserSpeed =800; + m_OneObjMarkCnt = 1;//и + m_SpecialOneObjMarkCnt = 1;//и + m_MarkAreaCutCount = 1; +} +CDlgSW_XL_Flow::~CDlgSW_XL_Flow() +{ +} +void CDlgSW_XL_Flow::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_START_BTN_1, m_StartBtn1); + DDX_Control(pDX, IDC_LOAD_BTN_1, m_LoadBtn1); + DDX_Control(pDX, IDC_MANUAL_LOAD_BTN_1, m_LoadEndBtn1); + DDX_Control(pDX, IDC_WAIT_BTN_1, m_WaitBtn1); + DDX_Control(pDX, IDC_CATCH_MARK_BTN_1, m_CatchMarkBtn1); + DDX_Control(pDX, IDC_LASER_BTN_1, m_CutBtn1); + DDX_Control(pDX, IDC_THROW_EDGE_BTN_1, m_ThrowEdgeBtn1); + DDX_Control(pDX, IDC_UNLOAD_BTN_1, m_UnloadBtn1); + DDX_Control(pDX, IDC_TRACK1_CLEAR_TIMES, m_ClearRecordBtn1); + DDX_Control(pDX, IDC_TRACK1_PRODUCT_OPEN_CLOSE, m_OpenCloseProductBtn1); + + DDX_Control(pDX, IDC_START_BTN_2, m_StartBtn2); + DDX_Control(pDX, IDC_LOAD_BTN_2, m_LoadBtn2); + DDX_Control(pDX, IDC_MANUAL_LOAD_BTN_2, m_LoadEndBtn2); + DDX_Control(pDX, IDC_WAIT_BTN_2, m_WaitBtn2); + DDX_Control(pDX, IDC_CATCH_MARK_BTN_2, m_CatchMarkBtn2); + DDX_Control(pDX, IDC_LASER_BTN_2, m_CutBtn2); + DDX_Control(pDX, IDC_THROW_EDGE_BTN_2, m_ThrowEdgeBtn2); + DDX_Control(pDX, IDC_UNLOAD_BTN_2, m_UnloadBtn2); + DDX_Control(pDX, IDC_TRACK2_CLEAR_TIMES, m_ClearRecordBtn2); + DDX_Control(pDX, IDC_TRACK2_PRODUCT_OPEN_CLOSE, m_OpenCloseProductBtn2); + + DDX_Control(pDX, IDC_INIT_DEVICE_BTN, m_InitDeviceBtn); + DDX_Control(pDX, IDC_BOOL_SEL_MARK, m_SelWorkBtn); + DDX_Control(pDX, IDC_OPEN_DXF, m_OpenDxfBtn); + + + DDX_Control(pDX, IDC_OPEN_MAK, m_OpenMarkBtn); + DDX_Control(pDX, IDC_SAVE_MAK, m_SaveMarkBtn); + DDX_Control(pDX, IDC_SPECIAL_OBJ, m_SetSpecialObjBtn); + DDX_Control(pDX, IDC_SAVE_PAR, m_SetParBtn); + DDX_Control(pDX, IDC_MARK_AREA, m_MarkAreaBtn); + DDX_Control(pDX, IDC_LOGIN_BTN, m_LoginBtn); + DDX_Control(pDX, IDC_ADJUST_OBJ_POS, m_AdjustObjPosBtn); + DDX_Text(pDX, IDC_CUT_SPEED, m_LaserSpeed); + DDX_Text(pDX, IDC_CUT_CNT, m_OneObjMarkCnt); + DDX_Text(pDX, IDC_SPECIAL_CUT_CNT, m_SpecialOneObjMarkCnt); + DDX_Text(pDX, IDC_AREA_CUT_CNT, m_MarkAreaCutCount); + DDX_Text(pDX, IDC_CUT_OFFSET_X, m_ProductOffset.x); + DDX_Text(pDX, IDC_CUT_OFFSET_Y, m_ProductOffset.y); + DDX_Control(pDX, IDC_BOOL_SEL_MARK2, m_SetMarkPosBtn); +} + +BOOL CDlgSW_XL_Flow::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_OpenDxfBtn.SetUpColor(RGB_GREEN1); + m_OpenMarkBtn.SetUpColor(RGB_GREEN1); + m_SaveMarkBtn.SetUpColor(RGB_GREEN1); + m_SetSpecialObjBtn.SetUpColor(RGB_GREEN1); + m_SetMarkPosBtn.SetUpColor(RGB_GREEN1); + + m_OpenCloseProductBtn1.SetUpColor(RGB_GREEN1); + m_OpenCloseProductBtn2.SetUpColor(RGB_GREEN1); + + m_ClearRecordBtn1.SetUpColor(RGB_GREEN1); + m_ClearRecordBtn2.SetUpColor(RGB_GREEN1); + m_SetParBtn.SetUpColor(RGB_GREEN1); + m_MarkAreaBtn.SetUpColor(RGB_GREEN1); + m_AdjustObjPosBtn.SetUpColor(RGB_GREEN1); + m_LoginBtn.SetUpColor(RGB_RED); + + SetTimer(UPDATE_INFO_TIMER,UPDATE_INFO_DELAY,NULL); + UpdateData(FALSE); + return TRUE; +} +void CDlgSW_XL_Flow::OnTimer(UINT nIDEvent) +{ + if(nIDEvent == UPDATE_INFO_TIMER) + { + //KillTimer(UPDATE_INFO_TIMER); + UpdateDlgInfo(); + //SetTimer(UPDATE_INFO_TIMER,UPDATE_INFO_DELAY,NULL); + } + + CDialog::OnTimer(nIDEvent); +} + +#if 1 + +//¶ԻʾϢ +void CDlgSW_XL_Flow::UpdateDlgInfo() +{ + if(gExitApp) + return; + //ʼť + CDeviceState &DeviceState = CDeviceState::GetInstance(); + bool bDeviceIni = DeviceState.IsDeviceIni(); + if(bDeviceIni) + { + m_InitDeviceBtn.SetUpColor(RGB_GREEN); + } + else + { + m_InitDeviceBtn.SetUpColor(RGB_RED); + } + //װť + if (gTrackWorkFlow1.m_bCarrierOpen) + { + m_OpenCloseProductBtn1.SetWindowTextA("ɿ"); + m_OpenCloseProductBtn1.SetUpColor(RGB_YELLOW); + } + else + { + m_OpenCloseProductBtn1.SetWindowTextA("Ѽн"); + m_OpenCloseProductBtn1.SetUpColor(RGB_GREEN); + } + + if (gTrackWorkFlow2.m_bCarrierOpen) + { + m_OpenCloseProductBtn2.SetWindowTextA("ɿ"); + m_OpenCloseProductBtn2.SetUpColor(RGB_YELLOW); + } + else + { + m_OpenCloseProductBtn2.SetWindowTextA("Ѽн"); + m_OpenCloseProductBtn2.SetUpColor(RGB_GREEN); + } + //ӹʱ + CString str = gWorkTime.GetTimeSpanStr(); + CString str1 = gWorkTime.GetLastWorkTime(); + GetDlgItem(IDC_WORK_TIME)->SetWindowText(str); + GetDlgItem(IDC_LAST_WORK_TIME)->SetWindowText(str1); + //ӹ + str.Format("%ld",gProgram_SZ_XL->GetCutProductCnt(_ETrackType_Track_1)); + GetDlgItem(IDC_CUT_PRODUCT_CNT1)->SetWindowText(str); + str.Format("%ld",gProgram_SZ_XL->GetCutProductCnt(_ETrackType_Track_2)); + GetDlgItem(IDC_CUT_PRODUCT_CNT2)->SetWindowText(str); + + if(gProgram_SZ_XL->IsbAutoWorking()) + GetDlgItem(IDC_MANUAL_OP_CHECK)->EnableWindow(false); + else + GetDlgItem(IDC_MANUAL_OP_CHECK)->EnableWindow(true); + + UpdateBtnColorExt(gTrackWorkFlow1,m_StartBtn1,IDC_START_BTN_1,m_LoadBtn1,m_LoadEndBtn1,m_WaitBtn1,m_CatchMarkBtn1,m_CutBtn1,m_ThrowEdgeBtn1,m_UnloadBtn1); + UpdateBtnColorExt(gTrackWorkFlow2,m_StartBtn2,IDC_START_BTN_2,m_LoadBtn2,m_LoadEndBtn2,m_WaitBtn2,m_CatchMarkBtn2,m_CutBtn2,m_ThrowEdgeBtn2,m_UnloadBtn2); + +} +void CDlgSW_XL_Flow::UpdateBtnColorExt(CTrackWorkFlow &TrackWorkFlow,CMyBttom &StartBtn,int StartBtnID,CMyBttom &LoadBtn,CMyBttom &LoadEndBtn,CMyBttom &WaitBtn,CMyBttom &CatchMarkBtn,CMyBttom &CutBtn,CMyBttom &ThrowEdgeBtn,CMyBttom &UnloadBtn) +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + bool bDeviceIni = DeviceState.IsDeviceIni(); + CString str; + if(TrackWorkFlow.IsbAutoWorking()) + { + StartBtn.SetUpColor(RGB_YELLOW); + str = "ֹͣ"; + } + else + { + if(bDeviceIni) + StartBtn.SetUpColor(RGB_GREEN); + else + StartBtn.SetUpColor(RGB_BLUE1); + str = "ʼ"; + } + GetDlgItem(StartBtnID)->SetWindowText(str); + if(gProgram_SZ_XL->IsbSelMarkMode()) + { + m_SelWorkBtn.SetUpColor(RGB_PINK); + } + else + { + m_SelWorkBtn.SetUpColor(RGB_GREEN1); + } + if(gProgram_SZ_XL->IsbAutoWorkMode()) + { + m_LoadEndBtn1.SetUpColor(RGB_GRAY1); + m_LoadEndBtn2.SetUpColor(RGB_GRAY1); + } + else + { + if(gProgram_SZ_XL->GetCurTrackWorkStep(_ETrackType_Track_1)==_ETrack_Step_Load) + m_LoadEndBtn1.SetUpColor(RGB_PINK); + else + m_LoadEndBtn1.SetUpColor(RGB_GRAY1); + if(gProgram_SZ_XL->GetCurTrackWorkStep(_ETrackType_Track_2)==_ETrack_Step_Load) + m_LoadEndBtn2.SetUpColor(RGB_PINK); + else + m_LoadEndBtn2.SetUpColor(RGB_GRAY1); + } + + + COLORREF ColorLoadBtn = RGB_BLUE1; + COLORREF ColorWaitBtn = RGB_BLUE1; + COLORREF ColorCatchMarkBtn = RGB_BLUE1; + COLORREF ColorCutBtn = RGB_BLUE1; + COLORREF ColorThrowEdgeBtn = RGB_BLUE1; + COLORREF ColorUnloadBtn = RGB_BLUE1; + + ETrackWorkStep TrackWorkStep = TrackWorkFlow.GetCurTrackWorkStep(); + switch(TrackWorkStep) + { + case _ETrack_Step_Load:// + ColorLoadBtn = RGB_GREEN; + break; + case _ETrack_Step_Load_Stop://,,ִֹͣ + ColorLoadBtn = RGB_YELLOW; + break; + case _ETrack_Step_To_Wait_Pos://ƶȴλ + case _ETrack_Step_Mark_Waiting://ȴ + ColorWaitBtn = RGB_GREEN; + break; + case _ETrack_Step_Catch_mark://ץȡλ + ColorCatchMarkBtn = RGB_GREEN; + break; + case _ETrack_Step_Catch_mark_Err://ץȡλʧ + ColorCatchMarkBtn = RGB_RED; + break; + case _ETrack_Step_Marking://и + ColorCutBtn = RGB_GREEN; + break; + case _ETrack_Step_Mark_Stop://иֹͣ + ColorCutBtn = RGB_YELLOW; + break; + case _ETrack_Step_Throw_Edge://ȥ߿ + ColorThrowEdgeBtn = RGB_GREEN; + break; + case _ETrack_Step_Unload:// + ColorUnloadBtn = RGB_GREEN; + break; + default: + break; + } + + LoadBtn.SetUpColor(ColorLoadBtn); + WaitBtn.SetUpColor(ColorWaitBtn); + CatchMarkBtn.SetUpColor(ColorCatchMarkBtn); + CutBtn.SetUpColor(ColorCutBtn); + ThrowEdgeBtn.SetUpColor(ColorThrowEdgeBtn); + UnloadBtn.SetUpColor(ColorUnloadBtn); + + CString s; + s.Format("Step : %ld",gTrackWorkFlow1.GetCurTrackWorkStepInt()); + GetDlgItem(IDC_STEP_1)->SetWindowText(s); + s.Format("Step : %ld",gTrackWorkFlow2.GetCurTrackWorkStepInt()); + GetDlgItem(IDC_STEP_2)->SetWindowText(s); +} +//ָǰѭֹͣcheck +void CDlgSW_XL_Flow::ResetCircleStopCheck(ETrackType TrackType) +{ + if(TrackType==_ETrackType_Track_1) + ((CButton*)GetDlgItem(IDC_CIRCLE_STOP_CHECK1))->SetCheck(false); + else + ((CButton*)GetDlgItem(IDC_CIRCLE_STOP_CHECK2))->SetCheck(false); +} +#endif + +#if 1 +void CDlgSW_XL_Flow::OnBnClickedStartBtn1() +{ + gProgram_SZ_XL->StartAutoWork(_ETrackType_Track_1); +} +void CDlgSW_XL_Flow::OnBnClickedStartBtn2() +{ + gProgram_SZ_XL->StartAutoWork(_ETrackType_Track_2); +} +#endif +#if 1 +void CDlgSW_XL_Flow::OnBnClickedLoadBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Unload_End); +} +void CDlgSW_XL_Flow::OnBnClickedLoadBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Unload_End); +} +//ֶ +void CDlgSW_XL_Flow::OnBnClickedManualLoadBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Load_End); +} +void CDlgSW_XL_Flow::OnBnClickedManualLoadBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Load_End); +} +//ƶȴλ +void CDlgSW_XL_Flow::OnBnClickedWaitBtn1() +{ + if (gProgram_SZ_XL->IsbAutoWorking()) + return; + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Load_End); +} +void CDlgSW_XL_Flow::OnBnClickedWaitBtn2() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Load_End); +} +void CDlgSW_XL_Flow::OnBnClickedCatchMarkBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Mark_Waiting); +} +void CDlgSW_XL_Flow::OnBnClickedCatchMarkBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Mark_Waiting); +} +void CDlgSW_XL_Flow::OnBnClickedLaserBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Catch_mark_End); +} +void CDlgSW_XL_Flow::OnBnClickedLaserBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Catch_mark_End); +} +void CDlgSW_XL_Flow::OnBnClickedThrowEdgeBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Mark_End); +} +void CDlgSW_XL_Flow::OnBnClickedThrowEdgeBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Mark_End); +} +void CDlgSW_XL_Flow::OnBnClickedUnloadBtn1() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Throw_Edge_End); +} +void CDlgSW_XL_Flow::OnBnClickedUnloadBtn2() +{ + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Throw_Edge_End); +} +void CDlgSW_XL_Flow::OnBnClickedTrack1ProductCarrierOpenClose() +{ + BOOL & bOpen = gTrackWorkFlow1.m_bCarrierOpen; + bOpen = !bOpen; + gProgram_SZ_XL->ProductCarrierOpenClose(_ETrackType_Track_1, bOpen); +} +void CDlgSW_XL_Flow::OnBnClickedTrack2ProductCarrierOpenClose() +{ + BOOL & bOpen = gTrackWorkFlow2.m_bCarrierOpen; + bOpen = !bOpen; + gProgram_SZ_XL->ProductCarrierOpenClose(_ETrackType_Track_2, bOpen); + +} +void CDlgSW_XL_Flow::OnBnClickedTrack1ClearTimes() +{ + gProgram_SZ_XL->ResetRecordTimes(_ETrackType_Track_1); +} +void CDlgSW_XL_Flow::OnBnClickedTrack2ClearTimes() +{ + gProgram_SZ_XL->ResetRecordTimes(_ETrackType_Track_2); +} +//ǰѭֹͣ +void CDlgSW_XL_Flow::OnBnClickedCircleStopCheck1() +{ + bool bStop = ((CButton*)GetDlgItem(IDC_CIRCLE_STOP_CHECK1))->GetCheck(); + gProgram_SZ_XL->SetbCircleStop(_ETrackType_Track_1,bStop); +} +void CDlgSW_XL_Flow::OnBnClickedCircleStopCheck2() +{ + bool bStop = ((CButton*)GetDlgItem(IDC_CIRCLE_STOP_CHECK2))->GetCheck(); + gProgram_SZ_XL->SetbCircleStop(_ETrackType_Track_2,bStop); +} + +#endif + +#if 1 +//ʼ豸 +void CDlgSW_XL_Flow::OnBnClickedInitDeviceBtn() +{ + gProgram_SZ_XL->InitDevice(); +} +#include "ObjComponentMgr.h" + +void CDlgSW_XL_Flow::OnBnClickedBoolSelMark() +{ + bool b = gProgram_SZ_XL->IsbSelMarkMode(); + gProgram_SZ_XL->SetbSelMarkMode(!b); + + /*if (!b) + { + auto & ComponentVec = gObjComponentMgr->GetComponentVec(); + auto & SelIndexVec = gClientMgr->m_SelObjIndexVec; + SelIndexVec.clear(); + int cnt = ComponentVec.size(); + + for (int idx = 0; idx < cnt; idx++) + { + if ((ComponentVec[idx]).IsSelected()) + { + SelIndexVec.push_back(idx); + } + } + gClientMgr->SendCmd_MarkSelObj(); + }*/ +} + +#endif +#if 1 +void CDlgSW_XL_Flow::UpdateCutPar() +{ + //ȡdxf Ӧи + gProgram_SZ_XL->ReadCutPar(); + + m_LaserSpeed = gCommonFlowMgr->m_CutSpeed;//иٶ + m_OneObjMarkCnt = gCommonFlowMgr->m_OneObjMarkCnt;//и + m_SpecialOneObjMarkCnt = gCommonFlowMgr->m_SpecialOneObjMarkCnt;//и + m_MarkAreaCutCount = gCommonFlowMgr->GetAreaCycleCnt();//ѭ + m_ProductOffset = gCommonFlowMgr->m_ProductOffset;//ԲƷиƫ + UpdateData(FALSE); +} + +//Ӧò +void CDlgSW_XL_Flow::OnBnClickedSavePar() +{ + if(bSaveLockFlg)//ֹ + return; + bSaveLockFlg = true;// + + UpdateData(TRUE); + gCommonFlowMgr->m_CutSpeed = m_LaserSpeed;//иٶ + gCommonFlowMgr->m_OneObjMarkCnt = m_OneObjMarkCnt;//и + gCommonFlowMgr->m_SpecialOneObjMarkCnt = m_SpecialOneObjMarkCnt;//и + gCommonFlowMgr->m_AreaCycleCnt = (m_MarkAreaCutCount);//ѭ + gCommonFlowMgr->m_ProductOffset = m_ProductOffset;//ԲƷиƫ + + //dxf Ӧи + gProgram_SZ_XL->SaveCutPar(); + + //Ӧòʱ´򿪵ǰļ + gClientMgr->SendCmd_OpenFile(gProgramCutMgr->GetCurOpenFileFullName()); + + + CMsgBox MsgBox; + MsgBox.Show("Ӧóɹ"); + bSaveLockFlg = false;// +} + +#endif +#if 1 + +void CDlgSW_XL_Flow::OnBnClickedSpecialObj() +{ + gObjComponentMgr->SetSelObjPenNum(); + +} +void CDlgSW_XL_Flow::OpenWorkFile(bool bDxf) +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + // + gProgramCutMgr->OpenWorkFile(bDxf); + UpdateCutPar(); + //areaƶ + gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0,0)); + GetCurViewPtr()->DoZoomFull(); +} + +void CDlgSW_XL_Flow::OnBnClickedOpenDxf() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + OpenWorkFile(true); + //-----------------------ģID------------------- + auto FileName = gProgramCutMgr->GetCurOpenFileName(); + if (FileName.IsEmpty()) + return; + //ʼ + vector KnownFileNameVec(100, "NULL"); + //¼ + int UseableIdx = 0; + { + CSmartArchive ar("KnownFileNameVec", false); + ar + UseableIdx; + for (int i = 0;i != 100;i++) + { + ar + KnownFileNameVec[i]; + } + } + auto iter = find(KnownFileNameVec.begin(), KnownFileNameVec.end(), FileName); + if (iter != KnownFileNameVec.end()) + { + int cnt = iter - KnownFileNameVec.begin(); + gCameraHawkvis->SetCurShapeModelID(cnt); + } + else + { + //򱣴 + gCameraHawkvis->SetCurShapeModelID(UseableIdx); + KnownFileNameVec[UseableIdx] = FileName; + { + UseableIdx++; + if (UseableIdx == 100)//ౣ100,Ȼ㿪ʼ + UseableIdx = 0; + + CSmartArchive ar("KnownFileNameVec", true); + ar + UseableIdx; + for (int i = 0;i != 100;i++) + { + ar + KnownFileNameVec[i]; + } + } + } +} + + + + +void CDlgSW_XL_Flow::OnBnClickedOpenMak() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + OpenWorkFile(false); + + //-----------------------ģID------------------- + auto FileName = gProgramCutMgr->GetCurOpenFileName(); + if (FileName.IsEmpty()) + return; + //ʼ + vector KnownFileNameVec(100,"NULL"); + //¼ + int UseableIdx = 0; + { + CSmartArchive ar("KnownFileNameVec", false); + ar + UseableIdx; + for (int i = 0;i != 100;i++) + { + ar + KnownFileNameVec[i]; + } + } + auto iter = find(KnownFileNameVec.begin(), KnownFileNameVec.end(), FileName); + if (iter !=KnownFileNameVec.end()) + { + int cnt = iter-KnownFileNameVec.begin(); + gCameraHawkvis->SetCurShapeModelID(cnt); + } + else + { + //򱣴 + gCameraHawkvis->SetCurShapeModelID(UseableIdx); + KnownFileNameVec[UseableIdx] = FileName; + { + UseableIdx++; + if (UseableIdx == 100)//ౣ100 + UseableIdx = 0; + + CSmartArchive ar("KnownFileNameVec", true); + ar + UseableIdx; + for (int i = 0;i != 100;i++) + { + ar + KnownFileNameVec[i]; + } + } + } +} +void CDlgSW_XL_Flow::OnBnClickedSaveMak() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnSaveFileAs(); +} +void CDlgSW_XL_Flow::OnBnClickedMarkArea() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + CDlgMarkArea dlg(*gMarkAreaMgr); + dlg.DoModal(); +} +//лԶֶģʽ +void CDlgSW_XL_Flow::OnBnClickedManualOpCheck() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + { + CMsgBox MsgBox; + MsgBox.Show("Զ,лģʽ!"); + return; + } + bool bSel = ((CButton*)GetDlgItem(IDC_MANUAL_OP_CHECK))->GetCheck(); + gProgram_SZ_XL->SetbAutoWorkMode(!bSel); +} +//û¼ +void CDlgSW_XL_Flow::OnBnClickedLoginBtn() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + CDlgAuthorityMgr dlg; + dlg.DoModal(); + if(gAuthorityMgr->IsLogin()) + m_LoginBtn.SetUpColor(RGB_GREEN); + else + m_LoginBtn.SetUpColor(RGB_RED); + m_LoginBtn.Refreash(); +} +//ѡobj λ +void CDlgSW_XL_Flow::OnBnClickedAdjustObjPos() +{ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + if(!gAuthorityMgr->CheckAuthority(_ADMIN,true)) + return; + if(!gObjComponentMgr->HasSelObjComponent()) + { + CMsgBox MsgBox; + MsgBox.Show("ûѡҪĶ!"); + return; + } + CDlgAdjustObjPos dlg; + dlg.DoModal(); +} + +#endif + + + + +void CDlgSW_XL_Flow::OnBnClickedbMarkSelObj() +{ + BOOL b = gProgram_SZ_XL->IsbSelMarkMode(); + gProgram_SZ_XL->SetbSelMarkMode(!b); + gClientMgr->SendCmd_bMarkSelMode(!b); + gClientMgr->SendCmd_SelObj(); +} + + +void CDlgSW_XL_Flow::OnBnClickedAdjustProductPos() +{ + CMsgBox MsgBox; + if (MsgBox.ConfirmOkCancel("1λץȡλ?") == false) + return; + + if (!gAuthorityMgr->CheckAuthority(_ADMIN,true)) + return; + + gProductMgr->SetProductCenterPt(); + //ӹ + gProgramCutMgr->SaveWorkParFile(); +} + + +void CDlgSW_XL_Flow::OnBnClickedDisableServer() +{ + if (!gAuthorityMgr->CheckAuthority(_ADMIN, true)) + { + bool b = gClientMgr->IsbDisableServer(); + ((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(b); + return; + } + bool b = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck(); + gClientMgr->SetbDisableServer(b); +} diff --git a/LaiPuLaser/DlgSW_XL_Flow.h b/LaiPuLaser/DlgSW_XL_Flow.h new file mode 100644 index 0000000..e6ed38f --- /dev/null +++ b/LaiPuLaser/DlgSW_XL_Flow.h @@ -0,0 +1,109 @@ +#pragma once +#include "DlgPane.h" +#include "MyBttom.h" +#include "Program_SZ_XL.h" + + +class CDlgSW_XL_Flow : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgSW_XL_Flow) +public: + CDlgSW_XL_Flow(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgSW_XL_Flow(); + virtual UINT GetIDD(){return CDlgSW_XL_Flow::IDD;}; + void ResetCircleStopCheck(ETrackType TrackType); + // Ի + enum { IDD = IDD_SW_XL_FLOW_DLG }; +private: + void UpdateDlgInfo(); + void UpdateCutPar(); + void OpenWorkFile(bool bDxf); + void UpdateBtnColorExt(CTrackWorkFlow &TrackWorkFlow,CMyBttom &StartBtn,int StartBtnID,CMyBttom &LoadBtn,CMyBttom &LoadEndBtn,CMyBttom &WaitBtn,CMyBttom &CatchMarkBtn,CMyBttom &CutBtn,CMyBttom &ThrowEdgeBtn,CMyBttom &UnloadBtn); +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + DECLARE_MESSAGE_MAP() +private: + CMyBttom m_StartBtn1; + CMyBttom m_LoadBtn1; + CMyBttom m_LoadEndBtn1; + CMyBttom m_WaitBtn1; + CMyBttom m_CatchMarkBtn1; + CMyBttom m_CutBtn1; + CMyBttom m_ThrowEdgeBtn1; + CMyBttom m_UnloadBtn1; + CMyBttom m_OpenCloseProductBtn1; + CMyBttom m_ClearRecordBtn1; + + CMyBttom m_StartBtn2; + CMyBttom m_LoadBtn2; + CMyBttom m_LoadEndBtn2; + CMyBttom m_WaitBtn2; + CMyBttom m_CatchMarkBtn2; + CMyBttom m_CutBtn2; + CMyBttom m_ThrowEdgeBtn2; + CMyBttom m_UnloadBtn2; + CMyBttom m_OpenCloseProductBtn2; + CMyBttom m_ClearRecordBtn2; + + CMyBttom m_InitDeviceBtn; + CMyBttom m_SelWorkBtn; + CMyBttom m_OpenDxfBtn; + CMyBttom m_OpenMarkBtn; + CMyBttom m_SaveMarkBtn; + CMyBttom m_SetSpecialObjBtn; + + CMyBttom m_SetParBtn; + CMyBttom m_MarkAreaBtn; + + CMyBttom m_LoginBtn; + CMyBttom m_AdjustObjPosBtn; + + float m_LaserSpeed;//иٶ + int m_MarkAreaCutCount;//ѭи + int m_OneObjMarkCnt;//и + int m_SpecialOneObjMarkCnt;//и + Dbxy m_ProductOffset;//ԲƷиƫ + + vector KnownFileNameVec;//֪ļ +public: + afx_msg void OnBnClickedStartBtn1(); + afx_msg void OnBnClickedLoadBtn1(); + afx_msg void OnBnClickedWaitBtn1(); + afx_msg void OnBnClickedCatchMarkBtn1(); + afx_msg void OnBnClickedLaserBtn1(); + afx_msg void OnBnClickedUnloadBtn1(); + + afx_msg void OnBnClickedStartBtn2(); + afx_msg void OnBnClickedLoadBtn2(); + afx_msg void OnBnClickedWaitBtn2(); + afx_msg void OnBnClickedCatchMarkBtn2(); + afx_msg void OnBnClickedLaserBtn2(); + afx_msg void OnBnClickedUnloadBtn2(); + afx_msg void OnBnClickedManualLoadBtn1(); + afx_msg void OnBnClickedManualLoadBtn2(); + afx_msg void OnBnClickedInitDeviceBtn(); + afx_msg void OnBnClickedOpenDxf(); + afx_msg void OnBnClickedBoolSelMark(); + afx_msg void OnBnClickedLoginBtn(); + afx_msg void OnBnClickedTrack1ProductCarrierOpenClose(); + afx_msg void OnBnClickedTrack2ProductCarrierOpenClose(); + afx_msg void OnBnClickedSavePar(); + afx_msg void OnBnClickedSpecialObj(); + afx_msg void OnBnClickedOpenMak(); + afx_msg void OnBnClickedSaveMak(); + afx_msg void OnBnClickedMarkArea(); + afx_msg void OnBnClickedTrack2ClearTimes(); + afx_msg void OnBnClickedTrack1ClearTimes(); + afx_msg void OnBnClickedThrowEdgeBtn2(); + afx_msg void OnBnClickedThrowEdgeBtn1(); + afx_msg void OnBnClickedManualOpCheck(); + afx_msg void OnBnClickedCircleStopCheck2(); + afx_msg void OnBnClickedCircleStopCheck1(); + afx_msg void OnBnClickedAdjustObjPos(); + afx_msg void OnBnClickedbMarkSelObj(); + afx_msg void OnBnClickedAdjustProductPos(); + afx_msg void OnBnClickedDisableServer(); + CMyBttom m_SetMarkPosBtn; +}; diff --git a/LaiPuLaser/DlgSimulateTrace.cpp b/LaiPuLaser/DlgSimulateTrace.cpp new file mode 100644 index 0000000..ad0ac12 --- /dev/null +++ b/LaiPuLaser/DlgSimulateTrace.cpp @@ -0,0 +1,45 @@ + +#include "stdafx.h" +#include "DlgSimulateTrace.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "SimulateTrace.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "PropertieMgr.h" + +IMPLEMENT_DYNAMIC(DlgSimulateTrace, CDialogEx) + +DlgSimulateTrace::DlgSimulateTrace(CWnd* pParent /*=NULL*/) +{ + +} + +DlgSimulateTrace::~DlgSimulateTrace() +{ +} + +void DlgSimulateTrace::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_SIMULATE_DELAY, m_Delay); +} +BEGIN_MESSAGE_MAP(DlgSimulateTrace, CDialogEx) + ON_BN_CLICKED(IDC_SIMULATE_START, &DlgSimulateTrace::OnBnClickedSimulateStart) +END_MESSAGE_MAP() + +// CDlgStdMarkCtr Ϣ +BOOL DlgSimulateTrace::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_Delay = 10; + + UpdateData(FALSE); + return TRUE; +} +//ʼ켣ģ(shift ) +void DlgSimulateTrace::OnBnClickedSimulateStart() +{ + +} diff --git a/LaiPuLaser/DlgSimulateTrace.h b/LaiPuLaser/DlgSimulateTrace.h new file mode 100644 index 0000000..e819d78 --- /dev/null +++ b/LaiPuLaser/DlgSimulateTrace.h @@ -0,0 +1,22 @@ +#pragma once + +#include "DlgPane.h" + +class DlgSimulateTrace : public CDlgPane +{ + DECLARE_DYNAMIC(DlgSimulateTrace) +public: + DlgSimulateTrace(CWnd* pParent = NULL); // ׼캯 + virtual ~DlgSimulateTrace(); + virtual UINT GetIDD(){return DlgSimulateTrace::IDD;}; +// Ի + enum { IDD = IDD_SIMULATE_TRACE }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +private: + int m_Delay;//ģʱ +public: + afx_msg void OnBnClickedSimulateStart(); +}; diff --git a/LaiPuLaser/DlgStdMarkCtr.cpp b/LaiPuLaser/DlgStdMarkCtr.cpp new file mode 100644 index 0000000..a51651b --- /dev/null +++ b/LaiPuLaser/DlgStdMarkCtr.cpp @@ -0,0 +1,43 @@ +// StdMarkCtr.cpp : ʵļ +// + +#include "stdafx.h" +#include "DlgStdMarkCtr.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "LogMgr.h" + +// CDlgStdMarkCtr Ի + +IMPLEMENT_DYNAMIC(CDlgStdMarkCtr, CDialogEx) + +CDlgStdMarkCtr::CDlgStdMarkCtr(CWnd* pParent /*=NULL*/) +{ + +} + +CDlgStdMarkCtr::~CDlgStdMarkCtr() +{ +} + +void CDlgStdMarkCtr::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} +BEGIN_MESSAGE_MAP(CDlgStdMarkCtr, CDialogEx) + ON_BN_CLICKED(IDC_START_MARK, &CDlgStdMarkCtr::OnBnClickedStartMark) + ON_BN_CLICKED(IDC_STOP_MARK, &CDlgStdMarkCtr::OnBnClickedStopMark) +END_MESSAGE_MAP() + +// CDlgStdMarkCtr Ϣ + + +//ʼ +void CDlgStdMarkCtr::OnBnClickedStartMark() +{ + +} +//ֹͣ(pci ) +void CDlgStdMarkCtr::OnBnClickedStopMark() +{ +} diff --git a/LaiPuLaser/DlgStdMarkCtr.h b/LaiPuLaser/DlgStdMarkCtr.h new file mode 100644 index 0000000..1b23fa3 --- /dev/null +++ b/LaiPuLaser/DlgStdMarkCtr.h @@ -0,0 +1,21 @@ +#pragma once + +#include "DlgPane.h" + +class CDlgStdMarkCtr : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgStdMarkCtr) +public: + CDlgStdMarkCtr(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgStdMarkCtr(); + virtual UINT GetIDD(){return CDlgStdMarkCtr::IDD;}; +// Ի + enum { IDD = IDD_STD_MARK_CTR }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + DECLARE_MESSAGE_MAP() + +public: + afx_msg void OnBnClickedStartMark(); + afx_msg void OnBnClickedStopMark(); +}; diff --git a/LaiPuLaser/DlgTest.cpp b/LaiPuLaser/DlgTest.cpp new file mode 100644 index 0000000..0ed9fb0 --- /dev/null +++ b/LaiPuLaser/DlgTest.cpp @@ -0,0 +1,655 @@ + +// TestDlg.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgTest.h" +#include "afxdialogex.h" +#include "LogMgr.h" +#include "GlobalFunction.h" +// CDlgTest Ի +#include +#include +#include "PciCh365Mgr.h" +#include "PlatformXY.h" +#include "PciPort.h" +#include "CommPortMgr.h" +#include "GratingRuler.h" +#include "Motor.h" +#include "MouseToolmgr.h" +#include "WorkCmdMotorToOffsetPos.h" +#include "AuthorityMgr.h" +#include "WorkCmdMovePlatformXY.h" +#include "Laser.h" +#include "LaipuVbDllMgr.h" +#include "CameraKeyence.h" +#include "WorkCmdInvoker.h" +#include "MsgBox.h" +#include "WorkCmdFactory.h" +#include "DlgMarkArea.h" +#include "MarkAreaMgr.h" +#include "ObjComponentMgr.h" +#include "DlgObjComponent.h" +#include "PciPortMgr.h" +#include "WorkTime.h" +#include "FileMgr.h" +#include "LaipuVbDllMgr.h" +#include "ProgramCutMgr.h" +#include "CommonFlowMgr.h" +#include "DxfReadMgr.h" +#include "ExceptionMsg.h" +#include "Product.h" +#include "PltReader.h" +#include "ProductMgr.h" +#include "WorkFileMgr.h" +#include "LaipuVbDllMgr.h" +#include "MotionCard_PCI1245.h" +#include "Program_SZ_XL_TrackWorkFlow.h" + + + +IMPLEMENT_DYNAMIC(CDlgTest, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgTest, CDialogEx) + ON_BN_CLICKED(IDC_TEST_BTN1, &CDlgTest::OnBnClickedTestBtn1) + ON_BN_CLICKED(IDC_OPEN_PORT, &CDlgTest::OnBnClickedOpenPort) + ON_BN_CLICKED(IDC_CLOSE_PORT, &CDlgTest::OnBnClickedClosePort) + ON_BN_CLICKED(IDC_TEST_BTN2, &CDlgTest::OnBnClickedTestBtn2) + ON_BN_CLICKED(IDC_READ_PORT, &CDlgTest::OnBnClickedReadPort) + ON_BN_CLICKED(IDC_WRITE_TO_COMM, &CDlgTest::OnBnClickedWriteToComm) + ON_EN_CHANGE(IDC_CMD_INPUT, OnEnChangeEdit) + + ON_WM_MOUSEWHEEL()//Ϣ + ON_BN_CLICKED(IDC_MARK_AREA_DLG, &CDlgTest::OnBnClickedMarkAreaDlg) + ON_BN_CLICKED(IDC_OBJ_COMP_DLG, &CDlgTest::OnBnClickedObjCompDlg) + ON_BN_CLICKED(IDC_CREAT_OBJ_BY_LAYER, &CDlgTest::OnBnClickedCreatObjByLayerShape) + ON_BN_CLICKED(IDC_OPEN_DXF, &CDlgTest::OnBnClickedReadDxfFile) + ON_BN_CLICKED(IDC_OPEN_PLT, &CDlgTest::OnBnClickedReadPltFile) + ON_BN_CLICKED(IDC_PCI_MARK, &CDlgTest::OnBnClickedPciMark) + ON_BN_CLICKED(IDC_PCI_MULTI_AREA_MARK, &CDlgTest::OnBnClickedPciMultiAreaMark) + ON_BN_CLICKED(IDC_CUT_BY_PLATFROM, &CDlgTest::OnBnClickedCutByPlatfrom) + ON_BN_CLICKED(IDC_CCD_CATCH, &CDlgTest::OnBnClickedCcdCatch) + ON_BN_CLICKED(IDC_CCD_CATCH_TWO_MARK, &CDlgTest::OnBnClickedCcdCatchTwoMark) + ON_BN_CLICKED(IDC_OBJ_TO_CCD_MODE, &CDlgTest::OnBnClickedObjToCcdMode) + ON_BN_CLICKED(IDC_SET_MARK_PT, &CDlgTest::OnBnClickedSetMarkPt) + + ON_BN_CLICKED(IDC_READ_OBJ, &CDlgTest::OnBnClickedReadObjFile) + ON_BN_CLICKED(IDC_SAVE_OBJ, &CDlgTest::OnBnClickedSaveObjFile) + ON_BN_CLICKED(IDC_CREAT_VISION_DATA, &CDlgTest::OnBnClickedCreatVisionData) + + ON_BN_CLICKED(IDC_OPEN_MAK, &CDlgTest::OnBnClickedOpenMak) + ON_BN_CLICKED(IDC_ADJUST_PRODUCT_POS, &CDlgTest::OnBnClickedAdjustProductPos) + ON_BN_CLICKED(IDC_WRITE_TO_COMM2, &CDlgTest::OnBnClickedConnect) + ON_BN_CLICKED(IDC_WRITE_TO_COMM3, &CDlgTest::OnBnClickedOpenFile) + ON_BN_CLICKED(IDC_WRITE_TO_COMM4, &CDlgTest::OnBnClickedTransProduct) + ON_BN_CLICKED(IDC_WRITE_TO_COMM5, &CDlgTest::OnBnClickedStartWork) + ON_BN_CLICKED(IDC_WRITE_TO_COMM6, &CDlgTest::OnBnClickedinitPlatform) + ON_BN_CLICKED(IDC_CREAT_VISION_DATA2, &CDlgTest::OnBnClickedCopyGridData) +END_MESSAGE_MAP() + +bool bObjToCcdMode = false; +bool gFlg = false; + + + +CDlgTest::CDlgTest(CWnd* pParent /*=NULL*/) + : m_IP(_T("192.168.8.2")) + , m_port(9898) +{ + m_PortNum = 0;//Եpci ˿ں + m_Input1 = 1; + m_CommPort = 1; + m_CommStr = "Trigger,1\r\n"; + m_PortState = _T("״̬: "); + m_MarkTimes = 1; + m_CyclicTimes = 1; +} +CDlgTest::~CDlgTest() +{ +} +void CDlgTest::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_PORT_STATE, m_PortState); + DDX_Text(pDX, IDC_INPUT1, m_Input1); + DDX_Text(pDX, IDC_COMM_PORT, m_CommPort); + DDX_Text(pDX, IDC_COMM_STR, m_CommStr); + DDX_Text(pDX, IDC_COMM_REV, m_CommRev); + DDX_Text(pDX, IDC_MARK_CNT, m_MarkTimes); + DDX_Text(pDX, IDC_CYCLIC_TIMES, m_CyclicTimes); + DDX_Text(pDX, IDC_PORT_NUM, m_PortNum); + DDX_Control(pDX, IDC_CMD_INPUT, m_CmdInputEdit); +#ifdef __TBAR_CODE__ + DDX_Control(pDX, IDC_TBARCODE51, m_Tbarcode51); +#endif + DDX_Text(pDX, IDC_CMD_INPUT, m_CmdInputStr); + DDX_Control(pDX, IDC_WRITE_TO_COMM, m_SendToComBtn); + DDX_Control(pDX, IDC_OPEN_PORT, m_OpenPciPortBtn); + DDX_Control(pDX, IDC_CLOSE_PORT, m_ClosePciPortBtn); + DDX_Control(pDX, IDC_READ_PORT, m_ReadPciPortBtn); + DDX_Control(pDX, IDC_TEST_BTN1, m_Test1Btn); + DDX_Control(pDX, IDC_TEST_BTN2, m_Test2Btn); + DDX_Control(pDX, IDC_OBJ_COMP_DLG, m_ObjCompSetBtn); + DDX_Control(pDX, IDC_MARK_AREA_DLG, m_MarkAreaSetBtn); + DDX_Control(pDX, IDC_CREAT_OBJ_BY_LAYER, m_CreatObjBtn); + DDX_Control(pDX, IDC_OPEN_DXF, m_ReadDxfBtn); + DDX_Control(pDX, IDC_OPEN_PLT, m_ReadPltBtn); + DDX_Control(pDX, IDC_READ_OBJ, m_ReadObjBtn); + DDX_Control(pDX, IDC_OPEN_MAK, m_ReadMakBtn); + + DDX_Control(pDX, IDC_SAVE_OBJ, m_SaveObjBtn); + + DDX_Control(pDX, IDC_PCI_MARK, m_PciMarkBtn); + DDX_Control(pDX, IDC_PCI_MULTI_AREA_MARK, m_PciAreaMarkBtn); + DDX_Control(pDX, IDC_CUT_BY_PLATFROM, m_CutByPlatformBtn); + DDX_Control(pDX, IDC_CCD_CATCH, m_CameraCatchBtn); + DDX_Control(pDX, IDC_CCD_CATCH_TWO_MARK, m_CameraCatchMarkBtn); + DDX_Control(pDX, IDC_OBJ_TO_CCD_MODE, m_ObjToCCDModeBtn); + DDX_Control(pDX, IDC_SET_MARK_PT, m_SetMarkBtn); + DDX_Control(pDX, IDC_CREAT_VISION_DATA, m_CreatVisionDataBtn); + DDX_Control(pDX, IDC_ADJUST_PRODUCT_POS, m_AdjustProductPosBtn); + DDX_Text(pDX, IDC_COMM_REV2, m_IP); + DDX_Text(pDX, IDC_COMM_REV3, m_port); + DDX_Control(pDX, IDC_CREAT_VISION_DATA2, m_CopyBackBtn); +} +BOOL CDlgTest::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_ObjCompSetBtn.SetUpColor(RGB_GREEN); + m_MarkAreaSetBtn.SetUpColor(RGB_GREEN); + m_CreatObjBtn.SetUpColor(RGB_PINK); + m_ReadDxfBtn.SetUpColor(RGB_PINK); + m_ReadPltBtn.SetUpColor(RGB_PINK); + m_ReadObjBtn.SetUpColor(RGB_PINK); + m_SaveObjBtn.SetUpColor(RGB_PINK); + m_ReadMakBtn.SetUpColor(RGB_PINK); + + m_PciMarkBtn.SetUpColor(RGB_GREEN1); + m_PciAreaMarkBtn.SetUpColor(RGB_GREEN1); + m_CutByPlatformBtn.SetUpColor(RGB_GREEN1); + + m_CameraCatchBtn.SetUpColor(RGB_BLUE1); + m_CameraCatchMarkBtn.SetUpColor(RGB_BLUE1); + m_CreatVisionDataBtn.SetUpColor(RGB_BLUE1); + m_SetMarkBtn.SetUpColor(RGB_PINK); + m_ObjToCCDModeBtn.SetUpColor(RGB_GREEN); + + m_AdjustProductPosBtn.SetUpColor(RGB_GREEN1); + UpdateData(FALSE); + return TRUE; +} + +#if 1 +// +void CDlgTest::OnBnClickedTestBtn1() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + +} +void CDlgTest::OnBnClickedTestBtn2() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + +} +int CDlgTest::GetInput1() +{ + UpdateData(TRUE); + return m_Input1; +} + +#endif +#if 1//pci ˿ڲ +//˿ںֻ0~16 +bool CDlgTest::CheckPortNum() +{ + if(0<=m_PortNum&&m_PortNum<16) + { + return true; + } + return false; +} + +//򿪶˿ +void CDlgTest::OnBnClickedOpenPort() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + if(CheckPortNum()) + { + SPciPort PciPort; + PciPort.num = m_PortNum; + gLogMgr->WriteDebugLog("򿪶˿","m_PortNum", m_PortNum); + try + { + gPciCh365Mgr->WritePortState(PciPort,true); + } + catch(CExceptionMsg &Msg) + { + CString str("Func : OpenPciPort---->"); + str += Msg.GetMsgStr(); + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } + } +} +//رն˿ +void CDlgTest::OnBnClickedClosePort() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + if(CheckPortNum()) + { + SPciPort PciPort; + PciPort.num = m_PortNum; + gLogMgr->WriteDebugLog("رն˿","m_PortNum", m_PortNum); + try + { + gPciCh365Mgr->WritePortState(PciPort,false); + } + catch(CExceptionMsg &Msg) + { + CString str("Func : OpenPciPort---->"); + str += Msg.GetMsgStr(); + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } + } +} +void CDlgTest::OnBnClickedReadPort() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + if(CheckPortNum()) + { + SPciPort port; + port.num = m_PortNum; + gLogMgr->WriteDebugLog("ȡ˿","m_PortNum", m_PortNum); + try + { + bool ret = gPciCh365Mgr->ReadPortState(port); + if(ret) + { + m_PortState = _T("״̬: ON"); + } + else + { + m_PortState = _T("״̬: OFF"); + } + UpdateData(FALSE); + } + catch(CExceptionMsg &Msg) + { + CString str("Func : ReadPciPort---->"); + str += Msg.GetMsgStr(); + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } + } +} +#endif + +#if 1// +//ַ +void CDlgTest::OnBnClickedWriteToComm() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + UpdateData(TRUE); + + CCommPortMgr com; + //򿪴 + if(com.Open(m_CommPort,115200)==false) + { + return; + } + int DelayTime = 200; + + CString str1 = m_CommStr; + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + + //ȡ + m_CommRev = com.ReadStr(); + + com.Close(); + + UpdateData(FALSE); +} +#endif +#if 1//ϱַ +//cmd edit ۽ +void CDlgTest::SetCmdEditFocus() +{ + GetDlgItem(IDC_CMD_INPUT)->SetFocus(); +} +//ػһּ봫ݸview +BOOL CDlgTest::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + if(c==VK_RETURN) + { + return TRUE; + } + if(c==VK_ESCAPE || c==VK_CONTROL||c==VK_DELETE) + { + return GetCurViewPtr()->PreTranslateMessage(pMsg); + } + if(c == 'A' || c == 'Z' || c == 'Y') + { + return GetCurViewPtr()->PreTranslateMessage(pMsg); + } + if(c==VK_LEFT||c==VK_RIGHT||c==VK_UP||c==VK_DOWN) + { + return GetCurViewPtr()->PreTranslateMessage(pMsg); + //BOOL ret = CDialogEx::PreTranslateMessage(pMsg);//ùƶ + //SetCaptionInputStr();//ٸ¹λ + //return ret; + } + } + if(pMsg->message==WM_KEYUP) + { + switch(pMsg->wParam) + { + case VK_CONTROL: + return GetCurViewPtr()->PreTranslateMessage(pMsg); + break; + default: + break; + } + } + return CDialogEx::PreTranslateMessage(pMsg); +} +void CDlgTest::OnEnChangeEdit() +{ + UpdateData(TRUE); + //Ƿspace + char space = ' '; + if(m_CmdInputStr.Find(space,0)!= -1) + { + //ȡֵ + if(gMouseToolMgr.OnSetCmd(m_CmdInputStr)) + { + GetFrame()->ResetCaptionBar(); + ResetCmdInputStr(); + } + else + { + gLogMgr->WriteCmd(STR_INPUT_ERROR+m_CmdInputStr,STR_NULL,STR_NULL); + ResetCmdInputStr(); + } + } + else + { + SetCaptionInputStr(); + } +} +void CDlgTest::ResetCmdInputStr() +{ + m_CmdInputStr = ""; + UpdateData(FALSE); +} +void CDlgTest::SetCaptionInputStr() +{ + UpdateData(TRUE); + //ȡǰλ + int nStartChar; + int nEndChar; + m_CmdInputEdit.GetSel(nStartChar,nEndChar); + CString str1(m_CmdInputStr,nStartChar); + CString str3 = "_"; + CString str4(m_CmdInputStr); + str4.Delete(0,nStartChar); + + GetFrame()->SetCaptionInputStr(str1+str3+str4); + GetFrame()->RefreashCaptionBar(); +} +//ػϢشview +BOOL CDlgTest::OnMouseWheel(UINT nFlags,short zDelta,CPoint point) +{ + return GetCurViewPtr()->OnMouseWheel(nFlags,zDelta,point); +} +#endif + +#if 1//ع +void CDlgTest::OnBnClickedMarkAreaDlg() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CDlgMarkArea dlg(*gMarkAreaMgr); + dlg.DoModal(); +} +void CDlgTest::OnBnClickedObjCompDlg() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CDlgObjComponent dlg(*gObjComponentMgr); + dlg.DoModal(); +} +void CDlgTest::OnBnClickedCreatObjByLayerShape() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel("ͨͼδobj ?")) + { + gObjComponentMgr->CreatObjByLayerObj(); + GetCurViewPtr()->RefreshView(); + } +} +void CDlgTest::OnBnClickedReadDxfFile() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gDxfReadMgr->OpenDxfFileDlg(-90); +} +void CDlgTest::OnBnClickedReadPltFile() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gPltReader->OpenFile(); +} +void CDlgTest::OnBnClickedOpenMak() +{ + gProgramCutMgr->OpenMarkFile(); +} +void CDlgTest::OnBnClickedReadObjFile() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OpenObjFile(); +} +void CDlgTest::OnBnClickedSaveObjFile() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SaveObjFile(); +} + +#endif + +#if 1//ù +bool bPciMarkFlg = false;//ֹظ뱨 +void CDlgTest::OnBnClickedPciMark() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + if(!bPciMarkFlg) + { + bPciMarkFlg = true; + UpdateData(TRUE); + bool bSel = ((CButton*)GetDlgItem(IDC_NEED_SEL_CHECK))->GetCheck(); + gObjComponentMgr->SetCollectCircle(true); + gCommonFlowMgr->NormalMarkByPciCard(bSel,m_MarkTimes,m_CyclicTimes); + gObjComponentMgr->SetCollectCircle(false); + bPciMarkFlg = false; + } +} +void CDlgTest::OnBnClickedPciMultiAreaMark() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("Start PCI MultiMark?"))==false) + return; + vector &ProductVec = gProductMgr->GetProductVec(); + int size = ProductVec.size(); + for(int i=0;iGetCheck(); + gCommonFlowMgr->MultipleAreaMark(Product,bSel); + } +} +void CDlgTest::OnBnClickedCutByPlatfrom() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("Start Cut By Platfrom?"))==false) + return; + vector &ProductVec = gProductMgr->GetProductVec(); + int size = ProductVec.size(); + for(int i=0;iGetCheck(); + gCommonFlowMgr->CutShapeByPlatform(Product,bSel); + } +} +#endif +#if 1 +//ccd ʶ,ʶľ +void CDlgTest::OnBnClickedCcdCatch() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gCommonFlowMgr->CameraCatch(); +} +//ѡobj Ϊmark +void CDlgTest::OnBnClickedSetMarkPt() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + gObjComponentMgr->SetMarkObj(); + CLayer &layer = GetLayerInstance(); + layer.NotSelAllObj();//ȫѡ + GetCurViewPtr()->RefreshView(); +} +//ʶƷƫƺת +void CDlgTest::OnBnClickedCcdCatchTwoMark() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + +} +//ѡobj ƶCCDĹ۲ +void CDlgTest::OnBnClickedObjToCcdMode() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + vector &ProductVec = gProductMgr->GetProductVec(); + if(!ProductVec.empty()) + { + gCommonFlowMgr->MoveSelObjToCamera(ProductVec[0]); + } +} +//vision.dat +void CDlgTest::OnBnClickedCreatVisionData() +{ + if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) + return; + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ʼ \"Vision.dat\"?"))==false) + return; + if(gCommonFlowMgr->AutoMeasureVisionData()) + { + MsgBox.Show(" \"Vision.dat\" ! "); + } +} +void CDlgTest::OnBnClickedAdjustProductPos() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel("ץȡƫλ?")==false) + return; + gProductMgr->SetProductCenterPt(); + //ӹ + gProgramCutMgr->SaveWorkParFile(); +} + +#endif +#include "ClientMgr.h" + +void CDlgTest::OnBnClickedConnect() +{ + UpdateData(TRUE); + gClientMgr->m_ClientIP = m_IP; + gClientMgr->m_ClientPort = m_port; + gClientMgr->Connect2Server(); +} + + +void CDlgTest::OnBnClickedOpenFile() +{ + gClientMgr->SendCmd_OpenFile("C:\\Users\\Administrator\\Pictures\\timg.jpg"); +} + + +void CDlgTest::OnBnClickedTransProduct() +{ + CProduct product; + product.SetTheoryMarkPt(Dbxy(100, 100), Dbxy(200, 200)); + gClientMgr->SendCmd_ProductInfo(product); +} + + +void CDlgTest::OnBnClickedStartWork() +{ + gClientMgr->SendCmd_StartLaserMark(6); +} + +#include "WorkCmdSetMotorSpeed.h" +#include "WorkCmdContainer.h" +void CDlgTest::OnBnClickedinitPlatform() +{ + CMotor*pMotorX1= CMotor::GetMotor(MOTOR_X2); + + CWorkCmdInvoker Invoker; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorX(); + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetbSetMotorZ(); + pCmd->SetSpeedType(_SpeedType_Org); + CmdContainer.AddCmd(pCmd); + } + Invoker.ExcuteAllCmd(); + gMotionCard_PCI1245->FindOriginExt(*pMotorX1); +} + + +void CDlgTest::OnBnClickedCopyGridData() +{ + CString FilePath; + CFileMgr FileMgr; + FileMgr.GetFullFilePath(FilePath, "\\grid_data.dat"); + //У׼ļǰĿ¼ + CString SrcPath = "C:\\Program Files\\Laipu Soft\\Marking System\\grid_data.dat"; + if (!CopyFile( SrcPath, FilePath, false)) + { + AfxMessageBox("grid_data.datǰĿ¼ʧ!\r\nֶ!!!"); + } +} diff --git a/LaiPuLaser/DlgTest.h b/LaiPuLaser/DlgTest.h new file mode 100644 index 0000000..8e082df --- /dev/null +++ b/LaiPuLaser/DlgTest.h @@ -0,0 +1,113 @@ +#pragma once +#include "MyBttom.h" + +// CDlgTest Ի +#include "DlgPane.h" +#ifdef __TBAR_CODE__ +#include "tbarcode51.h" +#endif +#include "afxwin.h" +class CDlgTest : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgTest) + +public: + CDlgTest(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgTest(); + virtual UINT GetIDD(){return CDlgTest::IDD;}; + + void SetCmdEditFocus(); + #ifdef __TBAR_CODE__ + CTbarcode51 &GetTbarcode51(){return m_Tbarcode51;}; + #endif + int GetInput1(); +// Ի + enum { IDD = IDD_TEST_DLG }; +private: + bool CheckPortNum(); + void SetCaptionInputStr(); + void ResetCmdInputStr(); +private: + int m_PortNum;//Եpci ˿ں + CString m_PortState;//˿״̬ + + double m_Input1;//1 + //ڵ + int m_CommPort;//ں + CString m_CommStr;//͵ + CString m_CommRev;//յ + + int m_MarkTimes;//ӹ + int m_CyclicTimes;//ѭ + + CEdit m_CmdInputEdit; + CString m_CmdInputStr;//cmd +#ifdef __TBAR_CODE__ + CTbarcode51 m_Tbarcode51;//ؼ +#endif + CMyBttom m_SendToComBtn; + CMyBttom m_OpenPciPortBtn; + CMyBttom m_ClosePciPortBtn; + CMyBttom m_ReadPciPortBtn; + CMyBttom m_Test1Btn; + CMyBttom m_Test2Btn; + CMyBttom m_ObjCompSetBtn; + CMyBttom m_MarkAreaSetBtn; + CMyBttom m_CreatObjBtn; + CMyBttom m_ReadDxfBtn; + CMyBttom m_ReadMakBtn; + CMyBttom m_ReadObjBtn; + CMyBttom m_SaveObjBtn; + CMyBttom m_ReadPltBtn; + CMyBttom m_PciMarkBtn; + CMyBttom m_PciAreaMarkBtn; + CMyBttom m_CutByPlatformBtn; + CMyBttom m_CameraCatchBtn; + CMyBttom m_SetMarkBtn; + CMyBttom m_CameraCatchMarkBtn; + CMyBttom m_ObjToCCDModeBtn; + CMyBttom m_CreatVisionDataBtn; + CMyBttom m_CopyBackBtn; + CMyBttom m_AdjustProductPosBtn; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedTestBtn1(); + afx_msg void OnBnClickedOpenPort(); + afx_msg void OnBnClickedClosePort(); + afx_msg void OnBnClickedTestBtn2(); + afx_msg void OnBnClickedReadPort(); + afx_msg void OnBnClickedWriteToComm(); + afx_msg BOOL PreTranslateMessage(MSG* pMsg); + afx_msg void OnEnChangeEdit(); + afx_msg BOOL OnMouseWheel(UINT nFlags,short zDelta,CPoint pt); + afx_msg void OnBnClickedPlatformIni(); + afx_msg void OnBnClickedMarkAreaDlg(); + afx_msg void OnBnClickedObjCompDlg(); + afx_msg void OnBnClickedCreatObjByLayerShape(); + afx_msg void OnBnClickedReadDxfFile(); + afx_msg void OnBnClickedReadPltFile(); + afx_msg void OnBnClickedReadObjFile(); + afx_msg void OnBnClickedSaveObjFile(); + afx_msg void OnBnClickedPciMark(); + afx_msg void OnBnClickedPciMultiAreaMark(); + afx_msg void OnBnClickedCutByPlatfrom(); + afx_msg void OnBnClickedCcdCatch(); + afx_msg void OnBnClickedCcdCatchTwoMark(); + afx_msg void OnBnClickedObjToCcdMode(); + afx_msg void OnBnClickedSetMarkPt(); + afx_msg void OnBnClickedCreatVisionData(); + afx_msg void OnBnClickedOpenMak(); + afx_msg void OnBnClickedAdjustProductPos(); + CString m_IP; + int m_port; + afx_msg void OnBnClickedConnect(); + afx_msg void OnBnClickedOpenFile(); + afx_msg void OnBnClickedTransProduct(); + afx_msg void OnBnClickedStartWork(); + afx_msg void OnBnClickedinitPlatform(); + afx_msg void OnBnClickedCopyGridData(); + +}; diff --git a/LaiPuLaser/DlgUserMgr.cpp b/LaiPuLaser/DlgUserMgr.cpp new file mode 100644 index 0000000..dc68b81 --- /dev/null +++ b/LaiPuLaser/DlgUserMgr.cpp @@ -0,0 +1,108 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgUserMgr.h" +#include "afxdialogex.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" +#include "DlgCreatAccount.h" + + +IMPLEMENT_DYNAMIC(CDlgUserMgr, CDialogEx) +CDlgUserMgr::CDlgUserMgr(CWnd* pParent /*=NULL*/) + : CDialogEx(CDlgUserMgr::IDD, pParent) +{ + m_CurSelIdx = -1;//ǰѡ +} +CDlgUserMgr::~CDlgUserMgr() +{ +} +void CDlgUserMgr::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_USER_LIST, m_UserList); +} +BEGIN_MESSAGE_MAP(CDlgUserMgr, CDialogEx) + + ON_NOTIFY(NM_CLICK, IDC_USER_LIST, &CDlgUserMgr::OnNMClickUserList) + ON_BN_CLICKED(IDC_DEL_SEL, &CDlgUserMgr::OnBnClickedDelSel) + ON_BN_CLICKED(IDC_CREAT, &CDlgUserMgr::OnBnClickedCreatAccount) +END_MESSAGE_MAP() + +//ػһּ +BOOL CDlgUserMgr::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + if(c==VK_RETURN || c==VK_ESCAPE) + { + return TRUE; + } + } + return CDialogEx::PreTranslateMessage(pMsg); +} + +BOOL CDlgUserMgr::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + IniUserList(); + UpdateUserList(); + UpdateData(FALSE); + return TRUE; +} +void CDlgUserMgr::IniUserList() +{ + //÷ + m_UserList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + m_UserList.InsertColumn(idx,"",LVCFMT_CENTER,50,-1); + idx++; + m_UserList.InsertColumn(idx,"û",LVCFMT_CENTER,90,-1); +} +void CDlgUserMgr::UpdateUserList() +{ + m_UserList.DeleteAllItems(); + gAuthorityMgr->InsertToList(m_UserList); + UpdateData(FALSE); +} +//ȡlist ǰѡк +int CDlgUserMgr::GetCurListIdx(CListCtrl &list) +{ + POSITION pos = list.GetFirstSelectedItemPosition(); + if (pos == NULL) + { + return -1; + } + else + { + while (pos) + { + int nItem = list.GetNextSelectedItem(pos); + return nItem; + } + } + return -1; +} +void CDlgUserMgr::OnNMClickUserList(NMHDR *pNMHDR, LRESULT *pResult) +{ + LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); + *pResult = 0; + m_CurSelIdx=GetCurListIdx(m_UserList); +} +void CDlgUserMgr::OnBnClickedDelSel() +{ + gAuthorityMgr->DelUser(m_CurSelIdx); + UpdateUserList(); +} +void CDlgUserMgr::OnBnClickedCreatAccount() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + { + return; + } + CDlgCreatAccount dlg; + dlg.DoModal(); + UpdateUserList(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgUserMgr.h b/LaiPuLaser/DlgUserMgr.h new file mode 100644 index 0000000..4934916 --- /dev/null +++ b/LaiPuLaser/DlgUserMgr.h @@ -0,0 +1,28 @@ +#pragma once + +//û +class CDlgUserMgr : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgUserMgr) + +public: + CDlgUserMgr(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgUserMgr(); + void IniUserList(); + void UpdateUserList(); + int GetCurListIdx(CListCtrl &list); +// Ի + enum { IDD = IDD_USER_MGR }; +private: + CListCtrl m_UserList; + int m_CurSelIdx;//ǰѡ +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +public: + afx_msg BOOL PreTranslateMessage(MSG* pMsg); + afx_msg void OnNMClickUserList(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnBnClickedDelSel(); + afx_msg void OnBnClickedCreatAccount(); +}; diff --git a/LaiPuLaser/DlgValStrBase.cpp b/LaiPuLaser/DlgValStrBase.cpp new file mode 100644 index 0000000..a378f70 --- /dev/null +++ b/LaiPuLaser/DlgValStrBase.cpp @@ -0,0 +1,54 @@ +// DlgValStrFixed.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgValStrBase.h" +#include "afxdialogex.h" + +// CDlgValStrFixed Ի + +IMPLEMENT_DYNAMIC(CDlgValStrBase, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgValStrBase, CDialogEx) +END_MESSAGE_MAP() + +CDlgValStrBase::CDlgValStrBase(int IDD,CWnd* pParent /*=NULL*/) + : CDialogEx(IDD, pParent) +{ + m_pValStrBase = NULL;//ǰValStr +} + +CDlgValStrBase::~CDlgValStrBase() +{ +} +void CDlgValStrBase::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +void CDlgValStrBase::SetParm(CValString *p,bool bAdd,int SelIdx) +{ + m_pValString = p; + m_bAdd = bAdd; + m_SelIdx = SelIdx; + + if(m_bAdd) + { + + } + else if(m_pValString) + { + //ȡǰĿɱַָ + m_pValStrBase = m_pValString->GetValStrPtr(m_SelIdx); + //ÿԻǿתΪԼָ + DynamicCastStrBase(); + } +} + +BOOL CDlgValStrBase::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + UpdateData(FALSE); + return TRUE; +} diff --git a/LaiPuLaser/DlgValStrBase.h b/LaiPuLaser/DlgValStrBase.h new file mode 100644 index 0000000..496d7a1 --- /dev/null +++ b/LaiPuLaser/DlgValStrBase.h @@ -0,0 +1,25 @@ +#pragma once +#include "ValString.h" + +// CDlgValStrFixed Ի + +class CDlgValStrBase : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgValStrBase) + +public: + CDlgValStrBase(int IDD,CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgValStrBase(); + void SetParm(CValString *p,bool bAdd,int SelIdx); +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + virtual void DynamicCastStrBase(){}; + DECLARE_MESSAGE_MAP() + +protected: + CValString *m_pValString; + bool m_bAdd;//ӻ޸ + int m_SelIdx;//ǰѡ,޸ĵʱ + CValStrBase *m_pValStrBase;//ǰValStr +}; diff --git a/LaiPuLaser/DlgValStrDate.cpp b/LaiPuLaser/DlgValStrDate.cpp new file mode 100644 index 0000000..b2711d1 --- /dev/null +++ b/LaiPuLaser/DlgValStrDate.cpp @@ -0,0 +1,71 @@ +// DlgValStrDate.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgValStrDate.h" +#include "afxdialogex.h" +#include "ValStrDate.h" +#include "EnumValStrType.h" + +// CDlgValStrDate Ի + +IMPLEMENT_DYNAMIC(CDlgValStrDate, CDlgValStrBase) +BEGIN_MESSAGE_MAP(CDlgValStrDate, CDlgValStrBase) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +END_MESSAGE_MAP() + +CDlgValStrDate::CDlgValStrDate(CWnd* pParent /*=NULL*/) + : CDlgValStrBase(CDlgValStrDate::IDD, pParent) +{ + +} + +CDlgValStrDate::~CDlgValStrDate() +{ +} + +void CDlgValStrDate::DoDataExchange(CDataExchange* pDX) +{ + CDlgValStrBase::DoDataExchange(pDX); + DDX_Control(pDX, IDC_DATE_TYPE_COMBO, m_ValDateTypeComb); +} + +// CDlgValStrDate Ϣ +void CDlgValStrDate::DynamicCastStrBase() +{ + m_pValStrDate = dynamic_cast(m_pValStrBase); +} +BOOL CDlgValStrDate::OnInitDialog() +{ + CDlgValStrBase::OnInitDialog(); + + IniDateTypeComb(); + if(!m_bAdd && m_pValStrDate) + { + m_ValDateTypeComb.SetCurSel(m_pValStrDate->GetDateType()); + } + + UpdateData(FALSE); + return TRUE; +} +void CDlgValStrDate::IniDateTypeComb() +{ + for(VAL_DATE_TYPR type = _DATE_YEAR_FOUR;type<_DATE_MAX;type = (VAL_DATE_TYPR)(type+1)) + { + CValStrDate ValStrDate; + ValStrDate.SetDateType(type); + CString str = ValStrDate.GetDateTypeStr() + "-" + ValStrDate.GetValStr(); + m_ValDateTypeComb.InsertString(type,str); + } + m_ValDateTypeComb.SetCurSel(0); +} +void CDlgValStrDate::OnBnClickedOk() +{ + UpdateData(TRUE); + CValStrDate *p = new CValStrDate; + p->SetDateType((VAL_DATE_TYPR)m_ValDateTypeComb.GetCurSel()); + m_pValString->AddValStr(p); + + OnOK(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgValStrDate.h b/LaiPuLaser/DlgValStrDate.h new file mode 100644 index 0000000..f97c46e --- /dev/null +++ b/LaiPuLaser/DlgValStrDate.h @@ -0,0 +1,29 @@ +#pragma once +#include "ValString.h" +#include "DlgValStrBase.h" + +// CDlgValStrDate Ի +class CValStrDate; +class CDlgValStrDate : public CDlgValStrBase +{ + DECLARE_DYNAMIC(CDlgValStrDate) + +public: + CDlgValStrDate(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgValStrDate(); + +// Ի + enum { IDD = IDD_VAL_STR_DATE_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + virtual BOOL OnInitDialog(); + virtual void DynamicCastStrBase(); + DECLARE_MESSAGE_MAP() +private: + void IniDateTypeComb(); +private: + CValStrDate *m_pValStrDate;//ǰ޸ĵ + CComboBox m_ValDateTypeComb; +}; diff --git a/LaiPuLaser/DlgValStrFixed.cpp b/LaiPuLaser/DlgValStrFixed.cpp new file mode 100644 index 0000000..618bf84 --- /dev/null +++ b/LaiPuLaser/DlgValStrFixed.cpp @@ -0,0 +1,70 @@ +// DlgValStrFixed.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgValStrFixed.h" +#include "afxdialogex.h" +#include "ValStrFixed.h" + +// CDlgValStrFixed Ի + +IMPLEMENT_DYNAMIC(CDlgValStrFixed, CDlgValStrBase) +BEGIN_MESSAGE_MAP(CDlgValStrFixed, CDlgValStrBase) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +END_MESSAGE_MAP() + +CDlgValStrFixed::CDlgValStrFixed(CWnd* pParent /*=NULL*/) + : CDlgValStrBase(CDlgValStrFixed::IDD,pParent) +{ + m_pValStrFixed = NULL;//ǰ޸ĵ +} +CDlgValStrFixed::~CDlgValStrFixed() +{ +} +void CDlgValStrFixed::DoDataExchange(CDataExchange* pDX) +{ + CDlgValStrBase::DoDataExchange(pDX); + DDX_Text(pDX, IDC_VAL_STR_FIXED_EDIT, m_FixedStr); +} +void CDlgValStrFixed::DynamicCastStrBase() +{ + m_pValStrFixed = dynamic_cast(m_pValStrBase); +} +BOOL CDlgValStrFixed::OnInitDialog() +{ + CDlgValStrBase::OnInitDialog(); + + if(m_bAdd) + { + m_FixedStr = "TEXT"; + } + else if(m_pValStrFixed) + { + m_FixedStr = m_pValStrFixed->GetValStr(); + } + UpdateData(FALSE); + return TRUE; +} +// CDlgValStrFixed Ϣ +void CDlgValStrFixed::OnBnClickedOk() +{ + UpdateData(TRUE); + if(m_bAdd)// + { + if(m_FixedStr!="") + { + CValStrFixed *p = new CValStrFixed; + p->SetValStr(m_FixedStr); + m_pValString->AddValStr(p); + } + } + else//޸ + { + if(m_pValStrFixed) + { + m_pValStrFixed->SetValStr(m_FixedStr); + } + } + OnOK(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgValStrFixed.h b/LaiPuLaser/DlgValStrFixed.h new file mode 100644 index 0000000..f70845c --- /dev/null +++ b/LaiPuLaser/DlgValStrFixed.h @@ -0,0 +1,28 @@ +#pragma once +#include "ValString.h" +#include "DlgValStrBase.h" + +// CDlgValStrFixed Ի +class CValStrFixed; +class CDlgValStrFixed : public CDlgValStrBase +{ + DECLARE_DYNAMIC(CDlgValStrFixed) + +public: + CDlgValStrFixed(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgValStrFixed(); + +// Ի + enum { IDD = IDD_VAL_STR_FIXED_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + virtual BOOL OnInitDialog(); + virtual void DynamicCastStrBase(); + DECLARE_MESSAGE_MAP() +private: + CValStrFixed *m_pValStrFixed;//ǰ޸ĵ + CString m_FixedStr; + +}; diff --git a/LaiPuLaser/DlgValStrSN.cpp b/LaiPuLaser/DlgValStrSN.cpp new file mode 100644 index 0000000..d1effda --- /dev/null +++ b/LaiPuLaser/DlgValStrSN.cpp @@ -0,0 +1,101 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgValStrSN.h" +#include "afxdialogex.h" +#include "ValStrSN.h" +#include "MsgBox.h" + +// CDlgValStrDate Ի + +IMPLEMENT_DYNAMIC(CDlgValStrSN, CDlgValStrBase) +BEGIN_MESSAGE_MAP(CDlgValStrSN, CDlgValStrBase) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +END_MESSAGE_MAP() + +CDlgValStrSN::CDlgValStrSN(CWnd* pParent /*=NULL*/) + : CDlgValStrBase(CDlgValStrSN::IDD, pParent) +{ + m_SnMin = 0;//ʼ + m_SnMax = 9999;// + m_SnCur = 1;//ǰ + m_SnInc = 1;// + m_EachMarkTimes = 1;//ÿ̴ + m_CurMarkTimes = 0;//ǰ̴ +} + +CDlgValStrSN::~CDlgValStrSN() +{ +} + +void CDlgValStrSN::DoDataExchange(CDataExchange* pDX) +{ + CDlgValStrBase::DoDataExchange(pDX); + DDX_Text(pDX, IDC_SN_START, m_SnMin); + DDX_Text(pDX, IDC_SN_END, m_SnMax); + DDX_Text(pDX, IDC_SN_CUR, m_SnCur); + DDX_Text(pDX, IDC_SN_INC, m_SnInc); + DDX_Text(pDX, IDC_EACH_MARK_TIME, m_EachMarkTimes); + DDX_Text(pDX, IDC_CUR_MARK_TIME, m_CurMarkTimes); +} + +// CDlgValStrDate Ϣ +void CDlgValStrSN::DynamicCastStrBase() +{ + m_pValStr = dynamic_cast(m_pValStrBase); +} +BOOL CDlgValStrSN::OnInitDialog() +{ + CDlgValStrBase::OnInitDialog(); + if(!m_bAdd && m_pValStr) + { + m_SnMin = m_pValStr->m_SnMin;//ʼ + m_SnMax = m_pValStr->m_SnMax;// + m_SnCur = m_pValStr->m_SnCur;//ǰ + m_SnInc = m_pValStr->m_SnInc;// + m_EachMarkTimes = m_pValStr->m_EachMarkTimes;//ÿ̴ + m_CurMarkTimes = m_pValStr->m_CurMarkTimes;//ǰ̴ + } + UpdateData(FALSE); + return TRUE; +} +void CDlgValStrSN::OnBnClickedOk() +{ + UpdateData(TRUE); + if(!CheckInput()) + return; + if(m_bAdd)// + { + CValStrSN *p = new CValStrSN; + SetValStrSNPar(p); + m_pValString->AddValStr(p); + } + else//޸ + { + if(m_pValStr) + { + SetValStrSNPar(m_pValStr); + } + } + OnOK(); +} +// +bool CDlgValStrSN::CheckInput() +{ + if(m_SnCurm_SnMax) + { + CMsgBox MsgBox; + MsgBox.Show("[ǰ][С][]֮!",true); + return false; + } + return true; +} +void CDlgValStrSN::SetValStrSNPar(CValStrSN* p) +{ + p->m_SnMin = m_SnMin;//ʼ + p->m_SnMax = m_SnMax;// + p->m_SnCur = m_SnCur-m_SnInc;//ǰ + p->m_SnInc = m_SnInc;// + p->m_EachMarkTimes = m_EachMarkTimes;//ÿ̴ + p->m_CurMarkTimes = m_CurMarkTimes;//ǰ̴ +} \ No newline at end of file diff --git a/LaiPuLaser/DlgValStrSN.h b/LaiPuLaser/DlgValStrSN.h new file mode 100644 index 0000000..a701a0c --- /dev/null +++ b/LaiPuLaser/DlgValStrSN.h @@ -0,0 +1,36 @@ +#pragma once +#include "ValString.h" +#include "DlgValStrBase.h" + +// CDlgValStrDate Ի +class CValStrSN; +class CDlgValStrSN : public CDlgValStrBase +{ + DECLARE_DYNAMIC(CDlgValStrSN) + +public: + CDlgValStrSN(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgValStrSN(); + +// Ի + enum { IDD = IDD_VAL_STR_SN_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + virtual BOOL OnInitDialog(); + virtual void DynamicCastStrBase(); + DECLARE_MESSAGE_MAP() +private: + void IniDateTypeComb(); + bool CheckInput(); + void SetValStrSNPar(CValStrSN* p); +private: + CValStrSN *m_pValStr;//ǰ޸ĵ + int m_SnMin;//ʼ + int m_SnMax;// + int m_SnCur;//ǰ + int m_SnInc;// + int m_EachMarkTimes;//ÿ̴ + int m_CurMarkTimes;//ǰ̴ +}; diff --git a/LaiPuLaser/DlgValStrTime.cpp b/LaiPuLaser/DlgValStrTime.cpp new file mode 100644 index 0000000..d0aac33 --- /dev/null +++ b/LaiPuLaser/DlgValStrTime.cpp @@ -0,0 +1,71 @@ +// DlgValStrDate.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgValStrTime.h" +#include "afxdialogex.h" +#include "ValStrtime.h" +#include "EnumValStrType.h" + +// CDlgValStrDate Ի + +IMPLEMENT_DYNAMIC(CDlgValStrTime, CDlgValStrBase) +BEGIN_MESSAGE_MAP(CDlgValStrTime, CDlgValStrBase) +ON_BN_CLICKED(IDOK,OnBnClickedOk) +END_MESSAGE_MAP() + +CDlgValStrTime::CDlgValStrTime(CWnd* pParent /*=NULL*/) + : CDlgValStrBase(CDlgValStrTime::IDD, pParent) +{ + +} + +CDlgValStrTime::~CDlgValStrTime() +{ +} + +void CDlgValStrTime::DoDataExchange(CDataExchange* pDX) +{ + CDlgValStrBase::DoDataExchange(pDX); + DDX_Control(pDX, IDC_TIME_TYPE_COMBO, m_ValTypeComb); +} + +// CDlgValStrDate Ϣ +void CDlgValStrTime::DynamicCastStrBase() +{ + m_pValStr = dynamic_cast(m_pValStrBase); +} +BOOL CDlgValStrTime::OnInitDialog() +{ + CDlgValStrBase::OnInitDialog(); + + IniTimeTypeComb(); + if(!m_bAdd && m_pValStr) + { + m_ValTypeComb.SetCurSel(m_pValStr->GetTimeType()); + } + + UpdateData(FALSE); + return TRUE; +} +void CDlgValStrTime::IniTimeTypeComb() +{ + for(VAL_TIME_TYPR type = _TIME_HOUR_24;type<_TIME_MAX;type = (VAL_TIME_TYPR)(type+1)) + { + CValStrTime ValStr; + ValStr.SetTimeType(type); + CString str = ValStr.GetTimeTypeStr(); + m_ValTypeComb.InsertString(type,str); + } + m_ValTypeComb.SetCurSel(0); +} +void CDlgValStrTime::OnBnClickedOk() +{ + UpdateData(TRUE); + CValStrTime *p = new CValStrTime; + p->SetTimeType((VAL_TIME_TYPR)m_ValTypeComb.GetCurSel()); + m_pValString->AddValStr(p); + + OnOK(); +} \ No newline at end of file diff --git a/LaiPuLaser/DlgValStrTime.h b/LaiPuLaser/DlgValStrTime.h new file mode 100644 index 0000000..11bc400 --- /dev/null +++ b/LaiPuLaser/DlgValStrTime.h @@ -0,0 +1,29 @@ +#pragma once +#include "ValString.h" +#include "DlgValStrBase.h" + +// CDlgValStrDate Ի +class CValStrTime; +class CDlgValStrTime : public CDlgValStrBase +{ + DECLARE_DYNAMIC(CDlgValStrTime) + +public: + CDlgValStrTime(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgValStrTime(); + +// Ի + enum { IDD = IDD_VAL_STR_TIME_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg void OnBnClickedOk(); + virtual BOOL OnInitDialog(); + virtual void DynamicCastStrBase(); + DECLARE_MESSAGE_MAP() +private: + void IniTimeTypeComb(); +private: + CValStrTime *m_pValStr;//ǰ޸ĵ + CComboBox m_ValTypeComb; +}; diff --git a/LaiPuLaser/DlgVariableString.cpp b/LaiPuLaser/DlgVariableString.cpp new file mode 100644 index 0000000..ffff760 --- /dev/null +++ b/LaiPuLaser/DlgVariableString.cpp @@ -0,0 +1,439 @@ +// VariableStringDlg.cpp : ʵļ +// + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "DlgVariableString.h" +#include "afxdialogex.h" +#include "ValStrFixed.h" +#include "ValStrDate.h" +#include "DlgValStrFixed.h" +#include "DlgValStrDate.h" +#include "DlgValStrTime.h" +#include "DlgValStrSN.h" +#include "DlgFontset.h" +#include "GlobalFunction.h" +#include "ObjTxt.h" +#include "FontTypeMgr.h" +#include "LogMgr.h" +#include "MarkObjPropertieMgr.h" +#include "CommandModifiString.h" +#include "DlgFill.h" +#include "CommandMgr.h" + +// CDlgVariableString Ի + +IMPLEMENT_DYNAMIC(CDlgVariableString, CDialogEx) + +CDlgVariableString::CDlgVariableString(CWnd* pParent /*=NULL*/) +{ + IniCtrVal(); +} + +CDlgVariableString::~CDlgVariableString() +{ +} + +void CDlgVariableString::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_VAL_STR_LIST, m_ValStrList); + DDX_Control(pDX, IDC_VAL_STR_TYPE_COMBO, m_ValStrTypeComb); + DDX_Control(pDX, IDC_FONT_COMBO, m_FontNameComb); + DDX_Control(pDX, IDC_FONT_TYPE_COMBO, m_FontTypeComb); + + DDX_Control(pDX, IDC_VAL_STR_CHECK, m_bValStrCheck); + DDX_Text(pDX, IDC_STR_EDIT, m_String); +} + +BEGIN_MESSAGE_MAP(CDlgVariableString, CDialogEx) + ON_BN_CLICKED(IDC_ADD_VAL_STR_BTN, &CDlgVariableString::OnBnClickedAddValStrBtn) + ON_BN_CLICKED(IDC_DEL_VAL_STR_BTN, &CDlgVariableString::OnBnClickedDelValStrBtn) + ON_BN_CLICKED(IDC_UP_VAL_STR_BTN, &CDlgVariableString::OnBnClickedUpValStrBtn) + ON_BN_CLICKED(IDC_DOWN_VAL_STR_BTN, &CDlgVariableString::OnBnClickedDownValStrBtn) + ON_NOTIFY(NM_CLICK, IDC_VAL_STR_LIST, &CDlgVariableString::OnNMClickValStrList) + ON_BN_CLICKED(IDC_MODIF_VAL_STR_BTN, &CDlgVariableString::OnBnClickedModifValStrBtn) + ON_BN_CLICKED(IDC_FONT_BTN, &CDlgVariableString::OnBnClickedFontBtn) + ON_BN_CLICKED(IDC_VAL_STR_CHECK, &CDlgVariableString::OnBnClickedValStrCheck) + ON_BN_CLICKED(IDC_COMMIT_BTN, &CDlgVariableString::OnBnClickedCommitBtn) + ON_CBN_SELCHANGE(IDC_FONT_COMBO,OnCbnFontNameChange) + ON_CBN_SELCHANGE(IDC_FONT_TYPE_COMBO,OnCbnFontTypeChange) + + + ON_BN_CLICKED(IDC_FILL_BTN, &CDlgVariableString::OnBnClickedFillBtn) +END_MESSAGE_MAP() + +// CDlgVariableString Ϣ +#if 1//ʼ +BOOL CDlgVariableString::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + //ʼɱַб + IniValStrTypeComb(); + //ʼɱַlist + IniValStrList(); + //ʼֿļб + IniFontStyleComb(); + + UpdateData(FALSE); + return TRUE; +} +//ʼɱַб +void CDlgVariableString::IniValStrTypeComb() +{ + for(VAL_STR_TYPR type = _STR_FIXED;type<_STR_ERROR;type = (VAL_STR_TYPR)(type+1)) + { + CValStrBase ValStrBase; + ValStrBase.SetValStrType(type); + m_ValStrTypeComb.InsertString(type,ValStrBase.GetValTypeStr()); + } + m_ValStrTypeComb.SetCurSel(0); +} +//ʼؼ +void CDlgVariableString::IniCtrVal() +{ + m_CurSelListIdx = -1; + m_pObjString = NULL;//ǰָ + m_bValStr = false; + m_String = ""; +} +//ʼֿļб +void CDlgVariableString::IniFontStyleComb() +{ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + // + pFontTypeMgr.FontTypeNameInsertToComb(m_FontTypeComb); + //뵽б---------------------------------------------------------------------- + pFontTypeMgr.UpdateFontNameComb(m_FontNameComb); +} +#endif +// +bool CDlgVariableString::Check() +{ + if((m_pObjString)) + return true; + return false; +} +//DlgValStr +CDlgValStrBase *CDlgVariableString::DlgValStrFactory(VAL_STR_TYPR type) +{ + CDlgValStrBase *p = NULL; + switch(type) + { + case _STR_FIXED: + p = new CDlgValStrFixed; + break; + case _STR_SN: + p = new CDlgValStrSN; + break; + case _STR_DATE: + p = new CDlgValStrDate; + break; + case _STR_TIME: + p = new CDlgValStrTime; + break; + default: + break; + } + return p; +} +#if 1//ɱı +//ʼɱַlist +void CDlgVariableString::IniValStrList() +{ + //÷ + m_ValStrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); + // + int idx = 0; + m_ValStrList.InsertColumn(idx,"",LVCFMT_CENTER,50,-1); + idx++; + m_ValStrList.InsertColumn(idx,"",LVCFMT_CENTER,90,-1); +} +void CDlgVariableString::RefreshValStrList() +{ + m_ValStrList.DeleteAllItems(); + m_CurSelListIdx = -1; + if(Check()) + { + m_ValString.InsertList(m_ValStrList); + } + UpdateData(FALSE); +} +//ȡlist ǰѡк +int CDlgVariableString::GetCurListIdx(CListCtrl &list) +{ + POSITION pos = m_ValStrList.GetFirstSelectedItemPosition(); + if (pos == NULL) + { + return -1; + } + else + { + while (pos) + { + int nItem = m_ValStrList.GetNextSelectedItem(pos); + return nItem; + } + } + return -1; +} + +//б +void CDlgVariableString::OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult) +{ + *pResult = 0; + m_CurSelListIdx=GetCurListIdx(m_ValStrList); +} +bool CDlgVariableString::AddOrModifValStr(bool bAdd) +{ + if(!Check()) + return false; + if(!bAdd&&m_CurSelListIdx==-1) + return false; + + CDlgValStrBase *pDlg = NULL; + if(bAdd)//ӵİ + { + int idx = m_ValStrTypeComb.GetCurSel(); + pDlg = DlgValStrFactory((VAL_STR_TYPR)idx); + } + else//޸ĵİб + { + pDlg = DlgValStrFactory(m_ValString.GetSelValStrType(m_CurSelListIdx)); + } + if(pDlg) + { + pDlg->SetParm(&m_ValString,bAdd,m_CurSelListIdx); + if(pDlg->DoModal() == IDOK) + { + RefreshValStrList(); + delete pDlg; + return true; + } + delete pDlg; + } + return false; +} +void CDlgVariableString::AddOrModif(bool b) +{ + if(AddOrModifValStr(b)) + { + CreatObjUseNewPar();//Ӧ + } +} +// +void CDlgVariableString::OnBnClickedAddValStrBtn() +{ + AddOrModif(true); +} +//޸ +void CDlgVariableString::OnBnClickedModifValStrBtn() +{ + AddOrModif(false); +} +//ɾ +void CDlgVariableString::OnBnClickedDelValStrBtn() +{ + if(!Check()) + return; + m_ValString.DelSelValStr(m_CurSelListIdx); + CreatObjUseNewPar();//Ӧ + RefreshValStrList(); +} +void CDlgVariableString::SwapValStr(int NewIdx) +{ + if(!Check()) + return; + m_ValString.SwapValStr(m_CurSelListIdx,NewIdx); + RefreshValStrList(); + //Ӧ + CreatObjUseNewPar(); + //бѡ + m_CurSelListIdx = NewIdx; + m_ValStrList.SetItemState(m_CurSelListIdx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); + m_ValStrList.SetFocus(); +} + +// +void CDlgVariableString::OnBnClickedUpValStrBtn() +{ + int NewIdx = m_CurSelListIdx-1; + SwapValStr(NewIdx); +} +// +void CDlgVariableString::OnBnClickedDownValStrBtn() +{ + int NewIdx = m_CurSelListIdx+1; + SwapValStr(NewIdx); +} +//ǷÿɱıصĿؼ +void CDlgVariableString::EnableValStrCtr(bool bEnable) +{ + m_ValStrList.EnableWindow(bEnable); + GetDlgItem(IDC_ADD_VAL_STR_BTN)->EnableWindow(bEnable); + GetDlgItem(IDC_DEL_VAL_STR_BTN)->EnableWindow(bEnable); + GetDlgItem(IDC_UP_VAL_STR_BTN)->EnableWindow(bEnable); + GetDlgItem(IDC_DOWN_VAL_STR_BTN)->EnableWindow(bEnable); + GetDlgItem(IDC_MODIF_VAL_STR_BTN)->EnableWindow(bEnable); + GetDlgItem(IDC_VAL_STR_TYPE_COMBO)->EnableWindow(bEnable); + GetDlgItem(IDC_STR_EDIT)->EnableWindow(!bEnable); +} +//лǷΪɱı +void CDlgVariableString::OnBnClickedValStrCheck() +{ + UpdateData(TRUE); + m_bValStr = m_bValStrCheck.GetCheck(); + EnableValStrCtr(m_bValStr); +} +#endif +#if 1 +//text ˢʾ +void CDlgVariableString::BindingObjString(CObjString *p) +{ + if(!p) + return; + //ָ + m_pObjString = p; + //p ӦΪǰ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + pFontTypeMgr.SetCurFontByName(p->GetFontTypeName(),p->GetFontName()); + //ÿɱıĿ + p->GetValStrCopy(m_ValString); + //Ӧؼ + m_bValStr = m_ValString.GetbValStr(); + m_String = m_ValString.GetString(); + //ˢ¿ؼʾ + RefreshControlVal(); +} + +//ˢ¿ؼֵ +void CDlgVariableString::RefreshControlVal() +{ + //Ƿɱıcheck + m_bValStrCheck.SetCheck(m_bValStr); + //ǷÿɱıصĿؼ + EnableValStrCtr(m_bValStr); + //ʼֿļб + IniFontStyleComb(); + UpdateData(FALSE); + //ɱıб + RefreshValStrList(); +} + +//ѡӦ +void CDlgVariableString::OnCbnFontTypeChange() +{ + UpdateData(TRUE); + int idx = m_FontTypeComb.GetCurSel(); + + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + pFontTypeMgr.SetCurFontType(idx);//õǰѡ + //ˢбCComboBox + pFontTypeMgr.UpdateFontNameComb(m_FontNameComb); +} +//ѡӦ +void CDlgVariableString::OnCbnFontNameChange() +{ + UpdateData(TRUE); + int idx = m_FontNameComb.GetCurSel(); + + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + pFontTypeMgr.GetCurFontName(idx);//õǰѡ +} +//ȡ +void CDlgVariableString::UnBindingObj() +{ + IniCtrVal(); + RefreshControlVal(); +} +//°󶨶IJ +void CDlgVariableString::UpdateBindingObjVal() +{ + if(!Check()) + return; + + UpdateData(TRUE); + if(m_String=="") + { + m_String = "TEXT"; + } + m_ValString.SetString(m_String); + m_ValString.SetbValStr(m_bValStr); + + //ʱӦõ + m_pObjString->SetValStr(m_ValString); + //õ + m_pObjString->SetUseCurFontName(); +} +#endif +#if 1 +//Ӧ +void CDlgVariableString::OnBnClickedCommitBtn() +{ + CreatObjUseNewPar(); +} +//Ӧ͵IJobj +void CDlgVariableString::CreatObjUseNewPar() +{ + if(!Check()) + return; + + CCommandModifiString *pCmd = new CCommandModifiString; + + SStringPar par; + m_pObjString->GetValStrCopy(par.m_ValString); + par.m_FontTypeName = m_pObjString->GetFontTypeName(); + par.m_FontName = m_pObjString->GetFontName(); + pCmd->SetStringPar(par,true);//ɵIJ + + //°󶨶IJ + UpdateBindingObjVal(); + + m_pObjString->GetValStrCopy(par.m_ValString); + par.m_FontTypeName = m_pObjString->GetFontTypeName(); + par.m_FontName = m_pObjString->GetFontName(); + pCmd->SetStringPar(par,false);//µIJ + + gCommandMgr.AddUndoCommand(pCmd); + pCmd->Excute(); + + GetCurViewPtr()->RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +//ðť +void CDlgVariableString::OnBnClickedFontBtn() +{ + if(!Check()) + return; + + if(strcmp(typeid(CObjTxt).name(), typeid(*m_pObjString).name()) == 0) + { + CObjTxt *p = dynamic_cast(m_pObjString); + CDlgFontSet dlg(p->GetFontPar()); + if(dlg.DoModal()==IDOK) + { + GetCurViewPtr()->RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + } + } +} +// +void CDlgVariableString::OnBnClickedFillBtn() +{ + if(!Check()) + return; + + CDlgFill dlg(m_pObjString->GetFillPar()); + if(dlg.DoModal()==IDOK) + { + GetCurViewPtr()->RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + } +} + +#endif + + diff --git a/LaiPuLaser/DlgVariableString.h b/LaiPuLaser/DlgVariableString.h new file mode 100644 index 0000000..4d60799 --- /dev/null +++ b/LaiPuLaser/DlgVariableString.h @@ -0,0 +1,78 @@ +#pragma once +#include "ValString.h" +#include "GlobalDefine.h" +#include "ObjTxt.h" +#include "afxwin.h" +#include "ObjString.h" +#include "EnumValStrType.h" +#include "DlgPane.h" + +// CDlgVariableString Ի + + +class CDlgValStrBase; +class CDlgVariableString : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgVariableString) + +public: + CDlgVariableString(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgVariableString(); + virtual UINT GetIDD(){return CDlgVariableString::IDD;}; + void RefreshValStrList(); + void BindingObjString(CObjString *p); + void UnBindingObj(); + +// Ի + enum { IDD = IDD_VARIABLE_STRING_DLG }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedAddValStrBtn(); + afx_msg void OnBnClickedDelValStrBtn(); + afx_msg void OnBnClickedUpValStrBtn(); + afx_msg void OnBnClickedDownValStrBtn(); + afx_msg void OnNMClickValStrList(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnBnClickedModifValStrBtn(); + afx_msg void OnBnClickedFontBtn(); + afx_msg void OnBnClickedValStrCheck(); + afx_msg void OnBnClickedCommitBtn(); + afx_msg void OnCbnFontNameChange(); + afx_msg void OnCbnFontTypeChange(); + +private: + void IniValStrList(); + void IniValStrTypeComb(); + void IniFontStyleComb(); + int GetCurListIdx(CListCtrl &list); + CDlgValStrBase *DlgValStrFactory(VAL_STR_TYPR type); + bool AddOrModifValStr(bool bAdd); + void SwapValStr(int NewIdx); + bool Check(); + void RefreshControlVal(); + void EnableValStrCtr(bool bEnable); + void IniCtrVal(); + void UpdateBindingObjVal(); + void AddOrModif(bool b); + void CreatObjUseNewPar(); + + +private: + CObjString *m_pObjString;//ǰָ + CValString m_ValString;//ǰõĿɱı +//ؼ------------------------------------------------------------ + CString m_String;//ı + CListCtrl m_ValStrList;//ɱıб + CComboBox m_ValStrTypeComb;//ɱַ + CComboBox m_FontTypeComb;//ֿ + CComboBox m_FontNameComb;//ֿ + int m_CurSelListIdx;//ɱıбǰѡк + bool m_bValStr;//ǷΪɱı + CButton m_bValStrCheck;//ǷΪɱı + +public: + afx_msg void OnBnClickedFillBtn(); +}; diff --git a/LaiPuLaser/DlgWorkTime.cpp b/LaiPuLaser/DlgWorkTime.cpp new file mode 100644 index 0000000..84db01b --- /dev/null +++ b/LaiPuLaser/DlgWorkTime.cpp @@ -0,0 +1,104 @@ + +#include "stdafx.h" +#include "DlgWorkTime.h" +#include "afxdialogex.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "CStringFuc.h" +#include "LaserDeviceMgr.h" + + +#define WORK_TIMER 1 +#define WORK_TIME_DELAY 500 + +IMPLEMENT_DYNAMIC(CDlgWorkTime, CDialogEx) +BEGIN_MESSAGE_MAP(CDlgWorkTime, CDialogEx) +ON_WM_TIMER() +ON_BN_CLICKED(IDC_GET_LASER_STATE, &CDlgWorkTime::OnBnClickedGetLaserState) +END_MESSAGE_MAP() + +CDlgWorkTime::CDlgWorkTime(CWnd* pParent /*=NULL*/) + : m_LaserState(_T("")) +{ + +} + +CDlgWorkTime::~CDlgWorkTime() +{ +} + +void CDlgWorkTime::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_SHOW_TIME, m_CurTime); + DDX_Text(pDX, IDC_LASER_STATE, m_LaserState); +} + +// CDlgStdMarkCtr Ϣ +BOOL CDlgWorkTime::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + m_CurTime = "00:00:00"; + + UpdateData(FALSE); + return TRUE; +} +//ʼʱ +void CDlgWorkTime::StartRecordTime() +{ + //¼ʼʱ + CTime CurTime; + m_StartTime=CTime::GetCurrentTime(); + SetTimer(WORK_TIMER,WORK_TIME_DELAY,NULL); +} +//ʱ +void CDlgWorkTime::StopRecordTime() +{ + KillTimer(WORK_TIMER); +} +//µǰĹʱ +void CDlgWorkTime::UpdateTime() +{ + //ȡǰϵͳʱ + CTime CurTime; + CTimeSpan TimeSpan;//ʱ + CurTime=CTime::GetCurrentTime(); + TimeSpan = CurTime - m_StartTime; + + m_CurTime = Time2Str(TimeSpan.GetHours())+":"+Time2Str(TimeSpan.GetMinutes())+":"+Time2Str(TimeSpan.GetSeconds()); +} +void CDlgWorkTime::OnTimer(UINT nIDEvent) +{ + if(nIDEvent == WORK_TIMER) + { + UpdateTime(); + UpdateData(FALSE); + } + CDialog::OnTimer(nIDEvent); +} + +CString CDlgWorkTime::GetTime(int seconds) +{ + int mins = seconds/60; + CString StrMin; + if(mins<10) + StrMin = "0"+Int2CString(mins); + else + StrMin = Int2CString(mins); + + int Secs = seconds%60; + CString StrSec; + if(Secs<10) + StrSec = "0"+Int2CString(Secs); + else + StrSec = Int2CString(Secs); + + CString str = "00:"+StrMin+":"+StrSec; + return str; +} +void CDlgWorkTime::OnBnClickedGetLaserState() +{ + + UpdateData(FALSE); +} diff --git a/LaiPuLaser/DlgWorkTime.h b/LaiPuLaser/DlgWorkTime.h new file mode 100644 index 0000000..81ee136 --- /dev/null +++ b/LaiPuLaser/DlgWorkTime.h @@ -0,0 +1,30 @@ +#pragma once + +#include "DlgPane.h" + +class CDlgWorkTime : public CDlgPane +{ + DECLARE_DYNAMIC(CDlgWorkTime) +public: + CDlgWorkTime(CWnd* pParent = NULL); // ׼캯 + virtual ~CDlgWorkTime(); + virtual UINT GetIDD(){return CDlgWorkTime::IDD;}; + void UpdateTime(); + void StartRecordTime(); + void StopRecordTime(); +// Ի + enum { IDD = IDD_WORK_TIME }; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + DECLARE_MESSAGE_MAP() +private: + CString GetTime(int seconds); +private: + CString m_CurTime;//ǰʱ + CTime m_StartTime;//ʼʱʱ +public: + afx_msg void OnBnClickedGetLaserState(); + CString m_LaserState; +}; diff --git a/LaiPuLaser/DrawSimpleShape.h b/LaiPuLaser/DrawSimpleShape.h new file mode 100644 index 0000000..e4508d0 --- /dev/null +++ b/LaiPuLaser/DrawSimpleShape.h @@ -0,0 +1,177 @@ +#pragma once +#include "GlobalDrawMgr.h" +#include "SequentialPoint.h" +#include "ObjCircle.h" + + +//һЩ򵥵ͼ +inline void DrawRect(CDC* pDC,CPen&Pen,Dbxy pt1,Dbxy pt2,bool bXor = true) +{ + CSequentialPoint PtContainer; + PtContainer.AddDataPoint(Dbxy(pt1.x,pt1.y)); + PtContainer.AddDataPoint(Dbxy(pt1.x,pt2.y)); + PtContainer.AddDataPoint(Dbxy(pt2.x,pt2.y)); + PtContainer.AddDataPoint(Dbxy(pt2.x,pt1.y)); + PtContainer.AddDataPoint(Dbxy(pt1.x,pt1.y)); + + if(bXor) + { + int old_rop = pDC->SetROP2(R2_XORPEN); + PtContainer.Draw( pDC, Pen); + pDC->SetROP2(old_rop); + } + else + { + PtContainer.Draw( pDC, Pen); + } +} +inline void DrawRect(CDC* pDC,CPen&Pen,DbRect rect,bool bXor = true) +{ + Dbxy pt1(rect.L,rect.T); + Dbxy pt2(rect.R,rect.B); + DrawRect(pDC,Pen,pt1,pt2,bXor); +} +//һ +inline void DrawRect(CDC* pDC,CPen&Pen,Dbxy pt,double size,bool bXor = true) +{ + Dbxy pt1(pt.x-size,pt.y+size); + Dbxy pt2(pt.x+size,pt.y-size); + DrawRect(pDC,Pen,pt1,pt2,bXor); +} +//һX ʮ +inline void XorDrawCrossX(CDC* pDC,CPen&Pen,Dbxy pt1,Dbxy pt2) +{ + CSequentialPoint PtContainer1,PtContainer2; + PtContainer1.AddDataPoint(Dbxy(pt1.x,pt1.y)); + PtContainer1.AddDataPoint(Dbxy(pt2.x,pt2.y)); + PtContainer2.AddDataPoint(Dbxy(pt2.x,pt1.y)); + PtContainer2.AddDataPoint(Dbxy(pt1.x,pt2.y)); + + int old_rop = pDC->SetROP2(R2_XORPEN); + PtContainer1.Draw( pDC, Pen); + PtContainer2.Draw( pDC, Pen); + pDC->SetROP2(old_rop); +} +inline void XorDrawCrossX(CDC* pDC,CPen&Pen,DbRect rect) +{ + Dbxy pt1(rect.L,rect.T); + Dbxy pt2(rect.R,rect.B); + XorDrawCrossX(pDC,Pen,pt1,pt2); +} +inline void DrawCrossX(CDC* pDC,CPen&Pen,Dbxy pt1,Dbxy pt2) +{ + CSequentialPoint PtContainer1,PtContainer2; + PtContainer1.AddDataPoint(Dbxy(pt1.x,pt1.y)); + PtContainer1.AddDataPoint(Dbxy(pt2.x,pt2.y)); + PtContainer2.AddDataPoint(Dbxy(pt2.x,pt1.y)); + PtContainer2.AddDataPoint(Dbxy(pt1.x,pt2.y)); + + PtContainer1.Draw( pDC, Pen); + PtContainer2.Draw( pDC, Pen); +} +inline void DrawCrossX(CDC* pDC,CPen&Pen,DbRect rect) +{ + Dbxy pt1(rect.L,rect.T); + Dbxy pt2(rect.R,rect.B); + DrawCrossX(pDC,Pen,pt1,pt2); +} +inline void XorDrawCross(CDC* pDC,bool bXor,CPen&Pen,Dbxy pt,double size) +{ + CSequentialPoint PtContainer1,PtContainer2; + PtContainer1.AddDataPoint(Dbxy(pt.x,pt.y+size)); + PtContainer1.AddDataPoint(Dbxy(pt.x,pt.y-size)); + PtContainer2.AddDataPoint(Dbxy(pt.x-size,pt.y)); + PtContainer2.AddDataPoint(Dbxy(pt.x+size,pt.y)); + + int old_rop; + if(bXor) + old_rop = pDC->SetROP2(R2_XORPEN); + PtContainer1.Draw( pDC, Pen); + PtContainer2.Draw( pDC, Pen); + if(bXor) + pDC->SetROP2(old_rop); +} +//һʵľ +inline void DrawSolidRect(CDC* pDC,COLORREF color,DbRect rect) +{ + CBrush brush,*pOldBrush; + brush.CreateSolidBrush(color); + pOldBrush=pDC->SelectObject(&brush); + pDC->Rectangle(&gDraw->DbRect2CRect(rect)); + pDC->SelectObject(pOldBrush); +} +inline void XorDrawLine(CDC* pDC,CPen&Pen,Dbxy pt1,Dbxy pt2) +{ + CSequentialPoint PtContainer; + PtContainer.AddDataPoint(Dbxy(pt1.x,pt1.y)); + PtContainer.AddDataPoint(Dbxy(pt2.x,pt2.y)); + + int old_rop = pDC->SetROP2(R2_XORPEN); + PtContainer.Draw( pDC, Pen); + pDC->SetROP2(old_rop); +} +inline void DrawLine(CDC* pDC,CPen&Pen,Dbxy pt1,Dbxy pt2) +{ + CSequentialPoint PtContainer; + PtContainer.AddDataPoint(Dbxy(pt1.x,pt1.y)); + PtContainer.AddDataPoint(Dbxy(pt2.x,pt2.y)); + PtContainer.Draw( pDC, Pen); +} + +//ȡתɫ +inline COLORREF GetXorColor(COLORREF color) +{ + BYTE r = GetRValue(color); + BYTE g = GetGValue(color); + BYTE b = GetBValue(color); + + COLORREF clr = RGB(255-r,255-g,255-b); + return clr; +} +inline void DrawCircle(CDC* pDC,CPen&Pen,Dbxy pt,double R,int DEdgeCnt) +{ + CObjCircle ObjCircle; + CCirclePar par; + par.CenterPt = pt; + par.Radius = R; + par.DEdgeCnt = DEdgeCnt; + ObjCircle.Creat(par); + ObjCircle.Draw(pDC,Pen); +} +inline void DrawSolidCircle(CDC* pDC,COLORREF color,Dbxy pt,double R) +{ + CBrush brush,*pOldBrush; + brush.CreateSolidBrush(color); + pOldBrush=pDC->SelectObject(&brush); + pDC->Ellipse(&gDraw->DbRect2CRect(DbRect(pt,R))); + pDC->SelectObject(pOldBrush); +} +//ھηΧڻ(gap ߵļ) +inline void Drawgridding(CDC* pDC,CPen&Pen,DbRect rect,double gap) +{ + // + { + Dbxy pt1(rect.L,rect.B); + Dbxy pt2(rect.R,rect.B); + double CurY = rect.B; + while(CurYSendCmd_OpenFile(FilePath); + //obj + CLayer &layer = GetLayerInstance(); + layer.SelAllObj(); + layer.DelSelObj(); + layer.NotSelAllObj();//ȫѡ + + if(ReadDxfFile(FilePath)) + { + layer.SelAllObj();//ȫѡ + layer.OnRotato(Angle);//ת90 + GetCurViewPtr()->MoveSelObjToCenter();//ƶ + layer.NotSelAllObj();//ȫѡ + + //undo ָ,layer obj + gCommandMgr.Reset(); + + //õǰƷͺ + CFileMgr FileMgr; + CString s = FileMgr.GetFileNameFromPath(FilePath,true); + gWorkRecordMgr->SetProductType(s); + + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SaveFileName(FilePath); + + //¼ǰļ + gProgramCutMgr->SetCurOpenFileName(FileMgr.GetFileNameFromPath(FilePath,true)); + gProgramCutMgr->SetCurOpenFileFullName(FilePath); + return true; + } + } + return false; +} +bool CDxfReadMgr::ReadDxfFile(CString FilePath) +{ + FILE* fp; + if (FilePath.IsEmpty()) + { + gLogMgr->WriteDebugLog("Func : ReadDxfFile ---->Dxf File Path Empty!");//·Ϊ + return false; + } + fp = fopen(FilePath, "r"); + if (!fp) + { + gLogMgr->WriteDebugLog("Func : ReadDxfFile ---->Dxf File Open Error!"); + return false; + } + m_LINE.Empty(); + m_CIRCLE.Empty(); + m_POLYLINE.Empty(); + m_ARC.Empty(); + m_TEXT.Empty(); + m_MTEXT.Empty(); + m_DIMENSION.Empty(); + + b_ShowArcRadius = true; + + ReadEntitiesSec(fp); + + //gLogMgr->WriteDebugLog(m_POLYLINE); + FilePath = "Func : ReadDxfFile ---->" + FilePath; + gLogMgr->WriteDebugLog(FilePath); + fclose(fp); + return true; +} +void CDxfReadMgr::SetVal(CPos &tagpos) +{ + tagpos = m_pos; +} + +//ȡʵ +bool CDxfReadMgr::ReadEntitiesSec(FILE* fp) +{ + if (fp == NULL) + return false; + + CString strBlockWord = _T("LINE, CIRCLE, LWPOLYLINE, ARC, MTEXT, TEXT, DIMENSION"); + CString strSynWord = _T("AcDbLine, AcDbCircle, AcDbPolyline, AcDbArc, AcDbMText,AcDbText,AcDbDimension"); + CString strDimension[2] ={"AcDbAlignedDimension", "AcDbOrdinateDimension"}; + + vector strTypeArray; + LoadSynWord(strBlockWord, strTypeArray);//͹ؼ + + int number[7] = {0}; + READ_MARKET("ENTITIES"); + fscanf(fp, "%s\n", m_str); + a++; + do { + fscanf(fp,"%s\n", m_str); + a++; + int size = strTypeArray.size(); + for (int i=0; i &strArrayKeyWords) +{ + CString strTemp; + int nPosPrior = -1; + int nPos; + + nPos = strSynWord.Find(_T(","), 0); + while(nPos!=-1) + { + strTemp = strSynWord.Mid(nPosPrior + 1, nPos - nPosPrior -1); + strTemp.TrimRight(); + strTemp.TrimLeft(); + strArrayKeyWords.push_back(strTemp); + nPosPrior = nPos; + nPos = strSynWord.Find(_T(","), nPosPrior + 1); + } + strTemp = strSynWord.Mid(nPosPrior +1, strSynWord.GetLength() - nPosPrior -1); + strTemp.TrimRight(); + strTemp.TrimLeft(); + strArrayKeyWords.push_back(strTemp); +} +bool CDxfReadMgr::LoadLineData(FILE* fp)//ֱ +{ + CPos pos1, pos2; + CString strtmp; + + READ_MARKET("AcDbLine"); + READ_3DCOORD(0); + SetVal(pos1);//ȡ + + READ_3DCOORD(1); + SetVal(pos2);//ȡ˵ + + strtmp.Format("%dֱ\r\n : x=%.4f y=%.4f z=%.4f \r\n ˵: x=%.4f y=%.4f z=%.4f\r\n", \ + 2, pos1.x, pos1.y, pos1.z, pos2.x, pos2.y, pos2.z); + m_LINE += strtmp; + + //߶ζ + CObjPline *pObjPline = new CObjPline; + pObjPline->Creat(Dbxy(pos1.x, pos1.y),Dbxy(pos2.x, pos2.y)); + GetLayerInstance().AddObject(pObjPline); + return 0; +} + +bool CDxfReadMgr::LoadCircleData(FILE* fp)//Բ +{ + CPos pos1; + CString strtmp; + READ_MARKET("AcDbCircle"); + + READ_3DCOORD(0); + SetVal(pos1);//ȡԲ + + READ_VALUE("40");//ȡԲ뾶 + strtmp.Format("%dԲ\r\n Բ: x=%.4f y=%.4f z=%.4f 뾶: %.4f\r\n", 3, pos1.x, pos1.y, pos1.z, m_val); + m_CIRCLE += strtmp; + + //circle obj + CObjCircle *p = new CObjCircle; + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = Dbxy(pos1.x,pos1.y); + ObjCirclePar.Radius =m_val; + ObjCirclePar.DEdgeCnt = 0; + + p->Creat(ObjCirclePar); + GetLayerInstance().AddObject(p); + + return 0; +} +//ȡһ +bool CDxfReadMgr::LoadPolyLineData(FILE* fp) +{ + CPos pos[MAX_NUMBER]; + float Convexity[MAX_NUMBER];//͹ + + memset(Convexity,0,sizeof(float)*MAX_NUMBER); + + CString strtmp; + int m; + int PtCnt; + int bClose;//Ƿպ + + READ_MARKET("AcDbPolyline"); + + READ_VALUE1("90");//ȡ + PtCnt = int(m_val); + READ_VALUE1("70");//Ƿպ + bClose = int(m_val); //1Ϊպ + + if(PtCnt<2 || PtCnt > MAX_NUMBER) + { + //strtmp.Format("ȡ%d%d궨޷ʾ!", 3, PtCnt); + return false; + } + + bool bFlg10 = true;//ǷҪ10 + for(m=0; mWriteDebugLog(strtmp); + strtmp.Format(" %d͹ֵ=%.4f \r\n",m, CurConvexity); + gLogMgr->WriteDebugLog(strtmp); + #endif + if(m==0)//߶ + { + pObjPline->Creat(Dbxy(pos[m].x,pos[m].y),Dbxy(pos[m].x,pos[m].y)); + } + else + { + CDataPoint DataPoint(Dbxy(pos[m].x,pos[m].y)); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + //߶εԲ + if(!IsDbEqualZero(CurConvexity)) + { + vector PtVec; + if(m != PtCnt-1) + { + CreatArcData(Dbxy(pos[m].x,pos[m].y),Dbxy(pos[m+1].x,pos[m+1].y),CurConvexity,PtVec); + } + else//һ⴦ + { + CreatArcData(Dbxy(pos[m].x,pos[m].y),Dbxy(pos[0].x,pos[0].y),CurConvexity,PtVec); + } + + vector::iterator iter = PtVec.begin(); + vector::iterator iter_end = PtVec.end(); + for(;iter!=iter_end;iter++) + { + CDataPoint DataPoint((*iter)); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + } + } + #if 1 + if(bClose)//պ + { + CDataPoint DataPoint(Dbxy(pos[0].x,pos[0].y)); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + #endif + //ƫƻԭλ + vector&PtContainer = pObjPline->GetPtContainer(); + int size = PtContainer.size(); + for(int k=0;kangle2) + { + angle2 = angle2 + 360; + } + //Բ߶ζ + CCirclePar CirclePar; + vector PtVec; + CirclePar.StartAng = angle1; + CirclePar.EndAng = angle2; + CirclePar.CenterPt = Dbxy(pos.x,pos.y); + CirclePar.Radius =nRadio; + CirclePar.DEdgeCnt = 0;//Բİ뾶Զѡ + CirclePar.bMerge = false;//պ + CreatCircleData(CirclePar,PtVec); + + CObjPline *pObjPline = new CObjPline; + vector::iterator iter = PtVec.begin(); + vector::iterator iter_end = PtVec.end(); + for(;iter!=iter_end;iter++) + { + CDataPoint DataPoint((*iter)); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + GetLayerInstance().AddObject(pObjPline); + return 0; +} + +bool CDxfReadMgr::LoadTextData(FILE* fp)//صı +{ + CString strtmp; + CPos pos; + float fontheight; + char strcont[50];//ַݻ** + + + READ_MARKET("AcDbText"); + READ_3DCOORD(0); + SetVal(pos);//ȡıʼ + + READ_VALUE("40"); + fontheight = m_val;//ȡָ߶ + // + READ_STR("1"); + strcpy(strcont, m_strcont); + + strtmp.Format("%dֶ\r\n : x=%.4f y=%.4f z=%.4f ߶: %.2f \r\n : %s\r\n", \ + 5, pos.x, pos.y, pos.z, fontheight, strcont); + m_TEXT += strtmp; + return 0; +} + +bool CDxfReadMgr::LoadMtextData(FILE* fp)//ضı +{ + CString strtmp; + CPos pos1; + float fontheight, fontwidth; + char strcont[255];//ַݻ** + + READ_MARKET("AcDbMText"); + READ_3DCOORD(0); + SetVal(pos1);//ȡıʼ + + READ_VALUE("40"); + fontheight = m_val;//ȡָ߶ + READ_VALUE("41"); + fontwidth = m_val;//ȡֿ + READ_VALUE("71"); + READ_VALUE("72"); + READ_STR("1"); + strcpy(strcont, m_strcont); + + strtmp.Format("%dֶ\r\n : x=%.4f y=%.4f z=%.4f\r\n ߶: %.2f : %.2f\r\n : %s\r\n", \ + 5, pos1.x, pos1.y, pos1.z, fontheight, fontwidth, strcont); + m_MTEXT += strtmp; + + return 0; +} + +bool CDxfReadMgr::LoadDimensionData(FILE* fp)//رע +{ + CString strDimension[2] ={"AcDbAlignedDimension", "AcDbOrdinateDimension"}; + + CString strtmp; + CPos pos1, pos2, pos3, pos4; + char strcont[255];//ַݻ** + + READ_MARKET("AcDbDimension"); + READ_3DCOORD(0); + SetVal(pos1);//ȡߴ߶ + READ_3DCOORD(1); + SetVal(pos2);//ȡעλ + READ_VALUE("70"); + READ_VALUE("71"); + READ_STR("42");//ȡע + strcpy(strcont, m_strcont); + + READ_MARKETARRAY(strDimension, 2); + + strtmp.Format("%dע\r\n һߴ: x=%.4f y=%.4f z=%.4f\r\n ڶߴ: x=%.4f y=%.4f z=%.4f\r\n ߴ: x=%.4f y=%.4f z=%.4f\r\n עλ: x=%.4f y=%.4f z=%.4f\r\n ִС: %d ע: %s\r\n", \ + 6, pos3.x, pos3.y, pos3.z, pos4.x, pos4.y, pos4.z, \ + pos1.x, pos1.y, pos1.z, pos2.x, pos2.y, pos2.z, 20, strcont); + m_DIMENSION += strtmp; + return 0; +} + +#if 1 +//˵͹ȼԲCenterPoint (u Ϊ͹) +//Բİ뾶 +double CDxfReadMgr::GetCenterPtByConvexity(Dbxy BeginPoint,Dbxy EndPoint,double Convexity,Dbxy &CenterPoint) +{ + double dConvexityDegree=Convexity; //͹ + double theta_degree ;//Ƕ, + double dStarX=0,dStarY=0;//Բʼ + double dEndX=0,dEndY=0; //Բֹ + double dStarC=0,dEndC=0; //ԲʼǶȣֹǶ + double dmiddleX=0,dmiddleY=0;//ʼֹߵе + double dCenterX=0,dCenterY=0;//Բ + double dCenterX1=0,dCenterY1=0;//Բ1 + double dCenterX2=0,dCenterY2=0;//Բ2 + double dLength; //ҳ + double dfR; //뾶 + double k = 0.0;//ҵб + double k_verticle = 0.0;//ҵдߵб + double mid_x = 0.0,mid_y = 0.0;//ҵе + double a = 1.0; + double b = 1.0; + double c = 1.0; + double angleChordX=0;//XĽǶ + int direction=0;//жG02G03 + bool isMinorArc=TRUE;//Բ뾶ǷΪС + double dStartVale=0; //ʼǵcosdStarCֵ + double dEndVale=0; //ֹǵcosdEndCֵ + + //͹dConvexityDegree0ʱʾΪԲ + if (0!=dConvexityDegree) + { + theta_degree = 4*atan(fabs(dConvexityDegree)); + + //ʼ㣬ֹ + dStarX = BeginPoint.x; + dStarY = BeginPoint.y; + dEndX = EndPoint.x; + dEndY = EndPoint.y; + + //ҳ + dLength = sqrt(pow(dStarX-dEndX,2)+pow(dStarY-dEndY,2)); + //Բ뾶 + dfR = fabs(0.5*dLength/sin(0.5*theta_degree)); + + k = (dEndY - dStarY) / (dEndX - dStarX); + if(k == 0) + { + dCenterX1 = (dStarX + dEndX) / 2.0; + dCenterX2 = (dStarX + dEndX) / 2.0; + dCenterY1 = dStarY + sqrt(dfR * dfR -(dStarX - dEndX) * (dStarX - dEndX) / 4.0); + dCenterY2 = dEndY - sqrt(dfR * dfR -(dStarX - dEndX) * (dStarX - dEndX) / 4.0); + } + else + { + k_verticle = -1.0 / k; + mid_x = (dStarX + dEndX) / 2.0; + mid_y = (dStarY + dEndY) / 2.0; + a = 1.0 + k_verticle * k_verticle; + b = -2 * mid_x - k_verticle * k_verticle * (dStarX + dEndX); + c = mid_x * mid_x + k_verticle * k_verticle * (dStarX + dEndX) * (dStarX + dEndX) / 4.0 - + (dfR * dfR - ((mid_x - dStarX) * (mid_x - dStarX) + (mid_y - dStarY) * (mid_y - dStarY))); + + dCenterX1 = (-1.0 * b + sqrt(b * b -4 * a * c)) / (2 * a); + dCenterX2 = (-1.0 * b - sqrt(b * b -4 * a * c)) / (2 * a); + dCenterY1 = k_verticle*dCenterX1 -k_verticle*mid_x+mid_y; + dCenterY2 = k_verticle*dCenterX2 -k_verticle*mid_x+mid_y; + } + + //͹ȾֵС1ʾԲС180㣬͹Ⱦֵ1ʾԲǴ180 + if (fabs(dConvexityDegree)<=1) + isMinorArc=TRUE; + else + isMinorArc=FALSE; + + //ȷԲ˳ + if (0>dConvexityDegree) + direction=2; + else + direction=3; + + //ȷԲ ------------------------------------------------------ + angleChordX=acos((1*(dEndX-dStarX)+0*(dEndY-dStarY))/dLength)*180/PI; + if ((dEndY-dStarY)<0) + { + angleChordX*=-1; + } + if ((angleChordX>0 && angleChordX<180)||angleChordX==180) + { + if (direction==2)//˳Բ + { + if(isMinorArc) + { + dCenterX=dCenterX1; + dCenterY=dCenterY1; + } + else + { + dCenterX=dCenterX2; + dCenterY=dCenterY2; + } + } + else if (direction==3)//Բ + { + if (isMinorArc) + { + dCenterX=dCenterX2; + dCenterY=dCenterY2; + } + else + { + dCenterX=dCenterX1; + dCenterY=dCenterY1; + } + } + } + else + { + if (direction==2)//˳Բ + { + if(isMinorArc) + { + dCenterX=dCenterX2; + dCenterY=dCenterY2; + } + else + { + dCenterX=dCenterX1; + dCenterY=dCenterY1; + } + } + else if (direction==3)//Բ + { + if (isMinorArc) + { + dCenterX=dCenterX1; + dCenterY=dCenterY1; + } + else + { + dCenterX=dCenterX2; + dCenterY=dCenterY2; + } + } + } + } + CenterPoint.x = dCenterX; + CenterPoint.y = dCenterY; + + return dfR; +} +//߶εԲConvexity Ϊ͹ +void CDxfReadMgr::CreatArcData(Dbxy Pt1,Dbxy Pt2,double Convexity,vector &PtVec) +{ + int times = 10; + int OffsetTimes = 0; + Dbxy Offset; + for(int k=0;k0) + { + //ʱû,ƫһһ + double Gap = 0.000001; + Pt1.x += Gap; + Pt1.y += Gap; + Pt2.x += Gap; + Pt2.y += Gap; + Offset.x += Gap; + Offset.y += Gap; + } + //㻡ߵԲĵ------------------------------------- + Dbxy CenterPoint; + double R = GetCenterPtByConvexity(Pt1,Pt2,Convexity,CenterPoint); + + if(b_ShowArcRadius) + { + CString LogStr; + LogStr.Format(_T("[Բ뾶ArcRadius] = [%f]"),R); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[CenterPoint.x] = [%f],[CenterPoint.y] = [%f]"),CenterPoint.x,CenterPoint.y); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[Dis1 ] = [%f]"),CalDistance(Pt1,CenterPoint)); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[Dis2 ] = [%f]"),CalDistance(Pt2,CenterPoint)); + gLogMgr->WriteDebugLog(LogStr); + b_ShowArcRadius = false; + } + //û߲-------------------------------------------- + //ҪǶ + CCirclePar CirclePar; + double StartAng = Cal360AngleByTwoPt(Pt1,CenterPoint); + double EndAng = Cal360AngleByTwoPt(Pt2,CenterPoint); + + if(StartAng<0) + StartAng += 360; + if(EndAng<0) + EndAng += 360; + + if(Convexity<0) + { + swap(StartAng,EndAng); + } + if(StartAng>EndAng) + EndAng += 360; + + CirclePar.StartAng = StartAng; + CirclePar.EndAng = EndAng; + CirclePar.CenterPt = CenterPoint; + CirclePar.Radius =R; + CirclePar.DEdgeCnt = 0;//Բİ뾶Զѡ + CirclePar.bMerge = false; + CreatCircleData(CirclePar,PtVec); + + + if(Convexity<0)//͹С0 Ϊ˳ʱ + { + vector::iterator iter = PtVec.begin(); + vector::iterator iter_end = PtVec.end(); + reverse(iter,iter_end); + } + if(!PtVec.empty()) + break; + OffsetTimes++; + } + #if 0 + //ƫ----------------------------------------- + CString LogStr; + LogStr.Format(_T("CreatArcData[OffsetTimes] = [%d]"),OffsetTimes); + gLogMgr->WriteDebugLog(LogStr); + #endif + //ƫƻԭλ + vector::iterator iter = PtVec.begin(); + vector::iterator iter_end = PtVec.end(); + for(;iter!=iter_end;iter++) + { + if(OffsetTimes>0) + { + (*iter).x -= Offset.x; + (*iter).y -= Offset.y; + } + } + +} + +#endif +#endif + + diff --git a/LaiPuLaser/DxfReadMgr.h b/LaiPuLaser/DxfReadMgr.h new file mode 100644 index 0000000..b9b1961 --- /dev/null +++ b/LaiPuLaser/DxfReadMgr.h @@ -0,0 +1,81 @@ +#pragma once +#include "module.h" + +typedef struct tag3DPOS//ά +{ + float x;//X + float y;//Y + float z;//Z +}POS; + +class CPos: public tag3DPOS +{ +public: + CPos(); + CPos(float tx, float ty, float tz); + CPos(POS pos); + CPos(CPoint pot); + ~CPos(); + float Clear(); + CPos operator=(CPos pos); + CPos operator=(int pos); + CPos operator+(CPos pos); + CPos operator-(CPos pos); + bool operator==(CPos pos); +public: + friend CPoint Point(CPos pos);//ʽΪ +}; + + +class CDxfReadMgr :public CModule +{ +public: + CDxfReadMgr(void); + ~CDxfReadMgr(void); +public: + bool ReadDxfFile(CString FilePath); + bool OpenDxfFileDlg(double Angle); +private: + bool ReadEntitiesSec(FILE* fp); + void LoadSynWord(CString strSynWord, vector &strArrayKeyWords);//عؼ + bool LoadLineData(FILE* fp);//ֱ + bool LoadCircleData(FILE* fp);//Բ + bool LoadPolyLineData(FILE* fp);//ض + bool LoadArcData(FILE* fp);//Բ + bool LoadMtextData(FILE* fp);//ضı + bool LoadTextData(FILE* fp);//صı + bool LoadDimensionData(FILE* fp);//رע + void LoadEllipseData(FILE* fp);//Բ + void SetVal(CPos &tagpos); + + void CreatArcData(Dbxy Pt1,Dbxy Pt2,double Convexity,vector &PtVec); + double GetCenterPtByConvexity(Dbxy BeginPoint,Dbxy EndPoint,double u,Dbxy &CenterPoint); +private: + CObArray m_DLineArray;// + CObArray m_CurveArray;// + CObArray m_RectangleArray;// + CObArray m_RoundRectangleArray;// + CObArray m_EllipseArray;// + CObArray m_RoundArray;// + CObArray m_PolygonArray;// + CPos m_pos;//** + + FILE* fp; + HICON m_hIcon; + char m_str[40];//** + char m_strcont[255];//ַݻ** + float m_val;//ֵ** + + bool b_ShowArcRadius;//ʾԲ뾶(ֻʾһ) + + + CString m_LINE; + CString m_CIRCLE; + CString m_POLYLINE; + CString m_ARC; + CString m_TEXT; + CString m_MTEXT; + CString m_DIMENSION; +}; + +extern CDxfReadMgr *gDxfReadMgr; \ No newline at end of file diff --git a/LaiPuLaser/EasyOperationMgr.cpp b/LaiPuLaser/EasyOperationMgr.cpp new file mode 100644 index 0000000..01a3dab --- /dev/null +++ b/LaiPuLaser/EasyOperationMgr.cpp @@ -0,0 +1,208 @@ +#include "StdAfx.h" +#include "EasyOperationMgr.h" +#include "DrawSimpleShape.h" +#include "GlobalFunction.h" +#include "LogMgr.h" + +CEasyOperationMgr *gEasyOperationMgr = new CEasyOperationMgr; +CEasyOperationMgr::CEasyOperationMgr(void) +{ + m_bShow = false;//Ƿʾ + m_Gap = 0.002;//ѡobj ļ +} +CEasyOperationMgr::~CEasyOperationMgr(void) +{ +} +void CEasyOperationMgr::SetRect(DbRect rect) +{ + m_OperatRect = rect; +} +//ȡʵʻƵrect +DbRect CEasyOperationMgr::GetDrawRect() +{ + DbRect rect = m_OperatRect; + double Gap = GetCurViewPtr()->GetCurrScaleVal(m_Gap); + rect.L -= Gap; + rect.R += Gap; + rect.B -= Gap; + rect.T += Gap; + return rect; +} +//ò׼ +Dbxy CEasyOperationMgr::GetBasePt() +{ + Dbxy pt; + switch(m_OprDir) + { + case _DIR_U: + case _DIR_R: + case _DIR_RT: + pt.x = m_OperatRect.L; + pt.y = m_OperatRect.B; + break; + case _DIR_D: + case _DIR_RB: + pt.x = m_OperatRect.L; + pt.y = m_OperatRect.T; + break; + case _DIR_L: + case _DIR_LT: + pt.x = m_OperatRect.R; + pt.y = m_OperatRect.B; + break; + case _DIR_LB: + pt.x = m_OperatRect.R; + pt.y = m_OperatRect.T; + break; + default: + break; + } + return pt; +} +double CEasyOperationMgr::GetSize(X_OR_Y xy) +{ + double size = 0; + if(xy = _X) + size = m_OperatRect.Width(); + else + size = m_OperatRect.Height(); + return size; +} +Dbxy CEasyOperationMgr::GetDiff(Dbxy StartPt,Dbxy EndPt) +{ + Dbxy diff; + switch(m_OprDir) + { + case _DIR_R: + case _DIR_RT: + case _DIR_RB: + diff.x = EndPt.x - StartPt.x; + break; + case _DIR_L: + case _DIR_LT: + case _DIR_LB: + diff.x = StartPt.x - EndPt.x; + break; + default: + break; + } + switch(m_OprDir) + { + + case _DIR_LT: + case _DIR_U: + case _DIR_RT: + diff.y = EndPt.y - StartPt.y; + break; + case _DIR_LB: + case _DIR_D: + case _DIR_RB: + diff.y = StartPt.y - EndPt.y; + break; + default: + break; + } + return diff; +} +void CEasyOperationMgr::Draw(CDC* pDC) +{ + if(m_bShow) + { + DbRect rect = GetDrawRect(); + COLORREF color = gDraw->GetEasyOperationColor(); + { + Dbxy pt(rect.L,rect.T); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt(rect.L,rect.B); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt(rect.R,rect.B); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt(rect.R,rect.T); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt((rect.R+rect.L)/2,rect.T); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt((rect.R+rect.L)/2,rect.B); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt(rect.L,(rect.T+rect.B)/2); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + { + Dbxy pt(rect.R,(rect.T+rect.B)/2); + DrawSolidRect(pDC,color,gDraw->GetCurPointRect(pt)); + } + } +} +void CEasyOperationMgr::Refresh() +{ + CLayer &layer = GetLayerInstance(); + if(layer.HasObjSel()) + { + m_bShow = true; + SetRect(layer.GetSelObjRect()); + } + else + { + m_bShow = false; + } +} +MOUSE_TOOL CEasyOperationMgr::JudgeMouseToolType(Dbxy MousePt) +{ + MOUSE_TOOL type = _TOOL_POINT; + if(!m_bShow) + return type; + DbRect rect = GetDrawRect(); + if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.L,rect.T),type) != _TOOL_POINT) + { + m_OprDir = _DIR_LT; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.L,rect.B),type) != _TOOL_POINT) + { + m_OprDir = _DIR_LB; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.R,rect.B),type) != _TOOL_POINT) + { + m_OprDir = _DIR_RB; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.R,rect.T),type) != _TOOL_POINT) + { + m_OprDir = _DIR_RT; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy((rect.R+rect.L)/2,rect.T),type) != _TOOL_POINT) + { + m_OprDir = _DIR_U; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy((rect.R+rect.L)/2,rect.B),type) != _TOOL_POINT) + { + m_OprDir = _DIR_D; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.L,(rect.T+rect.B)/2),type) != _TOOL_POINT) + { + m_OprDir = _DIR_L; + } + else if(JudgeMouseToolTypeExt(MousePt,Dbxy(rect.R,(rect.T+rect.B)/2),type) != _TOOL_POINT) + { + m_OprDir = _DIR_R; + } + return type; +} +MOUSE_TOOL CEasyOperationMgr::JudgeMouseToolTypeExt(Dbxy MousePt,Dbxy pt,MOUSE_TOOL &type) +{ + DbRect rect = gDraw->GetCurPointRect(pt); + if(IsPointInRect(MousePt,rect)) + { + type = _TOOL_STRETCH; + } + return type; +} \ No newline at end of file diff --git a/LaiPuLaser/EasyOperationMgr.h b/LaiPuLaser/EasyOperationMgr.h new file mode 100644 index 0000000..ed9abee --- /dev/null +++ b/LaiPuLaser/EasyOperationMgr.h @@ -0,0 +1,35 @@ +#pragma once +#include "module.h" +#include "GlobalDefine.h" +#include "EnumDirection.h" + +//obj ݲ +class CEasyOperationMgr :public CModule +{ +public: + CEasyOperationMgr(void); + ~CEasyOperationMgr(void); + virtual void Draw(CDC* pDC); + virtual MODULE GetModuleType(){return _EASY_OPERATION_PROP;}; + + + void SetShow(bool b){m_bShow = b;}; + void Refresh(); + MOUSE_TOOL JudgeMouseToolType(Dbxy pt); + DIRECTION GetOprDir(){return m_OprDir;};//ȡ + Dbxy GetBasePt(); + double GetSize(X_OR_Y xy); + Dbxy GetDiff(Dbxy StartPt,Dbxy EndPt); +private: + void SetRect(DbRect rect); + DbRect GetDrawRect(); + MOUSE_TOOL JudgeMouseToolTypeExt(Dbxy MousePt,Dbxy pt,MOUSE_TOOL &type); +private: + bool m_bShow;//Ƿʾ + DbRect m_OperatRect;//Χľ + double m_Gap;//ѡobj ļ + + DIRECTION m_OprDir;//ķ +}; + +extern CEasyOperationMgr *gEasyOperationMgr; \ No newline at end of file diff --git a/LaiPuLaser/EncryptionMgr.cpp b/LaiPuLaser/EncryptionMgr.cpp new file mode 100644 index 0000000..281520b --- /dev/null +++ b/LaiPuLaser/EncryptionMgr.cpp @@ -0,0 +1,109 @@ +#include "StdAfx.h" +#include "EncryptionMgr.h" +#include "LogMgr.h" +#include "MsgBox.h" +#include "winioctl.h" + + +#ifdef __USE_SUPER_DOG__ +#pragma comment( lib, "KernelMode.lib") +CKernelMode gKernelMode; +#endif + +#define LEFT_DAYS_ALAM 7 //ʣ༸ʾ + +CEncryptionMgr *gEncryptionMgr = new CEncryptionMgr; +CEncryptionMgr::CEncryptionMgr(void) +{ + m_LeftDays = 0;//ʣ + m_bRunAtNoteBook = false;//ǷڱʼDZ +} +CEncryptionMgr::~CEncryptionMgr(void) +{ +} +void CEncryptionMgr::Ini() +{ + m_CurHardDiskSerialNum = GetHardDiskSerialNum(); + set NoteBookHardDiskSerialSet; + NoteBookHardDiskSerialSet.insert("2cc413dd");//k2450 ʼDZ + NoteBookHardDiskSerialSet.insert("4a410fe7");//t420 ʼDZ + //NoteBookHardDiskSerialSet.insert("ebfac14d");//T460S ʼDZ + //ʼDZ + if(NoteBookHardDiskSerialSet.count(m_CurHardDiskSerialNum)) + { + m_bRunAtNoteBook = true; + } +} +//ȡӲк(CӲ) +CString CEncryptionMgr::GetHardDiskSerialNum() +{ + CString id; + char Name[MAX_PATH]; + DWORD serno; + DWORD length; + DWORD FileFlag; + char FileName[MAX_PATH]; + BOOL Ret; + Ret = GetVolumeInformation("c:\\", Name, MAX_PATH, &serno, &length, &FileFlag, FileName, MAX_PATH); + if (Ret) + id.Format( "%x", serno); + return id; +} +#if 1 +/* +code:530001 豸ûзּܹ +code:530002 ȡBinaryļ +code:530003 BinaryļIDͼܹIDƥ +code:530004 ݹ +code:530005 ·ݹ +code:530006 +code:530007 кŲƥ +*/ +//״̬(false) +bool CEncryptionMgr::CheckLockState() +{ + #ifndef __USE_SUPER_DOG__ + return true; + #endif + //ʼDZ + if(m_bRunAtNoteBook) + { + return true; + } + + int code = gKernelMode.CheckState(); + //ʱ仹ʣn + if(code>100 && code<=(100+LEFT_DAYS_ALAM)) + { + m_LeftDays = code-100; + } + else if(code==0 || code>(100+LEFT_DAYS_ALAM)) + { + m_LeftDays = 0;//ʣ + } + else if(code>0 && code!=7)//(Ҫк) + { + m_LeftDays = 0;//ʣ + CString s; + s.Format(_T("豸ʹȨ ϵӦ (code :53000%d)"),code); + CMsgBox MsgBox; + MsgBox.Show(s); + return false; + } + //ʣ(10 ʾ) + CheckLeftDays(); + return true; +} +//ʣ(10 ʾ) +void CEncryptionMgr::CheckLeftDays() +{ + if(m_LeftDays>0) + { + CString s; + s.Format("豸Ȩ%ld 쵽,ϵӦ",m_LeftDays); + CMsgBox MsgBox; + MsgBox.Show(s); + } +} +#endif + diff --git a/LaiPuLaser/EncryptionMgr.h b/LaiPuLaser/EncryptionMgr.h new file mode 100644 index 0000000..e6a12cc --- /dev/null +++ b/LaiPuLaser/EncryptionMgr.h @@ -0,0 +1,28 @@ +#pragma once +#include "module.h" + +//#ifdef __USE_SUPER_DOG__ +#include "KernelMode.h" +extern CKernelMode gKernelMode; +//#endif + +//豸ܹ +class CEncryptionMgr :public CModule +{ +public: + CEncryptionMgr(void); + ~CEncryptionMgr(void); + virtual void Ini(); + bool CheckLockState(); + void CheckLeftDays(); + bool IsbRunAtNoteBook(){return m_bRunAtNoteBook;}; + CString GetCurHardDiskSerialNum(){return m_CurHardDiskSerialNum;}; +private: + CString GetHardDiskSerialNum(); +private: + int m_LeftDays;//ʣ + bool m_bRunAtNoteBook;//ǷڱʼDZ + CString m_CurHardDiskSerialNum;//ǰӲк +}; +extern CEncryptionMgr *gEncryptionMgr; + diff --git a/LaiPuLaser/EnumDirection.h b/LaiPuLaser/EnumDirection.h new file mode 100644 index 0000000..26c8dca --- /dev/null +++ b/LaiPuLaser/EnumDirection.h @@ -0,0 +1,14 @@ +#pragma once + +enum DIRECTION// +{ + _DIR_M = 0,// + _DIR_R, + _DIR_L, + _DIR_U, + _DIR_D, + _DIR_LT,// + _DIR_LB, + _DIR_RB, + _DIR_RT, +}; diff --git a/LaiPuLaser/EnumPropertieType.h b/LaiPuLaser/EnumPropertieType.h new file mode 100644 index 0000000..f1cc40a --- /dev/null +++ b/LaiPuLaser/EnumPropertieType.h @@ -0,0 +1,88 @@ +#pragma once + +//Ե +enum PROPERTIE_TYPE +{ + _PROP_TYPE_INT=0, + _PROP_TYPE_DOUBLE, + _PROP_TYPE_STRING, + _PROP_TYPE_BOOL, + _PROP_TYPE_COLOR, +}; +//ʶģid +enum MODULE +{ + _MODULE_NULL = 0,//ʾʱҪ + _DRAW_PROP,//ͬ + _LOG_PROP,//־ + _OBJ_PROP,//ͼ + _PLT_PROP,//plt + _PCI_PORT_PROP,//pci ˿ + _PLATFORM_XY_PROP,//XY ƽ̨ + _MODULE_PCI365,//pci 365 + _MOTOR_PROP,// + _TOOL_CUT_PROP,//и + _APP_PRIORITY_PROP,//ȼ + _WORK_AREA_PROP,//⹤Χ + _DAHEN_CCD_PROP,//CCD + _GRATING_RULER_PROP,//դ + _RULER_PROP,// + _SIMULATE_PROP,//ģ켣 + _REAL_DATA_PROP,//ʵݹ + _MIRROR_PROP,// + _SINGLE_CHIP_CARD,//ϻ + _KEYENCE_CCD_PROP,//ʿCCD + _TEMPLATE_PROP,//ģ + _SOCKET_PROP,//socket ͨŹ + _OBJ_COMPONENT_PROP,//Ԫ + _LASER_PROP,// + _LAIPU_VB_DLL_PROP,//dll + _EASY_OPERATION_PROP,//ͼαݲ + _COMPENSATE_AREA_PROP,// + _AUTHORITY_PROP,//Ȩ޹ + _MARK_AREA_PROP,//markarea + _PRODUCT_PROP,//Ʒ + _PLATFORM_XY_DRAW_PROP,//ƽ̨λû + _SPECTRA_PHYSICS_LASER_PROP,// + _MARK_PAR_PROP,//˶ + _TUI_HUO_MGR,//˻ + _OPTO_WAVE_LASER_PROP,//Ⲩ + _UPK_CO2_PROP,//ɿCO2 ׻ + _UPK_CCD_PROP,//ɿ˵CCD + _UPK_PLC_PROP,//ɿPLC + _MARK_DATA_PROP,//ӹݹ + _BASLER_CCD_PROP,//¹BASLER CCD + _LPS_IS3000_PROP,//LPS + _LPS_IS3000_PLC_PROP, + _LPS_IS3000_CUT_TEMP, + + _COMMON_FLOW_PROP,// + _HAWKVIS_CCD_PROP,//ӾCAMERA + + _WORK_RECORD_PROP,//ӹ¼ + + _PLC_IO_PROP, + _MOTION_CARD_PCI1245L,//лPCI1245L ˶ƿ + _PGM_SW_XL_PROP,//β豸 +}; +//comb +enum DRAW_PROP_COMB_TYPE +{ + _COMB_OBJ_PROP = 0,//obj + _COMB_DRAW_PROP,//ͨ + +}; +//豸comb +enum DEVICE_PROP_COMB_TYPE +{ + _COMB_NULL_PROP = 0,// + _COMB_PCI_PROP,//pci + _COMB_MOTION_CARD,//˶ƿ + _COMB_MOTOR_PROP,// + _COMB_PLATFORM_XY_PROP,//XY ƽ̨ + _COMB_DEVICE_PROP,//Ӳ + _COMB_WORK_DATA,// + _COMB_OTHER_PROP,// + _COMB_SPECIAL_DEVICE_PROP,//豸 + _COMB_COMMON_FLOW_PROP,// +}; \ No newline at end of file diff --git a/LaiPuLaser/EnumValStrType.h b/LaiPuLaser/EnumValStrType.h new file mode 100644 index 0000000..e968737 --- /dev/null +++ b/LaiPuLaser/EnumValStrType.h @@ -0,0 +1,33 @@ +#pragma once + +//ɱı +enum VAL_STR_TYPR +{ + _STR_FIXED = 0,//̶ı + _STR_SN,//к + _STR_DATE,// + _STR_TIME,//ʱ + _STR_ERROR,// +}; +//ɱڵ +enum VAL_DATE_TYPR +{ + _DATE_YEAR_FOUR = 0,//2014 + _DATE_YEAR_TWO,//14 + _DATE_MONTH,//05 + _DATE_DAY,//16 + _DATE_DAY_IN_YEAR,//136 + _DATE_WEEK,//05 + _DATE_WEEK_IN_YEAR,//20 + _DATE_MAX, +}; +enum VAL_TIME_TYPR +{ + _TIME_HOUR_24 = 0,//Сʱ24 + _TIME_HOUR_12,//Сʱ12 + _TIME_MINUTE,// + _TIME_SECOND,// + _TIME_AM_OR_PM_1,//ʱAM,PM + _TIME_AM_OR_PM_2,//ʱam,pm + _TIME_MAX, +}; \ No newline at end of file diff --git a/LaiPuLaser/ExcelMgr.cpp b/LaiPuLaser/ExcelMgr.cpp new file mode 100644 index 0000000..3450771 --- /dev/null +++ b/LaiPuLaser/ExcelMgr.cpp @@ -0,0 +1,315 @@ +#include "StdAfx.h" +#include "ExcelMgr.h" +#include + +#include + +#define TABLE_NAME "table1" +CExcelMgr::CExcelMgr(void) +{ +} +CExcelMgr::~CExcelMgr(void) +{ +} +/////////////////////////////////////////////////////////////////////////////// +// BOOL MakeSurePathExists( CString &Path,bool FilenameIncluded) +// +// Path · +// FilenameIncluded ·Ƿļ +// ֵ: +// ļǷ +// ˵: +// жPathļ(FilenameIncluded=true)Ƿ,ڷTUREڷFALSE +// ԶĿ¼ +// +/////////////////////////////////////////////////////////////////////////////// +BOOL CExcelMgr::MakeSurePathExists( CString &Path,bool FilenameIncluded) +{ + int Pos=0; + while((Pos=Path.Find('\\',Pos+1))!=-1) + CreateDirectory(Path.Left(Pos),NULL); + if(!FilenameIncluded) + CreateDirectory(Path,NULL); + // return ((!FilenameIncluded)?!_access(Path,0): + // !_access(Path.Left(Path.ReverseFind('\\')),0)); + + return !_access(Path,0); +} +//Ĭϵļ +BOOL CExcelMgr::GetDefaultXlsFileName(CString &Path,CString& sExcelFile) +{ + ///Ĭļyyyymmddhhmmss.xls + CString timeStr; + CTime day; + day=CTime::GetCurrentTime(); + int filenameday,filenamemonth,filenameyear,filehour,filemin,filesec; + filenameday=day.GetDay();//dd + filenamemonth=day.GetMonth();//mm· + filenameyear=day.GetYear();//yyyy + filehour=day.GetHour();//hh + filemin=day.GetMinute();//mm + filesec=day.GetSecond();//ss + timeStr.Format("%04d%02d%02d%02d%02d%02d",filenameyear,filenamemonth,filenameday,filehour,filemin,filesec); + + sExcelFile = timeStr + ".xls"; + // prompt the user (with all document templates) + CFileDialog dlgFile(FALSE,".xls",sExcelFile); + CString title; + CString strFilter; + + title = ""; + strFilter = "Excelļ(*.xls)"; + strFilter += (TCHAR)'\0'; // next string please + strFilter += _T("*.xls"); + strFilter += (TCHAR)'\0'; // last string + dlgFile.m_ofn.nMaxCustFilter++; + dlgFile.m_ofn.nFilterIndex = 1; + // append the "*.*" all files filter + CString allFilter; + VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER)); + strFilter += allFilter; + strFilter += (TCHAR)'\0'; // next string please + strFilter += _T("*.*"); + strFilter += (TCHAR)'\0'; // last string + dlgFile.m_ofn.nMaxCustFilter++; + + dlgFile.m_ofn.lpstrFilter = strFilter; + dlgFile.m_ofn.lpstrTitle = title; + + if(Path == "") + { + if(dlgFile.DoModal()==IDCANCEL) + return FALSE; // open cancelled + sExcelFile = dlgFile.GetPathName(); + //ΪĬ· + int Index = sExcelFile.ReverseFind(_T('\\')); + int len = sExcelFile.GetLength(); + Path = sExcelFile.Left(len -(len-Index)); + } + else + { + sExcelFile = Path+"\\"+timeStr + ".xls"; + } + sExcelFile.ReleaseBuffer(); + if (MakeSurePathExists(sExcelFile,true)) { + if(!DeleteFile(sExcelFile)) { // delete the file + AfxMessageBox("ļʱ"); + return FALSE; + } + } + return TRUE; +} + +////////////////////////////////////////////////////////////////////////////// +//ƣGetExcelDriver +//ܣȡODBCExcel +//ߣ쾰(jingzhou_xu@163.net) +//֯δ(Future Studio) +//ڣ2002.9.1 +///////////////////////////////////////////////////////////////////////////// +CString CExcelMgr::GetExcelDriver() +{ + char szBuf[2001]; + WORD cbBufMax = 2000; + WORD cbBufOut; + char *pszBuf = szBuf; + CString sDriver; + + // ȡѰװ(odbcinst.h) + if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) + return ""; + + // ѰװǷExcel... + do + { + if (strstr(pszBuf, "Excel") != 0) + { + // ! + sDriver = CString(pszBuf); + break; + } + pszBuf = strchr(pszBuf, '\0') + 1; + } + while (pszBuf[1] != '\0'); + + return sDriver; +} +//ݿ(ColNum е) +void CExcelMgr::CreatDataBaseTable(CString &Path,int ColNum) +{ + CString sDriver; + CString sExcelFile; + CString sSql; + CString tableName(TABLE_NAME); + + sDriver = GetExcelDriver(); + if (sDriver.IsEmpty()) + { + // ûзExcel + AfxMessageBox("ûаװExcel!\nȰװExcelʹõ!"); + return; + } + + ///Ĭļ + if (!GetDefaultXlsFileName(Path,sExcelFile)) + return; + + // дȡַ + sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile); + + // ݿ (Excelļ) + if( m_Database.OpenEx(sSql,CDatabase::noOdbcDialog) ) + { + // ṹ + int i; + LVCOLUMN columnData; + CString columnName; + + sSql = ""; + columnData.mask = LVCF_TEXT; + columnData.cchTextMax =100; + columnData.pszText = columnName.GetBuffer (100); + for(i=0;iGetHeaderCtrl(); + if(pHeaderCtrl) + { + columnNum = pHeaderCtrl->GetItemCount(); + } + + int nItemIndex; + for (nItemIndex=0;nItemIndexGetItemCount();nItemIndex++) + { + strV = ""; + for(int i=0;iGetItemText(nItemIndex,i) +"' "; + } + else + { + strV = strV + " '" + " " +"' "; + } + } + + sSql = "INSERT INTO "+ tableName +" ("+ strH + ")"+" VALUES("+ strV + ")"; + m_Database.ExecuteSQL(sSql); + } +} +//һ +void CExcelMgr::InsertStringVec(vector &StrVec) +{ + if(!m_Database.IsOpen()) + return; + + CString tableName(TABLE_NAME); + CString sSql; + CString strH = GetTableItemName();// + CString strV;//ֵ + + int size = StrVec.size(); + strV = ""; + for(int i=0;i=size) + { + strV = strV + " '" + " " +"' "; + } + else + { + strV = strV + " '" + StrVec[i] +"' "; + } + } + + sSql = "INSERT INTO "+ tableName +" ("+ strH + ")"+" VALUES("+ strV + ")"; + m_Database.ExecuteSQL(sSql); +} +// +void CExcelMgr::InsertNullItem(int n) +{ + if(!m_Database.IsOpen()) + return; + + CString tableName(TABLE_NAME); + CString sSql; + CString strH = GetTableItemName();// + CString strV;//ֵ + + for(int k=0;k +#include "GlobalDefine.h" + + +class CExcelMgr +{ +public: + CExcelMgr(void); + ~CExcelMgr(void); + void CreatDataBaseTable(CString &Path,int ColNum); + void CloseDataBase(); + void ExportListToExcel(CListCtrl* pList); + void InsertNullItem(int n); + void InsertStringVec(vector &StrVec); +private: + BOOL MakeSurePathExists( CString &Path,bool FilenameIncluded); + BOOL GetDefaultXlsFileName(CString &Path,CString& sExcelFile); + CString GetExcelDriver(); + CString GetTableItemName(); +private: + CDatabase m_Database;//ݿ + int m_ColNum;//е +}; + diff --git a/LaiPuLaser/ExceptionMsg.cpp b/LaiPuLaser/ExceptionMsg.cpp new file mode 100644 index 0000000..515daee --- /dev/null +++ b/LaiPuLaser/ExceptionMsg.cpp @@ -0,0 +1,10 @@ +#include "StdAfx.h" +#include "ExceptionMsg.h" + + +CExceptionMsg::CExceptionMsg(void) +{ +} +CExceptionMsg::~CExceptionMsg(void) +{ +} diff --git a/LaiPuLaser/ExceptionMsg.h b/LaiPuLaser/ExceptionMsg.h new file mode 100644 index 0000000..c826a61 --- /dev/null +++ b/LaiPuLaser/ExceptionMsg.h @@ -0,0 +1,14 @@ +#pragma once + +//Զ쳣 +class CExceptionMsg +{ +public: + CExceptionMsg(void); + ~CExceptionMsg(void); + void SetMsg(CString &str){m_MsgStr = str;}; + CString GetMsgStr(){return m_MsgStr;}; +private: + CString m_MsgStr;//쳣Ϣ +}; + diff --git a/LaiPuLaser/FileMgr.cpp b/LaiPuLaser/FileMgr.cpp new file mode 100644 index 0000000..02780aa --- /dev/null +++ b/LaiPuLaser/FileMgr.cpp @@ -0,0 +1,225 @@ +#include "StdAfx.h" +#include "FileMgr.h" +#include "LogMgr.h" +#include "GlobalDefine.h" + +CFileMgr::CFileMgr(void) +{ +} +CFileMgr::~CFileMgr(void) +{ +} +//ԵǰĿ¼Ϊȡļ·(FilePath ) +void CFileMgr::GetFullFilePath(char *FilePath,CString FileName) +{ + CString str; + GetFullFilePath(str,FileName); + strcpy(FilePath,(LPSTR)(LPCTSTR)str); +} +//ԵǰĿ¼Ϊȡļ·(FileName ʽ\\Debug.txt) +void CFileMgr::GetFullFilePath(CString &FilePath,CString FileName) +{ + CString sPath; + GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024); + sPath.ReleaseBuffer(); + int nPos; + nPos = sPath.ReverseFind('\\'); + sPath = sPath.Left(nPos); + FilePath = sPath + FileName; +} +//ȡǰĿ¼ +CString CFileMgr::GetWorkPath() +{ + CString sPath; + GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024); + sPath.ReleaseBuffer(); + int nPos; + nPos = sPath.ReverseFind('\\'); + sPath = sPath.Left(nPos); + return sPath; +} +#if 1 +//жȡFilePath ָļ浽vec (FilePath dzĿ¼µļ·) +void CFileMgr::ReadFileToStringVec(const CString &FilePath,vector &vec) +{ + CStdioFile file; + if(file.Open(FilePath,CFile::modeRead,NULL)) + { + CString str; + while(file.ReadString(str)) + { + vec.push_back(str); + } + file.Close(); + } +} +//ȡļÿһ,Զŷֵ +void CFileMgr::ReadFileToDoubleVec(const CString &FilePath,vector> &Vec) +{ + //ȡÿһַ + vector StrVec; + ReadFileToStringVec(FilePath,StrVec); + vector::iterator iter = StrVec.begin(); + vector::iterator iter_end = StrVec.end(); + for(;iter!=iter_end;iter++) + { + vector VecTmp; + //str ȡdouble ֵ,ԶΪָ + GetDoubleVal((*iter),VecTmp); + if(VecTmp.empty()==false) + Vec.push_back(VecTmp); + } +} +//str ȡdouble ֵ,ԶΪָ +void CFileMgr::GetDoubleVal(CString Str,vector &Vec) +{ + int CommaPosPer;//һŵλ + CommaPosPer = Str.Find(",",0); + if(CommaPosPer == -1)//ûҵֱӷ + { + return; + } + char *recvBuf = Str.GetBuffer(); + //һֵ + double val = 0; + CString Str1(recvBuf,CommaPosPer); + val= atof(Str1); + Vec.push_back(val); + + int idx = 0; + int CommaPosNext = CommaPosPer; + do + { + CommaPosNext = Str.Find(",",CommaPosPer+1);//һŵλ + if(CommaPosNext==-1)//һ + { + CString Str1(recvBuf+CommaPosPer+1); + val= atof(Str1); + } + else + { + CString Str1(recvBuf+CommaPosPer+1,CommaPosNext-CommaPosPer); + val= atof(Str1); + } + + Vec.push_back(val); + + CommaPosPer = CommaPosNext; + idx++; + }while(CommaPosNext!=-1); +} +//һд뵽ıļ +void CFileMgr::WriteDbxyVecToFile(vector &vec,ofstream *file) +{ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + (*file)<<(*iter).x<<","<<(*iter).y<& Vec,CString Suffix) +{ + CString strFilePath; + int dwDirSize = 0; + strFilePath += strPath; + strFilePath += "//*.*"; + CFileFind finder; + BOOL bFind = finder.FindFile(strFilePath); + while (bFind) + { + bFind = finder.FindNextFile(); + if (!finder.IsDots()) + { + CString strTempPath = finder.GetFilePath(); + if(bDir && finder.IsDirectory()) + { + Vec.push_back(strTempPath); + } + else if(!bDir) + { + if(Suffix != "")//ָ˺׺ + { + if(strTempPath.Find(Suffix)!=-1) + Vec.push_back(strTempPath); + } + else + { + Vec.push_back(strTempPath); + } + } + } + } + finder.Close(); +} +//ɾָĿ¼µļ +void CFileMgr::DeleteDirFile(CString FilePath) +{ + CString DelStr("del /s/q "); + DelStr += FilePath; + system(DelStr); +} +//ɾĿ¼ +void CFileMgr::DeleteDir(CString DirPath) +{ + CString DelStr("rmdir "); + DelStr += DirPath; + system(DelStr); +} +//Ŀ¼ +void CFileMgr::CreatDir(CString DirPath) +{ + CString MkdirCmd("mkdir "); + MkdirCmd += DirPath; + system(MkdirCmd); +} +//Path1 ļcopy Path2 +void CFileMgr::CopyFile(CString Path1,CString Path2) +{ + CString MoveFileCmd("copy "); + MoveFileCmd += Path1+" "+Path2; + system(MoveFileCmd); +} +//·ȡļ(bDelSuffix ȥ׺) +CString CFileMgr::GetFileNameFromPath(CString Path,bool bDelSuffix) +{ + CString name = Path; + int idx = name.ReverseFind('\\'); + if(idx != -1) + { + int len = name.GetLength(); + name = name.Right(len - idx -1); + } + if(bDelSuffix) + { + idx = name.ReverseFind('.'); + if(idx != -1) + { + int len = name.GetLength(); + name = name.Left(len - (len-idx)); + } + } + return name; +} \ No newline at end of file diff --git a/LaiPuLaser/FileMgr.h b/LaiPuLaser/FileMgr.h new file mode 100644 index 0000000..0d565aa --- /dev/null +++ b/LaiPuLaser/FileMgr.h @@ -0,0 +1,30 @@ +#pragma once +#include "GlobalDefine.h" + + +class CPropertie; +//ļĹ +class CFileMgr +{ +public: + CFileMgr(void); + ~CFileMgr(void); + void GetFullFilePath(char *FilePath,CString FileName); + void GetFullFilePath(CString &FilePath,CString FileName); + void ReadFileToStringVec(const CString &FileName,vector &vec); + void ReadFileToDoubleVec(const CString &FilePath,vector> &Vec); + bool IsFileExist(CString FilePath); + void GetChildFileOrDirName(bool bDir,CString strPath,vector & Vec,CString Suffix); + void DeleteDirFile(CString FilePath); + void DeleteDir(CString DirPath); + void CreatDir(CString DirPath); + void CopyFile(CString Path1,CString Path2); + CString GetFileNameFromPath(CString Path,bool bDelSuffix); + void WriteDbxyVecToFile(vector &vec,ofstream *file); + CString GetWorkPath(); + bool IsDirectoryExists(CString const& path); + +private: + void GetDoubleVal(CString Str,vector &Vec); +}; + diff --git a/LaiPuLaser/FontBarcode.cpp b/LaiPuLaser/FontBarcode.cpp new file mode 100644 index 0000000..7427d5b --- /dev/null +++ b/LaiPuLaser/FontBarcode.cpp @@ -0,0 +1,38 @@ +#include "StdAfx.h" +#include "FontBarcode.h" + + +CFontBarcode::CFontBarcode(void) +{ +} +CFontBarcode::~CFontBarcode(void) +{ +} +//ʼҪͣm_BarcodeTypeVec ֺCTbarcode51 ؼӦöٵӳ +void CFontBarcode::IniBarcodeTypeVec() +{ + m_BarcodeTypeVec.push_back(make_pair("DataMatrix",71)); + m_BarcodeTypeVec.push_back(make_pair("QRCode",58)); + m_BarcodeTypeVec.push_back(make_pair("MAXICODE",57)); +} +void CFontBarcode::Initialize() +{ + IniBarcodeTypeVec(); + + vector::iterator iter = m_BarcodeTypeVec.begin(); + vector::iterator iter_end = m_BarcodeTypeVec.end(); + for(;iter!=iter_end;iter++) + { + AddTypeName((*iter).first); + } +} +//תΪCTbarcode51 Ӧֵ +int CFontBarcode::GetCurFontNameIdx() +{ + int size = m_BarcodeTypeVec.size(); + if(m_CurFontNameIdx>=0 && m_CurFontNameIdx BarcodeType; +class CFontBarcode :public CFontType +{ +public: + CFontBarcode(void); + ~CFontBarcode(void); + virtual CString GetFontType(){return "FontBarcode";}; + virtual void Initialize(); + virtual int GetCurFontNameIdx(); +private: + void IniBarcodeTypeVec(); +private: + vector m_BarcodeTypeVec;//ʹõ,ֵtag_BarCType жӦ +}; + diff --git a/LaiPuLaser/FontLaipu.cpp b/LaiPuLaser/FontLaipu.cpp new file mode 100644 index 0000000..948e295 --- /dev/null +++ b/LaiPuLaser/FontLaipu.cpp @@ -0,0 +1,153 @@ +#include "StdAfx.h" +#include "FontLaipu.h" +#include "FontTypeMgr.h" + + +CFontLaipu::CFontLaipu(void) +{ +} +CFontLaipu::~CFontLaipu(void) +{ +} +void CFontLaipu::Initialize() +{ + //ȻFONT ļеĿ¼-------------------------------------------------------- + CString sPath; + GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024); //ȡǰĿ¼ + sPath.ReleaseBuffer(); + int nPos; + nPos = sPath.ReverseFind('\\'); + sPath = sPath.Left(nPos); + CString str = sPath + "\\font"; + //font ļвsl ׺ļ------------------------------------------------- + int idx = 0; + CFileFind finder; + BOOL bWorking = finder.FindFile(str + "/*.*");//m_pathΪָļ + while (bWorking)//ļ + { + bWorking = finder.FindNextFile(); + CString name = finder.GetFileName(); + CString extend = name.Right(name.GetLength() - name.ReverseFind('.') - 1);//ȡչ + if(!finder.IsDots()) + { + if(extend == "SL" || extend == "sl") + { + AddTypeName(name); + } + } + } +} +void CFontLaipu::CreatCharVec(char *pChar,vector &PonitVec) +{ + CreatCharVecExt(*pChar,PonitVec); +} +//յֿȡAsciiCode Ӧ(Offsetַ֮ļ) +void CFontLaipu::CreatCharVecExt(unsigned char AsciiCode,vector &PonitVec) +{ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + //ȡǰļ· + CString str = pFontTypeMgr.GetFontPath(GetCurFontName()); + char filepath[1024]; + strcpy(filepath,(LPSTR)(LPCTSTR)str); + //ֿļ + CFile file; + if(file.Open(filepath,CFile::modeRead|CFile::typeBinary)) + { + int FileLen = file.GetLength()+1; + char *pBuf=new char[FileLen]; + memset(pBuf,0,FileLen*sizeof(char)); + file.SeekToBegin();//ָƵļͷ + file.Read(pBuf, FileLen*sizeof(char));//ȡڴ + + //ҵ洢ַĿʼλ + unsigned long AddrOffset = AsciiCode*3; + unsigned long AddrStart = 0;//ݵʼλ + unsigned char ch; + ch = pBuf[AddrOffset]; + AddrStart = ch; + ch = pBuf[AddrOffset+1]; + AddrStart += ch*256; + ch = pBuf[AddrOffset+2]; + AddrStart += ((long)ch*256*256); + //±0 ʼ + AddrStart --; + BOOL flg = TRUE; + BOOL bUpOrDown = FALSE;//̧ʻ + //ϵ + double DirStepX[16] = {1, 1, 1, 0.5, 0, -0.5, -1, -1, -1, -1, -1, -0.5, 0, 0.5, 1, 1}; + double DirStepY[16] = {0, 0.5, 1, 1, 1, 1, 1, 0.5, 0, -0.5, -1, -1, -1, -1, -1, -0.5}; + + int idx = 0; + PointType PointData; + // + PointData.first.x = 0; + PointData.first.y = 0; + + while(flg) + { + ch = pBuf[AddrStart+idx]; + switch(ch) + { + case 0: + flg = FALSE; + break; + case 1://pen down + bUpOrDown = FALSE; + break; + case 2://pen up + bUpOrDown = TRUE; + break; + case 8://ƫ + { + idx++; + int XOffset = pBuf[AddrStart+idx]; + idx++; + int YOffset = pBuf[AddrStart+idx]; + PointData.first.x += XOffset; + PointData.first.y += YOffset; + PointData.second = bUpOrDown; + PonitVec.push_back(PointData); + } + break; + case 9://ƫ + { + idx++; + int XOffset = pBuf[AddrStart+idx]; + idx++; + int YOffset = pBuf[AddrStart+idx]; + while(XOffset != 0 || YOffset != 0) + { + PointData.first.x += XOffset; + PointData.first.y += YOffset; + PointData.second = bUpOrDown; + PonitVec.push_back(PointData); + + idx++; + XOffset = pBuf[AddrStart+idx]; + idx++; + YOffset = pBuf[AddrStart+idx]; + } + } + break; + default://СΧƫ + { + int Low4Bit,High4Bit; + High4Bit = (unsigned char)ch/16;// + Low4Bit = (unsigned char)ch - High4Bit*16;// + + int XOffset = DirStepX[Low4Bit]*High4Bit; + int YOffset = DirStepY[Low4Bit]*High4Bit; + PointData.first.x += XOffset; + PointData.first.y += YOffset; + PointData.second = bUpOrDown; + PonitVec.push_back(PointData); + } + break; + } + idx++; + } + //ͷļ + delete []pBuf; + file.Close(); + } +} \ No newline at end of file diff --git a/LaiPuLaser/FontLaipu.h b/LaiPuLaser/FontLaipu.h new file mode 100644 index 0000000..a5e7bc3 --- /dev/null +++ b/LaiPuLaser/FontLaipu.h @@ -0,0 +1,14 @@ +#pragma once +#include "fonttype.h" +class CFontLaipu :public CFontType +{ +public: + CFontLaipu(void); + ~CFontLaipu(void); + virtual CString GetFontType(){return "FontLaipu";}; + virtual void Initialize(); + virtual void CreatCharVec(char *pChar,vector &PonitVec); +private: + void CreatCharVecExt(unsigned char AsciiCode,vector &PonitVec); +}; + diff --git a/LaiPuLaser/FontTrueType.cpp b/LaiPuLaser/FontTrueType.cpp new file mode 100644 index 0000000..46c0f5a --- /dev/null +++ b/LaiPuLaser/FontTrueType.cpp @@ -0,0 +1,126 @@ +#include "StdAfx.h" +#include "FontTrueType.h" +#include "LogMgr.h" + +vector TrueTypeVec;//ȡ +/*صöϵͳѾװ*/ +BOOL CALLBACK EnumWinFontCallBackEx(ENUMLOGFONTEX* pelf, NEWTEXTMETRICEX* lpntm, int FontType, LPVOID pThis) +{ + if(FontType&RASTER_FONTTYPE) + { + return TRUE; + } + CString str; + if (FontType&TRUETYPE_FONTTYPE) + { + str=((pelf)->elfLogFont.lfFaceName); + } + TrueTypeVec.push_back(str); + return TRUE; +} + +CFontTrueType::CFontTrueType(void) +{ +} +CFontTrueType::~CFontTrueType(void) +{ +} +void CFontTrueType::Initialize() +{ + HDC hDC; + hDC=::GetWindowDC(NULL); + LOGFONT lf; + + memset(&lf,0,sizeof(LOGFONT)); + lf.lfCharSet=GB2312_CHARSET; + ::EnumFontFamiliesEx(hDC, &lf,(FONTENUMPROC)EnumWinFontCallBackEx,(LPARAM)this,(DWORD) 0); + ::ReleaseDC(NULL,hDC); + //ʱ + int size = TrueTypeVec.size(); + for(int i=0;i &PonitVec) +{ + CClientDC dc(NULL); + CDC *pDC = &dc; + + LOGFONT lf; + memset(&lf, 0, sizeof(lf)); + lf.lfHeight = 1000;//ߴԽƽԽ + lf.lfWeight = FW_NORMAL; + lf.lfOutPrecision = OUT_TT_ONLY_PRECIS; + lf.lfCharSet = GB2312_CHARSET; + // + _tcscpy(lf.lfFaceName, _T(GetCurFontName())); + + // create and select it + CFont newFont; + if (!newFont.CreateFontIndirect(&lf)) + return; + CFont* pOldFont = pDC->SelectObject(&newFont); + + pDC->SetBkMode(TRANSPARENT);//͸ + //ʼһ· + pDC->BeginPath(); + pDC->TextOut(0, 0, pChar); + pDC->EndPath();//· + + //תΪ߶ + pDC->FlattenPath();//һ·е߶ת߶ + int Count=pDC->GetPath(NULL,NULL,0);//ȡ· + CPoint* pPoin=new CPoint[Count]; + BYTE* pByte=new BYTE[Count]; + CPoint endpoint; + pDC->GetPath(pPoin,pByte,Count); + + PointType PointData; + for(int i=0;iSelectObject(pOldFont); + //ֱ + Mirror(PonitVec); +} +//ֱ +void CFontTrueType::Mirror(vector &PonitVec) +{ + int size = PonitVec.size(); + for(int i=0;i &PonitVec); +private: + void Mirror(vector &PonitVec); +}; + diff --git a/LaiPuLaser/FontType.cpp b/LaiPuLaser/FontType.cpp new file mode 100644 index 0000000..5a9d49c --- /dev/null +++ b/LaiPuLaser/FontType.cpp @@ -0,0 +1,47 @@ +#include "StdAfx.h" +#include "FontType.h" + + +CFontType::CFontType(void) +{ + m_CurFontNameIdx = 0;//ǰѡֵ +} +CFontType::~CFontType(void) +{ +} + +void CFontType::UpdateFontNameComb(CComboBox &Comb) +{ + vector::iterator iter = m_FontNameVec.begin(); + vector::iterator iter_end = m_FontNameVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + Comb.InsertString(i,m_FontNameVec[i]); + } + Comb.SetCurSel(m_CurFontNameIdx); +} +CString CFontType::GetCurFontName() +{ + CString name; + int size = m_FontNameVec.size(); + if(m_CurFontNameIdx>=0 && m_CurFontNameIdx::iterator iter = m_FontNameVec.begin(); + vector::iterator iter_end = m_FontNameVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + if((*iter) == FontName)//ҵƥ + { + m_CurFontNameIdx = i;//Ϊǰѡ + return true; + } + } + return false; +} \ No newline at end of file diff --git a/LaiPuLaser/FontType.h b/LaiPuLaser/FontType.h new file mode 100644 index 0000000..3f68acb --- /dev/null +++ b/LaiPuLaser/FontType.h @@ -0,0 +1,24 @@ +#pragma once +#include "GlobalDefine.h" + +class CFontType +{ +public: + CFontType(void); + virtual ~CFontType(void); + virtual void Initialize(){}; + virtual void CreatCharVec(char *pChar,vector &m_PonitVec){}; + virtual int GetCurFontNameIdx(){return m_CurFontNameIdx;}; +public: + virtual CString GetFontType(){return "";}; + void UpdateFontNameComb(CComboBox &Comb); + void SetCurFontNameIdx(int idx){m_CurFontNameIdx = idx;}; + CString GetCurFontName(); + bool SetCurFontByName(CString FontName); +protected: + void AddTypeName(CString s){m_FontNameVec.push_back(s);}; +protected: + int m_CurFontNameIdx;//ǰѡֵ + vector m_FontNameVec;//ֵ +}; + diff --git a/LaiPuLaser/FontTypeMgr.cpp b/LaiPuLaser/FontTypeMgr.cpp new file mode 100644 index 0000000..3da065b --- /dev/null +++ b/LaiPuLaser/FontTypeMgr.cpp @@ -0,0 +1,154 @@ +#include "StdAfx.h" +#include "FontTypeMgr.h" +#include "LogMgr.h" +#include "FontLaipu.h" +#include "FontTrueType.h" +#include "FontBarcode.h" + + +CFontTypeMgr CFontTypeMgr::m_Instance; + +CFontTypeMgr::CFontTypeMgr(void) +{ +} +CFontTypeMgr::~CFontTypeMgr(void) +{ +} +CFontTypeMgr &CFontTypeMgr::Instance() +{ + return m_Instance; +} + +//ʼ +void CFontTypeMgr::Initialize() +{ + + //windows TrueType ֿ + CFontType *p1 = new CFontTrueType; + p1->Initialize(); + AddFontType(p1); + //յֿ + CFontType *p2 = new CFontLaipu; + p2->Initialize(); + AddFontType(p2); + //ֿ + CFontType *p3 = new CFontBarcode; + p3->Initialize(); + AddFontType(p3); + + m_CurFontTypeIdx = 0;//ǰѡֿ +} +bool CFontTypeMgr::CheckIdx(int idx) +{ + int size = m_FontTypeVec.size(); + if(idx>=0 && idx sPtr(p); + m_FontTypeVec.push_back(sPtr); +} +//ֲֿ뵽comb +void CFontTypeMgr::FontTypeNameInsertToComb(CComboBox &Comb) +{ + // + Comb.ResetContent(); + + vector>::iterator iter = m_FontTypeVec.begin(); + vector>::iterator iter_end = m_FontTypeVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + Comb.InsertString(i,(*iter)->GetFontType()); + } + Comb.SetCurSel(m_CurFontTypeIdx); +} +//ˢбCComboBox +void CFontTypeMgr::UpdateFontNameComb(CComboBox &Comb) +{ + // + Comb.ResetContent(); + if(CheckIdx(m_CurFontTypeIdx)) + { + m_FontTypeVec[m_CurFontTypeIdx]->UpdateFontNameComb(Comb); + } +} +//ȡǰѡ· +CString CFontTypeMgr::GetFontPath(CString FontName) +{ + //ȻFONT ļеĿ¼-------------------------------------------------------- + CString sPath; + GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024); //ȡǰĿ¼ + sPath.ReleaseBuffer(); + int nPos; + nPos = sPath.ReverseFind('\\'); + sPath = sPath.Left(nPos); + sPath = sPath + "\\font\\"; + return sPath+FontName; +} +//õǰѡ +void CFontTypeMgr::SetCurFontType(int idx) +{ + m_CurFontTypeIdx = idx; +} +void CFontTypeMgr::GetCurFontName(int idx) +{ + if(CheckIdx(m_CurFontTypeIdx)) + { + m_FontTypeVec[m_CurFontTypeIdx]->SetCurFontNameIdx(idx); + } +} +//ȡǰѡֵ +int CFontTypeMgr::GetCurFontTypeIdx() +{ + if(CheckIdx(m_CurFontTypeIdx)) + return m_FontTypeVec[m_CurFontTypeIdx]->GetCurFontNameIdx(); + else + return -1; +} +//õǰַ +void CFontTypeMgr::CreatCharVec(char *pChar,vector &m_PonitVec) +{ + if(CheckIdx(m_CurFontTypeIdx)) + { + m_FontTypeVec[m_CurFontTypeIdx]->CreatCharVec(pChar,m_PonitVec); + } +} +CString CFontTypeMgr::GetCurFontTypeName() +{ + CString str; + if(CheckIdx(m_CurFontTypeIdx)) + { + str = m_FontTypeVec[m_CurFontTypeIdx]->GetFontType(); + } + return str; +} +CString CFontTypeMgr::GetCurFontName() +{ + CString str; + if(CheckIdx(m_CurFontTypeIdx)) + { + str = m_FontTypeVec[m_CurFontTypeIdx]->GetCurFontName(); + } + return str; +} +//ͨı䵱ǰѡ +void CFontTypeMgr::SetCurFontByName(CString FontTypeName,CString FontName) +{ + vector>::iterator iter = m_FontTypeVec.begin(); + vector>::iterator iter_end = m_FontTypeVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + if((*iter)->GetFontType() == FontTypeName)//ƥ + { + if((*iter)->SetCurFontByName(FontName))//ͬʱҪƥɹ + { + m_CurFontTypeIdx = i; + break; + } + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/FontTypeMgr.h b/LaiPuLaser/FontTypeMgr.h new file mode 100644 index 0000000..eddc867 --- /dev/null +++ b/LaiPuLaser/FontTypeMgr.h @@ -0,0 +1,34 @@ +#pragma once +#include "GlobalDefine.h" +#include "FontType.h" +#include "SmartPtr.h" + +typedef pair NamePath;//ļ· + +class CFontTypeMgr +{ +public: + ~CFontTypeMgr(void); + static CFontTypeMgr &Instance();//ģʽ + + void Initialize(); + void UpdateFontNameComb(CComboBox &Comb); + void FontTypeNameInsertToComb(CComboBox &Comb); + CString GetFontPath(CString FontName); + void SetCurFontType(int idx); + void GetCurFontName(int idx); + void CreatCharVec(char *pChar,vector &m_PonitVec); + CString GetCurFontTypeName(); + CString GetCurFontName(); + void SetCurFontByName(CString FontTypeName,CString FontName); + int GetCurFontTypeIdx(); +private: + CFontTypeMgr(void); + + void AddFontType(CFontType *); + bool CheckIdx(int idx); +private: + static CFontTypeMgr m_Instance;//ģʽ + int m_CurFontTypeIdx;//ǰѡֿ + vector> m_FontTypeVec;// +}; diff --git a/LaiPuLaser/GlobalDefine.h b/LaiPuLaser/GlobalDefine.h new file mode 100644 index 0000000..9099a7e --- /dev/null +++ b/LaiPuLaser/GlobalDefine.h @@ -0,0 +1,379 @@ +#pragma once +//ȫͶ + +using namespace std;/*ʹñ׼ֿռ*/ +//STL ׼ͷļ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//α뾯 +#pragma warning(disable : 4800) +#pragma warning(disable : 4244) +#pragma warning(disable : 4996) +#pragma warning(disable : 4018) + +#define PI 3.14159265358979323846 +//#define COORD_EPS 0.001 //(0.001 ʾȽ,ľС1um Ϊ) +#define COORD_EPS 0.00001 + +#define RGB_WHITE RGB(255,255,255) //ɫ +#define RGB_BLACK RGB(0,0,0) //ɫ +#define RGB_GREEN RGB(0,255,0) //ɫ +#define RGB_GREEN1 RGB(29,241,135) //ɫ + +#define RGB_RED RGB(255,0,0) //ɫ +#define RGB_PINK RGB(255,55,120) //ۺɫ +#define RGB_PINK1 RGB(231,61,175) //ۺɫ + +#define RGB_YELLOW RGB(255,255,0) //ɫ +#define RGB_BLUE RGB(0,0,255) //ɫ +#define RGB_BLUE1 RGB(153,217,234) //ɫ + +#define RGB_NODE_BLUE RGB(0,63,255) //ڵɫ +#define RGB_PURPLE RGB(163,73,164) //ɫ +#define RGB_GRAY RGB(240,240,240) //ɫ +#define RGB_GRAY1 RGB(160,160,160) //ɫ + + + +#define STR_NULL "" +#define STR_INPUT_ERROR "Чָ: " +#define STR_INPUT_SYMBOL '>' + + +//깤ߵ +enum MOUSE_TOOL +{ + _TOOL_POINT=0, + _TOOL_RECT, + _TOOL_LINE, + _TOOL_PLINE,//߶ + _TOOL_CIRCLE, + _TOOL_MOVE, + _TOOL_MOVE2,//ָƶ + _TOOL_ROTATO, + _TOOL_COPY, + _TOOL_MEASURE,// + _TOOL_ZOOM,// + _TOOL_CUT,//޼ + _TOOL_ADD_NODE,//ӽڵ + _TOOL_DEL_NODE,//ɾڵ + _TOOL_BREAK_NODE,//Ͻڵ + _TOOL_MOVE_NODE,//ƶڵ + _TOOL_TEXT,// + _TOOL_BARCODE,// + _TOOL_ONE_POINT,//һ + _TOOL_STRETCH,//칤 + _TOOL_PT_MOVE_TO_CCD,//ض;ĵ + _TOOL_SET_MARK_PT,//ֶָλ +}; +enum OBJ_TYPE +{ + _TYPE_BASE = 0, + _TYPE_PLINE,//߶1 + _TYPE_POINT,//2 + _TYPE_CIRCLE,//Բ3 + _TYPE_COMPOSITE,//һ4 + _TYPE_TXT,//ַ5 + _TYPE_BARCODE,//6 + _TYPE_STR,//string 7 + _TYPE_CHAR,//ַ8 + +}; +enum X_OR_Y +{ + _X=0, + _Y, + _XY, +}; + +enum CATCH_PT_TYPE//ץȡ +{ + _CATCH_NODE = 0,// + _CATCH_INTERSECT,//߶εĽ + _CATCH_ORTHO,// + _CATCH_CUT_TRACK,//Ԫи +}; +enum STATUS//깤ߵ״ֵ̬,ȷÿһʲô +{ + _STATUS_1 = 0, + _STATUS_2, + _STATUS_3, + _STATUS_4, + _STATUS_5, + _STATUS_6, + _STATUS_END +}; +enum OBJ_OP_TYPR +{ + _OP_MOVE = 0, + _OP_ROTATO, + _OP_MIRROR, + _OP_STRETCH,// + _OP_REVERSE,//תݵ + _OP_SCALE,// +}; + +inline bool IsDbEqual(double a,double b) +{ + if((abs(a-b))=B) + { + pt.y = (T+B)/2; + } + return pt; +} +inline DbSize DbRect::GetSize() +{ + DbSize size; + size.w = R - L; + size.h = T - B; + if(size.w<0) + size.w = 0; + if(size.h<0) + size.h = 0; + return size; +} +//ײĵ +inline Dbxy DbRect::GetBottomCenterPt() +{ + Dbxy pt; + pt.x = (L+R)/2; + pt.y = B; + return pt; +} +inline double DbRect::Width() +{ + return R-L; +} +inline double DbRect::Height() +{ + return T-B; +} +#endif + +//װжIJ,ͳһ͸ʽ +struct SObjOperatePar{ +SObjOperatePar() +{ + MoveX = MoveY = 0; + Angle = 0; + OldSize = NewSize = Diff = 0; + Scale = 1; +} +OBJ_OP_TYPR OpType;// +X_OR_Y xy;//ʶxy +Dbxy BasePt;//׼ +double MoveX;//ƶ +double MoveY; +double Angle;//360 Ƚ +double OldSize; +double NewSize; +double Diff; +double Scale;//ű +}; + +typedef pair PointType; + +//ԲIJ +class CCirclePar +{ +public: + CCirclePar(void) + { + Radius = 1; + DEdgeCnt = 32; + bMerge = true; + StartAng = 0; + EndAng = 360; + } +public: + Dbxy CenterPt;//Բ + double Radius;//뾶 + int DEdgeCnt;// + bool bMerge;//Ƿϲ + double StartAng;//ʼǶ360 Ƚ + double EndAng;//Ƕ +}; + diff --git a/LaiPuLaser/GlobalDrawMgr.cpp b/LaiPuLaser/GlobalDrawMgr.cpp new file mode 100644 index 0000000..cc81dfe --- /dev/null +++ b/LaiPuLaser/GlobalDrawMgr.cpp @@ -0,0 +1,803 @@ +#include "StdAfx.h" +#include "GlobalDrawMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "LaiPuLaserView.h" +#include "GlobalFunction.h" +#include "SequentialPoint.h" +#include "DrawSimpleShape.h" +#include "MouseToolmgr.h" +#include "AuthorityMgr.h" +#include "ObjComponentMgr.h" + +CGlobalDrawMgr *gDraw = new CGlobalDrawMgr; + +CGlobalDrawMgr::CGlobalDrawMgr(void) +{ + ResetView(); + + m_SelObjRectGap = 20/m_ViewScale;//ѡobj Χļ + m_RotatoPtDis = 30/m_ViewScale;//תľ + m_MousePointRectSize = 5/m_ViewScale;//ѡǷεijߴ + m_MouseCatchRectSize = 10/m_ViewScale;//겶ľηΧ + m_CatchNodeSize = 6/m_ViewScale;//Ʋnode 㷽ijߴ + m_MouseCursorSize = 32/m_ViewScale;//ijߴ + m_MouseCursorRectSize = 4/m_ViewScale;//м䷽ijߴ + m_PenWidth = 0.5;//ʵĿ + + m_BkgndColor = RGB_WHITE; + m_AxisColor = RGB_GREEN; + + m_ObjectPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_WHITE); + m_SelObjectPen.CreatePen(PS_DOT,m_PenWidth,RGB_RED);//ѡObject Ʊ + + LOGBRUSH LogBrush; + LogBrush.lbColor = RGB_YELLOW; + LogBrush.lbStyle = PS_SOLID; + m_MouseRectPen.CreatePen( PS_COSMETIC | PS_ALTERNATE , 1, &LogBrush, 0, NULL ); + + m_SelObjRectPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_RED);//ѡobj + m_SelObjSmallRectPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_YELLOW);//ѡobj С + m_CatchNodePen.CreatePen(PS_SOLID,3,RGB_YELLOW);//node ı + m_ObjFirstNodeColor = RGB_RED;//obj ׽ڵɫ + m_EasyOperationColor = RGB_YELLOW;//ݲɫ + m_ObjNodeColor = RGB_NODE_BLUE;//obj ڵɫ + m_MeasurePen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_RED);// + m_ObjComponentAreaPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_BLUE);////ԪΧ + m_MarkPointPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_RED);;//۶λ + m_TempRectPen.CreatePen(PS_INSIDEFRAME,m_PenWidth,RGB_RED);//ģ߿ + + + m_ScrollViewSize.cx = SCROLL_SIZE_CX; + m_ScrollViewSize.cy = SCROLL_SIZE_CY; + + m_ScrollViewCenterPt.x = SCROLL_SIZE_CX/2; + m_ScrollViewCenterPt.y = SCROLL_SIZE_CY/2; + + m_bDrawAxis = true;//Ƿ + m_bCatchObjNode = true;//Ƿץȡobj Ľڵ + m_bCatchOrthoPoint = true;//Ƿץȡ + m_bCatchCutTrack = false;//ǷץȡԪиĽ + + m_KeyboardMoveDis = 1;//ƶѡĶһƶľ(λ:mm) + + m_bShowPlatformPos = false;//ʾƽ̨Ӳλ + m_DlgViewScale = 5;//Իͼ豸Ӧ߼ı + + m_WorkAreaViewScale = (0.000461);//۲ű + m_TempViewScale = -1;//ʱű + m_MouseWheelScale = 1.25; + + m_bRectSel = true;//ѡ + m_bPointSel = true;//ѡ + m_bMultipleSel = true;//Ƿѡ(false ʱȡ֮ǰѡ) + m_bMouseWheel = true;//Ƿ + m_bEditLayerObj = true;//ǷԱ༭layer obj + + + m_CircleOneMMptCnt = 5;//Բʱ1mm ܳϰٸ + m_MinCircleOneMMptCnt = 20;//Сֵ(ԶĵСֵ) + + m_bDelOldObj = true;//Ƿɾ֮ǰobj +} + +CGlobalDrawMgr::~CGlobalDrawMgr(void) +{ + m_ObjectPen.DeleteObject(); + m_SelObjectPen.DeleteObject(); + m_MouseRectPen.DeleteObject(); + m_SelObjRectPen.DeleteObject(); + m_SelObjSmallRectPen.DeleteObject(); + m_CatchNodePen.DeleteObject(); + m_MarkPointPen.DeleteObject(); + m_TempRectPen.DeleteObject(); +} +#if 1//ģԹ +void CGlobalDrawMgr::Ini() +{ + gMouseToolMgr.SetMouseTool(_TOOL_POINT); + OnPropertyChanged(); + m_pView = GetCurViewPtr(); + m_pView->DoZoomFull(); +} +CMFCPropertyGridProperty * CGlobalDrawMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("ViewDraw");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ʾ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_BkgndColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_BkgndColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ɫ"); + Description = _T("ͼɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_BkgndColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_BLACK); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_ButtomDefaultColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ButtomDefaultColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ťɫ"); + Description = _T("ťĬɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_ButtomDefaultColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_BLUE); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_WorkAreaViewScale");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkAreaViewScale); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ĬϹ۲"); + Description = _T("۲Ĭϱ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_WorkAreaViewScale, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MouseWheelScale");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MouseWheelScale); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("һα仯ı"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MouseWheelScale, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_KeyboardMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_KeyboardMoveDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ֶƶ"); + Description = _T("ƶѡһεľ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_KeyboardMoveDis, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_CircleOneMMptCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CircleOneMMptCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Բ"); + Description = _T("1 mm ֱԲϵĸ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CircleOneMMptCnt, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MinCircleOneMMptCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MinCircleOneMMptCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԲСֵ"); + Description = _T("Сֵ(ԶĵСֵ,ƺСĻߵ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MinCircleOneMMptCnt, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bShowPlatformPos");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShowPlatformPos); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + + //ʾ + PropertyName = _T("ʾӲλ"); + Description = _T("Ƿʾƽ̨Ӳλùϵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShowPlatformPos, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + + { + //Աӳ + Name = _T("m_ProgressDlgPos_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProgressDlgPos.x); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("λX"); + Description = _T("Ի򵯳λX ()"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProgressDlgPos.x, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_ProgressDlgPos_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProgressDlgPos.y); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("λY"); + Description = _T("Ի򵯳λY ()"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProgressDlgPos.y, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("")); + { + //Աӳ + Name = _T("m_bDrawAxis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDrawAxis); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʾ"); + Description = _T("Ƿʾ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDrawAxis, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_AxisColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AxisColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ɫ"); + Description = _T("ͼɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_AxisColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_BLACK); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("Իview")); + { + //Աӳ + Name = _T("m_DlgLogicCenter_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DlgLogicCenter.x); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("߼X"); + Description = _T("view ӳ䵽Ի߼X"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DlgLogicCenter.x, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_DlgLogicCenter_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DlgLogicCenter.y); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("߼Y"); + Description = _T("view ӳ䵽Ի߼Y"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DlgLogicCenter.y, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_DlgViewScale");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DlgViewScale); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Իͼ"); + Description = _T("view ӳ䵽Իͼ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DlgViewScale, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + //-------------------------------------------------------------------------------// + //-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("׽")); + { + //Աӳ + Name = _T("m_bCatchObjNode");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatchObjNode); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ڵ㲶׽"); + Description = _T("Ƿ׽Ľڵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatchObjNode, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCatchObjLine");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatchObjLine); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("߶β׽"); + Description = _T("Ƿ׽߶ϵĵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatchObjLine, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCatchCrossPoint");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatchCrossPoint); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("㲶׽"); + Description = _T("Ƿ׽Ľ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatchCrossPoint, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCatchOrthoPoint");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatchOrthoPoint); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("׽"); + Description = _T("Ƿ׽"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatchOrthoPoint, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bCatchCutTrack");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCatchCutTrack); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭ׽"); + Description = _T("Ƿ׽Ԫĵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatchCutTrack, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("")); + { + //Աӳ + Name = _T("m_bEditLayerObj");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bEditLayerObj); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("༭"); + Description = _T("Ƿֶ༭ͼ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bEditLayerObj, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bRectSel");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bRectSel); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ѡ"); + Description = _T("Ƿʹѡ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bRectSel, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bPointSel");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bPointSel); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ѡ"); + Description = _T("Ƿʹѡ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bPointSel, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bMultipleSel");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bMultipleSel); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ѡ"); + Description = _T("false ʱȡ֮ǰѡ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMultipleSel, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bMouseWheel");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bMouseWheel); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("Ƿ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMouseWheel, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + return pGroup; +} +//ӦԵĸı +void CGlobalDrawMgr::OnPropertyChanged() +{ + //ȡǰָ + CLaiPuLaserView *pView = GetCurViewPtr(); + if(pView) + { + pView->RefreshView(); + } +} +#endif +#if 1 +//view ΪԻʾ +void CGlobalDrawMgr::SetViewToDlg() +{ + m_LogicCenter = m_DlgLogicCenter; + m_ViewScale = m_DlgViewScale/(gObjComponentMgr->GetAreaRadius()/100); +} +void CGlobalDrawMgr::ResetView() +{ + CPoint pt(LOGIC_CENTER_X,LOGIC_CENTER_Y); + m_LogicCenter = pt; + m_ViewScale = 10000;//ͼ豸Ӧ߼ı(1׶Ӧ10000) +} +double CGlobalDrawMgr::GetWorkAreaViewScale() +{ + if(m_TempViewScale>0)//ʱű + { + return m_TempViewScale; + } + return m_WorkAreaViewScale; +} +#endif +#if 1//ת +//߼תΪ豸 +int CGlobalDrawMgr::Logic2Divce(double LogicCoord,X_OR_Y xy) +{ + int rtn; + if(xy == _X) + { + rtn = LogicCoord*m_ViewScale + m_LogicCenter.x; + } + else + { + rtn = m_LogicCenter.y -LogicCoord*m_ViewScale; + } + return rtn; +} +double CGlobalDrawMgr::Divce2Logic(int DivceCoord,X_OR_Y xy) +{ + double rtn; + if(xy == _X) + { + rtn = (DivceCoord- m_LogicCenter.x)/m_ViewScale; + } + else + { + rtn = (m_LogicCenter.y - DivceCoord)/m_ViewScale; + } + return rtn; +} +CRect CGlobalDrawMgr::DbRect2CRect(DbRect dbRect) +{ + CRect rect; + rect.left = Logic2Divce(dbRect.L,_X); + rect.right = Logic2Divce(dbRect.R,_X); + rect.top = Logic2Divce(dbRect.T,_Y); + rect.bottom = Logic2Divce(dbRect.B,_Y); + + return rect; +} +Dbxy CGlobalDrawMgr::CPoint2Dbxy(CPoint point) +{ + Dbxy pt; + pt.x = Divce2Logic(point.x,_X); + pt.y = Divce2Logic(point.y,_Y); + return pt; +} +CPoint CGlobalDrawMgr::Dbxy2CPoint(Dbxy point) +{ + CPoint pt; + pt.x = Logic2Divce(point.x,_X); + pt.y = Logic2Divce(point.y,_Y); + return pt; +} +//豸ߴתΪ߼ߴ +double CGlobalDrawMgr::Int2Double(int size) +{ + return (double)size/m_ViewScale; +} +//߼ߴתΪ豸ߴ +int CGlobalDrawMgr::Double2Int(double d) +{ + return (int)(d*m_ViewScale); +} +#endif + +#if 1//ƹͨ +void CGlobalDrawMgr::Draw(CDC* pDC) +{ + DrawAxis(pDC); +} +// +void CGlobalDrawMgr::DrawAxis(CDC* pDC) +{ + if(!m_bDrawAxis) + return; + CPen Pen,*pOldPen; + Pen.CreatePen(PS_INSIDEFRAME,1,m_AxisColor); + pOldPen = pDC->SelectObject(&Pen); + + int CenterX = m_ScrollViewCenterPt.x; + int CenterY = m_ScrollViewCenterPt.y; + + pDC->MoveTo(0, CenterY); + pDC->LineTo(m_ScrollViewSize.cx, CenterY); + pDC->MoveTo(CenterX,0); + pDC->LineTo(CenterX, m_ScrollViewSize.cy*2); + Pen.DeleteObject(); + pDC->SelectObject(pOldPen); +} +//Ĺ +void CGlobalDrawMgr::DrawMouseCross(CDC* pDC,Dbxy pt) +{ + double CorssSize = GetCurViewPtr()->GetCurrScaleVal(m_MouseCursorSize); + XorDrawCross(pDC,true,m_ObjectPen,pt,CorssSize); +} +//Ĺ +void CGlobalDrawMgr::DrawMouseRect(CDC* pDC,Dbxy pt) +{ + double rectSize = GetCurViewPtr()->GetCurrScaleVal(m_MouseCursorRectSize); + DrawRect(pDC,m_ObjectPen,pt,rectSize); +} +//ݵ +void CGlobalDrawMgr::DrawDbxyVec(CDC* pDC,vector> &vec,Dbxy Offset) +{ + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + int size = vec.size(); + for(int i=0;iter!=iter_end;i++,iter++) + { + vector::iterator iter1 = (*iter).begin(); + vector::iterator iter1_end = (*iter).end(); + for(;iter1!=iter1_end;iter1++) + { + Dbxy Dpt = (*iter1); + Dpt.x += Offset.x; + Dpt.y += Offset.y; + CPoint pt = Dbxy2CPoint(Dpt); + + if(iter1 == (*iter).begin()) + { + pDC->MoveTo(pt.x,pt.y); + } + else + { + pDC->LineTo(pt.x,pt.y); + } + } + } +} +// +void CGlobalDrawMgr::DrawTxt(CDC *pDC,CString txt,Dbxy pt) +{ + CPoint Point = Dbxy2CPoint(pt); + //------------------------------------------------------ + pDC->TextOut(Point.x,Point.y,txt); +} +#endif +#if 1//ȡһЩֵ +double CGlobalDrawMgr::GetSelObjRectGap() +{ + return GetCurViewPtr()->GetCurrScaleVal(m_SelObjRectGap); +} +double CGlobalDrawMgr::GetRotatoPtDis() +{ + return GetCurViewPtr()->GetCurrScaleVal(m_RotatoPtDis); +} +double CGlobalDrawMgr::GetCatchNodeSize() +{ +return GetCurViewPtr()->GetCurrScaleVal(m_CatchNodeSize); +} +#endif +#if 1// +//ȡǰ㷶Χ +DbRect CGlobalDrawMgr::GetCurPointRect(Dbxy pt,double Scale) +{ + return GetCurRect(pt,m_MousePointRectSize*Scale); +} +//ȡǰ겶rect Χ +DbRect CGlobalDrawMgr::GetCurCatchRect(Dbxy pt) +{ + return GetCurRect(pt,m_MouseCatchRectSize); +} +DbRect CGlobalDrawMgr::GetCurRect(Dbxy pt,double size) +{ + double DSize = GetCurViewPtr()->GetCurrScaleVal(size); + DbRect rect(Dbxy(pt.x-DSize,pt.y+DSize),Dbxy(pt.x+DSize,pt.y-DSize)); + return rect; +} +#endif +//ȡ뾶R Բĵ +int CGlobalDrawMgr::GetCirclePtCnt(double R) +{ + double Perimeter = 2*PI*R; + int cnt = Perimeter*m_CircleOneMMptCnt; + return (cnt > m_MinCircleOneMMptCnt)?cnt:m_MinCircleOneMMptCnt; +} diff --git a/LaiPuLaser/GlobalDrawMgr.h b/LaiPuLaser/GlobalDrawMgr.h new file mode 100644 index 0000000..282a7ff --- /dev/null +++ b/LaiPuLaser/GlobalDrawMgr.h @@ -0,0 +1,148 @@ +#pragma once +#include "Module.h" +#include "DataPoint.h" +#include "EnumPropertieType.h" + +#define SCROLL_SIZE_CX (15000000) //x ķΧ--(λ:) +#define SCROLL_SIZE_CY (8000000) //y ķΧ--(λ:) +#define LOGIC_CENTER_X (SCROLL_SIZE_CX/2) //߼ĵX --(λ:) +#define LOGIC_CENTER_Y (SCROLL_SIZE_CY/2) //߼ĵY --(λ:) + +class CGlobalDrawMgr:public CModule +{ +public: + CGlobalDrawMgr(void); + ~CGlobalDrawMgr(void); + virtual void Ini(); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + //ӦԵĸı + virtual void OnPropertyChanged(); + virtual MODULE GetModuleType(){return _DRAW_PROP;}; + virtual void Draw(CDC* pDC); +public: + void XorDrawLine(CDC* pDC,CPen&pen,Dbxy pt1,Dbxy pt2); + COLORREF GetBkgndColor(){return m_BkgndColor;}; + CSize GetScrollViewSize(){return m_ScrollViewSize;}; + Dbxy CPoint2Dbxy(CPoint point); + CPoint Dbxy2CPoint(Dbxy point); + CRect DbRect2CRect(DbRect dbRect); + double Int2Double(int size); + int Double2Int(double d); + CPen& GetObjectPen(){return m_ObjectPen;}; + CPen& GetSelObjectPen(){return m_SelObjectPen;}; + CPen& GetMouseRectPen(){return m_MouseRectPen;}; + CPen& GetSelObjRectPen(){return m_SelObjRectPen;}; + CPen& GetSelObjSmallRectPen(){return m_SelObjSmallRectPen;}; + CPen& GetCatchNodePen(){return m_CatchNodePen;}; + CPen& GetMeasurePen(){return m_MeasurePen;}; + CPen& GetObjComponentAreaPen(){return m_ObjComponentAreaPen;}; + CPen& GetMarkPointPen(){return m_MarkPointPen;}; + CPen& GetTempRectPen(){return m_TempRectPen;}; + double GetCatchNodeSize(); + COLORREF GetObjNodeColor(){return m_ObjNodeColor;}; + COLORREF GetObjFirstNodeColor(){return m_ObjFirstNodeColor;}; + COLORREF GetEasyOperationColor(){return m_EasyOperationColor;}; + COLORREF GetButtomDefaultColor(){return m_ButtomDefaultColor;}; + double GetSelObjRectGap(); + double GetRotatoPtDis(); + DbRect GetCurPointRect(Dbxy pt,double Scale = 1); + DbRect GetCurCatchRect(Dbxy pt); + bool IsCatchObjNode(){return m_bCatchObjNode;}; + bool IsCatchObjLine(){return m_bCatchObjLine;}; + bool IsCatchCrossPoint(){return m_bCatchCrossPoint;}; + bool IsCatchOrthoPoint(){return m_bCatchOrthoPoint;}; + bool IsCatchCutTrack(){return m_bCatchCutTrack;}; + void SetCurZoomPoint(CPoint point){m_CurZoomPoint = point;}; + CPoint GetCurZoomPoint(){return m_CurZoomPoint;}; + void DrawMouseCross(CDC* pDC,Dbxy pt); + void DrawMouseRect(CDC* pDC,Dbxy pt); + void DrawDbxyVec(CDC* pDC,vector> &vec,Dbxy Offset); + double GetKeyboardMoveDis(){return m_KeyboardMoveDis;}; + bool IsShowPlatformPos(){return m_bShowPlatformPos;}; + void SetViewToDlg(); + void ResetView(); + double GetWorkAreaViewScale(); + double GetMouseWheelScale(){return m_MouseWheelScale;}; + bool IsbRectSel(){return m_bRectSel;}; + bool IsbPointSel(){return m_bPointSel;}; + bool IsEditLayerObj(){return m_bEditLayerObj;}; + bool IsbMultipleSel(){return m_bMultipleSel;}; + bool IsbMouseWheel(){return m_bMouseWheel;}; + void SetTempViewScale(double val){m_TempViewScale = val;}; + int GetCirclePtCnt(double R); + CPoint GetProgressDlgPos(){return m_ProgressDlgPos;}; + void DrawTxt(CDC *pDC,CString txt,Dbxy pt); + bool IsbDelOldObj(){return m_bDelOldObj;}; + void SetbDelOldObj(bool b){m_bDelOldObj = b;}; +private: + DbRect GetCurRect(Dbxy pt,double size); + void DrawAxis(CDC* pDC); + int Logic2Divce(double LogicCoord,X_OR_Y xy); + double Divce2Logic(int DivceCoord,X_OR_Y xy); +private: + CPoint m_LogicCenter;//߼ĵ + CPoint m_DlgLogicCenter;//Ի߼ĵ + double m_ViewScale;//ͼ豸Ӧ߼ı + double m_DlgViewScale;//Իͼ豸Ӧ߼ı + double m_SelObjRectGap;//ѡobj Χļ + double m_RotatoPtDis;//תľ + double m_MousePointRectSize;//ѡľεijߴ + double m_MouseCatchRectSize;//겶ľηΧ + double m_CatchNodeSize;//Ʋnode 㷽ijߴ + double m_MouseCursorSize;//ijߴ + double m_MouseCursorRectSize;//м䷽ijߴ + CSize m_ScrollViewSize;//ͼķΧ + + CPoint m_ProgressDlgPos;//Իλ + + CPoint m_ScrollViewCenterPt;//ͼĵ + COLORREF m_BkgndColor; //viewɫ + bool m_bDrawAxis;//Ƿ + COLORREF m_AxisColor; //ɫ + + int m_PenWidth;//ʵĿ + CPen m_ObjectPen;//Object Ʊ + CPen m_SelObjectPen;//ѡObject Ʊ + CPen m_MouseRectPen;//ѡı + CPen m_SelObjRectPen;//ѡobj + CPen m_SelObjSmallRectPen;//ѡobj С + CPen m_CatchNodePen;//node ı + CPen m_MeasurePen;// + CPen m_ObjComponentAreaPen;//ԪΧ + CPen m_MarkPointPen;//۶λ + CPen m_TempRectPen;//ģ߿ + + + COLORREF m_ObjNodeColor;//obj ڵɫ + COLORREF m_ObjFirstNodeColor;//obj ڵɫ + COLORREF m_EasyOperationColor;//ݲɫ + + bool m_bCatchObjNode;//Ƿץȡobj Ľڵ + bool m_bCatchObjLine;//Ƿץȡobj ߶ϵĵ + bool m_bCatchCrossPoint;//Ƿץȡobj Ľ + bool m_bCatchOrthoPoint;//Ƿץȡ + bool m_bCatchCutTrack;//ǷץȡԪиĽ + + CPoint m_CurZoomPoint;//ǰŵ + + double m_KeyboardMoveDis;//ƶѡĶһƶľ(λ:mm) + double m_WorkAreaViewScale;//۲ű + double m_TempViewScale;//ʱű + double m_MouseWheelScale;//ı + bool m_bShowPlatformPos;//ʾƽ̨Ӳλ + + bool m_bRectSel;//ѡ + bool m_bPointSel;//ѡ + bool m_bMultipleSel;//Ƿѡ(false ʱȡ֮ǰѡ) + bool m_bMouseWheel;//Ƿ + bool m_bEditLayerObj;//ǷԱ༭layer obj + + COLORREF m_ButtomDefaultColor;//ťĬɫ + + int m_CircleOneMMptCnt;//Բʱ1mm ܳϰٸ + int m_MinCircleOneMMptCnt;//Сֵ(ԶĵСֵ) + + bool m_bDelOldObj;//Ƿɾ֮ǰobj +}; + +extern CGlobalDrawMgr *gDraw; \ No newline at end of file diff --git a/LaiPuLaser/GlobalFunction.cpp b/LaiPuLaser/GlobalFunction.cpp new file mode 100644 index 0000000..c737b32 --- /dev/null +++ b/LaiPuLaser/GlobalFunction.cpp @@ -0,0 +1,697 @@ +#include "StdAfx.h" +#include "GlobalFunction.h" +#include "PropertiesWnd.h" +#include "BitOperation.h" +#include "GlobalDrawMgr.h" +#include +#include "MsgBox.h" + +#if 1 +//ȡǰָ +CLaiPuLaserView *GetCurViewPtr() +{ + CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); + CChildFrame *pChild = (CChildFrame*)pFrame->GetActiveFrame(); + CLaiPuLaserView *pView = (CLaiPuLaserView*)pChild->GetActiveView(); + return pView; +} +//ȡǰļָ +CLaiPuLaserDoc *GetCurDocPtr() +{ + CLaiPuLaserView *pView = GetCurViewPtr(); + CLaiPuLaserDoc *pDoc = pView->GetDocument(); + return pDoc; +} +CMainFrame* GetFrame() +{ + CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); + return pFrame; +} +//ȡlayer ʵ +CLayer &GetLayerInstance() +{ + return CLayer::Instance(); +} +#endif +#if 1//ηΧغ +//Ƿھ +bool IsPointInRect(Dbxy point,DbRect rect) +{ + if(point.x>= rect.L && point.x<=rect.R && point.y<= rect.T && point.y>=rect.B) + return true; + else + return false; +} +//Ƿཻ +bool IsTwoRectIntersect(DbRect &rect1,DbRect &rect2) +{ + if((((rect2.L>=rect1.L)&&(rect2.L<=rect1.R)) || ((rect2.R>=rect1.L)&&(rect2.R<=rect1.R))) && + (((rect2.T>=rect1.B)&&(rect2.T<=rect1.T)) || ((rect2.B>=rect1.B)&&(rect2.B<=rect1.T)))) + return true; + else + return false; +} +//жϵγɵֱǷܺrect ཻ +//Radius ֱߵһ볤mm +bool IsLineAndRectIntersect(Dbxy pt,DbRect rect,double Ang,double Radius) +{ + //ֱߵĶ˵ + Dbxy StartPt(Radius*(-1),pt.y); + Dbxy EndPt(Radius,pt.y); + StartPt = RotatoPt(StartPt,Ang,pt); + EndPt = RotatoPt(EndPt,Ang,pt); + + return IsLineInRect(StartPt,EndPt,rect); +} +//ж߶Ƿھ +bool IsLineInRect(Dbxy point1,Dbxy point2,DbRect rect) +{ + if(IsTwoLineIntersect(point1,point2,Dbxy(rect.R,rect.T),Dbxy(rect.L,rect.B))) + return true; + if(IsTwoLineIntersect(point1,point2,Dbxy(rect.L,rect.T),Dbxy(rect.R,rect.B))) + return true; + if(IsPointInRect(point1,rect) || IsPointInRect(point2,rect)) + return true; + return false; +} +void AdjustRange(double &min,double &max,double val) +{ + if(min>max)//һ + { + min = max = val; + } + else + { + if(min > val) + { + min = val; + } + if(max < val) + { + max = val; + } + } +} +//ȡݵı߽緶Χ +DbRect GetDbPointVecRect(vector &vec) +{ + DbRect rect; + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + AdjustRectByPoint(rect,(*iter)); + } + return rect; +} +//һηΧ +void AdjustRectByPoint(DbRect &rect,Dbxy pt) +{ + AdjustRange(rect.L,rect.R,pt.x); + AdjustRange(rect.B,rect.T,pt.y); +} + +//һηΧ +void AdjustRectByRect(DbRect &rect1,DbRect rect2) +{ + Dbxy pt1(rect2.L,rect2.T); + Dbxy pt2(rect2.R,rect2.B); + AdjustRectByPoint(rect1,pt1); + AdjustRectByPoint(rect1,pt2); +} +#endif +#if 1//ж߶Ƿཻ +#define EPS 1e-8 +#define ZERO(x) (((x)>0?(x):-(x))EPS; +} + +//ֱƽ +int Parallel(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2) +{ + return ZERO((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y)); +} + +//㹲 +int dots_inline(Dbxy p1,Dbxy p2,Dbxy p3) +{ + return ZERO(xmult(p1,p2,p3)); +} +//߶Ƿཻ +int IsTwoLineIntersect(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2) +{ + if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2)) + return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2); + return dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_online_in(v2,u1,u2); +} +//߶εĽ +Dbxy CalIntersection(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2) +{ + Dbxy ret=u1; + double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x)); + ret.x+=(u2.x-u1.x)*t; + ret.y+=(u2.y-u1.y)*t; + return ret; +} +void IntersectionOfRectAndLineExt(bool &flg,Dbxy &pt1,Dbxy &pt2,Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2) +{ + if(IsTwoLineIntersect(u1,u2,v1,v2)) + { + //ཻ + Dbxy pt = CalIntersection(u1,u2,v1,v2); + if(flg) + { + pt1 = pt; + } + else + { + pt2 = pt; + } + flg =!flg; + } +} +//κ߶εĽ +Dbxy IntersectionOfRectAndLine(Dbxy LinePt1,Dbxy LinePt2,DbRect rect) +{ + bool flg = false;//ֱ浽1 ǵ2 + Dbxy pt1,pt2; + //߶κrect ߵĽ + { + Dbxy TmpPt1(rect.L,rect.T); + Dbxy TmpPt2(rect.L,rect.B); + IntersectionOfRectAndLineExt(flg,pt1,pt2,LinePt1,LinePt2,TmpPt1,TmpPt2); + } + { + Dbxy TmpPt1(rect.L,rect.B); + Dbxy TmpPt2(rect.R,rect.B); + IntersectionOfRectAndLineExt(flg,pt1,pt2,LinePt1,LinePt2,TmpPt1,TmpPt2); + } + { + Dbxy TmpPt1(rect.R,rect.B); + Dbxy TmpPt2(rect.R,rect.T); + IntersectionOfRectAndLineExt(flg,pt1,pt2,LinePt1,LinePt2,TmpPt1,TmpPt2); + } + { + Dbxy TmpPt1(rect.R,rect.T); + Dbxy TmpPt2(rect.L,rect.T); + IntersectionOfRectAndLineExt(flg,pt1,pt2,LinePt1,LinePt2,TmpPt1,TmpPt2); + } + //м + return CenterPtOfTwoPoint(pt1,pt2); +} +//мĵ +Dbxy CenterPtOfTwoPoint(Dbxy Pt1,Dbxy Pt2) +{ + Dbxy ret; + ret.x = (Pt1.x+Pt2.x)/2; + ret.y = (Pt1.y+Pt2.y)/2; + return ret; +} + +#endif +#if 1//㺯 +//нתΪ360 +double AngleTo360(double Angle) +{ + double _360Angle; + _360Angle = - Angle*180/PI; + //УΪֵ + if(_360Angle < 0) + { + _360Angle += 360; + } + if(_360Angle > 180) + { + _360Angle -= 360; + } + return _360Angle; +} +//360 תΪ(360=2л) +double _360ToAngle(double _360Angle) +{ + double Angle; + Angle = (_360Angle*PI)/180; + return Angle; +} + +//㷴нǶStartPt: תʼEndPt: תCenterPt: תĵ +double CalAngle(Dbxy CenterPt,Dbxy StartPt,Dbxy EndPt) +{ + double x2 = CenterPt.x; + double y2 = CenterPt.y; + double x1 = StartPt.x; + double y1 = StartPt.y; + double x3 = EndPt.x; + double y3 = EndPt.y; + + double flRlt,flAtanA,flAtanB; + //ĵʼת + if(x1==x2) + { + if(y1>y2) + { + flAtanA=PI/2; + }else if(y1y2) + { + flAtanB=PI/2; + }else if(y30&&x1-x2<0){ + flAtanA+=PI; + } + if(y1-y2<=0&&x1-x2<0){ + flAtanA+=PI; + } + if(y3-y2>0&&x3-x2<0){ + flAtanB+=PI; + } + if(y3-y2<=0&&x3-x2<0){ + flAtanB+=PI; + } + } + flRlt=flAtanB-flAtanA; + return flRlt*(-1); +} +//ͨ360 Ƚ +double Cal360AngleByTwoPt(Dbxy pt1,Dbxy pt2) +{ + Dbxy StartPt; + StartPt.x = CalDistance(pt1,pt2); + StartPt.y = pt1.y; + //ȼ㷴н + double angle = CalAngle(pt1,StartPt,pt2); + return AngleTo360(angle); +} +//תһ㣬תĵ +//Angle ǻȽǣCenterPt תĵ +Dbxy RotatoPt(Dbxy pt,double Angle,Dbxy CenterPt) +{ + Dbxy ret; + //ת----------------------------------------------- + ret.x = ((pt.x-CenterPt.x)*cos(Angle)-(pt.y-CenterPt.y)*sin(Angle))+CenterPt.x; + ret.y = ((pt.y-CenterPt.y)*cos(Angle)+(pt.x-CenterPt.x)*sin(Angle))+CenterPt.y; + return ret; +} +//ݵһ,߶εij,Ƕȼ߶εڶ +//angle ǻȽ +Dbxy GetPoint2(Dbxy point1,double length,double angle) +{ + Dbxy point2; + point2.x = point1.x+length*cos(angle); + point2.y = point1.y+length*sin(angle); + return point2; +} +#endif +#if 1 +//жdouble Ƿ +bool IsTwoDbEqual(double a,double b) +{ + if((abs(a-b))<=COORD_EPS) + return true; + else + return false; +} + +bool IsTwoDbPtEqual(Dbxy pt1,Dbxy pt2,double eps) +{ + if(((abs(pt1.x-pt2.x))<=eps)&&((abs(pt1.y-pt2.y))<=eps)) + return true; + else + return false; +} +bool IsTwoDbEqual(double a,double b,double eps) +{ + if((abs(a-b))<=eps) + return true; + else + return false; +} +bool IsDbEqualZero(double num) +{ + if(num<0) + { + num *= -1; + } + if(num <= COORD_EPS) + return true; + else + return false; +} +bool IsDbxyZero(Dbxy pt) +{ + return IsDbEqualZero(pt.x) && IsDbEqualZero(pt.y); +} +void SwapTwoPt(Dbxy &pt1,Dbxy &pt2) +{ + Dbxy pt = pt1; + pt1 = pt2; + pt2 = pt; +} +//֮ľ(ɶ:Z^2 = X^2 + Y^2) +//ֵ϶Ǵ0 +double CalDistance(Dbxy pt1,Dbxy pt2) +{ + double flRlt; + flRlt=(pt1.x-pt2.x)*(pt1.x-pt2.x)+(pt1.y-pt2.y)*(pt1.y-pt2.y); + flRlt=sqrt(flRlt); + return flRlt; +} +//num мλ +int GetNumDigit(int num) +{ + int cnt = 0; + while(num) + { + num /=10; + cnt++; + } + if(cnt==0)//һλ + cnt = 1; + return cnt; +} + +#endif +#if 1 +bool CheckStringIsNum(CString str) +{ + CString strSet1 = "qwertyuiopasdfghjklzxcvbnm"; + CString strSet2 = "QWERTYUIOPASDFGHJKLZXCVBNM"; + CString strSet3 = "!@#$%^&*()_+=[]\\{}|;':\",/<>?"; + CString strSet = strSet1+strSet2+strSet3; + if(str.FindOneOf(strSet)==-1) + { + return true; + } + return false; +} +//str ȡֵ(123.456,789.123) +//ȡVal1 1,ͬʱȡVal1,Val2 2 +//һûȡ0 +int GetTwoNum(CString str,double &Val1,double &Val2) +{ + int CommaPos = 0; + //Ƿж + CommaPos = str.Find(',',0); + if(CommaPos!=-1) + { + CString str1(str,CommaPos); + str.Delete(0,CommaPos+1); + CString str2(str); + if(CheckStringIsNum(str1)&&CheckStringIsNum(str2)) + { + Val1 = atof(str1); + Val2 = atof(str2); + return 2; + } + } + else + { + if(CheckStringIsNum(str)) + { + Val1 = atof(str); + return 1; + } + } + return 0; +} +#endif +#if 1// +//ͨx +bool CompareDbxyByX(Dbxy pt1,Dbxy pt2) +{ + return pt1.x>pt2.x; +} +bool CompareDbxyByY(Dbxy pt1,Dbxy pt2) +{ + return pt1.y>pt2.y; +} +#endif +#if 1 +//жshift Ƿ +bool IsShiftKeyDown() +{ + if(GetAsyncKeyState(VK_SHIFT) & 0x8000) + return true; + else + return false; +} +#endif + +int Byte2Int(BYTE x) +{ + BYTE c = 0x80; + int a = (IsBitOn(x,7))?c:0; + x = SetBitOff(x,7); + return x+a; +} +//val Сn λ +double RetainDecimalPlaces(double val,int n) +{ + for(int i=0;im_hThread,FALSE,INFINITE,QS_ALLINPUT); + if (dRet == WAIT_OBJECT_0)//ȴ߳̽ + { + break; + } + else if (dRet == WAIT_OBJECT_0+1)//Ϣ,ת + { + while (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + else// + { + break; + } + } +} +//bool b Ϊֵ,ؼǷͨ +bool CheckBool(bool b,CString msg) +{ + if(!b) + { + CMsgBox MsgBox; + MsgBox.Show(msg); + return false; + } + return true; +} + +//ԲݵVec +void CreatCircleData(CCirclePar CirclePar,vector &Vec) +{ + Vec.clear(); + Dbxy CenterPt = CirclePar.CenterPt; + double Radius = CirclePar.Radius; + int DEdgeCnt = CirclePar.DEdgeCnt; + bool bMerge = CirclePar.bMerge; + double StartAng = CirclePar.StartAng; + double EndAng = CirclePar.EndAng; + + if(DEdgeCnt == 0) + { + DEdgeCnt = gDraw->GetCirclePtCnt(Radius); + } + //뾶------------------------------------ + double EachAngle = 360/DEdgeCnt; + bool Flg = true;//һı־ + double CurrAngle =StartAng; + + Dbxy pt; + Dbxy FirstPt; + bool bLastPt = false; + while(CurrAngle<(EndAng+0.001)) + { + //ǶתΪ + double radian = CurrAngle*PI/180; + if(IsDbEqualZero(Radius))//뾶Ϊ0 Ϊ + { + pt = CenterPt; + } + else + { + pt.x = CenterPt.x + Radius*cos(radian); + pt.y = CenterPt.y + Radius*sin(radian); + } + + if(Flg) + { + Flg = false; + FirstPt = pt; + Vec.push_back(pt); + } + else + { + Vec.push_back(pt); + } + if(bLastPt) + break; + CurrAngle += EachAngle; + if(CurrAngle>EndAng)//һ + { + CurrAngle = EndAng; + bLastPt = true; + } + } + //һ߶ + if(bMerge) + Vec.push_back(FirstPt); +} + +//n ķΧ[Start,end] +bool CheckRange(int n,int Start,int end) +{ + return n>=Start && n<=end; +} + +#if 1 +//n תΪ16 ַ +char Int2HexChar(int n) +{ + char c = '0'; + if(n>=0 && n<= 9) + c = '0' + n; + else if(n>=10 && n<= 15) + c = 'A' + n - 10; + return c; +} +//16Ƶchar תΪʮ +int HexChar2Int(char c) +{ + int val = 0; + if(c>='0' && c<='9') + val = (c - '0'); + else if(c>='A' && c<='F') + val = (c - 'A') + 10; + else if(c>='a' && c<='f') + val = (c - 'a') + 10; + return val; +} +//4ֽڵ16 תΪʮ(0707 ---->17991179---->4473) +double _4DigitHex2Double(char *buf,int len) +{ + double Sum = 0; + for(int k=0;k"1388" + itoa(n,TmpBuf,16); + int len = strlen(TmpBuf); + char CharBuf4[4]; + memset(CharBuf4,0,4); + int idx = 3; + while(len>0 && idx>=0) + { + CharBuf4[idx] = TmpBuf[len-1];//TmpBuf ĺ漸λ + len--; + idx--; + } + buf[0] = _2CharToHex(CharBuf4[0],CharBuf4[1]);//0x13 + buf[1] = _2CharToHex(CharBuf4[2],CharBuf4[3]);//0x88 +} +//1138--->5000 2008--->8200 +int HexByte2Int(int Byte1,int Byte2) +{ + int Byte4 = Byte1%16; + int Byte3 = (Byte1-Byte4)/16; + int Byte6 = Byte2%16; + int Byte5 = (Byte2-Byte6)/16; + + + int val =0; + val = (Byte3)*16*16*16+(Byte4)*16*16+(Byte5)*16+(Byte6); + return val; +} +#endif + diff --git a/LaiPuLaser/GlobalFunction.h b/LaiPuLaser/GlobalFunction.h new file mode 100644 index 0000000..4c1c41d --- /dev/null +++ b/LaiPuLaser/GlobalFunction.h @@ -0,0 +1,58 @@ +#pragma once + +#include "LaiPuLaserView.h" +#include "MainFrm.h" +#include "ChildFrm.h" +#include "LaiPuLaserDoc.h" +#include "Layer.h" + +extern CLaiPuLaserView *GetCurViewPtr(); +extern CLaiPuLaserDoc *GetCurDocPtr(); +extern CLayer &GetLayerInstance(); +extern CPanePropertiesWnd &GetPropertiesWnd(); +extern int IsTwoLineIntersect(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2); +extern bool IsTwoRectIntersect(DbRect &rect1,DbRect &rect2); +extern bool IsLineInRect(Dbxy point1,Dbxy point2,DbRect rect); +extern bool IsPointInRect(Dbxy point,DbRect rect); +extern int Parallel(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2); +extern double CalAngle(Dbxy CenterPt,Dbxy StartPt,Dbxy EndPt); +extern void AdjustRectByPoint(DbRect &rect,Dbxy pt); +extern void AdjustRectByRect(DbRect &rect1,DbRect rect2); +extern bool IsTwoDbEqual(double a,double b);//COORD_EPS ĬϾ +extern bool IsTwoDbEqual(double a,double b,double eps); +extern bool IsDbEqualZero(double num); +extern double CalDistance(Dbxy pt1,Dbxy pt2); +extern double AngleTo360(double Angle); +extern double _360ToAngle(double _360Angle); +extern CMainFrame* GetFrame(); +extern int GetTwoNum(CString str,double &Val1,double &Val2); +extern double Cal360AngleByTwoPt(Dbxy pt1,Dbxy pt2); +extern Dbxy GetPoint2(Dbxy point1,double length,double angle); +extern Dbxy CalIntersection(Dbxy u1,Dbxy u2,Dbxy v1,Dbxy v2); +extern Dbxy IntersectionOfRectAndLine(Dbxy LinePt1,Dbxy LinePt2,DbRect rect); +extern Dbxy CenterPtOfTwoPoint(Dbxy Pt1,Dbxy Pt2); +extern int GetNumDigit(int num); +extern Dbxy RotatoPt(Dbxy pt,double Angle,Dbxy CenterPt); +extern DbRect GetDbPointVecRect(vector &vec); +extern void SwapTwoPt(Dbxy &pt1,Dbxy &pt2); +extern bool IsShiftKeyDown(); +extern bool CompareDbxyByX(Dbxy pt1,Dbxy pt2); +extern bool CompareDbxyByY(Dbxy pt1,Dbxy pt2); +extern int dot_online_in(Dbxy p,Dbxy l1,Dbxy l2); +extern bool IsDbxyZero(Dbxy pt); +extern int Byte2Int(BYTE x); +extern double RetainDecimalPlaces(double val,int n); +extern int GetRandVal(int rang); +extern bool IsLineAndRectIntersect(Dbxy pt,DbRect rect,double Ang,double Radius=500); +extern void WaitForThreadExit(CWinThread* pThread); +extern bool CheckBool(bool b,CString msg); +extern void CreatCircleData(CCirclePar CirclePar,vector &Vec); +bool IsTwoDbPtEqual(Dbxy pt1,Dbxy pt2,double eps); +extern bool CheckRange(int n,int Start,int end); + +extern char Int2HexChar(int n); +extern double _4DigitHex2Double(char *buf,int len); +extern int HexChar2Int(char c); +extern void IntTo2ByteHex(int n,char *buf); +extern int _2CharToHex(char charA,char charB); +extern int HexByte2Int(int Byte1,int Byte2); \ No newline at end of file diff --git a/LaiPuLaser/GratingRuler.cpp b/LaiPuLaser/GratingRuler.cpp new file mode 100644 index 0000000..72e9bfe --- /dev/null +++ b/LaiPuLaser/GratingRuler.cpp @@ -0,0 +1,487 @@ +#include "StdAfx.h" +#include "GratingRuler.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "CommPortMgr.h" +#include "LogMgr.h" +#include "BitOperation.h" +#include "AuthorityMgr.h" + + +#define WE6800_RETURN_BTYE_CNT 17//WE6800 ԱЭ鷵صֽ + +CGratingRuler *gGratingRuler = new CGratingRuler; +CGratingRuler::CGratingRuler(void) +{ + m_bIni = false;//դǷʼ + m_bUseGratingRuler = false;//Ƿʹùդ + m_CommPort = -1;//ڱ + m_OriginCalibrationError = 0.02;//ԭУ׼(mm) + m_MaxCalibrationTimes = 10;//У׼ѭ + m_MeasureErrorGap = 1;//У׼ƽ̨ļ(mm)(ԽСֵԽϸ) + m_MaxOriginError = 10;//ԭʱƽ̨ԭ͹դԭ(mm) +} +CGratingRuler::~CGratingRuler(void) +{ +} +#if 1 +CMFCPropertyGridProperty *CGratingRuler::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("GratingRuler");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("դ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_CommPort");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CommPort); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ں"); + Description = _T("դߺPC ͨѶĴں(0~16)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CommPort, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bUseGratingRuler");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUseGratingRuler); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("դ"); + Description = _T("դУ׼"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseGratingRuler, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_OriginCalibrationError");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OriginCalibrationError); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭУ׼"); + Description = _T("ƽ̨ԭʱֵҪ(λ: mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OriginCalibrationError, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxCalibrationTimes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxCalibrationTimes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("У׼"); + Description = _T("ƽ̨ԭʱУ׼,ѭ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxCalibrationTimes, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MeasureErrorGap");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MeasureErrorGap); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("У׼ƽ̨ļ(λ: mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MeasureErrorGap, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CGratingRuler::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CGratingRuler]------------------------------------------------"<WriteDebugLog(str); + return false; + } + if(IsBitOn(byte,0))//жx ķ + { + bIsNegativeX = true; + } + if(IsBitOn(byte,1))//жY ķ + { + bIsNegativeY = true; + } + return true; +} +//XY ״̬ +bool CGratingRuler::AnalysisXYState(BYTE byte) +{ + if(IsBitOn(byte,0)) + { + CString str = "[error] [X դ쳣]"; + gLogMgr->WriteDebugLog(str); + return false; + } + if(IsBitOn(byte,1)) + { + CString str = "[error] [Y դ쳣]"; + gLogMgr->WriteDebugLog(str); + return false; + } + return true; +} +//ֵ(ѹBCD ʽ) +double CGratingRuler::AnalysisCoord(BYTE byte1,BYTE byte2,BYTE byte3,BYTE byte4) +{ + double coord = 0; + double coefficient = 0.0001;//ϵǸݹդߵľȡ + double Increment = 10;//ÿӵı + //ǧλ,ٷλ + { + double high = 0; + double low = 0; + GetTwoNum(byte1,high,low); + coord += low*coefficient; + coefficient *= Increment; + coord += high*coefficient; + coefficient *= Increment; + } + //ʮλ,λ + { + double high = 0; + double low = 0; + GetTwoNum(byte2,high,low); + coord += low*coefficient; + coefficient *= Increment; + coord += high*coefficient; + coefficient *= Increment; + } + //ʮλλ + { + double high = 0; + double low = 0; + GetTwoNum(byte3,high,low); + coord += low*coefficient; + coefficient *= Increment; + coord += high*coefficient; + coefficient *= Increment; + } + //ǧλλ + { + double high = 0; + double low = 0; + GetTwoNum(byte4,high,low); + coord += low*coefficient; + coefficient *= Increment; + coord += high*coefficient; + } + return coord; +} +//ȡbyte λ͸λֵ +void CGratingRuler::GetTwoNum(BYTE byte,double &high,double &low) +{ + //λ + { + BYTE byte1 = byte<<4;//0 + int tmp = (int)(byte1>>4);//תΪ + low = tmp; + } + //λ + { + BYTE byte1 = byte>>4;//ұ0 + int tmp = (int)(byte1);//תΪ + high = tmp; + } +} +#endif +#if 1// +//õǰλΪդߵԭ +bool CGratingRuler::SetOriginCoord() +{ + Dbxy pt; + if(ReadGratingRuler(pt)==false)//ȡǰֵ + { + return false; + } + m_bIni = true;//ʼɹ + m_OriginCoord = pt;//¼ǰĶ + return true; +} +//ȡդߵǰ +bool CGratingRuler::GetCurCoord(Dbxy &pt) +{ + if(!m_bIni) + { + return false; + } + Dbxy ReadPt; + if(ReadGratingRuler(ReadPt)==false) + { + return false; + } + //תΪ + pt.x = ReadPt.x - m_OriginCoord.x; + pt.y = ReadPt.y - m_OriginCoord.y; + + return true; +} +#endif +#if 1//ƽ̨ +//ƽ̨ԭУ׼(ƽ̨ʱѾԭ㣬ͨդУ׼λ) +bool CGratingRuler::PlatformOriginCalibration(CPlatformXY &PlatformXY) +{ + if(IsUsed()==false)//ûʹùդߣΪѾУ׼ + { + return true; + } + if(!m_bIni) + { + return false; + } + int i=0; + for(;im_MaxOriginError || pt.y>m_MaxOriginError) + { + //쳣ֵ + return false; + } + //XY Сm_OriginCalibrationError ʱУ׼ + if(abs(pt.x)m_OriginCalibrationError) + { + if(pt.x>0) + { + PlatformXY.MoveDistance(pt.x,_DIR_L,false); + } + else + { + PlatformXY.MoveDistance(pt.x,_DIR_R,false); + } + } + if(abs(pt.y)>m_OriginCalibrationError) + { + if(pt.y>0) + { + PlatformXY.MoveDistance(pt.x,_DIR_D,false); + } + else + { + PlatformXY.MoveDistance(pt.x,_DIR_U,false); + } + } + } + if(i==m_MaxCalibrationTimes) + { + return false; + } + return true; +} +//ƽ̨ +//rect ҪУ׼ķΧ(ƽ̨) +//PlatformXY ҪУ׼ƽ̨ +bool CGratingRuler::MeasurePlatfromError(DbRect rect,CPlatformXY &PlatformXY) +{ + if(IsUsed()==false) + return true; + if(!m_bIni) + { + return false; + } + + //x + if(MeasureMotorError(PlatformXY,_X,rect.L,rect.R,m_ErrorTableX)==false) + { + return false; + } + //y + if(MeasureMotorError(PlatformXY,_Y,rect.B,rect.T,m_ErrorTableY)==false) + { + return false; + } + return true; +} +//(Start,End DzΧ) +bool CGratingRuler::MeasureMotorError(CPlatformXY &PlatformXY,X_OR_Y xy,double Start,double End,vector &ErrorTable) +{ + ErrorTable.clear(); + + Dbxy CurPt = PlatformXY.GetCoord();//ǰƽ̨,Ӧ0,0 + Dbxy OriginPt;//ԭ + + double CurPos = Start; + while(CurPos <= End) + { + Dbxy MovePt;//ǰ(ƽ̨) + if(xy == _X) + { + MovePt.x = CurPos; + MovePt.y = CurPt.y; + } + else + { + MovePt.x = CurPt.x; + MovePt.y = CurPos; + } + PlatformXY.Move(false,MovePt,OriginPt);//ƶ + //ȡդߵǰ + Dbxy RulerCoord;//դʵ + if(GetCurCoord(RulerCoord)==false) + { + return false; + } + //¼ǰ(ʵλǷֵ) + double Error; + if(xy == _X) + { + Error = RulerCoord.x - CurPos; + } + else + { + Error = RulerCoord.y - CurPos; + } + + TypePosError PosError; + PosError.first = CurPos; + PosError.second = Error; + ErrorTable.push_back(PosError); + } + return true; +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/GratingRuler.h b/LaiPuLaser/GratingRuler.h new file mode 100644 index 0000000..171ca71 --- /dev/null +++ b/LaiPuLaser/GratingRuler.h @@ -0,0 +1,48 @@ +#pragma once +#include "module.h" +#include "EnumPropertieType.h" +#include "PlatformXY.h" +#include "WorkCmdInvoker.h" + +typedef pair TypePosError;//(first ƽ̨,second ֵ) +class CGratingRuler :public CModule +{ +public: + CGratingRuler(void); + ~CGratingRuler(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _GRATING_RULER_PROP;}; + virtual void ExportPar(ofstream *pFile); + + bool ReadGratingRuler(Dbxy &pt); + bool SetOriginCoord(); + bool GetCurCoord(Dbxy &pt); + bool PlatformOriginCalibration(CPlatformXY &PlatformXY); + bool MeasurePlatfromError(DbRect rect,CPlatformXY &PlatformXY); +private: + bool IsUsed(){return m_bUseGratingRuler;};//Ƿʹùդ + bool AnalysisRulerRet(char *str,Dbxy &pt); + bool AnalysisSymbol(BYTE byte,bool &bIsNegativeX,bool &bIsNegativeY); + bool AnalysisXYState(BYTE byte); + double AnalysisCoord(BYTE byte1,BYTE byte2,BYTE byte3,BYTE byte4); + void GetTwoNum(BYTE byte,double &high,double &low); + bool MeasureMotorError(CPlatformXY &PlatformXY,X_OR_Y xy,double Start,double End,vector &ErrorTable); + void ExportErrorTable(ofstream *pFile,vector &ErrorTable); +private: + + bool m_bIni;//դǷʼ + Dbxy m_OriginCoord;//ƽ̨趨ԭʱդߵĶ(ʵ궼׼) + //ҪIJ-------------------------------------- + bool m_bUseGratingRuler;//Ƿʹùդ + int m_CommPort;//ڱ + double m_OriginCalibrationError;//ԭУ׼(mm)(ƽ̨ԭʱֵҪ) + int m_MaxCalibrationTimes;//У׼ѭ + double m_MeasureErrorGap;//У׼ƽ̨ļ(λ: mm) + double m_MaxOriginError;/*ԭʱƽ̨ԭ͹դԭ(mm)(ʱ,ֶ޸Աֵ,Ӳ)*/ + + //----------------------------------------- + vector m_ErrorTableX;//X  + vector m_ErrorTableY;//X  +}; + +extern CGratingRuler *gGratingRuler; diff --git a/LaiPuLaser/HV300GC0.ini b/LaiPuLaser/HV300GC0.ini new file mode 100644 index 0000000..73e8f37 --- /dev/null +++ b/LaiPuLaser/HV300GC0.ini @@ -0,0 +1,9 @@ +[Gain Info] +G1 Gain=0 +G2 Gain=0 +R Gain=0 +B Gain=0 +[Snap Control Info] +Trig Freq.=12 +[Exposure Integration Row Info] +Integration Rows=1501 diff --git a/LaiPuLaser/HV500GM0.ini b/LaiPuLaser/HV500GM0.ini new file mode 100644 index 0000000..553cb5f --- /dev/null +++ b/LaiPuLaser/HV500GM0.ini @@ -0,0 +1,7 @@ +[Exposure Integration Row Info] +Integration Rows=2199 +[Gain Info] +G1 Gain=0 +G2 Gain=0 +R Gain=0 +B Gain=0 diff --git a/LaiPuLaser/HV500GM1.ini b/LaiPuLaser/HV500GM1.ini new file mode 100644 index 0000000..dc7da8b --- /dev/null +++ b/LaiPuLaser/HV500GM1.ini @@ -0,0 +1,7 @@ +[Gain Info] +G1 Gain=0 +G2 Gain=0 +R Gain=0 +B Gain=0 +[Exposure Integration Row Info] +Integration Rows=2199 diff --git a/LaiPuLaser/HVDAILT.lib b/LaiPuLaser/HVDAILT.lib new file mode 100644 index 0000000..d05975c Binary files /dev/null and b/LaiPuLaser/HVDAILT.lib differ diff --git a/LaiPuLaser/HVExtend.lib b/LaiPuLaser/HVExtend.lib new file mode 100644 index 0000000..a1df3e4 Binary files /dev/null and b/LaiPuLaser/HVExtend.lib differ diff --git a/LaiPuLaser/HVUtil.lib b/LaiPuLaser/HVUtil.lib new file mode 100644 index 0000000..9a82bc1 Binary files /dev/null and b/LaiPuLaser/HVUtil.lib differ diff --git a/LaiPuLaser/HawkvisCtrl.lib b/LaiPuLaser/HawkvisCtrl.lib new file mode 100644 index 0000000..6e7cf98 Binary files /dev/null and b/LaiPuLaser/HawkvisCtrl.lib differ diff --git a/LaiPuLaser/HawkvisCtrl.ocx b/LaiPuLaser/HawkvisCtrl.ocx new file mode 100644 index 0000000..04da4c7 Binary files /dev/null and b/LaiPuLaser/HawkvisCtrl.ocx differ diff --git a/LaiPuLaser/KernelMode.h b/LaiPuLaser/KernelMode.h new file mode 100644 index 0000000..75aebf8 --- /dev/null +++ b/LaiPuLaser/KernelMode.h @@ -0,0 +1,29 @@ +// ifdef Ǵʹ DLL 򵥵 +// ı׼ DLL еļ϶ KERNELMODE_EXPORTS +// űġʹô DLL +// κĿϲӦ˷šԴļаļκĿὫ +// KERNELMODE_API ΪǴ DLL ģ DLL ô˺궨 +// ΪDZġ + + +#ifndef KernelMode_h__ +#define KernelMode_h__ + +#ifdef KERNELMODE_EXPORTS +#define KERNELMODE_API __declspec(dllexport) +#else +#define KERNELMODE_API __declspec(dllimport) +#endif + +// Ǵ KernelMode.dll +class KERNELMODE_API CKernelMode { +public: + CKernelMode(void); + int CheckState(); + void GetDogTime(int *DogYear,int *DogMonth,int *DogDay); +}; + +extern KERNELMODE_API int nKernelMode; + +KERNELMODE_API int fnKernelMode(void); +#endif // KernelMode_h__ diff --git a/LaiPuLaser/KernelMode.lib b/LaiPuLaser/KernelMode.lib new file mode 100644 index 0000000..ddf826a Binary files /dev/null and b/LaiPuLaser/KernelMode.lib differ diff --git a/LaiPuLaser/KnownFileNameVec b/LaiPuLaser/KnownFileNameVec new file mode 100644 index 0000000..24b93e0 Binary files /dev/null and b/LaiPuLaser/KnownFileNameVec differ diff --git a/LaiPuLaser/LabVecRang.h b/LaiPuLaser/LabVecRang.h new file mode 100644 index 0000000..67ba3d0 --- /dev/null +++ b/LaiPuLaser/LabVecRang.h @@ -0,0 +1,136 @@ +#pragma once +#include "GlobalDefine.h" +#include "WorkFileLable.h" + +//洢ݵ +enum VAL_TYPE +{ + _TYPE_NULL = 0,//ʾ + _TYPE_INT, + _TYPE_DOUBLE, + _TYPE_STRING, + _TYPE_BOOL, +}; + +//һڴ洢ıǩ +class CLab +{ +public: + CLab() + { + m_ValType = _TYPE_NULL; + }; + CLab(LAB_TYPE LabType) + { + m_ValType = _TYPE_NULL; + m_LabType = LabType; + }; + CLab(LAB_TYPE LabType,int val) + { + m_ValType = _TYPE_INT; + m_LabType = LabType; + m_Int = val; + }; + CLab(LAB_TYPE LabType,double val) + { + m_ValType = _TYPE_DOUBLE; + m_LabType = LabType; + m_Double = val; + }; + CLab(LAB_TYPE LabType,bool val) + { + m_ValType = _TYPE_BOOL; + m_LabType = LabType; + m_Bool = val; + }; + CLab(LAB_TYPE LabType,CString val) + { + m_ValType = _TYPE_STRING; + m_LabType = LabType; + m_String = val; + }; + ~CLab(void){}; + void Serialize( CArchive& ar) + { + if(ar.IsStoring()) + { + ar<<(int)m_ValType;//ݵ + ar<<(int)m_LabType;//ǩ + switch(m_ValType)//ݵѡ洢 + { + case _TYPE_INT: + ar<>tmp;//ݵ + m_ValType = (VAL_TYPE)tmp; + ar>>tmp;//ǩ + m_LabType = (LAB_TYPE)tmp; + switch(m_ValType)//ݵѡ洢 + { + case _TYPE_INT: + ar>>m_Int; + break; + case _TYPE_DOUBLE: + ar>>m_Double; + break; + case _TYPE_BOOL: + ar>>m_Bool; + break; + case _TYPE_STRING: + ar>>m_String; + break; + default: + break; + } + } + } +public: + VAL_TYPE m_ValType;//ݵ + LAB_TYPE m_LabType;//ǩ + + int m_Int;//ڴ洢 + double m_Double;//ڴ洢˫ + bool m_Bool;//ڴ洢 + CString m_String; +}; + + +//vector һηΧĿӶȡļ㷨ٶ +class CLabVecRang +{ +public: + CLabVecRang(vector &vec,size_t start,size_t End) + :m_vec(vec),m_start(start),m_End(End) + { + + }; + ~CLabVecRang(void){}; + int GetStart(){return m_start;} + int GetEnd(){return m_End;} + CLab &GetLab(int idx){return m_vec[idx];}; + LAB_TYPE GetLabType(int idx){return m_vec[idx].m_LabType;}; + int GetInt(int idx){return m_vec[idx].m_Int;}; + double GetDouble(int idx){return m_vec[idx].m_Double;}; + bool GetBool(int idx){return m_vec[idx].m_Bool;}; + vector &GetVec(){return m_vec;}; +private: + vector &m_vec; + size_t m_start; + size_t m_End; +}; diff --git a/LaiPuLaser/LaiPuLaser.chm b/LaiPuLaser/LaiPuLaser.chm new file mode 100644 index 0000000..6603f8c Binary files /dev/null and b/LaiPuLaser/LaiPuLaser.chm differ diff --git a/LaiPuLaser/LaiPuLaser.cpp b/LaiPuLaser/LaiPuLaser.cpp new file mode 100644 index 0000000..704b88d --- /dev/null +++ b/LaiPuLaser/LaiPuLaser.cpp @@ -0,0 +1,306 @@ + + +#include "stdafx.h" +#include "afxwinappex.h" +#include "afxdialogex.h" +#include "LaiPuLaser.h" +#include "MainFrm.h" + +#include "ChildFrm.h" +#include "LaiPuLaserDoc.h" +#include "LaiPuLaserView.h" + +#include "FontTypeMgr.h" +#include "WorkCmdInvoker.h" + +#include "ModuleDeviceMgr.h" +#include "ModuleDrawMgr.h" +#include "AuthorityMgr.h" +#include "Layer.h" +#include "FileMgr.h" +//#include "SuperDogMgr.h" + + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CLaiPuLaserApp + +BEGIN_MESSAGE_MAP(CLaiPuLaserApp, CWinAppEx) + ON_COMMAND(ID_APP_ABOUT, &CLaiPuLaserApp::OnAppAbout) + // ļı׼ĵ + ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew) + ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen) + // ׼ӡ + ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup) +END_MESSAGE_MAP() + + +// CLaiPuLaserApp + +CLaiPuLaserApp::CLaiPuLaserApp() +{ + EnableHtmlHelp(); + + m_bHiColorIcons = TRUE; + + // ֧ + m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS; +#ifdef _MANAGED + // Ӧóùʱ֧(/clr)ģ: + // 1) д˸ãֲ֧ + // 2) ĿУ밴˳ System.Windows.Forms á + System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); +#endif + + //Ϊ CompanyName.ProductName.SubProduct.VersionInformation + SetAppID(_T("LaiPuLaser.AppID.NoVersion")); + + // Ҫijʼ InitInstance +} + +// Ψһһ CLaiPuLaserApp + +CLaiPuLaserApp theApp; + + +// CLaiPuLaserApp ʼ + +BOOL CLaiPuLaserApp::InitInstance() +{ + // һ Windows XP ϵӦó嵥ָҪ + // ʹ ComCtl32.dll 汾 6 ߰汾ÿӻʽ + //Ҫ InitCommonControlsEx()򣬽޷ڡ + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // ΪҪӦóʹõ + // ؼࡣ + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinAppEx::InitInstance(); + + if (!AfxSocketInit()) + { + AfxMessageBox(IDP_SOCKETS_INIT_FAILED); + return FALSE; + } + + // ʼ OLE + if (!AfxOleInit()) + { + AfxMessageBox(IDP_OLE_INIT_FAILED); + return FALSE; + } + + AfxEnableControlContainer(); + + EnableTaskbarInteraction(); + + // ʹ RichEdit ؼҪ AfxInitRichEdit2() + // AfxInitRichEdit2(); + + // ׼ʼ + // δʹЩܲϣС + // տִļĴСӦƳ + // Ҫضʼ + // ڴ洢õע + // TODO: Ӧʵ޸ĸַ + // ޸Ϊ˾֯ + SetRegistryKey(_T("ӦóɵıӦó")); + + +#if 1 + HANDLE hObject = ::CreateMutex(NULL, FALSE, _T("Laipu")); + if (GetLastError() == ERROR_ALREADY_EXISTS) + { + CloseHandle(hObject); + AfxMessageBox(("ظ,в鿴Laipụ")); + return FALSE; + } +#endif + + LoadStdProfileSettings(10); // ر׼ INI ļѡ( MRU) + + + InitContextMenuManager(); + InitShellManager(); + + InitKeyboardManager(); + + InitTooltipManager(); + CMFCToolTipInfo ttParams; + ttParams.m_bVislManagerTheme = TRUE; + theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); + + + + // עӦóĵģ塣ĵģ + // ĵܴںͼ֮ + CMultiDocTemplate* pDocTemplate; + pDocTemplate = new CMultiDocTemplate(IDR_LAIPU_LASER_MENU, + RUNTIME_CLASS(CLaiPuLaserDoc), + RUNTIME_CLASS(CChildFrame), // Զ MDI ӿ + RUNTIME_CLASS(CLaiPuLaserView)); + if (!pDocTemplate) + return FALSE; + AddDocTemplate(pDocTemplate); + + // MDI ܴ + CMainFrame* pMainFrame = new CMainFrame; + if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) + { + delete pMainFrame; + return FALSE; + } + m_pMainWnd = pMainFrame; + // к׺ʱŵ DragAcceptFiles + // MDI ӦóУӦ m_pMainWnd ֮ + // / + m_pMainWnd->DragAcceptFiles(); + + // ׼ shell DDEļ + CCommandLineInfo cmdInfo; + ParseCommandLine(cmdInfo); + + // áDDE ִС + EnableShellOpen(); + RegisterShellFileTypes(TRUE); + + // ָ + // /RegServer/Register/Unregserver /Unregister Ӧó򷵻 FALSE + if (!ProcessShellCommand(cmdInfo)) + return FALSE; + // ѳʼʾи + //pMainFrame->ShowWindow(m_nCmdShow); + CChildFrame *pChild = (CChildFrame*)pMainFrame->GetActiveFrame(); + pChild->ShowWindow(SW_SHOWMAXIMIZED);//Ĭ + + pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); + pMainFrame->UpdateWindow(); + + LaiPuAppInitialize(); + + + return TRUE; +} +void CLaiPuLaserApp::LaiPuAppInitialize() +{ + gAuthorityMgr->SetAuthority(_FACTORY);//²ҪȨ + //ʼȫ + gModuleDrawMgr.Ini(); + gModuleDeviceMgr.Ini(); + gModuleDrawMgr.SaveAllModuleProperty(); + gModuleDeviceMgr.SaveAllModuleProperty(); + if (gAuthorityMgr->IsAutoFactory() == false) + { + gAuthorityMgr->Lock(); + } + + //ʼ + CFontTypeMgr &FontTypeMgr = CFontTypeMgr::Instance(); + FontTypeMgr.Initialize(); +} +//˳ +void CLaiPuLaserApp::AppExit() +{ + CWinApp::OnAppExit(); +} +int CLaiPuLaserApp::ExitInstance() +{ + //TODO: ӵĸԴ + AfxOleTerm(FALSE); + gModuleDeviceMgr.OnExitApp(); + return CWinAppEx::ExitInstance(); +} +// CLaiPuLaserApp Ϣ + + +// Ӧó򡰹ڡ˵ CAboutDlg Ի +#if 1 +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg(); + + // Ի + enum { IDD = IDD_ABOUTBOX }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + virtual BOOL OnInitDialog(); + // ʵ +protected: + DECLARE_MESSAGE_MAP() +private: +}; +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + +CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} +BOOL CAboutDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + CString AppMakeTime("ʱ: "); + AppMakeTime += __DATE__; + AppMakeTime += " "; + AppMakeTime += __TIME__; + GetDlgItem(IDC_APP_MAKE_TIME)->SetWindowText(AppMakeTime); + + #ifdef USE_SUPER_DOG + GetDlgItem(IDC_SUPER_DOG_TIME)->ShowWindow(SW_SHOW); + //ʾܹʱ + int DogYear =0; + int DogMonth = 0; + int DogDay = 0; + gKernelMode.GetDogTime(&DogYear,&DogMonth,&DogDay); + CString SuperDogTime; + SuperDogTime.Format(_T("time %d_%d_%d"),DogYear,DogMonth,DogDay); + GetDlgItem(IDC_SUPER_DOG_TIME)->SetWindowText(SuperDogTime); + #endif + + UpdateData(FALSE); + return TRUE; +} + +#endif +#if 1 +// жԻӦó +void CLaiPuLaserApp::OnAppAbout() +{ + CAboutDlg aboutDlg; + aboutDlg.DoModal(); +} + +// CLaiPuLaserApp Զ/淽 + +void CLaiPuLaserApp::PreLoadState() +{ + BOOL bNameValid; + CString strName; + bNameValid = strName.LoadString(IDS_EDIT_MENU); + ASSERT(bNameValid); + GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT); +} + +void CLaiPuLaserApp::LoadCustomState() +{ +} + +void CLaiPuLaserApp::SaveCustomState() +{ +} + +// CLaiPuLaserApp Ϣ +#endif + + diff --git a/LaiPuLaser/LaiPuLaser.h b/LaiPuLaser/LaiPuLaser.h new file mode 100644 index 0000000..7cc73f0 --- /dev/null +++ b/LaiPuLaser/LaiPuLaser.h @@ -0,0 +1,43 @@ + +// LaiPuLaser.h : LaiPuLaser Ӧóͷļ +// +#pragma once + +#ifndef __AFXWIN_H__ + #error "ڰļ֮ǰstdafx.h PCH ļ" +#endif + +#include "resource.h" // +#include "ModuleDeviceMgr.h" + +// CLaiPuLaserApp: +// йشʵ֣ LaiPuLaser.cpp +// + +class CLaiPuLaserApp : public CWinAppEx +{ +public: + CLaiPuLaserApp(); + + +// д +public: + virtual BOOL InitInstance(); + virtual int ExitInstance(); + +// ʵ + UINT m_nAppLook; + BOOL m_bHiColorIcons; + + virtual void PreLoadState(); + virtual void LoadCustomState(); + virtual void SaveCustomState(); + + afx_msg void OnAppAbout(); + + void AppExit(); + DECLARE_MESSAGE_MAP() +private: + void LaiPuAppInitialize(); +}; +extern CLaiPuLaserApp theApp; diff --git a/LaiPuLaser/LaiPuLaser.rc b/LaiPuLaser/LaiPuLaser.rc new file mode 100644 index 0000000..d635a9b Binary files /dev/null and b/LaiPuLaser/LaiPuLaser.rc differ diff --git a/LaiPuLaser/LaiPuLaser.reg b/LaiPuLaser/LaiPuLaser.reg new file mode 100644 index 0000000..4cd9742 --- /dev/null +++ b/LaiPuLaser/LaiPuLaser.reg @@ -0,0 +1,15 @@ +REGEDIT +; .REG ļ SETUP ʹá +; SETUP 򲻿ã +; CWinApp::RegisterShellFileTypes COleObjectFactory::UpdateRegistryAll +; InitInstance жԶעᡣ + +HKEY_CLASSES_ROOT\.mak = LaiPuLaser.Document +HKEY_CLASSES_ROOT\LaiPuLaser.Document\shell\open\command = LaiPuLaser.EXE %1 +HKEY_CLASSES_ROOT\LaiPuLaser.Document\shell\open\ddeexec = [open("%1")] +HKEY_CLASSES_ROOT\LaiPuLaser.Document\shell\open\ddeexec\application = LaiPuLaser + ; ע: Ӧóǿѡ + ; (ĬΪеӦó) + +HKEY_CLASSES_ROOT\LaiPuLaser.Document = LaiPuLaser.Document + diff --git a/LaiPuLaser/LaiPuLaser.vcxproj b/LaiPuLaser/LaiPuLaser.vcxproj new file mode 100644 index 0000000..2dd6c37 --- /dev/null +++ b/LaiPuLaser/LaiPuLaser.vcxproj @@ -0,0 +1,987 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {2AD399A8-0907-418E-8F7F-42C75175C7FE} + LaiPuLaser + MFCProj + Laipu + 8.1 + + + + Application + true + MultiByte + Static + v140 + + + Application + false + true + MultiByte + Static + v140 + + + + + + + + + + + + + true + ./OpenCV/Include/opencv2;./OpenCV/Include;C:\Program Files (x86)\Advantech\Common Motion\Public;C:\Program Files (x86)\Advantech\Common Motion\Examples\General;C:\Program Files\Advantech\Common Motion\Public;C:\Program Files\Advantech\Common Motion\Examples\General;C:\Program Files (x86)\IVI Foundation\VISA\WinNT\include;C:\Program Files\IVI Foundation\VISA\WinNT\include;$(IncludePath) + C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\bc;C:\Program Files\IVI Foundation\VISA\WinNT\lib\bc;$(ReferencePath) + ./OpenCV/staticlib;D:\Personal\Documents\Gemalto\SuperDog 2.4\Samples\Licensing\C\x64\msc\lib;C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc;C:\Program Files\IVI Foundation\VISA\WinNT\lib\msc;$(LibraryPath) + $(ProjectName)2Cam + + + false + C:\Program Files %28x86%29\Advantech\Common Motion\Examples\General;C:\Program Files %28x86%29\Advantech\Common Motion\Public;$(IncludePath) + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebug + $(PYLON_ROOT)\include;$(PYLON_GENICAM_ROOT)\library\CPP\include;%(AdditionalIncludeDirectories) + + + Windows + true + $(PYLON_GENICAM_ROOT)\library\CPP\Lib\Win32_i86;$(PYLON_ROOT)\lib\Win32;%(AdditionalLibraryDirectories) + ade.lib;IlmImfd.lib;ittnotifyd.lib;libjasperd.lib;libjpeg-turbod.lib;libpngd.lib;libprotobufd.lib;libtiffd.lib;libwebpd.lib;opencv_world410d.lib;quircd.lib;zlibd.lib;%(AdditionalDependencies) + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + + Document + $(OutDir)LaiPuLaser.chm;%(Outputs) + hlp\HTMLDefines.h;%(AdditionalInputs) + start /wait hhc "hlp\LaiPuLaser.hhp" +if not exist "hlp\LaiPuLaser.chm" goto :HelpError +copy "hlp\LaiPuLaser.chm" "$(OutDir)LaiPuLaser.chm" +goto :HelpDone +:HelpError +echo hlp\LaiPuLaser.hhp(1) : error:创建帮助文件时遇到问题 +echo. +:HelpDone +echo. + + 正在生成帮助文件... + $(OutDir)LaiPuLaser.chm;%(Outputs) + hlp\HTMLDefines.h;%(AdditionalInputs) + start /wait hhc "hlp\LaiPuLaser.hhp" +if not exist "hlp\LaiPuLaser.chm" goto :HelpError +copy "hlp\LaiPuLaser.chm" "$(OutDir)LaiPuLaser.chm" +goto :HelpDone +:HelpError +echo hlp\LaiPuLaser.hhp(1) : error:创建帮助文件时遇到问题 +echo. +:HelpDone +echo. + + 正在生成帮助文件... + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hlp\HTMLDefines.h;%(Outputs) + echo // 生成的帮助映射文件。使用者为LaiPuLaser.HHP. > "hlp\HTMLDefines.h" +echo. > "hlp\HTMLDefines.h" +echo // 命令(ID_* 和 IDM_*) >> "hlp\HTMLDefines.h" +makehm /h ID_,HID_,0x10000 IDM_,HIDM_,0x10000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 提示(IDP_*) >> "hlp\HTMLDefines.h" +makehm /h IDP_,HIDP_,0x30000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 资源(IDR_*) >> "hlp\HTMLDefines.h" +makehm /h IDR_,HIDR_,0x20000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 对话框(IDD_*) >> "hlp\HTMLDefines.h" +makehm /h IDD_,HIDD_,0x20000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 框架控件(IDW_*) >> "hlp\HTMLDefines.h" +makehm /h /a afxhh.h IDW_,HIDW_,0x50000 "%(FullPath)" >> "hlp\HTMLDefines.h" + + 正在生成帮助编译器的映射文件... + hlp\HTMLDefines.h;%(Outputs) + echo // 生成的帮助映射文件。使用者为LaiPuLaser.HHP. > "hlp\HTMLDefines.h" +echo. > "hlp\HTMLDefines.h" +echo // 命令(ID_* 和 IDM_*) >> "hlp\HTMLDefines.h" +makehm /h ID_,HID_,0x10000 IDM_,HIDM_,0x10000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 提示(IDP_*) >> "hlp\HTMLDefines.h" +makehm /h IDP_,HIDP_,0x30000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 资源(IDR_*) >> "hlp\HTMLDefines.h" +makehm /h IDR_,HIDR_,0x20000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 对话框(IDD_*) >> "hlp\HTMLDefines.h" +makehm /h IDD_,HIDD_,0x20000 "%(FullPath)" >> "hlp\HTMLDefines.h" +echo. >> "hlp\HTMLDefines.h" +echo // 框架控件(IDW_*) >> "hlp\HTMLDefines.h" +makehm /h /a afxhh.h IDW_,HIDW_,0x50000 "%(FullPath)" >> "hlp\HTMLDefines.h" + + 正在生成帮助编译器的映射文件... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LaiPuLaser/LaiPuLaser.vcxproj.filters b/LaiPuLaser/LaiPuLaser.vcxproj.filters new file mode 100644 index 0000000..8a2668f --- /dev/null +++ b/LaiPuLaser/LaiPuLaser.vcxproj.filters @@ -0,0 +1,1953 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {aa39c02c-0305-4ccc-b403-2019854126a2} + hhp;hhc;hhk;gif;jpg + + + {71acd02b-0bc1-45bd-81aa-9f5ba2c20efb} + htm;html + + + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + HTML 帮助文件 + + + HTML 帮助文件 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + HTML 帮助主题 + + + 资源文件 + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + + + 资源文件 + + + + + HTML 帮助文件 + + + 头文件 + + + \ No newline at end of file diff --git a/LaiPuLaser/LaiPuLaserDoc.cpp b/LaiPuLaser/LaiPuLaserDoc.cpp new file mode 100644 index 0000000..4912f7b --- /dev/null +++ b/LaiPuLaser/LaiPuLaserDoc.cpp @@ -0,0 +1,121 @@ + +// LaiPuLaserDoc.cpp : CLaiPuLaserDoc ʵ +// + +#include "stdafx.h" +// SHARED_HANDLERS ʵԤͼɸѡ +// ATL Ŀнж壬Ŀĵ롣 +#ifndef SHARED_HANDLERS +#include "LaiPuLaser.h" +#endif + +#include "LaiPuLaserDoc.h" +#include "GlobalFunction.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CLaiPuLaserDoc + +IMPLEMENT_DYNCREATE(CLaiPuLaserDoc, CDocument) + +BEGIN_MESSAGE_MAP(CLaiPuLaserDoc, CDocument) + ON_COMMAND(ID_FILE_SEND_MAIL, &CLaiPuLaserDoc::OnFileSendMail) + ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, &CLaiPuLaserDoc::OnUpdateFileSendMail) +END_MESSAGE_MAP() + + +// CLaiPuLaserDoc / +CLaiPuLaserDoc::CLaiPuLaserDoc() +{ + // TODO: ڴһԹ +} +CLaiPuLaserDoc::~CLaiPuLaserDoc() +{ +} +BOOL CLaiPuLaserDoc::OnNewDocument() +{ + if (!CDocument::OnNewDocument()) + return FALSE; + + // TODO: ڴ³ʼ + // (SDI ĵøĵ) + + return TRUE; +} + +#if 1//л +void CLaiPuLaserDoc::Serialize(CArchive& ar) +{ + +} +#endif +#ifdef SHARED_HANDLERS + +// ͼ֧ +void CLaiPuLaserDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds) +{ + // ޸Ĵ˴Իĵ + dc.FillSolidRect(lprcBounds, RGB(255, 255, 255)); + + CString strText = _T("TODO: implement thumbnail drawing here"); + LOGFONT lf; + + CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)); + pDefaultGUIFont->GetLogFont(&lf); + lf.lfHeight = 36; + + CFont fontDraw; + fontDraw.CreateFontIndirect(&lf); + + CFont* pOldFont = dc.SelectObject(&fontDraw); + dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK); + dc.SelectObject(pOldFont); +} + +// ֧ +void CLaiPuLaserDoc::InitializeSearchContent() +{ + CString strSearchContent; + // ĵݡ + // ݲӦɡ;ָ + + // : strSearchContent = _T("point;rectangle;circle;ole object;") + SetSearchContent(strSearchContent); +} + +void CLaiPuLaserDoc::SetSearchContent(const CString& value) +{ + if (value.IsEmpty()) + { + RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid); + } + else + { + CMFCFilterChunkValueImpl *pChunk = NULL; + ATLTRY(pChunk = new CMFCFilterChunkValueImpl); + if (pChunk != NULL) + { + pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TOOL_TEXT); + SetChunkValue(pChunk); + } + } +} + +#endif // SHARED_HANDLERS + +// CLaiPuLaserDoc + +#ifdef _DEBUG +void CLaiPuLaserDoc::AssertValid() const +{ + CDocument::AssertValid(); +} + +void CLaiPuLaserDoc::Dump(CDumpContext& dc) const +{ + CDocument::Dump(dc); +} +#endif //_DEBUG diff --git a/LaiPuLaser/LaiPuLaserDoc.h b/LaiPuLaser/LaiPuLaserDoc.h new file mode 100644 index 0000000..c367862 --- /dev/null +++ b/LaiPuLaser/LaiPuLaserDoc.h @@ -0,0 +1,42 @@ + +// LaiPuLaserDoc.h : CLaiPuLaserDoc Ľӿ +// + + +#pragma once + +class CLaiPuLaserDoc : public CDocument +{ +protected: // л + CLaiPuLaserDoc(); + DECLARE_DYNCREATE(CLaiPuLaserDoc) +// д +public: + virtual BOOL OnNewDocument(); + virtual void Serialize(CArchive& ar); +#ifdef SHARED_HANDLERS + virtual void InitializeSearchContent(); + virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds); +#endif // SHARED_HANDLERS + +// ʵ +public: + virtual ~CLaiPuLaserDoc(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// ɵϢӳ亯 +protected: + DECLARE_MESSAGE_MAP() + +#ifdef SHARED_HANDLERS + // Ϊݵ Helper + void SetSearchContent(const CString& value); +#endif // SHARED_HANDLERS +private: +}; + diff --git a/LaiPuLaser/LaiPuLaserView.cpp b/LaiPuLaser/LaiPuLaserView.cpp new file mode 100644 index 0000000..04ee3bf --- /dev/null +++ b/LaiPuLaser/LaiPuLaserView.cpp @@ -0,0 +1,1358 @@ + +// LaiPuLaserView.cpp : CLaiPuLaserView ʵ +// + +#include "stdafx.h" +// SHARED_HANDLERS ʵԤͼɸѡ +// ATL Ŀнж壬Ŀĵ롣 +#ifndef SHARED_HANDLERS +#include "LaiPuLaser.h" +#endif + + + +#include "LaiPuLaserDoc.h" +#include "LaiPuLaserView.h" +#include "MainFrm.h" +#include "MouseToolmgr.h" +#include "GlobalDrawMgr.h" +#include "MarkObjPropertieMgr.h" +#include "GlobalFunction.h" +#include "CommandDelete.h" +#include "CommandMove.h" +#include "LogMgr.h" +#include "DlgArray.h" +#include "WorkAreaMgr.h" +#include "Ruler.h" +#include "ModuleDeviceMgr.h" +#include "ModuleDrawMgr.h" +#include "SimulateTrace.h" +#include "DlgFill.h" +#include "CommandMgr.h" +#include "WorkDataMgr.h" +#include "TemplateMgr.h" +#include "SetPointMoveToCcd.h" +#include "SetPointMgr.h" +#include "AuthorityMgr.h" +#include "MarkAreaMgr.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CLaiPuLaserView +#if 1 +IMPLEMENT_DYNCREATE(CLaiPuLaserView, CScrollView) + +BEGIN_MESSAGE_MAP(CLaiPuLaserView, CScrollView) + // ׼ӡ + ON_COMMAND(ID_FILE_PRINT, &CScrollView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_DIRECT, &CScrollView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_PREVIEW, OnFilePrintPreview) + ON_COMMAND(ID_MOUSE_RECT, OnToolRect) + ON_UPDATE_COMMAND_UI(ID_MOUSE_RECT, OnUpdateToolRect) + ON_COMMAND(ID_TOOL_POINT, OnToolOnePoint) + ON_UPDATE_COMMAND_UI(ID_TOOL_POINT, OnUpdateToolOnePoint) + + ON_COMMAND(ID_MOUSE_CIRCLE, OnToolCircle) + ON_UPDATE_COMMAND_UI(ID_MOUSE_CIRCLE, OnUpdateToolCircle) + ON_COMMAND(ID_MOUSE_LINE, OnToolLine) + ON_UPDATE_COMMAND_UI(ID_MOUSE_LINE, OnUpdateToolLine) + ON_COMMAND(ID_PLINE, OnToolPline) + ON_UPDATE_COMMAND_UI(ID_PLINE, OnUpdateToolPline) + ON_COMMAND(ID_POLYGON, OnToolPolygon) + ON_UPDATE_COMMAND_UI(ID_POLYGON, OnUpdateToolPolygon) + + ON_COMMAND(ID_UNDO, OnUndo) + ON_UPDATE_COMMAND_UI(ID_UNDO, OnUpdateUndo) + ON_COMMAND(ID_REDO, OnRedo) + ON_UPDATE_COMMAND_UI(ID_REDO, OnUpdateRedo) + ON_COMMAND(ID_ROTATO, OnToolRotato) + ON_COMMAND(ID_SLE_ALL, OnSelAllObj) + ON_COMMAND(ID_REV_SEL_OBJ, OnRevSelObj) + ON_COMMAND(ID_ZOOM_IN, OnZoomIn) + ON_COMMAND(ID_ZOOM_OUT, OnZoomOut) + ON_COMMAND(ID_WORK_SPACE_VIEW, OnWorkSpaceView) + ON_COMMAND(ID_MOVE_TO_CENTER, OnMoveToCenter) + ON_COMMAND(ID_MIRROR_H, OnMirrorH) + ON_COMMAND(ID_MIRROR_V, OnMirrorV) + ON_COMMAND(ID_ROTATO_90_L, OnRotato90L) + ON_COMMAND(ID_ROTATO_90_R, OnRotato90R) + ON_COMMAND(ID_ARRAY, OnArray) + ON_COMMAND(ID_CUT, OnCut) + ON_COMMAND(ID_BREAK, OnBreak) + ON_COMMAND(ID_CHAMFER, OnChamfer) + ON_COMMAND(ID_FILLET, OnFillet) + ON_COMMAND(ID_EXPLODE, OnExplode) + ON_COMMAND(ID_DELETE, OnDelSelObj) + ON_COMMAND(ID_JOIN, OnJoin) + ON_COMMAND(ID_COPY, OnCopy) + ON_COMMAND(ID_MOVE, OnMove) + ON_COMMAND(ID_DIS_MEASURE, OnMeasure) + ON_COMMAND(ID_REVERSE, OnReverse) + ON_COMMAND(ID_ADD_NODE, OnAddNode) + ON_COMMAND(ID_DEL_NODE, OnDelNode) + ON_UPDATE_COMMAND_UI(ID_ROTATO, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_MOVE_TO_CENTER, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_MIRROR_H, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_MIRROR_V, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_ROTATO_90_L, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_ROTATO_90_R, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_ARRAY, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_CHAMFER, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_FILLET, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_EXPLODE, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_DELETE, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_FILL, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_JOIN, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_COPY, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_MOVE, OnUpdateObjOperate) + ON_UPDATE_COMMAND_UI(ID_REVERSE, OnUpdateObjOperate) + + + ON_WM_ERASEBKGND() + ON_WM_CONTEXTMENU() + ON_WM_RBUTTONUP() + ON_WM_MOUSEWHEEL()//Ϣ + ON_WM_MOUSEMOVE() + ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONUP() + ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() + ON_WM_SETCURSOR()// +END_MESSAGE_MAP() +#endif +// CLaiPuLaserView / + +CLaiPuLaserView::CLaiPuLaserView() +{ + m_bFirstIn = true;//Ƿһν + m_bCtrl = false;//ctrl Ƿ + m_bEraseBkgnd = true;//Ƿػ汳ɫ + m_bEraseBkgnd2 = true;//Ƿػ汳ɫ(Զָ) +} + +CLaiPuLaserView::~CLaiPuLaserView() +{ +} +//ȡǰָ +CLaiPuLaserView* m_pView = NULL;//浱ǰָ +BOOL CLaiPuLaserView::PreCreateWindow(CREATESTRUCT& cs) +{ + // CREATESTRUCT cs ޸Ĵʽ + return CScrollView::PreCreateWindow(cs); +} +//ڵһεOnDrawǰOnInitialUpdate +void CLaiPuLaserView::OnInitialUpdate() +{ + CScrollView::OnInitialUpdate(); + CSize Size; + Size = gDraw->GetScrollViewSize(); + SetZoomSizes(Size); +} +#if 1// +HDC CLaiPuLaserView::GetHDC() +{ + return ::GetDC(GetSafeHwnd()); +} +CDC* CLaiPuLaserView::GetCDC() +{ + return CDC::FromHandle(GetHDC()); +} +// CLaiPuLaserView +void CLaiPuLaserView::OnDraw(CDC* pDC) +{ + CLaiPuLaserDoc* pDoc = GetDocument(); + ASSERT_VALID(pDoc); + if (!pDoc) + return; + if(m_bFirstIn) + { + //۲ + DoZoomFull(); + } + //Ȳ֮ǰIJ׽ + gMouseToolMgr.ResetCatchPoint(pDC); + + //ģԻһЩ + if(!gSimulateTrace->IsSimulate()) + { + gModuleDeviceMgr.Draw(pDC); + gModuleDrawMgr.Draw(pDC); + } + //Ƶǰlayer + if(!m_bFirstIn) + { + if(gWorkDataMgr->DrawRealWorkData(pDC)==false) + { + GetLayerInstance().Draw(pDC); + } + } + + //Ժģ + gSimulateTrace->Switch(false); + + m_bFirstIn = false; +} +#endif +// CLaiPuLaserView ӡ +void CLaiPuLaserView::OnFilePrintPreview() +{ +#ifndef SHARED_HANDLERS + AFXPrintPreview(this); +#endif +} + +BOOL CLaiPuLaserView::OnPreparePrinting(CPrintInfo* pInfo) +{ + // Ĭ׼ + return DoPreparePrinting(pInfo); +} + +void CLaiPuLaserView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ +} +void CLaiPuLaserView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ +} +#if 1//̲ +//ϢӦ +BOOL CLaiPuLaserView::OnMouseWheel(UINT nFlags,short zDelta,CPoint point) +{ + if(gDraw->IsbMouseWheel()) + { + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + + //Ȳ֮ǰIJ׽ + gMouseToolMgr.ResetCatchPoint(&dc); + + if(zDelta > 0)//ϹŴ + { + DoZoomIn(gDraw->GetCurZoomPoint()); + } + else if(zDelta < 0)//¹С + { + DoZoomOut(gDraw->GetCurZoomPoint()); + } + + //ʾű + CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); + pFrame->ShowViewScale(m_zoomScale); + } + return TRUE; +} +void CLaiPuLaserView::OnMouseMove(UINT nFlags, CPoint point) +{ + //ĻתΪ豸 + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + + gDraw->SetCurZoomPoint(point);//ƶʱ¼ŵ + + //ʾλ + CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); + pFrame->ShowMouseCoord(point); + //깤 + gMouseToolMgr.OnMouseMove(nFlags,point,dc); + +#ifdef __DLG_PANE_TEST__ + //ý,ȡ + GetFrame()->m_DlgTest.SetCmdEditFocus(); +#endif + //Ʊ߹λ + gRuler->DrawMousePos(&dc, point); + + CScrollView::OnMouseMove(nFlags, point); +} +void CLaiPuLaserView::OnLButtonDown(UINT nFlags, CPoint point) +{ + //ĻתΪ豸 + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + gMouseToolMgr.OnLButtonDown(nFlags,point,dc); + CScrollView::OnLButtonDown(nFlags, point); +} +void CLaiPuLaserView::OnLButtonUp(UINT nFlags, CPoint point) +{ + //ĻתΪ豸 + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + gMouseToolMgr.OnLButtonUp(nFlags,point,dc); + CScrollView::OnLButtonUp(nFlags, point); +} +void CLaiPuLaserView::OnRButtonDown(UINT nFlags, CPoint point) +{ + //ĻתΪ豸 + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + + gMouseToolMgr.OnRButtonDown(nFlags,point,dc); + //CScrollView::OnRButtonDown(nFlags, point); +} +void CLaiPuLaserView::OnRButtonUp(UINT nFlags, CPoint point) +{ + //ĻתΪ豸 + CClientDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(&point); + + gMouseToolMgr.OnRButtonUp(nFlags,point,dc); + //CScrollView::OnRButtonUp(nFlags, point); +} +void CLaiPuLaserView::OnMButtonDown(UINT nFlags, CPoint point) +{ + +} +void CLaiPuLaserView::OnMButtonUp(UINT nFlags, CPoint point) +{ + +} +//ˮƽϢӦ +void CLaiPuLaserView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) +{ + //ͷ + if(SB_LINEDOWN == nSBCode || SB_LINEUP == nSBCode) + { + CScrollView::OnHScroll(nSBCode, nPos, pScrollBar); + Invalidate(); + } + //ϵʱ + if(SB_THUMBTRACK == nSBCode) + { + CScrollView::OnHScroll(SB_THUMBTRACK, nPos, pScrollBar); + Invalidate(); + } + //϶ + if(SB_THUMBPOSITION == nSBCode) + { + CScrollView::OnHScroll(SB_THUMBPOSITION, nPos, pScrollBar); + Invalidate(); + } +} +//ֱϢӦ +void CLaiPuLaserView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) +{ + //ͷ + if(SB_LINEDOWN == nSBCode || SB_LINEUP == nSBCode) + { + CScrollView::OnVScroll(nSBCode, nPos, pScrollBar); + Invalidate(); + } + //ϵʱ + if(SB_THUMBTRACK == nSBCode) + { + CScrollView::OnVScroll(SB_THUMBTRACK, nPos, pScrollBar); + Invalidate(); + } + //϶ + if(SB_THUMBPOSITION == nSBCode) + { + CScrollView::OnVScroll(SB_THUMBPOSITION, nPos, pScrollBar); + Invalidate(); + } +} + +//Ӧ +BOOL CLaiPuLaserView::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + char c = pMsg->wParam; + switch(c) + { + case VK_CONTROL: + m_bCtrl = true; + OnCtrl(); + break; + case 'A'://ctrl + A ȫѡ + if(m_bCtrl) + { + OnSelAllObj(); + } + break; + case 'Z'://ctrl + Z + if(m_bCtrl) + { + OnUndo(); + } + break; + case 'Y'://ctrl + Y + if(m_bCtrl) + { + OnRedo(); + } + break; + case VK_SPACE: + OnSpace(); + break; + case VK_ESCAPE://Esc + OnEscape(); + break; + case VK_DELETE://ɾ + OnDelSelObj(); + break; + case VK_UP: + OnArrowDir(_DIR_U); + break; + case VK_DOWN: + OnArrowDir(_DIR_D); + break; + case VK_LEFT: + OnArrowDir(_DIR_L); + break; + case VK_RIGHT: + OnArrowDir(_DIR_R); + break; + default: + break; + } + } + if(pMsg->message==WM_KEYUP) + { + switch(pMsg->wParam) + { + case VK_CONTROL: + m_bCtrl = false; + break; + default: + break; + } + } + return CScrollView::PreTranslateMessage(pMsg); +} +//ESC Ӧ +void CLaiPuLaserView::OnEscape() +{ + CClientDC dc(this); + OnPrepareDC(&dc); + + gMouseToolMgr.OnEscapeKey(&dc); + GetLayerInstance().NotSelAllObj();//obj ȫѡ + gMouseToolMgr.SetMouseTool(_TOOL_POINT); + GetFrame()->ResetCaptionBar(); + RefreshView(); + + //ʾָ + //------------------------------------־start + CLog log; + log.AddCmdLog(); + { + log.str = "_esc * ȡ *"; + } + gLogMgr->WriteLog(log); + //------------------------------------־end +} +//Ӧ +void CLaiPuLaserView::MoveObjToPtByDir(DIRECTION dir) +{ + double MoveDisX = 0; + double MoveDisY = 0; + switch(dir) + { + case _DIR_L: + MoveDisX -= gDraw->GetKeyboardMoveDis(); + break; + case _DIR_R: + MoveDisX += gDraw->GetKeyboardMoveDis(); + break; + case _DIR_U: + MoveDisY += gDraw->GetKeyboardMoveDis(); + break; + case _DIR_D: + MoveDisY -= gDraw->GetKeyboardMoveDis(); + break; + default: + break; + } + GetLayerInstance().OnMove(MoveDisX,MoveDisY); + + RefreshView(); +} +#endif +#if 1//Ӧ +// +void CLaiPuLaserView::OnArrowDir(DIRECTION dir) +{ + MoveObjToPtByDir(dir); +} +//ո +void CLaiPuLaserView::OnSpace() +{ + +} +void CLaiPuLaserView::OnCtrl() +{ +} +#endif +void CLaiPuLaserView::OnContextMenu(CWnd* /* pWnd */, CPoint point) +{ +#ifndef SHARED_HANDLERS + theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); +#endif +} + + +// CLaiPuLaserView + +#ifdef _DEBUG +void CLaiPuLaserView::AssertValid() const +{ + CView::AssertValid(); +} + +void CLaiPuLaserView::Dump(CDumpContext& dc) const +{ + CScrollView::Dump(dc); +} + +CLaiPuLaserDoc* CLaiPuLaserView::GetDocument() const // ǵ԰汾 +{ + ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLaiPuLaserDoc))); + return (CLaiPuLaserDoc*)m_pDocument; +} +#endif //_DEBUG + +#if 1//view +/*--------------------------------------------------------------------------- + FUNCTION: SetZoomSizes + PURPOSE : Set up the CLaiPuLaserView class with the logical page size, and + scrolling page/line units. + This replaces CScrollView::SetScrollSizes. +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::SetZoomSizes (SIZE sizeTotal,const SIZE& sizePage,const SIZE& sizeLine) +{ + // Set up the defaults + ASSERT(sizeTotal.cx >= 0 && sizeTotal.cy >= 0); + m_nMapMode = MM_ANISOTROPIC; // Need for arbitrary scaling + m_totalLog = sizeTotal; + // Setup default Viewport extent to be conversion of Window extent + // into device units. + //BLOCK for DC + { + CWindowDC dc(NULL); + dc.SetMapMode(m_nMapMode); + + // total size + m_totalDev = m_totalLog; + dc.LPtoDP((LPPOINT)&m_totalDev); + } // Release DC here + + // Save the origional Viewport Extent + m_origTotalDev = m_totalDev; + // Save the origional scrollbar info - for CalcBars + m_origPageDev = sizePage; + m_origLineDev = sizeLine; + // Fugure out scroll bar info + CalcBars(); + // Notify the class that the zoom scale was set + NotifyZoom(); +} // SetZoomSizes + +/*--------------------------------------------------------------------------- + FUNCTION: OnPrepareDC + PURPOSE : Override of CScrollView for MM_ANISOTROPIC zoom mode +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::OnPrepareDC (CDC* pDC,CPrintInfo* pInfo) +{ +#ifdef _DEBUG + if (m_nMapMode != MM_ANISOTROPIC) { + TRACE0("Error: must call SetZoomSizes() before painting zoom view\n"); + ASSERT(FALSE); + return; + } +#endif //_DEBUG + + ASSERT_VALID(pDC); + ASSERT(m_totalLog.cx >= 0 && m_totalLog.cy >= 0); + ASSERT(m_totalDev.cx >= 0 && m_totalDev.cy >= 0); + // Set the Mapping mode, and the window and viewport extents + pDC->SetMapMode(m_nMapMode);//ɱӳģʽ + + pDC->SetViewportExt(m_totalDev); // in device coordinates + pDC->SetWindowExt(m_totalLog);// in logical coordinates + CPoint ptVpOrg; + // by default shift viewport origin in negative direction of scroll + ASSERT(pDC->GetWindowOrg() == CPoint(0,0)); + ptVpOrg = -GetDeviceScrollPosition(); + + // Center full fit + CRect rect; + GetClientRect(&rect); + // if client area is larger than total device size, + // override scroll positions to place origin such that + // output is centered in the window + if (m_totalDev.cx < rect.Width()) + ptVpOrg.x = (rect.Width() - m_totalDev.cx) / 2; + if (m_totalDev.cy < rect.Height()) + ptVpOrg.y = (rect.Height() - m_totalDev.cy) / 2; + // Set the new origin + pDC->SetViewportOrg(ptVpOrg); + // For default Printing behavior + CScrollView::OnPrepareDC(pDC, pInfo); +} // OnPrepareDC + +/*--------------------------------------------------------------------------- + FUNCTION: CalcBars + PURPOSE : Update the scrollbars - uses logical units + Call when the Viewport changes size. +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::CalcBars (void) +{ + { // BLOCK for DC + CWindowDC dc(NULL); + dc.SetMapMode(m_nMapMode); + // Calculate new device units for scrollbar + // Start with origional logical units from SetScrollPos + m_pageDev = m_origPageDev; + dc.LPtoDP((LPPOINT)&m_pageDev); + m_lineDev = m_origLineDev; + dc.LPtoDP((LPPOINT)&m_lineDev); + } // Free DC + + // Make sure of the range + if (m_pageDev.cy < 0) m_pageDev.cy = -m_pageDev.cy; + if (m_lineDev.cy < 0) m_lineDev.cy = -m_lineDev.cy; + + // If none specified - use one tenth + ASSERT(m_totalDev.cx >= 0 && m_totalDev.cy >= 0); + //һеľ + double Scale = m_zoomScale/DEFAULT_SCALE; + double min = 10;//С + double max = 500;// + double val = 20*Scale; + if(valmax) + { + val = max; + } + if(m_pageDev.cx == 0) + m_pageDev.cx = m_totalDev.cx/val; + if(m_pageDev.cy == 0) + m_pageDev.cy = m_totalDev.cy/val; + if(m_lineDev.cx == 0) + m_lineDev.cx = m_pageDev.cx /val; + if(m_lineDev.cy == 0) + m_lineDev.cy = m_pageDev.cy /val; + + // Now update the scrollbars + if (m_hWnd != NULL) + { + UpdateBars(); + Invalidate(TRUE); // Zoom scale changed, redraw all + } +} // CalcBars + +//Ŵ +int CLaiPuLaserView::DoZoomIn(CPoint Point) +{ + CPoint ptCenter; + ASSERT(m_nMapMode == MM_ANISOTROPIC); + + CPoint CurPt = GetScreenCenterPoint(); + double Scale = gDraw->GetMouseWheelScale(); + // Save the current center point. + ptCenter.x = CurPt.x+(Point.x-CurPt.x)*(Scale-1); + ptCenter.y = CurPt.y+(Point.y-CurPt.y)*(Scale-1); + + // Increase the zoom scale. + if(m_zoomScaleGetMouseWheelScale(); + // Save the current center point. + ptCenter.x = CurPt.x-(Point.x-CurPt.x)*(Scale-1); + ptCenter.y = CurPt.y-(Point.y-CurPt.y)*(Scale-1); + + // Decrease the zoom scale. + if(m_zoomScale>MIN_SCALE) + m_zoomScale /= Scale; + else + return TRUE; + + // Modify the Viewport extent + m_totalDev.cx = (int) ((double) m_origTotalDev.cx * m_zoomScale); + m_totalDev.cy = (int) ((double) m_origTotalDev.cy * m_zoomScale); + CalcBars(); + + // Set the current center point (logical coordinates. + CenterOnLogicalPoint(ptCenter); + // Notify the class that a new zoom scale was done + NotifyZoom(); + + return TRUE; +} + +//۲ +int CLaiPuLaserView::DoZoomFull(void) +{ + RectView(gDraw->GetWorkAreaViewScale()); + return TRUE; +} +//۲ +void CLaiPuLaserView::RectView(double scale,Dbxy pt) +{ + ASSERT(m_nMapMode == MM_ANISOTROPIC); + + CRect rect; + CPoint point = gDraw->Dbxy2CPoint(pt); + //ʵ + m_zoomScale = scale; + + // Modify the Viewport extent + m_totalDev.cx = (int) ((double) m_origTotalDev.cx * m_zoomScale); + m_totalDev.cy = (int) ((double) m_origTotalDev.cy * m_zoomScale); + CalcBars(); + // Set the current center point. + CenterOnLogicalPoint(point); + // Notify the class that a new zoom scale was done + NotifyZoom(); +} + +/*--------------------------------------------------------------------------- + FUNCTION: CenterOnLogicalPoint + PURPOSE : Same as CScrollView::CenterOnPoint, but for logical coordinates +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::CenterOnLogicalPoint(CPoint pt) +{ + //Convert the point to device coordinates + ViewLPtoDP(&pt); + // Account for scroll bar position + ClientToDevice(pt); + // Use CScrollView's function for device coordinates + CScrollView::CenterOnPoint(pt); +} // CenterOnLogicalPoint + +/*--------------------------------------------------------------------------- + FUNCTION: GetLogicalCenterPoint + PURPOSE : Get the center of screen in logical coordinates +---------------------------------------------------------------------------*/ +CPoint CLaiPuLaserView::GetLogicalCenterPoint (void) // Point in logical units +{ + CPoint pt; + CRect rect; + // Get the center of screen + GetClientRect(&rect); + pt.x = (rect.Width() / 2); + pt.y = (rect.Height() / 2); + + // Convert the point to logical coordinates + ViewDPtoLP(&pt); + return pt; +} // GetLogicalCenterPoint + +/*--------------------------------------------------------------------------- + FUNCTION: ViewDPtoLP + PURPOSE : Same as DPtoLP, but gets the Client DC for the view +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::ViewDPtoLP ( + LPPOINT lpPoints, + int nCount) +{ + // Convert to logical units + // Called from View when no DC is available + ASSERT(m_nMapMode > 0); // must be set + CWindowDC dc(this); + OnPrepareDC(&dc); + dc.DPtoLP(lpPoints, nCount); +} // ViewDPtoLP + +/*--------------------------------------------------------------------------- + FUNCTION: ViewLPtoDP + PURPOSE : Same as LPtoDP, but gets the Client DC for the view +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::ViewLPtoDP ( + LPPOINT lpPoints, + int nCount) +{ + // Convert to logical units + // Called from View when no DC is available + ASSERT(m_nMapMode > 0); // must be set + CWindowDC dc(this); + OnPrepareDC(&dc); + dc.LPtoDP(lpPoints, nCount); +} // ViewLPtoDP + +/*--------------------------------------------------------------------------- + FUNCTION: ClientToDevice + PURPOSE : Convert from Client coordinates to relative Device coordinates +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::ClientToDevice ( + CPoint &point) +{ + // Need to account for scrollbar position + CPoint scrollPt = GetDeviceScrollPosition(); + point.x += scrollPt.x; + point.y += scrollPt.y; +} // ClientToDevice + +/*--------------------------------------------------------------------------- + FUNCTION: NormalizeRect + PURPOSE : Normalize the rectangle +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::NormalizeRect ( + CRect &rect) +{ + if (rect.left > rect.right) { + int r = rect.right; + rect.right = rect.left; + rect.left = r; + } + if (rect.top > rect.bottom) { + int b = rect.bottom; + rect.bottom = rect.top; + rect.top = b; + } +} // NormalizeRect + +/*--------------------------------------------------------------------------- + FUNCTION: PersistRatio + PURPOSE : Make a CSize maintain the given ratio (by shrinking if nescessary) +---------------------------------------------------------------------------*/ +void CLaiPuLaserView::PersistRatio ( + const CSize &orig, + CSize &dest, + CPoint &remainder) +{ + double ratio1 = (double) orig.cx / orig.cy; + double ratio2 = (double) dest.cx / dest.cy; + int newSize; + + // Do nothing if they are the same + if (ratio1 > ratio2) + { + // Shrink hieght + newSize = (int)(dest.cx / ratio1); + remainder.x = 0; + remainder.y = dest.cy - newSize; + dest.cy = newSize; + } else if (ratio2 > ratio1) + { + // Shrink width + newSize = (int)(dest.cy * ratio1); + remainder.x = dest.cx - newSize; + remainder.y = 0; + dest.cx = newSize; + } +} // PersistRatio +//ȡǰֵ +int CLaiPuLaserView::GetCurrScaleVal(int val) +{ + return (val/m_zoomScale); +} +double CLaiPuLaserView::GetCurrScaleVal(double val) +{ + return (val/m_zoomScale); +} +#endif +#if 1//ͼ +//Ŵ +void CLaiPuLaserView::OnZoomIn() +{ + DoZoomIn(GetScreenCenterPoint()); +} +void CLaiPuLaserView::OnZoomOut() +{ + DoZoomOut(GetScreenCenterPoint()); +} +//۲ +void CLaiPuLaserView::OnWorkSpaceView() +{ + DoZoomFull(); +} +#endif +#if 1// +void CLaiPuLaserView::OnUndo() +{ + gCommandMgr.Undo(); + RefreshView(); + //ѡ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateUndo(CCmdUI* pCmdUI) +{ + if(gCommandMgr.HasUndoCmd()) + { + pCmdUI->Enable(true); + } + else + { + pCmdUI->Enable(false); + } + pCmdUI->SetCheck(false); +} +void CLaiPuLaserView::OnRedo() +{ + gCommandMgr.Redo(); + RefreshView(); + //ѡ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateRedo(CCmdUI* pCmdUI) +{ + if(gCommandMgr.HasRedoCmd()) + { + pCmdUI->Enable(true); + } + else + { + pCmdUI->Enable(false); + } + pCmdUI->SetCheck(false); +} +#endif +#if 1// +void CLaiPuLaserView::OnToolPoint() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_POINT); +} + +void CLaiPuLaserView::OnToolRect() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_RECT); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateToolRect(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(true); + pCmdUI->SetCheck(gMouseToolMgr.GetToolType()==_TOOL_RECT?1:0); +} +// +void CLaiPuLaserView::OnToolOnePoint() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_ONE_POINT); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateToolOnePoint(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(true); + pCmdUI->SetCheck(gMouseToolMgr.GetToolType()==_TOOL_ONE_POINT?1:0); +} +void CLaiPuLaserView::OnToolPolygon() +{ + +} +void CLaiPuLaserView::OnUpdateToolPolygon(CCmdUI* pCmdUI) +{ + +} + +void CLaiPuLaserView::OnToolCircle() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_CIRCLE); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateToolCircle(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(true); + pCmdUI->SetCheck(gMouseToolMgr.GetToolType()==_TOOL_CIRCLE?1:0); +} + +void CLaiPuLaserView::OnToolLine() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_LINE); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateToolLine(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(true); + pCmdUI->SetCheck(gMouseToolMgr.GetToolType()==_TOOL_LINE?1:0); +} +void CLaiPuLaserView::OnToolPline() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_PLINE); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnUpdateToolPline(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(true); + pCmdUI->SetCheck(gMouseToolMgr.GetToolType()==_TOOL_PLINE?1:0); +} +#endif + +#if 1//ͼβ +void CLaiPuLaserView::OnUpdateObjOperate(CCmdUI* pCmdUI) +{ + if(GetLayerInstance().HasObjSel()) + { + pCmdUI->Enable(true); + } + else + { + pCmdUI->Enable(false); + } +} +void CLaiPuLaserView::OnSelAllObj() +{ + if(gDraw->IsEditLayerObj()) + { + GetLayerInstance().SelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + } +} +void CLaiPuLaserView::OnMoveToCenter() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + MoveSelObjToCenter(); +} +void CLaiPuLaserView::MoveSelObjToCenter() +{ + CLayer & layer = GetLayerInstance(); + Dbxy pt = layer.GetSelObjRect().GetCenterPt(); + layer.OnMove(pt.x*(-1),pt.y*(-1)); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +//ѡ +void CLaiPuLaserView::OnRevSelObj() +{ + if(gDraw->IsEditLayerObj()) + { + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + } +} +void CLaiPuLaserView::OnDelSelObj() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CLayer &layer = GetLayerInstance(); + if(layer.HasObjSel()) + { + //ָ + CCommandDelete *pCmd = new CCommandDelete; + gCommandMgr.AddUndoCommand(pCmd); + pCmd->Excute(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + } +} +//ˮƽ +void CLaiPuLaserView::OnMirrorH() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnMirror(_X); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +//ֱ +void CLaiPuLaserView::OnMirrorV() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnMirror(_Y); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +//ת90 +void CLaiPuLaserView::OnRotato90L() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnRotato(90); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnRotato90R() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnRotato(-90); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnToolRotato() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_ROTATO); +} +// +void CLaiPuLaserView::OnArray() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CDlgArray dlg; + if(dlg.DoModal()==IDOK) + { + RefreshView(); + } +} +void CLaiPuLaserView::OnCut() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_CUT); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +//Ͻڵ +void CLaiPuLaserView::OnBreak() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_BREAK_NODE); +} +void CLaiPuLaserView::OnChamfer() +{ +} +void CLaiPuLaserView::OnFillet() +{ +} +//ֽ +void CLaiPuLaserView::OnExplode() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnExplode(); + RefreshView(); +} +//ϲ +void CLaiPuLaserView::OnJoin() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + if(GetLayerInstance().OnJoin()) + { + RefreshView(); + gLogMgr->WriteDebugLog( "error ----ϲOK"); + } + else + { + //------------------------------------־start + gLogMgr->WriteDebugLog( "error ----޷ϲ"); + //------------------------------------־end + } +} +void CLaiPuLaserView::OnCopy() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_COPY); +} +void CLaiPuLaserView::OnMove() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_MOVE2); +} +//ת +void CLaiPuLaserView::OnReverse() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + GetLayerInstance().OnReverseSelObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CLaiPuLaserView::OnAddNode() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_ADD_NODE); + RefreshView(); +} +void CLaiPuLaserView::OnDelNode() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gMouseToolMgr.SetMouseTool(_TOOL_DEL_NODE); + RefreshView(); +} +void CLaiPuLaserView::OnMeasure() +{ + gMouseToolMgr.SetMouseTool(_TOOL_MEASURE); + GetLayerInstance().SelAllObj(); + GetLayerInstance().RevSelAllObj(); + RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +#endif +#if 1 +//view ɫ +BOOL CLaiPuLaserView::OnEraseBkgnd(CDC *pDC) +{ + if(m_bEraseBkgnd2&&m_bEraseBkgnd) + { + CScrollView::OnEraseBkgnd(pDC); + CRect rect; + GetClientRect(rect); + CBrush BkgndBrush; + COLORREF color = RGB_BLACK; + color = gDraw->GetBkgndColor(); + BkgndBrush.CreateSolidBrush(color); + pDC->FillRect(&rect,&BkgndBrush); + } + m_bEraseBkgnd = true;//ָ + return TRUE; +} +BOOL CLaiPuLaserView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) +{ + return true; +} +//ƶ۲ĵ +void CLaiPuLaserView::MoveViewCenter() +{ + RectView(gDraw->GetWorkAreaViewScale(),gMarkAreaMgr->GetAllAreaCenterPt()); +} +//ػview +void CLaiPuLaserView::RefreshView() +{ + Invalidate(); + + #if 0 + CLayer &layer = GetLayerInstance(); + layer.BindingSelObjToDlg(); + #endif +} +CPoint CLaiPuLaserView::GetScreenCenterPoint() +{ + CClientDC dc(this); + OnPrepareDC(&dc); + + //ȡͻΧ + CRect rect; + GetClientRect(&rect);//ȡڿͻ + dc.DPtoLP(rect); + //ĵ + CPoint Cpoint; + Cpoint.x = (rect.left + (rect.right-rect.left)/2); + Cpoint.y = (rect.top + (rect.bottom-rect.top)/2); + + return Cpoint; +} +//귶Χ +void CLaiPuLaserView::LimitCursor() +{ + CRect rect; + GetClientRect(&rect);//ȡڿͻ + ClientToScreen(&rect);//εûתĻ + ClipCursor(&rect);//귶Χ +} +//ͷŶ귶Χ +void CLaiPuLaserView::ReleseLimitCursor() +{ + ClipCursor(NULL);//ͷ +} +// +void CLaiPuLaserView::SetCursorStyle(MOUSE_TOOL type) +{ + switch(type) + { + case _TOOL_POINT: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_POINT)); + break; + case _TOOL_RECT: + case _TOOL_LINE: + case _TOOL_PLINE: + case _TOOL_CIRCLE: + case _TOOL_MOVE2: + case _TOOL_ROTATO: + case _TOOL_COPY: + case _TOOL_MEASURE: + case _TOOL_ONE_POINT: + case _TOOL_PT_MOVE_TO_CCD: + case _TOOL_SET_MARK_PT: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_DRAW)); + break; + case _TOOL_TEXT: + case _TOOL_BARCODE: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_TXT)); + break; + case _TOOL_MOVE: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_MOVE)); + break; + case _TOOL_CUT: + case _TOOL_ADD_NODE: + case _TOOL_DEL_NODE: + case _TOOL_BREAK_NODE: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_NODE)); + break; + case _TOOL_MOVE_NODE: + case _TOOL_STRETCH: + SetCursor(AfxGetApp()->LoadCursor(IDC_MOUSE_HAND)); + break; + default: + break; + } +} +#endif + diff --git a/LaiPuLaser/LaiPuLaserView.h b/LaiPuLaser/LaiPuLaserView.h new file mode 100644 index 0000000..3156168 --- /dev/null +++ b/LaiPuLaser/LaiPuLaserView.h @@ -0,0 +1,217 @@ + +// LaiPuLaserView.h : CLaiPuLaserView Ľӿ +// + +#pragma once +#include "LaiPuLaserDoc.h" +#include "EnumDirection.h" +#include "GlobalDefine.h" + +#if 1//view +#define VIEW_SCALE1 (0.000097) +#define VIEW_SCALE2 (0.000121) +#define VIEW_SCALE3 (0.000151) +#define VIEW_SCALE4 (0.000189) +#define VIEW_SCALE5 (0.000236) +#define VIEW_SCALE6 (0.000295) +#define VIEW_SCALE7 (0.000369) +#define VIEW_SCALE8 (0.000461) +#define VIEW_SCALE9 (0.000576) +#define VIEW_SCALE10 (0.000721) +#define VIEW_SCALE11 (0.000901) +#define VIEW_SCALE12 (0.001126) +#define VIEW_SCALE13 (0.001407) +#define VIEW_SCALE14 (0.001759) +#define VIEW_SCALE15 (0.002199) +#define VIEW_SCALE16 (0.002749) +#define VIEW_SCALE17 (0.003436) +#define VIEW_SCALE18 (0.004295) +#define VIEW_SCALE19 (0.005369) +#define VIEW_SCALE20 (0.006711) +#define VIEW_SCALE21 (0.008389) +#define VIEW_SCALE22 (0.010486) +#define VIEW_SCALE23 (0.013107) +#define VIEW_SCALE24 (0.016384) +#define VIEW_SCALE25 (0.020480) +#define VIEW_SCALE26 (0.025600) +#define VIEW_SCALE27 (0.032001) +#define VIEW_SCALE28 (0.040001) +#define VIEW_SCALE29 (0.050001) +#define VIEW_SCALE30 (0.062501) +#define VIEW_SCALE31 (0.078126) +#define VIEW_SCALE32 (0.097658) +#define VIEW_SCALE33 (0.122072) +#define VIEW_SCALE34 (0.152590) +#define VIEW_SCALE35 (0.190738) +#define VIEW_SCALE36 (0.238423) +#define VIEW_SCALE37 (0.298028) +#define VIEW_SCALE38 (0.372535) +#define VIEW_SCALE39 (0.465669) +#define VIEW_SCALE40 (0.582086) +#define VIEW_SCALE41 (0.727608) +#define VIEW_SCALE42 (0.909510) +#define VIEW_SCALE43 (1.136887) +#define VIEW_SCALE44 (1.421109) +#define VIEW_SCALE45 (1.776387) +#define VIEW_SCALE46 (2.220483) +#define VIEW_SCALE47 (2.775604) +#define VIEW_SCALE48 (3.469505) +#define DEFAULT_SCALE VIEW_SCALE20 //ʼviewű +#define SCALE_ONE_TIME (1.25) //ÿű +#define MAX_SCALE (3.0) //Ŵ +#define MIN_SCALE VIEW_SCALE1 //СС +#endif + + +class CLaiPuLaserView : public CScrollView +{ +protected: // л + CLaiPuLaserView(); + DECLARE_DYNCREATE(CLaiPuLaserView) +// д +public: + virtual void OnDraw(CDC* pDC); // дԻƸͼ + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual void OnInitialUpdate(); + virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL); + void LimitCursor(); + void ReleseLimitCursor(); + HDC GetHDC(); + CDC* GetCDC(); + afx_msg BOOL PreTranslateMessage(MSG* pMsg); +protected: + virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); + virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); + virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); +// ʵ +public: + virtual ~CLaiPuLaserView(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +// +public: + CLaiPuLaserDoc* GetDocument() const; + int GetCurrScaleVal(int val);//λ + double GetCurrScaleVal(double val);//λ: + void RefreshView(); + void OnEscape(); + void MoveObjToPtByDir(DIRECTION dir); + afx_msg BOOL OnMouseWheel(UINT nFlags,short zDelta,CPoint pt); + double GetCurZoomScale(){return m_zoomScale;}; + afx_msg void OnZoomIn(); + afx_msg void OnZoomOut(); + void SetCursorStyle(MOUSE_TOOL type); + int DoZoomFull(); + void RectView(double scale,Dbxy pt = Dbxy(0,0)); + void NotEraseBkgndOneTime(){m_bEraseBkgnd = false;}; + void MoveSelObjToCenter(); + void SetbEraseBkgnd(bool b){m_bEraseBkgnd2 = b;} + void MoveViewCenter(); + afx_msg BOOL OnEraseBkgnd(CDC* pDC);//ɫ +private: + void OnArrowDir(DIRECTION dir); + void OnSpace(); + void OnCtrl(); +private: + bool m_bFirstIn;//Ƿһν + bool m_bCtrl;//ctrl Ƿ + bool m_bEraseBkgnd;//Ƿػ汳ɫ(־λÿλԶָ) + bool m_bEraseBkgnd2;//Ƿػ汳ɫ(Զָ) +private: +#if 1//view + void SetZoomSizes(SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE& sizeLine = sizeDefault); + void CenterOnLogicalPoint(CPoint ptCenter); + CPoint GetLogicalCenterPoint(void); + + // Zooming functions + int DoZoomIn(CPoint CenterPoint); + int DoZoomOut(CPoint CenterPoint); + + + // Override this to get notified of zoom scale change + virtual void NotifyZoom(void) {}; + + // Zooming utility functions + void ViewDPtoLP (LPPOINT lpPoints, int nCount = 1); + void ViewLPtoDP (LPPOINT lpPoints, int nCount = 1); + void ClientToDevice(CPoint &point); + void NormalizeRect(CRect &rect); + void PersistRatio(const CSize &orig, CSize &dest, CPoint &remainder); + void CalcBars(void); + CRect m_ptDragRect; + CSize m_origTotalDev; // Origional total size in device units + CSize m_origPageDev; // Origional per page scroll size in device units + CSize m_origLineDev; // Origional per line scroll size in device units + double m_zoomScale;//ǰű +#endif + CPoint GetScreenCenterPoint(); + +// ɵϢӳ亯 +protected: + afx_msg void OnFilePrintPreview(); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnLButtonUp(UINT nFlags, CPoint point); + afx_msg void OnRButtonDown(UINT nFlags, CPoint point); + afx_msg void OnRButtonUp(UINT nFlags, CPoint point); + afx_msg void OnMButtonDown(UINT nFlags, CPoint point); + afx_msg void OnMButtonUp(UINT nFlags, CPoint point); + afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); + + afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); + afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); + + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + afx_msg void OnToolPoint(); + afx_msg void OnUndo(); + afx_msg void OnArray(); + afx_msg void OnCut(); + afx_msg void OnReverse(); + afx_msg void OnAddNode(); + afx_msg void OnDelNode(); + afx_msg void OnBreak(); + afx_msg void OnChamfer(); + afx_msg void OnFillet(); + afx_msg void OnExplode(); + afx_msg void OnMeasure(); + afx_msg void OnJoin(); + afx_msg void OnUpdateUndo(CCmdUI* pCmdUI); + afx_msg void OnRedo(); + afx_msg void OnUpdateRedo(CCmdUI* pCmdUI); + afx_msg void OnToolRect(); + afx_msg void OnUpdateToolRect(CCmdUI* pCmdUI); + afx_msg void OnToolOnePoint(); + afx_msg void OnUpdateToolOnePoint(CCmdUI* pCmdUI); + afx_msg void OnToolPolygon(); + afx_msg void OnUpdateToolPolygon(CCmdUI* pCmdUI); + afx_msg void OnToolRotato(); + afx_msg void OnUpdateObjOperate(CCmdUI* pCmdUI); + afx_msg void OnToolCircle(); + afx_msg void OnUpdateToolCircle(CCmdUI* pCmdUI); + afx_msg void OnToolLine(); + afx_msg void OnUpdateToolLine(CCmdUI* pCmdUI); + afx_msg void OnToolPline(); + afx_msg void OnUpdateToolPline(CCmdUI* pCmdUI); + afx_msg void OnSelAllObj(); + afx_msg void OnRevSelObj(); + afx_msg void OnMoveToCenter(); + afx_msg void OnDelSelObj(); + afx_msg void OnWorkSpaceView() ; + afx_msg void OnMirrorH(); + afx_msg void OnMirrorV(); + afx_msg void OnRotato90L(); + afx_msg void OnRotato90R(); + afx_msg void OnCopy(); + afx_msg void OnMove(); + DECLARE_MESSAGE_MAP() +}; + +#ifndef _DEBUG // LaiPuLaserView.cpp еĵ԰汾 +inline CLaiPuLaserDoc* CLaiPuLaserView::GetDocument() const + { return reinterpret_cast(m_pDocument); } +#endif + +extern CLaiPuLaserView* m_pView; \ No newline at end of file diff --git a/LaiPuLaser/LaipuVbDllMgr.cpp b/LaiPuLaser/LaipuVbDllMgr.cpp new file mode 100644 index 0000000..38ac3d8 --- /dev/null +++ b/LaiPuLaser/LaipuVbDllMgr.cpp @@ -0,0 +1,245 @@ +#include "StdAfx.h" +#include "LaipuVbDllMgr.h" +#include "LogMgr.h" +#include "SinglechipCardMgr.h" +#include "Mirror.h" + + +CLaipuVbDllMgr *gLaipuVbDllMgr = new CLaipuVbDllMgr; +CLaipuVbDllMgr::CLaipuVbDllMgr(void) +{ + pMarkingScanCom = NULL;//dll com ָ + m_bIni = false;//Ƿʼ +} +CLaipuVbDllMgr::~CLaipuVbDllMgr(void) +{ +} +void CLaipuVbDllMgr::Ini() +{ + //ʼmark dll com ------------------------------------------------------ + HRESULT hresult; + CLSID cls_marking_scan_id; + CoInitialize(NULL); + //ݸijʶעҳӦʶ + hresult=CLSIDFromProgID(OLESTR("marking_scan.marking_scan_dll"), &cls_marking_scan_id); + //õCLSID + + //ʼCLSADO + /*ָʶһCom + CoCreateInstanceĵһǶCLSID룩128λıΨһرʶ·вϢϵͳעУ + ڶһΪNULL + ָлԶ̻򱾵أ˴ΪCLSCTX_INPROC_SERVERǷһDLL + ĸָͨŽӿڵIDҲһ128λı룻 + նĽӿָ롣*/ + hresult=CoCreateInstance(cls_marking_scan_id,NULL,CLSCTX_INPROC_SERVER,__uuidof(_marking_scan_dll),(LPVOID *) &pMarkingScanCom); + if(FAILED(hresult)) + { + gLogMgr->WriteDebugLog("mark dll com ʧ!",_LOG_ERROR); + } + else + { + m_bIni = true; + gLogMgr->WriteDebugLog("mark dll com ɹ"); + } +} +//ͨvb dll ʼ +void CLaipuVbDllMgr::VbIniCard(short low,short High) +{ + if(!m_bIni) + { + Ini(); + } + gLogMgr->WriteDebugLog(_T("func : VbIniCard")); + //SAFEARRAY + const int size = 5; + BYTE ComArr[size];//ѻʹõĴں + for(int i=0;iGetCardCom(i); + } + //תΪSAFEARRAY ---------------------------------------------- + SAFEARRAY *psa; + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].cElements = size;//Ԫظ + rgsabound[0].lLbound = 0; + psa = SafeArrayCreate(VT_UI1,1,rgsabound);//VT_UI1 ʾBYTE + //ԪصSAFEARRAY + for(long index=0;indexIsUsePciCard()) + { + gLogMgr->WriteDebugLog(_T("ʹpci ")); + card = 0; + } + short LaserFlg = 0;//߿? + if(gMirror->IsLaserSwitch()) + { + LaserFlg = 1; + } + + short LaserType = (LASER_TYPE)gMirror->GetLaserType(); + short MirrorIdx = 0;//ʱֻһ + + CString LogStr; + LogStr.Format(_T("[low] = [%d] ,[High] = [%d]"),low,High); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[card] = [%d] ,[LaserType] = [%d]"),card,LaserType); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[MirrorIdx] = [%d] ,[LaserFlg] = [%d]"),MirrorIdx,LaserFlg); + gLogMgr->WriteDebugLog(LogStr); + + + short ret = pMarkingScanCom->Marking_init_pci( + &low,//8λ˿ڳʼֵ + &High,//8λ˿ڳʼֵ + &card, + &LaserType, + &MirrorIdx,//ֵòͬУ׼ļ + &psa, + &LaserFlg + ); + gLogMgr->WriteDebugLog("Marking_init_pci","ret",ret); + + SafeArrayDestroy(psa);//ͷSAFEARRAY ռ +} +//ȡvb com ָ +_marking_scan_dll *CLaipuVbDllMgr::GetCom() +{ + return pMarkingScanCom; +} +void CLaipuVbDllMgr::MarkingStart() +{ + //gLogMgr->WriteDebugLog(_T("MarkingStart")); + pMarkingScanCom->marking_start(); +} +void CLaipuVbDllMgr::MarkingStop() +{ + //gLogMgr->WriteDebugLog(_T("MarkingStop")); + pMarkingScanCom->Marking_stop(); +} +void CLaipuVbDllMgr::CallMarkingEnd(long fileno,long fileAll,long MarkM,long m_sel,long head,SAFEARRAY * psa) +{ + //gLogMgr->WriteDebugLog(_T("CallMarkingEnd")); + //test + pMarkingScanCom->Marking_end(&fileno,&fileAll,&MarkM,&m_sel,&head,&psa); +} +//DA ѹ(808 ĵѹ) +//V ǵѹֵ(10 V),XY = 0ʾX1ʾY +void CLaipuVbDllMgr::Marking_DA(double V,short XY) +{ + pMarkingScanCom->Marking_DA(&V,&XY); +} +#if 1 +void CLaipuVbDllMgr::CallMarkingData(vector> &vec) +{ + SAFEARRAY *pSafeArr = CreatSafeArray(vec); + if(pSafeArr) + { + pMarkingScanCom->Marking_data(&pSafeArr); + SafeArrayDestroy(pSafeArr);//ͷSAFEARRAY + pSafeArr = NULL; + } +} +//Ԫصĸ +int CLaipuVbDllMgr::CalElementsCnt(vector> &vec) +{ + int ret = 0; + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + ret++;//ǰ߶εĵĸ + ret += (*iter).size()*2;// + } + ret++;//Ľλ + return ret; +} +int CLaipuVbDllMgr::CalElementsCnt(vector &vec) +{ + int ret = vec.size()*3; + + return ret; +} +//װSAFEARRAY Ĵ(ҪڵúͷԴ) +SAFEARRAY * CLaipuVbDllMgr::CreatSafeArray(vector> &vec) +{ + //SAFEARRAY + SAFEARRAY *psa; + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].cElements = CalElementsCnt(vec);//Ԫظ + rgsabound[0].lLbound = 0; + psa = SafeArrayCreate(VT_R8,1,rgsabound);//VT_R8 ʾdouble + //ԪصSAFEARRAY + long idx = 0; + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + int size = (*iter).size(); + if(size==0) + continue; + double Cnt = (double)size; + if(FAILED(SafeArrayPutElement(psa,&idx,&Cnt)))//ǰ߶εĵ + { + SafeArrayDestroy(psa);//ͷSAFEARRAY + return NULL; + } + idx++; + + vector::iterator iter1 = (*iter).begin(); + vector::iterator iter1_end = (*iter).end(); + for(;iter1!=iter1_end;iter1++) + { + if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter1).x)))//ݵX + { + SafeArrayDestroy(psa);//ͷSAFEARRAY + return NULL; + } + idx++; + if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter1).y)))//ݵY + { + SafeArrayDestroy(psa);//ͷSAFEARRAY + return NULL; + } + idx++; + } + } + double zero = 0; + if(FAILED(SafeArrayPutElement(psa,&idx,&zero)))//λ + { + SafeArrayDestroy(psa);//ͷSAFEARRAY + return NULL; + } + return psa; +} +SAFEARRAY * CLaipuVbDllMgr::CreatSafeArray(vector &vec) +{ + //SAFEARRAY + SAFEARRAY *psa; + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].cElements = CalElementsCnt(vec);//Ԫظ + rgsabound[0].lLbound = 0; + psa = SafeArrayCreate(VT_R8,1,rgsabound);//VT_R8 ʾdouble + //ԪصSAFEARRAY + long idx = 0; + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter)))) + { + SafeArrayDestroy(psa);//ͷSAFEARRAY + return NULL; + } + idx++; + } + return psa; +} +#endif diff --git a/LaiPuLaser/LaipuVbDllMgr.h b/LaiPuLaser/LaipuVbDllMgr.h new file mode 100644 index 0000000..342f150 --- /dev/null +++ b/LaiPuLaser/LaipuVbDllMgr.h @@ -0,0 +1,42 @@ +#pragma once + +#include "module.h" + +#import "marking_scan.dll" +using namespace marking_scan; + +// +enum LASER_TYPE +{ + _LAMP = 0, //Ʊ + _FIBER, // + _CO2, //co2 + _DIODE, // + _ENDDIODE, //˱ + _FIBER_CL, //ipg +}; + +//VB дdll ṩĹ +class CLaipuVbDllMgr +{ +public: + CLaipuVbDllMgr(void); + ~CLaipuVbDllMgr(void); + virtual void Ini(); + void VbIniCard(short low,short High); + _marking_scan_dll *GetCom(); + void MarkingStart(); + void MarkingStop(); + void Marking_DA(double V,short XY); + void CallMarkingEnd(long fileno,long fileAll,long MarkM,long m_sel,long head,SAFEARRAY * psa); + void CallMarkingData(vector> &vec); + SAFEARRAY * CreatSafeArray(vector &vec); +private: + SAFEARRAY * CreatSafeArray(vector> &vec); + int CalElementsCnt(vector> &vec); + int CalElementsCnt(vector &vec); +private: + int m_bIni;//Ƿʼ + _marking_scan_dll *pMarkingScanCom;//dll com ָ +}; +extern CLaipuVbDllMgr *gLaipuVbDllMgr; \ No newline at end of file diff --git a/LaiPuLaser/Laser.cpp b/LaiPuLaser/Laser.cpp new file mode 100644 index 0000000..1c1a372 --- /dev/null +++ b/LaiPuLaser/Laser.cpp @@ -0,0 +1,204 @@ +#include "StdAfx.h" +#include "Laser.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "MsgBox.h" +#include "Motor.h" +#include "ExceptionMsg.h" +#include "WorkCmdContainer.h" +#include "WorkCmdMoveMotor.h" + + + +CLaser *gLaser = new CLaser; +CLaser::CLaser(void) +{ + m_OpenDelay = 0;//غʱ ms + m_BaseThickness = 0;//ԽĻ׼Ʒmm + m_WorkThickness = 0;//ǰӹIJƷmm + m_MaxThickness = 1;//Ʒmm + m_MinThickness = 1;//СƷmm +} +CLaser::~CLaser(void) +{ +} +CMFCPropertyGridProperty *CLaser::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("Laser");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_OpenDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OpenDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("غʱ"); + Description = _T("򿪺ʱʱ,ȴ(ms)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_OpenDelay, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_LaserCoord_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LaserCoord.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("X"); + Description = _T("ԭX"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_LaserCoord.x, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_LaserCoord_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LaserCoord.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Y"); + Description = _T("ԭY"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_LaserCoord.y, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_BaseThickness");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_BaseThickness); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("׼Ʒ"); + Description = _T("ԽĻ׼Ʒ,Զ佹mm"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_BaseThickness, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_WorkThickness");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkThickness); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ǰƷ"); + Description = _T("ǰӹIJƷmm"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_WorkThickness, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MaxThickness");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxThickness); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Ʒ"); + Description = _T("IJƷmm"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_MaxThickness, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MinThickness");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MinThickness); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("СƷ"); + Description = _T("СIJƷmm"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_MinThickness, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +//ļΪ +void CLaser::WriteWorkFileExt(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_NULL,m_WorkThickness));//Ʒ +} +void CLaser::ReadWorkFile(CLabVecRang &LabVecRang) +{ + int idx = LabVecRang.GetStart()+1; + m_WorkThickness = LabVecRang.GetDouble(idx++); +} +//ӵָ +void CLaser::AddAdjustFocalCmd() +{ + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + double TargetCoord = m_WorkThickness-m_BaseThickness;//Ŀ꽹λ + //͵ǰλòȲҪ + if(!IsTwoDbEqual(Motor.GetCoord(),TargetCoord)) + { + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,TargetCoord); + pCmd->SetMoveFlg(false);//ƶ + CmdContainer.AddCmd(pCmd); + } +} +//ȡǰĵ +double CLaser::GetFocalAdjustVal() +{ + double AdjustVal = 0; + if(m_WorkThickness>=m_MinThickness && m_WorkThickness<=m_MaxThickness) + { + AdjustVal = m_BaseThickness - m_WorkThickness; + } + return AdjustVal; +} +//ǰӦ +void CLaser::OnOpen() +{ + Sleep(GetOpenDelay()); +} +//عӦ +void CLaser::OnClose() +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/Laser.h b/LaiPuLaser/Laser.h new file mode 100644 index 0000000..826b7ba --- /dev/null +++ b/LaiPuLaser/Laser.h @@ -0,0 +1,37 @@ +#pragma once +#include "module.h" + +// +class CLaser :public CModule +{ +public: + CLaser(void); + ~CLaser(void); + virtual MODULE GetModuleType(){return _LASER_PROP;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + Dbxy GetCoord(){return m_LaserCoord;}; + void SetCoord(Dbxy pt){m_LaserCoord = pt;}; + int GetOpenDelay(){return m_OpenDelay;}; + void SetOpenDelay(int n){m_OpenDelay = n;}; + double GetBaseThickness(){return m_BaseThickness;}; + void SetBaseThickness(double n){m_BaseThickness = n;}; + double GetFocalAdjustVal(); + double GetWorkThickness(){return m_WorkThickness;}; + void SetWorkThickness(double n){m_WorkThickness = n;}; + void AddAdjustFocalCmd(); + void OnOpen(); + void OnClose(); +private: + Dbxy m_LaserCoord;//ⴹֱƽ̨(PLATFORM_COORD) + int m_OpenDelay;//غʱ ms + + //⽹,Z еʹ + double m_BaseThickness;//ԽĻ׼Ʒmm + double m_WorkThickness;//ǰӹIJƷmm + double m_MaxThickness;//Ʒmm + double m_MinThickness;//СƷmm +}; +extern CLaser *gLaser; \ No newline at end of file diff --git a/LaiPuLaser/LaserDeviceMgr.cpp b/LaiPuLaser/LaserDeviceMgr.cpp new file mode 100644 index 0000000..16da8bc --- /dev/null +++ b/LaiPuLaser/LaserDeviceMgr.cpp @@ -0,0 +1,680 @@ +#include "StdAfx.h" +#include "LaserDeviceMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "CStringFuc.h" +#include "ExceptionMsg.h" +#include "LogMgr.h" +#include "GlobalFunction.h" + + +#define MAX_CUR 7.8 //ֵ +#define DelayTime 200 + +CLaserDeviceMgr *gCLaserDeviceMgr = new CLaserDeviceMgr; +CLaserDeviceMgr::CLaserDeviceMgr(void) +{ + m_bUse = true; + m_ComPort = 11;//ͨcom ڱ + m_ComBaudrate = 9600;//ͨŲ(innolase 19200)(SpectraPhysics 9600) + m_Power = 7;// ٷֱ% + m_Fre = 50000;//Ƶ + //m_DeviceType = _LASER_INNOLASE;// + m_DeviceType = _LASER_SPECTRA_PHYSICS;// + m_LaserSleepTimeMinutes = 30;//̹⼤߼ʱ() + m_CurLeftTimes = "00:00:00"; + m_bExitAppCloseLaser = true;//˳ʱرռ +} +CLaserDeviceMgr::~CLaserDeviceMgr(void) +{ + //TurnOffEmission(); +} +void CLaserDeviceMgr::Ini() +{ + if(m_DeviceType==_LASER_INNOLASE) + { + //򿪴 + if(m_ComMgr.Open(m_ComPort,m_ComBaudrate)) + { + //StartReadInfo(); + } + else + { + gLogMgr->WriteDebugLog("ڴʧ!"); + } + } +} + +#if 1// +CMFCPropertyGridProperty *CLaserDeviceMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("SpectraPhysicsLaser");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUse");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUse); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿʹ"); + Description = _T("Ƿʹüع"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUse, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bExitAppCloseLaser");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bExitAppCloseLaser); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("˳ʱر"); + Description = _T("˳ʱԶرռ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bExitAppCloseLaser, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Com");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ComPort); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ͨŴ"); + Description = _T("PC ͨʹõĴڱ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ComPort, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_ComBaudrate");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ComBaudrate); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ͨŲ"); + Description = _T("ͨŲ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ComBaudrate, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Diode");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Power); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("⹦"); + Description = _T(""); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Power, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Fre");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Fre); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƶ"); + Description = _T("Ƶ(hz)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Fre, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LaserSleepTimeMinutes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LaserSleepTimeMinutes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("߼ʱ"); + Description = _T("ӹɺʼʱʱ󼤹״̬()"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LaserSleepTimeMinutes, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CLaserDeviceMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CLaserDeviceMgr]------------------------------------------------"< &LabVec) +{ +} +void CLaserDeviceMgr::ReadWorkFile(CLabVecRang &LabVecRang) +{ +} +#endif +#if 1 +//ʼӹ֮ǰIJ +void CLaserDeviceMgr::OnWorkStart() +{ + //ߵʱ + //StopLaserSleepTime(); + + SetParToLaserDevice(true); +} +//ӹ֮IJ +void CLaserDeviceMgr::OnWorkEnd() +{ + //ʼߵʱ + //StartLaserSleepTime(); +} +void CLaserDeviceMgr::SetParToLaserDevice(bool bException) +{ + if(m_bUse) + { + //ò + if(m_DeviceType==_LASER_SPECTRA_PHYSICS) + { + SetParToLaserSpectraPhysics(); + } + else if(m_DeviceType==_LASER_INNOLASE) + { + SetParToLaserInnolase(bException); + } + } +} +#endif +#if 1// +//ü--- +void CLaserDeviceMgr::SetParToLaserSpectraPhysics() +{ + gLogMgr->WriteDebugLog("func ; CLaserDeviceMgr---->SetParToLaserSpectraPhysics"); + + CCommPortMgr com; + if(com.Open(m_ComPort)) + { + {//emission + CString str1 = _T("ON"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + } + {//emission + CString str1 = _T("?D"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + CString ret = com.ReadStr(); + if(ret == "0") + { + CString str = _T("emission ʧ"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + } + //õ + { + CString str1 = Db2CString(m_Power*MAX_CUR*0.01); + CString str = "C:"+ str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + } + //Ƶ + { + CString str1 = Int2CString(m_Fre*1000); + CString str = "Q:"+ str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + } + } + else + { + CString str = _T("ͨʧ"); + gLogMgr->WriteDebugLog(str); + } +} + +//ȡǰ״̬ +CString CLaserDeviceMgr::GetLaserState() +{ + CString State; + CCommPortMgr com; + //򿪴 + if(com.Open(m_ComPort)) + { + CString str1 = _T("?F"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + //ȡ + State = com.ReadStr(); + com.Close(); + } + else + { + State = _T("ͨʧ"); + } + return State; +} + +//õǰȻʱ +CString CLaserDeviceMgr::GetWarmTime() +{ + CString time = _T("0"); + CCommPortMgr com; + //򿪴 + if(com.Open(m_ComPort)) + { + CString str1 = _T("WARMUPTIME?"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + //ȡ + time = com.ReadStr(); + com.Close(); + } + return time; +} +void CLaserDeviceMgr::TurnOnEmission() +{ + gLogMgr->WriteDebugLog("func ; CLaserDeviceMgr---->TurnOnEmission"); + + CCommPortMgr com; + //򿪴 + if(com.Open(m_ComPort)==false) + { + return; + } + //emission + { + CString str1 = _T("ON"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + } + com.Close(); +} +void CLaserDeviceMgr::TurnOffEmission() +{ + CCommPortMgr com; + //򿪴 + if(com.Open(m_ComPort)==false) + { + return; + } + //emission + { + CString str1 = _T("OFF"); + CString str = str1+char(13)+char(10); + com.Write(str); + Sleep(DelayTime); + } + com.Close(); +} +#endif +#if 1//¹innolase (bException ʱǷ׳쳣) +void CLaserDeviceMgr::SetParToLaserInnolase(bool bException) +{ + gLogMgr->WriteDebugLog("func ; CLaserDeviceMgr---->SetParToLaserInnolase"); + //ûб仯ʱҪ + if(IsTwoDbEqual(m_CurLaserCurr,m_Power) && IsTwoDbEqual(m_CurLaserFre,m_Fre)) + { + gLogMgr->WriteDebugLog("par not change"); + return; + } + SendMsgToDevice(_INNOLAS_CURRENT,true,m_Power,bException); + SendMsgToDevice(_INNOLAS_FRE,true,m_Fre,bException);//m_Fre λkhz + Sleep(100);//ٷһ + SendMsgToDevice(_INNOLAS_CURRENT,true,m_Power,bException); + SendMsgToDevice(_INNOLAS_FRE,true,m_Fre,bException); + + //¼ǰֵ + m_CurLaserCurr = m_Power; + m_CurLaserFre = m_Fre; + + //Sleep(1000); + //Innolase IJǷóɹ + //CheckInnolaseLaserPar(m_Power,m_Fre,bException); +} +//Innolase IJǷóɹ +void CLaserDeviceMgr::CheckInnolaseLaserPar(double Power,double Fre,bool bException) +{ + //ȡʵʵIJֵ + ReadLaserPar(); + //Ӽȡ + double GetPower = GetCurLaserCurr(); + double GetFre = GetCurLaserFre(); + CString str; + gLogMgr->WriteDebugLog("532 IJǷóɹ"); + str.Format("GetPower = %lf,SetPower = %lf",GetPower,Power); + gLogMgr->WriteDebugLog(str); + str.Format("GetFre = %lf,SetFre = %lf",GetFre,Fre); + gLogMgr->WriteDebugLog(str); + double eps = 0.1; + if(bException) + { + if(!IsTwoDbEqual(GetPower,Power,eps) || !IsTwoDbEqual(GetFre,Fre,eps)) + { + CExceptionMsg Msg; + CString str("532 ̹⼤趨ʧ!"); + Msg.SetMsg(str); + throw Msg; + } + } +} + +//üIJ(bException ʧʱ׳쳣) +double CLaserDeviceMgr::SendMsgToDevice(INNOLAS_LASER_OP_TYPE type,bool bSet,double val,bool bException) +{ + double GetVal = 0;//ȡֵ + + bool ret = true; + CString str; + + //򿪴 + if(m_ComMgr.IsOpen()) + { + CInnolasOpPar OpPar; + OpPar.bSet = bSet; + OpPar.SetVal = val; + OpPar.Type = type; + SendMsgToDeviceExt(m_ComMgr,OpPar); + + if(!bSet)//ȡ + { + Sleep(100); + char ReadBuf[256]; + memset(ReadBuf,0,256); + m_ComMgr.ReadBuf(ReadBuf,256); + + int ValIdx1 = 8;//ֵλ + int ValIdx2 = 9; + + unsigned char ValChar1 = ReadBuf[ValIdx1]; + unsigned char ValChar2 = ReadBuf[ValIdx2]; + + unsigned int Val1 = ValChar1; + unsigned int Val2 = ValChar2; + GetVal = HexByte2Int(Val1,Val2); + + GetVal /=GetLaserUnit(OpPar.Type);//ת + } + } + else + { + ret = false; + //str = "쳣!"; + } + if(bException && !ret && !gExitApp) + { + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + return GetVal; +} +//Ϣ豸 +void CLaserDeviceMgr::SendMsgToDeviceExt(CCommPortMgr&Comm,CInnolasOpPar &OpPar) +{ + unsigned char buf[256]; + memset(buf,0,256); + int idx = 0; + //Startbyte 2 byte ,Value is 0xFF00 + buf[idx++] = 0xff; + buf[idx++] = 0x00; + //Length of command ,1 byte ֽ + buf[idx++] = GetLenOfCmd(OpPar.Type); + //Message ID 2 byte, Χ0 ~ 0x7FFF + buf[idx++] = 0x00; + buf[idx++] = GetMsgID(OpPar.Type); + + //Command type,1 byte,0x57 command (set) 0x47 query (get) + buf[idx++] = GetOpType(OpPar.bSet); + //Opcode 2 byte + buf[idx++] = GetOpCode1(OpPar.Type); + buf[idx++] = GetOpCode2(OpPar.Type); + //Parameter ,0...245 byte + //if(OpPar.bSet) + { + int IntVal = OpPar.SetVal * GetLaserUnit(OpPar.Type); + char HexVal[128]; + memset(HexVal,0,128); + IntTo2ByteHex(IntVal,HexVal); + if(OpPar.Type == _INNOLAS_SYS_ENABLE) + { + buf[idx++] = 0x01;// + } + else + { + buf[idx++] = HexVal[0]; + buf[idx++] = HexVal[1]; + } + } + //Checksum,1 byte,Addition mod 256 (У) + int Checksum = 0; + for(int k=0;k + Comm.WriteBuf(buf,idx); +} +//ȡָֽ +unsigned char CLaserDeviceMgr::GetLenOfCmd(INNOLAS_LASER_OP_TYPE Type) +{ + unsigned c = 0x09; + if(Type == _INNOLAS_SYS_ENABLE) + { + c = 0x08; + } + return c; +} + +//ȡMSG ID +unsigned char CLaserDeviceMgr::GetMsgID(INNOLAS_LASER_OP_TYPE Type) +{ + int id = (int)Type; + unsigned char c = (unsigned char)id; + return c; +} +// +unsigned char CLaserDeviceMgr::GetOpType(bool bSet) +{ + return (bSet)?0x57:0x47; +} +//code ĵ1 ֽ +unsigned char CLaserDeviceMgr::GetOpCode1(INNOLAS_LASER_OP_TYPE Type) +{ + unsigned char c = 0x00; + + return c; +} +//code ĵ2 ֽ +unsigned char CLaserDeviceMgr::GetOpCode2(INNOLAS_LASER_OP_TYPE Type) +{ + unsigned char c = 0x00; + if(Type == _INNOLAS_FRE) + { + c = 0x81; + } + else if(Type == _INNOLAS_SYS_ENABLE) + { + c = 0xc1; + } + else if(Type == _INNOLAS_CURRENT) + { + c = 0x70; + } + else if(Type == _INNOLAS_SYS_STATE) + { + c = 0xa4; + } + return c; +} +//ȡĵλ +double CLaserDeviceMgr::GetLaserUnit(INNOLAS_LASER_OP_TYPE Type) +{ + double n = 1; + if(Type == _INNOLAS_FRE) + { + n = 10; + } + else if(Type == _INNOLAS_CURRENT) + { + n = 100; + } + return n; +} +//ȡʵʵIJֵ +void CLaserDeviceMgr::ReadLaserPar() +{ + if(gExitApp) + return; + m_CurLaserCurr = SendMsgToDevice(_INNOLAS_CURRENT,false,0,false);// + m_CurLaserFre= SendMsgToDevice(_INNOLAS_FRE,false,0,false);//Ƶ +} +#endif +#if 1//߿ +UINT LaserSleepThread(LPVOID pParam) +{ + CLaserDeviceMgr *p = (CLaserDeviceMgr *)pParam; + p->LaserSleepTimeExt(); + return 0; +} +//ʼߵʱ +void CLaserDeviceMgr::StartLaserSleepTime() +{ + m_LaserSleepTime.StartBackTime(m_LaserSleepTimeMinutes*60); + m_bStopLaserSleepTime = false;//ڽ߳ + AfxBeginThread(LaserSleepThread,this); +} +//ߵʱ +void CLaserDeviceMgr::StopLaserSleepTime() +{ + m_bStopLaserSleepTime = true;//ڽ߳ +} +void CLaserDeviceMgr::LaserSleepTimeExt() +{ + while(1) + { + Sleep(600); + if(gExitApp) + return; + if(m_bStopLaserSleepTime) + break; + + if(m_LaserSleepTime.IsBackTimeEnd())//ʱ + { + //Ϊ0 + if(m_DeviceType==_LASER_INNOLASE) + { + SendMsgToDevice(_INNOLAS_CURRENT,true,0,false); + } + break; + } + m_CurLeftTimes = m_LaserSleepTime.GetLeftTimes(); + } +} +void CLaserDeviceMgr::OnExitApp() +{ + if(m_bExitAppCloseLaser) + { + //˳ʱΪ0 + if(m_DeviceType==_LASER_INNOLASE) + { + SendMsgToDevice(_INNOLAS_CURRENT,true,0,true); + } + if(m_DeviceType==_LASER_SPECTRA_PHYSICS) + { + TurnOffEmission(); + } + } +} + +#endif +#if 1//ȡ豸״̬ +UINT ReadInfoThread(LPVOID pParam) +{ + CLaserDeviceMgr *p = (CLaserDeviceMgr *)pParam; + p->ReadInfoExt(); + return 0; +} +void CLaserDeviceMgr::StartReadInfo() +{ + AfxBeginThread(ReadInfoThread,this); +} +void CLaserDeviceMgr::ReadInfoExt() +{ + while(1) + { + Sleep(200); + if(gExitApp) + return; + + // + ReadLaserPar(); + } +} +#endif + diff --git a/LaiPuLaser/LaserDeviceMgr.h b/LaiPuLaser/LaserDeviceMgr.h new file mode 100644 index 0000000..7de2001 --- /dev/null +++ b/LaiPuLaser/LaserDeviceMgr.h @@ -0,0 +1,96 @@ +#pragma once +#include "module.h" +#include "CommPortMgr.h" +#include "WorkTime.h" + +// +enum LASER_DEVICE_TYPE +{ + _LASER_SPECTRA_PHYSICS=0,// + _LASER_INNOLASE,//¹innolase +}; + +enum INNOLAS_LASER_OP_TYPE +{ + _INNOLAS_NULL = 0, + _INNOLAS_FRE,//Ƶ + _INNOLAS_CURRENT,// + _INNOLAS_SYS_STATE,//豸״̬ + _INNOLAS_SYS_ENABLE,// +}; +//IJʽ +class CInnolasOpPar +{ +public: + INNOLAS_LASER_OP_TYPE Type; + bool bSet; + double SetVal; + double GetVal1; + double GetVal2; +}; + +// +class CLaserDeviceMgr :public CModule +{ +public: + CLaserDeviceMgr(void); + ~CLaserDeviceMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _SPECTRA_PHYSICS_LASER_PROP;}; + virtual void Ini(); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + virtual void OnWorkStart();//ʼӹ֮ǰIJ + virtual void OnWorkEnd();//ӹ֮IJ + virtual void OnExitApp(); + + CString GetWarmTime(); + void TurnOnEmission(); + void TurnOffEmission(); + void SetParToLaserDevice(bool bException); + double GetPower(){return m_Power;}; + void SetPower(double val){m_Power = val;}; + int GetLaserFre(){return m_Fre;}; + void SetFre(int val){m_Fre = val;}; + CString GetLaserState(); + double SendMsgToDevice(INNOLAS_LASER_OP_TYPE type,bool bSet,double val,bool bException); + double GetCurLaserCurr(){return m_CurLaserCurr;}; + double GetCurLaserFre(){return m_CurLaserFre;}; + void ReadLaserPar(); + void StartLaserSleepTime(); + void StopLaserSleepTime(); + void LaserSleepTimeExt(); + CString GetCurLeftTimes(){return m_CurLeftTimes;}; + void StartReadInfo(); + void ReadInfoExt(); +private: + void SendMsgToDeviceExt(CCommPortMgr&Comm,CInnolasOpPar &OpPar); + unsigned char GetMsgID(INNOLAS_LASER_OP_TYPE Type); + unsigned char GetOpType(bool bSet); + unsigned char GetOpCode1(INNOLAS_LASER_OP_TYPE Type); + unsigned char GetOpCode2(INNOLAS_LASER_OP_TYPE Type); + double GetLaserUnit(INNOLAS_LASER_OP_TYPE Type); + unsigned char GetLenOfCmd(INNOLAS_LASER_OP_TYPE Type); + void CheckInnolaseLaserPar(double Power,double Fre,bool bException); + void SetParToLaserSpectraPhysics(); + void SetParToLaserInnolase(bool bException); +private: + LASER_DEVICE_TYPE m_DeviceType;// + bool m_bUse;//Ƿ񴮿ڿƼ + bool m_bExitAppCloseLaser;//˳ʱرռ + CCommPortMgr m_ComMgr; + int m_ComPort;//ͨcom ڱ + int m_ComBaudrate;//ͨŲ(innolase 19200)(SpectraPhysics 9600) + double m_Power;// (¹innolase Ϊٷֱ% ) (ǵֵ) + int m_Fre;//Ƶhz + + double m_CurLaserCurr;//ǰĵ + double m_CurLaserFre;//ǰƵ + + CWorkTime m_LaserSleepTime;//Ƽߵʱ + int m_LaserSleepTimeMinutes;//̹⼤߼ʱ() + bool m_bStopLaserSleepTime;//ڽ߳ + CString m_CurLeftTimes;//ǰʣʱ +}; +extern CLaserDeviceMgr *gCLaserDeviceMgr; \ No newline at end of file diff --git a/LaiPuLaser/Layer.cpp b/LaiPuLaser/Layer.cpp new file mode 100644 index 0000000..abde317 --- /dev/null +++ b/LaiPuLaser/Layer.cpp @@ -0,0 +1,433 @@ +#include "StdAfx.h" +#include "Layer.h" +#include "LogMgr.h" +#include "GlobalDrawMgr.h" +#include "LaiPuLaserView.h" +#include "GlobalFunction.h" +#include "CommandRotato.h" +#include "CommandMirror.h" +#include "CommandMove.h" +#include "CommandReverse.h" +#include "CommandJion.h" +#include "CommandMgr.h" +#include "EasyOperationMgr.h" +#include "ObjComponentMgr.h" +#include "MarkAreaMgr.h" + + + +CLayer CLayer::m_Instance; +CLayer::CLayer(void) +{ + m_ObjContainer = &m_TmpObjContainer;//ʼʱ򱨴 +} +CLayer::~CLayer(void) +{ +} +#if 1 +void CLayer::Serialize(CArchive& ar) +{ +// m_ObjContainer->Serialize(ar); +} +CLayer &CLayer::Instance() +{ + return m_Instance; +} +//󶨵ǰObjContainer +void CLayer::BindObjContainer(CObjContainer &Container) +{ + //ڱ༭״̬ + gCommandMgr.Reset(); + //ʱ + ClearTmpObj(); + //µ + m_ObjContainer = &Container; + +#ifdef __DLG_PANE_OBJ_LIST__ + //µ󶨵б + GetFrame()->m_DlgObjList.BindObjContainer(m_ObjContainer); +#endif +} +#endif +#if 1 +void CLayer::Draw(CDC* pDC) +{ + if(gMarkAreaMgr->IsbShowReadDate()) + return; + //obj + DrawAllObj(pDC); +} +void CLayer::DrawAllObj(CDC* pDC) +{ + m_ObjContainer->DrawAllObj(pDC); + //ʱҲҪ + m_TmpObjContainer.DrawAllObj(pDC); +} +//ػѡͼ +void CLayer::XorRedrawObj(CDC* pDC,bool bNeedSel) +{ + m_ObjContainer->XorRedrawObj(pDC,bNeedSel); +} +#endif +#if 1 +void CLayer::AddObject(CObjBase *pMarkObject) +{ + m_ObjContainer->AddObject(pMarkObject); +} +void CLayer::AddObject(Sptr p) +{ + m_ObjContainer->AddObject(p); +} +void CLayer::AddObject(CObjContainer &ObjContainer) +{ + vector> &vec = ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + (*iter)->SetSelected(false); + AddObject((*iter)); + } + } +} +//ɾѡ +void CLayer::DelSelObj() +{ + m_ObjContainer->DelSelObj(); +} +//ɾObjContainer ָobj +void CLayer::DelObj(CObjContainer &ObjContainer) +{ + vector> &vec = ObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNull()==false) + { + DelObj((*iter)); + } + } +} +//ɾָobj +void CLayer::DelObj(Sptr p) +{ + m_ObjContainer->DelObj(p); +} +#endif +#if 1 +bool CLayer::HasSelObjectInRect(DbRect rect) +{ + return m_ObjContainer->HasSelObjectInRect(rect); +} +bool CLayer::HasSelNodeInRect(DbRect rect) +{ + return m_ObjContainer->HasSelNodeInRect(rect); +} + +bool CLayer::HasObjectInRect(DbRect rect) +{ + return m_ObjContainer->HasObjectInRect(rect); +} +//ѡڵĶ(bNeedAllIn ʾҪrect ) +bool CLayer::SelObjectInRect(DbRect rect,bool bNeedAllIn) +{ + bool ret =false; + //ѡʱȡ֮ǰѡ + if(!gDraw->IsbMultipleSel()) + { + SelAllObj(); + RevSelAllObj(); + } + if(gDraw->IsEditLayerObj())//Ƿ༭ + { + if(m_ObjContainer->SelObjectInRect(rect,bNeedAllIn)) + { + gEasyOperationMgr->Refresh(); + ret = true; + } + } + //һƫѡ + DbRect OffsetRect; + if(m_ObjContainer->GetSelOffsetRect(OffsetRect)) + { + gObjComponentMgr->NotSelAllObj(); + rect = OffsetRect; + } + //ͬʱԪѡ + if(gObjComponentMgr->SelObjectInRect(rect)) + { + ret = true; + } + return ret; +} +//ȡһrect obj +Sptr CLayer::GetFirstObjInRect(DbRect &rect) +{ + return m_ObjContainer->GetFirstObjInRect(rect); +} +Sptr CLayer::GetFirstNodeObjInRect(DbRect &rect) +{ + return m_ObjContainer->GetFirstNodeObjInRect(rect); +} + +//Ƿѡobj +bool CLayer::HasObjSel() +{ + return m_ObjContainer->HasObjSel(); +} + +//ȫѡ +void CLayer::SelAllObj() +{ + m_ObjContainer->SelAllObj(); + gEasyOperationMgr->Refresh(); + //Ԫ + gObjComponentMgr->SelAllObj(); +} +//ȫѡ +void CLayer::NotSelAllObj() +{ + m_ObjContainer->NotSelAllObj(); + + //Ԫ + gObjComponentMgr->NotSelAllObj(); + + gEasyOperationMgr->Refresh(); +} +//ѡ +void CLayer::RevSelAllObj() +{ + m_ObjContainer->RevSelAllObj(); + gEasyOperationMgr->Refresh(); + + //Ԫ + gObjComponentMgr->RevSelAllObj(); +} +//ɾеobj +void CLayer::DelAllObj() +{ + SelAllObj(); + DelSelObj(); +} +//жϵǰ깤ߵ +MOUSE_TOOL CLayer::JudgeMouseToolType(Dbxy pt) +{ + MOUSE_TOOL type = _TOOL_POINT; + DbRect rect = gDraw->GetCurPointRect(pt); + if(HasSelNodeInRect(rect)) + { + type = _TOOL_MOVE_NODE; + } + else if(HasSelObjectInRect(rect)) + { + type = _TOOL_MOVE; + } + return type; +} +DbRect CLayer::GetSelObjRect() +{ + return m_ObjContainer->GetSelObjRect(); +} +//(Բ) +CMFCPropertyGridProperty *CLayer::CreatSpecialGridProperty(CModule *pModule) +{ + return m_ObjContainer->CreatSpecialGridProperty(pModule); +} +//ӦԵı仯 +void CLayer::OnSpecialPropertyChanged() +{ + m_ObjContainer->OnSpecialPropertyChanged(); +} +#endif + +#if 1 +//obj +void CLayer::OperateObj(SObjOperatePar &par,bool bAll) +{ + m_ObjContainer->OperateObj(par,bAll); +} +//ƶѡobj (bAddUndoΪǷ볷ָ) +void CLayer::OnMove(double MoveX,double MoveY,bool bAddUndo) +{ + if(HasObjSel()) + { + //ָ + CCommandMove *p = new CCommandMove; + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = MoveX; + par.MoveY = MoveY; + p->SetOperatePar(par); + //ӵ + if(bAddUndo) + gCommandMgr.AddUndoCommand(p); + //ִָ + p->Excute(); + } +} +//Ӧָת +void CLayer::OnRotato(double Angle) +{ + Dbxy pt = GetSelObjRect().GetCenterPt(); + //obj + SObjOperatePar par; + par.OpType = _OP_ROTATO; + par.BasePt = pt; + par.Angle = Angle; + //undo õָ-----start + CCommandRotato *p = new CCommandRotato; + p->SetOperatePar(par); + gCommandMgr.AddUndoCommand(p); + p->Excute(); + //undo õָ-----end +} +//Ӧ +void CLayer::OnMirror(X_OR_Y xy) +{ + Dbxy pt = GetSelObjRect().GetCenterPt(); + //obj + SObjOperatePar par; + par.OpType = _OP_MIRROR; + par.BasePt = pt; + par.xy = xy; + //undo õָ-----start + CCommandMirror *p = new CCommandMirror; + p->SetOperatePar(par); + gCommandMgr.AddUndoCommand(p); + p->Excute(); +} +//תڵ˳ +void CLayer::OnReverseSelObj() +{ + //obj + SObjOperatePar par; + par.OpType = _OP_REVERSE; + //undo õָ-----start + CCommandReverse *p = new CCommandReverse; + p->SetOperatePar(par); + gCommandMgr.AddUndoCommand(p); + p->Excute(); +} +//ϲѡͼ +bool CLayer::OnJoin() +{ + CObjBase *p = m_ObjContainer->JoinSelObj(); + if(p)//ϲɹ + { + //ָ----------------------------- + CCommandJion *pCmd = new CCommandJion; + gCommandMgr.AddUndoCommand(pCmd); + Sptr pObj(p); + pCmd->AddOpObj(pObj); + pObj->SetSelected(true);//ϲĬΪѡ״̬ + //ɾϲobj + DelSelObj(); + //Ӻϲobj + AddObject(pObj); + return true; + } + return false; +} +//ֽѡͼ +void CLayer::OnExplode() +{ + +} +#endif +#if 1//׽ +void CLayer::AddTmpObject(Sptr p) +{ + m_TmpObjContainer.AddObject(p); +} +void CLayer::ClearTmpObj() +{ + m_TmpObjContainer.Clear(); +} +//ȡrect Χڵ߶α浽DataPtLineVec +void CLayer::GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bCatchTemp) +{ + m_ObjContainer->GetLineInRect(rect,DataPtLineVec,bCatchTemp); + //ʱ + if(bCatchTemp) + { + vector> &vec = m_TmpObjContainer.GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((iter+1)!=vec.end())//Ҫһʱ + { + (*iter)->GetLineInRect(rect,DataPtLineVec); + } + } + } +} +//жһrect Ƿoffset +bool CLayer::IsOffsetRect(DbRect rect) +{ + if(rect.Width()>10 || rect.Height()>10) + { + return true; + } + return false; +} + +//ȡline ཻн㵽PointVec +void CLayer::GetIntersectPoint(DbLine &line,vector &PointVec) +{ + m_ObjContainer->GetIntersectPoint(line,PointVec); +} +bool CLayer::HasObjIntersectWithLine(DbLine &line) +{ + return m_ObjContainer->HasObjIntersectWithLine(line); +} + +//¡ǰѡobj Vec +void CLayer::CloneObj(CObjContainer &ObjContainer,bool bNeedSel) +{ + m_ObjContainer->CloneObj(ObjContainer,bNeedSel); +} +#endif +#if 1//group +//ѡgroup 󶨵ָĶԻ +void CLayer::BindingSelObjToDlg() +{ + //ȳа + GetFrame()->UnBindingDlg(); + m_ObjContainer->BindingDlg(); +} +//ͼ +void CLayer::FillObj(SFillPar FillPar,bool bNeedSel) +{ + m_ObjContainer->FillObj(FillPar,bNeedSel); +} +#endif +#if 1 +//ȡеĵ +void CLayer::GetAllPointObjPt(vector &PtVec) +{ + m_ObjContainer->GetAllPointObjPt(PtVec); +} +//obj ƫ +void CLayer::UpdateRectObjOffset() +{ + vector OffsetRectVec; + //ռƫ + vector> &vec = m_ObjContainer->GetObjVec(); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsbOffsetAreaRect()) + { + COffsetRect OffsetRect; + + OffsetRectVec.push_back(OffsetRect); + } + } +} + +#endif diff --git a/LaiPuLaser/Layer.h b/LaiPuLaser/Layer.h new file mode 100644 index 0000000..91a17f4 --- /dev/null +++ b/LaiPuLaser/Layer.h @@ -0,0 +1,76 @@ +#pragma once + +#include "SmartPtr.h" +#include "ObjBase.h" +#include "GlobalDefine.h" +#include "ObjContainer.h" + +//ƫ +class COffsetRect +{ +public: + DbRect m_Rect; + Dbxy m_Offset; +}; + +class CLayer +{ +public: + ~CLayer(void); + static CLayer &Instance();//ģʽ + + void Serialize(CArchive& ar); + void Draw(CDC* pDC); + void XorRedrawObj(CDC* pDC,bool bNeedSel = true); + void AddObject(CObjBase *pMarkObject); + void AddObject(Sptr p); + void AddObject(CObjContainer &ObjContainer); + void AddTmpObject(Sptr p); + void DelSelObj(); + void DelObj(Sptr p); + void DelObj(CObjContainer &ObjContainer); + + void ClearTmpObj(); + bool SelObjectInRect(DbRect rect,bool bNeedAllIn); + void SelAllObj(); + void DelAllObj(); + void NotSelAllObj(); + void RevSelAllObj(); + bool HasSelObjectInRect(DbRect rect); + bool HasObjSel(); + MOUSE_TOOL JudgeMouseToolType(Dbxy pt); + void OperateObj(SObjOperatePar &par,bool bAll); + DbRect GetSelObjRect(); + void OnRotato(double Angle); + void OnMirror(X_OR_Y xy); + void OnMove(double MoveX,double MoveY,bool bAddUndo = true); + void GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bCatchTemp); + void CloneObj(CObjContainer &ObjContainer,bool bNeedSel); + Sptr GetFirstObjInRect(DbRect &rect); + Sptr GetFirstNodeObjInRect(DbRect &rect); + bool HasObjectInRect(DbRect rect); + void GetIntersectPoint(DbLine &line,vector &PointVec); + bool HasObjIntersectWithLine(DbLine &line); + void OnReverseSelObj(); + bool OnJoin(); + void OnExplode(); + bool HasSelNodeInRect(DbRect rect); + void BindingSelObjToDlg(); + CObjContainer &GetObjContainer(){return *m_ObjContainer;}; + void FillObj(SFillPar FillPar,bool bNeedSel = true); + CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule); + void OnSpecialPropertyChanged(); + void BindObjContainer(CObjContainer &Container); + void GetAllPointObjPt(vector &PtVec); + bool IsOffsetRect(DbRect rect); + void UpdateRectObjOffset(); +private: + CLayer(void); + void DrawAllObj(CDC* pDC); +private: + static CLayer m_Instance;//ģʽ + + CObjContainer *m_ObjContainer;//obj + CObjContainer m_TmpObjContainer;//ʱobj (Ҫڴʱ׽) +}; + diff --git a/LaiPuLaser/LogMgr.cpp b/LaiPuLaser/LogMgr.cpp new file mode 100644 index 0000000..cfc2b94 --- /dev/null +++ b/LaiPuLaser/LogMgr.cpp @@ -0,0 +1,291 @@ +#include "StdAfx.h" +#include "LogMgr.h" +#include "MainFrm.h" +#include "FileMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "BitOperation.h" +#include "AuthorityMgr.h" + + +CLogMgr* gLogMgr = NULL;//־ + +CLogMgr::CLogMgr(void) +{ + m_bWriteDebugLog = true; + m_bDebug = false;//Ƿڵ + m_DebugCmdDelay = 100;//ָʱʱ + m_LogListMaxLine = 1000;//־б,ʱ + m_bWriteToLogList = true;//־б +} +CLogMgr::~CLogMgr(void) +{ +} +#if 1 +void CLogMgr::Ini() +{ + //pFrame + CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); + #ifdef __DLG_PANE_CMD__ + m_pOutputCmd = &pFrame->m_OutputCmd; + #endif + m_pOutputLog = &pFrame->m_OutputLog; + + { + CString FileName = "\\Debug.txt"; + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FileName); + m_DebugLogFile.open(filepath); + } + { + CString FileName = "\\Result.txt"; + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FileName); + m_ResultFile.open(filepath); + } +} +CMFCPropertyGridProperty *CLogMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("LogMgr");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("־"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("bWriteDebugLog");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bWriteDebugLog); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("־ļ"); + Description = _T("Ƿ־ļ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bWriteDebugLog, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bWriteToLogList");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bWriteToLogList); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("־б"); + Description = _T("Ƿ־б"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bWriteToLogList, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_LogListMaxLine");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LogListMaxLine); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("־б,ʱ־б"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LogListMaxLine, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bDebug");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDebug); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿ"); + Description = _T("Ƿڵ״̬"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDebug, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_DebugCmdDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_DebugCmdDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("ָʱʱ(ms)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_DebugCmdDelay, Description); + pGroup->AddSubItem(p1); + + gDevicePropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CLogMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CLogMgr]------------------------------------------------"<AddToList(strTime+strCmd+Log.str,m_LogListMaxLine); + #endif + } + else + { + m_pOutputLog->AddToList(strTime+Log.str,m_LogListMaxLine); + } + } + //дļ + if(m_bWriteDebugLog) + { + m_DebugLogFile<"; + } + if(val2 != STR_NULL) + { + val2 = "<"+val2+">"; + } + CLog log; + log.AddCmdLog(); + log.str = Cmd+val1+val2; + WriteLog(log); +} +#endif +#if 1//һЩдlog ʽ +void CLogMgr::WriteDebugLog(CString Str,LOG_TYPE type) +{ + if(gExitApp) + return; + if(m_bWriteDebugLog || m_bWriteToLogList) + { + CLog log; + log.AddDebugLog(); + switch(type) + { + case _LOG_ERROR: + Str = "[Error]"+Str; + break; + case _LOG_FUNC: + Str = "[Function]"+Str; + break; + default: + break; + } + CString str1 = Str; + log.str = str1; + WriteLog(log); + } +} +// +void CLogMgr::WriteDebugLog(CString Str,CString ValName1,CString ValName2,double val1,double val2) +{ + if(gExitApp) + return; + CString sVal1; + sVal1.Format("%lf",val1); + CString sVal2; + sVal2.Format("%lf",val2); + CString str = Str+"["+ValName1+"] = "+sVal1+" ["+ValName2+"] = "+sVal2; + WriteDebugLog(str); +} +//һ +void CLogMgr::WriteDebugLog(CString Str,CString ValName,double val) +{ + if(gExitApp) + return; + CString sVal1; + sVal1.Format("%lf",val); + CString str = Str+"["+ValName+"] = "+sVal1; + WriteDebugLog(str); +} + +void CLogMgr::WriteByte(BYTE bit) +{ + if(gExitApp) + return; + CString str; + for(int i=0;i<8;i++) + { + if(IsBitOn(bit,i)) + str += "1"; + else + str += "0"; + } + WriteDebugLog(str); +} +void CLogMgr::WriteDebugLogFile(CString str) +{ + if(gExitApp) + return; + if(m_bWriteDebugLog) + { + m_DebugLogFile< lstBasicCommands; + + lstBasicCommands.AddTail(ID_FILE_NEW); + lstBasicCommands.AddTail(ID_FILE_OPEN); + lstBasicCommands.AddTail(ID_FILE_SAVE); + lstBasicCommands.AddTail(ID_FILE_PRINT); + lstBasicCommands.AddTail(ID_APP_EXIT); + lstBasicCommands.AddTail(ID_EDIT_CUT); + lstBasicCommands.AddTail(ID_EDIT_PASTE); + lstBasicCommands.AddTail(ID_EDIT_UNDO); + lstBasicCommands.AddTail(ID_APP_ABOUT); + lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR); + lstBasicCommands.AddTail(ID_VIEW_TOOLBAR); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7); + + lstBasicCommands.AddTail(ID_EXPORT_DEVICE_PAR); + CMFCToolBar::SetBasicCommands(lstBasicCommands); + + // ĵӦóڴڱϵ˳н + // ĽĿԣΪʾĵͼ + //ModifyStyle(0, FWS_PREFIXTITLE); + + #if 0//óĬϵĹرհť + CMenu* pMenu=GetSystemMenu(false); + UINT nID=pMenu->GetMenuItemID(pMenu->GetMenuItemCount()-1); + pMenu->EnableMenuItem(nID,MF_DISABLED); + #endif + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + if( !CMDIFrameWndEx::PreCreateWindow(cs) ) + return FALSE; + // TODO: ڴ˴ͨ޸ + // CREATESTRUCT cs ޸Ĵʽ + return TRUE; +} +#if 1//ͣؼ +BOOL CMainFrame::CreateDockingWindows() +{ +#ifdef __DLG_PANE_CMD__ + //--------------------------------------------------------------- + if (!m_OutputCmd.Create(_T("cmd"), this, CRect(0, 0, 100, 100), TRUE, ID_OUTPUT_CMD, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴ\n"); + return FALSE; // δܴ + } +#endif + //־--------------------------------------------------------------- + if (!m_OutputLog.Create(_T("־"), this, CRect(0, 0, 100, 100), TRUE, ID_OUTPUT_LOG, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴ־\n"); + return FALSE; // δܴ + } + // ʾԴ------------------------------------------------------- + if (!m_PaneDrawPar.Create(_T(""), this, CRect(0, 0, 200, 200), TRUE, ID_PANE_DRAW_PROP, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴԡ\n"); + return FALSE; // δܴ + } + // 豸Դ------------------------------------------------------- + if (!m_PaneDevicePar.Create(_T("豸"), this, CRect(0, 0, 200, 200), TRUE, ID_PANE_DEVICE_PROP, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴԡ\n"); + return FALSE; // δܴ + } + #ifdef __DLG_PANE_STD_MARK_CTRL__ + //׼̿----------------------------------------------------- + m_StdMarkCtrlPane.SetDlg(&m_DlgStdMarkCtr); + if (!m_StdMarkCtrlPane.Create(_T("̿"), this, CRect(0, 0, 0, 0), TRUE, m_DlgStdMarkCtr.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴ̿/n"); + return FALSE; + } + m_StdMarkCtrlPane.EnableDocking(CBRS_ALIGN_ANY); + #endif + #ifdef __DLG_PANE_SIMULATE_TRACE__ + //ݹ켣ģ----------------------------------------------------- + m_SimulatetracePane.SetDlg(&m_DlgSimulatetrace); + if (!m_SimulatetracePane.Create(_T("켣ģ"), this, CRect(0, 0, 0, 0), TRUE, m_DlgSimulatetrace.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴ켣ģ/n"); + return FALSE; + } + m_SimulatetracePane.EnableDocking(CBRS_ALIGN_ANY); + #endif +#ifdef __DLG_PANE_WORK_TIME__ + //ʱ----------------------------------------------------- + m_WorkTimePane.SetDlg(&m_DlgWorkTime); + if (!m_WorkTimePane.Create(_T("ʱ"), this, CRect(0, 0, 0, 0), TRUE, m_DlgWorkTime.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴʱ/n"); + return FALSE; + } + m_WorkTimePane.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __DLG_PANE_MARK_PAR__ + //̲----------------------------------------------------- + m_MarkParPane.SetDlg(&m_CDlgMarkPar); + if (!m_MarkParPane.Create(_T("񾵲"), this, CRect(0, 0, 0, 0), TRUE, m_CDlgMarkPar.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴ񾵲/n"); + return FALSE; + } + m_MarkParPane.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __DLG_PANE_VAR_STRING__ + //ɱַ----------------------------------------------------- + m_PaneValString.SetDlg(&m_DlgVariableString); + if (!m_PaneValString.Create(_T("ַ"), this, CRect(0, 0, 100, 100), TRUE, m_DlgVariableString.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴɱַ/n"); + return FALSE; + } + m_PaneValString.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __DLG_PANE_PLATFORM__ + //ƽ̨----------------------------------------------------- + m_PanePlatformCtrl.SetDlg(&m_DlgPlatformCtrl); + if (!m_PanePlatformCtrl.Create(_T("ƽ̨"), this, CRect(0, 0, 100, 100), TRUE, m_DlgPlatformCtrl.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴƽ̨/n"); + return FALSE; + } + m_PanePlatformCtrl.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __LPS_IS3000__ + m_PaneHawkvisCamera.SetDlg(&m_DlgHawkvisCamera); + if (!m_PaneHawkvisCamera.Create(_T("CCD "), this, CRect(0, 0, 100, 100), TRUE, m_DlgHawkvisCamera.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴInfo/n"); + return FALSE; + } + m_PaneHawkvisCamera.EnableDocking(CBRS_ALIGN_ANY); + + m_PaneCutDeviceCtrl.SetDlg(&m_DlgCutDeviceCtrl); + if (!m_PaneCutDeviceCtrl.Create(_T("豸"), this, CRect(0, 0, 100, 100), TRUE, m_DlgCutDeviceCtrl.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴCtrl Btn/n"); + return FALSE; + } + m_PaneCutDeviceCtrl.EnableDocking(CBRS_ALIGN_ANY); + + m_PaneSW_XL_Flow.SetDlg(&m_DlgSW_XL_Flow); + if (!m_PaneSW_XL_Flow.Create(_T("̿"), this, CRect(0, 0, 100, 100), TRUE, m_DlgSW_XL_Flow.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴCtrl Btn/n"); + return FALSE; + } + m_PaneSW_XL_Flow.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __DLG_PANE_TEST__ + //Դ----------------------------------------------------- + m_PaneTest.SetDlg(&m_DlgTest); + if (!m_PaneTest.Create(_T("Դ"), this, CRect(0, 0, 100, 100), TRUE, m_DlgTest.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴԴ/n"); + return FALSE; + } + m_PaneTest.EnableDocking(CBRS_ALIGN_ANY); +#endif +#ifdef __DLG_PANE_OBJ_LIST__ + //б----------------------------------------------------- + m_ObjListPane.SetDlg(&m_DlgObjList); + if (!m_ObjListPane.Create(_T("б"), this, CRect(0, 0, 0, 0), TRUE, m_DlgObjList.GetIDD(), + WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) + { + TRACE0("δܴб/n"); + return FALSE; + } + m_ObjListPane.EnableDocking(CBRS_ALIGN_ANY); +#endif + return TRUE; +} +#endif + +BOOL CMainFrame::CreateCaptionBar() +{ +#ifdef __CAPTION_BAR__ + if (!m_wndCaptionBar.Create(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, this, ID_VIEW_CAPTION_BAR, -1, TRUE)) + { + TRACE0("δܴ\n"); + return FALSE; + } + ResetCaptionBar(); +#endif + return TRUE; +} + +// CMainFrame + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CMDIFrameWndEx::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CMDIFrameWndEx::Dump(dc); +} +#endif //_DEBUG + + +// CMainFrame Ϣ + +void CMainFrame::OnWindowManager() +{ + ShowWindowsDialog(); +} + +void CMainFrame::OnViewCustomize() +{ + CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* ɨ˵*/); + pDlgCust->EnableUserDefinedToolbars(); + pDlgCust->Create(); +} + +LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp) +{ + LRESULT lres = CMDIFrameWndEx::OnToolbarCreateNew(wp,lp); + if (lres == 0) + { + return 0; + } + + CMFCToolBar* pUserToolbar = (CMFCToolBar*)lres; + ASSERT_VALID(pUserToolbar); + + BOOL bNameValid; + CString strCustomize; + bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); + ASSERT(bNameValid); + + pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); + return lres; +} + +void CMainFrame::OnApplicationLook(UINT id) +{ + CWaitCursor wait; + + theApp.m_nAppLook = id; + + switch (theApp.m_nAppLook) + { + case ID_VIEW_APPLOOK_WIN_2000: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager)); + break; + + case ID_VIEW_APPLOOK_OFF_XP: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP)); + break; + + case ID_VIEW_APPLOOK_WIN_XP: + CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE; + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + break; + + case ID_VIEW_APPLOOK_OFF_2003: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + case ID_VIEW_APPLOOK_VS_2005: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + case ID_VIEW_APPLOOK_VS_2008: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2008)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + case ID_VIEW_APPLOOK_WINDOWS_7: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows7)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + default: + switch (theApp.m_nAppLook) + { + case ID_VIEW_APPLOOK_OFF_2007_BLUE: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue); + break; + + case ID_VIEW_APPLOOK_OFF_2007_BLACK: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack); + break; + + case ID_VIEW_APPLOOK_OFF_2007_SILVER: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); + break; + + case ID_VIEW_APPLOOK_OFF_2007_AQUA: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua); + break; + } + + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); + CDockingManager::SetDockingMode(DT_SMART); + } + + RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE); + + theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook); +} + +void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI) +{ + pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID); +} + +void CMainFrame::OnViewCaptionBar() +{ +#ifdef __CAPTION_BAR__ + m_wndCaptionBar.ShowWindow(m_wndCaptionBar.IsVisible() ? SW_HIDE : SW_SHOW); + RecalcLayout(FALSE); +#endif +} + +void CMainFrame::OnUpdateViewCaptionBar(CCmdUI* pCmdUI) +{ +#ifdef __CAPTION_BAR__ + pCmdUI->SetCheck(m_wndCaptionBar.IsVisible()); +#endif +} + +void CMainFrame::OnOptions() +{ +} + +BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) +{ + // ཫִĹ + + if (!CMDIFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) + { + return FALSE; + } + + + // ΪûԶ尴ť + BOOL bNameValid; + CString strCustomize; + bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); + ASSERT(bNameValid); + + for (int i = 0; i < iMaxUserToolbars; i ++) + { + CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i); + if (pUserToolbar != NULL) + { + pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); + } + } + return TRUE; +} + + +void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) +{ + CMDIFrameWndEx::OnSettingChange(uFlags, lpszSection); +} +#if 1 +//ʾλ +void CMainFrame::ShowMouseCoord(CPoint point) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + CString MouseX,MouseY; + MouseX.Format("%lf",pt.x); + MouseY.Format("%lf",pt.y); + CString str = "ǰ(λmm ):x = ["+MouseX+"]"+" y = ["+MouseY+"]"; + str += " "+m_StatusBarExtStr; + m_wndStatusBar.SetPaneText(0,(LPCTSTR)str,TRUE); +} +//ʾview ǰű +void CMainFrame::ShowViewScale(double s) +{ + CString Str; + Str.Format("%lf",s); + m_wndStatusBar.SetPaneText(0,(LPCTSTR)Str,TRUE); +} +void CMainFrame::SetCaptionCmdStr(CString str) +{ + m_CaptionCmdStr = str+STR_INPUT_SYMBOL; +} +void CMainFrame::SetCaptionInputStr(CString str) +{ + m_CaptionInputStr = str; +} +void CMainFrame::RefreashCaptionBar() +{ +#ifdef __CAPTION_BAR__ + CString Wstr = ": "+m_CaptionCmdStr + m_CaptionInputStr; + m_wndCaptionBar.SetText(Wstr, CMFCCaptionBar::ALIGN_LEFT); +#endif +} +void CMainFrame::ResetCaptionBar() +{ + m_CaptionCmdStr = ""; + m_CaptionInputStr = ""; + RefreashCaptionBar(); + ResetStatusBarExtStr(); +} +void CMainFrame::ResetStatusBarExtStr() +{ + m_StatusBarExtStr = ""; +} +void CMainFrame::SetStatusBarExtStr(CString str,CString val1,CString val2) +{ + if(val1 != STR_NULL || val2 != STR_NULL) + { + str += " : "; + } + if(val1 != STR_NULL) + { + val1 = "<"+val1+">"; + } + if(val2 != STR_NULL) + { + val2 = "<"+val2+">"; + } + m_StatusBarExtStr = str+val1+val2; +} +//Ի󶨵obj +void CMainFrame::UnBindingDlg() +{ +#ifdef __DLG_PANE_VAR_STRING__ + m_DlgVariableString.UnBindingObj(); +#endif +} +#endif +#if 1//˵ +//ļ +void CMainFrame::OnOpenFile() +{ + if(gAuthorityMgr->CheckAuthority(_USER,true)==false) + return; + + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnOpenFile(); + GetCurViewPtr()->RefreshView(); + gDrawPropertieMgr.SaveAllPropertie(); + gDevicePropertieMgr.SaveAllPropertie(); +} +//浱ǰ򿪵ĵ +void CMainFrame::OnSaveFile() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnSaveFile(); +} +//Ϊ +void CMainFrame::OnSaveFileAs() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnSaveFileAs(); +} +void CMainFrame::OnSaveFileAs2() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + gProgramCutMgr->SaveMarkFile2(); +} +#endif +#if 1 +//ϵͳ +void CMainFrame::OnExportDevicePar() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + TCHAR szFilters[]=(" ļ(*.txt)|*.txt"); + CFileDialog dlg(FALSE,("txt"),("DeviceParFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + ofstream File; + File.open(dlg.GetPathName()); + gModuleDeviceMgr.ExportDevicePar(&File); + gModuleDrawMgr.ExportDevicePar(&File); + File.close(); + } +} +//û +void CMainFrame::OnUserMgr() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; + CDlgUserMgr dlg; + dlg.DoModal(); +} +#endif +#if 1 +//ʼʱ +void CMainFrame::StartRecordTime() +{ +#ifdef __DLG_PANE_WORK_TIME__ + m_DlgWorkTime.StartRecordTime(); +#endif +} +void CMainFrame::StopRecordTime() +{ +#ifdef __DLG_PANE_WORK_TIME__ + m_DlgWorkTime.StopRecordTime(); +#endif +} +#endif + +#if 1 +void CMainFrame::OnDevicePar() +{ + if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) + return; +} +#endif diff --git a/LaiPuLaser/MainFrm.h b/LaiPuLaser/MainFrm.h new file mode 100644 index 0000000..67d7bab --- /dev/null +++ b/LaiPuLaser/MainFrm.h @@ -0,0 +1,152 @@ + +// MainFrm.h : CMainFrame Ľӿ +// + +#pragma once +#include "OutputWnd.h" +#include "Resource.h" +#include "PaneDialogTmp.h" +#include "DlgVariableString.h" +#include "DlgStdMarkCtr.h" +#include "DlgPlatformCtrl.h" +#include "PaneDevicePar.h" +#include "PaneDrawPar.h" +#include "DlgTest.h" +#include "DlgSimulateTrace.h" +#include "DlgMarkPar.h" +#include "DlgWorkTime.h" +#include "DlgObjList.h" +#include "DlgDnCutCamera.h" +#include "DlgCutDeviceCtrl.h" +#include "DlgSW_XL_Flow.h" + + + +class CMainFrame : public CMDIFrameWndEx +{ + DECLARE_DYNAMIC(CMainFrame) +public: + CMainFrame(); + +// +public: + +// +public: + void ShowMouseCoord(CPoint point); + void ShowViewScale(double s); + void ResetCaptionBar(); + void ResetStatusBarExtStr(); + void SetStatusBarExtStr(CString str,CString val1,CString val2); + void SetCaptionCmdStr(CString str); + void SetCaptionInputStr(CString str); + void RefreashCaptionBar(); + void UnBindingDlg(); + void StartRecordTime(); + void StopRecordTime(); +// д +public: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL); + +// ʵ +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +public: // ؼǶԱ + CMFCMenuBar m_wndMenuBar; + CMFCToolBar m_wndToolBar; + CMFCStatusBar m_wndStatusBar; + CMFCToolBarImages m_UserImages; +#ifdef __CAPTION_BAR__ + CMFCCaptionBar m_wndCaptionBar;// +#endif +//ͣڶ----------------------------------------- +#ifdef __DLG_PANE_CMD__ + COutputWnd m_OutputCmd;// +#endif + COutputWnd m_OutputLog;//־ + CPaneDrawPar m_PaneDrawPar;//Դ + CPaneDevicePar m_PaneDevicePar;//豸Դ +//ͣԻ--------------------------------------- +#ifdef __DLG_PANE_STD_MARK_CTRL__ + CDlgStdMarkCtr m_DlgStdMarkCtr;//׼̿ + CPaneDialogTmp m_StdMarkCtrlPane;//׼̿ +#endif +#ifdef __DLG_PANE_SIMULATE_TRACE__ + DlgSimulateTrace m_DlgSimulatetrace;//ݹ켣ģ + CPaneDialogTmp m_SimulatetracePane;//ݹ켣ģ +#endif +#ifdef __DLG_PANE_VAR_STRING__ + CDlgVariableString m_DlgVariableString;//ɱַ + CPaneDialogTmp m_PaneValString;//ɱַ +#endif +#ifdef __DLG_PANE_PLATFORM__ + DlgPlatformCtrl m_DlgPlatformCtrl;//ƽ̨ + CPaneDialogTmp m_PanePlatformCtrl;//ƽ̨ +#endif +#ifdef __DLG_PANE_TEST__ + CDlgTest m_DlgTest;//Դ + CPaneDialogTmp m_PaneTest;//Դ +#endif +#ifdef __DLG_PANE_MARK_PAR__ + CDlgMarkPar m_CDlgMarkPar;//̲ + CPaneDialogTmp m_MarkParPane;//̲ +#endif +#ifdef __DLG_PANE_WORK_TIME__ + CDlgWorkTime m_DlgWorkTime;//ʱ + CPaneDialogTmp m_WorkTimePane;//ʱ +#endif +#ifdef __DLG_PANE_OBJ_LIST__ + CDlgObjList m_DlgObjList;//б + CPaneDialogTmp m_ObjListPane;//б +#endif + + + DlgHawkvisCamera m_DlgHawkvisCamera; + CPaneDialogTmp m_PaneHawkvisCamera; + + DlgCutDeviceCtrl m_DlgCutDeviceCtrl; + CPaneDialogTmp m_PaneCutDeviceCtrl; + + + CDlgSW_XL_Flow m_DlgSW_XL_Flow; + CPaneDialogTmp m_PaneSW_XL_Flow; +//----------------------------------------------------- + +// ɵϢӳ亯 +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnWindowManager(); + afx_msg void OnViewCustomize(); + afx_msg LRESULT OnToolbarCreateNew(WPARAM wp, LPARAM lp); + afx_msg void OnApplicationLook(UINT id); + afx_msg void OnUpdateApplicationLook(CCmdUI* pCmdUI); + afx_msg void OnViewCaptionBar(); + afx_msg void OnUpdateViewCaptionBar(CCmdUI* pCmdUI); + afx_msg void OnOptions(); + afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection); + + DECLARE_MESSAGE_MAP() + + BOOL CreateDockingWindows(); + BOOL CreateCaptionBar(); +private: + CString m_CaptionCmdStr;//ַ + CString m_CaptionInputStr;//ַ + CString m_StatusBarExtStr;//״̬Ϣ +public: + afx_msg void OnOpenFile(); + afx_msg void OnExportDevicePar(); + afx_msg void OnUserMgr(); + afx_msg void OnSaveFileAs(); + afx_msg void OnSaveFileAs2(); + afx_msg void OnSaveFile(); + afx_msg void OnDevicePar(); +}; + + diff --git a/LaiPuLaser/MarkArea.cpp b/LaiPuLaser/MarkArea.cpp new file mode 100644 index 0000000..ba68e82 --- /dev/null +++ b/LaiPuLaser/MarkArea.cpp @@ -0,0 +1,382 @@ +#include "StdAfx.h" +#include "MarkArea.h" +#include "DrawSimpleShape.h" +#include "Layer.h" +#include "ProductMgr.h" +#include "Mirror.h" +#include "TemplateMgr.h" +#include "ObjComponentMgr.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "CommonFlowMgr.h" +#include "MarkAreaMgr.h" +#include "GlobalDrawMgr.h" + + +#define MIN_OBJ_CNT 5 //obj +#define DATA_VECTOR_SIZE 800 //ݵ,push_backʱvector Զ +#define DIGITAL_10000 10000 + +CMarkArea::CMarkArea() +{ + UpdateSize(); + m_bSel = false;//ѡ״̬ +} +CMarkArea::CMarkArea(Dbxy pt, DbSize size) +{ + m_RealBasePt = m_BasePt = pt;//׼ + m_Size = size;//ߴ +} +CMarkArea::~CMarkArea(void) +{ +} +#if 1 +void CMarkArea::Serialize(CArchive& ar) +{ + if (ar.IsStoring()) + { + ar << m_BasePt.x; + ar << m_BasePt.y; + ar << m_Size.w + DIGITAL_10000;//;ɰ + ar << m_Size.h; + ar << m_Offset.x; + ar << m_Offset.y; + + ar << m_Offset2.x; + ar << m_Offset2.y; + } + else + { + ar >> m_BasePt.x; + ar >> m_BasePt.y; + double val; + ar >> val; + bool bNewVersions = (val >= DIGITAL_10000); + if (bNewVersions) + val -= DIGITAL_10000; + m_Size.w = val; + + ar >> m_Size.h; + ar >> m_Offset.x; + ar >> m_Offset.y; + if (bNewVersions) + { + ar >> m_Offset2.x; + ar >> m_Offset2.y; + } + else + { + m_Offset2.x = m_Offset.x; + m_Offset2.y = m_Offset.y; + } + } +} +void CMarkArea::WriteWorkFile(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_NULL, m_BasePt.x)); + LabVec.push_back(CLab(LAB_NULL, m_BasePt.y)); + LabVec.push_back(CLab(LAB_NULL, m_Size.w)); + LabVec.push_back(CLab(LAB_NULL, m_Size.h)); + LabVec.push_back(CLab(LAB_NULL, m_Offset.x)); + LabVec.push_back(CLab(LAB_NULL, m_Offset.y)); +} +void CMarkArea::ReadWorkFile(CLabVecRang &LabVecRang) +{ + int idx = LabVecRang.GetStart(); + m_BasePt.x = LabVecRang.GetDouble(idx++); + m_BasePt.y = LabVecRang.GetDouble(idx++); + m_Size.w = LabVecRang.GetDouble(idx++); + m_Size.h = LabVecRang.GetDouble(idx++); + m_Offset.x = LabVecRang.GetDouble(idx++); + m_Offset.y = LabVecRang.GetDouble(idx++); +} +//³ߴΪ񾵷Χ +void CMarkArea::UpdateSize() +{ + m_Size = gMirror->GetRange(); +} +//ȡarea ۷Χ +DbRect CMarkArea::GetRect() +{ + DbRect rect(m_BasePt, m_Size); + return rect; +} +void CMarkArea::Draw(CDC* pDC, bool bSel) +{ + CPen pen; + if (bSel || m_bSel) + { + pen.CreatePen(PS_DOT, 1, RGB_RED); + } + else + { + pen.CreatePen(PS_DOT, 1, RGB_PINK); + } + + DbSize size = GetSize(); + DbRect rect; + rect.Creat(m_BasePt, size); + // + DrawRect(pDC, pen, rect, false); + //ѡ״̬ʱм + if (m_bSel) + { + Drawgridding(pDC, pen, rect, 1); + } + //ʾʵ + if (gMarkAreaMgr->IsbShowReadDate()) + { + vector> &DataVec = m_WorkData.GetDataVec(); + gDraw->DrawDbxyVec(pDC, DataVec, m_BasePt); + } +} + +bool CMarkArea::IsPtInArea(Dbxy pt) +{ + return IsPointInRect(pt, DbRect(m_BasePt, m_Size)); +} +void CMarkArea::SetBasePt(Dbxy pt) +{ + m_BasePt = pt; + SetRealBasePt(pt); +} +#endif +#if 1 +//ȡʵλ +Dbxy CMarkArea::GetRealBasePt() +{ + if (m_RealBasePt.Equal(Dbxy(0, 0))) + m_RealBasePt = m_BasePt; + + return m_RealBasePt; +} +//ʵĵ +void CMarkArea::CalRealBasePt(CProduct &Product) +{ + //markarea ʵλ + m_RealBasePt = Product.TheoryPtToRealPt(m_BasePt); +} +//Ѽlayer ڵobj +void CMarkArea::CollectLayerObj(CObjContainer &ObjContainer) +{ + //layer obj ֱӲ + CLayer &Layer = CLayer::Instance(); + CObjContainer &LayerObjContainer = Layer.GetObjContainer(); + vector> &ObjVec = LayerObjContainer.GetObjVec(); + //жÿobj Ҫĸmarkarea + DbRect Rect = GetRect(); + vector>::iterator iter = ObjVec.begin(); + vector>::iterator iter_end = ObjVec.end(); + for (; iter != iter_end; iter++) + { + if ((*iter)->IsInRect(Rect, false))//ֻҪһݵrect ڶ + { + ObjContainer.AddObject((*iter)); + } + } +} +//ѼԪ(ռobj ᱻ,ֹarea ظռ) +void CMarkArea::CollectComponentObj(vector> &vec, bool bNeedSel) +{ + //ռarea ڵ + gObjComponentMgr->CollectWorkData(GetRect(), vec, bNeedSel); +} +//ͨݷΧarea ĺͳߴ +void CMarkArea::AdjustByObj() +{ + //area ڵݷΧ + DbRect DataRect = gObjComponentMgr->SetMarkedStateRect(GetRect(), false); + DbSize size = DataRect.GetSize(); + if (size.w > 0 && size.h > 0) + { + m_BasePt = DataRect.GetCenterPt(); + m_Size = size; + } +} + + +//Դ +void CMarkArea::ClearSrcWorkData() +{ + m_SrcWorkData.Clear(); + m_DecWorkData.Clear(); + //㹻Ŀռ + m_SrcWorkData.Resize(DATA_VECTOR_SIZE); + m_DecWorkData.Resize(DATA_VECTOR_SIZE); +} +//ѼԴ +void CMarkArea::CollectSrcWorkData() +{ + CollectComponentObj(m_SrcWorkData.GetDataVec(), false); + m_DecWorkData = m_SrcWorkData;//һ +} +//Ƿй +bool CMarkArea::HasWorkData() +{ + if (m_bSelMarkMode) + return !m_WorkData.Empty(); + else//ȫӹʱʹ֮ǰ׼õݣٶ + return (!m_DecWorkData.Empty() && m_bNeedMark); +} +//ǷҪӹ +bool CMarkArea::CheckbNeedMark() +{ + m_bNeedMark = gObjComponentMgr->HasObjInRect(GetRect()); + return m_bNeedMark; +} +#endif +//Ѽarea Χڵobj (Product ǵǰҪӹĹ,Ҫƫת) +void CMarkArea::CollectOrgWorkData(bool bNeedSel) +{ + m_OrgCenter = m_BasePt; + m_WorkData.Clear(); + m_SpecialWorkData.Clear();//⵶ + vector> &WorkDataVec = m_WorkData.GetDataVec(); + vector> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec(); + //ѼԪ----------------------------------- + CollectComponentObj(WorkDataVec, bNeedSel); + //ռӵ + gCommonFlowMgr->SetbCollectSpecialObj(true); + CollectComponentObj(SpecialWorkDataVec, bNeedSel); + gCommonFlowMgr->SetbCollectSpecialObj(false); + + //ûռԭݲѼlayer obj + if (WorkDataVec.empty() && !gObjComponentMgr->HasObj()) + { + //ҵarea ڵobj + CObjContainer ObjContainer; + CollectLayerObj(ObjContainer); + //ȡobj ݵ(ֵ) Щlayer ĵ + ObjContainer.GetObjPtData(WorkDataVec, bNeedSel); + } +} +void CMarkArea::CollectWorkData(bool bNeedSel, CProduct &Product) +{ + gLogMgr->WriteDebugLog("func : CMarkArea---->CollectWorkData"); + + m_bSelMarkMode = bNeedSel;//ǷΪѡӹģʽ + + //Ҫƶarea + //m_RealBasePt = m_BasePt; + auto AreaCenter = m_RealBasePt; // + //layer ĵתΪarea ʵĵ + //ݵƫƵ(ÿarea ĵ+ Եĵ) + /*Dbxy Offset; + { + Offset.x = -m_RealBasePt.x; + Offset.y = -m_RealBasePt.y; + }*/ + Dbxy CutOffsetAdjust; //иƫƵ + { + + CutOffsetAdjust= gCommonFlowMgr->GetAdjustOffsetAll(); +/* + Dbxy AllOffset = gCommonFlowMgr->GetAdjustOffset(); + Dbxy AllOffset2 = gCommonFlowMgr->GetAdjustOffsetAll(); + Dbxy AreaOffset; + //ÿֱòͬƫֵ + if(gProgram_SZ_XL->GetCurMarkingTrack()==_ETrackType_Track_1) + AreaOffset = m_Offset; + else + AreaOffset = m_Offset2; + CutOffsetAdjust.x = AreaOffset.x + AllOffset.x + AllOffset2.x;//-m_RealBasePt.x; + CutOffsetAdjust.y = AreaOffset.y + AllOffset.y + AllOffset2.y;// -m_RealBasePt.y; +*/ + } + + if (1) + { + vector> &WorkDataVec = m_WorkData.GetDataVec(); + vector> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec(); + /*m_WorkData.Clear(); + m_SpecialWorkData.Clear();//⵶ + vector> &WorkDataVec = m_WorkData.GetDataVec(); + vector> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec(); + //ѼԪ----------------------------------- + CollectComponentObj(WorkDataVec, bNeedSel); + //ռӵ + gCommonFlowMgr->SetbCollectSpecialObj(true); + CollectComponentObj(SpecialWorkDataVec, bNeedSel); + gCommonFlowMgr->SetbCollectSpecialObj(false); + + //ûռԭݲѼlayer obj + if (WorkDataVec.empty() && !gObjComponentMgr->HasObj()) + { + //ҵarea ڵobj + CObjContainer ObjContainer; + CollectLayerObj(ObjContainer); + //ȡobj ݵ(ֵ) Щlayer ĵ + ObjContainer.GetObjPtData(WorkDataVec, bNeedSel); + }*/ + + bool HasData = false;//жû + { + vector>::iterator iter = WorkDataVec.begin(); + vector>::iterator iter_end = WorkDataVec.end(); + for (; iter != iter_end; iter++) + { + if (!(*iter).empty()) + { + HasData = true; + break; + } + } + } + if (!HasData) + { + WorkDataVec.clear(); + SpecialWorkDataVec.clear(); + return; + } + Product.TheoryDataToRealData(WorkDataVec, m_OrgCenter, CutOffsetAdjust); + Product.TheoryDataToRealData(SpecialWorkDataVec, m_OrgCenter, CutOffsetAdjust); + return; + //ץȡmark + if (gCommonFlowMgr->IsbStretchDataToRealSize()) + { + Product.StretchDataToRealSize(WorkDataVec); + Product.StretchDataToRealSize(SpecialWorkDataVec); + } + //תƫƼݵʵֵ(layer ) + Product.TheoryDataToRealData0(WorkDataVec, AreaCenter,CutOffsetAdjust); + Product.TheoryDataToRealData0(SpecialWorkDataVec, AreaCenter, CutOffsetAdjust); + } + else//ȫӹʱʹ֮ǰ׼õ + { + //ǷҪӹ + if (CheckbNeedMark()) + { + Product.TheoryDataToRealData(m_SrcWorkData.GetDataVec(), m_DecWorkData.GetDataVec(), CutOffsetAdjust); + } + } +} +bool CMarkArea::DrawObjComponentVec(vector> &vec, CDC* pDC, bool bSel) +{ + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for (; iter != iter_end; iter++) + { + (*iter)->Draw(pDC); + if (IsShiftKeyDown()) + return false; + } + return true; +} +//ȡӹ +vector> &CMarkArea::GetDataVec() +{ + if (m_bSelMarkMode) + return m_WorkData.GetDataVec(); + else//ȫӹʱʹ֮ǰ׼õݣٶ + return m_DecWorkData.GetDataVec(); +} +//ȡ +vector> &CMarkArea::GetSpecialDataVec() +{ + return m_SpecialWorkData.GetDataVec(); +} +bool CMarkArea::HasSpecialWorkData() +{ + return !m_SpecialWorkData.Empty(); +} + diff --git a/LaiPuLaser/MarkArea.h b/LaiPuLaser/MarkArea.h new file mode 100644 index 0000000..015e3f5 --- /dev/null +++ b/LaiPuLaser/MarkArea.h @@ -0,0 +1,74 @@ +#pragma once +#include "GlobalDefine.h" +#include "ObjContainer.h" +#include "WorkData.h" +#include "SmartPtr.h" +#include "ObjComponent.h" + +class CProduct; + +// +class CMarkArea +{ + friend class CDlgMarkArea; +public: + CMarkArea(); + CMarkArea(Dbxy pt,DbSize size); + ~CMarkArea(void); + void Serialize(CArchive& ar); + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void Draw(CDC* pDC,bool bSel); + DbRect GetRect(); + Dbxy GetBasePt(){return m_BasePt;}; + void SetBasePt(Dbxy pt); + DbSize GetSize(){return m_Size;}; + + void CollectOrgWorkData(bool bNeedSel); + + void CollectWorkData(bool bNeedSel,CProduct &Product); + bool HasWorkData(); + bool HasSpecialWorkData(); + vector> &GetDataVec(); + vector> &GetSpecialDataVec(); + void SetSelState(bool b){m_bSel = b;}; + bool IsSelected(){return m_bSel;}; + bool IsPtInArea(Dbxy pt); + void UpdateSize(); + void AdjustByObj(); + Dbxy GetRealBasePt();//ȡʵλ + void SetRealBasePt(Dbxy pt){m_RealBasePt = pt;}; + void CalRealBasePt(CProduct &Product); + Dbxy GetOffset(){return m_Offset;}; + Dbxy GetOffset2(){return m_Offset2;}; + void CollectSrcWorkData();//ѼԴ + void ClearSrcWorkData();//Դ +private: + void CollectLayerObj(CObjContainer &ObjContainer); + void CollectComponentObj(vector> &vec,bool bNeedSel); + bool DrawObjComponentVec(vector> &vec,CDC* pDC,bool bSel); + void CollectObjExt(Sptr &pObj,DbRect &rect); + void ResetObjCollectState(); + bool CheckbNeedMark(); +private: + bool m_bSel;//ѡ״̬ + Dbxy m_BasePt;//Ļ׼(ĵ) + Dbxy m_RealBasePt;//Ļ׼(ʵĵ)CCD ץȡ + Dbxy m_OrgCenter;//ĵ,ƶǰλ + DbSize m_Size;//ijߴ + Dbxy m_Offset;//ǿƫ,е(1) + Dbxy m_Offset2;//ǿƫ,е(2) + + CWorkData m_WorkData;// + CWorkData m_SpecialWorkData;//⹤ + + CWorkData m_SrcWorkData;//Դ + CWorkData m_DecWorkData;//ʵʼӹ + bool m_bSelMarkMode;//ǷΪѡӹģʽ + bool m_bNeedMark;//ǷҪӹ +}; + + + + + diff --git a/LaiPuLaser/MarkAreaCenter.txt b/LaiPuLaser/MarkAreaCenter.txt new file mode 100644 index 0000000..f9c3f19 --- /dev/null +++ b/LaiPuLaser/MarkAreaCenter.txt @@ -0,0 +1,13 @@ +MarkAreaCenter: X=253.270527;Y=-29.515037 +MarkAreaCenter: X=253.270527;Y=-29.515037 +MarkAreaCenter: X=253.270527;Y=-65.795003 +MarkAreaCenter: X=253.270527;Y=-102.074968 +MarkAreaCenter: X=208.265179;Y=-102.074968 +MarkAreaCenter: X=208.265179;Y=-65.795003 +MarkAreaCenter: X=208.265179;Y=-29.515037 +MarkAreaCenter: X=163.259830;Y=-29.515037 +MarkAreaCenter: X=163.259830;Y=-65.795003 +MarkAreaCenter: X=163.259830;Y=-102.074968 +MarkAreaCenter: X=118.254482;Y=-102.074968 +MarkAreaCenter: X=118.254482;Y=-65.795003 +MarkAreaCenter: X=118.254482;Y=-29.515037 diff --git a/LaiPuLaser/MarkAreaMgr.cpp b/LaiPuLaser/MarkAreaMgr.cpp new file mode 100644 index 0000000..10c8504 --- /dev/null +++ b/LaiPuLaser/MarkAreaMgr.cpp @@ -0,0 +1,652 @@ +#include "StdAfx.h" +#include "MarkAreaMgr.h" +#include "CStringFuc.h" +#include "GlobalDrawMgr.h" +#include "FileMgr.h" +#include "LogMgr.h" +#include "ObjComponentMgr.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "GlobalFunction.h" +#include "Layer.h" +#include "ObjPline.h" +#include "MsgBox.h" +#include "Mirror.h" + +#define FILE_PATH _T("\\Parameter\\MarkArea\\MarkArea.par") +#define FIXED_FILE_PATH _T("\\Parameter\\MarkArea\\FixedMarkArea.par")//̶(ֻܶ) + + +CMarkAreaMgr *gMarkAreaMgr = new CMarkAreaMgr; +CMarkAreaMgr::CMarkAreaMgr(void) +{ + m_CurSelIdx = -1;//ǰѡ ֵ + m_bDraw = true;//ǷƲ + m_bDrawIdx = false;//Ƿʾarea ֵ + m_bShowReadDate = false;//ʾʵ + m_CenterCrossR = 2;//ʮֵİ뾶mm +} +CMarkAreaMgr::~CMarkAreaMgr(void) +{ +} +void CMarkAreaMgr::Ini() +{ + SaveOrLoad(false);//ȡļ +} + +void CMarkAreaMgr::Draw(CDC* pDC) +{ + if(!m_bDraw) + return; + int size = m_AreaVec.size(); + for(int i=0;iDrawTxt(pDC,str,m_AreaVec[i].GetBasePt()); + } + } +} +//ͨѡarea ,һֻѡһ +void CMarkAreaMgr::SelAreaByPt(Dbxy pt) +{ + int size = m_AreaVec.size(); + for(int i=0;iWriteDebugLog("ļȡʧ", _LOG_ERROR); + } + } +} +void CMarkAreaMgr::SaveOrLoadExt(CArchive &ar) +{ + int size = 0; + if(ar.IsStoring()) + { + size = m_AreaVec.size();//area + ar<>size; + for(int i=0;i &LabVec) +{ + int size = m_AreaVec.size(); + for(int i=0;i LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_MARK_AREA_START,LAB_MARK_AREA_END); + + //ÿ + if(!LabVecRangVec.empty()) + { + m_AreaVec.clear(); + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(;iter!=iter_end;iter++) + { + CMarkArea MarkArea; + MarkArea.ReadWorkFile(*iter); + m_AreaVec.push_back(MarkArea); + } + } +} +#endif + +#if 1//༭area õĺ +void CMarkAreaMgr::Add() +{ + if(m_AreaVec.empty())//½ + { + CMarkArea Area; + m_AreaVec.push_back(Area); + } + else//ѡе + { + if(IdxValid(m_CurSelIdx)) + { + CMarkArea Area(m_AreaVec[m_CurSelIdx]); + m_AreaVec.push_back(Area); + } + } +} +void CMarkAreaMgr::InsertList(CListCtrl &List) +{ + int size = m_AreaVec.size(); + for(int i=0;i= size) + return false; + return true; +} +void CMarkAreaMgr::DelSel(int &idx) +{ + if(!IdxValid(idx)) + return; + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx) + { + m_AreaVec.erase(iter); + idx = -1; + break; + } + i++; + } +} +void CMarkAreaMgr::DelAll() +{ + m_AreaVec.clear(); + m_CurSelIdx = -1;//ǰѡ ֵ +} +//idx +void CMarkAreaMgr::OpArea(int idx,CMarkArea &Area,bool bRead) +{ + if(!IdxValid(idx)) + return; + ResetAllAreaSelState(); + + int size = m_AreaVec.size(); + for(int i=0;iWriteDebugLog(s); +} + +#endif +#if 1 +void CMarkAreaMgr::CollectOrgWorkData(bool bNeedSel) +{ + gLogMgr->WriteDebugLog("func : CMarkAreaMgr---->CollectWorkData"); + //Ԫռ״̬ + gObjComponentMgr->ResetObjCollectState(false); + + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for (;iter != iter_end;iter++) + { + (*iter).CollectOrgWorkData(bNeedSel); + } +} +//ռӹ +void CMarkAreaMgr::CollectWorkData(bool bNeedSel,CProduct &Product) +{ + gLogMgr->WriteDebugLog("func : CMarkAreaMgr---->CollectWorkData"); + //Ԫռ״̬ + gObjComponentMgr->ResetObjCollectState(false); + + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).CollectWorkData(bNeedSel,Product); + } +} + +//Ƿмӹ +bool CMarkAreaMgr::HasWorkData() +{ + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).HasWorkData())//ֻҪһarea ݼ + { + return true; + } + } + gLogMgr->WriteDebugLog("ûмӹ",_LOG_ERROR); + return false; +} +//obj ѼǷһ +bool CMarkAreaMgr::CheckAllObjDataConsistency() +{ + if(m_AreaVec.empty()) + return false; + + vector BaseDataVec;// + //һ + { + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).HasWorkData()) + { + vector> &DataVec = (*iter).GetDataVec(); + BaseDataVec = DataVec[0]; + break; + } + } + } + int BaseSize = BaseDataVec.size();//ݵĵ + //ݺͻݱȽ + if(BaseDataVec.empty()) + return false; + + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).HasWorkData()) + { + vector> &DataVec = (*iter).GetDataVec(); + vector>::iterator iter1 = DataVec.begin(); + vector>::iterator iter1_end = DataVec.end(); + for(;iter1!=iter1_end;iter1++) + { + vector &ObjDataVec = (*iter1); + int size = ObjDataVec.size(); + if(BaseSize != size)//ݵһ + return false; + + Dbxy BaseOffset;//ƫֵ + for(int k=0;kWriteDebugLog("func : CMarkAreaMgr---->CollectSrcWorkData"); + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).CollectSrcWorkData(); + } +} +//Դ +void CMarkAreaMgr::ClearSrcWorkData() +{ + gLogMgr->WriteDebugLog("func : CMarkAreaMgr---->ClearSrcWorkData"); + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).ClearSrcWorkData(); + } +} +#endif +//obj д +void CMarkAreaMgr::ArrayCreat(int CntX,int CntY) +{ + if(CntX<=0 || CntY<=0) + { + CMsgBox MsgBox; + MsgBox.Show("!"); + return; + } + if(!gObjComponentMgr->HasObj()) + { + CMsgBox MsgBox; + MsgBox.Show("ûͼζ!"); + return; + } + + DbRect Rect = gObjComponentMgr->GetAllObjRect(); + DbSize Size = Rect.GetSize(); + Size.w += 2;//һ + Size.h += 2; + DbSize Offset; + Offset.w = Size.w/CntX; + Offset.h = Size.h/CntY; + + //ܴ񾵷Χ + DbSize MirrorSize = gMirror->GetRange(); + if(Offset.w>MirrorSize.w || Offset.h>MirrorSize.h) + { + CMsgBox MsgBox; + CString s; + s.Format(_T("ӹ򳬳񾵷Χ[%0.0f][%0.0f]"),MirrorSize.w,MirrorSize.h); + MsgBox.Show(s); + return; + } + + + DelAll();//ɾǰarea + + CMarkArea Area(Dbxy(0,0),Offset); + + Offset.h *=(-1); + + bool flg = true; + for(int i=0;i::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetSelState(false); + } +} +int CMarkAreaMgr::GetCurSelIdx() +{ + int size = m_AreaVec.size(); + if(m_CurSelIdx::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).UpdateSize(); + } +} +void CMarkAreaMgr::ReReadFixMarkArea() +{ + //¶ȡmarkaera + DelAll(); + SaveOrLoad(false,true);//ӹ̶ļ +} +//ͨobj markarea ĵͷΧ +void CMarkAreaMgr::AdjustByObj() +{ + gLogMgr->WriteDebugLog("func : Adjust MarkArea By Obj"); + ReReadFixMarkArea(); + + double MaxSize = 0; + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).AdjustByObj(); + DbSize size = (*iter).GetSize(); + if(size.w>MaxSize) + MaxSize = size.w; + if(size.h>MaxSize) + MaxSize = size.h; + } + + CString LogStr; + LogStr.Format(_T("[MaxAreaSize] = [%.3f]"),MaxSize); + gLogMgr->WriteDebugLog(LogStr); +} +//markarea ʵλ +void CMarkAreaMgr::CalRealBasePt(CProduct &Product) +{ + gLogMgr->WriteDebugLog("func : CMarkAreaMgr---->CalRealBasePt"); + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).CalRealBasePt(Product); + } +} +//ÿmark Ĵһʮֶ +void CMarkAreaMgr::CreatCenterCrossObj() +{ + CLayer &layer = GetLayerInstance(); + //ɾobj + layer.DelAllObj(); + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt = (*iter).GetBasePt(); + //߶ζ + CObjPline *pObjPline = new CObjPline; + { + Dbxy pt1(pt.x-m_CenterCrossR,pt.y); + CDataPoint DataPoint(pt1); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + { + Dbxy pt1(pt.x+m_CenterCrossR,pt.y); + CDataPoint DataPoint(pt1); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + { + Dbxy pt1(pt.x,pt.y+m_CenterCrossR); + CDataPoint DataPoint(pt1); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + { + Dbxy pt1(pt.x,pt.y-m_CenterCrossR); + CDataPoint DataPoint(pt1); + DataPoint.SetIsNode(true); + pObjPline->AddDataPoint(DataPoint); + } + layer.AddObject(pObjPline); + } +} +//ȡarea ĵ +Dbxy CMarkAreaMgr::GetAllAreaCenterPt() +{ + DbRect rect; + vector::iterator iter = m_AreaVec.begin(); + vector::iterator iter_end = m_AreaVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt = (*iter).GetBasePt(); + AdjustRectByPoint(rect,pt); + } + return rect.GetCenterPt(); +} + diff --git a/LaiPuLaser/MarkAreaMgr.h b/LaiPuLaser/MarkAreaMgr.h new file mode 100644 index 0000000..9abc2e9 --- /dev/null +++ b/LaiPuLaser/MarkAreaMgr.h @@ -0,0 +1,67 @@ +#pragma once +#include "MarkArea.h" +#include "Module.h" +#include "EnumDirection.h" +// +class CMarkAreaMgr :public CModule +{ +public: + CMarkAreaMgr(void); + ~CMarkAreaMgr(void); + virtual void Ini(); + virtual void Draw(CDC* pDC);//pDC һЩ + virtual MODULE GetModuleType(){return _MARK_AREA_PROP;}; + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + void Add(); + void AddArea(CMarkArea &Area){m_AreaVec.push_back(Area);}; + void InsertList(CListCtrl &List); + void DelSel(int &idx); + void DelAll(); + void OpArea(int idx,CMarkArea &Area,bool bRead); + void Order(int &idx,bool bMoveUp); + void SetCurSelIdx(int idx){m_CurSelIdx = idx;}; + int GetCurSelIdx(); + bool GetbDraw(){return m_bDraw;}; + void SetbDraw(bool b){m_bDraw = b;}; + void SaveOrLoad(bool bSave,bool bFixed = false); + void SaveOrLoadExt(CArchive &ar); + bool Empty(){return m_AreaVec.empty();}; + bool HasWorkData(); + vector &GetAreaVec(){return m_AreaVec;} + void ArrayCreat(int CntX,int CntY); + void ResetAllAreaSelState(); + void MoveAllArea(double Val,DIRECTION dir); + void SelAreaByPt(Dbxy pt); + void SetAllMarkSize(); + void CollectOrgWorkData(bool bNeedSel); + void CollectWorkData(bool bNeedSel,CProduct &Product); + void SelFristArea(); + void SetbDrawIdx(bool b){m_bDrawIdx = b;}; + void AdjustByObj(); + void CalRealBasePt(CProduct &Product); + void ReReadFixMarkArea(); + void SetbShowReadDate(){m_bShowReadDate = !m_bShowReadDate;}; + bool IsbShowReadDate(){return m_bShowReadDate;}; + bool CheckAllObjDataConsistency(); + void CreatCenterCrossObj(); + + void CollectSrcWorkData();//ѼԴ + void ClearSrcWorkData();//Դ + + void MoveAllAreaToTargetPt(Dbxy Offset); + Dbxy GetAllAreaCenterPt(); +private: + bool IdxValid(int idx); + void SwapArea(int &idx1,int idx2); +private: + vector m_AreaVec; + int m_CurSelIdx;//ǰѡarea ֵ + bool m_bDraw;//Ƿ + bool m_bDrawIdx;//Ƿʾarea ֵ + bool m_bShowReadDate;//ʾʵ + double m_CenterCrossR;//ʮֵİ뾶mm +}; + +extern CMarkAreaMgr *gMarkAreaMgr; \ No newline at end of file diff --git a/LaiPuLaser/MarkCtrl.cpp b/LaiPuLaser/MarkCtrl.cpp new file mode 100644 index 0000000..919a8cd --- /dev/null +++ b/LaiPuLaser/MarkCtrl.cpp @@ -0,0 +1,115 @@ +#include "StdAfx.h" +#include "MarkCtrl.h" +#include "LaipuVbDllMgr.h" +#include "WorkDataMgr.h" +#include "LogMgr.h" +#include "MarkParMgr.h" +#include "GlobalFunction.h" +#include "Mirror.h" +#include "ProductMgr.h" +#include "PciCh365Mgr.h" +#include "WorkCmdContainer.h" +#include "WorkCmdMarkArea.h" +#include "WorkCmdInvoker.h" +#include "MarkArea.h" +#include "WorkTime.h" +#include "ExceptionMsg.h" +#include "CommonFlowMgr.h" + + + +CMarkCtrl::CMarkCtrl(void) +{ +} +CMarkCtrl::~CMarkCtrl(void) +{ +} +#if 1 +#include "ClientMgr.h" +void CMarkCtrl::StartMarkPci(vector> &DateVec,vector> &SpecialDateVec,int AreaCycleCnt) +{ + gLogMgr->WriteDebugLog("StartMarkPci",_LOG_FUNC); + if(gPciCh365Mgr->IsInitialize()==false) + { + CString LogStr("Func : StartMarkPci ---->Pci Card Not Init"); + CExceptionMsg Msg; + Msg.SetMsg(LogStr); + throw Msg; + } + //CLaipuVbDllMgr &LaipuVbDll = *gLaipuVbDllMgr; + long low = gPciCh365Mgr->GetOutPortState(true); + long high = gPciCh365Mgr->GetOutPortState(false); + + long fileno = -1; + long fileAll = 1; + long MarkM = 8;//ģʽ(ģ壬λ) + long m_sel = 1;//ļѡʽ + long head = 0; + + CLaipuVbDllMgr LaipuVbDll; + + try + { + LaipuVbDll.VbIniCard(low, high);//ʼ + SetMarkParam(LaipuVbDll);//ò + LaipuVbDll.MarkingStart();//׼ + for (int i = 0; i < AreaCycleCnt; i++) + { + LaipuVbDll.CallMarkingData(DateVec);//ӹ + } + if (!SpecialDateVec.empty())//ֻӹһ + { + LaipuVbDll.CallMarkingData(SpecialDateVec);//ӹ + } + //--------------------------------------------------------------------- + //ģżλƫ + LaipuVbDll.CallMarkingEnd(fileno, fileAll, MarkM, m_sel, head, NULL);// + } + catch (_com_error e) + { + LaipuVbDll.CallMarkingEnd(fileno, fileAll, MarkM, m_sel, head, NULL);// + CString str = (LPCTSTR)e.Description(); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + catch (...) + { + LaipuVbDll.CallMarkingEnd(fileno, fileAll, MarkM, m_sel, head, NULL);// + CString str = "ʱ,δ֪!"; + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } +} + + +//ñ̲ +void CMarkCtrl::SetMarkParam(CLaipuVbDllMgr &LaipuVbDll) +{ + gMarkParMgr->SetCurPenNum(0);//ֻʹ0 űʵIJ + CMarkPar &MarkPar = gMarkParMgr->GetCurPen(); + //񾵲-------------------------------------------------------------- + //float ms = MarkPar.ms;//ٶmm/s + float ms = (float)gCommonFlowMgr->GetCutSpeed(); + float mms = MarkPar.mms;//ٶmm/s + long tcf = MarkPar.tcf;//ؼǰʱus + long tch = MarkPar.tch;//ؼʱus + long tof = MarkPar.tof;//ǰʱus + long toh = MarkPar.toh;//ʱus + long dr_time = MarkPar.dr_time;//յʱ us + double su = gMirror->GetMirrorStep();//񾵲um + float laserfre = MarkPar.laserfre;//Ƶ + float laserpower = MarkPar.laserpower;//⹦ + float maxlaserpower = MarkPar.maxlaserpower;// + + CString LogStr; + LogStr.Format(_T("Fuc:SetMarkParam : [CutSpeed] = [%f] "),ms); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("Fuc:SetMarkParam : [laserfre] = [%f] ,[laserpower] = [%f] ,[maxlaserpower] = [%f]"),laserfre,laserpower,maxlaserpower); + gLogMgr->WriteDebugLog(LogStr); + + LaipuVbDll.GetCom()->Marking_para(&ms,&mms,&tcf,&tch,&tof,&toh,&su,&laserpower,&laserfre,&maxlaserpower,&dr_time); +} +#endif + diff --git a/LaiPuLaser/MarkCtrl.h b/LaiPuLaser/MarkCtrl.h new file mode 100644 index 0000000..ab9286b --- /dev/null +++ b/LaiPuLaser/MarkCtrl.h @@ -0,0 +1,15 @@ +#pragma once +#include "Module.h" + +class CLaipuVbDllMgr; +//ͨ +class CMarkCtrl +{ +public: + CMarkCtrl(void); + ~CMarkCtrl(void); + void StartMarkPci(vector> &DateVec,vector> &SpecialDateVec,int AreaCycleCnt); +private: + void SetMarkParam(CLaipuVbDllMgr &LaipuVbDll); +private: +}; \ No newline at end of file diff --git a/LaiPuLaser/MarkData.txt b/LaiPuLaser/MarkData.txt new file mode 100644 index 0000000..c5289f5 --- /dev/null +++ b/LaiPuLaser/MarkData.txt @@ -0,0 +1,4 @@ +TD: 52.170898,-0.494991 +RD: -7.237412,26.883149 +TD: 44.620880,-0.494991 +RD: -14.787162,26.876163 diff --git a/LaiPuLaser/MarkFile.mak b/LaiPuLaser/MarkFile.mak new file mode 100644 index 0000000..7b7a16a Binary files /dev/null and b/LaiPuLaser/MarkFile.mak differ diff --git a/LaiPuLaser/MarkFile2.mak b/LaiPuLaser/MarkFile2.mak new file mode 100644 index 0000000..5503946 Binary files /dev/null and b/LaiPuLaser/MarkFile2.mak differ diff --git a/LaiPuLaser/MarkObjPropertieMgr.cpp b/LaiPuLaser/MarkObjPropertieMgr.cpp new file mode 100644 index 0000000..50b0530 --- /dev/null +++ b/LaiPuLaser/MarkObjPropertieMgr.cpp @@ -0,0 +1,210 @@ +#include "StdAfx.h" +#include "MarkObjPropertieMgr.h" +#include "MainFrm.h" +#include "GlobalFunction.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "CommandStretch.h" +#include "CommandMgr.h" + + + +CMarkObjPropertieMgr *gMarkObjPropertieMgr = new CMarkObjPropertieMgr; +CMarkObjPropertieMgr::CMarkObjPropertieMgr(void) +{ +} +CMarkObjPropertieMgr::~CMarkObjPropertieMgr(void) +{ +} +#if 1 +//ҳ +CMFCPropertyGridProperty *CMarkObjPropertieMgr::CreatGridProperty() +{ + //¹ֵ + UpdateCommonPropVal(); +//-------------------------------------------------------------------------------// + CString PropertyName;// + CString Description;// + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T("ͼ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("x "); + Description = _T("ѡx ֵ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Coord.x, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Coord.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("y "); + Description = _T("ѡy ֵ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Coord.y, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Size.w); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("x ߴ"); + Description = _T("ѡĿֵ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Size.w, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Size.h); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("y ߴ"); + Description = _T("ѡĸ߶ֵ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Size.h, Description); + pGroup1->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + + // + CMFCPropertyGridProperty* pSpecialGrid = CreatSpecialGridProperty(this); + if(pSpecialGrid != NULL) + { + pGroup->AddSubItem(pSpecialGrid); + } + return pGroup; +} +// +CMFCPropertyGridProperty *CMarkObjPropertieMgr::CreatSpecialGridProperty(CModule *pModule) +{ + CLayer &layer = GetLayerInstance(); + return layer.CreatSpecialGridProperty(pModule); +} +//ӦԵĸı +void CMarkObjPropertieMgr::OnPropertyChanged() +{ + CLayer &layer = GetLayerInstance(); + //ƶ + if(MoveSelObj()==false) + { + //ıߴ + if(ResizeSelObj()==false) + { + // + OnSpecialPropertyChanged(); + } + } + + //ֵ + UpdateSelMarkObjPropertie(); + //ˢ + GetCurViewPtr()->RefreshView(); +} +//ӦԵı仯 +void CMarkObjPropertieMgr::OnSpecialPropertyChanged() +{ + CLayer &layer = GetLayerInstance(); + layer.OnSpecialPropertyChanged(); +} +#endif +//ѡ +void CMarkObjPropertieMgr::UpdateSelMarkObjPropertie() +{ + GetFrame()->m_PaneDrawPar.ChangePropCombType(_COMB_OBJ_PROP); +} +//¹ֵ +void CMarkObjPropertieMgr::UpdateCommonPropVal() +{ + CLayer &layer = GetLayerInstance(); + DbRect rect = layer.GetSelObjRect(); + //ߴ + m_Size = rect.GetSize(); + // + m_Coord = rect.GetCenterPt(); +} +//ͨ޸ƶobj +bool CMarkObjPropertieMgr::MoveSelObj() +{ + CLayer &layer = GetLayerInstance(); + Dbxy CoordOld = layer.GetSelObjRect().GetCenterPt(); + if(!IsTwoDbEqual(m_Coord.x,CoordOld.x) || !IsTwoDbEqual(m_Coord.y,CoordOld.y)) + { + layer.OnMove(m_Coord.x-CoordOld.x,m_Coord.y-CoordOld.y); + return true; + } + return false; +} +//ıߴ +bool CMarkObjPropertieMgr::ResizeSelObj() +{ + CLayer &layer = GetLayerInstance(); + DbRect rect = layer.GetSelObjRect(); + DbSize SizeOld = rect.GetSize(); + + Dbxy BasePt;//׼ + double OldSize,NewSize; + double Diff;//¾ɳߴIJ + X_OR_Y xy; + bool flg = false; + if(!IsTwoDbEqual(m_Size.w,SizeOld.w) && m_Size.w > 0) + { + BasePt = rect.GetCenterPt();//׼ + OldSize = SizeOld.w; + NewSize = m_Size.w; + Diff = m_Size.w-SizeOld.w;//ƶ + xy = _X; + flg = true; + } + if(!IsTwoDbEqual(m_Size.h,SizeOld.h) && m_Size.h > 0) + { + BasePt = rect.GetCenterPt();//׼ + OldSize = SizeOld.h; + NewSize = m_Size.h; + Diff = m_Size.h-SizeOld.h;//ƶ + xy = _Y; + flg = true; + } + if(flg) + { + SObjOperatePar par; + par.OpType = _OP_STRETCH; + par.BasePt = BasePt; + par.OldSize = OldSize; + par.NewSize = NewSize; + par.Diff = Diff; + par.xy = xy; + //undo õָ-----start + CCommandStretch *pCommand = new CCommandStretch; + pCommand->SetOperatePar(par); + gCommandMgr.AddUndoCommand(pCommand); + //undo õָ-----end + pCommand->Excute(); + + return true; + } + return false; +} diff --git a/LaiPuLaser/MarkObjPropertieMgr.h b/LaiPuLaser/MarkObjPropertieMgr.h new file mode 100644 index 0000000..1a05531 --- /dev/null +++ b/LaiPuLaser/MarkObjPropertieMgr.h @@ -0,0 +1,26 @@ +#pragma once +#include "module.h" +#include "EnumPropertieType.h" + +class CMarkObjPropertieMgr :public CModule +{ +public: + CMarkObjPropertieMgr(void); + ~CMarkObjPropertieMgr(void); + virtual void Ini(){}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void OnPropertyChanged(); + virtual MODULE GetModuleType(){return _OBJ_PROP;}; + + void UpdateSelMarkObjPropertie(); +private: + CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule); + void OnSpecialPropertyChanged(); + void UpdateCommonPropVal(); + bool MoveSelObj(); + bool ResizeSelObj(); +private: + Dbxy m_Coord;//ѡobj + DbSize m_Size;//ѡobj ijߴ +}; +extern CMarkObjPropertieMgr *gMarkObjPropertieMgr; \ No newline at end of file diff --git a/LaiPuLaser/MarkPar.cpp b/LaiPuLaser/MarkPar.cpp new file mode 100644 index 0000000..cedf2cd --- /dev/null +++ b/LaiPuLaser/MarkPar.cpp @@ -0,0 +1,77 @@ +#include "StdAfx.h" +#include "MarkPar.h" +#include "GlobalDefine.h" + +CMarkPar::CMarkPar(void) +{ + m_color = RGB_GRAY;//ʵɫ + ms = 100;//ٶmm/s + mms = 500;//ٶmm/s + tof = 100;//ǰʱus + toh = 80;//ʱus + tcf = 20;//ؼǰʱus + tch = 70;//ؼʱus + dr_time = 30;//յʱ us + laserfre = 10;//Ƶ + laserpower = 40;//⹦ + maxlaserpower = 150;// +} +CMarkPar::~CMarkPar(void) +{ +} +void CMarkPar::Serialize(CArchive &ar) +{ + if(ar.IsStoring()) + { + ar<>m_color; + ar>>ms; + ar>>mms; + ar>>tcf; + ar>>tch; + ar>>tof; + ar>>toh; + ar>>dr_time; + ar>>laserfre; + ar>>laserpower; + ar>>maxlaserpower; + } +} +void CMarkPar::WriteWorkFile(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_NULL,(double)ms)); + LabVec.push_back(CLab(LAB_NULL,(double)mms)); + LabVec.push_back(CLab(LAB_NULL,(int)tcf)); + LabVec.push_back(CLab(LAB_NULL,(int)tch)); + LabVec.push_back(CLab(LAB_NULL,(int)tof)); + LabVec.push_back(CLab(LAB_NULL,(int)toh)); + LabVec.push_back(CLab(LAB_NULL,(int)dr_time)); + LabVec.push_back(CLab(LAB_NULL,(int)laserfre)); + LabVec.push_back(CLab(LAB_NULL,(int)laserpower)); +} +void CMarkPar::ReadWorkFile(CLabVecRang &LabVecRang) +{ + int idx = LabVecRang.GetStart(); + ms = LabVecRang.GetDouble(idx++); + mms = LabVecRang.GetDouble(idx++); + tcf = LabVecRang.GetInt(idx++); + tch = LabVecRang.GetInt(idx++); + tof = LabVecRang.GetInt(idx++); + toh = LabVecRang.GetInt(idx++); + dr_time = LabVecRang.GetInt(idx++); + laserfre = LabVecRang.GetDouble(idx++); + laserpower = LabVecRang.GetDouble(idx++); +} \ No newline at end of file diff --git a/LaiPuLaser/MarkPar.h b/LaiPuLaser/MarkPar.h new file mode 100644 index 0000000..39e1762 --- /dev/null +++ b/LaiPuLaser/MarkPar.h @@ -0,0 +1,30 @@ +#pragma once +#include "LabVecRang.h" + + +//̲ +class CMarkPar +{ + friend class CDlgMarkPar; +public: + CMarkPar(void); + ~CMarkPar(void); + COLORREF GetColor(){return m_color;}; + void SetColor(COLORREF c){m_color = c;}; + void Serialize(CArchive &ar); + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); +public: + COLORREF m_color;//ʵɫ + float ms;//ٶmm/s + float mms;//ٶmm/s + long tcf;//ؼǰʱus + long tch;//ؼʱus + long tof;//ǰʱus + long toh;//ʱus + long dr_time;//յʱ us + float laserfre;//Ƶ(λ:khz ) + float laserpower;//⹦(λ:w) + float maxlaserpower;//(λ:w)Ϊ100 ൱ڰٷֱ +}; + diff --git a/LaiPuLaser/MarkParMgr.cpp b/LaiPuLaser/MarkParMgr.cpp new file mode 100644 index 0000000..ed7a514 --- /dev/null +++ b/LaiPuLaser/MarkParMgr.cpp @@ -0,0 +1,183 @@ +#include "StdAfx.h" +#include "MarkParMgr.h" +#include "CStringFuc.h" +#include "GlobalDefine.h" +#include "FileMgr.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "GlobalFunction.h" + + +#define PEN_CNT 100 //ʵ +#define PEN_COLOR_0 RGB(10,10,10) +#define PEN_COLOR_1 RGB(0,0,255) +#define PEN_COLOR_2 RGB(255,0,0) +#define PEN_COLOR_3 RGB(0,255,0) +#define PEN_COLOR_4 RGB(255,0,255) +#define PEN_COLOR_5 RGB(255,255,0) +#define PEN_COLOR_6 RGB(255,125,125) +#define PEN_COLOR_7 RGB(125,0,0) +#define PEN_COLOR_8 RGB(125,0,125) +#define PEN_COLOR_9 RGB(0,125,125) +#define PEN_COLOR_10 RGB(255,255,255) +#define PEN_COLOR_11 RGB(185,122,87) +#define PEN_COLOR_12 RGB(255,201,14) +#define PEN_COLOR_13 RGB(181,230,29) +#define PEN_COLOR_14 RGB(153,217,234) +#define PEN_COLOR_15 RGB(112,146,190) +#define PEN_COLOR_16 RGB(200,191,231) +#define PEN_COLOR_17 RGB(63,72,204) +#define PEN_COLOR_18 RGB(163,73,164) +#define PEN_COLOR_19 RGB(34,177,76) +#define PEN_COLOR_20 RGB(127,127,127) + +#define FILE_PATH _T("\\Parameter\\MarkPar\\MarkPar.par") + +CMarkParMgr *gMarkParMgr = new CMarkParMgr; +CMarkParMgr::CMarkParMgr(void) +{ + m_CurPen = 0;//ǰıʺ + //ʼ + IniParVec(); +} +CMarkParMgr::~CMarkParMgr(void) +{ +} +#if 1 +void CMarkParMgr::WriteWorkFileExt(vector &LabVec) +{ + for(int i=0;i LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_MARK_PAR_START,LAB_MARK_PAR_END); + + //ÿ + if(!LabVecRangVec.empty()) + { + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + m_ParVec[i].ReadWorkFile(*iter); + } + } + #ifdef __DLG_PANE_MARK_PAR__ + GetFrame()->m_CDlgMarkPar.UpdatePar(); + #endif +} +#endif + +//ʼ +void CMarkParMgr::IniParVec() +{ + for(int i=0;i::iterator iter = m_ParVec.begin(); + vector::iterator iter_end = m_ParVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Serialize(ar); + } +} +CMarkPar CMarkParMgr::GetPen(int pen) +{ + return m_ParVec[pen]; +} + +double CMarkParMgr::GetFirstPenLaserPower() +{ + return m_ParVec[0].laserpower; +} +void CMarkParMgr::SetFirstPenLaserPower(double Val) +{ + if(Val>1 && Val<100) + { + m_ParVec[0].laserpower = Val; + } +} \ No newline at end of file diff --git a/LaiPuLaser/MarkParMgr.h b/LaiPuLaser/MarkParMgr.h new file mode 100644 index 0000000..52f2588 --- /dev/null +++ b/LaiPuLaser/MarkParMgr.h @@ -0,0 +1,36 @@ +#pragma once +#include "MarkPar.h" +#include "GlobalDefine.h" +#include "module.h" + + +//̲ +class CMarkParMgr:public CModule +{ +public: + CMarkParMgr(void); + ~CMarkParMgr(void); + virtual MODULE GetModuleType(){return _MARK_PAR_PROP;}; + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + void InsertToList(CListCtrl &List); + COLORREF GetPenColor(int pen); + void SaveCurPen(int Pen,CMarkPar CurPar); + CMarkPar GetPen(int pen); + CMarkPar& GetCurPen(){return m_ParVec[m_CurPen];};//õǰѡı + void SetCurPenNum(int num){m_CurPen = num;}; + int GetCurPenNum(){return m_CurPen;}; + void SaveOrLoad(bool bSave); + double GetFirstPenLaserPower(); + void SetFirstPenLaserPower(double Val); + void SaveCurPen(CMarkPar CurPar); +private: + void IniParVec(); + void SaveOrLoadExt(CArchive &ar); +private: + vector m_ParVec;// + int m_CurPen;//ǰıʺ +}; + +extern CMarkParMgr *gMarkParMgr; \ No newline at end of file diff --git a/LaiPuLaser/MeasureMgr.cpp b/LaiPuLaser/MeasureMgr.cpp new file mode 100644 index 0000000..632f641 --- /dev/null +++ b/LaiPuLaser/MeasureMgr.cpp @@ -0,0 +1,34 @@ +#include "StdAfx.h" +#include "MeasureMgr.h" +#include "GlobalFunction.h" +#include "LogMgr.h" + +CMeasureMgr gMeasureMgr; +CMeasureMgr::CMeasureMgr(void) +{ + m_bSelFirstPt = false;//Ƿ˵һ +} +CMeasureMgr::~CMeasureMgr(void) +{ +} +//µIJɼ +void CMeasureMgr::SetNewPt(Dbxy pt) +{ + CString LogStr; + LogStr.Format(_T("MeasureMgr:[pt.x] = [%f] ,[pt.y] = [%f]"),pt.x,pt.y); + gLogMgr->WriteDebugLog(LogStr); + + if(!m_bSelFirstPt)//õһ + { + m_OldPt = pt; + m_bSelFirstPt = true; + return; + } + // + double Dis = CalDistance(m_OldPt,pt); + //Ƕ + double Ang = Cal360AngleByTwoPt(m_OldPt,pt); + + LogStr.Format(_T("MeasureMgr:[Dis] = [%f] ,[Ang] = [%f]"),Dis,Ang); + gLogMgr->WriteDebugLog(LogStr); +} \ No newline at end of file diff --git a/LaiPuLaser/MeasureMgr.h b/LaiPuLaser/MeasureMgr.h new file mode 100644 index 0000000..89b0491 --- /dev/null +++ b/LaiPuLaser/MeasureMgr.h @@ -0,0 +1,18 @@ +#pragma once +#include "GlobalDefine.h" + + +//(ʹƽ̨CCD ͽǶ) +class CMeasureMgr +{ +public: + CMeasureMgr(void); + ~CMeasureMgr(void); + void CatchPt(); + void SetNewPt(Dbxy pt); +private: + bool m_bSelFirstPt;//Ƿ˵һ + Dbxy m_OldPt;//֮ǰIJɼ +}; + +extern CMeasureMgr gMeasureMgr; \ No newline at end of file diff --git a/LaiPuLaser/Mirror.cpp b/LaiPuLaser/Mirror.cpp new file mode 100644 index 0000000..9747e64 --- /dev/null +++ b/LaiPuLaser/Mirror.cpp @@ -0,0 +1,203 @@ +#include "StdAfx.h" +#include "Mirror.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "GlobalFunction.h" +#include "LogMgr.h" + + + +CMirror *gMirror = new CMirror; +CMirror::CMirror(void) +{ + m_MirrorStep = 1; + m_bUsePciCard = true;//ʹpci ϻtrue Ϊpci + m_LaserSwitch = false;//Ƿ + m_LaserType = 3;// + m_CheckDataArea = false;//ǷݷΧ +} +CMirror::~CMirror(void) +{ +} +#if 1//дmodule ĺ +CMFCPropertyGridProperty *CMirror::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("Mirror");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_MirrorRange_w");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MirrorRange.w); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("񾵷Χ"); + Description = _T("񾵵ĹΧ(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MirrorRange.w, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_MirrorRange_h");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MirrorRange.h); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("񾵷Χ"); + Description = _T("񾵵ĹΧ(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MirrorRange.h, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_MirrorStep");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MirrorStep); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("񾵲"); + Description = _T("ڿݳߴıֵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MirrorStep, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bUsePciCard");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUsePciCard); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("pci "); + Description = _T("true ʾpci,false ʾѻ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUsePciCard, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_CheckDataArea");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CheckDataArea); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("鷶Χ"); + Description = _T("ǷݷΧõijߴ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CheckDataArea, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LaserSwitch");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LaserSwitch); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ⷴ"); + Description = _T("ƶ˿Ƿ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LaserSwitch, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LaserType");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LaserType); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T(""); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LaserType, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + } + return pGroup; +} +void CMirror::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CMirror]------------------------------------------------"<WriteDebugLog(LogStr); + return false; + } + } + } + return true; +} +#endif + diff --git a/LaiPuLaser/Mirror.h b/LaiPuLaser/Mirror.h new file mode 100644 index 0000000..f92cba3 --- /dev/null +++ b/LaiPuLaser/Mirror.h @@ -0,0 +1,28 @@ +#pragma once +#include "module.h" +class CMirror : + public CModule +{ +public: + CMirror(void); + ~CMirror(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _MIRROR_PROP;}; + + double GetMirrorStep(){return m_MirrorStep;}; + bool IsUsePciCard(){return m_bUsePciCard;}; + DbSize GetRange(){return m_MirrorRange;}; + bool IsLaserSwitch(){return m_LaserSwitch;}; + int GetLaserType(){return m_LaserType;}; + bool CheckDataInMirrorArea( vector>& m_DataVec); +private: + double m_MirrorStep;//񾵵IJ(make_pci 1000/񾵷ֱ) + bool m_bUsePciCard;//ʹpci ϻtrue Ϊpci + bool m_LaserSwitch;//Ƿ + bool m_CheckDataArea;//ǷݷΧ + DbSize m_MirrorRange;//񾵷Χ + int m_LaserType;// +}; + +extern CMirror *gMirror; \ No newline at end of file diff --git a/LaiPuLaser/Module.cpp b/LaiPuLaser/Module.cpp new file mode 100644 index 0000000..f7c4e81 --- /dev/null +++ b/LaiPuLaser/Module.cpp @@ -0,0 +1,18 @@ +#include "StdAfx.h" +#include "Module.h" +#include "WorkFileLable.h" + +CModule::CModule(void) +{ +} +#if 1 +void CModule::SaveWorkFile(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_MODULE_START)); + LabVec.push_back(CLab(LAB_MODULE_TYPE,(int)GetModuleType())); + + WriteWorkFileExt(LabVec); + + LabVec.push_back(CLab(LAB_MODULE_END)); +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/Module.h b/LaiPuLaser/Module.h new file mode 100644 index 0000000..77454ef --- /dev/null +++ b/LaiPuLaser/Module.h @@ -0,0 +1,28 @@ +#pragma once +#include "GlobalDefine.h" +#include "EnumPropertieType.h" + +#include "LabVecRang.h" +//ȫģĻ +//CreatGridProperty Ini ֮ǰ +class CModule +{ +public: + CModule(void); + virtual ~CModule(void){}; + virtual void Ini(){}; + //ÿģԼĽṹҰֵ + virtual CMFCPropertyGridProperty *CreatGridProperty(){return NULL;}; + //ÿģԼӦԵĸı + virtual void OnPropertyChanged(){}; + virtual MODULE GetModuleType(){return _MODULE_NULL;};//뷵ģ + virtual void Draw(CDC* pDC){};//pDC һЩ + virtual void ExportPar(ofstream *pFile){}; + virtual void WriteWorkFileExt(vector &LabVec){}; + virtual void ReadWorkFile(CLabVecRang &LabVecRang){}; + virtual void OnWorkStart(){};//ʼӹ֮ǰIJ + virtual void OnWorkEnd(){};//ӹ֮IJ + virtual void OnExitApp(){};//˳ʱ + void SaveWorkFile(vector &LabVec); +}; + diff --git a/LaiPuLaser/ModuleDeviceMgr.cpp b/LaiPuLaser/ModuleDeviceMgr.cpp new file mode 100644 index 0000000..a51c66e --- /dev/null +++ b/LaiPuLaser/ModuleDeviceMgr.cpp @@ -0,0 +1,172 @@ +#include "StdAfx.h" +#include "ModuleDeviceMgr.h" +#include "GlobalFunction.h" +#include "PropertieMgr.h" +#include "MarkObjPropertieMgr.h" +#include "GlobalFunction.h" +#include "PltReader.h" +#include "PciPortMgr.h" +#include "PciCh365Mgr.h" +#include "PlatformXY.h" +#include "Laser.h" +#include "Motor.h" +#include "ApplicationPriority.h" +#include "WorkAreaMgr.h" +#include "CameraHawkvis.h" +#include "GratingRuler.h" +#include "AuthorityMgr.h" +#include "LaipuVbDllMgr.h" +#include "MarkAreaMgr.h" +#include "SocketMgr.h" +#include "Mirror.h" +#include "SinglechipCardMgr.h" +#include "CameraKeyence.h" +#include "LaserDeviceMgr.h" +#include "ProductMgr.h" +#include "OptoWaveLaserMgr.h" +#include "LogMgr.h" +#include "CommonFlowMgr.h" +#include "WorkRecord.h" +#include "PlcIOMgr.h" +#include "EncryptionMgr.h" +#include "ProgramCutMgr.h" +#include "MotionCard_PCI1245.h" +//#include "SuperDogMgr.h" +#include "Program_SZ_XL.h" + + +CModuleDeviceMgr gModuleDeviceMgr;//ȫʹõ +CModuleDeviceMgr::CModuleDeviceMgr(void) +{ +} +CModuleDeviceMgr::~CModuleDeviceMgr(void) +{ + DeleteAllModule(); +} +//ģ(עģʼ˳) +void CModuleDeviceMgr::CreatAllModule() +{ + //־ģ + gLogMgr = new CLogMgr; + m_ModuleVec.push_back((CModule*)gLogMgr); + //Ȩ޹ + m_ModuleVec.push_back((CModule*)gAuthorityMgr); + //ȼ + m_ModuleVec.push_back((CModule*)gAppPriorityMgr); + // + m_ModuleVec.push_back((CModule*)gWorkAreaMgr); + //plt ȡ + m_ModuleVec.push_back((CModule*)gPltReader); + //ѻƿ + m_ModuleVec.push_back((CModule*)gSinglechipCardMgr); + // + m_ModuleVec.push_back((CModule*)gMirror); + //pci ˿ڹ(һЩģijʼڶ˿ڣҪǰ) + m_ModuleVec.push_back((CModule*)gPciPortMgr); + //pci 365 + m_ModuleVec.push_back((CModule*)gPciCh365Mgr); + // + m_ModuleVec.push_back((CModule*)CMotor::GetMotor(MOTOR_X)); + m_ModuleVec.push_back((CModule*)CMotor::GetMotor(MOTOR_X2)); + m_ModuleVec.push_back((CModule*)CMotor::GetMotor(MOTOR_Y)); + m_ModuleVec.push_back((CModule*)CMotor::GetMotor(MOTOR_Z)); + //XY ƽ̨ + gPlatformXY = new CPlatformXY(*(CMotor::GetMotor(MOTOR_X)),*(CMotor::GetMotor(MOTOR_Y))); + m_ModuleVec.push_back((CModule*)gPlatformXY); + +#ifdef __DLG_PANE_PLATFORM__ + gPlatformXY->Attach(&(GetFrame()->m_DlgPlatformCtrl)); + (CMotor::GetMotor(MOTOR_Z))->Attach(&(GetFrame()->m_DlgPlatformCtrl)); +#endif + #ifdef __PROGRAM_SHILAN_TUIHUO__ + gPlatformXY->Attach(&(GetFrame()->m_DlgTuiHuoDeviceCtrl)); + #endif + // + m_ModuleVec.push_back((CModule*)gLaser); + //դ + m_ModuleVec.push_back((CModule*)gGratingRuler); + //socket ͨѶ + m_ModuleVec.push_back((CModule*)gSocketMgr); + //˶ + m_ModuleVec.push_back((CModule*)gMarkParMgr); + //Ʒ + m_ModuleVec.push_back((CModule*)gProductMgr); + // + m_ModuleVec.push_back((CModule*)gMarkAreaMgr); + // + m_ModuleVec.push_back((CModule*)gCommonFlowMgr); + //ӹ¼ + m_ModuleVec.push_back((CModule*)gWorkRecordMgr); + + m_ModuleVec.push_back((CModule*)gProgramCutMgr); + m_ModuleVec.push_back((CModule*)gCameraHawkvis); + m_ModuleVec.push_back((CModule*)gCLaserDeviceMgr); + + m_ModuleVec.push_back((CModule*)gPlcIOMgr); + m_ModuleVec.push_back((CModule*)gEncryptionMgr); + + m_ModuleVec.push_back((CModule*)gMotionCard_PCI1245); + +#ifdef USE_SUPER_DOG + m_ModuleVec.push_back((CModule*)gEncryptionMgr); +#endif + + m_ModuleVec.push_back((CModule*)gProgram_SZ_XL); + +} +//ָģ +void CModuleDeviceMgr::InsertModuleGridProperty(int SelIdx) +{ + DEVICE_PROP_COMB_TYPE CombType = (DEVICE_PROP_COMB_TYPE)SelIdx; + //Ҫģ-------------------------------------------- + set ModuleSet; + switch(CombType) + { + case _COMB_NULL_PROP: + break; + case _COMB_PCI_PROP://pci + ModuleSet.insert(_PCI_PORT_PROP); + break; + case _COMB_MOTION_CARD://˶ƿ + ModuleSet.insert(_MOTION_CARD_PCI1245L); + break; + case _COMB_MOTOR_PROP:// + ModuleSet.insert(_MOTOR_PROP);// + break; + case _COMB_PLATFORM_XY_PROP:// + ModuleSet.insert(_PLATFORM_XY_PROP);// + break; + case _COMB_DEVICE_PROP://Ӳ + ModuleSet.insert(_MIRROR_PROP);//и + ModuleSet.insert(_TOOL_CUT_PROP);//и + ModuleSet.insert(_LASER_PROP);// + ModuleSet.insert(_SPECTRA_PHYSICS_LASER_PROP);// + ModuleSet.insert(_HAWKVIS_CCD_PROP);//ڻӾCCD + ModuleSet.insert(_PLC_IO_PROP);//־ + break; + case _COMB_OTHER_PROP: + ModuleSet.insert(_LOG_PROP);//־ + ModuleSet.insert(_APP_PRIORITY_PROP);//ȼ + ModuleSet.insert(_AUTHORITY_PROP);//Ȩ޹ + ModuleSet.insert(_WORK_AREA_PROP);//ռ + ModuleSet.insert(_PLT_PROP);//plt + ModuleSet.insert(_WORK_RECORD_PROP);//ӹ¼ + + break; + case _COMB_WORK_DATA:// + ModuleSet.insert(_PRODUCT_PROP);//Ʒ + break; + case _COMB_SPECIAL_DEVICE_PROP: + ModuleSet.insert(_PGM_SW_XL_PROP); + break; + case _COMB_COMMON_FLOW_PROP: + ModuleSet.insert(_COMMON_FLOW_PROP); + break; + default: + break; + } + //ָҳwnd + CPanePropertiesWnd &wndProperties = GetFrame()->m_PaneDevicePar; + InsertPropertiesToWnd(ModuleSet,wndProperties); +} + diff --git a/LaiPuLaser/ModuleDeviceMgr.h b/LaiPuLaser/ModuleDeviceMgr.h new file mode 100644 index 0000000..6f1e13e --- /dev/null +++ b/LaiPuLaser/ModuleDeviceMgr.h @@ -0,0 +1,14 @@ +#pragma once +#include "modulemgr.h" + +//豸ص +class CModuleDeviceMgr :public CModuleMgr +{ +public: + CModuleDeviceMgr(void); + ~CModuleDeviceMgr(void); + virtual void InsertModuleGridProperty(int CombType); + virtual void CreatAllModule(); +}; + +extern CModuleDeviceMgr gModuleDeviceMgr; \ No newline at end of file diff --git a/LaiPuLaser/ModuleDrawMgr.cpp b/LaiPuLaser/ModuleDrawMgr.cpp new file mode 100644 index 0000000..47b2bd6 --- /dev/null +++ b/LaiPuLaser/ModuleDrawMgr.cpp @@ -0,0 +1,70 @@ +#include "StdAfx.h" +#include "ModuleDrawMgr.h" + +#include "LogMgr.h" +#include "PropertieMgr.h" +#include "GlobalDrawMgr.h" +#include "MarkObjPropertieMgr.h" +#include "GlobalFunction.h" +#include "Ruler.h" +#include "SimulateTrace.h" +#include "ObjComponentMgr.h" +#include "EasyOperationMgr.h" +#include "TemplateMgr.h" + + + +CModuleDrawMgr gModuleDrawMgr; +CModuleDrawMgr::CModuleDrawMgr(void) +{ +} +CModuleDrawMgr::~CModuleDrawMgr(void) +{ + DeleteAllModule(); +} +//ģ(עģʼ˳) +void CModuleDrawMgr::CreatAllModule() +{ + //ģ(Ҫǰ棬ΪҪΪlayer ģܻ) + m_ModuleVec.push_back((CModule*)gTemplateMgr); + //ȫֻƹģ + m_ModuleVec.push_back((CModule*)gDraw); + // + m_ModuleVec.push_back((CModule*)gRuler); + //obj Թģ + m_ModuleVec.push_back((CModule*)gMarkObjPropertieMgr); + //켣ģ + m_ModuleVec.push_back((CModule*)gSimulateTrace); + //Ԫ + m_ModuleVec.push_back((CModule*)gObjComponentMgr); + //ݲ + m_ModuleVec.push_back((CModule*)gEasyOperationMgr); + +} + +//ָģ +void CModuleDrawMgr::InsertModuleGridProperty(int SelIdx) +{ + DRAW_PROP_COMB_TYPE CombType = (DRAW_PROP_COMB_TYPE)SelIdx; + //Ҫģ-------------------------------------------- + set ModuleSet; + switch(CombType) + { + case _COMB_OBJ_PROP://obj + ModuleSet.insert(_OBJ_PROP); + break; + case _COMB_DRAW_PROP://ͨ + + ModuleSet.insert(_DRAW_PROP); + ModuleSet.insert(_RULER_PROP); + ModuleSet.insert(_SIMULATE_PROP); + ModuleSet.insert(_TEMPLATE_PROP); + ModuleSet.insert(_OBJ_COMPONENT_PROP); + break; + default: + break; + } + //ָҳwnd + CPanePropertiesWnd &wndProperties = GetFrame()->m_PaneDrawPar; + InsertPropertiesToWnd(ModuleSet,wndProperties); +} \ No newline at end of file diff --git a/LaiPuLaser/ModuleDrawMgr.h b/LaiPuLaser/ModuleDrawMgr.h new file mode 100644 index 0000000..8d01658 --- /dev/null +++ b/LaiPuLaser/ModuleDrawMgr.h @@ -0,0 +1,14 @@ +#pragma once +#include "modulemgr.h" + +//ͼλص +class CModuleDrawMgr :public CModuleMgr +{ +public: + CModuleDrawMgr(void); + ~CModuleDrawMgr(void); + virtual void InsertModuleGridProperty(int CombType); + virtual void CreatAllModule(); +}; + +extern CModuleDrawMgr gModuleDrawMgr; \ No newline at end of file diff --git a/LaiPuLaser/ModuleMgr.cpp b/LaiPuLaser/ModuleMgr.cpp new file mode 100644 index 0000000..d166af6 --- /dev/null +++ b/LaiPuLaser/ModuleMgr.cpp @@ -0,0 +1,202 @@ +#include "StdAfx.h" +#include "MainFrm.h" +#include "ModuleMgr.h" +#include "LogMgr.h" +#include "PropertieMgr.h" +#include "GlobalDrawMgr.h" +#include "MarkObjPropertieMgr.h" +#include "GlobalFunction.h" +#include "PltReader.h" +#include "PciPortMgr.h" +#include "PciCh365Mgr.h" +#include "PlatformXY.h" +#include "Laser.h" +#include "Motor.h" +#include "ApplicationPriority.h" +#include "WorkAreaMgr.h" +#include "CameraHawkvis.h" +#include "GratingRuler.h" +#include "Ruler.h" +#include "WorkFileLable.h" +#include "CStringFuc.h" +#include "WorkFileMgr.h" + + +CModuleMgr::CModuleMgr(void) +{ +} +CModuleMgr::~CModuleMgr(void) +{ + +} +void CModuleMgr::DeleteAllModule() +{ + //ͷԴ + /* vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end();*/ + + int cnt = m_ModuleVec.size(); + for (int i=0;i!=cnt;i++) + { + if (m_ModuleVec[i]!=nullptr) + { + auto & pModuleVec = m_ModuleVec[i]; + m_ModuleVec[i]->GetModuleType(); + delete m_ModuleVec[i]; + m_ModuleVec[i] = NULL; + } + } + +} +#if 1 +//¼еmodule ЩҪ +void CModuleMgr::SaveAllModuleProperty() +{ + gDevicePropertieMgr.SetSaveAllPropertie(true); + gDrawPropertieMgr.SetSaveAllPropertie(true); + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + CMFCPropertyGridProperty* pProp = (*iter)->CreatGridProperty(); + if(pProp) + { + delete pProp; + } + } + gDevicePropertieMgr.SetSaveAllPropertie(false); + gDrawPropertieMgr.SetSaveAllPropertie(false); +} +//ģʼ +void CModuleMgr::AllModuleIni() +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Ini(); + } +} +//ʼģ,Dzҳ +void CModuleMgr::PropertiesIni() +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + CMFCPropertyGridProperty* pProp = (*iter)->CreatGridProperty();//ģԼ𴴽 + if(pProp) + { + delete pProp; + } + } +} +//ָҳwnd +void CModuleMgr::InsertPropertiesToWnd(set &Set,CPanePropertiesWnd &Wnd) +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + if(Set.count((*iter)->GetModuleType())) + { + CMFCPropertyGridProperty* pProp = (*iter)->CreatGridProperty();//ģԼ𴴽 + if(pProp) + { + Wnd.InsertGridProperty(pProp); + } + } + } +} +//ģIJϢļ +void CModuleMgr::ExportDevicePar(ofstream *pFile) +{ + if(pFile) + { + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->ExportPar(pFile); + } + } +} +//ǷҵӦĶȡģ +bool CModuleMgr::ReadWorkFile(CLabVecRang &LabVecRang) +{ + //ȡģ + CWorkFileMgr WorkFileMgr; + CLab StartLab = WorkFileMgr.FindLab(LabVecRang,LAB_MODULE_TYPE); + if(StartLab.m_ValType == _TYPE_NULL) + return false; + MODULE ModuleType = (MODULE)(StartLab.m_Int); + //ָָģ鴦 + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->GetModuleType()==ModuleType) + { + (*iter)->ReadWorkFile(LabVecRang); + return true; + } + } + return false; +} +#endif +#if 1 +//ʼ +void CModuleMgr::Ini() +{ + //ģ + CreatAllModule(); + //ʼģ + PropertiesIni(); + //ģʼ + AllModuleIni(); + //Ĭͼ + InsertModuleGridProperty(_COMB_OBJ_PROP); +} +//ģԻһЩԼ +void CModuleMgr::Draw(CDC* pDC) +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Draw(pDC); + } +} +#endif +#if 1 +void CModuleMgr::OnWorkStart() +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->OnWorkStart(); + } +} +void CModuleMgr::OnWorkEnd() +{ + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->OnWorkEnd(); + } +} +void CModuleMgr::OnExitApp() +{ + gExitApp = true; + vector::iterator iter = m_ModuleVec.begin(); + vector::iterator iter_end = m_ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->OnExitApp(); + } + //ʱȴ߳̽ⱨ + Sleep(2000); +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/ModuleMgr.h b/LaiPuLaser/ModuleMgr.h new file mode 100644 index 0000000..a63633b --- /dev/null +++ b/LaiPuLaser/ModuleMgr.h @@ -0,0 +1,38 @@ +#pragma once + +#include "GlobalDefine.h" +#include "EnumPropertieType.h" +#include "PropertiesWnd.h" +#include "LabVecRang.h" + +//ǰ +class CModule; + +/* +1.ڹȫģ࣬Эģ֮Ĺϵ +2.ΪȫģṩһͳһʼĵطͳһڳʱͷԴ +3.ΪȫģṩԵĶȡͱ,Ա仯ʱ֪ͨӦģ +*/ +class CModuleMgr +{ +public: + CModuleMgr(void); + virtual ~CModuleMgr(void); + virtual void InsertModuleGridProperty(int CombType){}; + virtual void CModuleMgr::CreatAllModule(){}; + void Ini(); + void Draw(CDC* pDC); + void ExportDevicePar(ofstream *pFile); + void SaveAllModuleProperty(); + bool ReadWorkFile(CLabVecRang &LabVecRang); + void OnWorkStart(); + void OnWorkEnd(); + void OnExitApp(); +protected: + void DeleteAllModule(); + void AllModuleIni(); + void PropertiesIni(); + void InsertPropertiesToWnd(set &Set,CPanePropertiesWnd &Wnd); +protected: + vector m_ModuleVec;//洢mgr ָ +}; \ No newline at end of file diff --git a/LaiPuLaser/MotionCard_PCI1245.cpp b/LaiPuLaser/MotionCard_PCI1245.cpp new file mode 100644 index 0000000..8a666e4 --- /dev/null +++ b/LaiPuLaser/MotionCard_PCI1245.cpp @@ -0,0 +1,1212 @@ +#include "StdAfx.h" +#include "MotionCard_PCI1245.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "LogMgr.h" +#include "Motor.h" +#include "PlatformXY.h" +#include "MsgBox.h" +#include "FileMgr.h" +#include "SinglechipCardMgr.h" +#include "PciCh365Mgr.h" +#include "CommPortMgr.h" +#include "FileMgr.h" +#include "WorkTime.h" + + + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif +#include "general.h" +#pragma comment( lib, "Version.lib" ) +#pragma comment( lib, "ADVMOT.lib" ) + + +#define MAX_ASIX_IDX 3 //˶ƿֵ֧ +#define CFG_FILE_PATH _T("\\Parameter\\MotionCard_PCI1245\\PCI_1245.cfg") + +//״̬߳ +UINT CheckAsixStateThread(LPVOID pParam) +{ + MotionCard_PCI1245 *p = (MotionCard_PCI1245 *)pParam; + p->CheckAsixState(); + return 0; +} + + +MotionCard_PCI1245 *gMotionCard_PCI1245 = new MotionCard_PCI1245; +MotionCard_PCI1245::MotionCard_PCI1245(void) +{ + m_bUsed = false;//Ƿʹ + m_bArcCut = false;//Բ岹 + m_Devhand = 0; + memset(m_Axishand,0,sizeof(m_Axishand)); + for (int i=0;i<32;i++) + { + m_End[i]=0; + } + m_ulAxisCount=0; + m_bServoOn =FALSE; + m_bInit=FALSE; + m_CurGpIdx = 0;//ǰʹõ + m_GpHand=0; + AxCount=0; + m_EndNum =0; + m_MotorXAsixIdx = 1;//XӦ + m_MotorX2AsixIdx = 3;//X 2Ӧ + m_MotorYAsixIdx = 0;//YӦ + m_MotorZAsixIdx = 2;//ZӦ + m_bGroupAisxRev = false;//岹 + m_CheckDelay = 20;//ȴ˶ʱʱms + m_bInited = false;//Ƿʼ + + m_bMotorXMoveStop = true;//Ƿ˶ֹͣ + m_bMotorX2MoveStop = true;// + m_bMotorYMoveStop = true;// + m_bMotorZMoveStop = true;// + m_bAutoCloseSevon = false;//رճʱԶرsevon + m_bCheckActCoord = true;//Ƿʵʹդߵ + m_MaxActCoordErr = 10;//դ + m_XYFindOriginByLimit = true;//XYͨҼԭ(β6̨) +} +MotionCard_PCI1245::~MotionCard_PCI1245(void) +{ + +} +CMFCPropertyGridProperty *MotionCard_PCI1245::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("MotionCard_PCI1245");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("PCI 1245L ˶ƿ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUsed");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUsed); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿʹ"); + Description = _T("Ƿʹ˶ƿƵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUsed, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_XYFindOriginByLimit");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_XYFindOriginByLimit); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭ"); + Description = _T("ǷXYͨҼԭ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_XYFindOriginByLimit, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + { + //Աӳ + Name = _T("m_HomeMode");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_HomeMode); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Homeʽ"); + Description = _T("ð忨ṩHomeʱķʽ(0~15)."); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_HomeMode, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + + { + //Աӳ + Name = _T("m_bCheckActCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCheckActCoord); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("դ"); + Description = _T("Ƿդߵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCheckActCoord, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MaxActCoordErr");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxActCoordErr); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("դ"); + Description = _T("դ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxActCoordErr, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bAutoCloseSevon");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bAutoCloseSevon); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("˳ʱرsevon"); + Description = _T("˳ʱԶرsevon"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bAutoCloseSevon, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bArcCut");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bArcCut); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Բ岹"); + Description = _T("Ƿʹƽ̨Բ岹"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bArcCut, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bGroupAisxRev");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bGroupAisxRev); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("岹"); + Description = _T("岹˶,˳"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bGroupAisxRev, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_CheckDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CheckDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("˶ʱms"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CheckDelay, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MotorXAsixIdx");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXAsixIdx); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X "); + Description = _T("X Ӧ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXAsixIdx, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MotorX2AsixIdx");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorX2AsixIdx); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X 2"); + Description = _T("X 2Ӧ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorX2AsixIdx, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MotorYAsixIdx");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorYAsixIdx); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Y "); + Description = _T("Y Ӧ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorYAsixIdx, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MotorZAsixIdx");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorZAsixIdx); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Z "); + Description = _T("Z Ӧ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorZAsixIdx, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + CMFCPropertyGridProperty* pGroup1; + pGroup1 = CreatSpeedGridProperty(m_OrgSpeedMotorZ,_T("Z ԭٶ"),_T("m_OrgSpeedMotorZ")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_MoveSpeedMotorZ,_T("Z ƶٶ"),_T("m_MoveSpeedMotorZ")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_OrgSpeedMotorXY,_T("XY ԭٶ"),_T("m_OrgSpeedMotorXY")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_MoveSpeedMotorX,_T("X ٶ"),_T("m_MoveSpeedMotorX")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_WorkSpeedMotorX,_T("X Ṥٶ"),_T("m_WorkSpeedMotorX")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_MoveSpeedMotorY,_T("Y ٶ"),_T("m_MoveSpeedMotorY")); + pGroup->AddSubItem(pGroup1); + pGroup1 = CreatSpeedGridProperty(m_WorkSpeedMotorY,_T("Y Ṥٶ"),_T("m_WorkSpeedMotorY")); + pGroup->AddSubItem(pGroup1); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = "ϻź"; + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + + Name = "m_AsixNum";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_InPortUnload.m_AsixNum)); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("ڿƵ(0~3)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)(m_InPortUnload.m_AsixNum), Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_PortNum";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_InPortUnload.m_PortNum)); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("˿ں"); + Description = _T("ڿƵĶ˿ں(0~3)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_InPortUnload.m_PortNum, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_bRev";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_InPortUnload.m_bRev)); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Ƿ"); + Description = _T("˿ڿǷ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_InPortUnload.m_bRev, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +CMFCPropertyGridProperty* MotionCard_PCI1245::CreatSpeedGridProperty(PCI1245_SpeedParam &SpeedParam,CString SpeedName,CString ValName) +{ + CString PropertyName;// + CString Description;// + CString Path = _T("MotionCard_PCI1245");//洢· + CString Name; + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(SpeedName); + { + { + //Աӳ + Name = ValName+_T("_Acc");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&SpeedParam.m_Acc); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ٶ"); + Description = _T("ֹٶȵļٶ(mm/s2)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)SpeedParam.m_Acc, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = ValName+_T("_Dec");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&SpeedParam.m_Dec); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ٶ"); + Description = _T("ٶȵֹļٶ(mm/s2)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)SpeedParam.m_Dec, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = ValName+_T("_VelLow");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&SpeedParam.m_VelLow); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ٶ"); + Description = _T("ٶ(mm/s)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)SpeedParam.m_VelLow, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = ValName+_T("_VelHigh");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&SpeedParam.m_VelHigh); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ٶ"); + Description = _T("ٶ(mm/s)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)SpeedParam.m_VelHigh, Description); + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } + return pGroup1; +} + + +void MotionCard_PCI1245::ExportPar(ofstream *pFile) +{ + +} + +#if 1 +void MotionCard_PCI1245::Ini() +{ + if(!m_bUsed) + return; + + CCommPortMgr Comm; + if(!Comm.Open(1,9600))//޷ڵĻ˵ڱʼDZ + return; + Comm.Close(); + //ı------------------------------------------- + CMotor &MotorX = *(CMotor::GetMotor(MOTOR_X)); + CMotor &MotorX2 = *(CMotor::GetMotor(MOTOR_X2)); + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + CMotor &MotorZ = *(CMotor::GetMotor(MOTOR_Z)); + MotorX.SetAsixIdx(m_MotorXAsixIdx); + MotorX2.SetAsixIdx(m_MotorX2AsixIdx); + MotorY.SetAsixIdx(m_MotorYAsixIdx); + MotorZ.SetAsixIdx(m_MotorZAsixIdx); + + //ʼ + if(!InitCard()) + return; + + //򿪿ȡֵ֧ + if(!OpenCard()) + return; + //ıǷϷ + if(!CheckRange(m_MotorXAsixIdx,0,MAX_ASIX_IDX) + || !CheckRange(m_MotorX2AsixIdx,0,MAX_ASIX_IDX) + || !CheckRange(m_MotorYAsixIdx,0,MAX_ASIX_IDX) + || !CheckRange(m_MotorZAsixIdx,0,MAX_ASIX_IDX) + ) + { + gLogMgr->WriteDebugLog("[Error]---->invalid Asix Idx"); + return; + } + + //ȡ˶ƿIJļ.cfg + LoadConfigFile(); + //XY Ϊһ(֧Բ岹˶) + AddAsixToGroup(m_GpHand,m_MotorXAsixIdx); + AddAsixToGroup(m_GpHand,m_MotorYAsixIdx); + + SetCurGpIdx(0); + + //ԶSvOn + SetSvOn(true); + + //ȡ״̬߳ + AfxBeginThread(CheckAsixStateThread,this); +} +void MotionCard_PCI1245::OnExitApp() +{ + if(m_bAutoCloseSevon) + SetSvOn(false); +} +void MotionCard_PCI1245::SetSvOn(bool bOn) +{ + gLogMgr->WriteDebugLog("Fuc---->Motion Asix SetSvOn"); + for(int k=0;k<=MAX_ASIX_IDX;k++) + { + Acm_AxSetSvOn(m_Axishand[k],bOn); + Sleep(100); + } +} +//ʼ˶ƿ +bool MotionCard_PCI1245::InitCard() +{ + U32 Result; + ULONG i=0; + ULONG deviceNumber=0;// + CString strTemp; + + Result = Acm_GetAvailableDevs(m_avaDevs,MAX_DEVICES,&deviceNumber); + if (Result!=SUCCESS || deviceNumber<=0) + { + gLogMgr->WriteDebugLog("[Error]---->Acm_GetAvailableDevs"); + return false; + } + m_dwDevNum=m_avaDevs[0].dwDeviceNum;//ǰ豸 + gLogMgr->WriteDebugLog("Fuc---->InitMotionCard 1245L Success"); + m_bInited = true;//Ƿʼ + return true; +} +//򿪿 +bool MotionCard_PCI1245::OpenCard() +{ + U32 Result; + ULONG i=0; + CString strTemp; + CString strString; + ULONG AxisPerDev=0; + ULONG AxisNumber=0; + //豸m_dwDevNum ,豸m_Devhand + Result = Acm_DevOpen(m_dwDevNum, &m_Devhand); + if (Result != SUCCESS) + { + strString.Format("Open Device Failed With Error Code:%x",Result); + gLogMgr->WriteDebugLog(strString); + return false; + } + //豸 + Result = Acm_GetU32Property(m_Devhand,FT_DevAxesCount,&AxisPerDev); + if (Result!=SUCCESS) + { + strString.Format("Get Device Axes Number Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return false; + } + m_ulAxisCount=AxisPerDev; + //if you device is fixed,for example: PCI-1245 m_ulAxisCount =4 + for(AxisNumber=0;AxisNumberWriteDebugLog(strString); + return false; + } + //ijʼΪ0 + Acm_AxSetCmdPosition(m_Axishand[AxisNumber],0); + } + m_bInit = TRUE; //Ƿ򿪳ɹ + gLogMgr->WriteDebugLog("Fuc---->OpenCard 1245L Success"); + return true; +} +//ʹ˶ƿʱЩܲʹ +bool MotionCard_PCI1245::CheckFucCanUsed() +{ + if(m_bUsed) + { + CMsgBox MsgBox; + MsgBox.Show(_T("ʹ˶ƿʱʹ")); + return false; + } + return true; +} +//ȡ˶ƿIJļ.cfg +void MotionCard_PCI1245::LoadConfigFile() +{ + CString strTemp; + CFileMgr FileMgr; + FileMgr.GetFullFilePath(strTemp,CFG_FILE_PATH);//ȡ· + + //Set all configurations for the device according to the loaded file + U32 Result; + Result=Acm_DevLoadConfig(m_Devhand,strTemp.GetBuffer(strTemp.GetLength())); + if(Result != SUCCESS) + { + strTemp.Format("Load Config Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } + gLogMgr->WriteDebugLog("Fuc---->LoadConfigFile 1245 Success"); +} +#endif +#if 1//˶ +//ᵽ +bool MotionCard_PCI1245::AddAsixToGroup(HAND &GpHand,UINT index) +{ + U32 Result; + CString strTemp; + Result = Acm_GpAddAxis(&GpHand,m_Axishand[index]); + if (Result!=SUCCESS) + { + strTemp.Format("Add Axis To Group Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return false; + } + CString LogStr; + LogStr.Format(_T("AddAsixToGroup [Asix index] = [%d]"),index); + gLogMgr->WriteDebugLog(LogStr); + return true; +} +//õǰ +void MotionCard_PCI1245::SetCurGpIdx(int idx) +{ + CString LogStr; + LogStr.Format(_T("SetCurGpIdx [index] = [%d]"),idx); + gLogMgr->WriteDebugLog(LogStr); + + m_CurGpIdx = idx; + + gPlatformXY->SetCoord(GetPlatformXYCoord()); +} +void MotionCard_PCI1245::ResetAllAsixCoord() +{ + gLogMgr->WriteDebugLog("ResetAllAsixCoord"); + Acm_AxSetCmdPosition(m_Axishand[m_MotorXAsixIdx],0); + Acm_AxSetCmdPosition(m_Axishand[m_MotorX2AsixIdx],0); + Acm_AxSetCmdPosition(m_Axishand[m_MotorYAsixIdx],0); + Acm_AxSetCmdPosition(m_Axishand[m_MotorZAsixIdx],0); + //ͬʱùդߵ + Acm_AxSetActualPosition(m_Axishand[m_MotorXAsixIdx],0); + Acm_AxSetActualPosition(m_Axishand[m_MotorX2AsixIdx],0); + Acm_AxSetActualPosition(m_Axishand[m_MotorYAsixIdx],0); + //֪ͨ۲ƽ̨仯 + gPlatformXY->NotifyObservers(); +} +//˶ƿȡƽ̨ǰ +Dbxy MotionCard_PCI1245::GetPlatformXYCoord() +{ + Dbxy Coord; + Dbxy OnePulseDis = gPlatformXY->GetMotorXYOnePulseDis(); + //ȡƿصλ + int MotorXAsixIdx = (m_CurGpIdx==0)?m_MotorXAsixIdx:m_MotorX2AsixIdx; + Acm_AxGetCmdPosition(m_Axishand[MotorXAsixIdx],&Coord.x); + Acm_AxGetCmdPosition(m_Axishand[m_MotorYAsixIdx],&Coord.y); + + //Ϊmm λ + Coord.x *= OnePulseDis.x; + Coord.y *= OnePulseDis.y; + + CString LogStr; + LogStr.Format(_T("[XYCoord.x] = [%f] [XYCoord.y] = [%f]"),Coord.x,Coord.y); + gLogMgr->WriteDebugLog(LogStr); + return Coord; +} +//ǿƽ̨ĵǰ +void MotionCard_PCI1245::SetCoord(Dbxy coord) +{ + if(!m_bUsed) + return; + //mm תΪ + Dbxy OnePulseDis = gPlatformXY->GetMotorXYOnePulseDis(); + coord.x= coord.x/OnePulseDis.x; + coord.y = coord.y/OnePulseDis.y; + + int MotorXAsixIdx = (m_CurGpIdx==0)?m_MotorXAsixIdx:m_MotorX2AsixIdx; + + Acm_AxSetCmdPosition(m_Axishand[MotorXAsixIdx],coord.x); + Acm_AxSetCmdPosition(m_Axishand[m_MotorYAsixIdx],coord.y); + gLogMgr->WriteDebugLog("Fuc---->SetCoord 1245L Success"); +} +//mm תΪ嵥λ +Dbxy MotionCard_PCI1245::MM2PulseCoord(Dbxy Coord) +{ + Dbxy OnePulseDis = gPlatformXY->GetMotorXYOnePulseDis(); + Dbxy PulseCoord; + PulseCoord.x = Coord.x/OnePulseDis.x; + PulseCoord.y = Coord.y/OnePulseDis.y; + + return PulseCoord; +} +//ȴƽ̨ƶֹͣ +void MotionCard_PCI1245::WaitPlatfromStop() +{ + //ȴֱƶ---------------------- + int TotalTimes = 0; + while(1) + { + if(TotalTimes++>100000)//ֹѭ + { + break; + } + Sleep(m_CheckDelay); + //Get the Group's current state + U16 GpState; + Acm_GpGetState(m_GpHand, &GpState); + if(GpState != 4)//STA_GP_MOTION ʾ״̬ + { + break; + } + } +} +//ֱ߲岹ƶƽ̨XY --------------------------------------------------- +Dbxy MotionCard_PCI1245::MovePlatformXY(Dbxy Coord) +{ + //ƶ + { + Dbxy CurCoord = gPlatformXY->GetCoord(); + CString MotorStr = (m_CurGpIdx==0)?(MOTOR_X):(MOTOR_X2); + CMotor &MotorX = *(CMotor::GetMotor(MotorStr)); + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + double eps = 0.005;//Ҫƶʱŵ,׿ + if(!IsTwoDbEqual(Coord.y,CurCoord.y,eps)) + { + MoveMotor(MotorY,Coord.y); + } + if(!IsTwoDbEqual(Coord.x,CurCoord.x,eps)) + { + MoveMotor(MotorX,Coord.x); + } + } + gLogMgr->WriteDebugLog("Fuc---->MovePlatformXY 1245L"); + CString strTemp; + strTemp.Format("Coord x : %f,Coord y : %f",Coord.y); + gLogMgr->WriteDebugLog(strTemp); + //˶ƿȡƽ̨ǰ--------------- + return GetPlatformXYCoord(); +} +//ƽֱ̨߲岹˶ٶ(bWorkSpeed ǷΪٶ) +void MotionCard_PCI1245::SetPlatformSpeed(bool bWorkSpeed) +{ + +} +//mm λתΪ嵥λ +PCI1245_SpeedParam MotionCard_PCI1245::MM2PulseParam(PCI1245_SpeedParam &SpeedParam,double OnePulseDis) +{ + PCI1245_SpeedParam Param; + Param.m_Acc = SpeedParam.m_Acc/OnePulseDis;//ٶ(mm/s2) + Param.m_Dec = SpeedParam.m_Dec/OnePulseDis;//ٶ(mm/s2) + Param.m_VelLow = SpeedParam.m_VelLow/OnePulseDis;//ٶ(mm/s) + Param.m_VelHigh = SpeedParam.m_VelHigh/OnePulseDis;//ٶ(mm/s) + return Param; +} +void MotionCard_PCI1245::SetPlatformSpeedExt(PCI1245_SpeedParam GpParam) +{ + U32 Result; + double GpVelLow; + double GpVelHigh; + double GpAcc; + double GpDec; + double GpJerk; + CString strTemp; + + HAND GpHand = m_GpHand; + + GpVelLow = GpParam.m_VelLow; + Result = Acm_SetF64Property(GpHand,PAR_GpVelLow,GpVelLow); + if(Result != SUCCESS) + { + strTemp.Format("Set PAR_GpVelLow Property Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } + GpVelHigh = GpParam.m_VelHigh; + Result = Acm_SetF64Property(GpHand,PAR_GpVelHigh,GpVelHigh); + if(Result != SUCCESS) + { + strTemp.Format("Set PAR_GpVelHigh Property Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } + GpAcc = GpParam.m_Acc; + Result = Acm_SetF64Property(GpHand,PAR_GpAcc,GpAcc); + if(Result != SUCCESS) + { + strTemp.Format("Set PAR_GpAcc Property Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } + GpDec = GpParam.m_Dec; + Result = Acm_SetF64Property(GpHand,PAR_GpDec,GpDec); + if(Result != SUCCESS) + { + strTemp.Format("Set PAR_GpDec Property Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } + GpJerk = 0;//ٷʽ + Result = Acm_SetF64Property(GpHand,PAR_GpJerk,GpJerk); + if(Result != SUCCESS) + { + strTemp.Format("Set PAR_GpJerk Property Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strTemp); + return; + } +} +#endif +#if 1// +//ԭ +bool MotionCard_PCI1245::FindOrigin(CMotor &Motor) +{ + bool ret; + if(m_XYFindOriginByLimit) + { + if(Motor.Name() == MOTOR_Z)//Z ԭ㻹 + ret = FindOriginExt(Motor); + else//XYʹҼ޵ķʽ + ret = FindOriginByLimit(Motor); + } + else + { + ret = FindOriginExt(Motor); + } + return ret; +} +//ԭ㿪صķʽ +bool MotionCard_PCI1245::FindOriginExt(CMotor &Motor) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return false; + + //Ϊ0 + Acm_AxSetCmdPosition(m_Axishand[AsixIdx],0); + + U32 HomeMode = m_HomeMode%16; + //U32 HomeMode = 6;//ԭģʽ(ԭ,ȷƳԭ) + U32 DirMode = (Motor.GetFindOriginDir())?1:0;//ԭ㷽 + Acm_AxHome(m_Axishand[AsixIdx],HomeMode,DirMode); + //ȴԭ + int TotalTimes = 0; + while(1) + { + TotalTimes++; + if((TotalTimes*m_CheckDelay)>30000)//ֹѭ + { + CString str; + str.Format("%dѰԭ㳬ʱ.", AsixIdx); + AfxMessageBox(str); + return false; + } + Sleep(m_CheckDelay); + //Get the Group's current state + U16 GpState; + Acm_AxGetState(m_Axishand[AsixIdx],&GpState); + if(GpState== STA_AX_HOMING)//STA_AxReady׼ȴµ + { + break; + } + } + Sleep(100); //Sleep(1000); + CString LogStr; + + //ijʼΪ0 + Acm_AxSetCmdPosition(m_Axishand[AsixIdx],0); + + LogStr.Format("Fuc---->FindOrigin Success[Asix Idx]: %d",AsixIdx); + gLogMgr->WriteDebugLog(LogStr); + return true; +} + +//ͨҼ޵ķʽԭ +bool MotionCard_PCI1245::FindOriginByLimit(CMotor &Motor) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return false; + + //Ϊ0 + Acm_AxSetCmdPosition(m_Axishand[AsixIdx],0); + //ƶ㹻(ֱ) + double ReverseMoveDis = Motor.GetReverseMoveDis(); + if(Motor.GetFindOriginDir()==false) + ReverseMoveDis *=(-1); + MoveMotor(Motor,ReverseMoveDis); + CString LogStr; + LogStr.Format("Fuc---->FindOriginByLimit [Asix Idx]: %d",AsixIdx); + gLogMgr->WriteDebugLog(LogStr); + + //ijʼΪ0 + //Acm_AxSetCmdPosition(m_Axishand[AsixIdx],0); + return true; +} + + +//Ĵ״̬ +void MotionCard_PCI1245::ResetAllAsixErr() +{ + CString LogStr; + LogStr.Format("Fuc---->ResetAllAsixErr"); + gLogMgr->WriteDebugLog(LogStr); + for(int k=0;k<=MAX_ASIX_IDX;k++) + { + Acm_AxResetError(m_Axishand[k]); + } +} +//ƶԭƫλ +bool MotionCard_PCI1245::MoveToOriginOffset(CMotor &Motor) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return false; + + double OffsetDis = Motor.GetOriginOffsetDis();//ƶ + bool bFindOriginDir = Motor.GetFindOriginDir();//ԭķ + OffsetDis *= bFindOriginDir?(1):(-1); + MoveMotor(Motor,OffsetDis); + + //Ϊ0 + Acm_AxSetCmdPosition(m_Axishand[AsixIdx],0); + Motor.SetCoord(0); + CString LogStr; + LogStr.Format("Fuc---->MoveToOriginOffset Success[Asix Idx]: %d",AsixIdx); + gLogMgr->WriteDebugLog(LogStr); + return true; +} +//ƶCoord(ƶʽ) +bool MotionCard_PCI1245::MoveMotor(CMotor &Motor,double &Coord) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return false; + + U32 Result; + CString strString; + //תΪ---------------------------------- + if(Motor.IsbReverseDir()) + Coord *= -1; + + F64 Position = Coord/Motor.GetOnePulseDis(); + strString.Format("Move Coord: %f",Coord); + gLogMgr->WriteDebugLog(strString); + strString.Format("Move Position: %d",(int)Position); + gLogMgr->WriteDebugLog(strString); + Result=Acm_AxMoveAbs(m_Axishand[AsixIdx],Position); + if(Result != SUCCESS) + { + strString.Format("Move Failed With Error Code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return false; + } + return true; +} +PCI1245_SpeedParam MotionCard_PCI1245::GetMotorSpeed(CMotor &Motor,ESpeedType SpeedType) +{ + PCI1245_SpeedParam MotorSpeedParam; + if(Motor.Name() == MOTOR_X || Motor.Name() == MOTOR_X2) + { + if(SpeedType==_SpeedType_Org) + MotorSpeedParam = m_OrgSpeedMotorXY; + else if(SpeedType==_SpeedType_Move) + MotorSpeedParam = m_MoveSpeedMotorX; + else if(SpeedType==_SpeedType_Work) + MotorSpeedParam = m_WorkSpeedMotorX; + } + else if(Motor.Name() == MOTOR_Y) + { + if(SpeedType==_SpeedType_Org) + MotorSpeedParam = m_OrgSpeedMotorXY; + else if(SpeedType==_SpeedType_Move) + MotorSpeedParam = m_MoveSpeedMotorY; + else if(SpeedType==_SpeedType_Work) + MotorSpeedParam = m_WorkSpeedMotorY; + } + else if(Motor.Name() == MOTOR_Z) + { + if(SpeedType==_SpeedType_Org) + MotorSpeedParam = m_OrgSpeedMotorZ; + else if(SpeedType==_SpeedType_Move) + MotorSpeedParam = m_MoveSpeedMotorZ; + } + + //תΪ嵥λ + double OnePulseDis = Motor.GetOnePulseDis(); + PCI1245_SpeedParam SpeedParam = MM2PulseParam(MotorSpeedParam,OnePulseDis); + + return SpeedParam; +} +//õĿٶ +void MotionCard_PCI1245::SetMotorSpeed(CMotor &Motor,ESpeedType SpeedType) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return ; + + PCI1245_SpeedParam SpeedParam = GetMotorSpeed(Motor,SpeedType); + + U32 Result; + double AxVelLow; + double AxVelHigh; + double AxAcc; + double AxDec; + double AxJerk; + CString strString; + AxVelLow = SpeedParam.m_VelLow; + AxVelHigh = SpeedParam.m_VelHigh; + AxAcc = SpeedParam.m_Acc; + AxDec = SpeedParam.m_Dec; + + Result = Acm_SetF64Property(m_Axishand[AsixIdx],PAR_AxVelLow,AxVelLow); + if (Result != SUCCESS) + { + strString.Format("Set low velocity failed with error code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return; + } + Result = Acm_SetF64Property(m_Axishand[AsixIdx],PAR_AxVelHigh,AxVelHigh); + if (Result != SUCCESS) + { + strString.Format("Set high velocity failed with error code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return; + } + Result = Acm_SetF64Property(m_Axishand[AsixIdx],PAR_AxAcc,AxAcc); + if (Result != SUCCESS) + { + strString.Format("Set acceleration failed with error code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return; + } + Result = Acm_SetF64Property(m_Axishand[AsixIdx],PAR_AxDec,AxDec); + if (Result != SUCCESS) + { + strString.Format("Set deceleration failed with error code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return; + } + AxJerk = 0; + Result = Acm_SetF64Property(m_Axishand[AsixIdx],PAR_AxJerk,AxJerk); + if(Result != SUCCESS) + { + strString.Format("Set the type of velocity profile failed with error code: %x",Result); + gLogMgr->WriteDebugLog(strString); + return; + } +} +//״̬ +void MotionCard_PCI1245::CheckAsixState() +{ + while(1) + { + Sleep(m_CheckDelay); + + m_bMotorXMoveStop = CheckAsixStateExt(m_Axishand[m_MotorXAsixIdx]); + m_bMotorX2MoveStop = CheckAsixStateExt(m_Axishand[m_MotorX2AsixIdx]); + m_bMotorYMoveStop = CheckAsixStateExt(m_Axishand[m_MotorYAsixIdx]); + m_bMotorZMoveStop = CheckAsixStateExt(m_Axishand[m_MotorZAsixIdx]); + } +} +bool MotionCard_PCI1245::CheckAsixStateExt(HAND AxisHandle) +{ + U16 GpState; + Acm_AxGetState(AxisHandle,&GpState); + //STA_AX_PTP_MOT ʾ״̬ + if (GpState != STA_AX_HOMING && GpState != STA_AX_PTP_MOT) + { + return true; + } + return false; +} +//ȡAsixIdx Port ˿ڵ״̬(-1:,0:,1:) +int MotionCard_PCI1245::ReadIOState(CPci1245IOPort IOPort) +{ + int AsixIdx = IOPort.m_AsixNum; + int Port = IOPort.m_PortNum; + + if(Port<0 || Port>7) + return -1; + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return -1; + + U32 Ret; // ֵ + U8 bitData; + Ret = Acm_AxDiGetBit(m_Axishand[AsixIdx],Port,&bitData); + if(Ret != SUCCESS) + { + CString strTemp; + strTemp.Format("ReadIOState Failed With Error Code: %x",Ret); + gLogMgr->WriteDebugLog(strTemp); + return -1; + } + if(IOPort.m_bRev) + { + if(bitData==0) + bitData = 1; + else + bitData = 0; + } + return bitData;//bitData ֵΪ0 1 +} +//ϻ״̬(false ʾڹ,ȫ) +bool MotionCard_PCI1245::CheckUnloadState() +{ + int Ret = ReadIOState(m_InPortUnload); + if(Ret == 1) + return false; + return true; +} +#endif + +#if 1 +//˶ƿȡǰ +double MotionCard_PCI1245::GetMotorCoord(CMotor &Motor) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return -1; + + double Coord; + double OnePulseDis = Motor.GetOnePulseDis(); + //ȡƿصλ + Acm_AxGetCmdPosition(m_Axishand[AsixIdx],&Coord); + //Ϊmm λ + Coord *= OnePulseDis; + return Coord; +} +//ȡʵλ(դ߷ֵ) +double MotionCard_PCI1245::GetMotorActCoord(CMotor &Motor) +{ + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return -1; + double Coord; + //ȡƿصλ + Acm_AxGetActualPosition(m_Axishand[AsixIdx],&Coord); + return Coord; +} +//͹դǷһ +bool MotionCard_PCI1245::CheckMotorActCoord(CMotor &Motor) +{ + if(!m_bCheckActCoord) + return true; + int AsixIdx = Motor.GetAsixIdx();//ı + if(!CheckRange(AsixIdx,0,MAX_ASIX_IDX)) + return false; + + double CmdCoord;// + Acm_AxGetCmdPosition(m_Axishand[AsixIdx],&CmdCoord); + double ActualCoord;//դ + + //ȡƿصλ + Acm_AxGetActualPosition(m_Axishand[AsixIdx],&ActualCoord); + if(Motor.IsbRevActCoordDir()) + ActualCoord *=(-1); + + double ActPluseErrCnt = CmdCoord-ActualCoord; + if(fabs(ActPluseErrCnt)>m_MaxActCoordErr) + { + return false; + } + return true; +} +#endif diff --git a/LaiPuLaser/MotionCard_PCI1245.h b/LaiPuLaser/MotionCard_PCI1245.h new file mode 100644 index 0000000..d348e35 --- /dev/null +++ b/LaiPuLaser/MotionCard_PCI1245.h @@ -0,0 +1,150 @@ +#pragma once +#include "module.h" +#include "advmotdrv.h" +#include "General.h" +#include "AdvMotApi.h" + +//ٶȵ +enum ESpeedType +{ + _SpeedType_Org=0,//ԭٶ + _SpeedType_Move,//ٶ + _SpeedType_Work,//ٶ + _SpeedType_Org2th = 0,//ڶԭٶ +}; +//˶ٶȲ +class PCI1245_SpeedParam +{ +public: + PCI1245_SpeedParam(void) + { + m_Acc = 50; + m_Dec = 50; + m_VelLow = 20; + m_VelHigh = 50; + }; +public: + double m_Acc;//ٶ + double m_Dec;//ٶ + double m_VelLow;//ٶ(mm/s) + double m_VelHigh;//ٶ(mm/s) +}; + +class CPci1245IOPort +{ +public: + CPci1245IOPort(void) + { + m_AsixNum = -1;// + m_PortNum = -1;//˿ں + m_bRev = false;//Ƿ + }; +public: + int m_AsixNum;// + int m_PortNum;//˿ں + bool m_bRev;//Ƿ +}; + +class CMotor; +//лPCI1245 PCI ˶ƿ +class MotionCard_PCI1245 :public CModule +{ +public: + MotionCard_PCI1245(void); + ~MotionCard_PCI1245(void); + virtual MODULE GetModuleType(){return _MOTION_CARD_PCI1245L;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void Ini(); + virtual void OnExitApp(); + virtual void ExportPar(ofstream *pFile); + bool IsbUsed(){return m_bUsed;}; + Dbxy MovePlatformXY(Dbxy Coord); + Dbxy GetPlatformXYCoord(); + bool FindOriginExt(CMotor &Motor); + bool FindOriginByLimit(CMotor &Motor); + bool FindOrigin(CMotor &Motor); + bool MoveToOriginOffset(CMotor &Motor); + void SetCoord(Dbxy coord); + bool MoveMotor(CMotor &Motor,double &Coord); + double GetMotorCoord(CMotor &Motor); + bool CheckFucCanUsed(); + bool IsbArcCut(){return m_bArcCut;}; + bool IsbInited(){return m_bInited;}; + void SetPlatformSpeed(bool bWorkSpeed); + void SetCurGpIdx(int idx); + int GetCurGpIdx(){return m_CurGpIdx;}; + void ResetAllAsixErr(); + void ResetAllAsixErrExt(); + void CheckAsixState(); + bool IsbMotorXMoveStop(){return m_bMotorXMoveStop;}; + bool IsbMotorX2MoveStop(){return m_bMotorX2MoveStop;}; + bool IsbMotorYMoveStop(){return m_bMotorYMoveStop;}; + bool IsbMotorZMoveStop(){return m_bMotorZMoveStop;}; + void SetMotorSpeed(CMotor &Motor,ESpeedType SpeedType); + void SetSvOn(bool bOn); + void ResetAllAsixCoord(); + double GetMotorActCoord(CMotor &Motor); + bool CheckMotorActCoord(CMotor &Motor); + bool CheckUnloadState(); +private: + int ReadIOState(CPci1245IOPort IOPort); + bool InitCard(); + bool OpenCard(); + bool AddAsixToGroup(HAND &GpHand,UINT index); + PCI1245_SpeedParam MM2PulseParam(PCI1245_SpeedParam &SpeedParam,double OnePulseDis); + void SetPlatformSpeedExt(PCI1245_SpeedParam GpParam) ; + Dbxy MM2PulseCoord(Dbxy Coord); + void WaitPlatfromStop(); + void LoadConfigFile(); + PCI1245_SpeedParam GetMotorSpeed(CMotor &Motor,ESpeedType SpeedType); + bool CheckAsixStateExt(HAND AxisHandle); + + CMFCPropertyGridProperty* CreatSpeedGridProperty(PCI1245_SpeedParam &SpeedParam,CString SpeedName,CString ValName); +private: + bool m_bUsed;//Ƿʹ + bool m_bInited;//Ƿʼ + bool m_bArcCut;//Բ岹 + bool m_bGroupAisxRev;//岹 + bool m_bAutoCloseSevon;//رճʱԶرsevon + int m_MotorXAsixIdx;//XӦ + int m_MotorX2AsixIdx;//X2 Ӧ + int m_MotorYAsixIdx;//YӦ + int m_MotorZAsixIdx;//ZӦ + + bool m_bMotorXMoveStop;//Ƿ˶ֹͣ + bool m_bMotorX2MoveStop;// + bool m_bMotorYMoveStop;// + bool m_bMotorZMoveStop;// + bool m_XYFindOriginByLimit;//XYͨҼԭ(β6̨) + int m_CheckDelay;//ȴ˶ʱʱms + int m_HomeMode=6;//ð忨Homeʱķʽ. + + PCI1245_SpeedParam m_OrgSpeedMotorZ;//Zԭٶ + PCI1245_SpeedParam m_MoveSpeedMotorZ;//Zƶٶ + PCI1245_SpeedParam m_OrgSpeedMotorXY;//Xԭٶ + PCI1245_SpeedParam m_MoveSpeedMotorX;//Xٶ + PCI1245_SpeedParam m_WorkSpeedMotorX;//XṤٶ + PCI1245_SpeedParam m_MoveSpeedMotorY;//Xٶ + PCI1245_SpeedParam m_WorkSpeedMotorY;//XṤٶ + + CPci1245IOPort m_InPortUnload;//ϻź +public: + bool m_bCheckActCoord;//Ƿʵʹդߵ +private: + double m_MaxActCoordErr;//դ + HAND m_Devhand;//豸 + HAND m_Axishand[32];//ľ + DEVLIST m_avaDevs[MAX_DEVICES]; + double m_End[32]; + int m_CurGpIdx;//ǰʹõ + HAND m_GpHand;//ľ + ULONG m_ulAxisCount;// + + BOOL m_bServoOn; + DWORD m_dwDevNum;//豸 + BOOL m_bInit; + USHORT AxisArray[32]; + USHORT AxCount; + UINT m_EndNum; +}; +extern MotionCard_PCI1245 *gMotionCard_PCI1245; \ No newline at end of file diff --git a/LaiPuLaser/Motor.cpp b/LaiPuLaser/Motor.cpp new file mode 100644 index 0000000..e171855 --- /dev/null +++ b/LaiPuLaser/Motor.cpp @@ -0,0 +1,770 @@ +#include "StdAfx.h" +#include "Motor.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "PciPortMgr.h" +#include "MsgBox.h" +#include "LogMgr.h" +#include "AuthorityMgr.h" +#include "ExceptionMsg.h" +#include "FileMgr.h" +#include "DeviceState.h" +#include "ExceptionMsg.h" +#include "MotionCard_PCI1245.h" + + +#define MIN_DELAY 5 //Сʱʱus + +CMotor *CMotor::gMotorX = new CMotor(MOTOR_X);//X +CMotor *CMotor::gMotorX2 = new CMotor(MOTOR_X2);//X2 +CMotor *CMotor::gMotorY = new CMotor(MOTOR_Y);//Y +CMotor *CMotor::gMotorZ = new CMotor(MOTOR_Z);//Z + +CMotor::CMotor(CString Name) +{ + m_Name = Name; + + //Ĭֵ + m_OnePulseDis = 0.005;//һƶ + m_MaxPulseCnt = 50000;//ԭʱ,ĿΪ˷ֹӲѭ + m_OriginOffsetDis = 0;//ԭķƶ + m_FindOriginDir = true;//ԭķ(true Ϊ,false Ϊ) + m_MoveDelay = 30;//ʱus + m_WorkDelay = 30;//ʱʱus + m_OriginPulseDelay = 50;//ʼԶʱus + m_MaxOriginOffsetDis = -1;//ԭķƶ(mm) -- ҪDZӲ(-1 ʾδ) + m_bNeedCheckLimit = true;//ʱǷλ + + m_StartDelay = 300;//ʼٶʱ + m_PerChangeDelay = 1;//ÿθıʱus + m_bAccelerateCtrl = false;//ǷӼٿ + m_Coord = 0;//ֵ + + m_FindOriginDelay = 0;//ҵԭĵȴʱ(ms) ŷľ + m_ReverseMoveDelay= 500;//ҵ翪غ󷴷ƶʱus (ֱص翪ΪOFF ) + + m_bCheckFiber = false;//ʱ + + m_bReverseMoveFirst = false;//ԭ֮ǰǷȷƶһξ + m_bReverseMoveDis = 0;//ԭ֮ǰǷȷƶľmm + + m_AsixIdx = 0;//˶ƿеı + m_bReverseDir = false;//Ƿ + m_bRevActCoordDir = false;//դ߷ +} +CMotor::~CMotor(void) +{ +} +#if 1//дmodule ĺ +CMFCPropertyGridProperty *CMotor::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("motor")+m_Name;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("")+m_Name; + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_OnePulseDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OnePulseDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ֱ"); + Description = _T("һƶľ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OnePulseDis, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bNeedCheckLimit");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bNeedCheckLimit); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿλ"); + Description = _T("Ƿλ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bNeedCheckLimit, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bReverseDir");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bReverseDir); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿ"); + Description = _T("Ƿ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bReverseDir, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bRevActCoordDir");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bRevActCoordDir); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("դ߷"); + Description = _T("դǷ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bRevActCoordDir, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } +//-------------------------------------------------------------------------------// + //ٶ + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ٶ")); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MoveDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MoveDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("֮ļʱ,λus(΢),ֵԽС˶Խ,ҪǿڵķƵʵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_WorkDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("֮ļʱ,λus(΢),ֵԽС˶Խ,ҪǿڵķƵʵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_WorkDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ԭ")); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bReverseMoveFirst");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bReverseMoveFirst); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȷƶ"); + Description = _T("ԭ֮ǰǷȷƶһξ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bReverseMoveFirst, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bReverseMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bReverseMoveDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ƶ"); + Description = _T("ԭ֮ǰȷƶľmm"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bReverseMoveDis, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_OriginPulseDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OriginPulseDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭʱ"); + Description = _T("֮ļʱ,λus(΢),ֵԽС˶Խ,ҪǿڵķƵʵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OriginPulseDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_FindOriginDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FindOriginDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭȴʱ"); + Description = _T("ҵԭĵȴʱ(ms) ŷľ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FindOriginDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_ReverseMoveDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ReverseMoveDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƴλʱ"); + Description = _T("ҵ翪غ󷴷ƶ뿪λʱus (ֱص翪ΪOFF )"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ReverseMoveDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + //ٶ + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("Ӽٿ")); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bAccelerateCtrl");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bAccelerateCtrl); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ǷӼٿ"); + Description = _T("˶ʱǷʹüӼٿ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bAccelerateCtrl, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_StartDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_StartDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʼʱ"); + Description = _T("ʱʱ(us(΢)))"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_StartDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_PerChangeDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_PerChangeDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("ÿʱĸı(us(΢)))"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_PerChangeDelay, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } +//-------------------------------------------------------------------------------// + //ԭز + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ԭ")); + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_FindOriginDir");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FindOriginDir); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭķ"); + Description = _T("ԭķ,true ,false "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FindOriginDir, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_OriginOffsetDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OriginOffsetDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭƫƾ"); + Description = _T("ԭķƶ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OriginOffsetDis, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_MaxOriginOffsetDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxOriginOffsetDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭƫƾ"); + Description = _T("ԭķƶ(Ӳ)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxOriginOffsetDis, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_MaxPulseCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxPulseCnt); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ԭ"); + Description = _T("ԭʱ,ĿΪ˷ֹӲѭ,Ȼûҵԭʱᱨ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxPulseCnt, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + + + //-------------------------------------------------------------------------------// + pGroup->AddSubItem(pGroup1); + } + return pGroup; +} +void CMotor::ExportPar(ofstream *pFile) +{ + +} + +void CMotor::Ini() +{ + SetCoord(0); + gMotorZ->NeedCheckFiber(); + //ʼʱȡ˿ڵֵ + Update(); +} +void CMotor::SetPciPortType(CString DirPortType,CString PulsePortType,CString LimitPortType_F,CString LimitPortType_N) +{ + m_DirPortType = DirPortType; + m_PulsePortType = PulsePortType; + m_LimitPortType_F = LimitPortType_F; + m_LimitPortType_N = LimitPortType_N; +} +//յԱ仯Ĵ(¶ȡ˿ں) +void CMotor::Update() +{ + m_DirPort = gPciPortMgr->GetCtrlPort(m_DirPortType);//˿ + m_PulsePort = gPciPortMgr->GetCtrlPort(m_PulsePortType);//˿ + m_LimitPort_F = gPciPortMgr->GetCtrlPort(m_LimitPortType_F);//λ˿ + m_LimitPort_N = gPciPortMgr->GetCtrlPort(m_LimitPortType_N);//λ˿ + + m_FiberPort1 = gPciPortMgr->GetCtrlPort(PCI_PORT_FIBER1);//˶˿1 + m_FiberPort2 = gPciPortMgr->GetCtrlPort(PCI_PORT_FIBER2);//˶˿1 +} +#endif +//Ƿλ +bool CMotor::IsLimitOn() +{ + if(m_bNeedCheckLimit == false)//Ҫλ + return false; + + //m_CurLimitPort Ǹݵƶȷ + if(gPciCh365Mgr->ReadPortState(m_CurLimitPort) ) + { + return true; + } + return false; +} +//ʼҵеԭ(bSavePulseCnt ʾǷ¼, صϵλ) +bool CMotor::FindOrigin(bool bSavePulseCnt) +{ + +//ȷƶһξ------------------------------------ + if(m_bReverseMoveFirst && !bSavePulseCnt) + { + SetDir(!m_FindOriginDir); + double PulseCnt; + double MovePulseCnt = m_bReverseMoveDis/GetOnePulseDis(); + SendSerialPulses(MovePulseCnt,PulseCnt,m_OriginPulseDelay); + } +//ԭ---------------------------------------------------- + //÷ + SetDir(m_FindOriginDir); + bool ret = false; + double PulseCnt; + + bool bNeedCheckLimit = m_bNeedCheckLimit;// + m_bNeedCheckLimit = true;//ԭʱλ + ret = SendSerialPulses(m_MaxPulseCnt,PulseCnt,m_OriginPulseDelay); + m_bNeedCheckLimit = bNeedCheckLimit;//ָ + + if(ret)//巢˻ûҵԭ + { + CString str = m_Name + _T("ԭʧ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + return false; + } +//ƶλ------------------------------------------------------- + double ReversePlusCnt = 0;//ƶ + //ƶֱ뿪λ + if(m_FindOriginDelay>0) + { + Sleep(m_FindOriginDelay); + // + SetDir(!m_FindOriginDir); + //üԭλ + SetCurLimitPortByDir(m_FindOriginDir); + ReversePlusCnt = MoveDeviateLimit(m_ReverseMoveDelay); + Sleep(m_FindOriginDelay/2);//ƶٵȴһ + } + gLogMgr->WriteDebugLog("ƶ","",ReversePlusCnt); + PulseCnt -= ReversePlusCnt; + gLogMgr->WriteDebugLog("ԭ","",PulseCnt); + if(bSavePulseCnt)//¼ʼ㵽ԭľ + { + m_OriginOffsetDis = PulseCnt*GetOnePulseDis(); + } + return true; +} +//ƶָԭƫλ +//FocusOffset ΢ֵ(ֵ) +bool CMotor::MoveToOriginOffset(double AdjustVal) +{ +#if 0 + SetCurLimitPortByDir(m_FindOriginDir);//ǿΪԶ㷽λ + if(IsLimitOn()==false)//ʱҪλ + { + gLogMgr->WriteDebugLog("λʧ",_LOG_ERROR); + return false; + } +#endif + double OriginOffsetDis =m_OriginOffsetDis + AdjustVal; + if(m_MaxOriginOffsetDis>0 && OriginOffsetDis > m_MaxOriginOffsetDis) + { + gLogMgr->WriteDebugLog("ƫƾ볬",_LOG_ERROR); + return false; + } + SetDir(!m_FindOriginDir);//ԭķ + double TotalCnt = OriginOffsetDis/GetOnePulseDis(); + MoveByPluse(TotalCnt,false); + + Ini(); + return true; +} +//(PulseCnt ͳһ˶ٸ,ҲԲͳ) +bool CMotor::SendSerialPulses(double TotalCnt,double &PulseCnt,unsigned int Delay) +{ + PulseCnt = 0; + while(TotalCnt>0) + { + //һ + if(MoveOnePluse(Delay)==false) + { + return false;//ûȫ + } + TotalCnt -= 1; + PulseCnt += 1; + } + //TotalCnt ˻ûҵλʱҪͳ + PulseCnt = 0; + return true; +} +//ƶֱûм⵽翪أƶ +double CMotor::MoveDeviateLimit(unsigned int Delay) +{ + double PulseCnt = 0; + while(IsLimitOn()) + { + gPciCh365Mgr->SendOnePulse(m_PulsePort,Delay); + PulseCnt += 1; + } + return PulseCnt; +} +//ƶһ(Delay = 0 ʾû) +bool CMotor::MoveOnePluse(unsigned int Delay) +{ + if(IsLimitOn())//ײλ + { + return false; + } + if(Delay == 0) + { + Delay = m_WorkDelay; + } + gPciCh365Mgr->SendOnePulse(m_PulsePort,Delay); + return true; +} +//÷(b Ϊtrue ʾ) +void CMotor::SetDir(bool bForward) +{ + gPciCh365Mgr->WritePortState(m_DirPort,bForward); + gPciCh365Mgr->DelayTime(1000);//ı䷽ʱ1ms ٷ + //ı䷽ʱҲҪıλ˿ + //ҪǷֹƶʱλ + SetCurLimitPortByDir(bForward); +} +//ݷüλĶ˿ +void CMotor::SetCurLimitPortByDir(bool bForward) +{ + if(bForward)//ƶλ + { + m_CurLimitPort = m_LimitPort_F; + } + else//ƶ鸺λ + { + m_CurLimitPort = m_LimitPort_N; + } +} +//ȡ +CMotor *CMotor::GetMotor(CString Name) +{ + CMotor *p = NULL; + if(Name == MOTOR_X) + return gMotorX; + if(Name == MOTOR_X2) + return gMotorX2; + if(Name == MOTOR_Y) + return gMotorY; + if(Name == MOTOR_Z) + return gMotorZ; + return NULL; +} +//ȡٶʱ +unsigned int CMotor::GetDelay(bool bWork) +{ + if(bWork) + return m_WorkDelay; + else + return m_MoveDelay; +} +//ȡڻеԭֵ +double CMotor::GetCoord2() +{ + return m_OriginOffsetDis-m_Coord; +} +#if 1 +void CMotor::OnMotorLimit() +{ + //óʼ״̬ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(false); +} +//ƶ +void CMotor::MoveByPluse(double PulseCnt,bool bWork) +{ + if(PulseCnt<1) + return; + if(PulseCnt>0 && PulseCnt<2)//һ嵥 + { + if(MoveOnePluse(GetDelay(bWork))==false) + { + OnMotorLimit(); + CString str = _T("쳣λ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + return; + } + + if(m_bAccelerateCtrl) + { + MoveByPluseAccelerate(PulseCnt,bWork); + } + else + { + MoveByPluseNoAccelerate(PulseCnt,bWork); + } +} +//Ӽ +void CMotor::MoveByPluseAccelerate(double PulseCnt,bool bWork) +{ + gLogMgr->WriteDebugLog("MoveByPluseAccelerate"); + + unsigned int MaxDelay = GetDelay(bWork);//ٶ + double AccelerateCnt = (m_StartDelay)/m_PerChangeDelay;// + if(AccelerateCnt>(PulseCnt/2))//,ֵٵһλ + { + AccelerateCnt = (PulseCnt/2); + } + + unsigned int CurDelay = MaxDelay+m_StartDelay; + + for(double PluseIdx=1;PluseIdx<=PulseCnt;PluseIdx+=1) + { + if(PluseIdx<=AccelerateCnt)//ٽ׶ + { + CurDelay -= m_PerChangeDelay; + } + else if(PluseIdx>=(PulseCnt-AccelerateCnt))//ٽ׶ + { + CurDelay += m_PerChangeDelay; + } + if(CurDelayWriteDebugLog("MoveByPluseNoAccelerate"); + + unsigned int MaxDelay = GetDelay(bWork);//ٶ + for(double PluseIdx=1;PluseIdx<=PulseCnt;PluseIdx+=1) + { + if(MoveOnePluse(MaxDelay)==false) + { + OnMotorLimit(); + CString str = _T("쳣λ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + } +} +#endif +#if 1 +#define MIN_CNT 2//Сƶ +//ƶָ +void CMotor::MoveDis(double dis) +{ + MoveToCoord(m_Coord+dis); +} +//ƶֵ +void CMotor::MoveToCoord(double Coord) +{ + if(gMotionCard_PCI1245->IsbUsed()) + { + if(gMotionCard_PCI1245->MoveMotor(*this,Coord)) + { + m_Coord = Coord; + } + } +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/Motor.h b/LaiPuLaser/Motor.h new file mode 100644 index 0000000..98e4a78 --- /dev/null +++ b/LaiPuLaser/Motor.h @@ -0,0 +1,114 @@ +#pragma once +#include "PciCh365Mgr.h" +#include "Module.h" +#include "Observer.h" +#include "EnumPropertieType.h" +#include "Subject.h" + + +#define MOTOR_X _T("X") //X +#define MOTOR_X2 _T("X2") //X2 +#define MOTOR_Y _T("Y") //Y +#define MOTOR_Z _T("Z") //Z + +// +class CMotor +:public CModule,public CObserver,public CSubject +{ +public: + CMotor(CString Name); + virtual ~CMotor(void); + virtual void Ini(); + virtual MODULE GetModuleType(){return _MOTOR_PROP;}; + virtual void ExportPar(ofstream *pFile); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void Update();//յԱ仯Ĵ +public: + void SetPciPortType(CString DirPortType,CString PulsePortType,CString LimitPortType_F,CString LimitPortType_N); + void SetDirPort(SPciPort Port){m_DirPort = Port;}; + void SetPulsePort(SPciPort Port){m_PulsePort = Port;}; + bool MoveOnePluse(unsigned int Delay = 0); + void SetDir(bool b);//÷(b Ϊtrue ʾ) + double GetOnePulseDis(){return m_OnePulseDis;}; + bool FindOrigin(bool bSavePulseCnt = false); + CString Name(){return m_Name;}; + bool IsLimitOn(); + bool MoveToOriginOffset(double AdjustVal = 0); + bool SendSerialPulses(double TotalCnt,double &PulseCnt,unsigned int Delay); + unsigned int GetDelay(bool bWork); + void MoveByPluse(double PulseCnt,bool bWork); + double GetCoord(){return m_Coord;}; + double GetCoord2(); + void SetCoord(double Coord){m_Coord = Coord;}; + void MoveToCoord(double Coord); + void MoveDis(double dis); + static CMotor *GetMotor(CString Name); + void SetMoveDelay(unsigned int n){m_MoveDelay = n;}; + void SetWorkDelay(unsigned int n){m_WorkDelay = n;}; + double GetOriginOffsetDis(){return m_OriginOffsetDis;}; + void SetOriginOffsetDis(double n){m_OriginOffsetDis = n;}; + void NeedCheckFiber(){m_bCheckFiber = true;} + void SetAsixIdx(int idx){m_AsixIdx = idx;}; + int GetAsixIdx(){return m_AsixIdx;}; + bool IsbReverseDir(){return m_bReverseDir;}; + bool IsbReverseMoveFirst(){return m_bReverseMoveFirst;}; + double GetReverseMoveDis(){return m_bReverseMoveDis;}; + bool GetFindOriginDir(){return m_FindOriginDir;}; + bool IsbRevActCoordDir(){return m_bRevActCoordDir;}; +private: + void MoveByPluseAccelerate(double PulseCnt,bool bWork); + void MoveByPluseNoAccelerate(double PulseCnt,bool bWork); + double MoveDeviateLimit(unsigned int Delay); + void SetCurLimitPortByDir(bool bForward); + void OnMotorLimit(); +private: + static CMotor *gMotorX;//X + static CMotor *gMotorX2;//X + static CMotor *gMotorY;//Y + static CMotor *gMotorZ;//Z + + CString m_Name;// + CString m_DirPortType;// + CString m_PulsePortType;// + CString m_LimitPortType_F;//λ + CString m_LimitPortType_N;//λ + + int m_AsixIdx;//˶ƿеı +//pci ˿ڲ-------------------------------------------------------- + SPciPort m_DirPort;//˿ + SPciPort m_PulsePort;//˿ + SPciPort m_LimitPort_F;//λ˿ + SPciPort m_LimitPort_N;//λ˿ + SPciPort m_OriginPort;//ԭ˿ + SPciPort m_CurLimitPort;//ǰҪλ˿ +//UPK CO2 õĶ + bool m_bCheckFiber;//ʱ + SPciPort m_FiberPort1;//˶˿1 + SPciPort m_FiberPort2;//˶˿2 +//ҪIJ----------------------------------------------------- + double m_OnePulseDis;//һƶ(mm) +//ԭ----------------------------------------------------- + bool m_FindOriginDir;//ԭķ(true Ϊ,false Ϊ) + double m_OriginOffsetDis;//ԭķƶ(mm) + double m_MaxOriginOffsetDis;//ԭķƶ(mm) -- ҪDZӲ + double m_MaxPulseCnt;//ԭʱ,ĿΪ˷ֹӲѭ + int m_FindOriginDelay;//ҵԭĵȴʱ(ms) ŷľ + unsigned int m_ReverseMoveDelay;//ҵ翪غ󷴷ƶʱus (ֱص翪ΪOFF ) + + bool m_bReverseMoveFirst;//ԭ֮ǰǷȷƶһξ + double m_bReverseMoveDis;//ԭ֮ǰȷƶľmm +//ٶȲ-------------------------------------------------------------- + unsigned int m_MoveDelay;//ʱus + unsigned int m_WorkDelay;//ʱʱus + unsigned int m_OriginPulseDelay;//ʼԭʱus + bool m_bNeedCheckLimit;//ʱǷλ +//Ӽٿ----------------------------------------------------------- + bool m_bAccelerateCtrl;//ǷӼٿ + unsigned int m_StartDelay;//ʼٶʱus + unsigned int m_PerChangeDelay;//ÿθıʱus +//----------------------------------------------------------- + double m_Coord;//ֵ(mm) + bool m_bReverseDir;//Ƿ + + bool m_bRevActCoordDir;//դ߷ +}; \ No newline at end of file diff --git a/LaiPuLaser/MouseTool.cpp b/LaiPuLaser/MouseTool.cpp new file mode 100644 index 0000000..06f91d2 --- /dev/null +++ b/LaiPuLaser/MouseTool.cpp @@ -0,0 +1,136 @@ +#include "StdAfx.h" +#include "MouseTool.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "CommandCreat.h" +#include "CommandMgr.h" + + +CMouseTool::CMouseTool(void) +{ + m_Status = _STATUS_1;//ʼΪһ + ClearFirstPoint(); + m_bFirstMove = true;//ڱǵһƶ +} +CMouseTool::~CMouseTool(void) +{ +} +void CMouseTool::AddObject(CObjBase *p) +{ + Sptr sPtr(p); + m_TmpObjContainer.AddObject(sPtr); + GetLayerInstance().AddTmpObject(sPtr); +} +void CMouseTool::SaveDownPoint(CPoint point) +{ + SaveDownPoint(gDraw->CPoint2Dbxy(point)); +} +void CMouseTool::SaveDownPoint(Dbxy point) +{ + m_DownPoint = point; +} +bool CMouseTool::HasPreMovePt() +{ + if(m_PreMovePt.x == 0 && m_PreMovePt.y == 0) + return false; + else + return true; +} +void CMouseTool::ClearFirstPoint() +{ + m_DownPoint.x = 0; + m_DownPoint.y = 0; + m_PreMovePt.x = 0; + m_PreMovePt.y = 0; +} +void CMouseTool::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + SaveDownPoint(point); +} +void CMouseTool::OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + GetCurViewPtr()->OnEscape(); +} +void CMouseTool::OperateOver() +{ + ClearFirstPoint(); + m_bFirstMove = true; + //ɾlayer ʱ----------------------------------- + GetLayerInstance().ClearTmpObj(); +} +void CMouseTool::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + OperateOver(); +} +void CMouseTool::AddCreatCommand() +{ + if(!m_TmpObjContainer.Empty()) + { + //ָ-------start + CCommandCreat *p = new CCommandCreat; + gCommandMgr.AddUndoCommand(p,m_TmpObjContainer.GetObjVec()); + p->Excute(); + //ָ-------end + } + //ʱ + m_TmpObjContainer.Clear(); +} +void CMouseTool::OnEscapeKey() +{ + m_TmpObjContainer.Clear(); + OperateOver(); +} +//һ״̬ +void CMouseTool::ToNextStatus() +{ + switch(m_Status) + { + case _STATUS_1: + m_Status = _STATUS_2; + break; + case _STATUS_2: + m_Status = _STATUS_3; + break; + case _STATUS_3: + m_Status = _STATUS_4; + break; + case _STATUS_4: + m_Status = _STATUS_5; + break; + case _STATUS_5: + m_Status = _STATUS_6; + break; + default: + break; + } +} +bool CMouseTool::IsEndStatus() +{ + return (m_Status ==_STATUS_END); +} +bool CMouseTool::IsStartStatus() +{ + return (m_Status ==_STATUS_1); +} +//ģĶ +void CMouseTool::CreatOpSimulateObj() +{ + //ȡѡobj ľ + DbRect rect = GetLayerInstance().GetSelObjRect(); + m_OpSimulateObjBak.CreatRect(rect); +} +//ػģ +void CMouseTool::XorRedrawOpSimulateObj(CDC* pDC) +{ + int old_rop = pDC->SetROP2(R2_XORPEN); + m_OpSimulateObj.Draw(pDC,gDraw->GetSelObjectPen()); + pDC->SetROP2(old_rop); +} +//ģ +void CMouseTool::OpSimulateObj(SObjOperatePar &par) +{ + //ÿζӱݶȡֵ + m_OpSimulateObj.DelAllPt(); + m_OpSimulateObj.CopyPt(m_OpSimulateObjBak); + m_OpSimulateObj.Operate(par); +} \ No newline at end of file diff --git a/LaiPuLaser/MouseTool.h b/LaiPuLaser/MouseTool.h new file mode 100644 index 0000000..84117f9 --- /dev/null +++ b/LaiPuLaser/MouseTool.h @@ -0,0 +1,76 @@ +#pragma once +#include "GlobalDefine.h" +#include "SmartPtr.h" +#include "ObjBase.h" +#include "ObjContainer.h" +#include "ObjPline.h" +#if 1// + +#define CMD_TOOL_CIRCLE_DIA_EDGE "_circle ָԲ[ֱ] []" +#define CMD_TOOL_CIRCLE_CENTER "_circle ָԲ[Բ] " +#define CMD_LINE_FIRST_PT "_line ָһ" +#define CMD_LINE_NEXT_PT "_line ָ߶ε[] [Ƕ]" +#define CMD_RECT_FIRST_PT "_rectang ָһ" +#define CMD_RECT_SIZE "_rectang ָε[][߶]" +#define CMD_TOOL_ROTATO_ANGLE "_rotato ָת[Ƕ]" +#define CMD_TOOL_ROTATO_CENTER "_rotatoָת" +#define CMD_TOOL_MOVE_FIRST_PT "_move ָ" +#define CMD_TOOL_MOVE_DIS "_moveָƶ[x ][y ]" +#define CMD_TOOL_MEASURE_FIRST_PT "_measure ָһ" +#define CMD_TOOL_MEASURE_SECOND_PT "_measure ָڶ" +#define CMD_TOOL_MEASURE_RESULT "_measure []" +#define CMD_TOOL_MEASURE_RESULT2 "_measure [x ƫ] [y ƫ]" +#define CMD_TOOL_MEASURE_RESULT3 "_measure [Ƕ]" +#define CMD_TOOL_MEASURE_RESULT4 "_measure [ԭǶ]" + +#define CMD_TOOL_COPY_BASE_PT "_copy ָ" + +#define REDRAW_CNT 5 +#endif + + +class CMouseTool +{ +public: + CMouseTool(void); + virtual ~CMouseTool(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnRButtonUp(UINT nFlags, CPoint point,CClientDC &dc){}; + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc){}; + virtual void OnEscapeKey(); + virtual void OperateOver(); + virtual bool OnSetCmd(CString str){return false;}; + virtual bool NeedToPointTool(){return false;};//߽ʱǷҪתΪָ빤 +public: + void SetOperatePar(SObjOperatePar par){m_Par = par;}; + bool IsEndStatus(); + bool IsStartStatus(); + STATUS GetStatus(){return m_Status;}; + Dbxy GetDownPoint(){return m_DownPoint;}; +protected: + virtual void OperateObj(Dbxy StartPt,Dbxy EndPt){}; + void SaveDownPoint(CPoint point); + void SaveDownPoint(Dbxy point); + void SavePreMovePt(CPoint point){m_PreMovePt = point;}; + bool HasPreMovePt(); + void ClearFirstPoint(); + void AddCreatCommand(); + void ToNextStatus(); + void AddObject(CObjBase *pMarkObject); + void CreatOpSimulateObj(); + void XorRedrawOpSimulateObj(CDC* pDC); + void OpSimulateObj(SObjOperatePar &par); +protected: + CObjContainer m_TmpObjContainer;//ʱobj + STATUS m_Status;//ȷÿһʲô + Dbxy m_DownPoint;//갴µĵ + CPoint m_PreMovePt;//һƶλ + bool m_bFirstMove;//ڱǵһƶ + + CObjPline m_OpSimulateObjBak;//ģĶԭʼ + CObjPline m_OpSimulateObj;//ģĶ + SObjOperatePar m_Par;// +}; + diff --git a/LaiPuLaser/MouseToolAddNode.cpp b/LaiPuLaser/MouseToolAddNode.cpp new file mode 100644 index 0000000..e206990 --- /dev/null +++ b/LaiPuLaser/MouseToolAddNode.cpp @@ -0,0 +1,55 @@ +#include "StdAfx.h" +#include "MouseToolAddNode.h" +#include "GlobalDrawMgr.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "CommandAddNode.h" +#include "CommandMgr.h" + +CMouseToolAddNode::CMouseToolAddNode(void) +{ +} +CMouseToolAddNode::~CMouseToolAddNode(void) +{ +} +void CMouseToolAddNode::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + DbRect rect = gDraw->GetCurPointRect(pt); + + CLayer &layer = GetLayerInstance(); + if(!layer.HasObjectInRect(rect)) + return; + //ҵһrect obj ----------------------------------------------- + Sptr pObj = layer.GetFirstObjInRect(rect); + //obj rect еĵһ߶----------------------------------------------- + vector LineVec; + pObj->GetLineInRect(rect,LineVec,false); + Dbxy LinePt1 = LineVec[0].m_pt1.GetPt(); + Dbxy LinePt2 = LineVec[0].m_pt2.GetPt(); + + if(IsPointInRect(LinePt1,rect)||IsPointInRect(LinePt2,rect))//Ҫڶ˵㸽 + { + return; + } + //õrect ߶εĽ-------------------------------------------------- + Dbxy MousePt = IntersectionOfRectAndLine(LinePt1,LinePt2,rect); + + //LinePt1 obj + int idx = pObj->GetNodePtIdx(LinePt1); + if(idx!=-1) + { + //뵽LinePt1 ĺ------------------------- + pObj->InsertNode(idx+1,MousePt); + pObj->SetSelected(true); + + //ָ----------------------------------- + CCommandAddNode *p = new CCommandAddNode; + p->SetPar(idx+1,MousePt); + p->AddOpObj(pObj); + gCommandMgr.AddUndoCommand(p); + //ˢ + GetCurViewPtr()->RefreshView(); + } +} + diff --git a/LaiPuLaser/MouseToolAddNode.h b/LaiPuLaser/MouseToolAddNode.h new file mode 100644 index 0000000..77e2ba8 --- /dev/null +++ b/LaiPuLaser/MouseToolAddNode.h @@ -0,0 +1,10 @@ +#pragma once +#include "mousetool.h" +class CMouseToolAddNode :public CMouseTool +{ +public: + CMouseToolAddNode(void); + ~CMouseToolAddNode(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); +}; + diff --git a/LaiPuLaser/MouseToolBarCode.cpp b/LaiPuLaser/MouseToolBarCode.cpp new file mode 100644 index 0000000..23eea2b --- /dev/null +++ b/LaiPuLaser/MouseToolBarCode.cpp @@ -0,0 +1,37 @@ +#include "StdAfx.h" +#include "MouseToolBarCode.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "ObjBarCode.h" +#include "CommandCreat.h" +#include "CommandMgr.h" + + +CMouseToolBarCode::CMouseToolBarCode(void) +{ +} +CMouseToolBarCode::~CMouseToolBarCode(void) +{ +} +void CMouseToolBarCode::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + CObjBarCode *p = new CObjBarCode; + p->SetPosition(pt);//û׼ + p->SetUseCurFontName();//ʹõǰ + p->Creat(); + CLayer &layer = GetLayerInstance(); + + CObjContainer Container; + Container.AddObject(p); + //ָ-------start + CCommandCreat *pCmd = new CCommandCreat; + gCommandMgr.AddUndoCommand(pCmd,Container.GetObjVec()); + pCmd->Excute(); + } + // + m_Status = _STATUS_END; + OperateOver(); +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolBarCode.h b/LaiPuLaser/MouseToolBarCode.h new file mode 100644 index 0000000..ab4b90c --- /dev/null +++ b/LaiPuLaser/MouseToolBarCode.h @@ -0,0 +1,12 @@ +#pragma once +#include "mousetool.h" +class CMouseToolBarCode : + public CMouseTool +{ +public: + CMouseToolBarCode(void); + ~CMouseToolBarCode(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool NeedToPointTool(){return true;}; +}; + diff --git a/LaiPuLaser/MouseToolBreakNode.cpp b/LaiPuLaser/MouseToolBreakNode.cpp new file mode 100644 index 0000000..ca84454 --- /dev/null +++ b/LaiPuLaser/MouseToolBreakNode.cpp @@ -0,0 +1,79 @@ +#include "StdAfx.h" +#include "MouseToolBreakNode.h" +#include "GlobalDrawMgr.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "CommandDelNode.h" +#include "CommandBreakNode.h" +#include "ObjPline.h" +#include "CommandMgr.h" + + +CMouseToolBreakNode::CMouseToolBreakNode(void) +{ +} +CMouseToolBreakNode::~CMouseToolBreakNode(void) +{ +} +void CMouseToolBreakNode::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + DbRect rect = gDraw->GetCurPointRect(pt); + + CLayer &layer = GetLayerInstance(); + if(!layer.HasObjectInRect(rect)) + return; + //ҵһrect obj ----------------------------------------------- + Sptr pObj = layer.GetFirstObjInRect(rect); + //obj rect еĵһnode ----------------------------------------------- + vector LineVec; + pObj->GetLineInRect(rect,LineVec,false); + Dbxy NodePt = LineVec[0].m_pt1.GetPt(); + if(!IsPointInRect(NodePt,rect)) + { + NodePt = LineVec[0].m_pt2.GetPt(); + } + if(!IsPointInRect(NodePt,rect)) + return; + //NodePt obj + int idx = pObj->GetNodePtIdx(NodePt); + if(idx!=-1 && idx!=0) + { + //ǰһ + CObjPline *pPline1 = new CObjPline; + pPline1->CopyPt(*(pObj.GetPtr())); + pPline1->SetSelected(true); + int ptCnt = pPline1->GetPtCnt(); + for(int i=0;i<(ptCnt-(idx+1));i++) + { + pPline1->DelLastDataPoint(); + } + //һ + CObjPline *pPline2 = new CObjPline; + pPline2->CopyPt(*(pObj.GetPtr())); + pPline2->SetSelected(true); + for(int i=0;iDelNodePtByIdx(0); + } + //ָ----------------------------------- + Sptr pObj1(pPline1); + Sptr pObj2(pPline2); + m_TmpObjContainer.AddObject(pObj1); + m_TmpObjContainer.AddObject(pObj2); + + m_TmpObjContainer.AllObjAddToLayer(); + m_TmpObjContainer.Clear();// + GetLayerInstance().DelObj(pObj); + + //ָ + CCommandBreakNode *pCmd = new CCommandBreakNode; + pCmd->AddOpObj(pObj); + pCmd->AddOpObj(pObj1); + pCmd->AddOpObj(pObj2); + gCommandMgr.AddUndoCommand(pCmd); + //ˢ + GetCurViewPtr()->RefreshView(); + } +} + diff --git a/LaiPuLaser/MouseToolBreakNode.h b/LaiPuLaser/MouseToolBreakNode.h new file mode 100644 index 0000000..a35e189 --- /dev/null +++ b/LaiPuLaser/MouseToolBreakNode.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +//obj Ϊ߶ +class CMouseToolBreakNode :public CMouseTool +{ +public: + CMouseToolBreakNode(void); + ~CMouseToolBreakNode(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); +}; + diff --git a/LaiPuLaser/MouseToolCircle.cpp b/LaiPuLaser/MouseToolCircle.cpp new file mode 100644 index 0000000..3ed2b17 --- /dev/null +++ b/LaiPuLaser/MouseToolCircle.cpp @@ -0,0 +1,151 @@ +#include "StdAfx.h" +#include "MouseToolCircle.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "ObjCircle.h" +#include "LogMgr.h" +#include "DrawSimpleShape.h" + + +#define DEFUALT_EDGE_CNT 100//ԲĬϱ +CMouseToolCircle::CMouseToolCircle(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_CIRCLE_CENTER); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + m_Radius = 0; + m_EdgeCnt = DEFUALT_EDGE_CNT; +} +CMouseToolCircle::~CMouseToolCircle(void) +{ +} +void CMouseToolCircle::OperateOver() +{ + //------------------------------------־start + CString val1; + val1.Format("%lf",m_Radius*2); + CString val2; + val2.Format("%ld",m_EdgeCnt); + gLogMgr->WriteCmd(CMD_TOOL_CIRCLE_DIA_EDGE,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + //ָ + AddCreatCommand(); + // + m_Status = _STATUS_END; + + CMouseTool::OperateOver(); +} +void CMouseToolCircle::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + CObjCircle *p = new CObjCircle; + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = pt; + ObjCirclePar.Radius =m_Radius; + p->Creat(ObjCirclePar); + AddObject(p); + //------------------------------------־start + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_TOOL_CIRCLE_CENTER,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_CIRCLE_DIA_EDGE); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + //һ״̬ + ToNextStatus(); + } + else + { + OperateOver(); + } +} +void CMouseToolCircle::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ +} +void CMouseToolCircle::OnMouseMove(UINT nFlag, CPoint point,CClientDC &dc) +{ + Dbxy OldPt = gDraw->CPoint2Dbxy(m_PreMovePt); + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status!=_STATUS_1) + { + m_Radius = CalDistance(m_DownPoint,pt); + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjCircle *p = dynamic_cast(pCurOptObject); + m_TmpObjContainer.XorRedrawObj(&dc,false); + + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = m_DownPoint; + ObjCirclePar.Radius =m_Radius; + ObjCirclePar.DEdgeCnt = m_EdgeCnt; + + p->Creat(ObjCirclePar); + m_TmpObjContainer.XorRedrawObj(&dc,false); + //״̬-----------------------------start + CString str1 = "Բ[ֱ] "; + CString str2; + str2.Format("%lf",m_Radius*2); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,STR_NULL); + //״̬-----------------------------end + } + SavePreMovePt(point); + } +} +bool CMouseToolCircle::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2)//Բ + { + double Val1=0;//뾶 + double Val2=0;// + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result == 1)//ֱֻ + { + Val2 = DEFUALT_EDGE_CNT; + } + if(Val1>0)//ֱҪ0 + { + m_Radius = Val1/2; + //EdgeCnt Ҫ4ı,СΪ4 + int min = 4; + m_EdgeCnt = (int)(Val2/min)*min; + if(m_EdgeCnt(pCurOptObject); + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = m_DownPoint; + ObjCirclePar.Radius =m_Radius; + ObjCirclePar.DEdgeCnt = m_EdgeCnt; + + p->Creat(ObjCirclePar); + } + OperateOver(); + return true; + } + } + } + return false; +} + diff --git a/LaiPuLaser/MouseToolCircle.h b/LaiPuLaser/MouseToolCircle.h new file mode 100644 index 0000000..f7a6c0b --- /dev/null +++ b/LaiPuLaser/MouseToolCircle.h @@ -0,0 +1,19 @@ +#pragma once +#include "mousetool.h" +class CMouseToolCircle :public CMouseTool +{ +public: + CMouseToolCircle(void); + ~CMouseToolCircle(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool OnSetCmd(CString str); + virtual bool NeedToPointTool(){return true;}; +private: + void OperateOver(); +private: + double m_Radius; + int m_EdgeCnt; +}; + diff --git a/LaiPuLaser/MouseToolCopy.cpp b/LaiPuLaser/MouseToolCopy.cpp new file mode 100644 index 0000000..8c2b88e --- /dev/null +++ b/LaiPuLaser/MouseToolCopy.cpp @@ -0,0 +1,121 @@ +#include "StdAfx.h" +#include "MouseToolCopy.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" +#include "CommandCopy.h" +#include "DrawSimpleShape.h" +#include "CommandMgr.h" + + +CMouseToolCopy::CMouseToolCopy(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_COPY_BASE_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end +} +CMouseToolCopy::~CMouseToolCopy(void) +{ +} +void CMouseToolCopy::OperateOver() +{ + //obj + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = m_MoveDisX; + par.MoveY = m_MoveDisY; + //ֻǰѡobj + m_TmpObjContainer.OperateObj(par,true); + + m_TmpObjContainer.DelSelObj(); + m_TmpObjContainer.AllObjAddToLayer(); + //ָ-------start + CCommandCopy *p = new CCommandCopy; + gCommandMgr.AddUndoCommand(p,m_TmpObjContainer.GetObjVec()); + //ָ-------end + CMouseTool::OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolCopy::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + + //obj + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = m_MoveDisX; + par.MoveY = m_MoveDisY; + //ֻǰѡobj + m_TmpObjContainer.OperateObj(par,true); + //¡ѡobj ʱ + //Ȱ֮ǰΪѡ״̬ + m_TmpObjContainer.NotSelAllObj(); + //ٵ뵱ǰѡobj + GetLayerInstance().CloneObj(m_TmpObjContainer,true); + if(m_Status==_STATUS_1)//ָ + { + m_BasePoint = pt; + //ģĶ + CreatOpSimulateObj(); + ToNextStatus(); + } + else + { + //ƶǰλ + m_MoveDisX = pt.x - m_BasePoint.x; + m_MoveDisY = pt.y - m_BasePoint.y; + //⽫һλò + m_bFirstMove = true; + } +} +void CMouseToolCopy::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolCopy::OnMouseMove(UINT nFlag, CPoint point,CClientDC &dc) +{ + Dbxy OldPt = gDraw->CPoint2Dbxy(m_PreMovePt); + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_2) + { + if(m_bFirstMove==false) + { + //ػģ + XorRedrawOpSimulateObj(&dc); + } + m_bFirstMove = false; + + if(HasPreMovePt())//֮ǰ + { + XorDrawLine(&dc,gDraw->GetObjectPen(),m_BasePoint,OldPt); + } + XorDrawLine(&dc,gDraw->GetObjectPen(),m_BasePoint,CurPt);//һʱ + + //ƶ + m_MoveDisX = CurPt.x - m_BasePoint.x; + m_MoveDisY = CurPt.y - m_BasePoint.y; + //obj + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = m_MoveDisX; + par.MoveY = m_MoveDisY; + //ģ + OpSimulateObj(par); + + //ػģ + XorRedrawOpSimulateObj(&dc); + SavePreMovePt(point); + } +} +void CMouseToolCopy::OnEscapeKey() +{ + OperateOver(); +} +bool CMouseToolCopy::OnSetCmd(CString str) +{ + + return false; +} + diff --git a/LaiPuLaser/MouseToolCopy.h b/LaiPuLaser/MouseToolCopy.h new file mode 100644 index 0000000..6e1657f --- /dev/null +++ b/LaiPuLaser/MouseToolCopy.h @@ -0,0 +1,19 @@ +#pragma once +#include "mousetool.h" +class CMouseToolCopy :public CMouseTool +{ +public: + CMouseToolCopy(void); + ~CMouseToolCopy(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnEscapeKey(); + virtual bool OnSetCmd(CString str); + virtual void OperateOver(); +private: + Dbxy m_BasePoint;//׼ + double m_MoveDisX; + double m_MoveDisY; +}; + diff --git a/LaiPuLaser/MouseToolCut.cpp b/LaiPuLaser/MouseToolCut.cpp new file mode 100644 index 0000000..e327b81 --- /dev/null +++ b/LaiPuLaser/MouseToolCut.cpp @@ -0,0 +1,303 @@ +#include "StdAfx.h" +#include "MouseToolCut.h" +#include "GlobalDrawMgr.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "ObjPline.h" +#include "CommandCut.h" +#include "CommandMgr.h" + + +#if 1//ñȽϺ +//ȷ0 һȣ>0ֵ 򷵻С0ֵ +bool CompareDbPointX(Dbxy pt1,Dbxy pt2) +{ + return pt1.x>pt2.x; +} +bool CompareDbPointY(Dbxy pt1,Dbxy pt2) +{ + return pt1.y>pt2.y; +} +#endif + + +CMouseToolCut::CMouseToolCut(void) +{ +} +CMouseToolCut::~CMouseToolCut(void) +{ +} +void CMouseToolCut::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + DbRect rect = gDraw->GetCurPointRect(pt); + CutLineInRect(rect); +} +//rect еline +void CMouseToolCut::CutLineInRect(DbRect &rect) +{ + CLayer &layer = GetLayerInstance(); + if(!layer.HasObjectInRect(rect)) + return; + //ҵһrect obj ----------------------------------------------- + Sptr pObj = layer.GetFirstObjInRect(rect); + //obj rect еĵһline ----------------------------------------------- + Dbxy LinePt1,LinePt2; + GetFirstLineInRect(pObj,rect,LinePt1,LinePt2); + if(LinePt1.Equal(LinePt2)) + return; + //line γɵľе߶εLineVec ----------------------------------------------- + vector LineVec; + DbRect LineRect = GetLineRect(LinePt1,LinePt2); + layer.GetLineInRect(LineRect,LineVec,false); + //еĽ㵽PointVec ----------------------------------------------- + vector PointVec; + CalAllIntersection(LinePt1,LinePt2,LineRect,LineVec,PointVec); + //һûֻʣһ߶, ޼ + if(PointVec.empty()) + return; + //ݽobj ----------------------------------------------- + CutObj(LinePt1,LinePt2,pObj,PointVec,rect); +} +//ñи߶γɵľ +DbRect CMouseToolCut::GetLineRect(const Dbxy &LinePt1,const Dbxy &LinePt2) +{ + double MixGap = 0.01; + //ˮƽֱ + Dbxy RectPt1 = LinePt1; + Dbxy RectPt2 = LinePt2; + if(IsTwoDbEqual(LinePt1.x,LinePt2.x)) + { + RectPt1.x -= MixGap; + RectPt2.x += MixGap; + } + if(IsTwoDbEqual(LinePt1.y,LinePt2.y)) + { + RectPt1.y += MixGap; + RectPt2.y -= MixGap; + } + DbRect LineRect(RectPt1,RectPt2); + return LineRect; +} +//obj rect еĵһline +void CMouseToolCut::GetFirstLineInRect(Sptr &pObj,DbRect &rect,Dbxy &LinePt1,Dbxy &LinePt2) +{ + vector LineVec; + pObj->GetLineInRect(rect,LineVec); + LinePt1 = LineVec[0].m_pt1.GetPt(); + LinePt2 = LineVec[0].m_pt2.GetPt(); +} + +//н,浽PointVec +void CMouseToolCut::CalAllIntersection(Dbxy LinePt1,Dbxy LinePt2,DbRect &LineRect,vector &LineVec,vector &PointVec) +{ + vector::iterator iter = LineVec.begin(); + vector::iterator iter_end = LineVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt3 = (*iter).m_pt1.GetPt(); + Dbxy pt4 = (*iter).m_pt2.GetPt(); + if(pt3.Equal(pt4))//Ҫһ߶ + { + continue; + } + if(IsTwoLineIntersect(LinePt1,LinePt2,pt3,pt4)) + { + //ཻ + Dbxy pt = CalIntersection(LinePt1,LinePt2,pt3,pt4); + //rect 벶׽ + if(IsPointInRect(pt,LineRect)) + { + PointVec.push_back(pt); + } + } + } +} +//ݽ޼obj +//rect rect Χ +//pObj ǵǰеĶ +//PointVec ߶ν +void CMouseToolCut::CutObj(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,vector &PointVec,DbRect &rect) +{ + //ȡļе------------------------------------- + Dbxy CutPt1,CutPt2; + if(GetCutPoint(LinePt1,LinePt2,PointVec,rect,CutPt1,CutPt2)==false) + { + return; + } + //obj Ϊ------------------------------------------ + CObjPline *pObj1 = NULL; + CObjPline *pObj2 = NULL; + CutObjExt(LinePt1,LinePt2,pObj,CutPt1,CutPt2,pObj1,pObj2); + //ָ----------------------------------- + m_TmpObjContainer.Clear(); + CreatCommandCut(pObj,pObj1,pObj2); + GetCurViewPtr()->RefreshView(); +} +//޼ָ +//pObj ʱ޼ǰobj +//pObj1pObj2 ޼obj +void CMouseToolCut::CreatCommandCut(Sptr pObj,CObjPline *&pObj1,CObjPline *&pObj2) +{ + CCommandCut *p = new CCommandCut; + p->AddOpObj(pObj); + + AddToCmd(pObj1,p); + AddToCmd(pObj2,p); + + m_TmpObjContainer.AllObjAddToLayer(); + gCommandMgr.AddUndoCommand(p); + GetLayerInstance().DelObj(pObj); +} +void CMouseToolCut::AddToCmd(CObjPline *&pObj,CCommandCut *&pCommandCut) +{ + if(pObj) + { + //浽ָ + Sptr sPtr(pObj); + m_TmpObjContainer.AddObject(sPtr); + pCommandCut->AddOpObj(sPtr); + } + else + { + delete pObj; + } +} +//obj Ϊ +bool CMouseToolCut::CutObjExt(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,Dbxy CutPt1,Dbxy CutPt2,CObjPline *&pObj1,CObjPline *&pObj2) +{ + vector&Container = pObj->GetPtContainer(); + int size = Container.size(); + Dbxy NearPt;//һĵ + Dbxy FarPt;//ڶֵһ + //ָһ------------------------------------------------------------ + int i=0; + for(;iAddDataPoint(DataPoint); + } + else + { + pObj1->AddDataPoint(Container[i]); + } + //ǰ߶Ϊ߶Σһ + if(IsSelLine(LinePt1,LinePt2,pt,Nextpt)) + { + GetNearFarPoint(CutPt1,CutPt2,pt,NearPt,FarPt); + + Dbxy pt = Container[i].GetPt(); + if(!(pt == NearPt))//βظĵ2015-12-10 + { + CDataPoint DataPoint(NearPt); + DataPoint.SetIsNode(true); + pObj1->AddDataPoint(DataPoint); + } + i++;//break Ժi + break; + } + } + //ָڶ-------------------------------------------------------------- + if(!(i==size-1 && FarPt.Equal(Container[i].GetPt()))) + { + bool bflg = true; + for(;iAddDataPoint(DataPoint); + } + //ǰڶ + if(i==size-1)//һǽڵ + { + CDataPoint DataPoint(Container[i].GetPt()); + DataPoint.SetIsNode(true); + pObj2->AddDataPoint(DataPoint); + } + else + { + //FarPt ڵһҪظ + if(!(bflg && FarPt.Equal(Container[i].GetPt()))) + { + pObj2->AddDataPoint(Container[i]); + } + } + bflg = false; + } + } + return true; +} +//ȡļе +bool CMouseToolCut::GetCutPoint(Dbxy LinePt1,Dbxy LinePt2,vector &PointVec,DbRect &rect,Dbxy &CutPt1,Dbxy &CutPt2) +{ + //ȵõrect ߶εĽ-------------------------------------------------- + Dbxy MousePt = IntersectionOfRectAndLine(LinePt1,LinePt2,rect); + //MousePt ---------------------------------------------- + PointVec.push_back(MousePt); + PointVec.push_back(LinePt1); + PointVec.push_back(LinePt2); + if(IsTwoDbEqual(LinePt1.x,LinePt2.x))//ֱ + { + //y + sort(PointVec.begin(),PointVec.end(),CompareDbPointY); + } + else//ֱ + { + //x + sort(PointVec.begin(),PointVec.end(),CompareDbPointX); + } + vector::iterator MousePtIter = find(PointVec.begin(),PointVec.end(),MousePt); + //ֻMousePtIter м + if(MousePtIter==PointVec.end() || MousePtIter==PointVec.end()-1 || MousePtIter==PointVec.begin()) + return false; + + CutPt1 = (*(MousePtIter-1)); + CutPt2 = (*(MousePtIter+1)); + + if(CutPt1.Equal(CutPt2)) + return false; + return true; +} +//ǷΪǰ߶ +bool CMouseToolCut::IsSelLine(Dbxy LinePt1,Dbxy LinePt2,Dbxy pt,Dbxy Nextpt) +{ + return ((LinePt1.Equal(pt) && LinePt2.Equal(Nextpt))||(LinePt1.Equal(Nextpt) && LinePt2.Equal(pt))); +} +//pt Ͻĵ +void CMouseToolCut::GetNearFarPoint(Dbxy pt1,Dbxy pt2,Dbxy pt,Dbxy &NearPt,Dbxy &FarPt) +{ + if(CalDistance(pt1,pt) &LineVec,vector &PointVec); + void CutObj(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,vector &PointVec,DbRect &rect); + bool IsSelLine(Dbxy LinePt1,Dbxy LinePt2,Dbxy pt,Dbxy Nextpt); + void GetNearFarPoint(Dbxy pt1,Dbxy pt2,Dbxy pt,Dbxy &NearPt,Dbxy &FarPt); + DbRect GetLineRect(const Dbxy &LinePt1,const Dbxy &LinePt2); + bool GetCutPoint(Dbxy LinePt1,Dbxy LinePt2,vector &PointVec,DbRect &rect,Dbxy &CutPt1,Dbxy &CutPt2); + bool CutObjExt(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,Dbxy CutPt1,Dbxy CutPt2,CObjPline *&pObj1,CObjPline *&pObj2); + void CreatCommandCut(Sptr pObj,CObjPline *&pObj1,CObjPline *&pObj2); + void AddToCmd(CObjPline *&pObj,CCommandCut *&pCommandCut); + void GetFirstLineInRect(Sptr &pObj,DbRect &rect,Dbxy &LinePt1,Dbxy &LinePt2); +}; + diff --git a/LaiPuLaser/MouseToolDelNode.cpp b/LaiPuLaser/MouseToolDelNode.cpp new file mode 100644 index 0000000..8a8aa92 --- /dev/null +++ b/LaiPuLaser/MouseToolDelNode.cpp @@ -0,0 +1,66 @@ +#include "StdAfx.h" +#include "MouseToolDelNode.h" +#include "GlobalDrawMgr.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "CommandDelNode.h" +#include "CommandMgr.h" +#include "LogMgr.h" + +CMouseToolDelNode::CMouseToolDelNode(void) +{ +} +CMouseToolDelNode::~CMouseToolDelNode(void) +{ +} +void CMouseToolDelNode::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + DbRect rect = gDraw->GetCurPointRect(pt); + + CLayer &layer = GetLayerInstance(); + if(!layer.HasObjectInRect(rect)) + { + gLogMgr->WriteDebugLog("ڷΧ֮",_LOG_ERROR); + return; + } + //ҵһrect obj ----------------------------------------------- + Sptr pObj = layer.GetFirstObjInRect(rect); + if(pObj->GetPtCnt()<=2)//ֻɾ3 ϵĶ + { + gLogMgr->WriteDebugLog("ֻɾ3ϵĶ",_LOG_ERROR); + return; + } + //obj rect еĵһnode ----------------------------------------------- + vector LineVec; + pObj->GetLineInRect(rect,LineVec,false); + + if(LineVec.empty()) + return; + Dbxy NodePt = LineVec[0].m_pt1.GetPt(); + if(!IsPointInRect(NodePt,rect)) + { + NodePt = LineVec[0].m_pt2.GetPt(); + } + if(!IsPointInRect(NodePt,rect)) + { + gLogMgr->WriteDebugLog("ڵ㲻ڷΧ",_LOG_ERROR); + return; + } + //NodePt obj + int idx = pObj->GetNodePtIdx(NodePt); + if(idx!=-1 && idx!=0) + { + pObj->DelNodePtByIdx(idx); + + //ָ----------------------------------- + CCommandDelNode *p = new CCommandDelNode; + p->SetPar(idx,NodePt); + p->AddOpObj(pObj); + gCommandMgr.AddUndoCommand(p); + //ˢ + GetCurViewPtr()->RefreshView(); + } +} + + diff --git a/LaiPuLaser/MouseToolDelNode.h b/LaiPuLaser/MouseToolDelNode.h new file mode 100644 index 0000000..9dde869 --- /dev/null +++ b/LaiPuLaser/MouseToolDelNode.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +class CMouseToolDelNode :public CMouseTool +{ +public: + CMouseToolDelNode(void); + ~CMouseToolDelNode(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + +}; + diff --git a/LaiPuLaser/MouseToolLine.cpp b/LaiPuLaser/MouseToolLine.cpp new file mode 100644 index 0000000..9fbfec7 --- /dev/null +++ b/LaiPuLaser/MouseToolLine.cpp @@ -0,0 +1,150 @@ +#include "StdAfx.h" +#include "MouseToolLine.h" +#include "LogMgr.h" +#include "ObjPLine.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +CMouseToolLine::CMouseToolLine(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_LINE_FIRST_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + m_Length = 0;// + m_Angle = 0;//360 +} +CMouseToolLine::~CMouseToolLine(void) +{ +} +void CMouseToolLine::CreatOneLine(Dbxy pt) +{ + CObjPline *p = new CObjPline; + p->Creat(pt,pt); + AddObject(p); + //-------------------------------------------start + if(m_Status==_STATUS_1) + { + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_LINE_FIRST_PT,val1,val2); + ToNextStatus(); + } + else + { + CString val1; + val1.Format("%lf",m_Length); + CString val2; + val2.Format("%lf",m_Angle); + gLogMgr->WriteCmd(CMD_LINE_NEXT_PT,val1,val2); + } + //-------------------------------------------end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_LINE_NEXT_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + SaveDownPoint(pt); +} +void CMouseToolLine::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + //ÿһ´һֱ + Dbxy pt = gDraw->CPoint2Dbxy(point); + CreatOneLine(pt); +} +void CMouseToolLine::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolLine::OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + // + m_TmpObjContainer.XorDrawLastObj(&dc); + //ɾһobj + m_TmpObjContainer.DeleteLastObj(); + //ָ + AddCreatCommand(); + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + // + m_Status = _STATUS_END; + OperateOver(); +} +void CMouseToolLine::OnMouseMove(UINT nFlag, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status!=_STATUS_1) + { + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + m_TmpObjContainer.XorDrawLastObj(&dc); + p->Creat(m_DownPoint,pt); + m_TmpObjContainer.XorDrawLastObj(&dc); + + m_Length = CalDistance(m_DownPoint,pt);// + m_Angle = Cal360AngleByTwoPt(m_DownPoint,pt);//360 + //״̬-----------------------------start + CString str1 = "߶[] [Ƕ]"; + CString str2; + str2.Format("%lf",m_Length); + CString str3; + str3.Format("%lf",m_Angle); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,str3); + //״̬-----------------------------end + } + } +} +void CMouseToolLine::OnEscapeKey() +{ + //ɾһobj + m_TmpObjContainer.DeleteLastObj(); + //ָ + AddCreatCommand(); + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + m_Status = _STATUS_END; + OperateOver(); +} +bool CMouseToolLine::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2) + { + double Val1=0;// + double Val2=0;//Ƕ + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result==1)//ֻ볤 + { + Val2 = m_Angle; + } + if(Val1>0)//Ҫ0 + { + m_Length = Val1; + m_Angle = Val2; + //ָ + Dbxy SetPoint = GetPoint2(m_DownPoint,Val1,_360ToAngle(Val2)); + //Ȱѵǰ߶ӵ + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + p->Creat(m_DownPoint,SetPoint); + } + //Ϊ㴴߶ + CreatOneLine(SetPoint); + //ǿˢ + GetCurViewPtr()->RefreshView(); + return true; + } + } + } + return false; +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolLine.h b/LaiPuLaser/MouseToolLine.h new file mode 100644 index 0000000..fed37a8 --- /dev/null +++ b/LaiPuLaser/MouseToolLine.h @@ -0,0 +1,20 @@ +#pragma once +#include "mousetool.h" +class CMouseToolLine :public CMouseTool +{ +public: + CMouseToolLine(void); + ~CMouseToolLine(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnEscapeKey(); + virtual bool OnSetCmd(CString str); +private : + void CreatOneLine(Dbxy pt); +private: + double m_Length;// + double m_Angle;//360 +}; + diff --git a/LaiPuLaser/MouseToolMeasure.cpp b/LaiPuLaser/MouseToolMeasure.cpp new file mode 100644 index 0000000..2fbe8b5 --- /dev/null +++ b/LaiPuLaser/MouseToolMeasure.cpp @@ -0,0 +1,123 @@ +#include "StdAfx.h" +#include "MouseToolMeasure.h" +#include "GlobalFunction.h" +#include "CommandMove.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" +#include "DrawSimpleShape.h" + +CMouseToolMeasure::CMouseToolMeasure(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_MEASURE_FIRST_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + +} +CMouseToolMeasure::~CMouseToolMeasure(void) +{ +} +void CMouseToolMeasure::OperateOver() +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + CMouseTool::OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolMeasure::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + //------------------------------------־start + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_FIRST_PT,STR_NULL,STR_NULL,pt.x,pt.y); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_MEASURE_SECOND_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + ToNextStatus(); + } + else + { + //------------------------------------־start + { + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_SECOND_PT,STR_NULL,STR_NULL,pt.x,pt.y); + } + { + // + m_Dis = CalDistance(m_DownPoint,pt); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT,STR_NULL,m_Dis); + } + { + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT2,STR_NULL,STR_NULL,pt.x-m_DownPoint.x,pt.y-m_DownPoint.y); + } + //Ƕ + { + double Ang = Cal360AngleByTwoPt(pt,m_DownPoint); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT3,STR_NULL,Ang); + } + //(0,0)ļн + { + double Ang = Cal360AngleByTwoPt(pt,Dbxy(0,0)); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT4,STR_NULL,Ang); + } + { + double Ang = Cal360AngleByTwoPt(m_DownPoint,Dbxy(0,0)); + gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT4,STR_NULL,Ang); + } + //------------------------------------־end + ClearFirstPoint(); + m_Status = _STATUS_1; + } +} +void CMouseToolMeasure::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolMeasure::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy OldPt = gDraw->CPoint2Dbxy(m_PreMovePt); + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + CLayer &layer = GetLayerInstance(); + if(m_Status!=_STATUS_1) + { + if(HasPreMovePt())//֮ǰ + { + XorDrawLine(&dc,gDraw->GetMeasurePen(),m_DownPoint,OldPt); + } + XorDrawLine(&dc,gDraw->GetMeasurePen(),m_DownPoint,CurPt); + + // + m_Dis = CalDistance(m_DownPoint,CurPt); + + //״̬-----------------------------start + CString str1 = "[]"; + CString str2; + str2.Format("%lf",m_Dis); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,STR_NULL); + //״̬-----------------------------end + SavePreMovePt(point); + } +} +void CMouseToolMeasure::OnEscapeKey() +{ + if(m_Status!=_STATUS_1)//ڶε + { + OperateOver(); + } +} + diff --git a/LaiPuLaser/MouseToolMeasure.h b/LaiPuLaser/MouseToolMeasure.h new file mode 100644 index 0000000..7027803 --- /dev/null +++ b/LaiPuLaser/MouseToolMeasure.h @@ -0,0 +1,16 @@ +#pragma once +#include "mousetool.h" +class CMouseToolMeasure :public CMouseTool +{ +public: + CMouseToolMeasure(void); + ~CMouseToolMeasure(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnEscapeKey(); + virtual void OperateOver(); +private: + double m_Dis;// +}; + diff --git a/LaiPuLaser/MouseToolMove.cpp b/LaiPuLaser/MouseToolMove.cpp new file mode 100644 index 0000000..b88edb9 --- /dev/null +++ b/LaiPuLaser/MouseToolMove.cpp @@ -0,0 +1,61 @@ +#include "StdAfx.h" +#include "MouseToolMove.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" + + +CMouseToolMove::CMouseToolMove(void) +{ + m_MoveDisX = 0; + m_MoveDisY = 0; +} +CMouseToolMove::~CMouseToolMove(void) +{ +} +void CMouseToolMove::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + //ģĶ + CreatOpSimulateObj(); + ToNextStatus(); + } +} +void CMouseToolMove::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + GetLayerInstance().OnMove(m_MoveDisX,m_MoveDisY); + OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolMove::OperateObj(Dbxy StartPt,Dbxy EndPt) +{ + //obj + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = EndPt.x - StartPt.x; + par.MoveY = EndPt.y - StartPt.y; + //ģ + OpSimulateObj(par); + + //¼ƶ--- + m_MoveDisX = par.MoveX; + m_MoveDisY = par.MoveY; +} +void CMouseToolMove::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + CLayer &layer = GetLayerInstance(); + if(nFlags&MK_LBUTTON && (m_Status!=_STATUS_1)) + { + if(m_bFirstMove==false) + { + //ػģ + XorRedrawOpSimulateObj(&dc); + } + m_bFirstMove = false; + OperateObj(m_DownPoint,CurPt);// + XorRedrawOpSimulateObj(&dc); + } +} + diff --git a/LaiPuLaser/MouseToolMove.h b/LaiPuLaser/MouseToolMove.h new file mode 100644 index 0000000..3535424 --- /dev/null +++ b/LaiPuLaser/MouseToolMove.h @@ -0,0 +1,17 @@ +#pragma once +#include "mousetool.h" +class CMouseToolMove :public CMouseTool +{ +public: + CMouseToolMove(void); + ~CMouseToolMove(void); + virtual void OperateObj(Dbxy StartPt,Dbxy EndPt); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool NeedToPointTool(){return true;}; +private: + double m_MoveDisX; + double m_MoveDisY; +}; + diff --git a/LaiPuLaser/MouseToolMove2.cpp b/LaiPuLaser/MouseToolMove2.cpp new file mode 100644 index 0000000..c6547f1 --- /dev/null +++ b/LaiPuLaser/MouseToolMove2.cpp @@ -0,0 +1,141 @@ +#include "StdAfx.h" +#include "MouseToolMove2.h" +#include "GlobalFunction.h" +#include "CommandMove.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" +#include "DrawSimpleShape.h" + +CMouseToolMove2::CMouseToolMove2(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_MOVE_FIRST_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end +} +CMouseToolMove2::~CMouseToolMove2(void) +{ +} +void CMouseToolMove2::OperateOver() +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + + if(m_Status==_STATUS_2) + { + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = m_MoveDisX; + par.MoveY = m_MoveDisY; + //GetLayerInstance().OperateObj(par,true,true); + GetLayerInstance().OnMove(m_MoveDisX,m_MoveDisY); + } + CMouseTool::OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolMove2::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1)//ָ + { + SaveDownPoint(point); + //------------------------------------־start + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_TOOL_MOVE_FIRST_PT,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_MOVE_DIS); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + ToNextStatus(); + //ѡobj Ƶm_TmpObjContainer + m_TmpObjContainer.Clear(); + GetLayerInstance().CloneObj(m_TmpObjContainer,true); + + //ģĶ + CreatOpSimulateObj(); + } + else + { + //Ҫ¼ƶ룬Ϊв׽λ + m_MoveDisX = pt.x - m_DownPoint.x; + m_MoveDisY = pt.y - m_DownPoint.y; + + OperateOver(); + } +} +void CMouseToolMove2::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolMove2::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy OldPt = gDraw->CPoint2Dbxy(m_PreMovePt); + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_2) + { + if(m_bFirstMove==false) + { + //ػģ + XorRedrawOpSimulateObj(&dc); + } + m_bFirstMove = false; + + if(HasPreMovePt())//֮ǰ + { + XorDrawLine(&dc,gDraw->GetObjectPen(),m_DownPoint,OldPt); + } + XorDrawLine(&dc,gDraw->GetObjectPen(),m_DownPoint,CurPt);//һʱ + + //ƶ + m_MoveDisX = CurPt.x - m_DownPoint.x; + m_MoveDisY = CurPt.y - m_DownPoint.y; + //obj + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = m_MoveDisX; + par.MoveY = m_MoveDisY; + //ģ + OpSimulateObj(par); + + XorRedrawOpSimulateObj(&dc); + + //״̬-----------------------------start + CString str1 = "ƶ[x ] [y ]"; + CString str2; + str2.Format("%lf",m_MoveDisX); + CString str3; + str3.Format("%lf",m_MoveDisY); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,str3); + //״̬-----------------------------end + SavePreMovePt(point); + } +} +bool CMouseToolMove2::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2) + { + double Val1=0;//x + double Val2=0;//y + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result == 2)//Ҫͬʱ + { + m_MoveDisX = Val1; + m_MoveDisY = Val2; + OperateOver(); + return true; + } + } + } + return false; +} + diff --git a/LaiPuLaser/MouseToolMove2.h b/LaiPuLaser/MouseToolMove2.h new file mode 100644 index 0000000..5e0efb1 --- /dev/null +++ b/LaiPuLaser/MouseToolMove2.h @@ -0,0 +1,20 @@ +#pragma once +#include "mousetool.h" + +//ָƶ +class CMouseToolMove2 :public CMouseTool +{ +public: + CMouseToolMove2(void); + ~CMouseToolMove2(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OperateOver(); + virtual bool OnSetCmd(CString str); + virtual bool NeedToPointTool(){return true;}; +private: + double m_MoveDisX; + double m_MoveDisY; +}; + diff --git a/LaiPuLaser/MouseToolMoveNode.cpp b/LaiPuLaser/MouseToolMoveNode.cpp new file mode 100644 index 0000000..220969c --- /dev/null +++ b/LaiPuLaser/MouseToolMoveNode.cpp @@ -0,0 +1,84 @@ +#include "StdAfx.h" +#include "MouseToolMoveNode.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "CommandMoveNode.h" +#include "CommandMgr.h" + +CMouseToolMoveNode::CMouseToolMoveNode(void) +{ + m_NodeIdx = -1; +} +CMouseToolMoveNode::~CMouseToolMoveNode(void) +{ +} +void CMouseToolMoveNode::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + if(m_Status==_STATUS_1) + { + Dbxy pt = gDraw->CPoint2Dbxy(point); + DbRect rect = gDraw->GetCurPointRect(pt); + + CLayer &layer = GetLayerInstance(); + if(!layer.HasSelNodeInRect(rect)) + return; + //ҵһrect obj ----------------------------------------------- + Sptr pObj = layer.GetFirstNodeObjInRect(rect); + m_TmpObjContainer.AddObject(pObj); + //obj rect еĵһnode ----------------------------------------------- + vector LineVec; + pObj->GetLineInRect(rect,LineVec,false); + Dbxy NodePt = LineVec[0].m_pt1.GetPt(); + if(!IsPointInRect(NodePt,rect)) + { + NodePt = LineVec[0].m_pt2.GetPt(); + } + if(!IsPointInRect(NodePt,rect)) + return; + //NodePt obj + m_NodeIdx = pObj->GetNodePtIdx(NodePt); + if(m_NodeIdx!=-1) + { + //¼ɵ + m_OldPt = NodePt; + ToNextStatus(); + } + + } +} +void CMouseToolMoveNode::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + if(!m_TmpObjContainer.Empty()) + { + //ָ-------start + CCommandMoveNode *p = new CCommandMoveNode; + p->SetPar(m_NodeIdx,m_OldPt,m_NewPt); + gCommandMgr.AddUndoCommand(p,m_TmpObjContainer.GetObjVec()); + p->Excute(); + //ָ-------end + } + //ʱ + m_TmpObjContainer.Clear(); + + OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolMoveNode::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + CLayer &layer = GetLayerInstance(); + if(nFlags&MK_LBUTTON && (m_Status!=_STATUS_1)) + { + if(m_bFirstMove==false) + { + layer.XorRedrawObj(&dc);//֮ǰ + } + m_bFirstMove = false; + m_TmpObjContainer.SetNodePtByIdx(m_NodeIdx,CurPt); + //¼µ + m_NewPt = CurPt; + + layer.XorRedrawObj(&dc);//ػ + } +} + diff --git a/LaiPuLaser/MouseToolMoveNode.h b/LaiPuLaser/MouseToolMoveNode.h new file mode 100644 index 0000000..650dd06 --- /dev/null +++ b/LaiPuLaser/MouseToolMoveNode.h @@ -0,0 +1,18 @@ +#pragma once +#include "mousetool.h" +//ƶڵ㹤 +class CMouseToolMoveNode :public CMouseTool +{ +public: + CMouseToolMoveNode(void); + ~CMouseToolMoveNode(void); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool NeedToPointTool(){return true;}; +private: + int m_NodeIdx;//ǰnode ڵֵ + Dbxy m_OldPt;//ɵ + Dbxy m_NewPt;//µ +}; + diff --git a/LaiPuLaser/MouseToolOnePoint.cpp b/LaiPuLaser/MouseToolOnePoint.cpp new file mode 100644 index 0000000..6660e06 --- /dev/null +++ b/LaiPuLaser/MouseToolOnePoint.cpp @@ -0,0 +1,31 @@ +#include "StdAfx.h" +#include "MouseToolOnePoint.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "CommandCreat.h" +#include "ObjPoint.h" +#include "CommandMgr.h" + +CMouseToolOnePoint::CMouseToolOnePoint(void) +{ +} +CMouseToolOnePoint::~CMouseToolOnePoint(void) +{ +} +void CMouseToolOnePoint::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + CObjPoint *p = new CObjPoint; + p->SetPt(pt);//û׼ + + CObjContainer Container; + Container.AddObject(p); + //ָ-------start + CCommandCreat *pCmd = new CCommandCreat; + gCommandMgr.AddUndoCommand(pCmd,Container.GetObjVec()); + pCmd->Excute(); + } + GetCurViewPtr()->RefreshView(); +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolOnePoint.h b/LaiPuLaser/MouseToolOnePoint.h new file mode 100644 index 0000000..5d53587 --- /dev/null +++ b/LaiPuLaser/MouseToolOnePoint.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +//㹤 +class CMouseToolOnePoint :public CMouseTool +{ +public: + CMouseToolOnePoint(void); + ~CMouseToolOnePoint(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); +}; + diff --git a/LaiPuLaser/MouseToolPline.cpp b/LaiPuLaser/MouseToolPline.cpp new file mode 100644 index 0000000..8144930 --- /dev/null +++ b/LaiPuLaser/MouseToolPline.cpp @@ -0,0 +1,182 @@ +#include "StdAfx.h" +#include "MouseToolPline.h" +#include "LogMgr.h" +#include "ObjPLine.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +CMouseToolPline::CMouseToolPline(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_LINE_FIRST_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + m_Length = 0;// + m_Angle = 0;//360 +} +CMouseToolPline::~CMouseToolPline(void) +{ +} +void CMouseToolPline::CreatOneLine(Dbxy pt) +{ + CObjPline *p = new CObjPline; + p->Creat(pt,pt); + AddObject(p); + //-------------------------------------------start + if(m_Status==_STATUS_1) + { + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_LINE_FIRST_PT,val1,val2); + ToNextStatus(); + } + else + { + CString val1; + val1.Format("%lf",m_Length); + CString val2; + val2.Format("%lf",m_Angle); + gLogMgr->WriteCmd(CMD_LINE_NEXT_PT,val1,val2); + } + //-------------------------------------------end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_LINE_NEXT_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + SaveDownPoint(pt); +} +void CMouseToolPline::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + //ÿһ´һֱ + Dbxy pt = gDraw->CPoint2Dbxy(point); + CreatOneLine(pt); +} +void CMouseToolPline::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolPline::OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + // + m_TmpObjContainer.XorDrawLastObj(&dc); + //ɾһobj + m_TmpObjContainer.DeleteLastObj(); + //еline ϳpline + AlllineCombToPline(); + //ָ + AddCreatCommand(); + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + // + m_Status = _STATUS_END; + OperateOver(); +} +void CMouseToolPline::OnMouseMove(UINT nFlag, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status!=_STATUS_1) + { + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + m_TmpObjContainer.XorDrawLastObj(&dc); + p->Creat(m_DownPoint,pt); + m_TmpObjContainer.XorDrawLastObj(&dc); + + m_Length = CalDistance(m_DownPoint,pt);// + m_Angle = Cal360AngleByTwoPt(m_DownPoint,pt);//360 + //״̬-----------------------------start + CString str1 = "߶[] [Ƕ]"; + CString str2; + str2.Format("%lf",m_Length); + CString str3; + str3.Format("%lf",m_Angle); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,str3); + //״̬-----------------------------end + } + } +} +void CMouseToolPline::OnEscapeKey() +{ + //ɾһobj + m_TmpObjContainer.DeleteLastObj(); + + //еline ϳpline + AlllineCombToPline(); + //ָ + AddCreatCommand(); + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + m_Status = _STATUS_END; + OperateOver(); +} +bool CMouseToolPline::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2) + { + double Val1=0;// + double Val2=0;//Ƕ + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result==1)//ֻ볤 + { + Val2 = m_Angle; + } + if(Val1>0)//Ҫ0 + { + m_Length = Val1; + m_Angle = Val2; + //ָ + Dbxy SetPoint = GetPoint2(m_DownPoint,Val1,_360ToAngle(Val2)); + //Ȱѵǰ߶ӵ + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + p->Creat(m_DownPoint,SetPoint); + } + //Ϊ㴴߶ + CreatOneLine(SetPoint); + //ǿˢ + GetCurViewPtr()->RefreshView(); + return true; + } + } + } + return false; +} +//еline ϳpline +void CMouseToolPline::AlllineCombToPline() +{ + if(m_TmpObjContainer.Empty()) + return; + CObjPline *p = NULL; + vector> &vec = m_TmpObjContainer.GetObjVec(); + int size = vec.size(); + for(int i=0;iCreat(vec[0]->GetFirstPt(),vec[0]->GetLastPt()); + } + else + { + CDataPoint DataPoint(vec[i]->GetLastPt()); + DataPoint.SetIsNode(true); + p->AddDataPoint(DataPoint); + } + } + //߶εмΪ׽ + p->CreatMidNode(); + m_TmpObjContainer.Clear(); + AddObject(p); +} diff --git a/LaiPuLaser/MouseToolPline.h b/LaiPuLaser/MouseToolPline.h new file mode 100644 index 0000000..4f3e14e --- /dev/null +++ b/LaiPuLaser/MouseToolPline.h @@ -0,0 +1,22 @@ +#pragma once +#include "mousetool.h" +//߶ι +class CMouseToolPline :public CMouseTool +{ +public: + CMouseToolPline(void); + ~CMouseToolPline(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnEscapeKey(); + virtual bool OnSetCmd(CString str); +private : + void CreatOneLine(Dbxy pt); + void AlllineCombToPline(); +private: + double m_Length;// + double m_Angle;//360 +}; + diff --git a/LaiPuLaser/MouseToolPointer.cpp b/LaiPuLaser/MouseToolPointer.cpp new file mode 100644 index 0000000..7fa310f --- /dev/null +++ b/LaiPuLaser/MouseToolPointer.cpp @@ -0,0 +1,97 @@ +#include "StdAfx.h" +#include "MouseToolPointer.h" +#include "LogMgr.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "GlobalFunction.h" +#include "MarkAreaMgr.h" + +#define PT_SEL_SCALE 0.1 //ѡrect ı +CMouseToolPointer::CMouseToolPointer(void) +{ +} +CMouseToolPointer::~CMouseToolPointer(void) +{ +} +void CMouseToolPointer::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + CLayer &layer = GetLayerInstance(); + if(m_Status==_STATUS_1) + { + SaveDownPoint(point);//¼һ + ToNextStatus(); + } + else + { + DbRect rect; + Dbxy pt2 = gDraw->CPoint2Dbxy(point); + if(gDraw->IsbRectSel())//ֻпѡʱŻ + { + DrawRect(&dc,gDraw->GetMouseRectPen(),m_DownPoint,pt2); + } + //ѡ + rect.Creat(m_DownPoint,pt2); + if(rect.IsZero())//ѡ + { + if(gDraw->IsbPointSel()) + { + rect = gDraw->GetCurPointRect(pt2,PT_SEL_SCALE); + layer.SelObjectInRect(rect,false); + } + } + else + { + if(gDraw->IsbRectSel())//ѡ + { + //Ҫȫס + if(m_DownPoint.xSelAreaByPt(rect.GetCenterPt()); + } + } + GetCurViewPtr()->RefreshView(); + + m_Status = _STATUS_1; + } +} +void CMouseToolPointer::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + if(m_Status!=_STATUS_1)//ѡ + { + Dbxy pt2 = gDraw->CPoint2Dbxy(point); + DbRect rect; + rect = gDraw->GetCurPointRect(pt2,PT_SEL_SCALE); + if(gDraw->IsbPointSel()) + { + if(GetLayerInstance().SelObjectInRect(rect,false)) + { + GetCurViewPtr()->RefreshView(); + m_Status = _STATUS_1; + } + } + } +} +void CMouseToolPointer::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt2 = gDraw->CPoint2Dbxy(m_PreMovePt); + Dbxy pt2New = gDraw->CPoint2Dbxy(point); + + if(m_Status!=_STATUS_1)//ѡͼ + { + if(gDraw->IsbRectSel())//ֻпѡʱŻ + { + if(HasPreMovePt())//֮ǰ + { + DrawRect(&dc,gDraw->GetMouseRectPen(),m_DownPoint,pt2); + } + DrawRect(&dc,gDraw->GetMouseRectPen(),m_DownPoint,pt2New); + } + SavePreMovePt(point); + } +} diff --git a/LaiPuLaser/MouseToolPointer.h b/LaiPuLaser/MouseToolPointer.h new file mode 100644 index 0000000..674bca1 --- /dev/null +++ b/LaiPuLaser/MouseToolPointer.h @@ -0,0 +1,15 @@ +#pragma once +#include "mousetool.h" +//ָ빤 +class CMouseToolPointer :public CMouseTool +{ +public: + CMouseToolPointer(void); + ~CMouseToolPointer(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); +private: + +}; + diff --git a/LaiPuLaser/MouseToolPtMoveToCCD.cpp b/LaiPuLaser/MouseToolPtMoveToCCD.cpp new file mode 100644 index 0000000..9f60b20 --- /dev/null +++ b/LaiPuLaser/MouseToolPtMoveToCCD.cpp @@ -0,0 +1,17 @@ +#include "StdAfx.h" +#include "MouseToolPtMoveToCCD.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "SetPointMgr.h" +#include "ProductMgr.h" + +CMouseToolPtMoveToCCD::CMouseToolPtMoveToCCD(void) +{ +} +CMouseToolPtMoveToCCD::~CMouseToolPtMoveToCCD(void) +{ +} +void CMouseToolPtMoveToCCD::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolPtMoveToCCD.h b/LaiPuLaser/MouseToolPtMoveToCCD.h new file mode 100644 index 0000000..09cd331 --- /dev/null +++ b/LaiPuLaser/MouseToolPtMoveToCCD.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +//ָ;㹤 +class CMouseToolPtMoveToCCD :public CMouseTool +{ +public: + CMouseToolPtMoveToCCD(void); + ~CMouseToolPtMoveToCCD(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); +}; + diff --git a/LaiPuLaser/MouseToolRect.cpp b/LaiPuLaser/MouseToolRect.cpp new file mode 100644 index 0000000..626e54f --- /dev/null +++ b/LaiPuLaser/MouseToolRect.cpp @@ -0,0 +1,144 @@ +#include "StdAfx.h" +#include "MouseToolRect.h" +#include "ObjPline.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" + +CMouseToolRect::CMouseToolRect(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_RECT_FIRST_PT); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + m_Width = 0; + m_Hight = 0; +} +CMouseToolRect::~CMouseToolRect(void) +{ +} +void CMouseToolRect::OperateOver() +{ + //------------------------------------־start + CString val1; + val1.Format("%lf",m_Width); + CString val2; + val2.Format("%lf",m_Hight); + gLogMgr->WriteCmd(CMD_RECT_SIZE,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + //ָ + AddCreatCommand(); + // + m_Status = _STATUS_END; + + CMouseTool::OperateOver(); +} + +void CMouseToolRect::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + CObjPline *p = new CObjPline; + p->Creat(pt,m_Width,m_Hight); + p->SetbOffsetAreaRect(true);//ΪƫƵ + AddObject(p); + //------------------------------------־start + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_RECT_FIRST_PT,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_RECT_SIZE); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + ToNextStatus(); + } + else + { + OperateOver(); + } +} +void CMouseToolRect::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolRect::OnMouseMove(UINT nFlag, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status!=_STATUS_1) + { + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + m_Width = pt.x-m_DownPoint.x; + m_Hight = pt.y-m_DownPoint.y; + + m_TmpObjContainer.XorRedrawObj(&dc,false); + p->Creat(m_DownPoint,m_Width,m_Hight); + m_TmpObjContainer.XorRedrawObj(&dc,false); + + //״̬-----------------------------start + CString str1 = "[] [߶]"; + CString str2; + str2.Format("%lf",m_Width); + CString str3; + str3.Format("%lf",m_Hight); + GetFrame()->ResetStatusBarExtStr(); + GetFrame()->SetStatusBarExtStr(str1,str2,str3); + //״̬-----------------------------end + } + } +} +bool CMouseToolRect::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2) + { + double Val1=0;// + double Val2=0;//߶ + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result == 2 && Val1>0 && Val2>0)//ȸ߶Ҫ0 ,Ҫͬʱ + { + //λж + if(m_Width<0) + { + m_Width = Val1*(-1); + } + else + { + m_Width = Val1; + } + if(m_Hight<0) + { + m_Hight = Val2*(-1); + } + else + { + m_Hight = Val2; + } + + CObjBase *pCurOptObject = m_TmpObjContainer.GetCurOpObj(); + if(pCurOptObject) + { + CObjPline *p = dynamic_cast(pCurOptObject); + p->Creat(m_DownPoint,m_Width,m_Hight); + } + OperateOver(); + return true; + } + } + } + return false; +} + diff --git a/LaiPuLaser/MouseToolRect.h b/LaiPuLaser/MouseToolRect.h new file mode 100644 index 0000000..3cd11f9 --- /dev/null +++ b/LaiPuLaser/MouseToolRect.h @@ -0,0 +1,19 @@ +#pragma once +#include "mousetool.h" +class CMouseToolRect :public CMouseTool +{ +public: + CMouseToolRect(void); + ~CMouseToolRect(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool OnSetCmd(CString str); + virtual bool NeedToPointTool(){return true;}; +private: + void OperateOver(); +private: + double m_Width; + double m_Hight; +}; + diff --git a/LaiPuLaser/MouseToolRotate.cpp b/LaiPuLaser/MouseToolRotate.cpp new file mode 100644 index 0000000..2aff0c0 --- /dev/null +++ b/LaiPuLaser/MouseToolRotate.cpp @@ -0,0 +1,141 @@ +#include "StdAfx.h" +#include "MouseToolRotate.h" +#include "GlobalFunction.h" +#include "CommandRotato.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" +#include "CommandMgr.h" + + +CMouseToolRotate::CMouseToolRotate(void) +{ + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_ROTATO_CENTER); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end +} +CMouseToolRotate::~CMouseToolRotate(void) +{ +} +void CMouseToolRotate::OperateOver() +{ + if(m_Status==_STATUS_2) + { + //------------------------------------־start + CString val1; + val1.Format("%lf",m_Angle); + gLogMgr->WriteCmd(CMD_TOOL_ROTATO_ANGLE,val1,STR_NULL); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + //ǩ-------------------------end + //ת + SObjOperatePar par; + par.OpType = _OP_ROTATO; + par.BasePt = m_CenterPt; + par.Angle = m_Angle; + + //undo õָ-----start + CCommandRotato *p = new CCommandRotato; + p->SetOperatePar(par); + gCommandMgr.AddUndoCommand(p); + p->Excute(); + //undo õָ-----end + CMouseTool::OperateOver(); + m_Status = _STATUS_END; + } +} +void CMouseToolRotate::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + m_CenterPt = pt;//¼תĵ + m_DownPoint.x+=20; + //------------------------------------־start + CString val1; + val1.Format("%lf",pt.x); + CString val2; + val2.Format("%lf",pt.y); + gLogMgr->WriteCmd(CMD_TOOL_ROTATO_CENTER,val1,val2); + //------------------------------------־end + //ǩ-------------------------start + GetFrame()->ResetCaptionBar(); + GetFrame()->SetCaptionCmdStr(CMD_TOOL_ROTATO_ANGLE); + GetFrame()->RefreashCaptionBar(); + //ǩ-------------------------end + ToNextStatus(); + //ѡobj Ƶm_TmpObjContainer + m_TmpObjContainer.Clear(); + GetLayerInstance().CloneObj(m_TmpObjContainer,true); + + //ģĶ + CreatOpSimulateObj(); + } + else + { + //һΣⲶ׽Ӱ + double Angle=CalAngle(m_CenterPt,m_DownPoint,pt); + m_Angle = AngleTo360(Angle);//¼תǶ + OperateOver(); + } +} +void CMouseToolRotate::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + +} +void CMouseToolRotate::OperateObj(Dbxy StartPt,Dbxy EndPt) +{ + //㷴н + double Angle=CalAngle(m_CenterPt,StartPt,EndPt); + m_Angle = AngleTo360(Angle);//¼תǶ +} +void CMouseToolRotate::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_2) + { + if(m_bFirstMove==false) + { + //ػģ + XorRedrawOpSimulateObj(&dc); + } + m_bFirstMove = false; + //㷴н + double Angle=CalAngle(m_CenterPt,m_DownPoint,CurPt); + m_Angle = AngleTo360(Angle);//¼תǶ + + SObjOperatePar par; + par.OpType = _OP_ROTATO; + par.BasePt = m_CenterPt; + par.Angle = m_Angle; + + //ģ + OpSimulateObj(par); + + //ػģ + XorRedrawOpSimulateObj(&dc); + } +} +bool CMouseToolRotate::OnSetCmd(CString str) +{ + if(m_Status==_STATUS_2) + { + double Val1=0;//תǶ + double Val2=0; + int result = GetTwoNum(str,Val1,Val2); + if(result>0) + { + if(result == 1) + { + m_Angle = Val1; + OperateOver(); + return true; + } + } + } + return false; +} + diff --git a/LaiPuLaser/MouseToolRotate.h b/LaiPuLaser/MouseToolRotate.h new file mode 100644 index 0000000..51b74ed --- /dev/null +++ b/LaiPuLaser/MouseToolRotate.h @@ -0,0 +1,19 @@ +#pragma once +#include "mousetool.h" +class CMouseToolRotate :public CMouseTool +{ +public: + CMouseToolRotate(void); + ~CMouseToolRotate(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OperateObj(Dbxy StartPt,Dbxy EndPt); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OperateOver(); + virtual bool NeedToPointTool(){return true;}; + bool OnSetCmd(CString str); +private: + Dbxy m_CenterPt;//תĵ㲻ܱ + double m_Angle; +}; + diff --git a/LaiPuLaser/MouseToolSetMarkPt.cpp b/LaiPuLaser/MouseToolSetMarkPt.cpp new file mode 100644 index 0000000..9d05028 --- /dev/null +++ b/LaiPuLaser/MouseToolSetMarkPt.cpp @@ -0,0 +1,18 @@ +#include "StdAfx.h" +#include "MouseToolSetMarkPt.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "SetPointMgr.h" + + +CMouseToolSetMarkPt::CMouseToolSetMarkPt(void) +{ +} +CMouseToolSetMarkPt::~CMouseToolSetMarkPt(void) +{ +} +void CMouseToolSetMarkPt::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + gSetPointMgr->OnLButtonDown(pt); +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolSetMarkPt.h b/LaiPuLaser/MouseToolSetMarkPt.h new file mode 100644 index 0000000..6db44a8 --- /dev/null +++ b/LaiPuLaser/MouseToolSetMarkPt.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +//ֶָ۶λ +class CMouseToolSetMarkPt :public CMouseTool +{ +public: + CMouseToolSetMarkPt(void); + ~CMouseToolSetMarkPt(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); +}; + diff --git a/LaiPuLaser/MouseToolStretch.cpp b/LaiPuLaser/MouseToolStretch.cpp new file mode 100644 index 0000000..a85af4e --- /dev/null +++ b/LaiPuLaser/MouseToolStretch.cpp @@ -0,0 +1,124 @@ +#include "StdAfx.h" +#include "MouseToolStretch.h" +#include "EnumDirection.h" +#include "EasyOperationMgr.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "CommandStretch.h" +#include "CommandMgr.h" + +CMouseToolStretch::CMouseToolStretch(void) +{ +} +CMouseToolStretch::~CMouseToolStretch(void) +{ +} +void CMouseToolStretch::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + if(m_Status==_STATUS_1) + { + SaveDownPoint(point); + //ģĶ + CreatOpSimulateObj(); + ToNextStatus(); + } +} +void CMouseToolStretch::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + //undo õָ-----start + CCommandStretch *pCmd = new CCommandStretch; + + //obj + DIRECTION dir = gEasyOperationMgr->GetOprDir(); + if(dir == _DIR_L || dir == _DIR_R) + { + pCmd->SetOperatePar(m_ParX); + } + else if(dir == _DIR_U || dir == _DIR_D) + { + pCmd->SetOperatePar(m_ParY); + } + else + { + pCmd->SetOperatePar(m_ParX); + pCmd->SetOperateParY(m_ParY); + } + gCommandMgr.AddUndoCommand(pCmd); + //undo õָ-----end + pCmd->Excute(); + + OperateOver(); + m_Status = _STATUS_END; +} +void CMouseToolStretch::OperateObj(Dbxy StartPt,Dbxy EndPt) +{ + m_OpSimulateObj.DelAllPt(); + m_OpSimulateObj.CopyPt(m_OpSimulateObjBak); + //obj + DIRECTION dir = gEasyOperationMgr->GetOprDir(); + //ֱ + if(dir == _DIR_LB || dir == _DIR_RB || dir == _DIR_LT || dir == _DIR_RT) + { + if(abs(EndPt.x - StartPt.x)StartPt.y) + { + EndPt.y = StartPt.y + abs(EndPt.x - StartPt.x); + } + else + { + EndPt.y = StartPt.y - abs(EndPt.x - StartPt.x); + } + } + else + { + if(EndPt.x>StartPt.x) + { + EndPt.x = StartPt.x + abs(EndPt.y - StartPt.y); + } + else + { + EndPt.x = StartPt.x - abs(EndPt.y - StartPt.y); + } + } + } + + if(dir != _DIR_U && dir != _DIR_D) + { + m_ParX.OpType = _OP_STRETCH; + m_ParX.BasePt = gEasyOperationMgr->GetBasePt(); + m_ParX.OldSize = gEasyOperationMgr->GetSize(_X); + m_ParX.Diff = gEasyOperationMgr->GetDiff(StartPt,EndPt).x; + m_ParX.NewSize = m_ParX.OldSize + m_ParX.Diff; + m_ParX.xy = _X; + //ģ + m_OpSimulateObj.Operate(m_ParX); + } + if(dir != _DIR_L && dir != _DIR_R) + { + m_ParY.OpType = _OP_STRETCH; + m_ParY.BasePt = gEasyOperationMgr->GetBasePt(); + m_ParY.OldSize = gEasyOperationMgr->GetSize(_Y); + m_ParY.Diff = gEasyOperationMgr->GetDiff(StartPt,EndPt).y; + m_ParY.NewSize = m_ParY.OldSize + m_ParY.Diff; + m_ParY.xy = _Y; + //ģ + m_OpSimulateObj.Operate(m_ParY); + } +} +void CMouseToolStretch::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy CurPt = gDraw->CPoint2Dbxy(point); + CLayer &layer = GetLayerInstance(); + if(nFlags&MK_LBUTTON && (m_Status!=_STATUS_1)) + { + if(m_bFirstMove==false) + { + //ػģ + XorRedrawOpSimulateObj(&dc); + } + m_bFirstMove = false; + OperateObj(m_DownPoint,CurPt);// + XorRedrawOpSimulateObj(&dc); + } +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolStretch.h b/LaiPuLaser/MouseToolStretch.h new file mode 100644 index 0000000..0d75757 --- /dev/null +++ b/LaiPuLaser/MouseToolStretch.h @@ -0,0 +1,19 @@ +#pragma once +#include "mousetool.h" + +//칤 +class CMouseToolStretch :public CMouseTool +{ +public: + CMouseToolStretch(void); + ~CMouseToolStretch(void); + virtual void OperateObj(Dbxy StartPt,Dbxy EndPt); + virtual void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool NeedToPointTool(){return true;}; +private: + SObjOperatePar m_ParX;// + SObjOperatePar m_ParY;// +}; + diff --git a/LaiPuLaser/MouseToolText.cpp b/LaiPuLaser/MouseToolText.cpp new file mode 100644 index 0000000..ab2c1c7 --- /dev/null +++ b/LaiPuLaser/MouseToolText.cpp @@ -0,0 +1,36 @@ +#include "StdAfx.h" +#include "MouseToolText.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "ObjTxt.h" +#include "CommandCreat.h" +#include "CommandMgr.h" + + +CMouseToolText::CMouseToolText(void) +{ +} +CMouseToolText::~CMouseToolText(void) +{ +} +void CMouseToolText::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + if(m_Status==_STATUS_1) + { + CObjTxt *p = new CObjTxt; + p->SetPosition(pt);//û׼ + p->SetUseCurFontName();//ʹõǰ + p->Creat(); + + CObjContainer Container; + Container.AddObject(p); + //ָ-------start + CCommandCreat *pCmd = new CCommandCreat; + gCommandMgr.AddUndoCommand(pCmd,Container.GetObjVec()); + pCmd->Excute(); + } + // + m_Status = _STATUS_END; + OperateOver(); +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolText.h b/LaiPuLaser/MouseToolText.h new file mode 100644 index 0000000..f1886f9 --- /dev/null +++ b/LaiPuLaser/MouseToolText.h @@ -0,0 +1,11 @@ +#pragma once +#include "mousetool.h" +class CMouseToolText :public CMouseTool +{ +public: + CMouseToolText(void); + ~CMouseToolText(void); + virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + virtual bool NeedToPointTool(){return true;}; +}; + diff --git a/LaiPuLaser/MouseToolmgr.cpp b/LaiPuLaser/MouseToolmgr.cpp new file mode 100644 index 0000000..5e0247b --- /dev/null +++ b/LaiPuLaser/MouseToolmgr.cpp @@ -0,0 +1,286 @@ +#include "StdAfx.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "MouseToolmgr.h" +#include "MouseToolPointer.h" +#include "MouseToolRect.h" +#include "MouseToolLine.h" +#include "MouseToolCircle.h" +#include "MouseToolMove.h" +#include "MouseToolRotate.h" +#include "MarkObjPropertieMgr.h" +#include "MouseToolMove2.h" +#include "MouseToolMeasure.h" +#include "MouseToolCopy.h" +#include "MouseToolCut.h" +#include "MouseToolPline.h" +#include "MouseToolDelNode.h" +#include "MouseToolAddNode.h" +#include "MouseToolBreakNode.h" +#include "MouseToolMoveNode.h" +#include "MouseToolText.h" +#include "MouseToolBarCode.h" +#include "MouseToolOnePoint.h" +#include "CatchMgr.h" +#include "MouseToolStretch.h" +#include "EasyOperationMgr.h" +#include "MouseToolPtMoveToCCD.h" +#include "MouseToolSetMarkPt.h" + + +//ȫָ빤߹ +CMouseToolMgr gMouseToolMgr; + +CMouseToolMgr::CMouseToolMgr(void) +{ + m_MouseToolType = _TOOL_POINT; +} +CMouseToolMgr::~CMouseToolMgr(void) +{ + ReleseTool(); +} +void CMouseToolMgr::ReleseTool() +{ + if(m_pMouseTool) + delete m_pMouseTool; +} +//깤 +void CMouseToolMgr::SetMouseTool(MOUSE_TOOL MouseToolType) +{ + GetCurViewPtr()->SetCursorStyle(MouseToolType); + //֮ǰĹ + m_OldMouseToolType = m_MouseToolType; + m_MouseToolType = MouseToolType; + //ɾԭĹ + ReleseTool(); + //¹ + m_pMouseTool = CreatMouseTool(MouseToolType); + //ˢ + if(GetFrame()) + { + //һЩ߽view + if(m_MouseToolType != _TOOL_POINT) + { + GetCurViewPtr()->LimitCursor(); + } + else + { + GetCurViewPtr()->ReleseLimitCursor(); + } + } +} +CMouseTool * CMouseToolMgr::CreatMouseTool(MOUSE_TOOL MouseToolType) +{ + CMouseTool *pMouseTool = NULL; + switch(MouseToolType) + { + case _TOOL_POINT: + pMouseTool = new CMouseToolPointer; + break; + case _TOOL_RECT: + pMouseTool = new CMouseToolRect; + break; + case _TOOL_CIRCLE: + pMouseTool = new CMouseToolCircle; + break; + case _TOOL_LINE: + pMouseTool = new CMouseToolLine; + break; + case _TOOL_PLINE: + pMouseTool = new CMouseToolPline; + break; + case _TOOL_MOVE: + pMouseTool = new CMouseToolMove; + break; + case _TOOL_MOVE2: + pMouseTool = new CMouseToolMove2; + break; + case _TOOL_ROTATO: + pMouseTool = new CMouseToolRotate; + break; + case _TOOL_MEASURE: + pMouseTool = new CMouseToolMeasure; + break; + case _TOOL_COPY: + pMouseTool = new CMouseToolCopy; + break; + case _TOOL_CUT: + pMouseTool = new CMouseToolCut; + break; + case _TOOL_DEL_NODE: + pMouseTool = new CMouseToolDelNode; + break; + case _TOOL_ADD_NODE: + pMouseTool = new CMouseToolAddNode; + break; + case _TOOL_BREAK_NODE: + pMouseTool = new CMouseToolBreakNode; + break; + case _TOOL_MOVE_NODE: + pMouseTool = new CMouseToolMoveNode; + break; + case _TOOL_TEXT: + pMouseTool = new CMouseToolText; + break; + case _TOOL_BARCODE: + pMouseTool = new CMouseToolBarCode; + break; + case _TOOL_ONE_POINT: + pMouseTool = new CMouseToolOnePoint; + break; + case _TOOL_STRETCH: + pMouseTool = new CMouseToolStretch; + break; + case _TOOL_PT_MOVE_TO_CCD: + pMouseTool = new CMouseToolPtMoveToCCD; + break; + case _TOOL_SET_MARK_PT: + pMouseTool = new CMouseToolSetMarkPt; + break; + default: + break; + } + return pMouseTool; +} +void CMouseToolMgr::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + //в,ʹò + CPoint CatchPoint; + if(gCatchMgr.GetCatchPoint(CatchPoint)) + { + point = CatchPoint; + } + m_pMouseTool->OnLButtonDown(nFlags,point,dc); +} +void CMouseToolMgr::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + m_pMouseTool->OnLButtonUp(nFlags,point,dc); + + if(m_pMouseTool->NeedToPointTool()) + { + GetCurViewPtr()->RefreshView(); + if(m_pMouseTool->IsEndStatus()) + { + SetMouseTool(_TOOL_POINT); + ResetCatchPoint(&dc); + } + } + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); +} +void CMouseToolMgr::OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc) +{ + m_pMouseTool->OnRButtonDown(nFlags,point,dc); + if(m_MouseToolType == _TOOL_LINE + ||m_MouseToolType == _TOOL_PLINE) + { + SetMouseTool(_TOOL_POINT); + ResetCatchPoint(&dc); + } +} +void CMouseToolMgr::OnRButtonUp(UINT nFlags, CPoint point,CClientDC &dc) +{ + m_pMouseTool->OnRButtonUp(nFlags,point,dc); +} +void CMouseToolMgr::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) +{ + //׽point ĵ + CatchPoint(point,dc); + //в׽ʹò׽ + CPoint CatchPoint; + if(gCatchMgr.GetCatchPoint(CatchPoint)) + { + point = CatchPoint; + } + //λøı乤ߵ + ChangeMouseTool(nFlags,point); + m_pMouseTool->OnMouseMove(nFlags,point,dc); +} +void CMouseToolMgr::CatchPoint(CPoint point,CClientDC &dc) +{ + Dbxy pt = gDraw->CPoint2Dbxy(point); + Dbxy DownPt = m_pMouseTool->GetDownPoint(); + //һЩ߲긽ĵ(ʱ) + if(m_MouseToolType==_TOOL_LINE + ||m_MouseToolType==_TOOL_PLINE) + { + gCatchMgr.Catch(DownPt,pt,&dc,true); + } + //Ҫʱ + else if(m_MouseToolType==_TOOL_RECT + ||m_MouseToolType==_TOOL_CIRCLE + ||m_MouseToolType==_TOOL_MEASURE + ||m_MouseToolType==_TOOL_ADD_NODE + ||m_MouseToolType==_TOOL_DEL_NODE + ||m_MouseToolType==_TOOL_ONE_POINT + ||m_MouseToolType==_TOOL_MOVE_NODE + ||m_MouseToolType==_TOOL_PT_MOVE_TO_CCD + ||m_MouseToolType==_TOOL_SET_MARK_PT + ||m_MouseToolType==_TOOL_BREAK_NODE) + { + gCatchMgr.Catch(DownPt,pt,&dc,false); + } + else if(m_MouseToolType==_TOOL_MOVE2 + ||m_MouseToolType==_TOOL_COPY + ||m_MouseToolType==_TOOL_ROTATO) + { + //Щֻڳʼ״̬׽ʱ + if(m_pMouseTool->GetStatus()==_STATUS_1) + { + gCatchMgr.Catch(DownPt,pt,&dc,true); + } + else + { + gCatchMgr.Catch(DownPt,pt,&dc,false); + } + } +} +void CMouseToolMgr::ResetCatchPoint(CDC* pDC) +{ + gCatchMgr.ResetCatchPoint(pDC); +} +void CMouseToolMgr::OnEscapeKey(CDC* pDC) +{ + ResetCatchPoint(pDC); + m_pMouseTool->OnEscapeKey(); +} +//λøı乤ߵ +void CMouseToolMgr::ChangeMouseTool(UINT nFlags, CPoint point) +{ + if((m_MouseToolType==_TOOL_POINT && m_pMouseTool->IsStartStatus()) + ||(m_MouseToolType==_TOOL_MOVE||m_MouseToolType==_TOOL_STRETCH||m_MouseToolType==_TOOL_MOVE_NODE) && !(nFlags&MK_LBUTTON )) + { + //жϵǰ + MOUSE_TOOL type = GetLayerInstance().JudgeMouseToolType(gDraw->CPoint2Dbxy(point)); + if(type == _TOOL_POINT) + { + type = gEasyOperationMgr->JudgeMouseToolType(gDraw->CPoint2Dbxy(point)); + } + SetMouseTool(type); + } +} +bool CMouseToolMgr::OnSetCmd(CString str) +{ + if(m_pMouseTool->OnSetCmd(str)) + { + if(m_MouseToolType == _TOOL_CIRCLE + ||m_MouseToolType == _TOOL_MOVE2 + ||m_MouseToolType == _TOOL_ROTATO + ||m_MouseToolType == _TOOL_RECT) + { + if(m_pMouseTool->IsEndStatus()) + { + SetMouseTool(_TOOL_POINT); + GetCurViewPtr()->RefreshView(); + } + } + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + return true; + } + else + { + return false; + } +} \ No newline at end of file diff --git a/LaiPuLaser/MouseToolmgr.h b/LaiPuLaser/MouseToolmgr.h new file mode 100644 index 0000000..fd49aea --- /dev/null +++ b/LaiPuLaser/MouseToolmgr.h @@ -0,0 +1,34 @@ +#pragma once +#include "GlobalDefine.h" +#include "MouseTool.h" + + +class CMouseTool; +//깤߹ +class CMouseToolMgr +{ +public: + CMouseToolMgr(void); + ~CMouseToolMgr(void); + void ReleseTool(); + void SetMouseTool(MOUSE_TOOL MouseTool); + void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + void OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + void OnRButtonDown(UINT nFlags, CPoint point,CClientDC &dc); + void OnRButtonUp(UINT nFlags, CPoint point,CClientDC &dc); + void OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc); + MOUSE_TOOL GetToolType(){return m_MouseToolType;};//ȡ + void ResetMouseToolPoint(); + void OnEscapeKey(CDC* pDC); + void ResetCatchPoint(CDC* pDC); + bool OnSetCmd(CString str); +private: + CMouseTool * CreatMouseTool(MOUSE_TOOL MouseTool); + void ChangeMouseTool(UINT nFlags, CPoint point); + void CatchPoint(CPoint point,CClientDC &dc); +private: + MOUSE_TOOL m_MouseToolType;//ǰĹ + MOUSE_TOOL m_OldMouseToolType;//֮ǰĹ + CMouseTool *m_pMouseTool;//ǰĹ +}; +extern CMouseToolMgr gMouseToolMgr; \ No newline at end of file diff --git a/LaiPuLaser/MsgBox.cpp b/LaiPuLaser/MsgBox.cpp new file mode 100644 index 0000000..336f38e --- /dev/null +++ b/LaiPuLaser/MsgBox.cpp @@ -0,0 +1,31 @@ +#include "StdAfx.h" +#include "MsgBox.h" +#include "LogMgr.h" + +#define MSG_TIMER 1//CCD Ԥʹõtimer ID +CMsgBox::CMsgBox(void) +{ +} +CMsgBox::~CMsgBox(void) +{ +} +void CMsgBox::Show(CString str,bool bError) +{ + if(bError) + { + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } + else + { + gLogMgr->WriteDebugLog(str); + } + AfxMessageBox(str); +} +bool CMsgBox::ConfirmOkCancel(CString str) +{ + return (AfxMessageBox(str,MB_OKCANCEL)==IDOK); +} +bool CMsgBox::ConfirmYesNo(CString str) +{ + return (AfxMessageBox(str,MB_YESNO)==IDOK); +} \ No newline at end of file diff --git a/LaiPuLaser/MsgBox.h b/LaiPuLaser/MsgBox.h new file mode 100644 index 0000000..fc51682 --- /dev/null +++ b/LaiPuLaser/MsgBox.h @@ -0,0 +1,13 @@ +#pragma once + +// +class CMsgBox +{ +public: + CMsgBox(void); + ~CMsgBox(void); + void Show(CString str,bool bError = false); + bool ConfirmOkCancel(CString str); + bool ConfirmYesNo(CString str); +}; + diff --git a/LaiPuLaser/MyBttom.cpp b/LaiPuLaser/MyBttom.cpp new file mode 100644 index 0000000..0255e4b --- /dev/null +++ b/LaiPuLaser/MyBttom.cpp @@ -0,0 +1,106 @@ + +#include "stdafx.h" +#include "MyBttom.h" +#include "GlobalDefine.h" + +IMPLEMENT_DYNAMIC(CMyBttom, CMFCButton) + +CMyBttom::CMyBttom() +{ + m_font.CreatePointFont(120,"",NULL); + m_TextColor = RGB_BLACK; + m_DownColor = RGB_YELLOW; + m_UpColor = RGB_BLUE1; + +} +CMyBttom::~CMyBttom() +{ +} + +BEGIN_MESSAGE_MAP(CMyBttom, CMFCButton) +END_MESSAGE_MAP() + +// m_MyImgBtn Ϣ + +//btn ʾʽTooltip ڰťϵʾ +void CMyBttom::SetButtonStyle(CString Tooltip) +{ + EnableFullTextTooltip(true); + // Use the application menu font at the button text font. + EnableMenuFont(); + // Use the current Windows theme to draw the button borders. + EnableWindowsTheming(false); + // Set the button to auto-repeat mode. + SetAutorepeatMode(); + // Set the background color for the button text. + //m_CtrlDoorBtn.SetFaceColor(RGB(255,0,0),true); + + SetFontStyle(); + // Set the tooltip of the button. + SetTooltip(Tooltip); + SizeToContent(); + +} +void CMyBttom::SetFontStyle() +{ + SetFont(&m_font); +} +void CMyBttom::Refreash() +{ + //SetFontStyle(); +} +void CMyBttom::SetDownColor(COLORREF color) +{//CMyButtonĺ + m_DownColor = color; + +} +void CMyBttom::SetUpColor(COLORREF color) +{ + if(color != m_UpColor)//ɫ仯ʱˢʾ + { + m_UpColor = color; + SetFontStyle(); + } +} +void CMyBttom::SetTextColor(COLORREF color) +{ + m_TextColor = color; +} +void CMyBttom::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) +{ + CDC dc; + dc.Attach(lpDrawItemStruct->hDC);//õƵ豸CDC + VERIFY(lpDrawItemStruct->CtlType==ODT_BUTTON); + //õButton,IJ:1,ȵõԴ༭İť, + + //Ȼ󽫴»Ƶť, + //ͬʱֵıɫΪ͸,,ťϽʾ + const int bufSize = 512; + TCHAR buffer[bufSize]; + GetWindowText(buffer, bufSize); + int size=strlen(buffer);//õ + DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);// + SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);//͸ + if (lpDrawItemStruct->itemState&ODS_SELECTED)//°ťʱĴ + {////ػ + + CBrush brush(m_DownColor); + dc.FillRect(&(lpDrawItemStruct->rcItem),&brush);//ûˢbrushο + //Ϊػ,ҲҪػ + DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP); + SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT); + } + else//ťߵʱ + { + CBrush brush(m_UpColor); + dc.FillRect(&(lpDrawItemStruct->rcItem),&brush);// + DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP); + SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT); + } + //Ʊ߿ + { + COLORREF fc=RGB(255-GetRValue(m_UpColor),255-GetGValue(m_UpColor),255-GetBValue(m_UpColor)); + CBrush brush(fc); + dc.FrameRect(&(lpDrawItemStruct->rcItem),&brush);//ûˢbrushα߿ + } +} \ No newline at end of file diff --git a/LaiPuLaser/MyBttom.h b/LaiPuLaser/MyBttom.h new file mode 100644 index 0000000..0a80946 --- /dev/null +++ b/LaiPuLaser/MyBttom.h @@ -0,0 +1,30 @@ +#pragma once + + +// m_MyImgBtn + +class CMyBttom : public CMFCButton +{ + DECLARE_DYNAMIC(CMyBttom) + +public: + CMyBttom(); + virtual ~CMyBttom(); + void SetButtonStyle(CString Tooltip); + void SetFontStyle(); + void Refreash(); + virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); + void SetDownColor(COLORREF color); + void SetUpColor(COLORREF color); + void SetTextColor(COLORREF color); +protected: + DECLARE_MESSAGE_MAP() +private: + CFont m_font; + //ɫֱΪ֣Button DownıɫButton Upıɫ + COLORREF m_TextColor; + COLORREF m_DownColor; + COLORREF m_UpColor; +}; + + diff --git a/LaiPuLaser/ObjBarCode.cpp b/LaiPuLaser/ObjBarCode.cpp new file mode 100644 index 0000000..ed52fe1 --- /dev/null +++ b/LaiPuLaser/ObjBarCode.cpp @@ -0,0 +1,286 @@ +#include "StdAfx.h" +#include "ObjBarCode.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#ifdef __TBAR_CODE__ +#include "tbarcode51.h" +#endif +#include "ObjPline.h" +#include "FontTypeMgr.h" + +//-- +void PrintResult(vector> &ModuleVec) +{ + ofstream *pStream = gLogMgr->GetDebugOfstream(); + vector>::iterator iter = ModuleVec.begin(); + vector>::iterator iter_end = ModuleVec.end(); + for(;iter!=iter_end;iter++) + { + vector::iterator iter1 = (*iter).begin(); + vector::iterator iter1_end = (*iter).end(); + for(;iter1!=iter1_end;iter1++) + { + (*pStream)<<(*iter1).IsBlack(); + } + (*pStream)<m_DlgVariableString.BindingObjString(this); +#endif +} +void CObjBarCode::CreatExt() +{ + // + m_ObjContainer.Clear(); + //ȡַ + CString Str = GetCurString(); + //ȡ + CreatBarCodeEdge(Str,m_BasePt1,m_ObjContainer); +} + +#if 1 +// +void CObjBarCode::CreatBarCodeEdge(CString Str,Dbxy BasePt,CObjContainer &ObjContainer) +{ +#ifdef __DLG_PANE_TEST__ + #ifdef __TBAR_CODE__ + m_BasePt = BasePt; + CTbarcode51 &Tbarcode51 = GetFrame()->m_DlgTest.GetTbarcode51(); + + vector> ModuleVec; + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + int idx = pFontTypeMgr.GetCurFontTypeIdx(); + gLogMgr->WriteDebugLog("idx", "=", idx); + Tbarcode51.put_BarCode(pFontTypeMgr.GetCurFontTypeIdx());// + Tbarcode51.put_Text(Str);//text + Tbarcode51.BCDraw((long)GetCurViewPtr()->GetHDC(),0,0,0,200);//view ϻƳ + if(AnlalysisBarCord(ModuleVec)) + { + //ݵObjContainer + CreatEdge(ModuleVec,ObjContainer); + } + #endif +#endif +} +//뱣浽ModuleVec +bool CObjBarCode::AnlalysisBarCord(vector> &ModuleVec) +{ + int Rows = 0; +#ifdef __DLG_PANE_TEST__ + #ifdef __TBAR_CODE__ + CTbarcode51 &Tbarcode51 = GetFrame()->m_DlgTest.GetTbarcode51(); + //ȶȡ + Rows = Tbarcode51.get_CountRows(); + #endif + #endif + ofstream *pStream = gLogMgr->GetDebugOfstream(); + (*pStream)<<"[Rows] = "<1) + { + endX = startX + Rows*ModuleSize; + endY = startY + Rows*ModuleSize; + } + + int ColCnt = 0; + int Pos1 = startX; + int Pos2 = startX; + + int CurY = startY; + //һ, + CreatSpaceLine(ModuleVec,Rows+2); + for(int i = 0;i vec; + ModuleVec.push_back(vec); + int size = ModuleVec.size(); + AnlalysisOneRow(ModuleVec[size-1],startX,endX,CurY,ModuleSize); + CurY += ModuleSize; + } + //һ, + CreatSpaceLine(ModuleVec,Rows+2); + return !ModuleVec.empty(); +} +//һ, +void CObjBarCode::CreatSpaceLine(vector> &ModuleVec,int cnt) +{ + vector vec; + ModuleVec.push_back(vec); + int size = ModuleVec.size(); + for(int i=0;i &vec,int startX,int endX,int curY,int ModuleSize) +{ + ofstream *pStream = gLogMgr->GetDebugOfstream(); + HDC hdc = GetCurViewPtr()->GetHDC(); + COLORREF Pixelcolor;//صɫ + + CBarCodeModule ModuleSpace(false); + vec.push_back(ModuleSpace); + for(int i = startX;i> &ModuleVec,CObjContainer &ObjContainer) +{ + if(ModuleVec.empty()) + return; + //ֱ-------------------------------------------------------------------------------------------------------------------- + int MaxCol = ModuleVec[0].size(); + int MaxRow = ModuleVec.size(); + for(int Col=1;ColAddDataPoint(DataPoint1); + CDataPoint DataPoint2(pt2); + Pline->AddDataPoint(DataPoint2); + ObjContainer.AddObject(Pline); + + Start = -1; + End = -1; + flg = false; + } + } + } + //ˮƽ-------------------------------------------------------------------------------------------------------------------- + for(int Row=1;RowAddDataPoint(DataPoint1); + CDataPoint DataPoint2(pt2); + Pline->AddDataPoint(DataPoint2); + ObjContainer.AddObject(Pline); + + Start = -1; + End = -1; + flg = false; + } + } + } +} +#endif diff --git a/LaiPuLaser/ObjBarCode.h b/LaiPuLaser/ObjBarCode.h new file mode 100644 index 0000000..1c76020 --- /dev/null +++ b/LaiPuLaser/ObjBarCode.h @@ -0,0 +1,29 @@ +#pragma once +#include "ObjString.h" +#include "BarCodeModule.h" + +class CObjBarCode :public CObjString +{ + friend class CDlgVariableString; +public: + CObjBarCode(void); + ~CObjBarCode(void); + CObjBarCode(CObjBarCode &rhs); + virtual CString GetStr(); + virtual CObjBarCode * Clone(){return new CObjBarCode(*this);}; + virtual void BindingDlg(); + virtual void CreatExt(); +private: + CString GetCurString(); + void CreatBarCodeEdge(CString Str,Dbxy BasePt,CObjContainer &ObjContainer); +private: + bool AnlalysisBarCord(vector> &ModuleVec); + void AnlalysisOneRow(vector &vec,int startX,int endX,int curY,int ModuleSize); + void CreatEdge(vector> &ModuleVec,CObjContainer &ObjContainer); + void CreatSpaceLine(vector> &ModuleVec,int cnt); +private: + Dbxy m_BasePt;//׼ + double m_ModuleW;//module Ŀ(mm) + double m_ModuleH; +}; + diff --git a/LaiPuLaser/ObjBase.cpp b/LaiPuLaser/ObjBase.cpp new file mode 100644 index 0000000..152bf81 --- /dev/null +++ b/LaiPuLaser/ObjBase.cpp @@ -0,0 +1,387 @@ +#include "StdAfx.h" +#include "ObjBase.h" +#include "LogMgr.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "MarkParMgr.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "CommonFlowMgr.h" + +CObjBase::CObjBase(void) +{ + SetSelected(false);//Ƿѡ + SetLock(false);//Ƿ + m_bDraw = true;//Ƿ + m_bOffsetAreaRect = false;//ǷΪƫƵ + OnCreat(); +} +CObjBase::~CObjBase(void) +{ +} +//ʱ +void CObjBase::OnCreat() +{ + m_PenNum = gMarkParMgr->GetCurPenNum(); +} +#if 1 +void CObjBase::WriteWorkFileBase(vector &LabVec) +{ + LabVec.push_back(CLab(LAB_OBJ_TYPE,(int)GetType()));//obj + LabVec.push_back(CLab(LAB_PEN_NUM,m_PenNum));//obj ıʺ + LabVec.push_back(CLab(LAB_OBJ_IS_OFFSET_RECT,m_bOffsetAreaRect));//ǷΪƫƵ +} +void CObjBase::ReadWorkFileBase(CLabVecRang &LabVecRang) +{ + CWorkFileMgr WorkFileMgr; + //ȡʺ------------------------------------------------ + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_PEN_NUM); + if(Lab.m_ValType != _TYPE_NULL) + { + m_PenNum = Lab.m_Int; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_OBJ_IS_OFFSET_RECT); + if(Lab.m_ValType != _TYPE_NULL) + { + m_bOffsetAreaRect = Lab.m_Bool; + } + } +} +void CObjBase::WriteWorkFile(vector &LabVec) +{ + //д빫Ϣ + WriteWorkFileBase(LabVec); + WriteWorkFileExt(LabVec); +} +void CObjBase::ReadWorkFile(CLabVecRang &LabVecRang) +{ + //ȡϢ + ReadWorkFileBase(LabVecRang); + ReadWorkFileExt(LabVecRang); +} +void CObjBase::WriteWorkFileExt(vector &LabVec) +{ + m_PtContainer.WriteWorkFile(LabVec); +} +void CObjBase::ReadWorkFileExt(CLabVecRang &LabVecRang) +{ + //ȡݵ-------------------------------------------- + m_PtContainer.ReadWorkFile(LabVecRang); +} +#endif +#if 1 +//캯 +CObjBase::CObjBase(CObjBase &rhs) +{ + m_bSelected = rhs.m_bSelected;//Ƿѡ + m_PtContainer.Load(rhs.m_PtContainer);//ݵ + m_NodePtContainer.Load(rhs.m_NodePtContainer); + m_PenNum = rhs.m_PenNum; + m_bLocked = rhs.m_bLocked; + m_bDraw = rhs.m_bDraw;//Ƿ + m_bOffsetAreaRect = rhs.m_bOffsetAreaRect;//ǷΪƫƵ +} +//rhs ݵ +void CObjBase::CopyPt(CObjBase &rhs) +{ + m_PtContainer.Load(rhs.m_PtContainer); +} +#endif +#if 1 +void CObjBase::Draw(CDC* pDC,CPen &Pen) +{ + if(!m_bDraw) + return; + //ͼ + m_PtContainer.Draw(pDC,Pen); + //ڵ + if(IsSelected()) + { + m_PtContainer.DrawNode(pDC); + } + // + DrawFill(pDC,Pen); +} +void CObjBase::Draw(CDC* pDC) +{ + if(!m_bDraw) + return; + CPen Pen; + Pen.CreatePen(PS_INSIDEFRAME,0.5,gMarkParMgr->GetPenColor(m_PenNum)); + Draw(pDC,Pen); +} +//һ߶ +void CObjBase::DrawLastLine(CDC* pDC,CPen &Pen) +{ + if(!m_bDraw) + return; + m_PtContainer.DrawLastLine(pDC,Pen); +} +#endif +//һݵ +void CObjBase::AddDataPoint(CDataPoint pt) +{ + m_PtContainer.AddDataPoint(pt); +} +//Ӷڲĵ +void CObjBase::AddNodePt(CDataPoint pt) +{ + m_NodePtContainer.AddDataPoint(pt); +} +bool CObjBase::Empty() +{ + return (m_PtContainer.GetPtCnt()<2) ; +} +void CObjBase::DelAllPt()//ɾݵ +{ + m_PtContainer.DelAllPt(); + m_NodePtContainer.DelAllPt(); +} +//ȡĸ +int CObjBase::GetPtCnt() +{ + return m_PtContainer.GetPtCnt(); +} +void CObjBase::DelLastDataPoint()//ɾһڵ +{ + m_PtContainer.DelLastDataPoint(); +} +int CObjBase::GetNodePtIdx(Dbxy pt) +{ + return m_PtContainer.GetNodePtIdx(pt); +} +void CObjBase::DelNodePtByIdx(int idx) +{ + m_PtContainer.DelNodePtByIdx(idx); +} +void CObjBase::SetNodePtByIdx(int idx,Dbxy pt) +{ + m_PtContainer.SetNodePtByIdx(idx,pt); +} +void CObjBase::InsertNode(int idx,Dbxy pt) +{ + m_PtContainer.InsertNode(idx,pt); +} +void CObjBase::SetLastPoint(CDataPoint &pt) +{ + m_PtContainer.SetLastPoint(pt); +} + +bool CObjBase::IsSelected() +{ + return m_bSelected; +} +void CObjBase::SetSelected(bool bSelected) +{ + if(m_bLocked)//״̬ܱѡ + return; + + m_bSelected = bSelected; +} +DbRect CObjBase::GetRect() +{ + return m_PtContainer.GetRect(); +} +Dbxy CObjBase::GetFirstPt() +{ + return m_PtContainer.GetFirstPt(); +} +Dbxy CObjBase::GetLastPt() +{ + return m_PtContainer.GetLastPt(); +} +//Ƿнڵrect +bool CObjBase::HasNodeInRect(DbRect rect) +{ + return m_PtContainer.HasNodeInRect(rect); +} +//Ƿline ཻ +bool CObjBase::IntersectWithLine(DbLine &line) +{ + return m_PtContainer.IntersectWithLine(line); +} +#if 1 +void CObjBase::Operate(SObjOperatePar &par) +{ + m_GeometryPorp.Operate(par);//¼ + m_PtContainer.Operate(par);//ݵ + m_NodePtContainer.Operate(par);//ڵ + OperateFill(par);// +} +#endif +#if 1//غ +//ȡobj rect ཻ߶(bGetCatchNode ʾǷöIJ׽) +void CObjBase::GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bGetCatchNode) +{ + m_PtContainer.GetLineInRect(rect,DataPtLineVec); + if(bGetCatchNode) + { + m_NodePtContainer.GetNodePtLineInRect(rect,DataPtLineVec); + } +} +#endif +#if 1 +//Ѽobj ݵvec +void CObjBase::GetPtData(vector> &vec) +{ + m_PtContainer.GetPtData(vec); + // + #if 0 + vector::iterator iter = m_FillDataVec.begin(); + vector::iterator iter_end = m_FillDataVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).GetPtData(vec); + } + #endif +} +#endif +#if 1//غ +// +void CObjBase::CreatFillData(SFillPar FillPar) +{ + m_FillDataVec.clear(); + + if(!FillPar.bFill) + return; + //Ѽobj ݵvec + vector> vec; + GetPtData(vec); + + // + CObjFill Fill(m_FillDataVec); + Fill.SetPar(FillPar); + Fill.CreatFill(vec,GetRect()); +} +void CObjBase::DrawFill(CDC* pDC,CPen &Pen) +{ + vector::iterator iter = m_FillDataVec.begin(); + vector::iterator iter_end = m_FillDataVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Draw(pDC,Pen); + } +} +// +void CObjBase::OperateFill(SObjOperatePar &par) +{ + vector::iterator iter = m_FillDataVec.begin(); + vector::iterator iter_end = m_FillDataVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Operate(par); + } +} +//ȡ +void CObjBase::GetFillData(vector> &vec) +{ + // + vector::iterator iter = m_FillDataVec.begin(); + vector::iterator iter_end = m_FillDataVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).GetPtData(vec); + } +} +#endif +#if 1 +//ͬ +void CObjBase::CreatConcentricData(vector &GapVec) +{ + vector> vec; + + double FirstGap = gCommonFlowMgr->GetFirstGap(); + double bChangeSize = !IsDbEqualZero(FirstGap); + if(bChangeSize)// + { + vector DataPointVec = GetConcentricData(FirstGap); + m_PtContainer.DelAllPt(); + AddDataPointVec(DataPointVec); + } + + if(GapVec.empty()) + return; + + double Gap = GapVec[0]; + double CurGap = Gap; + vector::iterator iter = GapVec.begin(); + vector::iterator iter_end = GapVec.end(); + for(;iter!=iter_end;iter++) + { + vector DataPointVec = GetConcentricData(CurGap); + vec.push_back(DataPointVec); + CurGap += Gap; + } + + { + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + AddDataPointVec(*iter); + } + } +} +void CObjBase::AddDataPointVec(vector &Vec) +{ + vector &DataPointVec = GetPtContainer(); + + vector::iterator iter = Vec.begin(); + vector::iterator iter_end = Vec.end(); + for(;iter!=iter_end;iter++) + { + DataPointVec.push_back(*iter); + } +} +//ʵʼӹߴobjijߴDN cut 2016-09-18 +Dbxy CObjBase::GetSizeAdjust2() +{ + double Rang = 40; + + Dbxy SizeAdjust2(0.013,-0.012); + + Dbxy CenterPt = GetRect().GetCenterPt(); + SizeAdjust2.x = SizeAdjust2.x *(CenterPt.x/Rang); + SizeAdjust2.y = SizeAdjust2.y *(CenterPt.x/Rang); + + return SizeAdjust2; +} + +//obj +vector CObjBase::GetConcentricData(double Gap) +{ + DbRect rect = GetRect(); + Dbxy SizeAdjust = gCommonFlowMgr->GetAdjustSize(); + #if 0//dn cut 2016-09-18 + Dbxy SizeAdjust2 = GetSizeAdjust2(); + SizeAdjust.x += SizeAdjust2.x; + SizeAdjust.y += SizeAdjust2.y; + #endif + SObjOperatePar parX; + parX.OpType = _OP_STRETCH; + parX.BasePt = rect.GetCenterPt(); + parX.OldSize = rect.GetSize().w; + parX.Diff = SizeAdjust.x; + parX.xy = _X; + + SObjOperatePar parY; + parY.OpType = _OP_STRETCH; + parY.BasePt = rect.GetCenterPt(); + parY.OldSize = rect.GetSize().h; + parY.Diff = SizeAdjust.y; + parY.xy = _Y; + + vector DataPointVec = GetPtContainer();// + vector::iterator iter = DataPointVec.begin(); + vector::iterator iter_end = DataPointVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Operate(parX); + (*iter).Operate(parY); + } + return DataPointVec; +} +#endif diff --git a/LaiPuLaser/ObjBase.h b/LaiPuLaser/ObjBase.h new file mode 100644 index 0000000..8ac82dd --- /dev/null +++ b/LaiPuLaser/ObjBase.h @@ -0,0 +1,107 @@ +#pragma once +#include "GlobalDefine.h" +#include "DataPoint.h" +#include "SequentialPoint.h" +#include "SmartPtr.h" +#include "ObjFill.h" +#include "MarkParMgr.h" +#include "LabVecRang.h" +#include "ObjGeometryPorp.h" + + + +class CModule; +class CObjPline; +class CObjBase +{ +public: + CObjBase(void); + CObjBase(CObjBase &rhs); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFileExt(CLabVecRang &LabVecRang); + virtual ~CObjBase(void); + virtual CString GetStr(){return "objbase";}; + virtual CObjBase * Clone(){return new CObjBase;}; + virtual void Draw(CDC* pDC,CPen &Pen); + virtual void Draw(CDC* pDC); + virtual bool IsInRect(DbRect rect,bool bNeedAllIn){return m_PtContainer.IsInRect(rect,bNeedAllIn);};//obj ĵǷrect + virtual OBJ_TYPE GetType(){return _TYPE_BASE;}; + // + virtual CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule){return NULL;}; + virtual void OnSpecialPropertyChanged(){}; + virtual void SetSelected(bool bSelected); + virtual void Operate(SObjOperatePar &par); + virtual DbRect GetRect(); + virtual Dbxy GetCenterPt(){return GetRect().GetCenterPt();}; + virtual void BindingDlg(){}; + virtual void GetPtData(vector> &vec); + virtual void GetFillData(vector> &vec); + virtual void CreatFillData(SFillPar FillPar); + virtual void GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bGetCatchNode = true); + virtual void CreatByDia(double Dia){}; +public: + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void AddDataPoint(CDataPoint pt); + void CopyPt(CObjBase &rhs); + void AddNodePt(CDataPoint pt); + bool Empty(); + void DelAllPt();//ɾݵ + void DelLastDataPoint();//ɾһڵ + void DrawLastLine(CDC* pDC,CPen &Pen); + bool IsSelected(); + bool HasNodeInRect(DbRect rect); + vector& GetPtContainer(){return m_PtContainer.GetPtContainer();}; + void SetLastPoint(CDataPoint &pt); + Dbxy GetFirstPt(); + Dbxy GetLastPt(); + int GetNodePtIdx(Dbxy pt); + void DelNodePtByIdx(int idx); + void InsertNode(int idx,Dbxy pt); + void SetNodePtByIdx(int idx,Dbxy pt); + int GetPtCnt(); + SFillPar GetFillPar(){return m_FillPar;}; + bool IntersectWithLine(DbLine &line); + void SetLock(bool b){m_bLocked = b;}; + void SetbDraw(bool b){m_bDraw = b;}; + void CreatConcentricData(vector &GapVec); + void SaveOldSelState(){m_OldSelState = m_bSelected;}; + void RecoverOldSelState(){m_bSelected = m_OldSelState;}; + bool IsbCollected(){return m_bCollected;}; + void SetbCollected(bool b){m_bCollected = b;}; + int GetPenNum(){return m_PenNum;}; + void SetPenNum(int n){m_PenNum =n;}; + void SetbOffsetAreaRect(bool b){m_bOffsetAreaRect = b;}; + bool IsbOffsetAreaRect(){return m_bOffsetAreaRect;}; +protected: + void OnCreat(); + void DrawFill(CDC* pDC,CPen &Pen); + void OperateFill(SObjOperatePar &par); + void SaveSequentialPoint(ofstream *pfile); + void SaveObjType(ofstream *pfile,CString s); +private: + void WriteWorkFileBase(vector &LabVec); + void ReadWorkFileBase(CLabVecRang &LabVecRang); + COLORREF GetColor(); + vector GetConcentricData(double Gap); + void AddDataPointVec(vector &DataPointVec); + Dbxy GetSizeAdjust2(); +protected: + CSequentialPoint m_PtContainer;//ݵ(һ߶) + CSequentialPoint m_NodePtContainer;//洢ڲĵ(Բĵ) + + vector m_FillDataVec;// + SFillPar m_FillPar;// + + bool m_bSelected;//Ƿѡ + bool m_OldSelState;//ɵѡ״̬ + bool m_bLocked;//Ƿ,޸ + bool m_bDraw;//Ƿ + int m_PenNum;//ʺ + CObjGeometryPorp m_GeometryPorp;//obj ļ + bool m_bCollected;//Ƿռ + + Dbxy m_CutOffset;//иƫ + bool m_bOffsetAreaRect;//ǷΪƫƵ +}; + diff --git a/LaiPuLaser/ObjChar.cpp b/LaiPuLaser/ObjChar.cpp new file mode 100644 index 0000000..7f52739 --- /dev/null +++ b/LaiPuLaser/ObjChar.cpp @@ -0,0 +1,117 @@ +#include "StdAfx.h" +#include "ObjChar.h" +#include "ObjPline.h" +#include "DataPoint.h" +#include "FontTypeMgr.h" +#include "LogMgr.h" +#include "GlobalFunction.h" + + +CObjChar::CObjChar(char *p) +{ + m_pChar = p; +} +CObjChar::~CObjChar(void) +{ + +} +CString CObjChar::GetStr() +{ + CString str = "ַ"; + return str; +} +void CObjChar::Creat() +{ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + //ȶȡm_PonitVec + vector m_PonitVec; + //õǰַ + pFontTypeMgr.CreatCharVec(m_pChar,m_PonitVec); + //תΪobj + CreatObjData(m_PonitVec); +} + +//ȡobj +void CObjChar::CreatObjData(vector &m_PonitVec) +{ + if(m_PonitVec.size() <= 1)//ûȡ򴴽һ + { + CObjPline *pPline = new CObjPline; + + DbRect rect(0,100,100,0); + pPline->CreatRect(rect); + m_ObjContainer.AddObject(pPline); + } + else + { + int size = m_PonitVec.size(); + + //ȥĩβҪƫ----------------------------------- + if(m_PonitVec[size-1].second == TRUE) + { + m_PonitVec.pop_back(); + size--; + } + //m_PonitVec obj + CObjPline *pPline = NULL; + for(int i=0;iAddDataPoint(DataPoint); + } + } + } + //ɾ߶ + m_ObjContainer.DelNullLine(); +} +void CObjChar::Operate(SObjOperatePar &par) +{ + if(par.OpType == _OP_SCALE) + { + DbRect rect = m_ObjContainer.GetObjRect(false); + DbSize s = rect.GetSize(); + + SObjOperatePar parX; + { + parX.OpType = _OP_STRETCH; + parX.BasePt = rect.GetCenterPt(); + + parX.OldSize = s.w; + parX.NewSize = s.w*par.Scale; + parX.Diff = parX.NewSize-parX.OldSize; + parX.xy = _X; + } + SObjOperatePar parY; + { + parY.OpType = _OP_STRETCH; + parX.BasePt = rect.GetCenterPt(); + + parY.OldSize = s.h; + parY.NewSize = s.h*par.Scale; + parY.Diff = parY.NewSize-parY.OldSize; + parY.xy = _Y; + } + + int size = m_ObjContainer.GetSize(); + for(int i=0;i &m_PonitVec); +private: + char *m_pChar; +}; diff --git a/LaiPuLaser/ObjCircle.cpp b/LaiPuLaser/ObjCircle.cpp new file mode 100644 index 0000000..eb1fba2 --- /dev/null +++ b/LaiPuLaser/ObjCircle.cpp @@ -0,0 +1,243 @@ +#include "StdAfx.h" +#include "ObjCircle.h" +#include "GlobalDrawMgr.h" +#include "DataPoint.h" +#include "GlobalFunction.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "CommandModifiCircle.h" +#include "CommandMgr.h" +#include "WorkFileMgr.h" + +CObjCircle::CObjCircle(void) +{ +} +CObjCircle::~CObjCircle(void) +{ +} +CString CObjCircle::GetStr() +{ + CString str = "Բ"; + return str; +} +CMFCPropertyGridProperty *CObjCircle::CreatSpecialGridProperty(CModule *pModule) +{ + CString PropertyName;// + CString Description;// + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Radius); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(pModule); + //ʾ + PropertyName = _T("뾶"); + Description = _T("Բİ뾶(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Radius, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Diameter); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(pModule); + //ʾ + PropertyName = _T("ֱ"); + Description = _T("Բֱ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_Diameter, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_EdgeCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(pModule); + //ʾ + PropertyName = _T(""); + Description = _T("Բı(3)(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_EdgeCnt, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + return pGroup; +} +//ӦԵı仯 +void CObjCircle::OnSpecialPropertyChanged() +{ + //ޱ仯 + if(IsTwoDbEqual(m_OldRadius,m_Radius)&&IsTwoDbEqual(m_OldEdgeCnt,m_EdgeCnt)&&IsTwoDbEqual(m_OldDiameter,m_Diameter)) + return; + //ֱ仯 + if(!IsTwoDbEqual(m_OldDiameter,m_Diameter)) + { + m_Radius = m_Diameter/2; + } + + //ָ + CCommandModifiCircle *pCmd = new CCommandModifiCircle; + pCmd->SetPar(m_OldRadius,m_OldEdgeCnt,true);//ɵIJ + pCmd->SetPar(m_Radius,m_EdgeCnt,false);//µIJ + gCommandMgr.AddUndoCommand(pCmd); + pCmd->Excute(); + + // + ReCreat(m_Radius,m_EdgeCnt); +} +void CObjCircle::WriteWorkFileExt(vector &LabVec) +{ + CObjBase::WriteWorkFileExt(LabVec); + LabVec.push_back(CLab(LAB_CIRCLE_R,m_Radius)); + LabVec.push_back(CLab(LAB_CIRCLE_D,m_Diameter)); + LabVec.push_back(CLab(LAB_CIRCLE_EDGE_CNT,m_EdgeCnt)); +} +void CObjCircle::ReadWorkFileExt(CLabVecRang &LabVecRang) +{ + CObjBase::ReadWorkFileExt(LabVecRang); + + CWorkFileMgr WorkFileMgr; + //뾶 + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_CIRCLE_R); + if(Lab.m_ValType != _TYPE_NULL) + { + m_Radius = Lab.m_Double; + } + } + //ֱ + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_CIRCLE_D); + if(Lab.m_ValType != _TYPE_NULL) + { + m_Diameter = Lab.m_Double; + } + } + // + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_CIRCLE_EDGE_CNT); + if(Lab.m_ValType != _TYPE_NULL) + { + m_EdgeCnt = Lab.m_Int; + } + } +} +//ԭλ +void CObjCircle::ReCreat(double Radius,int DEdgeCnt) +{ + Dbxy CenterPt = GetRect().GetCenterPt(); + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = CenterPt; + ObjCirclePar.Radius =Radius; + ObjCirclePar.DEdgeCnt = DEdgeCnt; + Creat(ObjCirclePar); +} +void CObjCircle::CreatByDia(double Dia,int EdgeCnt) +{ + Dbxy CenterPt(0,0); + CCirclePar ObjCirclePar; + ObjCirclePar.CenterPt = CenterPt; + ObjCirclePar.Radius = Dia/2; + ObjCirclePar.DEdgeCnt = EdgeCnt; + Creat(ObjCirclePar); +} +//CenterPt Բ +//R뾶 +//DEdgeCnt +//bMerge Ƿͷβϲ +//StartAng,EndAng ʼǶȺͽǶ360 Ƚ +void CObjCircle::Creat(CCirclePar ObjCirclePar) +{ + Dbxy CenterPt = ObjCirclePar.CenterPt; + double Radius = ObjCirclePar.Radius; + int DEdgeCnt = ObjCirclePar.DEdgeCnt; + bool bMerge = ObjCirclePar.bMerge; + double StartAng = ObjCirclePar.StartAng; + double EndAng = ObjCirclePar.EndAng; + + if(DEdgeCnt == 0) + { + DEdgeCnt = gDraw->GetCirclePtCnt(Radius); + } + + //ɾݵ + DelAllPt(); + + m_OldRadius = m_Radius = Radius; + m_OldEdgeCnt = m_EdgeCnt = DEdgeCnt; + m_OldDiameter = m_Diameter = Radius*2; + + //뾶 + double EachAngle = 360/DEdgeCnt; + bool Flg = true;//һı־ + double CurrAngle = StartAng; + + Dbxy pt; + Dbxy FirstPt; + while(CurrAngle &LabVec); + virtual void ReadWorkFileExt(CLabVecRang &LabVecRang); + virtual void CreatByDia(double Dia,int EdgeCnt); + void Creat(CCirclePar ObjCirclePar); + void ReCreat(double Radius,int DEdgeCnt); +private: + double m_OldRadius;//뾶(жǷ仯) + double m_OldDiameter;//ֱ(жǷ仯) + int m_OldEdgeCnt;//(жǷ仯) + double m_Radius;//뾶 + double m_Diameter;//ֱ + int m_EdgeCnt;// +}; + diff --git a/LaiPuLaser/ObjComponent.cpp b/LaiPuLaser/ObjComponent.cpp new file mode 100644 index 0000000..9ccdaac --- /dev/null +++ b/LaiPuLaser/ObjComponent.cpp @@ -0,0 +1,258 @@ +#include "StdAfx.h" +#include "ObjComponent.h" +#include "DrawSimpleShape.h" +#include "GlobalFunction.h" +#include "TemplateMgr.h" +#include "ProductMgr.h" +#include "ObjComponentMgr.h" +#include "CommonFlowMgr.h" +#include "LogMgr.h" + + +CObjComponent::CObjComponent() +{ + m_Size.w = 5; + m_Size.h = 4.2; + m_bMark1Obj = false;//һmark + Ini(); +} +CObjComponent::CObjComponent(Dbxy pt,DbSize size) +{ + m_BasePt = pt;//ԪĻ׼ + m_Size = size;//Ԫijߴ + Ini(); +} +void CObjComponent::Ini() +{ + m_bBase = false;//ǷΪ׼Ԫ + m_bSel = false;//Ƿѡ + m_TempIdx = 0;//ʹõģ + m_bMarked = false;//Ƿ񱻼ӹ + + m_bCollected = false; + m_bCircle = false;//ǷΪԲ + m_bMarkObj = false;//ǷΪǵobj + m_bMarkSidewardObj = false;//ǷΪobj Աߵobj + m_ColorIdx = -1;//ɫֵ + m_ObjMarkIdx = -1;//obj ,Ƿ񿪿 + m_bAutoCreatObj = false;//ǷΪԶobj + m_ObjLineIdx = 0;//obj line ϵֵ,ȷline obj Ĺϵ + m_bView = false;//Ƿڹ۲ + m_bViewed = false;//Ƿ񱻹۲ + m_bCollecteData = true;//ǷҪռӹ(false ʱռobj ) + m_bHide = false;//Ƿ + m_bMark3Obj = false;//ǷΪmark3 +} +CObjComponent::~CObjComponent(void) +{ +} +DbRect CObjComponent::GetRect() +{ + DbRect rect(m_BasePt,m_Size); + return rect; +} +void CObjComponent::Draw(CDC* pDC) +{ + if(m_bHide) + return; +//ɫ----------------------------------------------- + COLORREF c; + if(m_bSel)//ѡ״̬ + { + c = gObjComponentMgr->GetSelColor(); + } + else if(!m_bCollecteData)//ӹ + { + c = RGB_GRAY1; + } + else if(m_bMarked)//ӹ + { + c = gObjComponentMgr->GetViewedObjColor(); + } + else//ͨ״̬ + { + if(IsbSpecialObj())// + c = RGB_BLUE1; + else + c = gObjComponentMgr->GetNoSelColor(); + } + +//------------------------------------------------- + Dbxy pt = m_BasePt; + DbSize size = m_Size; + DbRect rect = GetRect(); + double Gap = 0.5; + rect.L -= Gap; + rect.R += Gap; + rect.T += Gap; + rect.B -= Gap; + + if(gObjComponentMgr->IsbShowRealObj()) + { + pt = m_RealBasePt; + size.w = size.h = 1; + DbRect RealRect(pt,size); + rect = RealRect; + } + if(gObjComponentMgr->IsDrawFillColor()) + { + if(m_bCircle) + { + DrawSolidCircle(pDC,c,pt,(size.w+Gap)/2); + } + else + { + DrawSolidRect(pDC,c,rect); + } + } + else + { + CPen pen; + pen.CreatePen(PS_INSIDEFRAME,1,c); + if(m_bCircle) + { + DrawCircle(pDC,pen,pt,(size.w+Gap)/2,50); + } + else + { + DrawRect(pDC,pen,rect,false); + } + pen.DeleteObject(); + } + + if(m_bMarkObj || m_bMark3Obj)//mark obj м仭һʮֱһ + { + CPen pen; + pen.CreatePen(PS_INSIDEFRAME,1,RGB_RED); + XorDrawCross(pDC,false,pen,pt,size.w*4); + pen.DeleteObject(); + } +} +COLORREF CObjComponent::GetObjColorByIdx(int Idx) +{ + COLORREF c = RGB_GREEN; + //ɫ + int r = GetRValue(c)+30*Idx; + int g = GetGValue(c)+30*Idx; + int b = GetBValue(c)+30*Idx; + COLORREF Color = RGB(r,g,b); + return Color; +} +//ǷѡΧ(bCenterIn ʾĵrect Χ) +bool CObjComponent::IsInRect(DbRect rect,bool bCenterIn) +{ + if(bCenterIn && !m_bCollecteData)//ռݵʱҪ + return false; + + DbRect ObjRect = GetRect(); + bool ret; + if(bCenterIn) + ret = IsPointInRect(ObjRect.GetCenterPt(),rect);//obj ĵrect + else + ret = IsTwoRectIntersect(ObjRect,rect)||IsTwoRectIntersect(rect,ObjRect);//ҵobj ı߾ + + return ret; +} +//ռ(Ŀǰ㷨Ƚ) +void CObjComponent::CollectWorkData(DbRect &rect,vector> &vec) +{ + if(!m_bCollecteData) + return; + if(m_bCollected)//Ҫظռ + return; + + //ǷռΧ + if(!IsInRect(rect,true))//Ѽݵʱĵж + return; + + //Żٶ + int MarkCnt = 0; + if(gCommonFlowMgr->IsbCollectSpecialObj())//ռ + { + if(!IsbSpecialObj())//˵ͨ + return; + MarkCnt = gCommonFlowMgr->GetSpecialOneObjMarkCnt(); + } + else//ͨ + { + MarkCnt = gCommonFlowMgr->GetOneObjMarkCnt();//Ԫӹ + } + + vector>::iterator iter = m_ObjShapeVec.begin(); + vector>::iterator iter_end = m_ObjShapeVec.end(); + { + for(int k=0;kGetPtData(vec); + } + } + if(!IsbSpecialObj())//Ҫ + m_bCollected = true; +} +//mark +void CObjComponent::SetObjMarkIdx(bool b) +{ + m_ObjMarkIdx = b?1:2; +} +//Ӱ󶨵layer obj +void CObjComponent::AddObjShape(Sptr p) +{ + m_ObjShapeVec.push_back(p); +} +//ѡ״̬ +void CObjComponent::SetSelected(bool b) +{ + m_bSel = b; +} +//ðlayer obj ״̬ +void CObjComponent::SetShapeLockState(bool b) +{ + vector>::iterator iter = m_ObjShapeVec.begin(); + vector>::iterator iter_end = m_ObjShapeVec.end(); + { + (*iter)->SetLock(b); + } +} +//bMoveObjShapeǷƶ󶨵ͼζ +void CObjComponent::OnMove(Dbxy Offset,bool bMoveObjShape) +{ + m_BasePt.x += Offset.x; + m_BasePt.y += Offset.y; + if(bMoveObjShape) + { + vector>::iterator iter = m_ObjShapeVec.begin(); + vector>::iterator iter_end = m_ObjShapeVec.end(); + { + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = Offset.x; + par.MoveY = Offset.y; + (*iter)->Operate(par); + } + } +} +//ѡıʺ +void CObjComponent::SetSelObjPenNum() +{ + vector>::iterator iter = m_ObjShapeVec.begin(); + vector>::iterator iter_end = m_ObjShapeVec.end(); + { + if((*iter)->GetPenNum() == 0) + (*iter)->SetPenNum(1); + else + (*iter)->SetPenNum(0); + } +} +//obj ǷΪ +bool CObjComponent::IsbSpecialObj() +{ + vector>::iterator iter = m_ObjShapeVec.begin(); + vector>::iterator iter_end = m_ObjShapeVec.end(); + { + if((*iter)->GetPenNum() == 0) + return false; + else + return true; + } + return false; +} diff --git a/LaiPuLaser/ObjComponent.h b/LaiPuLaser/ObjComponent.h new file mode 100644 index 0000000..c91f12f --- /dev/null +++ b/LaiPuLaser/ObjComponent.h @@ -0,0 +1,102 @@ +#pragma once +#include "GlobalDefine.h" +#include "SmartPtr.h" +#include "ObjBase.h" + +//Ԫ +class CObjComponent +{ + friend class CDlgObjComponent; +public: + CObjComponent(); + CObjComponent(Dbxy pt,DbSize size); + ~CObjComponent(void); + void Draw(CDC* pDC); + DbRect GetRect(); + Dbxy GetBasePt(){return m_BasePt;}; + void SetBasePt(Dbxy pt){m_BasePt = pt;}; + void SetSize(DbSize s){m_Size = s;}; + DbSize GetSize(){return m_Size;}; + void SetBase(bool b){m_bBase = b;}; + bool IsBase(){return m_bBase;};//ǷΪ׼Ԫ + bool IsInRect(DbRect rect,bool bCenterIn =false); + void SetSelected(bool b); + bool IsSelected(){return m_bSel;}; + void SetbCollected(bool b){m_bCollected = b;};//ռ״̬ + bool IsCollected(){return m_bCollected;}; + void CollectWorkData(DbRect &rect,vector> &vec); + bool IsCircle(){return m_bCircle;}; + void SetIsCircle(bool b){m_bCircle = b;}; + void SetColorIdx(int idx){m_ColorIdx = idx;}; + void SetObjMarkIdx(bool b); + int GetObjMarkIdx(){return m_ObjMarkIdx;}; + void SetbMarkObj(bool b){m_bMarkObj = b;}; + bool IsMarkObj(){return m_bMarkObj;}; + void SetMarkSidewardObj(){m_bMarkSidewardObj = true;}; + void SetObjLineIdx(int idx){m_ObjLineIdx = idx;}; + int GetObjLineIdx(){return m_ObjLineIdx;}; + void SetbAutoCreatObj(){m_bAutoCreatObj = true;}; + bool IsbAutoCreat(){return m_bAutoCreatObj;}; + void SetIndex(IntXY idx){m_Index = idx;}; + IntXY GetIndex(){return m_Index;}; + void SetbView(bool b){m_bView = b;}; + void SetRealBasePt(Dbxy pt){m_RealBasePt = pt;}; + Dbxy GetRealBasePt(){return m_RealBasePt;}; + void SetbViewed(bool b){m_bViewed = b;}; + bool IsbViewed(){return m_bViewed;}; + void AddObjShape(Sptr p); + void SetbMarked(bool b){m_bMarked = b;}; + bool IsbMarked(){return m_bMarked;}; + void NotCollect(){m_bCollecteData = false;};//Ҫռ + bool IsbCollecteData(){return m_bCollecteData;}; + + void SetShapeLockState(bool b); + void OnMove(Dbxy Offset,bool bMoveObjShape); + void SetbHide(bool b){m_bHide = b;}; + void SetbMark1Obj(bool b){m_bMark1Obj = b;}; + bool IsbMark1Obj(){return m_bMark1Obj;}; + void SetSelObjPenNum(); + bool IsbSpecialObj(); + void SetObjOffset(Dbxy Offset){m_ObjOffset = Offset;}; + void SetbMark3Obj(bool b){m_bMark3Obj = b;}; + bool IsbMark3Obj(){return m_bMark3Obj;}; + void SetbMark2Obj(bool b) { m_bMark2Obj = b; }; + bool IsbMark2Obj() { return m_bMark2Obj; }; +private: + void Ini(); + COLORREF GetObjColorByIdx(int Idx); +private: + bool m_bBase;//ǷΪ׼Ԫ + bool m_bSel;//Ƿѡ + bool m_bCircle;//ǷΪԲ + bool m_bCollected;//ǷѾռ,ظռ + bool m_bMarked;//Ƿ񱻼ӹ + bool m_bCollecteData;//ǷҪռӹ(false ʱռobj ) + bool m_bMarkObj;//ǷΪǵobj (CCD λ) + bool m_bMark1Obj=false;//һmark + bool m_bMark2Obj=false;//һmark + bool m_bMark3Obj=false;//ǷΪmark3 + bool m_bHide;//Ƿ + + Dbxy m_BasePt;//ԪĻ׼(ĵ) + DbSize m_Size;//Ԫijߴ + int m_TempIdx;//ʹõģ + int m_ColorIdx;//ɫֵ + int m_ObjMarkIdx;//obj ,Ƿ񿪿 + + int m_ObjLineIdx;//obj line ϵֵ,ȷline obj Ĺϵ + bool m_bAutoCreatObj;//ǷΪԶobj + + bool m_bMarkSidewardObj;//ǷΪobj Աߵobj + + vector> m_ObjShapeVec;//ͼobj (ռ) + //LPS -ISP3000-------------------------------------------------------------------------------------- + IntXY m_Index;//obj + bool m_bView;//Ƿڹ۲ + bool m_bViewed;//Ƿ񱻹۲ + Dbxy m_RealBasePt;//ԪĻ׼(ĵ) ʵʵֵ(ܺʾֵһ) + DbSize m_RealSize;//Ԫijߴ ʵʵֵ(ܺʾֵһ) + + Dbxy m_ObjOffset;//obj иƫƵ +}; + diff --git a/LaiPuLaser/ObjComponentMgr.cpp b/LaiPuLaser/ObjComponentMgr.cpp new file mode 100644 index 0000000..28a1b37 --- /dev/null +++ b/LaiPuLaser/ObjComponentMgr.cpp @@ -0,0 +1,1531 @@ +#include "StdAfx.h" +#include "ObjComponentMgr.h" +#include "CStringFuc.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "DrawSimpleShape.h" +#include "ObjCircle.h" +#include "WorkFileMgr.h" +#include "ProductMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "MeasureMgr.h" +#include "PlatformXY.h" +#include "MsgBox.h" +#include "WorkCmdMovePlatformXY.h" +#include "WorkCmdInvoker.h" +#include "LogMgr.h" +#include "Layer.h" +#include "ObjContainer.h" +#include "CommonFlowMgr.h" +#include "MarkAreaMgr.h" +#include "ProgramCutMgr.h" +#include "Mirror.h" +#include "ClientMgr.h" + +#define GENG_3 (1.7320508075689)//3 + +CObjComponentMgr *gObjComponentMgr = new CObjComponentMgr; +CObjComponentMgr::CObjComponentMgr(void) +{ + m_CurSelIdx = -1;//ǰѡ ֵ + m_bDrawBase = false;//Ƿֻƻ׼Ԫ + + m_ArrayXcntZ = 35;//X + m_ArrayXcntF = 0;//X + m_ArrayYcntZ = 3;//Y + m_ArrayYcntF = 0;//Y + m_OffsetX = 5;//X + m_OffsetY = 4.2;//Y + + m_RealOffsetX = m_OffsetX;//ʵʵX mm + m_RealOffsetY = m_OffsetY;//ʵʵY mm + + //޶ԪķΧ + m_bUseArea = false;//Ƿʹ޶Χ + + m_bRectArea = false;//true ΪηΧ,false ΪԲηΧ + m_AreaSize.w = 50;//ηΧijߴ + m_AreaSize.h = 50;//ηΧijߴ + m_AreaRadius = 150;//ԲηΧֱ + m_bDrawAllObj = true;//Ƿеԭ + m_bDrawFillColor = false;//Ƿ + m_NoSelColor = RGB_GREEN; + m_SelColor = RGB_RED; + m_ViewObjColor = RGB_YELLOW; + m_ViewedObjColor = RGB_GREEN;//۲obj ɫ + + m_bNeedAllIn = true;//ԪǷҪȫڷΧ + m_bAutoArray = false;//ǷԶ + m_AutoArrayGap = 0.5;//ԶŲ + m_DefaultAng = 0;//ĬϽǶ + + m_CurSelObjIdx.x = 1; + m_CurSelObjIdx.y = 1; + + m_bMoveTrackSDir = true;//Sι켣ƶķ־ + m_bShowRealObj = false;//ʾobj ʵλ + + m_bObjToCcdMode = false;//true ʱѡobj ƶCCD ۲ + + m_bDrawBindingObj = true;//Ƿư󶨵layer obj +} +CObjComponentMgr::~CObjComponentMgr(void) +{ +} +#if 1 +CMFCPropertyGridProperty * CObjComponentMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("ObjComponent");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("Ԫ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_bShowRealObj");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShowRealObj); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + //pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʾobj ʵλ"); + Description = _T("ʾobj ʵλ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShowRealObj, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_bDrawBindingObj");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDrawBindingObj); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + //pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʾobj"); + Description = _T("Ƿưlayer obj "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDrawBindingObj, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_NoSelColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NoSelColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Ԫɫ"); + Description = _T("δѡеԪɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_NoSelColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_GRAY); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_SelColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_SelColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ѡԪɫ"); + Description = _T("ѡеԪɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_SelColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_RED); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_ViewObjColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ViewObjColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("۲Ԫɫ"); + Description = _T("ڹ۲Ԫɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_ViewObjColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_YELLOW); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_ViewedObjColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ViewedObjColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("۲Ԫɫ"); + Description = _T("Ѿ۲Ԫɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_ViewedObjColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_GREEN); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_ADMIN)) + { + //Աӳ + Name = _T("m_bDrawFillColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDrawFillColor); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Ԫ"); + Description = _T("ǷʾԪɫ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDrawFillColor, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + return pGroup; +} +//ӦԵĸı +void CObjComponentMgr::OnPropertyChanged() +{ + //ȡǰָ + CLaiPuLaserView *pView = GetCurViewPtr(); + if(pView) + { + pView->RefreshView(); + } +} +#endif +#if 1 +void CObjComponentMgr::WriteWorkFileExt(vector &LabVec) +{ + //ȡҲҪ˳ + LabVec.push_back(CLab(LAB_NULL,m_ArrayXcntZ)); + LabVec.push_back(CLab(LAB_NULL,m_ArrayXcntF)); + LabVec.push_back(CLab(LAB_NULL,m_ArrayYcntZ)); + LabVec.push_back(CLab(LAB_NULL,m_ArrayYcntF)); + LabVec.push_back(CLab(LAB_NULL,m_OffsetX)); + LabVec.push_back(CLab(LAB_NULL,m_OffsetY)); + LabVec.push_back(CLab(LAB_NULL,m_bUseArea)); + LabVec.push_back(CLab(LAB_NULL,m_bRectArea)); + LabVec.push_back(CLab(LAB_NULL,m_AreaBasePt.x)); + LabVec.push_back(CLab(LAB_NULL,m_AreaBasePt.y)); + LabVec.push_back(CLab(LAB_NULL,m_AreaSize.w)); + LabVec.push_back(CLab(LAB_NULL,m_AreaSize.h)); + LabVec.push_back(CLab(LAB_NULL,m_AreaRadius)); + LabVec.push_back(CLab(LAB_NULL,m_bAutoArray)); + LabVec.push_back(CLab(LAB_NULL,m_AutoArrayGap)); + LabVec.push_back(CLab(LAB_NULL,m_DefaultAng)); + //洢׼-------------------------------------------------------- + SaveBaseObj(LabVec); +} +void CObjComponentMgr::ReadWorkFile(CLabVecRang &LabVecRang) +{ + //ɾ + DelAll(); + + //ȡ˳Ҫдͬ + int idx = LabVecRang.GetStart()+1; + m_ArrayXcntZ = LabVecRang.GetInt(idx++); + m_ArrayXcntF = LabVecRang.GetInt(idx++); + m_ArrayYcntZ = LabVecRang.GetInt(idx++); + m_ArrayYcntF = LabVecRang.GetInt(idx++); + m_OffsetX = LabVecRang.GetDouble(idx++); + m_OffsetY = LabVecRang.GetDouble(idx++); + m_bUseArea = LabVecRang.GetBool(idx++); + m_bRectArea = LabVecRang.GetBool(idx++); + m_AreaBasePt.x = LabVecRang.GetDouble(idx++); + m_AreaBasePt.y = LabVecRang.GetDouble(idx++); + m_AreaSize.w = LabVecRang.GetDouble(idx++); + m_AreaSize.h = LabVecRang.GetDouble(idx++); + m_AreaRadius = LabVecRang.GetDouble(idx++); + m_bAutoArray = LabVecRang.GetBool(idx++); + m_AutoArrayGap = LabVecRang.GetDouble(idx++); + m_DefaultAng = LabVecRang.GetDouble(idx++); + //ȡ׼ + ReadBaseObj(LabVecRang); + + // + Array(); +} +//׼ +void CObjComponentMgr::SaveBaseObj(vector &LabVec) +{ + vector::iterator iter = m_BaseComponentVec.begin(); + vector::iterator iter_end = m_BaseComponentVec.end(); + for(;iter!=iter_end;iter++) + { + LabVec.push_back(CLab(LAB_OBJ_START));//ݵ㿪ʼ + + Dbxy BasePt = (*iter).GetBasePt(); + DbSize size = (*iter).GetSize(); + LabVec.push_back(CLab(LAB_POINT_X,BasePt.x)); + LabVec.push_back(CLab(LAB_POINT_Y,BasePt.y)); + LabVec.push_back(CLab(LAB_SIZE_W,size.w)); + LabVec.push_back(CLab(LAB_SIZE_H,size.h)); + LabVec.push_back(CLab(LAB_OBJ_IS_CIRCLE,(*iter).IsCircle())); + + LabVec.push_back(CLab(LAB_OBJ_END));//ݵ + } +} +void CObjComponentMgr::ReadBaseObj(CLabVecRang &LabVecRang) +{ + //obj --------------------------------------------------- + vector LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_OBJ_START,LAB_OBJ_END); + //ÿobj --------------------------------------------------- + if(!LabVecRangVec.empty()) + { + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy BasePt; + DbSize size; + {//BasePt X + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_POINT_X); + if(Lab.m_ValType != _TYPE_NULL) + { + BasePt.x = Lab.m_Double; + } + } + {//BasePt Y + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_POINT_Y); + if(Lab.m_ValType != _TYPE_NULL) + { + BasePt.y = Lab.m_Double; + } + } + {//size w + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_SIZE_W); + if(Lab.m_ValType != _TYPE_NULL) + { + size.w = Lab.m_Double; + } + } + {//size h + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_SIZE_H); + if(Lab.m_ValType != _TYPE_NULL) + { + size.h = Lab.m_Double; + } + } + bool bIsCircle = true; + {//size h + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_OBJ_IS_CIRCLE); + if(Lab.m_ValType != _TYPE_NULL) + { + bIsCircle = Lab.m_Bool; + } + } + CObjComponent Obj(BasePt,size); + Obj.SetIsCircle(bIsCircle); + m_BaseComponentVec.push_back(Obj); + } + } +} +#endif +#if 1 +void CObjComponentMgr::Draw(CDC* pDC) +{ + if(!m_bDrawAllObj || gDraw->IsShowPlatformPos()) + return; + if(gMarkAreaMgr->IsbShowReadDate()) + return; + + { + //Ԫ + int size = m_ComponentVec.size(); + CString str; + for(int i=0;iDrawTxt(pDC,str,m_ComponentVec[i].GetBasePt()); + } + /*else if(m_ComponentVec[i].IsbMark3Obj()) + { + str = "Mark3"; + gDraw->DrawTxt(pDC,str,m_ComponentVec[i].GetBasePt()); + }*/ + m_ComponentVec[i].Draw(pDC); + } + Dbxy Offset; + DrawArea(pDC,Offset);//޶Χ + } + + if(m_bDrawBase)//׼Ԫ + { + int size = m_BaseComponentVec.size(); + for(int i=0;iGetObjComponentAreaPen(),rect,false); + } + else + { + CObjCircle Circle; + CCirclePar par; + par.CenterPt = m_AreaBasePt; + par.Radius = m_AreaRadius; + par.DEdgeCnt = 200; + Circle.Creat(par); + Circle.Draw(pDC,gDraw->GetObjComponentAreaPen()); + } + } +} +//ѡԪ +bool CObjComponentMgr::SelObjectInRect(DbRect rect) +{ + if(!m_bDrawAllObj) + return false; + + bool flg = false; + Dbxy ObjPt; + int SelObjCnt = 0;//ѡobj + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsInRect(rect)) + { + //תѡ + bool b = !((*iter).IsSelected()); + (*iter).SetSelected(b); + flg = true; + ObjPt = (*iter).GetBasePt(); + SelObjCnt++; + } + } + //ֻѡһŵʱλ + if(SelObjCnt==1) + { + CString str; + str.Format("ѡx=[%.3f]y=[%.3f]",ObjPt.x,ObjPt.y); + gLogMgr->WriteDebugLog(str); + } + //Ӧobj ѡ״̬ĸı + OnObjSelStateChange(); + return flg; +} +//ȫѡ +void CObjComponentMgr::SelAllObj() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetSelected(true); + } + //Ӧobj ѡ״̬ĸı + OnObjSelStateChange(); +} +void CObjComponentMgr::NotSelAllObj() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetSelected(false); + } + //Ӧobj ѡ״̬ĸı + OnObjSelStateChange(); +} +//ѡ +void CObjComponentMgr::RevSelAllObj() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetSelected(!((*iter).IsSelected())); + } + //Ӧobj ѡ״̬ĸı + OnObjSelStateChange(); +} +//Ӧobj ѡ״̬ĸı +void CObjComponentMgr::OnObjSelStateChange() +{ +} +//ȡѡobj ֵvec +void CObjComponentMgr::GetSelObjIdx(vector &SelObjIdxVec) +{ + SelObjIdxVec.clear(); + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + int idx = 0; + for(;iter!=iter_end;iter++,idx++) + { + SelObjIdxVec.push_back((*iter).IsSelected()); + } +} +//ֵͨobj ѡ״̬ +void CObjComponentMgr::SetSelectedByIdx(int idx,bool b) +{ + int size = m_ComponentVec.size(); + if(idx::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + int idx = 0; + for(;iter!=iter_end;iter++,idx++) + { + if((*iter).IsbCollecteData()) + { + AdjustRectByPoint(Rect,(*iter).GetBasePt()); + } + } + m_AllObjCenterPt = Rect.GetCenterPt(); + m_AllObjRect = Rect; +} +#endif +#if 1 +//ȡǰѡobj +int CObjComponentMgr::GetSelObjCnt() +{ + int cnt = 0; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + cnt++; + } + return cnt; +} +//ȡǰ趨mark +int CObjComponentMgr::GetMarkObjCnt() +{ + int cnt = 0; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsMarkObj()) + cnt++; + } + return cnt; +} +void CObjComponentMgr::ResetAllMarkObj() +{ + int cnt = 0; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetbMarkObj(false); + } +} +//õǰѡobj Ϊmark +void CObjComponentMgr::SetSelObjMark(int CurMarkCnt) +{ + int idx = CurMarkCnt+1; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + { + (*iter).SetbMarkObj(true); + CString LogStr; + LogStr.Format(("Set Mark Pt [%d]"),idx++); + gLogMgr->WriteDebugLog(LogStr); + Dbxy pt = (*iter).GetBasePt(); + LogStr.Format(("[pt.x] = [%f] ,[pt.y] = [%f]"),pt.x,pt.y); + gLogMgr->WriteDebugLog(LogStr); + } + } +} +//õǰѡobj Ϊmark obj +void CObjComponentMgr::SetMarkObj() +{ + int SelObjCnt = GetSelObjCnt();//ѡĸ + if(SelObjCnt>2) + { + gLogMgr->WriteDebugLog("ָobj Ϊmark"); + return; + } + if(SelObjCnt==0) + { + gLogMgr->WriteDebugLog("ûѡobj"); + return; + } + int MarkObjCnt = GetMarkObjCnt();//mark obj ĸ + if(MarkObjCnt>=2) + { + gLogMgr->WriteDebugLog("Clear Old Mark"); + ResetAllMarkObj(); + MarkObjCnt = 0; + } + //õǰѡobj Ϊmark + SetSelObjMark(MarkObjCnt); +} +//ȡλõmark (λ) +bool CObjComponentMgr::GetTwoMarkPt(Dbxy &MarkPt1,Dbxy &MarkPt2) +{ + int MarkCnt = GetMarkObjCnt(); + if(MarkCnt != 2&& MarkCnt !=3) + { + return false; + } + + bool bMark1 = true; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsMarkObj()) + { + Dbxy pt = (*iter).GetBasePt(); + if((*iter).IsbMark1Obj()) + { + MarkPt1 = pt; + } + if ((*iter).IsbMark2Obj()) + { + MarkPt2 = pt; + } + } + } + return true; +} +//ȡmark 3λ +bool CObjComponentMgr::GetMark3Pt(Dbxy &MarkPt3) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsbMark3Obj()) + { + Dbxy pt = (*iter).GetBasePt(); + MarkPt3 = pt; + return true; + } + } + return false; +} +#endif +#if 1 +//һ׼Ԫ +void CObjComponentMgr::AddBaseComponent() +{ + Dbxy pt; + DbSize size(2,2); + AddBaseComponent(pt,size); +} +void CObjComponentMgr::AddBaseComponent(Dbxy pt,DbSize size) +{ + CObjComponent Component(pt,size); + Component.SetBase(true); + m_BaseComponentVec.push_back(Component); +} + +//һͨԭ +void CObjComponentMgr::AddComponent(CObjComponent Component) +{ + m_ComponentVec.push_back(Component); +} +void CObjComponentMgr::InsertList(CListCtrl &List) +{ + int size = m_BaseComponentVec.size(); + for(int i=0;i= size) + return false; + return true; +} +void CObjComponentMgr::DelSel(int &idx) +{ + if(!IdxValid(idx)) + return; + vector::iterator iter = m_BaseComponentVec.begin(); + vector::iterator iter_end = m_BaseComponentVec.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx) + { + m_BaseComponentVec.erase(iter); + idx = -1; + break; + } + i++; + } +} +//ɾ +void CObjComponentMgr::DelAll() +{ + m_BaseComponentVec.clear(); + m_ComponentVec.clear(); + m_CatchPtVec.clear(); +} +//idx +void CObjComponentMgr::OpArea(int idx,CObjComponent &Area,bool bRead) +{ + int size = m_BaseComponentVec.size(); + for(int i=0;i=endX;i--) + { + for(int j = startY;j>=endY;j--) + { + //obj ֵ + IntXY idx; + idx.x = (i-startX-1)*(-1); + idx.y = (j-startY-1)*(-1); + Arrayij(i,j,idx,Offset,RealOffset); + } + } +} +//i еj (Offset ʾƫ,RealOffset ʵƫ) +void CObjComponentMgr::Arrayij(int i,int j,IntXY idx,Dbxy Offset,Dbxy RealOffset) +{ + int size = m_BaseComponentVec.size(); + for(int k=0;k::iterator iter = m_BaseComponentVec.begin(); + vector::iterator iter_end = m_BaseComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetBasePt(Offset); + } +} +//ڽҵpt ĵ +Dbxy CObjComponentMgr::FindNearestPt(Dbxy pt) +{ + Dbxy NearestPt = pt; + double MinDis = -1; + vector::iterator iter = m_CatchPtVec.begin(); + vector::iterator iter_end = m_CatchPtVec.end(); + for(;iter!=iter_end;iter++) + { + double dis = CalDistance(pt,(*iter)); + if(MinDis == -1 || dis < MinDis) + { + MinDis = dis; + NearestPt = (*iter); + } + } + return NearestPt; +} +#endif +#if 1 +//ͨlayer еͼζobj +void CObjComponentMgr::CreatObjByLayerObj() +{ + m_ComponentVec.clear(); + + CLayer &Layer = GetLayerInstance(); + CObjContainer &ObjContainer = Layer.GetObjContainer(); + vector> &ObjVec = ObjContainer.GetObjVec(); + vector>::iterator iter = ObjVec.begin(); + vector>::iterator iter_end = ObjVec.end(); + for(;iter!=iter_end;iter++) + { + DbRect rect = (*iter)->GetRect(); + if(!m_bDrawBindingObj)//Ƿưobj + { + (*iter)->SetbDraw(false); + } + (*iter)->SetSelected(false); + Dbxy pt = rect.GetCenterPt(); + DbSize size = rect.GetSize(); + //ƫƵ + if((*iter)->IsbOffsetAreaRect()) + { + continue; + } + + CObjComponent Obj(pt,size); + + if((*iter)->GetType() == _TYPE_CIRCLE) + Obj.SetIsCircle(true);//Բ + else + Obj.SetIsCircle(false);// + Obj.AddObjShape(*iter);//layer obj + + m_ComponentVec.push_back(Obj); + } + //󶨵layer obj (ֹ༭) + SetShapeLockState(true); +} +//obj зλmark λ +void CObjComponentMgr::AnalyseMarkPt() +{ + vector MarkVec; + //ҳԲζ + { + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsCircle()) + { + MarkVec.push_back(&(*iter)); + } + } + } + { + bool flg = false; + int size = MarkVec.size(); + if (size == 3) + { + flg = true; + + MarkVec[0]->SetbMark1Obj(true); + MarkVec[1]->SetbMark2Obj(true); + MarkVec[2]->SetbMark3Obj(true); + + MarkVec[0]->SetbMarkObj(true); + MarkVec[1]->SetbMarkObj(true); + MarkVec[2]->SetbMarkObj(true); + } + /*if(size>=2) + { + double MaxX,MinX; + double Mark1Idx = 0; + double Mark2Idx = 0; + double Mark3Idx = -1; + //ҳԵĶ + for(int i=0;iGetBasePt(); + if(i==0) + { + MaxX = MinX = pt.x; + } + else + { + if(pt.x>MaxX) + { + MaxX = pt.x; + Mark2Idx = i; + } + else if(pt.x0) + { + Dbxy pt1 = MarkVec[Mark1Idx]->GetBasePt(); + Dbxy pt2 = MarkVec[Mark2Idx]->GetBasePt(); + Dbxy pt3 = MarkVec[Mark3Idx]->GetBasePt(); + if(!IsTwoDbEqual(pt1.y,pt2.y)) + { + if(IsTwoDbEqual(pt1.x,pt3.x)) + swap(Mark1Idx,Mark3Idx); + else + swap(Mark2Idx,Mark3Idx); + } + } + flg = true; + //mark 1 + MarkVec[Mark1Idx]->SetbMarkObj(true);//Ϊmark + MarkVec[Mark1Idx]->NotCollect();//Ҫռӹ + MarkVec[Mark1Idx]->SetbMark1Obj(true); + //mark 2 + MarkVec[Mark2Idx]->SetbMarkObj(true);//Ϊmark + MarkVec[Mark2Idx]->NotCollect();//Ҫռӹ + MarkVec[Mark2Idx]->SetbMark1Obj(false); + + //mark 3 + if(size==3 && Mark3Idx>=0) + { + MarkVec[Mark3Idx]->SetbMark3Obj(true);//Ϊmark3 + MarkVec[Mark3Idx]->NotCollect();//Ҫռӹ + MarkVec[Mark3Idx]->SetbMark1Obj(false); + } + }*/ + if(!flg) + { + CMsgBox MsgBox; + MsgBox.Show("δֶλ!"); + } + } +} +//û׼ +DbSize CObjComponentMgr::GetBaseSize(int idx) +{ + DbSize BaseSize; + int size = m_BaseComponentVec.size(); + if(idx>=0 && idx=0 && idxWriteDebugLog("func : CObjComponentMgr---->ResetObjCollectState"); + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetbCollected(false); + if(NeedSel && (*iter).IsSelected()==false) + { + (*iter).SetbCollected(true);//δѡIJҪռ + } + } +} +//ռrect ΧԪĹ +void CObjComponentMgr::CollectWorkData(DbRect &rect,vector> &vec,bool bNeedSel) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if (iter->IsCircle()&&!IsCollectCircle())//ռԲʱ,˵Բ + continue; + /* if((*iter).IsMarkObj())//˵mark + continue;*/ + if(!bNeedSel || (bNeedSel && (*iter).IsSelected())) + { + (*iter).CollectWorkData(rect,vec); + } + } +} +bool CObjComponentMgr::HasObjInRect(DbRect &rect) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsInRect(rect,true)) + { + return true; + } + } + return false; +} +//صһ׼obj ǷԲ +bool CObjComponentMgr::IsCircle() +{ + if(m_BaseComponentVec.empty()) + return true; + return m_BaseComponentVec[0].IsCircle(); +} +//õһ׼obj ǷΪԲ +void CObjComponentMgr::SetIsCircle(bool b) +{ + if(!m_BaseComponentVec.empty()) + { + m_BaseComponentVec[0].SetIsCircle(b); + } +} +//ͨobj 󴴽markarea +void CObjComponentMgr::CreatAreaByObj(CMarkAreaMgr &AreaMgr) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + CMarkArea Area((*iter).GetBasePt(),(*iter).GetSize()); + AreaMgr.AddArea(Area); + } +} +#endif +#if 1 +//ȡһѡobj ֵ +IntXY CObjComponentMgr::GetFristSelectedObjIdx() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + { + return (*iter).GetIndex(); + } + } + IntXY idx(-1,-1); + return idx; +} +//תΪvector ֵ(ûƥ䷵-1) +int CObjComponentMgr::ConvertIdx(IntXY Idx) +{ + int size = m_ComponentVec.size(); + for(int i=0;i=0) + { + CString LogStr; + LogStr.Format(_T("Fuc:MoveSelObjToPt : Idx[X] = [%d] ,Idx[Y] = [%d]"),IdxXY.x,IdxXY.y); + gLogMgr->WriteDebugLog(LogStr); + //¼ǰ۲obj ֵ + SetCurViewObjIdx(IdxXY); + //Ϊѹ۲ + m_ComponentVec[idx].SetbViewed(true); + return true; + } + return false; +} +//ͨƶobj ָ +void CObjComponentMgr::MoveObjToCameraByDir(DIRECTION dir,Dbxy TargetPt) +{ + IntXY IdxXY = GetCurViewObjIdx(); + if(dir == _DIR_R) + IdxXY.x--; + else if(dir == _DIR_L) + IdxXY.x++; + else if(dir == _DIR_U) + IdxXY.y--; + else if(dir == _DIR_D) + IdxXY.y++; + else if(dir == _DIR_M) + { + IdxXY.x = 1; + IdxXY.y = 1; + } + MoveObjToPtByIdx(IdxXY,TargetPt); +} +//S ι켣ƶobj (bDir ƶ) +void CObjComponentMgr::MoveTrackS(Dbxy TargetPt,IntXY Gap,bool bDir) +{ + IntXY IdxXY = GetCurViewObjIdx(); + IntXY NewIdxXY = IdxXY; + + if(m_bMoveTrackSDir)// + NewIdxXY.y += Gap.y; + else// + NewIdxXY.y -= Gap.y; + + if(MoveObjToPtByIdx(NewIdxXY,TargetPt)==false)//ͷˣƶ + { + NewIdxXY.y = IdxXY.y; + if(bDir)// + NewIdxXY.x += Gap.x; + else// + NewIdxXY.x -= Gap.x; + + if(MoveObjToPtByIdx(NewIdxXY,TargetPt))//ƶ + { + m_bMoveTrackSDir = !m_bMoveTrackSDir;//ƶY + } + } +} +#endif +#if 1 +//LPS ISP3000 ͨdie ľһobj ֳ(bDivideX Ƿ뷽) +void CObjComponentMgr::DivideBySpacingDis(double dis,bool bDivideX) +{ + if(dis<0.001) + return; + + vector ComponentVecTmp;//ʱ + + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + ComponentVecTmp.push_back(CopyObj((*iter),-1,dis,bDivideX)); + ComponentVecTmp.push_back(CopyObj((*iter),1,dis,bDivideX)); + } + m_ComponentVec = ComponentVecTmp; +} +CObjComponent CObjComponentMgr::CopyObj(CObjComponent &Obj,int sign,double dis,bool bDivideX) +{ + Dbxy BasePt = Obj.GetBasePt();//ʾ + Dbxy RealBasePt = Obj.GetRealBasePt();//ʵʵ + DbSize size = Obj.GetSize();//ʾߴ + IntXY Idx = Obj.GetIndex(); + CObjComponent NewObj = Obj; + BasePt.x += (size.w/4)*(sign); + NewObj.SetBasePt(BasePt); + RealBasePt.x += (dis/2)*(sign); + NewObj.SetRealBasePt(RealBasePt); + size.w /= 2; + NewObj.SetSize(size); + Idx.x *=2; + if(sign==1) + Idx.x -= 1; + NewObj.SetIndex(Idx); + return NewObj; +} +//ǰ۲obj +int CObjComponentMgr::GetCurViewedObj() +{ + int cnt = 0; + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsbViewed()) + cnt++; + } + return cnt; +} +#endif + +#if 1 +//лǷƶccd ģʽ +bool CObjComponentMgr::SwithObjToCcdMode() +{ + m_bObjToCcdMode = !m_bObjToCcdMode; + return m_bObjToCcdMode; +} +//ȡһѡobj ĵ +Dbxy CObjComponentMgr::GetFristSelObjCenter() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + return (*iter).GetRealBasePt(); + } + Dbxy pt; + return pt; +} +void CObjComponentMgr::MoveSelObjToCamera() +{ + int cnt = GetSelObjCnt(); + if(cnt ==1) + { + Dbxy pt = GetFristSelObjCenter(); + vector PtVec; + vector ResultVec; + PtVec.push_back(pt); + gCommonFlowMgr->MovePtToCamera(PtVec,ResultVec,false); + } +} +#endif +#if 1 +//rect obj mark ״̬(bSel ʾǷҪѡʱ) +//obj ݷΧ(markarea) +DbRect CObjComponentMgr::SetMarkedStateRect(DbRect AreaRect,bool bSel) +{ + DbRect DataRect;//ݷΧ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if(bSel && !(*iter).IsSelected()) + continue; + if(!(*iter).IsbMarked() && (*iter).IsInRect(AreaRect,true)) + { + (*iter).SetbMarked(true); + AdjustRectByRect(DataRect,(*iter).GetRect()); + } + } + return DataRect; +} +//obj ļӹ״̬ +void CObjComponentMgr::ResetAllMarkedState() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetbMarked(false); + } +} +//ԭlayer obj ״̬(ɾ) +void CObjComponentMgr::SetShapeLockState(bool b) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).SetShapeLockState(b); + } +} +#endif +void CObjComponentMgr::OnMove(Dbxy Offset) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).OnMove(Offset,false); + } +} +//ƶѡԭ +void CObjComponentMgr::MoveSelObjComponent(Dbxy Offset) +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + { + (*iter).OnMove(Offset,true); + } + } + GetCurViewPtr()->RefreshView(); +} +void CObjComponentMgr::SetSelObjPenNum() +{ + auto & SelIndexVec= gClientMgr->m_SelObjIndexVec; + SelIndexVec.clear(); + + int cnt = m_ComponentVec.size(); + for (int idx = 0;idx < cnt;idx++) + { + if((m_ComponentVec[idx]).IsSelected()) + { + SelIndexVec.push_back(idx); + (m_ComponentVec[idx]).SetSelObjPenNum(); + } + } + gClientMgr->SendCmd_SetSpecialObj(); + NotSelAllObj(); + GetCurViewPtr()->RefreshView(); + +} +//ȡobj Rect Χ +DbRect CObjComponentMgr::GetAllObjRect() +{ + DbRect DataRect;//ݷΧ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if(!(*iter).IsMarkObj()) + { + AdjustRectByRect(DataRect,(*iter).GetRect()); + } + } + return DataRect; +} +bool CObjComponentMgr::HasSelObjComponent() +{ + vector::iterator iter = m_ComponentVec.begin(); + vector::iterator iter_end = m_ComponentVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsSelected()) + { + return true; + } + } + return false; +} \ No newline at end of file diff --git a/LaiPuLaser/ObjComponentMgr.h b/LaiPuLaser/ObjComponentMgr.h new file mode 100644 index 0000000..b9418a5 --- /dev/null +++ b/LaiPuLaser/ObjComponentMgr.h @@ -0,0 +1,168 @@ +#pragma once +#include "ObjComponent.h" +#include "Module.h" +#include "LabVecRang.h" +#include "MarkAreaMgr.h" + +//Ԫ +class CObjComponentMgr :public CModule +{ + friend class CDlgObjComponent; + friend class CDlgObjComponentArr; + #ifdef __LPS_IS3000__ + friend class CIS3000LotInfo; + #endif +public: + CObjComponentMgr(void); + ~CObjComponentMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void OnPropertyChanged(); + virtual void Draw(CDC* pDC);//pDC һЩ + virtual MODULE GetModuleType(){return _OBJ_COMPONENT_PROP;}; + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + bool IsInArea(Dbxy pt,DbSize Size); + void SetDrawBase(bool b){m_bDrawBase = b;}; + void AddBaseComponent(); + void AddBaseComponent(Dbxy pt,DbSize size); + void AddComponent(CObjComponent Component); + void InsertList(CListCtrl &List); + void DelSel(int &idx); + void DelAll(); + void OpArea(int idx,CObjComponent &Area,bool bRead); + void SetCurSelIdx(int idx){m_CurSelIdx = idx;}; + void Array(); + bool SelObjectInRect(DbRect rect); + void SelAllObj(); + void NotSelAllObj(); + void RevSelAllObj(); + vector &GetCatchPtVec(){return m_CatchPtVec;}; + void SetDrawAllObj(bool b){m_bDrawAllObj = b;};//Ƿԭ + void DelAllBaseObj(){m_BaseComponentVec.clear();}; + bool HasBase(){return !m_BaseComponentVec.empty();};//Ƿл׼ + DbSize GetBaseSize(int idx); + bool IsBaseCircle(int idx); + void CollectWorkData(DbRect &rect,vector> &vec,bool bNeedSel); + void ResetObjCollectState(bool NeedSel); + void DrawArea(CDC* pDC,Dbxy Offset); + void SetAreaRadius(double r){m_AreaRadius = r;}; + double GetAreaRadius(){return m_AreaRadius;}; + COLORREF GetNoSelColor(){return m_NoSelColor;}; + COLORREF GetSelColor(){return m_SelColor;}; + COLORREF GetViewColor(){return m_ViewObjColor;}; + COLORREF GetViewedObjColor(){return m_ViewedObjColor;}; + bool IsDrawFillColor(){return m_bDrawFillColor;}; + void SetDefaultAng(double ang){m_DefaultAng = ang;}; + double GetDefaultAng(){return m_DefaultAng;}; + Dbxy FindNearestPt(Dbxy pt); + bool IsAutoArray(){return m_bAutoArray;}; + bool HasObj(){return !m_ComponentVec.empty();}; + void CreatAreaByObj(CMarkAreaMgr &AreaMgr); + int GetObjCnt(){return m_ComponentVec.size();} + void GetSelObjIdx(vector &SelObjIdxVec); + void SetSelectedByIdx(int idx,bool b); + vector&GetComponentVec(){return m_ComponentVec;}; + void CreatObjByLayerObj(); + void AnalyseMarkPt(); + void SetAreaBasePt(Dbxy pt){m_AreaBasePt = pt;}; + IntXY GetFristSelectedObjIdx(); + void MoveFristSelObjToPt(Dbxy TargetPt); + void MoveObjToCameraByDir(DIRECTION dir,Dbxy TargetPt); + IntXY GetCurViewObjIdx(){return m_CurSelObjIdx;}; + void MoveTrackS(Dbxy TargetPt,IntXY Gap,bool bDir); + void ResetMoveTrackSDir(){m_bMoveTrackSDir = true;};//÷ + bool IsbShowRealObj(){return m_bShowRealObj;}; + void SetCurSelObjIdx(IntXY Idx); + bool MoveObjToPtByIdx(IntXY IdxXY,Dbxy TargetPt); + int GetCurViewedObj(); + void SetMarkObj(); + bool GetTwoMarkPt(Dbxy &MarkPt1,Dbxy &MarkPt2); + bool SwithObjToCcdMode(); + void MoveSelObjToCamera(); + DbRect SetMarkedStateRect(DbRect rect,bool bSel); + void ResetAllMarkedState(); + void SetShapeLockState(bool b); + Dbxy GetAllObjCenterPt(){return m_AllObjCenterPt;}; + DbRect GetAllObjRect2(){return m_AllObjRect;}; + void CalAllObjCenterPt(); + void OnMove(Dbxy Offset); + bool HasObjInRect(DbRect &rect); + void SetSelObjPenNum(); + DbRect GetAllObjRect(); + bool GetMark3Pt(Dbxy &MarkPt3); + void MoveSelObjComponent(Dbxy Offset); + bool HasSelObjComponent(); + void SetCollectCircle(bool b) { m_bCollectCircle = b; }; //ǷռԲ +private: + bool IdxValid(int idx); + void ArrayExt(); + void Arrayij(int i,int j,IntXY idx,Dbxy Offset,Dbxy RealOffset); + void AutoArray(); + void SetBaseObjOffset(Dbxy Offset); + bool AutoArrayExt(Dbxy BasePt,DbSize Size,double OffsetX,double OffsetY,bool bIsCircle); + void SaveBaseObj(vector &LabVec); + void ReadBaseObj(CLabVecRang &LabVecRang); + bool IsCircle(); + void SetIsCircle(bool b); + void OnObjSelStateChange(); + int ConvertIdx(IntXY Idx); + void SetCurViewObjIdx(IntXY Idx); + void DivideBySpacingDis(double dis,bool bDivideX); + CObjComponent CopyObj(CObjComponent &Obj,int sign,double dis,bool bDivideX); + int GetMarkObjCnt(); + void SetSelObjMark(int CurMarkCnt); + void ResetAllMarkObj(); + int GetSelObjCnt(); + Dbxy GetFristSelObjCenter(); + bool IsCollectCircle() { return m_bCollectCircle; };//ѯǷռԲ +public: + bool m_bCollectCircle = false; +private: + vector m_BaseComponentVec;//׼Ԫ + vector m_ComponentVec;//Ԫ + bool m_bDrawAllObj;//Ƿеԭ + bool m_bDrawBase;//Ƿֻƻ׼Ԫ + int m_CurSelIdx;//ǰѡĻ׼Ԫ ֵ + vector m_CatchPtVec;//иĽ㣬ָץȡ + + bool m_bObjToCcdMode;//true ʱѡobj ƶCCD ۲ +//ҪIJ----------------------------------------------- + COLORREF m_NoSelColor;//ûѡеɫ + COLORREF m_SelColor;//ѡеɫ + COLORREF m_ViewObjColor;//ڹ۲obj ɫ + COLORREF m_ViewedObjColor;//۲obj ɫ + + + bool m_bDrawBindingObj;//Ƿư󶨵layer obj + bool m_bDrawFillColor;//Ƿ + bool m_bAutoArray;//ǷԶ + double m_AutoArrayGap;//ԶŲ(mm) + double m_DefaultAng;//ĬϽǶ + //ԪϢ--------------------------------------------------------------- + int m_ArrayXcntZ;//X + int m_ArrayXcntF;//X + int m_ArrayYcntZ;//Y + int m_ArrayYcntF;//Y + double m_OffsetX;//X + double m_OffsetY;//Y + //޶ԪķΧ------------------------------------------------------------- + bool m_bUseArea;//Ƿʹ޶Χ + bool m_bRectArea;//true ΪηΧ,false ΪԲηΧ + Dbxy m_AreaBasePt;//ΧĻ׼ + DbSize m_AreaSize;//ηΧijߴ + double m_AreaRadius;//ԲηΧֱ + bool m_bNeedAllIn;//ԪǷҪȫڷΧ + + + Dbxy m_AllObjCenterPt;//ԭ,㲻ӹobj(mark) + DbRect m_AllObjRect;//ԭrect + //LPS - ISP3000------------------------------------------------------------------ + IntXY m_CurSelObjIdx;//ǰѡobj ֵ + double m_RealOffsetX;//ʵʵX mm + double m_RealOffsetY;//ʵʵY mm + bool m_bMoveTrackSDir;//Sι켣ƶķ־ + bool m_bShowRealObj;//ʾobj ʵλ +}; + +extern CObjComponentMgr *gObjComponentMgr; \ No newline at end of file diff --git a/LaiPuLaser/ObjComposite.cpp b/LaiPuLaser/ObjComposite.cpp new file mode 100644 index 0000000..a209e9a --- /dev/null +++ b/LaiPuLaser/ObjComposite.cpp @@ -0,0 +1,123 @@ +#include "StdAfx.h" +#include "ObjComposite.h" +#include "ObjPline.h" +#include "GlobalFunction.h" + + +CObjComposite::CObjComposite(void) +{ + m_Distance = 10;//׼ľ +} +CObjComposite::~CObjComposite(void) +{ +} +CObjComposite::CObjComposite(CObjComposite &rhs) +:CObjBase(rhs) +{ + m_BasePt1 = rhs.m_BasePt1;//object ǰλ + m_BasePt2 = rhs.m_BasePt2;//object ǰλ(ڼ¼ת) + m_Distance = rhs.m_Distance;//ľ + + rhs.m_ObjContainer.CloneObj(m_ObjContainer,false); +} +#if 1 +void CObjComposite::WriteWorkFileExt(vector &LabVec) +{ + //дobj Ϣ + m_ObjContainer.WriteWorkFile(LabVec); +} +void CObjComposite::ReadWorkFileExt(CLabVecRang &LabVecRang) +{ + //ȡobj Ϣ + m_ObjContainer.ReadWorkFile(LabVecRang); +} +#endif +//bNewLine ʾǷҪ½һ߶ +void CObjComposite::AddPt(CDataPoint pt,bool bNewLine) +{ + if(bNewLine) + { + CObjPline *p = new CObjPline; + p->AddDataPoint(pt); + m_ObjContainer.AddObject(p); + } + else + { + m_ObjContainer.AddPtToLastObj(pt); + } +} +void CObjComposite::Creat() +{ + CreatExt(); + UpdateSelState(); +} +//obj ѡ״̬ +void CObjComposite::UpdateSelState() +{ + if(m_bSelected) + { + m_ObjContainer.SelAllObj(); + } + else + { + m_ObjContainer.NotSelAllObj(); + } +} +void CObjComposite::Draw(CDC* pDC,CPen &Pen) +{ + m_ObjContainer.DrawAllObj(pDC); + // + DrawFill(pDC,Pen); +} +bool CObjComposite::IsInRect(DbRect rect,bool bNeedAllIn) +{ + return m_ObjContainer.IsInRect(rect,bNeedAllIn); +} +void CObjComposite::SetSelected(bool bSelected) +{ + CObjBase::SetSelected(bSelected);//ȫѡ״̬ + + m_ObjContainer.SetSelected(bSelected);//ÿԱѡ״̬ +} +void CObjComposite::Operate(SObjOperatePar &par) +{ + //¼ + SavePar(par); + m_ObjContainer.Operate(par); + OperateFill(par); +} +//¼, ɵǷλ +void CObjComposite::SavePar(SObjOperatePar &par) +{ + if(par.OpType == _OP_MOVE) + { + m_BasePt1.x += par.MoveX; + m_BasePt1.y += par.MoveY; + m_BasePt2.x += par.MoveX; + m_BasePt2.y += par.MoveY; + } + if(par.OpType == _OP_ROTATO) + { + m_BasePt1 = RotatoPt(m_BasePt1,_360ToAngle(par.Angle),par.BasePt); + m_BasePt2 = RotatoPt(m_BasePt2,_360ToAngle(par.Angle),par.BasePt); + } +} +DbRect CObjComposite::GetRect() +{ + return m_ObjContainer.GetObjRect(false); +} +void CObjComposite::SetPosition(Dbxy pt) +{ + m_BasePt1 = m_BasePt2= pt; + m_BasePt2.x += m_Distance; +}; +//ίиԱȥѼ +void CObjComposite::GetPtData(vector> &vec) +{ + m_ObjContainer.GetObjPtData(vec,false); +} +//ȡrect Χе߶ +void CObjComposite::GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bGetCatchNode) +{ + m_ObjContainer.GetLineInRect(rect,DataPtLineVec,true); +} \ No newline at end of file diff --git a/LaiPuLaser/ObjComposite.h b/LaiPuLaser/ObjComposite.h new file mode 100644 index 0000000..908996c --- /dev/null +++ b/LaiPuLaser/ObjComposite.h @@ -0,0 +1,41 @@ +#pragma once +#include "ObjBase.h" +#include "ObjContainer.h" + +//϶ +class CObjComposite :public CObjBase +{ +public: + CObjComposite(void); + CObjComposite(CObjComposite &rhs); + virtual ~CObjComposite(void); + virtual CObjComposite * Clone(){return new CObjComposite(*this);}; + virtual CString GetStr(){return "϶";}; + virtual OBJ_TYPE GetType(){return _TYPE_COMPOSITE;}; + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFileExt(CLabVecRang &LabVecRang); + + virtual void CreatExt(){}; + virtual void Draw(CDC* pDC,CPen &Pen); + virtual bool IsInRect(DbRect rect,bool bNeedAllIn); + virtual void SetSelected(bool bSelected); + virtual void Operate(SObjOperatePar &par); + virtual DbRect GetRect(); + virtual void GetPtData(vector> &vec); + virtual void GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bGetCatchNode = true); +public: + void AddPt(CDataPoint pt,bool bNewLine); + void Creat(); + void SetPosition(Dbxy pt);//û׼ +protected: + void UpdateSelState(); +private: + void SavePar(SObjOperatePar &par); +protected: + CObjContainer m_ObjContainer;//ģʽ + + Dbxy m_BasePt1;//object ǰλ + Dbxy m_BasePt2;//object ǰλ(ڼ¼ת) + double m_Distance;//ľ +}; + diff --git a/LaiPuLaser/ObjContainer.cpp b/LaiPuLaser/ObjContainer.cpp new file mode 100644 index 0000000..188b0ec --- /dev/null +++ b/LaiPuLaser/ObjContainer.cpp @@ -0,0 +1,914 @@ +#include "StdAfx.h" +#include "ObjContainer.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "ObjPLine.h" +#include "ObjFactory.h" +#include "CommandBase.h" +#include "CStringFuc.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "LogMgr.h" + +CObjContainer::CObjContainer(void) +{ +} +CObjContainer::~CObjContainer(void) +{ +} +#if 1 +void CObjContainer::WriteWorkFile(vector &LabVec) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + LabVec.push_back(CLab(LAB_OBJ_START)); + (*iter)->WriteWorkFile(LabVec); + LabVec.push_back(CLab(LAB_OBJ_END)); + } +} +void CObjContainer::ReadWorkFile(CLabVecRang &LabVecRang) +{ + //obj --------------------------------------------------- + vector LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_OBJ_START,LAB_OBJ_END); + //ÿobj --------------------------------------------------- + if(gDraw->IsbDelOldObj()) + Clear();//ԭobj + + if(!LabVecRangVec.empty()) + { + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(;iter!=iter_end;iter++) + { + //ȡobj + CLab ObjType= WorkFileMgr.FindLab((*iter),LAB_OBJ_TYPE); + if(ObjType.m_ValType != _TYPE_NULL) + { + OBJ_TYPE type = (OBJ_TYPE)(ObjType.m_Int); + if(type != _TYPE_BASE) + { + CObjFactory ObjFactory; + CObjBase *p = ObjFactory.CreatObj(type);//ָobj ʵ + if(p) + { + p->ReadWorkFile(*iter);//ָ + AddObject(p); + } + } + } + } + } +} +#endif +#if 1 +void CObjContainer::AddObject(CObjBase *pMarkObject) +{ + //浽ָ + Sptr sPtr(pMarkObject); + AddObject(sPtr); +} +void CObjContainer::AddObject(Sptr p) +{ + m_ObjVec.push_back(p); +} +//ӵ㵽ĩβobj +void CObjContainer::AddPtToLastObj(CDataPoint pt) +{ + if(!m_ObjVec.empty()) + { + m_ObjVec[m_ObjVec.size()-1]->AddDataPoint(pt); + } +} +//(Բ) +CMFCPropertyGridProperty *CObjContainer::CreatSpecialGridProperty(CModule *pModule) +{ + if(GetSelObjCnt() == 1)//ֻһʱ + { + return GetFirstSelObj()->CreatSpecialGridProperty(pModule); + } + else + return NULL; +} +//ӦԵı仯 +void CObjContainer::OnSpecialPropertyChanged() +{ + if(GetSelObjCnt() == 1)//ֻһʱ + { + GetFirstSelObj()->OnSpecialPropertyChanged(); + } +} +//б +void CObjContainer::InsertList(CListCtrl &List) +{ + int size = m_ObjVec.size(); + for(int i=0;iGetStr());// + } +} +#endif +#if 1// +void CObjContainer::DrawAllObj(CDC* pDC) +{ + //obj + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + { + (*iter)->Draw(pDC,gDraw->GetSelObjectPen()); + } + else + { + (*iter)->Draw(pDC); + } + } +} +void CObjContainer::DrawAllObj(CDC* pDC,CPen &Pen) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Draw(pDC,Pen); + } +} + +void CObjContainer::XorRedrawObj(CDC* pDC,bool bNeedSel) +{ + int old_rop = pDC->SetROP2(R2_XORPEN); + //obj + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel) + { + if((*iter)->IsSelected()) + { + (*iter)->Draw(pDC,gDraw->GetSelObjectPen()); + } + } + else + { + (*iter)->Draw(pDC,gDraw->GetObjectPen()); + } + } + pDC->SetROP2(old_rop); +} +void CObjContainer::XorDrawLastObj(CDC* pDC) +{ + if(m_ObjVec.empty()==false) + { + int old_rop = pDC->SetROP2(R2_XORPEN); + m_ObjVec[m_ObjVec.size()-1]->Draw(pDC,gDraw->GetObjectPen()); + pDC->SetROP2(old_rop); + } +} +#endif +#if 1 +//Ƿѡobj +bool CObjContainer::HasObjSel() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + return true; + } + return false; +} +//ȡѡobj ĸ +int CObjContainer::GetSelObjCnt() +{ + int cnt = 0; + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + cnt++; + } + return cnt; +} +bool CObjContainer::HasSelObjectInRect(DbRect rect) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected() && (*iter)->IsInRect(rect,false)) + return true; + } + return false; +} +//rect ǷѡĽڵ +bool CObjContainer::HasSelNodeInRect(DbRect rect) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()&&(*iter)->HasNodeInRect(rect)) + { + return true; + } + } + return false; +} +bool CObjContainer::HasObjectInRect(DbRect rect) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsInRect(rect,false)) + return true; + } + return false; +} +//ȡһѡobj +Sptr CObjContainer::GetFirstSelObj() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + { + return (*iter); + } + } + // + Sptr sp(NULL); + return sp; +} +Sptr CObjContainer::GetFirstObjInRect(DbRect &rect) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsInRect(rect,false)) + { + Sptr sp(*iter); + return sp; + } + } + // + Sptr sp(NULL); + return sp; +} +Sptr CObjContainer::GetFirstNodeObjInRect(DbRect &rect) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->HasNodeInRect(rect)) + { + Sptr sp(*iter); + return sp; + } + } + // + Sptr sp(NULL); + return sp; +} +DbRect CObjContainer::GetSelObjRect() +{ + DbRect SelObjRect; + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()==false) + continue; + DbRect rect = (*iter)->GetRect(); + if(SelObjRect.IsZero()) + { + SelObjRect = rect; + } + else + { + AdjustRectByRect(SelObjRect,rect); + } + } + return SelObjRect; +} +//ȡObj ķΧ +DbRect CObjContainer::GetObjRect(bool bNeedSel) +{ + DbRect ObjRect; + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel && (*iter)->IsSelected()==false) + continue; + DbRect rect = (*iter)->GetRect(); + if(ObjRect.IsZero()) + { + ObjRect = rect; + } + else + { + AdjustRectByRect(ObjRect,rect); + } + } + return ObjRect; +} +//ȡobj ľηΧ +DbRect CObjContainer::GetObjRect(int idx) +{ + DbRect ObjRect; + int size = m_ObjVec.size(); + if(CorrectIdx(idx)) + { + ObjRect = m_ObjVec[idx]->GetRect(); + } + return ObjRect; +} +//ѡrect ڵobj +bool CObjContainer::SelObjectInRect(DbRect rect,bool bNeedAllIn) +{ + bool ret = false; + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + Sptr p = (*iter); + if(p->IsInRect(rect,bNeedAllIn)) + { + p->SetSelected(true); + ret = true; + } + } + return ret; +} +//ȫѡ +void CObjContainer::SelAllObj() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SetSelected(true); + } +} +void CObjContainer::NotSelAllObj() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SetSelected(false); + } +} +//ѡ +void CObjContainer::RevSelAllObj() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + { + (*iter)->SetSelected(false); + } + else + { + (*iter)->SetSelected(true); + } + } +} +//ɾѡ +void CObjContainer::DelSelObj() +{ + vector> vec; + //ȱݷѡ + { + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected() == false) + { + vec.push_back(*iter); + } + } + } + //ɾobj + m_ObjVec.clear(); + //ѡobj + { + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + m_ObjVec.push_back(*iter); + } + } +} +//ɾָobj +void CObjContainer::DelObj(Sptr p) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).GetPtr() == p.GetPtr()) + { + m_ObjVec.erase(iter); + break; + } + } +} +//ɾһobj +void CObjContainer::DeleteLastObj() +{ + if(Empty()==false) + { + m_ObjVec.pop_back(); + } +} +//ɾ߶ +void CObjContainer::DelNullLine() +{ + vector> vec; + //ȱݷѡ + { + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->Empty() == false) + { + vec.push_back(*iter); + } + } + } + //ɾobj + m_ObjVec.clear(); + //ѡobj + { + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + m_ObjVec.push_back(*iter); + } + } +} +//ϲѡͼ +CObjBase* CObjContainer::JoinSelObj() +{ + //ʺϷڵһλobj --------------------------------------------------- + int size = m_ObjVec.size(); + int cnt = 0; + bool flg1; + bool flg2; + int idx=0; + double eps = 0.01;//жϾ + int firstSelIdx = -1;//һѡobj + for(;idxIsSelected()) + { + if(firstSelIdx==-1) + { + firstSelIdx = idx; + } + flg1 = true; + flg2 = true; + for(int j=0;jIsSelected()&&j!=idx) + { + #if 0 + // + if(m_ObjVec[idx]->GetFirstPt() == m_ObjVec[j]->GetFirstPt() || m_ObjVec[idx]->GetFirstPt() == m_ObjVec[j]->GetLastPt()) + { + flg1 = false; + } + if(m_ObjVec[idx]->GetLastPt() == m_ObjVec[j]->GetFirstPt() || m_ObjVec[idx]->GetLastPt() == m_ObjVec[j]->GetLastPt()) + { + flg2 = false; + } + #else + // + if(IsTwoDbPtEqual(m_ObjVec[idx]->GetFirstPt(),m_ObjVec[j]->GetFirstPt(),eps)|| IsTwoDbPtEqual(m_ObjVec[idx]->GetFirstPt(),m_ObjVec[j]->GetLastPt(),eps)) + { + flg1 = false; + } + if(IsTwoDbPtEqual(m_ObjVec[idx]->GetLastPt(),m_ObjVec[j]->GetFirstPt(),eps)|| IsTwoDbPtEqual(m_ObjVec[idx]->GetLastPt(),m_ObjVec[j]->GetLastPt(),eps)) + { + flg2 = false; + } + #endif + } + } + if(flg1 || flg2)//ҵ + { + break; + } + } + } + if(flg1 && flg2)//˶ûкobjӣܺϲ + return NULL; + if(firstSelIdx==-1) + return NULL; + if(!flg1 && !flg2)//ѡobj Ϊպ״̬Եһѡobj ʼ + { + idx= flg1; + } + //ϲobj ------------------------------------------ + bool bReverse = false; + if(flg2) + { + bReverse = true; + } + CObjPline *p = new CObjPline; + p->AddObj(m_ObjVec[idx],bReverse);//һobj + set Set;//жЩѾ + Set.insert(idx); + + Dbxy ConectPt = p->GetLastPt();//ǰӵ + for(int i=0;iIsSelected()&&Set.count(j)==false)//ûѡobj + { + if(IsTwoDbPtEqual(ConectPt,m_ObjVec[j]->GetFirstPt(),eps))// + { + p->AddObj(m_ObjVec[j],false); + Set.insert(j);// + ConectPt = m_ObjVec[j]->GetLastPt(); + } + else if(IsTwoDbPtEqual(ConectPt,m_ObjVec[j]->GetLastPt(),eps))// + { + p->AddObj(m_ObjVec[j],true); + Set.insert(j);// + ConectPt = m_ObjVec[j]->GetFirstPt(); + } + } + } + } + //Ƿѡobj ûбϲ + bool flg = false; + for(int i=0;iIsSelected()&&Set.count(i)==false) + { + flg = true; + break; + } + } + //Уʾܺϲ + if(flg) + { + delete p; + p = NULL; + } + return p; +} + +//õǰidx ڵֵΪpt +void CObjContainer::SetNodePtByIdx(int idx,Dbxy pt) +{ + if(Empty()) + return; + m_ObjVec[0]->SetNodePtByIdx(idx,pt); +} + +#endif +#if 1 +//ѡobj +//bNeedSel ʾҪΪѡ״̬Ų +//bTmpOp ʾǷΪʱ +void CObjContainer::OperateObj(SObjOperatePar &par,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel==false || (bNeedSel && (*iter)->IsSelected())) + { + (*iter)->Operate(par); + } + } +} +//һobj +void CObjContainer::OperateLastObj(SObjOperatePar &par) +{ + if(m_ObjVec.empty()==false) + { + m_ObjVec[m_ObjVec.size()-1]->Operate(par); + } +} +#endif +#if 1// +void CObjContainer::GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bCatchTemp) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + //Ҫ׽ʱĹΪѡĶҲʱ + if(bCatchTemp==false&&(*iter)->IsSelected()) + continue; + (*iter)->GetLineInRect(rect,DataPtLineVec); + } +} +//m_ObjVec obj rhs +void CObjContainer::CloneObj(CObjContainer &rhs,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(!bNeedSel ||(bNeedSel && (*iter)->IsSelected())) + { + CObjBase *p = (*iter)->Clone(); + rhs.AddObject(p); + } + } +} +//ȡline ཻн㵽PointVec +void CObjContainer::GetIntersectPoint(DbLine &line,vector &PointVec) +{ + +} +//Ƿobj line ཻ +bool CObjContainer::HasObjIntersectWithLine(DbLine &line) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IntersectWithLine(line)) + { + return true; + } + } + return false; +} +#endif +#if 1 +//obj ָ +void CObjContainer::AddObjToCmd(CCommandBase *p,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel) + { + if((*iter)->IsSelected()) + p->AddOpObj((*iter)); + } + else + { + p->AddOpObj((*iter)); + } + } +} +//obj 뵱ǰlayer +void CObjContainer::AllObjAddToLayer() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + GetLayerInstance().AddObject(*iter); + } +} +//Լеobj rhs +void CObjContainer::AllObjAddToContainer(CObjContainer &rhs,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel) + { + if((*iter)->IsSelected()) + rhs.AddObject(*iter); + } + else + { + rhs.AddObject(*iter); + } + } +} +void CObjContainer::AllObjAddToLayerTmp() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + GetLayerInstance().AddTmpObject(*iter); + } +} + +//ȡǰһobj ָ(ɴtool ʹ) +CObjBase *CObjContainer::GetCurOpObj() +{ + if(m_ObjVec.empty()) + return NULL; + else + return m_ObjVec[m_ObjVec.size()-1].GetPtr(); +} +#endif +#if 1//group غ +bool CObjContainer::IsInRect(DbRect rect,bool bNeedAllIn) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsInRect(rect,bNeedAllIn)) + return true; + } + return false; +} +void CObjContainer::SetSelected(bool bSelected) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SetSelected(bSelected); + } +} +//idx Ϊ-1 ʱȫ +void CObjContainer::Operate(SObjOperatePar &par,int idx) +{ + if(idx==-1) + { + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Operate(par); + } + } + else + { + if(CorrectIdx(idx)) + { + m_ObjVec[idx]->Operate(par); + } + } +} +bool CObjContainer::CorrectIdx(int idx) +{ + int size = m_ObjVec.size(); + if(0<=idx && idx>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + { + (*iter)->BindingDlg(); + break; + } + } + } +} +#endif +#if 1 +//ȡobj ()vec (ϲ߶) +void CObjContainer::GetObjPtData(vector> &vec,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(!bNeedSel || (bNeedSel && (*iter)->IsSelected())) + { + (*iter)->GetPtData(vec); + } + } +} +//ȡobj ݵvec +void CObjContainer::GetObjFillData(vector> &vec,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(!bNeedSel || (bNeedSel && (*iter)->IsSelected())) + { + (*iter)->GetFillData(vec); + } + } +} + +//ҵе󣬲굽vec +void CObjContainer::GetOnePoint(vector &vec) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->GetType()==_TYPE_POINT) + { + Dbxy pt = (*iter)->GetFirstPt(); + vec.push_back(pt); + } + } +} +#endif +#if 1// +void CObjContainer::FillObj(SFillPar FillPar,bool bNeedSel) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if(bNeedSel && (*iter)->IsSelected()==false) + continue; + (*iter)->CreatFillData(FillPar); + } +} +#endif +//ȡеĵ +void CObjContainer::GetAllPointObjPt(vector &PtVec) +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->GetType()==_TYPE_POINT) + { + PtVec.push_back(((*iter)->GetRect()).GetCenterPt()); + } + } +} +//obj ڵѡ״̬ +void CObjContainer::SaveOldSelState() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SaveOldSelState(); + } +} +//ָobj ֮ǰѡ״̬ +void CObjContainer::RecoverOldSelState() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->RecoverOldSelState(); + } +} +//öѼ״̬ +void CObjContainer::ResetAllCollectedState() +{ + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SetbCollected(false); + } +} +//ȡΨһѡƫrect +bool CObjContainer::GetSelOffsetRect(DbRect &Rect) +{ + int cnt = 0; + vector>::iterator iter = m_ObjVec.begin(); + vector>::iterator iter_end = m_ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsbOffsetAreaRect()&&(*iter)->IsSelected()) + { + cnt++; + Rect = (*iter)->GetRect(); + } + } + return (cnt==1); +} diff --git a/LaiPuLaser/ObjContainer.h b/LaiPuLaser/ObjContainer.h new file mode 100644 index 0000000..5a8abff --- /dev/null +++ b/LaiPuLaser/ObjContainer.h @@ -0,0 +1,86 @@ +#pragma once +#include "SmartPtr.h" +#include "GlobalDefine.h" +#include "ObjBase.h" +#include "Subject.h" +#include "LabVecRang.h" + +class CCommandBase; + + + + +//obj +class CObjContainer +{ +public: + CObjContainer(void); + ~CObjContainer(void); + void AddObject(CObjBase *pMarkObject); + void AddObject(Sptr p); + void AddPtToLastObj(CDataPoint pt); + void DrawAllObj(CDC* pDC); + void DrawAllObj(CDC* pDC,CPen &Pen); + void XorRedrawObj(CDC* pDC,bool bNeedSel); + void XorDrawLastObj(CDC* pDC); + bool HasSelObjectInRect(DbRect rect); + bool HasSelNodeInRect(DbRect rect); + bool SelObjectInRect(DbRect rect,bool bNeedAllIn); + void SelAllObj(); + bool HasObjSel(); + void NotSelAllObj(); + void RevSelAllObj(); + void DelSelObj(); + void DelObj(Sptr p); + DbRect GetSelObjRect(); + void OperateObj(SObjOperatePar &par,bool bAll); + void GetLineInRect(DbRect &rect,vector &DataPtLineVec,bool bCatchTemp); + void CloneObj(CObjContainer &rhs,bool bNeedSel); + void AllObjAddToContainer(CObjContainer &rhs,bool bNeedSel); + void AddObjToCmd(CCommandBase *p,bool bNeedSel); + void SetNodePtByIdx(int idx,Dbxy pt); + bool Empty(){return m_ObjVec.empty();}; + void Clear(){m_ObjVec.clear();}; + vector> &GetObjVec(){return m_ObjVec;}; + void AllObjAddToLayer(); + CObjBase *GetCurOpObj(); + void DeleteLastObj(); + void OperateLastObj(SObjOperatePar &par); + Sptr GetFirstObjInRect(DbRect &rect); + Sptr GetFirstNodeObjInRect(DbRect &rect); + bool HasObjectInRect(DbRect rect); + void GetIntersectPoint(DbLine &line,vector &PointVec); + bool HasObjIntersectWithLine(DbLine &line); + void AllObjAddToLayerTmp(); + void AllObjCombToPline(); + CObjBase* JoinSelObj(); + void DelNullLine(); + DbRect GetObjRect(bool bNeedSel); + DbRect GetObjRect(int idx); + bool IsInRect(DbRect rect,bool bNeedAllIn); + void SetSelected(bool bSelected); + void Operate(SObjOperatePar &par,int idx= -1); + int GetSize(){return m_ObjVec.size();}; + void BindingDlg(); + int GetSelObjCnt(); + void GetObjPtData(vector> &vec,bool bNeedSel); + void GetObjFillData(vector> &vec,bool bNeedSel); + void FillObj(SFillPar FillPar,bool bNeedSel); + void GetOnePoint(vector &vec); + CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule); + void OnSpecialPropertyChanged(); + Sptr GetFirstSelObj(); + void InsertList(CListCtrl &List); + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void GetAllPointObjPt(vector &PtVec); + void SaveOldSelState(); + void RecoverOldSelState(); + void ResetAllCollectedState(); + bool GetSelOffsetRect(DbRect &Rect); +private: + bool CorrectIdx(int idx); +private: + vector> m_ObjVec;//obj +}; + diff --git a/LaiPuLaser/ObjFactory.cpp b/LaiPuLaser/ObjFactory.cpp new file mode 100644 index 0000000..64075cb --- /dev/null +++ b/LaiPuLaser/ObjFactory.cpp @@ -0,0 +1,60 @@ +#include "StdAfx.h" +#include "ObjFactory.h" +#include "ObjCircle.h" +#include "ObjPline.h" +#include "ObjComposite.h" +#include "ObjPoint.h" + +CObjFactory::CObjFactory(void) +{ +} +CObjFactory::~CObjFactory(void) +{ +} +CObjBase *CObjFactory::CreatObj(OBJ_TYPE type) +{ + CObjBase *p = NULL; + switch(type) + { + case _TYPE_PLINE: + p = new CObjPline; + break; + case _TYPE_CIRCLE: + p = new CObjCircle; + break; + case _TYPE_COMPOSITE: + p = new CObjComposite; + break; + case _TYPE_POINT: + p = new CObjPoint; + break; + default: + break; + } + return p; +} + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LaiPuLaser/ObjFactory.h b/LaiPuLaser/ObjFactory.h new file mode 100644 index 0000000..d1bbb59 --- /dev/null +++ b/LaiPuLaser/ObjFactory.h @@ -0,0 +1,11 @@ +#pragma once +#include "ObjBase.h" + +class CObjFactory +{ +public: + CObjFactory(void); + ~CObjFactory(void); + CObjBase *CreatObj(OBJ_TYPE type); +}; + diff --git a/LaiPuLaser/ObjFill.cpp b/LaiPuLaser/ObjFill.cpp new file mode 100644 index 0000000..d5ea75f --- /dev/null +++ b/LaiPuLaser/ObjFill.cpp @@ -0,0 +1,156 @@ +#include "StdAfx.h" +#include "ObjFill.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "LogMgr.h" + + +CObjFill::CObjFill(vector &Vec) +:m_SequentialPointVec(Vec) +{ +} +CObjFill::~CObjFill(void) +{ +} +//obj ݵ +void CObjFill::CreatFill(vector> &LinesVec,DbRect rect) +{ + if(m_FillPar.bFill ==false) + return; + + //ȡɨ(Pt1,Pt2) + Dbxy Pt1,Pt2,Offset; + int ScanTimes = 0; + GetScanLine(rect,Pt1,Pt2,Offset,ScanTimes); + + for(int i=0;i IntersectionVec; + if(GetIntersection(LinesVec,Pt1,Pt2,IntersectionVec,rect)) + { + //ԼĽ + SortIntersection(IntersectionVec); + //ɨ + SaveScanResult(IntersectionVec); + } + //ɨƫ + Pt1.x += Offset.x; + Pt1.y += Offset.y; + Pt2.x += Offset.x; + Pt2.y += Offset.y; + } +} +#if 1// +//ȡɨ(ScanTimes ɨƫƵĴ) +void CObjFill::GetScanLine(DbRect rect,Dbxy &Pt1,Dbxy &Pt2,Dbxy &Offset,int &ScanTimes) +{ + //һ㹻߶ + double R = 200; + Dbxy CenterPt(rect.L,rect.T); + Pt1.y = Pt2.y = rect.T; + Pt1.x = rect.L-R; + Pt2.x = rect.R+R; + + Dbxy Pt(Pt1.x,Pt1.y-m_FillPar.m_FillGap);//ɨÿεƫ + //תɨ + double Angle = _360ToAngle(m_FillPar.m_FillAngle); + Pt1 = RotatoPt(Pt1,Angle,CenterPt); + Pt2 = RotatoPt(Pt2,Angle,CenterPt); + Pt = RotatoPt(Pt,Angle,CenterPt); + + double len = CalDistance(Dbxy(rect.L,rect.T),Dbxy(rect.R,rect.B)); + ScanTimes = len/m_FillPar.m_FillGap; + //ÿɨߵƫ + Offset.x = Pt.x - Pt1.x; + Offset.y = Pt.y - Pt1.y; +} +//߶κDbxy pt1,Dbxy pt2 ߶εĽ(浽IntersectionVec) +//Ҫrect Χ +bool CObjFill::GetIntersection(vector> &LinesVec,Dbxy pt1,Dbxy pt2,vector &IntersectionVec,DbRect rect) +{ + IntersectionVec.clear(); + + vector>::iterator iter = LinesVec.begin(); + vector>::iterator iter_end = LinesVec.end(); + for(;iter!=iter_end;iter++) + { + int size = (*iter).size(); + for(int i=0;i &IntersectionVec) +{ + if(m_FillPar.m_FillAngle<=45) + { + sort(IntersectionVec.begin(),IntersectionVec.end(),CompareDbxyByX); + } + else + { + sort(IntersectionVec.begin(),IntersectionVec.end(),CompareDbxyByY); + } +} +//ɨ +void CObjFill::SaveScanResult(vector &IntersectionVec) +{ + int size = IntersectionVec.size(); + int idx = 1; + for(int i=1;i &Vec); + virtual ~CObjFill(void); + void CreatFill(vector> &PtVec,DbRect rect); + void SetPar(SFillPar Par){m_FillPar = Par;}; +private: + void FillCloseArea(vector &PtVec,Dbxy pt1,Dbxy pt2,Dbxy Offset,int ScanTimes,DbRect rect); + void GetScanLine(DbRect rect,Dbxy &Pt1,Dbxy &Pt2,Dbxy &Offset,int &ScanTimes); + void SortIntersection(vector &IntersectionVec); + void SaveScanResult(vector &IntersectionVec); + bool GetIntersection(vector> &LinesVec,Dbxy pt1,Dbxy pt2,vector &IntersectionVec,DbRect rect); +private: + vector &m_SequentialPointVec;//һ߶ε + SFillPar m_FillPar;// +}; + diff --git a/LaiPuLaser/ObjGeometryPorp.cpp b/LaiPuLaser/ObjGeometryPorp.cpp new file mode 100644 index 0000000..9a47926 --- /dev/null +++ b/LaiPuLaser/ObjGeometryPorp.cpp @@ -0,0 +1,32 @@ +#include "StdAfx.h" +#include "ObjGeometryPorp.h" + +#define RADIUS 5//ڼľΰ뾶(Сν) +CObjGeometryPorp::CObjGeometryPorp(void) +{ +} +CObjGeometryPorp::~CObjGeometryPorp(void) +{ +} +//ʼε˳ +// 4---------3 +// | | +// | | +// 1---------2 +void CObjGeometryPorp::Ini() +{ + m_bMiirorH = false;//Ƿˮƽ + m_bMiirorV = false;//Ƿֱ + //ֻжֵ,ûбҪʵʵobj λöӦ + m_IniRect.Creat(Dbxy(0,0),RADIUS); + + m_PtContainer.DelAllPt(); + m_PtContainer.AddDataPoint(Dbxy(m_IniRect.L,m_IniRect.B)); + m_PtContainer.AddDataPoint(Dbxy(m_IniRect.R,m_IniRect.B)); + m_PtContainer.AddDataPoint(Dbxy(m_IniRect.R,m_IniRect.T)); + m_PtContainer.AddDataPoint(Dbxy(m_IniRect.L,m_IniRect.T)); +} +void CObjGeometryPorp::Operate(SObjOperatePar &par) +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/ObjGeometryPorp.h b/LaiPuLaser/ObjGeometryPorp.h new file mode 100644 index 0000000..c3c4f75 --- /dev/null +++ b/LaiPuLaser/ObjGeometryPorp.h @@ -0,0 +1,21 @@ +#pragma once +#include "GlobalDefine.h" +#include "DataPoint.h" +#include "SequentialPoint.h" +//ͨһobj ļ +//λ,,ת,б, +class CObjGeometryPorp +{ +public: + CObjGeometryPorp(void); + ~CObjGeometryPorp(void); + void Operate(SObjOperatePar &par); +private: + void Ini(); +private: + CSequentialPoint m_PtContainer;//εĸ + DbRect m_IniRect;//ʼľ + bool m_bMiirorH;//Ƿˮƽ + bool m_bMiirorV;//Ƿֱ +}; + diff --git a/LaiPuLaser/ObjPline.cpp b/LaiPuLaser/ObjPline.cpp new file mode 100644 index 0000000..cd721a6 --- /dev/null +++ b/LaiPuLaser/ObjPline.cpp @@ -0,0 +1,201 @@ +#include "StdAfx.h" +#include "ObjPline.h" +#include "GlobalDrawMgr.h" +#include "DataPoint.h" +#include "GlobalFunction.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "WorkFileMgr.h" + + + +CObjPline::CObjPline(void) +{ +} +CObjPline::~CObjPline(void) +{ +} +CString CObjPline::GetStr() +{ + CString str = "߶"; + return str; +} +CMFCPropertyGridProperty *CObjPline::CreatSpecialGridProperty(CModule *pModule) +{ + CString PropertyName;// + CString Description;// + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + //-------------------------------------------------------------------------------// + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CutOffset.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(pModule); + //ʾ + PropertyName = _T("иƫX"); + Description = _T("ڵиƫx(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_CutOffset.x, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CutOffset.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(pModule); + //ʾ + PropertyName = _T("иƫY"); + Description = _T("ڵиƫy(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_CutOffset.y, Description); + pGroup->AddSubItem(p1); + gDrawPropertieMgr.Insert(p1, pPropertie); + } + return pGroup; +} +void CObjPline::WriteWorkFileExt(vector &LabVec) +{ + CObjBase::WriteWorkFileExt(LabVec); + LabVec.push_back(CLab(LAB_OBJ_RECT_OFFSET_X,m_CutOffset.x)); + LabVec.push_back(CLab(LAB_OBJ_RECT_OFFSET_Y,m_CutOffset.y)); +} +void CObjPline::ReadWorkFileExt(CLabVecRang &LabVecRang) +{ + CObjBase::ReadWorkFileExt(LabVecRang); + + CWorkFileMgr WorkFileMgr; + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_OBJ_RECT_OFFSET_X); + if(Lab.m_ValType != _TYPE_NULL) + { + m_CutOffset.x = Lab.m_Double; + } + } + { + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_OBJ_RECT_OFFSET_Y); + if(Lab.m_ValType != _TYPE_NULL) + { + m_CutOffset.y = Lab.m_Double; + } + } +} +#if 1 +//ͨεʽ߶point1 ½ǵĵ +void CObjPline::Creat(Dbxy point1,double w,double h) +{ + //ɾݵ + DelAllPt(); + + Dbxy point2(point1.x+w,point1.y+h); + CreatRect(point1,point2); +} +//ֱ +void CObjPline::Creat(Dbxy point1,Dbxy point2) +{ + //ɾݵ + DelAllPt(); + { + CDataPoint DataPoint(point1); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + { + CDataPoint DataPoint(point2); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + AddMidNodePoint(point1,point2); +} +//һobj ߶εĺ(bReverse Ϊtrue ʱ) +void CObjPline::AddObj(Sptr &pObj,bool bReverse) +{ + if(bReverse) + { + vector&vec = pObj->GetPtContainer(); + int size = vec.size(); + for(int i=size-1;i>=0;i--) + { + AddDataPoint(vec[i]); + } + } + else + { + vector&vec = pObj->GetPtContainer(); + int size = vec.size(); + for(int i=0;i&vec = GetPtContainer(); + int size = vec.size(); + for(int i=0;i0) + { + AddMidNodePoint(vec[i-1].GetPt(),vec[i].GetPt()); + } + } +} +//һмڵ׽ +void CObjPline::AddMidNodePoint(Dbxy point1,Dbxy point2) +{ + Dbxy pt = CenterPtOfTwoPoint(point1,point2); + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddNodePt(DataPoint); +} +void CObjPline::CreatRect(DbRect rect) +{ + Dbxy point1(rect.L,rect.B); + Dbxy point2(rect.R,rect.T); + CreatRect(point1,point2); +} +void CObjPline::CreatRect(Dbxy point1,Dbxy point2) +{ + Dbxy pt = point1; + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + pt.y = point2.y; + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + AddMidNodePoint(point1,pt); + AddMidNodePoint(point2,pt); + pt = point2; + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + pt.y = point1.y; + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } + AddMidNodePoint(point1,pt); + AddMidNodePoint(point2,pt); + pt = point1; + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + AddDataPoint(DataPoint); + } +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/ObjPline.h b/LaiPuLaser/ObjPline.h new file mode 100644 index 0000000..e4c7833 --- /dev/null +++ b/LaiPuLaser/ObjPline.h @@ -0,0 +1,30 @@ +#pragma once +#include "ObjBase.h" +#include "SmartPtr.h" + +//߶ +class CObjPline :public CObjBase +{ +public: + CObjPline(void); + ~CObjPline(void); + virtual CObjPline * Clone(){return new CObjPline(*this);}; + virtual CString GetStr(); + virtual OBJ_TYPE GetType(){return _TYPE_PLINE;}; + virtual CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFileExt(CLabVecRang &LabVecRang); +public: + void Creat(Dbxy point1,double w,double h); + void Creat(Dbxy point1,Dbxy point2); + void Clone(CObjPline *p); + void CreatMidNode(); + void AddObj(Sptr &pObj,bool bReverse); + void CreatRect(DbRect rect); +private: + void CreatRect(Dbxy point1,Dbxy point2); + void AddMidNodePoint(Dbxy point1,Dbxy point2); +private: + +}; + diff --git a/LaiPuLaser/ObjPoint.cpp b/LaiPuLaser/ObjPoint.cpp new file mode 100644 index 0000000..a361fc7 --- /dev/null +++ b/LaiPuLaser/ObjPoint.cpp @@ -0,0 +1,68 @@ +#include "StdAfx.h" +#include "ObjPoint.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" + +CObjPoint::CObjPoint(void) +{ +} +CObjPoint::~CObjPoint(void) +{ +} +CString CObjPoint::GetStr() +{ + CString str = ""; + return str; +} +#if 1 +void CObjPoint::WriteWorkFileExt(vector &LabVec) +{ + //ݵ + Dbxy pt = GetRect().GetCenterPt(); + LabVec.push_back(CLab(LAB_POINT_X,pt.x)); + LabVec.push_back(CLab(LAB_POINT_Y,pt.y)); +} +void CObjPoint::ReadWorkFileExt(CLabVecRang &LabVecRang) +{ + CWorkFileMgr WorkFileMgr; + Dbxy pt; + {//X + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_POINT_X); + if(Lab.m_ValType != _TYPE_NULL) + { + pt.x = Lab.m_Double; + } + } + {//Y + CLab Lab = WorkFileMgr.FindLab(LabVecRang,LAB_POINT_Y); + if(Lab.m_ValType != _TYPE_NULL) + { + pt.y = Lab.m_Double; + } + } + SetPt(pt); +} +#endif +void CObjPoint::Draw(CDC* pDC,CPen &Pen) +{ + DbRect Rect(GetRect().GetCenterPt(),gDraw->GetCatchNodeSize()*0.8); + DrawCrossX(pDC,Pen,Rect); +} +void CObjPoint::SetPt(Dbxy pt) +{ + //ڲĵ + double gap = 0.01; + CDataPoint DataPoint1(Dbxy(pt.x-gap,pt.y+gap)); + CDataPoint DataPoint2(Dbxy(pt.x+gap,pt.y-gap)); + AddDataPoint(DataPoint1); + AddDataPoint(DataPoint2); +} +void CObjPoint::GetPtData(vector> &vec) +{ + Dbxy pt = GetRect().GetCenterPt(); + vector VecTmp; + VecTmp.push_back(pt); + vec.push_back(VecTmp); +} \ No newline at end of file diff --git a/LaiPuLaser/ObjPoint.h b/LaiPuLaser/ObjPoint.h new file mode 100644 index 0000000..0e1df6d --- /dev/null +++ b/LaiPuLaser/ObjPoint.h @@ -0,0 +1,17 @@ +#pragma once +#include "ObjBase.h" +class CObjPoint :public CObjBase +{ +public: + CObjPoint(void); + ~CObjPoint(void); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFileExt(CLabVecRang &LabVecRang); + virtual CObjPoint * Clone(){return new CObjPoint(*this);}; + virtual CString GetStr(); + virtual OBJ_TYPE GetType(){return _TYPE_POINT;}; + virtual void Draw(CDC* pDC,CPen &Pen); + virtual void GetPtData(vector> &vec); + void SetPt(Dbxy pt); +}; + diff --git a/LaiPuLaser/ObjSortMgr.cpp b/LaiPuLaser/ObjSortMgr.cpp new file mode 100644 index 0000000..cc7f5a1 --- /dev/null +++ b/LaiPuLaser/ObjSortMgr.cpp @@ -0,0 +1,265 @@ +#include "StdAfx.h" +#include "ObjSortMgr.h" +#include "ObjContainer.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "ObjPoint.h" + + +#if 1//ú +bool CompareDouble1(double val1,double val2) +{ + return val1>val2; +} +bool CompareDouble2(double val1,double val2) +{ + return val1 &Obj1,Sptr &Obj2) +{ + Dbxy pt1 = Obj1->GetCenterPt(); + Dbxy pt2 = Obj2->GetCenterPt(); + return pt1.x>pt2.x; +} +bool CompareObjX2(Sptr &Obj1,Sptr &Obj2) +{ + Dbxy pt1 = Obj1->GetCenterPt(); + Dbxy pt2 = Obj2->GetCenterPt(); + return pt1.x &Obj1,Sptr &Obj2) +{ + Dbxy pt1 = Obj1->GetCenterPt(); + Dbxy pt2 = Obj2->GetCenterPt(); + return pt1.y>pt2.y; +} +bool CompareObjY2(Sptr &Obj1,Sptr &Obj2) +{ + Dbxy pt1 = Obj1->GetCenterPt(); + Dbxy pt2 = Obj2->GetCenterPt(); + return pt1.y> &LayerObjVec = LayerObjContainer.GetObjVec(); + //ѡͷѡobj ͬ + vector> SelObjVec; + vector> NotSelObjVec; + SeparateSelObj(LayerObjVec,SelObjVec,NotSelObjVec); + + if(SelObjVec.empty()) + return; + + //ѡobj + SortObjVec(SelObjVec); + + //Żԭ + LayerObjVec.clear(); + PushToObjVec(LayerObjVec,SelObjVec); + PushToObjVec(LayerObjVec,NotSelObjVec); + + //ɾظĵ + CObjContainer &ObjContainer = layer.GetObjContainer(); + //ObjContainer.DelSamePointObj(); +} +//ѡͷѡobj ͬ +void CObjSortMgr::SeparateSelObj(vector> &ObjVec,vector> &SelObjVec,vector> &NotSelObjVec) +{ + vector>::iterator iter = ObjVec.begin(); + vector>::iterator iter_end = ObjVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter)->IsSelected()) + SelObjVec.push_back(*iter); + else + NotSelObjVec.push_back(*iter); + } +} +//ŻԭObjVec2---->ObjVec1 +void CObjSortMgr::PushToObjVec(vector> &ObjVec1,vector> &ObjVec2) +{ + vector>::iterator iter = ObjVec2.begin(); + vector>::iterator iter_end = ObjVec2.end(); + for(;iter!=iter_end;iter++) + { + ObjVec1.push_back(*iter); + } + +} +//Ƿɨ +bool CObjSortMgr::IsHorizontalScan() +{ + if(m_ScanDir == _DIR_L || m_ScanDir == _DIR_R) + return true; + return false; +} +//ǷΪɨ +bool CObjSortMgr::IsForwardDirection() +{ + if(m_ScanDir == _DIR_R || m_ScanDir == _DIR_D) + return true; + return false; +} +#endif +#if 1 +//еobj (Ͱ˼·) +void CObjSortMgr::SortObjVec(vector> &ObjVec) +{ + vector>> BucketVec;//Ͱ(ÿͰĵһobj ʾͰ) + //Ͱ + CreatBucketVec(BucketVec,ObjVec); + //ѼͰobj + CollectBucketObj(BucketVec,ObjVec); + //ÿͰ + BucketSort(BucketVec); + //Ͱobj ObjVec + BucketToObjVec(BucketVec,ObjVec); +} +//Ͱ +void CObjSortMgr::CreatBucketVec(vector>> &BucketVec,vector> &ObjVec) +{ + //Ͱ׼ + vector BucketBaseCoordVec; + CreatBucketBaseCoordVec(BucketBaseCoordVec,ObjVec); + + //Ͱ׼ + if(IsForwardDirection()) + sort(BucketBaseCoordVec.begin(),BucketBaseCoordVec.end(),CompareDouble1); + else + sort(BucketBaseCoordVec.begin(),BucketBaseCoordVec.end(),CompareDouble2); + + //ݻ׼㴴Ͱ + vector::iterator iter = BucketBaseCoordVec.begin(); + vector::iterator iter_end = BucketBaseCoordVec.end(); + for(;iter!=iter_end;iter++) + { + //ÿͰĵһobj Ϊ׼ + CObjPoint *p = new CObjPoint; + p->SetPt(Dbxy((*iter),(*iter)));//x yΪһ,Ͳַ + //浽ָ + Sptr sPtr(p); + vector> Bucket;//һͰ + Bucket.push_back(sPtr); + BucketVec.push_back(Bucket); + } +} +//Ͱ׼(ֺ) +void CObjSortMgr::CreatBucketBaseCoordVec(vector &BucketBaseCoordVec,vector> &ObjVec) +{ + vector>::iterator iter = ObjVec.begin(); + vector>::iterator iter_end = ObjVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt = (*iter)->GetCenterPt();//obj ĵ + double Val = IsHorizontalScan()?pt.x:pt.y; + + bool bFlg = true;//ǷҪ + int size = BucketBaseCoordVec.size(); + for(int k=0;k>> &BucketVec,vector> &ObjVec) +{ + vector>>::iterator iter = BucketVec.begin(); + vector>>::iterator iter_end = BucketVec.end(); + for(;iter!=iter_end;iter++) + { + vector> &Bucket = (*iter); + Dbxy BasePt = Bucket[0]->GetCenterPt(); + double BaseVal = IsHorizontalScan()?BasePt.x:BasePt.y;//׼ֵ + Bucket.clear();//׼obj + + vector>::iterator ObjIter = ObjVec.begin(); + vector>::iterator ObjIter_end = ObjVec.end(); + for(;ObjIter!=ObjIter_end;ObjIter++) + { + Sptr &Obj = (*ObjIter); + if(!Obj->IsbCollected())//ظռ + { + Dbxy ObjPt = Obj->GetCenterPt(); + double ObjVal = IsHorizontalScan()?ObjPt.x:ObjPt.y;//Ƚֵ + if(IsTwoDbEqual(BaseVal,ObjVal,BUCKET_EPS))//Ͱobj + { + Bucket.push_back(Obj); + Obj->SetbCollected(true);//ռ״̬ + } + } + } + } +} +//ÿͰ +void CObjSortMgr::BucketSort(vector>> &BucketVec) +{ + bool bDir = true;//S + vector>>::iterator iter = BucketVec.begin(); + vector>>::iterator iter_end = BucketVec.end(); + for(;iter!=iter_end;iter++) + { + vector> &Bucket = (*iter); + if(IsHorizontalScan())//ɨ谴Y + { + if(bDir) + sort(Bucket.begin(),Bucket.end(),CompareObjY1); + else + sort(Bucket.begin(),Bucket.end(),CompareObjY2); + } + else//ɨ谴X + { + if(bDir) + sort(Bucket.begin(),Bucket.end(),CompareObjX1); + else + sort(Bucket.begin(),Bucket.end(),CompareObjX2); + } + bDir =!bDir;// + } +} +//Ͱobj ObjVec +void CObjSortMgr::BucketToObjVec(vector>> &BucketVec,vector> &ObjVec) +{ + ObjVec.clear(); + vector>>::iterator iter = BucketVec.begin(); + vector>>::iterator iter_end = BucketVec.end(); + for(;iter!=iter_end;iter++) + { + vector> &Bucket = (*iter); + vector>::iterator BucketIter = Bucket.begin(); + vector>::iterator BuckeIter_end = Bucket.end(); + for(;BucketIter!=BuckeIter_end;BucketIter++) + { + ObjVec.push_back(*BucketIter); + } + } +} + +#endif diff --git a/LaiPuLaser/ObjSortMgr.h b/LaiPuLaser/ObjSortMgr.h new file mode 100644 index 0000000..f3241e6 --- /dev/null +++ b/LaiPuLaser/ObjSortMgr.h @@ -0,0 +1,31 @@ +#pragma once +#include "EnumDirection.h" +#include "GlobalDefine.h" +#include "SmartPtr.h" +#include "ObjBase.h" + + + +// +class CObjSortMgr +{ +public: + CObjSortMgr(void); + ~CObjSortMgr(void); + void SortObjByDir(DIRECTION dir); +private: + void SeparateSelObj(vector> &ObjVec,vector> &SelObjVec,vector> &NotSelObjVec); + void SortObjVec(vector> &SelObjVec); + void PushToObjVec(vector> &ObjVec1,vector> &ObjVec2); + void CreatBucketVec(vector>> &BucketVec,vector> &ObjVec); + void CreatBucketBaseCoordVec(vector &BucketBaseCoordVec,vector> &ObjVec); + bool IsHorizontalScan(); + bool IsForwardDirection(); + void CollectBucketObj(vector>> &BucketVec,vector> &ObjVec); + void BucketToObjVec(vector>> &BucketVec,vector> &ObjVec); + void BucketSort(vector>> &BucketVec); +private: + DIRECTION m_ScanDir;//ɨķ + +}; + diff --git a/LaiPuLaser/ObjString.cpp b/LaiPuLaser/ObjString.cpp new file mode 100644 index 0000000..e9f0159 --- /dev/null +++ b/LaiPuLaser/ObjString.cpp @@ -0,0 +1,34 @@ +#include "StdAfx.h" +#include "ObjString.h" +#include "FontTypeMgr.h" + +CObjString::CObjString(void) +{ +} + +CObjString::~CObjString(void) +{ +} +CObjString::CObjString(CObjString &rhs) +:CObjComposite(rhs) +{ + m_ValStr.Copy(rhs.m_ValStr); + m_FontTypeName = rhs.m_FontTypeName; + m_FontName = rhs.m_FontName; +} +//ÿɱıĿ +void CObjString::GetValStrCopy(CValString &ValStr) +{ + ValStr.Copy(m_ValStr); +} +void CObjString::SetValStr(CValString &ValStr) +{ + m_ValStr.Copy(ValStr); +} +//浱ǰϵͳ +void CObjString::SetUseCurFontName() +{ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + SetFontTypeName(pFontTypeMgr.GetCurFontTypeName()); + SetFontName(pFontTypeMgr.GetCurFontName()); +} \ No newline at end of file diff --git a/LaiPuLaser/ObjString.h b/LaiPuLaser/ObjString.h new file mode 100644 index 0000000..beff18f --- /dev/null +++ b/LaiPuLaser/ObjString.h @@ -0,0 +1,26 @@ +#pragma once +#include "ObjComposite.h" +#include "ValString.h" + +class CObjString :public CObjComposite +{ +public: + CObjString(void); + virtual ~CObjString(void); + virtual OBJ_TYPE GetType(){return _TYPE_STR;}; + CObjString(CObjString &rhs); + void GetValStrCopy(CValString &ValStr); + void SetValStr(CValString &ValStr); + void SetUseCurFontName(); + void SetFontTypeName(CString str){m_FontTypeName = str;}; + void SetFontName(CString str){m_FontName = str;}; + CString GetFontTypeName(){return m_FontTypeName;}; + CString GetFontName(){return m_FontName;}; +protected: + //滻ı + CValString m_ValStr; + //ֻ֣ǰûٸΪǰĬ + CString m_FontTypeName;//͵ + CString m_FontName;// +}; + diff --git a/LaiPuLaser/ObjTxt.cpp b/LaiPuLaser/ObjTxt.cpp new file mode 100644 index 0000000..04237b1 --- /dev/null +++ b/LaiPuLaser/ObjTxt.cpp @@ -0,0 +1,270 @@ +#include "StdAfx.h" +#include "ObjTxt.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "FontTypeMgr.h" + +CObjTxt::CObjTxt(void) +{ +} + +CObjTxt::~CObjTxt(void) +{ +} +CObjTxt::CObjTxt(CObjTxt &rhs) +:CObjString(rhs) +{ + m_FontPar = rhs.m_FontPar; + CreatExt(); +} +CString CObjTxt::GetStr() +{ + CString str = "ַ"; + return str; +} +//󶨵Ի +void CObjTxt::BindingDlg() +{ +#ifdef __DLG_PANE_VAR_STRING__ + GetFrame()->m_DlgVariableString.BindingObjString(this); +#endif +} +void CObjTxt::CreatExt() +{ + // + m_ObjContainer.Clear(); + //ȡַ + CString Str = GetCurString(); + // + MakeReverse(Str); + //ȡַݵm_ObjContainer + GetEachCharData(Str); + //ַȣ߶ + AdjustWidthHeight(); + //ַ + AdjustGap(); + // + MakeOutDir(); + //бĽǶ + AdjustItalic(); + //Բı + AdjustArcTxt(); + //ָ֮ǰ״̬ + RecoverPerState(); +} +#if 1 +//ȡǰı +CString CObjTxt::GetCurString() +{ + //ɱı + m_ValStr.UpdateValStr(); + return m_ValStr.GetString(); +} +//ȡַ +void CObjTxt::GetEachCharData(CString Str) +{ + //ȱɵ + CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); + CString OldFontTypeName = pFontTypeMgr.GetCurFontTypeName(); + CString OldFontName = pFontTypeMgr.GetCurFontName(); + //õǰѡõ + pFontTypeMgr.SetCurFontByName(m_FontTypeName,m_FontName); + + const char* pStr=(const char*)(Str); + int StrLen = strlen(pStr); + while(StrLen>0) + { + unsigned char char1,char2; + char Char[3]; + char1 = *pStr; + char2 = *(pStr+1); + if(char1>160 && char2>160)//λһ + { + strncpy(Char,pStr,2); + Char[2]='\0'; + pStr += 2; + StrLen -= 2; + } + else//һλһĸ + { + strncpy(Char,pStr,1); + Char[1]='\0'; + pStr += 1; + StrLen -= 1; + } + CObjChar *p = new CObjChar(Char); + p->Creat(); + m_ObjContainer.AddObject(p); + } + + //ԭɵ + pFontTypeMgr.SetCurFontByName(OldFontTypeName,OldFontName); +} +// +void CObjTxt::MakeReverse(CString &Str) +{ + if(m_FontPar.m_bReverse) + { + Str.MakeReverse(); + } +} +// +void CObjTxt::MakeOutDir() +{ + if(m_FontPar.m_bOutDir) + { + DbRect rect = m_ObjContainer.GetObjRect(false); + SObjOperatePar par; + par.OpType = _OP_MIRROR; + par.BasePt = rect.GetCenterPt(); + par.xy = _Y; + m_ObjContainer.OperateObj(par,false); + } +} +#endif +#if 1// +//ַȣ߶ +void CObjTxt::AdjustWidthHeight() +{ + DbRect rect = m_ObjContainer.GetObjRect(false); + double Scale = m_FontPar.m_CharHeight/rect.GetSize().h; + + //ȷű + SObjOperatePar par; + par.OpType = _OP_SCALE; + par.Scale = Scale; + + int size = m_ObjContainer.GetSize(); + for(int i=0;i 0 \f$). + +![](pics/distortion_examples.png) +![](pics/distortion_examples2.png) + +In some cases the image sensor may be tilted in order to focus an oblique plane in front of the +camera (Scheimpfug condition). This can be useful for particle image velocimetry (PIV) or +triangulation with a laser fan. The tilt causes a perspective distortion of \f$x''\f$ and +\f$y''\f$. This distortion can be modelled in the following way, see e.g. @cite Louhichi07. + +\f[\begin{array}{l} +s\vecthree{x'''}{y'''}{1} = +\vecthreethree{R_{33}(\tau_x, \tau_y)}{0}{-R_{13}(\tau_x, \tau_y)} +{0}{R_{33}(\tau_x, \tau_y)}{-R_{23}(\tau_x, \tau_y)} +{0}{0}{1} R(\tau_x, \tau_y) \vecthree{x''}{y''}{1}\\ +u = f_x*x''' + c_x \\ +v = f_y*y''' + c_y +\end{array}\f] + +where the matrix \f$R(\tau_x, \tau_y)\f$ is defined by two rotations with angular parameter \f$\tau_x\f$ +and \f$\tau_y\f$, respectively, + +\f[ +R(\tau_x, \tau_y) = +\vecthreethree{\cos(\tau_y)}{0}{-\sin(\tau_y)}{0}{1}{0}{\sin(\tau_y)}{0}{\cos(\tau_y)} +\vecthreethree{1}{0}{0}{0}{\cos(\tau_x)}{\sin(\tau_x)}{0}{-\sin(\tau_x)}{\cos(\tau_x)} = +\vecthreethree{\cos(\tau_y)}{\sin(\tau_y)\sin(\tau_x)}{-\sin(\tau_y)\cos(\tau_x)} +{0}{\cos(\tau_x)}{\sin(\tau_x)} +{\sin(\tau_y)}{-\cos(\tau_y)\sin(\tau_x)}{\cos(\tau_y)\cos(\tau_x)}. +\f] + +In the functions below the coefficients are passed or returned as + +\f[(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f] + +vector. That is, if the vector contains four elements, it means that \f$k_3=0\f$ . The distortion +coefficients do not depend on the scene viewed. Thus, they also belong to the intrinsic camera +parameters. And they remain the same regardless of the captured image resolution. If, for example, a +camera has been calibrated on images of 320 x 240 resolution, absolutely the same distortion +coefficients can be used for 640 x 480 images from the same camera while \f$f_x\f$, \f$f_y\f$, \f$c_x\f$, and +\f$c_y\f$ need to be scaled appropriately. + +The functions below use the above model to do the following: + +- Project 3D points to the image plane given intrinsic and extrinsic parameters. +- Compute extrinsic parameters given intrinsic parameters, a few 3D points, and their +projections. +- Estimate intrinsic and extrinsic camera parameters from several views of a known calibration +pattern (every view is described by several 3D-2D point correspondences). +- Estimate the relative position and orientation of the stereo camera "heads" and compute the +*rectification* transformation that makes the camera optical axes parallel. + +@note + - A calibration sample for 3 cameras in horizontal position can be found at + opencv_source_code/samples/cpp/3calibration.cpp + - A calibration sample based on a sequence of images can be found at + opencv_source_code/samples/cpp/calibration.cpp + - A calibration sample in order to do 3D reconstruction can be found at + opencv_source_code/samples/cpp/build3dmodel.cpp + - A calibration example on stereo calibration can be found at + opencv_source_code/samples/cpp/stereo_calib.cpp + - A calibration example on stereo matching can be found at + opencv_source_code/samples/cpp/stereo_match.cpp + - (Python) A camera calibration sample can be found at + opencv_source_code/samples/python/calibrate.py + + @{ + @defgroup calib3d_fisheye Fisheye camera model + + Definitions: Let P be a point in 3D of coordinates X in the world reference frame (stored in the + matrix X) The coordinate vector of P in the camera reference frame is: + + \f[Xc = R X + T\f] + + where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); call x, y + and z the 3 coordinates of Xc: + + \f[x = Xc_1 \\ y = Xc_2 \\ z = Xc_3\f] + + The pinhole projection coordinates of P is [a; b] where + + \f[a = x / z \ and \ b = y / z \\ r^2 = a^2 + b^2 \\ \theta = atan(r)\f] + + Fisheye distortion: + + \f[\theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8)\f] + + The distorted point coordinates are [x'; y'] where + + \f[x' = (\theta_d / r) a \\ y' = (\theta_d / r) b \f] + + Finally, conversion into pixel coordinates: The final pixel coordinates vector [u; v] where: + + \f[u = f_x (x' + \alpha y') + c_x \\ + v = f_y y' + c_y\f] + + @defgroup calib3d_c C API + + @} + */ + +namespace cv +{ + +//! @addtogroup calib3d +//! @{ + +//! type of the robust estimation algorithm +enum { LMEDS = 4, //!< least-median of squares algorithm + RANSAC = 8, //!< RANSAC algorithm + RHO = 16 //!< RHO algorithm + }; + +enum { SOLVEPNP_ITERATIVE = 0, + SOLVEPNP_EPNP = 1, //!< EPnP: Efficient Perspective-n-Point Camera Pose Estimation @cite lepetit2009epnp + SOLVEPNP_P3P = 2, //!< Complete Solution Classification for the Perspective-Three-Point Problem @cite gao2003complete + SOLVEPNP_DLS = 3, //!< A Direct Least-Squares (DLS) Method for PnP @cite hesch2011direct + SOLVEPNP_UPNP = 4, //!< Exhaustive Linearization for Robust Camera Pose and Focal Length Estimation @cite penate2013exhaustive + SOLVEPNP_AP3P = 5, //!< An Efficient Algebraic Solution to the Perspective-Three-Point Problem @cite Ke17 + SOLVEPNP_MAX_COUNT //!< Used for count +}; + +enum { CALIB_CB_ADAPTIVE_THRESH = 1, + CALIB_CB_NORMALIZE_IMAGE = 2, + CALIB_CB_FILTER_QUADS = 4, + CALIB_CB_FAST_CHECK = 8, + CALIB_CB_EXHAUSTIVE = 16, + CALIB_CB_ACCURACY = 32 + }; + +enum { CALIB_CB_SYMMETRIC_GRID = 1, + CALIB_CB_ASYMMETRIC_GRID = 2, + CALIB_CB_CLUSTERING = 4 + }; + +enum { CALIB_NINTRINSIC = 18, + CALIB_USE_INTRINSIC_GUESS = 0x00001, + CALIB_FIX_ASPECT_RATIO = 0x00002, + CALIB_FIX_PRINCIPAL_POINT = 0x00004, + CALIB_ZERO_TANGENT_DIST = 0x00008, + CALIB_FIX_FOCAL_LENGTH = 0x00010, + CALIB_FIX_K1 = 0x00020, + CALIB_FIX_K2 = 0x00040, + CALIB_FIX_K3 = 0x00080, + CALIB_FIX_K4 = 0x00800, + CALIB_FIX_K5 = 0x01000, + CALIB_FIX_K6 = 0x02000, + CALIB_RATIONAL_MODEL = 0x04000, + CALIB_THIN_PRISM_MODEL = 0x08000, + CALIB_FIX_S1_S2_S3_S4 = 0x10000, + CALIB_TILTED_MODEL = 0x40000, + CALIB_FIX_TAUX_TAUY = 0x80000, + CALIB_USE_QR = 0x100000, //!< use QR instead of SVD decomposition for solving. Faster but potentially less precise + CALIB_FIX_TANGENT_DIST = 0x200000, + // only for stereo + CALIB_FIX_INTRINSIC = 0x00100, + CALIB_SAME_FOCAL_LENGTH = 0x00200, + // for stereo rectification + CALIB_ZERO_DISPARITY = 0x00400, + CALIB_USE_LU = (1 << 17), //!< use LU instead of SVD decomposition for solving. much faster but potentially less precise + CALIB_USE_EXTRINSIC_GUESS = (1 << 22) //!< for stereoCalibrate + }; + +//! the algorithm for finding fundamental matrix +enum { FM_7POINT = 1, //!< 7-point algorithm + FM_8POINT = 2, //!< 8-point algorithm + FM_LMEDS = 4, //!< least-median algorithm. 7-point algorithm is used. + FM_RANSAC = 8 //!< RANSAC algorithm. It needs at least 15 points. 7-point algorithm is used. + }; + +enum HandEyeCalibrationMethod +{ + CALIB_HAND_EYE_TSAI = 0, //!< A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration @cite Tsai89 + CALIB_HAND_EYE_PARK = 1, //!< Robot Sensor Calibration: Solving AX = XB on the Euclidean Group @cite Park94 + CALIB_HAND_EYE_HORAUD = 2, //!< Hand-eye Calibration @cite Horaud95 + CALIB_HAND_EYE_ANDREFF = 3, //!< On-line Hand-Eye Calibration @cite Andreff99 + CALIB_HAND_EYE_DANIILIDIS = 4 //!< Hand-Eye Calibration Using Dual Quaternions @cite Daniilidis98 +}; + + +/** @brief Converts a rotation matrix to a rotation vector or vice versa. + +@param src Input rotation vector (3x1 or 1x3) or rotation matrix (3x3). +@param dst Output rotation matrix (3x3) or rotation vector (3x1 or 1x3), respectively. +@param jacobian Optional output Jacobian matrix, 3x9 or 9x3, which is a matrix of partial +derivatives of the output array components with respect to the input array components. + +\f[\begin{array}{l} \theta \leftarrow norm(r) \\ r \leftarrow r/ \theta \\ R = \cos{\theta} I + (1- \cos{\theta} ) r r^T + \sin{\theta} \vecthreethree{0}{-r_z}{r_y}{r_z}{0}{-r_x}{-r_y}{r_x}{0} \end{array}\f] + +Inverse transformation can be also done easily, since + +\f[\sin ( \theta ) \vecthreethree{0}{-r_z}{r_y}{r_z}{0}{-r_x}{-r_y}{r_x}{0} = \frac{R - R^T}{2}\f] + +A rotation vector is a convenient and most compact representation of a rotation matrix (since any +rotation matrix has just 3 degrees of freedom). The representation is used in the global 3D geometry +optimization procedures like calibrateCamera, stereoCalibrate, or solvePnP . + */ +CV_EXPORTS_W void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() ); + +/** @example samples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cpp +An example program about pose estimation from coplanar points + +Check @ref tutorial_homography "the corresponding tutorial" for more details +*/ + +/** Levenberg-Marquardt solver. Starting with the specified vector of parameters it + optimizes the target vector criteria "err" + (finds local minima of each target vector component absolute value). + + When needed, it calls user-provided callback. +*/ +class CV_EXPORTS LMSolver : public Algorithm +{ +public: + class CV_EXPORTS Callback + { + public: + virtual ~Callback() {} + /** + computes error and Jacobian for the specified vector of parameters + + @param param the current vector of parameters + @param err output vector of errors: err_i = actual_f_i - ideal_f_i + @param J output Jacobian: J_ij = d(err_i)/d(param_j) + + when J=noArray(), it means that it does not need to be computed. + Dimensionality of error vector and param vector can be different. + The callback should explicitly allocate (with "create" method) each output array + (unless it's noArray()). + */ + virtual bool compute(InputArray param, OutputArray err, OutputArray J) const = 0; + }; + + /** + Runs Levenberg-Marquardt algorithm using the passed vector of parameters as the start point. + The final vector of parameters (whether the algorithm converged or not) is stored at the same + vector. The method returns the number of iterations used. If it's equal to the previously specified + maxIters, there is a big chance the algorithm did not converge. + + @param param initial/final vector of parameters. + + Note that the dimensionality of parameter space is defined by the size of param vector, + and the dimensionality of optimized criteria is defined by the size of err vector + computed by the callback. + */ + virtual int run(InputOutputArray param) const = 0; + + /** + Sets the maximum number of iterations + @param maxIters the number of iterations + */ + virtual void setMaxIters(int maxIters) = 0; + /** + Retrieves the current maximum number of iterations + */ + virtual int getMaxIters() const = 0; + + /** + Creates Levenberg-Marquard solver + + @param cb callback + @param maxIters maximum number of iterations that can be further + modified using setMaxIters() method. + */ + static Ptr create(const Ptr& cb, int maxIters); +}; + +/** @brief Finds a perspective transformation between two planes. + +@param srcPoints Coordinates of the points in the original plane, a matrix of the type CV_32FC2 +or vector\ . +@param dstPoints Coordinates of the points in the target plane, a matrix of the type CV_32FC2 or +a vector\ . +@param method Method used to compute a homography matrix. The following methods are possible: +- **0** - a regular method using all the points, i.e., the least squares method +- **RANSAC** - RANSAC-based robust method +- **LMEDS** - Least-Median robust method +- **RHO** - PROSAC-based robust method +@param ransacReprojThreshold Maximum allowed reprojection error to treat a point pair as an inlier +(used in the RANSAC and RHO methods only). That is, if +\f[\| \texttt{dstPoints} _i - \texttt{convertPointsHomogeneous} ( \texttt{H} * \texttt{srcPoints} _i) \|_2 > \texttt{ransacReprojThreshold}\f] +then the point \f$i\f$ is considered as an outlier. If srcPoints and dstPoints are measured in pixels, +it usually makes sense to set this parameter somewhere in the range of 1 to 10. +@param mask Optional output mask set by a robust method ( RANSAC or LMEDS ). Note that the input +mask values are ignored. +@param maxIters The maximum number of RANSAC iterations. +@param confidence Confidence level, between 0 and 1. + +The function finds and returns the perspective transformation \f$H\f$ between the source and the +destination planes: + +\f[s_i \vecthree{x'_i}{y'_i}{1} \sim H \vecthree{x_i}{y_i}{1}\f] + +so that the back-projection error + +\f[\sum _i \left ( x'_i- \frac{h_{11} x_i + h_{12} y_i + h_{13}}{h_{31} x_i + h_{32} y_i + h_{33}} \right )^2+ \left ( y'_i- \frac{h_{21} x_i + h_{22} y_i + h_{23}}{h_{31} x_i + h_{32} y_i + h_{33}} \right )^2\f] + +is minimized. If the parameter method is set to the default value 0, the function uses all the point +pairs to compute an initial homography estimate with a simple least-squares scheme. + +However, if not all of the point pairs ( \f$srcPoints_i\f$, \f$dstPoints_i\f$ ) fit the rigid perspective +transformation (that is, there are some outliers), this initial estimate will be poor. In this case, +you can use one of the three robust methods. The methods RANSAC, LMeDS and RHO try many different +random subsets of the corresponding point pairs (of four pairs each, collinear pairs are discarded), estimate the homography matrix +using this subset and a simple least-squares algorithm, and then compute the quality/goodness of the +computed homography (which is the number of inliers for RANSAC or the least median re-projection error for +LMeDS). The best subset is then used to produce the initial estimate of the homography matrix and +the mask of inliers/outliers. + +Regardless of the method, robust or not, the computed homography matrix is refined further (using +inliers only in case of a robust method) with the Levenberg-Marquardt method to reduce the +re-projection error even more. + +The methods RANSAC and RHO can handle practically any ratio of outliers but need a threshold to +distinguish inliers from outliers. The method LMeDS does not need any threshold but it works +correctly only when there are more than 50% of inliers. Finally, if there are no outliers and the +noise is rather small, use the default method (method=0). + +The function is used to find initial intrinsic and extrinsic matrices. Homography matrix is +determined up to a scale. Thus, it is normalized so that \f$h_{33}=1\f$. Note that whenever an \f$H\f$ matrix +cannot be estimated, an empty one will be returned. + +@sa +getAffineTransform, estimateAffine2D, estimateAffinePartial2D, getPerspectiveTransform, warpPerspective, +perspectiveTransform + */ +CV_EXPORTS_W Mat findHomography( InputArray srcPoints, InputArray dstPoints, + int method = 0, double ransacReprojThreshold = 3, + OutputArray mask=noArray(), const int maxIters = 2000, + const double confidence = 0.995); + +/** @overload */ +CV_EXPORTS Mat findHomography( InputArray srcPoints, InputArray dstPoints, + OutputArray mask, int method = 0, double ransacReprojThreshold = 3 ); + +/** @brief Computes an RQ decomposition of 3x3 matrices. + +@param src 3x3 input matrix. +@param mtxR Output 3x3 upper-triangular matrix. +@param mtxQ Output 3x3 orthogonal matrix. +@param Qx Optional output 3x3 rotation matrix around x-axis. +@param Qy Optional output 3x3 rotation matrix around y-axis. +@param Qz Optional output 3x3 rotation matrix around z-axis. + +The function computes a RQ decomposition using the given rotations. This function is used in +decomposeProjectionMatrix to decompose the left 3x3 submatrix of a projection matrix into a camera +and a rotation matrix. + +It optionally returns three rotation matrices, one for each axis, and the three Euler angles in +degrees (as the return value) that could be used in OpenGL. Note, there is always more than one +sequence of rotations about the three principal axes that results in the same orientation of an +object, e.g. see @cite Slabaugh . Returned tree rotation matrices and corresponding three Euler angles +are only one of the possible solutions. + */ +CV_EXPORTS_W Vec3d RQDecomp3x3( InputArray src, OutputArray mtxR, OutputArray mtxQ, + OutputArray Qx = noArray(), + OutputArray Qy = noArray(), + OutputArray Qz = noArray()); + +/** @brief Decomposes a projection matrix into a rotation matrix and a camera matrix. + +@param projMatrix 3x4 input projection matrix P. +@param cameraMatrix Output 3x3 camera matrix K. +@param rotMatrix Output 3x3 external rotation matrix R. +@param transVect Output 4x1 translation vector T. +@param rotMatrixX Optional 3x3 rotation matrix around x-axis. +@param rotMatrixY Optional 3x3 rotation matrix around y-axis. +@param rotMatrixZ Optional 3x3 rotation matrix around z-axis. +@param eulerAngles Optional three-element vector containing three Euler angles of rotation in +degrees. + +The function computes a decomposition of a projection matrix into a calibration and a rotation +matrix and the position of a camera. + +It optionally returns three rotation matrices, one for each axis, and three Euler angles that could +be used in OpenGL. Note, there is always more than one sequence of rotations about the three +principal axes that results in the same orientation of an object, e.g. see @cite Slabaugh . Returned +tree rotation matrices and corresponding three Euler angles are only one of the possible solutions. + +The function is based on RQDecomp3x3 . + */ +CV_EXPORTS_W void decomposeProjectionMatrix( InputArray projMatrix, OutputArray cameraMatrix, + OutputArray rotMatrix, OutputArray transVect, + OutputArray rotMatrixX = noArray(), + OutputArray rotMatrixY = noArray(), + OutputArray rotMatrixZ = noArray(), + OutputArray eulerAngles =noArray() ); + +/** @brief Computes partial derivatives of the matrix product for each multiplied matrix. + +@param A First multiplied matrix. +@param B Second multiplied matrix. +@param dABdA First output derivative matrix d(A\*B)/dA of size +\f$\texttt{A.rows*B.cols} \times {A.rows*A.cols}\f$ . +@param dABdB Second output derivative matrix d(A\*B)/dB of size +\f$\texttt{A.rows*B.cols} \times {B.rows*B.cols}\f$ . + +The function computes partial derivatives of the elements of the matrix product \f$A*B\f$ with regard to +the elements of each of the two input matrices. The function is used to compute the Jacobian +matrices in stereoCalibrate but can also be used in any other similar optimization function. + */ +CV_EXPORTS_W void matMulDeriv( InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB ); + +/** @brief Combines two rotation-and-shift transformations. + +@param rvec1 First rotation vector. +@param tvec1 First translation vector. +@param rvec2 Second rotation vector. +@param tvec2 Second translation vector. +@param rvec3 Output rotation vector of the superposition. +@param tvec3 Output translation vector of the superposition. +@param dr3dr1 +@param dr3dt1 +@param dr3dr2 +@param dr3dt2 +@param dt3dr1 +@param dt3dt1 +@param dt3dr2 +@param dt3dt2 Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and +tvec2, respectively. + +The functions compute: + +\f[\begin{array}{l} \texttt{rvec3} = \mathrm{rodrigues} ^{-1} \left ( \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \mathrm{rodrigues} ( \texttt{rvec1} ) \right ) \\ \texttt{tvec3} = \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \texttt{tvec1} + \texttt{tvec2} \end{array} ,\f] + +where \f$\mathrm{rodrigues}\f$ denotes a rotation vector to a rotation matrix transformation, and +\f$\mathrm{rodrigues}^{-1}\f$ denotes the inverse transformation. See Rodrigues for details. + +Also, the functions can compute the derivatives of the output vectors with regards to the input +vectors (see matMulDeriv ). The functions are used inside stereoCalibrate but can also be used in +your own code where Levenberg-Marquardt or another gradient-based solver is used to optimize a +function that contains a matrix multiplication. + */ +CV_EXPORTS_W void composeRT( InputArray rvec1, InputArray tvec1, + InputArray rvec2, InputArray tvec2, + OutputArray rvec3, OutputArray tvec3, + OutputArray dr3dr1 = noArray(), OutputArray dr3dt1 = noArray(), + OutputArray dr3dr2 = noArray(), OutputArray dr3dt2 = noArray(), + OutputArray dt3dr1 = noArray(), OutputArray dt3dt1 = noArray(), + OutputArray dt3dr2 = noArray(), OutputArray dt3dt2 = noArray() ); + +/** @brief Projects 3D points to an image plane. + +@param objectPoints Array of object points, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel (or +vector\ ), where N is the number of points in the view. +@param rvec Rotation vector. See Rodrigues for details. +@param tvec Translation vector. +@param cameraMatrix Camera matrix \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is empty, the zero distortion coefficients are assumed. +@param imagePoints Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or +vector\ . +@param jacobian Optional output 2Nx(10+\) jacobian matrix of derivatives of image +points with respect to components of the rotation vector, translation vector, focal lengths, +coordinates of the principal point and the distortion coefficients. In the old interface different +components of the jacobian are returned via different output parameters. +@param aspectRatio Optional "fixed aspect ratio" parameter. If the parameter is not 0, the +function assumes that the aspect ratio (*fx/fy*) is fixed and correspondingly adjusts the jacobian +matrix. + +The function computes projections of 3D points to the image plane given intrinsic and extrinsic +camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of +image points coordinates (as functions of all the input parameters) with respect to the particular +parameters, intrinsic and/or extrinsic. The Jacobians are used during the global optimization in +calibrateCamera, solvePnP, and stereoCalibrate . The function itself can also be used to compute a +re-projection error given the current intrinsic and extrinsic parameters. + +@note By setting rvec=tvec=(0,0,0) or by setting cameraMatrix to a 3x3 identity matrix, or by +passing zero distortion coefficients, you can get various useful partial cases of the function. This +means that you can compute the distorted coordinates for a sparse set of points or apply a +perspective transformation (and also compute the derivatives) in the ideal zero-distortion setup. + */ +CV_EXPORTS_W void projectPoints( InputArray objectPoints, + InputArray rvec, InputArray tvec, + InputArray cameraMatrix, InputArray distCoeffs, + OutputArray imagePoints, + OutputArray jacobian = noArray(), + double aspectRatio = 0 ); + +/** @example samples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cpp +An example program about homography from the camera displacement + +Check @ref tutorial_homography "the corresponding tutorial" for more details +*/ + +/** @brief Finds an object pose from 3D-2D point correspondences. + +@param objectPoints Array of object points in the object coordinate space, Nx3 1-channel or +1xN/Nx1 3-channel, where N is the number of points. vector\ can be also passed here. +@param imagePoints Array of corresponding image points, Nx2 1-channel or 1xN/Nx1 2-channel, +where N is the number of points. vector\ can be also passed here. +@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are +assumed. +@param rvec Output rotation vector (see @ref Rodrigues ) that, together with tvec , brings points from +the model coordinate system to the camera coordinate system. +@param tvec Output translation vector. +@param useExtrinsicGuess Parameter used for #SOLVEPNP_ITERATIVE. If true (1), the function uses +the provided rvec and tvec values as initial approximations of the rotation and translation +vectors, respectively, and further optimizes them. +@param flags Method for solving a PnP problem: +- **SOLVEPNP_ITERATIVE** Iterative method is based on Levenberg-Marquardt optimization. In +this case the function finds such a pose that minimizes reprojection error, that is the sum +of squared distances between the observed projections imagePoints and the projected (using +projectPoints ) objectPoints . +- **SOLVEPNP_P3P** Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang +"Complete Solution Classification for the Perspective-Three-Point Problem" (@cite gao2003complete). +In this case the function requires exactly four object and image points. +- **SOLVEPNP_AP3P** Method is based on the paper of T. Ke, S. Roumeliotis +"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17). +In this case the function requires exactly four object and image points. +- **SOLVEPNP_EPNP** Method has been introduced by F.Moreno-Noguer, V.Lepetit and P.Fua in the +paper "EPnP: Efficient Perspective-n-Point Camera Pose Estimation" (@cite lepetit2009epnp). +- **SOLVEPNP_DLS** Method is based on the paper of Joel A. Hesch and Stergios I. Roumeliotis. +"A Direct Least-Squares (DLS) Method for PnP" (@cite hesch2011direct). +- **SOLVEPNP_UPNP** Method is based on the paper of A.Penate-Sanchez, J.Andrade-Cetto, +F.Moreno-Noguer. "Exhaustive Linearization for Robust Camera Pose and Focal Length +Estimation" (@cite penate2013exhaustive). In this case the function also estimates the parameters \f$f_x\f$ and \f$f_y\f$ +assuming that both have the same value. Then the cameraMatrix is updated with the estimated +focal length. +- **SOLVEPNP_AP3P** Method is based on the paper of Tong Ke and Stergios I. Roumeliotis. +"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17). In this case the +function requires exactly four object and image points. + +The function estimates the object pose given a set of object points, their corresponding image +projections, as well as the camera matrix and the distortion coefficients, see the figure below +(more precisely, the X-axis of the camera frame is pointing to the right, the Y-axis downward +and the Z-axis forward). + +![](pnp.jpg) + +Points expressed in the world frame \f$ \bf{X}_w \f$ are projected into the image plane \f$ \left[ u, v \right] \f$ +using the perspective projection model \f$ \Pi \f$ and the camera intrinsic parameters matrix \f$ \bf{A} \f$: + +\f[ + \begin{align*} + \begin{bmatrix} + u \\ + v \\ + 1 + \end{bmatrix} &= + \bf{A} \hspace{0.1em} \Pi \hspace{0.2em} ^{c}\bf{M}_w + \begin{bmatrix} + X_{w} \\ + Y_{w} \\ + Z_{w} \\ + 1 + \end{bmatrix} \\ + \begin{bmatrix} + u \\ + v \\ + 1 + \end{bmatrix} &= + \begin{bmatrix} + f_x & 0 & c_x \\ + 0 & f_y & c_y \\ + 0 & 0 & 1 + \end{bmatrix} + \begin{bmatrix} + 1 & 0 & 0 & 0 \\ + 0 & 1 & 0 & 0 \\ + 0 & 0 & 1 & 0 + \end{bmatrix} + \begin{bmatrix} + r_{11} & r_{12} & r_{13} & t_x \\ + r_{21} & r_{22} & r_{23} & t_y \\ + r_{31} & r_{32} & r_{33} & t_z \\ + 0 & 0 & 0 & 1 + \end{bmatrix} + \begin{bmatrix} + X_{w} \\ + Y_{w} \\ + Z_{w} \\ + 1 + \end{bmatrix} + \end{align*} +\f] + +The estimated pose is thus the rotation (`rvec`) and the translation (`tvec`) vectors that allow to transform +a 3D point expressed in the world frame into the camera frame: + +\f[ + \begin{align*} + \begin{bmatrix} + X_c \\ + Y_c \\ + Z_c \\ + 1 + \end{bmatrix} &= + \hspace{0.2em} ^{c}\bf{M}_w + \begin{bmatrix} + X_{w} \\ + Y_{w} \\ + Z_{w} \\ + 1 + \end{bmatrix} \\ + \begin{bmatrix} + X_c \\ + Y_c \\ + Z_c \\ + 1 + \end{bmatrix} &= + \begin{bmatrix} + r_{11} & r_{12} & r_{13} & t_x \\ + r_{21} & r_{22} & r_{23} & t_y \\ + r_{31} & r_{32} & r_{33} & t_z \\ + 0 & 0 & 0 & 1 + \end{bmatrix} + \begin{bmatrix} + X_{w} \\ + Y_{w} \\ + Z_{w} \\ + 1 + \end{bmatrix} + \end{align*} +\f] + +@note + - An example of how to use solvePnP for planar augmented reality can be found at + opencv_source_code/samples/python/plane_ar.py + - If you are using Python: + - Numpy array slices won't work as input because solvePnP requires contiguous + arrays (enforced by the assertion using cv::Mat::checkVector() around line 55 of + modules/calib3d/src/solvepnp.cpp version 2.4.9) + - The P3P algorithm requires image points to be in an array of shape (N,1,2) due + to its calling of cv::undistortPoints (around line 75 of modules/calib3d/src/solvepnp.cpp version 2.4.9) + which requires 2-channel information. + - Thus, given some data D = np.array(...) where D.shape = (N,M), in order to use a subset of + it as, e.g., imagePoints, one must effectively copy it into a new array: imagePoints = + np.ascontiguousarray(D[:,:2]).reshape((N,1,2)) + - The methods **SOLVEPNP_DLS** and **SOLVEPNP_UPNP** cannot be used as the current implementations are + unstable and sometimes give completely wrong results. If you pass one of these two + flags, **SOLVEPNP_EPNP** method will be used instead. + - The minimum number of points is 4 in the general case. In the case of **SOLVEPNP_P3P** and **SOLVEPNP_AP3P** + methods, it is required to use exactly 4 points (the first 3 points are used to estimate all the solutions + of the P3P problem, the last one is used to retain the best solution that minimizes the reprojection error). + - With **SOLVEPNP_ITERATIVE** method and `useExtrinsicGuess=true`, the minimum number of points is 3 (3 points + are sufficient to compute a pose but there are up to 4 solutions). The initial solution should be close to the + global solution to converge. + */ +CV_EXPORTS_W bool solvePnP( InputArray objectPoints, InputArray imagePoints, + InputArray cameraMatrix, InputArray distCoeffs, + OutputArray rvec, OutputArray tvec, + bool useExtrinsicGuess = false, int flags = SOLVEPNP_ITERATIVE ); + +/** @brief Finds an object pose from 3D-2D point correspondences using the RANSAC scheme. + +@param objectPoints Array of object points in the object coordinate space, Nx3 1-channel or +1xN/Nx1 3-channel, where N is the number of points. vector\ can be also passed here. +@param imagePoints Array of corresponding image points, Nx2 1-channel or 1xN/Nx1 2-channel, +where N is the number of points. vector\ can be also passed here. +@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are +assumed. +@param rvec Output rotation vector (see Rodrigues ) that, together with tvec , brings points from +the model coordinate system to the camera coordinate system. +@param tvec Output translation vector. +@param useExtrinsicGuess Parameter used for SOLVEPNP_ITERATIVE. If true (1), the function uses +the provided rvec and tvec values as initial approximations of the rotation and translation +vectors, respectively, and further optimizes them. +@param iterationsCount Number of iterations. +@param reprojectionError Inlier threshold value used by the RANSAC procedure. The parameter value +is the maximum allowed distance between the observed and computed point projections to consider it +an inlier. +@param confidence The probability that the algorithm produces a useful result. +@param inliers Output vector that contains indices of inliers in objectPoints and imagePoints . +@param flags Method for solving a PnP problem (see solvePnP ). + +The function estimates an object pose given a set of object points, their corresponding image +projections, as well as the camera matrix and the distortion coefficients. This function finds such +a pose that minimizes reprojection error, that is, the sum of squared distances between the observed +projections imagePoints and the projected (using projectPoints ) objectPoints. The use of RANSAC +makes the function resistant to outliers. + +@note + - An example of how to use solvePNPRansac for object detection can be found at + opencv_source_code/samples/cpp/tutorial_code/calib3d/real_time_pose_estimation/ + - The default method used to estimate the camera pose for the Minimal Sample Sets step + is #SOLVEPNP_EPNP. Exceptions are: + - if you choose #SOLVEPNP_P3P or #SOLVEPNP_AP3P, these methods will be used. + - if the number of input points is equal to 4, #SOLVEPNP_P3P is used. + - The method used to estimate the camera pose using all the inliers is defined by the + flags parameters unless it is equal to #SOLVEPNP_P3P or #SOLVEPNP_AP3P. In this case, + the method #SOLVEPNP_EPNP will be used instead. + */ +CV_EXPORTS_W bool solvePnPRansac( InputArray objectPoints, InputArray imagePoints, + InputArray cameraMatrix, InputArray distCoeffs, + OutputArray rvec, OutputArray tvec, + bool useExtrinsicGuess = false, int iterationsCount = 100, + float reprojectionError = 8.0, double confidence = 0.99, + OutputArray inliers = noArray(), int flags = SOLVEPNP_ITERATIVE ); +/** @brief Finds an object pose from 3 3D-2D point correspondences. + +@param objectPoints Array of object points in the object coordinate space, 3x3 1-channel or +1x3/3x1 3-channel. vector\ can be also passed here. +@param imagePoints Array of corresponding image points, 3x2 1-channel or 1x3/3x1 2-channel. + vector\ can be also passed here. +@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are +assumed. +@param rvecs Output rotation vectors (see Rodrigues ) that, together with tvecs , brings points from +the model coordinate system to the camera coordinate system. A P3P problem has up to 4 solutions. +@param tvecs Output translation vectors. +@param flags Method for solving a P3P problem: +- **SOLVEPNP_P3P** Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang +"Complete Solution Classification for the Perspective-Three-Point Problem" (@cite gao2003complete). +- **SOLVEPNP_AP3P** Method is based on the paper of Tong Ke and Stergios I. Roumeliotis. +"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17). + +The function estimates the object pose given 3 object points, their corresponding image +projections, as well as the camera matrix and the distortion coefficients. + */ +CV_EXPORTS_W int solveP3P( InputArray objectPoints, InputArray imagePoints, + InputArray cameraMatrix, InputArray distCoeffs, + OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + int flags ); + +/** @brief Finds an initial camera matrix from 3D-2D point correspondences. + +@param objectPoints Vector of vectors of the calibration pattern points in the calibration pattern +coordinate space. In the old interface all the per-view vectors are concatenated. See +calibrateCamera for details. +@param imagePoints Vector of vectors of the projections of the calibration pattern points. In the +old interface all the per-view vectors are concatenated. +@param imageSize Image size in pixels used to initialize the principal point. +@param aspectRatio If it is zero or negative, both \f$f_x\f$ and \f$f_y\f$ are estimated independently. +Otherwise, \f$f_x = f_y * \texttt{aspectRatio}\f$ . + +The function estimates and returns an initial camera matrix for the camera calibration process. +Currently, the function only supports planar calibration patterns, which are patterns where each +object point has z-coordinate =0. + */ +CV_EXPORTS_W Mat initCameraMatrix2D( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints, + Size imageSize, double aspectRatio = 1.0 ); + +/** @brief Finds the positions of internal corners of the chessboard. + +@param image Source chessboard view. It must be an 8-bit grayscale or color image. +@param patternSize Number of inner corners per a chessboard row and column +( patternSize = cv::Size(points_per_row,points_per_colum) = cv::Size(columns,rows) ). +@param corners Output array of detected corners. +@param flags Various operation flags that can be zero or a combination of the following values: +- **CALIB_CB_ADAPTIVE_THRESH** Use adaptive thresholding to convert the image to black +and white, rather than a fixed threshold level (computed from the average image brightness). +- **CALIB_CB_NORMALIZE_IMAGE** Normalize the image gamma with equalizeHist before +applying fixed or adaptive thresholding. +- **CALIB_CB_FILTER_QUADS** Use additional criteria (like contour area, perimeter, +square-like shape) to filter out false quads extracted at the contour retrieval stage. +- **CALIB_CB_FAST_CHECK** Run a fast check on the image that looks for chessboard corners, +and shortcut the call if none is found. This can drastically speed up the call in the +degenerate condition when no chessboard is observed. + +The function attempts to determine whether the input image is a view of the chessboard pattern and +locate the internal chessboard corners. The function returns a non-zero value if all of the corners +are found and they are placed in a certain order (row by row, left to right in every row). +Otherwise, if the function fails to find all the corners or reorder them, it returns 0. For example, +a regular chessboard has 8 x 8 squares and 7 x 7 internal corners, that is, points where the black +squares touch each other. The detected coordinates are approximate, and to determine their positions +more accurately, the function calls cornerSubPix. You also may use the function cornerSubPix with +different parameters if returned coordinates are not accurate enough. + +Sample usage of detecting and drawing chessboard corners: : +@code + Size patternsize(8,6); //interior number of corners + Mat gray = ....; //source image + vector corners; //this will be filled by the detected corners + + //CALIB_CB_FAST_CHECK saves a lot of time on images + //that do not contain any chessboard corners + bool patternfound = findChessboardCorners(gray, patternsize, corners, + CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE + + CALIB_CB_FAST_CHECK); + + if(patternfound) + cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1), + TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1)); + + drawChessboardCorners(img, patternsize, Mat(corners), patternfound); +@endcode +@note The function requires white space (like a square-thick border, the wider the better) around +the board to make the detection more robust in various environments. Otherwise, if there is no +border and the background is dark, the outer black squares cannot be segmented properly and so the +square grouping and ordering algorithm fails. + */ +CV_EXPORTS_W bool findChessboardCorners( InputArray image, Size patternSize, OutputArray corners, + int flags = CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE ); + +/* + Checks whether the image contains chessboard of the specific size or not. + If yes, nonzero value is returned. +*/ +CV_EXPORTS_W bool checkChessboard(InputArray img, Size size); + +/** @brief Finds the positions of internal corners of the chessboard using a sector based approach. + +@param image Source chessboard view. It must be an 8-bit grayscale or color image. +@param patternSize Number of inner corners per a chessboard row and column +( patternSize = cv::Size(points_per_row,points_per_colum) = cv::Size(columns,rows) ). +@param corners Output array of detected corners. +@param flags Various operation flags that can be zero or a combination of the following values: +- **CALIB_CB_NORMALIZE_IMAGE** Normalize the image gamma with equalizeHist before detection. +- **CALIB_CB_EXHAUSTIVE ** Run an exhaustive search to improve detection rate. +- **CALIB_CB_ACCURACY ** Up sample input image to improve sub-pixel accuracy due to aliasing effects. +This should be used if an accurate camera calibration is required. + +The function is analog to findchessboardCorners but uses a localized radon +transformation approximated by box filters being more robust to all sort of +noise, faster on larger images and is able to directly return the sub-pixel +position of the internal chessboard corners. The Method is based on the paper +@cite duda2018 "Accurate Detection and Localization of Checkerboard Corners for +Calibration" demonstrating that the returned sub-pixel positions are more +accurate than the one returned by cornerSubPix allowing a precise camera +calibration for demanding applications. + +@note The function requires a white boarder with roughly the same width as one +of the checkerboard fields around the whole board to improve the detection in +various environments. In addition, because of the localized radon +transformation it is beneficial to use round corners for the field corners +which are located on the outside of the board. The following figure illustrates +a sample checkerboard optimized for the detection. However, any other checkerboard +can be used as well. +![Checkerboard](pics/checkerboard_radon.png) + */ +CV_EXPORTS_W bool findChessboardCornersSB(InputArray image,Size patternSize, OutputArray corners,int flags=0); + +//! finds subpixel-accurate positions of the chessboard corners +CV_EXPORTS bool find4QuadCornerSubpix( InputArray img, InputOutputArray corners, Size region_size ); + +/** @brief Renders the detected chessboard corners. + +@param image Destination image. It must be an 8-bit color image. +@param patternSize Number of inner corners per a chessboard row and column +(patternSize = cv::Size(points_per_row,points_per_column)). +@param corners Array of detected corners, the output of findChessboardCorners. +@param patternWasFound Parameter indicating whether the complete board was found or not. The +return value of findChessboardCorners should be passed here. + +The function draws individual chessboard corners detected either as red circles if the board was not +found, or as colored corners connected with lines if the board was found. + */ +CV_EXPORTS_W void drawChessboardCorners( InputOutputArray image, Size patternSize, + InputArray corners, bool patternWasFound ); + +/** @brief Draw axes of the world/object coordinate system from pose estimation. @sa solvePnP + +@param image Input/output image. It must have 1 or 3 channels. The number of channels is not altered. +@param cameraMatrix Input 3x3 floating-point matrix of camera intrinsic parameters. +\f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is empty, the zero distortion coefficients are assumed. +@param rvec Rotation vector (see @ref Rodrigues ) that, together with tvec , brings points from +the model coordinate system to the camera coordinate system. +@param tvec Translation vector. +@param length Length of the painted axes in the same unit than tvec (usually in meters). +@param thickness Line thickness of the painted axes. + +This function draws the axes of the world/object coordinate system w.r.t. to the camera frame. +OX is drawn in red, OY in green and OZ in blue. + */ +CV_EXPORTS_W void drawFrameAxes(InputOutputArray image, InputArray cameraMatrix, InputArray distCoeffs, + InputArray rvec, InputArray tvec, float length, int thickness=3); + +struct CV_EXPORTS_W_SIMPLE CirclesGridFinderParameters +{ + CV_WRAP CirclesGridFinderParameters(); + CV_PROP_RW cv::Size2f densityNeighborhoodSize; + CV_PROP_RW float minDensity; + CV_PROP_RW int kmeansAttempts; + CV_PROP_RW int minDistanceToAddKeypoint; + CV_PROP_RW int keypointScale; + CV_PROP_RW float minGraphConfidence; + CV_PROP_RW float vertexGain; + CV_PROP_RW float vertexPenalty; + CV_PROP_RW float existingVertexGain; + CV_PROP_RW float edgeGain; + CV_PROP_RW float edgePenalty; + CV_PROP_RW float convexHullFactor; + CV_PROP_RW float minRNGEdgeSwitchDist; + + enum GridType + { + SYMMETRIC_GRID, ASYMMETRIC_GRID + }; + GridType gridType; + + CV_PROP_RW float squareSize; //!< Distance between two adjacent points. Used by CALIB_CB_CLUSTERING. + CV_PROP_RW float maxRectifiedDistance; //!< Max deviation from predicion. Used by CALIB_CB_CLUSTERING. +}; + +#ifndef DISABLE_OPENCV_3_COMPATIBILITY +typedef CirclesGridFinderParameters CirclesGridFinderParameters2; +#endif + +/** @brief Finds centers in the grid of circles. + +@param image grid view of input circles; it must be an 8-bit grayscale or color image. +@param patternSize number of circles per row and column +( patternSize = Size(points_per_row, points_per_colum) ). +@param centers output array of detected centers. +@param flags various operation flags that can be one of the following values: +- **CALIB_CB_SYMMETRIC_GRID** uses symmetric pattern of circles. +- **CALIB_CB_ASYMMETRIC_GRID** uses asymmetric pattern of circles. +- **CALIB_CB_CLUSTERING** uses a special algorithm for grid detection. It is more robust to +perspective distortions but much more sensitive to background clutter. +@param blobDetector feature detector that finds blobs like dark circles on light background. +@param parameters struct for finding circles in a grid pattern. + +The function attempts to determine whether the input image contains a grid of circles. If it is, the +function locates centers of the circles. The function returns a non-zero value if all of the centers +have been found and they have been placed in a certain order (row by row, left to right in every +row). Otherwise, if the function fails to find all the corners or reorder them, it returns 0. + +Sample usage of detecting and drawing the centers of circles: : +@code + Size patternsize(7,7); //number of centers + Mat gray = ....; //source image + vector centers; //this will be filled by the detected centers + + bool patternfound = findCirclesGrid(gray, patternsize, centers); + + drawChessboardCorners(img, patternsize, Mat(centers), patternfound); +@endcode +@note The function requires white space (like a square-thick border, the wider the better) around +the board to make the detection more robust in various environments. + */ +CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize, + OutputArray centers, int flags, + const Ptr &blobDetector, + const CirclesGridFinderParameters& parameters); + +/** @overload */ +CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize, + OutputArray centers, int flags = CALIB_CB_SYMMETRIC_GRID, + const Ptr &blobDetector = SimpleBlobDetector::create()); + +/** @brief Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern. + +@param objectPoints In the new interface it is a vector of vectors of calibration pattern points in +the calibration pattern coordinate space (e.g. std::vector>). The outer +vector contains as many elements as the number of the pattern views. If the same calibration pattern +is shown in each view and it is fully visible, all the vectors will be the same. Although, it is +possible to use partially occluded patterns, or even different patterns in different views. Then, +the vectors will be different. The points are 3D, but since they are in a pattern coordinate system, +then, if the rig is planar, it may make sense to put the model to a XY coordinate plane so that +Z-coordinate of each input object point is 0. +In the old interface all the vectors of object points from different views are concatenated +together. +@param imagePoints In the new interface it is a vector of vectors of the projections of calibration +pattern points (e.g. std::vector>). imagePoints.size() and +objectPoints.size() and imagePoints[i].size() must be equal to objectPoints[i].size() for each i. +In the old interface all the vectors of object points from different views are concatenated +together. +@param imageSize Size of the image used only to initialize the intrinsic camera matrix. +@param cameraMatrix Output 3x3 floating-point camera matrix +\f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . If CV\_CALIB\_USE\_INTRINSIC\_GUESS +and/or CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be +initialized before calling the function. +@param distCoeffs Output vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. +@param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view +(e.g. std::vector>). That is, each k-th rotation vector together with the corresponding +k-th translation vector (see the next output parameter description) brings the calibration pattern +from the model coordinate space (in which object points are specified) to the world coordinate +space, that is, a real position of the calibration pattern in the k-th pattern view (k=0.. *M* -1). +@param tvecs Output vector of translation vectors estimated for each pattern view. +@param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters. + Order of deviations values: +\f$(f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, + s_4, \tau_x, \tau_y)\f$ If one of parameters is not estimated, it's deviation is equals to zero. +@param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters. + Order of deviations values: \f$(R_1, T_1, \dotsc , R_M, T_M)\f$ where M is number of pattern views, + \f$R_i, T_i\f$ are concatenated 1x3 vectors. + @param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view. +@param flags Different flags that may be zero or a combination of the following values: +- **CALIB_USE_INTRINSIC_GUESS** cameraMatrix contains valid initial values of +fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image +center ( imageSize is used), and focal distances are computed in a least-squares fashion. +Note, that if intrinsic parameters are known, there is no need to use this function just to +estimate extrinsic parameters. Use solvePnP instead. +- **CALIB_FIX_PRINCIPAL_POINT** The principal point is not changed during the global +optimization. It stays at the center or at a different location specified when +CALIB_USE_INTRINSIC_GUESS is set too. +- **CALIB_FIX_ASPECT_RATIO** The functions considers only fy as a free parameter. The +ratio fx/fy stays the same as in the input cameraMatrix . When +CALIB_USE_INTRINSIC_GUESS is not set, the actual input values of fx and fy are +ignored, only their ratio is computed and used further. +- **CALIB_ZERO_TANGENT_DIST** Tangential distortion coefficients \f$(p_1, p_2)\f$ are set +to zeros and stay zero. +- **CALIB_FIX_K1,...,CALIB_FIX_K6** The corresponding radial distortion +coefficient is not changed during the optimization. If CALIB_USE_INTRINSIC_GUESS is +set, the coefficient from the supplied distCoeffs matrix is used. Otherwise, it is set to 0. +- **CALIB_RATIONAL_MODEL** Coefficients k4, k5, and k6 are enabled. To provide the +backward compatibility, this extra flag should be explicitly specified to make the +calibration function use the rational model and return 8 coefficients. If the flag is not +set, the function computes and returns only 5 distortion coefficients. +- **CALIB_THIN_PRISM_MODEL** Coefficients s1, s2, s3 and s4 are enabled. To provide the +backward compatibility, this extra flag should be explicitly specified to make the +calibration function use the thin prism model and return 12 coefficients. If the flag is not +set, the function computes and returns only 5 distortion coefficients. +- **CALIB_FIX_S1_S2_S3_S4** The thin prism distortion coefficients are not changed during +the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the +supplied distCoeffs matrix is used. Otherwise, it is set to 0. +- **CALIB_TILTED_MODEL** Coefficients tauX and tauY are enabled. To provide the +backward compatibility, this extra flag should be explicitly specified to make the +calibration function use the tilted sensor model and return 14 coefficients. If the flag is not +set, the function computes and returns only 5 distortion coefficients. +- **CALIB_FIX_TAUX_TAUY** The coefficients of the tilted sensor model are not changed during +the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the +supplied distCoeffs matrix is used. Otherwise, it is set to 0. +@param criteria Termination criteria for the iterative optimization algorithm. + +@return the overall RMS re-projection error. + +The function estimates the intrinsic camera parameters and extrinsic parameters for each of the +views. The algorithm is based on @cite Zhang2000 and @cite BouguetMCT . The coordinates of 3D object +points and their corresponding 2D projections in each view must be specified. That may be achieved +by using an object with a known geometry and easily detectable feature points. Such an object is +called a calibration rig or calibration pattern, and OpenCV has built-in support for a chessboard as +a calibration rig (see findChessboardCorners ). Currently, initialization of intrinsic parameters +(when CALIB_USE_INTRINSIC_GUESS is not set) is only implemented for planar calibration +patterns (where Z-coordinates of the object points must be all zeros). 3D calibration rigs can also +be used as long as initial cameraMatrix is provided. + +The algorithm performs the following steps: + +- Compute the initial intrinsic parameters (the option only available for planar calibration + patterns) or read them from the input parameters. The distortion coefficients are all set to + zeros initially unless some of CALIB_FIX_K? are specified. + +- Estimate the initial camera pose as if the intrinsic parameters have been already known. This is + done using solvePnP . + +- Run the global Levenberg-Marquardt optimization algorithm to minimize the reprojection error, + that is, the total sum of squared distances between the observed feature points imagePoints and + the projected (using the current estimates for camera parameters and the poses) object points + objectPoints. See projectPoints for details. + +@note + If you use a non-square (=non-NxN) grid and findChessboardCorners for calibration, and + calibrateCamera returns bad values (zero distortion coefficients, an image center very far from + (w/2-0.5,h/2-0.5), and/or large differences between \f$f_x\f$ and \f$f_y\f$ (ratios of 10:1 or more)), + then you have probably used patternSize=cvSize(rows,cols) instead of using + patternSize=cvSize(cols,rows) in findChessboardCorners . + +@sa + calibrateCameraRO, findChessboardCorners, solvePnP, initCameraMatrix2D, stereoCalibrate, undistort + */ +CV_EXPORTS_AS(calibrateCameraExtended) double calibrateCamera( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints, Size imageSize, + InputOutputArray cameraMatrix, InputOutputArray distCoeffs, + OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + OutputArray stdDeviationsIntrinsics, + OutputArray stdDeviationsExtrinsics, + OutputArray perViewErrors, + int flags = 0, TermCriteria criteria = TermCriteria( + TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) ); + +/** @overload */ +CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints, Size imageSize, + InputOutputArray cameraMatrix, InputOutputArray distCoeffs, + OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + int flags = 0, TermCriteria criteria = TermCriteria( + TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) ); + +/** @brief Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern. + +This function is an extension of calibrateCamera() with the method of releasing object which was +proposed in @cite strobl2011iccv. In many common cases with inaccurate, unmeasured, roughly planar +targets (calibration plates), this method can dramatically improve the precision of the estimated +camera parameters. Both the object-releasing method and standard method are supported by this +function. Use the parameter **iFixedPoint** for method selection. In the internal implementation, +calibrateCamera() is a wrapper for this function. + +@param objectPoints Vector of vectors of calibration pattern points in the calibration pattern +coordinate space. See calibrateCamera() for details. If the method of releasing object to be used, +the identical calibration board must be used in each view and it must be fully visible, and all +objectPoints[i] must be the same and all points should be roughly close to a plane. **The calibration +target has to be rigid, or at least static if the camera (rather than the calibration target) is +shifted for grabbing images.** +@param imagePoints Vector of vectors of the projections of calibration pattern points. See +calibrateCamera() for details. +@param imageSize Size of the image used only to initialize the intrinsic camera matrix. +@param iFixedPoint The index of the 3D object point in objectPoints[0] to be fixed. It also acts as +a switch for calibration method selection. If object-releasing method to be used, pass in the +parameter in the range of [1, objectPoints[0].size()-2], otherwise a value out of this range will +make standard calibration method selected. Usually the top-right corner point of the calibration +board grid is recommended to be fixed when object-releasing method being utilized. According to +\cite strobl2011iccv, two other points are also fixed. In this implementation, objectPoints[0].front +and objectPoints[0].back.z are used. With object-releasing method, accurate rvecs, tvecs and +newObjPoints are only possible if coordinates of these three fixed points are accurate enough. +@param cameraMatrix Output 3x3 floating-point camera matrix. See calibrateCamera() for details. +@param distCoeffs Output vector of distortion coefficients. See calibrateCamera() for details. +@param rvecs Output vector of rotation vectors estimated for each pattern view. See calibrateCamera() +for details. +@param tvecs Output vector of translation vectors estimated for each pattern view. +@param newObjPoints The updated output vector of calibration pattern points. The coordinates might +be scaled based on three fixed points. The returned coordinates are accurate only if the above +mentioned three fixed points are accurate. If not needed, noArray() can be passed in. This parameter +is ignored with standard calibration method. +@param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters. +See calibrateCamera() for details. +@param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters. +See calibrateCamera() for details. +@param stdDeviationsObjPoints Output vector of standard deviations estimated for refined coordinates +of calibration pattern points. It has the same size and order as objectPoints[0] vector. This +parameter is ignored with standard calibration method. + @param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view. +@param flags Different flags that may be zero or a combination of some predefined values. See +calibrateCamera() for details. If the method of releasing object is used, the calibration time may +be much longer. CALIB_USE_QR or CALIB_USE_LU could be used for faster calibration with potentially +less precise and less stable in some rare cases. +@param criteria Termination criteria for the iterative optimization algorithm. + +@return the overall RMS re-projection error. + +The function estimates the intrinsic camera parameters and extrinsic parameters for each of the +views. The algorithm is based on @cite Zhang2000, @cite BouguetMCT and @cite strobl2011iccv. See +calibrateCamera() for other detailed explanations. +@sa + calibrateCamera, findChessboardCorners, solvePnP, initCameraMatrix2D, stereoCalibrate, undistort + */ +CV_EXPORTS_AS(calibrateCameraROExtended) double calibrateCameraRO( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints, Size imageSize, int iFixedPoint, + InputOutputArray cameraMatrix, InputOutputArray distCoeffs, + OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + OutputArray newObjPoints, + OutputArray stdDeviationsIntrinsics, + OutputArray stdDeviationsExtrinsics, + OutputArray stdDeviationsObjPoints, + OutputArray perViewErrors, + int flags = 0, TermCriteria criteria = TermCriteria( + TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) ); + +/** @overload */ +CV_EXPORTS_W double calibrateCameraRO( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints, Size imageSize, int iFixedPoint, + InputOutputArray cameraMatrix, InputOutputArray distCoeffs, + OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + OutputArray newObjPoints, + int flags = 0, TermCriteria criteria = TermCriteria( + TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) ); + +/** @brief Computes useful camera characteristics from the camera matrix. + +@param cameraMatrix Input camera matrix that can be estimated by calibrateCamera or +stereoCalibrate . +@param imageSize Input image size in pixels. +@param apertureWidth Physical width in mm of the sensor. +@param apertureHeight Physical height in mm of the sensor. +@param fovx Output field of view in degrees along the horizontal sensor axis. +@param fovy Output field of view in degrees along the vertical sensor axis. +@param focalLength Focal length of the lens in mm. +@param principalPoint Principal point in mm. +@param aspectRatio \f$f_y/f_x\f$ + +The function computes various useful camera characteristics from the previously estimated camera +matrix. + +@note + Do keep in mind that the unity measure 'mm' stands for whatever unit of measure one chooses for + the chessboard pitch (it can thus be any value). + */ +CV_EXPORTS_W void calibrationMatrixValues( InputArray cameraMatrix, Size imageSize, + double apertureWidth, double apertureHeight, + CV_OUT double& fovx, CV_OUT double& fovy, + CV_OUT double& focalLength, CV_OUT Point2d& principalPoint, + CV_OUT double& aspectRatio ); + +/** @brief Calibrates the stereo camera. + +@param objectPoints Vector of vectors of the calibration pattern points. +@param imagePoints1 Vector of vectors of the projections of the calibration pattern points, +observed by the first camera. +@param imagePoints2 Vector of vectors of the projections of the calibration pattern points, +observed by the second camera. +@param cameraMatrix1 Input/output first camera matrix: +\f$\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}\f$ , \f$j = 0,\, 1\f$ . If +any of CALIB_USE_INTRINSIC_GUESS , CALIB_FIX_ASPECT_RATIO , +CALIB_FIX_INTRINSIC , or CALIB_FIX_FOCAL_LENGTH are specified, some or all of the +matrix components must be initialized. See the flags description for details. +@param distCoeffs1 Input/output vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. The output vector length depends on the flags. +@param cameraMatrix2 Input/output second camera matrix. The parameter is similar to cameraMatrix1 +@param distCoeffs2 Input/output lens distortion coefficients for the second camera. The parameter +is similar to distCoeffs1 . +@param imageSize Size of the image used only to initialize intrinsic camera matrix. +@param R Output rotation matrix between the 1st and the 2nd camera coordinate systems. +@param T Output translation vector between the coordinate systems of the cameras. +@param E Output essential matrix. +@param F Output fundamental matrix. +@param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view. +@param flags Different flags that may be zero or a combination of the following values: +- **CALIB_FIX_INTRINSIC** Fix cameraMatrix? and distCoeffs? so that only R, T, E , and F +matrices are estimated. +- **CALIB_USE_INTRINSIC_GUESS** Optimize some or all of the intrinsic parameters +according to the specified flags. Initial values are provided by the user. +- **CALIB_USE_EXTRINSIC_GUESS** R, T contain valid initial values that are optimized further. +Otherwise R, T are initialized to the median value of the pattern views (each dimension separately). +- **CALIB_FIX_PRINCIPAL_POINT** Fix the principal points during the optimization. +- **CALIB_FIX_FOCAL_LENGTH** Fix \f$f^{(j)}_x\f$ and \f$f^{(j)}_y\f$ . +- **CALIB_FIX_ASPECT_RATIO** Optimize \f$f^{(j)}_y\f$ . Fix the ratio \f$f^{(j)}_x/f^{(j)}_y\f$ +. +- **CALIB_SAME_FOCAL_LENGTH** Enforce \f$f^{(0)}_x=f^{(1)}_x\f$ and \f$f^{(0)}_y=f^{(1)}_y\f$ . +- **CALIB_ZERO_TANGENT_DIST** Set tangential distortion coefficients for each camera to +zeros and fix there. +- **CALIB_FIX_K1,...,CALIB_FIX_K6** Do not change the corresponding radial +distortion coefficient during the optimization. If CALIB_USE_INTRINSIC_GUESS is set, +the coefficient from the supplied distCoeffs matrix is used. Otherwise, it is set to 0. +- **CALIB_RATIONAL_MODEL** Enable coefficients k4, k5, and k6. To provide the backward +compatibility, this extra flag should be explicitly specified to make the calibration +function use the rational model and return 8 coefficients. If the flag is not set, the +function computes and returns only 5 distortion coefficients. +- **CALIB_THIN_PRISM_MODEL** Coefficients s1, s2, s3 and s4 are enabled. To provide the +backward compatibility, this extra flag should be explicitly specified to make the +calibration function use the thin prism model and return 12 coefficients. If the flag is not +set, the function computes and returns only 5 distortion coefficients. +- **CALIB_FIX_S1_S2_S3_S4** The thin prism distortion coefficients are not changed during +the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the +supplied distCoeffs matrix is used. Otherwise, it is set to 0. +- **CALIB_TILTED_MODEL** Coefficients tauX and tauY are enabled. To provide the +backward compatibility, this extra flag should be explicitly specified to make the +calibration function use the tilted sensor model and return 14 coefficients. If the flag is not +set, the function computes and returns only 5 distortion coefficients. +- **CALIB_FIX_TAUX_TAUY** The coefficients of the tilted sensor model are not changed during +the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the +supplied distCoeffs matrix is used. Otherwise, it is set to 0. +@param criteria Termination criteria for the iterative optimization algorithm. + +The function estimates transformation between two cameras making a stereo pair. If you have a stereo +camera where the relative position and orientation of two cameras is fixed, and if you computed +poses of an object relative to the first camera and to the second camera, (R1, T1) and (R2, T2), +respectively (this can be done with solvePnP ), then those poses definitely relate to each other. +This means that, given ( \f$R_1\f$,\f$T_1\f$ ), it should be possible to compute ( \f$R_2\f$,\f$T_2\f$ ). You only +need to know the position and orientation of the second camera relative to the first camera. This is +what the described function does. It computes ( \f$R\f$,\f$T\f$ ) so that: + +\f[R_2=R*R_1\f] +\f[T_2=R*T_1 + T,\f] + +Optionally, it computes the essential matrix E: + +\f[E= \vecthreethree{0}{-T_2}{T_1}{T_2}{0}{-T_0}{-T_1}{T_0}{0} *R\f] + +where \f$T_i\f$ are components of the translation vector \f$T\f$ : \f$T=[T_0, T_1, T_2]^T\f$ . And the function +can also compute the fundamental matrix F: + +\f[F = cameraMatrix2^{-T} E cameraMatrix1^{-1}\f] + +Besides the stereo-related information, the function can also perform a full calibration of each of +two cameras. However, due to the high dimensionality of the parameter space and noise in the input +data, the function can diverge from the correct solution. If the intrinsic parameters can be +estimated with high accuracy for each of the cameras individually (for example, using +calibrateCamera ), you are recommended to do so and then pass CALIB_FIX_INTRINSIC flag to the +function along with the computed intrinsic parameters. Otherwise, if all the parameters are +estimated at once, it makes sense to restrict some parameters, for example, pass +CALIB_SAME_FOCAL_LENGTH and CALIB_ZERO_TANGENT_DIST flags, which is usually a +reasonable assumption. + +Similarly to calibrateCamera , the function minimizes the total re-projection error for all the +points in all the available views from both cameras. The function returns the final value of the +re-projection error. + */ +CV_EXPORTS_AS(stereoCalibrateExtended) double stereoCalibrate( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray cameraMatrix1, InputOutputArray distCoeffs1, + InputOutputArray cameraMatrix2, InputOutputArray distCoeffs2, + Size imageSize, InputOutputArray R,InputOutputArray T, OutputArray E, OutputArray F, + OutputArray perViewErrors, int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) ); + +/// @overload +CV_EXPORTS_W double stereoCalibrate( InputArrayOfArrays objectPoints, + InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray cameraMatrix1, InputOutputArray distCoeffs1, + InputOutputArray cameraMatrix2, InputOutputArray distCoeffs2, + Size imageSize, OutputArray R,OutputArray T, OutputArray E, OutputArray F, + int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) ); + +/** @brief Computes rectification transforms for each head of a calibrated stereo camera. + +@param cameraMatrix1 First camera matrix. +@param distCoeffs1 First camera distortion parameters. +@param cameraMatrix2 Second camera matrix. +@param distCoeffs2 Second camera distortion parameters. +@param imageSize Size of the image used for stereo calibration. +@param R Rotation matrix between the coordinate systems of the first and the second cameras. +@param T Translation vector between coordinate systems of the cameras. +@param R1 Output 3x3 rectification transform (rotation matrix) for the first camera. +@param R2 Output 3x3 rectification transform (rotation matrix) for the second camera. +@param P1 Output 3x4 projection matrix in the new (rectified) coordinate systems for the first +camera. +@param P2 Output 3x4 projection matrix in the new (rectified) coordinate systems for the second +camera. +@param Q Output \f$4 \times 4\f$ disparity-to-depth mapping matrix (see reprojectImageTo3D ). +@param flags Operation flags that may be zero or CALIB_ZERO_DISPARITY . If the flag is set, +the function makes the principal points of each camera have the same pixel coordinates in the +rectified views. And if the flag is not set, the function may still shift the images in the +horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the +useful image area. +@param alpha Free scaling parameter. If it is -1 or absent, the function performs the default +scaling. Otherwise, the parameter should be between 0 and 1. alpha=0 means that the rectified +images are zoomed and shifted so that only valid pixels are visible (no black areas after +rectification). alpha=1 means that the rectified image is decimated and shifted so that all the +pixels from the original images from the cameras are retained in the rectified images (no source +image pixels are lost). Obviously, any intermediate value yields an intermediate result between +those two extreme cases. +@param newImageSize New image resolution after rectification. The same size should be passed to +initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0) +is passed (default), it is set to the original imageSize . Setting it to larger value can help you +preserve details in the original image, especially when there is a big radial distortion. +@param validPixROI1 Optional output rectangles inside the rectified images where all the pixels +are valid. If alpha=0 , the ROIs cover the whole images. Otherwise, they are likely to be smaller +(see the picture below). +@param validPixROI2 Optional output rectangles inside the rectified images where all the pixels +are valid. If alpha=0 , the ROIs cover the whole images. Otherwise, they are likely to be smaller +(see the picture below). + +The function computes the rotation matrices for each camera that (virtually) make both camera image +planes the same plane. Consequently, this makes all the epipolar lines parallel and thus simplifies +the dense stereo correspondence problem. The function takes the matrices computed by stereoCalibrate +as input. As output, it provides two rotation matrices and also two projection matrices in the new +coordinates. The function distinguishes the following two cases: + +- **Horizontal stereo**: the first and the second camera views are shifted relative to each other + mainly along the x axis (with possible small vertical shift). In the rectified images, the + corresponding epipolar lines in the left and right cameras are horizontal and have the same + y-coordinate. P1 and P2 look like: + + \f[\texttt{P1} = \begin{bmatrix} f & 0 & cx_1 & 0 \\ 0 & f & cy & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}\f] + + \f[\texttt{P2} = \begin{bmatrix} f & 0 & cx_2 & T_x*f \\ 0 & f & cy & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} ,\f] + + where \f$T_x\f$ is a horizontal shift between the cameras and \f$cx_1=cx_2\f$ if + CALIB_ZERO_DISPARITY is set. + +- **Vertical stereo**: the first and the second camera views are shifted relative to each other + mainly in vertical direction (and probably a bit in the horizontal direction too). The epipolar + lines in the rectified images are vertical and have the same x-coordinate. P1 and P2 look like: + + \f[\texttt{P1} = \begin{bmatrix} f & 0 & cx & 0 \\ 0 & f & cy_1 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}\f] + + \f[\texttt{P2} = \begin{bmatrix} f & 0 & cx & 0 \\ 0 & f & cy_2 & T_y*f \\ 0 & 0 & 1 & 0 \end{bmatrix} ,\f] + + where \f$T_y\f$ is a vertical shift between the cameras and \f$cy_1=cy_2\f$ if CALIB_ZERO_DISPARITY is + set. + +As you can see, the first three columns of P1 and P2 will effectively be the new "rectified" camera +matrices. The matrices, together with R1 and R2 , can then be passed to initUndistortRectifyMap to +initialize the rectification map for each camera. + +See below the screenshot from the stereo_calib.cpp sample. Some red horizontal lines pass through +the corresponding image regions. This means that the images are well rectified, which is what most +stereo correspondence algorithms rely on. The green rectangles are roi1 and roi2 . You see that +their interiors are all valid pixels. + +![image](pics/stereo_undistort.jpg) + */ +CV_EXPORTS_W void stereoRectify( InputArray cameraMatrix1, InputArray distCoeffs1, + InputArray cameraMatrix2, InputArray distCoeffs2, + Size imageSize, InputArray R, InputArray T, + OutputArray R1, OutputArray R2, + OutputArray P1, OutputArray P2, + OutputArray Q, int flags = CALIB_ZERO_DISPARITY, + double alpha = -1, Size newImageSize = Size(), + CV_OUT Rect* validPixROI1 = 0, CV_OUT Rect* validPixROI2 = 0 ); + +/** @brief Computes a rectification transform for an uncalibrated stereo camera. + +@param points1 Array of feature points in the first image. +@param points2 The corresponding points in the second image. The same formats as in +findFundamentalMat are supported. +@param F Input fundamental matrix. It can be computed from the same set of point pairs using +findFundamentalMat . +@param imgSize Size of the image. +@param H1 Output rectification homography matrix for the first image. +@param H2 Output rectification homography matrix for the second image. +@param threshold Optional threshold used to filter out the outliers. If the parameter is greater +than zero, all the point pairs that do not comply with the epipolar geometry (that is, the points +for which \f$|\texttt{points2[i]}^T*\texttt{F}*\texttt{points1[i]}|>\texttt{threshold}\f$ ) are +rejected prior to computing the homographies. Otherwise, all the points are considered inliers. + +The function computes the rectification transformations without knowing intrinsic parameters of the +cameras and their relative position in the space, which explains the suffix "uncalibrated". Another +related difference from stereoRectify is that the function outputs not the rectification +transformations in the object (3D) space, but the planar perspective transformations encoded by the +homography matrices H1 and H2 . The function implements the algorithm @cite Hartley99 . + +@note + While the algorithm does not need to know the intrinsic parameters of the cameras, it heavily + depends on the epipolar geometry. Therefore, if the camera lenses have a significant distortion, + it would be better to correct it before computing the fundamental matrix and calling this + function. For example, distortion coefficients can be estimated for each head of stereo camera + separately by using calibrateCamera . Then, the images can be corrected using undistort , or + just the point coordinates can be corrected with undistortPoints . + */ +CV_EXPORTS_W bool stereoRectifyUncalibrated( InputArray points1, InputArray points2, + InputArray F, Size imgSize, + OutputArray H1, OutputArray H2, + double threshold = 5 ); + +//! computes the rectification transformations for 3-head camera, where all the heads are on the same line. +CV_EXPORTS_W float rectify3Collinear( InputArray cameraMatrix1, InputArray distCoeffs1, + InputArray cameraMatrix2, InputArray distCoeffs2, + InputArray cameraMatrix3, InputArray distCoeffs3, + InputArrayOfArrays imgpt1, InputArrayOfArrays imgpt3, + Size imageSize, InputArray R12, InputArray T12, + InputArray R13, InputArray T13, + OutputArray R1, OutputArray R2, OutputArray R3, + OutputArray P1, OutputArray P2, OutputArray P3, + OutputArray Q, double alpha, Size newImgSize, + CV_OUT Rect* roi1, CV_OUT Rect* roi2, int flags ); + +/** @brief Returns the new camera matrix based on the free scaling parameter. + +@param cameraMatrix Input camera matrix. +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of +4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are +assumed. +@param imageSize Original image size. +@param alpha Free scaling parameter between 0 (when all the pixels in the undistorted image are +valid) and 1 (when all the source image pixels are retained in the undistorted image). See +stereoRectify for details. +@param newImgSize Image size after rectification. By default, it is set to imageSize . +@param validPixROI Optional output rectangle that outlines all-good-pixels region in the +undistorted image. See roi1, roi2 description in stereoRectify . +@param centerPrincipalPoint Optional flag that indicates whether in the new camera matrix the +principal point should be at the image center or not. By default, the principal point is chosen to +best fit a subset of the source image (determined by alpha) to the corrected image. +@return new_camera_matrix Output new camera matrix. + +The function computes and returns the optimal new camera matrix based on the free scaling parameter. +By varying this parameter, you may retrieve only sensible pixels alpha=0 , keep all the original +image pixels if there is valuable information in the corners alpha=1 , or get something in between. +When alpha\>0 , the undistorted result is likely to have some black pixels corresponding to +"virtual" pixels outside of the captured distorted image. The original camera matrix, distortion +coefficients, the computed new camera matrix, and newImageSize should be passed to +initUndistortRectifyMap to produce the maps for remap . + */ +CV_EXPORTS_W Mat getOptimalNewCameraMatrix( InputArray cameraMatrix, InputArray distCoeffs, + Size imageSize, double alpha, Size newImgSize = Size(), + CV_OUT Rect* validPixROI = 0, + bool centerPrincipalPoint = false); + +/** @brief Computes Hand-Eye calibration: \f$_{}^{g}\textrm{T}_c\f$ + +@param[in] R_gripper2base Rotation part extracted from the homogeneous matrix that transforms a point +expressed in the gripper frame to the robot base frame (\f$_{}^{b}\textrm{T}_g\f$). +This is a vector (`vector`) that contains the rotation matrices for all the transformations +from gripper frame to robot base frame. +@param[in] t_gripper2base Translation part extracted from the homogeneous matrix that transforms a point +expressed in the gripper frame to the robot base frame (\f$_{}^{b}\textrm{T}_g\f$). +This is a vector (`vector`) that contains the translation vectors for all the transformations +from gripper frame to robot base frame. +@param[in] R_target2cam Rotation part extracted from the homogeneous matrix that transforms a point +expressed in the target frame to the camera frame (\f$_{}^{c}\textrm{T}_t\f$). +This is a vector (`vector`) that contains the rotation matrices for all the transformations +from calibration target frame to camera frame. +@param[in] t_target2cam Rotation part extracted from the homogeneous matrix that transforms a point +expressed in the target frame to the camera frame (\f$_{}^{c}\textrm{T}_t\f$). +This is a vector (`vector`) that contains the translation vectors for all the transformations +from calibration target frame to camera frame. +@param[out] R_cam2gripper Estimated rotation part extracted from the homogeneous matrix that transforms a point +expressed in the camera frame to the gripper frame (\f$_{}^{g}\textrm{T}_c\f$). +@param[out] t_cam2gripper Estimated translation part extracted from the homogeneous matrix that transforms a point +expressed in the camera frame to the gripper frame (\f$_{}^{g}\textrm{T}_c\f$). +@param[in] method One of the implemented Hand-Eye calibration method, see cv::HandEyeCalibrationMethod + +The function performs the Hand-Eye calibration using various methods. One approach consists in estimating the +rotation then the translation (separable solutions) and the following methods are implemented: + - R. Tsai, R. Lenz A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/EyeCalibration \cite Tsai89 + - F. Park, B. Martin Robot Sensor Calibration: Solving AX = XB on the Euclidean Group \cite Park94 + - R. Horaud, F. Dornaika Hand-Eye Calibration \cite Horaud95 + +Another approach consists in estimating simultaneously the rotation and the translation (simultaneous solutions), +with the following implemented method: + - N. Andreff, R. Horaud, B. Espiau On-line Hand-Eye Calibration \cite Andreff99 + - K. Daniilidis Hand-Eye Calibration Using Dual Quaternions \cite Daniilidis98 + +The following picture describes the Hand-Eye calibration problem where the transformation between a camera ("eye") +mounted on a robot gripper ("hand") has to be estimated. + +![](pics/hand-eye_figure.png) + +The calibration procedure is the following: + - a static calibration pattern is used to estimate the transformation between the target frame + and the camera frame + - the robot gripper is moved in order to acquire several poses + - for each pose, the homogeneous transformation between the gripper frame and the robot base frame is recorded using for + instance the robot kinematics +\f[ + \begin{bmatrix} + X_b\\ + Y_b\\ + Z_b\\ + 1 + \end{bmatrix} + = + \begin{bmatrix} + _{}^{b}\textrm{R}_g & _{}^{b}\textrm{t}_g \\ + 0_{1 \times 3} & 1 + \end{bmatrix} + \begin{bmatrix} + X_g\\ + Y_g\\ + Z_g\\ + 1 + \end{bmatrix} +\f] + - for each pose, the homogeneous transformation between the calibration target frame and the camera frame is recorded using + for instance a pose estimation method (PnP) from 2D-3D point correspondences +\f[ + \begin{bmatrix} + X_c\\ + Y_c\\ + Z_c\\ + 1 + \end{bmatrix} + = + \begin{bmatrix} + _{}^{c}\textrm{R}_t & _{}^{c}\textrm{t}_t \\ + 0_{1 \times 3} & 1 + \end{bmatrix} + \begin{bmatrix} + X_t\\ + Y_t\\ + Z_t\\ + 1 + \end{bmatrix} +\f] + +The Hand-Eye calibration procedure returns the following homogeneous transformation +\f[ + \begin{bmatrix} + X_g\\ + Y_g\\ + Z_g\\ + 1 + \end{bmatrix} + = + \begin{bmatrix} + _{}^{g}\textrm{R}_c & _{}^{g}\textrm{t}_c \\ + 0_{1 \times 3} & 1 + \end{bmatrix} + \begin{bmatrix} + X_c\\ + Y_c\\ + Z_c\\ + 1 + \end{bmatrix} +\f] + +This problem is also known as solving the \f$\mathbf{A}\mathbf{X}=\mathbf{X}\mathbf{B}\f$ equation: +\f[ + \begin{align*} + ^{b}{\textrm{T}_g}^{(1)} \hspace{0.2em} ^{g}\textrm{T}_c \hspace{0.2em} ^{c}{\textrm{T}_t}^{(1)} &= + \hspace{0.1em} ^{b}{\textrm{T}_g}^{(2)} \hspace{0.2em} ^{g}\textrm{T}_c \hspace{0.2em} ^{c}{\textrm{T}_t}^{(2)} \\ + + (^{b}{\textrm{T}_g}^{(2)})^{-1} \hspace{0.2em} ^{b}{\textrm{T}_g}^{(1)} \hspace{0.2em} ^{g}\textrm{T}_c &= + \hspace{0.1em} ^{g}\textrm{T}_c \hspace{0.2em} ^{c}{\textrm{T}_t}^{(2)} (^{c}{\textrm{T}_t}^{(1)})^{-1} \\ + + \textrm{A}_i \textrm{X} &= \textrm{X} \textrm{B}_i \\ + \end{align*} +\f] + +\note +Additional information can be found on this [website](http://campar.in.tum.de/Chair/HandEyeCalibration). +\note +A minimum of 2 motions with non parallel rotation axes are necessary to determine the hand-eye transformation. +So at least 3 different poses are required, but it is strongly recommended to use many more poses. + + */ +CV_EXPORTS_W void calibrateHandEye( InputArrayOfArrays R_gripper2base, InputArrayOfArrays t_gripper2base, + InputArrayOfArrays R_target2cam, InputArrayOfArrays t_target2cam, + OutputArray R_cam2gripper, OutputArray t_cam2gripper, + HandEyeCalibrationMethod method=CALIB_HAND_EYE_TSAI ); + +/** @brief Converts points from Euclidean to homogeneous space. + +@param src Input vector of N-dimensional points. +@param dst Output vector of N+1-dimensional points. + +The function converts points from Euclidean to homogeneous space by appending 1's to the tuple of +point coordinates. That is, each point (x1, x2, ..., xn) is converted to (x1, x2, ..., xn, 1). + */ +CV_EXPORTS_W void convertPointsToHomogeneous( InputArray src, OutputArray dst ); + +/** @brief Converts points from homogeneous to Euclidean space. + +@param src Input vector of N-dimensional points. +@param dst Output vector of N-1-dimensional points. + +The function converts points homogeneous to Euclidean space using perspective projection. That is, +each point (x1, x2, ... x(n-1), xn) is converted to (x1/xn, x2/xn, ..., x(n-1)/xn). When xn=0, the +output point coordinates will be (0,0,0,...). + */ +CV_EXPORTS_W void convertPointsFromHomogeneous( InputArray src, OutputArray dst ); + +/** @brief Converts points to/from homogeneous coordinates. + +@param src Input array or vector of 2D, 3D, or 4D points. +@param dst Output vector of 2D, 3D, or 4D points. + +The function converts 2D or 3D points from/to homogeneous coordinates by calling either +convertPointsToHomogeneous or convertPointsFromHomogeneous. + +@note The function is obsolete. Use one of the previous two functions instead. + */ +CV_EXPORTS void convertPointsHomogeneous( InputArray src, OutputArray dst ); + +/** @brief Calculates a fundamental matrix from the corresponding points in two images. + +@param points1 Array of N points from the first image. The point coordinates should be +floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1 . +@param method Method for computing a fundamental matrix. +- **CV_FM_7POINT** for a 7-point algorithm. \f$N = 7\f$ +- **CV_FM_8POINT** for an 8-point algorithm. \f$N \ge 8\f$ +- **CV_FM_RANSAC** for the RANSAC algorithm. \f$N \ge 8\f$ +- **CV_FM_LMEDS** for the LMedS algorithm. \f$N \ge 8\f$ +@param ransacReprojThreshold Parameter used only for RANSAC. It is the maximum distance from a point to an epipolar +line in pixels, beyond which the point is considered an outlier and is not used for computing the +final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the +point localization, image resolution, and the image noise. +@param confidence Parameter used for the RANSAC and LMedS methods only. It specifies a desirable level +of confidence (probability) that the estimated matrix is correct. +@param mask + +The epipolar geometry is described by the following equation: + +\f[[p_2; 1]^T F [p_1; 1] = 0\f] + +where \f$F\f$ is a fundamental matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the +second images, respectively. + +The function calculates the fundamental matrix using one of four methods listed above and returns +the found fundamental matrix. Normally just one matrix is found. But in case of the 7-point +algorithm, the function may return up to 3 solutions ( \f$9 \times 3\f$ matrix that stores all 3 +matrices sequentially). + +The calculated fundamental matrix may be passed further to computeCorrespondEpilines that finds the +epipolar lines corresponding to the specified points. It can also be passed to +stereoRectifyUncalibrated to compute the rectification transformation. : +@code + // Example. Estimation of fundamental matrix using the RANSAC algorithm + int point_count = 100; + vector points1(point_count); + vector points2(point_count); + + // initialize the points here ... + for( int i = 0; i < point_count; i++ ) + { + points1[i] = ...; + points2[i] = ...; + } + + Mat fundamental_matrix = + findFundamentalMat(points1, points2, FM_RANSAC, 3, 0.99); +@endcode + */ +CV_EXPORTS_W Mat findFundamentalMat( InputArray points1, InputArray points2, + int method = FM_RANSAC, + double ransacReprojThreshold = 3., double confidence = 0.99, + OutputArray mask = noArray() ); + +/** @overload */ +CV_EXPORTS Mat findFundamentalMat( InputArray points1, InputArray points2, + OutputArray mask, int method = FM_RANSAC, + double ransacReprojThreshold = 3., double confidence = 0.99 ); + +/** @brief Calculates an essential matrix from the corresponding points in two images. + +@param points1 Array of N (N \>= 5) 2D points from the first image. The point coordinates should +be floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1 . +@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +Note that this function assumes that points1 and points2 are feature points from cameras with the +same camera matrix. +@param method Method for computing an essential matrix. +- **RANSAC** for the RANSAC algorithm. +- **LMEDS** for the LMedS algorithm. +@param prob Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of +confidence (probability) that the estimated matrix is correct. +@param threshold Parameter used for RANSAC. It is the maximum distance from a point to an epipolar +line in pixels, beyond which the point is considered an outlier and is not used for computing the +final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the +point localization, image resolution, and the image noise. +@param mask Output array of N elements, every element of which is set to 0 for outliers and to 1 +for the other points. The array is computed only in the RANSAC and LMedS methods. + +This function estimates essential matrix based on the five-point algorithm solver in @cite Nister03 . +@cite SteweniusCFS is also a related. The epipolar geometry is described by the following equation: + +\f[[p_2; 1]^T K^{-T} E K^{-1} [p_1; 1] = 0\f] + +where \f$E\f$ is an essential matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the +second images, respectively. The result of this function may be passed further to +decomposeEssentialMat or recoverPose to recover the relative pose between cameras. + */ +CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2, + InputArray cameraMatrix, int method = RANSAC, + double prob = 0.999, double threshold = 1.0, + OutputArray mask = noArray() ); + +/** @overload +@param points1 Array of N (N \>= 5) 2D points from the first image. The point coordinates should +be floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1 . +@param focal focal length of the camera. Note that this function assumes that points1 and points2 +are feature points from cameras with same focal length and principal point. +@param pp principal point of the camera. +@param method Method for computing a fundamental matrix. +- **RANSAC** for the RANSAC algorithm. +- **LMEDS** for the LMedS algorithm. +@param threshold Parameter used for RANSAC. It is the maximum distance from a point to an epipolar +line in pixels, beyond which the point is considered an outlier and is not used for computing the +final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the +point localization, image resolution, and the image noise. +@param prob Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of +confidence (probability) that the estimated matrix is correct. +@param mask Output array of N elements, every element of which is set to 0 for outliers and to 1 +for the other points. The array is computed only in the RANSAC and LMedS methods. + +This function differs from the one above that it computes camera matrix from focal length and +principal point: + +\f[K = +\begin{bmatrix} +f & 0 & x_{pp} \\ +0 & f & y_{pp} \\ +0 & 0 & 1 +\end{bmatrix}\f] + */ +CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2, + double focal = 1.0, Point2d pp = Point2d(0, 0), + int method = RANSAC, double prob = 0.999, + double threshold = 1.0, OutputArray mask = noArray() ); + +/** @brief Decompose an essential matrix to possible rotations and translation. + +@param E The input essential matrix. +@param R1 One possible rotation matrix. +@param R2 Another possible rotation matrix. +@param t One possible translation. + +This function decompose an essential matrix E using svd decomposition @cite HartleyZ00 . Generally 4 +possible poses exists for a given E. They are \f$[R_1, t]\f$, \f$[R_1, -t]\f$, \f$[R_2, t]\f$, \f$[R_2, -t]\f$. By +decomposing E, you can only get the direction of the translation, so the function returns unit t. + */ +CV_EXPORTS_W void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t ); + +/** @brief Recover relative camera rotation and translation from an estimated essential matrix and the +corresponding points in two images, using cheirality check. Returns the number of inliers which pass +the check. + +@param E The input essential matrix. +@param points1 Array of N 2D points from the first image. The point coordinates should be +floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1 . +@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +Note that this function assumes that points1 and points2 are feature points from cameras with the +same camera matrix. +@param R Recovered relative rotation. +@param t Recovered relative translation. +@param mask Input/output mask for inliers in points1 and points2. +: If it is not empty, then it marks inliers in points1 and points2 for then given essential +matrix E. Only these inliers will be used to recover pose. In the output mask only inliers +which pass the cheirality check. +This function decomposes an essential matrix using decomposeEssentialMat and then verifies possible +pose hypotheses by doing cheirality check. The cheirality check basically means that the +triangulated 3D points should have positive depth. Some details can be found in @cite Nister03 . + +This function can be used to process output E and mask from findEssentialMat. In this scenario, +points1 and points2 are the same input for findEssentialMat. : +@code + // Example. Estimation of fundamental matrix using the RANSAC algorithm + int point_count = 100; + vector points1(point_count); + vector points2(point_count); + + // initialize the points here ... + for( int i = 0; i < point_count; i++ ) + { + points1[i] = ...; + points2[i] = ...; + } + + // cametra matrix with both focal lengths = 1, and principal point = (0, 0) + Mat cameraMatrix = Mat::eye(3, 3, CV_64F); + + Mat E, R, t, mask; + + E = findEssentialMat(points1, points2, cameraMatrix, RANSAC, 0.999, 1.0, mask); + recoverPose(E, points1, points2, cameraMatrix, R, t, mask); +@endcode + */ +CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2, + InputArray cameraMatrix, OutputArray R, OutputArray t, + InputOutputArray mask = noArray() ); + +/** @overload +@param E The input essential matrix. +@param points1 Array of N 2D points from the first image. The point coordinates should be +floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1 . +@param R Recovered relative rotation. +@param t Recovered relative translation. +@param focal Focal length of the camera. Note that this function assumes that points1 and points2 +are feature points from cameras with same focal length and principal point. +@param pp principal point of the camera. +@param mask Input/output mask for inliers in points1 and points2. +: If it is not empty, then it marks inliers in points1 and points2 for then given essential +matrix E. Only these inliers will be used to recover pose. In the output mask only inliers +which pass the cheirality check. + +This function differs from the one above that it computes camera matrix from focal length and +principal point: + +\f[K = +\begin{bmatrix} +f & 0 & x_{pp} \\ +0 & f & y_{pp} \\ +0 & 0 & 1 +\end{bmatrix}\f] + */ +CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2, + OutputArray R, OutputArray t, + double focal = 1.0, Point2d pp = Point2d(0, 0), + InputOutputArray mask = noArray() ); + +/** @overload +@param E The input essential matrix. +@param points1 Array of N 2D points from the first image. The point coordinates should be +floating-point (single or double precision). +@param points2 Array of the second image points of the same size and format as points1. +@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +Note that this function assumes that points1 and points2 are feature points from cameras with the +same camera matrix. +@param R Recovered relative rotation. +@param t Recovered relative translation. +@param distanceThresh threshold distance which is used to filter out far away points (i.e. infinite points). +@param mask Input/output mask for inliers in points1 and points2. +: If it is not empty, then it marks inliers in points1 and points2 for then given essential +matrix E. Only these inliers will be used to recover pose. In the output mask only inliers +which pass the cheirality check. +@param triangulatedPoints 3d points which were reconstructed by triangulation. + */ + +CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2, + InputArray cameraMatrix, OutputArray R, OutputArray t, double distanceThresh, InputOutputArray mask = noArray(), + OutputArray triangulatedPoints = noArray()); + +/** @brief For points in an image of a stereo pair, computes the corresponding epilines in the other image. + +@param points Input points. \f$N \times 1\f$ or \f$1 \times N\f$ matrix of type CV_32FC2 or +vector\ . +@param whichImage Index of the image (1 or 2) that contains the points . +@param F Fundamental matrix that can be estimated using findFundamentalMat or stereoRectify . +@param lines Output vector of the epipolar lines corresponding to the points in the other image. +Each line \f$ax + by + c=0\f$ is encoded by 3 numbers \f$(a, b, c)\f$ . + +For every point in one of the two images of a stereo pair, the function finds the equation of the +corresponding epipolar line in the other image. + +From the fundamental matrix definition (see findFundamentalMat ), line \f$l^{(2)}_i\f$ in the second +image for the point \f$p^{(1)}_i\f$ in the first image (when whichImage=1 ) is computed as: + +\f[l^{(2)}_i = F p^{(1)}_i\f] + +And vice versa, when whichImage=2, \f$l^{(1)}_i\f$ is computed from \f$p^{(2)}_i\f$ as: + +\f[l^{(1)}_i = F^T p^{(2)}_i\f] + +Line coefficients are defined up to a scale. They are normalized so that \f$a_i^2+b_i^2=1\f$ . + */ +CV_EXPORTS_W void computeCorrespondEpilines( InputArray points, int whichImage, + InputArray F, OutputArray lines ); + +/** @brief Reconstructs points by triangulation. + +@param projMatr1 3x4 projection matrix of the first camera. +@param projMatr2 3x4 projection matrix of the second camera. +@param projPoints1 2xN array of feature points in the first image. In case of c++ version it can +be also a vector of feature points or two-channel matrix of size 1xN or Nx1. +@param projPoints2 2xN array of corresponding points in the second image. In case of c++ version +it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1. +@param points4D 4xN array of reconstructed points in homogeneous coordinates. + +The function reconstructs 3-dimensional points (in homogeneous coordinates) by using their +observations with a stereo camera. Projections matrices can be obtained from stereoRectify. + +@note + Keep in mind that all input data should be of float type in order for this function to work. + +@sa + reprojectImageTo3D + */ +CV_EXPORTS_W void triangulatePoints( InputArray projMatr1, InputArray projMatr2, + InputArray projPoints1, InputArray projPoints2, + OutputArray points4D ); + +/** @brief Refines coordinates of corresponding points. + +@param F 3x3 fundamental matrix. +@param points1 1xN array containing the first set of points. +@param points2 1xN array containing the second set of points. +@param newPoints1 The optimized points1. +@param newPoints2 The optimized points2. + +The function implements the Optimal Triangulation Method (see Multiple View Geometry for details). +For each given point correspondence points1[i] \<-\> points2[i], and a fundamental matrix F, it +computes the corrected correspondences newPoints1[i] \<-\> newPoints2[i] that minimize the geometric +error \f$d(points1[i], newPoints1[i])^2 + d(points2[i],newPoints2[i])^2\f$ (where \f$d(a,b)\f$ is the +geometric distance between points \f$a\f$ and \f$b\f$ ) subject to the epipolar constraint +\f$newPoints2^T * F * newPoints1 = 0\f$ . + */ +CV_EXPORTS_W void correctMatches( InputArray F, InputArray points1, InputArray points2, + OutputArray newPoints1, OutputArray newPoints2 ); + +/** @brief Filters off small noise blobs (speckles) in the disparity map + +@param img The input 16-bit signed disparity image +@param newVal The disparity value used to paint-off the speckles +@param maxSpeckleSize The maximum speckle size to consider it a speckle. Larger blobs are not +affected by the algorithm +@param maxDiff Maximum difference between neighbor disparity pixels to put them into the same +blob. Note that since StereoBM, StereoSGBM and may be other algorithms return a fixed-point +disparity map, where disparity values are multiplied by 16, this scale factor should be taken into +account when specifying this parameter value. +@param buf The optional temporary buffer to avoid memory allocation within the function. + */ +CV_EXPORTS_W void filterSpeckles( InputOutputArray img, double newVal, + int maxSpeckleSize, double maxDiff, + InputOutputArray buf = noArray() ); + +//! computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by cv::stereoRectify()) +CV_EXPORTS_W Rect getValidDisparityROI( Rect roi1, Rect roi2, + int minDisparity, int numberOfDisparities, + int SADWindowSize ); + +//! validates disparity using the left-right check. The matrix "cost" should be computed by the stereo correspondence algorithm +CV_EXPORTS_W void validateDisparity( InputOutputArray disparity, InputArray cost, + int minDisparity, int numberOfDisparities, + int disp12MaxDisp = 1 ); + +/** @brief Reprojects a disparity image to 3D space. + +@param disparity Input single-channel 8-bit unsigned, 16-bit signed, 32-bit signed or 32-bit +floating-point disparity image. If 16-bit signed format is used, the values are assumed to have no +fractional bits. +@param _3dImage Output 3-channel floating-point image of the same size as disparity . Each +element of _3dImage(x,y) contains 3D coordinates of the point (x,y) computed from the disparity +map. +@param Q \f$4 \times 4\f$ perspective transformation matrix that can be obtained with stereoRectify. +@param handleMissingValues Indicates, whether the function should handle missing values (i.e. +points where the disparity was not computed). If handleMissingValues=true, then pixels with the +minimal disparity that corresponds to the outliers (see StereoMatcher::compute ) are transformed +to 3D points with a very large Z value (currently set to 10000). +@param ddepth The optional output array depth. If it is -1, the output image will have CV_32F +depth. ddepth can also be set to CV_16S, CV_32S or CV_32F. + +The function transforms a single-channel disparity map to a 3-channel image representing a 3D +surface. That is, for each pixel (x,y) and the corresponding disparity d=disparity(x,y) , it +computes: + +\f[\begin{array}{l} [X \; Y \; Z \; W]^T = \texttt{Q} *[x \; y \; \texttt{disparity} (x,y) \; 1]^T \\ \texttt{\_3dImage} (x,y) = (X/W, \; Y/W, \; Z/W) \end{array}\f] + +The matrix Q can be an arbitrary \f$4 \times 4\f$ matrix (for example, the one computed by +stereoRectify). To reproject a sparse set of points {(x,y,d),...} to 3D space, use +perspectiveTransform . + */ +CV_EXPORTS_W void reprojectImageTo3D( InputArray disparity, + OutputArray _3dImage, InputArray Q, + bool handleMissingValues = false, + int ddepth = -1 ); + +/** @brief Calculates the Sampson Distance between two points. + +The function cv::sampsonDistance calculates and returns the first order approximation of the geometric error as: +\f[ +sd( \texttt{pt1} , \texttt{pt2} )= +\frac{(\texttt{pt2}^t \cdot \texttt{F} \cdot \texttt{pt1})^2} +{((\texttt{F} \cdot \texttt{pt1})(0))^2 + +((\texttt{F} \cdot \texttt{pt1})(1))^2 + +((\texttt{F}^t \cdot \texttt{pt2})(0))^2 + +((\texttt{F}^t \cdot \texttt{pt2})(1))^2} +\f] +The fundamental matrix may be calculated using the cv::findFundamentalMat function. See @cite HartleyZ00 11.4.3 for details. +@param pt1 first homogeneous 2d point +@param pt2 second homogeneous 2d point +@param F fundamental matrix +@return The computed Sampson distance. +*/ +CV_EXPORTS_W double sampsonDistance(InputArray pt1, InputArray pt2, InputArray F); + +/** @brief Computes an optimal affine transformation between two 3D point sets. + +It computes +\f[ +\begin{bmatrix} +x\\ +y\\ +z\\ +\end{bmatrix} += +\begin{bmatrix} +a_{11} & a_{12} & a_{13}\\ +a_{21} & a_{22} & a_{23}\\ +a_{31} & a_{32} & a_{33}\\ +\end{bmatrix} +\begin{bmatrix} +X\\ +Y\\ +Z\\ +\end{bmatrix} ++ +\begin{bmatrix} +b_1\\ +b_2\\ +b_3\\ +\end{bmatrix} +\f] + +@param src First input 3D point set containing \f$(X,Y,Z)\f$. +@param dst Second input 3D point set containing \f$(x,y,z)\f$. +@param out Output 3D affine transformation matrix \f$3 \times 4\f$ of the form +\f[ +\begin{bmatrix} +a_{11} & a_{12} & a_{13} & b_1\\ +a_{21} & a_{22} & a_{23} & b_2\\ +a_{31} & a_{32} & a_{33} & b_3\\ +\end{bmatrix} +\f] +@param inliers Output vector indicating which points are inliers (1-inlier, 0-outlier). +@param ransacThreshold Maximum reprojection error in the RANSAC algorithm to consider a point as +an inlier. +@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything +between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation +significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. + +The function estimates an optimal 3D affine transformation between two 3D point sets using the +RANSAC algorithm. + */ +CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, + OutputArray out, OutputArray inliers, + double ransacThreshold = 3, double confidence = 0.99); + +/** @brief Computes an optimal affine transformation between two 2D point sets. + +It computes +\f[ +\begin{bmatrix} +x\\ +y\\ +\end{bmatrix} += +\begin{bmatrix} +a_{11} & a_{12}\\ +a_{21} & a_{22}\\ +\end{bmatrix} +\begin{bmatrix} +X\\ +Y\\ +\end{bmatrix} ++ +\begin{bmatrix} +b_1\\ +b_2\\ +\end{bmatrix} +\f] + +@param from First input 2D point set containing \f$(X,Y)\f$. +@param to Second input 2D point set containing \f$(x,y)\f$. +@param inliers Output vector indicating which points are inliers (1-inlier, 0-outlier). +@param method Robust method used to compute transformation. The following methods are possible: +- cv::RANSAC - RANSAC-based robust method +- cv::LMEDS - Least-Median robust method +RANSAC is the default method. +@param ransacReprojThreshold Maximum reprojection error in the RANSAC algorithm to consider +a point as an inlier. Applies only to RANSAC. +@param maxIters The maximum number of robust method iterations. +@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything +between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation +significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. +@param refineIters Maximum number of iterations of refining algorithm (Levenberg-Marquardt). +Passing 0 will disable refining, so the output matrix will be output of robust method. + +@return Output 2D affine transformation matrix \f$2 \times 3\f$ or empty matrix if transformation +could not be estimated. The returned matrix has the following form: +\f[ +\begin{bmatrix} +a_{11} & a_{12} & b_1\\ +a_{21} & a_{22} & b_2\\ +\end{bmatrix} +\f] + +The function estimates an optimal 2D affine transformation between two 2D point sets using the +selected robust algorithm. + +The computed transformation is then refined further (using only inliers) with the +Levenberg-Marquardt method to reduce the re-projection error even more. + +@note +The RANSAC method can handle practically any ratio of outliers but needs a threshold to +distinguish inliers from outliers. The method LMeDS does not need any threshold but it works +correctly only when there are more than 50% of inliers. + +@sa estimateAffinePartial2D, getAffineTransform +*/ +CV_EXPORTS_W cv::Mat estimateAffine2D(InputArray from, InputArray to, OutputArray inliers = noArray(), + int method = RANSAC, double ransacReprojThreshold = 3, + size_t maxIters = 2000, double confidence = 0.99, + size_t refineIters = 10); + +/** @brief Computes an optimal limited affine transformation with 4 degrees of freedom between +two 2D point sets. + +@param from First input 2D point set. +@param to Second input 2D point set. +@param inliers Output vector indicating which points are inliers. +@param method Robust method used to compute transformation. The following methods are possible: +- cv::RANSAC - RANSAC-based robust method +- cv::LMEDS - Least-Median robust method +RANSAC is the default method. +@param ransacReprojThreshold Maximum reprojection error in the RANSAC algorithm to consider +a point as an inlier. Applies only to RANSAC. +@param maxIters The maximum number of robust method iterations. +@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything +between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation +significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. +@param refineIters Maximum number of iterations of refining algorithm (Levenberg-Marquardt). +Passing 0 will disable refining, so the output matrix will be output of robust method. + +@return Output 2D affine transformation (4 degrees of freedom) matrix \f$2 \times 3\f$ or +empty matrix if transformation could not be estimated. + +The function estimates an optimal 2D affine transformation with 4 degrees of freedom limited to +combinations of translation, rotation, and uniform scaling. Uses the selected algorithm for robust +estimation. + +The computed transformation is then refined further (using only inliers) with the +Levenberg-Marquardt method to reduce the re-projection error even more. + +Estimated transformation matrix is: +\f[ \begin{bmatrix} \cos(\theta) \cdot s & -\sin(\theta) \cdot s & t_x \\ + \sin(\theta) \cdot s & \cos(\theta) \cdot s & t_y +\end{bmatrix} \f] +Where \f$ \theta \f$ is the rotation angle, \f$ s \f$ the scaling factor and \f$ t_x, t_y \f$ are +translations in \f$ x, y \f$ axes respectively. + +@note +The RANSAC method can handle practically any ratio of outliers but need a threshold to +distinguish inliers from outliers. The method LMeDS does not need any threshold but it works +correctly only when there are more than 50% of inliers. + +@sa estimateAffine2D, getAffineTransform +*/ +CV_EXPORTS_W cv::Mat estimateAffinePartial2D(InputArray from, InputArray to, OutputArray inliers = noArray(), + int method = RANSAC, double ransacReprojThreshold = 3, + size_t maxIters = 2000, double confidence = 0.99, + size_t refineIters = 10); + +/** @example samples/cpp/tutorial_code/features2D/Homography/decompose_homography.cpp +An example program with homography decomposition. + +Check @ref tutorial_homography "the corresponding tutorial" for more details. +*/ + +/** @brief Decompose a homography matrix to rotation(s), translation(s) and plane normal(s). + +@param H The input homography matrix between two images. +@param K The input intrinsic camera calibration matrix. +@param rotations Array of rotation matrices. +@param translations Array of translation matrices. +@param normals Array of plane normal matrices. + +This function extracts relative camera motion between two views observing a planar object from the +homography H induced by the plane. The intrinsic camera matrix K must also be provided. The function +may return up to four mathematical solution sets. At least two of the solutions may further be +invalidated if point correspondences are available by applying positive depth constraint (all points +must be in front of the camera). The decomposition method is described in detail in @cite Malis . + */ +CV_EXPORTS_W int decomposeHomographyMat(InputArray H, + InputArray K, + OutputArrayOfArrays rotations, + OutputArrayOfArrays translations, + OutputArrayOfArrays normals); + +/** @brief Filters homography decompositions based on additional information. + +@param rotations Vector of rotation matrices. +@param normals Vector of plane normal matrices. +@param beforePoints Vector of (rectified) visible reference points before the homography is applied +@param afterPoints Vector of (rectified) visible reference points after the homography is applied +@param possibleSolutions Vector of int indices representing the viable solution set after filtering +@param pointsMask optional Mat/Vector of 8u type representing the mask for the inliers as given by the findHomography function + +This function is intended to filter the output of the decomposeHomographyMat based on additional +information as described in @cite Malis . The summary of the method: the decomposeHomographyMat function +returns 2 unique solutions and their "opposites" for a total of 4 solutions. If we have access to the +sets of points visible in the camera frame before and after the homography transformation is applied, +we can determine which are the true potential solutions and which are the opposites by verifying which +homographies are consistent with all visible reference points being in front of the camera. The inputs +are left unchanged; the filtered solution set is returned as indices into the existing one. + +*/ +CV_EXPORTS_W void filterHomographyDecompByVisibleRefpoints(InputArrayOfArrays rotations, + InputArrayOfArrays normals, + InputArray beforePoints, + InputArray afterPoints, + OutputArray possibleSolutions, + InputArray pointsMask = noArray()); + +/** @brief The base class for stereo correspondence algorithms. + */ +class CV_EXPORTS_W StereoMatcher : public Algorithm +{ +public: + enum { DISP_SHIFT = 4, + DISP_SCALE = (1 << DISP_SHIFT) + }; + + /** @brief Computes disparity map for the specified stereo pair + + @param left Left 8-bit single-channel image. + @param right Right image of the same size and the same type as the left one. + @param disparity Output disparity map. It has the same size as the input images. Some algorithms, + like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (where each disparity value + has 4 fractional bits), whereas other algorithms output 32-bit floating-point disparity map. + */ + CV_WRAP virtual void compute( InputArray left, InputArray right, + OutputArray disparity ) = 0; + + CV_WRAP virtual int getMinDisparity() const = 0; + CV_WRAP virtual void setMinDisparity(int minDisparity) = 0; + + CV_WRAP virtual int getNumDisparities() const = 0; + CV_WRAP virtual void setNumDisparities(int numDisparities) = 0; + + CV_WRAP virtual int getBlockSize() const = 0; + CV_WRAP virtual void setBlockSize(int blockSize) = 0; + + CV_WRAP virtual int getSpeckleWindowSize() const = 0; + CV_WRAP virtual void setSpeckleWindowSize(int speckleWindowSize) = 0; + + CV_WRAP virtual int getSpeckleRange() const = 0; + CV_WRAP virtual void setSpeckleRange(int speckleRange) = 0; + + CV_WRAP virtual int getDisp12MaxDiff() const = 0; + CV_WRAP virtual void setDisp12MaxDiff(int disp12MaxDiff) = 0; +}; + + +/** @brief Class for computing stereo correspondence using the block matching algorithm, introduced and +contributed to OpenCV by K. Konolige. + */ +class CV_EXPORTS_W StereoBM : public StereoMatcher +{ +public: + enum { PREFILTER_NORMALIZED_RESPONSE = 0, + PREFILTER_XSOBEL = 1 + }; + + CV_WRAP virtual int getPreFilterType() const = 0; + CV_WRAP virtual void setPreFilterType(int preFilterType) = 0; + + CV_WRAP virtual int getPreFilterSize() const = 0; + CV_WRAP virtual void setPreFilterSize(int preFilterSize) = 0; + + CV_WRAP virtual int getPreFilterCap() const = 0; + CV_WRAP virtual void setPreFilterCap(int preFilterCap) = 0; + + CV_WRAP virtual int getTextureThreshold() const = 0; + CV_WRAP virtual void setTextureThreshold(int textureThreshold) = 0; + + CV_WRAP virtual int getUniquenessRatio() const = 0; + CV_WRAP virtual void setUniquenessRatio(int uniquenessRatio) = 0; + + CV_WRAP virtual int getSmallerBlockSize() const = 0; + CV_WRAP virtual void setSmallerBlockSize(int blockSize) = 0; + + CV_WRAP virtual Rect getROI1() const = 0; + CV_WRAP virtual void setROI1(Rect roi1) = 0; + + CV_WRAP virtual Rect getROI2() const = 0; + CV_WRAP virtual void setROI2(Rect roi2) = 0; + + /** @brief Creates StereoBM object + + @param numDisparities the disparity search range. For each pixel algorithm will find the best + disparity from 0 (default minimum disparity) to numDisparities. The search range can then be + shifted by changing the minimum disparity. + @param blockSize the linear size of the blocks compared by the algorithm. The size should be odd + (as the block is centered at the current pixel). Larger block size implies smoother, though less + accurate disparity map. Smaller block size gives more detailed disparity map, but there is higher + chance for algorithm to find a wrong correspondence. + + The function create StereoBM object. You can then call StereoBM::compute() to compute disparity for + a specific stereo pair. + */ + CV_WRAP static Ptr create(int numDisparities = 0, int blockSize = 21); +}; + +/** @brief The class implements the modified H. Hirschmuller algorithm @cite HH08 that differs from the original +one as follows: + +- By default, the algorithm is single-pass, which means that you consider only 5 directions +instead of 8. Set mode=StereoSGBM::MODE_HH in createStereoSGBM to run the full variant of the +algorithm but beware that it may consume a lot of memory. +- The algorithm matches blocks, not individual pixels. Though, setting blockSize=1 reduces the +blocks to single pixels. +- Mutual information cost function is not implemented. Instead, a simpler Birchfield-Tomasi +sub-pixel metric from @cite BT98 is used. Though, the color images are supported as well. +- Some pre- and post- processing steps from K. Konolige algorithm StereoBM are included, for +example: pre-filtering (StereoBM::PREFILTER_XSOBEL type) and post-filtering (uniqueness +check, quadratic interpolation and speckle filtering). + +@note + - (Python) An example illustrating the use of the StereoSGBM matching algorithm can be found + at opencv_source_code/samples/python/stereo_match.py + */ +class CV_EXPORTS_W StereoSGBM : public StereoMatcher +{ +public: + enum + { + MODE_SGBM = 0, + MODE_HH = 1, + MODE_SGBM_3WAY = 2, + MODE_HH4 = 3 + }; + + CV_WRAP virtual int getPreFilterCap() const = 0; + CV_WRAP virtual void setPreFilterCap(int preFilterCap) = 0; + + CV_WRAP virtual int getUniquenessRatio() const = 0; + CV_WRAP virtual void setUniquenessRatio(int uniquenessRatio) = 0; + + CV_WRAP virtual int getP1() const = 0; + CV_WRAP virtual void setP1(int P1) = 0; + + CV_WRAP virtual int getP2() const = 0; + CV_WRAP virtual void setP2(int P2) = 0; + + CV_WRAP virtual int getMode() const = 0; + CV_WRAP virtual void setMode(int mode) = 0; + + /** @brief Creates StereoSGBM object + + @param minDisparity Minimum possible disparity value. Normally, it is zero but sometimes + rectification algorithms can shift images, so this parameter needs to be adjusted accordingly. + @param numDisparities Maximum disparity minus minimum disparity. The value is always greater than + zero. In the current implementation, this parameter must be divisible by 16. + @param blockSize Matched block size. It must be an odd number \>=1 . Normally, it should be + somewhere in the 3..11 range. + @param P1 The first parameter controlling the disparity smoothness. See below. + @param P2 The second parameter controlling the disparity smoothness. The larger the values are, + the smoother the disparity is. P1 is the penalty on the disparity change by plus or minus 1 + between neighbor pixels. P2 is the penalty on the disparity change by more than 1 between neighbor + pixels. The algorithm requires P2 \> P1 . See stereo_match.cpp sample where some reasonably good + P1 and P2 values are shown (like 8\*number_of_image_channels\*SADWindowSize\*SADWindowSize and + 32\*number_of_image_channels\*SADWindowSize\*SADWindowSize , respectively). + @param disp12MaxDiff Maximum allowed difference (in integer pixel units) in the left-right + disparity check. Set it to a non-positive value to disable the check. + @param preFilterCap Truncation value for the prefiltered image pixels. The algorithm first + computes x-derivative at each pixel and clips its value by [-preFilterCap, preFilterCap] interval. + The result values are passed to the Birchfield-Tomasi pixel cost function. + @param uniquenessRatio Margin in percentage by which the best (minimum) computed cost function + value should "win" the second best value to consider the found match correct. Normally, a value + within the 5-15 range is good enough. + @param speckleWindowSize Maximum size of smooth disparity regions to consider their noise speckles + and invalidate. Set it to 0 to disable speckle filtering. Otherwise, set it somewhere in the + 50-200 range. + @param speckleRange Maximum disparity variation within each connected component. If you do speckle + filtering, set the parameter to a positive value, it will be implicitly multiplied by 16. + Normally, 1 or 2 is good enough. + @param mode Set it to StereoSGBM::MODE_HH to run the full-scale two-pass dynamic programming + algorithm. It will consume O(W\*H\*numDisparities) bytes, which is large for 640x480 stereo and + huge for HD-size pictures. By default, it is set to false . + + The first constructor initializes StereoSGBM with all the default parameters. So, you only have to + set StereoSGBM::numDisparities at minimum. The second constructor enables you to set each parameter + to a custom value. + */ + CV_WRAP static Ptr create(int minDisparity = 0, int numDisparities = 16, int blockSize = 3, + int P1 = 0, int P2 = 0, int disp12MaxDiff = 0, + int preFilterCap = 0, int uniquenessRatio = 0, + int speckleWindowSize = 0, int speckleRange = 0, + int mode = StereoSGBM::MODE_SGBM); +}; + + +//! cv::undistort mode +enum UndistortTypes +{ + PROJ_SPHERICAL_ORTHO = 0, + PROJ_SPHERICAL_EQRECT = 1 +}; + +/** @brief Transforms an image to compensate for lens distortion. + +The function transforms an image to compensate radial and tangential lens distortion. + +The function is simply a combination of #initUndistortRectifyMap (with unity R ) and #remap +(with bilinear interpolation). See the former function for details of the transformation being +performed. + +Those pixels in the destination image, for which there is no correspondent pixels in the source +image, are filled with zeros (black color). + +A particular subset of the source image that will be visible in the corrected image can be regulated +by newCameraMatrix. You can use #getOptimalNewCameraMatrix to compute the appropriate +newCameraMatrix depending on your requirements. + +The camera matrix and the distortion parameters can be determined using #calibrateCamera. If +the resolution of images is different from the resolution used at the calibration stage, \f$f_x, +f_y, c_x\f$ and \f$c_y\f$ need to be scaled accordingly, while the distortion coefficients remain +the same. + +@param src Input (distorted) image. +@param dst Output (corrected) image that has the same size and type as src . +@param cameraMatrix Input camera matrix \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ +of 4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed. +@param newCameraMatrix Camera matrix of the distorted image. By default, it is the same as +cameraMatrix but you may additionally scale and shift the result by using a different matrix. + */ +CV_EXPORTS_W void undistort( InputArray src, OutputArray dst, + InputArray cameraMatrix, + InputArray distCoeffs, + InputArray newCameraMatrix = noArray() ); + +/** @brief Computes the undistortion and rectification transformation map. + +The function computes the joint undistortion and rectification transformation and represents the +result in the form of maps for remap. The undistorted image looks like original, as if it is +captured with a camera using the camera matrix =newCameraMatrix and zero distortion. In case of a +monocular camera, newCameraMatrix is usually equal to cameraMatrix, or it can be computed by +#getOptimalNewCameraMatrix for a better control over scaling. In case of a stereo camera, +newCameraMatrix is normally set to P1 or P2 computed by #stereoRectify . + +Also, this new camera is oriented differently in the coordinate space, according to R. That, for +example, helps to align two heads of a stereo camera so that the epipolar lines on both images +become horizontal and have the same y- coordinate (in case of a horizontally aligned stereo camera). + +The function actually builds the maps for the inverse mapping algorithm that is used by remap. That +is, for each pixel \f$(u, v)\f$ in the destination (corrected and rectified) image, the function +computes the corresponding coordinates in the source image (that is, in the original image from +camera). The following process is applied: +\f[ +\begin{array}{l} +x \leftarrow (u - {c'}_x)/{f'}_x \\ +y \leftarrow (v - {c'}_y)/{f'}_y \\ +{[X\,Y\,W]} ^T \leftarrow R^{-1}*[x \, y \, 1]^T \\ +x' \leftarrow X/W \\ +y' \leftarrow Y/W \\ +r^2 \leftarrow x'^2 + y'^2 \\ +x'' \leftarrow x' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} ++ 2p_1 x' y' + p_2(r^2 + 2 x'^2) + s_1 r^2 + s_2 r^4\\ +y'' \leftarrow y' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} ++ p_1 (r^2 + 2 y'^2) + 2 p_2 x' y' + s_3 r^2 + s_4 r^4 \\ +s\vecthree{x'''}{y'''}{1} = +\vecthreethree{R_{33}(\tau_x, \tau_y)}{0}{-R_{13}((\tau_x, \tau_y)} +{0}{R_{33}(\tau_x, \tau_y)}{-R_{23}(\tau_x, \tau_y)} +{0}{0}{1} R(\tau_x, \tau_y) \vecthree{x''}{y''}{1}\\ +map_x(u,v) \leftarrow x''' f_x + c_x \\ +map_y(u,v) \leftarrow y''' f_y + c_y +\end{array} +\f] +where \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ +are the distortion coefficients. + +In case of a stereo camera, this function is called twice: once for each camera head, after +stereoRectify, which in its turn is called after #stereoCalibrate. But if the stereo camera +was not calibrated, it is still possible to compute the rectification transformations directly from +the fundamental matrix using #stereoRectifyUncalibrated. For each camera, the function computes +homography H as the rectification transformation in a pixel domain, not a rotation matrix R in 3D +space. R can be computed from H as +\f[\texttt{R} = \texttt{cameraMatrix} ^{-1} \cdot \texttt{H} \cdot \texttt{cameraMatrix}\f] +where cameraMatrix can be chosen arbitrarily. + +@param cameraMatrix Input camera matrix \f$A=\vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ +of 4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed. +@param R Optional rectification transformation in the object space (3x3 matrix). R1 or R2 , +computed by #stereoRectify can be passed here. If the matrix is empty, the identity transformation +is assumed. In cvInitUndistortMap R assumed to be an identity matrix. +@param newCameraMatrix New camera matrix \f$A'=\vecthreethree{f_x'}{0}{c_x'}{0}{f_y'}{c_y'}{0}{0}{1}\f$. +@param size Undistorted image size. +@param m1type Type of the first output map that can be CV_32FC1, CV_32FC2 or CV_16SC2, see #convertMaps +@param map1 The first output map. +@param map2 The second output map. + */ +CV_EXPORTS_W +void initUndistortRectifyMap(InputArray cameraMatrix, InputArray distCoeffs, + InputArray R, InputArray newCameraMatrix, + Size size, int m1type, OutputArray map1, OutputArray map2); + +//! initializes maps for #remap for wide-angle +CV_EXPORTS +float initWideAngleProjMap(InputArray cameraMatrix, InputArray distCoeffs, + Size imageSize, int destImageWidth, + int m1type, OutputArray map1, OutputArray map2, + enum UndistortTypes projType = PROJ_SPHERICAL_EQRECT, double alpha = 0); +static inline +float initWideAngleProjMap(InputArray cameraMatrix, InputArray distCoeffs, + Size imageSize, int destImageWidth, + int m1type, OutputArray map1, OutputArray map2, + int projType, double alpha = 0) +{ + return initWideAngleProjMap(cameraMatrix, distCoeffs, imageSize, destImageWidth, + m1type, map1, map2, (UndistortTypes)projType, alpha); +} + +/** @brief Returns the default new camera matrix. + +The function returns the camera matrix that is either an exact copy of the input cameraMatrix (when +centerPrinicipalPoint=false ), or the modified one (when centerPrincipalPoint=true). + +In the latter case, the new camera matrix will be: + +\f[\begin{bmatrix} f_x && 0 && ( \texttt{imgSize.width} -1)*0.5 \\ 0 && f_y && ( \texttt{imgSize.height} -1)*0.5 \\ 0 && 0 && 1 \end{bmatrix} ,\f] + +where \f$f_x\f$ and \f$f_y\f$ are \f$(0,0)\f$ and \f$(1,1)\f$ elements of cameraMatrix, respectively. + +By default, the undistortion functions in OpenCV (see #initUndistortRectifyMap, #undistort) do not +move the principal point. However, when you work with stereo, it is important to move the principal +points in both views to the same y-coordinate (which is required by most of stereo correspondence +algorithms), and may be to the same x-coordinate too. So, you can form the new camera matrix for +each view where the principal points are located at the center. + +@param cameraMatrix Input camera matrix. +@param imgsize Camera view image size in pixels. +@param centerPrincipalPoint Location of the principal point in the new camera matrix. The +parameter indicates whether this location should be at the image center or not. + */ +CV_EXPORTS_W +Mat getDefaultNewCameraMatrix(InputArray cameraMatrix, Size imgsize = Size(), + bool centerPrincipalPoint = false); + +/** @brief Computes the ideal point coordinates from the observed point coordinates. + +The function is similar to #undistort and #initUndistortRectifyMap but it operates on a +sparse set of points instead of a raster image. Also the function performs a reverse transformation +to projectPoints. In case of a 3D object, it does not reconstruct its 3D coordinates, but for a +planar object, it does, up to a translation vector, if the proper R is specified. + +For each observed point coordinate \f$(u, v)\f$ the function computes: +\f[ +\begin{array}{l} +x^{"} \leftarrow (u - c_x)/f_x \\ +y^{"} \leftarrow (v - c_y)/f_y \\ +(x',y') = undistort(x^{"},y^{"}, \texttt{distCoeffs}) \\ +{[X\,Y\,W]} ^T \leftarrow R*[x' \, y' \, 1]^T \\ +x \leftarrow X/W \\ +y \leftarrow Y/W \\ +\text{only performed if P is specified:} \\ +u' \leftarrow x {f'}_x + {c'}_x \\ +v' \leftarrow y {f'}_y + {c'}_y +\end{array} +\f] + +where *undistort* is an approximate iterative algorithm that estimates the normalized original +point coordinates out of the normalized distorted point coordinates ("normalized" means that the +coordinates do not depend on the camera matrix). + +The function can be used for both a stereo camera head or a monocular camera (when R is empty). + +@param src Observed point coordinates, 1xN or Nx1 2-channel (CV_32FC2 or CV_64FC2). +@param dst Output ideal point coordinates after undistortion and reverse perspective +transformation. If matrix P is identity or omitted, dst will contain normalized point coordinates. +@param cameraMatrix Camera matrix \f$\vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . +@param distCoeffs Input vector of distortion coefficients +\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ +of 4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed. +@param R Rectification transformation in the object space (3x3 matrix). R1 or R2 computed by +#stereoRectify can be passed here. If the matrix is empty, the identity transformation is used. +@param P New camera matrix (3x3) or new projection matrix (3x4) \f$\begin{bmatrix} {f'}_x & 0 & {c'}_x & t_x \\ 0 & {f'}_y & {c'}_y & t_y \\ 0 & 0 & 1 & t_z \end{bmatrix}\f$. P1 or P2 computed by +#stereoRectify can be passed here. If the matrix is empty, the identity new camera matrix is used. + */ +CV_EXPORTS_W +void undistortPoints(InputArray src, OutputArray dst, + InputArray cameraMatrix, InputArray distCoeffs, + InputArray R = noArray(), InputArray P = noArray()); +/** @overload + @note Default version of #undistortPoints does 5 iterations to compute undistorted points. + */ +CV_EXPORTS_AS(undistortPointsIter) +void undistortPoints(InputArray src, OutputArray dst, + InputArray cameraMatrix, InputArray distCoeffs, + InputArray R, InputArray P, TermCriteria criteria); + +//! @} calib3d + +/** @brief The methods in this namespace use a so-called fisheye camera model. + @ingroup calib3d_fisheye +*/ +namespace fisheye +{ +//! @addtogroup calib3d_fisheye +//! @{ + + enum{ + CALIB_USE_INTRINSIC_GUESS = 1 << 0, + CALIB_RECOMPUTE_EXTRINSIC = 1 << 1, + CALIB_CHECK_COND = 1 << 2, + CALIB_FIX_SKEW = 1 << 3, + CALIB_FIX_K1 = 1 << 4, + CALIB_FIX_K2 = 1 << 5, + CALIB_FIX_K3 = 1 << 6, + CALIB_FIX_K4 = 1 << 7, + CALIB_FIX_INTRINSIC = 1 << 8, + CALIB_FIX_PRINCIPAL_POINT = 1 << 9 + }; + + /** @brief Projects points using fisheye model + + @param objectPoints Array of object points, 1xN/Nx1 3-channel (or vector\ ), where N is + the number of points in the view. + @param imagePoints Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or + vector\. + @param affine + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param alpha The skew coefficient. + @param jacobian Optional output 2Nx15 jacobian matrix of derivatives of image points with respect + to components of the focal lengths, coordinates of the principal point, distortion coefficients, + rotation vector, translation vector, and the skew. In the old interface different components of + the jacobian are returned via different output parameters. + + The function computes projections of 3D points to the image plane given intrinsic and extrinsic + camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of + image points coordinates (as functions of all the input parameters) with respect to the particular + parameters, intrinsic and/or extrinsic. + */ + CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + /** @overload */ + CV_EXPORTS_W void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + /** @brief Distorts 2D points using fisheye model. + + @param undistorted Array of object points, 1xN/Nx1 2-channel (or vector\ ), where N is + the number of points in the view. + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param alpha The skew coefficient. + @param distorted Output array of image points, 1xN/Nx1 2-channel, or vector\ . + + Note that the function assumes the camera matrix of the undistorted points to be identity. + This means if you want to transform back points undistorted with undistortPoints() you have to + multiply them with \f$P^{-1}\f$. + */ + CV_EXPORTS_W void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + + /** @brief Undistorts 2D points using fisheye model + + @param distorted Array of object points, 1xN/Nx1 2-channel (or vector\ ), where N is the + number of points in the view. + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 + 1-channel or 1x1 3-channel + @param P New camera matrix (3x3) or new projection matrix (3x4) + @param undistorted Output array of image points, 1xN/Nx1 2-channel, or vector\ . + */ + CV_EXPORTS_W void undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); + + /** @brief Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero + distortion is used, if R or P is empty identity matrixes are used. + + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 + 1-channel or 1x1 3-channel + @param P New camera matrix (3x3) or new projection matrix (3x4) + @param size Undistorted image size. + @param m1type Type of the first output map that can be CV_32FC1 or CV_16SC2 . See convertMaps() + for details. + @param map1 The first output map. + @param map2 The second output map. + */ + CV_EXPORTS_W void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); + + /** @brief Transforms an image to compensate for fisheye lens distortion. + + @param distorted image with fisheye lens distortion. + @param undistorted Output image with compensated fisheye lens distortion. + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param Knew Camera matrix of the distorted image. By default, it is the identity matrix but you + may additionally scale and shift the result by using a different matrix. + @param new_size + + The function transforms an image to compensate radial and tangential lens distortion. + + The function is simply a combination of fisheye::initUndistortRectifyMap (with unity R ) and remap + (with bilinear interpolation). See the former function for details of the transformation being + performed. + + See below the results of undistortImage. + - a\) result of undistort of perspective camera model (all possible coefficients (k_1, k_2, k_3, + k_4, k_5, k_6) of distortion were optimized under calibration) + - b\) result of fisheye::undistortImage of fisheye camera model (all possible coefficients (k_1, k_2, + k_3, k_4) of fisheye distortion were optimized under calibration) + - c\) original image was captured with fisheye lens + + Pictures a) and b) almost the same. But if we consider points of image located far from the center + of image, we can notice that on image a) these points are distorted. + + ![image](pics/fisheye_undistorted.jpg) + */ + CV_EXPORTS_W void undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); + + /** @brief Estimates new camera matrix for undistortion or rectification. + + @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$. + @param image_size + @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 + 1-channel or 1x1 3-channel + @param P New camera matrix (3x3) or new projection matrix (3x4) + @param balance Sets the new focal length in range between the min focal length and the max focal + length. Balance is in range of [0, 1]. + @param new_size + @param fov_scale Divisor for new focal length. + */ + CV_EXPORTS_W void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + /** @brief Performs camera calibaration + + @param objectPoints vector of vectors of calibration pattern points in the calibration pattern + coordinate space. + @param imagePoints vector of vectors of the projections of calibration pattern points. + imagePoints.size() and objectPoints.size() and imagePoints[i].size() must be equal to + objectPoints[i].size() for each i. + @param image_size Size of the image used only to initialize the intrinsic camera matrix. + @param K Output 3x3 floating-point camera matrix + \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . If + fisheye::CALIB_USE_INTRINSIC_GUESS/ is specified, some or all of fx, fy, cx, cy must be + initialized before calling the function. + @param D Output vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$. + @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view. + That is, each k-th rotation vector together with the corresponding k-th translation vector (see + the next output parameter description) brings the calibration pattern from the model coordinate + space (in which object points are specified) to the world coordinate space, that is, a real + position of the calibration pattern in the k-th pattern view (k=0.. *M* -1). + @param tvecs Output vector of translation vectors estimated for each pattern view. + @param flags Different flags that may be zero or a combination of the following values: + - **fisheye::CALIB_USE_INTRINSIC_GUESS** cameraMatrix contains valid initial values of + fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image + center ( imageSize is used), and focal distances are computed in a least-squares fashion. + - **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration + of intrinsic optimization. + - **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + - **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + - **fisheye::CALIB_FIX_K1..fisheye::CALIB_FIX_K4** Selected distortion coefficients + are set to zeros and stay zero. + - **fisheye::CALIB_FIX_PRINCIPAL_POINT** The principal point is not changed during the global +optimization. It stays at the center or at a different location specified when CALIB_USE_INTRINSIC_GUESS is set too. + @param criteria Termination criteria for the iterative optimization algorithm. + */ + CV_EXPORTS_W double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + + /** @brief Stereo rectification for fisheye camera model + + @param K1 First camera matrix. + @param D1 First camera distortion parameters. + @param K2 Second camera matrix. + @param D2 Second camera distortion parameters. + @param imageSize Size of the image used for stereo calibration. + @param R Rotation matrix between the coordinate systems of the first and the second + cameras. + @param tvec Translation vector between coordinate systems of the cameras. + @param R1 Output 3x3 rectification transform (rotation matrix) for the first camera. + @param R2 Output 3x3 rectification transform (rotation matrix) for the second camera. + @param P1 Output 3x4 projection matrix in the new (rectified) coordinate systems for the first + camera. + @param P2 Output 3x4 projection matrix in the new (rectified) coordinate systems for the second + camera. + @param Q Output \f$4 \times 4\f$ disparity-to-depth mapping matrix (see reprojectImageTo3D ). + @param flags Operation flags that may be zero or CALIB_ZERO_DISPARITY . If the flag is set, + the function makes the principal points of each camera have the same pixel coordinates in the + rectified views. And if the flag is not set, the function may still shift the images in the + horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the + useful image area. + @param newImageSize New image resolution after rectification. The same size should be passed to + initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0) + is passed (default), it is set to the original imageSize . Setting it to larger value can help you + preserve details in the original image, especially when there is a big radial distortion. + @param balance Sets the new focal length in range between the min focal length and the max focal + length. Balance is in range of [0, 1]. + @param fov_scale Divisor for new focal length. + */ + CV_EXPORTS_W void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0); + + /** @brief Performs stereo calibration + + @param objectPoints Vector of vectors of the calibration pattern points. + @param imagePoints1 Vector of vectors of the projections of the calibration pattern points, + observed by the first camera. + @param imagePoints2 Vector of vectors of the projections of the calibration pattern points, + observed by the second camera. + @param K1 Input/output first camera matrix: + \f$\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}\f$ , \f$j = 0,\, 1\f$ . If + any of fisheye::CALIB_USE_INTRINSIC_GUESS , fisheye::CALIB_FIX_INTRINSIC are specified, + some or all of the matrix components must be initialized. + @param D1 Input/output vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$ of 4 elements. + @param K2 Input/output second camera matrix. The parameter is similar to K1 . + @param D2 Input/output lens distortion coefficients for the second camera. The parameter is + similar to D1 . + @param imageSize Size of the image used only to initialize intrinsic camera matrix. + @param R Output rotation matrix between the 1st and the 2nd camera coordinate systems. + @param T Output translation vector between the coordinate systems of the cameras. + @param flags Different flags that may be zero or a combination of the following values: + - **fisheye::CALIB_FIX_INTRINSIC** Fix K1, K2? and D1, D2? so that only R, T matrices + are estimated. + - **fisheye::CALIB_USE_INTRINSIC_GUESS** K1, K2 contains valid initial values of + fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image + center (imageSize is used), and focal distances are computed in a least-squares fashion. + - **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration + of intrinsic optimization. + - **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + - **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + - **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay + zero. + @param criteria Termination criteria for the iterative optimization algorithm. + */ + CV_EXPORTS_W double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags = fisheye::CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + +//! @} calib3d_fisheye +} // end namespace fisheye + +} //end namespace cv + +#if 0 //def __cplusplus +////////////////////////////////////////////////////////////////////////////////////////// +class CV_EXPORTS CvLevMarq +{ +public: + CvLevMarq(); + CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria= + cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), + bool completeSymmFlag=false ); + ~CvLevMarq(); + void init( int nparams, int nerrs, CvTermCriteria criteria= + cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), + bool completeSymmFlag=false ); + bool update( const CvMat*& param, CvMat*& J, CvMat*& err ); + bool updateAlt( const CvMat*& param, CvMat*& JtJ, CvMat*& JtErr, double*& errNorm ); + + void clear(); + void step(); + enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 }; + + cv::Ptr mask; + cv::Ptr prevParam; + cv::Ptr param; + cv::Ptr J; + cv::Ptr err; + cv::Ptr JtJ; + cv::Ptr JtJN; + cv::Ptr JtErr; + cv::Ptr JtJV; + cv::Ptr JtJW; + double prevErrNorm, errNorm; + int lambdaLg10; + CvTermCriteria criteria; + int state; + int iters; + bool completeSymmFlag; + int solveMethod; +}; +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d.hpp b/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d.hpp new file mode 100644 index 0000000..b3da45e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/calib3d.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d_c.h b/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d_c.h new file mode 100644 index 0000000..e2af07b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/calib3d/calib3d_c.h @@ -0,0 +1,150 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CALIB3D_C_H +#define OPENCV_CALIB3D_C_H + +#include "opencv2/core/types_c.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Calculates fundamental matrix given a set of corresponding points */ +#define CV_FM_7POINT 1 +#define CV_FM_8POINT 2 + +#define CV_LMEDS 4 +#define CV_RANSAC 8 + +#define CV_FM_LMEDS_ONLY CV_LMEDS +#define CV_FM_RANSAC_ONLY CV_RANSAC +#define CV_FM_LMEDS CV_LMEDS +#define CV_FM_RANSAC CV_RANSAC + +enum +{ + CV_ITERATIVE = 0, + CV_EPNP = 1, // F.Moreno-Noguer, V.Lepetit and P.Fua "EPnP: Efficient Perspective-n-Point Camera Pose Estimation" + CV_P3P = 2, // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem" + CV_DLS = 3 // Joel A. Hesch and Stergios I. Roumeliotis. "A Direct Least-Squares (DLS) Method for PnP" +}; + +#define CV_CALIB_CB_ADAPTIVE_THRESH 1 +#define CV_CALIB_CB_NORMALIZE_IMAGE 2 +#define CV_CALIB_CB_FILTER_QUADS 4 +#define CV_CALIB_CB_FAST_CHECK 8 + +#define CV_CALIB_USE_INTRINSIC_GUESS 1 +#define CV_CALIB_FIX_ASPECT_RATIO 2 +#define CV_CALIB_FIX_PRINCIPAL_POINT 4 +#define CV_CALIB_ZERO_TANGENT_DIST 8 +#define CV_CALIB_FIX_FOCAL_LENGTH 16 +#define CV_CALIB_FIX_K1 32 +#define CV_CALIB_FIX_K2 64 +#define CV_CALIB_FIX_K3 128 +#define CV_CALIB_FIX_K4 2048 +#define CV_CALIB_FIX_K5 4096 +#define CV_CALIB_FIX_K6 8192 +#define CV_CALIB_RATIONAL_MODEL 16384 +#define CV_CALIB_THIN_PRISM_MODEL 32768 +#define CV_CALIB_FIX_S1_S2_S3_S4 65536 +#define CV_CALIB_TILTED_MODEL 262144 +#define CV_CALIB_FIX_TAUX_TAUY 524288 +#define CV_CALIB_FIX_TANGENT_DIST 2097152 + +#define CV_CALIB_NINTRINSIC 18 + +#define CV_CALIB_FIX_INTRINSIC 256 +#define CV_CALIB_SAME_FOCAL_LENGTH 512 + +#define CV_CALIB_ZERO_DISPARITY 1024 + +/* stereo correspondence parameters and functions */ +#define CV_STEREO_BM_NORMALIZED_RESPONSE 0 +#define CV_STEREO_BM_XSOBEL 1 + +#ifdef __cplusplus +} // extern "C" + +////////////////////////////////////////////////////////////////////////////////////////// +class CV_EXPORTS CvLevMarq +{ +public: + CvLevMarq(); + CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria= + cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), + bool completeSymmFlag=false ); + ~CvLevMarq(); + void init( int nparams, int nerrs, CvTermCriteria criteria= + cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), + bool completeSymmFlag=false ); + bool update( const CvMat*& param, CvMat*& J, CvMat*& err ); + bool updateAlt( const CvMat*& param, CvMat*& JtJ, CvMat*& JtErr, double*& errNorm ); + + void clear(); + void step(); + enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 }; + + cv::Ptr mask; + cv::Ptr prevParam; + cv::Ptr param; + cv::Ptr J; + cv::Ptr err; + cv::Ptr JtJ; + cv::Ptr JtJN; + cv::Ptr JtErr; + cv::Ptr JtJV; + cv::Ptr JtJW; + double prevErrNorm, errNorm; + int lambdaLg10; + CvTermCriteria criteria; + int state; + int iters; + bool completeSymmFlag; + int solveMethod; +}; + +#endif + +#endif /* OPENCV_CALIB3D_C_H */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/core.hpp new file mode 100644 index 0000000..1cdb470 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core.hpp @@ -0,0 +1,3294 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2015, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +// Copyright (C) 2015, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_HPP +#define OPENCV_CORE_HPP + +#ifndef __cplusplus +# error core.hpp header must be compiled as C++ +#endif + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/version.hpp" +#include "opencv2/core/base.hpp" +#include "opencv2/core/cvstd.hpp" +#include "opencv2/core/traits.hpp" +#include "opencv2/core/matx.hpp" +#include "opencv2/core/types.hpp" +#include "opencv2/core/mat.hpp" +#include "opencv2/core/persistence.hpp" + +/** +@defgroup core Core functionality +@{ + @defgroup core_basic Basic structures + @defgroup core_c C structures and operations + @{ + @defgroup core_c_glue Connections with C++ + @} + @defgroup core_array Operations on arrays + @defgroup core_xml XML/YAML Persistence + @defgroup core_cluster Clustering + @defgroup core_utils Utility and system functions and macros + @{ + @defgroup core_utils_sse SSE utilities + @defgroup core_utils_neon NEON utilities + @defgroup core_utils_softfloat Softfloat support + @defgroup core_utils_samples Utility functions for OpenCV samples + @} + @defgroup core_opengl OpenGL interoperability + @defgroup core_ipp Intel IPP Asynchronous C/C++ Converters + @defgroup core_optim Optimization Algorithms + @defgroup core_directx DirectX interoperability + @defgroup core_eigen Eigen support + @defgroup core_opencl OpenCL support + @defgroup core_va_intel Intel VA-API/OpenCL (CL-VA) interoperability + @defgroup core_hal Hardware Acceleration Layer + @{ + @defgroup core_hal_functions Functions + @defgroup core_hal_interface Interface + @defgroup core_hal_intrin Universal intrinsics + @{ + @defgroup core_hal_intrin_impl Private implementation helpers + @} + @defgroup core_lowlevel_api Low-level API for external libraries / plugins + @} +@} + */ + +namespace cv { + +//! @addtogroup core_utils +//! @{ + +/*! @brief Class passed to an error. + +This class encapsulates all or almost all necessary +information about the error happened in the program. The exception is +usually constructed and thrown implicitly via CV_Error and CV_Error_ macros. +@see error + */ +class CV_EXPORTS Exception : public std::exception +{ +public: + /*! + Default constructor + */ + Exception(); + /*! + Full constructor. Normally the constructor is not called explicitly. + Instead, the macros CV_Error(), CV_Error_() and CV_Assert() are used. + */ + Exception(int _code, const String& _err, const String& _func, const String& _file, int _line); + virtual ~Exception() throw(); + + /*! + \return the error description and the context as a text string. + */ + virtual const char *what() const throw() CV_OVERRIDE; + void formatMessage(); + + String msg; ///< the formatted error message + + int code; ///< error code @see CVStatus + String err; ///< error description + String func; ///< function name. Available only when the compiler supports getting it + String file; ///< source file name where the error has occurred + int line; ///< line number in the source file where the error has occurred +}; + +/*! @brief Signals an error and raises the exception. + +By default the function prints information about the error to stderr, +then it either stops if cv::setBreakOnError() had been called before or raises the exception. +It is possible to alternate error processing by using #redirectError(). +@param exc the exception raisen. +@deprecated drop this version + */ +CV_EXPORTS CV_NORETURN void error(const Exception& exc); + +enum SortFlags { SORT_EVERY_ROW = 0, //!< each matrix row is sorted independently + SORT_EVERY_COLUMN = 1, //!< each matrix column is sorted + //!< independently; this flag and the previous one are + //!< mutually exclusive. + SORT_ASCENDING = 0, //!< each matrix row is sorted in the ascending + //!< order. + SORT_DESCENDING = 16 //!< each matrix row is sorted in the + //!< descending order; this flag and the previous one are also + //!< mutually exclusive. + }; + +//! @} core_utils + +//! @addtogroup core +//! @{ + +//! Covariation flags +enum CovarFlags { + /** The output covariance matrix is calculated as: + \f[\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...],\f] + The covariance matrix will be nsamples x nsamples. Such an unusual covariance matrix is used + for fast PCA of a set of very large vectors (see, for example, the EigenFaces technique for + face recognition). Eigenvalues of this "scrambled" matrix match the eigenvalues of the true + covariance matrix. The "true" eigenvectors can be easily calculated from the eigenvectors of + the "scrambled" covariance matrix. */ + COVAR_SCRAMBLED = 0, + /**The output covariance matrix is calculated as: + \f[\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...] \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T,\f] + covar will be a square matrix of the same size as the total number of elements in each input + vector. One and only one of #COVAR_SCRAMBLED and #COVAR_NORMAL must be specified.*/ + COVAR_NORMAL = 1, + /** If the flag is specified, the function does not calculate mean from + the input vectors but, instead, uses the passed mean vector. This is useful if mean has been + pre-calculated or known in advance, or if the covariance matrix is calculated by parts. In + this case, mean is not a mean vector of the input sub-set of vectors but rather the mean + vector of the whole set.*/ + COVAR_USE_AVG = 2, + /** If the flag is specified, the covariance matrix is scaled. In the + "normal" mode, scale is 1./nsamples . In the "scrambled" mode, scale is the reciprocal of the + total number of elements in each input vector. By default (if the flag is not specified), the + covariance matrix is not scaled ( scale=1 ).*/ + COVAR_SCALE = 4, + /** If the flag is + specified, all the input vectors are stored as rows of the samples matrix. mean should be a + single-row vector in this case.*/ + COVAR_ROWS = 8, + /** If the flag is + specified, all the input vectors are stored as columns of the samples matrix. mean should be a + single-column vector in this case.*/ + COVAR_COLS = 16 +}; + +//! k-Means flags +enum KmeansFlags { + /** Select random initial centers in each attempt.*/ + KMEANS_RANDOM_CENTERS = 0, + /** Use kmeans++ center initialization by Arthur and Vassilvitskii [Arthur2007].*/ + KMEANS_PP_CENTERS = 2, + /** During the first (and possibly the only) attempt, use the + user-supplied labels instead of computing them from the initial centers. For the second and + further attempts, use the random or semi-random centers. Use one of KMEANS_\*_CENTERS flag + to specify the exact method.*/ + KMEANS_USE_INITIAL_LABELS = 1 +}; + +enum ReduceTypes { REDUCE_SUM = 0, //!< the output is the sum of all rows/columns of the matrix. + REDUCE_AVG = 1, //!< the output is the mean vector of all rows/columns of the matrix. + REDUCE_MAX = 2, //!< the output is the maximum (column/row-wise) of all rows/columns of the matrix. + REDUCE_MIN = 3 //!< the output is the minimum (column/row-wise) of all rows/columns of the matrix. + }; + + +/** @brief Swaps two matrices +*/ +CV_EXPORTS void swap(Mat& a, Mat& b); +/** @overload */ +CV_EXPORTS void swap( UMat& a, UMat& b ); + +//! @} core + +//! @addtogroup core_array +//! @{ + +/** @brief Computes the source location of an extrapolated pixel. + +The function computes and returns the coordinate of a donor pixel corresponding to the specified +extrapolated pixel when using the specified extrapolation border mode. For example, if you use +cv::BORDER_WRAP mode in the horizontal direction, cv::BORDER_REFLECT_101 in the vertical direction and +want to compute value of the "virtual" pixel Point(-5, 100) in a floating-point image img , it +looks like: +@code{.cpp} + float val = img.at(borderInterpolate(100, img.rows, cv::BORDER_REFLECT_101), + borderInterpolate(-5, img.cols, cv::BORDER_WRAP)); +@endcode +Normally, the function is not called directly. It is used inside filtering functions and also in +copyMakeBorder. +@param p 0-based coordinate of the extrapolated pixel along one of the axes, likely \<0 or \>= len +@param len Length of the array along the corresponding axis. +@param borderType Border type, one of the #BorderTypes, except for #BORDER_TRANSPARENT and +#BORDER_ISOLATED . When borderType==#BORDER_CONSTANT , the function always returns -1, regardless +of p and len. + +@sa copyMakeBorder +*/ +CV_EXPORTS_W int borderInterpolate(int p, int len, int borderType); + +/** @example samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp +An example using copyMakeBorder function. +Check @ref tutorial_copyMakeBorder "the corresponding tutorial" for more details +*/ + +/** @brief Forms a border around an image. + +The function copies the source image into the middle of the destination image. The areas to the +left, to the right, above and below the copied source image will be filled with extrapolated +pixels. This is not what filtering functions based on it do (they extrapolate pixels on-fly), but +what other more complex functions, including your own, may do to simplify image boundary handling. + +The function supports the mode when src is already in the middle of dst . In this case, the +function does not copy src itself but simply constructs the border, for example: + +@code{.cpp} + // let border be the same in all directions + int border=2; + // constructs a larger image to fit both the image and the border + Mat gray_buf(rgb.rows + border*2, rgb.cols + border*2, rgb.depth()); + // select the middle part of it w/o copying data + Mat gray(gray_canvas, Rect(border, border, rgb.cols, rgb.rows)); + // convert image from RGB to grayscale + cvtColor(rgb, gray, COLOR_RGB2GRAY); + // form a border in-place + copyMakeBorder(gray, gray_buf, border, border, + border, border, BORDER_REPLICATE); + // now do some custom filtering ... + ... +@endcode +@note When the source image is a part (ROI) of a bigger image, the function will try to use the +pixels outside of the ROI to form a border. To disable this feature and always do extrapolation, as +if src was not a ROI, use borderType | #BORDER_ISOLATED. + +@param src Source image. +@param dst Destination image of the same type as src and the size Size(src.cols+left+right, +src.rows+top+bottom) . +@param top +@param bottom +@param left +@param right Parameter specifying how many pixels in each direction from the source image rectangle +to extrapolate. For example, top=1, bottom=1, left=1, right=1 mean that 1 pixel-wide border needs +to be built. +@param borderType Border type. See borderInterpolate for details. +@param value Border value if borderType==BORDER_CONSTANT . + +@sa borderInterpolate +*/ +CV_EXPORTS_W void copyMakeBorder(InputArray src, OutputArray dst, + int top, int bottom, int left, int right, + int borderType, const Scalar& value = Scalar() ); + +/** @brief Calculates the per-element sum of two arrays or an array and a scalar. + +The function add calculates: +- Sum of two arrays when both input arrays have the same size and the same number of channels: +\f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) + \texttt{src2}(I)) \quad \texttt{if mask}(I) \ne0\f] +- Sum of an array and a scalar when src2 is constructed from Scalar or has the same number of +elements as `src1.channels()`: +\f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) + \texttt{src2} ) \quad \texttt{if mask}(I) \ne0\f] +- Sum of a scalar and an array when src1 is constructed from Scalar or has the same number of +elements as `src2.channels()`: +\f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1} + \texttt{src2}(I) ) \quad \texttt{if mask}(I) \ne0\f] +where `I` is a multi-dimensional index of array elements. In case of multi-channel arrays, each +channel is processed independently. + +The first function in the list above can be replaced with matrix expressions: +@code{.cpp} + dst = src1 + src2; + dst += src1; // equivalent to add(dst, src1, dst); +@endcode +The input arrays and the output array can all have the same or different depths. For example, you +can add a 16-bit unsigned array to a 8-bit signed array and store the sum as a 32-bit +floating-point array. Depth of the output array is determined by the dtype parameter. In the second +and third cases above, as well as in the first case, when src1.depth() == src2.depth(), dtype can +be set to the default -1. In this case, the output array will have the same depth as the input +array, be it src1, src2 or both. +@note Saturation is not applied when the output array has the depth CV_32S. You may even get +result of an incorrect sign in the case of overflow. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array that has the same size and number of channels as the input array(s); the +depth is defined by dtype or src1/src2. +@param mask optional operation mask - 8-bit single channel array, that specifies elements of the +output array to be changed. +@param dtype optional depth of the output array (see the discussion below). +@sa subtract, addWeighted, scaleAdd, Mat::convertTo +*/ +CV_EXPORTS_W void add(InputArray src1, InputArray src2, OutputArray dst, + InputArray mask = noArray(), int dtype = -1); + +/** @brief Calculates the per-element difference between two arrays or array and a scalar. + +The function subtract calculates: +- Difference between two arrays, when both input arrays have the same size and the same number of +channels: + \f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) - \texttt{src2}(I)) \quad \texttt{if mask}(I) \ne0\f] +- Difference between an array and a scalar, when src2 is constructed from Scalar or has the same +number of elements as `src1.channels()`: + \f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) - \texttt{src2} ) \quad \texttt{if mask}(I) \ne0\f] +- Difference between a scalar and an array, when src1 is constructed from Scalar or has the same +number of elements as `src2.channels()`: + \f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1} - \texttt{src2}(I) ) \quad \texttt{if mask}(I) \ne0\f] +- The reverse difference between a scalar and an array in the case of `SubRS`: + \f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src2} - \texttt{src1}(I) ) \quad \texttt{if mask}(I) \ne0\f] +where I is a multi-dimensional index of array elements. In case of multi-channel arrays, each +channel is processed independently. + +The first function in the list above can be replaced with matrix expressions: +@code{.cpp} + dst = src1 - src2; + dst -= src1; // equivalent to subtract(dst, src1, dst); +@endcode +The input arrays and the output array can all have the same or different depths. For example, you +can subtract to 8-bit unsigned arrays and store the difference in a 16-bit signed array. Depth of +the output array is determined by dtype parameter. In the second and third cases above, as well as +in the first case, when src1.depth() == src2.depth(), dtype can be set to the default -1. In this +case the output array will have the same depth as the input array, be it src1, src2 or both. +@note Saturation is not applied when the output array has the depth CV_32S. You may even get +result of an incorrect sign in the case of overflow. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array of the same size and the same number of channels as the input array. +@param mask optional operation mask; this is an 8-bit single channel array that specifies elements +of the output array to be changed. +@param dtype optional depth of the output array +@sa add, addWeighted, scaleAdd, Mat::convertTo + */ +CV_EXPORTS_W void subtract(InputArray src1, InputArray src2, OutputArray dst, + InputArray mask = noArray(), int dtype = -1); + + +/** @brief Calculates the per-element scaled product of two arrays. + +The function multiply calculates the per-element product of two arrays: + +\f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{scale} \cdot \texttt{src1} (I) \cdot \texttt{src2} (I))\f] + +There is also a @ref MatrixExpressions -friendly variant of the first function. See Mat::mul . + +For a not-per-element matrix product, see gemm . + +@note Saturation is not applied when the output array has the depth +CV_32S. You may even get result of an incorrect sign in the case of +overflow. +@param src1 first input array. +@param src2 second input array of the same size and the same type as src1. +@param dst output array of the same size and type as src1. +@param scale optional scale factor. +@param dtype optional depth of the output array +@sa add, subtract, divide, scaleAdd, addWeighted, accumulate, accumulateProduct, accumulateSquare, +Mat::convertTo +*/ +CV_EXPORTS_W void multiply(InputArray src1, InputArray src2, + OutputArray dst, double scale = 1, int dtype = -1); + +/** @brief Performs per-element division of two arrays or a scalar by an array. + +The function cv::divide divides one array by another: +\f[\texttt{dst(I) = saturate(src1(I)*scale/src2(I))}\f] +or a scalar by an array when there is no src1 : +\f[\texttt{dst(I) = saturate(scale/src2(I))}\f] + +Different channels of multi-channel arrays are processed independently. + +For integer types when src2(I) is zero, dst(I) will also be zero. + +@note In case of floating point data there is no special defined behavior for zero src2(I) values. +Regular floating-point division is used. +Expect correct IEEE-754 behaviour for floating-point data (with NaN, Inf result values). + +@note Saturation is not applied when the output array has the depth CV_32S. You may even get +result of an incorrect sign in the case of overflow. +@param src1 first input array. +@param src2 second input array of the same size and type as src1. +@param scale scalar factor. +@param dst output array of the same size and type as src2. +@param dtype optional depth of the output array; if -1, dst will have depth src2.depth(), but in +case of an array-by-array division, you can only pass -1 when src1.depth()==src2.depth(). +@sa multiply, add, subtract +*/ +CV_EXPORTS_W void divide(InputArray src1, InputArray src2, OutputArray dst, + double scale = 1, int dtype = -1); + +/** @overload */ +CV_EXPORTS_W void divide(double scale, InputArray src2, + OutputArray dst, int dtype = -1); + +/** @brief Calculates the sum of a scaled array and another array. + +The function scaleAdd is one of the classical primitive linear algebra operations, known as DAXPY +or SAXPY in [BLAS](http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms). It calculates +the sum of a scaled array and another array: +\f[\texttt{dst} (I)= \texttt{scale} \cdot \texttt{src1} (I) + \texttt{src2} (I)\f] +The function can also be emulated with a matrix expression, for example: +@code{.cpp} + Mat A(3, 3, CV_64F); + ... + A.row(0) = A.row(1)*2 + A.row(2); +@endcode +@param src1 first input array. +@param alpha scale factor for the first array. +@param src2 second input array of the same size and type as src1. +@param dst output array of the same size and type as src1. +@sa add, addWeighted, subtract, Mat::dot, Mat::convertTo +*/ +CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst); + +/** @example samples/cpp/tutorial_code/HighGUI/AddingImagesTrackbar.cpp +Check @ref tutorial_trackbar "the corresponding tutorial" for more details +*/ + +/** @brief Calculates the weighted sum of two arrays. + +The function addWeighted calculates the weighted sum of two arrays as follows: +\f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{src1} (I)* \texttt{alpha} + \texttt{src2} (I)* \texttt{beta} + \texttt{gamma} )\f] +where I is a multi-dimensional index of array elements. In case of multi-channel arrays, each +channel is processed independently. +The function can be replaced with a matrix expression: +@code{.cpp} + dst = src1*alpha + src2*beta + gamma; +@endcode +@note Saturation is not applied when the output array has the depth CV_32S. You may even get +result of an incorrect sign in the case of overflow. +@param src1 first input array. +@param alpha weight of the first array elements. +@param src2 second input array of the same size and channel number as src1. +@param beta weight of the second array elements. +@param gamma scalar added to each sum. +@param dst output array that has the same size and number of channels as the input arrays. +@param dtype optional depth of the output array; when both input arrays have the same depth, dtype +can be set to -1, which will be equivalent to src1.depth(). +@sa add, subtract, scaleAdd, Mat::convertTo +*/ +CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, + double beta, double gamma, OutputArray dst, int dtype = -1); + +/** @brief Scales, calculates absolute values, and converts the result to 8-bit. + +On each element of the input array, the function convertScaleAbs +performs three operations sequentially: scaling, taking an absolute +value, conversion to an unsigned 8-bit type: +\f[\texttt{dst} (I)= \texttt{saturate\_cast} (| \texttt{src} (I)* \texttt{alpha} + \texttt{beta} |)\f] +In case of multi-channel arrays, the function processes each channel +independently. When the output is not 8-bit, the operation can be +emulated by calling the Mat::convertTo method (or by using matrix +expressions) and then by calculating an absolute value of the result. +For example: +@code{.cpp} + Mat_ A(30,30); + randu(A, Scalar(-100), Scalar(100)); + Mat_ B = A*5 + 3; + B = abs(B); + // Mat_ B = abs(A*5+3) will also do the job, + // but it will allocate a temporary matrix +@endcode +@param src input array. +@param dst output array. +@param alpha optional scale factor. +@param beta optional delta added to the scaled values. +@sa Mat::convertTo, cv::abs(const Mat&) +*/ +CV_EXPORTS_W void convertScaleAbs(InputArray src, OutputArray dst, + double alpha = 1, double beta = 0); + +/** @brief Converts an array to half precision floating number. + +This function converts FP32 (single precision floating point) from/to FP16 (half precision floating point). CV_16S format is used to represent FP16 data. +There are two use modes (src -> dst): CV_32F -> CV_16S and CV_16S -> CV_32F. The input array has to have type of CV_32F or +CV_16S to represent the bit depth. If the input array is neither of them, the function will raise an error. +The format of half precision floating point is defined in IEEE 754-2008. + +@param src input array. +@param dst output array. +*/ +CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst); + +/** @brief Performs a look-up table transform of an array. + +The function LUT fills the output array with values from the look-up table. Indices of the entries +are taken from the input array. That is, the function processes each element of src as follows: +\f[\texttt{dst} (I) \leftarrow \texttt{lut(src(I) + d)}\f] +where +\f[d = \fork{0}{if \(\texttt{src}\) has depth \(\texttt{CV_8U}\)}{128}{if \(\texttt{src}\) has depth \(\texttt{CV_8S}\)}\f] +@param src input array of 8-bit elements. +@param lut look-up table of 256 elements; in case of multi-channel input array, the table should +either have a single channel (in this case the same table is used for all channels) or the same +number of channels as in the input array. +@param dst output array of the same size and number of channels as src, and the same depth as lut. +@sa convertScaleAbs, Mat::convertTo +*/ +CV_EXPORTS_W void LUT(InputArray src, InputArray lut, OutputArray dst); + +/** @brief Calculates the sum of array elements. + +The function cv::sum calculates and returns the sum of array elements, +independently for each channel. +@param src input array that must have from 1 to 4 channels. +@sa countNonZero, mean, meanStdDev, norm, minMaxLoc, reduce +*/ +CV_EXPORTS_AS(sumElems) Scalar sum(InputArray src); + +/** @brief Counts non-zero array elements. + +The function returns the number of non-zero elements in src : +\f[\sum _{I: \; \texttt{src} (I) \ne0 } 1\f] +@param src single-channel array. +@sa mean, meanStdDev, norm, minMaxLoc, calcCovarMatrix +*/ +CV_EXPORTS_W int countNonZero( InputArray src ); + +/** @brief Returns the list of locations of non-zero pixels + +Given a binary matrix (likely returned from an operation such +as threshold(), compare(), >, ==, etc, return all of +the non-zero indices as a cv::Mat or std::vector (x,y) +For example: +@code{.cpp} + cv::Mat binaryImage; // input, binary image + cv::Mat locations; // output, locations of non-zero pixels + cv::findNonZero(binaryImage, locations); + + // access pixel coordinates + Point pnt = locations.at(i); +@endcode +or +@code{.cpp} + cv::Mat binaryImage; // input, binary image + vector locations; // output, locations of non-zero pixels + cv::findNonZero(binaryImage, locations); + + // access pixel coordinates + Point pnt = locations[i]; +@endcode +@param src single-channel array +@param idx the output array, type of cv::Mat or std::vector, corresponding to non-zero indices in the input +*/ +CV_EXPORTS_W void findNonZero( InputArray src, OutputArray idx ); + +/** @brief Calculates an average (mean) of array elements. + +The function cv::mean calculates the mean value M of array elements, +independently for each channel, and return it: +\f[\begin{array}{l} N = \sum _{I: \; \texttt{mask} (I) \ne 0} 1 \\ M_c = \left ( \sum _{I: \; \texttt{mask} (I) \ne 0}{ \texttt{mtx} (I)_c} \right )/N \end{array}\f] +When all the mask elements are 0's, the function returns Scalar::all(0) +@param src input array that should have from 1 to 4 channels so that the result can be stored in +Scalar_ . +@param mask optional operation mask. +@sa countNonZero, meanStdDev, norm, minMaxLoc +*/ +CV_EXPORTS_W Scalar mean(InputArray src, InputArray mask = noArray()); + +/** Calculates a mean and standard deviation of array elements. + +The function cv::meanStdDev calculates the mean and the standard deviation M +of array elements independently for each channel and returns it via the +output parameters: +\f[\begin{array}{l} N = \sum _{I, \texttt{mask} (I) \ne 0} 1 \\ \texttt{mean} _c = \frac{\sum_{ I: \; \texttt{mask}(I) \ne 0} \texttt{src} (I)_c}{N} \\ \texttt{stddev} _c = \sqrt{\frac{\sum_{ I: \; \texttt{mask}(I) \ne 0} \left ( \texttt{src} (I)_c - \texttt{mean} _c \right )^2}{N}} \end{array}\f] +When all the mask elements are 0's, the function returns +mean=stddev=Scalar::all(0). +@note The calculated standard deviation is only the diagonal of the +complete normalized covariance matrix. If the full matrix is needed, you +can reshape the multi-channel array M x N to the single-channel array +M\*N x mtx.channels() (only possible when the matrix is continuous) and +then pass the matrix to calcCovarMatrix . +@param src input array that should have from 1 to 4 channels so that the results can be stored in +Scalar_ 's. +@param mean output parameter: calculated mean value. +@param stddev output parameter: calculated standard deviation. +@param mask optional operation mask. +@sa countNonZero, mean, norm, minMaxLoc, calcCovarMatrix +*/ +CV_EXPORTS_W void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, + InputArray mask=noArray()); + +/** @brief Calculates the absolute norm of an array. + +This version of #norm calculates the absolute norm of src1. The type of norm to calculate is specified using #NormTypes. + +As example for one array consider the function \f$r(x)= \begin{pmatrix} x \\ 1-x \end{pmatrix}, x \in [-1;1]\f$. +The \f$ L_{1}, L_{2} \f$ and \f$ L_{\infty} \f$ norm for the sample value \f$r(-1) = \begin{pmatrix} -1 \\ 2 \end{pmatrix}\f$ +is calculated as follows +\f{align*} + \| r(-1) \|_{L_1} &= |-1| + |2| = 3 \\ + \| r(-1) \|_{L_2} &= \sqrt{(-1)^{2} + (2)^{2}} = \sqrt{5} \\ + \| r(-1) \|_{L_\infty} &= \max(|-1|,|2|) = 2 +\f} +and for \f$r(0.5) = \begin{pmatrix} 0.5 \\ 0.5 \end{pmatrix}\f$ the calculation is +\f{align*} + \| r(0.5) \|_{L_1} &= |0.5| + |0.5| = 1 \\ + \| r(0.5) \|_{L_2} &= \sqrt{(0.5)^{2} + (0.5)^{2}} = \sqrt{0.5} \\ + \| r(0.5) \|_{L_\infty} &= \max(|0.5|,|0.5|) = 0.5. +\f} +The following graphic shows all values for the three norm functions \f$\| r(x) \|_{L_1}, \| r(x) \|_{L_2}\f$ and \f$\| r(x) \|_{L_\infty}\f$. +It is notable that the \f$ L_{1} \f$ norm forms the upper and the \f$ L_{\infty} \f$ norm forms the lower border for the example function \f$ r(x) \f$. +![Graphs for the different norm functions from the above example](pics/NormTypes_OneArray_1-2-INF.png) + +When the mask parameter is specified and it is not empty, the norm is + +If normType is not specified, #NORM_L2 is used. +calculated only over the region specified by the mask. + +Multi-channel input arrays are treated as single-channel arrays, that is, +the results for all channels are combined. + +Hamming norms can only be calculated with CV_8U depth arrays. + +@param src1 first input array. +@param normType type of the norm (see #NormTypes). +@param mask optional operation mask; it must have the same size as src1 and CV_8UC1 type. +*/ +CV_EXPORTS_W double norm(InputArray src1, int normType = NORM_L2, InputArray mask = noArray()); + +/** @brief Calculates an absolute difference norm or a relative difference norm. + +This version of cv::norm calculates the absolute difference norm +or the relative difference norm of arrays src1 and src2. +The type of norm to calculate is specified using #NormTypes. + +@param src1 first input array. +@param src2 second input array of the same size and the same type as src1. +@param normType type of the norm (see #NormTypes). +@param mask optional operation mask; it must have the same size as src1 and CV_8UC1 type. +*/ +CV_EXPORTS_W double norm(InputArray src1, InputArray src2, + int normType = NORM_L2, InputArray mask = noArray()); +/** @overload +@param src first input array. +@param normType type of the norm (see #NormTypes). +*/ +CV_EXPORTS double norm( const SparseMat& src, int normType ); + +/** @brief Computes the Peak Signal-to-Noise Ratio (PSNR) image quality metric. + +This function calculates the Peak Signal-to-Noise Ratio (PSNR) image quality metric in decibels (dB), +between two input arrays src1 and src2. The arrays must have the same type. + +The PSNR is calculated as follows: + +\f[ +\texttt{PSNR} = 10 \cdot \log_{10}{\left( \frac{R^2}{MSE} \right) } +\f] + +where R is the maximum integer value of depth (e.g. 255 in the case of CV_8U data) +and MSE is the mean squared error between the two arrays. + +@param src1 first input array. +@param src2 second input array of the same size as src1. +@param R the maximum pixel value (255 by default) + + */ +CV_EXPORTS_W double PSNR(InputArray src1, InputArray src2, double R=255.); + +/** @brief naive nearest neighbor finder + +see http://en.wikipedia.org/wiki/Nearest_neighbor_search +@todo document + */ +CV_EXPORTS_W void batchDistance(InputArray src1, InputArray src2, + OutputArray dist, int dtype, OutputArray nidx, + int normType = NORM_L2, int K = 0, + InputArray mask = noArray(), int update = 0, + bool crosscheck = false); + +/** @brief Normalizes the norm or value range of an array. + +The function cv::normalize normalizes scale and shift the input array elements so that +\f[\| \texttt{dst} \| _{L_p}= \texttt{alpha}\f] +(where p=Inf, 1 or 2) when normType=NORM_INF, NORM_L1, or NORM_L2, respectively; or so that +\f[\min _I \texttt{dst} (I)= \texttt{alpha} , \, \, \max _I \texttt{dst} (I)= \texttt{beta}\f] + +when normType=NORM_MINMAX (for dense arrays only). The optional mask specifies a sub-array to be +normalized. This means that the norm or min-n-max are calculated over the sub-array, and then this +sub-array is modified to be normalized. If you want to only use the mask to calculate the norm or +min-max but modify the whole array, you can use norm and Mat::convertTo. + +In case of sparse matrices, only the non-zero values are analyzed and transformed. Because of this, +the range transformation for sparse matrices is not allowed since it can shift the zero level. + +Possible usage with some positive example data: +@code{.cpp} + vector positiveData = { 2.0, 8.0, 10.0 }; + vector normalizedData_l1, normalizedData_l2, normalizedData_inf, normalizedData_minmax; + + // Norm to probability (total count) + // sum(numbers) = 20.0 + // 2.0 0.1 (2.0/20.0) + // 8.0 0.4 (8.0/20.0) + // 10.0 0.5 (10.0/20.0) + normalize(positiveData, normalizedData_l1, 1.0, 0.0, NORM_L1); + + // Norm to unit vector: ||positiveData|| = 1.0 + // 2.0 0.15 + // 8.0 0.62 + // 10.0 0.77 + normalize(positiveData, normalizedData_l2, 1.0, 0.0, NORM_L2); + + // Norm to max element + // 2.0 0.2 (2.0/10.0) + // 8.0 0.8 (8.0/10.0) + // 10.0 1.0 (10.0/10.0) + normalize(positiveData, normalizedData_inf, 1.0, 0.0, NORM_INF); + + // Norm to range [0.0;1.0] + // 2.0 0.0 (shift to left border) + // 8.0 0.75 (6.0/8.0) + // 10.0 1.0 (shift to right border) + normalize(positiveData, normalizedData_minmax, 1.0, 0.0, NORM_MINMAX); +@endcode + +@param src input array. +@param dst output array of the same size as src . +@param alpha norm value to normalize to or the lower range boundary in case of the range +normalization. +@param beta upper range boundary in case of the range normalization; it is not used for the norm +normalization. +@param norm_type normalization type (see cv::NormTypes). +@param dtype when negative, the output array has the same type as src; otherwise, it has the same +number of channels as src and the depth =CV_MAT_DEPTH(dtype). +@param mask optional operation mask. +@sa norm, Mat::convertTo, SparseMat::convertTo +*/ +CV_EXPORTS_W void normalize( InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0, + int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray()); + +/** @overload +@param src input array. +@param dst output array of the same size as src . +@param alpha norm value to normalize to or the lower range boundary in case of the range +normalization. +@param normType normalization type (see cv::NormTypes). +*/ +CV_EXPORTS void normalize( const SparseMat& src, SparseMat& dst, double alpha, int normType ); + +/** @brief Finds the global minimum and maximum in an array. + +The function cv::minMaxLoc finds the minimum and maximum element values and their positions. The +extremums are searched across the whole array or, if mask is not an empty array, in the specified +array region. + +The function do not work with multi-channel arrays. If you need to find minimum or maximum +elements across all the channels, use Mat::reshape first to reinterpret the array as +single-channel. Or you may extract the particular channel using either extractImageCOI , or +mixChannels , or split . +@param src input single-channel array. +@param minVal pointer to the returned minimum value; NULL is used if not required. +@param maxVal pointer to the returned maximum value; NULL is used if not required. +@param minLoc pointer to the returned minimum location (in 2D case); NULL is used if not required. +@param maxLoc pointer to the returned maximum location (in 2D case); NULL is used if not required. +@param mask optional mask used to select a sub-array. +@sa max, min, compare, inRange, extractImageCOI, mixChannels, split, Mat::reshape +*/ +CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal, + CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0, + CV_OUT Point* maxLoc = 0, InputArray mask = noArray()); + + +/** @brief Finds the global minimum and maximum in an array + +The function cv::minMaxIdx finds the minimum and maximum element values and their positions. The +extremums are searched across the whole array or, if mask is not an empty array, in the specified +array region. The function does not work with multi-channel arrays. If you need to find minimum or +maximum elements across all the channels, use Mat::reshape first to reinterpret the array as +single-channel. Or you may extract the particular channel using either extractImageCOI , or +mixChannels , or split . In case of a sparse matrix, the minimum is found among non-zero elements +only. +@note When minIdx is not NULL, it must have at least 2 elements (as well as maxIdx), even if src is +a single-row or single-column matrix. In OpenCV (following MATLAB) each array has at least 2 +dimensions, i.e. single-column matrix is Mx1 matrix (and therefore minIdx/maxIdx will be +(i1,0)/(i2,0)) and single-row matrix is 1xN matrix (and therefore minIdx/maxIdx will be +(0,j1)/(0,j2)). +@param src input single-channel array. +@param minVal pointer to the returned minimum value; NULL is used if not required. +@param maxVal pointer to the returned maximum value; NULL is used if not required. +@param minIdx pointer to the returned minimum location (in nD case); NULL is used if not required; +Otherwise, it must point to an array of src.dims elements, the coordinates of the minimum element +in each dimension are stored there sequentially. +@param maxIdx pointer to the returned maximum location (in nD case). NULL is used if not required. +@param mask specified array region +*/ +CV_EXPORTS void minMaxIdx(InputArray src, double* minVal, double* maxVal = 0, + int* minIdx = 0, int* maxIdx = 0, InputArray mask = noArray()); + +/** @overload +@param a input single-channel array. +@param minVal pointer to the returned minimum value; NULL is used if not required. +@param maxVal pointer to the returned maximum value; NULL is used if not required. +@param minIdx pointer to the returned minimum location (in nD case); NULL is used if not required; +Otherwise, it must point to an array of src.dims elements, the coordinates of the minimum element +in each dimension are stored there sequentially. +@param maxIdx pointer to the returned maximum location (in nD case). NULL is used if not required. +*/ +CV_EXPORTS void minMaxLoc(const SparseMat& a, double* minVal, + double* maxVal, int* minIdx = 0, int* maxIdx = 0); + +/** @brief Reduces a matrix to a vector. + +The function #reduce reduces the matrix to a vector by treating the matrix rows/columns as a set of +1D vectors and performing the specified operation on the vectors until a single row/column is +obtained. For example, the function can be used to compute horizontal and vertical projections of a +raster image. In case of #REDUCE_MAX and #REDUCE_MIN , the output image should have the same type as the source one. +In case of #REDUCE_SUM and #REDUCE_AVG , the output may have a larger element bit-depth to preserve accuracy. +And multi-channel arrays are also supported in these two reduction modes. + +The following code demonstrates its usage for a single channel matrix. +@snippet snippets/core_reduce.cpp example + +And the following code demonstrates its usage for a two-channel matrix. +@snippet snippets/core_reduce.cpp example2 + +@param src input 2D matrix. +@param dst output vector. Its size and type is defined by dim and dtype parameters. +@param dim dimension index along which the matrix is reduced. 0 means that the matrix is reduced to +a single row. 1 means that the matrix is reduced to a single column. +@param rtype reduction operation that could be one of #ReduceTypes +@param dtype when negative, the output vector will have the same type as the input matrix, +otherwise, its type will be CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), src.channels()). +@sa repeat +*/ +CV_EXPORTS_W void reduce(InputArray src, OutputArray dst, int dim, int rtype, int dtype = -1); + +/** @brief Creates one multi-channel array out of several single-channel ones. + +The function cv::merge merges several arrays to make a single multi-channel array. That is, each +element of the output array will be a concatenation of the elements of the input arrays, where +elements of i-th input array are treated as mv[i].channels()-element vectors. + +The function cv::split does the reverse operation. If you need to shuffle channels in some other +advanced way, use cv::mixChannels. + +The following example shows how to merge 3 single channel matrices into a single 3-channel matrix. +@snippet snippets/core_merge.cpp example + +@param mv input array of matrices to be merged; all the matrices in mv must have the same +size and the same depth. +@param count number of input matrices when mv is a plain C array; it must be greater than zero. +@param dst output array of the same size and the same depth as mv[0]; The number of channels will +be equal to the parameter count. +@sa mixChannels, split, Mat::reshape +*/ +CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst); + +/** @overload +@param mv input vector of matrices to be merged; all the matrices in mv must have the same +size and the same depth. +@param dst output array of the same size and the same depth as mv[0]; The number of channels will +be the total number of channels in the matrix array. + */ +CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst); + +/** @brief Divides a multi-channel array into several single-channel arrays. + +The function cv::split splits a multi-channel array into separate single-channel arrays: +\f[\texttt{mv} [c](I) = \texttt{src} (I)_c\f] +If you need to extract a single channel or do some other sophisticated channel permutation, use +mixChannels . + +The following example demonstrates how to split a 3-channel matrix into 3 single channel matrices. +@snippet snippets/core_split.cpp example + +@param src input multi-channel array. +@param mvbegin output array; the number of arrays must match src.channels(); the arrays themselves are +reallocated, if needed. +@sa merge, mixChannels, cvtColor +*/ +CV_EXPORTS void split(const Mat& src, Mat* mvbegin); + +/** @overload +@param m input multi-channel array. +@param mv output vector of arrays; the arrays themselves are reallocated, if needed. +*/ +CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv); + +/** @brief Copies specified channels from input arrays to the specified channels of +output arrays. + +The function cv::mixChannels provides an advanced mechanism for shuffling image channels. + +cv::split,cv::merge,cv::extractChannel,cv::insertChannel and some forms of cv::cvtColor are partial cases of cv::mixChannels. + +In the example below, the code splits a 4-channel BGRA image into a 3-channel BGR (with B and R +channels swapped) and a separate alpha-channel image: +@code{.cpp} + Mat bgra( 100, 100, CV_8UC4, Scalar(255,0,0,255) ); + Mat bgr( bgra.rows, bgra.cols, CV_8UC3 ); + Mat alpha( bgra.rows, bgra.cols, CV_8UC1 ); + + // forming an array of matrices is a quite efficient operation, + // because the matrix data is not copied, only the headers + Mat out[] = { bgr, alpha }; + // bgra[0] -> bgr[2], bgra[1] -> bgr[1], + // bgra[2] -> bgr[0], bgra[3] -> alpha[0] + int from_to[] = { 0,2, 1,1, 2,0, 3,3 }; + mixChannels( &bgra, 1, out, 2, from_to, 4 ); +@endcode +@note Unlike many other new-style C++ functions in OpenCV (see the introduction section and +Mat::create ), cv::mixChannels requires the output arrays to be pre-allocated before calling the +function. +@param src input array or vector of matrices; all of the matrices must have the same size and the +same depth. +@param nsrcs number of matrices in `src`. +@param dst output array or vector of matrices; all the matrices **must be allocated**; their size and +depth must be the same as in `src[0]`. +@param ndsts number of matrices in `dst`. +@param fromTo array of index pairs specifying which channels are copied and where; fromTo[k\*2] is +a 0-based index of the input channel in src, fromTo[k\*2+1] is an index of the output channel in +dst; the continuous channel numbering is used: the first input image channels are indexed from 0 to +src[0].channels()-1, the second input image channels are indexed from src[0].channels() to +src[0].channels() + src[1].channels()-1, and so on, the same scheme is used for the output image +channels; as a special case, when fromTo[k\*2] is negative, the corresponding output channel is +filled with zero . +@param npairs number of index pairs in `fromTo`. +@sa split, merge, extractChannel, insertChannel, cvtColor +*/ +CV_EXPORTS void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts, + const int* fromTo, size_t npairs); + +/** @overload +@param src input array or vector of matrices; all of the matrices must have the same size and the +same depth. +@param dst output array or vector of matrices; all the matrices **must be allocated**; their size and +depth must be the same as in src[0]. +@param fromTo array of index pairs specifying which channels are copied and where; fromTo[k\*2] is +a 0-based index of the input channel in src, fromTo[k\*2+1] is an index of the output channel in +dst; the continuous channel numbering is used: the first input image channels are indexed from 0 to +src[0].channels()-1, the second input image channels are indexed from src[0].channels() to +src[0].channels() + src[1].channels()-1, and so on, the same scheme is used for the output image +channels; as a special case, when fromTo[k\*2] is negative, the corresponding output channel is +filled with zero . +@param npairs number of index pairs in fromTo. +*/ +CV_EXPORTS void mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, + const int* fromTo, size_t npairs); + +/** @overload +@param src input array or vector of matrices; all of the matrices must have the same size and the +same depth. +@param dst output array or vector of matrices; all the matrices **must be allocated**; their size and +depth must be the same as in src[0]. +@param fromTo array of index pairs specifying which channels are copied and where; fromTo[k\*2] is +a 0-based index of the input channel in src, fromTo[k\*2+1] is an index of the output channel in +dst; the continuous channel numbering is used: the first input image channels are indexed from 0 to +src[0].channels()-1, the second input image channels are indexed from src[0].channels() to +src[0].channels() + src[1].channels()-1, and so on, the same scheme is used for the output image +channels; as a special case, when fromTo[k\*2] is negative, the corresponding output channel is +filled with zero . +*/ +CV_EXPORTS_W void mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, + const std::vector& fromTo); + +/** @brief Extracts a single channel from src (coi is 0-based index) +@param src input array +@param dst output array +@param coi index of channel to extract +@sa mixChannels, split +*/ +CV_EXPORTS_W void extractChannel(InputArray src, OutputArray dst, int coi); + +/** @brief Inserts a single channel to dst (coi is 0-based index) +@param src input array +@param dst output array +@param coi index of channel for insertion +@sa mixChannels, merge +*/ +CV_EXPORTS_W void insertChannel(InputArray src, InputOutputArray dst, int coi); + +/** @brief Flips a 2D array around vertical, horizontal, or both axes. + +The function cv::flip flips the array in one of three different ways (row +and column indices are 0-based): +\f[\texttt{dst} _{ij} = +\left\{ +\begin{array}{l l} +\texttt{src} _{\texttt{src.rows}-i-1,j} & if\; \texttt{flipCode} = 0 \\ +\texttt{src} _{i, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} > 0 \\ +\texttt{src} _{ \texttt{src.rows} -i-1, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} < 0 \\ +\end{array} +\right.\f] +The example scenarios of using the function are the following: +* Vertical flipping of the image (flipCode == 0) to switch between + top-left and bottom-left image origin. This is a typical operation + in video processing on Microsoft Windows\* OS. +* Horizontal flipping of the image with the subsequent horizontal + shift and absolute difference calculation to check for a + vertical-axis symmetry (flipCode \> 0). +* Simultaneous horizontal and vertical flipping of the image with + the subsequent shift and absolute difference calculation to check + for a central symmetry (flipCode \< 0). +* Reversing the order of point arrays (flipCode \> 0 or + flipCode == 0). +@param src input array. +@param dst output array of the same size and type as src. +@param flipCode a flag to specify how to flip the array; 0 means +flipping around the x-axis and positive value (for example, 1) means +flipping around y-axis. Negative value (for example, -1) means flipping +around both axes. +@sa transpose , repeat , completeSymm +*/ +CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode); + +enum RotateFlags { + ROTATE_90_CLOCKWISE = 0, //! A = (cv::Mat_(3, 2) << 1, 4, + 2, 5, + 3, 6); + cv::Mat_ B = (cv::Mat_(3, 2) << 7, 10, + 8, 11, + 9, 12); + + cv::Mat C; + cv::hconcat(A, B, C); + //C: + //[1, 4, 7, 10; + // 2, 5, 8, 11; + // 3, 6, 9, 12] + @endcode + @param src1 first input array to be considered for horizontal concatenation. + @param src2 second input array to be considered for horizontal concatenation. + @param dst output array. It has the same number of rows and depth as the src1 and src2, and the sum of cols of the src1 and src2. + */ +CV_EXPORTS void hconcat(InputArray src1, InputArray src2, OutputArray dst); +/** @overload + @code{.cpp} + std::vector matrices = { cv::Mat(4, 1, CV_8UC1, cv::Scalar(1)), + cv::Mat(4, 1, CV_8UC1, cv::Scalar(2)), + cv::Mat(4, 1, CV_8UC1, cv::Scalar(3)),}; + + cv::Mat out; + cv::hconcat( matrices, out ); + //out: + //[1, 2, 3; + // 1, 2, 3; + // 1, 2, 3; + // 1, 2, 3] + @endcode + @param src input array or vector of matrices. all of the matrices must have the same number of rows and the same depth. + @param dst output array. It has the same number of rows and depth as the src, and the sum of cols of the src. +same depth. + */ +CV_EXPORTS_W void hconcat(InputArrayOfArrays src, OutputArray dst); + +/** @brief Applies vertical concatenation to given matrices. + +The function vertically concatenates two or more cv::Mat matrices (with the same number of cols). +@code{.cpp} + cv::Mat matArray[] = { cv::Mat(1, 4, CV_8UC1, cv::Scalar(1)), + cv::Mat(1, 4, CV_8UC1, cv::Scalar(2)), + cv::Mat(1, 4, CV_8UC1, cv::Scalar(3)),}; + + cv::Mat out; + cv::vconcat( matArray, 3, out ); + //out: + //[1, 1, 1, 1; + // 2, 2, 2, 2; + // 3, 3, 3, 3] +@endcode +@param src input array or vector of matrices. all of the matrices must have the same number of cols and the same depth. +@param nsrc number of matrices in src. +@param dst output array. It has the same number of cols and depth as the src, and the sum of rows of the src. +@sa cv::hconcat(const Mat*, size_t, OutputArray), @sa cv::hconcat(InputArrayOfArrays, OutputArray) and @sa cv::hconcat(InputArray, InputArray, OutputArray) +*/ +CV_EXPORTS void vconcat(const Mat* src, size_t nsrc, OutputArray dst); +/** @overload + @code{.cpp} + cv::Mat_ A = (cv::Mat_(3, 2) << 1, 7, + 2, 8, + 3, 9); + cv::Mat_ B = (cv::Mat_(3, 2) << 4, 10, + 5, 11, + 6, 12); + + cv::Mat C; + cv::vconcat(A, B, C); + //C: + //[1, 7; + // 2, 8; + // 3, 9; + // 4, 10; + // 5, 11; + // 6, 12] + @endcode + @param src1 first input array to be considered for vertical concatenation. + @param src2 second input array to be considered for vertical concatenation. + @param dst output array. It has the same number of cols and depth as the src1 and src2, and the sum of rows of the src1 and src2. + */ +CV_EXPORTS void vconcat(InputArray src1, InputArray src2, OutputArray dst); +/** @overload + @code{.cpp} + std::vector matrices = { cv::Mat(1, 4, CV_8UC1, cv::Scalar(1)), + cv::Mat(1, 4, CV_8UC1, cv::Scalar(2)), + cv::Mat(1, 4, CV_8UC1, cv::Scalar(3)),}; + + cv::Mat out; + cv::vconcat( matrices, out ); + //out: + //[1, 1, 1, 1; + // 2, 2, 2, 2; + // 3, 3, 3, 3] + @endcode + @param src input array or vector of matrices. all of the matrices must have the same number of cols and the same depth + @param dst output array. It has the same number of cols and depth as the src, and the sum of rows of the src. +same depth. + */ +CV_EXPORTS_W void vconcat(InputArrayOfArrays src, OutputArray dst); + +/** @brief computes bitwise conjunction of the two arrays (dst = src1 & src2) +Calculates the per-element bit-wise conjunction of two arrays or an +array and a scalar. + +The function cv::bitwise_and calculates the per-element bit-wise logical conjunction for: +* Two arrays when src1 and src2 have the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) \wedge \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +* An array and a scalar when src2 is constructed from Scalar or has + the same number of elements as `src1.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} (I) \wedge \texttt{src2} \quad \texttt{if mask} (I) \ne0\f] +* A scalar and an array when src1 is constructed from Scalar or has + the same number of elements as `src2.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} \wedge \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +In case of floating-point arrays, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel arrays, each channel is processed +independently. In the second and third cases above, the scalar is first +converted to the array type. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array that has the same size and type as the input +arrays. +@param mask optional operation mask, 8-bit single channel array, that +specifies elements of the output array to be changed. +*/ +CV_EXPORTS_W void bitwise_and(InputArray src1, InputArray src2, + OutputArray dst, InputArray mask = noArray()); + +/** @brief Calculates the per-element bit-wise disjunction of two arrays or an +array and a scalar. + +The function cv::bitwise_or calculates the per-element bit-wise logical disjunction for: +* Two arrays when src1 and src2 have the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) \vee \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +* An array and a scalar when src2 is constructed from Scalar or has + the same number of elements as `src1.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} (I) \vee \texttt{src2} \quad \texttt{if mask} (I) \ne0\f] +* A scalar and an array when src1 is constructed from Scalar or has + the same number of elements as `src2.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} \vee \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +In case of floating-point arrays, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel arrays, each channel is processed +independently. In the second and third cases above, the scalar is first +converted to the array type. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array that has the same size and type as the input +arrays. +@param mask optional operation mask, 8-bit single channel array, that +specifies elements of the output array to be changed. +*/ +CV_EXPORTS_W void bitwise_or(InputArray src1, InputArray src2, + OutputArray dst, InputArray mask = noArray()); + +/** @brief Calculates the per-element bit-wise "exclusive or" operation on two +arrays or an array and a scalar. + +The function cv::bitwise_xor calculates the per-element bit-wise logical "exclusive-or" +operation for: +* Two arrays when src1 and src2 have the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) \oplus \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +* An array and a scalar when src2 is constructed from Scalar or has + the same number of elements as `src1.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} (I) \oplus \texttt{src2} \quad \texttt{if mask} (I) \ne0\f] +* A scalar and an array when src1 is constructed from Scalar or has + the same number of elements as `src2.channels()`: + \f[\texttt{dst} (I) = \texttt{src1} \oplus \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0\f] +In case of floating-point arrays, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel arrays, each channel is processed +independently. In the 2nd and 3rd cases above, the scalar is first +converted to the array type. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array that has the same size and type as the input +arrays. +@param mask optional operation mask, 8-bit single channel array, that +specifies elements of the output array to be changed. +*/ +CV_EXPORTS_W void bitwise_xor(InputArray src1, InputArray src2, + OutputArray dst, InputArray mask = noArray()); + +/** @brief Inverts every bit of an array. + +The function cv::bitwise_not calculates per-element bit-wise inversion of the input +array: +\f[\texttt{dst} (I) = \neg \texttt{src} (I)\f] +In case of a floating-point input array, its machine-specific bit +representation (usually IEEE754-compliant) is used for the operation. In +case of multi-channel arrays, each channel is processed independently. +@param src input array. +@param dst output array that has the same size and type as the input +array. +@param mask optional operation mask, 8-bit single channel array, that +specifies elements of the output array to be changed. +*/ +CV_EXPORTS_W void bitwise_not(InputArray src, OutputArray dst, + InputArray mask = noArray()); + +/** @brief Calculates the per-element absolute difference between two arrays or between an array and a scalar. + +The function cv::absdiff calculates: +* Absolute difference between two arrays when they have the same + size and type: + \f[\texttt{dst}(I) = \texttt{saturate} (| \texttt{src1}(I) - \texttt{src2}(I)|)\f] +* Absolute difference between an array and a scalar when the second + array is constructed from Scalar or has as many elements as the + number of channels in `src1`: + \f[\texttt{dst}(I) = \texttt{saturate} (| \texttt{src1}(I) - \texttt{src2} |)\f] +* Absolute difference between a scalar and an array when the first + array is constructed from Scalar or has as many elements as the + number of channels in `src2`: + \f[\texttt{dst}(I) = \texttt{saturate} (| \texttt{src1} - \texttt{src2}(I) |)\f] + where I is a multi-dimensional index of array elements. In case of + multi-channel arrays, each channel is processed independently. +@note Saturation is not applied when the arrays have the depth CV_32S. +You may even get a negative value in the case of overflow. +@param src1 first input array or a scalar. +@param src2 second input array or a scalar. +@param dst output array that has the same size and type as input arrays. +@sa cv::abs(const Mat&) +*/ +CV_EXPORTS_W void absdiff(InputArray src1, InputArray src2, OutputArray dst); + +/** @brief This is an overloaded member function, provided for convenience (python) +Copies the matrix to another one. +When the operation mask is specified, if the Mat::create call shown above reallocates the matrix, the newly allocated matrix is initialized with all zeros before copying the data. +@param src source matrix. +@param dst Destination matrix. If it does not have a proper size or type before the operation, it is +reallocated. +@param mask Operation mask of the same size as \*this. Its non-zero elements indicate which matrix +elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels. +*/ + +void CV_EXPORTS_W copyTo(InputArray src, OutputArray dst, InputArray mask); +/** @brief Checks if array elements lie between the elements of two other arrays. + +The function checks the range as follows: +- For every element of a single-channel input array: + \f[\texttt{dst} (I)= \texttt{lowerb} (I)_0 \leq \texttt{src} (I)_0 \leq \texttt{upperb} (I)_0\f] +- For two-channel arrays: + \f[\texttt{dst} (I)= \texttt{lowerb} (I)_0 \leq \texttt{src} (I)_0 \leq \texttt{upperb} (I)_0 \land \texttt{lowerb} (I)_1 \leq \texttt{src} (I)_1 \leq \texttt{upperb} (I)_1\f] +- and so forth. + +That is, dst (I) is set to 255 (all 1 -bits) if src (I) is within the +specified 1D, 2D, 3D, ... box and 0 otherwise. + +When the lower and/or upper boundary parameters are scalars, the indexes +(I) at lowerb and upperb in the above formulas should be omitted. +@param src first input array. +@param lowerb inclusive lower boundary array or a scalar. +@param upperb inclusive upper boundary array or a scalar. +@param dst output array of the same size as src and CV_8U type. +*/ +CV_EXPORTS_W void inRange(InputArray src, InputArray lowerb, + InputArray upperb, OutputArray dst); + +/** @brief Performs the per-element comparison of two arrays or an array and scalar value. + +The function compares: +* Elements of two arrays when src1 and src2 have the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) \,\texttt{cmpop}\, \texttt{src2} (I)\f] +* Elements of src1 with a scalar src2 when src2 is constructed from + Scalar or has a single element: + \f[\texttt{dst} (I) = \texttt{src1}(I) \,\texttt{cmpop}\, \texttt{src2}\f] +* src1 with elements of src2 when src1 is constructed from Scalar or + has a single element: + \f[\texttt{dst} (I) = \texttt{src1} \,\texttt{cmpop}\, \texttt{src2} (I)\f] +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: +@code{.cpp} + Mat dst1 = src1 >= src2; + Mat dst2 = src1 < 8; + ... +@endcode +@param src1 first input array or a scalar; when it is an array, it must have a single channel. +@param src2 second input array or a scalar; when it is an array, it must have a single channel. +@param dst output array of type ref CV_8U that has the same size and the same number of channels as + the input arrays. +@param cmpop a flag, that specifies correspondence between the arrays (cv::CmpTypes) +@sa checkRange, min, max, threshold +*/ +CV_EXPORTS_W void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop); + +/** @brief Calculates per-element minimum of two arrays or an array and a scalar. + +The function cv::min calculates the per-element minimum of two arrays: +\f[\texttt{dst} (I)= \min ( \texttt{src1} (I), \texttt{src2} (I))\f] +or array and a scalar: +\f[\texttt{dst} (I)= \min ( \texttt{src1} (I), \texttt{value} )\f] +@param src1 first input array. +@param src2 second input array of the same size and type as src1. +@param dst output array of the same size and type as src1. +@sa max, compare, inRange, minMaxLoc +*/ +CV_EXPORTS_W void min(InputArray src1, InputArray src2, OutputArray dst); +/** @overload +needed to avoid conflicts with const _Tp& std::min(const _Tp&, const _Tp&, _Compare) +*/ +CV_EXPORTS void min(const Mat& src1, const Mat& src2, Mat& dst); +/** @overload +needed to avoid conflicts with const _Tp& std::min(const _Tp&, const _Tp&, _Compare) +*/ +CV_EXPORTS void min(const UMat& src1, const UMat& src2, UMat& dst); + +/** @brief Calculates per-element maximum of two arrays or an array and a scalar. + +The function cv::max calculates the per-element maximum of two arrays: +\f[\texttt{dst} (I)= \max ( \texttt{src1} (I), \texttt{src2} (I))\f] +or array and a scalar: +\f[\texttt{dst} (I)= \max ( \texttt{src1} (I), \texttt{value} )\f] +@param src1 first input array. +@param src2 second input array of the same size and type as src1 . +@param dst output array of the same size and type as src1. +@sa min, compare, inRange, minMaxLoc, @ref MatrixExpressions +*/ +CV_EXPORTS_W void max(InputArray src1, InputArray src2, OutputArray dst); +/** @overload +needed to avoid conflicts with const _Tp& std::min(const _Tp&, const _Tp&, _Compare) +*/ +CV_EXPORTS void max(const Mat& src1, const Mat& src2, Mat& dst); +/** @overload +needed to avoid conflicts with const _Tp& std::min(const _Tp&, const _Tp&, _Compare) +*/ +CV_EXPORTS void max(const UMat& src1, const UMat& src2, UMat& dst); + +/** @brief Calculates a square root of array elements. + +The function cv::sqrt calculates a square root of each input array element. +In case of multi-channel arrays, each channel is processed +independently. The accuracy is approximately the same as of the built-in +std::sqrt . +@param src input floating-point array. +@param dst output array of the same size and type as src. +*/ +CV_EXPORTS_W void sqrt(InputArray src, OutputArray dst); + +/** @brief Raises every array element to a power. + +The function cv::pow raises every element of the input array to power : +\f[\texttt{dst} (I) = \fork{\texttt{src}(I)^{power}}{if \(\texttt{power}\) is integer}{|\texttt{src}(I)|^{power}}{otherwise}\f] + +So, for a non-integer power exponent, the absolute values of input array +elements are used. However, it is possible to get true values for +negative values using some extra operations. In the example below, +computing the 5th root of array src shows: +@code{.cpp} + Mat mask = src < 0; + pow(src, 1./5, dst); + subtract(Scalar::all(0), dst, dst, mask); +@endcode +For some values of power, such as integer values, 0.5 and -0.5, +specialized faster algorithms are used. + +Special values (NaN, Inf) are not handled. +@param src input array. +@param power exponent of power. +@param dst output array of the same size and type as src. +@sa sqrt, exp, log, cartToPolar, polarToCart +*/ +CV_EXPORTS_W void pow(InputArray src, double power, OutputArray dst); + +/** @brief Calculates the exponent of every array element. + +The function cv::exp calculates the exponent of every element of the input +array: +\f[\texttt{dst} [I] = e^{ src(I) }\f] + +The maximum relative error is about 7e-6 for single-precision input and +less than 1e-10 for double-precision input. Currently, the function +converts denormalized values to zeros on output. Special values (NaN, +Inf) are not handled. +@param src input array. +@param dst output array of the same size and type as src. +@sa log , cartToPolar , polarToCart , phase , pow , sqrt , magnitude +*/ +CV_EXPORTS_W void exp(InputArray src, OutputArray dst); + +/** @brief Calculates the natural logarithm of every array element. + +The function cv::log calculates the natural logarithm of every element of the input array: +\f[\texttt{dst} (I) = \log (\texttt{src}(I)) \f] + +Output on zero, negative and special (NaN, Inf) values is undefined. + +@param src input array. +@param dst output array of the same size and type as src . +@sa exp, cartToPolar, polarToCart, phase, pow, sqrt, magnitude +*/ +CV_EXPORTS_W void log(InputArray src, OutputArray dst); + +/** @brief Calculates x and y coordinates of 2D vectors from their magnitude and angle. + +The function cv::polarToCart calculates the Cartesian coordinates of each 2D +vector represented by the corresponding elements of magnitude and angle: +\f[\begin{array}{l} \texttt{x} (I) = \texttt{magnitude} (I) \cos ( \texttt{angle} (I)) \\ \texttt{y} (I) = \texttt{magnitude} (I) \sin ( \texttt{angle} (I)) \\ \end{array}\f] + +The relative accuracy of the estimated coordinates is about 1e-6. +@param magnitude input floating-point array of magnitudes of 2D vectors; +it can be an empty matrix (=Mat()), in this case, the function assumes +that all the magnitudes are =1; if it is not empty, it must have the +same size and type as angle. +@param angle input floating-point array of angles of 2D vectors. +@param x output array of x-coordinates of 2D vectors; it has the same +size and type as angle. +@param y output array of y-coordinates of 2D vectors; it has the same +size and type as angle. +@param angleInDegrees when true, the input angles are measured in +degrees, otherwise, they are measured in radians. +@sa cartToPolar, magnitude, phase, exp, log, pow, sqrt +*/ +CV_EXPORTS_W void polarToCart(InputArray magnitude, InputArray angle, + OutputArray x, OutputArray y, bool angleInDegrees = false); + +/** @brief Calculates the magnitude and angle of 2D vectors. + +The function cv::cartToPolar calculates either the magnitude, angle, or both +for every 2D vector (x(I),y(I)): +\f[\begin{array}{l} \texttt{magnitude} (I)= \sqrt{\texttt{x}(I)^2+\texttt{y}(I)^2} , \\ \texttt{angle} (I)= \texttt{atan2} ( \texttt{y} (I), \texttt{x} (I))[ \cdot180 / \pi ] \end{array}\f] + +The angles are calculated with accuracy about 0.3 degrees. For the point +(0,0), the angle is set to 0. +@param x array of x-coordinates; this must be a single-precision or +double-precision floating-point array. +@param y array of y-coordinates, that must have the same size and same type as x. +@param magnitude output array of magnitudes of the same size and type as x. +@param angle output array of angles that has the same size and type as +x; the angles are measured in radians (from 0 to 2\*Pi) or in degrees (0 to 360 degrees). +@param angleInDegrees a flag, indicating whether the angles are measured +in radians (which is by default), or in degrees. +@sa Sobel, Scharr +*/ +CV_EXPORTS_W void cartToPolar(InputArray x, InputArray y, + OutputArray magnitude, OutputArray angle, + bool angleInDegrees = false); + +/** @brief Calculates the rotation angle of 2D vectors. + +The function cv::phase calculates the rotation angle of each 2D vector that +is formed from the corresponding elements of x and y : +\f[\texttt{angle} (I) = \texttt{atan2} ( \texttt{y} (I), \texttt{x} (I))\f] + +The angle estimation accuracy is about 0.3 degrees. When x(I)=y(I)=0 , +the corresponding angle(I) is set to 0. +@param x input floating-point array of x-coordinates of 2D vectors. +@param y input array of y-coordinates of 2D vectors; it must have the +same size and the same type as x. +@param angle output array of vector angles; it has the same size and +same type as x . +@param angleInDegrees when true, the function calculates the angle in +degrees, otherwise, they are measured in radians. +*/ +CV_EXPORTS_W void phase(InputArray x, InputArray y, OutputArray angle, + bool angleInDegrees = false); + +/** @brief Calculates the magnitude of 2D vectors. + +The function cv::magnitude calculates the magnitude of 2D vectors formed +from the corresponding elements of x and y arrays: +\f[\texttt{dst} (I) = \sqrt{\texttt{x}(I)^2 + \texttt{y}(I)^2}\f] +@param x floating-point array of x-coordinates of the vectors. +@param y floating-point array of y-coordinates of the vectors; it must +have the same size as x. +@param magnitude output array of the same size and type as x. +@sa cartToPolar, polarToCart, phase, sqrt +*/ +CV_EXPORTS_W void magnitude(InputArray x, InputArray y, OutputArray magnitude); + +/** @brief Checks every element of an input array for invalid values. + +The function cv::checkRange checks that every array element is neither NaN nor infinite. When minVal \> +-DBL_MAX and maxVal \< DBL_MAX, the function also checks that each value is between minVal and +maxVal. In case of multi-channel arrays, each channel is processed independently. If some values +are out of range, position of the first outlier is stored in pos (when pos != NULL). Then, the +function either returns false (when quiet=true) or throws an exception. +@param a input array. +@param quiet a flag, indicating whether the functions quietly return false when the array elements +are out of range or they throw an exception. +@param pos optional output parameter, when not NULL, must be a pointer to array of src.dims +elements. +@param minVal inclusive lower boundary of valid values range. +@param maxVal exclusive upper boundary of valid values range. +*/ +CV_EXPORTS_W bool checkRange(InputArray a, bool quiet = true, CV_OUT Point* pos = 0, + double minVal = -DBL_MAX, double maxVal = DBL_MAX); + +/** @brief converts NaN's to the given number +*/ +CV_EXPORTS_W void patchNaNs(InputOutputArray a, double val = 0); + +/** @brief Performs generalized matrix multiplication. + +The function cv::gemm performs generalized matrix multiplication similar to the +gemm functions in BLAS level 3. For example, +`gemm(src1, src2, alpha, src3, beta, dst, GEMM_1_T + GEMM_3_T)` +corresponds to +\f[\texttt{dst} = \texttt{alpha} \cdot \texttt{src1} ^T \cdot \texttt{src2} + \texttt{beta} \cdot \texttt{src3} ^T\f] + +In case of complex (two-channel) data, performed a complex matrix +multiplication. + +The function can be replaced with a matrix expression. For example, the +above call can be replaced with: +@code{.cpp} + dst = alpha*src1.t()*src2 + beta*src3.t(); +@endcode +@param src1 first multiplied input matrix that could be real(CV_32FC1, +CV_64FC1) or complex(CV_32FC2, CV_64FC2). +@param src2 second multiplied input matrix of the same type as src1. +@param alpha weight of the matrix product. +@param src3 third optional delta matrix added to the matrix product; it +should have the same type as src1 and src2. +@param beta weight of src3. +@param dst output matrix; it has the proper size and the same type as +input matrices. +@param flags operation flags (cv::GemmFlags) +@sa mulTransposed , transform +*/ +CV_EXPORTS_W void gemm(InputArray src1, InputArray src2, double alpha, + InputArray src3, double beta, OutputArray dst, int flags = 0); + +/** @brief Calculates the product of a matrix and its transposition. + +The function cv::mulTransposed calculates the product of src and its +transposition: +\f[\texttt{dst} = \texttt{scale} ( \texttt{src} - \texttt{delta} )^T ( \texttt{src} - \texttt{delta} )\f] +if aTa=true , and +\f[\texttt{dst} = \texttt{scale} ( \texttt{src} - \texttt{delta} ) ( \texttt{src} - \texttt{delta} )^T\f] +otherwise. The function is used to calculate the covariance matrix. With +zero delta, it can be used as a faster substitute for general matrix +product A\*B when B=A' +@param src input single-channel matrix. Note that unlike gemm, the +function can multiply not only floating-point matrices. +@param dst output square matrix. +@param aTa Flag specifying the multiplication ordering. See the +description below. +@param delta Optional delta matrix subtracted from src before the +multiplication. When the matrix is empty ( delta=noArray() ), it is +assumed to be zero, that is, nothing is subtracted. If it has the same +size as src , it is simply subtracted. Otherwise, it is "repeated" (see +repeat ) to cover the full src and then subtracted. Type of the delta +matrix, when it is not empty, must be the same as the type of created +output matrix. See the dtype parameter description below. +@param scale Optional scale factor for the matrix product. +@param dtype Optional type of the output matrix. When it is negative, +the output matrix will have the same type as src . Otherwise, it will be +type=CV_MAT_DEPTH(dtype) that should be either CV_32F or CV_64F . +@sa calcCovarMatrix, gemm, repeat, reduce +*/ +CV_EXPORTS_W void mulTransposed( InputArray src, OutputArray dst, bool aTa, + InputArray delta = noArray(), + double scale = 1, int dtype = -1 ); + +/** @brief Transposes a matrix. + +The function cv::transpose transposes the matrix src : +\f[\texttt{dst} (i,j) = \texttt{src} (j,i)\f] +@note No complex conjugation is done in case of a complex matrix. It +should be done separately if needed. +@param src input array. +@param dst output array of the same type as src. +*/ +CV_EXPORTS_W void transpose(InputArray src, OutputArray dst); + +/** @brief Performs the matrix transformation of every array element. + +The function cv::transform performs the matrix transformation of every +element of the array src and stores the results in dst : +\f[\texttt{dst} (I) = \texttt{m} \cdot \texttt{src} (I)\f] +(when m.cols=src.channels() ), or +\f[\texttt{dst} (I) = \texttt{m} \cdot [ \texttt{src} (I); 1]\f] +(when m.cols=src.channels()+1 ) + +Every element of the N -channel array src is interpreted as N -element +vector that is transformed using the M x N or M x (N+1) matrix m to +M-element vector - the corresponding element of the output array dst . + +The function may be used for geometrical transformation of +N -dimensional points, arbitrary linear color space transformation (such +as various kinds of RGB to YUV transforms), shuffling the image +channels, and so forth. +@param src input array that must have as many channels (1 to 4) as +m.cols or m.cols-1. +@param dst output array of the same size and depth as src; it has as +many channels as m.rows. +@param m transformation 2x2 or 2x3 floating-point matrix. +@sa perspectiveTransform, getAffineTransform, estimateAffine2D, warpAffine, warpPerspective +*/ +CV_EXPORTS_W void transform(InputArray src, OutputArray dst, InputArray m ); + +/** @brief Performs the perspective matrix transformation of vectors. + +The function cv::perspectiveTransform transforms every element of src by +treating it as a 2D or 3D vector, in the following way: +\f[(x, y, z) \rightarrow (x'/w, y'/w, z'/w)\f] +where +\f[(x', y', z', w') = \texttt{mat} \cdot \begin{bmatrix} x & y & z & 1 \end{bmatrix}\f] +and +\f[w = \fork{w'}{if \(w' \ne 0\)}{\infty}{otherwise}\f] + +Here a 3D vector transformation is shown. In case of a 2D vector +transformation, the z component is omitted. + +@note The function transforms a sparse set of 2D or 3D vectors. If you +want to transform an image using perspective transformation, use +warpPerspective . If you have an inverse problem, that is, you want to +compute the most probable perspective transformation out of several +pairs of corresponding points, you can use getPerspectiveTransform or +findHomography . +@param src input two-channel or three-channel floating-point array; each +element is a 2D/3D vector to be transformed. +@param dst output array of the same size and type as src. +@param m 3x3 or 4x4 floating-point transformation matrix. +@sa transform, warpPerspective, getPerspectiveTransform, findHomography +*/ +CV_EXPORTS_W void perspectiveTransform(InputArray src, OutputArray dst, InputArray m ); + +/** @brief Copies the lower or the upper half of a square matrix to its another half. + +The function cv::completeSymm copies the lower or the upper half of a square matrix to +its another half. The matrix diagonal remains unchanged: + - \f$\texttt{m}_{ij}=\texttt{m}_{ji}\f$ for \f$i > j\f$ if + lowerToUpper=false + - \f$\texttt{m}_{ij}=\texttt{m}_{ji}\f$ for \f$i < j\f$ if + lowerToUpper=true + +@param m input-output floating-point square matrix. +@param lowerToUpper operation flag; if true, the lower half is copied to +the upper half. Otherwise, the upper half is copied to the lower half. +@sa flip, transpose +*/ +CV_EXPORTS_W void completeSymm(InputOutputArray m, bool lowerToUpper = false); + +/** @brief Initializes a scaled identity matrix. + +The function cv::setIdentity initializes a scaled identity matrix: +\f[\texttt{mtx} (i,j)= \fork{\texttt{value}}{ if \(i=j\)}{0}{otherwise}\f] + +The function can also be emulated using the matrix initializers and the +matrix expressions: +@code + Mat A = Mat::eye(4, 3, CV_32F)*5; + // A will be set to [[5, 0, 0], [0, 5, 0], [0, 0, 5], [0, 0, 0]] +@endcode +@param mtx matrix to initialize (not necessarily square). +@param s value to assign to diagonal elements. +@sa Mat::zeros, Mat::ones, Mat::setTo, Mat::operator= +*/ +CV_EXPORTS_W void setIdentity(InputOutputArray mtx, const Scalar& s = Scalar(1)); + +/** @brief Returns the determinant of a square floating-point matrix. + +The function cv::determinant calculates and returns the determinant of the +specified matrix. For small matrices ( mtx.cols=mtx.rows\<=3 ), the +direct method is used. For larger matrices, the function uses LU +factorization with partial pivoting. + +For symmetric positively-determined matrices, it is also possible to use +eigen decomposition to calculate the determinant. +@param mtx input matrix that must have CV_32FC1 or CV_64FC1 type and +square size. +@sa trace, invert, solve, eigen, @ref MatrixExpressions +*/ +CV_EXPORTS_W double determinant(InputArray mtx); + +/** @brief Returns the trace of a matrix. + +The function cv::trace returns the sum of the diagonal elements of the +matrix mtx . +\f[\mathrm{tr} ( \texttt{mtx} ) = \sum _i \texttt{mtx} (i,i)\f] +@param mtx input matrix. +*/ +CV_EXPORTS_W Scalar trace(InputArray mtx); + +/** @brief Finds the inverse or pseudo-inverse of a matrix. + +The function cv::invert inverts the matrix src and stores the result in dst +. When the matrix src is singular or non-square, the function calculates +the pseudo-inverse matrix (the dst matrix) so that norm(src\*dst - I) is +minimal, where I is an identity matrix. + +In case of the #DECOMP_LU method, the function returns non-zero value if +the inverse has been successfully calculated and 0 if src is singular. + +In case of the #DECOMP_SVD method, the function returns the inverse +condition number of src (the ratio of the smallest singular value to the +largest singular value) and 0 if src is singular. The SVD method +calculates a pseudo-inverse matrix if src is singular. + +Similarly to #DECOMP_LU, the method #DECOMP_CHOLESKY works only with +non-singular square matrices that should also be symmetrical and +positively defined. In this case, the function stores the inverted +matrix in dst and returns non-zero. Otherwise, it returns 0. + +@param src input floating-point M x N matrix. +@param dst output matrix of N x M size and the same type as src. +@param flags inversion method (cv::DecompTypes) +@sa solve, SVD +*/ +CV_EXPORTS_W double invert(InputArray src, OutputArray dst, int flags = DECOMP_LU); + +/** @brief Solves one or more linear systems or least-squares problems. + +The function cv::solve solves a linear system or least-squares problem (the +latter is possible with SVD or QR methods, or by specifying the flag +#DECOMP_NORMAL ): +\f[\texttt{dst} = \arg \min _X \| \texttt{src1} \cdot \texttt{X} - \texttt{src2} \|\f] + +If #DECOMP_LU or #DECOMP_CHOLESKY method is used, the function returns 1 +if src1 (or \f$\texttt{src1}^T\texttt{src1}\f$ ) is non-singular. Otherwise, +it returns 0. In the latter case, dst is not valid. Other methods find a +pseudo-solution in case of a singular left-hand side part. + +@note If you want to find a unity-norm solution of an under-defined +singular system \f$\texttt{src1}\cdot\texttt{dst}=0\f$ , the function solve +will not do the work. Use SVD::solveZ instead. + +@param src1 input matrix on the left-hand side of the system. +@param src2 input matrix on the right-hand side of the system. +@param dst output solution. +@param flags solution (matrix inversion) method (#DecompTypes) +@sa invert, SVD, eigen +*/ +CV_EXPORTS_W bool solve(InputArray src1, InputArray src2, + OutputArray dst, int flags = DECOMP_LU); + +/** @brief Sorts each row or each column of a matrix. + +The function cv::sort sorts each matrix row or each matrix column in +ascending or descending order. So you should pass two operation flags to +get desired behaviour. If you want to sort matrix rows or columns +lexicographically, you can use STL std::sort generic function with the +proper comparison predicate. + +@param src input single-channel array. +@param dst output array of the same size and type as src. +@param flags operation flags, a combination of #SortFlags +@sa sortIdx, randShuffle +*/ +CV_EXPORTS_W void sort(InputArray src, OutputArray dst, int flags); + +/** @brief Sorts each row or each column of a matrix. + +The function cv::sortIdx sorts each matrix row or each matrix column in the +ascending or descending order. So you should pass two operation flags to +get desired behaviour. Instead of reordering the elements themselves, it +stores the indices of sorted elements in the output array. For example: +@code + Mat A = Mat::eye(3,3,CV_32F), B; + sortIdx(A, B, SORT_EVERY_ROW + SORT_ASCENDING); + // B will probably contain + // (because of equal elements in A some permutations are possible): + // [[1, 2, 0], [0, 2, 1], [0, 1, 2]] +@endcode +@param src input single-channel array. +@param dst output integer array of the same size as src. +@param flags operation flags that could be a combination of cv::SortFlags +@sa sort, randShuffle +*/ +CV_EXPORTS_W void sortIdx(InputArray src, OutputArray dst, int flags); + +/** @brief Finds the real roots of a cubic equation. + +The function solveCubic finds the real roots of a cubic equation: +- if coeffs is a 4-element vector: +\f[\texttt{coeffs} [0] x^3 + \texttt{coeffs} [1] x^2 + \texttt{coeffs} [2] x + \texttt{coeffs} [3] = 0\f] +- if coeffs is a 3-element vector: +\f[x^3 + \texttt{coeffs} [0] x^2 + \texttt{coeffs} [1] x + \texttt{coeffs} [2] = 0\f] + +The roots are stored in the roots array. +@param coeffs equation coefficients, an array of 3 or 4 elements. +@param roots output array of real roots that has 1 or 3 elements. +@return number of real roots. It can be 0, 1 or 2. +*/ +CV_EXPORTS_W int solveCubic(InputArray coeffs, OutputArray roots); + +/** @brief Finds the real or complex roots of a polynomial equation. + +The function cv::solvePoly finds real and complex roots of a polynomial equation: +\f[\texttt{coeffs} [n] x^{n} + \texttt{coeffs} [n-1] x^{n-1} + ... + \texttt{coeffs} [1] x + \texttt{coeffs} [0] = 0\f] +@param coeffs array of polynomial coefficients. +@param roots output (complex) array of roots. +@param maxIters maximum number of iterations the algorithm does. +*/ +CV_EXPORTS_W double solvePoly(InputArray coeffs, OutputArray roots, int maxIters = 300); + +/** @brief Calculates eigenvalues and eigenvectors of a symmetric matrix. + +The function cv::eigen calculates just eigenvalues, or eigenvalues and eigenvectors of the symmetric +matrix src: +@code + src*eigenvectors.row(i).t() = eigenvalues.at(i)*eigenvectors.row(i).t() +@endcode + +@note Use cv::eigenNonSymmetric for calculation of real eigenvalues and eigenvectors of non-symmetric matrix. + +@param src input matrix that must have CV_32FC1 or CV_64FC1 type, square size and be symmetrical +(src ^T^ == src). +@param eigenvalues output vector of eigenvalues of the same type as src; the eigenvalues are stored +in the descending order. +@param eigenvectors output matrix of eigenvectors; it has the same size and type as src; the +eigenvectors are stored as subsequent matrix rows, in the same order as the corresponding +eigenvalues. +@sa eigenNonSymmetric, completeSymm , PCA +*/ +CV_EXPORTS_W bool eigen(InputArray src, OutputArray eigenvalues, + OutputArray eigenvectors = noArray()); + +/** @brief Calculates eigenvalues and eigenvectors of a non-symmetric matrix (real eigenvalues only). + +@note Assumes real eigenvalues. + +The function calculates eigenvalues and eigenvectors (optional) of the square matrix src: +@code + src*eigenvectors.row(i).t() = eigenvalues.at(i)*eigenvectors.row(i).t() +@endcode + +@param src input matrix (CV_32FC1 or CV_64FC1 type). +@param eigenvalues output vector of eigenvalues (type is the same type as src). +@param eigenvectors output matrix of eigenvectors (type is the same type as src). The eigenvectors are stored as subsequent matrix rows, in the same order as the corresponding eigenvalues. +@sa eigen +*/ +CV_EXPORTS_W void eigenNonSymmetric(InputArray src, OutputArray eigenvalues, + OutputArray eigenvectors); + +/** @brief Calculates the covariance matrix of a set of vectors. + +The function cv::calcCovarMatrix calculates the covariance matrix and, optionally, the mean vector of +the set of input vectors. +@param samples samples stored as separate matrices +@param nsamples number of samples +@param covar output covariance matrix of the type ctype and square size. +@param mean input or output (depending on the flags) array as the average value of the input vectors. +@param flags operation flags as a combination of #CovarFlags +@param ctype type of the matrixl; it equals 'CV_64F' by default. +@sa PCA, mulTransposed, Mahalanobis +@todo InputArrayOfArrays +*/ +CV_EXPORTS void calcCovarMatrix( const Mat* samples, int nsamples, Mat& covar, Mat& mean, + int flags, int ctype = CV_64F); + +/** @overload +@note use #COVAR_ROWS or #COVAR_COLS flag +@param samples samples stored as rows/columns of a single matrix. +@param covar output covariance matrix of the type ctype and square size. +@param mean input or output (depending on the flags) array as the average value of the input vectors. +@param flags operation flags as a combination of #CovarFlags +@param ctype type of the matrixl; it equals 'CV_64F' by default. +*/ +CV_EXPORTS_W void calcCovarMatrix( InputArray samples, OutputArray covar, + InputOutputArray mean, int flags, int ctype = CV_64F); + +/** wrap PCA::operator() */ +CV_EXPORTS_W void PCACompute(InputArray data, InputOutputArray mean, + OutputArray eigenvectors, int maxComponents = 0); + +/** wrap PCA::operator() and add eigenvalues output parameter */ +CV_EXPORTS_AS(PCACompute2) void PCACompute(InputArray data, InputOutputArray mean, + OutputArray eigenvectors, OutputArray eigenvalues, + int maxComponents = 0); + +/** wrap PCA::operator() */ +CV_EXPORTS_W void PCACompute(InputArray data, InputOutputArray mean, + OutputArray eigenvectors, double retainedVariance); + +/** wrap PCA::operator() and add eigenvalues output parameter */ +CV_EXPORTS_AS(PCACompute2) void PCACompute(InputArray data, InputOutputArray mean, + OutputArray eigenvectors, OutputArray eigenvalues, + double retainedVariance); + +/** wrap PCA::project */ +CV_EXPORTS_W void PCAProject(InputArray data, InputArray mean, + InputArray eigenvectors, OutputArray result); + +/** wrap PCA::backProject */ +CV_EXPORTS_W void PCABackProject(InputArray data, InputArray mean, + InputArray eigenvectors, OutputArray result); + +/** wrap SVD::compute */ +CV_EXPORTS_W void SVDecomp( InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags = 0 ); + +/** wrap SVD::backSubst */ +CV_EXPORTS_W void SVBackSubst( InputArray w, InputArray u, InputArray vt, + InputArray rhs, OutputArray dst ); + +/** @brief Calculates the Mahalanobis distance between two vectors. + +The function cv::Mahalanobis calculates and returns the weighted distance between two vectors: +\f[d( \texttt{vec1} , \texttt{vec2} )= \sqrt{\sum_{i,j}{\texttt{icovar(i,j)}\cdot(\texttt{vec1}(I)-\texttt{vec2}(I))\cdot(\texttt{vec1(j)}-\texttt{vec2(j)})} }\f] +The covariance matrix may be calculated using the #calcCovarMatrix function and then inverted using +the invert function (preferably using the #DECOMP_SVD method, as the most accurate). +@param v1 first 1D input vector. +@param v2 second 1D input vector. +@param icovar inverse covariance matrix. +*/ +CV_EXPORTS_W double Mahalanobis(InputArray v1, InputArray v2, InputArray icovar); + +/** @brief Performs a forward or inverse Discrete Fourier transform of a 1D or 2D floating-point array. + +The function cv::dft performs one of the following: +- Forward the Fourier transform of a 1D vector of N elements: + \f[Y = F^{(N)} \cdot X,\f] + where \f$F^{(N)}_{jk}=\exp(-2\pi i j k/N)\f$ and \f$i=\sqrt{-1}\f$ +- Inverse the Fourier transform of a 1D vector of N elements: + \f[\begin{array}{l} X'= \left (F^{(N)} \right )^{-1} \cdot Y = \left (F^{(N)} \right )^* \cdot y \\ X = (1/N) \cdot X, \end{array}\f] + where \f$F^*=\left(\textrm{Re}(F^{(N)})-\textrm{Im}(F^{(N)})\right)^T\f$ +- Forward the 2D Fourier transform of a M x N matrix: + \f[Y = F^{(M)} \cdot X \cdot F^{(N)}\f] +- Inverse the 2D Fourier transform of a M x N matrix: + \f[\begin{array}{l} X'= \left (F^{(M)} \right )^* \cdot Y \cdot \left (F^{(N)} \right )^* \\ X = \frac{1}{M \cdot N} \cdot X' \end{array}\f] + +In case of real (single-channel) data, the output spectrum of the forward Fourier transform or input +spectrum of the inverse Fourier transform can be represented in a packed format called *CCS* +(complex-conjugate-symmetrical). It was borrowed from IPL (Intel\* Image Processing Library). Here +is how 2D *CCS* spectrum looks: +\f[\begin{bmatrix} Re Y_{0,0} & Re Y_{0,1} & Im Y_{0,1} & Re Y_{0,2} & Im Y_{0,2} & \cdots & Re Y_{0,N/2-1} & Im Y_{0,N/2-1} & Re Y_{0,N/2} \\ Re Y_{1,0} & Re Y_{1,1} & Im Y_{1,1} & Re Y_{1,2} & Im Y_{1,2} & \cdots & Re Y_{1,N/2-1} & Im Y_{1,N/2-1} & Re Y_{1,N/2} \\ Im Y_{1,0} & Re Y_{2,1} & Im Y_{2,1} & Re Y_{2,2} & Im Y_{2,2} & \cdots & Re Y_{2,N/2-1} & Im Y_{2,N/2-1} & Im Y_{1,N/2} \\ \hdotsfor{9} \\ Re Y_{M/2-1,0} & Re Y_{M-3,1} & Im Y_{M-3,1} & \hdotsfor{3} & Re Y_{M-3,N/2-1} & Im Y_{M-3,N/2-1}& Re Y_{M/2-1,N/2} \\ Im Y_{M/2-1,0} & Re Y_{M-2,1} & Im Y_{M-2,1} & \hdotsfor{3} & Re Y_{M-2,N/2-1} & Im Y_{M-2,N/2-1}& Im Y_{M/2-1,N/2} \\ Re Y_{M/2,0} & Re Y_{M-1,1} & Im Y_{M-1,1} & \hdotsfor{3} & Re Y_{M-1,N/2-1} & Im Y_{M-1,N/2-1}& Re Y_{M/2,N/2} \end{bmatrix}\f] + +In case of 1D transform of a real vector, the output looks like the first row of the matrix above. + +So, the function chooses an operation mode depending on the flags and size of the input array: +- If #DFT_ROWS is set or the input array has a single row or single column, the function + performs a 1D forward or inverse transform of each row of a matrix when #DFT_ROWS is set. + Otherwise, it performs a 2D transform. +- If the input array is real and #DFT_INVERSE is not set, the function performs a forward 1D or + 2D transform: + - When #DFT_COMPLEX_OUTPUT is set, the output is a complex matrix of the same size as + input. + - When #DFT_COMPLEX_OUTPUT is not set, the output is a real matrix of the same size as + input. In case of 2D transform, it uses the packed format as shown above. In case of a + single 1D transform, it looks like the first row of the matrix above. In case of + multiple 1D transforms (when using the #DFT_ROWS flag), each row of the output matrix + looks like the first row of the matrix above. +- If the input array is complex and either #DFT_INVERSE or #DFT_REAL_OUTPUT are not set, the + output is a complex array of the same size as input. The function performs a forward or + inverse 1D or 2D transform of the whole input array or each row of the input array + independently, depending on the flags DFT_INVERSE and DFT_ROWS. +- When #DFT_INVERSE is set and the input array is real, or it is complex but #DFT_REAL_OUTPUT + is set, the output is a real array of the same size as input. The function performs a 1D or 2D + inverse transformation of the whole input array or each individual row, depending on the flags + #DFT_INVERSE and #DFT_ROWS. + +If #DFT_SCALE is set, the scaling is done after the transformation. + +Unlike dct , the function supports arrays of arbitrary size. But only those arrays are processed +efficiently, whose sizes can be factorized in a product of small prime numbers (2, 3, and 5 in the +current implementation). Such an efficient DFT size can be calculated using the getOptimalDFTSize +method. + +The sample below illustrates how to calculate a DFT-based convolution of two 2D real arrays: +@code + void convolveDFT(InputArray A, InputArray B, OutputArray C) + { + // reallocate the output array if needed + C.create(abs(A.rows - B.rows)+1, abs(A.cols - B.cols)+1, A.type()); + Size dftSize; + // calculate the size of DFT transform + dftSize.width = getOptimalDFTSize(A.cols + B.cols - 1); + dftSize.height = getOptimalDFTSize(A.rows + B.rows - 1); + + // allocate temporary buffers and initialize them with 0's + Mat tempA(dftSize, A.type(), Scalar::all(0)); + Mat tempB(dftSize, B.type(), Scalar::all(0)); + + // copy A and B to the top-left corners of tempA and tempB, respectively + Mat roiA(tempA, Rect(0,0,A.cols,A.rows)); + A.copyTo(roiA); + Mat roiB(tempB, Rect(0,0,B.cols,B.rows)); + B.copyTo(roiB); + + // now transform the padded A & B in-place; + // use "nonzeroRows" hint for faster processing + dft(tempA, tempA, 0, A.rows); + dft(tempB, tempB, 0, B.rows); + + // multiply the spectrums; + // the function handles packed spectrum representations well + mulSpectrums(tempA, tempB, tempA); + + // transform the product back from the frequency domain. + // Even though all the result rows will be non-zero, + // you need only the first C.rows of them, and thus you + // pass nonzeroRows == C.rows + dft(tempA, tempA, DFT_INVERSE + DFT_SCALE, C.rows); + + // now copy the result back to C. + tempA(Rect(0, 0, C.cols, C.rows)).copyTo(C); + + // all the temporary buffers will be deallocated automatically + } +@endcode +To optimize this sample, consider the following approaches: +- Since nonzeroRows != 0 is passed to the forward transform calls and since A and B are copied to + the top-left corners of tempA and tempB, respectively, it is not necessary to clear the whole + tempA and tempB. It is only necessary to clear the tempA.cols - A.cols ( tempB.cols - B.cols) + rightmost columns of the matrices. +- This DFT-based convolution does not have to be applied to the whole big arrays, especially if B + is significantly smaller than A or vice versa. Instead, you can calculate convolution by parts. + To do this, you need to split the output array C into multiple tiles. For each tile, estimate + which parts of A and B are required to calculate convolution in this tile. If the tiles in C are + too small, the speed will decrease a lot because of repeated work. In the ultimate case, when + each tile in C is a single pixel, the algorithm becomes equivalent to the naive convolution + algorithm. If the tiles are too big, the temporary arrays tempA and tempB become too big and + there is also a slowdown because of bad cache locality. So, there is an optimal tile size + somewhere in the middle. +- If different tiles in C can be calculated in parallel and, thus, the convolution is done by + parts, the loop can be threaded. + +All of the above improvements have been implemented in #matchTemplate and #filter2D . Therefore, by +using them, you can get the performance even better than with the above theoretically optimal +implementation. Though, those two functions actually calculate cross-correlation, not convolution, +so you need to "flip" the second convolution operand B vertically and horizontally using flip . +@note +- An example using the discrete fourier transform can be found at + opencv_source_code/samples/cpp/dft.cpp +- (Python) An example using the dft functionality to perform Wiener deconvolution can be found + at opencv_source/samples/python/deconvolution.py +- (Python) An example rearranging the quadrants of a Fourier image can be found at + opencv_source/samples/python/dft.py +@param src input array that could be real or complex. +@param dst output array whose size and type depends on the flags . +@param flags transformation flags, representing a combination of the #DftFlags +@param nonzeroRows when the parameter is not zero, the function assumes that only the first +nonzeroRows rows of the input array (#DFT_INVERSE is not set) or only the first nonzeroRows of the +output array (#DFT_INVERSE is set) contain non-zeros, thus, the function can handle the rest of the +rows more efficiently and save some time; this technique is very useful for calculating array +cross-correlation or convolution using DFT. +@sa dct , getOptimalDFTSize , mulSpectrums, filter2D , matchTemplate , flip , cartToPolar , +magnitude , phase +*/ +CV_EXPORTS_W void dft(InputArray src, OutputArray dst, int flags = 0, int nonzeroRows = 0); + +/** @brief Calculates the inverse Discrete Fourier Transform of a 1D or 2D array. + +idft(src, dst, flags) is equivalent to dft(src, dst, flags | #DFT_INVERSE) . +@note None of dft and idft scales the result by default. So, you should pass #DFT_SCALE to one of +dft or idft explicitly to make these transforms mutually inverse. +@sa dft, dct, idct, mulSpectrums, getOptimalDFTSize +@param src input floating-point real or complex array. +@param dst output array whose size and type depend on the flags. +@param flags operation flags (see dft and #DftFlags). +@param nonzeroRows number of dst rows to process; the rest of the rows have undefined content (see +the convolution sample in dft description. +*/ +CV_EXPORTS_W void idft(InputArray src, OutputArray dst, int flags = 0, int nonzeroRows = 0); + +/** @brief Performs a forward or inverse discrete Cosine transform of 1D or 2D array. + +The function cv::dct performs a forward or inverse discrete Cosine transform (DCT) of a 1D or 2D +floating-point array: +- Forward Cosine transform of a 1D vector of N elements: + \f[Y = C^{(N)} \cdot X\f] + where + \f[C^{(N)}_{jk}= \sqrt{\alpha_j/N} \cos \left ( \frac{\pi(2k+1)j}{2N} \right )\f] + and + \f$\alpha_0=1\f$, \f$\alpha_j=2\f$ for *j \> 0*. +- Inverse Cosine transform of a 1D vector of N elements: + \f[X = \left (C^{(N)} \right )^{-1} \cdot Y = \left (C^{(N)} \right )^T \cdot Y\f] + (since \f$C^{(N)}\f$ is an orthogonal matrix, \f$C^{(N)} \cdot \left(C^{(N)}\right)^T = I\f$ ) +- Forward 2D Cosine transform of M x N matrix: + \f[Y = C^{(N)} \cdot X \cdot \left (C^{(N)} \right )^T\f] +- Inverse 2D Cosine transform of M x N matrix: + \f[X = \left (C^{(N)} \right )^T \cdot X \cdot C^{(N)}\f] + +The function chooses the mode of operation by looking at the flags and size of the input array: +- If (flags & #DCT_INVERSE) == 0 , the function does a forward 1D or 2D transform. Otherwise, it + is an inverse 1D or 2D transform. +- If (flags & #DCT_ROWS) != 0 , the function performs a 1D transform of each row. +- If the array is a single column or a single row, the function performs a 1D transform. +- If none of the above is true, the function performs a 2D transform. + +@note Currently dct supports even-size arrays (2, 4, 6 ...). For data analysis and approximation, you +can pad the array when necessary. +Also, the function performance depends very much, and not monotonically, on the array size (see +getOptimalDFTSize ). In the current implementation DCT of a vector of size N is calculated via DFT +of a vector of size N/2 . Thus, the optimal DCT size N1 \>= N can be calculated as: +@code + size_t getOptimalDCTSize(size_t N) { return 2*getOptimalDFTSize((N+1)/2); } + N1 = getOptimalDCTSize(N); +@endcode +@param src input floating-point array. +@param dst output array of the same size and type as src . +@param flags transformation flags as a combination of cv::DftFlags (DCT_*) +@sa dft , getOptimalDFTSize , idct +*/ +CV_EXPORTS_W void dct(InputArray src, OutputArray dst, int flags = 0); + +/** @brief Calculates the inverse Discrete Cosine Transform of a 1D or 2D array. + +idct(src, dst, flags) is equivalent to dct(src, dst, flags | DCT_INVERSE). +@param src input floating-point single-channel array. +@param dst output array of the same size and type as src. +@param flags operation flags. +@sa dct, dft, idft, getOptimalDFTSize +*/ +CV_EXPORTS_W void idct(InputArray src, OutputArray dst, int flags = 0); + +/** @brief Performs the per-element multiplication of two Fourier spectrums. + +The function cv::mulSpectrums performs the per-element multiplication of the two CCS-packed or complex +matrices that are results of a real or complex Fourier transform. + +The function, together with dft and idft , may be used to calculate convolution (pass conjB=false ) +or correlation (pass conjB=true ) of two arrays rapidly. When the arrays are complex, they are +simply multiplied (per element) with an optional conjugation of the second-array elements. When the +arrays are real, they are assumed to be CCS-packed (see dft for details). +@param a first input array. +@param b second input array of the same size and type as src1 . +@param c output array of the same size and type as src1 . +@param flags operation flags; currently, the only supported flag is cv::DFT_ROWS, which indicates that +each row of src1 and src2 is an independent 1D Fourier spectrum. If you do not want to use this flag, then simply add a `0` as value. +@param conjB optional flag that conjugates the second input array before the multiplication (true) +or not (false). +*/ +CV_EXPORTS_W void mulSpectrums(InputArray a, InputArray b, OutputArray c, + int flags, bool conjB = false); + +/** @brief Returns the optimal DFT size for a given vector size. + +DFT performance is not a monotonic function of a vector size. Therefore, when you calculate +convolution of two arrays or perform the spectral analysis of an array, it usually makes sense to +pad the input data with zeros to get a bit larger array that can be transformed much faster than the +original one. Arrays whose size is a power-of-two (2, 4, 8, 16, 32, ...) are the fastest to process. +Though, the arrays whose size is a product of 2's, 3's, and 5's (for example, 300 = 5\*5\*3\*2\*2) +are also processed quite efficiently. + +The function cv::getOptimalDFTSize returns the minimum number N that is greater than or equal to vecsize +so that the DFT of a vector of size N can be processed efficiently. In the current implementation N += 2 ^p^ \* 3 ^q^ \* 5 ^r^ for some integer p, q, r. + +The function returns a negative number if vecsize is too large (very close to INT_MAX ). + +While the function cannot be used directly to estimate the optimal vector size for DCT transform +(since the current DCT implementation supports only even-size vectors), it can be easily processed +as getOptimalDFTSize((vecsize+1)/2)\*2. +@param vecsize vector size. +@sa dft , dct , idft , idct , mulSpectrums +*/ +CV_EXPORTS_W int getOptimalDFTSize(int vecsize); + +/** @brief Returns the default random number generator. + +The function cv::theRNG returns the default random number generator. For each thread, there is a +separate random number generator, so you can use the function safely in multi-thread environments. +If you just need to get a single random number using this generator or initialize an array, you can +use randu or randn instead. But if you are going to generate many random numbers inside a loop, it +is much faster to use this function to retrieve the generator and then use RNG::operator _Tp() . +@sa RNG, randu, randn +*/ +CV_EXPORTS RNG& theRNG(); + +/** @brief Sets state of default random number generator. + +The function cv::setRNGSeed sets state of default random number generator to custom value. +@param seed new state for default random number generator +@sa RNG, randu, randn +*/ +CV_EXPORTS_W void setRNGSeed(int seed); + +/** @brief Generates a single uniformly-distributed random number or an array of random numbers. + +Non-template variant of the function fills the matrix dst with uniformly-distributed +random numbers from the specified range: +\f[\texttt{low} _c \leq \texttt{dst} (I)_c < \texttt{high} _c\f] +@param dst output array of random numbers; the array must be pre-allocated. +@param low inclusive lower boundary of the generated random numbers. +@param high exclusive upper boundary of the generated random numbers. +@sa RNG, randn, theRNG +*/ +CV_EXPORTS_W void randu(InputOutputArray dst, InputArray low, InputArray high); + +/** @brief Fills the array with normally distributed random numbers. + +The function cv::randn fills the matrix dst with normally distributed random numbers with the specified +mean vector and the standard deviation matrix. The generated random numbers are clipped to fit the +value range of the output array data type. +@param dst output array of random numbers; the array must be pre-allocated and have 1 to 4 channels. +@param mean mean value (expectation) of the generated random numbers. +@param stddev standard deviation of the generated random numbers; it can be either a vector (in +which case a diagonal standard deviation matrix is assumed) or a square matrix. +@sa RNG, randu +*/ +CV_EXPORTS_W void randn(InputOutputArray dst, InputArray mean, InputArray stddev); + +/** @brief Shuffles the array elements randomly. + +The function cv::randShuffle shuffles the specified 1D array by randomly choosing pairs of elements and +swapping them. The number of such swap operations will be dst.rows\*dst.cols\*iterFactor . +@param dst input/output numerical 1D array. +@param iterFactor scale factor that determines the number of random swap operations (see the details +below). +@param rng optional random number generator used for shuffling; if it is zero, theRNG () is used +instead. +@sa RNG, sort +*/ +CV_EXPORTS_W void randShuffle(InputOutputArray dst, double iterFactor = 1., RNG* rng = 0); + +/** @brief Principal Component Analysis + +The class is used to calculate a special basis for a set of vectors. The +basis will consist of eigenvectors of the covariance matrix calculated +from the input set of vectors. The class %PCA can also transform +vectors to/from the new coordinate space defined by the basis. Usually, +in this new coordinate system, each vector from the original set (and +any linear combination of such vectors) can be quite accurately +approximated by taking its first few components, corresponding to the +eigenvectors of the largest eigenvalues of the covariance matrix. +Geometrically it means that you calculate a projection of the vector to +a subspace formed by a few eigenvectors corresponding to the dominant +eigenvalues of the covariance matrix. And usually such a projection is +very close to the original vector. So, you can represent the original +vector from a high-dimensional space with a much shorter vector +consisting of the projected vector's coordinates in the subspace. Such a +transformation is also known as Karhunen-Loeve Transform, or KLT. +See http://en.wikipedia.org/wiki/Principal_component_analysis + +The sample below is the function that takes two matrices. The first +function stores a set of vectors (a row per vector) that is used to +calculate PCA. The second function stores another "test" set of vectors +(a row per vector). First, these vectors are compressed with PCA, then +reconstructed back, and then the reconstruction error norm is computed +and printed for each vector. : + +@code{.cpp} +using namespace cv; + +PCA compressPCA(const Mat& pcaset, int maxComponents, + const Mat& testset, Mat& compressed) +{ + PCA pca(pcaset, // pass the data + Mat(), // we do not have a pre-computed mean vector, + // so let the PCA engine to compute it + PCA::DATA_AS_ROW, // indicate that the vectors + // are stored as matrix rows + // (use PCA::DATA_AS_COL if the vectors are + // the matrix columns) + maxComponents // specify, how many principal components to retain + ); + // if there is no test data, just return the computed basis, ready-to-use + if( !testset.data ) + return pca; + CV_Assert( testset.cols == pcaset.cols ); + + compressed.create(testset.rows, maxComponents, testset.type()); + + Mat reconstructed; + for( int i = 0; i < testset.rows; i++ ) + { + Mat vec = testset.row(i), coeffs = compressed.row(i), reconstructed; + // compress the vector, the result will be stored + // in the i-th row of the output matrix + pca.project(vec, coeffs); + // and then reconstruct it + pca.backProject(coeffs, reconstructed); + // and measure the error + printf("%d. diff = %g\n", i, norm(vec, reconstructed, NORM_L2)); + } + return pca; +} +@endcode +@sa calcCovarMatrix, mulTransposed, SVD, dft, dct +*/ +class CV_EXPORTS PCA +{ +public: + enum Flags { DATA_AS_ROW = 0, //!< indicates that the input samples are stored as matrix rows + DATA_AS_COL = 1, //!< indicates that the input samples are stored as matrix columns + USE_AVG = 2 //! + }; + + /** @brief default constructor + + The default constructor initializes an empty %PCA structure. The other + constructors initialize the structure and call PCA::operator()(). + */ + PCA(); + + /** @overload + @param data input samples stored as matrix rows or matrix columns. + @param mean optional mean value; if the matrix is empty (@c noArray()), + the mean is computed from the data. + @param flags operation flags; currently the parameter is only used to + specify the data layout (PCA::Flags) + @param maxComponents maximum number of components that %PCA should + retain; by default, all the components are retained. + */ + PCA(InputArray data, InputArray mean, int flags, int maxComponents = 0); + + /** @overload + @param data input samples stored as matrix rows or matrix columns. + @param mean optional mean value; if the matrix is empty (noArray()), + the mean is computed from the data. + @param flags operation flags; currently the parameter is only used to + specify the data layout (PCA::Flags) + @param retainedVariance Percentage of variance that PCA should retain. + Using this parameter will let the PCA decided how many components to + retain but it will always keep at least 2. + */ + PCA(InputArray data, InputArray mean, int flags, double retainedVariance); + + /** @brief performs %PCA + + The operator performs %PCA of the supplied dataset. It is safe to reuse + the same PCA structure for multiple datasets. That is, if the structure + has been previously used with another dataset, the existing internal + data is reclaimed and the new @ref eigenvalues, @ref eigenvectors and @ref + mean are allocated and computed. + + The computed @ref eigenvalues are sorted from the largest to the smallest and + the corresponding @ref eigenvectors are stored as eigenvectors rows. + + @param data input samples stored as the matrix rows or as the matrix + columns. + @param mean optional mean value; if the matrix is empty (noArray()), + the mean is computed from the data. + @param flags operation flags; currently the parameter is only used to + specify the data layout. (Flags) + @param maxComponents maximum number of components that PCA should + retain; by default, all the components are retained. + */ + PCA& operator()(InputArray data, InputArray mean, int flags, int maxComponents = 0); + + /** @overload + @param data input samples stored as the matrix rows or as the matrix + columns. + @param mean optional mean value; if the matrix is empty (noArray()), + the mean is computed from the data. + @param flags operation flags; currently the parameter is only used to + specify the data layout. (PCA::Flags) + @param retainedVariance Percentage of variance that %PCA should retain. + Using this parameter will let the %PCA decided how many components to + retain but it will always keep at least 2. + */ + PCA& operator()(InputArray data, InputArray mean, int flags, double retainedVariance); + + /** @brief Projects vector(s) to the principal component subspace. + + The methods project one or more vectors to the principal component + subspace, where each vector projection is represented by coefficients in + the principal component basis. The first form of the method returns the + matrix that the second form writes to the result. So the first form can + be used as a part of expression while the second form can be more + efficient in a processing loop. + @param vec input vector(s); must have the same dimensionality and the + same layout as the input data used at %PCA phase, that is, if + DATA_AS_ROW are specified, then `vec.cols==data.cols` + (vector dimensionality) and `vec.rows` is the number of vectors to + project, and the same is true for the PCA::DATA_AS_COL case. + */ + Mat project(InputArray vec) const; + + /** @overload + @param vec input vector(s); must have the same dimensionality and the + same layout as the input data used at PCA phase, that is, if + DATA_AS_ROW are specified, then `vec.cols==data.cols` + (vector dimensionality) and `vec.rows` is the number of vectors to + project, and the same is true for the PCA::DATA_AS_COL case. + @param result output vectors; in case of PCA::DATA_AS_COL, the + output matrix has as many columns as the number of input vectors, this + means that `result.cols==vec.cols` and the number of rows match the + number of principal components (for example, `maxComponents` parameter + passed to the constructor). + */ + void project(InputArray vec, OutputArray result) const; + + /** @brief Reconstructs vectors from their PC projections. + + The methods are inverse operations to PCA::project. They take PC + coordinates of projected vectors and reconstruct the original vectors. + Unless all the principal components have been retained, the + reconstructed vectors are different from the originals. But typically, + the difference is small if the number of components is large enough (but + still much smaller than the original vector dimensionality). As a + result, PCA is used. + @param vec coordinates of the vectors in the principal component + subspace, the layout and size are the same as of PCA::project output + vectors. + */ + Mat backProject(InputArray vec) const; + + /** @overload + @param vec coordinates of the vectors in the principal component + subspace, the layout and size are the same as of PCA::project output + vectors. + @param result reconstructed vectors; the layout and size are the same as + of PCA::project input vectors. + */ + void backProject(InputArray vec, OutputArray result) const; + + /** @brief write PCA objects + + Writes @ref eigenvalues @ref eigenvectors and @ref mean to specified FileStorage + */ + void write(FileStorage& fs) const; + + /** @brief load PCA objects + + Loads @ref eigenvalues @ref eigenvectors and @ref mean from specified FileNode + */ + void read(const FileNode& fn); + + Mat eigenvectors; //!< eigenvectors of the covariation matrix + Mat eigenvalues; //!< eigenvalues of the covariation matrix + Mat mean; //!< mean value subtracted before the projection and added after the back projection +}; + +/** @example samples/cpp/pca.cpp +An example using %PCA for dimensionality reduction while maintaining an amount of variance +*/ + +/** @example samples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cpp +Check @ref tutorial_introduction_to_pca "the corresponding tutorial" for more details +*/ + +/** +@brief Linear Discriminant Analysis +@todo document this class +*/ +class CV_EXPORTS LDA +{ +public: + /** @brief constructor + Initializes a LDA with num_components (default 0). + */ + explicit LDA(int num_components = 0); + + /** Initializes and performs a Discriminant Analysis with Fisher's + Optimization Criterion on given data in src and corresponding labels + in labels. If 0 (or less) number of components are given, they are + automatically determined for given data in computation. + */ + LDA(InputArrayOfArrays src, InputArray labels, int num_components = 0); + + /** Serializes this object to a given filename. + */ + void save(const String& filename) const; + + /** Deserializes this object from a given filename. + */ + void load(const String& filename); + + /** Serializes this object to a given cv::FileStorage. + */ + void save(FileStorage& fs) const; + + /** Deserializes this object from a given cv::FileStorage. + */ + void load(const FileStorage& node); + + /** destructor + */ + ~LDA(); + + /** Compute the discriminants for data in src (row aligned) and labels. + */ + void compute(InputArrayOfArrays src, InputArray labels); + + /** Projects samples into the LDA subspace. + src may be one or more row aligned samples. + */ + Mat project(InputArray src); + + /** Reconstructs projections from the LDA subspace. + src may be one or more row aligned projections. + */ + Mat reconstruct(InputArray src); + + /** Returns the eigenvectors of this LDA. + */ + Mat eigenvectors() const { return _eigenvectors; } + + /** Returns the eigenvalues of this LDA. + */ + Mat eigenvalues() const { return _eigenvalues; } + + static Mat subspaceProject(InputArray W, InputArray mean, InputArray src); + static Mat subspaceReconstruct(InputArray W, InputArray mean, InputArray src); + +protected: + int _num_components; + Mat _eigenvectors; + Mat _eigenvalues; + void lda(InputArrayOfArrays src, InputArray labels); +}; + +/** @brief Singular Value Decomposition + +Class for computing Singular Value Decomposition of a floating-point +matrix. The Singular Value Decomposition is used to solve least-square +problems, under-determined linear systems, invert matrices, compute +condition numbers, and so on. + +If you want to compute a condition number of a matrix or an absolute value of +its determinant, you do not need `u` and `vt`. You can pass +flags=SVD::NO_UV|... . Another flag SVD::FULL_UV indicates that full-size u +and vt must be computed, which is not necessary most of the time. + +@sa invert, solve, eigen, determinant +*/ +class CV_EXPORTS SVD +{ +public: + enum Flags { + /** allow the algorithm to modify the decomposed matrix; it can save space and speed up + processing. currently ignored. */ + MODIFY_A = 1, + /** indicates that only a vector of singular values `w` is to be processed, while u and vt + will be set to empty matrices */ + NO_UV = 2, + /** when the matrix is not square, by default the algorithm produces u and vt matrices of + sufficiently large size for the further A reconstruction; if, however, FULL_UV flag is + specified, u and vt will be full-size square orthogonal matrices.*/ + FULL_UV = 4 + }; + + /** @brief the default constructor + + initializes an empty SVD structure + */ + SVD(); + + /** @overload + initializes an empty SVD structure and then calls SVD::operator() + @param src decomposed matrix. The depth has to be CV_32F or CV_64F. + @param flags operation flags (SVD::Flags) + */ + SVD( InputArray src, int flags = 0 ); + + /** @brief the operator that performs SVD. The previously allocated u, w and vt are released. + + The operator performs the singular value decomposition of the supplied + matrix. The u,`vt` , and the vector of singular values w are stored in + the structure. The same SVD structure can be reused many times with + different matrices. Each time, if needed, the previous u,`vt` , and w + are reclaimed and the new matrices are created, which is all handled by + Mat::create. + @param src decomposed matrix. The depth has to be CV_32F or CV_64F. + @param flags operation flags (SVD::Flags) + */ + SVD& operator ()( InputArray src, int flags = 0 ); + + /** @brief decomposes matrix and stores the results to user-provided matrices + + The methods/functions perform SVD of matrix. Unlike SVD::SVD constructor + and SVD::operator(), they store the results to the user-provided + matrices: + + @code{.cpp} + Mat A, w, u, vt; + SVD::compute(A, w, u, vt); + @endcode + + @param src decomposed matrix. The depth has to be CV_32F or CV_64F. + @param w calculated singular values + @param u calculated left singular vectors + @param vt transposed matrix of right singular vectors + @param flags operation flags - see SVD::Flags. + */ + static void compute( InputArray src, OutputArray w, + OutputArray u, OutputArray vt, int flags = 0 ); + + /** @overload + computes singular values of a matrix + @param src decomposed matrix. The depth has to be CV_32F or CV_64F. + @param w calculated singular values + @param flags operation flags - see SVD::Flags. + */ + static void compute( InputArray src, OutputArray w, int flags = 0 ); + + /** @brief performs back substitution + */ + static void backSubst( InputArray w, InputArray u, + InputArray vt, InputArray rhs, + OutputArray dst ); + + /** @brief solves an under-determined singular linear system + + The method finds a unit-length solution x of a singular linear system + A\*x = 0. Depending on the rank of A, there can be no solutions, a + single solution or an infinite number of solutions. In general, the + algorithm solves the following problem: + \f[dst = \arg \min _{x: \| x \| =1} \| src \cdot x \|\f] + @param src left-hand-side matrix. + @param dst found solution. + */ + static void solveZ( InputArray src, OutputArray dst ); + + /** @brief performs a singular value back substitution. + + The method calculates a back substitution for the specified right-hand + side: + + \f[\texttt{x} = \texttt{vt} ^T \cdot diag( \texttt{w} )^{-1} \cdot \texttt{u} ^T \cdot \texttt{rhs} \sim \texttt{A} ^{-1} \cdot \texttt{rhs}\f] + + Using this technique you can either get a very accurate solution of the + convenient linear system, or the best (in the least-squares terms) + pseudo-solution of an overdetermined linear system. + + @param rhs right-hand side of a linear system (u\*w\*v')\*dst = rhs to + be solved, where A has been previously decomposed. + + @param dst found solution of the system. + + @note Explicit SVD with the further back substitution only makes sense + if you need to solve many linear systems with the same left-hand side + (for example, src ). If all you need is to solve a single system + (possibly with multiple rhs immediately available), simply call solve + add pass #DECOMP_SVD there. It does absolutely the same thing. + */ + void backSubst( InputArray rhs, OutputArray dst ) const; + + /** @todo document */ + template static + void compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w, Matx<_Tp, m, nm>& u, Matx<_Tp, n, nm>& vt ); + + /** @todo document */ + template static + void compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w ); + + /** @todo document */ + template static + void backSubst( const Matx<_Tp, nm, 1>& w, const Matx<_Tp, m, nm>& u, const Matx<_Tp, n, nm>& vt, const Matx<_Tp, m, nb>& rhs, Matx<_Tp, n, nb>& dst ); + + Mat u, w, vt; +}; + +/** @brief Random Number Generator + +Random number generator. It encapsulates the state (currently, a 64-bit +integer) and has methods to return scalar random values and to fill +arrays with random values. Currently it supports uniform and Gaussian +(normal) distributions. The generator uses Multiply-With-Carry +algorithm, introduced by G. Marsaglia ( + ). +Gaussian-distribution random numbers are generated using the Ziggurat +algorithm ( ), +introduced by G. Marsaglia and W. W. Tsang. +*/ +class CV_EXPORTS RNG +{ +public: + enum { UNIFORM = 0, + NORMAL = 1 + }; + + /** @brief constructor + + These are the RNG constructors. The first form sets the state to some + pre-defined value, equal to 2\*\*32-1 in the current implementation. The + second form sets the state to the specified value. If you passed state=0 + , the constructor uses the above default value instead to avoid the + singular random number sequence, consisting of all zeros. + */ + RNG(); + /** @overload + @param state 64-bit value used to initialize the RNG. + */ + RNG(uint64 state); + /**The method updates the state using the MWC algorithm and returns the + next 32-bit random number.*/ + unsigned next(); + + /**Each of the methods updates the state using the MWC algorithm and + returns the next random number of the specified type. In case of integer + types, the returned number is from the available value range for the + specified type. In case of floating-point types, the returned value is + from [0,1) range. + */ + operator uchar(); + /** @overload */ + operator schar(); + /** @overload */ + operator ushort(); + /** @overload */ + operator short(); + /** @overload */ + operator unsigned(); + /** @overload */ + operator int(); + /** @overload */ + operator float(); + /** @overload */ + operator double(); + + /** @brief returns a random integer sampled uniformly from [0, N). + + The methods transform the state using the MWC algorithm and return the + next random number. The first form is equivalent to RNG::next . The + second form returns the random number modulo N , which means that the + result is in the range [0, N) . + */ + unsigned operator ()(); + /** @overload + @param N upper non-inclusive boundary of the returned random number. + */ + unsigned operator ()(unsigned N); + + /** @brief returns uniformly distributed integer random number from [a,b) range + + The methods transform the state using the MWC algorithm and return the + next uniformly-distributed random number of the specified type, deduced + from the input parameter type, from the range [a, b) . There is a nuance + illustrated by the following sample: + + @code{.cpp} + RNG rng; + + // always produces 0 + double a = rng.uniform(0, 1); + + // produces double from [0, 1) + double a1 = rng.uniform((double)0, (double)1); + + // produces float from [0, 1) + float b = rng.uniform(0.f, 1.f); + + // produces double from [0, 1) + double c = rng.uniform(0., 1.); + + // may cause compiler error because of ambiguity: + // RNG::uniform(0, (int)0.999999)? or RNG::uniform((double)0, 0.99999)? + double d = rng.uniform(0, 0.999999); + @endcode + + The compiler does not take into account the type of the variable to + which you assign the result of RNG::uniform . The only thing that + matters to the compiler is the type of a and b parameters. So, if you + want a floating-point random number, but the range boundaries are + integer numbers, either put dots in the end, if they are constants, or + use explicit type cast operators, as in the a1 initialization above. + @param a lower inclusive boundary of the returned random number. + @param b upper non-inclusive boundary of the returned random number. + */ + int uniform(int a, int b); + /** @overload */ + float uniform(float a, float b); + /** @overload */ + double uniform(double a, double b); + + /** @brief Fills arrays with random numbers. + + @param mat 2D or N-dimensional matrix; currently matrices with more than + 4 channels are not supported by the methods, use Mat::reshape as a + possible workaround. + @param distType distribution type, RNG::UNIFORM or RNG::NORMAL. + @param a first distribution parameter; in case of the uniform + distribution, this is an inclusive lower boundary, in case of the normal + distribution, this is a mean value. + @param b second distribution parameter; in case of the uniform + distribution, this is a non-inclusive upper boundary, in case of the + normal distribution, this is a standard deviation (diagonal of the + standard deviation matrix or the full standard deviation matrix). + @param saturateRange pre-saturation flag; for uniform distribution only; + if true, the method will first convert a and b to the acceptable value + range (according to the mat datatype) and then will generate uniformly + distributed random numbers within the range [saturate(a), saturate(b)), + if saturateRange=false, the method will generate uniformly distributed + random numbers in the original range [a, b) and then will saturate them, + it means, for example, that + theRNG().fill(mat_8u, RNG::UNIFORM, -DBL_MAX, DBL_MAX) will likely + produce array mostly filled with 0's and 255's, since the range (0, 255) + is significantly smaller than [-DBL_MAX, DBL_MAX). + + Each of the methods fills the matrix with the random values from the + specified distribution. As the new numbers are generated, the RNG state + is updated accordingly. In case of multiple-channel images, every + channel is filled independently, which means that RNG cannot generate + samples from the multi-dimensional Gaussian distribution with + non-diagonal covariance matrix directly. To do that, the method + generates samples from multi-dimensional standard Gaussian distribution + with zero mean and identity covariation matrix, and then transforms them + using transform to get samples from the specified Gaussian distribution. + */ + void fill( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange = false ); + + /** @brief Returns the next random number sampled from the Gaussian distribution + @param sigma standard deviation of the distribution. + + The method transforms the state using the MWC algorithm and returns the + next random number from the Gaussian distribution N(0,sigma) . That is, + the mean value of the returned random numbers is zero and the standard + deviation is the specified sigma . + */ + double gaussian(double sigma); + + uint64 state; + + bool operator ==(const RNG& other) const; +}; + +/** @brief Mersenne Twister random number generator + +Inspired by http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c +@todo document +*/ +class CV_EXPORTS RNG_MT19937 +{ +public: + RNG_MT19937(); + RNG_MT19937(unsigned s); + void seed(unsigned s); + + unsigned next(); + + operator int(); + operator unsigned(); + operator float(); + operator double(); + + unsigned operator ()(unsigned N); + unsigned operator ()(); + + /** @brief returns uniformly distributed integer random number from [a,b) range*/ + int uniform(int a, int b); + /** @brief returns uniformly distributed floating-point random number from [a,b) range*/ + float uniform(float a, float b); + /** @brief returns uniformly distributed double-precision floating-point random number from [a,b) range*/ + double uniform(double a, double b); + +private: + enum PeriodParameters {N = 624, M = 397}; + unsigned state[N]; + int mti; +}; + +//! @} core_array + +//! @addtogroup core_cluster +//! @{ + +/** @example samples/cpp/kmeans.cpp +An example on K-means clustering +*/ + +/** @brief Finds centers of clusters and groups input samples around the clusters. + +The function kmeans implements a k-means algorithm that finds the centers of cluster_count clusters +and groups the input samples around the clusters. As an output, \f$\texttt{bestLabels}_i\f$ contains a +0-based cluster index for the sample stored in the \f$i^{th}\f$ row of the samples matrix. + +@note +- (Python) An example on K-means clustering can be found at + opencv_source_code/samples/python/kmeans.py +@param data Data for clustering. An array of N-Dimensional points with float coordinates is needed. +Examples of this array can be: +- Mat points(count, 2, CV_32F); +- Mat points(count, 1, CV_32FC2); +- Mat points(1, count, CV_32FC2); +- std::vector\ points(sampleCount); +@param K Number of clusters to split the set by. +@param bestLabels Input/output integer array that stores the cluster indices for every sample. +@param criteria The algorithm termination criteria, that is, the maximum number of iterations and/or +the desired accuracy. The accuracy is specified as criteria.epsilon. As soon as each of the cluster +centers moves by less than criteria.epsilon on some iteration, the algorithm stops. +@param attempts Flag to specify the number of times the algorithm is executed using different +initial labellings. The algorithm returns the labels that yield the best compactness (see the last +function parameter). +@param flags Flag that can take values of cv::KmeansFlags +@param centers Output matrix of the cluster centers, one row per each cluster center. +@return The function returns the compactness measure that is computed as +\f[\sum _i \| \texttt{samples} _i - \texttt{centers} _{ \texttt{labels} _i} \| ^2\f] +after every attempt. The best (minimum) value is chosen and the corresponding labels and the +compactness value are returned by the function. Basically, you can use only the core of the +function, set the number of attempts to 1, initialize labels each time using a custom algorithm, +pass them with the ( flags = #KMEANS_USE_INITIAL_LABELS ) flag, and then choose the best +(most-compact) clustering. +*/ +CV_EXPORTS_W double kmeans( InputArray data, int K, InputOutputArray bestLabels, + TermCriteria criteria, int attempts, + int flags, OutputArray centers = noArray() ); + +//! @} core_cluster + +//! @addtogroup core_basic +//! @{ + +/////////////////////////////// Formatted output of cv::Mat /////////////////////////// + +/** @todo document */ +class CV_EXPORTS Formatted +{ +public: + virtual const char* next() = 0; + virtual void reset() = 0; + virtual ~Formatted(); +}; + +/** @todo document */ +class CV_EXPORTS Formatter +{ +public: + enum FormatType { + FMT_DEFAULT = 0, + FMT_MATLAB = 1, + FMT_CSV = 2, + FMT_PYTHON = 3, + FMT_NUMPY = 4, + FMT_C = 5 + }; + + virtual ~Formatter(); + + virtual Ptr format(const Mat& mtx) const = 0; + + virtual void set16fPrecision(int p = 4) = 0; + virtual void set32fPrecision(int p = 8) = 0; + virtual void set64fPrecision(int p = 16) = 0; + virtual void setMultiline(bool ml = true) = 0; + + static Ptr get(Formatter::FormatType fmt = FMT_DEFAULT); + +}; + +static inline +String& operator << (String& out, Ptr fmtd) +{ + fmtd->reset(); + for(const char* str = fmtd->next(); str; str = fmtd->next()) + out += cv::String(str); + return out; +} + +static inline +String& operator << (String& out, const Mat& mtx) +{ + return out << Formatter::get()->format(mtx); +} + +//////////////////////////////////////// Algorithm //////////////////////////////////// + +class CV_EXPORTS Algorithm; + +template struct ParamType {}; + + +/** @brief This is a base class for all more or less complex algorithms in OpenCV + +especially for classes of algorithms, for which there can be multiple implementations. The examples +are stereo correspondence (for which there are algorithms like block matching, semi-global block +matching, graph-cut etc.), background subtraction (which can be done using mixture-of-gaussians +models, codebook-based algorithm etc.), optical flow (block matching, Lucas-Kanade, Horn-Schunck +etc.). + +Here is example of SimpleBlobDetector use in your application via Algorithm interface: +@snippet snippets/core_various.cpp Algorithm +*/ +class CV_EXPORTS_W Algorithm +{ +public: + Algorithm(); + virtual ~Algorithm(); + + /** @brief Clears the algorithm state + */ + CV_WRAP virtual void clear() {} + + /** @brief Stores algorithm parameters in a file storage + */ + virtual void write(FileStorage& fs) const { CV_UNUSED(fs); } + + /** @brief simplified API for language bindings + * @overload + */ + CV_WRAP void write(const Ptr& fs, const String& name = String()) const; + + /** @brief Reads algorithm parameters from a file storage + */ + CV_WRAP virtual void read(const FileNode& fn) { CV_UNUSED(fn); } + + /** @brief Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read + */ + CV_WRAP virtual bool empty() const { return false; } + + /** @brief Reads algorithm from the file node + + This is static template method of Algorithm. It's usage is following (in the case of SVM): + @code + cv::FileStorage fsRead("example.xml", FileStorage::READ); + Ptr svm = Algorithm::read(fsRead.root()); + @endcode + In order to make this method work, the derived class must overwrite Algorithm::read(const + FileNode& fn) and also have static create() method without parameters + (or with all the optional parameters) + */ + template static Ptr<_Tp> read(const FileNode& fn) + { + Ptr<_Tp> obj = _Tp::create(); + obj->read(fn); + return !obj->empty() ? obj : Ptr<_Tp>(); + } + + /** @brief Loads algorithm from the file + + @param filename Name of the file to read. + @param objname The optional name of the node to read (if empty, the first top-level node will be used) + + This is static template method of Algorithm. It's usage is following (in the case of SVM): + @code + Ptr svm = Algorithm::load("my_svm_model.xml"); + @endcode + In order to make this method work, the derived class must overwrite Algorithm::read(const + FileNode& fn). + */ + template static Ptr<_Tp> load(const String& filename, const String& objname=String()) + { + FileStorage fs(filename, FileStorage::READ); + CV_Assert(fs.isOpened()); + FileNode fn = objname.empty() ? fs.getFirstTopLevelNode() : fs[objname]; + if (fn.empty()) return Ptr<_Tp>(); + Ptr<_Tp> obj = _Tp::create(); + obj->read(fn); + return !obj->empty() ? obj : Ptr<_Tp>(); + } + + /** @brief Loads algorithm from a String + + @param strModel The string variable containing the model you want to load. + @param objname The optional name of the node to read (if empty, the first top-level node will be used) + + This is static template method of Algorithm. It's usage is following (in the case of SVM): + @code + Ptr svm = Algorithm::loadFromString(myStringModel); + @endcode + */ + template static Ptr<_Tp> loadFromString(const String& strModel, const String& objname=String()) + { + FileStorage fs(strModel, FileStorage::READ + FileStorage::MEMORY); + FileNode fn = objname.empty() ? fs.getFirstTopLevelNode() : fs[objname]; + Ptr<_Tp> obj = _Tp::create(); + obj->read(fn); + return !obj->empty() ? obj : Ptr<_Tp>(); + } + + /** Saves the algorithm to a file. + In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs). */ + CV_WRAP virtual void save(const String& filename) const; + + /** Returns the algorithm string identifier. + This string is used as top level xml/yml node tag when the object is saved to a file or string. */ + CV_WRAP virtual String getDefaultName() const; + +protected: + void writeFormat(FileStorage& fs) const; +}; + +enum struct Param { + INT=0, BOOLEAN=1, REAL=2, STRING=3, MAT=4, MAT_VECTOR=5, ALGORITHM=6, FLOAT=7, + UNSIGNED_INT=8, UINT64=9, UCHAR=11, SCALAR=12 +}; + + + +template<> struct ParamType +{ + typedef bool const_param_type; + typedef bool member_type; + + static const Param type = Param::BOOLEAN; +}; + +template<> struct ParamType +{ + typedef int const_param_type; + typedef int member_type; + + static const Param type = Param::INT; +}; + +template<> struct ParamType +{ + typedef double const_param_type; + typedef double member_type; + + static const Param type = Param::REAL; +}; + +template<> struct ParamType +{ + typedef const String& const_param_type; + typedef String member_type; + + static const Param type = Param::STRING; +}; + +template<> struct ParamType +{ + typedef const Mat& const_param_type; + typedef Mat member_type; + + static const Param type = Param::MAT; +}; + +template<> struct ParamType > +{ + typedef const std::vector& const_param_type; + typedef std::vector member_type; + + static const Param type = Param::MAT_VECTOR; +}; + +template<> struct ParamType +{ + typedef const Ptr& const_param_type; + typedef Ptr member_type; + + static const Param type = Param::ALGORITHM; +}; + +template<> struct ParamType +{ + typedef float const_param_type; + typedef float member_type; + + static const Param type = Param::FLOAT; +}; + +template<> struct ParamType +{ + typedef unsigned const_param_type; + typedef unsigned member_type; + + static const Param type = Param::UNSIGNED_INT; +}; + +template<> struct ParamType +{ + typedef uint64 const_param_type; + typedef uint64 member_type; + + static const Param type = Param::UINT64; +}; + +template<> struct ParamType +{ + typedef uchar const_param_type; + typedef uchar member_type; + + static const Param type = Param::UCHAR; +}; + +template<> struct ParamType +{ + typedef const Scalar& const_param_type; + typedef Scalar member_type; + + static const Param type = Param::SCALAR; +}; + +template +struct ParamType<_Tp, typename std::enable_if< std::is_enum<_Tp>::value >::type> +{ + typedef typename std::underlying_type<_Tp>::type const_param_type; + typedef typename std::underlying_type<_Tp>::type member_type; + + static const Param type = Param::INT; +}; + +//! @} core_basic + +} //namespace cv + +#include "opencv2/core/operations.hpp" +#include "opencv2/core/cvstd.inl.hpp" +#include "opencv2/core/utility.hpp" +#include "opencv2/core/optim.hpp" +#include "opencv2/core/ovx.hpp" + +#endif /*OPENCV_CORE_HPP*/ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/affine.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/affine.hpp new file mode 100644 index 0000000..7e2ed30 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/affine.hpp @@ -0,0 +1,678 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_AFFINE3_HPP +#define OPENCV_CORE_AFFINE3_HPP + +#ifdef __cplusplus + +#include + +namespace cv +{ + +//! @addtogroup core +//! @{ + + /** @brief Affine transform + * + * It represents a 4x4 homogeneous transformation matrix \f$T\f$ + * + * \f[T = + * \begin{bmatrix} + * R & t\\ + * 0 & 1\\ + * \end{bmatrix} + * \f] + * + * where \f$R\f$ is a 3x3 rotation matrix and \f$t\f$ is a 3x1 translation vector. + * + * You can specify \f$R\f$ either by a 3x3 rotation matrix or by a 3x1 rotation vector, + * which is converted to a 3x3 rotation matrix by the Rodrigues formula. + * + * To construct a matrix \f$T\f$ representing first rotation around the axis \f$r\f$ with rotation + * angle \f$|r|\f$ in radian (right hand rule) and then translation by the vector \f$t\f$, you can use + * + * @code + * cv::Vec3f r, t; + * cv::Affine3f T(r, t); + * @endcode + * + * If you already have the rotation matrix \f$R\f$, then you can use + * + * @code + * cv::Matx33f R; + * cv::Affine3f T(R, t); + * @endcode + * + * To extract the rotation matrix \f$R\f$ from \f$T\f$, use + * + * @code + * cv::Matx33f R = T.rotation(); + * @endcode + * + * To extract the translation vector \f$t\f$ from \f$T\f$, use + * + * @code + * cv::Vec3f t = T.translation(); + * @endcode + * + * To extract the rotation vector \f$r\f$ from \f$T\f$, use + * + * @code + * cv::Vec3f r = T.rvec(); + * @endcode + * + * Note that since the mapping from rotation vectors to rotation matrices + * is many to one. The returned rotation vector is not necessarily the one + * you used before to set the matrix. + * + * If you have two transformations \f$T = T_1 * T_2\f$, use + * + * @code + * cv::Affine3f T, T1, T2; + * T = T2.concatenate(T1); + * @endcode + * + * To get the inverse transform of \f$T\f$, use + * + * @code + * cv::Affine3f T, T_inv; + * T_inv = T.inv(); + * @endcode + * + */ + template + class Affine3 + { + public: + typedef T float_type; + typedef Matx Mat3; + typedef Matx Mat4; + typedef Vec Vec3; + + //! Default constructor. It represents a 4x4 identity matrix. + Affine3(); + + //! Augmented affine matrix + Affine3(const Mat4& affine); + + /** + * The resulting 4x4 matrix is + * + * \f[ + * \begin{bmatrix} + * R & t\\ + * 0 & 1\\ + * \end{bmatrix} + * \f] + * + * @param R 3x3 rotation matrix. + * @param t 3x1 translation vector. + */ + Affine3(const Mat3& R, const Vec3& t = Vec3::all(0)); + + /** + * Rodrigues vector. + * + * The last row of the current matrix is set to [0,0,0,1]. + * + * @param rvec 3x1 rotation vector. Its direction indicates the rotation axis and its length + * indicates the rotation angle in radian (using right hand rule). + * @param t 3x1 translation vector. + */ + Affine3(const Vec3& rvec, const Vec3& t = Vec3::all(0)); + + /** + * Combines all constructors above. Supports 4x4, 3x4, 3x3, 1x3, 3x1 sizes of data matrix. + * + * The last row of the current matrix is set to [0,0,0,1] when data is not 4x4. + * + * @param data 1-channel matrix. + * when it is 4x4, it is copied to the current matrix and t is not used. + * When it is 3x4, it is copied to the upper part 3x4 of the current matrix and t is not used. + * When it is 3x3, it is copied to the upper left 3x3 part of the current matrix. + * When it is 3x1 or 1x3, it is treated as a rotation vector and the Rodrigues formula is used + * to compute a 3x3 rotation matrix. + * @param t 3x1 translation vector. It is used only when data is neither 4x4 nor 3x4. + */ + explicit Affine3(const Mat& data, const Vec3& t = Vec3::all(0)); + + //! From 16-element array + explicit Affine3(const float_type* vals); + + //! Create an 4x4 identity transform + static Affine3 Identity(); + + /** + * Rotation matrix. + * + * Copy the rotation matrix to the upper left 3x3 part of the current matrix. + * The remaining elements of the current matrix are not changed. + * + * @param R 3x3 rotation matrix. + * + */ + void rotation(const Mat3& R); + + /** + * Rodrigues vector. + * + * It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. + * + * @param rvec 3x1 rotation vector. The direction indicates the rotation axis and + * its length indicates the rotation angle in radian (using the right thumb convention). + */ + void rotation(const Vec3& rvec); + + /** + * Combines rotation methods above. Supports 3x3, 1x3, 3x1 sizes of data matrix. + * + * It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. + * + * @param data 1-channel matrix. + * When it is a 3x3 matrix, it sets the upper left 3x3 part of the current matrix. + * When it is a 1x3 or 3x1 matrix, it is used as a rotation vector. The Rodrigues formula + * is used to compute the rotation matrix and sets the upper left 3x3 part of the current matrix. + */ + void rotation(const Mat& data); + + /** + * Copy the 3x3 matrix L to the upper left part of the current matrix + * + * It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. + * + * @param L 3x3 matrix. + */ + void linear(const Mat3& L); + + /** + * Copy t to the first three elements of the last column of the current matrix + * + * It sets the upper right 3x1 part of the matrix. The remaining part is unaffected. + * + * @param t 3x1 translation vector. + */ + void translation(const Vec3& t); + + //! @return the upper left 3x3 part + Mat3 rotation() const; + + //! @return the upper left 3x3 part + Mat3 linear() const; + + //! @return the upper right 3x1 part + Vec3 translation() const; + + //! Rodrigues vector. + //! @return a vector representing the upper left 3x3 rotation matrix of the current matrix. + //! @warning Since the mapping between rotation vectors and rotation matrices is many to one, + //! this function returns only one rotation vector that represents the current rotation matrix, + //! which is not necessarily the same one set by `rotation(const Vec3& rvec)`. + Vec3 rvec() const; + + //! @return the inverse of the current matrix. + Affine3 inv(int method = cv::DECOMP_SVD) const; + + //! a.rotate(R) is equivalent to Affine(R, 0) * a; + Affine3 rotate(const Mat3& R) const; + + //! a.rotate(rvec) is equivalent to Affine(rvec, 0) * a; + Affine3 rotate(const Vec3& rvec) const; + + //! a.translate(t) is equivalent to Affine(E, t) * a, where E is an identity matrix + Affine3 translate(const Vec3& t) const; + + //! a.concatenate(affine) is equivalent to affine * a; + Affine3 concatenate(const Affine3& affine) const; + + template operator Affine3() const; + + template Affine3 cast() const; + + Mat4 matrix; + +#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H + Affine3(const Eigen::Transform& affine); + Affine3(const Eigen::Transform& affine); + operator Eigen::Transform() const; + operator Eigen::Transform() const; +#endif + }; + + template static + Affine3 operator*(const Affine3& affine1, const Affine3& affine2); + + //! V is a 3-element vector with member fields x, y and z + template static + V operator*(const Affine3& affine, const V& vector); + + typedef Affine3 Affine3f; + typedef Affine3 Affine3d; + + static Vec3f operator*(const Affine3f& affine, const Vec3f& vector); + static Vec3d operator*(const Affine3d& affine, const Vec3d& vector); + + template class DataType< Affine3<_Tp> > + { + public: + typedef Affine3<_Tp> value_type; + typedef Affine3::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 16, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; + }; + + namespace traits { + template + struct Depth< Affine3<_Tp> > { enum { value = Depth<_Tp>::value }; }; + template + struct Type< Affine3<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 16) }; }; + } // namespace + +//! @} core + +} + +//! @cond IGNORED + +/////////////////////////////////////////////////////////////////////////////////// +// Implementation + +template inline +cv::Affine3::Affine3() + : matrix(Mat4::eye()) +{} + +template inline +cv::Affine3::Affine3(const Mat4& affine) + : matrix(affine) +{} + +template inline +cv::Affine3::Affine3(const Mat3& R, const Vec3& t) +{ + rotation(R); + translation(t); + matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; + matrix.val[15] = 1; +} + +template inline +cv::Affine3::Affine3(const Vec3& _rvec, const Vec3& t) +{ + rotation(_rvec); + translation(t); + matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; + matrix.val[15] = 1; +} + +template inline +cv::Affine3::Affine3(const cv::Mat& data, const Vec3& t) +{ + CV_Assert(data.type() == cv::traits::Type::value); + CV_Assert(data.channels() == 1); + + if (data.cols == 4 && data.rows == 4) + { + data.copyTo(matrix); + return; + } + else if (data.cols == 4 && data.rows == 3) + { + rotation(data(Rect(0, 0, 3, 3))); + translation(data(Rect(3, 0, 1, 3))); + } + else + { + rotation(data); + translation(t); + } + + matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; + matrix.val[15] = 1; +} + +template inline +cv::Affine3::Affine3(const float_type* vals) : matrix(vals) +{} + +template inline +cv::Affine3 cv::Affine3::Identity() +{ + return Affine3(cv::Affine3::Mat4::eye()); +} + +template inline +void cv::Affine3::rotation(const Mat3& R) +{ + linear(R); +} + +template inline +void cv::Affine3::rotation(const Vec3& _rvec) +{ + double theta = norm(_rvec); + + if (theta < DBL_EPSILON) + rotation(Mat3::eye()); + else + { + double c = std::cos(theta); + double s = std::sin(theta); + double c1 = 1. - c; + double itheta = (theta != 0) ? 1./theta : 0.; + + Point3_ r = _rvec*itheta; + + Mat3 rrt( r.x*r.x, r.x*r.y, r.x*r.z, r.x*r.y, r.y*r.y, r.y*r.z, r.x*r.z, r.y*r.z, r.z*r.z ); + Mat3 r_x( 0, -r.z, r.y, r.z, 0, -r.x, -r.y, r.x, 0 ); + + // R = cos(theta)*I + (1 - cos(theta))*r*rT + sin(theta)*[r_x] + // where [r_x] is [0 -rz ry; rz 0 -rx; -ry rx 0] + Mat3 R = c*Mat3::eye() + c1*rrt + s*r_x; + + rotation(R); + } +} + +//Combines rotation methods above. Supports 3x3, 1x3, 3x1 sizes of data matrix; +template inline +void cv::Affine3::rotation(const cv::Mat& data) +{ + CV_Assert(data.type() == cv::traits::Type::value); + CV_Assert(data.channels() == 1); + + if (data.cols == 3 && data.rows == 3) + { + Mat3 R; + data.copyTo(R); + rotation(R); + } + else if ((data.cols == 3 && data.rows == 1) || (data.cols == 1 && data.rows == 3)) + { + Vec3 _rvec; + data.reshape(1, 3).copyTo(_rvec); + rotation(_rvec); + } + else + CV_Error(Error::StsError, "Input matrix can only be 3x3, 1x3 or 3x1"); +} + +template inline +void cv::Affine3::linear(const Mat3& L) +{ + matrix.val[0] = L.val[0]; matrix.val[1] = L.val[1]; matrix.val[ 2] = L.val[2]; + matrix.val[4] = L.val[3]; matrix.val[5] = L.val[4]; matrix.val[ 6] = L.val[5]; + matrix.val[8] = L.val[6]; matrix.val[9] = L.val[7]; matrix.val[10] = L.val[8]; +} + +template inline +void cv::Affine3::translation(const Vec3& t) +{ + matrix.val[3] = t[0]; matrix.val[7] = t[1]; matrix.val[11] = t[2]; +} + +template inline +typename cv::Affine3::Mat3 cv::Affine3::rotation() const +{ + return linear(); +} + +template inline +typename cv::Affine3::Mat3 cv::Affine3::linear() const +{ + typename cv::Affine3::Mat3 R; + R.val[0] = matrix.val[0]; R.val[1] = matrix.val[1]; R.val[2] = matrix.val[ 2]; + R.val[3] = matrix.val[4]; R.val[4] = matrix.val[5]; R.val[5] = matrix.val[ 6]; + R.val[6] = matrix.val[8]; R.val[7] = matrix.val[9]; R.val[8] = matrix.val[10]; + return R; +} + +template inline +typename cv::Affine3::Vec3 cv::Affine3::translation() const +{ + return Vec3(matrix.val[3], matrix.val[7], matrix.val[11]); +} + +template inline +typename cv::Affine3::Vec3 cv::Affine3::rvec() const +{ + cv::Vec3d w; + cv::Matx33d u, vt, R = rotation(); + cv::SVD::compute(R, w, u, vt, cv::SVD::FULL_UV + cv::SVD::MODIFY_A); + R = u * vt; + + double rx = R.val[7] - R.val[5]; + double ry = R.val[2] - R.val[6]; + double rz = R.val[3] - R.val[1]; + + double s = std::sqrt((rx*rx + ry*ry + rz*rz)*0.25); + double c = (R.val[0] + R.val[4] + R.val[8] - 1) * 0.5; + c = c > 1.0 ? 1.0 : c < -1.0 ? -1.0 : c; + double theta = acos(c); + + if( s < 1e-5 ) + { + if( c > 0 ) + rx = ry = rz = 0; + else + { + double t; + t = (R.val[0] + 1) * 0.5; + rx = std::sqrt(std::max(t, 0.0)); + t = (R.val[4] + 1) * 0.5; + ry = std::sqrt(std::max(t, 0.0)) * (R.val[1] < 0 ? -1.0 : 1.0); + t = (R.val[8] + 1) * 0.5; + rz = std::sqrt(std::max(t, 0.0)) * (R.val[2] < 0 ? -1.0 : 1.0); + + if( fabs(rx) < fabs(ry) && fabs(rx) < fabs(rz) && (R.val[5] > 0) != (ry*rz > 0) ) + rz = -rz; + theta /= std::sqrt(rx*rx + ry*ry + rz*rz); + rx *= theta; + ry *= theta; + rz *= theta; + } + } + else + { + double vth = 1/(2*s); + vth *= theta; + rx *= vth; ry *= vth; rz *= vth; + } + + return cv::Vec3d(rx, ry, rz); +} + +template inline +cv::Affine3 cv::Affine3::inv(int method) const +{ + return matrix.inv(method); +} + +template inline +cv::Affine3 cv::Affine3::rotate(const Mat3& R) const +{ + Mat3 Lc = linear(); + Vec3 tc = translation(); + Mat4 result; + result.val[12] = result.val[13] = result.val[14] = 0; + result.val[15] = 1; + + for(int j = 0; j < 3; ++j) + { + for(int i = 0; i < 3; ++i) + { + float_type value = 0; + for(int k = 0; k < 3; ++k) + value += R(j, k) * Lc(k, i); + result(j, i) = value; + } + + result(j, 3) = R.row(j).dot(tc.t()); + } + return result; +} + +template inline +cv::Affine3 cv::Affine3::rotate(const Vec3& _rvec) const +{ + return rotate(Affine3f(_rvec).rotation()); +} + +template inline +cv::Affine3 cv::Affine3::translate(const Vec3& t) const +{ + Mat4 m = matrix; + m.val[ 3] += t[0]; + m.val[ 7] += t[1]; + m.val[11] += t[2]; + return m; +} + +template inline +cv::Affine3 cv::Affine3::concatenate(const Affine3& affine) const +{ + return (*this).rotate(affine.rotation()).translate(affine.translation()); +} + +template template inline +cv::Affine3::operator Affine3() const +{ + return Affine3(matrix); +} + +template template inline +cv::Affine3 cv::Affine3::cast() const +{ + return Affine3(matrix); +} + +template inline +cv::Affine3 cv::operator*(const cv::Affine3& affine1, const cv::Affine3& affine2) +{ + return affine2.concatenate(affine1); +} + +template inline +V cv::operator*(const cv::Affine3& affine, const V& v) +{ + const typename Affine3::Mat4& m = affine.matrix; + + V r; + r.x = m.val[0] * v.x + m.val[1] * v.y + m.val[ 2] * v.z + m.val[ 3]; + r.y = m.val[4] * v.x + m.val[5] * v.y + m.val[ 6] * v.z + m.val[ 7]; + r.z = m.val[8] * v.x + m.val[9] * v.y + m.val[10] * v.z + m.val[11]; + return r; +} + +static inline +cv::Vec3f cv::operator*(const cv::Affine3f& affine, const cv::Vec3f& v) +{ + const cv::Matx44f& m = affine.matrix; + cv::Vec3f r; + r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3]; + r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7]; + r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11]; + return r; +} + +static inline +cv::Vec3d cv::operator*(const cv::Affine3d& affine, const cv::Vec3d& v) +{ + const cv::Matx44d& m = affine.matrix; + cv::Vec3d r; + r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3]; + r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7]; + r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11]; + return r; +} + + + +#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H + +template inline +cv::Affine3::Affine3(const Eigen::Transform& affine) +{ + cv::Mat(4, 4, cv::traits::Type::value, affine.matrix().data()).copyTo(matrix); +} + +template inline +cv::Affine3::Affine3(const Eigen::Transform& affine) +{ + Eigen::Transform a = affine; + cv::Mat(4, 4, cv::traits::Type::value, a.matrix().data()).copyTo(matrix); +} + +template inline +cv::Affine3::operator Eigen::Transform() const +{ + Eigen::Transform r; + cv::Mat hdr(4, 4, cv::traits::Type::value, r.matrix().data()); + cv::Mat(matrix, false).copyTo(hdr); + return r; +} + +template inline +cv::Affine3::operator Eigen::Transform() const +{ + return this->operator Eigen::Transform(); +} + +#endif /* defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H */ + +//! @endcond + +#endif /* __cplusplus */ + +#endif /* OPENCV_CORE_AFFINE3_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/base.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/base.hpp new file mode 100644 index 0000000..f484e9e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/base.hpp @@ -0,0 +1,654 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2014, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_BASE_HPP +#define OPENCV_CORE_BASE_HPP + +#ifndef __cplusplus +# error base.hpp header must be compiled as C++ +#endif + +#include "opencv2/opencv_modules.hpp" + +#include +#include + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/cvstd.hpp" + +namespace cv +{ + +//! @addtogroup core_utils +//! @{ + +namespace Error { +//! error codes +enum Code { + StsOk= 0, //!< everything is ok + StsBackTrace= -1, //!< pseudo error for back trace + StsError= -2, //!< unknown /unspecified error + StsInternal= -3, //!< internal error (bad state) + StsNoMem= -4, //!< insufficient memory + StsBadArg= -5, //!< function arg/param is bad + StsBadFunc= -6, //!< unsupported function + StsNoConv= -7, //!< iteration didn't converge + StsAutoTrace= -8, //!< tracing + HeaderIsNull= -9, //!< image header is NULL + BadImageSize= -10, //!< image size is invalid + BadOffset= -11, //!< offset is invalid + BadDataPtr= -12, //!< + BadStep= -13, //!< image step is wrong, this may happen for a non-continuous matrix. + BadModelOrChSeq= -14, //!< + BadNumChannels= -15, //!< bad number of channels, for example, some functions accept only single channel matrices. + BadNumChannel1U= -16, //!< + BadDepth= -17, //!< input image depth is not supported by the function + BadAlphaChannel= -18, //!< + BadOrder= -19, //!< number of dimensions is out of range + BadOrigin= -20, //!< incorrect input origin + BadAlign= -21, //!< incorrect input align + BadCallBack= -22, //!< + BadTileSize= -23, //!< + BadCOI= -24, //!< input COI is not supported + BadROISize= -25, //!< incorrect input roi + MaskIsTiled= -26, //!< + StsNullPtr= -27, //!< null pointer + StsVecLengthErr= -28, //!< incorrect vector length + StsFilterStructContentErr= -29, //!< incorrect filter structure content + StsKernelStructContentErr= -30, //!< incorrect transform kernel content + StsFilterOffsetErr= -31, //!< incorrect filter offset value + StsBadSize= -201, //!< the input/output structure size is incorrect + StsDivByZero= -202, //!< division by zero + StsInplaceNotSupported= -203, //!< in-place operation is not supported + StsObjectNotFound= -204, //!< request can't be completed + StsUnmatchedFormats= -205, //!< formats of input/output arrays differ + StsBadFlag= -206, //!< flag is wrong or not supported + StsBadPoint= -207, //!< bad CvPoint + StsBadMask= -208, //!< bad format of mask (neither 8uC1 nor 8sC1) + StsUnmatchedSizes= -209, //!< sizes of input/output structures do not match + StsUnsupportedFormat= -210, //!< the data format/type is not supported by the function + StsOutOfRange= -211, //!< some of parameters are out of range + StsParseError= -212, //!< invalid syntax/structure of the parsed file + StsNotImplemented= -213, //!< the requested function/feature is not implemented + StsBadMemBlock= -214, //!< an allocated block has been corrupted + StsAssert= -215, //!< assertion failed + GpuNotSupported= -216, //!< no CUDA support + GpuApiCallError= -217, //!< GPU API call error + OpenGlNotSupported= -218, //!< no OpenGL support + OpenGlApiCallError= -219, //!< OpenGL API call error + OpenCLApiCallError= -220, //!< OpenCL API call error + OpenCLDoubleNotSupported= -221, + OpenCLInitError= -222, //!< OpenCL initialization error + OpenCLNoAMDBlasFft= -223 +}; +} //Error + +//! @} core_utils + +//! @addtogroup core_array +//! @{ + +//! matrix decomposition types +enum DecompTypes { + /** Gaussian elimination with the optimal pivot element chosen. */ + DECOMP_LU = 0, + /** singular value decomposition (SVD) method; the system can be over-defined and/or the matrix + src1 can be singular */ + DECOMP_SVD = 1, + /** eigenvalue decomposition; the matrix src1 must be symmetrical */ + DECOMP_EIG = 2, + /** Cholesky \f$LL^T\f$ factorization; the matrix src1 must be symmetrical and positively + defined */ + DECOMP_CHOLESKY = 3, + /** QR factorization; the system can be over-defined and/or the matrix src1 can be singular */ + DECOMP_QR = 4, + /** while all the previous flags are mutually exclusive, this flag can be used together with + any of the previous; it means that the normal equations + \f$\texttt{src1}^T\cdot\texttt{src1}\cdot\texttt{dst}=\texttt{src1}^T\texttt{src2}\f$ are + solved instead of the original system + \f$\texttt{src1}\cdot\texttt{dst}=\texttt{src2}\f$ */ + DECOMP_NORMAL = 16 +}; + +/** norm types + +src1 and src2 denote input arrays. +*/ + +enum NormTypes { + /** + \f[ + norm = \forkthree + {\|\texttt{src1}\|_{L_{\infty}} = \max _I | \texttt{src1} (I)|}{if \(\texttt{normType} = \texttt{NORM_INF}\) } + {\|\texttt{src1}-\texttt{src2}\|_{L_{\infty}} = \max _I | \texttt{src1} (I) - \texttt{src2} (I)|}{if \(\texttt{normType} = \texttt{NORM_INF}\) } + {\frac{\|\texttt{src1}-\texttt{src2}\|_{L_{\infty}} }{\|\texttt{src2}\|_{L_{\infty}} }}{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_INF}\) } + \f] + */ + NORM_INF = 1, + /** + \f[ + norm = \forkthree + {\| \texttt{src1} \| _{L_1} = \sum _I | \texttt{src1} (I)|}{if \(\texttt{normType} = \texttt{NORM_L1}\)} + { \| \texttt{src1} - \texttt{src2} \| _{L_1} = \sum _I | \texttt{src1} (I) - \texttt{src2} (I)|}{if \(\texttt{normType} = \texttt{NORM_L1}\) } + { \frac{\|\texttt{src1}-\texttt{src2}\|_{L_1} }{\|\texttt{src2}\|_{L_1}} }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L1}\) } + \f]*/ + NORM_L1 = 2, + /** + \f[ + norm = \forkthree + { \| \texttt{src1} \| _{L_2} = \sqrt{\sum_I \texttt{src1}(I)^2} }{if \(\texttt{normType} = \texttt{NORM_L2}\) } + { \| \texttt{src1} - \texttt{src2} \| _{L_2} = \sqrt{\sum_I (\texttt{src1}(I) - \texttt{src2}(I))^2} }{if \(\texttt{normType} = \texttt{NORM_L2}\) } + { \frac{\|\texttt{src1}-\texttt{src2}\|_{L_2} }{\|\texttt{src2}\|_{L_2}} }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L2}\) } + \f] + */ + NORM_L2 = 4, + /** + \f[ + norm = \forkthree + { \| \texttt{src1} \| _{L_2} ^{2} = \sum_I \texttt{src1}(I)^2} {if \(\texttt{normType} = \texttt{NORM_L2SQR}\)} + { \| \texttt{src1} - \texttt{src2} \| _{L_2} ^{2} = \sum_I (\texttt{src1}(I) - \texttt{src2}(I))^2 }{if \(\texttt{normType} = \texttt{NORM_L2SQR}\) } + { \left(\frac{\|\texttt{src1}-\texttt{src2}\|_{L_2} }{\|\texttt{src2}\|_{L_2}}\right)^2 }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L2}\) } + \f] + */ + NORM_L2SQR = 5, + /** + In the case of one input array, calculates the Hamming distance of the array from zero, + In the case of two input arrays, calculates the Hamming distance between the arrays. + */ + NORM_HAMMING = 6, + /** + Similar to NORM_HAMMING, but in the calculation, each two bits of the input sequence will + be added and treated as a single bit to be used in the same calculation as NORM_HAMMING. + */ + NORM_HAMMING2 = 7, + NORM_TYPE_MASK = 7, //!< bit-mask which can be used to separate norm type from norm flags + NORM_RELATIVE = 8, //!< flag + NORM_MINMAX = 32 //!< flag + }; + +//! comparison types +enum CmpTypes { CMP_EQ = 0, //!< src1 is equal to src2. + CMP_GT = 1, //!< src1 is greater than src2. + CMP_GE = 2, //!< src1 is greater than or equal to src2. + CMP_LT = 3, //!< src1 is less than src2. + CMP_LE = 4, //!< src1 is less than or equal to src2. + CMP_NE = 5 //!< src1 is unequal to src2. + }; + +//! generalized matrix multiplication flags +enum GemmFlags { GEMM_1_T = 1, //!< transposes src1 + GEMM_2_T = 2, //!< transposes src2 + GEMM_3_T = 4 //!< transposes src3 + }; + +enum DftFlags { + /** performs an inverse 1D or 2D transform instead of the default forward + transform. */ + DFT_INVERSE = 1, + /** scales the result: divide it by the number of array elements. Normally, it is + combined with DFT_INVERSE. */ + DFT_SCALE = 2, + /** performs a forward or inverse transform of every individual row of the input + matrix; this flag enables you to transform multiple vectors simultaneously and can be used to + decrease the overhead (which is sometimes several times larger than the processing itself) to + perform 3D and higher-dimensional transformations and so forth.*/ + DFT_ROWS = 4, + /** performs a forward transformation of 1D or 2D real array; the result, + though being a complex array, has complex-conjugate symmetry (*CCS*, see the function + description below for details), and such an array can be packed into a real array of the same + size as input, which is the fastest option and which is what the function does by default; + however, you may wish to get a full complex array (for simpler spectrum analysis, and so on) - + pass the flag to enable the function to produce a full-size complex output array. */ + DFT_COMPLEX_OUTPUT = 16, + /** performs an inverse transformation of a 1D or 2D complex array; the + result is normally a complex array of the same size, however, if the input array has + conjugate-complex symmetry (for example, it is a result of forward transformation with + DFT_COMPLEX_OUTPUT flag), the output is a real array; while the function itself does not + check whether the input is symmetrical or not, you can pass the flag and then the function + will assume the symmetry and produce the real output array (note that when the input is packed + into a real array and inverse transformation is executed, the function treats the input as a + packed complex-conjugate symmetrical array, and the output will also be a real array). */ + DFT_REAL_OUTPUT = 32, + /** specifies that input is complex input. If this flag is set, the input must have 2 channels. + On the other hand, for backwards compatibility reason, if input has 2 channels, input is + already considered complex. */ + DFT_COMPLEX_INPUT = 64, + /** performs an inverse 1D or 2D transform instead of the default forward transform. */ + DCT_INVERSE = DFT_INVERSE, + /** performs a forward or inverse transform of every individual row of the input + matrix. This flag enables you to transform multiple vectors simultaneously and can be used to + decrease the overhead (which is sometimes several times larger than the processing itself) to + perform 3D and higher-dimensional transforms and so forth.*/ + DCT_ROWS = DFT_ROWS +}; + +//! Various border types, image boundaries are denoted with `|` +//! @see borderInterpolate, copyMakeBorder +enum BorderTypes { + BORDER_CONSTANT = 0, //!< `iiiiii|abcdefgh|iiiiiii` with some specified `i` + BORDER_REPLICATE = 1, //!< `aaaaaa|abcdefgh|hhhhhhh` + BORDER_REFLECT = 2, //!< `fedcba|abcdefgh|hgfedcb` + BORDER_WRAP = 3, //!< `cdefgh|abcdefgh|abcdefg` + BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba` + BORDER_TRANSPARENT = 5, //!< `uvwxyz|abcdefgh|ijklmno` + + BORDER_REFLECT101 = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 + BORDER_DEFAULT = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 + BORDER_ISOLATED = 16 //!< do not look outside of ROI +}; + +//! @} core_array + +//! @addtogroup core_utils +//! @{ + +/*! @brief Signals an error and raises the exception. + +By default the function prints information about the error to stderr, +then it either stops if setBreakOnError() had been called before or raises the exception. +It is possible to alternate error processing by using redirectError(). +@param _code - error code (Error::Code) +@param _err - error description +@param _func - function name. Available only when the compiler supports getting it +@param _file - source file name where the error has occurred +@param _line - line number in the source file where the error has occurred +@see CV_Error, CV_Error_, CV_Assert, CV_DbgAssert + */ +CV_EXPORTS CV_NORETURN void error(int _code, const String& _err, const char* _func, const char* _file, int _line); + +#ifdef CV_STATIC_ANALYSIS + +// In practice, some macro are not processed correctly (noreturn is not detected). +// We need to use simplified definition for them. +#define CV_Error(...) do { abort(); } while (0) +#define CV_Error_( code, args ) do { cv::format args; abort(); } while (0) +#define CV_Assert( expr ) do { if (!(expr)) abort(); } while (0) + +#else // CV_STATIC_ANALYSIS + +/** @brief Call the error handler. + +Currently, the error handler prints the error code and the error message to the standard +error stream `stderr`. In the Debug configuration, it then provokes memory access violation, so that +the execution stack and all the parameters can be analyzed by the debugger. In the Release +configuration, the exception is thrown. + +@param code one of Error::Code +@param msg error message +*/ +#define CV_Error( code, msg ) cv::error( code, msg, CV_Func, __FILE__, __LINE__ ) + +/** @brief Call the error handler. + +This macro can be used to construct an error message on-fly to include some dynamic information, +for example: +@code + // note the extra parentheses around the formatted text message + CV_Error_(Error::StsOutOfRange, + ("the value at (%d, %d)=%g is out of range", badPt.x, badPt.y, badValue)); +@endcode +@param code one of Error::Code +@param args printf-like formatted error message in parentheses +*/ +#define CV_Error_( code, args ) cv::error( code, cv::format args, CV_Func, __FILE__, __LINE__ ) + +/** @brief Checks a condition at runtime and throws exception if it fails + +The macros CV_Assert (and CV_DbgAssert(expr)) evaluate the specified expression. If it is 0, the macros +raise an error (see cv::error). The macro CV_Assert checks the condition in both Debug and Release +configurations while CV_DbgAssert is only retained in the Debug configuration. +*/ +#define CV_Assert( expr ) do { if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ ); } while(0) + +#endif // CV_STATIC_ANALYSIS + +//! @cond IGNORED +#if !defined(__OPENCV_BUILD) // TODO: backward compatibility only +#ifndef CV_ErrorNoReturn +#define CV_ErrorNoReturn CV_Error +#endif +#ifndef CV_ErrorNoReturn_ +#define CV_ErrorNoReturn_ CV_Error_ +#endif +#endif + +#define CV_Assert_1 CV_Assert +#define CV_Assert_2( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_1( __VA_ARGS__ )) +#define CV_Assert_3( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_2( __VA_ARGS__ )) +#define CV_Assert_4( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_3( __VA_ARGS__ )) +#define CV_Assert_5( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_4( __VA_ARGS__ )) +#define CV_Assert_6( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_5( __VA_ARGS__ )) +#define CV_Assert_7( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_6( __VA_ARGS__ )) +#define CV_Assert_8( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_7( __VA_ARGS__ )) +#define CV_Assert_9( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_8( __VA_ARGS__ )) +#define CV_Assert_10( expr, ... ) CV_Assert_1(expr); __CV_EXPAND(CV_Assert_9( __VA_ARGS__ )) + +#define CV_Assert_N(...) do { __CV_EXPAND(__CV_CAT(CV_Assert_, __CV_VA_NUM_ARGS(__VA_ARGS__)) (__VA_ARGS__)); } while(0) + +//! @endcond + +#if defined _DEBUG || defined CV_STATIC_ANALYSIS +# define CV_DbgAssert(expr) CV_Assert(expr) +#else +/** replaced with CV_Assert(expr) in Debug configuration */ +# define CV_DbgAssert(expr) +#endif + +/* + * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor + * bit count of A exclusive XOR'ed with B + */ +struct CV_EXPORTS Hamming +{ + static const NormTypes normType = NORM_HAMMING; + typedef unsigned char ValueType; + typedef int ResultType; + + /** this will count the bits in a ^ b + */ + ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const; +}; + +typedef Hamming HammingLUT; + +/////////////////////////////////// inline norms //////////////////////////////////// + +template inline _Tp cv_abs(_Tp x) { return std::abs(x); } +inline int cv_abs(uchar x) { return x; } +inline int cv_abs(schar x) { return std::abs(x); } +inline int cv_abs(ushort x) { return x; } +inline int cv_abs(short x) { return std::abs(x); } + +template static inline +_AccTp normL2Sqr(const _Tp* a, int n) +{ + _AccTp s = 0; + int i=0; +#if CV_ENABLE_UNROLLED + for( ; i <= n - 4; i += 4 ) + { + _AccTp v0 = a[i], v1 = a[i+1], v2 = a[i+2], v3 = a[i+3]; + s += v0*v0 + v1*v1 + v2*v2 + v3*v3; + } +#endif + for( ; i < n; i++ ) + { + _AccTp v = a[i]; + s += v*v; + } + return s; +} + +template static inline +_AccTp normL1(const _Tp* a, int n) +{ + _AccTp s = 0; + int i = 0; +#if CV_ENABLE_UNROLLED + for(; i <= n - 4; i += 4 ) + { + s += (_AccTp)cv_abs(a[i]) + (_AccTp)cv_abs(a[i+1]) + + (_AccTp)cv_abs(a[i+2]) + (_AccTp)cv_abs(a[i+3]); + } +#endif + for( ; i < n; i++ ) + s += cv_abs(a[i]); + return s; +} + +template static inline +_AccTp normInf(const _Tp* a, int n) +{ + _AccTp s = 0; + for( int i = 0; i < n; i++ ) + s = std::max(s, (_AccTp)cv_abs(a[i])); + return s; +} + +template static inline +_AccTp normL2Sqr(const _Tp* a, const _Tp* b, int n) +{ + _AccTp s = 0; + int i= 0; +#if CV_ENABLE_UNROLLED + for(; i <= n - 4; i += 4 ) + { + _AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]); + s += v0*v0 + v1*v1 + v2*v2 + v3*v3; + } +#endif + for( ; i < n; i++ ) + { + _AccTp v = _AccTp(a[i] - b[i]); + s += v*v; + } + return s; +} + +static inline float normL2Sqr(const float* a, const float* b, int n) +{ + float s = 0.f; + for( int i = 0; i < n; i++ ) + { + float v = a[i] - b[i]; + s += v*v; + } + return s; +} + +template static inline +_AccTp normL1(const _Tp* a, const _Tp* b, int n) +{ + _AccTp s = 0; + int i= 0; +#if CV_ENABLE_UNROLLED + for(; i <= n - 4; i += 4 ) + { + _AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]); + s += std::abs(v0) + std::abs(v1) + std::abs(v2) + std::abs(v3); + } +#endif + for( ; i < n; i++ ) + { + _AccTp v = _AccTp(a[i] - b[i]); + s += std::abs(v); + } + return s; +} + +inline float normL1(const float* a, const float* b, int n) +{ + float s = 0.f; + for( int i = 0; i < n; i++ ) + { + s += std::abs(a[i] - b[i]); + } + return s; +} + +inline int normL1(const uchar* a, const uchar* b, int n) +{ + int s = 0; + for( int i = 0; i < n; i++ ) + { + s += std::abs(a[i] - b[i]); + } + return s; +} + +template static inline +_AccTp normInf(const _Tp* a, const _Tp* b, int n) +{ + _AccTp s = 0; + for( int i = 0; i < n; i++ ) + { + _AccTp v0 = a[i] - b[i]; + s = std::max(s, std::abs(v0)); + } + return s; +} + +/** @brief Computes the cube root of an argument. + + The function cubeRoot computes \f$\sqrt[3]{\texttt{val}}\f$. Negative arguments are handled correctly. + NaN and Inf are not handled. The accuracy approaches the maximum possible accuracy for + single-precision data. + @param val A function argument. + */ +CV_EXPORTS_W float cubeRoot(float val); + +/** @brief Calculates the angle of a 2D vector in degrees. + + The function fastAtan2 calculates the full-range angle of an input 2D vector. The angle is measured + in degrees and varies from 0 to 360 degrees. The accuracy is about 0.3 degrees. + @param x x-coordinate of the vector. + @param y y-coordinate of the vector. + */ +CV_EXPORTS_W float fastAtan2(float y, float x); + +/** proxy for hal::LU */ +CV_EXPORTS int LU(float* A, size_t astep, int m, float* b, size_t bstep, int n); +/** proxy for hal::LU */ +CV_EXPORTS int LU(double* A, size_t astep, int m, double* b, size_t bstep, int n); +/** proxy for hal::Cholesky */ +CV_EXPORTS bool Cholesky(float* A, size_t astep, int m, float* b, size_t bstep, int n); +/** proxy for hal::Cholesky */ +CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n); + +////////////////// forward declarations for important OpenCV types ////////////////// + +//! @cond IGNORED + +template class Vec; +template class Matx; + +template class Complex; +template class Point_; +template class Point3_; +template class Size_; +template class Rect_; +template class Scalar_; + +class CV_EXPORTS RotatedRect; +class CV_EXPORTS Range; +class CV_EXPORTS TermCriteria; +class CV_EXPORTS KeyPoint; +class CV_EXPORTS DMatch; +class CV_EXPORTS RNG; + +class CV_EXPORTS Mat; +class CV_EXPORTS MatExpr; + +class CV_EXPORTS UMat; + +class CV_EXPORTS SparseMat; +typedef Mat MatND; + +template class Mat_; +template class SparseMat_; + +class CV_EXPORTS MatConstIterator; +class CV_EXPORTS SparseMatIterator; +class CV_EXPORTS SparseMatConstIterator; +template class MatIterator_; +template class MatConstIterator_; +template class SparseMatIterator_; +template class SparseMatConstIterator_; + +namespace ogl +{ + class CV_EXPORTS Buffer; + class CV_EXPORTS Texture2D; + class CV_EXPORTS Arrays; +} + +namespace cuda +{ + class CV_EXPORTS GpuMat; + class CV_EXPORTS HostMem; + class CV_EXPORTS Stream; + class CV_EXPORTS Event; +} + +namespace cudev +{ + template class GpuMat_; +} + +namespace ipp +{ +CV_EXPORTS unsigned long long getIppFeatures(); +CV_EXPORTS void setIppStatus(int status, const char * const funcname = NULL, const char * const filename = NULL, + int line = 0); +CV_EXPORTS int getIppStatus(); +CV_EXPORTS String getIppErrorLocation(); +CV_EXPORTS_W bool useIPP(); +CV_EXPORTS_W void setUseIPP(bool flag); +CV_EXPORTS_W String getIppVersion(); + +// IPP Not-Exact mode. This function may force use of IPP then both IPP and OpenCV provide proper results +// but have internal accuracy differences which have too much direct or indirect impact on accuracy tests. +CV_EXPORTS_W bool useIPP_NotExact(); +CV_EXPORTS_W void setUseIPP_NotExact(bool flag); +#ifndef DISABLE_OPENCV_3_COMPATIBILITY +static inline bool useIPP_NE() { return useIPP_NotExact(); } +static inline void setUseIPP_NE(bool flag) { setUseIPP_NotExact(flag); } +#endif + +} // ipp + +//! @endcond + +//! @} core_utils + + + + +} // cv + +#include "opencv2/core/neon_utils.hpp" +#include "opencv2/core/vsx_utils.hpp" +#include "opencv2/core/check.hpp" + +#endif //OPENCV_CORE_BASE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/bindings_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/bindings_utils.hpp new file mode 100644 index 0000000..c1123f2 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/bindings_utils.hpp @@ -0,0 +1,23 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_CORE_BINDINGS_UTILS_HPP +#define OPENCV_CORE_BINDINGS_UTILS_HPP + +namespace cv { namespace utils { +//! @addtogroup core_utils +//! @{ + +CV_EXPORTS_W String dumpInputArray(InputArray argument); + +CV_EXPORTS_W String dumpInputArrayOfArrays(InputArrayOfArrays argument); + +CV_EXPORTS_W String dumpInputOutputArray(InputOutputArray argument); + +CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argument); + +//! @} +}} // namespace + +#endif // OPENCV_CORE_BINDINGS_UTILS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/bufferpool.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/bufferpool.hpp new file mode 100644 index 0000000..4698e5d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/bufferpool.hpp @@ -0,0 +1,40 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. + +#ifndef OPENCV_CORE_BUFFER_POOL_HPP +#define OPENCV_CORE_BUFFER_POOL_HPP + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4265) +#endif + +namespace cv +{ + +//! @addtogroup core +//! @{ + +class BufferPoolController +{ +protected: + ~BufferPoolController() { } +public: + virtual size_t getReservedSize() const = 0; + virtual size_t getMaxReservedSize() const = 0; + virtual void setMaxReservedSize(size_t size) = 0; + virtual void freeAllReservedBuffers() = 0; +}; + +//! @} + +} + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif // OPENCV_CORE_BUFFER_POOL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/check.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/check.hpp new file mode 100644 index 0000000..604447e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/check.hpp @@ -0,0 +1,159 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_CORE_CHECK_HPP +#define OPENCV_CORE_CHECK_HPP + +#include + +namespace cv { + +/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or "" */ +CV_EXPORTS const char* depthToString(int depth); + +/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or "" */ +CV_EXPORTS const String typeToString(int type); + + +//! @cond IGNORED +namespace detail { + +/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or NULL */ +CV_EXPORTS const char* depthToString_(int depth); + +/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or cv::String() */ +CV_EXPORTS const cv::String typeToString_(int type); + +enum TestOp { + TEST_CUSTOM = 0, + TEST_EQ = 1, + TEST_NE = 2, + TEST_LE = 3, + TEST_LT = 4, + TEST_GE = 5, + TEST_GT = 6, + CV__LAST_TEST_OP +}; + +struct CheckContext { + const char* func; + const char* file; + int line; + enum TestOp testOp; + const char* message; + const char* p1_str; + const char* p2_str; +}; + +#ifndef CV__CHECK_FILENAME +# define CV__CHECK_FILENAME __FILE__ +#endif + +#ifndef CV__CHECK_FUNCTION +# if defined _MSC_VER +# define CV__CHECK_FUNCTION __FUNCSIG__ +# elif defined __GNUC__ +# define CV__CHECK_FUNCTION __PRETTY_FUNCTION__ +# else +# define CV__CHECK_FUNCTION "" +# endif +#endif + +#define CV__CHECK_LOCATION_VARNAME(id) CVAUX_CONCAT(CVAUX_CONCAT(__cv_check_, id), __LINE__) +#define CV__DEFINE_CHECK_CONTEXT(id, message, testOp, p1_str, p2_str) \ + static const cv::detail::CheckContext CV__CHECK_LOCATION_VARNAME(id) = \ + { CV__CHECK_FUNCTION, CV__CHECK_FILENAME, __LINE__, testOp, message, p1_str, p2_str } + +CV_EXPORTS void CV_NORETURN check_failed_auto(const int v1, const int v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const size_t v1, const size_t v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const float v1, const float v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const double v1, const double v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const Size_ v1, const Size_ v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v1, const int v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v1, const int v2, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v1, const int v2, const CheckContext& ctx); + +CV_EXPORTS void CV_NORETURN check_failed_auto(const int v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const size_t v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const float v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const double v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_auto(const Size_ v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v, const CheckContext& ctx); +CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v, const CheckContext& ctx); + + +#define CV__TEST_EQ(v1, v2) ((v1) == (v2)) +#define CV__TEST_NE(v1, v2) ((v1) != (v2)) +#define CV__TEST_LE(v1, v2) ((v1) <= (v2)) +#define CV__TEST_LT(v1, v2) ((v1) < (v2)) +#define CV__TEST_GE(v1, v2) ((v1) >= (v2)) +#define CV__TEST_GT(v1, v2) ((v1) > (v2)) + +#define CV__CHECK(id, op, type, v1, v2, v1_str, v2_str, msg_str) do { \ + if(CV__TEST_##op((v1), (v2))) ; else { \ + CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_ ## op, v1_str, v2_str); \ + cv::detail::check_failed_ ## type((v1), (v2), CV__CHECK_LOCATION_VARNAME(id)); \ + } \ +} while (0) + +#define CV__CHECK_CUSTOM_TEST(id, type, v, test_expr, v_str, test_expr_str, msg_str) do { \ + if(!!(test_expr)) ; else { \ + CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_CUSTOM, v_str, test_expr_str); \ + cv::detail::check_failed_ ## type((v), CV__CHECK_LOCATION_VARNAME(id)); \ + } \ +} while (0) + +} // namespace +//! @endcond + + +/// Supported values of these types: int, float, double +#define CV_CheckEQ(v1, v2, msg) CV__CHECK(_, EQ, auto, v1, v2, #v1, #v2, msg) +#define CV_CheckNE(v1, v2, msg) CV__CHECK(_, NE, auto, v1, v2, #v1, #v2, msg) +#define CV_CheckLE(v1, v2, msg) CV__CHECK(_, LE, auto, v1, v2, #v1, #v2, msg) +#define CV_CheckLT(v1, v2, msg) CV__CHECK(_, LT, auto, v1, v2, #v1, #v2, msg) +#define CV_CheckGE(v1, v2, msg) CV__CHECK(_, GE, auto, v1, v2, #v1, #v2, msg) +#define CV_CheckGT(v1, v2, msg) CV__CHECK(_, GT, auto, v1, v2, #v1, #v2, msg) + +/// Check with additional "decoding" of type values in error message +#define CV_CheckTypeEQ(t1, t2, msg) CV__CHECK(_, EQ, MatType, t1, t2, #t1, #t2, msg) +/// Check with additional "decoding" of depth values in error message +#define CV_CheckDepthEQ(d1, d2, msg) CV__CHECK(_, EQ, MatDepth, d1, d2, #d1, #d2, msg) + +#define CV_CheckChannelsEQ(c1, c2, msg) CV__CHECK(_, EQ, MatChannels, c1, c2, #c1, #c2, msg) + +/// Example: type == CV_8UC1 || type == CV_8UC3 +#define CV_CheckType(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatType, t, (test_expr), #t, #test_expr, msg) + +/// Example: depth == CV_32F || depth == CV_64F +#define CV_CheckDepth(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatDepth, t, (test_expr), #t, #test_expr, msg) + +/// Example: v == A || v == B +#define CV_Check(v, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, auto, v, (test_expr), #v, #test_expr, msg) + +/// Some complex conditions: CV_Check(src2, src2.empty() || (src2.type() == src1.type() && src2.size() == src1.size()), "src2 should have same size/type as src1") +// TODO define pretty-printers + +#ifndef NDEBUG +#define CV_DbgCheck(v, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, auto, v, (test_expr), #v, #test_expr, msg) +#define CV_DbgCheckEQ(v1, v2, msg) CV__CHECK(_, EQ, auto, v1, v2, #v1, #v2, msg) +#define CV_DbgCheckNE(v1, v2, msg) CV__CHECK(_, NE, auto, v1, v2, #v1, #v2, msg) +#define CV_DbgCheckLE(v1, v2, msg) CV__CHECK(_, LE, auto, v1, v2, #v1, #v2, msg) +#define CV_DbgCheckLT(v1, v2, msg) CV__CHECK(_, LT, auto, v1, v2, #v1, #v2, msg) +#define CV_DbgCheckGE(v1, v2, msg) CV__CHECK(_, GE, auto, v1, v2, #v1, #v2, msg) +#define CV_DbgCheckGT(v1, v2, msg) CV__CHECK(_, GT, auto, v1, v2, #v1, #v2, msg) +#else +#define CV_DbgCheck(v, test_expr, msg) do { } while (0) +#define CV_DbgCheckEQ(v1, v2, msg) do { } while (0) +#define CV_DbgCheckNE(v1, v2, msg) do { } while (0) +#define CV_DbgCheckLE(v1, v2, msg) do { } while (0) +#define CV_DbgCheckLT(v1, v2, msg) do { } while (0) +#define CV_DbgCheckGE(v1, v2, msg) do { } while (0) +#define CV_DbgCheckGT(v1, v2, msg) do { } while (0) +#endif + +} // namespace + +#endif // OPENCV_CORE_CHECK_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/core.hpp new file mode 100644 index 0000000..4389183 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/core.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/core.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/core_c.h b/LaiPuLaser/OpenCV/include/opencv2/core/core_c.h new file mode 100644 index 0000000..0d07d9e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/core_c.h @@ -0,0 +1,3125 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + + +#ifndef OPENCV_CORE_C_H +#define OPENCV_CORE_C_H + +#include "opencv2/core/types_c.h" + +#ifdef __cplusplus +# ifdef _MSC_VER +/* disable warning C4190: 'function' has C-linkage specified, but returns UDT 'typename' + which is incompatible with C + + It is OK to disable it because we only extend few plain structures with + C++ construrtors for simpler interoperability with C++ API of the library +*/ +# pragma warning(disable:4190) +# elif defined __clang__ && __clang_major__ >= 3 +# pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup core_c + @{ +*/ + +/****************************************************************************************\ +* Array allocation, deallocation, initialization and access to elements * +\****************************************************************************************/ + +/** `malloc` wrapper. + If there is no enough memory, the function + (as well as other OpenCV functions that call cvAlloc) + raises an error. */ +CVAPI(void*) cvAlloc( size_t size ); + +/** `free` wrapper. + Here and further all the memory releasing functions + (that all call cvFree) take double pointer in order to + to clear pointer to the data after releasing it. + Passing pointer to NULL pointer is Ok: nothing happens in this case +*/ +CVAPI(void) cvFree_( void* ptr ); +#define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0) + +/** @brief Creates an image header but does not allocate the image data. + +@param size Image width and height +@param depth Image depth (see cvCreateImage ) +@param channels Number of channels (see cvCreateImage ) + */ +CVAPI(IplImage*) cvCreateImageHeader( CvSize size, int depth, int channels ); + +/** @brief Initializes an image header that was previously allocated. + +The returned IplImage\* points to the initialized header. +@param image Image header to initialize +@param size Image width and height +@param depth Image depth (see cvCreateImage ) +@param channels Number of channels (see cvCreateImage ) +@param origin Top-left IPL_ORIGIN_TL or bottom-left IPL_ORIGIN_BL +@param align Alignment for image rows, typically 4 or 8 bytes + */ +CVAPI(IplImage*) cvInitImageHeader( IplImage* image, CvSize size, int depth, + int channels, int origin CV_DEFAULT(0), + int align CV_DEFAULT(4)); + +/** @brief Creates an image header and allocates the image data. + +This function call is equivalent to the following code: +@code + header = cvCreateImageHeader(size, depth, channels); + cvCreateData(header); +@endcode +@param size Image width and height +@param depth Bit depth of image elements. See IplImage for valid depths. +@param channels Number of channels per pixel. See IplImage for details. This function only creates +images with interleaved channels. + */ +CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels ); + +/** @brief Deallocates an image header. + +This call is an analogue of : +@code + if(image ) + { + iplDeallocate(*image, IPL_IMAGE_HEADER | IPL_IMAGE_ROI); + *image = 0; + } +@endcode +but it does not use IPL functions by default (see the CV_TURN_ON_IPL_COMPATIBILITY macro). +@param image Double pointer to the image header + */ +CVAPI(void) cvReleaseImageHeader( IplImage** image ); + +/** @brief Deallocates the image header and the image data. + +This call is a shortened form of : +@code + if(*image ) + { + cvReleaseData(*image); + cvReleaseImageHeader(image); + } +@endcode +@param image Double pointer to the image header +*/ +CVAPI(void) cvReleaseImage( IplImage** image ); + +/** Creates a copy of IPL image (widthStep may differ) */ +CVAPI(IplImage*) cvCloneImage( const IplImage* image ); + +/** @brief Sets the channel of interest in an IplImage. + +If the ROI is set to NULL and the coi is *not* 0, the ROI is allocated. Most OpenCV functions do +*not* support the COI setting, so to process an individual image/matrix channel one may copy (via +cvCopy or cvSplit) the channel to a separate image/matrix, process it and then copy the result +back (via cvCopy or cvMerge) if needed. +@param image A pointer to the image header +@param coi The channel of interest. 0 - all channels are selected, 1 - first channel is selected, +etc. Note that the channel indices become 1-based. + */ +CVAPI(void) cvSetImageCOI( IplImage* image, int coi ); + +/** @brief Returns the index of the channel of interest. + +Returns the channel of interest of in an IplImage. Returned values correspond to the coi in +cvSetImageCOI. +@param image A pointer to the image header + */ +CVAPI(int) cvGetImageCOI( const IplImage* image ); + +/** @brief Sets an image Region Of Interest (ROI) for a given rectangle. + +If the original image ROI was NULL and the rect is not the whole image, the ROI structure is +allocated. + +Most OpenCV functions support the use of ROI and treat the image rectangle as a separate image. For +example, all of the pixel coordinates are counted from the top-left (or bottom-left) corner of the +ROI, not the original image. +@param image A pointer to the image header +@param rect The ROI rectangle + */ +CVAPI(void) cvSetImageROI( IplImage* image, CvRect rect ); + +/** @brief Resets the image ROI to include the entire image and releases the ROI structure. + +This produces a similar result to the following, but in addition it releases the ROI structure. : +@code + cvSetImageROI(image, cvRect(0, 0, image->width, image->height )); + cvSetImageCOI(image, 0); +@endcode +@param image A pointer to the image header + */ +CVAPI(void) cvResetImageROI( IplImage* image ); + +/** @brief Returns the image ROI. + +If there is no ROI set, cvRect(0,0,image-\>width,image-\>height) is returned. +@param image A pointer to the image header + */ +CVAPI(CvRect) cvGetImageROI( const IplImage* image ); + +/** @brief Creates a matrix header but does not allocate the matrix data. + +The function allocates a new matrix header and returns a pointer to it. The matrix data can then be +allocated using cvCreateData or set explicitly to user-allocated data via cvSetData. +@param rows Number of rows in the matrix +@param cols Number of columns in the matrix +@param type Type of the matrix elements, see cvCreateMat + */ +CVAPI(CvMat*) cvCreateMatHeader( int rows, int cols, int type ); + +#define CV_AUTOSTEP 0x7fffffff + +/** @brief Initializes a pre-allocated matrix header. + +This function is often used to process raw data with OpenCV matrix functions. For example, the +following code computes the matrix product of two matrices, stored as ordinary arrays: +@code + double a[] = { 1, 2, 3, 4, + 5, 6, 7, 8, + 9, 10, 11, 12 }; + + double b[] = { 1, 5, 9, + 2, 6, 10, + 3, 7, 11, + 4, 8, 12 }; + + double c[9]; + CvMat Ma, Mb, Mc ; + + cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a); + cvInitMatHeader(&Mb, 4, 3, CV_64FC1, b); + cvInitMatHeader(&Mc, 3, 3, CV_64FC1, c); + + cvMatMulAdd(&Ma, &Mb, 0, &Mc); + // the c array now contains the product of a (3x4) and b (4x3) +@endcode +@param mat A pointer to the matrix header to be initialized +@param rows Number of rows in the matrix +@param cols Number of columns in the matrix +@param type Type of the matrix elements, see cvCreateMat . +@param data Optional: data pointer assigned to the matrix header +@param step Optional: full row width in bytes of the assigned data. By default, the minimal +possible step is used which assumes there are no gaps between subsequent rows of the matrix. + */ +CVAPI(CvMat*) cvInitMatHeader( CvMat* mat, int rows, int cols, + int type, void* data CV_DEFAULT(NULL), + int step CV_DEFAULT(CV_AUTOSTEP) ); + +/** @brief Creates a matrix header and allocates the matrix data. + +The function call is equivalent to the following code: +@code + CvMat* mat = cvCreateMatHeader(rows, cols, type); + cvCreateData(mat); +@endcode +@param rows Number of rows in the matrix +@param cols Number of columns in the matrix +@param type The type of the matrix elements in the form +CV_\\C\ , where S=signed, U=unsigned, F=float. For +example, CV _ 8UC1 means the elements are 8-bit unsigned and the there is 1 channel, and CV _ +32SC2 means the elements are 32-bit signed and there are 2 channels. + */ +CVAPI(CvMat*) cvCreateMat( int rows, int cols, int type ); + +/** @brief Deallocates a matrix. + +The function decrements the matrix data reference counter and deallocates matrix header. If the data +reference counter is 0, it also deallocates the data. : +@code + if(*mat ) + cvDecRefData(*mat); + cvFree((void**)mat); +@endcode +@param mat Double pointer to the matrix + */ +CVAPI(void) cvReleaseMat( CvMat** mat ); + +/** @brief Decrements an array data reference counter. + +The function decrements the data reference counter in a CvMat or CvMatND if the reference counter + +pointer is not NULL. If the counter reaches zero, the data is deallocated. In the current +implementation the reference counter is not NULL only if the data was allocated using the +cvCreateData function. The counter will be NULL in other cases such as: external data was assigned +to the header using cvSetData, header is part of a larger matrix or image, or the header was +converted from an image or n-dimensional matrix header. +@param arr Pointer to an array header + */ +CV_INLINE void cvDecRefData( CvArr* arr ) +{ + if( CV_IS_MAT( arr )) + { + CvMat* mat = (CvMat*)arr; + mat->data.ptr = NULL; + if( mat->refcount != NULL && --*mat->refcount == 0 ) + cvFree( &mat->refcount ); + mat->refcount = NULL; + } + else if( CV_IS_MATND( arr )) + { + CvMatND* mat = (CvMatND*)arr; + mat->data.ptr = NULL; + if( mat->refcount != NULL && --*mat->refcount == 0 ) + cvFree( &mat->refcount ); + mat->refcount = NULL; + } +} + +/** @brief Increments array data reference counter. + +The function increments CvMat or CvMatND data reference counter and returns the new counter value if +the reference counter pointer is not NULL, otherwise it returns zero. +@param arr Array header + */ +CV_INLINE int cvIncRefData( CvArr* arr ) +{ + int refcount = 0; + if( CV_IS_MAT( arr )) + { + CvMat* mat = (CvMat*)arr; + if( mat->refcount != NULL ) + refcount = ++*mat->refcount; + } + else if( CV_IS_MATND( arr )) + { + CvMatND* mat = (CvMatND*)arr; + if( mat->refcount != NULL ) + refcount = ++*mat->refcount; + } + return refcount; +} + + +/** Creates an exact copy of the input matrix (except, may be, step value) */ +CVAPI(CvMat*) cvCloneMat( const CvMat* mat ); + + +/** @brief Returns matrix header corresponding to the rectangular sub-array of input image or matrix. + +The function returns header, corresponding to a specified rectangle of the input array. In other + +words, it allows the user to treat a rectangular part of input array as a stand-alone array. ROI is +taken into account by the function so the sub-array of ROI is actually extracted. +@param arr Input array +@param submat Pointer to the resultant sub-array header +@param rect Zero-based coordinates of the rectangle of interest + */ +CVAPI(CvMat*) cvGetSubRect( const CvArr* arr, CvMat* submat, CvRect rect ); +#define cvGetSubArr cvGetSubRect + +/** @brief Returns array row or row span. + +The function returns the header, corresponding to a specified row/row span of the input array. +cvGetRow(arr, submat, row) is a shortcut for cvGetRows(arr, submat, row, row+1). +@param arr Input array +@param submat Pointer to the resulting sub-array header +@param start_row Zero-based index of the starting row (inclusive) of the span +@param end_row Zero-based index of the ending row (exclusive) of the span +@param delta_row Index step in the row span. That is, the function extracts every delta_row -th +row from start_row and up to (but not including) end_row . + */ +CVAPI(CvMat*) cvGetRows( const CvArr* arr, CvMat* submat, + int start_row, int end_row, + int delta_row CV_DEFAULT(1)); + +/** @overload +@param arr Input array +@param submat Pointer to the resulting sub-array header +@param row Zero-based index of the selected row +*/ +CV_INLINE CvMat* cvGetRow( const CvArr* arr, CvMat* submat, int row ) +{ + return cvGetRows( arr, submat, row, row + 1, 1 ); +} + + +/** @brief Returns one of more array columns. + +The function returns the header, corresponding to a specified column span of the input array. That + +is, no data is copied. Therefore, any modifications of the submatrix will affect the original array. +If you need to copy the columns, use cvCloneMat. cvGetCol(arr, submat, col) is a shortcut for +cvGetCols(arr, submat, col, col+1). +@param arr Input array +@param submat Pointer to the resulting sub-array header +@param start_col Zero-based index of the starting column (inclusive) of the span +@param end_col Zero-based index of the ending column (exclusive) of the span + */ +CVAPI(CvMat*) cvGetCols( const CvArr* arr, CvMat* submat, + int start_col, int end_col ); + +/** @overload +@param arr Input array +@param submat Pointer to the resulting sub-array header +@param col Zero-based index of the selected column +*/ +CV_INLINE CvMat* cvGetCol( const CvArr* arr, CvMat* submat, int col ) +{ + return cvGetCols( arr, submat, col, col + 1 ); +} + +/** @brief Returns one of array diagonals. + +The function returns the header, corresponding to a specified diagonal of the input array. +@param arr Input array +@param submat Pointer to the resulting sub-array header +@param diag Index of the array diagonal. Zero value corresponds to the main diagonal, -1 +corresponds to the diagonal above the main, 1 corresponds to the diagonal below the main, and so +forth. + */ +CVAPI(CvMat*) cvGetDiag( const CvArr* arr, CvMat* submat, + int diag CV_DEFAULT(0)); + +/** low-level scalar <-> raw data conversion functions */ +CVAPI(void) cvScalarToRawData( const CvScalar* scalar, void* data, int type, + int extend_to_12 CV_DEFAULT(0) ); + +CVAPI(void) cvRawDataToScalar( const void* data, int type, CvScalar* scalar ); + +/** @brief Creates a new matrix header but does not allocate the matrix data. + +The function allocates a header for a multi-dimensional dense array. The array data can further be +allocated using cvCreateData or set explicitly to user-allocated data via cvSetData. +@param dims Number of array dimensions +@param sizes Array of dimension sizes +@param type Type of array elements, see cvCreateMat + */ +CVAPI(CvMatND*) cvCreateMatNDHeader( int dims, const int* sizes, int type ); + +/** @brief Creates the header and allocates the data for a multi-dimensional dense array. + +This function call is equivalent to the following code: +@code + CvMatND* mat = cvCreateMatNDHeader(dims, sizes, type); + cvCreateData(mat); +@endcode +@param dims Number of array dimensions. This must not exceed CV_MAX_DIM (32 by default, but can be +changed at build time). +@param sizes Array of dimension sizes. +@param type Type of array elements, see cvCreateMat . + */ +CVAPI(CvMatND*) cvCreateMatND( int dims, const int* sizes, int type ); + +/** @brief Initializes a pre-allocated multi-dimensional array header. + +@param mat A pointer to the array header to be initialized +@param dims The number of array dimensions +@param sizes An array of dimension sizes +@param type Type of array elements, see cvCreateMat +@param data Optional data pointer assigned to the matrix header + */ +CVAPI(CvMatND*) cvInitMatNDHeader( CvMatND* mat, int dims, const int* sizes, + int type, void* data CV_DEFAULT(NULL) ); + +/** @brief Deallocates a multi-dimensional array. + +The function decrements the array data reference counter and releases the array header. If the +reference counter reaches 0, it also deallocates the data. : +@code + if(*mat ) + cvDecRefData(*mat); + cvFree((void**)mat); +@endcode +@param mat Double pointer to the array + */ +CV_INLINE void cvReleaseMatND( CvMatND** mat ) +{ + cvReleaseMat( (CvMat**)mat ); +} + +/** Creates a copy of CvMatND (except, may be, steps) */ +CVAPI(CvMatND*) cvCloneMatND( const CvMatND* mat ); + +/** @brief Creates sparse array. + +The function allocates a multi-dimensional sparse array. Initially the array contain no elements, +that is PtrND and other related functions will return 0 for every index. +@param dims Number of array dimensions. In contrast to the dense matrix, the number of dimensions is +practically unlimited (up to \f$2^{16}\f$ ). +@param sizes Array of dimension sizes +@param type Type of array elements. The same as for CvMat + */ +CVAPI(CvSparseMat*) cvCreateSparseMat( int dims, const int* sizes, int type ); + +/** @brief Deallocates sparse array. + +The function releases the sparse array and clears the array pointer upon exit. +@param mat Double pointer to the array + */ +CVAPI(void) cvReleaseSparseMat( CvSparseMat** mat ); + +/** Creates a copy of CvSparseMat (except, may be, zero items) */ +CVAPI(CvSparseMat*) cvCloneSparseMat( const CvSparseMat* mat ); + +/** @brief Initializes sparse array elements iterator. + +The function initializes iterator of sparse array elements and returns pointer to the first element, +or NULL if the array is empty. +@param mat Input array +@param mat_iterator Initialized iterator + */ +CVAPI(CvSparseNode*) cvInitSparseMatIterator( const CvSparseMat* mat, + CvSparseMatIterator* mat_iterator ); + +/** @brief Returns the next sparse matrix element + +The function moves iterator to the next sparse matrix element and returns pointer to it. In the +current version there is no any particular order of the elements, because they are stored in the +hash table. The sample below demonstrates how to iterate through the sparse matrix: +@code + // print all the non-zero sparse matrix elements and compute their sum + double sum = 0; + int i, dims = cvGetDims(sparsemat); + CvSparseMatIterator it; + CvSparseNode* node = cvInitSparseMatIterator(sparsemat, &it); + + for(; node != 0; node = cvGetNextSparseNode(&it)) + { + int* idx = CV_NODE_IDX(array, node); + float val = *(float*)CV_NODE_VAL(array, node); + printf("M"); + for(i = 0; i < dims; i++ ) + printf("[%d]", idx[i]); + printf("=%g\n", val); + + sum += val; + } + + printf("nTotal sum = %g\n", sum); +@endcode +@param mat_iterator Sparse array iterator + */ +CV_INLINE CvSparseNode* cvGetNextSparseNode( CvSparseMatIterator* mat_iterator ) +{ + if( mat_iterator->node->next ) + return mat_iterator->node = mat_iterator->node->next; + else + { + int idx; + for( idx = ++mat_iterator->curidx; idx < mat_iterator->mat->hashsize; idx++ ) + { + CvSparseNode* node = (CvSparseNode*)mat_iterator->mat->hashtable[idx]; + if( node ) + { + mat_iterator->curidx = idx; + return mat_iterator->node = node; + } + } + return NULL; + } +} + + +#define CV_MAX_ARR 10 + +/** matrix iterator: used for n-ary operations on dense arrays */ +typedef struct CvNArrayIterator +{ + int count; /**< number of arrays */ + int dims; /**< number of dimensions to iterate */ + CvSize size; /**< maximal common linear size: { width = size, height = 1 } */ + uchar* ptr[CV_MAX_ARR]; /**< pointers to the array slices */ + int stack[CV_MAX_DIM]; /**< for internal use */ + CvMatND* hdr[CV_MAX_ARR]; /**< pointers to the headers of the + matrices that are processed */ +} +CvNArrayIterator; + +#define CV_NO_DEPTH_CHECK 1 +#define CV_NO_CN_CHECK 2 +#define CV_NO_SIZE_CHECK 4 + +/** initializes iterator that traverses through several arrays simulteneously + (the function together with cvNextArraySlice is used for + N-ari element-wise operations) */ +CVAPI(int) cvInitNArrayIterator( int count, CvArr** arrs, + const CvArr* mask, CvMatND* stubs, + CvNArrayIterator* array_iterator, + int flags CV_DEFAULT(0) ); + +/** returns zero value if iteration is finished, non-zero (slice length) otherwise */ +CVAPI(int) cvNextNArraySlice( CvNArrayIterator* array_iterator ); + + +/** @brief Returns type of array elements. + +The function returns type of the array elements. In the case of IplImage the type is converted to +CvMat-like representation. For example, if the image has been created as: +@code + IplImage* img = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3); +@endcode +The code cvGetElemType(img) will return CV_8UC3. +@param arr Input array + */ +CVAPI(int) cvGetElemType( const CvArr* arr ); + +/** @brief Return number of array dimensions + +The function returns the array dimensionality and the array of dimension sizes. In the case of +IplImage or CvMat it always returns 2 regardless of number of image/matrix rows. For example, the +following code calculates total number of array elements: +@code + int sizes[CV_MAX_DIM]; + int i, total = 1; + int dims = cvGetDims(arr, size); + for(i = 0; i < dims; i++ ) + total *= sizes[i]; +@endcode +@param arr Input array +@param sizes Optional output vector of the array dimension sizes. For 2d arrays the number of rows +(height) goes first, number of columns (width) next. + */ +CVAPI(int) cvGetDims( const CvArr* arr, int* sizes CV_DEFAULT(NULL) ); + + +/** @brief Returns array size along the specified dimension. + +@param arr Input array +@param index Zero-based dimension index (for matrices 0 means number of rows, 1 means number of +columns; for images 0 means height, 1 means width) + */ +CVAPI(int) cvGetDimSize( const CvArr* arr, int index ); + + +/** @brief Return pointer to a particular array element. + +The functions return a pointer to a specific array element. Number of array dimension should match +to the number of indices passed to the function except for cvPtr1D function that can be used for +sequential access to 1D, 2D or nD dense arrays. + +The functions can be used for sparse arrays as well - if the requested node does not exist they +create it and set it to zero. + +All these as well as other functions accessing array elements ( cvGetND , cvGetRealND , cvSet +, cvSetND , cvSetRealND ) raise an error in case if the element index is out of range. +@param arr Input array +@param idx0 The first zero-based component of the element index +@param type Optional output parameter: type of matrix elements + */ +CVAPI(uchar*) cvPtr1D( const CvArr* arr, int idx0, int* type CV_DEFAULT(NULL)); +/** @overload */ +CVAPI(uchar*) cvPtr2D( const CvArr* arr, int idx0, int idx1, int* type CV_DEFAULT(NULL) ); +/** @overload */ +CVAPI(uchar*) cvPtr3D( const CvArr* arr, int idx0, int idx1, int idx2, + int* type CV_DEFAULT(NULL)); +/** @overload +@param arr Input array +@param idx Array of the element indices +@param type Optional output parameter: type of matrix elements +@param create_node Optional input parameter for sparse matrices. Non-zero value of the parameter +means that the requested element is created if it does not exist already. +@param precalc_hashval Optional input parameter for sparse matrices. If the pointer is not NULL, +the function does not recalculate the node hash value, but takes it from the specified location. +It is useful for speeding up pair-wise operations (TODO: provide an example) +*/ +CVAPI(uchar*) cvPtrND( const CvArr* arr, const int* idx, int* type CV_DEFAULT(NULL), + int create_node CV_DEFAULT(1), + unsigned* precalc_hashval CV_DEFAULT(NULL)); + +/** @brief Return a specific array element. + +The functions return a specific array element. In the case of a sparse array the functions return 0 +if the requested node does not exist (no new node is created by the functions). +@param arr Input array +@param idx0 The first zero-based component of the element index + */ +CVAPI(CvScalar) cvGet1D( const CvArr* arr, int idx0 ); +/** @overload */ +CVAPI(CvScalar) cvGet2D( const CvArr* arr, int idx0, int idx1 ); +/** @overload */ +CVAPI(CvScalar) cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 ); +/** @overload +@param arr Input array +@param idx Array of the element indices +*/ +CVAPI(CvScalar) cvGetND( const CvArr* arr, const int* idx ); + +/** @brief Return a specific element of single-channel 1D, 2D, 3D or nD array. + +Returns a specific element of a single-channel array. If the array has multiple channels, a runtime +error is raised. Note that Get?D functions can be used safely for both single-channel and +multiple-channel arrays though they are a bit slower. + +In the case of a sparse array the functions return 0 if the requested node does not exist (no new +node is created by the functions). +@param arr Input array. Must have a single channel. +@param idx0 The first zero-based component of the element index + */ +CVAPI(double) cvGetReal1D( const CvArr* arr, int idx0 ); +/** @overload */ +CVAPI(double) cvGetReal2D( const CvArr* arr, int idx0, int idx1 ); +/** @overload */ +CVAPI(double) cvGetReal3D( const CvArr* arr, int idx0, int idx1, int idx2 ); +/** @overload +@param arr Input array. Must have a single channel. +@param idx Array of the element indices +*/ +CVAPI(double) cvGetRealND( const CvArr* arr, const int* idx ); + +/** @brief Change the particular array element. + +The functions assign the new value to a particular array element. In the case of a sparse array the +functions create the node if it does not exist yet. +@param arr Input array +@param idx0 The first zero-based component of the element index +@param value The assigned value + */ +CVAPI(void) cvSet1D( CvArr* arr, int idx0, CvScalar value ); +/** @overload */ +CVAPI(void) cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value ); +/** @overload */ +CVAPI(void) cvSet3D( CvArr* arr, int idx0, int idx1, int idx2, CvScalar value ); +/** @overload +@param arr Input array +@param idx Array of the element indices +@param value The assigned value +*/ +CVAPI(void) cvSetND( CvArr* arr, const int* idx, CvScalar value ); + +/** @brief Change a specific array element. + +The functions assign a new value to a specific element of a single-channel array. If the array has +multiple channels, a runtime error is raised. Note that the Set\*D function can be used safely for +both single-channel and multiple-channel arrays, though they are a bit slower. + +In the case of a sparse array the functions create the node if it does not yet exist. +@param arr Input array +@param idx0 The first zero-based component of the element index +@param value The assigned value + */ +CVAPI(void) cvSetReal1D( CvArr* arr, int idx0, double value ); +/** @overload */ +CVAPI(void) cvSetReal2D( CvArr* arr, int idx0, int idx1, double value ); +/** @overload */ +CVAPI(void) cvSetReal3D( CvArr* arr, int idx0, + int idx1, int idx2, double value ); +/** @overload +@param arr Input array +@param idx Array of the element indices +@param value The assigned value +*/ +CVAPI(void) cvSetRealND( CvArr* arr, const int* idx, double value ); + +/** clears element of ND dense array, + in case of sparse arrays it deletes the specified node */ +CVAPI(void) cvClearND( CvArr* arr, const int* idx ); + +/** @brief Returns matrix header for arbitrary array. + +The function returns a matrix header for the input array that can be a matrix - CvMat, an image - +IplImage, or a multi-dimensional dense array - CvMatND (the third option is allowed only if +allowND != 0) . In the case of matrix the function simply returns the input pointer. In the case of +IplImage\* or CvMatND it initializes the header structure with parameters of the current image ROI +and returns &header. Because COI is not supported by CvMat, it is returned separately. + +The function provides an easy way to handle both types of arrays - IplImage and CvMat using the same +code. Input array must have non-zero data pointer, otherwise the function will report an error. + +@note If the input array is IplImage with planar data layout and COI set, the function returns the +pointer to the selected plane and COI == 0. This feature allows user to process IplImage structures +with planar data layout, even though OpenCV does not support such images. +@param arr Input array +@param header Pointer to CvMat structure used as a temporary buffer +@param coi Optional output parameter for storing COI +@param allowND If non-zero, the function accepts multi-dimensional dense arrays (CvMatND\*) and +returns 2D matrix (if CvMatND has two dimensions) or 1D matrix (when CvMatND has 1 dimension or +more than 2 dimensions). The CvMatND array must be continuous. +@sa cvGetImage, cvarrToMat. + */ +CVAPI(CvMat*) cvGetMat( const CvArr* arr, CvMat* header, + int* coi CV_DEFAULT(NULL), + int allowND CV_DEFAULT(0)); + +/** @brief Returns image header for arbitrary array. + +The function returns the image header for the input array that can be a matrix (CvMat) or image +(IplImage). In the case of an image the function simply returns the input pointer. In the case of +CvMat it initializes an image_header structure with the parameters of the input matrix. Note that +if we transform IplImage to CvMat using cvGetMat and then transform CvMat back to IplImage using +this function, we will get different headers if the ROI is set in the original image. +@param arr Input array +@param image_header Pointer to IplImage structure used as a temporary buffer + */ +CVAPI(IplImage*) cvGetImage( const CvArr* arr, IplImage* image_header ); + + +/** @brief Changes the shape of a multi-dimensional array without copying the data. + +The function is an advanced version of cvReshape that can work with multi-dimensional arrays as +well (though it can work with ordinary images and matrices) and change the number of dimensions. + +Below are the two samples from the cvReshape description rewritten using cvReshapeMatND: +@code + IplImage* color_img = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3); + IplImage gray_img_hdr, *gray_img; + gray_img = (IplImage*)cvReshapeMatND(color_img, sizeof(gray_img_hdr), &gray_img_hdr, 1, 0, 0); + ... + int size[] = { 2, 2, 2 }; + CvMatND* mat = cvCreateMatND(3, size, CV_32F); + CvMat row_header, *row; + row = (CvMat*)cvReshapeMatND(mat, sizeof(row_header), &row_header, 0, 1, 0); +@endcode +In C, the header file for this function includes a convenient macro cvReshapeND that does away with +the sizeof_header parameter. So, the lines containing the call to cvReshapeMatND in the examples +may be replaced as follow: +@code + gray_img = (IplImage*)cvReshapeND(color_img, &gray_img_hdr, 1, 0, 0); + ... + row = (CvMat*)cvReshapeND(mat, &row_header, 0, 1, 0); +@endcode +@param arr Input array +@param sizeof_header Size of output header to distinguish between IplImage, CvMat and CvMatND +output headers +@param header Output header to be filled +@param new_cn New number of channels. new_cn = 0 means that the number of channels remains +unchanged. +@param new_dims New number of dimensions. new_dims = 0 means that the number of dimensions +remains the same. +@param new_sizes Array of new dimension sizes. Only new_dims-1 values are used, because the +total number of elements must remain the same. Thus, if new_dims = 1, new_sizes array is not +used. + */ +CVAPI(CvArr*) cvReshapeMatND( const CvArr* arr, + int sizeof_header, CvArr* header, + int new_cn, int new_dims, int* new_sizes ); + +#define cvReshapeND( arr, header, new_cn, new_dims, new_sizes ) \ + cvReshapeMatND( (arr), sizeof(*(header)), (header), \ + (new_cn), (new_dims), (new_sizes)) + +/** @brief Changes shape of matrix/image without copying data. + +The function initializes the CvMat header so that it points to the same data as the original array +but has a different shape - different number of channels, different number of rows, or both. + +The following example code creates one image buffer and two image headers, the first is for a +320x240x3 image and the second is for a 960x240x1 image: +@code + IplImage* color_img = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3); + CvMat gray_mat_hdr; + IplImage gray_img_hdr, *gray_img; + cvReshape(color_img, &gray_mat_hdr, 1); + gray_img = cvGetImage(&gray_mat_hdr, &gray_img_hdr); +@endcode +And the next example converts a 3x3 matrix to a single 1x9 vector: +@code + CvMat* mat = cvCreateMat(3, 3, CV_32F); + CvMat row_header, *row; + row = cvReshape(mat, &row_header, 0, 1); +@endcode +@param arr Input array +@param header Output header to be filled +@param new_cn New number of channels. 'new_cn = 0' means that the number of channels remains +unchanged. +@param new_rows New number of rows. 'new_rows = 0' means that the number of rows remains +unchanged unless it needs to be changed according to new_cn value. +*/ +CVAPI(CvMat*) cvReshape( const CvArr* arr, CvMat* header, + int new_cn, int new_rows CV_DEFAULT(0) ); + +/** Repeats source 2d array several times in both horizontal and + vertical direction to fill destination array */ +CVAPI(void) cvRepeat( const CvArr* src, CvArr* dst ); + +/** @brief Allocates array data + +The function allocates image, matrix or multi-dimensional dense array data. Note that in the case of +matrix types OpenCV allocation functions are used. In the case of IplImage they are used unless +CV_TURN_ON_IPL_COMPATIBILITY() has been called before. In the latter case IPL functions are used +to allocate the data. +@param arr Array header + */ +CVAPI(void) cvCreateData( CvArr* arr ); + +/** @brief Releases array data. + +The function releases the array data. In the case of CvMat or CvMatND it simply calls +cvDecRefData(), that is the function can not deallocate external data. See also the note to +cvCreateData . +@param arr Array header + */ +CVAPI(void) cvReleaseData( CvArr* arr ); + +/** @brief Assigns user data to the array header. + +The function assigns user data to the array header. Header should be initialized before using +cvCreateMatHeader, cvCreateImageHeader, cvCreateMatNDHeader, cvInitMatHeader, +cvInitImageHeader or cvInitMatNDHeader. +@param arr Array header +@param data User data +@param step Full row length in bytes + */ +CVAPI(void) cvSetData( CvArr* arr, void* data, int step ); + +/** @brief Retrieves low-level information about the array. + +The function fills output variables with low-level information about the array data. All output + +parameters are optional, so some of the pointers may be set to NULL. If the array is IplImage with +ROI set, the parameters of ROI are returned. + +The following example shows how to get access to array elements. It computes absolute values of the +array elements : +@code + float* data; + int step; + CvSize size; + + cvGetRawData(array, (uchar**)&data, &step, &size); + step /= sizeof(data[0]); + + for(int y = 0; y < size.height; y++, data += step ) + for(int x = 0; x < size.width; x++ ) + data[x] = (float)fabs(data[x]); +@endcode +@param arr Array header +@param data Output pointer to the whole image origin or ROI origin if ROI is set +@param step Output full row length in bytes +@param roi_size Output ROI size + */ +CVAPI(void) cvGetRawData( const CvArr* arr, uchar** data, + int* step CV_DEFAULT(NULL), + CvSize* roi_size CV_DEFAULT(NULL)); + +/** @brief Returns size of matrix or image ROI. + +The function returns number of rows (CvSize::height) and number of columns (CvSize::width) of the +input matrix or image. In the case of image the size of ROI is returned. +@param arr array header + */ +CVAPI(CvSize) cvGetSize( const CvArr* arr ); + +/** @brief Copies one array to another. + +The function copies selected elements from an input array to an output array: + +\f[\texttt{dst} (I)= \texttt{src} (I) \quad \text{if} \quad \texttt{mask} (I) \ne 0.\f] + +If any of the passed arrays is of IplImage type, then its ROI and COI fields are used. Both arrays +must have the same type, the same number of dimensions, and the same size. The function can also +copy sparse arrays (mask is not supported in this case). +@param src The source array +@param dst The destination array +@param mask Operation mask, 8-bit single channel array; specifies elements of the destination array +to be changed + */ +CVAPI(void) cvCopy( const CvArr* src, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @brief Sets every element of an array to a given value. + +The function copies the scalar value to every selected element of the destination array: +\f[\texttt{arr} (I)= \texttt{value} \quad \text{if} \quad \texttt{mask} (I) \ne 0\f] +If array arr is of IplImage type, then is ROI used, but COI must not be set. +@param arr The destination array +@param value Fill value +@param mask Operation mask, 8-bit single channel array; specifies elements of the destination +array to be changed + */ +CVAPI(void) cvSet( CvArr* arr, CvScalar value, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @brief Clears the array. + +The function clears the array. In the case of dense arrays (CvMat, CvMatND or IplImage), +cvZero(array) is equivalent to cvSet(array,cvScalarAll(0),0). In the case of sparse arrays all the +elements are removed. +@param arr Array to be cleared + */ +CVAPI(void) cvSetZero( CvArr* arr ); +#define cvZero cvSetZero + + +/** Splits a multi-channel array into the set of single-channel arrays or + extracts particular [color] plane */ +CVAPI(void) cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, + CvArr* dst2, CvArr* dst3 ); + +/** Merges a set of single-channel arrays into the single multi-channel array + or inserts one particular [color] plane to the array */ +CVAPI(void) cvMerge( const CvArr* src0, const CvArr* src1, + const CvArr* src2, const CvArr* src3, + CvArr* dst ); + +/** Copies several channels from input arrays to + certain channels of output arrays */ +CVAPI(void) cvMixChannels( const CvArr** src, int src_count, + CvArr** dst, int dst_count, + const int* from_to, int pair_count ); + +/** @brief Converts one array to another with optional linear transformation. + +The function has several different purposes, and thus has several different names. It copies one +array to another with optional scaling, which is performed first, and/or optional type conversion, +performed after: + +\f[\texttt{dst} (I) = \texttt{scale} \texttt{src} (I) + ( \texttt{shift} _0, \texttt{shift} _1,...)\f] + +All the channels of multi-channel arrays are processed independently. + +The type of conversion is done with rounding and saturation, that is if the result of scaling + +conversion can not be represented exactly by a value of the destination array element type, it is +set to the nearest representable value on the real axis. +@param src Source array +@param dst Destination array +@param scale Scale factor +@param shift Value added to the scaled source array elements + */ +CVAPI(void) cvConvertScale( const CvArr* src, CvArr* dst, + double scale CV_DEFAULT(1), + double shift CV_DEFAULT(0) ); +#define cvCvtScale cvConvertScale +#define cvScale cvConvertScale +#define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 ) + + +/** Performs linear transformation on every source array element, + stores absolute value of the result: + dst(x,y,c) = abs(scale*src(x,y,c)+shift). + destination array must have 8u type. + In other cases one may use cvConvertScale + cvAbsDiffS */ +CVAPI(void) cvConvertScaleAbs( const CvArr* src, CvArr* dst, + double scale CV_DEFAULT(1), + double shift CV_DEFAULT(0) ); +#define cvCvtScaleAbs cvConvertScaleAbs + + +/** checks termination criteria validity and + sets eps to default_eps (if it is not set), + max_iter to default_max_iters (if it is not set) +*/ +CVAPI(CvTermCriteria) cvCheckTermCriteria( CvTermCriteria criteria, + double default_eps, + int default_max_iters ); + +/****************************************************************************************\ +* Arithmetic, logic and comparison operations * +\****************************************************************************************/ + +/** dst(mask) = src1(mask) + src2(mask) */ +CVAPI(void) cvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(mask) = src(mask) + value */ +CVAPI(void) cvAddS( const CvArr* src, CvScalar value, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(mask) = src1(mask) - src2(mask) */ +CVAPI(void) cvSub( const CvArr* src1, const CvArr* src2, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(mask) = src(mask) - value = src(mask) + (-value) */ +CV_INLINE void cvSubS( const CvArr* src, CvScalar value, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL)) +{ + cvAddS( src, cvScalar( -value.val[0], -value.val[1], -value.val[2], -value.val[3]), + dst, mask ); +} + +/** dst(mask) = value - src(mask) */ +CVAPI(void) cvSubRS( const CvArr* src, CvScalar value, CvArr* dst, + const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src1(idx) * src2(idx) * scale + (scaled element-wise multiplication of 2 arrays) */ +CVAPI(void) cvMul( const CvArr* src1, const CvArr* src2, + CvArr* dst, double scale CV_DEFAULT(1) ); + +/** element-wise division/inversion with scaling: + dst(idx) = src1(idx) * scale / src2(idx) + or dst(idx) = scale / src2(idx) if src1 == 0 */ +CVAPI(void) cvDiv( const CvArr* src1, const CvArr* src2, + CvArr* dst, double scale CV_DEFAULT(1)); + +/** dst = src1 * scale + src2 */ +CVAPI(void) cvScaleAdd( const CvArr* src1, CvScalar scale, + const CvArr* src2, CvArr* dst ); +#define cvAXPY( A, real_scalar, B, C ) cvScaleAdd(A, cvRealScalar(real_scalar), B, C) + +/** dst = src1 * alpha + src2 * beta + gamma */ +CVAPI(void) cvAddWeighted( const CvArr* src1, double alpha, + const CvArr* src2, double beta, + double gamma, CvArr* dst ); + +/** @brief Calculates the dot product of two arrays in Euclidean metrics. + +The function calculates and returns the Euclidean dot product of two arrays. + +\f[src1 \bullet src2 = \sum _I ( \texttt{src1} (I) \texttt{src2} (I))\f] + +In the case of multiple channel arrays, the results for all channels are accumulated. In particular, +cvDotProduct(a,a) where a is a complex vector, will return \f$||\texttt{a}||^2\f$. The function can +process multi-dimensional arrays, row by row, layer by layer, and so on. +@param src1 The first source array +@param src2 The second source array + */ +CVAPI(double) cvDotProduct( const CvArr* src1, const CvArr* src2 ); + +/** dst(idx) = src1(idx) & src2(idx) */ +CVAPI(void) cvAnd( const CvArr* src1, const CvArr* src2, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src(idx) & value */ +CVAPI(void) cvAndS( const CvArr* src, CvScalar value, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src1(idx) | src2(idx) */ +CVAPI(void) cvOr( const CvArr* src1, const CvArr* src2, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src(idx) | value */ +CVAPI(void) cvOrS( const CvArr* src, CvScalar value, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src1(idx) ^ src2(idx) */ +CVAPI(void) cvXor( const CvArr* src1, const CvArr* src2, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = src(idx) ^ value */ +CVAPI(void) cvXorS( const CvArr* src, CvScalar value, + CvArr* dst, const CvArr* mask CV_DEFAULT(NULL)); + +/** dst(idx) = ~src(idx) */ +CVAPI(void) cvNot( const CvArr* src, CvArr* dst ); + +/** dst(idx) = lower(idx) <= src(idx) < upper(idx) */ +CVAPI(void) cvInRange( const CvArr* src, const CvArr* lower, + const CvArr* upper, CvArr* dst ); + +/** dst(idx) = lower <= src(idx) < upper */ +CVAPI(void) cvInRangeS( const CvArr* src, CvScalar lower, + CvScalar upper, CvArr* dst ); + +#define CV_CMP_EQ 0 +#define CV_CMP_GT 1 +#define CV_CMP_GE 2 +#define CV_CMP_LT 3 +#define CV_CMP_LE 4 +#define CV_CMP_NE 5 + +/** The comparison operation support single-channel arrays only. + Destination image should be 8uC1 or 8sC1 */ + +/** dst(idx) = src1(idx) _cmp_op_ src2(idx) */ +CVAPI(void) cvCmp( const CvArr* src1, const CvArr* src2, CvArr* dst, int cmp_op ); + +/** dst(idx) = src1(idx) _cmp_op_ value */ +CVAPI(void) cvCmpS( const CvArr* src, double value, CvArr* dst, int cmp_op ); + +/** dst(idx) = min(src1(idx),src2(idx)) */ +CVAPI(void) cvMin( const CvArr* src1, const CvArr* src2, CvArr* dst ); + +/** dst(idx) = max(src1(idx),src2(idx)) */ +CVAPI(void) cvMax( const CvArr* src1, const CvArr* src2, CvArr* dst ); + +/** dst(idx) = min(src(idx),value) */ +CVAPI(void) cvMinS( const CvArr* src, double value, CvArr* dst ); + +/** dst(idx) = max(src(idx),value) */ +CVAPI(void) cvMaxS( const CvArr* src, double value, CvArr* dst ); + +/** dst(x,y,c) = abs(src1(x,y,c) - src2(x,y,c)) */ +CVAPI(void) cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst ); + +/** dst(x,y,c) = abs(src(x,y,c) - value(c)) */ +CVAPI(void) cvAbsDiffS( const CvArr* src, CvArr* dst, CvScalar value ); +#define cvAbs( src, dst ) cvAbsDiffS( (src), (dst), cvScalarAll(0)) + +/****************************************************************************************\ +* Math operations * +\****************************************************************************************/ + +/** Does cartesian->polar coordinates conversion. + Either of output components (magnitude or angle) is optional */ +CVAPI(void) cvCartToPolar( const CvArr* x, const CvArr* y, + CvArr* magnitude, CvArr* angle CV_DEFAULT(NULL), + int angle_in_degrees CV_DEFAULT(0)); + +/** Does polar->cartesian coordinates conversion. + Either of output components (magnitude or angle) is optional. + If magnitude is missing it is assumed to be all 1's */ +CVAPI(void) cvPolarToCart( const CvArr* magnitude, const CvArr* angle, + CvArr* x, CvArr* y, + int angle_in_degrees CV_DEFAULT(0)); + +/** Does powering: dst(idx) = src(idx)^power */ +CVAPI(void) cvPow( const CvArr* src, CvArr* dst, double power ); + +/** Does exponention: dst(idx) = exp(src(idx)). + Overflow is not handled yet. Underflow is handled. + Maximal relative error is ~7e-6 for single-precision input */ +CVAPI(void) cvExp( const CvArr* src, CvArr* dst ); + +/** Calculates natural logarithms: dst(idx) = log(abs(src(idx))). + Logarithm of 0 gives large negative number(~-700) + Maximal relative error is ~3e-7 for single-precision output +*/ +CVAPI(void) cvLog( const CvArr* src, CvArr* dst ); + +/** Fast arctangent calculation */ +CVAPI(float) cvFastArctan( float y, float x ); + +/** Fast cubic root calculation */ +CVAPI(float) cvCbrt( float value ); + +#define CV_CHECK_RANGE 1 +#define CV_CHECK_QUIET 2 +/** Checks array values for NaNs, Infs or simply for too large numbers + (if CV_CHECK_RANGE is set). If CV_CHECK_QUIET is set, + no runtime errors is raised (function returns zero value in case of "bad" values). + Otherwise cvError is called */ +CVAPI(int) cvCheckArr( const CvArr* arr, int flags CV_DEFAULT(0), + double min_val CV_DEFAULT(0), double max_val CV_DEFAULT(0)); +#define cvCheckArray cvCheckArr + +#define CV_RAND_UNI 0 +#define CV_RAND_NORMAL 1 + +/** @brief Fills an array with random numbers and updates the RNG state. + +The function fills the destination array with uniformly or normally distributed random numbers. +@param rng CvRNG state initialized by cvRNG +@param arr The destination array +@param dist_type Distribution type +> - **CV_RAND_UNI** uniform distribution +> - **CV_RAND_NORMAL** normal or Gaussian distribution +@param param1 The first parameter of the distribution. In the case of a uniform distribution it is +the inclusive lower boundary of the random numbers range. In the case of a normal distribution it +is the mean value of the random numbers. +@param param2 The second parameter of the distribution. In the case of a uniform distribution it +is the exclusive upper boundary of the random numbers range. In the case of a normal distribution +it is the standard deviation of the random numbers. +@sa randu, randn, RNG::fill. + */ +CVAPI(void) cvRandArr( CvRNG* rng, CvArr* arr, int dist_type, + CvScalar param1, CvScalar param2 ); + +CVAPI(void) cvRandShuffle( CvArr* mat, CvRNG* rng, + double iter_factor CV_DEFAULT(1.)); + +#define CV_SORT_EVERY_ROW 0 +#define CV_SORT_EVERY_COLUMN 1 +#define CV_SORT_ASCENDING 0 +#define CV_SORT_DESCENDING 16 + +CVAPI(void) cvSort( const CvArr* src, CvArr* dst CV_DEFAULT(NULL), + CvArr* idxmat CV_DEFAULT(NULL), + int flags CV_DEFAULT(0)); + +/** Finds real roots of a cubic equation */ +CVAPI(int) cvSolveCubic( const CvMat* coeffs, CvMat* roots ); + +/** Finds all real and complex roots of a polynomial equation */ +CVAPI(void) cvSolvePoly(const CvMat* coeffs, CvMat *roots2, + int maxiter CV_DEFAULT(20), int fig CV_DEFAULT(100)); + +/****************************************************************************************\ +* Matrix operations * +\****************************************************************************************/ + +/** @brief Calculates the cross product of two 3D vectors. + +The function calculates the cross product of two 3D vectors: +\f[\texttt{dst} = \texttt{src1} \times \texttt{src2}\f] +or: +\f[\begin{array}{l} \texttt{dst} _1 = \texttt{src1} _2 \texttt{src2} _3 - \texttt{src1} _3 \texttt{src2} _2 \\ \texttt{dst} _2 = \texttt{src1} _3 \texttt{src2} _1 - \texttt{src1} _1 \texttt{src2} _3 \\ \texttt{dst} _3 = \texttt{src1} _1 \texttt{src2} _2 - \texttt{src1} _2 \texttt{src2} _1 \end{array}\f] +@param src1 The first source vector +@param src2 The second source vector +@param dst The destination vector + */ +CVAPI(void) cvCrossProduct( const CvArr* src1, const CvArr* src2, CvArr* dst ); + +/** Matrix transform: dst = A*B + C, C is optional */ +#define cvMatMulAdd( src1, src2, src3, dst ) cvGEMM( (src1), (src2), 1., (src3), 1., (dst), 0 ) +#define cvMatMul( src1, src2, dst ) cvMatMulAdd( (src1), (src2), NULL, (dst)) + +#define CV_GEMM_A_T 1 +#define CV_GEMM_B_T 2 +#define CV_GEMM_C_T 4 +/** Extended matrix transform: + dst = alpha*op(A)*op(B) + beta*op(C), where op(X) is X or X^T */ +CVAPI(void) cvGEMM( const CvArr* src1, const CvArr* src2, double alpha, + const CvArr* src3, double beta, CvArr* dst, + int tABC CV_DEFAULT(0)); +#define cvMatMulAddEx cvGEMM + +/** Transforms each element of source array and stores + resultant vectors in destination array */ +CVAPI(void) cvTransform( const CvArr* src, CvArr* dst, + const CvMat* transmat, + const CvMat* shiftvec CV_DEFAULT(NULL)); +#define cvMatMulAddS cvTransform + +/** Does perspective transform on every element of input array */ +CVAPI(void) cvPerspectiveTransform( const CvArr* src, CvArr* dst, + const CvMat* mat ); + +/** Calculates (A-delta)*(A-delta)^T (order=0) or (A-delta)^T*(A-delta) (order=1) */ +CVAPI(void) cvMulTransposed( const CvArr* src, CvArr* dst, int order, + const CvArr* delta CV_DEFAULT(NULL), + double scale CV_DEFAULT(1.) ); + +/** Tranposes matrix. Square matrices can be transposed in-place */ +CVAPI(void) cvTranspose( const CvArr* src, CvArr* dst ); +#define cvT cvTranspose + +/** Completes the symmetric matrix from the lower (LtoR=0) or from the upper (LtoR!=0) part */ +CVAPI(void) cvCompleteSymm( CvMat* matrix, int LtoR CV_DEFAULT(0) ); + +/** Mirror array data around horizontal (flip=0), + vertical (flip=1) or both(flip=-1) axises: + cvFlip(src) flips images vertically and sequences horizontally (inplace) */ +CVAPI(void) cvFlip( const CvArr* src, CvArr* dst CV_DEFAULT(NULL), + int flip_mode CV_DEFAULT(0)); +#define cvMirror cvFlip + + +#define CV_SVD_MODIFY_A 1 +#define CV_SVD_U_T 2 +#define CV_SVD_V_T 4 + +/** Performs Singular Value Decomposition of a matrix */ +CVAPI(void) cvSVD( CvArr* A, CvArr* W, CvArr* U CV_DEFAULT(NULL), + CvArr* V CV_DEFAULT(NULL), int flags CV_DEFAULT(0)); + +/** Performs Singular Value Back Substitution (solves A*X = B): + flags must be the same as in cvSVD */ +CVAPI(void) cvSVBkSb( const CvArr* W, const CvArr* U, + const CvArr* V, const CvArr* B, + CvArr* X, int flags ); + +#define CV_LU 0 +#define CV_SVD 1 +#define CV_SVD_SYM 2 +#define CV_CHOLESKY 3 +#define CV_QR 4 +#define CV_NORMAL 16 + +/** Inverts matrix */ +CVAPI(double) cvInvert( const CvArr* src, CvArr* dst, + int method CV_DEFAULT(CV_LU)); +#define cvInv cvInvert + +/** Solves linear system (src1)*(dst) = (src2) + (returns 0 if src1 is a singular and CV_LU method is used) */ +CVAPI(int) cvSolve( const CvArr* src1, const CvArr* src2, CvArr* dst, + int method CV_DEFAULT(CV_LU)); + +/** Calculates determinant of input matrix */ +CVAPI(double) cvDet( const CvArr* mat ); + +/** Calculates trace of the matrix (sum of elements on the main diagonal) */ +CVAPI(CvScalar) cvTrace( const CvArr* mat ); + +/** Finds eigen values and vectors of a symmetric matrix */ +CVAPI(void) cvEigenVV( CvArr* mat, CvArr* evects, CvArr* evals, + double eps CV_DEFAULT(0), + int lowindex CV_DEFAULT(-1), + int highindex CV_DEFAULT(-1)); + +///* Finds selected eigen values and vectors of a symmetric matrix */ +//CVAPI(void) cvSelectedEigenVV( CvArr* mat, CvArr* evects, CvArr* evals, +// int lowindex, int highindex ); + +/** Makes an identity matrix (mat_ij = i == j) */ +CVAPI(void) cvSetIdentity( CvArr* mat, CvScalar value CV_DEFAULT(cvRealScalar(1)) ); + +/** Fills matrix with given range of numbers */ +CVAPI(CvArr*) cvRange( CvArr* mat, double start, double end ); + +/** @anchor core_c_CovarFlags +@name Flags for cvCalcCovarMatrix +@see cvCalcCovarMatrix + @{ +*/ + +/** flag for cvCalcCovarMatrix, transpose([v1-avg, v2-avg,...]) * [v1-avg,v2-avg,...] */ +#define CV_COVAR_SCRAMBLED 0 + +/** flag for cvCalcCovarMatrix, [v1-avg, v2-avg,...] * transpose([v1-avg,v2-avg,...]) */ +#define CV_COVAR_NORMAL 1 + +/** flag for cvCalcCovarMatrix, do not calc average (i.e. mean vector) - use the input vector instead + (useful for calculating covariance matrix by parts) */ +#define CV_COVAR_USE_AVG 2 + +/** flag for cvCalcCovarMatrix, scale the covariance matrix coefficients by number of the vectors */ +#define CV_COVAR_SCALE 4 + +/** flag for cvCalcCovarMatrix, all the input vectors are stored in a single matrix, as its rows */ +#define CV_COVAR_ROWS 8 + +/** flag for cvCalcCovarMatrix, all the input vectors are stored in a single matrix, as its columns */ +#define CV_COVAR_COLS 16 + +/** @} */ + +/** Calculates covariation matrix for a set of vectors +@see @ref core_c_CovarFlags "flags" +*/ +CVAPI(void) cvCalcCovarMatrix( const CvArr** vects, int count, + CvArr* cov_mat, CvArr* avg, int flags ); + +#define CV_PCA_DATA_AS_ROW 0 +#define CV_PCA_DATA_AS_COL 1 +#define CV_PCA_USE_AVG 2 +CVAPI(void) cvCalcPCA( const CvArr* data, CvArr* mean, + CvArr* eigenvals, CvArr* eigenvects, int flags ); + +CVAPI(void) cvProjectPCA( const CvArr* data, const CvArr* mean, + const CvArr* eigenvects, CvArr* result ); + +CVAPI(void) cvBackProjectPCA( const CvArr* proj, const CvArr* mean, + const CvArr* eigenvects, CvArr* result ); + +/** Calculates Mahalanobis(weighted) distance */ +CVAPI(double) cvMahalanobis( const CvArr* vec1, const CvArr* vec2, const CvArr* mat ); +#define cvMahalonobis cvMahalanobis + +/****************************************************************************************\ +* Array Statistics * +\****************************************************************************************/ + +/** Finds sum of array elements */ +CVAPI(CvScalar) cvSum( const CvArr* arr ); + +/** Calculates number of non-zero pixels */ +CVAPI(int) cvCountNonZero( const CvArr* arr ); + +/** Calculates mean value of array elements */ +CVAPI(CvScalar) cvAvg( const CvArr* arr, const CvArr* mask CV_DEFAULT(NULL) ); + +/** Calculates mean and standard deviation of pixel values */ +CVAPI(void) cvAvgSdv( const CvArr* arr, CvScalar* mean, CvScalar* std_dev, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** Finds global minimum, maximum and their positions */ +CVAPI(void) cvMinMaxLoc( const CvArr* arr, double* min_val, double* max_val, + CvPoint* min_loc CV_DEFAULT(NULL), + CvPoint* max_loc CV_DEFAULT(NULL), + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @anchor core_c_NormFlags + @name Flags for cvNorm and cvNormalize + @{ +*/ +#define CV_C 1 +#define CV_L1 2 +#define CV_L2 4 +#define CV_NORM_MASK 7 +#define CV_RELATIVE 8 +#define CV_DIFF 16 +#define CV_MINMAX 32 + +#define CV_DIFF_C (CV_DIFF | CV_C) +#define CV_DIFF_L1 (CV_DIFF | CV_L1) +#define CV_DIFF_L2 (CV_DIFF | CV_L2) +#define CV_RELATIVE_C (CV_RELATIVE | CV_C) +#define CV_RELATIVE_L1 (CV_RELATIVE | CV_L1) +#define CV_RELATIVE_L2 (CV_RELATIVE | CV_L2) +/** @} */ + +/** Finds norm, difference norm or relative difference norm for an array (or two arrays) +@see ref core_c_NormFlags "flags" +*/ +CVAPI(double) cvNorm( const CvArr* arr1, const CvArr* arr2 CV_DEFAULT(NULL), + int norm_type CV_DEFAULT(CV_L2), + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @see ref core_c_NormFlags "flags" */ +CVAPI(void) cvNormalize( const CvArr* src, CvArr* dst, + double a CV_DEFAULT(1.), double b CV_DEFAULT(0.), + int norm_type CV_DEFAULT(CV_L2), + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @anchor core_c_ReduceFlags + @name Flags for cvReduce + @{ +*/ +#define CV_REDUCE_SUM 0 +#define CV_REDUCE_AVG 1 +#define CV_REDUCE_MAX 2 +#define CV_REDUCE_MIN 3 +/** @} */ + +/** @see @ref core_c_ReduceFlags "flags" */ +CVAPI(void) cvReduce( const CvArr* src, CvArr* dst, int dim CV_DEFAULT(-1), + int op CV_DEFAULT(CV_REDUCE_SUM) ); + +/****************************************************************************************\ +* Discrete Linear Transforms and Related Functions * +\****************************************************************************************/ + +/** @anchor core_c_DftFlags + @name Flags for cvDFT, cvDCT and cvMulSpectrums + @{ + */ +#define CV_DXT_FORWARD 0 +#define CV_DXT_INVERSE 1 +#define CV_DXT_SCALE 2 /**< divide result by size of array */ +#define CV_DXT_INV_SCALE (CV_DXT_INVERSE + CV_DXT_SCALE) +#define CV_DXT_INVERSE_SCALE CV_DXT_INV_SCALE +#define CV_DXT_ROWS 4 /**< transform each row individually */ +#define CV_DXT_MUL_CONJ 8 /**< conjugate the second argument of cvMulSpectrums */ +/** @} */ + +/** Discrete Fourier Transform: + complex->complex, + real->ccs (forward), + ccs->real (inverse) +@see core_c_DftFlags "flags" +*/ +CVAPI(void) cvDFT( const CvArr* src, CvArr* dst, int flags, + int nonzero_rows CV_DEFAULT(0) ); +#define cvFFT cvDFT + +/** Multiply results of DFTs: DFT(X)*DFT(Y) or DFT(X)*conj(DFT(Y)) +@see core_c_DftFlags "flags" +*/ +CVAPI(void) cvMulSpectrums( const CvArr* src1, const CvArr* src2, + CvArr* dst, int flags ); + +/** Finds optimal DFT vector size >= size0 */ +CVAPI(int) cvGetOptimalDFTSize( int size0 ); + +/** Discrete Cosine Transform +@see core_c_DftFlags "flags" +*/ +CVAPI(void) cvDCT( const CvArr* src, CvArr* dst, int flags ); + +/****************************************************************************************\ +* Dynamic data structures * +\****************************************************************************************/ + +/** Calculates length of sequence slice (with support of negative indices). */ +CVAPI(int) cvSliceLength( CvSlice slice, const CvSeq* seq ); + + +/** Creates new memory storage. + block_size == 0 means that default, + somewhat optimal size, is used (currently, it is 64K) */ +CVAPI(CvMemStorage*) cvCreateMemStorage( int block_size CV_DEFAULT(0)); + + +/** Creates a memory storage that will borrow memory blocks from parent storage */ +CVAPI(CvMemStorage*) cvCreateChildMemStorage( CvMemStorage* parent ); + + +/** Releases memory storage. All the children of a parent must be released before + the parent. A child storage returns all the blocks to parent when it is released */ +CVAPI(void) cvReleaseMemStorage( CvMemStorage** storage ); + + +/** Clears memory storage. This is the only way(!!!) (besides cvRestoreMemStoragePos) + to reuse memory allocated for the storage - cvClearSeq,cvClearSet ... + do not free any memory. + A child storage returns all the blocks to the parent when it is cleared */ +CVAPI(void) cvClearMemStorage( CvMemStorage* storage ); + +/** Remember a storage "free memory" position */ +CVAPI(void) cvSaveMemStoragePos( const CvMemStorage* storage, CvMemStoragePos* pos ); + +/** Restore a storage "free memory" position */ +CVAPI(void) cvRestoreMemStoragePos( CvMemStorage* storage, CvMemStoragePos* pos ); + +/** Allocates continuous buffer of the specified size in the storage */ +CVAPI(void*) cvMemStorageAlloc( CvMemStorage* storage, size_t size ); + +/** Allocates string in memory storage */ +//CVAPI(CvString) cvMemStorageAllocString( CvMemStorage* storage, const char* ptr, +// int len CV_DEFAULT(-1) ); + +/** Creates new empty sequence that will reside in the specified storage */ +CVAPI(CvSeq*) cvCreateSeq( int seq_flags, size_t header_size, + size_t elem_size, CvMemStorage* storage ); + +/** Changes default size (granularity) of sequence blocks. + The default size is ~1Kbyte */ +CVAPI(void) cvSetSeqBlockSize( CvSeq* seq, int delta_elems ); + + +/** Adds new element to the end of sequence. Returns pointer to the element */ +CVAPI(schar*) cvSeqPush( CvSeq* seq, const void* element CV_DEFAULT(NULL)); + + +/** Adds new element to the beginning of sequence. Returns pointer to it */ +CVAPI(schar*) cvSeqPushFront( CvSeq* seq, const void* element CV_DEFAULT(NULL)); + + +/** Removes the last element from sequence and optionally saves it */ +CVAPI(void) cvSeqPop( CvSeq* seq, void* element CV_DEFAULT(NULL)); + + +/** Removes the first element from sequence and optioanally saves it */ +CVAPI(void) cvSeqPopFront( CvSeq* seq, void* element CV_DEFAULT(NULL)); + + +#define CV_FRONT 1 +#define CV_BACK 0 +/** Adds several new elements to the end of sequence */ +CVAPI(void) cvSeqPushMulti( CvSeq* seq, const void* elements, + int count, int in_front CV_DEFAULT(0) ); + +/** Removes several elements from the end of sequence and optionally saves them */ +CVAPI(void) cvSeqPopMulti( CvSeq* seq, void* elements, + int count, int in_front CV_DEFAULT(0) ); + +/** Inserts a new element in the middle of sequence. + cvSeqInsert(seq,0,elem) == cvSeqPushFront(seq,elem) */ +CVAPI(schar*) cvSeqInsert( CvSeq* seq, int before_index, + const void* element CV_DEFAULT(NULL)); + +/** Removes specified sequence element */ +CVAPI(void) cvSeqRemove( CvSeq* seq, int index ); + + +/** Removes all the elements from the sequence. The freed memory + can be reused later only by the same sequence unless cvClearMemStorage + or cvRestoreMemStoragePos is called */ +CVAPI(void) cvClearSeq( CvSeq* seq ); + + +/** Retrieves pointer to specified sequence element. + Negative indices are supported and mean counting from the end + (e.g -1 means the last sequence element) */ +CVAPI(schar*) cvGetSeqElem( const CvSeq* seq, int index ); + +/** Calculates index of the specified sequence element. + Returns -1 if element does not belong to the sequence */ +CVAPI(int) cvSeqElemIdx( const CvSeq* seq, const void* element, + CvSeqBlock** block CV_DEFAULT(NULL) ); + +/** Initializes sequence writer. The new elements will be added to the end of sequence */ +CVAPI(void) cvStartAppendToSeq( CvSeq* seq, CvSeqWriter* writer ); + + +/** Combination of cvCreateSeq and cvStartAppendToSeq */ +CVAPI(void) cvStartWriteSeq( int seq_flags, int header_size, + int elem_size, CvMemStorage* storage, + CvSeqWriter* writer ); + +/** Closes sequence writer, updates sequence header and returns pointer + to the resultant sequence + (which may be useful if the sequence was created using cvStartWriteSeq)) +*/ +CVAPI(CvSeq*) cvEndWriteSeq( CvSeqWriter* writer ); + + +/** Updates sequence header. May be useful to get access to some of previously + written elements via cvGetSeqElem or sequence reader */ +CVAPI(void) cvFlushSeqWriter( CvSeqWriter* writer ); + + +/** Initializes sequence reader. + The sequence can be read in forward or backward direction */ +CVAPI(void) cvStartReadSeq( const CvSeq* seq, CvSeqReader* reader, + int reverse CV_DEFAULT(0) ); + + +/** Returns current sequence reader position (currently observed sequence element) */ +CVAPI(int) cvGetSeqReaderPos( CvSeqReader* reader ); + + +/** Changes sequence reader position. It may seek to an absolute or + to relative to the current position */ +CVAPI(void) cvSetSeqReaderPos( CvSeqReader* reader, int index, + int is_relative CV_DEFAULT(0)); + +/** Copies sequence content to a continuous piece of memory */ +CVAPI(void*) cvCvtSeqToArray( const CvSeq* seq, void* elements, + CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ) ); + +/** Creates sequence header for array. + After that all the operations on sequences that do not alter the content + can be applied to the resultant sequence */ +CVAPI(CvSeq*) cvMakeSeqHeaderForArray( int seq_type, int header_size, + int elem_size, void* elements, int total, + CvSeq* seq, CvSeqBlock* block ); + +/** Extracts sequence slice (with or without copying sequence elements) */ +CVAPI(CvSeq*) cvSeqSlice( const CvSeq* seq, CvSlice slice, + CvMemStorage* storage CV_DEFAULT(NULL), + int copy_data CV_DEFAULT(0)); + +CV_INLINE CvSeq* cvCloneSeq( const CvSeq* seq, CvMemStorage* storage CV_DEFAULT(NULL)) +{ + return cvSeqSlice( seq, CV_WHOLE_SEQ, storage, 1 ); +} + +/** Removes sequence slice */ +CVAPI(void) cvSeqRemoveSlice( CvSeq* seq, CvSlice slice ); + +/** Inserts a sequence or array into another sequence */ +CVAPI(void) cvSeqInsertSlice( CvSeq* seq, int before_index, const CvArr* from_arr ); + +/** a < b ? -1 : a > b ? 1 : 0 */ +typedef int (CV_CDECL* CvCmpFunc)(const void* a, const void* b, void* userdata ); + +/** Sorts sequence in-place given element comparison function */ +CVAPI(void) cvSeqSort( CvSeq* seq, CvCmpFunc func, void* userdata CV_DEFAULT(NULL) ); + +/** Finds element in a [sorted] sequence */ +CVAPI(schar*) cvSeqSearch( CvSeq* seq, const void* elem, CvCmpFunc func, + int is_sorted, int* elem_idx, + void* userdata CV_DEFAULT(NULL) ); + +/** Reverses order of sequence elements in-place */ +CVAPI(void) cvSeqInvert( CvSeq* seq ); + +/** Splits sequence into one or more equivalence classes using the specified criteria */ +CVAPI(int) cvSeqPartition( const CvSeq* seq, CvMemStorage* storage, + CvSeq** labels, CvCmpFunc is_equal, void* userdata ); + +/************ Internal sequence functions ************/ +CVAPI(void) cvChangeSeqBlock( void* reader, int direction ); +CVAPI(void) cvCreateSeqBlock( CvSeqWriter* writer ); + + +/** Creates a new set */ +CVAPI(CvSet*) cvCreateSet( int set_flags, int header_size, + int elem_size, CvMemStorage* storage ); + +/** Adds new element to the set and returns pointer to it */ +CVAPI(int) cvSetAdd( CvSet* set_header, CvSetElem* elem CV_DEFAULT(NULL), + CvSetElem** inserted_elem CV_DEFAULT(NULL) ); + +/** Fast variant of cvSetAdd */ +CV_INLINE CvSetElem* cvSetNew( CvSet* set_header ) +{ + CvSetElem* elem = set_header->free_elems; + if( elem ) + { + set_header->free_elems = elem->next_free; + elem->flags = elem->flags & CV_SET_ELEM_IDX_MASK; + set_header->active_count++; + } + else + cvSetAdd( set_header, NULL, &elem ); + return elem; +} + +/** Removes set element given its pointer */ +CV_INLINE void cvSetRemoveByPtr( CvSet* set_header, void* elem ) +{ + CvSetElem* _elem = (CvSetElem*)elem; + assert( _elem->flags >= 0 /*&& (elem->flags & CV_SET_ELEM_IDX_MASK) < set_header->total*/ ); + _elem->next_free = set_header->free_elems; + _elem->flags = (_elem->flags & CV_SET_ELEM_IDX_MASK) | CV_SET_ELEM_FREE_FLAG; + set_header->free_elems = _elem; + set_header->active_count--; +} + +/** Removes element from the set by its index */ +CVAPI(void) cvSetRemove( CvSet* set_header, int index ); + +/** Returns a set element by index. If the element doesn't belong to the set, + NULL is returned */ +CV_INLINE CvSetElem* cvGetSetElem( const CvSet* set_header, int idx ) +{ + CvSetElem* elem = (CvSetElem*)(void *)cvGetSeqElem( (CvSeq*)set_header, idx ); + return elem && CV_IS_SET_ELEM( elem ) ? elem : 0; +} + +/** Removes all the elements from the set */ +CVAPI(void) cvClearSet( CvSet* set_header ); + +/** Creates new graph */ +CVAPI(CvGraph*) cvCreateGraph( int graph_flags, int header_size, + int vtx_size, int edge_size, + CvMemStorage* storage ); + +/** Adds new vertex to the graph */ +CVAPI(int) cvGraphAddVtx( CvGraph* graph, const CvGraphVtx* vtx CV_DEFAULT(NULL), + CvGraphVtx** inserted_vtx CV_DEFAULT(NULL) ); + + +/** Removes vertex from the graph together with all incident edges */ +CVAPI(int) cvGraphRemoveVtx( CvGraph* graph, int index ); +CVAPI(int) cvGraphRemoveVtxByPtr( CvGraph* graph, CvGraphVtx* vtx ); + + +/** Link two vertices specified by indices or pointers if they + are not connected or return pointer to already existing edge + connecting the vertices. + Functions return 1 if a new edge was created, 0 otherwise */ +CVAPI(int) cvGraphAddEdge( CvGraph* graph, + int start_idx, int end_idx, + const CvGraphEdge* edge CV_DEFAULT(NULL), + CvGraphEdge** inserted_edge CV_DEFAULT(NULL) ); + +CVAPI(int) cvGraphAddEdgeByPtr( CvGraph* graph, + CvGraphVtx* start_vtx, CvGraphVtx* end_vtx, + const CvGraphEdge* edge CV_DEFAULT(NULL), + CvGraphEdge** inserted_edge CV_DEFAULT(NULL) ); + +/** Remove edge connecting two vertices */ +CVAPI(void) cvGraphRemoveEdge( CvGraph* graph, int start_idx, int end_idx ); +CVAPI(void) cvGraphRemoveEdgeByPtr( CvGraph* graph, CvGraphVtx* start_vtx, + CvGraphVtx* end_vtx ); + +/** Find edge connecting two vertices */ +CVAPI(CvGraphEdge*) cvFindGraphEdge( const CvGraph* graph, int start_idx, int end_idx ); +CVAPI(CvGraphEdge*) cvFindGraphEdgeByPtr( const CvGraph* graph, + const CvGraphVtx* start_vtx, + const CvGraphVtx* end_vtx ); +#define cvGraphFindEdge cvFindGraphEdge +#define cvGraphFindEdgeByPtr cvFindGraphEdgeByPtr + +/** Remove all vertices and edges from the graph */ +CVAPI(void) cvClearGraph( CvGraph* graph ); + + +/** Count number of edges incident to the vertex */ +CVAPI(int) cvGraphVtxDegree( const CvGraph* graph, int vtx_idx ); +CVAPI(int) cvGraphVtxDegreeByPtr( const CvGraph* graph, const CvGraphVtx* vtx ); + + +/** Retrieves graph vertex by given index */ +#define cvGetGraphVtx( graph, idx ) (CvGraphVtx*)cvGetSetElem((CvSet*)(graph), (idx)) + +/** Retrieves index of a graph vertex given its pointer */ +#define cvGraphVtxIdx( graph, vtx ) ((vtx)->flags & CV_SET_ELEM_IDX_MASK) + +/** Retrieves index of a graph edge given its pointer */ +#define cvGraphEdgeIdx( graph, edge ) ((edge)->flags & CV_SET_ELEM_IDX_MASK) + +#define cvGraphGetVtxCount( graph ) ((graph)->active_count) +#define cvGraphGetEdgeCount( graph ) ((graph)->edges->active_count) + +#define CV_GRAPH_VERTEX 1 +#define CV_GRAPH_TREE_EDGE 2 +#define CV_GRAPH_BACK_EDGE 4 +#define CV_GRAPH_FORWARD_EDGE 8 +#define CV_GRAPH_CROSS_EDGE 16 +#define CV_GRAPH_ANY_EDGE 30 +#define CV_GRAPH_NEW_TREE 32 +#define CV_GRAPH_BACKTRACKING 64 +#define CV_GRAPH_OVER -1 + +#define CV_GRAPH_ALL_ITEMS -1 + +/** flags for graph vertices and edges */ +#define CV_GRAPH_ITEM_VISITED_FLAG (1 << 30) +#define CV_IS_GRAPH_VERTEX_VISITED(vtx) \ + (((CvGraphVtx*)(vtx))->flags & CV_GRAPH_ITEM_VISITED_FLAG) +#define CV_IS_GRAPH_EDGE_VISITED(edge) \ + (((CvGraphEdge*)(edge))->flags & CV_GRAPH_ITEM_VISITED_FLAG) +#define CV_GRAPH_SEARCH_TREE_NODE_FLAG (1 << 29) +#define CV_GRAPH_FORWARD_EDGE_FLAG (1 << 28) + +typedef struct CvGraphScanner +{ + CvGraphVtx* vtx; /* current graph vertex (or current edge origin) */ + CvGraphVtx* dst; /* current graph edge destination vertex */ + CvGraphEdge* edge; /* current edge */ + + CvGraph* graph; /* the graph */ + CvSeq* stack; /* the graph vertex stack */ + int index; /* the lower bound of certainly visited vertices */ + int mask; /* event mask */ +} +CvGraphScanner; + +/** Creates new graph scanner. */ +CVAPI(CvGraphScanner*) cvCreateGraphScanner( CvGraph* graph, + CvGraphVtx* vtx CV_DEFAULT(NULL), + int mask CV_DEFAULT(CV_GRAPH_ALL_ITEMS)); + +/** Releases graph scanner. */ +CVAPI(void) cvReleaseGraphScanner( CvGraphScanner** scanner ); + +/** Get next graph element */ +CVAPI(int) cvNextGraphItem( CvGraphScanner* scanner ); + +/** Creates a copy of graph */ +CVAPI(CvGraph*) cvCloneGraph( const CvGraph* graph, CvMemStorage* storage ); + + +/** Does look-up transformation. Elements of the source array + (that should be 8uC1 or 8sC1) are used as indexes in lutarr 256-element table */ +CVAPI(void) cvLUT( const CvArr* src, CvArr* dst, const CvArr* lut ); + + +/******************* Iteration through the sequence tree *****************/ +typedef struct CvTreeNodeIterator +{ + const void* node; + int level; + int max_level; +} +CvTreeNodeIterator; + +CVAPI(void) cvInitTreeNodeIterator( CvTreeNodeIterator* tree_iterator, + const void* first, int max_level ); +CVAPI(void*) cvNextTreeNode( CvTreeNodeIterator* tree_iterator ); +CVAPI(void*) cvPrevTreeNode( CvTreeNodeIterator* tree_iterator ); + +/** Inserts sequence into tree with specified "parent" sequence. + If parent is equal to frame (e.g. the most external contour), + then added contour will have null pointer to parent. */ +CVAPI(void) cvInsertNodeIntoTree( void* node, void* parent, void* frame ); + +/** Removes contour from tree (together with the contour children). */ +CVAPI(void) cvRemoveNodeFromTree( void* node, void* frame ); + +/** Gathers pointers to all the sequences, + accessible from the `first`, to the single sequence */ +CVAPI(CvSeq*) cvTreeToNodeSeq( const void* first, int header_size, + CvMemStorage* storage ); + +/** The function implements the K-means algorithm for clustering an array of sample + vectors in a specified number of classes */ +#define CV_KMEANS_USE_INITIAL_LABELS 1 +CVAPI(int) cvKMeans2( const CvArr* samples, int cluster_count, CvArr* labels, + CvTermCriteria termcrit, int attempts CV_DEFAULT(1), + CvRNG* rng CV_DEFAULT(0), int flags CV_DEFAULT(0), + CvArr* _centers CV_DEFAULT(0), double* compactness CV_DEFAULT(0) ); + +/****************************************************************************************\ +* System functions * +\****************************************************************************************/ + +/** Loads optimized functions from IPP, MKL etc. or switches back to pure C code */ +CVAPI(int) cvUseOptimized( int on_off ); + +typedef IplImage* (CV_STDCALL* Cv_iplCreateImageHeader) + (int,int,int,char*,char*,int,int,int,int,int, + IplROI*,IplImage*,void*,IplTileInfo*); +typedef void (CV_STDCALL* Cv_iplAllocateImageData)(IplImage*,int,int); +typedef void (CV_STDCALL* Cv_iplDeallocate)(IplImage*,int); +typedef IplROI* (CV_STDCALL* Cv_iplCreateROI)(int,int,int,int,int); +typedef IplImage* (CV_STDCALL* Cv_iplCloneImage)(const IplImage*); + +/** @brief Makes OpenCV use IPL functions for allocating IplImage and IplROI structures. + +Normally, the function is not called directly. Instead, a simple macro +CV_TURN_ON_IPL_COMPATIBILITY() is used that calls cvSetIPLAllocators and passes there pointers +to IPL allocation functions. : +@code + ... + CV_TURN_ON_IPL_COMPATIBILITY() + ... +@endcode +@param create_header pointer to a function, creating IPL image header. +@param allocate_data pointer to a function, allocating IPL image data. +@param deallocate pointer to a function, deallocating IPL image. +@param create_roi pointer to a function, creating IPL image ROI (i.e. Region of Interest). +@param clone_image pointer to a function, cloning an IPL image. + */ +CVAPI(void) cvSetIPLAllocators( Cv_iplCreateImageHeader create_header, + Cv_iplAllocateImageData allocate_data, + Cv_iplDeallocate deallocate, + Cv_iplCreateROI create_roi, + Cv_iplCloneImage clone_image ); + +#define CV_TURN_ON_IPL_COMPATIBILITY() \ + cvSetIPLAllocators( iplCreateImageHeader, iplAllocateImage, \ + iplDeallocate, iplCreateROI, iplCloneImage ) + +/****************************************************************************************\ +* Data Persistence * +\****************************************************************************************/ + +#if 0 +/********************************** High-level functions ********************************/ + +/** @brief Opens file storage for reading or writing data. + +The function opens file storage for reading or writing data. In the latter case, a new file is +created or an existing file is rewritten. The type of the read or written file is determined by the +filename extension: .xml for XML, .yml or .yaml for YAML and .json for JSON. + +At the same time, it also supports adding parameters like "example.xml?base64". + +The function returns a pointer to the CvFileStorage structure. +If the file cannot be opened then the function returns NULL. +@param filename Name of the file associated with the storage +@param memstorage Memory storage used for temporary data and for +: storing dynamic structures, such as CvSeq or CvGraph . If it is NULL, a temporary memory + storage is created and used. +@param flags Can be one of the following: +> - **CV_STORAGE_READ** the storage is open for reading +> - **CV_STORAGE_WRITE** the storage is open for writing + (use **CV_STORAGE_WRITE | CV_STORAGE_WRITE_BASE64** to write rawdata in Base64) +@param encoding + */ +CVAPI(CvFileStorage*) cvOpenFileStorage( const char* filename, CvMemStorage* memstorage, + int flags, const char* encoding CV_DEFAULT(NULL) ); + +/** @brief Releases file storage. + +The function closes the file associated with the storage and releases all the temporary structures. +It must be called after all I/O operations with the storage are finished. +@param fs Double pointer to the released file storage + */ +CVAPI(void) cvReleaseFileStorage( CvFileStorage** fs ); + +/** returns attribute value or 0 (NULL) if there is no such attribute */ +CVAPI(const char*) cvAttrValue( const CvAttrList* attr, const char* attr_name ); + +/** @brief Starts writing a new structure. + +The function starts writing a compound structure (collection) that can be a sequence or a map. After +all the structure fields, which can be scalars or structures, are written, cvEndWriteStruct should +be called. The function can be used to group some objects or to implement the write function for a +some user object (see CvTypeInfo). +@param fs File storage +@param name Name of the written structure. The structure can be accessed by this name when the +storage is read. +@param struct_flags A combination one of the following values: +- **CV_NODE_SEQ** the written structure is a sequence (see discussion of CvFileStorage ), + that is, its elements do not have a name. +- **CV_NODE_MAP** the written structure is a map (see discussion of CvFileStorage ), that + is, all its elements have names. +One and only one of the two above flags must be specified +- **CV_NODE_FLOW** the optional flag that makes sense only for YAML streams. It means that + the structure is written as a flow (not as a block), which is more compact. It is + recommended to use this flag for structures or arrays whose elements are all scalars. +@param type_name Optional parameter - the object type name. In + case of XML it is written as a type_id attribute of the structure opening tag. In the case of + YAML it is written after a colon following the structure name (see the example in + CvFileStorage description). In case of JSON it is written as a name/value pair. + Mainly it is used with user objects. When the storage is read, the + encoded type name is used to determine the object type (see CvTypeInfo and cvFindType ). +@param attributes This parameter is not used in the current implementation + */ +CVAPI(void) cvStartWriteStruct( CvFileStorage* fs, const char* name, + int struct_flags, const char* type_name CV_DEFAULT(NULL), + CvAttrList attributes CV_DEFAULT(cvAttrList())); + +/** @brief Finishes writing to a file node collection. +@param fs File storage +@sa cvStartWriteStruct. + */ +CVAPI(void) cvEndWriteStruct( CvFileStorage* fs ); + +/** @brief Writes an integer value. + +The function writes a single integer value (with or without a name) to the file storage. +@param fs File storage +@param name Name of the written value. Should be NULL if and only if the parent structure is a +sequence. +@param value The written value + */ +CVAPI(void) cvWriteInt( CvFileStorage* fs, const char* name, int value ); + +/** @brief Writes a floating-point value. + +The function writes a single floating-point value (with or without a name) to file storage. Special +values are encoded as follows: NaN (Not A Number) as .NaN, infinity as +.Inf or -.Inf. + +The following example shows how to use the low-level writing functions to store custom structures, +such as termination criteria, without registering a new type. : +@code + void write_termcriteria( CvFileStorage* fs, const char* struct_name, + CvTermCriteria* termcrit ) + { + cvStartWriteStruct( fs, struct_name, CV_NODE_MAP, NULL, cvAttrList(0,0)); + cvWriteComment( fs, "termination criteria", 1 ); // just a description + if( termcrit->type & CV_TERMCRIT_ITER ) + cvWriteInteger( fs, "max_iterations", termcrit->max_iter ); + if( termcrit->type & CV_TERMCRIT_EPS ) + cvWriteReal( fs, "accuracy", termcrit->epsilon ); + cvEndWriteStruct( fs ); + } +@endcode +@param fs File storage +@param name Name of the written value. Should be NULL if and only if the parent structure is a +sequence. +@param value The written value +*/ +CVAPI(void) cvWriteReal( CvFileStorage* fs, const char* name, double value ); + +/** @brief Writes a text string. + +The function writes a text string to file storage. +@param fs File storage +@param name Name of the written string . Should be NULL if and only if the parent structure is a +sequence. +@param str The written text string +@param quote If non-zero, the written string is put in quotes, regardless of whether they are +required. Otherwise, if the flag is zero, quotes are used only when they are required (e.g. when +the string starts with a digit or contains spaces). + */ +CVAPI(void) cvWriteString( CvFileStorage* fs, const char* name, + const char* str, int quote CV_DEFAULT(0) ); + +/** @brief Writes a comment. + +The function writes a comment into file storage. The comments are skipped when the storage is read. +@param fs File storage +@param comment The written comment, single-line or multi-line +@param eol_comment If non-zero, the function tries to put the comment at the end of current line. +If the flag is zero, if the comment is multi-line, or if it does not fit at the end of the current +line, the comment starts a new line. + */ +CVAPI(void) cvWriteComment( CvFileStorage* fs, const char* comment, + int eol_comment ); + +/** @brief Writes an object to file storage. + +The function writes an object to file storage. First, the appropriate type info is found using +cvTypeOf. Then, the write method associated with the type info is called. + +Attributes are used to customize the writing procedure. The standard types support the following +attributes (all the dt attributes have the same format as in cvWriteRawData): + +-# CvSeq + - **header_dt** description of user fields of the sequence header that follow CvSeq, or + CvChain (if the sequence is a Freeman chain) or CvContour (if the sequence is a contour or + point sequence) + - **dt** description of the sequence elements. + - **recursive** if the attribute is present and is not equal to "0" or "false", the whole + tree of sequences (contours) is stored. +-# CvGraph + - **header_dt** description of user fields of the graph header that follows CvGraph; + - **vertex_dt** description of user fields of graph vertices + - **edge_dt** description of user fields of graph edges (note that the edge weight is + always written, so there is no need to specify it explicitly) + +Below is the code that creates the YAML file shown in the CvFileStorage description: +@code + #include "cxcore.h" + + int main( int argc, char** argv ) + { + CvMat* mat = cvCreateMat( 3, 3, CV_32F ); + CvFileStorage* fs = cvOpenFileStorage( "example.yml", 0, CV_STORAGE_WRITE ); + + cvSetIdentity( mat ); + cvWrite( fs, "A", mat, cvAttrList(0,0) ); + + cvReleaseFileStorage( &fs ); + cvReleaseMat( &mat ); + return 0; + } +@endcode +@param fs File storage +@param name Name of the written object. Should be NULL if and only if the parent structure is a +sequence. +@param ptr Pointer to the object +@param attributes The attributes of the object. They are specific for each particular type (see +the discussion below). + */ +CVAPI(void) cvWrite( CvFileStorage* fs, const char* name, const void* ptr, + CvAttrList attributes CV_DEFAULT(cvAttrList())); + +/** @brief Starts the next stream. + +The function finishes the currently written stream and starts the next stream. In the case of XML +the file with multiple streams looks like this: +@code{.xml} + + + + + + + ... +@endcode +The YAML file will look like this: +@code{.yaml} + %YAML 1.0 + # stream #1 data + ... + --- + # stream #2 data +@endcode +This is useful for concatenating files or for resuming the writing process. +@param fs File storage + */ +CVAPI(void) cvStartNextStream( CvFileStorage* fs ); + +/** @brief Writes multiple numbers. + +The function writes an array, whose elements consist of single or multiple numbers. The function +call can be replaced with a loop containing a few cvWriteInt and cvWriteReal calls, but a single +call is more efficient. Note that because none of the elements have a name, they should be written +to a sequence rather than a map. +@param fs File storage +@param src Pointer to the written array +@param len Number of the array elements to write +@param dt Specification of each array element, see @ref format_spec "format specification" + */ +CVAPI(void) cvWriteRawData( CvFileStorage* fs, const void* src, + int len, const char* dt ); + +/** @brief Writes multiple numbers in Base64. + +If either CV_STORAGE_WRITE_BASE64 or cv::FileStorage::WRITE_BASE64 is used, +this function will be the same as cvWriteRawData. If neither, the main +difference is that it outputs a sequence in Base64 encoding rather than +in plain text. + +This function can only be used to write a sequence with a type "binary". + +@param fs File storage +@param src Pointer to the written array +@param len Number of the array elements to write +@param dt Specification of each array element, see @ref format_spec "format specification" +*/ +CVAPI(void) cvWriteRawDataBase64( CvFileStorage* fs, const void* src, + int len, const char* dt ); + +/** @brief Returns a unique pointer for a given name. + +The function returns a unique pointer for each particular file node name. This pointer can be then +passed to the cvGetFileNode function that is faster than cvGetFileNodeByName because it compares +text strings by comparing pointers rather than the strings' content. + +Consider the following example where an array of points is encoded as a sequence of 2-entry maps: +@code + points: + - { x: 10, y: 10 } + - { x: 20, y: 20 } + - { x: 30, y: 30 } + # ... +@endcode +Then, it is possible to get hashed "x" and "y" pointers to speed up decoding of the points. : +@code + #include "cxcore.h" + + int main( int argc, char** argv ) + { + CvFileStorage* fs = cvOpenFileStorage( "points.yml", 0, CV_STORAGE_READ ); + CvStringHashNode* x_key = cvGetHashedNode( fs, "x", -1, 1 ); + CvStringHashNode* y_key = cvGetHashedNode( fs, "y", -1, 1 ); + CvFileNode* points = cvGetFileNodeByName( fs, 0, "points" ); + + if( CV_NODE_IS_SEQ(points->tag) ) + { + CvSeq* seq = points->data.seq; + int i, total = seq->total; + CvSeqReader reader; + cvStartReadSeq( seq, &reader, 0 ); + for( i = 0; i < total; i++ ) + { + CvFileNode* pt = (CvFileNode*)reader.ptr; + #if 1 // faster variant + CvFileNode* xnode = cvGetFileNode( fs, pt, x_key, 0 ); + CvFileNode* ynode = cvGetFileNode( fs, pt, y_key, 0 ); + assert( xnode && CV_NODE_IS_INT(xnode->tag) && + ynode && CV_NODE_IS_INT(ynode->tag)); + int x = xnode->data.i; // or x = cvReadInt( xnode, 0 ); + int y = ynode->data.i; // or y = cvReadInt( ynode, 0 ); + #elif 1 // slower variant; does not use x_key & y_key + CvFileNode* xnode = cvGetFileNodeByName( fs, pt, "x" ); + CvFileNode* ynode = cvGetFileNodeByName( fs, pt, "y" ); + assert( xnode && CV_NODE_IS_INT(xnode->tag) && + ynode && CV_NODE_IS_INT(ynode->tag)); + int x = xnode->data.i; // or x = cvReadInt( xnode, 0 ); + int y = ynode->data.i; // or y = cvReadInt( ynode, 0 ); + #else // the slowest yet the easiest to use variant + int x = cvReadIntByName( fs, pt, "x", 0 ); + int y = cvReadIntByName( fs, pt, "y", 0 ); + #endif + CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); + printf(" + } + } + cvReleaseFileStorage( &fs ); + return 0; + } +@endcode +Please note that whatever method of accessing a map you are using, it is still much slower than +using plain sequences; for example, in the above example, it is more efficient to encode the points +as pairs of integers in a single numeric sequence. +@param fs File storage +@param name Literal node name +@param len Length of the name (if it is known apriori), or -1 if it needs to be calculated +@param create_missing Flag that specifies, whether an absent key should be added into the hash table +*/ +CVAPI(CvStringHashNode*) cvGetHashedKey( CvFileStorage* fs, const char* name, + int len CV_DEFAULT(-1), + int create_missing CV_DEFAULT(0)); + +/** @brief Retrieves one of the top-level nodes of the file storage. + +The function returns one of the top-level file nodes. The top-level nodes do not have a name, they +correspond to the streams that are stored one after another in the file storage. If the index is out +of range, the function returns a NULL pointer, so all the top-level nodes can be iterated by +subsequent calls to the function with stream_index=0,1,..., until the NULL pointer is returned. +This function can be used as a base for recursive traversal of the file storage. +@param fs File storage +@param stream_index Zero-based index of the stream. See cvStartNextStream . In most cases, +there is only one stream in the file; however, there can be several. + */ +CVAPI(CvFileNode*) cvGetRootFileNode( const CvFileStorage* fs, + int stream_index CV_DEFAULT(0) ); + +/** @brief Finds a node in a map or file storage. + +The function finds a file node. It is a faster version of cvGetFileNodeByName (see +cvGetHashedKey discussion). Also, the function can insert a new node, if it is not in the map yet. +@param fs File storage +@param map The parent map. If it is NULL, the function searches a top-level node. If both map and +key are NULLs, the function returns the root file node - a map that contains top-level nodes. +@param key Unique pointer to the node name, retrieved with cvGetHashedKey +@param create_missing Flag that specifies whether an absent node should be added to the map + */ +CVAPI(CvFileNode*) cvGetFileNode( CvFileStorage* fs, CvFileNode* map, + const CvStringHashNode* key, + int create_missing CV_DEFAULT(0) ); + +/** @brief Finds a node in a map or file storage. + +The function finds a file node by name. The node is searched either in map or, if the pointer is +NULL, among the top-level file storage nodes. Using this function for maps and cvGetSeqElem (or +sequence reader) for sequences, it is possible to navigate through the file storage. To speed up +multiple queries for a certain key (e.g., in the case of an array of structures) one may use a +combination of cvGetHashedKey and cvGetFileNode. +@param fs File storage +@param map The parent map. If it is NULL, the function searches in all the top-level nodes +(streams), starting with the first one. +@param name The file node name + */ +CVAPI(CvFileNode*) cvGetFileNodeByName( const CvFileStorage* fs, + const CvFileNode* map, + const char* name ); + +/** @brief Retrieves an integer value from a file node. + +The function returns an integer that is represented by the file node. If the file node is NULL, the +default_value is returned (thus, it is convenient to call the function right after cvGetFileNode +without checking for a NULL pointer). If the file node has type CV_NODE_INT, then node-\>data.i is +returned. If the file node has type CV_NODE_REAL, then node-\>data.f is converted to an integer +and returned. Otherwise the error is reported. +@param node File node +@param default_value The value that is returned if node is NULL + */ +CV_INLINE int cvReadInt( const CvFileNode* node, int default_value CV_DEFAULT(0) ) +{ + return !node ? default_value : + CV_NODE_IS_INT(node->tag) ? node->data.i : + CV_NODE_IS_REAL(node->tag) ? cvRound(node->data.f) : 0x7fffffff; +} + +/** @brief Finds a file node and returns its value. + +The function is a simple superposition of cvGetFileNodeByName and cvReadInt. +@param fs File storage +@param map The parent map. If it is NULL, the function searches a top-level node. +@param name The node name +@param default_value The value that is returned if the file node is not found + */ +CV_INLINE int cvReadIntByName( const CvFileStorage* fs, const CvFileNode* map, + const char* name, int default_value CV_DEFAULT(0) ) +{ + return cvReadInt( cvGetFileNodeByName( fs, map, name ), default_value ); +} + +/** @brief Retrieves a floating-point value from a file node. + +The function returns a floating-point value that is represented by the file node. If the file node +is NULL, the default_value is returned (thus, it is convenient to call the function right after +cvGetFileNode without checking for a NULL pointer). If the file node has type CV_NODE_REAL , +then node-\>data.f is returned. If the file node has type CV_NODE_INT , then node-:math:\>data.f +is converted to floating-point and returned. Otherwise the result is not determined. +@param node File node +@param default_value The value that is returned if node is NULL + */ +CV_INLINE double cvReadReal( const CvFileNode* node, double default_value CV_DEFAULT(0.) ) +{ + return !node ? default_value : + CV_NODE_IS_INT(node->tag) ? (double)node->data.i : + CV_NODE_IS_REAL(node->tag) ? node->data.f : 1e300; +} + +/** @brief Finds a file node and returns its value. + +The function is a simple superposition of cvGetFileNodeByName and cvReadReal . +@param fs File storage +@param map The parent map. If it is NULL, the function searches a top-level node. +@param name The node name +@param default_value The value that is returned if the file node is not found + */ +CV_INLINE double cvReadRealByName( const CvFileStorage* fs, const CvFileNode* map, + const char* name, double default_value CV_DEFAULT(0.) ) +{ + return cvReadReal( cvGetFileNodeByName( fs, map, name ), default_value ); +} + +/** @brief Retrieves a text string from a file node. + +The function returns a text string that is represented by the file node. If the file node is NULL, +the default_value is returned (thus, it is convenient to call the function right after +cvGetFileNode without checking for a NULL pointer). If the file node has type CV_NODE_STR , then +node-:math:\>data.str.ptr is returned. Otherwise the result is not determined. +@param node File node +@param default_value The value that is returned if node is NULL + */ +CV_INLINE const char* cvReadString( const CvFileNode* node, + const char* default_value CV_DEFAULT(NULL) ) +{ + return !node ? default_value : CV_NODE_IS_STRING(node->tag) ? node->data.str.ptr : 0; +} + +/** @brief Finds a file node by its name and returns its value. + +The function is a simple superposition of cvGetFileNodeByName and cvReadString . +@param fs File storage +@param map The parent map. If it is NULL, the function searches a top-level node. +@param name The node name +@param default_value The value that is returned if the file node is not found + */ +CV_INLINE const char* cvReadStringByName( const CvFileStorage* fs, const CvFileNode* map, + const char* name, const char* default_value CV_DEFAULT(NULL) ) +{ + return cvReadString( cvGetFileNodeByName( fs, map, name ), default_value ); +} + + +/** @brief Decodes an object and returns a pointer to it. + +The function decodes a user object (creates an object in a native representation from the file +storage subtree) and returns it. The object to be decoded must be an instance of a registered type +that supports the read method (see CvTypeInfo). The type of the object is determined by the type +name that is encoded in the file. If the object is a dynamic structure, it is created either in +memory storage and passed to cvOpenFileStorage or, if a NULL pointer was passed, in temporary +memory storage, which is released when cvReleaseFileStorage is called. Otherwise, if the object is +not a dynamic structure, it is created in a heap and should be released with a specialized function +or by using the generic cvRelease. +@param fs File storage +@param node The root object node +@param attributes Unused parameter + */ +CVAPI(void*) cvRead( CvFileStorage* fs, CvFileNode* node, + CvAttrList* attributes CV_DEFAULT(NULL)); + +/** @brief Finds an object by name and decodes it. + +The function is a simple superposition of cvGetFileNodeByName and cvRead. +@param fs File storage +@param map The parent map. If it is NULL, the function searches a top-level node. +@param name The node name +@param attributes Unused parameter + */ +CV_INLINE void* cvReadByName( CvFileStorage* fs, const CvFileNode* map, + const char* name, CvAttrList* attributes CV_DEFAULT(NULL) ) +{ + return cvRead( fs, cvGetFileNodeByName( fs, map, name ), attributes ); +} + + +/** @brief Initializes the file node sequence reader. + +The function initializes the sequence reader to read data from a file node. The initialized reader +can be then passed to cvReadRawDataSlice. +@param fs File storage +@param src The file node (a sequence) to read numbers from +@param reader Pointer to the sequence reader + */ +CVAPI(void) cvStartReadRawData( const CvFileStorage* fs, const CvFileNode* src, + CvSeqReader* reader ); + +/** @brief Initializes file node sequence reader. + +The function reads one or more elements from the file node, representing a sequence, to a +user-specified array. The total number of read sequence elements is a product of total and the +number of components in each array element. For example, if dt=2if, the function will read total\*3 +sequence elements. As with any sequence, some parts of the file node sequence can be skipped or read +repeatedly by repositioning the reader using cvSetSeqReaderPos. +@param fs File storage +@param reader The sequence reader. Initialize it with cvStartReadRawData . +@param count The number of elements to read +@param dst Pointer to the destination array +@param dt Specification of each array element. It has the same format as in cvWriteRawData . + */ +CVAPI(void) cvReadRawDataSlice( const CvFileStorage* fs, CvSeqReader* reader, + int count, void* dst, const char* dt ); + +/** @brief Reads multiple numbers. + +The function reads elements from a file node that represents a sequence of scalars. +@param fs File storage +@param src The file node (a sequence) to read numbers from +@param dst Pointer to the destination array +@param dt Specification of each array element. It has the same format as in cvWriteRawData . + */ +CVAPI(void) cvReadRawData( const CvFileStorage* fs, const CvFileNode* src, + void* dst, const char* dt ); + +/** @brief Writes a file node to another file storage. + +The function writes a copy of a file node to file storage. Possible applications of the function are +merging several file storages into one and conversion between XML, YAML and JSON formats. +@param fs Destination file storage +@param new_node_name New name of the file node in the destination file storage. To keep the +existing name, use cvcvGetFileNodeName +@param node The written node +@param embed If the written node is a collection and this parameter is not zero, no extra level of +hierarchy is created. Instead, all the elements of node are written into the currently written +structure. Of course, map elements can only be embedded into another map, and sequence elements +can only be embedded into another sequence. + */ +CVAPI(void) cvWriteFileNode( CvFileStorage* fs, const char* new_node_name, + const CvFileNode* node, int embed ); + +/** @brief Returns the name of a file node. + +The function returns the name of a file node or NULL, if the file node does not have a name or if +node is NULL. +@param node File node + */ +CVAPI(const char*) cvGetFileNodeName( const CvFileNode* node ); + +/*********************************** Adding own types ***********************************/ + +/** @brief Registers a new type. + +The function registers a new type, which is described by info . The function creates a copy of the +structure, so the user should delete it after calling the function. +@param info Type info structure + */ +CVAPI(void) cvRegisterType( const CvTypeInfo* info ); + +/** @brief Unregisters the type. + +The function unregisters a type with a specified name. If the name is unknown, it is possible to +locate the type info by an instance of the type using cvTypeOf or by iterating the type list, +starting from cvFirstType, and then calling cvUnregisterType(info-\>typeName). +@param type_name Name of an unregistered type + */ +CVAPI(void) cvUnregisterType( const char* type_name ); + +/** @brief Returns the beginning of a type list. + +The function returns the first type in the list of registered types. Navigation through the list can +be done via the prev and next fields of the CvTypeInfo structure. + */ +CVAPI(CvTypeInfo*) cvFirstType(void); + +/** @brief Finds a type by its name. + +The function finds a registered type by its name. It returns NULL if there is no type with the +specified name. +@param type_name Type name + */ +CVAPI(CvTypeInfo*) cvFindType( const char* type_name ); + +/** @brief Returns the type of an object. + +The function finds the type of a given object. It iterates through the list of registered types and +calls the is_instance function/method for every type info structure with that object until one of +them returns non-zero or until the whole list has been traversed. In the latter case, the function +returns NULL. +@param struct_ptr The object pointer + */ +CVAPI(CvTypeInfo*) cvTypeOf( const void* struct_ptr ); + +#endif + +/** @brief Releases an object. + + The function finds the type of a given object and calls release with the double pointer. + @param struct_ptr Double pointer to the object + */ +CVAPI(void) cvRelease( void** struct_ptr ); + +/** @brief Makes a clone of an object. + +The function finds the type of a given object and calls clone with the passed object. Of course, if +you know the object type, for example, struct_ptr is CvMat\*, it is faster to call the specific +function, like cvCloneMat. +@param struct_ptr The object to clone + */ +CVAPI(void*) cvClone( const void* struct_ptr ); + +/*********************************** Measuring Execution Time ***************************/ + +/** helper functions for RNG initialization and accurate time measurement: + uses internal clock counter on x86 */ +CVAPI(int64) cvGetTickCount( void ); +CVAPI(double) cvGetTickFrequency( void ); + +/*********************************** CPU capabilities ***********************************/ + +CVAPI(int) cvCheckHardwareSupport(int feature); + +/*********************************** Multi-Threading ************************************/ + +/** retrieve/set the number of threads used in OpenMP implementations */ +CVAPI(int) cvGetNumThreads( void ); +CVAPI(void) cvSetNumThreads( int threads CV_DEFAULT(0) ); +/** get index of the thread being executed */ +CVAPI(int) cvGetThreadNum( void ); + + +/********************************** Error Handling **************************************/ + +/** Get current OpenCV error status */ +CVAPI(int) cvGetErrStatus( void ); + +/** Sets error status silently */ +CVAPI(void) cvSetErrStatus( int status ); + +#define CV_ErrModeLeaf 0 /* Print error and exit program */ +#define CV_ErrModeParent 1 /* Print error and continue */ +#define CV_ErrModeSilent 2 /* Don't print and continue */ + +/** Retrieves current error processing mode */ +CVAPI(int) cvGetErrMode( void ); + +/** Sets error processing mode, returns previously used mode */ +CVAPI(int) cvSetErrMode( int mode ); + +/** Sets error status and performs some additional actions (displaying message box, + writing message to stderr, terminating application etc.) + depending on the current error mode */ +CVAPI(void) cvError( int status, const char* func_name, + const char* err_msg, const char* file_name, int line ); + +/** Retrieves textual description of the error given its code */ +CVAPI(const char*) cvErrorStr( int status ); + +/** Retrieves detailed information about the last error occurred */ +CVAPI(int) cvGetErrInfo( const char** errcode_desc, const char** description, + const char** filename, int* line ); + +/** Maps IPP error codes to the counterparts from OpenCV */ +CVAPI(int) cvErrorFromIppStatus( int ipp_status ); + +typedef int (CV_CDECL *CvErrorCallback)( int status, const char* func_name, + const char* err_msg, const char* file_name, int line, void* userdata ); + +/** Assigns a new error-handling function */ +CVAPI(CvErrorCallback) cvRedirectError( CvErrorCallback error_handler, + void* userdata CV_DEFAULT(NULL), + void** prev_userdata CV_DEFAULT(NULL) ); + +/** Output nothing */ +CVAPI(int) cvNulDevReport( int status, const char* func_name, const char* err_msg, + const char* file_name, int line, void* userdata ); + +/** Output to console(fprintf(stderr,...)) */ +CVAPI(int) cvStdErrReport( int status, const char* func_name, const char* err_msg, + const char* file_name, int line, void* userdata ); + +/** Output to MessageBox(WIN32) */ +CVAPI(int) cvGuiBoxReport( int status, const char* func_name, const char* err_msg, + const char* file_name, int line, void* userdata ); + +#define OPENCV_ERROR(status,func,context) \ +cvError((status),(func),(context),__FILE__,__LINE__) + +#define OPENCV_ASSERT(expr,func,context) \ +{if (! (expr)) \ +{OPENCV_ERROR(CV_StsInternal,(func),(context));}} + +#define OPENCV_CALL( Func ) \ +{ \ +Func; \ +} + + +/** CV_FUNCNAME macro defines icvFuncName constant which is used by CV_ERROR macro */ +#ifdef CV_NO_FUNC_NAMES +#define CV_FUNCNAME( Name ) +#define cvFuncName "" +#else +#define CV_FUNCNAME( Name ) \ +static char cvFuncName[] = Name +#endif + + +/** + CV_ERROR macro unconditionally raises error with passed code and message. + After raising error, control will be transferred to the exit label. + */ +#define CV_ERROR( Code, Msg ) \ +{ \ + cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \ + __CV_EXIT__; \ +} + +/** + CV_CHECK macro checks error status after CV (or IPL) + function call. If error detected, control will be transferred to the exit + label. + */ +#define CV_CHECK() \ +{ \ + if( cvGetErrStatus() < 0 ) \ + CV_ERROR( CV_StsBackTrace, "Inner function failed." ); \ +} + + +/** + CV_CALL macro calls CV (or IPL) function, checks error status and + signals a error if the function failed. Useful in "parent node" + error processing mode + */ +#define CV_CALL( Func ) \ +{ \ + Func; \ + CV_CHECK(); \ +} + + +/** Runtime assertion macro */ +#define CV_ASSERT( Condition ) \ +{ \ + if( !(Condition) ) \ + CV_ERROR( CV_StsInternal, "Assertion: " #Condition " failed" ); \ +} + +#define __CV_BEGIN__ { +#define __CV_END__ goto exit; exit: ; } +#define __CV_EXIT__ goto exit + +/** @} core_c */ + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus + +#include "opencv2/core/utility.hpp" + +namespace cv +{ + +//! @addtogroup core_c_glue +//! @{ + +/////////////////////////////////////////// glue /////////////////////////////////////////// + +//! converts array (CvMat or IplImage) to cv::Mat +CV_EXPORTS Mat cvarrToMat(const CvArr* arr, bool copyData=false, + bool allowND=true, int coiMode=0, + AutoBuffer* buf=0); + +static inline Mat cvarrToMatND(const CvArr* arr, bool copyData=false, int coiMode=0) +{ + return cvarrToMat(arr, copyData, true, coiMode); +} + + +//! extracts Channel of Interest from CvMat or IplImage and makes cv::Mat out of it. +CV_EXPORTS void extractImageCOI(const CvArr* arr, OutputArray coiimg, int coi=-1); +//! inserts single-channel cv::Mat into a multi-channel CvMat or IplImage +CV_EXPORTS void insertImageCOI(InputArray coiimg, CvArr* arr, int coi=-1); + + + +////// specialized implementations of DefaultDeleter::operator() for classic OpenCV types ////// + +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvMat* obj) const; }; +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(IplImage* obj) const; }; +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvMatND* obj) const; }; +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvSparseMat* obj) const; }; +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvMemStorage* obj) const; }; + +////////////// convenient wrappers for operating old-style dynamic structures ////////////// + +template class SeqIterator; + +typedef Ptr MemStorage; + +/*! + Template Sequence Class derived from CvSeq + + The class provides more convenient access to sequence elements, + STL-style operations and iterators. + + \note The class is targeted for simple data types, + i.e. no constructors or destructors + are called for the sequence elements. +*/ +template class Seq +{ +public: + typedef SeqIterator<_Tp> iterator; + typedef SeqIterator<_Tp> const_iterator; + + //! the default constructor + Seq(); + //! the constructor for wrapping CvSeq structure. The real element type in CvSeq should match _Tp. + Seq(const CvSeq* seq); + //! creates the empty sequence that resides in the specified storage + Seq(MemStorage& storage, int headerSize = sizeof(CvSeq)); + //! returns read-write reference to the specified element + _Tp& operator [](int idx); + //! returns read-only reference to the specified element + const _Tp& operator[](int idx) const; + //! returns iterator pointing to the beginning of the sequence + SeqIterator<_Tp> begin() const; + //! returns iterator pointing to the element following the last sequence element + SeqIterator<_Tp> end() const; + //! returns the number of elements in the sequence + size_t size() const; + //! returns the type of sequence elements (CV_8UC1 ... CV_64FC(CV_CN_MAX) ...) + int type() const; + //! returns the depth of sequence elements (CV_8U ... CV_64F) + int depth() const; + //! returns the number of channels in each sequence element + int channels() const; + //! returns the size of each sequence element + size_t elemSize() const; + //! returns index of the specified sequence element + size_t index(const _Tp& elem) const; + //! appends the specified element to the end of the sequence + void push_back(const _Tp& elem); + //! appends the specified element to the front of the sequence + void push_front(const _Tp& elem); + //! appends zero or more elements to the end of the sequence + void push_back(const _Tp* elems, size_t count); + //! appends zero or more elements to the front of the sequence + void push_front(const _Tp* elems, size_t count); + //! inserts the specified element to the specified position + void insert(int idx, const _Tp& elem); + //! inserts zero or more elements to the specified position + void insert(int idx, const _Tp* elems, size_t count); + //! removes element at the specified position + void remove(int idx); + //! removes the specified subsequence + void remove(const Range& r); + + //! returns reference to the first sequence element + _Tp& front(); + //! returns read-only reference to the first sequence element + const _Tp& front() const; + //! returns reference to the last sequence element + _Tp& back(); + //! returns read-only reference to the last sequence element + const _Tp& back() const; + //! returns true iff the sequence contains no elements + bool empty() const; + + //! removes all the elements from the sequence + void clear(); + //! removes the first element from the sequence + void pop_front(); + //! removes the last element from the sequence + void pop_back(); + //! removes zero or more elements from the beginning of the sequence + void pop_front(_Tp* elems, size_t count); + //! removes zero or more elements from the end of the sequence + void pop_back(_Tp* elems, size_t count); + + //! copies the whole sequence or the sequence slice to the specified vector + void copyTo(std::vector<_Tp>& vec, const Range& range=Range::all()) const; + //! returns the vector containing all the sequence elements + operator std::vector<_Tp>() const; + + CvSeq* seq; +}; + + +/*! + STL-style Sequence Iterator inherited from the CvSeqReader structure +*/ +template class SeqIterator : public CvSeqReader +{ +public: + //! the default constructor + SeqIterator(); + //! the constructor setting the iterator to the beginning or to the end of the sequence + SeqIterator(const Seq<_Tp>& seq, bool seekEnd=false); + //! positions the iterator within the sequence + void seek(size_t pos); + //! reports the current iterator position + size_t tell() const; + //! returns reference to the current sequence element + _Tp& operator *(); + //! returns read-only reference to the current sequence element + const _Tp& operator *() const; + //! moves iterator to the next sequence element + SeqIterator& operator ++(); + //! moves iterator to the next sequence element + SeqIterator operator ++(int) const; + //! moves iterator to the previous sequence element + SeqIterator& operator --(); + //! moves iterator to the previous sequence element + SeqIterator operator --(int) const; + + //! moves iterator forward by the specified offset (possibly negative) + SeqIterator& operator +=(int); + //! moves iterator backward by the specified offset (possibly negative) + SeqIterator& operator -=(int); + + // this is index of the current element module seq->total*2 + // (to distinguish between 0 and seq->total) + int index; +}; + + + +// bridge C++ => C Seq API +CV_EXPORTS schar* seqPush( CvSeq* seq, const void* element=0); +CV_EXPORTS schar* seqPushFront( CvSeq* seq, const void* element=0); +CV_EXPORTS void seqPop( CvSeq* seq, void* element=0); +CV_EXPORTS void seqPopFront( CvSeq* seq, void* element=0); +CV_EXPORTS void seqPopMulti( CvSeq* seq, void* elements, + int count, int in_front=0 ); +CV_EXPORTS void seqRemove( CvSeq* seq, int index ); +CV_EXPORTS void clearSeq( CvSeq* seq ); +CV_EXPORTS schar* getSeqElem( const CvSeq* seq, int index ); +CV_EXPORTS void seqRemoveSlice( CvSeq* seq, CvSlice slice ); +CV_EXPORTS void seqInsertSlice( CvSeq* seq, int before_index, const CvArr* from_arr ); + +template inline Seq<_Tp>::Seq() : seq(0) {} +template inline Seq<_Tp>::Seq( const CvSeq* _seq ) : seq((CvSeq*)_seq) +{ + CV_Assert(!_seq || _seq->elem_size == sizeof(_Tp)); +} + +template inline Seq<_Tp>::Seq( MemStorage& storage, + int headerSize ) +{ + CV_Assert(headerSize >= (int)sizeof(CvSeq)); + seq = cvCreateSeq(DataType<_Tp>::type, headerSize, sizeof(_Tp), storage); +} + +template inline _Tp& Seq<_Tp>::operator [](int idx) +{ return *(_Tp*)getSeqElem(seq, idx); } + +template inline const _Tp& Seq<_Tp>::operator [](int idx) const +{ return *(_Tp*)getSeqElem(seq, idx); } + +template inline SeqIterator<_Tp> Seq<_Tp>::begin() const +{ return SeqIterator<_Tp>(*this); } + +template inline SeqIterator<_Tp> Seq<_Tp>::end() const +{ return SeqIterator<_Tp>(*this, true); } + +template inline size_t Seq<_Tp>::size() const +{ return seq ? seq->total : 0; } + +template inline int Seq<_Tp>::type() const +{ return seq ? CV_MAT_TYPE(seq->flags) : 0; } + +template inline int Seq<_Tp>::depth() const +{ return seq ? CV_MAT_DEPTH(seq->flags) : 0; } + +template inline int Seq<_Tp>::channels() const +{ return seq ? CV_MAT_CN(seq->flags) : 0; } + +template inline size_t Seq<_Tp>::elemSize() const +{ return seq ? seq->elem_size : 0; } + +template inline size_t Seq<_Tp>::index(const _Tp& elem) const +{ return cvSeqElemIdx(seq, &elem); } + +template inline void Seq<_Tp>::push_back(const _Tp& elem) +{ cvSeqPush(seq, &elem); } + +template inline void Seq<_Tp>::push_front(const _Tp& elem) +{ cvSeqPushFront(seq, &elem); } + +template inline void Seq<_Tp>::push_back(const _Tp* elem, size_t count) +{ cvSeqPushMulti(seq, elem, (int)count, 0); } + +template inline void Seq<_Tp>::push_front(const _Tp* elem, size_t count) +{ cvSeqPushMulti(seq, elem, (int)count, 1); } + +template inline _Tp& Seq<_Tp>::back() +{ return *(_Tp*)getSeqElem(seq, -1); } + +template inline const _Tp& Seq<_Tp>::back() const +{ return *(const _Tp*)getSeqElem(seq, -1); } + +template inline _Tp& Seq<_Tp>::front() +{ return *(_Tp*)getSeqElem(seq, 0); } + +template inline const _Tp& Seq<_Tp>::front() const +{ return *(const _Tp*)getSeqElem(seq, 0); } + +template inline bool Seq<_Tp>::empty() const +{ return !seq || seq->total == 0; } + +template inline void Seq<_Tp>::clear() +{ if(seq) clearSeq(seq); } + +template inline void Seq<_Tp>::pop_back() +{ seqPop(seq); } + +template inline void Seq<_Tp>::pop_front() +{ seqPopFront(seq); } + +template inline void Seq<_Tp>::pop_back(_Tp* elem, size_t count) +{ seqPopMulti(seq, elem, (int)count, 0); } + +template inline void Seq<_Tp>::pop_front(_Tp* elem, size_t count) +{ seqPopMulti(seq, elem, (int)count, 1); } + +template inline void Seq<_Tp>::insert(int idx, const _Tp& elem) +{ seqInsert(seq, idx, &elem); } + +template inline void Seq<_Tp>::insert(int idx, const _Tp* elems, size_t count) +{ + CvMat m = cvMat(1, count, DataType<_Tp>::type, elems); + seqInsertSlice(seq, idx, &m); +} + +template inline void Seq<_Tp>::remove(int idx) +{ seqRemove(seq, idx); } + +template inline void Seq<_Tp>::remove(const Range& r) +{ seqRemoveSlice(seq, cvSlice(r.start, r.end)); } + +template inline void Seq<_Tp>::copyTo(std::vector<_Tp>& vec, const Range& range) const +{ + size_t len = !seq ? 0 : range == Range::all() ? seq->total : range.end - range.start; + vec.resize(len); + if( seq && len ) + cvCvtSeqToArray(seq, &vec[0], cvSlice(range)); +} + +template inline Seq<_Tp>::operator std::vector<_Tp>() const +{ + std::vector<_Tp> vec; + copyTo(vec); + return vec; +} + +template inline SeqIterator<_Tp>::SeqIterator() +{ memset(this, 0, sizeof(*this)); } + +template inline SeqIterator<_Tp>::SeqIterator(const Seq<_Tp>& _seq, bool seekEnd) +{ + cvStartReadSeq(_seq.seq, this); + index = seekEnd ? _seq.seq->total : 0; +} + +template inline void SeqIterator<_Tp>::seek(size_t pos) +{ + cvSetSeqReaderPos(this, (int)pos, false); + index = pos; +} + +template inline size_t SeqIterator<_Tp>::tell() const +{ return index; } + +template inline _Tp& SeqIterator<_Tp>::operator *() +{ return *(_Tp*)ptr; } + +template inline const _Tp& SeqIterator<_Tp>::operator *() const +{ return *(const _Tp*)ptr; } + +template inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator ++() +{ + CV_NEXT_SEQ_ELEM(sizeof(_Tp), *this); + if( ++index >= seq->total*2 ) + index = 0; + return *this; +} + +template inline SeqIterator<_Tp> SeqIterator<_Tp>::operator ++(int) const +{ + SeqIterator<_Tp> it = *this; + ++*this; + return it; +} + +template inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator --() +{ + CV_PREV_SEQ_ELEM(sizeof(_Tp), *this); + if( --index < 0 ) + index = seq->total*2-1; + return *this; +} + +template inline SeqIterator<_Tp> SeqIterator<_Tp>::operator --(int) const +{ + SeqIterator<_Tp> it = *this; + --*this; + return it; +} + +template inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator +=(int delta) +{ + cvSetSeqReaderPos(this, delta, 1); + index += delta; + int n = seq->total*2; + if( index < 0 ) + index += n; + if( index >= n ) + index -= n; + return *this; +} + +template inline SeqIterator<_Tp>& SeqIterator<_Tp>::operator -=(int delta) +{ + return (*this += -delta); +} + +template inline ptrdiff_t operator - (const SeqIterator<_Tp>& a, + const SeqIterator<_Tp>& b) +{ + ptrdiff_t delta = a.index - b.index, n = a.seq->total; + if( delta > n || delta < -n ) + delta += delta < 0 ? n : -n; + return delta; +} + +template inline bool operator == (const SeqIterator<_Tp>& a, + const SeqIterator<_Tp>& b) +{ + return a.seq == b.seq && a.index == b.index; +} + +template inline bool operator != (const SeqIterator<_Tp>& a, + const SeqIterator<_Tp>& b) +{ + return !(a == b); +} + +//! @} + +} // cv + +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda.hpp new file mode 100644 index 0000000..b49e75d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda.hpp @@ -0,0 +1,1049 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CUDA_HPP +#define OPENCV_CORE_CUDA_HPP + +#ifndef __cplusplus +# error cuda.hpp header must be compiled as C++ +#endif + +#include "opencv2/core.hpp" +#include "opencv2/core/cuda_types.hpp" + +/** + @defgroup cuda CUDA-accelerated Computer Vision + @{ + @defgroup cudacore Core part + @{ + @defgroup cudacore_init Initialization and Information + @defgroup cudacore_struct Data Structures + @} + @} + */ + +namespace cv { namespace cuda { + +//! @addtogroup cudacore_struct +//! @{ + +//=================================================================================== +// GpuMat +//=================================================================================== + +/** @brief Base storage class for GPU memory with reference counting. + +Its interface matches the Mat interface with the following limitations: + +- no arbitrary dimensions support (only 2D) +- no functions that return references to their data (because references on GPU are not valid for + CPU) +- no expression templates technique support + +Beware that the latter limitation may lead to overloaded matrix operators that cause memory +allocations. The GpuMat class is convertible to cuda::PtrStepSz and cuda::PtrStep so it can be +passed directly to the kernel. + +@note In contrast with Mat, in most cases GpuMat::isContinuous() == false . This means that rows are +aligned to a size depending on the hardware. Single-row GpuMat is always a continuous matrix. + +@note You are not recommended to leave static or global GpuMat variables allocated, that is, to rely +on its destructor. The destruction order of such variables and CUDA context is undefined. GPU memory +release function returns error if the CUDA context has been destroyed before. + +Some member functions are described as a "Blocking Call" while some are described as a +"Non-Blocking Call". Blocking functions are synchronous to host. It is guaranteed that the GPU +operation is finished when the function returns. However, non-blocking functions are asynchronous to +host. Those functions may return even if the GPU operation is not finished. + +Compared to their blocking counterpart, non-blocking functions accept Stream as an additional +argument. If a non-default stream is passed, the GPU operation may overlap with operations in other +streams. + +@sa Mat + */ +class CV_EXPORTS_W GpuMat +{ +public: + class CV_EXPORTS_W Allocator + { + public: + virtual ~Allocator() {} + + // allocator must fill data, step and refcount fields + virtual bool allocate(GpuMat* mat, int rows, int cols, size_t elemSize) = 0; + virtual void free(GpuMat* mat) = 0; + }; + + //! default allocator + CV_WRAP static GpuMat::Allocator* defaultAllocator(); + CV_WRAP static void setDefaultAllocator(GpuMat::Allocator* allocator); + + //! default constructor + CV_WRAP explicit GpuMat(GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + + //! constructs GpuMat of the specified size and type + CV_WRAP GpuMat(int rows, int cols, int type, GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + CV_WRAP GpuMat(Size size, int type, GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + + //! constucts GpuMat and fills it with the specified value _s + CV_WRAP GpuMat(int rows, int cols, int type, Scalar s, GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + CV_WRAP GpuMat(Size size, int type, Scalar s, GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + + //! copy constructor + CV_WRAP GpuMat(const GpuMat& m); + + //! constructor for GpuMat headers pointing to user-allocated data + GpuMat(int rows, int cols, int type, void* data, size_t step = Mat::AUTO_STEP); + GpuMat(Size size, int type, void* data, size_t step = Mat::AUTO_STEP); + + //! creates a GpuMat header for a part of the bigger matrix + CV_WRAP GpuMat(const GpuMat& m, Range rowRange, Range colRange); + CV_WRAP GpuMat(const GpuMat& m, Rect roi); + + //! builds GpuMat from host memory (Blocking call) + CV_WRAP explicit GpuMat(InputArray arr, GpuMat::Allocator* allocator = GpuMat::defaultAllocator()); + + //! destructor - calls release() + ~GpuMat(); + + //! assignment operators + GpuMat& operator =(const GpuMat& m); + + //! allocates new GpuMat data unless the GpuMat already has specified size and type + CV_WRAP void create(int rows, int cols, int type); + CV_WRAP void create(Size size, int type); + + //! decreases reference counter, deallocate the data when reference counter reaches 0 + void release(); + + //! swaps with other smart pointer + CV_WRAP void swap(GpuMat& mat); + + /** @brief Performs data upload to GpuMat (Blocking call) + + This function copies data from host memory to device memory. As being a blocking call, it is + guaranteed that the copy operation is finished when this function returns. + */ + CV_WRAP void upload(InputArray arr); + + /** @brief Performs data upload to GpuMat (Non-Blocking call) + + This function copies data from host memory to device memory. As being a non-blocking call, this + function may return even if the copy operation is not finished. + + The copy operation may be overlapped with operations in other non-default streams if \p stream is + not the default stream and \p dst is HostMem allocated with HostMem::PAGE_LOCKED option. + */ + CV_WRAP void upload(InputArray arr, Stream& stream); + + /** @brief Performs data download from GpuMat (Blocking call) + + This function copies data from device memory to host memory. As being a blocking call, it is + guaranteed that the copy operation is finished when this function returns. + */ + CV_WRAP void download(OutputArray dst) const; + + /** @brief Performs data download from GpuMat (Non-Blocking call) + + This function copies data from device memory to host memory. As being a non-blocking call, this + function may return even if the copy operation is not finished. + + The copy operation may be overlapped with operations in other non-default streams if \p stream is + not the default stream and \p dst is HostMem allocated with HostMem::PAGE_LOCKED option. + */ + CV_WRAP void download(OutputArray dst, Stream& stream) const; + + //! returns deep copy of the GpuMat, i.e. the data is copied + CV_WRAP GpuMat clone() const; + + //! copies the GpuMat content to device memory (Blocking call) + CV_WRAP void copyTo(OutputArray dst) const; + + //! copies the GpuMat content to device memory (Non-Blocking call) + CV_WRAP void copyTo(OutputArray dst, Stream& stream) const; + + //! copies those GpuMat elements to "m" that are marked with non-zero mask elements (Blocking call) + CV_WRAP void copyTo(OutputArray dst, InputArray mask) const; + + //! copies those GpuMat elements to "m" that are marked with non-zero mask elements (Non-Blocking call) + CV_WRAP void copyTo(OutputArray dst, InputArray mask, Stream& stream) const; + + //! sets some of the GpuMat elements to s (Blocking call) + CV_WRAP GpuMat& setTo(Scalar s); + + //! sets some of the GpuMat elements to s (Non-Blocking call) + CV_WRAP GpuMat& setTo(Scalar s, Stream& stream); + + //! sets some of the GpuMat elements to s, according to the mask (Blocking call) + CV_WRAP GpuMat& setTo(Scalar s, InputArray mask); + + //! sets some of the GpuMat elements to s, according to the mask (Non-Blocking call) + CV_WRAP GpuMat& setTo(Scalar s, InputArray mask, Stream& stream); + + //! converts GpuMat to another datatype (Blocking call) + CV_WRAP void convertTo(OutputArray dst, int rtype) const; + + //! converts GpuMat to another datatype (Non-Blocking call) + CV_WRAP void convertTo(OutputArray dst, int rtype, Stream& stream) const; + + //! converts GpuMat to another datatype with scaling (Blocking call) + CV_WRAP void convertTo(OutputArray dst, int rtype, double alpha, double beta = 0.0) const; + + //! converts GpuMat to another datatype with scaling (Non-Blocking call) + CV_WRAP void convertTo(OutputArray dst, int rtype, double alpha, Stream& stream) const; + + //! converts GpuMat to another datatype with scaling (Non-Blocking call) + CV_WRAP void convertTo(OutputArray dst, int rtype, double alpha, double beta, Stream& stream) const; + + CV_WRAP void assignTo(GpuMat& m, int type = -1) const; + + //! returns pointer to y-th row + uchar* ptr(int y = 0); + const uchar* ptr(int y = 0) const; + + //! template version of the above method + template _Tp* ptr(int y = 0); + template const _Tp* ptr(int y = 0) const; + + template operator PtrStepSz<_Tp>() const; + template operator PtrStep<_Tp>() const; + + //! returns a new GpuMat header for the specified row + CV_WRAP GpuMat row(int y) const; + + //! returns a new GpuMat header for the specified column + CV_WRAP GpuMat col(int x) const; + + //! ... for the specified row span + CV_WRAP GpuMat rowRange(int startrow, int endrow) const; + CV_WRAP GpuMat rowRange(Range r) const; + + //! ... for the specified column span + CV_WRAP GpuMat colRange(int startcol, int endcol) const; + CV_WRAP GpuMat colRange(Range r) const; + + //! extracts a rectangular sub-GpuMat (this is a generalized form of row, rowRange etc.) + GpuMat operator ()(Range rowRange, Range colRange) const; + GpuMat operator ()(Rect roi) const; + + //! creates alternative GpuMat header for the same data, with different + //! number of channels and/or different number of rows + CV_WRAP GpuMat reshape(int cn, int rows = 0) const; + + //! locates GpuMat header within a parent GpuMat + CV_WRAP void locateROI(Size& wholeSize, Point& ofs) const; + + //! moves/resizes the current GpuMat ROI inside the parent GpuMat + CV_WRAP GpuMat& adjustROI(int dtop, int dbottom, int dleft, int dright); + + //! returns true iff the GpuMat data is continuous + //! (i.e. when there are no gaps between successive rows) + CV_WRAP bool isContinuous() const; + + //! returns element size in bytes + CV_WRAP size_t elemSize() const; + + //! returns the size of element channel in bytes + CV_WRAP size_t elemSize1() const; + + //! returns element type + CV_WRAP int type() const; + + //! returns element type + CV_WRAP int depth() const; + + //! returns number of channels + CV_WRAP int channels() const; + + //! returns step/elemSize1() + CV_WRAP size_t step1() const; + + //! returns GpuMat size : width == number of columns, height == number of rows + CV_WRAP Size size() const; + + //! returns true if GpuMat data is NULL + CV_WRAP bool empty() const; + + //! internal use method: updates the continuity flag + CV_WRAP void updateContinuityFlag(); + + /*! includes several bit-fields: + - the magic signature + - continuity flag + - depth + - number of channels + */ + int flags; + + //! the number of rows and columns + int rows, cols; + + //! a distance between successive rows in bytes; includes the gap if any + CV_PROP size_t step; + + //! pointer to the data + uchar* data; + + //! pointer to the reference counter; + //! when GpuMat points to user-allocated data, the pointer is NULL + int* refcount; + + //! helper fields used in locateROI and adjustROI + uchar* datastart; + const uchar* dataend; + + //! allocator + Allocator* allocator; +}; + +/** @brief Creates a continuous matrix. + +@param rows Row count. +@param cols Column count. +@param type Type of the matrix. +@param arr Destination matrix. This parameter changes only if it has a proper type and area ( +\f$\texttt{rows} \times \texttt{cols}\f$ ). + +Matrix is called continuous if its elements are stored continuously, that is, without gaps at the +end of each row. + */ +CV_EXPORTS_W void createContinuous(int rows, int cols, int type, OutputArray arr); + +/** @brief Ensures that the size of a matrix is big enough and the matrix has a proper type. + +@param rows Minimum desired number of rows. +@param cols Minimum desired number of columns. +@param type Desired matrix type. +@param arr Destination matrix. + +The function does not reallocate memory if the matrix has proper attributes already. + */ +CV_EXPORTS_W void ensureSizeIsEnough(int rows, int cols, int type, OutputArray arr); + +/** @brief BufferPool for use with CUDA streams + +BufferPool utilizes Stream's allocator to create new buffers for GpuMat's. It is +only useful when enabled with #setBufferPoolUsage. + +@code + setBufferPoolUsage(true); +@endcode + +@note #setBufferPoolUsage must be called \em before any Stream declaration. + +Users may specify custom allocator for Stream and may implement their own stream based +functions utilizing the same underlying GPU memory management. + +If custom allocator is not specified, BufferPool utilizes StackAllocator by +default. StackAllocator allocates a chunk of GPU device memory beforehand, +and when GpuMat is declared later on, it is given the pre-allocated memory. +This kind of strategy reduces the number of calls for memory allocating APIs +such as cudaMalloc or cudaMallocPitch. + +Below is an example that utilizes BufferPool with StackAllocator: + +@code + #include + + using namespace cv; + using namespace cv::cuda + + int main() + { + setBufferPoolUsage(true); // Tell OpenCV that we are going to utilize BufferPool + setBufferPoolConfig(getDevice(), 1024 * 1024 * 64, 2); // Allocate 64 MB, 2 stacks (default is 10 MB, 5 stacks) + + Stream stream1, stream2; // Each stream uses 1 stack + BufferPool pool1(stream1), pool2(stream2); + + GpuMat d_src1 = pool1.getBuffer(4096, 4096, CV_8UC1); // 16MB + GpuMat d_dst1 = pool1.getBuffer(4096, 4096, CV_8UC3); // 48MB, pool1 is now full + + GpuMat d_src2 = pool2.getBuffer(1024, 1024, CV_8UC1); // 1MB + GpuMat d_dst2 = pool2.getBuffer(1024, 1024, CV_8UC3); // 3MB + + cvtColor(d_src1, d_dst1, CV_GRAY2BGR, 0, stream1); + cvtColor(d_src2, d_dst2, CV_GRAY2BGR, 0, stream2); + } +@endcode + +If we allocate another GpuMat on pool1 in the above example, it will be carried out by +the DefaultAllocator since the stack for pool1 is full. + +@code + GpuMat d_add1 = pool1.getBuffer(1024, 1024, CV_8UC1); // Stack for pool1 is full, memory is allocated with DefaultAllocator +@endcode + +If a third stream is declared in the above example, allocating with #getBuffer +within that stream will also be carried out by the DefaultAllocator because we've run out of +stacks. + +@code + Stream stream3; // Only 2 stacks were allocated, we've run out of stacks + BufferPool pool3(stream3); + GpuMat d_src3 = pool3.getBuffer(1024, 1024, CV_8UC1); // Memory is allocated with DefaultAllocator +@endcode + +@warning When utilizing StackAllocator, deallocation order is important. + +Just like a stack, deallocation must be done in LIFO order. Below is an example of +erroneous usage that violates LIFO rule. If OpenCV is compiled in Debug mode, this +sample code will emit CV_Assert error. + +@code + int main() + { + setBufferPoolUsage(true); // Tell OpenCV that we are going to utilize BufferPool + Stream stream; // A default size (10 MB) stack is allocated to this stream + BufferPool pool(stream); + + GpuMat mat1 = pool.getBuffer(1024, 1024, CV_8UC1); // Allocate mat1 (1MB) + GpuMat mat2 = pool.getBuffer(1024, 1024, CV_8UC1); // Allocate mat2 (1MB) + + mat1.release(); // erroneous usage : mat2 must be deallocated before mat1 + } +@endcode + +Since C++ local variables are destroyed in the reverse order of construction, +the code sample below satisfies the LIFO rule. Local GpuMat's are deallocated +and the corresponding memory is automatically returned to the pool for later usage. + +@code + int main() + { + setBufferPoolUsage(true); // Tell OpenCV that we are going to utilize BufferPool + setBufferPoolConfig(getDevice(), 1024 * 1024 * 64, 2); // Allocate 64 MB, 2 stacks (default is 10 MB, 5 stacks) + + Stream stream1, stream2; // Each stream uses 1 stack + BufferPool pool1(stream1), pool2(stream2); + + for (int i = 0; i < 10; i++) + { + GpuMat d_src1 = pool1.getBuffer(4096, 4096, CV_8UC1); // 16MB + GpuMat d_dst1 = pool1.getBuffer(4096, 4096, CV_8UC3); // 48MB, pool1 is now full + + GpuMat d_src2 = pool2.getBuffer(1024, 1024, CV_8UC1); // 1MB + GpuMat d_dst2 = pool2.getBuffer(1024, 1024, CV_8UC3); // 3MB + + d_src1.setTo(Scalar(i), stream1); + d_src2.setTo(Scalar(i), stream2); + + cvtColor(d_src1, d_dst1, CV_GRAY2BGR, 0, stream1); + cvtColor(d_src2, d_dst2, CV_GRAY2BGR, 0, stream2); + // The order of destruction of the local variables is: + // d_dst2 => d_src2 => d_dst1 => d_src1 + // LIFO rule is satisfied, this code runs without error + } + } +@endcode + */ +class CV_EXPORTS_W BufferPool +{ +public: + + //! Gets the BufferPool for the given stream. + explicit BufferPool(Stream& stream); + + //! Allocates a new GpuMat of given size and type. + CV_WRAP GpuMat getBuffer(int rows, int cols, int type); + + //! Allocates a new GpuMat of given size and type. + CV_WRAP GpuMat getBuffer(Size size, int type) { return getBuffer(size.height, size.width, type); } + + //! Returns the allocator associated with the stream. + CV_WRAP Ptr getAllocator() const { return allocator_; } + +private: + Ptr allocator_; +}; + +//! BufferPool management (must be called before Stream creation) +CV_EXPORTS_W void setBufferPoolUsage(bool on); +CV_EXPORTS_W void setBufferPoolConfig(int deviceId, size_t stackSize, int stackCount); + +//=================================================================================== +// HostMem +//=================================================================================== + +/** @brief Class with reference counting wrapping special memory type allocation functions from CUDA. + +Its interface is also Mat-like but with additional memory type parameters. + +- **PAGE_LOCKED** sets a page locked memory type used commonly for fast and asynchronous + uploading/downloading data from/to GPU. +- **SHARED** specifies a zero copy memory allocation that enables mapping the host memory to GPU + address space, if supported. +- **WRITE_COMBINED** sets the write combined buffer that is not cached by CPU. Such buffers are + used to supply GPU with data when GPU only reads it. The advantage is a better CPU cache + utilization. + +@note Allocation size of such memory types is usually limited. For more details, see *CUDA 2.2 +Pinned Memory APIs* document or *CUDA C Programming Guide*. + */ +class CV_EXPORTS_W HostMem +{ +public: + enum AllocType { PAGE_LOCKED = 1, SHARED = 2, WRITE_COMBINED = 4 }; + + static MatAllocator* getAllocator(HostMem::AllocType alloc_type = HostMem::AllocType::PAGE_LOCKED); + + CV_WRAP explicit HostMem(HostMem::AllocType alloc_type = HostMem::AllocType::PAGE_LOCKED); + + HostMem(const HostMem& m); + + CV_WRAP HostMem(int rows, int cols, int type, HostMem::AllocType alloc_type = HostMem::AllocType::PAGE_LOCKED); + CV_WRAP HostMem(Size size, int type, HostMem::AllocType alloc_type = HostMem::AllocType::PAGE_LOCKED); + + //! creates from host memory with coping data + CV_WRAP explicit HostMem(InputArray arr, HostMem::AllocType alloc_type = HostMem::AllocType::PAGE_LOCKED); + + ~HostMem(); + + HostMem& operator =(const HostMem& m); + + //! swaps with other smart pointer + CV_WRAP void swap(HostMem& b); + + //! returns deep copy of the matrix, i.e. the data is copied + CV_WRAP HostMem clone() const; + + //! allocates new matrix data unless the matrix already has specified size and type. + CV_WRAP void create(int rows, int cols, int type); + void create(Size size, int type); + + //! creates alternative HostMem header for the same data, with different + //! number of channels and/or different number of rows + CV_WRAP HostMem reshape(int cn, int rows = 0) const; + + //! decrements reference counter and released memory if needed. + void release(); + + //! returns matrix header with disabled reference counting for HostMem data. + CV_WRAP Mat createMatHeader() const; + + /** @brief Maps CPU memory to GPU address space and creates the cuda::GpuMat header without reference counting + for it. + + This can be done only if memory was allocated with the SHARED flag and if it is supported by the + hardware. Laptops often share video and CPU memory, so address spaces can be mapped, which + eliminates an extra copy. + */ + GpuMat createGpuMatHeader() const; + + // Please see cv::Mat for descriptions + CV_WRAP bool isContinuous() const; + CV_WRAP size_t elemSize() const; + CV_WRAP size_t elemSize1() const; + CV_WRAP int type() const; + CV_WRAP int depth() const; + CV_WRAP int channels() const; + CV_WRAP size_t step1() const; + CV_WRAP Size size() const; + CV_WRAP bool empty() const; + + // Please see cv::Mat for descriptions + int flags; + int rows, cols; + CV_PROP size_t step; + + uchar* data; + int* refcount; + + uchar* datastart; + const uchar* dataend; + + AllocType alloc_type; +}; + +/** @brief Page-locks the memory of matrix and maps it for the device(s). + +@param m Input matrix. + */ +CV_EXPORTS_W void registerPageLocked(Mat& m); + +/** @brief Unmaps the memory of matrix and makes it pageable again. + +@param m Input matrix. + */ +CV_EXPORTS_W void unregisterPageLocked(Mat& m); + +//=================================================================================== +// Stream +//=================================================================================== + +/** @brief This class encapsulates a queue of asynchronous calls. + +@note Currently, you may face problems if an operation is enqueued twice with different data. Some +functions use the constant GPU memory, and next call may update the memory before the previous one +has been finished. But calling different operations asynchronously is safe because each operation +has its own constant buffer. Memory copy/upload/download/set operations to the buffers you hold are +also safe. + +@note The Stream class is not thread-safe. Please use different Stream objects for different CPU threads. + +@code +void thread1() +{ + cv::cuda::Stream stream1; + cv::cuda::func1(..., stream1); +} + +void thread2() +{ + cv::cuda::Stream stream2; + cv::cuda::func2(..., stream2); +} +@endcode + +@note By default all CUDA routines are launched in Stream::Null() object, if the stream is not specified by user. +In multi-threading environment the stream objects must be passed explicitly (see previous note). + */ +class CV_EXPORTS_W Stream +{ + typedef void (Stream::*bool_type)() const; + void this_type_does_not_support_comparisons() const {} + +public: + typedef void (*StreamCallback)(int status, void* userData); + + //! creates a new asynchronous stream + CV_WRAP Stream(); + + //! creates a new asynchronous stream with custom allocator + CV_WRAP Stream(const Ptr& allocator); + + /** @brief Returns true if the current stream queue is finished. Otherwise, it returns false. + */ + CV_WRAP bool queryIfComplete() const; + + /** @brief Blocks the current CPU thread until all operations in the stream are complete. + */ + CV_WRAP void waitForCompletion(); + + /** @brief Makes a compute stream wait on an event. + */ + CV_WRAP void waitEvent(const Event& event); + + /** @brief Adds a callback to be called on the host after all currently enqueued items in the stream have + completed. + + @note Callbacks must not make any CUDA API calls. Callbacks must not perform any synchronization + that may depend on outstanding device work or other callbacks that are not mandated to run earlier. + Callbacks without a mandated order (in independent streams) execute in undefined order and may be + serialized. + */ + void enqueueHostCallback(StreamCallback callback, void* userData); + + //! return Stream object for default CUDA stream + CV_WRAP static Stream& Null(); + + //! returns true if stream object is not default (!= 0) + operator bool_type() const; + + class Impl; + +private: + Ptr impl_; + Stream(const Ptr& impl); + + friend struct StreamAccessor; + friend class BufferPool; + friend class DefaultDeviceInitializer; +}; + +class CV_EXPORTS_W Event +{ +public: + enum CreateFlags + { + DEFAULT = 0x00, /**< Default event flag */ + BLOCKING_SYNC = 0x01, /**< Event uses blocking synchronization */ + DISABLE_TIMING = 0x02, /**< Event will not record timing data */ + INTERPROCESS = 0x04 /**< Event is suitable for interprocess use. DisableTiming must be set */ + }; + + CV_WRAP explicit Event(Event::CreateFlags flags = Event::CreateFlags::DEFAULT); + + //! records an event + CV_WRAP void record(Stream& stream = Stream::Null()); + + //! queries an event's status + CV_WRAP bool queryIfComplete() const; + + //! waits for an event to complete + CV_WRAP void waitForCompletion(); + + //! computes the elapsed time between events + CV_WRAP static float elapsedTime(const Event& start, const Event& end); + + class Impl; + +private: + Ptr impl_; + Event(const Ptr& impl); + + friend struct EventAccessor; +}; + +//! @} cudacore_struct + +//=================================================================================== +// Initialization & Info +//=================================================================================== + +//! @addtogroup cudacore_init +//! @{ + +/** @brief Returns the number of installed CUDA-enabled devices. + +Use this function before any other CUDA functions calls. If OpenCV is compiled without CUDA support, +this function returns 0. If the CUDA driver is not installed, or is incompatible, this function +returns -1. + */ +CV_EXPORTS_W int getCudaEnabledDeviceCount(); + +/** @brief Sets a device and initializes it for the current thread. + +@param device System index of a CUDA device starting with 0. + +If the call of this function is omitted, a default device is initialized at the fist CUDA usage. + */ +CV_EXPORTS_W void setDevice(int device); + +/** @brief Returns the current device index set by cuda::setDevice or initialized by default. + */ +CV_EXPORTS_W int getDevice(); + +/** @brief Explicitly destroys and cleans up all resources associated with the current device in the current +process. + +Any subsequent API call to this device will reinitialize the device. + */ +CV_EXPORTS_W void resetDevice(); + +/** @brief Enumeration providing CUDA computing features. + */ +enum FeatureSet +{ + FEATURE_SET_COMPUTE_10 = 10, + FEATURE_SET_COMPUTE_11 = 11, + FEATURE_SET_COMPUTE_12 = 12, + FEATURE_SET_COMPUTE_13 = 13, + FEATURE_SET_COMPUTE_20 = 20, + FEATURE_SET_COMPUTE_21 = 21, + FEATURE_SET_COMPUTE_30 = 30, + FEATURE_SET_COMPUTE_32 = 32, + FEATURE_SET_COMPUTE_35 = 35, + FEATURE_SET_COMPUTE_50 = 50, + + GLOBAL_ATOMICS = FEATURE_SET_COMPUTE_11, + SHARED_ATOMICS = FEATURE_SET_COMPUTE_12, + NATIVE_DOUBLE = FEATURE_SET_COMPUTE_13, + WARP_SHUFFLE_FUNCTIONS = FEATURE_SET_COMPUTE_30, + DYNAMIC_PARALLELISM = FEATURE_SET_COMPUTE_35 +}; + +//! checks whether current device supports the given feature +CV_EXPORTS bool deviceSupports(FeatureSet feature_set); + +/** @brief Class providing a set of static methods to check what NVIDIA\* card architecture the CUDA module was +built for. + +According to the CUDA C Programming Guide Version 3.2: "PTX code produced for some specific compute +capability can always be compiled to binary code of greater or equal compute capability". + */ +class CV_EXPORTS_W TargetArchs +{ +public: + /** @brief The following method checks whether the module was built with the support of the given feature: + + @param feature_set Features to be checked. See :ocvcuda::FeatureSet. + */ + static bool builtWith(FeatureSet feature_set); + + /** @brief There is a set of methods to check whether the module contains intermediate (PTX) or binary CUDA + code for the given architecture(s): + + @param major Major compute capability version. + @param minor Minor compute capability version. + */ + CV_WRAP static bool has(int major, int minor); + CV_WRAP static bool hasPtx(int major, int minor); + CV_WRAP static bool hasBin(int major, int minor); + + CV_WRAP static bool hasEqualOrLessPtx(int major, int minor); + CV_WRAP static bool hasEqualOrGreater(int major, int minor); + CV_WRAP static bool hasEqualOrGreaterPtx(int major, int minor); + CV_WRAP static bool hasEqualOrGreaterBin(int major, int minor); +}; + +/** @brief Class providing functionality for querying the specified GPU properties. + */ +class CV_EXPORTS_W DeviceInfo +{ +public: + //! creates DeviceInfo object for the current GPU + CV_WRAP DeviceInfo(); + + /** @brief The constructors. + + @param device_id System index of the CUDA device starting with 0. + + Constructs the DeviceInfo object for the specified device. If device_id parameter is missed, it + constructs an object for the current device. + */ + CV_WRAP DeviceInfo(int device_id); + + /** @brief Returns system index of the CUDA device starting with 0. + */ + CV_WRAP int deviceID() const; + + //! ASCII string identifying device + const char* name() const; + + //! global memory available on device in bytes + CV_WRAP size_t totalGlobalMem() const; + + //! shared memory available per block in bytes + CV_WRAP size_t sharedMemPerBlock() const; + + //! 32-bit registers available per block + CV_WRAP int regsPerBlock() const; + + //! warp size in threads + CV_WRAP int warpSize() const; + + //! maximum pitch in bytes allowed by memory copies + CV_WRAP size_t memPitch() const; + + //! maximum number of threads per block + CV_WRAP int maxThreadsPerBlock() const; + + //! maximum size of each dimension of a block + CV_WRAP Vec3i maxThreadsDim() const; + + //! maximum size of each dimension of a grid + CV_WRAP Vec3i maxGridSize() const; + + //! clock frequency in kilohertz + CV_WRAP int clockRate() const; + + //! constant memory available on device in bytes + CV_WRAP size_t totalConstMem() const; + + //! major compute capability + CV_WRAP int majorVersion() const; + + //! minor compute capability + CV_WRAP int minorVersion() const; + + //! alignment requirement for textures + CV_WRAP size_t textureAlignment() const; + + //! pitch alignment requirement for texture references bound to pitched memory + CV_WRAP size_t texturePitchAlignment() const; + + //! number of multiprocessors on device + CV_WRAP int multiProcessorCount() const; + + //! specified whether there is a run time limit on kernels + CV_WRAP bool kernelExecTimeoutEnabled() const; + + //! device is integrated as opposed to discrete + CV_WRAP bool integrated() const; + + //! device can map host memory with cudaHostAlloc/cudaHostGetDevicePointer + CV_WRAP bool canMapHostMemory() const; + + enum ComputeMode + { + ComputeModeDefault, /**< default compute mode (Multiple threads can use cudaSetDevice with this device) */ + ComputeModeExclusive, /**< compute-exclusive-thread mode (Only one thread in one process will be able to use cudaSetDevice with this device) */ + ComputeModeProhibited, /**< compute-prohibited mode (No threads can use cudaSetDevice with this device) */ + ComputeModeExclusiveProcess /**< compute-exclusive-process mode (Many threads in one process will be able to use cudaSetDevice with this device) */ + }; + + //! compute mode + CV_WRAP DeviceInfo::ComputeMode computeMode() const; + + //! maximum 1D texture size + CV_WRAP int maxTexture1D() const; + + //! maximum 1D mipmapped texture size + CV_WRAP int maxTexture1DMipmap() const; + + //! maximum size for 1D textures bound to linear memory + CV_WRAP int maxTexture1DLinear() const; + + //! maximum 2D texture dimensions + CV_WRAP Vec2i maxTexture2D() const; + + //! maximum 2D mipmapped texture dimensions + CV_WRAP Vec2i maxTexture2DMipmap() const; + + //! maximum dimensions (width, height, pitch) for 2D textures bound to pitched memory + CV_WRAP Vec3i maxTexture2DLinear() const; + + //! maximum 2D texture dimensions if texture gather operations have to be performed + CV_WRAP Vec2i maxTexture2DGather() const; + + //! maximum 3D texture dimensions + CV_WRAP Vec3i maxTexture3D() const; + + //! maximum Cubemap texture dimensions + CV_WRAP int maxTextureCubemap() const; + + //! maximum 1D layered texture dimensions + CV_WRAP Vec2i maxTexture1DLayered() const; + + //! maximum 2D layered texture dimensions + CV_WRAP Vec3i maxTexture2DLayered() const; + + //! maximum Cubemap layered texture dimensions + CV_WRAP Vec2i maxTextureCubemapLayered() const; + + //! maximum 1D surface size + CV_WRAP int maxSurface1D() const; + + //! maximum 2D surface dimensions + CV_WRAP Vec2i maxSurface2D() const; + + //! maximum 3D surface dimensions + CV_WRAP Vec3i maxSurface3D() const; + + //! maximum 1D layered surface dimensions + CV_WRAP Vec2i maxSurface1DLayered() const; + + //! maximum 2D layered surface dimensions + CV_WRAP Vec3i maxSurface2DLayered() const; + + //! maximum Cubemap surface dimensions + CV_WRAP int maxSurfaceCubemap() const; + + //! maximum Cubemap layered surface dimensions + CV_WRAP Vec2i maxSurfaceCubemapLayered() const; + + //! alignment requirements for surfaces + CV_WRAP size_t surfaceAlignment() const; + + //! device can possibly execute multiple kernels concurrently + CV_WRAP bool concurrentKernels() const; + + //! device has ECC support enabled + CV_WRAP bool ECCEnabled() const; + + //! PCI bus ID of the device + CV_WRAP int pciBusID() const; + + //! PCI device ID of the device + CV_WRAP int pciDeviceID() const; + + //! PCI domain ID of the device + CV_WRAP int pciDomainID() const; + + //! true if device is a Tesla device using TCC driver, false otherwise + CV_WRAP bool tccDriver() const; + + //! number of asynchronous engines + CV_WRAP int asyncEngineCount() const; + + //! device shares a unified address space with the host + CV_WRAP bool unifiedAddressing() const; + + //! peak memory clock frequency in kilohertz + CV_WRAP int memoryClockRate() const; + + //! global memory bus width in bits + CV_WRAP int memoryBusWidth() const; + + //! size of L2 cache in bytes + CV_WRAP int l2CacheSize() const; + + //! maximum resident threads per multiprocessor + CV_WRAP int maxThreadsPerMultiProcessor() const; + + //! gets free and total device memory + CV_WRAP void queryMemory(size_t& totalMemory, size_t& freeMemory) const; + CV_WRAP size_t freeMemory() const; + CV_WRAP size_t totalMemory() const; + + /** @brief Provides information on CUDA feature support. + + @param feature_set Features to be checked. See cuda::FeatureSet. + + This function returns true if the device has the specified CUDA feature. Otherwise, it returns false + */ + bool supports(FeatureSet feature_set) const; + + /** @brief Checks the CUDA module and device compatibility. + + This function returns true if the CUDA module can be run on the specified device. Otherwise, it + returns false . + */ + CV_WRAP bool isCompatible() const; + +private: + int device_id_; +}; + +CV_EXPORTS_W void printCudaDeviceInfo(int device); +CV_EXPORTS_W void printShortCudaDeviceInfo(int device); + +/** @brief Converts an array to half precision floating number. + +@param _src input array. +@param _dst output array. +@param stream Stream for the asynchronous version. +@sa convertFp16 +*/ +CV_EXPORTS void convertFp16(InputArray _src, OutputArray _dst, Stream& stream = Stream::Null()); + +//! @} cudacore_init + +}} // namespace cv { namespace cuda { + + +#include "opencv2/core/cuda.inl.hpp" + +#endif /* OPENCV_CORE_CUDA_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda.inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda.inl.hpp new file mode 100644 index 0000000..35ae2e4 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda.inl.hpp @@ -0,0 +1,631 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CUDAINL_HPP +#define OPENCV_CORE_CUDAINL_HPP + +#include "opencv2/core/cuda.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { + +//=================================================================================== +// GpuMat +//=================================================================================== + +inline +GpuMat::GpuMat(Allocator* allocator_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{} + +inline +GpuMat::GpuMat(int rows_, int cols_, int type_, Allocator* allocator_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{ + if (rows_ > 0 && cols_ > 0) + create(rows_, cols_, type_); +} + +inline +GpuMat::GpuMat(Size size_, int type_, Allocator* allocator_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{ + if (size_.height > 0 && size_.width > 0) + create(size_.height, size_.width, type_); +} + +inline +GpuMat::GpuMat(int rows_, int cols_, int type_, Scalar s_, Allocator* allocator_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{ + if (rows_ > 0 && cols_ > 0) + { + create(rows_, cols_, type_); + setTo(s_); + } +} + +inline +GpuMat::GpuMat(Size size_, int type_, Scalar s_, Allocator* allocator_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{ + if (size_.height > 0 && size_.width > 0) + { + create(size_.height, size_.width, type_); + setTo(s_); + } +} + +inline +GpuMat::GpuMat(const GpuMat& m) + : flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data), refcount(m.refcount), datastart(m.datastart), dataend(m.dataend), allocator(m.allocator) +{ + if (refcount) + CV_XADD(refcount, 1); +} + +inline +GpuMat::GpuMat(InputArray arr, Allocator* allocator_) : + flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) +{ + upload(arr); +} + +inline +GpuMat::~GpuMat() +{ + release(); +} + +inline +GpuMat& GpuMat::operator =(const GpuMat& m) +{ + if (this != &m) + { + GpuMat temp(m); + swap(temp); + } + + return *this; +} + +inline +void GpuMat::create(Size size_, int type_) +{ + create(size_.height, size_.width, type_); +} + +inline +void GpuMat::swap(GpuMat& b) +{ + std::swap(flags, b.flags); + std::swap(rows, b.rows); + std::swap(cols, b.cols); + std::swap(step, b.step); + std::swap(data, b.data); + std::swap(datastart, b.datastart); + std::swap(dataend, b.dataend); + std::swap(refcount, b.refcount); + std::swap(allocator, b.allocator); +} + +inline +GpuMat GpuMat::clone() const +{ + GpuMat m; + copyTo(m); + return m; +} + +inline +void GpuMat::copyTo(OutputArray dst, InputArray mask) const +{ + copyTo(dst, mask, Stream::Null()); +} + +inline +GpuMat& GpuMat::setTo(Scalar s) +{ + return setTo(s, Stream::Null()); +} + +inline +GpuMat& GpuMat::setTo(Scalar s, InputArray mask) +{ + return setTo(s, mask, Stream::Null()); +} + +inline +void GpuMat::convertTo(OutputArray dst, int rtype) const +{ + convertTo(dst, rtype, Stream::Null()); +} + +inline +void GpuMat::convertTo(OutputArray dst, int rtype, double alpha, double beta) const +{ + convertTo(dst, rtype, alpha, beta, Stream::Null()); +} + +inline +void GpuMat::convertTo(OutputArray dst, int rtype, double alpha, Stream& stream) const +{ + convertTo(dst, rtype, alpha, 0.0, stream); +} + +inline +void GpuMat::assignTo(GpuMat& m, int _type) const +{ + if (_type < 0) + m = *this; + else + convertTo(m, _type); +} + +inline +uchar* GpuMat::ptr(int y) +{ + CV_DbgAssert( (unsigned)y < (unsigned)rows ); + return data + step * y; +} + +inline +const uchar* GpuMat::ptr(int y) const +{ + CV_DbgAssert( (unsigned)y < (unsigned)rows ); + return data + step * y; +} + +template inline +_Tp* GpuMat::ptr(int y) +{ + return (_Tp*)ptr(y); +} + +template inline +const _Tp* GpuMat::ptr(int y) const +{ + return (const _Tp*)ptr(y); +} + +template inline +GpuMat::operator PtrStepSz() const +{ + return PtrStepSz(rows, cols, (T*)data, step); +} + +template inline +GpuMat::operator PtrStep() const +{ + return PtrStep((T*)data, step); +} + +inline +GpuMat GpuMat::row(int y) const +{ + return GpuMat(*this, Range(y, y+1), Range::all()); +} + +inline +GpuMat GpuMat::col(int x) const +{ + return GpuMat(*this, Range::all(), Range(x, x+1)); +} + +inline +GpuMat GpuMat::rowRange(int startrow, int endrow) const +{ + return GpuMat(*this, Range(startrow, endrow), Range::all()); +} + +inline +GpuMat GpuMat::rowRange(Range r) const +{ + return GpuMat(*this, r, Range::all()); +} + +inline +GpuMat GpuMat::colRange(int startcol, int endcol) const +{ + return GpuMat(*this, Range::all(), Range(startcol, endcol)); +} + +inline +GpuMat GpuMat::colRange(Range r) const +{ + return GpuMat(*this, Range::all(), r); +} + +inline +GpuMat GpuMat::operator ()(Range rowRange_, Range colRange_) const +{ + return GpuMat(*this, rowRange_, colRange_); +} + +inline +GpuMat GpuMat::operator ()(Rect roi) const +{ + return GpuMat(*this, roi); +} + +inline +bool GpuMat::isContinuous() const +{ + return (flags & Mat::CONTINUOUS_FLAG) != 0; +} + +inline +size_t GpuMat::elemSize() const +{ + return CV_ELEM_SIZE(flags); +} + +inline +size_t GpuMat::elemSize1() const +{ + return CV_ELEM_SIZE1(flags); +} + +inline +int GpuMat::type() const +{ + return CV_MAT_TYPE(flags); +} + +inline +int GpuMat::depth() const +{ + return CV_MAT_DEPTH(flags); +} + +inline +int GpuMat::channels() const +{ + return CV_MAT_CN(flags); +} + +inline +size_t GpuMat::step1() const +{ + return step / elemSize1(); +} + +inline +Size GpuMat::size() const +{ + return Size(cols, rows); +} + +inline +bool GpuMat::empty() const +{ + return data == 0; +} + +static inline +GpuMat createContinuous(int rows, int cols, int type) +{ + GpuMat m; + createContinuous(rows, cols, type, m); + return m; +} + +static inline +void createContinuous(Size size, int type, OutputArray arr) +{ + createContinuous(size.height, size.width, type, arr); +} + +static inline +GpuMat createContinuous(Size size, int type) +{ + GpuMat m; + createContinuous(size, type, m); + return m; +} + +static inline +void ensureSizeIsEnough(Size size, int type, OutputArray arr) +{ + ensureSizeIsEnough(size.height, size.width, type, arr); +} + +static inline +void swap(GpuMat& a, GpuMat& b) +{ + a.swap(b); +} + +//=================================================================================== +// HostMem +//=================================================================================== + +inline +HostMem::HostMem(AllocType alloc_type_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) +{ +} + +inline +HostMem::HostMem(const HostMem& m) + : flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data), refcount(m.refcount), datastart(m.datastart), dataend(m.dataend), alloc_type(m.alloc_type) +{ + if( refcount ) + CV_XADD(refcount, 1); +} + +inline +HostMem::HostMem(int rows_, int cols_, int type_, AllocType alloc_type_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) +{ + if (rows_ > 0 && cols_ > 0) + create(rows_, cols_, type_); +} + +inline +HostMem::HostMem(Size size_, int type_, AllocType alloc_type_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) +{ + if (size_.height > 0 && size_.width > 0) + create(size_.height, size_.width, type_); +} + +inline +HostMem::HostMem(InputArray arr, AllocType alloc_type_) + : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) +{ + arr.getMat().copyTo(*this); +} + +inline +HostMem::~HostMem() +{ + release(); +} + +inline +HostMem& HostMem::operator =(const HostMem& m) +{ + if (this != &m) + { + HostMem temp(m); + swap(temp); + } + + return *this; +} + +inline +void HostMem::swap(HostMem& b) +{ + std::swap(flags, b.flags); + std::swap(rows, b.rows); + std::swap(cols, b.cols); + std::swap(step, b.step); + std::swap(data, b.data); + std::swap(datastart, b.datastart); + std::swap(dataend, b.dataend); + std::swap(refcount, b.refcount); + std::swap(alloc_type, b.alloc_type); +} + +inline +HostMem HostMem::clone() const +{ + HostMem m(size(), type(), alloc_type); + createMatHeader().copyTo(m); + return m; +} + +inline +void HostMem::create(Size size_, int type_) +{ + create(size_.height, size_.width, type_); +} + +inline +Mat HostMem::createMatHeader() const +{ + return Mat(size(), type(), data, step); +} + +inline +bool HostMem::isContinuous() const +{ + return (flags & Mat::CONTINUOUS_FLAG) != 0; +} + +inline +size_t HostMem::elemSize() const +{ + return CV_ELEM_SIZE(flags); +} + +inline +size_t HostMem::elemSize1() const +{ + return CV_ELEM_SIZE1(flags); +} + +inline +int HostMem::type() const +{ + return CV_MAT_TYPE(flags); +} + +inline +int HostMem::depth() const +{ + return CV_MAT_DEPTH(flags); +} + +inline +int HostMem::channels() const +{ + return CV_MAT_CN(flags); +} + +inline +size_t HostMem::step1() const +{ + return step / elemSize1(); +} + +inline +Size HostMem::size() const +{ + return Size(cols, rows); +} + +inline +bool HostMem::empty() const +{ + return data == 0; +} + +static inline +void swap(HostMem& a, HostMem& b) +{ + a.swap(b); +} + +//=================================================================================== +// Stream +//=================================================================================== + +inline +Stream::Stream(const Ptr& impl) + : impl_(impl) +{ +} + +//=================================================================================== +// Event +//=================================================================================== + +inline +Event::Event(const Ptr& impl) + : impl_(impl) +{ +} + +//=================================================================================== +// Initialization & Info +//=================================================================================== + +inline +bool TargetArchs::has(int major, int minor) +{ + return hasPtx(major, minor) || hasBin(major, minor); +} + +inline +bool TargetArchs::hasEqualOrGreater(int major, int minor) +{ + return hasEqualOrGreaterPtx(major, minor) || hasEqualOrGreaterBin(major, minor); +} + +inline +DeviceInfo::DeviceInfo() +{ + device_id_ = getDevice(); +} + +inline +DeviceInfo::DeviceInfo(int device_id) +{ + CV_Assert( device_id >= 0 && device_id < getCudaEnabledDeviceCount() ); + device_id_ = device_id; +} + +inline +int DeviceInfo::deviceID() const +{ + return device_id_; +} + +inline +size_t DeviceInfo::freeMemory() const +{ + size_t _totalMemory = 0, _freeMemory = 0; + queryMemory(_totalMemory, _freeMemory); + return _freeMemory; +} + +inline +size_t DeviceInfo::totalMemory() const +{ + size_t _totalMemory = 0, _freeMemory = 0; + queryMemory(_totalMemory, _freeMemory); + return _totalMemory; +} + +inline +bool DeviceInfo::supports(FeatureSet feature_set) const +{ + int version = majorVersion() * 10 + minorVersion(); + return version >= feature_set; +} + + +}} // namespace cv { namespace cuda { + +//=================================================================================== +// Mat +//=================================================================================== + +namespace cv { + +inline +Mat::Mat(const cuda::GpuMat& m) + : flags(0), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows) +{ + m.download(*this); +} + +} + +//! @endcond + +#endif // OPENCV_CORE_CUDAINL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/block.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/block.hpp new file mode 100644 index 0000000..c277f0e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/block.hpp @@ -0,0 +1,211 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_DEVICE_BLOCK_HPP +#define OPENCV_CUDA_DEVICE_BLOCK_HPP + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + struct Block + { + static __device__ __forceinline__ unsigned int id() + { + return blockIdx.x; + } + + static __device__ __forceinline__ unsigned int stride() + { + return blockDim.x * blockDim.y * blockDim.z; + } + + static __device__ __forceinline__ void sync() + { + __syncthreads(); + } + + static __device__ __forceinline__ int flattenedThreadId() + { + return threadIdx.z * blockDim.x * blockDim.y + threadIdx.y * blockDim.x + threadIdx.x; + } + + template + static __device__ __forceinline__ void fill(It beg, It end, const T& value) + { + int STRIDE = stride(); + It t = beg + flattenedThreadId(); + + for(; t < end; t += STRIDE) + *t = value; + } + + template + static __device__ __forceinline__ void yota(OutIt beg, OutIt end, T value) + { + int STRIDE = stride(); + int tid = flattenedThreadId(); + value += tid; + + for(OutIt t = beg + tid; t < end; t += STRIDE, value += STRIDE) + *t = value; + } + + template + static __device__ __forceinline__ void copy(InIt beg, InIt end, OutIt out) + { + int STRIDE = stride(); + InIt t = beg + flattenedThreadId(); + OutIt o = out + (t - beg); + + for(; t < end; t += STRIDE, o += STRIDE) + *o = *t; + } + + template + static __device__ __forceinline__ void transform(InIt beg, InIt end, OutIt out, UnOp op) + { + int STRIDE = stride(); + InIt t = beg + flattenedThreadId(); + OutIt o = out + (t - beg); + + for(; t < end; t += STRIDE, o += STRIDE) + *o = op(*t); + } + + template + static __device__ __forceinline__ void transform(InIt1 beg1, InIt1 end1, InIt2 beg2, OutIt out, BinOp op) + { + int STRIDE = stride(); + InIt1 t1 = beg1 + flattenedThreadId(); + InIt2 t2 = beg2 + flattenedThreadId(); + OutIt o = out + (t1 - beg1); + + for(; t1 < end1; t1 += STRIDE, t2 += STRIDE, o += STRIDE) + *o = op(*t1, *t2); + } + + template + static __device__ __forceinline__ void reduce(volatile T* buffer, BinOp op) + { + int tid = flattenedThreadId(); + T val = buffer[tid]; + + if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); } + if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); } + if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); } + if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); } + + if (tid < 32) + { + if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); } + if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); } + if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); } + if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); } + if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); } + if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); } + } + } + + template + static __device__ __forceinline__ T reduce(volatile T* buffer, T init, BinOp op) + { + int tid = flattenedThreadId(); + T val = buffer[tid] = init; + __syncthreads(); + + if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); } + if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); } + if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); } + if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); } + + if (tid < 32) + { + if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); } + if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); } + if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); } + if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); } + if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); } + if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); } + } + __syncthreads(); + return buffer[0]; + } + + template + static __device__ __forceinline__ void reduce_n(T* data, unsigned int n, BinOp op) + { + int ftid = flattenedThreadId(); + int sft = stride(); + + if (sft < n) + { + for (unsigned int i = sft + ftid; i < n; i += sft) + data[ftid] = op(data[ftid], data[i]); + + __syncthreads(); + + n = sft; + } + + while (n > 1) + { + unsigned int half = n/2; + + if (ftid < half) + data[ftid] = op(data[ftid], data[n - ftid - 1]); + + __syncthreads(); + + n = n - half; + } + } + }; +}}} + +//! @endcond + +#endif /* OPENCV_CUDA_DEVICE_BLOCK_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/border_interpolate.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/border_interpolate.hpp new file mode 100644 index 0000000..874f705 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/border_interpolate.hpp @@ -0,0 +1,722 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_BORDER_INTERPOLATE_HPP +#define OPENCV_CUDA_BORDER_INTERPOLATE_HPP + +#include "saturate_cast.hpp" +#include "vec_traits.hpp" +#include "vec_math.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + ////////////////////////////////////////////////////////////// + // BrdConstant + + template struct BrdRowConstant + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdRowConstant(int width_, const D& val_ = VecTraits::all(0)) : width(width_), val(val_) {} + + template __device__ __forceinline__ D at_low(int x, const T* data) const + { + return x >= 0 ? saturate_cast(data[x]) : val; + } + + template __device__ __forceinline__ D at_high(int x, const T* data) const + { + return x < width ? saturate_cast(data[x]) : val; + } + + template __device__ __forceinline__ D at(int x, const T* data) const + { + return (x >= 0 && x < width) ? saturate_cast(data[x]) : val; + } + + int width; + D val; + }; + + template struct BrdColConstant + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdColConstant(int height_, const D& val_ = VecTraits::all(0)) : height(height_), val(val_) {} + + template __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const + { + return y >= 0 ? saturate_cast(*(const T*)((const char*)data + y * step)) : val; + } + + template __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const + { + return y < height ? saturate_cast(*(const T*)((const char*)data + y * step)) : val; + } + + template __device__ __forceinline__ D at(int y, const T* data, size_t step) const + { + return (y >= 0 && y < height) ? saturate_cast(*(const T*)((const char*)data + y * step)) : val; + } + + int height; + D val; + }; + + template struct BrdConstant + { + typedef D result_type; + + __host__ __device__ __forceinline__ BrdConstant(int height_, int width_, const D& val_ = VecTraits::all(0)) : height(height_), width(width_), val(val_) + { + } + + template __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const + { + return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast(((const T*)((const uchar*)data + y * step))[x]) : val; + } + + template __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const + { + return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast(src(y, x)) : val; + } + + int height; + int width; + D val; + }; + + ////////////////////////////////////////////////////////////// + // BrdReplicate + + template struct BrdRowReplicate + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdRowReplicate(int width) : last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdRowReplicate(int width, U) : last_col(width - 1) {} + + __device__ __forceinline__ int idx_col_low(int x) const + { + return ::max(x, 0); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return ::min(x, last_col); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_low(idx_col_high(x)); + } + + template __device__ __forceinline__ D at_low(int x, const T* data) const + { + return saturate_cast(data[idx_col_low(x)]); + } + + template __device__ __forceinline__ D at_high(int x, const T* data) const + { + return saturate_cast(data[idx_col_high(x)]); + } + + template __device__ __forceinline__ D at(int x, const T* data) const + { + return saturate_cast(data[idx_col(x)]); + } + + int last_col; + }; + + template struct BrdColReplicate + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdColReplicate(int height) : last_row(height - 1) {} + template __host__ __device__ __forceinline__ BrdColReplicate(int height, U) : last_row(height - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return ::max(y, 0); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return ::min(y, last_row); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_low(idx_row_high(y)); + } + + template __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const + { + return saturate_cast(*(const T*)((const char*)data + idx_row_low(y) * step)); + } + + template __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const + { + return saturate_cast(*(const T*)((const char*)data + idx_row_high(y) * step)); + } + + template __device__ __forceinline__ D at(int y, const T* data, size_t step) const + { + return saturate_cast(*(const T*)((const char*)data + idx_row(y) * step)); + } + + int last_row; + }; + + template struct BrdReplicate + { + typedef D result_type; + + __host__ __device__ __forceinline__ BrdReplicate(int height, int width) : last_row(height - 1), last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdReplicate(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return ::max(y, 0); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return ::min(y, last_row); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_low(idx_row_high(y)); + } + + __device__ __forceinline__ int idx_col_low(int x) const + { + return ::max(x, 0); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return ::min(x, last_col); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_low(idx_col_high(x)); + } + + template __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const + { + return saturate_cast(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); + } + + template __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const + { + return saturate_cast(src(idx_row(y), idx_col(x))); + } + + int last_row; + int last_col; + }; + + ////////////////////////////////////////////////////////////// + // BrdReflect101 + + template struct BrdRowReflect101 + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdRowReflect101(int width) : last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdRowReflect101(int width, U) : last_col(width - 1) {} + + __device__ __forceinline__ int idx_col_low(int x) const + { + return ::abs(x) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_low(idx_col_high(x)); + } + + template __device__ __forceinline__ D at_low(int x, const T* data) const + { + return saturate_cast(data[idx_col_low(x)]); + } + + template __device__ __forceinline__ D at_high(int x, const T* data) const + { + return saturate_cast(data[idx_col_high(x)]); + } + + template __device__ __forceinline__ D at(int x, const T* data) const + { + return saturate_cast(data[idx_col(x)]); + } + + int last_col; + }; + + template struct BrdColReflect101 + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdColReflect101(int height) : last_row(height - 1) {} + template __host__ __device__ __forceinline__ BrdColReflect101(int height, U) : last_row(height - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return ::abs(y) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_low(idx_row_high(y)); + } + + template __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_low(y) * step)); + } + + template __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_high(y) * step)); + } + + template __device__ __forceinline__ D at(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row(y) * step)); + } + + int last_row; + }; + + template struct BrdReflect101 + { + typedef D result_type; + + __host__ __device__ __forceinline__ BrdReflect101(int height, int width) : last_row(height - 1), last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdReflect101(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return ::abs(y) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_low(idx_row_high(y)); + } + + __device__ __forceinline__ int idx_col_low(int x) const + { + return ::abs(x) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_low(idx_col_high(x)); + } + + template __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const + { + return saturate_cast(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); + } + + template __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const + { + return saturate_cast(src(idx_row(y), idx_col(x))); + } + + int last_row; + int last_col; + }; + + ////////////////////////////////////////////////////////////// + // BrdReflect + + template struct BrdRowReflect + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdRowReflect(int width) : last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdRowReflect(int width, U) : last_col(width - 1) {} + + __device__ __forceinline__ int idx_col_low(int x) const + { + return (::abs(x) - (x < 0)) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return ::abs(last_col - ::abs(last_col - x) + (x > last_col)) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_high(::abs(x) - (x < 0)); + } + + template __device__ __forceinline__ D at_low(int x, const T* data) const + { + return saturate_cast(data[idx_col_low(x)]); + } + + template __device__ __forceinline__ D at_high(int x, const T* data) const + { + return saturate_cast(data[idx_col_high(x)]); + } + + template __device__ __forceinline__ D at(int x, const T* data) const + { + return saturate_cast(data[idx_col(x)]); + } + + int last_col; + }; + + template struct BrdColReflect + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdColReflect(int height) : last_row(height - 1) {} + template __host__ __device__ __forceinline__ BrdColReflect(int height, U) : last_row(height - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return (::abs(y) - (y < 0)) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return ::abs(last_row - ::abs(last_row - y) + (y > last_row)) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_high(::abs(y) - (y < 0)); + } + + template __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_low(y) * step)); + } + + template __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_high(y) * step)); + } + + template __device__ __forceinline__ D at(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row(y) * step)); + } + + int last_row; + }; + + template struct BrdReflect + { + typedef D result_type; + + __host__ __device__ __forceinline__ BrdReflect(int height, int width) : last_row(height - 1), last_col(width - 1) {} + template __host__ __device__ __forceinline__ BrdReflect(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return (::abs(y) - (y < 0)) % (last_row + 1); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return /*::abs*/(last_row - ::abs(last_row - y) + (y > last_row)) /*% (last_row + 1)*/; + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_low(idx_row_high(y)); + } + + __device__ __forceinline__ int idx_col_low(int x) const + { + return (::abs(x) - (x < 0)) % (last_col + 1); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return (last_col - ::abs(last_col - x) + (x > last_col)); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_low(idx_col_high(x)); + } + + template __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const + { + return saturate_cast(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); + } + + template __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const + { + return saturate_cast(src(idx_row(y), idx_col(x))); + } + + int last_row; + int last_col; + }; + + ////////////////////////////////////////////////////////////// + // BrdWrap + + template struct BrdRowWrap + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdRowWrap(int width_) : width(width_) {} + template __host__ __device__ __forceinline__ BrdRowWrap(int width_, U) : width(width_) {} + + __device__ __forceinline__ int idx_col_low(int x) const + { + return (x >= 0) * x + (x < 0) * (x - ((x - width + 1) / width) * width); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return (x < width) * x + (x >= width) * (x % width); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_high(idx_col_low(x)); + } + + template __device__ __forceinline__ D at_low(int x, const T* data) const + { + return saturate_cast(data[idx_col_low(x)]); + } + + template __device__ __forceinline__ D at_high(int x, const T* data) const + { + return saturate_cast(data[idx_col_high(x)]); + } + + template __device__ __forceinline__ D at(int x, const T* data) const + { + return saturate_cast(data[idx_col(x)]); + } + + int width; + }; + + template struct BrdColWrap + { + typedef D result_type; + + explicit __host__ __device__ __forceinline__ BrdColWrap(int height_) : height(height_) {} + template __host__ __device__ __forceinline__ BrdColWrap(int height_, U) : height(height_) {} + + __device__ __forceinline__ int idx_row_low(int y) const + { + return (y >= 0) * y + (y < 0) * (y - ((y - height + 1) / height) * height); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return (y < height) * y + (y >= height) * (y % height); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_high(idx_row_low(y)); + } + + template __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_low(y) * step)); + } + + template __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row_high(y) * step)); + } + + template __device__ __forceinline__ D at(int y, const T* data, size_t step) const + { + return saturate_cast(*(const D*)((const char*)data + idx_row(y) * step)); + } + + int height; + }; + + template struct BrdWrap + { + typedef D result_type; + + __host__ __device__ __forceinline__ BrdWrap(int height_, int width_) : + height(height_), width(width_) + { + } + template + __host__ __device__ __forceinline__ BrdWrap(int height_, int width_, U) : + height(height_), width(width_) + { + } + + __device__ __forceinline__ int idx_row_low(int y) const + { + return (y >= 0) ? y : (y - ((y - height + 1) / height) * height); + } + + __device__ __forceinline__ int idx_row_high(int y) const + { + return (y < height) ? y : (y % height); + } + + __device__ __forceinline__ int idx_row(int y) const + { + return idx_row_high(idx_row_low(y)); + } + + __device__ __forceinline__ int idx_col_low(int x) const + { + return (x >= 0) ? x : (x - ((x - width + 1) / width) * width); + } + + __device__ __forceinline__ int idx_col_high(int x) const + { + return (x < width) ? x : (x % width); + } + + __device__ __forceinline__ int idx_col(int x) const + { + return idx_col_high(idx_col_low(x)); + } + + template __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const + { + return saturate_cast(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); + } + + template __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const + { + return saturate_cast(src(idx_row(y), idx_col(x))); + } + + int height; + int width; + }; + + ////////////////////////////////////////////////////////////// + // BorderReader + + template struct BorderReader + { + typedef typename B::result_type elem_type; + typedef typename Ptr2D::index_type index_type; + + __host__ __device__ __forceinline__ BorderReader(const Ptr2D& ptr_, const B& b_) : ptr(ptr_), b(b_) {} + + __device__ __forceinline__ elem_type operator ()(index_type y, index_type x) const + { + return b.at(y, x, ptr); + } + + Ptr2D ptr; + B b; + }; + + // under win32 there is some bug with templated types that passed as kernel parameters + // with this specialization all works fine + template struct BorderReader< Ptr2D, BrdConstant > + { + typedef typename BrdConstant::result_type elem_type; + typedef typename Ptr2D::index_type index_type; + + __host__ __device__ __forceinline__ BorderReader(const Ptr2D& src_, const BrdConstant& b) : + src(src_), height(b.height), width(b.width), val(b.val) + { + } + + __device__ __forceinline__ D operator ()(index_type y, index_type x) const + { + return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast(src(y, x)) : val; + } + + Ptr2D src; + int height; + int width; + D val; + }; +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_BORDER_INTERPOLATE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/color.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/color.hpp new file mode 100644 index 0000000..dcce280 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/color.hpp @@ -0,0 +1,309 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_COLOR_HPP +#define OPENCV_CUDA_COLOR_HPP + +#include "detail/color_detail.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + // All OPENCV_CUDA_IMPLEMENT_*_TRAITS(ColorSpace1_to_ColorSpace2, ...) macros implements + // template class ColorSpace1_to_ColorSpace2_traits + // { + // typedef ... functor_type; + // static __host__ __device__ functor_type create_functor(); + // }; + + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgba, 4, 4, 2) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr555, 3, 0, 5) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr565, 3, 0, 6) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr555, 3, 2, 5) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr565, 3, 2, 6) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr555, 4, 0, 5) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr565, 4, 0, 6) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr555, 4, 2, 5) + OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr565, 4, 2, 6) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgb, 3, 2, 5) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgb, 3, 2, 6) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgr, 3, 0, 5) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgr, 3, 0, 6) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgba, 4, 2, 5) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgba, 4, 2, 6) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgra, 4, 0, 5) + OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgra, 4, 0, 6) + + #undef OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgr, 3) + OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgra, 4) + + #undef OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr555, 5) + OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr565, 6) + + #undef OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr555_to_gray, 5) + OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr565_to_gray, 6) + + #undef OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(rgb_to_gray, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(bgr_to_gray, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(rgba_to_gray, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(bgra_to_gray, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv4, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv4, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv4, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv4, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS + + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgba, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgr, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgra, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb4, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb4, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb4, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb4, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS + + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgba, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgr, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgra, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz4, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz4, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz4, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz4, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS + + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgba, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgr, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgra, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv4, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv4, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv4, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv4, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS + + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgba, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgr, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgra, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls4, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls4, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls4, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls4, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS + + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgb, 3, 3, 2) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgba, 3, 4, 2) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgb, 4, 3, 2) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgba, 4, 4, 2) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgr, 3, 3, 0) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgra, 3, 4, 0) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgr, 4, 3, 0) + OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgra, 4, 4, 0) + + #undef OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab, 3, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab, 4, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab4, 3, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab4, 4, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab, 3, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab, 4, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab4, 3, 4, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab4, 4, 4, true, 0) + + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab, 3, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab, 4, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab4, 3, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab4, 4, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab, 3, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab, 4, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab4, 3, 4, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab4, 4, 4, false, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS + + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgb, 3, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgb, 4, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgba, 3, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgba, 4, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgr, 3, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgr, 4, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgra, 3, 4, true, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgra, 4, 4, true, 0) + + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgb, 3, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgb, 4, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgba, 3, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgba, 4, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgr, 3, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgr, 4, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgra, 3, 4, false, 0) + OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgra, 4, 4, false, 0) + + #undef OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS + + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv, 3, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv, 4, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv4, 3, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv4, 4, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv, 3, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv, 4, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv4, 3, 4, true, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv4, 4, 4, true, 0) + + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv, 3, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv, 4, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv4, 3, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv4, 4, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv, 3, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv, 4, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv4, 3, 4, false, 0) + OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv4, 4, 4, false, 0) + + #undef OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS + + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgb, 3, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgb, 4, 3, true, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgba, 3, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgba, 4, 4, true, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgr, 3, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgr, 4, 3, true, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgra, 3, 4, true, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgra, 4, 4, true, 0) + + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgb, 3, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgb, 4, 3, false, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgba, 3, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgba, 4, 4, false, 2) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgr, 3, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgr, 4, 3, false, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgra, 3, 4, false, 0) + OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgra, 4, 4, false, 0) + + #undef OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_COLOR_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/common.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/common.hpp new file mode 100644 index 0000000..14b1f3f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/common.hpp @@ -0,0 +1,109 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_COMMON_HPP +#define OPENCV_CUDA_COMMON_HPP + +#include +#include "opencv2/core/cuda_types.hpp" +#include "opencv2/core/cvdef.h" +#include "opencv2/core/base.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +#ifndef CV_PI_F + #ifndef CV_PI + #define CV_PI_F 3.14159265f + #else + #define CV_PI_F ((float)CV_PI) + #endif +#endif + +namespace cv { namespace cuda { + static inline void checkCudaError(cudaError_t err, const char* file, const int line, const char* func) + { + if (cudaSuccess != err) + cv::error(cv::Error::GpuApiCallError, cudaGetErrorString(err), func, file, line); + } +}} + +#ifndef cudaSafeCall + #define cudaSafeCall(expr) cv::cuda::checkCudaError(expr, __FILE__, __LINE__, CV_Func) +#endif + +namespace cv { namespace cuda +{ + template static inline bool isAligned(const T* ptr, size_t size) + { + return reinterpret_cast(ptr) % size == 0; + } + + static inline bool isAligned(size_t step, size_t size) + { + return step % size == 0; + } +}} + +namespace cv { namespace cuda +{ + namespace device + { + __host__ __device__ __forceinline__ int divUp(int total, int grain) + { + return (total + grain - 1) / grain; + } + + template inline void bindTexture(const textureReference* tex, const PtrStepSz& img) + { + cudaChannelFormatDesc desc = cudaCreateChannelDesc(); + cudaSafeCall( cudaBindTexture2D(0, tex, img.ptr(), &desc, img.cols, img.rows, img.step) ); + } + } +}} + +//! @endcond + +#endif // OPENCV_CUDA_COMMON_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/datamov_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/datamov_utils.hpp new file mode 100644 index 0000000..6820d0f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/datamov_utils.hpp @@ -0,0 +1,113 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_DATAMOV_UTILS_HPP +#define OPENCV_CUDA_DATAMOV_UTILS_HPP + +#include "common.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 200 + + // for Fermi memory space is detected automatically + template struct ForceGlob + { + __device__ __forceinline__ static void Load(const T* ptr, int offset, T& val) { val = ptr[offset]; } + }; + + #else // __CUDA_ARCH__ >= 200 + + #if defined(_WIN64) || defined(__LP64__) + // 64-bit register modifier for inlined asm + #define OPENCV_CUDA_ASM_PTR "l" + #else + // 32-bit register modifier for inlined asm + #define OPENCV_CUDA_ASM_PTR "r" + #endif + + template struct ForceGlob; + + #define OPENCV_CUDA_DEFINE_FORCE_GLOB(base_type, ptx_type, reg_mod) \ + template <> struct ForceGlob \ + { \ + __device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \ + { \ + asm("ld.global."#ptx_type" %0, [%1];" : "="#reg_mod(val) : OPENCV_CUDA_ASM_PTR(ptr + offset)); \ + } \ + }; + + #define OPENCV_CUDA_DEFINE_FORCE_GLOB_B(base_type, ptx_type) \ + template <> struct ForceGlob \ + { \ + __device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \ + { \ + asm("ld.global."#ptx_type" %0, [%1];" : "=r"(*reinterpret_cast(&val)) : OPENCV_CUDA_ASM_PTR(ptr + offset)); \ + } \ + }; + + OPENCV_CUDA_DEFINE_FORCE_GLOB_B(uchar, u8) + OPENCV_CUDA_DEFINE_FORCE_GLOB_B(schar, s8) + OPENCV_CUDA_DEFINE_FORCE_GLOB_B(char, b8) + OPENCV_CUDA_DEFINE_FORCE_GLOB (ushort, u16, h) + OPENCV_CUDA_DEFINE_FORCE_GLOB (short, s16, h) + OPENCV_CUDA_DEFINE_FORCE_GLOB (uint, u32, r) + OPENCV_CUDA_DEFINE_FORCE_GLOB (int, s32, r) + OPENCV_CUDA_DEFINE_FORCE_GLOB (float, f32, f) + OPENCV_CUDA_DEFINE_FORCE_GLOB (double, f64, d) + + #undef OPENCV_CUDA_DEFINE_FORCE_GLOB + #undef OPENCV_CUDA_DEFINE_FORCE_GLOB_B + #undef OPENCV_CUDA_ASM_PTR + + #endif // __CUDA_ARCH__ >= 200 +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_DATAMOV_UTILS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/color_detail.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/color_detail.hpp new file mode 100644 index 0000000..f4b4796 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/color_detail.hpp @@ -0,0 +1,2018 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_COLOR_DETAIL_HPP +#define OPENCV_CUDA_COLOR_DETAIL_HPP + +#include "../common.hpp" +#include "../vec_traits.hpp" +#include "../saturate_cast.hpp" +#include "../limits.hpp" +#include "../functional.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + #ifndef CV_DESCALE + #define CV_DESCALE(x, n) (((x) + (1 << ((n)-1))) >> (n)) + #endif + + namespace color_detail + { + template struct ColorChannel + { + typedef float worktype_f; + static __device__ __forceinline__ T max() { return numeric_limits::max(); } + static __device__ __forceinline__ T half() { return (T)(max()/2 + 1); } + }; + + template<> struct ColorChannel + { + typedef float worktype_f; + static __device__ __forceinline__ float max() { return 1.f; } + static __device__ __forceinline__ float half() { return 0.5f; } + }; + + template static __device__ __forceinline__ void setAlpha(typename TypeVec::vec_type& vec, T val) + { + } + + template static __device__ __forceinline__ void setAlpha(typename TypeVec::vec_type& vec, T val) + { + vec.w = val; + } + + template static __device__ __forceinline__ T getAlpha(const typename TypeVec::vec_type& vec) + { + return ColorChannel::max(); + } + + template static __device__ __forceinline__ T getAlpha(const typename TypeVec::vec_type& vec) + { + return vec.w; + } + + //constants for conversion from/to RGB and Gray, YUV, YCrCb according to BT.601 + constexpr float B2YF = 0.114f; + constexpr float G2YF = 0.587f; + constexpr float R2YF = 0.299f; + + //to YCbCr + constexpr float YCBF = 0.564f; // == 1/2/(1-B2YF) + constexpr float YCRF = 0.713f; // == 1/2/(1-R2YF) + const int YCBI = 9241; // == YCBF*16384 + const int YCRI = 11682; // == YCRF*16384 + //to YUV + constexpr float B2UF = 0.492f; + constexpr float R2VF = 0.877f; + const int B2UI = 8061; // == B2UF*16384 + const int R2VI = 14369; // == R2VF*16384 + //from YUV + constexpr float U2BF = 2.032f; + constexpr float U2GF = -0.395f; + constexpr float V2GF = -0.581f; + constexpr float V2RF = 1.140f; + const int U2BI = 33292; + const int U2GI = -6472; + const int V2GI = -9519; + const int V2RI = 18678; + //from YCrCb + constexpr float CB2BF = 1.773f; + constexpr float CB2GF = -0.344f; + constexpr float CR2GF = -0.714f; + constexpr float CR2RF = 1.403f; + const int CB2BI = 29049; + const int CB2GI = -5636; + const int CR2GI = -11698; + const int CR2RI = 22987; + + enum + { + yuv_shift = 14, + xyz_shift = 12, + gray_shift = 15, + R2Y = 4899, + G2Y = 9617, + B2Y = 1868, + RY15 = 9798, // == R2YF*32768 + 0.5 + GY15 = 19235, // == G2YF*32768 + 0.5 + BY15 = 3735, // == B2YF*32768 + 0.5 + BLOCK_SIZE = 256 + }; + } + +////////////////// Various 3/4-channel to 3/4-channel RGB transformations ///////////////// + + namespace color_detail + { + template struct RGB2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + dst.x = (&src.x)[bidx]; + dst.y = src.y; + dst.z = (&src.x)[bidx^2]; + setAlpha(dst, getAlpha(src)); + + return dst; + } + + __host__ __device__ __forceinline__ RGB2RGB() {} + __host__ __device__ __forceinline__ RGB2RGB(const RGB2RGB&) {} + }; + + template <> struct RGB2RGB : unary_function + { + __device__ uint operator()(uint src) const + { + uint dst = 0; + + dst |= (0xffu & (src >> 16)); + dst |= (0xffu & (src >> 8)) << 8; + dst |= (0xffu & (src)) << 16; + dst |= (0xffu & (src >> 24)) << 24; + + return dst; + } + + __host__ __device__ __forceinline__ RGB2RGB() {} + __host__ __device__ __forceinline__ RGB2RGB(const RGB2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +/////////// Transforming 16-bit (565 or 555) RGB to/from 24/32-bit (888[8]) RGB ////////// + + namespace color_detail + { + template struct RGB2RGB5x5Converter; + template struct RGB2RGB5x5Converter<6, bidx> + { + static __device__ __forceinline__ ushort cvt(const uchar3& src) + { + return (ushort)(((&src.x)[bidx] >> 3) | ((src.y & ~3) << 3) | (((&src.x)[bidx^2] & ~7) << 8)); + } + + static __device__ __forceinline__ ushort cvt(uint src) + { + uint b = 0xffu & (src >> (bidx * 8)); + uint g = 0xffu & (src >> 8); + uint r = 0xffu & (src >> ((bidx ^ 2) * 8)); + return (ushort)((b >> 3) | ((g & ~3) << 3) | ((r & ~7) << 8)); + } + }; + + template struct RGB2RGB5x5Converter<5, bidx> + { + static __device__ __forceinline__ ushort cvt(const uchar3& src) + { + return (ushort)(((&src.x)[bidx] >> 3) | ((src.y & ~7) << 2) | (((&src.x)[bidx^2] & ~7) << 7)); + } + + static __device__ __forceinline__ ushort cvt(uint src) + { + uint b = 0xffu & (src >> (bidx * 8)); + uint g = 0xffu & (src >> 8); + uint r = 0xffu & (src >> ((bidx ^ 2) * 8)); + uint a = 0xffu & (src >> 24); + return (ushort)((b >> 3) | ((g & ~7) << 2) | ((r & ~7) << 7) | (a * 0x8000)); + } + }; + + template struct RGB2RGB5x5; + + template struct RGB2RGB5x5<3, bidx,green_bits> : unary_function + { + __device__ __forceinline__ ushort operator()(const uchar3& src) const + { + return RGB2RGB5x5Converter::cvt(src); + } + + __host__ __device__ __forceinline__ RGB2RGB5x5() {} + __host__ __device__ __forceinline__ RGB2RGB5x5(const RGB2RGB5x5&) {} + }; + + template struct RGB2RGB5x5<4, bidx,green_bits> : unary_function + { + __device__ __forceinline__ ushort operator()(uint src) const + { + return RGB2RGB5x5Converter::cvt(src); + } + + __host__ __device__ __forceinline__ RGB2RGB5x5() {} + __host__ __device__ __forceinline__ RGB2RGB5x5(const RGB2RGB5x5&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(name, scn, bidx, green_bits) \ + struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2RGB5x5 functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + template struct RGB5x52RGBConverter; + + template struct RGB5x52RGBConverter<5, bidx> + { + static __device__ __forceinline__ void cvt(uint src, uchar3& dst) + { + (&dst.x)[bidx] = src << 3; + dst.y = (src >> 2) & ~7; + (&dst.x)[bidx ^ 2] = (src >> 7) & ~7; + } + + static __device__ __forceinline__ void cvt(uint src, uint& dst) + { + dst = 0; + + dst |= (0xffu & (src << 3)) << (bidx * 8); + dst |= (0xffu & ((src >> 2) & ~7)) << 8; + dst |= (0xffu & ((src >> 7) & ~7)) << ((bidx ^ 2) * 8); + dst |= ((src & 0x8000) * 0xffu) << 24; + } + }; + + template struct RGB5x52RGBConverter<6, bidx> + { + static __device__ __forceinline__ void cvt(uint src, uchar3& dst) + { + (&dst.x)[bidx] = src << 3; + dst.y = (src >> 3) & ~3; + (&dst.x)[bidx ^ 2] = (src >> 8) & ~7; + } + + static __device__ __forceinline__ void cvt(uint src, uint& dst) + { + dst = 0xffu << 24; + + dst |= (0xffu & (src << 3)) << (bidx * 8); + dst |= (0xffu &((src >> 3) & ~3)) << 8; + dst |= (0xffu & ((src >> 8) & ~7)) << ((bidx ^ 2) * 8); + } + }; + + template struct RGB5x52RGB; + + template struct RGB5x52RGB<3, bidx, green_bits> : unary_function + { + __device__ __forceinline__ uchar3 operator()(ushort src) const + { + uchar3 dst; + RGB5x52RGBConverter::cvt(src, dst); + return dst; + } + __host__ __device__ __forceinline__ RGB5x52RGB() {} + __host__ __device__ __forceinline__ RGB5x52RGB(const RGB5x52RGB&) {} + + }; + + template struct RGB5x52RGB<4, bidx, green_bits> : unary_function + { + __device__ __forceinline__ uint operator()(ushort src) const + { + uint dst; + RGB5x52RGBConverter::cvt(src, dst); + return dst; + } + __host__ __device__ __forceinline__ RGB5x52RGB() {} + __host__ __device__ __forceinline__ RGB5x52RGB(const RGB5x52RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(name, dcn, bidx, green_bits) \ + struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB5x52RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////// Grayscale to Color //////////////////////////////// + + namespace color_detail + { + template struct Gray2RGB : unary_function::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(T src) const + { + typename TypeVec::vec_type dst; + + dst.z = dst.y = dst.x = src; + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ Gray2RGB() {} + __host__ __device__ __forceinline__ Gray2RGB(const Gray2RGB&) {} + }; + + template <> struct Gray2RGB : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + uint dst = 0xffu << 24; + + dst |= src; + dst |= src << 8; + dst |= src << 16; + + return dst; + } + __host__ __device__ __forceinline__ Gray2RGB() {} + __host__ __device__ __forceinline__ Gray2RGB(const Gray2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS(name, dcn) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::Gray2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + template struct Gray2RGB5x5Converter; + template<> struct Gray2RGB5x5Converter<6> + { + static __device__ __forceinline__ ushort cvt(uint t) + { + return (ushort)((t >> 3) | ((t & ~3) << 3) | ((t & ~7) << 8)); + } + }; + + template<> struct Gray2RGB5x5Converter<5> + { + static __device__ __forceinline__ ushort cvt(uint t) + { + t >>= 3; + return (ushort)(t | (t << 5) | (t << 10)); + } + }; + + template struct Gray2RGB5x5 : unary_function + { + __device__ __forceinline__ ushort operator()(uint src) const + { + return Gray2RGB5x5Converter::cvt(src); + } + + __host__ __device__ __forceinline__ Gray2RGB5x5() {} + __host__ __device__ __forceinline__ Gray2RGB5x5(const Gray2RGB5x5&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS(name, green_bits) \ + struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::Gray2RGB5x5 functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////// Color to Grayscale //////////////////////////////// + + namespace color_detail + { + template struct RGB5x52GrayConverter; + template <> struct RGB5x52GrayConverter<6> + { + static __device__ __forceinline__ uchar cvt(uint t) + { + return (uchar)CV_DESCALE(((t << 3) & 0xf8) * BY15 + ((t >> 3) & 0xfc) * GY15 + ((t >> 8) & 0xf8) * RY15, gray_shift); + } + }; + + template <> struct RGB5x52GrayConverter<5> + { + static __device__ __forceinline__ uchar cvt(uint t) + { + return (uchar)CV_DESCALE(((t << 3) & 0xf8) * BY15 + ((t >> 2) & 0xf8) * GY15 + ((t >> 7) & 0xf8) * RY15, gray_shift); + } + }; + + template struct RGB5x52Gray : unary_function + { + __device__ __forceinline__ uchar operator()(uint src) const + { + return RGB5x52GrayConverter::cvt(src); + } + __host__ __device__ __forceinline__ RGB5x52Gray() {} + __host__ __device__ __forceinline__ RGB5x52Gray(const RGB5x52Gray&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS(name, green_bits) \ + struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB5x52Gray functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + template static __device__ __forceinline__ T RGB2GrayConvert(const T* src) + { + return (T)CV_DESCALE((unsigned)(src[bidx] * BY15 + src[1] * GY15 + src[bidx^2] * RY15), gray_shift); + } + + template static __device__ __forceinline__ uchar RGB2GrayConvert(uint src) + { + uint b = 0xffu & (src >> (bidx * 8)); + uint g = 0xffu & (src >> 8); + uint r = 0xffu & (src >> ((bidx ^ 2) * 8)); + return CV_DESCALE((uint)(b * BY15 + g * GY15 + r * RY15), gray_shift); + } + + template static __device__ __forceinline__ float RGB2GrayConvert(const float* src) + { + return src[bidx] * B2YF + src[1] * G2YF + src[bidx^2] * R2YF; + } + + template struct RGB2Gray : unary_function::vec_type, T> + { + __device__ __forceinline__ T operator()(const typename TypeVec::vec_type& src) const + { + return RGB2GrayConvert(&src.x); + } + __host__ __device__ __forceinline__ RGB2Gray() {} + __host__ __device__ __forceinline__ RGB2Gray(const RGB2Gray&) {} + }; + + template struct RGB2Gray : unary_function + { + __device__ __forceinline__ uchar operator()(uint src) const + { + return RGB2GrayConvert(src); + } + __host__ __device__ __forceinline__ RGB2Gray() {} + __host__ __device__ __forceinline__ RGB2Gray(const RGB2Gray&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(name, scn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2Gray functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////////// RGB <-> YUV ////////////////////////////////////// + + namespace color_detail + { + __constant__ float c_RGB2YUVCoeffs_f[5] = { B2YF, G2YF, R2YF, B2UF, R2VF }; + __constant__ int c_RGB2YUVCoeffs_i[5] = { B2Y, G2Y, R2Y, B2UI, R2VI }; + + template static __device__ void RGB2YUVConvert(const T* src, D& dst) + { + const int delta = ColorChannel::half() * (1 << yuv_shift); + + const int Y = CV_DESCALE(src[0] * c_RGB2YUVCoeffs_i[bidx^2] + src[1] * c_RGB2YUVCoeffs_i[1] + src[2] * c_RGB2YUVCoeffs_i[bidx], yuv_shift); + const int Cr = CV_DESCALE((src[bidx^2] - Y) * c_RGB2YUVCoeffs_i[3] + delta, yuv_shift); + const int Cb = CV_DESCALE((src[bidx] - Y) * c_RGB2YUVCoeffs_i[4] + delta, yuv_shift); + + dst.x = saturate_cast(Y); + dst.y = saturate_cast(Cr); + dst.z = saturate_cast(Cb); + } + + template static __device__ __forceinline__ void RGB2YUVConvert(const float* src, D& dst) + { + dst.x = src[0] * c_RGB2YUVCoeffs_f[bidx^2] + src[1] * c_RGB2YUVCoeffs_f[1] + src[2] * c_RGB2YUVCoeffs_f[bidx]; + dst.y = (src[bidx^2] - dst.x) * c_RGB2YUVCoeffs_f[3] + ColorChannel::half(); + dst.z = (src[bidx] - dst.x) * c_RGB2YUVCoeffs_f[4] + ColorChannel::half(); + } + + template struct RGB2YUV + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + RGB2YUVConvert(&src.x, dst); + return dst; + } + __host__ __device__ __forceinline__ RGB2YUV() {} + __host__ __device__ __forceinline__ RGB2YUV(const RGB2YUV&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2YUV functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ float c_YUV2RGBCoeffs_f[5] = { U2BF, U2GF, V2GF, V2RF }; + __constant__ int c_YUV2RGBCoeffs_i[5] = { U2BI, U2GI, V2GI, V2RI }; + + template static __device__ void YUV2RGBConvert(const T& src, D* dst) + { + const int b = src.x + CV_DESCALE((src.z - ColorChannel::half()) * c_YUV2RGBCoeffs_i[3], yuv_shift); + + const int g = src.x + CV_DESCALE((src.z - ColorChannel::half()) * c_YUV2RGBCoeffs_i[2] + + (src.y - ColorChannel::half()) * c_YUV2RGBCoeffs_i[1], yuv_shift); + + const int r = src.x + CV_DESCALE((src.y - ColorChannel::half()) * c_YUV2RGBCoeffs_i[0], yuv_shift); + + dst[bidx] = saturate_cast(b); + dst[1] = saturate_cast(g); + dst[bidx^2] = saturate_cast(r); + } + + template static __device__ uint YUV2RGBConvert(uint src) + { + const int x = 0xff & (src); + const int y = 0xff & (src >> 8); + const int z = 0xff & (src >> 16); + + const int b = x + CV_DESCALE((z - ColorChannel::half()) * c_YUV2RGBCoeffs_i[3], yuv_shift); + + const int g = x + CV_DESCALE((z - ColorChannel::half()) * c_YUV2RGBCoeffs_i[2] + + (y - ColorChannel::half()) * c_YUV2RGBCoeffs_i[1], yuv_shift); + + const int r = x + CV_DESCALE((y - ColorChannel::half()) * c_YUV2RGBCoeffs_i[0], yuv_shift); + + uint dst = 0xffu << 24; + + dst |= saturate_cast(b) << (bidx * 8); + dst |= saturate_cast(g) << 8; + dst |= saturate_cast(r) << ((bidx ^ 2) * 8); + + return dst; + } + + template static __device__ __forceinline__ void YUV2RGBConvert(const T& src, float* dst) + { + dst[bidx] = src.x + (src.z - ColorChannel::half()) * c_YUV2RGBCoeffs_f[3]; + + dst[1] = src.x + (src.z - ColorChannel::half()) * c_YUV2RGBCoeffs_f[2] + + (src.y - ColorChannel::half()) * c_YUV2RGBCoeffs_f[1]; + + dst[bidx^2] = src.x + (src.y - ColorChannel::half()) * c_YUV2RGBCoeffs_f[0]; + } + + template struct YUV2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + YUV2RGBConvert(src, &dst.x); + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ YUV2RGB() {} + __host__ __device__ __forceinline__ YUV2RGB(const YUV2RGB&) {} + }; + + template struct YUV2RGB : unary_function + { + __device__ __forceinline__ uint operator ()(uint src) const + { + return YUV2RGBConvert(src); + } + __host__ __device__ __forceinline__ YUV2RGB() {} + __host__ __device__ __forceinline__ YUV2RGB(const YUV2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::YUV2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////////// RGB <-> YCrCb ////////////////////////////////////// + + namespace color_detail + { + __constant__ float c_RGB2YCrCbCoeffs_f[5] = {R2YF, G2YF, B2YF, YCRF, YCBF}; + __constant__ int c_RGB2YCrCbCoeffs_i[5] = {R2Y, G2Y, B2Y, YCRI, YCBI}; + + template static __device__ void RGB2YCrCbConvert(const T* src, D& dst) + { + const int delta = ColorChannel::half() * (1 << yuv_shift); + + const int Y = CV_DESCALE(src[0] * c_RGB2YCrCbCoeffs_i[bidx^2] + src[1] * c_RGB2YCrCbCoeffs_i[1] + src[2] * c_RGB2YCrCbCoeffs_i[bidx], yuv_shift); + const int Cr = CV_DESCALE((src[bidx^2] - Y) * c_RGB2YCrCbCoeffs_i[3] + delta, yuv_shift); + const int Cb = CV_DESCALE((src[bidx] - Y) * c_RGB2YCrCbCoeffs_i[4] + delta, yuv_shift); + + dst.x = saturate_cast(Y); + dst.y = saturate_cast(Cr); + dst.z = saturate_cast(Cb); + } + + template static __device__ uint RGB2YCrCbConvert(uint src) + { + const int delta = ColorChannel::half() * (1 << yuv_shift); + + const int Y = CV_DESCALE((0xffu & src) * c_RGB2YCrCbCoeffs_i[bidx^2] + (0xffu & (src >> 8)) * c_RGB2YCrCbCoeffs_i[1] + (0xffu & (src >> 16)) * c_RGB2YCrCbCoeffs_i[bidx], yuv_shift); + const int Cr = CV_DESCALE(((0xffu & (src >> ((bidx ^ 2) * 8))) - Y) * c_RGB2YCrCbCoeffs_i[3] + delta, yuv_shift); + const int Cb = CV_DESCALE(((0xffu & (src >> (bidx * 8))) - Y) * c_RGB2YCrCbCoeffs_i[4] + delta, yuv_shift); + + uint dst = 0; + + dst |= saturate_cast(Y); + dst |= saturate_cast(Cr) << 8; + dst |= saturate_cast(Cb) << 16; + + return dst; + } + + template static __device__ __forceinline__ void RGB2YCrCbConvert(const float* src, D& dst) + { + dst.x = src[0] * c_RGB2YCrCbCoeffs_f[bidx^2] + src[1] * c_RGB2YCrCbCoeffs_f[1] + src[2] * c_RGB2YCrCbCoeffs_f[bidx]; + dst.y = (src[bidx^2] - dst.x) * c_RGB2YCrCbCoeffs_f[3] + ColorChannel::half(); + dst.z = (src[bidx] - dst.x) * c_RGB2YCrCbCoeffs_f[4] + ColorChannel::half(); + } + + template struct RGB2YCrCb + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + RGB2YCrCbConvert(&src.x, dst); + return dst; + } + __host__ __device__ __forceinline__ RGB2YCrCb() {} + __host__ __device__ __forceinline__ RGB2YCrCb(const RGB2YCrCb&) {} + }; + + template struct RGB2YCrCb : unary_function + { + __device__ __forceinline__ uint operator ()(uint src) const + { + return RGB2YCrCbConvert(src); + } + + __host__ __device__ __forceinline__ RGB2YCrCb() {} + __host__ __device__ __forceinline__ RGB2YCrCb(const RGB2YCrCb&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2YCrCb functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ float c_YCrCb2RGBCoeffs_f[5] = {CR2RF, CR2GF, CB2GF, CB2BF}; + __constant__ int c_YCrCb2RGBCoeffs_i[5] = {CR2RI, CR2GI, CB2GI, CB2BI}; + + template static __device__ void YCrCb2RGBConvert(const T& src, D* dst) + { + const int b = src.x + CV_DESCALE((src.z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[3], yuv_shift); + const int g = src.x + CV_DESCALE((src.z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[2] + (src.y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[1], yuv_shift); + const int r = src.x + CV_DESCALE((src.y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[0], yuv_shift); + + dst[bidx] = saturate_cast(b); + dst[1] = saturate_cast(g); + dst[bidx^2] = saturate_cast(r); + } + + template static __device__ uint YCrCb2RGBConvert(uint src) + { + const int x = 0xff & (src); + const int y = 0xff & (src >> 8); + const int z = 0xff & (src >> 16); + + const int b = x + CV_DESCALE((z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[3], yuv_shift); + const int g = x + CV_DESCALE((z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[2] + (y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[1], yuv_shift); + const int r = x + CV_DESCALE((y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_i[0], yuv_shift); + + uint dst = 0xffu << 24; + + dst |= saturate_cast(b) << (bidx * 8); + dst |= saturate_cast(g) << 8; + dst |= saturate_cast(r) << ((bidx ^ 2) * 8); + + return dst; + } + + template __device__ __forceinline__ void YCrCb2RGBConvert(const T& src, float* dst) + { + dst[bidx] = src.x + (src.z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_f[3]; + dst[1] = src.x + (src.z - ColorChannel::half()) * c_YCrCb2RGBCoeffs_f[2] + (src.y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_f[1]; + dst[bidx^2] = src.x + (src.y - ColorChannel::half()) * c_YCrCb2RGBCoeffs_f[0]; + } + + template struct YCrCb2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + YCrCb2RGBConvert(src, &dst.x); + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ YCrCb2RGB() {} + __host__ __device__ __forceinline__ YCrCb2RGB(const YCrCb2RGB&) {} + }; + + template struct YCrCb2RGB : unary_function + { + __device__ __forceinline__ uint operator ()(uint src) const + { + return YCrCb2RGBConvert(src); + } + __host__ __device__ __forceinline__ YCrCb2RGB() {} + __host__ __device__ __forceinline__ YCrCb2RGB(const YCrCb2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::YCrCb2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +////////////////////////////////////// RGB <-> XYZ /////////////////////////////////////// + + namespace color_detail + { + __constant__ float c_RGB2XYZ_D65f[9] = { 0.412453f, 0.357580f, 0.180423f, 0.212671f, 0.715160f, 0.072169f, 0.019334f, 0.119193f, 0.950227f }; + __constant__ int c_RGB2XYZ_D65i[9] = { 1689, 1465, 739, 871, 2929, 296, 79, 488, 3892 }; + + template static __device__ __forceinline__ void RGB2XYZConvert(const T* src, D& dst) + { + dst.z = saturate_cast(CV_DESCALE(src[bidx^2] * c_RGB2XYZ_D65i[6] + src[1] * c_RGB2XYZ_D65i[7] + src[bidx] * c_RGB2XYZ_D65i[8], xyz_shift)); + dst.x = saturate_cast(CV_DESCALE(src[bidx^2] * c_RGB2XYZ_D65i[0] + src[1] * c_RGB2XYZ_D65i[1] + src[bidx] * c_RGB2XYZ_D65i[2], xyz_shift)); + dst.y = saturate_cast(CV_DESCALE(src[bidx^2] * c_RGB2XYZ_D65i[3] + src[1] * c_RGB2XYZ_D65i[4] + src[bidx] * c_RGB2XYZ_D65i[5], xyz_shift)); + } + + template static __device__ __forceinline__ uint RGB2XYZConvert(uint src) + { + const uint b = 0xffu & (src >> (bidx * 8)); + const uint g = 0xffu & (src >> 8); + const uint r = 0xffu & (src >> ((bidx ^ 2) * 8)); + + const uint x = saturate_cast(CV_DESCALE(r * c_RGB2XYZ_D65i[0] + g * c_RGB2XYZ_D65i[1] + b * c_RGB2XYZ_D65i[2], xyz_shift)); + const uint y = saturate_cast(CV_DESCALE(r * c_RGB2XYZ_D65i[3] + g * c_RGB2XYZ_D65i[4] + b * c_RGB2XYZ_D65i[5], xyz_shift)); + const uint z = saturate_cast(CV_DESCALE(r * c_RGB2XYZ_D65i[6] + g * c_RGB2XYZ_D65i[7] + b * c_RGB2XYZ_D65i[8], xyz_shift)); + + uint dst = 0; + + dst |= x; + dst |= y << 8; + dst |= z << 16; + + return dst; + } + + template static __device__ __forceinline__ void RGB2XYZConvert(const float* src, D& dst) + { + dst.x = src[bidx^2] * c_RGB2XYZ_D65f[0] + src[1] * c_RGB2XYZ_D65f[1] + src[bidx] * c_RGB2XYZ_D65f[2]; + dst.y = src[bidx^2] * c_RGB2XYZ_D65f[3] + src[1] * c_RGB2XYZ_D65f[4] + src[bidx] * c_RGB2XYZ_D65f[5]; + dst.z = src[bidx^2] * c_RGB2XYZ_D65f[6] + src[1] * c_RGB2XYZ_D65f[7] + src[bidx] * c_RGB2XYZ_D65f[8]; + } + + template struct RGB2XYZ + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2XYZConvert(&src.x, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2XYZ() {} + __host__ __device__ __forceinline__ RGB2XYZ(const RGB2XYZ&) {} + }; + + template struct RGB2XYZ : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return RGB2XYZConvert(src); + } + __host__ __device__ __forceinline__ RGB2XYZ() {} + __host__ __device__ __forceinline__ RGB2XYZ(const RGB2XYZ&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2XYZ functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ float c_XYZ2sRGB_D65f[9] = { 3.240479f, -1.53715f, -0.498535f, -0.969256f, 1.875991f, 0.041556f, 0.055648f, -0.204043f, 1.057311f }; + __constant__ int c_XYZ2sRGB_D65i[9] = { 13273, -6296, -2042, -3970, 7684, 170, 228, -836, 4331 }; + + template static __device__ __forceinline__ void XYZ2RGBConvert(const T& src, D* dst) + { + dst[bidx^2] = saturate_cast(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[0] + src.y * c_XYZ2sRGB_D65i[1] + src.z * c_XYZ2sRGB_D65i[2], xyz_shift)); + dst[1] = saturate_cast(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[3] + src.y * c_XYZ2sRGB_D65i[4] + src.z * c_XYZ2sRGB_D65i[5], xyz_shift)); + dst[bidx] = saturate_cast(CV_DESCALE(src.x * c_XYZ2sRGB_D65i[6] + src.y * c_XYZ2sRGB_D65i[7] + src.z * c_XYZ2sRGB_D65i[8], xyz_shift)); + } + + template static __device__ __forceinline__ uint XYZ2RGBConvert(uint src) + { + const int x = 0xff & src; + const int y = 0xff & (src >> 8); + const int z = 0xff & (src >> 16); + + const uint r = saturate_cast(CV_DESCALE(x * c_XYZ2sRGB_D65i[0] + y * c_XYZ2sRGB_D65i[1] + z * c_XYZ2sRGB_D65i[2], xyz_shift)); + const uint g = saturate_cast(CV_DESCALE(x * c_XYZ2sRGB_D65i[3] + y * c_XYZ2sRGB_D65i[4] + z * c_XYZ2sRGB_D65i[5], xyz_shift)); + const uint b = saturate_cast(CV_DESCALE(x * c_XYZ2sRGB_D65i[6] + y * c_XYZ2sRGB_D65i[7] + z * c_XYZ2sRGB_D65i[8], xyz_shift)); + + uint dst = 0xffu << 24; + + dst |= b << (bidx * 8); + dst |= g << 8; + dst |= r << ((bidx ^ 2) * 8); + + return dst; + } + + template static __device__ __forceinline__ void XYZ2RGBConvert(const T& src, float* dst) + { + dst[bidx^2] = src.x * c_XYZ2sRGB_D65f[0] + src.y * c_XYZ2sRGB_D65f[1] + src.z * c_XYZ2sRGB_D65f[2]; + dst[1] = src.x * c_XYZ2sRGB_D65f[3] + src.y * c_XYZ2sRGB_D65f[4] + src.z * c_XYZ2sRGB_D65f[5]; + dst[bidx] = src.x * c_XYZ2sRGB_D65f[6] + src.y * c_XYZ2sRGB_D65f[7] + src.z * c_XYZ2sRGB_D65f[8]; + } + + template struct XYZ2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + XYZ2RGBConvert(src, &dst.x); + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ XYZ2RGB() {} + __host__ __device__ __forceinline__ XYZ2RGB(const XYZ2RGB&) {} + }; + + template struct XYZ2RGB : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return XYZ2RGBConvert(src); + } + __host__ __device__ __forceinline__ XYZ2RGB() {} + __host__ __device__ __forceinline__ XYZ2RGB(const XYZ2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::XYZ2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +////////////////////////////////////// RGB <-> HSV /////////////////////////////////////// + + namespace color_detail + { + __constant__ int c_HsvDivTable [256] = {0, 1044480, 522240, 348160, 261120, 208896, 174080, 149211, 130560, 116053, 104448, 94953, 87040, 80345, 74606, 69632, 65280, 61440, 58027, 54973, 52224, 49737, 47476, 45412, 43520, 41779, 40172, 38684, 37303, 36017, 34816, 33693, 32640, 31651, 30720, 29842, 29013, 28229, 27486, 26782, 26112, 25475, 24869, 24290, 23738, 23211, 22706, 22223, 21760, 21316, 20890, 20480, 20086, 19707, 19342, 18991, 18651, 18324, 18008, 17703, 17408, 17123, 16846, 16579, 16320, 16069, 15825, 15589, 15360, 15137, 14921, 14711, 14507, 14308, 14115, 13926, 13743, 13565, 13391, 13221, 13056, 12895, 12738, 12584, 12434, 12288, 12145, 12006, 11869, 11736, 11605, 11478, 11353, 11231, 11111, 10995, 10880, 10768, 10658, 10550, 10445, 10341, 10240, 10141, 10043, 9947, 9854, 9761, 9671, 9582, 9495, 9410, 9326, 9243, 9162, 9082, 9004, 8927, 8852, 8777, 8704, 8632, 8561, 8492, 8423, 8356, 8290, 8224, 8160, 8097, 8034, 7973, 7913, 7853, 7795, 7737, 7680, 7624, 7569, 7514, 7461, 7408, 7355, 7304, 7253, 7203, 7154, 7105, 7057, 7010, 6963, 6917, 6872, 6827, 6782, 6739, 6695, 6653, 6611, 6569, 6528, 6487, 6447, 6408, 6369, 6330, 6292, 6254, 6217, 6180, 6144, 6108, 6073, 6037, 6003, 5968, 5935, 5901, 5868, 5835, 5803, 5771, 5739, 5708, 5677, 5646, 5615, 5585, 5556, 5526, 5497, 5468, 5440, 5412, 5384, 5356, 5329, 5302, 5275, 5249, 5222, 5196, 5171, 5145, 5120, 5095, 5070, 5046, 5022, 4998, 4974, 4950, 4927, 4904, 4881, 4858, 4836, 4813, 4791, 4769, 4748, 4726, 4705, 4684, 4663, 4642, 4622, 4601, 4581, 4561, 4541, 4522, 4502, 4483, 4464, 4445, 4426, 4407, 4389, 4370, 4352, 4334, 4316, 4298, 4281, 4263, 4246, 4229, 4212, 4195, 4178, 4161, 4145, 4128, 4112, 4096}; + __constant__ int c_HsvDivTable180[256] = {0, 122880, 61440, 40960, 30720, 24576, 20480, 17554, 15360, 13653, 12288, 11171, 10240, 9452, 8777, 8192, 7680, 7228, 6827, 6467, 6144, 5851, 5585, 5343, 5120, 4915, 4726, 4551, 4389, 4237, 4096, 3964, 3840, 3724, 3614, 3511, 3413, 3321, 3234, 3151, 3072, 2997, 2926, 2858, 2793, 2731, 2671, 2614, 2560, 2508, 2458, 2409, 2363, 2318, 2276, 2234, 2194, 2156, 2119, 2083, 2048, 2014, 1982, 1950, 1920, 1890, 1862, 1834, 1807, 1781, 1755, 1731, 1707, 1683, 1661, 1638, 1617, 1596, 1575, 1555, 1536, 1517, 1499, 1480, 1463, 1446, 1429, 1412, 1396, 1381, 1365, 1350, 1336, 1321, 1307, 1293, 1280, 1267, 1254, 1241, 1229, 1217, 1205, 1193, 1182, 1170, 1159, 1148, 1138, 1127, 1117, 1107, 1097, 1087, 1078, 1069, 1059, 1050, 1041, 1033, 1024, 1016, 1007, 999, 991, 983, 975, 968, 960, 953, 945, 938, 931, 924, 917, 910, 904, 897, 890, 884, 878, 871, 865, 859, 853, 847, 842, 836, 830, 825, 819, 814, 808, 803, 798, 793, 788, 783, 778, 773, 768, 763, 759, 754, 749, 745, 740, 736, 731, 727, 723, 719, 714, 710, 706, 702, 698, 694, 690, 686, 683, 679, 675, 671, 668, 664, 661, 657, 654, 650, 647, 643, 640, 637, 633, 630, 627, 624, 621, 617, 614, 611, 608, 605, 602, 599, 597, 594, 591, 588, 585, 582, 580, 577, 574, 572, 569, 566, 564, 561, 559, 556, 554, 551, 549, 546, 544, 541, 539, 537, 534, 532, 530, 527, 525, 523, 521, 518, 516, 514, 512, 510, 508, 506, 504, 502, 500, 497, 495, 493, 492, 490, 488, 486, 484, 482}; + __constant__ int c_HsvDivTable256[256] = {0, 174763, 87381, 58254, 43691, 34953, 29127, 24966, 21845, 19418, 17476, 15888, 14564, 13443, 12483, 11651, 10923, 10280, 9709, 9198, 8738, 8322, 7944, 7598, 7282, 6991, 6722, 6473, 6242, 6026, 5825, 5638, 5461, 5296, 5140, 4993, 4855, 4723, 4599, 4481, 4369, 4263, 4161, 4064, 3972, 3884, 3799, 3718, 3641, 3567, 3495, 3427, 3361, 3297, 3236, 3178, 3121, 3066, 3013, 2962, 2913, 2865, 2819, 2774, 2731, 2689, 2648, 2608, 2570, 2533, 2497, 2461, 2427, 2394, 2362, 2330, 2300, 2270, 2241, 2212, 2185, 2158, 2131, 2106, 2081, 2056, 2032, 2009, 1986, 1964, 1942, 1920, 1900, 1879, 1859, 1840, 1820, 1802, 1783, 1765, 1748, 1730, 1713, 1697, 1680, 1664, 1649, 1633, 1618, 1603, 1589, 1574, 1560, 1547, 1533, 1520, 1507, 1494, 1481, 1469, 1456, 1444, 1432, 1421, 1409, 1398, 1387, 1376, 1365, 1355, 1344, 1334, 1324, 1314, 1304, 1295, 1285, 1276, 1266, 1257, 1248, 1239, 1231, 1222, 1214, 1205, 1197, 1189, 1181, 1173, 1165, 1157, 1150, 1142, 1135, 1128, 1120, 1113, 1106, 1099, 1092, 1085, 1079, 1072, 1066, 1059, 1053, 1046, 1040, 1034, 1028, 1022, 1016, 1010, 1004, 999, 993, 987, 982, 976, 971, 966, 960, 955, 950, 945, 940, 935, 930, 925, 920, 915, 910, 906, 901, 896, 892, 887, 883, 878, 874, 869, 865, 861, 857, 853, 848, 844, 840, 836, 832, 828, 824, 820, 817, 813, 809, 805, 802, 798, 794, 791, 787, 784, 780, 777, 773, 770, 767, 763, 760, 757, 753, 750, 747, 744, 741, 737, 734, 731, 728, 725, 722, 719, 716, 713, 710, 708, 705, 702, 699, 696, 694, 691, 688, 685}; + + template static __device__ void RGB2HSVConvert(const uchar* src, D& dst) + { + const int hsv_shift = 12; + const int* hdiv_table = hr == 180 ? c_HsvDivTable180 : c_HsvDivTable256; + + int b = src[bidx], g = src[1], r = src[bidx^2]; + int h, s, v = b; + int vmin = b, diff; + int vr, vg; + + v = ::max(v, g); + v = ::max(v, r); + vmin = ::min(vmin, g); + vmin = ::min(vmin, r); + + diff = v - vmin; + vr = (v == r) * -1; + vg = (v == g) * -1; + + s = (diff * c_HsvDivTable[v] + (1 << (hsv_shift-1))) >> hsv_shift; + h = (vr & (g - b)) + (~vr & ((vg & (b - r + 2 * diff)) + ((~vg) & (r - g + 4 * diff)))); + h = (h * hdiv_table[diff] + (1 << (hsv_shift-1))) >> hsv_shift; + h += (h < 0) * hr; + + dst.x = saturate_cast(h); + dst.y = (uchar)s; + dst.z = (uchar)v; + } + + template static __device__ uint RGB2HSVConvert(uint src) + { + const int hsv_shift = 12; + const int* hdiv_table = hr == 180 ? c_HsvDivTable180 : c_HsvDivTable256; + + const int b = 0xff & (src >> (bidx * 8)); + const int g = 0xff & (src >> 8); + const int r = 0xff & (src >> ((bidx ^ 2) * 8)); + + int h, s, v = b; + int vmin = b, diff; + int vr, vg; + + v = ::max(v, g); + v = ::max(v, r); + vmin = ::min(vmin, g); + vmin = ::min(vmin, r); + + diff = v - vmin; + vr = (v == r) * -1; + vg = (v == g) * -1; + + s = (diff * c_HsvDivTable[v] + (1 << (hsv_shift-1))) >> hsv_shift; + h = (vr & (g - b)) + (~vr & ((vg & (b - r + 2 * diff)) + ((~vg) & (r - g + 4 * diff)))); + h = (h * hdiv_table[diff] + (1 << (hsv_shift-1))) >> hsv_shift; + h += (h < 0) * hr; + + uint dst = 0; + + dst |= saturate_cast(h); + dst |= (0xffu & s) << 8; + dst |= (0xffu & v) << 16; + + return dst; + } + + template static __device__ void RGB2HSVConvert(const float* src, D& dst) + { + const float hscale = hr * (1.f / 360.f); + + float b = src[bidx], g = src[1], r = src[bidx^2]; + float h, s, v; + + float vmin, diff; + + v = vmin = r; + v = fmax(v, g); + v = fmax(v, b); + vmin = fmin(vmin, g); + vmin = fmin(vmin, b); + + diff = v - vmin; + s = diff / (float)(::fabs(v) + numeric_limits::epsilon()); + diff = (float)(60. / (diff + numeric_limits::epsilon())); + + h = (v == r) * (g - b) * diff; + h += (v != r && v == g) * ((b - r) * diff + 120.f); + h += (v != r && v != g) * ((r - g) * diff + 240.f); + h += (h < 0) * 360.f; + + dst.x = h * hscale; + dst.y = s; + dst.z = v; + } + + template struct RGB2HSV + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2HSVConvert(&src.x, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2HSV() {} + __host__ __device__ __forceinline__ RGB2HSV(const RGB2HSV&) {} + }; + + template struct RGB2HSV : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return RGB2HSVConvert(src); + } + __host__ __device__ __forceinline__ RGB2HSV() {} + __host__ __device__ __forceinline__ RGB2HSV(const RGB2HSV&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HSV functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HSV functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HSV functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HSV functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ int c_HsvSectorData[6][3] = { {1,3,0}, {1,0,2}, {3,0,1}, {0,2,1}, {0,1,3}, {2,1,0} }; + + template static __device__ void HSV2RGBConvert(const T& src, float* dst) + { + const float hscale = 6.f / hr; + + float h = src.x, s = src.y, v = src.z; + float b = v, g = v, r = v; + + if (s != 0) + { + h *= hscale; + + if( h < 0 ) + do h += 6; while( h < 0 ); + else if( h >= 6 ) + do h -= 6; while( h >= 6 ); + + int sector = __float2int_rd(h); + h -= sector; + + if ( (unsigned)sector >= 6u ) + { + sector = 0; + h = 0.f; + } + + float tab[4]; + tab[0] = v; + tab[1] = v * (1.f - s); + tab[2] = v * (1.f - s * h); + tab[3] = v * (1.f - s * (1.f - h)); + + b = tab[c_HsvSectorData[sector][0]]; + g = tab[c_HsvSectorData[sector][1]]; + r = tab[c_HsvSectorData[sector][2]]; + } + + dst[bidx] = b; + dst[1] = g; + dst[bidx^2] = r; + } + + template static __device__ void HSV2RGBConvert(const T& src, uchar* dst) + { + float3 buf; + + buf.x = src.x; + buf.y = src.y * (1.f / 255.f); + buf.z = src.z * (1.f / 255.f); + + HSV2RGBConvert(buf, &buf.x); + + dst[0] = saturate_cast(buf.x * 255.f); + dst[1] = saturate_cast(buf.y * 255.f); + dst[2] = saturate_cast(buf.z * 255.f); + } + + template static __device__ uint HSV2RGBConvert(uint src) + { + float3 buf; + + buf.x = src & 0xff; + buf.y = ((src >> 8) & 0xff) * (1.f/255.f); + buf.z = ((src >> 16) & 0xff) * (1.f/255.f); + + HSV2RGBConvert(buf, &buf.x); + + uint dst = 0xffu << 24; + + dst |= saturate_cast(buf.x * 255.f); + dst |= saturate_cast(buf.y * 255.f) << 8; + dst |= saturate_cast(buf.z * 255.f) << 16; + + return dst; + } + + template struct HSV2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + HSV2RGBConvert(src, &dst.x); + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ HSV2RGB() {} + __host__ __device__ __forceinline__ HSV2RGB(const HSV2RGB&) {} + }; + + template struct HSV2RGB : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return HSV2RGBConvert(src); + } + __host__ __device__ __forceinline__ HSV2RGB() {} + __host__ __device__ __forceinline__ HSV2RGB(const HSV2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::HSV2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::HSV2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::HSV2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::HSV2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +/////////////////////////////////////// RGB <-> HLS //////////////////////////////////////// + + namespace color_detail + { + template static __device__ void RGB2HLSConvert(const float* src, D& dst) + { + const float hscale = hr * (1.f / 360.f); + + float b = src[bidx], g = src[1], r = src[bidx^2]; + float h = 0.f, s = 0.f, l; + float vmin, vmax, diff; + + vmax = vmin = r; + vmax = fmax(vmax, g); + vmax = fmax(vmax, b); + vmin = fmin(vmin, g); + vmin = fmin(vmin, b); + + diff = vmax - vmin; + l = (vmax + vmin) * 0.5f; + + if (diff > numeric_limits::epsilon()) + { + s = (l < 0.5f) * diff / (vmax + vmin); + s += (l >= 0.5f) * diff / (2.0f - vmax - vmin); + + diff = 60.f / diff; + + h = (vmax == r) * (g - b) * diff; + h += (vmax != r && vmax == g) * ((b - r) * diff + 120.f); + h += (vmax != r && vmax != g) * ((r - g) * diff + 240.f); + h += (h < 0.f) * 360.f; + } + + dst.x = h * hscale; + dst.y = l; + dst.z = s; + } + + template static __device__ void RGB2HLSConvert(const uchar* src, D& dst) + { + float3 buf; + + buf.x = src[0] * (1.f / 255.f); + buf.y = src[1] * (1.f / 255.f); + buf.z = src[2] * (1.f / 255.f); + + RGB2HLSConvert(&buf.x, buf); + + dst.x = saturate_cast(buf.x); + dst.y = saturate_cast(buf.y*255.f); + dst.z = saturate_cast(buf.z*255.f); + } + + template static __device__ uint RGB2HLSConvert(uint src) + { + float3 buf; + + buf.x = (0xff & src) * (1.f / 255.f); + buf.y = (0xff & (src >> 8)) * (1.f / 255.f); + buf.z = (0xff & (src >> 16)) * (1.f / 255.f); + + RGB2HLSConvert(&buf.x, buf); + + uint dst = 0xffu << 24; + + dst |= saturate_cast(buf.x); + dst |= saturate_cast(buf.y * 255.f) << 8; + dst |= saturate_cast(buf.z * 255.f) << 16; + + return dst; + } + + template struct RGB2HLS + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2HLSConvert(&src.x, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2HLS() {} + __host__ __device__ __forceinline__ RGB2HLS(const RGB2HLS&) {} + }; + + template struct RGB2HLS : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return RGB2HLSConvert(src); + } + __host__ __device__ __forceinline__ RGB2HLS() {} + __host__ __device__ __forceinline__ RGB2HLS(const RGB2HLS&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HLS functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HLS functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HLS functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2HLS functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ int c_HlsSectorData[6][3] = { {1,3,0}, {1,0,2}, {3,0,1}, {0,2,1}, {0,1,3}, {2,1,0} }; + + template static __device__ void HLS2RGBConvert(const T& src, float* dst) + { + const float hscale = 6.0f / hr; + + float h = src.x, l = src.y, s = src.z; + float b = l, g = l, r = l; + + if (s != 0) + { + float p2 = (l <= 0.5f) * l * (1 + s); + p2 += (l > 0.5f) * (l + s - l * s); + float p1 = 2 * l - p2; + + h *= hscale; + + if( h < 0 ) + do h += 6; while( h < 0 ); + else if( h >= 6 ) + do h -= 6; while( h >= 6 ); + + int sector; + sector = __float2int_rd(h); + + h -= sector; + + float tab[4]; + tab[0] = p2; + tab[1] = p1; + tab[2] = p1 + (p2 - p1) * (1 - h); + tab[3] = p1 + (p2 - p1) * h; + + b = tab[c_HlsSectorData[sector][0]]; + g = tab[c_HlsSectorData[sector][1]]; + r = tab[c_HlsSectorData[sector][2]]; + } + + dst[bidx] = b; + dst[1] = g; + dst[bidx^2] = r; + } + + template static __device__ void HLS2RGBConvert(const T& src, uchar* dst) + { + float3 buf; + + buf.x = src.x; + buf.y = src.y * (1.f / 255.f); + buf.z = src.z * (1.f / 255.f); + + HLS2RGBConvert(buf, &buf.x); + + dst[0] = saturate_cast(buf.x * 255.f); + dst[1] = saturate_cast(buf.y * 255.f); + dst[2] = saturate_cast(buf.z * 255.f); + } + + template static __device__ uint HLS2RGBConvert(uint src) + { + float3 buf; + + buf.x = 0xff & src; + buf.y = (0xff & (src >> 8)) * (1.f / 255.f); + buf.z = (0xff & (src >> 16)) * (1.f / 255.f); + + HLS2RGBConvert(buf, &buf.x); + + uint dst = 0xffu << 24; + + dst |= saturate_cast(buf.x * 255.f); + dst |= saturate_cast(buf.y * 255.f) << 8; + dst |= saturate_cast(buf.z * 255.f) << 16; + + return dst; + } + + template struct HLS2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + HLS2RGBConvert(src, &dst.x); + setAlpha(dst, ColorChannel::max()); + + return dst; + } + __host__ __device__ __forceinline__ HLS2RGB() {} + __host__ __device__ __forceinline__ HLS2RGB(const HLS2RGB&) {} + }; + + template struct HLS2RGB : unary_function + { + __device__ __forceinline__ uint operator()(uint src) const + { + return HLS2RGBConvert(src); + } + __host__ __device__ __forceinline__ HLS2RGB() {} + __host__ __device__ __forceinline__ HLS2RGB(const HLS2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(name, scn, dcn, bidx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::HLS2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::HLS2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::HLS2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; \ + template <> struct name ## _full_traits \ + { \ + typedef ::cv::cuda::device::color_detail::HLS2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////////// RGB <-> Lab ///////////////////////////////////// + + namespace color_detail + { + enum + { + LAB_CBRT_TAB_SIZE = 1024, + GAMMA_TAB_SIZE = 1024, + lab_shift = xyz_shift, + gamma_shift = 3, + lab_shift2 = (lab_shift + gamma_shift), + LAB_CBRT_TAB_SIZE_B = (256 * 3 / 2 * (1 << gamma_shift)) + }; + + __constant__ ushort c_sRGBGammaTab_b[] = {0,1,1,2,2,3,4,4,5,6,6,7,8,8,9,10,11,11,12,13,14,15,16,17,19,20,21,22,24,25,26,28,29,31,33,34,36,38,40,41,43,45,47,49,51,54,56,58,60,63,65,68,70,73,75,78,81,83,86,89,92,95,98,101,105,108,111,115,118,121,125,129,132,136,140,144,147,151,155,160,164,168,172,176,181,185,190,194,199,204,209,213,218,223,228,233,239,244,249,255,260,265,271,277,282,288,294,300,306,312,318,324,331,337,343,350,356,363,370,376,383,390,397,404,411,418,426,433,440,448,455,463,471,478,486,494,502,510,518,527,535,543,552,560,569,578,586,595,604,613,622,631,641,650,659,669,678,688,698,707,717,727,737,747,757,768,778,788,799,809,820,831,842,852,863,875,886,897,908,920,931,943,954,966,978,990,1002,1014,1026,1038,1050,1063,1075,1088,1101,1113,1126,1139,1152,1165,1178,1192,1205,1218,1232,1245,1259,1273,1287,1301,1315,1329,1343,1357,1372,1386,1401,1415,1430,1445,1460,1475,1490,1505,1521,1536,1551,1567,1583,1598,1614,1630,1646,1662,1678,1695,1711,1728,1744,1761,1778,1794,1811,1828,1846,1863,1880,1897,1915,1933,1950,1968,1986,2004,2022,2040}; + + __device__ __forceinline__ int LabCbrt_b(int i) + { + float x = i * (1.f / (255.f * (1 << gamma_shift))); + return (1 << lab_shift2) * (x < 0.008856f ? x * 7.787f + 0.13793103448275862f : ::cbrtf(x)); + } + + template + __device__ __forceinline__ void RGB2LabConvert_b(const T& src, D& dst) + { + const int Lscale = (116 * 255 + 50) / 100; + const int Lshift = -((16 * 255 * (1 << lab_shift2) + 50) / 100); + + int B = blueIdx == 0 ? src.x : src.z; + int G = src.y; + int R = blueIdx == 0 ? src.z : src.x; + + if (srgb) + { + B = c_sRGBGammaTab_b[B]; + G = c_sRGBGammaTab_b[G]; + R = c_sRGBGammaTab_b[R]; + } + else + { + B <<= 3; + G <<= 3; + R <<= 3; + } + + int fX = LabCbrt_b(CV_DESCALE(B * 778 + G * 1541 + R * 1777, lab_shift)); + int fY = LabCbrt_b(CV_DESCALE(B * 296 + G * 2929 + R * 871, lab_shift)); + int fZ = LabCbrt_b(CV_DESCALE(B * 3575 + G * 448 + R * 73, lab_shift)); + + int L = CV_DESCALE(Lscale * fY + Lshift, lab_shift2); + int a = CV_DESCALE(500 * (fX - fY) + 128 * (1 << lab_shift2), lab_shift2); + int b = CV_DESCALE(200 * (fY - fZ) + 128 * (1 << lab_shift2), lab_shift2); + + dst.x = saturate_cast(L); + dst.y = saturate_cast(a); + dst.z = saturate_cast(b); + } + + __device__ __forceinline__ float splineInterpolate(float x, const float* tab, int n) + { + int ix = ::min(::max(int(x), 0), n-1); + x -= ix; + tab += ix * 4; + return ((tab[3] * x + tab[2]) * x + tab[1]) * x + tab[0]; + } + + __constant__ float c_sRGBGammaTab[] = {0,7.55853e-05,0.,-7.51331e-13,7.55853e-05,7.55853e-05,-2.25399e-12,3.75665e-12,0.000151171,7.55853e-05,9.01597e-12,-6.99932e-12,0.000226756,7.55853e-05,-1.1982e-11,2.41277e-12,0.000302341,7.55853e-05,-4.74369e-12,1.19001e-11,0.000377927,7.55853e-05,3.09568e-11,-2.09095e-11,0.000453512,7.55853e-05,-3.17718e-11,1.35303e-11,0.000529097,7.55853e-05,8.81905e-12,-4.10782e-12,0.000604683,7.55853e-05,-3.50439e-12,2.90097e-12,0.000680268,7.55853e-05,5.19852e-12,-7.49607e-12,0.000755853,7.55853e-05,-1.72897e-11,2.70833e-11,0.000831439,7.55854e-05,6.39602e-11,-4.26295e-11,0.000907024,7.55854e-05,-6.39282e-11,2.70193e-11,0.000982609,7.55853e-05,1.71298e-11,-7.24017e-12,0.00105819,7.55853e-05,-4.59077e-12,1.94137e-12,0.00113378,7.55853e-05,1.23333e-12,-5.25291e-13,0.00120937,7.55853e-05,-3.42545e-13,1.59799e-13,0.00128495,7.55853e-05,1.36852e-13,-1.13904e-13,0.00136054,7.55853e-05,-2.04861e-13,2.95818e-13,0.00143612,7.55853e-05,6.82594e-13,-1.06937e-12,0.00151171,7.55853e-05,-2.52551e-12,3.98166e-12,0.00158729,7.55853e-05,9.41946e-12,-1.48573e-11,0.00166288,7.55853e-05,-3.51523e-11,5.54474e-11,0.00173846,7.55854e-05,1.3119e-10,-9.0517e-11,0.00181405,7.55854e-05,-1.40361e-10,7.37899e-11,0.00188963,7.55853e-05,8.10085e-11,-8.82272e-11,0.00196522,7.55852e-05,-1.83673e-10,1.62704e-10,0.0020408,7.55853e-05,3.04438e-10,-2.13341e-10,0.00211639,7.55853e-05,-3.35586e-10,2.25e-10,0.00219197,7.55853e-05,3.39414e-10,-2.20997e-10,0.00226756,7.55853e-05,-3.23576e-10,1.93326e-10,0.00234315,7.55853e-05,2.564e-10,-8.66446e-11,0.00241873,7.55855e-05,-3.53328e-12,-7.9578e-11,0.00249432,7.55853e-05,-2.42267e-10,1.72126e-10,0.0025699,7.55853e-05,2.74111e-10,-1.43265e-10,0.00264549,7.55854e-05,-1.55683e-10,-6.47292e-11,0.00272107,7.55849e-05,-3.4987e-10,8.67842e-10,0.00279666,7.55868e-05,2.25366e-09,-3.8723e-09,0.00287224,7.55797e-05,-9.36325e-09,1.5087e-08,0.00294783,7.56063e-05,3.58978e-08,-5.69415e-08,0.00302341,7.55072e-05,-1.34927e-07,2.13144e-07,0.003099,7.58768e-05,5.04507e-07,1.38713e-07,0.00317552,7.7302e-05,9.20646e-07,-1.55186e-07,0.00325359,7.86777e-05,4.55087e-07,4.26813e-08,0.00333276,7.97159e-05,5.83131e-07,-1.06495e-08,0.00341305,8.08502e-05,5.51182e-07,3.87467e-09,0.00349446,8.19642e-05,5.62806e-07,-1.92586e-10,0.00357698,8.30892e-05,5.62228e-07,1.0866e-09,0.00366063,8.4217e-05,5.65488e-07,5.02818e-10,0.00374542,8.53494e-05,5.66997e-07,8.60211e-10,0.00383133,8.6486e-05,5.69577e-07,7.13044e-10,0.00391839,8.76273e-05,5.71716e-07,4.78527e-10,0.00400659,8.87722e-05,5.73152e-07,1.09818e-09,0.00409594,8.99218e-05,5.76447e-07,2.50964e-10,0.00418644,9.10754e-05,5.772e-07,1.15762e-09,0.00427809,9.22333e-05,5.80672e-07,2.40865e-10,0.0043709,9.33954e-05,5.81395e-07,1.13854e-09,0.00446488,9.45616e-05,5.84811e-07,3.27267e-10,0.00456003,9.57322e-05,5.85792e-07,8.1197e-10,0.00465635,9.69062e-05,5.88228e-07,6.15823e-10,0.00475384,9.80845e-05,5.90076e-07,9.15747e-10,0.00485252,9.92674e-05,5.92823e-07,3.778e-10,0.00495238,0.000100454,5.93956e-07,8.32623e-10,0.00505343,0.000101645,5.96454e-07,4.82695e-10,0.00515567,0.000102839,5.97902e-07,9.61904e-10,0.00525911,0.000104038,6.00788e-07,3.26281e-10,0.00536375,0.00010524,6.01767e-07,9.926e-10,0.00546959,0.000106447,6.04745e-07,3.59933e-10,0.00557664,0.000107657,6.05824e-07,8.2728e-10,0.0056849,0.000108871,6.08306e-07,5.21898e-10,0.00579438,0.00011009,6.09872e-07,8.10492e-10,0.00590508,0.000111312,6.12303e-07,4.27046e-10,0.00601701,0.000112538,6.13585e-07,7.40878e-10,0.00613016,0.000113767,6.15807e-07,8.00469e-10,0.00624454,0.000115001,6.18209e-07,2.48178e-10,0.00636016,0.000116238,6.18953e-07,1.00073e-09,0.00647702,0.000117479,6.21955e-07,4.05654e-10,0.00659512,0.000118724,6.23172e-07,6.36192e-10,0.00671447,0.000119973,6.25081e-07,7.74927e-10,0.00683507,0.000121225,6.27406e-07,4.54975e-10,0.00695692,0.000122481,6.28771e-07,6.64841e-10,0.00708003,0.000123741,6.30765e-07,6.10972e-10,0.00720441,0.000125004,6.32598e-07,6.16543e-10,0.00733004,0.000126271,6.34448e-07,6.48204e-10,0.00745695,0.000127542,6.36392e-07,5.15835e-10,0.00758513,0.000128816,6.3794e-07,5.48103e-10,0.00771458,0.000130094,6.39584e-07,1.01706e-09,0.00784532,0.000131376,6.42635e-07,4.0283e-11,0.00797734,0.000132661,6.42756e-07,6.84471e-10,0.00811064,0.000133949,6.4481e-07,9.47144e-10,0.00824524,0.000135241,6.47651e-07,1.83472e-10,0.00838112,0.000136537,6.48201e-07,1.11296e-09,0.00851831,0.000137837,6.5154e-07,2.13163e-11,0.0086568,0.00013914,6.51604e-07,6.64462e-10,0.00879659,0.000140445,6.53598e-07,1.04613e-09,0.00893769,0.000141756,6.56736e-07,-1.92377e-10,0.0090801,0.000143069,6.56159e-07,1.58601e-09,0.00922383,0.000144386,6.60917e-07,-5.63754e-10,0.00936888,0.000145706,6.59226e-07,1.60033e-09,0.00951524,0.000147029,6.64027e-07,-2.49543e-10,0.00966294,0.000148356,6.63278e-07,1.26043e-09,0.00981196,0.000149687,6.67059e-07,-1.35572e-10,0.00996231,0.00015102,6.66653e-07,1.14458e-09,0.010114,0.000152357,6.70086e-07,2.13864e-10,0.010267,0.000153698,6.70728e-07,7.93856e-10,0.0104214,0.000155042,6.73109e-07,3.36077e-10,0.0105771,0.000156389,6.74118e-07,6.55765e-10,0.0107342,0.000157739,6.76085e-07,7.66211e-10,0.0108926,0.000159094,6.78384e-07,4.66116e-12,0.0110524,0.000160451,6.78398e-07,1.07775e-09,0.0112135,0.000161811,6.81631e-07,3.41023e-10,0.011376,0.000163175,6.82654e-07,3.5205e-10,0.0115398,0.000164541,6.8371e-07,1.04473e-09,0.0117051,0.000165912,6.86844e-07,1.25757e-10,0.0118717,0.000167286,6.87222e-07,3.14818e-10,0.0120396,0.000168661,6.88166e-07,1.40886e-09,0.012209,0.000170042,6.92393e-07,-3.62244e-10,0.0123797,0.000171425,6.91306e-07,9.71397e-10,0.0125518,0.000172811,6.9422e-07,2.02003e-10,0.0127253,0.0001742,6.94826e-07,1.01448e-09,0.0129002,0.000175593,6.97869e-07,3.96653e-10,0.0130765,0.00017699,6.99059e-07,1.92927e-10,0.0132542,0.000178388,6.99638e-07,6.94305e-10,0.0134333,0.00017979,7.01721e-07,7.55108e-10,0.0136138,0.000181195,7.03986e-07,1.05918e-11,0.0137957,0.000182603,7.04018e-07,1.06513e-09,0.013979,0.000184015,7.07214e-07,3.85512e-10,0.0141637,0.00018543,7.0837e-07,1.86769e-10,0.0143499,0.000186848,7.0893e-07,7.30116e-10,0.0145374,0.000188268,7.11121e-07,6.17983e-10,0.0147264,0.000189692,7.12975e-07,5.23282e-10,0.0149168,0.000191119,7.14545e-07,8.28398e-11,0.0151087,0.000192549,7.14793e-07,1.0081e-09,0.0153019,0.000193981,7.17817e-07,5.41244e-10,0.0154966,0.000195418,7.19441e-07,-3.7907e-10,0.0156928,0.000196856,7.18304e-07,1.90641e-09,0.0158903,0.000198298,7.24023e-07,-7.27387e-10,0.0160893,0.000199744,7.21841e-07,1.00317e-09,0.0162898,0.000201191,7.24851e-07,4.39949e-10,0.0164917,0.000202642,7.2617e-07,9.6234e-10,0.0166951,0.000204097,7.29057e-07,-5.64019e-10,0.0168999,0.000205554,7.27365e-07,1.29374e-09,0.0171062,0.000207012,7.31247e-07,9.77025e-10,0.017314,0.000208478,7.34178e-07,-1.47651e-09,0.0175232,0.000209942,7.29748e-07,3.06636e-09,0.0177338,0.00021141,7.38947e-07,-1.47573e-09,0.017946,0.000212884,7.3452e-07,9.7386e-10,0.0181596,0.000214356,7.37442e-07,1.30562e-09,0.0183747,0.000215835,7.41358e-07,-6.08376e-10,0.0185913,0.000217315,7.39533e-07,1.12785e-09,0.0188093,0.000218798,7.42917e-07,-1.77711e-10,0.0190289,0.000220283,7.42384e-07,1.44562e-09,0.0192499,0.000221772,7.46721e-07,-1.68825e-11,0.0194724,0.000223266,7.4667e-07,4.84533e-10,0.0196964,0.000224761,7.48124e-07,-5.85298e-11,0.0199219,0.000226257,7.47948e-07,1.61217e-09,0.0201489,0.000227757,7.52785e-07,-8.02136e-10,0.0203775,0.00022926,7.50378e-07,1.59637e-09,0.0206075,0.000230766,7.55167e-07,4.47168e-12,0.020839,0.000232276,7.55181e-07,2.48387e-10,0.021072,0.000233787,7.55926e-07,8.6474e-10,0.0213066,0.000235302,7.5852e-07,1.78299e-11,0.0215426,0.000236819,7.58573e-07,9.26567e-10,0.0217802,0.000238339,7.61353e-07,1.34529e-12,0.0220193,0.000239862,7.61357e-07,9.30659e-10,0.0222599,0.000241387,7.64149e-07,1.34529e-12,0.0225021,0.000242915,7.64153e-07,9.26567e-10,0.0227458,0.000244447,7.66933e-07,1.76215e-11,0.022991,0.00024598,7.66986e-07,8.65536e-10,0.0232377,0.000247517,7.69582e-07,2.45677e-10,0.023486,0.000249057,7.70319e-07,1.44193e-11,0.0237358,0.000250598,7.70363e-07,1.55918e-09,0.0239872,0.000252143,7.7504e-07,-6.63173e-10,0.0242401,0.000253691,7.73051e-07,1.09357e-09,0.0244946,0.000255241,7.76331e-07,1.41919e-11,0.0247506,0.000256793,7.76374e-07,7.12248e-10,0.0250082,0.000258348,7.78511e-07,8.62049e-10,0.0252673,0.000259908,7.81097e-07,-4.35061e-10,0.025528,0.000261469,7.79792e-07,8.7825e-10,0.0257902,0.000263031,7.82426e-07,6.47181e-10,0.0260541,0.000264598,7.84368e-07,2.58448e-10,0.0263194,0.000266167,7.85143e-07,1.81558e-10,0.0265864,0.000267738,7.85688e-07,8.78041e-10,0.0268549,0.000269312,7.88322e-07,3.15102e-11,0.027125,0.000270889,7.88417e-07,8.58525e-10,0.0273967,0.000272468,7.90992e-07,2.59812e-10,0.02767,0.000274051,7.91772e-07,-3.5224e-11,0.0279448,0.000275634,7.91666e-07,1.74377e-09,0.0282212,0.000277223,7.96897e-07,-1.35196e-09,0.0284992,0.000278813,7.92841e-07,1.80141e-09,0.0287788,0.000280404,7.98246e-07,-2.65629e-10,0.0290601,0.000281999,7.97449e-07,1.12374e-09,0.0293428,0.000283598,8.0082e-07,-5.04106e-10,0.0296272,0.000285198,7.99308e-07,8.92764e-10,0.0299132,0.000286799,8.01986e-07,6.58379e-10,0.0302008,0.000288405,8.03961e-07,1.98971e-10,0.0304901,0.000290014,8.04558e-07,4.08382e-10,0.0307809,0.000291624,8.05783e-07,3.01839e-11,0.0310733,0.000293236,8.05874e-07,1.33343e-09,0.0313673,0.000294851,8.09874e-07,2.2419e-10,0.031663,0.000296472,8.10547e-07,-3.67606e-10,0.0319603,0.000298092,8.09444e-07,1.24624e-09,0.0322592,0.000299714,8.13182e-07,-8.92025e-10,0.0325597,0.000301338,8.10506e-07,2.32183e-09,0.0328619,0.000302966,8.17472e-07,-9.44719e-10,0.0331657,0.000304598,8.14638e-07,1.45703e-09,0.0334711,0.000306232,8.19009e-07,-1.15805e-09,0.0337781,0.000307866,8.15535e-07,3.17507e-09,0.0340868,0.000309507,8.2506e-07,-4.09161e-09,0.0343971,0.000311145,8.12785e-07,5.74079e-09,0.0347091,0.000312788,8.30007e-07,-3.97034e-09,0.0350227,0.000314436,8.18096e-07,2.68985e-09,0.035338,0.00031608,8.26166e-07,6.61676e-10,0.0356549,0.000317734,8.28151e-07,-1.61123e-09,0.0359734,0.000319386,8.23317e-07,2.05786e-09,0.0362936,0.000321038,8.29491e-07,8.30388e-10,0.0366155,0.0003227,8.31982e-07,-1.65424e-09,0.036939,0.000324359,8.27019e-07,2.06129e-09,0.0372642,0.000326019,8.33203e-07,8.59719e-10,0.0375911,0.000327688,8.35782e-07,-1.77488e-09,0.0379196,0.000329354,8.30458e-07,2.51464e-09,0.0382498,0.000331023,8.38002e-07,-8.33135e-10,0.0385817,0.000332696,8.35502e-07,8.17825e-10,0.0389152,0.00033437,8.37956e-07,1.28718e-09,0.0392504,0.00033605,8.41817e-07,-2.2413e-09,0.0395873,0.000337727,8.35093e-07,3.95265e-09,0.0399258,0.000339409,8.46951e-07,-2.39332e-09,0.0402661,0.000341095,8.39771e-07,1.89533e-09,0.040608,0.000342781,8.45457e-07,-1.46271e-09,0.0409517,0.000344467,8.41069e-07,3.95554e-09,0.041297,0.000346161,8.52936e-07,-3.18369e-09,0.041644,0.000347857,8.43385e-07,1.32873e-09,0.0419927,0.000349548,8.47371e-07,1.59402e-09,0.0423431,0.000351248,8.52153e-07,-2.54336e-10,0.0426952,0.000352951,8.5139e-07,-5.76676e-10,0.043049,0.000354652,8.4966e-07,2.56114e-09,0.0434045,0.000356359,8.57343e-07,-2.21744e-09,0.0437617,0.000358067,8.50691e-07,2.58344e-09,0.0441206,0.000359776,8.58441e-07,-6.65826e-10,0.0444813,0.000361491,8.56444e-07,7.99218e-11,0.0448436,0.000363204,8.56684e-07,3.46063e-10,0.0452077,0.000364919,8.57722e-07,2.26116e-09,0.0455734,0.000366641,8.64505e-07,-1.94005e-09,0.045941,0.000368364,8.58685e-07,1.77384e-09,0.0463102,0.000370087,8.64007e-07,-1.43005e-09,0.0466811,0.000371811,8.59717e-07,3.94634e-09,0.0470538,0.000373542,8.71556e-07,-3.17946e-09,0.0474282,0.000375276,8.62017e-07,1.32104e-09,0.0478043,0.000377003,8.6598e-07,1.62045e-09,0.0481822,0.00037874,8.70842e-07,-3.52297e-10,0.0485618,0.000380481,8.69785e-07,-2.11211e-10,0.0489432,0.00038222,8.69151e-07,1.19716e-09,0.0493263,0.000383962,8.72743e-07,-8.52026e-10,0.0497111,0.000385705,8.70187e-07,2.21092e-09,0.0500977,0.000387452,8.76819e-07,-5.41339e-10,0.050486,0.000389204,8.75195e-07,-4.5361e-11,0.0508761,0.000390954,8.75059e-07,7.22669e-10,0.0512679,0.000392706,8.77227e-07,8.79936e-10,0.0516615,0.000394463,8.79867e-07,-5.17048e-10,0.0520568,0.000396222,8.78316e-07,1.18833e-09,0.0524539,0.000397982,8.81881e-07,-5.11022e-10,0.0528528,0.000399744,8.80348e-07,8.55683e-10,0.0532534,0.000401507,8.82915e-07,8.13562e-10,0.0536558,0.000403276,8.85356e-07,-3.84603e-10,0.05406,0.000405045,8.84202e-07,7.24962e-10,0.0544659,0.000406816,8.86377e-07,1.20986e-09,0.0548736,0.000408592,8.90006e-07,-1.83896e-09,0.0552831,0.000410367,8.84489e-07,2.42071e-09,0.0556944,0.000412143,8.91751e-07,-3.93413e-10,0.0561074,0.000413925,8.90571e-07,-8.46967e-10,0.0565222,0.000415704,8.8803e-07,3.78122e-09,0.0569388,0.000417491,8.99374e-07,-3.1021e-09,0.0573572,0.000419281,8.90068e-07,1.17658e-09,0.0577774,0.000421064,8.93597e-07,2.12117e-09,0.0581993,0.000422858,8.99961e-07,-2.21068e-09,0.0586231,0.000424651,8.93329e-07,2.9961e-09,0.0590486,0.000426447,9.02317e-07,-2.32311e-09,0.059476,0.000428244,8.95348e-07,2.57122e-09,0.0599051,0.000430043,9.03062e-07,-5.11098e-10,0.0603361,0.000431847,9.01528e-07,-5.27166e-10,0.0607688,0.000433649,8.99947e-07,2.61984e-09,0.0612034,0.000435457,9.07806e-07,-2.50141e-09,0.0616397,0.000437265,9.00302e-07,3.66045e-09,0.0620779,0.000439076,9.11283e-07,-4.68977e-09,0.0625179,0.000440885,8.97214e-07,7.64783e-09,0.0629597,0.000442702,9.20158e-07,-7.27499e-09,0.0634033,0.000444521,8.98333e-07,6.55113e-09,0.0638487,0.000446337,9.17986e-07,-4.02844e-09,0.0642959,0.000448161,9.05901e-07,2.11196e-09,0.064745,0.000449979,9.12236e-07,3.03125e-09,0.0651959,0.000451813,9.2133e-07,-6.78648e-09,0.0656486,0.000453635,9.00971e-07,9.21375e-09,0.0661032,0.000455464,9.28612e-07,-7.71684e-09,0.0665596,0.000457299,9.05462e-07,6.7522e-09,0.0670178,0.00045913,9.25718e-07,-4.3907e-09,0.0674778,0.000460968,9.12546e-07,3.36e-09,0.0679397,0.000462803,9.22626e-07,-1.59876e-09,0.0684034,0.000464644,9.1783e-07,3.0351e-09,0.068869,0.000466488,9.26935e-07,-3.09101e-09,0.0693364,0.000468333,9.17662e-07,1.8785e-09,0.0698057,0.000470174,9.23298e-07,3.02733e-09,0.0702768,0.00047203,9.3238e-07,-6.53722e-09,0.0707497,0.000473875,9.12768e-07,8.22054e-09,0.0712245,0.000475725,9.37429e-07,-3.99325e-09,0.0717012,0.000477588,9.2545e-07,3.01839e-10,0.0721797,0.00047944,9.26355e-07,2.78597e-09,0.0726601,0.000481301,9.34713e-07,-3.99507e-09,0.0731423,0.000483158,9.22728e-07,5.7435e-09,0.0736264,0.000485021,9.39958e-07,-4.07776e-09,0.0741123,0.000486888,9.27725e-07,3.11695e-09,0.0746002,0.000488753,9.37076e-07,-9.39394e-10,0.0750898,0.000490625,9.34258e-07,6.4055e-10,0.0755814,0.000492495,9.3618e-07,-1.62265e-09,0.0760748,0.000494363,9.31312e-07,5.84995e-09,0.0765701,0.000496243,9.48861e-07,-6.87601e-09,0.0770673,0.00049812,9.28233e-07,6.75296e-09,0.0775664,0.000499997,9.48492e-07,-5.23467e-09,0.0780673,0.000501878,9.32788e-07,6.73523e-09,0.0785701,0.000503764,9.52994e-07,-6.80514e-09,0.0790748,0.000505649,9.32578e-07,5.5842e-09,0.0795814,0.000507531,9.49331e-07,-6.30583e-10,0.0800899,0.000509428,9.47439e-07,-3.0618e-09,0.0806003,0.000511314,9.38254e-07,5.4273e-09,0.0811125,0.000513206,9.54536e-07,-3.74627e-09,0.0816267,0.000515104,9.43297e-07,2.10713e-09,0.0821427,0.000516997,9.49618e-07,2.76839e-09,0.0826607,0.000518905,9.57924e-07,-5.73006e-09,0.0831805,0.000520803,9.40733e-07,5.25072e-09,0.0837023,0.0005227,9.56486e-07,-3.71718e-10,0.084226,0.000524612,9.5537e-07,-3.76404e-09,0.0847515,0.000526512,9.44078e-07,7.97735e-09,0.085279,0.000528424,9.6801e-07,-5.79367e-09,0.0858084,0.000530343,9.50629e-07,2.96268e-10,0.0863397,0.000532245,9.51518e-07,4.6086e-09,0.0868729,0.000534162,9.65344e-07,-3.82947e-09,0.087408,0.000536081,9.53856e-07,3.25861e-09,0.087945,0.000537998,9.63631e-07,-1.7543e-09,0.088484,0.00053992,9.58368e-07,3.75849e-09,0.0890249,0.000541848,9.69644e-07,-5.82891e-09,0.0895677,0.00054377,9.52157e-07,4.65593e-09,0.0901124,0.000545688,9.66125e-07,2.10643e-09,0.0906591,0.000547627,9.72444e-07,-5.63099e-09,0.0912077,0.000549555,9.55551e-07,5.51627e-09,0.0917582,0.000551483,9.721e-07,-1.53292e-09,0.0923106,0.000553422,9.67501e-07,6.15311e-10,0.092865,0.000555359,9.69347e-07,-9.28291e-10,0.0934213,0.000557295,9.66562e-07,3.09774e-09,0.0939796,0.000559237,9.75856e-07,-4.01186e-09,0.0945398,0.000561177,9.6382e-07,5.49892e-09,0.095102,0.000563121,9.80317e-07,-3.08258e-09,0.0956661,0.000565073,9.71069e-07,-6.19176e-10,0.0962321,0.000567013,9.69212e-07,5.55932e-09,0.0968001,0.000568968,9.8589e-07,-6.71704e-09,0.09737,0.00057092,9.65738e-07,6.40762e-09,0.0979419,0.00057287,9.84961e-07,-4.0122e-09,0.0985158,0.000574828,9.72925e-07,2.19059e-09,0.0990916,0.000576781,9.79496e-07,2.70048e-09,0.0996693,0.000578748,9.87598e-07,-5.54193e-09,0.100249,0.000580706,9.70972e-07,4.56597e-09,0.100831,0.000582662,9.8467e-07,2.17923e-09,0.101414,0.000584638,9.91208e-07,-5.83232e-09,0.102,0.000586603,9.73711e-07,6.24884e-09,0.102588,0.000588569,9.92457e-07,-4.26178e-09,0.103177,0.000590541,9.79672e-07,3.34781e-09,0.103769,0.00059251,9.89715e-07,-1.67904e-09,0.104362,0.000594485,9.84678e-07,3.36839e-09,0.104958,0.000596464,9.94783e-07,-4.34397e-09,0.105555,0.000598441,9.81751e-07,6.55696e-09,0.106155,0.000600424,1.00142e-06,-6.98272e-09,0.106756,0.000602406,9.80474e-07,6.4728e-09,0.107359,0.000604386,9.99893e-07,-4.00742e-09,0.107965,0.000606374,9.8787e-07,2.10654e-09,0.108572,0.000608356,9.9419e-07,3.0318e-09,0.109181,0.000610353,1.00329e-06,-6.7832e-09,0.109793,0.00061234,9.82936e-07,9.1998e-09,0.110406,0.000614333,1.01054e-06,-7.6642e-09,0.111021,0.000616331,9.87543e-07,6.55579e-09,0.111639,0.000618326,1.00721e-06,-3.65791e-09,0.112258,0.000620329,9.96236e-07,6.25467e-10,0.112879,0.000622324,9.98113e-07,1.15593e-09,0.113503,0.000624323,1.00158e-06,2.20158e-09,0.114128,0.000626333,1.00819e-06,-2.51191e-09,0.114755,0.000628342,1.00065e-06,3.95517e-10,0.115385,0.000630345,1.00184e-06,9.29807e-10,0.116016,0.000632351,1.00463e-06,3.33599e-09,0.116649,0.00063437,1.01463e-06,-6.82329e-09,0.117285,0.000636379,9.94163e-07,9.05595e-09,0.117922,0.000638395,1.02133e-06,-7.04862e-09,0.118562,0.000640416,1.00019e-06,4.23737e-09,0.119203,0.000642429,1.0129e-06,-2.45033e-09,0.119847,0.000644448,1.00555e-06,5.56395e-09,0.120492,0.000646475,1.02224e-06,-4.9043e-09,0.121139,0.000648505,1.00753e-06,-8.47952e-10,0.121789,0.000650518,1.00498e-06,8.29622e-09,0.122441,0.000652553,1.02987e-06,-9.98538e-09,0.123094,0.000654582,9.99914e-07,9.2936e-09,0.12375,0.00065661,1.02779e-06,-4.83707e-09,0.124407,0.000658651,1.01328e-06,2.60411e-09,0.125067,0.000660685,1.0211e-06,-5.57945e-09,0.125729,0.000662711,1.00436e-06,1.22631e-08,0.126392,0.000664756,1.04115e-06,-1.36704e-08,0.127058,0.000666798,1.00014e-06,1.26161e-08,0.127726,0.000668836,1.03798e-06,-6.99155e-09,0.128396,0.000670891,1.01701e-06,4.48836e-10,0.129068,0.000672926,1.01836e-06,5.19606e-09,0.129742,0.000674978,1.03394e-06,-6.3319e-09,0.130418,0.000677027,1.01495e-06,5.2305e-09,0.131096,0.000679073,1.03064e-06,3.11123e-10,0.131776,0.000681135,1.03157e-06,-6.47511e-09,0.132458,0.000683179,1.01215e-06,1.06882e-08,0.133142,0.000685235,1.04421e-06,-6.47519e-09,0.133829,0.000687304,1.02479e-06,3.11237e-10,0.134517,0.000689355,1.02572e-06,5.23035e-09,0.135207,0.000691422,1.04141e-06,-6.3316e-09,0.1359,0.000693486,1.02242e-06,5.19484e-09,0.136594,0.000695546,1.038e-06,4.53497e-10,0.137291,0.000697623,1.03936e-06,-7.00891e-09,0.137989,0.000699681,1.01834e-06,1.2681e-08,0.13869,0.000701756,1.05638e-06,-1.39128e-08,0.139393,0.000703827,1.01464e-06,1.31679e-08,0.140098,0.000705896,1.05414e-06,-8.95659e-09,0.140805,0.000707977,1.02727e-06,7.75742e-09,0.141514,0.000710055,1.05055e-06,-7.17182e-09,0.142225,0.000712135,1.02903e-06,6.02862e-09,0.142938,0.000714211,1.04712e-06,-2.04163e-09,0.143653,0.000716299,1.04099e-06,2.13792e-09,0.144371,0.000718387,1.04741e-06,-6.51009e-09,0.14509,0.000720462,1.02787e-06,9.00123e-09,0.145812,0.000722545,1.05488e-06,3.07523e-10,0.146535,0.000724656,1.0558e-06,-1.02312e-08,0.147261,0.000726737,1.02511e-06,1.0815e-08,0.147989,0.000728819,1.05755e-06,-3.22681e-09,0.148719,0.000730925,1.04787e-06,2.09244e-09,0.14945,0.000733027,1.05415e-06,-5.143e-09,0.150185,0.00073512,1.03872e-06,3.57844e-09,0.150921,0.000737208,1.04946e-06,5.73027e-09,0.151659,0.000739324,1.06665e-06,-1.15983e-08,0.152399,0.000741423,1.03185e-06,1.08605e-08,0.153142,0.000743519,1.06443e-06,-2.04106e-09,0.153886,0.000745642,1.05831e-06,-2.69642e-09,0.154633,0.00074775,1.05022e-06,-2.07425e-09,0.155382,0.000749844,1.044e-06,1.09934e-08,0.156133,0.000751965,1.07698e-06,-1.20972e-08,0.156886,0.000754083,1.04069e-06,7.59288e-09,0.157641,0.000756187,1.06347e-06,-3.37305e-09,0.158398,0.000758304,1.05335e-06,5.89921e-09,0.159158,0.000760428,1.07104e-06,-5.32248e-09,0.159919,0.000762554,1.05508e-06,4.8927e-10,0.160683,0.000764666,1.05654e-06,3.36547e-09,0.161448,0.000766789,1.06664e-06,9.50081e-10,0.162216,0.000768925,1.06949e-06,-7.16568e-09,0.162986,0.000771043,1.04799e-06,1.28114e-08,0.163758,0.000773177,1.08643e-06,-1.42774e-08,0.164533,0.000775307,1.0436e-06,1.44956e-08,0.165309,0.000777438,1.08708e-06,-1.39025e-08,0.166087,0.00077957,1.04538e-06,1.13118e-08,0.166868,0.000781695,1.07931e-06,-1.54224e-09,0.167651,0.000783849,1.07468e-06,-5.14312e-09,0.168436,0.000785983,1.05925e-06,7.21381e-09,0.169223,0.000788123,1.0809e-06,-8.81096e-09,0.170012,0.000790259,1.05446e-06,1.31289e-08,0.170803,0.000792407,1.09385e-06,-1.39022e-08,0.171597,0.000794553,1.05214e-06,1.26775e-08,0.172392,0.000796695,1.09018e-06,-7.00557e-09,0.17319,0.000798855,1.06916e-06,4.43796e-10,0.17399,0.000800994,1.07049e-06,5.23031e-09,0.174792,0.000803151,1.08618e-06,-6.46397e-09,0.175596,0.000805304,1.06679e-06,5.72444e-09,0.176403,0.000807455,1.08396e-06,-1.53254e-09,0.177211,0.000809618,1.07937e-06,4.05673e-10,0.178022,0.000811778,1.08058e-06,-9.01916e-11,0.178835,0.000813939,1.08031e-06,-4.49821e-11,0.17965,0.000816099,1.08018e-06,2.70234e-10,0.180467,0.00081826,1.08099e-06,-1.03603e-09,0.181286,0.000820419,1.07788e-06,3.87392e-09,0.182108,0.000822587,1.0895e-06,4.41522e-10,0.182932,0.000824767,1.09083e-06,-5.63997e-09,0.183758,0.000826932,1.07391e-06,7.21707e-09,0.184586,0.000829101,1.09556e-06,-8.32718e-09,0.185416,0.000831267,1.07058e-06,1.11907e-08,0.186248,0.000833442,1.10415e-06,-6.63336e-09,0.187083,0.00083563,1.08425e-06,4.41484e-10,0.187919,0.0008378,1.08557e-06,4.86754e-09,0.188758,0.000839986,1.10017e-06,-5.01041e-09,0.189599,0.000842171,1.08514e-06,2.72811e-10,0.190443,0.000844342,1.08596e-06,3.91916e-09,0.191288,0.000846526,1.09772e-06,-1.04819e-09,0.192136,0.000848718,1.09457e-06,2.73531e-10,0.192985,0.000850908,1.0954e-06,-4.58916e-11,0.193837,0.000853099,1.09526e-06,-9.01158e-11,0.194692,0.000855289,1.09499e-06,4.06506e-10,0.195548,0.00085748,1.09621e-06,-1.53595e-09,0.196407,0.000859668,1.0916e-06,5.73717e-09,0.197267,0.000861869,1.10881e-06,-6.51164e-09,0.19813,0.000864067,1.08928e-06,5.40831e-09,0.198995,0.000866261,1.1055e-06,-2.20401e-10,0.199863,0.000868472,1.10484e-06,-4.52652e-09,0.200732,0.000870668,1.09126e-06,3.42508e-09,0.201604,0.000872861,1.10153e-06,5.72762e-09,0.202478,0.000875081,1.11872e-06,-1.14344e-08,0.203354,0.000877284,1.08441e-06,1.02076e-08,0.204233,0.000879484,1.11504e-06,4.06355e-10,0.205113,0.000881715,1.11626e-06,-1.18329e-08,0.205996,0.000883912,1.08076e-06,1.71227e-08,0.206881,0.000886125,1.13213e-06,-1.19546e-08,0.207768,0.000888353,1.09626e-06,8.93465e-10,0.208658,0.000890548,1.09894e-06,8.38062e-09,0.209549,0.000892771,1.12408e-06,-4.61353e-09,0.210443,0.000895006,1.11024e-06,-4.82756e-09,0.211339,0.000897212,1.09576e-06,9.02245e-09,0.212238,0.00089943,1.12283e-06,-1.45997e-09,0.213138,0.000901672,1.11845e-06,-3.18255e-09,0.214041,0.000903899,1.1089e-06,-7.11073e-10,0.214946,0.000906115,1.10677e-06,6.02692e-09,0.215853,0.000908346,1.12485e-06,-8.49548e-09,0.216763,0.00091057,1.09936e-06,1.30537e-08,0.217675,0.000912808,1.13852e-06,-1.3917e-08,0.218588,0.000915044,1.09677e-06,1.28121e-08,0.219505,0.000917276,1.13521e-06,-7.5288e-09,0.220423,0.000919523,1.11262e-06,2.40205e-09,0.221344,0.000921756,1.11983e-06,-2.07941e-09,0.222267,0.000923989,1.11359e-06,5.91551e-09,0.223192,0.000926234,1.13134e-06,-6.68149e-09,0.224119,0.000928477,1.11129e-06,5.90929e-09,0.225049,0.000930717,1.12902e-06,-2.05436e-09,0.22598,0.000932969,1.12286e-06,2.30807e-09,0.226915,0.000935222,1.12978e-06,-7.17796e-09,0.227851,0.00093746,1.10825e-06,1.15028e-08,0.228789,0.000939711,1.14276e-06,-9.03083e-09,0.22973,0.000941969,1.11566e-06,9.71932e-09,0.230673,0.00094423,1.14482e-06,-1.49452e-08,0.231619,0.000946474,1.09998e-06,2.02591e-08,0.232566,0.000948735,1.16076e-06,-2.13879e-08,0.233516,0.000950993,1.0966e-06,2.05888e-08,0.234468,0.000953247,1.15837e-06,-1.62642e-08,0.235423,0.000955515,1.10957e-06,1.46658e-08,0.236379,0.000957779,1.15357e-06,-1.25966e-08,0.237338,0.000960048,1.11578e-06,5.91793e-09,0.238299,0.000962297,1.13353e-06,3.82602e-09,0.239263,0.000964576,1.14501e-06,-6.3208e-09,0.240229,0.000966847,1.12605e-06,6.55613e-09,0.241197,0.000969119,1.14572e-06,-5.00268e-09,0.242167,0.000971395,1.13071e-06,-1.44659e-09,0.243139,0.000973652,1.12637e-06,1.07891e-08,0.244114,0.000975937,1.15874e-06,-1.19073e-08,0.245091,0.000978219,1.12302e-06,7.03782e-09,0.246071,0.000980486,1.14413e-06,-1.34276e-09,0.247052,0.00098277,1.1401e-06,-1.66669e-09,0.248036,0.000985046,1.1351e-06,8.00935e-09,0.249022,0.00098734,1.15913e-06,-1.54694e-08,0.250011,0.000989612,1.11272e-06,2.4066e-08,0.251002,0.000991909,1.18492e-06,-2.11901e-08,0.251995,0.000994215,1.12135e-06,1.08973e-09,0.25299,0.000996461,1.12462e-06,1.68311e-08,0.253988,0.000998761,1.17511e-06,-8.8094e-09,0.254987,0.00100109,1.14868e-06,-1.13958e-08,0.25599,0.00100335,1.1145e-06,2.45902e-08,0.256994,0.00100565,1.18827e-06,-2.73603e-08,0.258001,0.00100795,1.10618e-06,2.52464e-08,0.25901,0.00101023,1.18192e-06,-1.40207e-08,0.260021,0.00101256,1.13986e-06,1.03387e-09,0.261035,0.00101484,1.14296e-06,9.8853e-09,0.262051,0.00101715,1.17262e-06,-1.07726e-08,0.263069,0.00101947,1.1403e-06,3.40272e-09,0.26409,0.00102176,1.15051e-06,-2.83827e-09,0.265113,0.00102405,1.142e-06,7.95039e-09,0.266138,0.00102636,1.16585e-06,8.39047e-10,0.267166,0.00102869,1.16836e-06,-1.13066e-08,0.268196,0.00103099,1.13444e-06,1.4585e-08,0.269228,0.00103331,1.1782e-06,-1.72314e-08,0.270262,0.00103561,1.1265e-06,2.45382e-08,0.271299,0.00103794,1.20012e-06,-2.13166e-08,0.272338,0.00104028,1.13617e-06,1.12364e-09,0.273379,0.00104255,1.13954e-06,1.68221e-08,0.274423,0.00104488,1.19001e-06,-8.80736e-09,0.275469,0.00104723,1.16358e-06,-1.13948e-08,0.276518,0.00104953,1.1294e-06,2.45839e-08,0.277568,0.00105186,1.20315e-06,-2.73361e-08,0.278621,0.00105418,1.12114e-06,2.51559e-08,0.279677,0.0010565,1.19661e-06,-1.36832e-08,0.280734,0.00105885,1.15556e-06,-2.25706e-10,0.281794,0.00106116,1.15488e-06,1.45862e-08,0.282857,0.00106352,1.19864e-06,-2.83167e-08,0.283921,0.00106583,1.11369e-06,3.90759e-08,0.284988,0.00106817,1.23092e-06,-3.85801e-08,0.286058,0.00107052,1.11518e-06,2.58375e-08,0.287129,0.00107283,1.19269e-06,-5.16498e-09,0.288203,0.0010752,1.1772e-06,-5.17768e-09,0.28928,0.00107754,1.16167e-06,-3.92671e-09,0.290358,0.00107985,1.14988e-06,2.08846e-08,0.29144,0.00108221,1.21254e-06,-2.00072e-08,0.292523,0.00108458,1.15252e-06,-4.60659e-10,0.293609,0.00108688,1.15114e-06,2.18499e-08,0.294697,0.00108925,1.21669e-06,-2.73343e-08,0.295787,0.0010916,1.13468e-06,2.78826e-08,0.29688,0.00109395,1.21833e-06,-2.45915e-08,0.297975,0.00109632,1.14456e-06,1.08787e-08,0.299073,0.00109864,1.17719e-06,1.08788e-08,0.300172,0.00110102,1.20983e-06,-2.45915e-08,0.301275,0.00110337,1.13605e-06,2.78828e-08,0.302379,0.00110573,1.2197e-06,-2.73348e-08,0.303486,0.00110808,1.1377e-06,2.18518e-08,0.304595,0.00111042,1.20325e-06,-4.67556e-10,0.305707,0.00111283,1.20185e-06,-1.99816e-08,0.306821,0.00111517,1.14191e-06,2.07891e-08,0.307937,0.00111752,1.20427e-06,-3.57026e-09,0.309056,0.00111992,1.19356e-06,-6.50797e-09,0.310177,0.00112228,1.17404e-06,-2.00165e-10,0.3113,0.00112463,1.17344e-06,7.30874e-09,0.312426,0.001127,1.19536e-06,7.67424e-10,0.313554,0.00112939,1.19767e-06,-1.03784e-08,0.314685,0.00113176,1.16653e-06,1.09437e-08,0.315818,0.00113412,1.19936e-06,-3.59406e-09,0.316953,0.00113651,1.18858e-06,3.43251e-09,0.318091,0.0011389,1.19888e-06,-1.0136e-08,0.319231,0.00114127,1.16847e-06,7.30915e-09,0.320374,0.00114363,1.1904e-06,1.07018e-08,0.321518,0.00114604,1.2225e-06,-2.03137e-08,0.322666,0.00114842,1.16156e-06,1.09484e-08,0.323815,0.00115078,1.19441e-06,6.32224e-09,0.324967,0.00115319,1.21337e-06,-6.43509e-09,0.326122,0.00115559,1.19407e-06,-1.03842e-08,0.327278,0.00115795,1.16291e-06,1.81697e-08,0.328438,0.00116033,1.21742e-06,-2.6901e-09,0.329599,0.00116276,1.20935e-06,-7.40939e-09,0.330763,0.00116515,1.18713e-06,2.52533e-09,0.331929,0.00116754,1.1947e-06,-2.69191e-09,0.333098,0.00116992,1.18663e-06,8.24218e-09,0.334269,0.00117232,1.21135e-06,-4.74377e-10,0.335443,0.00117474,1.20993e-06,-6.34471e-09,0.336619,0.00117714,1.1909e-06,-3.94922e-09,0.337797,0.00117951,1.17905e-06,2.21417e-08,0.338978,0.00118193,1.24547e-06,-2.50128e-08,0.340161,0.00118435,1.17043e-06,1.8305e-08,0.341346,0.00118674,1.22535e-06,-1.84048e-08,0.342534,0.00118914,1.17013e-06,2.55121e-08,0.343725,0.00119156,1.24667e-06,-2.40389e-08,0.344917,0.00119398,1.17455e-06,1.10389e-08,0.346113,0.00119636,1.20767e-06,9.68574e-09,0.34731,0.0011988,1.23673e-06,-1.99797e-08,0.34851,0.00120122,1.17679e-06,1.06284e-08,0.349713,0.0012036,1.20867e-06,7.26868e-09,0.350917,0.00120604,1.23048e-06,-9.90072e-09,0.352125,0.00120847,1.20078e-06,2.53177e-09,0.353334,0.00121088,1.20837e-06,-2.26199e-10,0.354546,0.0012133,1.20769e-06,-1.62705e-09,0.355761,0.00121571,1.20281e-06,6.73435e-09,0.356978,0.00121813,1.22302e-06,4.49207e-09,0.358197,0.00122059,1.23649e-06,-2.47027e-08,0.359419,0.00122299,1.16238e-06,3.47142e-08,0.360643,0.00122542,1.26653e-06,-2.47472e-08,0.36187,0.00122788,1.19229e-06,4.66965e-09,0.363099,0.00123028,1.20629e-06,6.06872e-09,0.36433,0.00123271,1.2245e-06,8.57729e-10,0.365564,0.00123516,1.22707e-06,-9.49952e-09,0.366801,0.00123759,1.19858e-06,7.33792e-09,0.36804,0.00124001,1.22059e-06,9.95025e-09,0.369281,0.00124248,1.25044e-06,-1.73366e-08,0.370525,0.00124493,1.19843e-06,-2.08464e-10,0.371771,0.00124732,1.1978e-06,1.81704e-08,0.373019,0.00124977,1.25232e-06,-1.28683e-08,0.37427,0.00125224,1.21371e-06,3.50042e-09,0.375524,0.00125468,1.22421e-06,-1.1335e-09,0.37678,0.00125712,1.22081e-06,1.03345e-09,0.378038,0.00125957,1.22391e-06,-3.00023e-09,0.379299,0.00126201,1.21491e-06,1.09676e-08,0.380562,0.00126447,1.24781e-06,-1.10676e-08,0.381828,0.00126693,1.21461e-06,3.50042e-09,0.383096,0.00126937,1.22511e-06,-2.93403e-09,0.384366,0.00127181,1.21631e-06,8.23574e-09,0.385639,0.00127427,1.24102e-06,-2.06607e-10,0.386915,0.00127675,1.2404e-06,-7.40935e-09,0.388193,0.00127921,1.21817e-06,4.1761e-11,0.389473,0.00128165,1.21829e-06,7.24223e-09,0.390756,0.0012841,1.24002e-06,7.91564e-10,0.392042,0.00128659,1.2424e-06,-1.04086e-08,0.393329,0.00128904,1.21117e-06,1.10405e-08,0.39462,0.0012915,1.24429e-06,-3.951e-09,0.395912,0.00129397,1.23244e-06,4.7634e-09,0.397208,0.00129645,1.24673e-06,-1.51025e-08,0.398505,0.0012989,1.20142e-06,2.58443e-08,0.399805,0.00130138,1.27895e-06,-2.86702e-08,0.401108,0.00130385,1.19294e-06,2.92318e-08,0.402413,0.00130632,1.28064e-06,-2.86524e-08,0.403721,0.0013088,1.19468e-06,2.57731e-08,0.405031,0.00131127,1.272e-06,-1.48355e-08,0.406343,0.00131377,1.2275e-06,3.76652e-09,0.407658,0.00131623,1.23879e-06,-2.30784e-10,0.408976,0.00131871,1.2381e-06,-2.84331e-09,0.410296,0.00132118,1.22957e-06,1.16041e-08,0.411618,0.00132367,1.26438e-06,-1.37708e-08,0.412943,0.00132616,1.22307e-06,1.36768e-08,0.41427,0.00132865,1.2641e-06,-1.1134e-08,0.4156,0.00133114,1.2307e-06,1.05714e-09,0.416933,0.00133361,1.23387e-06,6.90538e-09,0.418267,0.00133609,1.25459e-06,1.12372e-09,0.419605,0.00133861,1.25796e-06,-1.14002e-08,0.420945,0.00134109,1.22376e-06,1.46747e-08,0.422287,0.00134358,1.26778e-06,-1.7496e-08,0.423632,0.00134606,1.21529e-06,2.5507e-08,0.424979,0.00134857,1.29182e-06,-2.49272e-08,0.426329,0.00135108,1.21703e-06,1.45972e-08,0.427681,0.00135356,1.26083e-06,-3.65935e-09,0.429036,0.00135607,1.24985e-06,4.00178e-11,0.430393,0.00135857,1.24997e-06,3.49917e-09,0.431753,0.00136108,1.26047e-06,-1.40366e-08,0.433116,0.00136356,1.21836e-06,2.28448e-08,0.43448,0.00136606,1.28689e-06,-1.77378e-08,0.435848,0.00136858,1.23368e-06,1.83043e-08,0.437218,0.0013711,1.28859e-06,-2.56769e-08,0.43859,0.0013736,1.21156e-06,2.47987e-08,0.439965,0.0013761,1.28595e-06,-1.39133e-08,0.441342,0.00137863,1.24421e-06,1.05202e-09,0.442722,0.00138112,1.24737e-06,9.70507e-09,0.444104,0.00138365,1.27649e-06,-1.00698e-08,0.445489,0.00138617,1.24628e-06,7.72123e-10,0.446877,0.00138867,1.24859e-06,6.98132e-09,0.448267,0.00139118,1.26954e-06,1.10477e-09,0.449659,0.00139373,1.27285e-06,-1.14003e-08,0.451054,0.00139624,1.23865e-06,1.4694e-08,0.452452,0.00139876,1.28273e-06,-1.75734e-08,0.453852,0.00140127,1.23001e-06,2.5797e-08,0.455254,0.00140381,1.3074e-06,-2.60097e-08,0.456659,0.00140635,1.22937e-06,1.86371e-08,0.458067,0.00140886,1.28529e-06,-1.8736e-08,0.459477,0.00141137,1.22908e-06,2.65048e-08,0.46089,0.00141391,1.30859e-06,-2.76784e-08,0.462305,0.00141645,1.22556e-06,2.46043e-08,0.463722,0.00141897,1.29937e-06,-1.11341e-08,0.465143,0.00142154,1.26597e-06,-9.87033e-09,0.466565,0.00142404,1.23636e-06,2.08131e-08,0.467991,0.00142657,1.2988e-06,-1.37773e-08,0.469419,0.00142913,1.25746e-06,4.49378e-09,0.470849,0.00143166,1.27094e-06,-4.19781e-09,0.472282,0.00143419,1.25835e-06,1.22975e-08,0.473717,0.00143674,1.29524e-06,-1.51902e-08,0.475155,0.00143929,1.24967e-06,1.86608e-08,0.476596,0.00144184,1.30566e-06,-2.96506e-08,0.478039,0.00144436,1.2167e-06,4.03368e-08,0.479485,0.00144692,1.33771e-06,-4.22896e-08,0.480933,0.00144947,1.21085e-06,3.94148e-08,0.482384,0.00145201,1.32909e-06,-2.59626e-08,0.483837,0.00145459,1.2512e-06,4.83124e-09,0.485293,0.0014571,1.2657e-06,6.63757e-09,0.486751,0.00145966,1.28561e-06,-1.57911e-09,0.488212,0.00146222,1.28087e-06,-3.21468e-10,0.489676,0.00146478,1.27991e-06,2.86517e-09,0.491142,0.00146735,1.2885e-06,-1.11392e-08,0.49261,0.00146989,1.25508e-06,1.18893e-08,0.494081,0.00147244,1.29075e-06,-6.61574e-09,0.495555,0.001475,1.27091e-06,1.45736e-08,0.497031,0.00147759,1.31463e-06,-2.18759e-08,0.49851,0.00148015,1.249e-06,1.33252e-08,0.499992,0.00148269,1.28897e-06,-1.62277e-09,0.501476,0.00148526,1.28411e-06,-6.83421e-09,0.502962,0.00148781,1.2636e-06,2.89596e-08,0.504451,0.00149042,1.35048e-06,-4.93997e-08,0.505943,0.00149298,1.20228e-06,4.94299e-08,0.507437,0.00149553,1.35057e-06,-2.91107e-08,0.508934,0.00149814,1.26324e-06,7.40848e-09,0.510434,0.00150069,1.28547e-06,-5.23187e-10,0.511936,0.00150326,1.2839e-06,-5.31585e-09,0.51344,0.00150581,1.26795e-06,2.17866e-08,0.514947,0.00150841,1.33331e-06,-2.22257e-08,0.516457,0.00151101,1.26663e-06,7.51178e-09,0.517969,0.00151357,1.28917e-06,-7.82128e-09,0.519484,0.00151613,1.2657e-06,2.37733e-08,0.521002,0.00151873,1.33702e-06,-2.76674e-08,0.522522,0.00152132,1.25402e-06,2.72917e-08,0.524044,0.00152391,1.3359e-06,-2.18949e-08,0.525569,0.00152652,1.27021e-06,6.83372e-10,0.527097,0.00152906,1.27226e-06,1.91613e-08,0.528628,0.00153166,1.32974e-06,-1.77241e-08,0.53016,0.00153427,1.27657e-06,-7.86963e-09,0.531696,0.0015368,1.25296e-06,4.92027e-08,0.533234,0.00153945,1.40057e-06,-6.9732e-08,0.534775,0.00154204,1.19138e-06,5.09114e-08,0.536318,0.00154458,1.34411e-06,-1.4704e-08,0.537864,0.00154722,1.3e-06,7.9048e-09,0.539413,0.00154984,1.32371e-06,-1.69152e-08,0.540964,0.00155244,1.27297e-06,1.51355e-10,0.542517,0.00155499,1.27342e-06,1.63099e-08,0.544074,0.00155758,1.32235e-06,-5.78647e-09,0.545633,0.00156021,1.30499e-06,6.83599e-09,0.547194,0.00156284,1.3255e-06,-2.15575e-08,0.548758,0.00156543,1.26083e-06,1.97892e-08,0.550325,0.00156801,1.32019e-06,2.00525e-09,0.551894,0.00157065,1.32621e-06,-2.78103e-08,0.553466,0.00157322,1.24278e-06,4.96314e-08,0.555041,0.00157586,1.39167e-06,-5.1506e-08,0.556618,0.00157849,1.23716e-06,3.71835e-08,0.558198,0.00158107,1.34871e-06,-3.76233e-08,0.55978,0.00158366,1.23584e-06,5.37052e-08,0.561365,0.00158629,1.39695e-06,-5.79884e-08,0.562953,0.00158891,1.22299e-06,5.90392e-08,0.564543,0.00159153,1.4001e-06,-5.89592e-08,0.566136,0.00159416,1.22323e-06,5.7588e-08,0.567731,0.00159678,1.39599e-06,-5.21835e-08,0.569329,0.00159941,1.23944e-06,3.19369e-08,0.57093,0.00160199,1.33525e-06,-1.59594e-08,0.572533,0.00160461,1.28737e-06,3.19006e-08,0.574139,0.00160728,1.38307e-06,-5.20383e-08,0.575748,0.00160989,1.22696e-06,5.70431e-08,0.577359,0.00161251,1.39809e-06,-5.69247e-08,0.578973,0.00161514,1.22731e-06,5.14463e-08,0.580589,0.00161775,1.38165e-06,-2.9651e-08,0.582208,0.00162042,1.2927e-06,7.55339e-09,0.58383,0.00162303,1.31536e-06,-5.62636e-10,0.585455,0.00162566,1.31367e-06,-5.30281e-09,0.587081,0.00162827,1.29776e-06,2.17738e-08,0.588711,0.00163093,1.36309e-06,-2.21875e-08,0.590343,0.00163359,1.29652e-06,7.37164e-09,0.591978,0.00163621,1.31864e-06,-7.29907e-09,0.593616,0.00163882,1.29674e-06,2.18247e-08,0.595256,0.00164148,1.36221e-06,-2.03952e-08,0.596899,0.00164414,1.30103e-06,1.51241e-10,0.598544,0.00164675,1.30148e-06,1.97902e-08,0.600192,0.00164941,1.36085e-06,-1.97074e-08,0.601843,0.00165207,1.30173e-06,-5.65175e-10,0.603496,0.00165467,1.30004e-06,2.1968e-08,0.605152,0.00165734,1.36594e-06,-2.77024e-08,0.606811,0.00165999,1.28283e-06,2.92369e-08,0.608472,0.00166264,1.37054e-06,-2.96407e-08,0.610136,0.00166529,1.28162e-06,2.97215e-08,0.611803,0.00166795,1.37079e-06,-2.96408e-08,0.613472,0.0016706,1.28186e-06,2.92371e-08,0.615144,0.00167325,1.36957e-06,-2.77031e-08,0.616819,0.00167591,1.28647e-06,2.19708e-08,0.618496,0.00167855,1.35238e-06,-5.75407e-10,0.620176,0.00168125,1.35065e-06,-1.9669e-08,0.621858,0.00168389,1.29164e-06,1.96468e-08,0.623544,0.00168653,1.35058e-06,6.86403e-10,0.625232,0.00168924,1.35264e-06,-2.23924e-08,0.626922,0.00169187,1.28547e-06,2.92788e-08,0.628615,0.00169453,1.3733e-06,-3.51181e-08,0.630311,0.00169717,1.26795e-06,5.15889e-08,0.63201,0.00169987,1.42272e-06,-5.2028e-08,0.633711,0.00170255,1.26663e-06,3.73139e-08,0.635415,0.0017052,1.37857e-06,-3.76227e-08,0.637121,0.00170784,1.2657e-06,5.35722e-08,0.63883,0.00171054,1.42642e-06,-5.74567e-08,0.640542,0.00171322,1.25405e-06,5.70456e-08,0.642257,0.0017159,1.42519e-06,-5.15163e-08,0.643974,0.00171859,1.27064e-06,2.98103e-08,0.645694,0.00172122,1.36007e-06,-8.12016e-09,0.647417,0.00172392,1.33571e-06,2.67039e-09,0.649142,0.0017266,1.34372e-06,-2.56152e-09,0.65087,0.00172928,1.33604e-06,7.57571e-09,0.6526,0.00173197,1.35876e-06,-2.77413e-08,0.654334,0.00173461,1.27554e-06,4.3785e-08,0.65607,0.00173729,1.40689e-06,-2.81896e-08,0.657808,0.00174002,1.32233e-06,9.36893e-09,0.65955,0.00174269,1.35043e-06,-9.28617e-09,0.661294,0.00174536,1.32257e-06,2.77757e-08,0.66304,0.00174809,1.4059e-06,-4.2212e-08,0.66479,0.00175078,1.27926e-06,2.1863e-08,0.666542,0.0017534,1.34485e-06,1.43648e-08,0.668297,0.00175613,1.38795e-06,-1.97177e-08,0.670054,0.00175885,1.3288e-06,4.90115e-09,0.671814,0.00176152,1.3435e-06,1.13232e-10,0.673577,0.00176421,1.34384e-06,-5.3542e-09,0.675343,0.00176688,1.32778e-06,2.13035e-08,0.677111,0.0017696,1.39169e-06,-2.02553e-08,0.678882,0.00177232,1.33092e-06,1.13005e-10,0.680656,0.00177499,1.33126e-06,1.98031e-08,0.682432,0.00177771,1.39067e-06,-1.97211e-08,0.684211,0.00178043,1.33151e-06,-5.2349e-10,0.685993,0.00178309,1.32994e-06,2.18151e-08,0.687777,0.00178582,1.39538e-06,-2.71325e-08,0.689564,0.00178853,1.31398e-06,2.71101e-08,0.691354,0.00179124,1.39531e-06,-2.17035e-08,0.693147,0.00179396,1.3302e-06,9.92865e-11,0.694942,0.00179662,1.3305e-06,2.13063e-08,0.69674,0.00179935,1.39442e-06,-2.57198e-08,0.698541,0.00180206,1.31726e-06,2.19682e-08,0.700344,0.00180476,1.38317e-06,-2.54852e-09,0.70215,0.00180752,1.37552e-06,-1.17741e-08,0.703959,0.00181023,1.3402e-06,-9.95999e-09,0.705771,0.00181288,1.31032e-06,5.16141e-08,0.707585,0.00181566,1.46516e-06,-7.72869e-08,0.709402,0.00181836,1.2333e-06,7.87197e-08,0.711222,0.00182106,1.46946e-06,-5.87781e-08,0.713044,0.00182382,1.29312e-06,3.71834e-08,0.714869,0.00182652,1.40467e-06,-3.03511e-08,0.716697,0.00182924,1.31362e-06,2.46161e-08,0.718528,0.00183194,1.38747e-06,-8.5087e-09,0.720361,0.00183469,1.36194e-06,9.41892e-09,0.722197,0.00183744,1.3902e-06,-2.91671e-08,0.724036,0.00184014,1.3027e-06,4.76448e-08,0.725878,0.00184288,1.44563e-06,-4.22028e-08,0.727722,0.00184565,1.31902e-06,1.95682e-09,0.729569,0.00184829,1.3249e-06,3.43754e-08,0.731419,0.00185104,1.42802e-06,-2.0249e-08,0.733271,0.00185384,1.36727e-06,-1.29838e-08,0.735126,0.00185654,1.32832e-06,1.25794e-08,0.736984,0.00185923,1.36606e-06,2.22711e-08,0.738845,0.00186203,1.43287e-06,-4.20594e-08,0.740708,0.00186477,1.3067e-06,2.67571e-08,0.742574,0.00186746,1.38697e-06,-5.36424e-09,0.744443,0.00187022,1.37087e-06,-5.30023e-09,0.746315,0.00187295,1.35497e-06,2.65653e-08,0.748189,0.00187574,1.43467e-06,-4.13564e-08,0.750066,0.00187848,1.3106e-06,1.9651e-08,0.751946,0.00188116,1.36955e-06,2.23572e-08,0.753828,0.00188397,1.43663e-06,-4.9475e-08,0.755714,0.00188669,1.2882e-06,5.63335e-08,0.757602,0.00188944,1.4572e-06,-5.66499e-08,0.759493,0.00189218,1.28725e-06,5.10567e-08,0.761386,0.00189491,1.44042e-06,-2.83677e-08,0.763283,0.00189771,1.35532e-06,2.80962e-09,0.765182,0.00190042,1.36375e-06,1.71293e-08,0.767083,0.0019032,1.41513e-06,-1.17221e-08,0.768988,0.001906,1.37997e-06,-2.98453e-08,0.770895,0.00190867,1.29043e-06,7.14987e-08,0.772805,0.00191146,1.50493e-06,-7.73354e-08,0.774718,0.00191424,1.27292e-06,5.90292e-08,0.776634,0.00191697,1.45001e-06,-3.9572e-08,0.778552,0.00191975,1.33129e-06,3.9654e-08,0.780473,0.00192253,1.45026e-06,-5.94395e-08,0.782397,0.00192525,1.27194e-06,7.88945e-08,0.784324,0.00192803,1.50862e-06,-7.73249e-08,0.786253,0.00193082,1.27665e-06,5.15913e-08,0.788185,0.00193352,1.43142e-06,-9.83099e-09,0.79012,0.00193636,1.40193e-06,-1.22672e-08,0.792058,0.00193912,1.36513e-06,-7.05275e-10,0.793999,0.00194185,1.36301e-06,1.50883e-08,0.795942,0.00194462,1.40828e-06,-4.33147e-11,0.797888,0.00194744,1.40815e-06,-1.49151e-08,0.799837,0.00195021,1.3634e-06,9.93244e-11,0.801788,0.00195294,1.3637e-06,1.45179e-08,0.803743,0.00195571,1.40725e-06,1.43363e-09,0.8057,0.00195853,1.41155e-06,-2.02525e-08,0.80766,0.00196129,1.35079e-06,1.99718e-08,0.809622,0.00196405,1.41071e-06,-3.01649e-11,0.811588,0.00196687,1.41062e-06,-1.9851e-08,0.813556,0.00196964,1.35107e-06,1.98296e-08,0.815527,0.0019724,1.41056e-06,1.37485e-10,0.817501,0.00197522,1.41097e-06,-2.03796e-08,0.819477,0.00197798,1.34983e-06,2.17763e-08,0.821457,0.00198074,1.41516e-06,-7.12085e-09,0.823439,0.00198355,1.3938e-06,6.70707e-09,0.825424,0.00198636,1.41392e-06,-1.97074e-08,0.827412,0.00198913,1.35479e-06,1.25179e-08,0.829402,0.00199188,1.39235e-06,2.92405e-08,0.831396,0.00199475,1.48007e-06,-6.98755e-08,0.833392,0.0019975,1.27044e-06,7.14477e-08,0.835391,0.00200026,1.48479e-06,-3.71014e-08,0.837392,0.00200311,1.37348e-06,1.73533e-08,0.839397,0.00200591,1.42554e-06,-3.23118e-08,0.841404,0.00200867,1.32861e-06,5.2289e-08,0.843414,0.00201148,1.48547e-06,-5.76348e-08,0.845427,0.00201428,1.31257e-06,5.9041e-08,0.847443,0.00201708,1.48969e-06,-5.93197e-08,0.849461,0.00201988,1.31173e-06,5.90289e-08,0.851482,0.00202268,1.48882e-06,-5.75864e-08,0.853507,0.00202549,1.31606e-06,5.21075e-08,0.855533,0.00202828,1.47238e-06,-3.16344e-08,0.857563,0.00203113,1.37748e-06,1.48257e-08,0.859596,0.00203393,1.42196e-06,-2.76684e-08,0.861631,0.00203669,1.33895e-06,3.62433e-08,0.863669,0.00203947,1.44768e-06,1.90463e-09,0.86571,0.00204237,1.45339e-06,-4.38617e-08,0.867754,0.00204515,1.32181e-06,5.43328e-08,0.8698,0.00204796,1.48481e-06,-5.42603e-08,0.87185,0.00205076,1.32203e-06,4.34989e-08,0.873902,0.00205354,1.45252e-06,-5.26029e-10,0.875957,0.00205644,1.45095e-06,-4.13949e-08,0.878015,0.00205922,1.32676e-06,4.68962e-08,0.880075,0.00206201,1.46745e-06,-2.69807e-08,0.882139,0.00206487,1.38651e-06,1.42181e-09,0.884205,0.00206764,1.39077e-06,2.12935e-08,0.886274,0.00207049,1.45465e-06,-2.69912e-08,0.888346,0.00207332,1.37368e-06,2.70664e-08,0.890421,0.00207615,1.45488e-06,-2.16698e-08,0.892498,0.00207899,1.38987e-06,8.14756e-12,0.894579,0.00208177,1.38989e-06,2.16371e-08,0.896662,0.00208462,1.45481e-06,-2.6952e-08,0.898748,0.00208744,1.37395e-06,2.65663e-08,0.900837,0.00209027,1.45365e-06,-1.97084e-08,0.902928,0.00209312,1.39452e-06,-7.33731e-09,0.905023,0.00209589,1.37251e-06,4.90578e-08,0.90712,0.00209878,1.51968e-06,-6.96845e-08,0.90922,0.00210161,1.31063e-06,5.08664e-08,0.911323,0.00210438,1.46323e-06,-1.45717e-08,0.913429,0.00210727,1.41952e-06,7.42038e-09,0.915538,0.00211013,1.44178e-06,-1.51097e-08,0.917649,0.00211297,1.39645e-06,-6.58618e-09,0.919764,0.00211574,1.37669e-06,4.14545e-08,0.921881,0.00211862,1.50105e-06,-4.00222e-08,0.924001,0.0021215,1.38099e-06,-5.7518e-10,0.926124,0.00212426,1.37926e-06,4.23229e-08,0.92825,0.00212714,1.50623e-06,-4.9507e-08,0.930378,0.00213001,1.35771e-06,3.64958e-08,0.93251,0.00213283,1.4672e-06,-3.68713e-08,0.934644,0.00213566,1.35658e-06,5.13848e-08,0.936781,0.00213852,1.51074e-06,-4.94585e-08,0.938921,0.0021414,1.36236e-06,2.72399e-08,0.941064,0.0021442,1.44408e-06,1.0372e-10,0.943209,0.00214709,1.44439e-06,-2.76547e-08,0.945358,0.0021499,1.36143e-06,5.09106e-08,0.947509,0.00215277,1.51416e-06,-5.67784e-08,0.949663,0.00215563,1.34382e-06,5.69935e-08,0.95182,0.00215849,1.5148e-06,-5.19861e-08,0.95398,0.00216136,1.35885e-06,3.17417e-08,0.956143,0.00216418,1.45407e-06,-1.53758e-08,0.958309,0.00216704,1.40794e-06,2.97615e-08,0.960477,0.00216994,1.49723e-06,-4.40657e-08,0.962649,0.00217281,1.36503e-06,2.72919e-08,0.964823,0.00217562,1.44691e-06,-5.49729e-09,0.967,0.0021785,1.43041e-06,-5.30273e-09,0.96918,0.00218134,1.41451e-06,2.67084e-08,0.971363,0.00218425,1.49463e-06,-4.19265e-08,0.973548,0.00218711,1.36885e-06,2.17881e-08,0.975737,0.00218992,1.43422e-06,1.43789e-08,0.977928,0.00219283,1.47735e-06,-1.96989e-08,0.980122,0.00219572,1.41826e-06,4.81221e-09,0.98232,0.00219857,1.43269e-06,4.50048e-10,0.98452,0.00220144,1.43404e-06,-6.61237e-09,0.986722,0.00220429,1.41421e-06,2.59993e-08,0.988928,0.0022072,1.4922e-06,-3.77803e-08,0.991137,0.00221007,1.37886e-06,5.9127e-09,0.993348,0.00221284,1.3966e-06,1.33339e-07,0.995563,0.00221604,1.79662e-06,-5.98872e-07,0.99778,0.00222015,0.,0.}; + + template + __device__ __forceinline__ void RGB2LabConvert_f(const T& src, D& dst) + { + const float _1_3 = 1.0f / 3.0f; + const float _a = 16.0f / 116.0f; + + float B = blueIdx == 0 ? src.x : src.z; + float G = src.y; + float R = blueIdx == 0 ? src.z : src.x; + + if (srgb) + { + B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + } + + float X = B * 0.189828f + G * 0.376219f + R * 0.433953f; + float Y = B * 0.072169f + G * 0.715160f + R * 0.212671f; + float Z = B * 0.872766f + G * 0.109477f + R * 0.017758f; + + float FX = X > 0.008856f ? ::powf(X, _1_3) : (7.787f * X + _a); + float FY = Y > 0.008856f ? ::powf(Y, _1_3) : (7.787f * Y + _a); + float FZ = Z > 0.008856f ? ::powf(Z, _1_3) : (7.787f * Z + _a); + + float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y); + float a = 500.f * (FX - FY); + float b = 200.f * (FY - FZ); + + dst.x = L; + dst.y = a; + dst.z = b; + } + + template struct RGB2Lab; + template + struct RGB2Lab + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2LabConvert_b(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2Lab() {} + __host__ __device__ __forceinline__ RGB2Lab(const RGB2Lab&) {} + }; + template + struct RGB2Lab + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2LabConvert_f(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2Lab() {} + __host__ __device__ __forceinline__ RGB2Lab(const RGB2Lab&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(name, scn, dcn, srgb, blueIdx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2Lab functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + __constant__ float c_sRGBInvGammaTab[] = {0,0.0126255,0.,-8.33961e-06,0.0126172,0.0126005,-2.50188e-05,4.1698e-05,0.0252344,0.0126756,0.000100075,-0.000158451,0.0378516,0.0124004,-0.000375277,-0.000207393,0.0496693,0.0110276,-0.000997456,0.00016837,0.0598678,0.00953783,-0.000492346,2.07235e-05,0.068934,0.00861531,-0.000430176,3.62876e-05,0.0771554,0.00786382,-0.000321313,1.87625e-05,0.0847167,0.00727748,-0.000265025,1.53594e-05,0.0917445,0.00679351,-0.000218947,1.10545e-05,0.0983301,0.00638877,-0.000185784,8.66984e-06,0.104542,0.00604322,-0.000159774,6.82996e-06,0.110432,0.00574416,-0.000139284,5.51008e-06,0.116042,0.00548212,-0.000122754,4.52322e-06,0.121406,0.00525018,-0.000109184,3.75557e-06,0.126551,0.00504308,-9.79177e-05,3.17134e-06,0.131499,0.00485676,-8.84037e-05,2.68469e-06,0.13627,0.004688,-8.03496e-05,2.31725e-06,0.14088,0.00453426,-7.33978e-05,2.00868e-06,0.145343,0.00439349,-6.73718e-05,1.74775e-06,0.149671,0.00426399,-6.21286e-05,1.53547e-06,0.153875,0.00414434,-5.75222e-05,1.364e-06,0.157963,0.00403338,-5.34301e-05,1.20416e-06,0.161944,0.00393014,-4.98177e-05,1.09114e-06,0.165825,0.00383377,-4.65443e-05,9.57987e-07,0.169613,0.00374356,-4.36703e-05,8.88359e-07,0.173314,0.00365888,-4.10052e-05,7.7849e-07,0.176933,0.00357921,-3.86697e-05,7.36254e-07,0.180474,0.00350408,-3.6461e-05,6.42534e-07,0.183942,0.00343308,-3.45334e-05,6.12614e-07,0.187342,0.00336586,-3.26955e-05,5.42894e-07,0.190675,0.00330209,-3.10669e-05,5.08967e-07,0.193947,0.00324149,-2.954e-05,4.75977e-07,0.197159,0.00318383,-2.8112e-05,4.18343e-07,0.200315,0.00312887,-2.6857e-05,4.13651e-07,0.203418,0.00307639,-2.5616e-05,3.70847e-07,0.206469,0.00302627,-2.45035e-05,3.3813e-07,0.209471,0.00297828,-2.34891e-05,3.32999e-07,0.212426,0.0029323,-2.24901e-05,2.96826e-07,0.215336,0.00288821,-2.15996e-05,2.82736e-07,0.218203,0.00284586,-2.07514e-05,2.70961e-07,0.221029,0.00280517,-1.99385e-05,2.42744e-07,0.223814,0.00276602,-1.92103e-05,2.33277e-07,0.226561,0.0027283,-1.85105e-05,2.2486e-07,0.229271,0.00269195,-1.78359e-05,2.08383e-07,0.231945,0.00265691,-1.72108e-05,1.93305e-07,0.234585,0.00262307,-1.66308e-05,1.80687e-07,0.237192,0.00259035,-1.60888e-05,1.86632e-07,0.239766,0.00255873,-1.55289e-05,1.60569e-07,0.24231,0.00252815,-1.50472e-05,1.54566e-07,0.244823,0.00249852,-1.45835e-05,1.59939e-07,0.247307,0.00246983,-1.41037e-05,1.29549e-07,0.249763,0.00244202,-1.3715e-05,1.41429e-07,0.252191,0.00241501,-1.32907e-05,1.39198e-07,0.254593,0.00238885,-1.28731e-05,1.06444e-07,0.256969,0.00236342,-1.25538e-05,1.2048e-07,0.25932,0.00233867,-1.21924e-05,1.26892e-07,0.261647,0.00231467,-1.18117e-05,8.72084e-08,0.26395,0.00229131,-1.15501e-05,1.20323e-07,0.26623,0.00226857,-1.11891e-05,8.71514e-08,0.268487,0.00224645,-1.09276e-05,9.73165e-08,0.270723,0.00222489,-1.06357e-05,8.98259e-08,0.272937,0.00220389,-1.03662e-05,7.98218e-08,0.275131,0.00218339,-1.01267e-05,9.75254e-08,0.277304,0.00216343,-9.83416e-06,6.65195e-08,0.279458,0.00214396,-9.63461e-06,8.34313e-08,0.281592,0.00212494,-9.38431e-06,7.65919e-08,0.283708,0.00210641,-9.15454e-06,5.7236e-08,0.285805,0.00208827,-8.98283e-06,8.18939e-08,0.287885,0.00207055,-8.73715e-06,6.2224e-08,0.289946,0.00205326,-8.55047e-06,5.66388e-08,0.291991,0.00203633,-8.38056e-06,6.88491e-08,0.294019,0.00201978,-8.17401e-06,5.53955e-08,0.296031,0.00200359,-8.00782e-06,6.71971e-08,0.298027,0.00198778,-7.80623e-06,3.34439e-08,0.300007,0.00197227,-7.7059e-06,6.7248e-08,0.301971,0.00195706,-7.50416e-06,5.51915e-08,0.303921,0.00194221,-7.33858e-06,3.98124e-08,0.305856,0.00192766,-7.21915e-06,5.37795e-08,0.307776,0.00191338,-7.05781e-06,4.30919e-08,0.309683,0.00189939,-6.92853e-06,4.20744e-08,0.311575,0.00188566,-6.80231e-06,5.68321e-08,0.313454,0.00187223,-6.63181e-06,2.86195e-08,0.31532,0.00185905,-6.54595e-06,3.73075e-08,0.317172,0.00184607,-6.43403e-06,6.05684e-08,0.319012,0.00183338,-6.25233e-06,1.84426e-08,0.320839,0.00182094,-6.197e-06,4.44757e-08,0.322654,0.00180867,-6.06357e-06,4.20729e-08,0.324456,0.00179667,-5.93735e-06,2.56511e-08,0.326247,0.00178488,-5.8604e-06,3.41368e-08,0.328026,0.00177326,-5.75799e-06,4.64177e-08,0.329794,0.00176188,-5.61874e-06,1.86107e-08,0.33155,0.0017507,-5.5629e-06,2.81511e-08,0.333295,0.00173966,-5.47845e-06,4.75987e-08,0.335029,0.00172884,-5.33565e-06,1.98726e-08,0.336753,0.00171823,-5.27604e-06,2.19226e-08,0.338466,0.00170775,-5.21027e-06,4.14483e-08,0.340169,0.00169745,-5.08592e-06,2.09017e-08,0.341861,0.00168734,-5.02322e-06,2.39561e-08,0.343543,0.00167737,-4.95135e-06,3.22852e-08,0.345216,0.00166756,-4.85449e-06,2.57173e-08,0.346878,0.00165793,-4.77734e-06,1.38569e-08,0.348532,0.00164841,-4.73577e-06,3.80634e-08,0.350175,0.00163906,-4.62158e-06,1.27043e-08,0.35181,0.00162985,-4.58347e-06,3.03279e-08,0.353435,0.00162078,-4.49249e-06,1.49961e-08,0.355051,0.00161184,-4.4475e-06,2.88977e-08,0.356659,0.00160303,-4.3608e-06,1.84241e-08,0.358257,0.00159436,-4.30553e-06,1.6616e-08,0.359848,0.0015858,-4.25568e-06,3.43218e-08,0.361429,0.00157739,-4.15272e-06,-4.89172e-09,0.363002,0.00156907,-4.16739e-06,4.48498e-08,0.364567,0.00156087,-4.03284e-06,4.30676e-09,0.366124,0.00155282,-4.01992e-06,2.73303e-08,0.367673,0.00154486,-3.93793e-06,5.58036e-09,0.369214,0.001537,-3.92119e-06,3.97554e-08,0.370747,0.00152928,-3.80193e-06,-1.55904e-08,0.372272,0.00152163,-3.8487e-06,5.24081e-08,0.37379,0.00151409,-3.69147e-06,-1.52272e-08,0.375301,0.00150666,-3.73715e-06,3.83028e-08,0.376804,0.0014993,-3.62225e-06,1.10278e-08,0.378299,0.00149209,-3.58916e-06,6.99326e-09,0.379788,0.00148493,-3.56818e-06,2.06038e-08,0.381269,0.00147786,-3.50637e-06,2.98009e-08,0.382744,0.00147093,-3.41697e-06,-2.05978e-08,0.384211,0.00146404,-3.47876e-06,5.25899e-08,0.385672,0.00145724,-3.32099e-06,-1.09471e-08,0.387126,0.00145056,-3.35383e-06,2.10009e-08,0.388573,0.00144392,-3.29083e-06,1.63501e-08,0.390014,0.00143739,-3.24178e-06,3.00641e-09,0.391448,0.00143091,-3.23276e-06,3.12282e-08,0.392875,0.00142454,-3.13908e-06,-8.70932e-09,0.394297,0.00141824,-3.16521e-06,3.34114e-08,0.395712,0.00141201,-3.06497e-06,-5.72754e-09,0.397121,0.00140586,-3.08215e-06,1.9301e-08,0.398524,0.00139975,-3.02425e-06,1.7931e-08,0.39992,0.00139376,-2.97046e-06,-1.61822e-09,0.401311,0.00138781,-2.97531e-06,1.83442e-08,0.402696,0.00138192,-2.92028e-06,1.76485e-08,0.404075,0.00137613,-2.86733e-06,4.68617e-10,0.405448,0.00137039,-2.86593e-06,1.02794e-08,0.406816,0.00136469,-2.83509e-06,1.80179e-08,0.408178,0.00135908,-2.78104e-06,7.05594e-09,0.409534,0.00135354,-2.75987e-06,1.33633e-08,0.410885,0.00134806,-2.71978e-06,-9.04568e-10,0.41223,0.00134261,-2.72249e-06,2.0057e-08,0.41357,0.00133723,-2.66232e-06,1.00841e-08,0.414905,0.00133194,-2.63207e-06,-7.88835e-10,0.416234,0.00132667,-2.63444e-06,2.28734e-08,0.417558,0.00132147,-2.56582e-06,-1.29785e-09,0.418877,0.00131633,-2.56971e-06,1.21205e-08,0.420191,0.00131123,-2.53335e-06,1.24202e-08,0.421499,0.0013062,-2.49609e-06,-2.19681e-09,0.422803,0.0013012,-2.50268e-06,2.61696e-08,0.424102,0.00129628,-2.42417e-06,-1.30747e-08,0.425396,0.00129139,-2.46339e-06,2.6129e-08,0.426685,0.00128654,-2.38501e-06,-2.03454e-09,0.427969,0.00128176,-2.39111e-06,1.18115e-08,0.429248,0.00127702,-2.35567e-06,1.43932e-08,0.430523,0.00127235,-2.31249e-06,-9.77965e-09,0.431793,0.00126769,-2.34183e-06,2.47253e-08,0.433058,0.00126308,-2.26766e-06,2.85278e-10,0.434319,0.00125855,-2.2668e-06,3.93614e-09,0.435575,0.00125403,-2.25499e-06,1.37722e-08,0.436827,0.00124956,-2.21368e-06,5.79803e-10,0.438074,0.00124513,-2.21194e-06,1.37112e-08,0.439317,0.00124075,-2.1708e-06,4.17973e-09,0.440556,0.00123642,-2.15826e-06,-6.27703e-10,0.44179,0.0012321,-2.16015e-06,2.81332e-08,0.44302,0.00122787,-2.07575e-06,-2.24985e-08,0.444246,0.00122365,-2.14324e-06,3.20586e-08,0.445467,0.00121946,-2.04707e-06,-1.6329e-08,0.446685,0.00121532,-2.09605e-06,3.32573e-08,0.447898,0.00121122,-1.99628e-06,-2.72927e-08,0.449107,0.00120715,-2.07816e-06,4.6111e-08,0.450312,0.00120313,-1.93983e-06,-3.79416e-08,0.451514,0.00119914,-2.05365e-06,4.60507e-08,0.452711,0.00119517,-1.9155e-06,-2.7052e-08,0.453904,0.00119126,-1.99666e-06,3.23551e-08,0.455093,0.00118736,-1.89959e-06,-1.29613e-08,0.456279,0.00118352,-1.93848e-06,1.94905e-08,0.45746,0.0011797,-1.88e-06,-5.39588e-09,0.458638,0.00117593,-1.89619e-06,2.09282e-09,0.459812,0.00117214,-1.88991e-06,2.68267e-08,0.460982,0.00116844,-1.80943e-06,-1.99925e-08,0.462149,0.00116476,-1.86941e-06,2.3341e-08,0.463312,0.00116109,-1.79939e-06,-1.37674e-08,0.464471,0.00115745,-1.84069e-06,3.17287e-08,0.465627,0.00115387,-1.7455e-06,-2.37407e-08,0.466779,0.00115031,-1.81673e-06,3.34315e-08,0.467927,0.00114677,-1.71643e-06,-2.05786e-08,0.469073,0.00114328,-1.77817e-06,1.90802e-08,0.470214,0.00113978,-1.72093e-06,3.86247e-09,0.471352,0.00113635,-1.70934e-06,-4.72759e-09,0.472487,0.00113292,-1.72352e-06,1.50478e-08,0.473618,0.00112951,-1.67838e-06,4.14108e-09,0.474746,0.00112617,-1.66595e-06,-1.80986e-09,0.47587,0.00112283,-1.67138e-06,3.09816e-09,0.476991,0.0011195,-1.66209e-06,1.92198e-08,0.478109,0.00111623,-1.60443e-06,-2.03726e-08,0.479224,0.00111296,-1.66555e-06,3.2468e-08,0.480335,0.00110973,-1.56814e-06,-2.00922e-08,0.481443,0.00110653,-1.62842e-06,1.80983e-08,0.482548,0.00110333,-1.57413e-06,7.30362e-09,0.48365,0.0011002,-1.55221e-06,-1.75107e-08,0.484749,0.00109705,-1.60475e-06,3.29373e-08,0.485844,0.00109393,-1.50594e-06,-2.48315e-08,0.486937,0.00109085,-1.58043e-06,3.65865e-08,0.488026,0.0010878,-1.47067e-06,-3.21078e-08,0.489112,0.00108476,-1.56699e-06,3.22397e-08,0.490195,0.00108172,-1.47027e-06,-7.44391e-09,0.491276,0.00107876,-1.49261e-06,-2.46428e-09,0.492353,0.00107577,-1.5e-06,1.73011e-08,0.493427,0.00107282,-1.4481e-06,-7.13552e-09,0.494499,0.0010699,-1.4695e-06,1.1241e-08,0.495567,0.001067,-1.43578e-06,-8.02637e-09,0.496633,0.0010641,-1.45986e-06,2.08645e-08,0.497695,0.00106124,-1.39726e-06,-1.58271e-08,0.498755,0.0010584,-1.44475e-06,1.26415e-08,0.499812,0.00105555,-1.40682e-06,2.48655e-08,0.500866,0.00105281,-1.33222e-06,-5.24988e-08,0.501918,0.00104999,-1.48972e-06,6.59206e-08,0.502966,0.00104721,-1.29196e-06,-3.237e-08,0.504012,0.00104453,-1.38907e-06,3.95479e-09,0.505055,0.00104176,-1.3772e-06,1.65509e-08,0.506096,0.00103905,-1.32755e-06,-1.05539e-08,0.507133,0.00103637,-1.35921e-06,2.56648e-08,0.508168,0.00103373,-1.28222e-06,-3.25007e-08,0.509201,0.00103106,-1.37972e-06,4.47336e-08,0.51023,0.00102844,-1.24552e-06,-2.72245e-08,0.511258,0.00102587,-1.32719e-06,4.55952e-09,0.512282,0.00102323,-1.31352e-06,8.98645e-09,0.513304,0.00102063,-1.28656e-06,1.90992e-08,0.514323,0.00101811,-1.22926e-06,-2.57786e-08,0.51534,0.00101557,-1.30659e-06,2.44104e-08,0.516355,0.00101303,-1.23336e-06,-1.22581e-08,0.517366,0.00101053,-1.27014e-06,2.4622e-08,0.518376,0.00100806,-1.19627e-06,-2.66253e-08,0.519383,0.00100559,-1.27615e-06,2.22744e-08,0.520387,0.00100311,-1.20932e-06,-2.8679e-09,0.521389,0.00100068,-1.21793e-06,-1.08029e-08,0.522388,0.000998211,-1.25034e-06,4.60795e-08,0.523385,0.000995849,-1.1121e-06,-5.4306e-08,0.52438,0.000993462,-1.27502e-06,5.19354e-08,0.525372,0.000991067,-1.11921e-06,-3.42262e-08,0.526362,0.000988726,-1.22189e-06,2.53646e-08,0.52735,0.000986359,-1.14579e-06,-7.62782e-09,0.528335,0.000984044,-1.16868e-06,5.14668e-09,0.529318,0.000981722,-1.15324e-06,-1.29589e-08,0.530298,0.000979377,-1.19211e-06,4.66888e-08,0.531276,0.000977133,-1.05205e-06,-5.45868e-08,0.532252,0.000974865,-1.21581e-06,5.24495e-08,0.533226,0.000972591,-1.05846e-06,-3.60019e-08,0.534198,0.000970366,-1.16647e-06,3.19537e-08,0.535167,0.000968129,-1.07061e-06,-3.2208e-08,0.536134,0.000965891,-1.16723e-06,3.72738e-08,0.537099,0.000963668,-1.05541e-06,2.32205e-09,0.538061,0.000961564,-1.04844e-06,-4.65618e-08,0.539022,0.000959328,-1.18813e-06,6.47159e-08,0.53998,0.000957146,-9.93979e-07,-3.3488e-08,0.540936,0.000955057,-1.09444e-06,9.63166e-09,0.54189,0.000952897,-1.06555e-06,-5.03871e-09,0.542842,0.000950751,-1.08066e-06,1.05232e-08,0.543792,0.000948621,-1.04909e-06,2.25503e-08,0.544739,0.000946591,-9.81444e-07,-4.11195e-08,0.545685,0.000944504,-1.1048e-06,2.27182e-08,0.546628,0.000942363,-1.03665e-06,9.85146e-09,0.54757,0.000940319,-1.00709e-06,-2.51938e-09,0.548509,0.000938297,-1.01465e-06,2.25858e-10,0.549446,0.000936269,-1.01397e-06,1.61598e-09,0.550381,0.000934246,-1.00913e-06,-6.68983e-09,0.551315,0.000932207,-1.0292e-06,2.51434e-08,0.552246,0.000930224,-9.53765e-07,-3.42793e-08,0.553175,0.000928214,-1.0566e-06,5.23688e-08,0.554102,0.000926258,-8.99497e-07,-5.59865e-08,0.555028,0.000924291,-1.06746e-06,5.23679e-08,0.555951,0.000922313,-9.10352e-07,-3.42763e-08,0.556872,0.00092039,-1.01318e-06,2.51326e-08,0.557792,0.000918439,-9.37783e-07,-6.64954e-09,0.558709,0.000916543,-9.57732e-07,1.46554e-09,0.559625,0.000914632,-9.53335e-07,7.87281e-10,0.560538,0.000912728,-9.50973e-07,-4.61466e-09,0.56145,0.000910812,-9.64817e-07,1.76713e-08,0.56236,0.000908935,-9.11804e-07,-6.46564e-09,0.563268,0.000907092,-9.312e-07,8.19121e-09,0.564174,0.000905255,-9.06627e-07,-2.62992e-08,0.565078,0.000903362,-9.85524e-07,3.74007e-08,0.565981,0.000901504,-8.73322e-07,-4.0942e-09,0.566882,0.000899745,-8.85605e-07,-2.1024e-08,0.56778,0.00089791,-9.48677e-07,2.85854e-08,0.568677,0.000896099,-8.62921e-07,-3.3713e-08,0.569573,0.000894272,-9.64059e-07,4.6662e-08,0.570466,0.000892484,-8.24073e-07,-3.37258e-08,0.571358,0.000890734,-9.25251e-07,2.86365e-08,0.572247,0.00088897,-8.39341e-07,-2.12155e-08,0.573135,0.000887227,-9.02988e-07,-3.37913e-09,0.574022,0.000885411,-9.13125e-07,3.47319e-08,0.574906,0.000883689,-8.08929e-07,-1.63394e-08,0.575789,0.000882022,-8.57947e-07,-2.8979e-08,0.57667,0.00088022,-9.44885e-07,7.26509e-08,0.57755,0.000878548,-7.26932e-07,-8.28106e-08,0.578427,0.000876845,-9.75364e-07,7.97774e-08,0.579303,0.000875134,-7.36032e-07,-5.74849e-08,0.580178,0.00087349,-9.08486e-07,3.09529e-08,0.58105,0.000871765,-8.15628e-07,-6.72206e-09,0.581921,0.000870114,-8.35794e-07,-4.06451e-09,0.582791,0.00086843,-8.47987e-07,2.29799e-08,0.583658,0.000866803,-7.79048e-07,-2.82503e-08,0.584524,0.00086516,-8.63799e-07,3.04167e-08,0.585388,0.000863524,-7.72548e-07,-3.38119e-08,0.586251,0.000861877,-8.73984e-07,4.52264e-08,0.587112,0.000860265,-7.38305e-07,-2.78842e-08,0.587972,0.000858705,-8.21958e-07,6.70567e-09,0.58883,0.000857081,-8.01841e-07,1.06161e-09,0.589686,0.000855481,-7.98656e-07,-1.09521e-08,0.590541,0.00085385,-8.31512e-07,4.27468e-08,0.591394,0.000852316,-7.03272e-07,-4.08257e-08,0.592245,0.000850787,-8.25749e-07,1.34677e-09,0.593095,0.000849139,-8.21709e-07,3.54387e-08,0.593944,0.000847602,-7.15393e-07,-2.38924e-08,0.59479,0.0008461,-7.8707e-07,5.26143e-10,0.595636,0.000844527,-7.85491e-07,2.17879e-08,0.596479,0.000843021,-7.20127e-07,-2.80733e-08,0.597322,0.000841497,-8.04347e-07,3.09005e-08,0.598162,0.000839981,-7.11646e-07,-3.5924e-08,0.599002,0.00083845,-8.19418e-07,5.3191e-08,0.599839,0.000836971,-6.59845e-07,-5.76307e-08,0.600676,0.000835478,-8.32737e-07,5.81227e-08,0.60151,0.000833987,-6.58369e-07,-5.56507e-08,0.602344,0.000832503,-8.25321e-07,4.52706e-08,0.603175,0.000830988,-6.89509e-07,-6.22236e-09,0.604006,0.000829591,-7.08176e-07,-2.03811e-08,0.604834,0.000828113,-7.6932e-07,2.8142e-08,0.605662,0.000826659,-6.84894e-07,-3.25822e-08,0.606488,0.000825191,-7.8264e-07,4.25823e-08,0.607312,0.000823754,-6.54893e-07,-1.85376e-08,0.608135,0.000822389,-7.10506e-07,-2.80365e-08,0.608957,0.000820883,-7.94616e-07,7.1079e-08,0.609777,0.000819507,-5.81379e-07,-7.74655e-08,0.610596,0.000818112,-8.13775e-07,5.9969e-08,0.611413,0.000816665,-6.33868e-07,-4.32013e-08,0.612229,0.000815267,-7.63472e-07,5.32313e-08,0.613044,0.0008139,-6.03778e-07,-5.05148e-08,0.613857,0.000812541,-7.55323e-07,2.96187e-08,0.614669,0.000811119,-6.66466e-07,-8.35545e-09,0.615479,0.000809761,-6.91533e-07,3.80301e-09,0.616288,0.00080839,-6.80124e-07,-6.85666e-09,0.617096,0.000807009,-7.00694e-07,2.36237e-08,0.617903,0.000805678,-6.29822e-07,-2.80336e-08,0.618708,0.000804334,-7.13923e-07,2.8906e-08,0.619511,0.000802993,-6.27205e-07,-2.79859e-08,0.620314,0.000801655,-7.11163e-07,2.34329e-08,0.621114,0.000800303,-6.40864e-07,-6.14108e-09,0.621914,0.000799003,-6.59287e-07,1.13151e-09,0.622712,0.000797688,-6.55893e-07,1.61507e-09,0.62351,0.000796381,-6.51048e-07,-7.59186e-09,0.624305,0.000795056,-6.73823e-07,2.87524e-08,0.6251,0.000793794,-5.87566e-07,-4.7813e-08,0.625893,0.000792476,-7.31005e-07,4.32901e-08,0.626685,0.000791144,-6.01135e-07,-6.13814e-09,0.627475,0.000789923,-6.19549e-07,-1.87376e-08,0.628264,0.000788628,-6.75762e-07,2.14837e-08,0.629052,0.000787341,-6.11311e-07,-7.59265e-09,0.629839,0.000786095,-6.34089e-07,8.88692e-09,0.630625,0.000784854,-6.07428e-07,-2.7955e-08,0.631409,0.000783555,-6.91293e-07,4.33285e-08,0.632192,0.000782302,-5.61307e-07,-2.61497e-08,0.632973,0.000781101,-6.39757e-07,1.6658e-09,0.633754,0.000779827,-6.34759e-07,1.94866e-08,0.634533,0.000778616,-5.76299e-07,-2.00076e-08,0.635311,0.000777403,-6.36322e-07,9.39091e-10,0.636088,0.000776133,-6.33505e-07,1.62512e-08,0.636863,0.000774915,-5.84751e-07,-6.33937e-09,0.637638,0.000773726,-6.03769e-07,9.10609e-09,0.638411,0.000772546,-5.76451e-07,-3.00849e-08,0.639183,0.000771303,-6.66706e-07,5.1629e-08,0.639953,0.000770125,-5.11819e-07,-5.7222e-08,0.640723,0.000768929,-6.83485e-07,5.80497e-08,0.641491,0.000767736,-5.09336e-07,-5.57674e-08,0.642259,0.000766551,-6.76638e-07,4.58105e-08,0.643024,0.000765335,-5.39206e-07,-8.26541e-09,0.643789,0.000764231,-5.64002e-07,-1.27488e-08,0.644553,0.000763065,-6.02249e-07,-3.44168e-10,0.645315,0.00076186,-6.03281e-07,1.41254e-08,0.646077,0.000760695,-5.60905e-07,3.44727e-09,0.646837,0.000759584,-5.50563e-07,-2.79144e-08,0.647596,0.000758399,-6.34307e-07,4.86057e-08,0.648354,0.000757276,-4.88489e-07,-4.72989e-08,0.64911,0.000756158,-6.30386e-07,2.13807e-08,0.649866,0.000754961,-5.66244e-07,2.13808e-08,0.65062,0.000753893,-5.02102e-07,-4.7299e-08,0.651374,0.000752746,-6.43999e-07,4.86059e-08,0.652126,0.000751604,-4.98181e-07,-2.79154e-08,0.652877,0.000750524,-5.81927e-07,3.45089e-09,0.653627,0.000749371,-5.71575e-07,1.41119e-08,0.654376,0.00074827,-5.29239e-07,-2.93748e-10,0.655123,0.00074721,-5.3012e-07,-1.29368e-08,0.65587,0.000746111,-5.68931e-07,-7.56355e-09,0.656616,0.000744951,-5.91621e-07,4.3191e-08,0.65736,0.000743897,-4.62048e-07,-4.59911e-08,0.658103,0.000742835,-6.00022e-07,2.15642e-08,0.658846,0.0007417,-5.35329e-07,1.93389e-08,0.659587,0.000740687,-4.77312e-07,-3.93152e-08,0.660327,0.000739615,-5.95258e-07,1.87126e-08,0.661066,0.00073848,-5.3912e-07,2.40695e-08,0.661804,0.000737474,-4.66912e-07,-5.53859e-08,0.662541,0.000736374,-6.33069e-07,7.82648e-08,0.663277,0.000735343,-3.98275e-07,-7.88593e-08,0.664012,0.00073431,-6.34853e-07,5.83585e-08,0.664745,0.000733215,-4.59777e-07,-3.53656e-08,0.665478,0.000732189,-5.65874e-07,2.34994e-08,0.66621,0.000731128,-4.95376e-07,9.72743e-10,0.66694,0.00073014,-4.92458e-07,-2.73903e-08,0.66767,0.000729073,-5.74629e-07,4.89839e-08,0.668398,0.000728071,-4.27677e-07,-4.93359e-08,0.669126,0.000727068,-5.75685e-07,2.91504e-08,0.669853,0.000726004,-4.88234e-07,-7.66109e-09,0.670578,0.000725004,-5.11217e-07,1.49392e-09,0.671303,0.000723986,-5.06735e-07,1.68533e-09,0.672026,0.000722978,-5.01679e-07,-8.23525e-09,0.672749,0.00072195,-5.26385e-07,3.12556e-08,0.67347,0.000720991,-4.32618e-07,-5.71825e-08,0.674191,0.000719954,-6.04166e-07,7.8265e-08,0.67491,0.00071898,-3.69371e-07,-7.70634e-08,0.675628,0.00071801,-6.00561e-07,5.11747e-08,0.676346,0.000716963,-4.47037e-07,-8.42615e-09,0.677062,0.000716044,-4.72315e-07,-1.747e-08,0.677778,0.000715046,-5.24725e-07,1.87015e-08,0.678493,0.000714053,-4.68621e-07,2.26856e-09,0.679206,0.000713123,-4.61815e-07,-2.77758e-08,0.679919,0.000712116,-5.45142e-07,4.92298e-08,0.68063,0.000711173,-3.97453e-07,-4.99339e-08,0.681341,0.000710228,-5.47255e-07,3.12967e-08,0.682051,0.000709228,-4.53365e-07,-1.56481e-08,0.68276,0.000708274,-5.00309e-07,3.12958e-08,0.683467,0.000707367,-4.06422e-07,-4.99303e-08,0.684174,0.000706405,-5.56213e-07,4.9216e-08,0.68488,0.00070544,-4.08565e-07,-2.77245e-08,0.685585,0.00070454,-4.91738e-07,2.07748e-09,0.686289,0.000703562,-4.85506e-07,1.94146e-08,0.686992,0.00070265,-4.27262e-07,-2.01314e-08,0.687695,0.000701735,-4.87656e-07,1.50616e-09,0.688396,0.000700764,-4.83137e-07,1.41067e-08,0.689096,0.00069984,-4.40817e-07,1.67168e-09,0.689795,0.000698963,-4.35802e-07,-2.07934e-08,0.690494,0.000698029,-4.98182e-07,2.18972e-08,0.691192,0.000697099,-4.32491e-07,-7.19092e-09,0.691888,0.000696212,-4.54064e-07,6.86642e-09,0.692584,0.000695325,-4.33464e-07,-2.02747e-08,0.693279,0.000694397,-4.94288e-07,1.46279e-08,0.693973,0.000693452,-4.50405e-07,2.13678e-08,0.694666,0.000692616,-3.86301e-07,-4.04945e-08,0.695358,0.000691721,-5.07785e-07,2.14009e-08,0.696049,0.00069077,-4.43582e-07,1.44955e-08,0.69674,0.000689926,-4.00096e-07,-1.97783e-08,0.697429,0.000689067,-4.5943e-07,5.01296e-09,0.698118,0.000688163,-4.44392e-07,-2.73521e-10,0.698805,0.000687273,-4.45212e-07,-3.91893e-09,0.699492,0.000686371,-4.56969e-07,1.59493e-08,0.700178,0.000685505,-4.09121e-07,-2.73351e-10,0.700863,0.000684686,-4.09941e-07,-1.4856e-08,0.701548,0.000683822,-4.54509e-07,9.25979e-11,0.702231,0.000682913,-4.54231e-07,1.44855e-08,0.702913,0.000682048,-4.10775e-07,1.56992e-09,0.703595,0.000681231,-4.06065e-07,-2.07652e-08,0.704276,0.000680357,-4.68361e-07,2.18864e-08,0.704956,0.000679486,-4.02701e-07,-7.17595e-09,0.705635,0.000678659,-4.24229e-07,6.81748e-09,0.706313,0.000677831,-4.03777e-07,-2.0094e-08,0.70699,0.000676963,-4.64059e-07,1.39538e-08,0.707667,0.000676077,-4.22197e-07,2.38835e-08,0.708343,0.000675304,-3.50547e-07,-4.98831e-08,0.709018,0.000674453,-5.00196e-07,5.64395e-08,0.709692,0.000673622,-3.30878e-07,-5.66657e-08,0.710365,0.00067279,-5.00875e-07,5.1014e-08,0.711037,0.000671942,-3.47833e-07,-2.81809e-08,0.711709,0.000671161,-4.32376e-07,2.10513e-09,0.712379,0.000670303,-4.2606e-07,1.97604e-08,0.713049,0.00066951,-3.66779e-07,-2.15422e-08,0.713718,0.000668712,-4.31406e-07,6.8038e-09,0.714387,0.000667869,-4.10994e-07,-5.67295e-09,0.715054,0.00066703,-4.28013e-07,1.5888e-08,0.715721,0.000666222,-3.80349e-07,1.72576e-09,0.716387,0.000665467,-3.75172e-07,-2.27911e-08,0.717052,0.000664648,-4.43545e-07,2.9834e-08,0.717716,0.00066385,-3.54043e-07,-3.69401e-08,0.718379,0.000663031,-4.64864e-07,5.83219e-08,0.719042,0.000662277,-2.89898e-07,-7.71382e-08,0.719704,0.000661465,-5.21313e-07,7.14171e-08,0.720365,0.000660637,-3.07061e-07,-2.97161e-08,0.721025,0.000659934,-3.96209e-07,-1.21575e-08,0.721685,0.000659105,-4.32682e-07,1.87412e-08,0.722343,0.000658296,-3.76458e-07,-3.2029e-09,0.723001,0.000657533,-3.86067e-07,-5.9296e-09,0.723659,0.000656743,-4.03856e-07,2.69213e-08,0.724315,0.000656016,-3.23092e-07,-4.21511e-08,0.724971,0.000655244,-4.49545e-07,2.24737e-08,0.725625,0.000654412,-3.82124e-07,1.18611e-08,0.726279,0.000653683,-3.46541e-07,-1.03132e-08,0.726933,0.000652959,-3.7748e-07,-3.02128e-08,0.727585,0.000652114,-4.68119e-07,7.15597e-08,0.728237,0.000651392,-2.5344e-07,-7.72119e-08,0.728888,0.000650654,-4.85075e-07,5.8474e-08,0.729538,0.000649859,-3.09654e-07,-3.74746e-08,0.730188,0.000649127,-4.22077e-07,3.18197e-08,0.730837,0.000648379,-3.26618e-07,-3.01997e-08,0.731485,0.000647635,-4.17217e-07,2.93747e-08,0.732132,0.000646888,-3.29093e-07,-2.76943e-08,0.732778,0.000646147,-4.12176e-07,2.17979e-08,0.733424,0.000645388,-3.46783e-07,1.07292e-10,0.734069,0.000644695,-3.46461e-07,-2.22271e-08,0.734713,0.000643935,-4.13142e-07,2.91963e-08,0.735357,0.000643197,-3.25553e-07,-3.49536e-08,0.736,0.000642441,-4.30414e-07,5.10133e-08,0.736642,0.000641733,-2.77374e-07,-4.98904e-08,0.737283,0.000641028,-4.27045e-07,2.93392e-08,0.737924,0.000640262,-3.39028e-07,-7.86156e-09,0.738564,0.000639561,-3.62612e-07,2.10703e-09,0.739203,0.000638842,-3.56291e-07,-5.6653e-10,0.739842,0.000638128,-3.57991e-07,1.59086e-10,0.740479,0.000637412,-3.57513e-07,-6.98321e-11,0.741116,0.000636697,-3.57723e-07,1.20214e-10,0.741753,0.000635982,-3.57362e-07,-4.10987e-10,0.742388,0.000635266,-3.58595e-07,1.5237e-09,0.743023,0.000634553,-3.54024e-07,-5.68376e-09,0.743657,0.000633828,-3.71075e-07,2.12113e-08,0.744291,0.00063315,-3.07441e-07,-1.95569e-08,0.744924,0.000632476,-3.66112e-07,-2.58816e-09,0.745556,0.000631736,-3.73877e-07,2.99096e-08,0.746187,0.000631078,-2.84148e-07,-5.74454e-08,0.746818,0.000630337,-4.56484e-07,8.06629e-08,0.747448,0.000629666,-2.14496e-07,-8.63922e-08,0.748077,0.000628978,-4.73672e-07,8.60918e-08,0.748706,0.000628289,-2.15397e-07,-7.91613e-08,0.749334,0.000627621,-4.5288e-07,5.17393e-08,0.749961,0.00062687,-2.97663e-07,-8.58662e-09,0.750588,0.000626249,-3.23422e-07,-1.73928e-08,0.751214,0.00062555,-3.75601e-07,1.85532e-08,0.751839,0.000624855,-3.19941e-07,2.78479e-09,0.752463,0.000624223,-3.11587e-07,-2.96923e-08,0.753087,0.000623511,-4.00664e-07,5.63799e-08,0.75371,0.000622879,-2.31524e-07,-7.66179e-08,0.754333,0.000622186,-4.61378e-07,7.12778e-08,0.754955,0.000621477,-2.47545e-07,-2.96794e-08,0.755576,0.000620893,-3.36583e-07,-1.21648e-08,0.756196,0.000620183,-3.73077e-07,1.87339e-08,0.756816,0.000619493,-3.16875e-07,-3.16622e-09,0.757435,0.00061885,-3.26374e-07,-6.0691e-09,0.758054,0.000618179,-3.44581e-07,2.74426e-08,0.758672,0.000617572,-2.62254e-07,-4.40968e-08,0.759289,0.000616915,-3.94544e-07,2.97352e-08,0.759906,0.000616215,-3.05338e-07,-1.52393e-08,0.760522,0.000615559,-3.51056e-07,3.12221e-08,0.761137,0.000614951,-2.5739e-07,-5.00443e-08,0.761751,0.000614286,-4.07523e-07,4.9746e-08,0.762365,0.00061362,-2.58285e-07,-2.97303e-08,0.762979,0.000613014,-3.47476e-07,9.57079e-09,0.763591,0.000612348,-3.18764e-07,-8.55287e-09,0.764203,0.000611685,-3.44422e-07,2.46407e-08,0.764815,0.00061107,-2.705e-07,-3.04053e-08,0.765426,0.000610437,-3.61716e-07,3.73759e-08,0.766036,0.000609826,-2.49589e-07,-5.94935e-08,0.766645,0.000609149,-4.28069e-07,8.13889e-08,0.767254,0.000608537,-1.83902e-07,-8.72483e-08,0.767862,0.000607907,-4.45647e-07,8.87901e-08,0.76847,0.000607282,-1.79277e-07,-8.90983e-08,0.769077,0.000606656,-4.46572e-07,8.87892e-08,0.769683,0.000606029,-1.80204e-07,-8.72446e-08,0.770289,0.000605407,-4.41938e-07,8.13752e-08,0.770894,0.000604768,-1.97812e-07,-5.94423e-08,0.771498,0.000604194,-3.76139e-07,3.71848e-08,0.772102,0.000603553,-2.64585e-07,-2.96922e-08,0.772705,0.000602935,-3.53661e-07,2.19793e-08,0.773308,0.000602293,-2.87723e-07,1.37955e-09,0.77391,0.000601722,-2.83585e-07,-2.74976e-08,0.774512,0.000601072,-3.66077e-07,4.9006e-08,0.775112,0.000600487,-2.19059e-07,-4.93171e-08,0.775712,0.000599901,-3.67011e-07,2.90531e-08,0.776312,0.000599254,-2.79851e-07,-7.29081e-09,0.776911,0.000598673,-3.01724e-07,1.10077e-10,0.777509,0.00059807,-3.01393e-07,6.85053e-09,0.778107,0.000597487,-2.80842e-07,-2.75123e-08,0.778704,0.000596843,-3.63379e-07,4.35939e-08,0.779301,0.000596247,-2.32597e-07,-2.7654e-08,0.779897,0.000595699,-3.15559e-07,7.41741e-09,0.780492,0.00059509,-2.93307e-07,-2.01562e-09,0.781087,0.000594497,-2.99354e-07,6.45059e-10,0.781681,0.000593901,-2.97418e-07,-5.64635e-10,0.782275,0.000593304,-2.99112e-07,1.61347e-09,0.782868,0.000592711,-2.94272e-07,-5.88926e-09,0.78346,0.000592105,-3.1194e-07,2.19436e-08,0.784052,0.000591546,-2.46109e-07,-2.22805e-08,0.784643,0.000590987,-3.1295e-07,7.57368e-09,0.785234,0.000590384,-2.90229e-07,-8.01428e-09,0.785824,0.00058978,-3.14272e-07,2.44834e-08,0.786414,0.000589225,-2.40822e-07,-3.03148e-08,0.787003,0.000588652,-3.31766e-07,3.7171e-08,0.787591,0.0005881,-2.20253e-07,-5.87646e-08,0.788179,0.000587483,-3.96547e-07,7.86782e-08,0.788766,0.000586926,-1.60512e-07,-7.71342e-08,0.789353,0.000586374,-3.91915e-07,5.10444e-08,0.789939,0.000585743,-2.38782e-07,-7.83422e-09,0.790524,0.000585242,-2.62284e-07,-1.97076e-08,0.791109,0.000584658,-3.21407e-07,2.70598e-08,0.791693,0.000584097,-2.40228e-07,-2.89269e-08,0.792277,0.000583529,-3.27008e-07,2.90431e-08,0.792861,0.000582963,-2.39879e-07,-2.76409e-08,0.793443,0.0005824,-3.22802e-07,2.1916e-08,0.794025,0.00058182,-2.57054e-07,-4.18368e-10,0.794607,0.000581305,-2.58309e-07,-2.02425e-08,0.795188,0.000580727,-3.19036e-07,2.17838e-08,0.795768,0.000580155,-2.53685e-07,-7.28814e-09,0.796348,0.000579625,-2.75549e-07,7.36871e-09,0.796928,0.000579096,-2.53443e-07,-2.21867e-08,0.797506,0.000578523,-3.20003e-07,2.17736e-08,0.798085,0.000577948,-2.54683e-07,-5.30296e-09,0.798662,0.000577423,-2.70592e-07,-5.61698e-10,0.799239,0.00057688,-2.72277e-07,7.54977e-09,0.799816,0.000576358,-2.49627e-07,-2.96374e-08,0.800392,0.00057577,-3.38539e-07,5.1395e-08,0.800968,0.000575247,-1.84354e-07,-5.67335e-08,0.801543,0.000574708,-3.54555e-07,5.63297e-08,0.802117,0.000574168,-1.85566e-07,-4.93759e-08,0.802691,0.000573649,-3.33693e-07,2.19646e-08,0.803264,0.000573047,-2.678e-07,2.1122e-08,0.803837,0.000572575,-2.04433e-07,-4.68482e-08,0.804409,0.000572026,-3.44978e-07,4.70613e-08,0.804981,0.000571477,-2.03794e-07,-2.21877e-08,0.805552,0.000571003,-2.70357e-07,-1.79153e-08,0.806123,0.000570408,-3.24103e-07,3.42443e-08,0.806693,0.000569863,-2.2137e-07,1.47556e-10,0.807263,0.000569421,-2.20928e-07,-3.48345e-08,0.807832,0.000568874,-3.25431e-07,1.99812e-08,0.808401,0.000568283,-2.65487e-07,1.45143e-08,0.808969,0.000567796,-2.21945e-07,-1.84338e-08,0.809536,0.000567297,-2.77246e-07,-3.83608e-10,0.810103,0.000566741,-2.78397e-07,1.99683e-08,0.81067,0.000566244,-2.18492e-07,-1.98848e-08,0.811236,0.000565747,-2.78146e-07,-3.38976e-11,0.811801,0.000565191,-2.78248e-07,2.00204e-08,0.812366,0.000564695,-2.18187e-07,-2.04429e-08,0.812931,0.000564197,-2.79516e-07,2.1467e-09,0.813495,0.000563644,-2.73076e-07,1.18561e-08,0.814058,0.000563134,-2.37507e-07,1.00334e-08,0.814621,0.000562689,-2.07407e-07,-5.19898e-08,0.815183,0.000562118,-3.63376e-07,7.87163e-08,0.815745,0.000561627,-1.27227e-07,-8.40616e-08,0.816306,0.000561121,-3.79412e-07,7.87163e-08,0.816867,0.000560598,-1.43263e-07,-5.19898e-08,0.817428,0.000560156,-2.99233e-07,1.00335e-08,0.817988,0.000559587,-2.69132e-07,1.18559e-08,0.818547,0.000559085,-2.33564e-07,2.14764e-09,0.819106,0.000558624,-2.27122e-07,-2.04464e-08,0.819664,0.000558108,-2.88461e-07,2.00334e-08,0.820222,0.000557591,-2.28361e-07,-8.24277e-11,0.820779,0.000557135,-2.28608e-07,-1.97037e-08,0.821336,0.000556618,-2.87719e-07,1.92925e-08,0.821893,0.000556101,-2.29841e-07,2.13831e-09,0.822448,0.000555647,-2.23427e-07,-2.78458e-08,0.823004,0.000555117,-3.06964e-07,4.96402e-08,0.823559,0.000554652,-1.58043e-07,-5.15058e-08,0.824113,0.000554181,-3.12561e-07,3.71737e-08,0.824667,0.000553668,-2.0104e-07,-3.75844e-08,0.82522,0.000553153,-3.13793e-07,5.35592e-08,0.825773,0.000552686,-1.53115e-07,-5.74431e-08,0.826326,0.000552207,-3.25444e-07,5.7004e-08,0.826878,0.000551728,-1.54433e-07,-5.13635e-08,0.827429,0.000551265,-3.08523e-07,2.92406e-08,0.82798,0.000550735,-2.20801e-07,-5.99424e-09,0.828531,0.000550276,-2.38784e-07,-5.26363e-09,0.829081,0.000549782,-2.54575e-07,2.70488e-08,0.82963,0.000549354,-1.73429e-07,-4.33268e-08,0.83018,0.000548878,-3.03409e-07,2.7049e-08,0.830728,0.000548352,-2.22262e-07,-5.26461e-09,0.831276,0.000547892,-2.38056e-07,-5.99057e-09,0.831824,0.000547397,-2.56027e-07,2.92269e-08,0.832371,0.000546973,-1.68347e-07,-5.13125e-08,0.832918,0.000546482,-3.22284e-07,5.68139e-08,0.833464,0.000546008,-1.51843e-07,-5.67336e-08,0.83401,0.000545534,-3.22043e-07,5.09113e-08,0.834555,0.000545043,-1.6931e-07,-2.77022e-08,0.8351,0.000544621,-2.52416e-07,2.92924e-10,0.835644,0.000544117,-2.51537e-07,2.65305e-08,0.836188,0.000543694,-1.71946e-07,-4.68105e-08,0.836732,0.00054321,-3.12377e-07,4.15021e-08,0.837275,0.000542709,-1.87871e-07,1.13355e-11,0.837817,0.000542334,-1.87837e-07,-4.15474e-08,0.838359,0.000541833,-3.12479e-07,4.69691e-08,0.838901,0.000541349,-1.71572e-07,-2.71196e-08,0.839442,0.000540925,-2.52931e-07,1.90462e-09,0.839983,0.000540425,-2.47217e-07,1.95011e-08,0.840523,0.000539989,-1.88713e-07,-2.03045e-08,0.841063,0.00053955,-2.49627e-07,2.11216e-09,0.841602,0.000539057,-2.4329e-07,1.18558e-08,0.842141,0.000538606,-2.07723e-07,1.00691e-08,0.842679,0.000538221,-1.77516e-07,-5.21324e-08,0.843217,0.00053771,-3.33913e-07,7.92513e-08,0.843755,0.00053728,-9.6159e-08,-8.60587e-08,0.844292,0.000536829,-3.54335e-07,8.61696e-08,0.844828,0.000536379,-9.58263e-08,-7.98057e-08,0.845364,0.000535948,-3.35243e-07,5.42394e-08,0.8459,0.00053544,-1.72525e-07,-1.79426e-08,0.846435,0.000535041,-2.26353e-07,1.75308e-08,0.84697,0.000534641,-1.73761e-07,-5.21806e-08,0.847505,0.000534137,-3.30302e-07,7.19824e-08,0.848038,0.000533692,-1.14355e-07,-5.69349e-08,0.848572,0.000533293,-2.8516e-07,3.65479e-08,0.849105,0.000532832,-1.75516e-07,-2.96519e-08,0.849638,0.000532392,-2.64472e-07,2.2455e-08,0.85017,0.000531931,-1.97107e-07,-5.63451e-10,0.850702,0.000531535,-1.98797e-07,-2.02011e-08,0.851233,0.000531077,-2.59401e-07,2.17634e-08,0.851764,0.000530623,-1.94111e-07,-7.24794e-09,0.852294,0.000530213,-2.15854e-07,7.22832e-09,0.852824,0.000529803,-1.94169e-07,-2.16653e-08,0.853354,0.00052935,-2.59165e-07,1.98283e-08,0.853883,0.000528891,-1.9968e-07,1.95678e-09,0.854412,0.000528497,-1.9381e-07,-2.76554e-08,0.85494,0.000528027,-2.76776e-07,4.90603e-08,0.855468,0.00052762,-1.29596e-07,-4.93764e-08,0.855995,0.000527213,-2.77725e-07,2.92361e-08,0.856522,0.000526745,-1.90016e-07,-7.96341e-09,0.857049,0.000526341,-2.13907e-07,2.61752e-09,0.857575,0.000525922,-2.06054e-07,-2.50665e-09,0.8581,0.000525502,-2.13574e-07,7.40906e-09,0.858626,0.000525097,-1.91347e-07,-2.71296e-08,0.859151,0.000524633,-2.72736e-07,4.15048e-08,0.859675,0.000524212,-1.48221e-07,-1.96802e-08,0.860199,0.000523856,-2.07262e-07,-2.23886e-08,0.860723,0.000523375,-2.74428e-07,4.96299e-08,0.861246,0.000522975,-1.25538e-07,-5.69216e-08,0.861769,0.000522553,-2.96303e-07,5.88473e-08,0.862291,0.000522137,-1.19761e-07,-5.92584e-08,0.862813,0.00052172,-2.97536e-07,5.8977e-08,0.863334,0.000521301,-1.20605e-07,-5.74403e-08,0.863855,0.000520888,-2.92926e-07,5.15751e-08,0.864376,0.000520457,-1.38201e-07,-2.96506e-08,0.864896,0.000520091,-2.27153e-07,7.42277e-09,0.865416,0.000519659,-2.04885e-07,-4.05057e-11,0.865936,0.00051925,-2.05006e-07,-7.26074e-09,0.866455,0.000518818,-2.26788e-07,2.90835e-08,0.866973,0.000518451,-1.39538e-07,-4.94686e-08,0.867492,0.000518024,-2.87944e-07,4.95814e-08,0.868009,0.000517597,-1.39199e-07,-2.96479e-08,0.868527,0.000517229,-2.28143e-07,9.40539e-09,0.869044,0.000516801,-1.99927e-07,-7.9737e-09,0.86956,0.000516378,-2.23848e-07,2.24894e-08,0.870077,0.000515997,-1.5638e-07,-2.23793e-08,0.870592,0.000515617,-2.23517e-07,7.42302e-09,0.871108,0.000515193,-2.01248e-07,-7.31283e-09,0.871623,0.000514768,-2.23187e-07,2.18283e-08,0.872137,0.000514387,-1.57702e-07,-2.03959e-08,0.872652,0.000514011,-2.1889e-07,1.50711e-10,0.873165,0.000513573,-2.18437e-07,1.97931e-08,0.873679,0.000513196,-1.59058e-07,-1.97183e-08,0.874192,0.000512819,-2.18213e-07,-5.24324e-10,0.874704,0.000512381,-2.19786e-07,2.18156e-08,0.875217,0.000512007,-1.54339e-07,-2.71336e-08,0.875728,0.000511616,-2.3574e-07,2.71141e-08,0.87624,0.000511226,-1.54398e-07,-2.17182e-08,0.876751,0.000510852,-2.19552e-07,1.54131e-10,0.877262,0.000510414,-2.1909e-07,2.11017e-08,0.877772,0.000510039,-1.55785e-07,-2.49562e-08,0.878282,0.000509652,-2.30654e-07,1.91183e-08,0.878791,0.000509248,-1.73299e-07,8.08751e-09,0.8793,0.000508926,-1.49036e-07,-5.14684e-08,0.879809,0.000508474,-3.03441e-07,7.85766e-08,0.880317,0.000508103,-6.77112e-08,-8.40242e-08,0.880825,0.000507715,-3.19784e-07,7.87063e-08,0.881333,0.000507312,-8.36649e-08,-5.19871e-08,0.88184,0.000506988,-2.39626e-07,1.00327e-08,0.882346,0.000506539,-2.09528e-07,1.18562e-08,0.882853,0.000506156,-1.73959e-07,2.14703e-09,0.883359,0.000505814,-1.67518e-07,-2.04444e-08,0.883864,0.000505418,-2.28851e-07,2.00258e-08,0.88437,0.00050502,-1.68774e-07,-5.42855e-11,0.884874,0.000504682,-1.68937e-07,-1.98087e-08,0.885379,0.000504285,-2.28363e-07,1.96842e-08,0.885883,0.000503887,-1.6931e-07,6.76342e-10,0.886387,0.000503551,-1.67281e-07,-2.23896e-08,0.88689,0.000503149,-2.3445e-07,2.92774e-08,0.887393,0.000502768,-1.46618e-07,-3.51152e-08,0.887896,0.00050237,-2.51963e-07,5.15787e-08,0.888398,0.00050202,-9.72271e-08,-5.19903e-08,0.8889,0.00050167,-2.53198e-07,3.71732e-08,0.889401,0.000501275,-1.41678e-07,-3.70978e-08,0.889902,0.00050088,-2.52972e-07,5.16132e-08,0.890403,0.000500529,-9.81321e-08,-5.01459e-08,0.890903,0.000500183,-2.4857e-07,2.9761e-08,0.891403,0.000499775,-1.59287e-07,-9.29351e-09,0.891903,0.000499428,-1.87167e-07,7.41301e-09,0.892402,0.000499076,-1.64928e-07,-2.03585e-08,0.892901,0.000498685,-2.26004e-07,1.44165e-08,0.893399,0.000498276,-1.82754e-07,2.22974e-08,0.893898,0.000497978,-1.15862e-07,-4.40013e-08,0.894395,0.000497614,-2.47866e-07,3.44985e-08,0.894893,0.000497222,-1.44371e-07,-3.43882e-08,0.89539,0.00049683,-2.47535e-07,4.34497e-08,0.895886,0.000496465,-1.17186e-07,-2.02012e-08,0.896383,0.00049617,-1.7779e-07,-2.22497e-08,0.896879,0.000495748,-2.44539e-07,4.95952e-08,0.897374,0.000495408,-9.57532e-08,-5.69217e-08,0.89787,0.000495045,-2.66518e-07,5.88823e-08,0.898364,0.000494689,-8.98713e-08,-5.93983e-08,0.898859,0.000494331,-2.68066e-07,5.95017e-08,0.899353,0.000493973,-8.95613e-08,-5.9399e-08,0.899847,0.000493616,-2.67758e-07,5.8885e-08,0.90034,0.000493257,-9.11033e-08,-5.69317e-08,0.900833,0.000492904,-2.61898e-07,4.96326e-08,0.901326,0.000492529,-1.13001e-07,-2.23893e-08,0.901819,0.000492236,-1.80169e-07,-1.968e-08,0.902311,0.000491817,-2.39209e-07,4.15047e-08,0.902802,0.000491463,-1.14694e-07,-2.71296e-08,0.903293,0.000491152,-1.96083e-07,7.409e-09,0.903784,0.000490782,-1.73856e-07,-2.50645e-09,0.904275,0.000490427,-1.81376e-07,2.61679e-09,0.904765,0.000490072,-1.73525e-07,-7.96072e-09,0.905255,0.000489701,-1.97407e-07,2.92261e-08,0.905745,0.000489394,-1.09729e-07,-4.93389e-08,0.906234,0.000489027,-2.57746e-07,4.89204e-08,0.906723,0.000488658,-1.10985e-07,-2.71333e-08,0.907211,0.000488354,-1.92385e-07,8.30861e-12,0.907699,0.00048797,-1.9236e-07,2.71001e-08,0.908187,0.000487666,-1.1106e-07,-4.88041e-08,0.908675,0.000487298,-2.57472e-07,4.89069e-08,0.909162,0.000486929,-1.10751e-07,-2.76143e-08,0.909649,0.000486625,-1.93594e-07,1.9457e-09,0.910135,0.000486244,-1.87757e-07,1.98315e-08,0.910621,0.000485928,-1.28262e-07,-2.16671e-08,0.911107,0.000485606,-1.93264e-07,7.23216e-09,0.911592,0.000485241,-1.71567e-07,-7.26152e-09,0.912077,0.000484877,-1.93352e-07,2.18139e-08,0.912562,0.000484555,-1.2791e-07,-2.03895e-08,0.913047,0.000484238,-1.89078e-07,1.39494e-10,0.913531,0.000483861,-1.8866e-07,1.98315e-08,0.914014,0.000483543,-1.29165e-07,-1.98609e-08,0.914498,0.000483225,-1.88748e-07,7.39912e-12,0.914981,0.000482847,-1.88726e-07,1.98313e-08,0.915463,0.000482529,-1.29232e-07,-1.9728e-08,0.915946,0.000482212,-1.88416e-07,-5.24035e-10,0.916428,0.000481833,-1.89988e-07,2.18241e-08,0.916909,0.000481519,-1.24516e-07,-2.71679e-08,0.917391,0.000481188,-2.06019e-07,2.72427e-08,0.917872,0.000480858,-1.24291e-07,-2.21985e-08,0.918353,0.000480543,-1.90886e-07,1.94644e-09,0.918833,0.000480167,-1.85047e-07,1.44127e-08,0.919313,0.00047984,-1.41809e-07,7.39438e-12,0.919793,0.000479556,-1.41787e-07,-1.44423e-08,0.920272,0.000479229,-1.85114e-07,-1.84291e-09,0.920751,0.000478854,-1.90642e-07,2.18139e-08,0.92123,0.000478538,-1.25201e-07,-2.58081e-08,0.921708,0.00047821,-2.02625e-07,2.18139e-08,0.922186,0.00047787,-1.37183e-07,-1.84291e-09,0.922664,0.00047759,-1.42712e-07,-1.44423e-08,0.923141,0.000477262,-1.86039e-07,7.34701e-12,0.923618,0.00047689,-1.86017e-07,1.44129e-08,0.924095,0.000476561,-1.42778e-07,1.94572e-09,0.924572,0.000476281,-1.36941e-07,-2.21958e-08,0.925048,0.000475941,-2.03528e-07,2.72327e-08,0.925523,0.000475615,-1.2183e-07,-2.71304e-08,0.925999,0.00047529,-2.03221e-07,2.16843e-08,0.926474,0.000474949,-1.38168e-07,-2.16005e-12,0.926949,0.000474672,-1.38175e-07,-2.16756e-08,0.927423,0.000474331,-2.03202e-07,2.71001e-08,0.927897,0.000474006,-1.21902e-07,-2.71201e-08,0.928371,0.000473681,-2.03262e-07,2.17757e-08,0.928845,0.00047334,-1.37935e-07,-3.78028e-10,0.929318,0.000473063,-1.39069e-07,-2.02636e-08,0.929791,0.000472724,-1.9986e-07,2.18276e-08,0.930263,0.000472389,-1.34377e-07,-7.44231e-09,0.930736,0.000472098,-1.56704e-07,7.94165e-09,0.931208,0.000471809,-1.32879e-07,-2.43243e-08,0.931679,0.00047147,-2.05851e-07,2.97508e-08,0.932151,0.000471148,-1.16599e-07,-3.50742e-08,0.932622,0.000470809,-2.21822e-07,5.09414e-08,0.933092,0.000470518,-6.89976e-08,-4.94821e-08,0.933563,0.000470232,-2.17444e-07,2.77775e-08,0.934033,0.00046988,-1.34111e-07,-2.02351e-09,0.934502,0.000469606,-1.40182e-07,-1.96835e-08,0.934972,0.000469267,-1.99232e-07,2.11529e-08,0.935441,0.000468932,-1.35774e-07,-5.32332e-09,0.93591,0.000468644,-1.51743e-07,1.40413e-10,0.936378,0.000468341,-1.51322e-07,4.76166e-09,0.936846,0.000468053,-1.37037e-07,-1.9187e-08,0.937314,0.000467721,-1.94598e-07,1.23819e-08,0.937782,0.000467369,-1.57453e-07,2.92642e-08,0.938249,0.000467142,-6.96601e-08,-6.98342e-08,0.938716,0.000466793,-2.79163e-07,7.12586e-08,0.939183,0.000466449,-6.53869e-08,-3.63863e-08,0.939649,0.000466209,-1.74546e-07,1.46818e-08,0.940115,0.000465904,-1.305e-07,-2.2341e-08,0.940581,0.000465576,-1.97523e-07,1.50774e-08,0.941046,0.000465226,-1.52291e-07,2.16359e-08,0.941511,0.000464986,-8.73832e-08,-4.20162e-08,0.941976,0.000464685,-2.13432e-07,2.72198e-08,0.942441,0.00046434,-1.31773e-07,-7.2581e-09,0.942905,0.000464055,-1.53547e-07,1.81263e-09,0.943369,0.000463753,-1.48109e-07,7.58386e-12,0.943832,0.000463457,-1.48086e-07,-1.84298e-09,0.944296,0.000463155,-1.53615e-07,7.36433e-09,0.944759,0.00046287,-1.31522e-07,-2.76143e-08,0.945221,0.000462524,-2.14365e-07,4.34883e-08,0.945684,0.000462226,-8.39003e-08,-2.71297e-08,0.946146,0.000461977,-1.65289e-07,5.42595e-09,0.946608,0.000461662,-1.49012e-07,5.42593e-09,0.947069,0.000461381,-1.32734e-07,-2.71297e-08,0.94753,0.000461034,-2.14123e-07,4.34881e-08,0.947991,0.000460736,-8.36585e-08,-2.76134e-08,0.948452,0.000460486,-1.66499e-07,7.36083e-09,0.948912,0.000460175,-1.44416e-07,-1.82993e-09,0.949372,0.000459881,-1.49906e-07,-4.11073e-11,0.949832,0.000459581,-1.50029e-07,1.99434e-09,0.950291,0.000459287,-1.44046e-07,-7.93627e-09,0.950751,0.000458975,-1.67855e-07,2.97507e-08,0.951209,0.000458728,-7.86029e-08,-5.1462e-08,0.951668,0.000458417,-2.32989e-07,5.6888e-08,0.952126,0.000458121,-6.2325e-08,-5.68806e-08,0.952584,0.000457826,-2.32967e-07,5.14251e-08,0.953042,0.000457514,-7.86914e-08,-2.96107e-08,0.953499,0.000457268,-1.67523e-07,7.41296e-09,0.953956,0.000456955,-1.45285e-07,-4.11262e-11,0.954413,0.000456665,-1.45408e-07,-7.24847e-09,0.95487,0.000456352,-1.67153e-07,2.9035e-08,0.955326,0.000456105,-8.00484e-08,-4.92869e-08,0.955782,0.000455797,-2.27909e-07,4.89032e-08,0.956238,0.000455488,-8.11994e-08,-2.71166e-08,0.956693,0.000455244,-1.62549e-07,-4.13678e-11,0.957148,0.000454919,-1.62673e-07,2.72821e-08,0.957603,0.000454675,-8.0827e-08,-4.94824e-08,0.958057,0.000454365,-2.29274e-07,5.14382e-08,0.958512,0.000454061,-7.49597e-08,-3.7061e-08,0.958965,0.0004538,-1.86143e-07,3.72013e-08,0.959419,0.000453539,-7.45389e-08,-5.21396e-08,0.959873,0.000453234,-2.30958e-07,5.21476e-08,0.960326,0.000452928,-7.45146e-08,-3.72416e-08,0.960778,0.000452667,-1.8624e-07,3.72143e-08,0.961231,0.000452407,-7.45967e-08,-5.20109e-08,0.961683,0.000452101,-2.30629e-07,5.16199e-08,0.962135,0.000451795,-7.57696e-08,-3.52595e-08,0.962587,0.000451538,-1.81548e-07,2.98133e-08,0.963038,0.000451264,-9.2108e-08,-2.43892e-08,0.963489,0.000451007,-1.65276e-07,8.13892e-09,0.96394,0.000450701,-1.40859e-07,-8.16647e-09,0.964391,0.000450394,-1.65358e-07,2.45269e-08,0.964841,0.000450137,-9.17775e-08,-3.03367e-08,0.965291,0.000449863,-1.82787e-07,3.7215e-08,0.965741,0.000449609,-7.11424e-08,-5.89188e-08,0.96619,0.00044929,-2.47899e-07,7.92509e-08,0.966639,0.000449032,-1.01462e-08,-7.92707e-08,0.967088,0.000448773,-2.47958e-07,5.90181e-08,0.967537,0.000448455,-7.0904e-08,-3.75925e-08,0.967985,0.0004482,-1.83681e-07,3.17471e-08,0.968433,0.000447928,-8.84401e-08,-2.97913e-08,0.968881,0.000447662,-1.77814e-07,2.78133e-08,0.969329,0.000447389,-9.4374e-08,-2.18572e-08,0.969776,0.000447135,-1.59946e-07,1.10134e-11,0.970223,0.000446815,-1.59913e-07,2.18132e-08,0.97067,0.000446561,-9.44732e-08,-2.76591e-08,0.971116,0.000446289,-1.7745e-07,2.92185e-08,0.971562,0.000446022,-8.97948e-08,-2.96104e-08,0.972008,0.000445753,-1.78626e-07,2.96185e-08,0.972454,0.000445485,-8.97706e-08,-2.92588e-08,0.972899,0.000445218,-1.77547e-07,2.78123e-08,0.973344,0.000444946,-9.41103e-08,-2.23856e-08,0.973789,0.000444691,-1.61267e-07,2.12559e-09,0.974233,0.000444374,-1.5489e-07,1.38833e-08,0.974678,0.000444106,-1.13241e-07,1.94591e-09,0.975122,0.000443886,-1.07403e-07,-2.16669e-08,0.975565,0.000443606,-1.72404e-07,2.5117e-08,0.976009,0.000443336,-9.70526e-08,-1.91963e-08,0.976452,0.000443085,-1.54642e-07,-7.93627e-09,0.976895,0.000442752,-1.7845e-07,5.09414e-08,0.977338,0.000442548,-2.56262e-08,-7.66201e-08,0.97778,0.000442266,-2.55486e-07,7.67249e-08,0.978222,0.000441986,-2.53118e-08,-5.14655e-08,0.978664,0.000441781,-1.79708e-07,9.92773e-09,0.979106,0.000441451,-1.49925e-07,1.17546e-08,0.979547,0.000441186,-1.14661e-07,2.65868e-09,0.979988,0.000440965,-1.06685e-07,-2.23893e-08,0.980429,0.000440684,-1.73853e-07,2.72939e-08,0.980869,0.000440419,-9.19716e-08,-2.71816e-08,0.98131,0.000440153,-1.73516e-07,2.18278e-08,0.98175,0.000439872,-1.08033e-07,-5.24833e-10,0.982189,0.000439654,-1.09607e-07,-1.97284e-08,0.982629,0.000439376,-1.68793e-07,1.98339e-08,0.983068,0.000439097,-1.09291e-07,-2.62901e-12,0.983507,0.000438879,-1.09299e-07,-1.98234e-08,0.983946,0.000438601,-1.68769e-07,1.96916e-08,0.984384,0.000438322,-1.09694e-07,6.6157e-10,0.984823,0.000438105,-1.0771e-07,-2.23379e-08,0.985261,0.000437823,-1.74723e-07,2.90855e-08,0.985698,0.00043756,-8.74669e-08,-3.43992e-08,0.986136,0.000437282,-1.90665e-07,4.89068e-08,0.986573,0.000437048,-4.39442e-08,-4.20188e-08,0.98701,0.000436834,-1.7e-07,-4.11073e-11,0.987446,0.000436494,-1.70124e-07,4.21832e-08,0.987883,0.00043628,-4.35742e-08,-4.94824e-08,0.988319,0.000436044,-1.92021e-07,3.6537e-08,0.988755,0.00043577,-8.24102e-08,-3.70611e-08,0.989191,0.000435494,-1.93593e-07,5.21026e-08,0.989626,0.000435263,-3.72855e-08,-5.21402e-08,0.990061,0.000435032,-1.93706e-07,3.7249e-08,0.990496,0.000434756,-8.19592e-08,-3.72512e-08,0.990931,0.000434481,-1.93713e-07,5.21511e-08,0.991365,0.00043425,-3.72595e-08,-5.21439e-08,0.991799,0.000434019,-1.93691e-07,3.72152e-08,0.992233,0.000433743,-8.20456e-08,-3.71123e-08,0.992667,0.000433468,-1.93382e-07,5.16292e-08,0.9931,0.000433236,-3.84947e-08,-5.01953e-08,0.993533,0.000433008,-1.89081e-07,2.99427e-08,0.993966,0.00043272,-9.92525e-08,-9.9708e-09,0.994399,0.000432491,-1.29165e-07,9.94051e-09,0.994831,0.000432263,-9.93434e-08,-2.97912e-08,0.995263,0.000431975,-1.88717e-07,4.96198e-08,0.995695,0.000431746,-3.98578e-08,-4.94785e-08,0.996127,0.000431518,-1.88293e-07,2.9085e-08,0.996558,0.000431229,-1.01038e-07,-7.25675e-09,0.996989,0.000431005,-1.22809e-07,-5.79945e-11,0.99742,0.000430759,-1.22983e-07,7.48873e-09,0.997851,0.000430536,-1.00516e-07,-2.98969e-08,0.998281,0.000430245,-1.90207e-07,5.24942e-08,0.998711,0.000430022,-3.27246e-08,-6.08706e-08,0.999141,0.000429774,-2.15336e-07,7.17788e-08,0.999571,0.000429392,0.,0.}; + + template + __device__ __forceinline__ void Lab2RGBConvert_f(const T& src, D& dst) + { + const float lThresh = 0.008856f * 903.3f; + const float fThresh = 7.787f * 0.008856f + 16.0f / 116.0f; + + float Y, fy; + + if (src.x <= lThresh) + { + Y = src.x / 903.3f; + fy = 7.787f * Y + 16.0f / 116.0f; + } + else + { + fy = (src.x + 16.0f) / 116.0f; + Y = fy * fy * fy; + } + + float X = src.y / 500.0f + fy; + float Z = fy - src.z / 200.0f; + + if (X <= fThresh) + X = (X - 16.0f / 116.0f) / 7.787f; + else + X = X * X * X; + + if (Z <= fThresh) + Z = (Z - 16.0f / 116.0f) / 7.787f; + else + Z = Z * Z * Z; + + float B = 0.052891f * X - 0.204043f * Y + 1.151152f * Z; + float G = -0.921235f * X + 1.875991f * Y + 0.045244f * Z; + float R = 3.079933f * X - 1.537150f * Y - 0.542782f * Z; + + if (srgb) + { + B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + } + + dst.x = blueIdx == 0 ? B : R; + dst.y = G; + dst.z = blueIdx == 0 ? R : B; + setAlpha(dst, ColorChannel::max()); + } + + template + __device__ __forceinline__ void Lab2RGBConvert_b(const T& src, D& dst) + { + float3 srcf, dstf; + + srcf.x = src.x * (100.f / 255.f); + srcf.y = src.y - 128; + srcf.z = src.z - 128; + + Lab2RGBConvert_f(srcf, dstf); + + dst.x = saturate_cast(dstf.x * 255.f); + dst.y = saturate_cast(dstf.y * 255.f); + dst.z = saturate_cast(dstf.z * 255.f); + setAlpha(dst, ColorChannel::max()); + } + + template struct Lab2RGB; + template + struct Lab2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + Lab2RGBConvert_b(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ Lab2RGB() {} + __host__ __device__ __forceinline__ Lab2RGB(const Lab2RGB&) {} + }; + template + struct Lab2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + Lab2RGBConvert_f(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ Lab2RGB() {} + __host__ __device__ __forceinline__ Lab2RGB(const Lab2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(name, scn, dcn, srgb, blueIdx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::Lab2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + +///////////////////////////////////// RGB <-> Luv ///////////////////////////////////// + + namespace color_detail + { + __constant__ float c_LabCbrtTab[] = {0.137931,0.0114066,0.,1.18859e-07,0.149338,0.011407,3.56578e-07,-5.79396e-07,0.160745,0.0114059,-1.38161e-06,2.16892e-06,0.172151,0.0114097,5.12516e-06,-8.0814e-06,0.183558,0.0113957,-1.9119e-05,3.01567e-05,0.194965,0.0114479,7.13509e-05,-0.000112545,0.206371,0.011253,-0.000266285,-0.000106493,0.217252,0.0104009,-0.000585765,7.32149e-05,0.22714,0.00944906,-0.00036612,1.21917e-05,0.236235,0.0087534,-0.000329545,2.01753e-05,0.244679,0.00815483,-0.000269019,1.24435e-05,0.252577,0.00765412,-0.000231689,1.05618e-05,0.26001,0.00722243,-0.000200003,8.26662e-06,0.267041,0.00684723,-0.000175203,6.76746e-06,0.27372,0.00651712,-0.000154901,5.61192e-06,0.280088,0.00622416,-0.000138065,4.67009e-06,0.286179,0.00596204,-0.000124055,3.99012e-06,0.292021,0.0057259,-0.000112085,3.36032e-06,0.297638,0.00551181,-0.000102004,2.95338e-06,0.30305,0.00531666,-9.31435e-05,2.52875e-06,0.308277,0.00513796,-8.55572e-05,2.22022e-06,0.313331,0.00497351,-7.88966e-05,1.97163e-06,0.318228,0.00482163,-7.29817e-05,1.7248e-06,0.322978,0.00468084,-6.78073e-05,1.55998e-06,0.327593,0.0045499,-6.31274e-05,1.36343e-06,0.332081,0.00442774,-5.90371e-05,1.27136e-06,0.336451,0.00431348,-5.5223e-05,1.09111e-06,0.34071,0.00420631,-5.19496e-05,1.0399e-06,0.344866,0.00410553,-4.88299e-05,9.18347e-07,0.348923,0.00401062,-4.60749e-05,8.29942e-07,0.352889,0.00392096,-4.35851e-05,7.98478e-07,0.356767,0.00383619,-4.11896e-05,6.84917e-07,0.360562,0.00375586,-3.91349e-05,6.63976e-07,0.36428,0.00367959,-3.7143e-05,5.93086e-07,0.367923,0.00360708,-3.53637e-05,5.6976e-07,0.371495,0.00353806,-3.36544e-05,4.95533e-07,0.375,0.00347224,-3.21678e-05,4.87951e-07,0.378441,0.00340937,-3.0704e-05,4.4349e-07,0.38182,0.00334929,-2.93735e-05,4.20297e-07,0.38514,0.0032918,-2.81126e-05,3.7872e-07,0.388404,0.00323671,-2.69764e-05,3.596e-07,0.391614,0.00318384,-2.58976e-05,3.5845e-07,0.394772,0.00313312,-2.48223e-05,2.92765e-07,0.397881,0.00308435,-2.3944e-05,3.18232e-07,0.400942,0.00303742,-2.29893e-05,2.82046e-07,0.403957,0.00299229,-2.21432e-05,2.52315e-07,0.406927,0.00294876,-2.13862e-05,2.58416e-07,0.409855,0.00290676,-2.0611e-05,2.33939e-07,0.412741,0.00286624,-1.99092e-05,2.36342e-07,0.415587,0.00282713,-1.92001e-05,1.916e-07,0.418396,0.00278931,-1.86253e-05,2.1915e-07,0.421167,0.00275271,-1.79679e-05,1.83498e-07,0.423901,0.00271733,-1.74174e-05,1.79343e-07,0.426602,0.00268303,-1.68794e-05,1.72013e-07,0.429268,0.00264979,-1.63633e-05,1.75686e-07,0.431901,0.00261759,-1.58363e-05,1.3852e-07,0.434503,0.00258633,-1.54207e-05,1.64304e-07,0.437074,0.00255598,-1.49278e-05,1.28136e-07,0.439616,0.00252651,-1.45434e-05,1.57618e-07,0.442128,0.0024979,-1.40705e-05,1.0566e-07,0.444612,0.00247007,-1.37535e-05,1.34998e-07,0.447068,0.00244297,-1.33485e-05,1.29207e-07,0.449498,0.00241666,-1.29609e-05,9.32347e-08,0.451902,0.00239102,-1.26812e-05,1.23703e-07,0.45428,0.00236603,-1.23101e-05,9.74072e-08,0.456634,0.0023417,-1.20179e-05,1.12518e-07,0.458964,0.002318,-1.16803e-05,7.83681e-08,0.46127,0.00229488,-1.14452e-05,1.10452e-07,0.463554,0.00227232,-1.11139e-05,7.58719e-08,0.465815,0.00225032,-1.08863e-05,9.2699e-08,0.468055,0.00222882,-1.06082e-05,8.97738e-08,0.470273,0.00220788,-1.03388e-05,5.4845e-08,0.47247,0.00218736,-1.01743e-05,1.0808e-07,0.474648,0.00216734,-9.85007e-06,4.9277e-08,0.476805,0.00214779,-9.70224e-06,8.22408e-08,0.478943,0.00212863,-9.45551e-06,6.87942e-08,0.481063,0.00210993,-9.24913e-06,5.98144e-08,0.483163,0.00209161,-9.06969e-06,7.93789e-08,0.485246,0.00207371,-8.83155e-06,3.99032e-08,0.487311,0.00205616,-8.71184e-06,8.88325e-08,0.489358,0.002039,-8.44534e-06,2.20004e-08,0.491389,0.00202218,-8.37934e-06,9.13872e-08,0.493403,0.0020057,-8.10518e-06,2.96829e-08,0.495401,0.00198957,-8.01613e-06,5.81028e-08,0.497382,0.00197372,-7.84183e-06,6.5731e-08,0.499348,0.00195823,-7.64463e-06,3.66019e-08,0.501299,0.00194305,-7.53483e-06,2.62811e-08,0.503234,0.00192806,-7.45598e-06,9.66907e-08,0.505155,0.00191344,-7.16591e-06,4.18928e-09,0.507061,0.00189912,-7.15334e-06,6.53665e-08,0.508953,0.00188501,-6.95724e-06,3.23686e-08,0.510831,0.00187119,-6.86014e-06,4.35774e-08,0.512696,0.0018576,-6.72941e-06,3.17406e-08,0.514547,0.00184424,-6.63418e-06,6.78785e-08,0.516384,0.00183117,-6.43055e-06,-5.23126e-09,0.518209,0.0018183,-6.44624e-06,7.22562e-08,0.520021,0.00180562,-6.22947e-06,1.42292e-08,0.52182,0.0017932,-6.18679e-06,4.9641e-08,0.523607,0.00178098,-6.03786e-06,2.56259e-08,0.525382,0.00176898,-5.96099e-06,2.66696e-08,0.527145,0.00175714,-5.88098e-06,4.65094e-08,0.528897,0.00174552,-5.74145e-06,2.57114e-08,0.530637,0.00173411,-5.66431e-06,2.94588e-08,0.532365,0.00172287,-5.57594e-06,3.52667e-08,0.534082,0.00171182,-5.47014e-06,8.28868e-09,0.535789,0.00170091,-5.44527e-06,5.07871e-08,0.537484,0.00169017,-5.29291e-06,2.69817e-08,0.539169,0.00167967,-5.21197e-06,2.01009e-08,0.540844,0.0016693,-5.15166e-06,1.18237e-08,0.542508,0.00165903,-5.11619e-06,5.18135e-08,0.544162,0.00164896,-4.96075e-06,1.9341e-08,0.545806,0.00163909,-4.90273e-06,-9.96867e-09,0.54744,0.00162926,-4.93263e-06,8.01382e-08,0.549064,0.00161963,-4.69222e-06,-1.25601e-08,0.550679,0.00161021,-4.7299e-06,2.97067e-08,0.552285,0.00160084,-4.64078e-06,1.29426e-08,0.553881,0.0015916,-4.60195e-06,3.77327e-08,0.555468,0.00158251,-4.48875e-06,1.49412e-08,0.557046,0.00157357,-4.44393e-06,2.17118e-08,0.558615,0.00156475,-4.3788e-06,1.74206e-08,0.560176,0.00155605,-4.32653e-06,2.78152e-08,0.561727,0.00154748,-4.24309e-06,-9.47239e-09,0.563271,0.00153896,-4.27151e-06,6.9679e-08,0.564805,0.00153063,-4.06247e-06,-3.08246e-08,0.566332,0.00152241,-4.15494e-06,5.36188e-08,0.56785,0.00151426,-3.99409e-06,-4.83594e-09,0.56936,0.00150626,-4.00859e-06,2.53293e-08,0.570863,0.00149832,-3.93261e-06,2.27286e-08,0.572357,0.00149052,-3.86442e-06,2.96541e-09,0.573844,0.0014828,-3.85552e-06,2.50147e-08,0.575323,0.00147516,-3.78048e-06,1.61842e-08,0.576794,0.00146765,-3.73193e-06,2.94582e-08,0.578258,0.00146028,-3.64355e-06,-1.48076e-08,0.579715,0.00145295,-3.68798e-06,2.97724e-08,0.581164,0.00144566,-3.59866e-06,1.49272e-08,0.582606,0.00143851,-3.55388e-06,2.97285e-08,0.584041,0.00143149,-3.46469e-06,-1.46323e-08,0.585469,0.00142451,-3.50859e-06,2.88004e-08,0.58689,0.00141758,-3.42219e-06,1.864e-08,0.588304,0.00141079,-3.36627e-06,1.58482e-08,0.589712,0.00140411,-3.31872e-06,-2.24279e-08,0.591112,0.00139741,-3.38601e-06,7.38639e-08,0.592507,0.00139085,-3.16441e-06,-3.46088e-08,0.593894,0.00138442,-3.26824e-06,4.96675e-09,0.595275,0.0013779,-3.25334e-06,7.4346e-08,0.59665,0.00137162,-3.0303e-06,-6.39319e-08,0.598019,0.00136536,-3.2221e-06,6.21725e-08,0.599381,0.00135911,-3.03558e-06,-5.94423e-09,0.600737,0.00135302,-3.05341e-06,2.12091e-08,0.602087,0.00134697,-2.98979e-06,-1.92876e-08,0.603431,0.00134094,-3.04765e-06,5.5941e-08,0.604769,0.00133501,-2.87983e-06,-2.56622e-08,0.606101,0.00132917,-2.95681e-06,4.67078e-08,0.607427,0.0013234,-2.81669e-06,-4.19592e-08,0.608748,0.00131764,-2.94257e-06,6.15243e-08,0.610062,0.00131194,-2.75799e-06,-2.53244e-08,0.611372,0.00130635,-2.83397e-06,3.97739e-08,0.612675,0.0013008,-2.71465e-06,-1.45618e-08,0.613973,0.00129533,-2.75833e-06,1.84733e-08,0.615266,0.00128986,-2.70291e-06,2.73606e-10,0.616553,0.00128446,-2.70209e-06,4.00367e-08,0.617835,0.00127918,-2.58198e-06,-4.12113e-08,0.619111,0.00127389,-2.70561e-06,6.52039e-08,0.620383,0.00126867,-2.51e-06,-4.07901e-08,0.621649,0.00126353,-2.63237e-06,3.83516e-08,0.62291,0.00125838,-2.51732e-06,6.59315e-09,0.624166,0.00125337,-2.49754e-06,-5.11939e-09,0.625416,0.00124836,-2.5129e-06,1.38846e-08,0.626662,0.00124337,-2.47124e-06,9.18514e-09,0.627903,0.00123846,-2.44369e-06,8.97952e-09,0.629139,0.0012336,-2.41675e-06,1.45012e-08,0.63037,0.00122881,-2.37325e-06,-7.37949e-09,0.631597,0.00122404,-2.39538e-06,1.50169e-08,0.632818,0.00121929,-2.35033e-06,6.91648e-09,0.634035,0.00121461,-2.32958e-06,1.69219e-08,0.635248,0.00121,-2.27882e-06,-1.49997e-08,0.636455,0.0012054,-2.32382e-06,4.30769e-08,0.637659,0.00120088,-2.19459e-06,-3.80986e-08,0.638857,0.00119638,-2.30888e-06,4.97134e-08,0.640051,0.00119191,-2.15974e-06,-4.15463e-08,0.641241,0.00118747,-2.28438e-06,5.68667e-08,0.642426,0.00118307,-2.11378e-06,-7.10641e-09,0.643607,0.00117882,-2.1351e-06,-2.8441e-08,0.644784,0.00117446,-2.22042e-06,6.12658e-08,0.645956,0.00117021,-2.03663e-06,-3.78083e-08,0.647124,0.00116602,-2.15005e-06,3.03627e-08,0.648288,0.00116181,-2.05896e-06,-2.40379e-08,0.649448,0.00115762,-2.13108e-06,6.57887e-08,0.650603,0.00115356,-1.93371e-06,-6.03028e-08,0.651755,0.00114951,-2.11462e-06,5.62134e-08,0.652902,0.00114545,-1.94598e-06,-4.53417e-08,0.654046,0.00114142,-2.082e-06,6.55489e-08,0.655185,0.00113745,-1.88536e-06,-3.80396e-08,0.656321,0.00113357,-1.99948e-06,2.70049e-08,0.657452,0.00112965,-1.91846e-06,-1.03755e-08,0.65858,0.00112578,-1.94959e-06,1.44973e-08,0.659704,0.00112192,-1.9061e-06,1.1991e-08,0.660824,0.00111815,-1.87012e-06,-2.85634e-09,0.66194,0.0011144,-1.87869e-06,-5.65782e-10,0.663053,0.00111064,-1.88039e-06,5.11947e-09,0.664162,0.0011069,-1.86503e-06,3.96924e-08,0.665267,0.00110328,-1.74595e-06,-4.46795e-08,0.666368,0.00109966,-1.87999e-06,1.98161e-08,0.667466,0.00109596,-1.82054e-06,2.502e-08,0.66856,0.00109239,-1.74548e-06,-6.86593e-10,0.669651,0.0010889,-1.74754e-06,-2.22739e-08,0.670738,0.00108534,-1.81437e-06,3.01776e-08,0.671821,0.0010818,-1.72383e-06,2.07732e-08,0.672902,0.00107841,-1.66151e-06,-5.36658e-08,0.673978,0.00107493,-1.82251e-06,7.46802e-08,0.675051,0.00107151,-1.59847e-06,-6.62411e-08,0.676121,0.00106811,-1.79719e-06,7.10748e-08,0.677188,0.00106473,-1.58397e-06,-3.92441e-08,0.678251,0.00106145,-1.7017e-06,2.62973e-08,0.679311,0.00105812,-1.62281e-06,-6.34035e-09,0.680367,0.00105486,-1.64183e-06,-9.36249e-10,0.68142,0.00105157,-1.64464e-06,1.00854e-08,0.68247,0.00104831,-1.61438e-06,2.01995e-08,0.683517,0.00104514,-1.55378e-06,-3.1279e-08,0.68456,0.00104194,-1.64762e-06,4.53114e-08,0.685601,0.00103878,-1.51169e-06,-3.07573e-08,0.686638,0.00103567,-1.60396e-06,1.81133e-08,0.687672,0.00103251,-1.54962e-06,1.79085e-08,0.688703,0.00102947,-1.49589e-06,-3.01428e-08,0.689731,0.00102639,-1.58632e-06,4.30583e-08,0.690756,0.00102334,-1.45715e-06,-2.28814e-08,0.691778,0.00102036,-1.52579e-06,-1.11373e-08,0.692797,0.00101727,-1.5592e-06,6.74305e-08,0.693812,0.00101436,-1.35691e-06,-7.97709e-08,0.694825,0.0010114,-1.59622e-06,7.28391e-08,0.695835,0.00100843,-1.37771e-06,-3.27715e-08,0.696842,0.00100558,-1.47602e-06,-1.35807e-09,0.697846,0.00100262,-1.48009e-06,3.82037e-08,0.698847,0.000999775,-1.36548e-06,-3.22474e-08,0.699846,0.000996948,-1.46223e-06,3.11809e-08,0.700841,0.000994117,-1.36868e-06,-3.28714e-08,0.701834,0.000991281,-1.4673e-06,4.07001e-08,0.702824,0.000988468,-1.3452e-06,-1.07197e-08,0.703811,0.000985746,-1.37736e-06,2.17866e-09,0.704795,0.000982998,-1.37082e-06,2.00521e-09,0.705777,0.000980262,-1.3648e-06,-1.01996e-08,0.706756,0.000977502,-1.3954e-06,3.87931e-08,0.707732,0.000974827,-1.27902e-06,-2.57632e-08,0.708706,0.000972192,-1.35631e-06,4.65513e-09,0.709676,0.000969493,-1.34235e-06,7.14257e-09,0.710645,0.00096683,-1.32092e-06,2.63791e-08,0.71161,0.000964267,-1.24178e-06,-5.30543e-08,0.712573,0.000961625,-1.40095e-06,6.66289e-08,0.713533,0.000959023,-1.20106e-06,-3.46474e-08,0.714491,0.000956517,-1.305e-06,1.23559e-08,0.715446,0.000953944,-1.26793e-06,-1.47763e-08,0.716399,0.000951364,-1.31226e-06,4.67494e-08,0.717349,0.000948879,-1.17201e-06,-5.3012e-08,0.718297,0.000946376,-1.33105e-06,4.60894e-08,0.719242,0.000943852,-1.19278e-06,-1.21366e-08,0.720185,0.00094143,-1.22919e-06,2.45673e-09,0.721125,0.000938979,-1.22182e-06,2.30966e-09,0.722063,0.000936543,-1.21489e-06,-1.16954e-08,0.722998,0.000934078,-1.24998e-06,4.44718e-08,0.723931,0.000931711,-1.11656e-06,-4.69823e-08,0.724861,0.000929337,-1.25751e-06,2.4248e-08,0.725789,0.000926895,-1.18477e-06,9.5949e-09,0.726715,0.000924554,-1.15598e-06,-3.02286e-09,0.727638,0.000922233,-1.16505e-06,2.49649e-09,0.72856,0.00091991,-1.15756e-06,-6.96321e-09,0.729478,0.000917575,-1.17845e-06,2.53564e-08,0.730395,0.000915294,-1.10238e-06,-3.48578e-08,0.731309,0.000912984,-1.20695e-06,5.44704e-08,0.732221,0.000910734,-1.04354e-06,-6.38144e-08,0.73313,0.000908455,-1.23499e-06,8.15781e-08,0.734038,0.00090623,-9.90253e-07,-8.3684e-08,0.734943,0.000903999,-1.2413e-06,7.43441e-08,0.735846,0.000901739,-1.01827e-06,-3.48787e-08,0.736746,0.000899598,-1.12291e-06,5.56596e-09,0.737645,0.000897369,-1.10621e-06,1.26148e-08,0.738541,0.000895194,-1.06837e-06,3.57935e-09,0.739435,0.000893068,-1.05763e-06,-2.69322e-08,0.740327,0.000890872,-1.13842e-06,4.45448e-08,0.741217,0.000888729,-1.00479e-06,-3.20376e-08,0.742105,0.000886623,-1.1009e-06,2.40011e-08,0.74299,0.000884493,-1.0289e-06,-4.36209e-09,0.743874,0.000882422,-1.04199e-06,-6.55268e-09,0.744755,0.000880319,-1.06164e-06,3.05728e-08,0.745634,0.000878287,-9.69926e-07,-5.61338e-08,0.746512,0.000876179,-1.13833e-06,7.4753e-08,0.747387,0.000874127,-9.14068e-07,-6.40644e-08,0.74826,0.000872106,-1.10626e-06,6.22955e-08,0.749131,0.000870081,-9.19375e-07,-6.59083e-08,0.75,0.000868044,-1.1171e-06,8.21284e-08,0.750867,0.000866056,-8.70714e-07,-8.37915e-08,0.751732,0.000864064,-1.12209e-06,7.42237e-08,0.752595,0.000862042,-8.99418e-07,-3.42894e-08,0.753456,0.00086014,-1.00229e-06,3.32955e-09,0.754315,0.000858146,-9.92297e-07,2.09712e-08,0.755173,0.000856224,-9.29384e-07,-2.76096e-08,0.756028,0.000854282,-1.01221e-06,2.98627e-08,0.756881,0.000852348,-9.22625e-07,-3.22365e-08,0.757733,0.000850406,-1.01933e-06,3.94786e-08,0.758582,0.000848485,-9.00898e-07,-6.46833e-09,0.75943,0.000846664,-9.20303e-07,-1.36052e-08,0.760275,0.000844783,-9.61119e-07,1.28447e-09,0.761119,0.000842864,-9.57266e-07,8.4674e-09,0.761961,0.000840975,-9.31864e-07,2.44506e-08,0.762801,0.000839185,-8.58512e-07,-4.6665e-08,0.763639,0.000837328,-9.98507e-07,4.30001e-08,0.764476,0.00083546,-8.69507e-07,-6.12609e-09,0.76531,0.000833703,-8.87885e-07,-1.84959e-08,0.766143,0.000831871,-9.43372e-07,2.05052e-08,0.766974,0.000830046,-8.81857e-07,-3.92026e-09,0.767803,0.000828271,-8.93618e-07,-4.82426e-09,0.768631,0.000826469,-9.0809e-07,2.32172e-08,0.769456,0.000824722,-8.38439e-07,-2.84401e-08,0.77028,0.00082296,-9.23759e-07,3.09386e-08,0.771102,0.000821205,-8.30943e-07,-3.57099e-08,0.771922,0.000819436,-9.38073e-07,5.22963e-08,0.772741,0.000817717,-7.81184e-07,-5.42658e-08,0.773558,0.000815992,-9.43981e-07,4.55579e-08,0.774373,0.000814241,-8.07308e-07,-8.75656e-09,0.775186,0.0008126,-8.33578e-07,-1.05315e-08,0.775998,0.000810901,-8.65172e-07,-8.72188e-09,0.776808,0.000809145,-8.91338e-07,4.54191e-08,0.777616,0.000807498,-7.5508e-07,-5.37454e-08,0.778423,0.000805827,-9.16317e-07,5.03532e-08,0.779228,0.000804145,-7.65257e-07,-2.84584e-08,0.780031,0.000802529,-8.50632e-07,3.87579e-09,0.780833,0.00080084,-8.39005e-07,1.29552e-08,0.781633,0.0007992,-8.00139e-07,3.90804e-09,0.782432,0.000797612,-7.88415e-07,-2.85874e-08,0.783228,0.000795949,-8.74177e-07,5.0837e-08,0.784023,0.000794353,-7.21666e-07,-5.55513e-08,0.784817,0.000792743,-8.8832e-07,5.21587e-08,0.785609,0.000791123,-7.31844e-07,-3.38744e-08,0.786399,0.000789558,-8.33467e-07,2.37342e-08,0.787188,0.000787962,-7.62264e-07,-1.45775e-09,0.787975,0.000786433,-7.66638e-07,-1.79034e-08,0.788761,0.000784846,-8.20348e-07,1.34665e-08,0.789545,0.000783246,-7.79948e-07,2.3642e-08,0.790327,0.000781757,-7.09022e-07,-4.84297e-08,0.791108,0.000780194,-8.54311e-07,5.08674e-08,0.791888,0.000778638,-7.01709e-07,-3.58303e-08,0.792666,0.000777127,-8.092e-07,3.28493e-08,0.793442,0.000775607,-7.10652e-07,-3.59624e-08,0.794217,0.000774078,-8.1854e-07,5.13959e-08,0.79499,0.000772595,-6.64352e-07,-5.04121e-08,0.795762,0.000771115,-8.15588e-07,3.10431e-08,0.796532,0.000769577,-7.22459e-07,-1.41557e-08,0.797301,0.00076809,-7.64926e-07,2.55795e-08,0.798069,0.000766636,-6.88187e-07,-2.85578e-08,0.798835,0.000765174,-7.73861e-07,2.90472e-08,0.799599,0.000763714,-6.86719e-07,-2.80262e-08,0.800362,0.000762256,-7.70798e-07,2.34531e-08,0.801123,0.000760785,-7.00438e-07,-6.18144e-09,0.801884,0.000759366,-7.18983e-07,1.27263e-09,0.802642,0.000757931,-7.15165e-07,1.09101e-09,0.803399,0.000756504,-7.11892e-07,-5.63675e-09,0.804155,0.000755064,-7.28802e-07,2.14559e-08,0.80491,0.00075367,-6.64434e-07,-2.05821e-08,0.805663,0.00075228,-7.26181e-07,1.26812e-09,0.806414,0.000750831,-7.22377e-07,1.55097e-08,0.807164,0.000749433,-6.75848e-07,-3.70216e-09,0.807913,0.00074807,-6.86954e-07,-7.0105e-10,0.80866,0.000746694,-6.89057e-07,6.5063e-09,0.809406,0.000745336,-6.69538e-07,-2.53242e-08,0.810151,0.000743921,-7.45511e-07,3.51858e-08,0.810894,0.000742535,-6.39953e-07,3.79034e-09,0.811636,0.000741267,-6.28582e-07,-5.03471e-08,0.812377,0.000739858,-7.79624e-07,7.83886e-08,0.813116,0.000738534,-5.44458e-07,-8.43935e-08,0.813854,0.000737192,-7.97638e-07,8.03714e-08,0.81459,0.000735838,-5.56524e-07,-5.82784e-08,0.815325,0.00073455,-7.31359e-07,3.35329e-08,0.816059,0.000733188,-6.3076e-07,-1.62486e-08,0.816792,0.000731878,-6.79506e-07,3.14614e-08,0.817523,0.000730613,-5.85122e-07,-4.99925e-08,0.818253,0.000729293,-7.35099e-07,4.92994e-08,0.818982,0.000727971,-5.87201e-07,-2.79959e-08,0.819709,0.000726712,-6.71189e-07,3.07959e-09,0.820435,0.000725379,-6.6195e-07,1.56777e-08,0.82116,0.000724102,-6.14917e-07,-6.18564e-09,0.821883,0.000722854,-6.33474e-07,9.06488e-09,0.822606,0.000721614,-6.06279e-07,-3.00739e-08,0.823327,0.000720311,-6.96501e-07,5.16262e-08,0.824046,0.000719073,-5.41623e-07,-5.72214e-08,0.824765,0.000717818,-7.13287e-07,5.80503e-08,0.825482,0.000716566,-5.39136e-07,-5.57703e-08,0.826198,0.00071532,-7.06447e-07,4.58215e-08,0.826912,0.000714045,-5.68983e-07,-8.30636e-09,0.827626,0.000712882,-5.93902e-07,-1.25961e-08,0.828338,0.000711656,-6.3169e-07,-9.13985e-10,0.829049,0.00071039,-6.34432e-07,1.62519e-08,0.829759,0.00070917,-5.85676e-07,-4.48904e-09,0.830468,0.000707985,-5.99143e-07,1.70418e-09,0.831175,0.000706792,-5.9403e-07,-2.32768e-09,0.831881,0.000705597,-6.01014e-07,7.60648e-09,0.832586,0.000704418,-5.78194e-07,-2.80982e-08,0.83329,0.000703177,-6.62489e-07,4.51817e-08,0.833993,0.000701988,-5.26944e-07,-3.34192e-08,0.834694,0.000700834,-6.27201e-07,2.88904e-08,0.835394,0.000699666,-5.4053e-07,-2.25378e-08,0.836093,0.000698517,-6.08143e-07,1.65589e-09,0.836791,0.000697306,-6.03176e-07,1.59142e-08,0.837488,0.000696147,-5.55433e-07,-5.70801e-09,0.838184,0.000695019,-5.72557e-07,6.91792e-09,0.838878,0.000693895,-5.51803e-07,-2.19637e-08,0.839571,0.000692725,-6.17694e-07,2.13321e-08,0.840263,0.000691554,-5.53698e-07,-3.75996e-09,0.840954,0.000690435,-5.64978e-07,-6.29219e-09,0.841644,0.000689287,-5.83855e-07,2.89287e-08,0.842333,0.000688206,-4.97068e-07,-4.98181e-08,0.843021,0.000687062,-6.46523e-07,5.11344e-08,0.843707,0.000685922,-4.9312e-07,-3.55102e-08,0.844393,0.00068483,-5.9965e-07,3.13019e-08,0.845077,0.000683724,-5.05745e-07,-3.00925e-08,0.84576,0.000682622,-5.96022e-07,2.94636e-08,0.846442,0.000681519,-5.07631e-07,-2.81572e-08,0.847123,0.000680419,-5.92103e-07,2.35606e-08,0.847803,0.000679306,-5.21421e-07,-6.48045e-09,0.848482,0.000678243,-5.40863e-07,2.36124e-09,0.849159,0.000677169,-5.33779e-07,-2.96461e-09,0.849836,0.000676092,-5.42673e-07,9.49728e-09,0.850512,0.000675035,-5.14181e-07,-3.50245e-08,0.851186,0.000673902,-6.19254e-07,7.09959e-08,0.851859,0.000672876,-4.06267e-07,-7.01453e-08,0.852532,0.000671853,-6.16703e-07,3.07714e-08,0.853203,0.000670712,-5.24388e-07,6.66423e-09,0.853873,0.000669684,-5.04396e-07,2.17629e-09,0.854542,0.000668681,-4.97867e-07,-1.53693e-08,0.855211,0.000667639,-5.43975e-07,-3.03752e-10,0.855878,0.000666551,-5.44886e-07,1.65844e-08,0.856544,0.000665511,-4.95133e-07,-6.42907e-09,0.857209,0.000664501,-5.1442e-07,9.13195e-09,0.857873,0.0006635,-4.87024e-07,-3.00987e-08,0.858536,0.000662435,-5.7732e-07,5.16584e-08,0.859198,0.000661436,-4.22345e-07,-5.73255e-08,0.859859,0.000660419,-5.94322e-07,5.84343e-08,0.860518,0.000659406,-4.19019e-07,-5.72022e-08,0.861177,0.000658396,-5.90626e-07,5.11653e-08,0.861835,0.000657368,-4.3713e-07,-2.82495e-08,0.862492,0.000656409,-5.21878e-07,2.22788e-09,0.863148,0.000655372,-5.15195e-07,1.9338e-08,0.863803,0.0006544,-4.5718e-07,-1.99754e-08,0.864457,0.000653425,-5.17107e-07,9.59024e-10,0.86511,0.000652394,-5.1423e-07,1.61393e-08,0.865762,0.000651414,-4.65812e-07,-5.91149e-09,0.866413,0.000650465,-4.83546e-07,7.50665e-09,0.867063,0.00064952,-4.61026e-07,-2.4115e-08,0.867712,0.000648526,-5.33371e-07,2.93486e-08,0.86836,0.000647547,-4.45325e-07,-3.36748e-08,0.869007,0.000646555,-5.4635e-07,4.57461e-08,0.869653,0.0006456,-4.09112e-07,-3.01002e-08,0.870298,0.000644691,-4.99412e-07,1.50501e-08,0.870942,0.000643738,-4.54262e-07,-3.01002e-08,0.871585,0.000642739,-5.44563e-07,4.57461e-08,0.872228,0.000641787,-4.07324e-07,-3.36748e-08,0.872869,0.000640871,-5.08349e-07,2.93486e-08,0.873509,0.000639943,-4.20303e-07,-2.4115e-08,0.874149,0.00063903,-4.92648e-07,7.50655e-09,0.874787,0.000638067,-4.70128e-07,-5.91126e-09,0.875425,0.000637109,-4.87862e-07,1.61385e-08,0.876062,0.000636182,-4.39447e-07,9.61961e-10,0.876697,0.000635306,-4.36561e-07,-1.99863e-08,0.877332,0.000634373,-4.9652e-07,1.93785e-08,0.877966,0.000633438,-4.38384e-07,2.07697e-09,0.878599,0.000632567,-4.32153e-07,-2.76864e-08,0.879231,0.00063162,-5.15212e-07,4.90641e-08,0.879862,0.000630737,-3.6802e-07,-4.93606e-08,0.880493,0.000629852,-5.16102e-07,2.9169e-08,0.881122,0.000628908,-4.28595e-07,-7.71083e-09,0.881751,0.000628027,-4.51727e-07,1.6744e-09,0.882378,0.000627129,-4.46704e-07,1.01317e-09,0.883005,0.000626239,-4.43665e-07,-5.72703e-09,0.883631,0.000625334,-4.60846e-07,2.1895e-08,0.884255,0.000624478,-3.95161e-07,-2.22481e-08,0.88488,0.000623621,-4.61905e-07,7.4928e-09,0.885503,0.00062272,-4.39427e-07,-7.72306e-09,0.886125,0.000621818,-4.62596e-07,2.33995e-08,0.886746,0.000620963,-3.92398e-07,-2.62704e-08,0.887367,0.000620099,-4.71209e-07,2.20775e-08,0.887987,0.000619223,-4.04976e-07,-2.43496e-09,0.888605,0.000618406,-4.12281e-07,-1.23377e-08,0.889223,0.000617544,-4.49294e-07,-7.81876e-09,0.88984,0.000616622,-4.72751e-07,4.36128e-08,0.890457,0.000615807,-3.41912e-07,-4.7423e-08,0.891072,0.000614981,-4.84181e-07,2.68698e-08,0.891687,0.000614093,-4.03572e-07,-4.51384e-10,0.8923,0.000613285,-4.04926e-07,-2.50643e-08,0.892913,0.0006124,-4.80119e-07,4.11038e-08,0.893525,0.000611563,-3.56808e-07,-2.01414e-08,0.894136,0.000610789,-4.17232e-07,-2.01426e-08,0.894747,0.000609894,-4.7766e-07,4.11073e-08,0.895356,0.000609062,-3.54338e-07,-2.50773e-08,0.895965,0.000608278,-4.2957e-07,-4.02954e-10,0.896573,0.000607418,-4.30779e-07,2.66891e-08,0.89718,0.000606636,-3.50711e-07,-4.67489e-08,0.897786,0.000605795,-4.90958e-07,4.10972e-08,0.898391,0.000604936,-3.67666e-07,1.56948e-09,0.898996,0.000604205,-3.62958e-07,-4.73751e-08,0.8996,0.000603337,-5.05083e-07,6.87214e-08,0.900202,0.000602533,-2.98919e-07,-4.86966e-08,0.900805,0.000601789,-4.45009e-07,6.85589e-09,0.901406,0.00060092,-4.24441e-07,2.1273e-08,0.902007,0.000600135,-3.60622e-07,-3.23434e-08,0.902606,0.000599317,-4.57652e-07,4.84959e-08,0.903205,0.000598547,-3.12164e-07,-4.24309e-08,0.903803,0.000597795,-4.39457e-07,2.01844e-09,0.904401,0.000596922,-4.33402e-07,3.43571e-08,0.904997,0.000596159,-3.30331e-07,-2.02374e-08,0.905593,0.000595437,-3.91043e-07,-1.30123e-08,0.906188,0.000594616,-4.3008e-07,1.26819e-08,0.906782,0.000593794,-3.92034e-07,2.18894e-08,0.907376,0.000593076,-3.26366e-07,-4.06349e-08,0.907968,0.000592301,-4.4827e-07,2.1441e-08,0.90856,0.000591469,-3.83947e-07,1.44754e-08,0.909151,0.000590744,-3.40521e-07,-1.97379e-08,0.909742,0.000590004,-3.99735e-07,4.87161e-09,0.910331,0.000589219,-3.8512e-07,2.51532e-10,0.91092,0.00058845,-3.84366e-07,-5.87776e-09,0.911508,0.000587663,-4.01999e-07,2.32595e-08,0.912096,0.000586929,-3.3222e-07,-2.75554e-08,0.912682,0.000586182,-4.14887e-07,2.73573e-08,0.913268,0.000585434,-3.32815e-07,-2.22692e-08,0.913853,0.000584702,-3.99622e-07,2.11486e-09,0.914437,0.000583909,-3.93278e-07,1.38098e-08,0.915021,0.000583164,-3.51848e-07,2.25042e-09,0.915604,0.000582467,-3.45097e-07,-2.28115e-08,0.916186,0.000581708,-4.13531e-07,2.93911e-08,0.916767,0.000580969,-3.25358e-07,-3.51481e-08,0.917348,0.000580213,-4.30803e-07,5.15967e-08,0.917928,0.000579506,-2.76012e-07,-5.20296e-08,0.918507,0.000578798,-4.32101e-07,3.73124e-08,0.919085,0.000578046,-3.20164e-07,-3.76154e-08,0.919663,0.000577293,-4.3301e-07,5.35447e-08,0.92024,0.000576587,-2.72376e-07,-5.7354e-08,0.920816,0.000575871,-4.44438e-07,5.66621e-08,0.921391,0.000575152,-2.74452e-07,-5.00851e-08,0.921966,0.000574453,-4.24707e-07,2.4469e-08,0.92254,0.000573677,-3.513e-07,1.18138e-08,0.923114,0.000573009,-3.15859e-07,-1.21195e-08,0.923686,0.000572341,-3.52217e-07,-2.29403e-08,0.924258,0.000571568,-4.21038e-07,4.4276e-08,0.924829,0.000570859,-2.8821e-07,-3.49546e-08,0.9254,0.000570178,-3.93074e-07,3.59377e-08,0.92597,0.000569499,-2.85261e-07,-4.91915e-08,0.926539,0.000568781,-4.32835e-07,4.16189e-08,0.927107,0.00056804,-3.07979e-07,1.92523e-09,0.927675,0.00056743,-3.02203e-07,-4.93198e-08,0.928242,0.000566678,-4.50162e-07,7.61447e-08,0.928809,0.000566006,-2.21728e-07,-7.6445e-08,0.929374,0.000565333,-4.51063e-07,5.08216e-08,0.929939,0.000564583,-2.98599e-07,-7.63212e-09,0.930503,0.000563963,-3.21495e-07,-2.02931e-08,0.931067,0.000563259,-3.82374e-07,2.92001e-08,0.93163,0.000562582,-2.94774e-07,-3.69025e-08,0.932192,0.000561882,-4.05482e-07,5.88053e-08,0.932754,0.000561247,-2.29066e-07,-7.91094e-08,0.933315,0.000560552,-4.66394e-07,7.88184e-08,0.933875,0.000559856,-2.29939e-07,-5.73501e-08,0.934434,0.000559224,-4.01989e-07,3.13727e-08,0.934993,0.000558514,-3.07871e-07,-8.53611e-09,0.935551,0.000557873,-3.33479e-07,2.77175e-09,0.936109,0.000557214,-3.25164e-07,-2.55091e-09,0.936666,0.000556556,-3.32817e-07,7.43188e-09,0.937222,0.000555913,-3.10521e-07,-2.71766e-08,0.937778,0.00055521,-3.92051e-07,4.167e-08,0.938333,0.000554551,-2.67041e-07,-2.02941e-08,0.938887,0.000553956,-3.27923e-07,-2.00984e-08,0.93944,0.00055324,-3.88218e-07,4.10828e-08,0.939993,0.000552587,-2.6497e-07,-2.50237e-08,0.940546,0.000551982,-3.40041e-07,-5.92583e-10,0.941097,0.0005513,-3.41819e-07,2.7394e-08,0.941648,0.000550698,-2.59637e-07,-4.93788e-08,0.942199,0.000550031,-4.07773e-07,5.09119e-08,0.942748,0.000549368,-2.55038e-07,-3.50595e-08,0.943297,0.000548753,-3.60216e-07,2.97214e-08,0.943846,0.000548122,-2.71052e-07,-2.42215e-08,0.944394,0.000547507,-3.43716e-07,7.55985e-09,0.944941,0.000546842,-3.21037e-07,-6.01796e-09,0.945487,0.000546182,-3.3909e-07,1.65119e-08,0.946033,0.000545553,-2.89555e-07,-4.2498e-10,0.946578,0.000544973,-2.9083e-07,-1.4812e-08,0.947123,0.000544347,-3.35266e-07,6.83068e-11,0.947667,0.000543676,-3.35061e-07,1.45388e-08,0.94821,0.00054305,-2.91444e-07,1.38123e-09,0.948753,0.000542471,-2.87301e-07,-2.00637e-08,0.949295,0.000541836,-3.47492e-07,1.92688e-08,0.949837,0.000541199,-2.89685e-07,2.59298e-09,0.950378,0.000540628,-2.81906e-07,-2.96407e-08,0.950918,0.000539975,-3.70829e-07,5.63652e-08,0.951458,0.000539402,-2.01733e-07,-7.66107e-08,0.951997,0.000538769,-4.31565e-07,7.12638e-08,0.952535,0.00053812,-2.17774e-07,-2.96305e-08,0.953073,0.000537595,-3.06665e-07,-1.23464e-08,0.95361,0.000536945,-3.43704e-07,1.94114e-08,0.954147,0.000536316,-2.8547e-07,-5.69451e-09,0.954683,0.000535728,-3.02554e-07,3.36666e-09,0.955219,0.000535133,-2.92454e-07,-7.77208e-09,0.955753,0.000534525,-3.1577e-07,2.77216e-08,0.956288,0.000533976,-2.32605e-07,-4.35097e-08,0.956821,0.00053338,-3.63134e-07,2.7108e-08,0.957354,0.000532735,-2.8181e-07,-5.31772e-09,0.957887,0.000532156,-2.97764e-07,-5.83718e-09,0.958419,0.000531543,-3.15275e-07,2.86664e-08,0.95895,0.000530998,-2.29276e-07,-4.9224e-08,0.959481,0.000530392,-3.76948e-07,4.90201e-08,0.960011,0.000529785,-2.29887e-07,-2.76471e-08,0.96054,0.000529243,-3.12829e-07,1.96385e-09,0.961069,0.000528623,-3.06937e-07,1.97917e-08,0.961598,0.000528068,-2.47562e-07,-2.15261e-08,0.962125,0.000527508,-3.1214e-07,6.70795e-09,0.962653,0.000526904,-2.92016e-07,-5.30573e-09,0.963179,0.000526304,-3.07934e-07,1.4515e-08,0.963705,0.000525732,-2.64389e-07,6.85048e-09,0.964231,0.000525224,-2.43837e-07,-4.19169e-08,0.964756,0.00052461,-3.69588e-07,4.1608e-08,0.96528,0.000523996,-2.44764e-07,-5.30598e-09,0.965804,0.000523491,-2.60682e-07,-2.03841e-08,0.966327,0.000522908,-3.21834e-07,2.72378e-08,0.966849,0.000522346,-2.40121e-07,-2.89625e-08,0.967371,0.000521779,-3.27008e-07,2.90075e-08,0.967893,0.000521212,-2.39986e-07,-2.74629e-08,0.968414,0.00052065,-3.22374e-07,2.12396e-08,0.968934,0.000520069,-2.58656e-07,2.10922e-09,0.969454,0.000519558,-2.52328e-07,-2.96765e-08,0.969973,0.000518964,-3.41357e-07,5.6992e-08,0.970492,0.000518452,-1.70382e-07,-7.90821e-08,0.97101,0.000517874,-4.07628e-07,8.05224e-08,0.971528,0.000517301,-1.66061e-07,-6.41937e-08,0.972045,0.000516776,-3.58642e-07,5.70429e-08,0.972561,0.00051623,-1.87513e-07,-4.47686e-08,0.973077,0.00051572,-3.21819e-07,2.82237e-09,0.973593,0.000515085,-3.13352e-07,3.34792e-08,0.974108,0.000514559,-2.12914e-07,-1.75298e-08,0.974622,0.000514081,-2.65503e-07,-2.29648e-08,0.975136,0.000513481,-3.34398e-07,4.97843e-08,0.975649,0.000512961,-1.85045e-07,-5.6963e-08,0.976162,0.00051242,-3.55934e-07,5.88585e-08,0.976674,0.000511885,-1.79359e-07,-5.92616e-08,0.977185,0.000511348,-3.57143e-07,5.89785e-08,0.977696,0.000510811,-1.80208e-07,-5.74433e-08,0.978207,0.000510278,-3.52538e-07,5.15854e-08,0.978717,0.000509728,-1.97781e-07,-2.9689e-08,0.979226,0.000509243,-2.86848e-07,7.56591e-09,0.979735,0.000508692,-2.64151e-07,-5.74649e-10,0.980244,0.000508162,-2.65875e-07,-5.26732e-09,0.980752,0.000507615,-2.81677e-07,2.16439e-08,0.981259,0.000507116,-2.16745e-07,-2.17037e-08,0.981766,0.000506618,-2.81856e-07,5.56636e-09,0.982272,0.000506071,-2.65157e-07,-5.61689e-10,0.982778,0.000505539,-2.66842e-07,-3.31963e-09,0.983283,0.000504995,-2.76801e-07,1.38402e-08,0.983788,0.000504483,-2.3528e-07,7.56339e-09,0.984292,0.000504035,-2.1259e-07,-4.40938e-08,0.984796,0.000503478,-3.44871e-07,4.96026e-08,0.985299,0.000502937,-1.96064e-07,-3.51071e-08,0.985802,0.000502439,-3.01385e-07,3.12212e-08,0.986304,0.00050193,-2.07721e-07,-3.0173e-08,0.986806,0.000501424,-2.9824e-07,2.9866e-08,0.987307,0.000500917,-2.08642e-07,-2.96865e-08,0.987808,0.000500411,-2.97702e-07,2.92753e-08,0.988308,0.000499903,-2.09876e-07,-2.78101e-08,0.988807,0.0004994,-2.93306e-07,2.23604e-08,0.989307,0.000498881,-2.26225e-07,-2.02681e-09,0.989805,0.000498422,-2.32305e-07,-1.42531e-08,0.990303,0.000497915,-2.75065e-07,-5.65232e-10,0.990801,0.000497363,-2.76761e-07,1.65141e-08,0.991298,0.000496859,-2.27218e-07,-5.88639e-09,0.991795,0.000496387,-2.44878e-07,7.0315e-09,0.992291,0.000495918,-2.23783e-07,-2.22396e-08,0.992787,0.000495404,-2.90502e-07,2.23224e-08,0.993282,0.00049489,-2.23535e-07,-7.44543e-09,0.993776,0.000494421,-2.45871e-07,7.45924e-09,0.994271,0.000493951,-2.23493e-07,-2.23915e-08,0.994764,0.000493437,-2.90668e-07,2.25021e-08,0.995257,0.000492923,-2.23161e-07,-8.01218e-09,0.99575,0.000492453,-2.47198e-07,9.54669e-09,0.996242,0.000491987,-2.18558e-07,-3.01746e-08,0.996734,0.000491459,-3.09082e-07,5.1547e-08,0.997225,0.000490996,-1.54441e-07,-5.68039e-08,0.997716,0.000490517,-3.24853e-07,5.64594e-08,0.998206,0.000490036,-1.55474e-07,-4.98245e-08,0.998696,0.000489576,-3.04948e-07,2.36292e-08,0.999186,0.000489037,-2.3406e-07,1.49121e-08,0.999674,0.000488613,-1.89324e-07,-2.3673e-08,1.00016,0.000488164,-2.60343e-07,2.01754e-08,1.00065,0.000487704,-1.99816e-07,-5.70288e-08,1.00114,0.000487133,-3.70903e-07,8.87303e-08,1.00162,0.000486657,-1.04712e-07,-5.94737e-08,1.00211,0.000486269,-2.83133e-07,2.99553e-08,1.0026,0.000485793,-1.93267e-07,-6.03474e-08,1.00308,0.000485225,-3.74309e-07,9.2225e-08,1.00357,0.000484754,-9.76345e-08,-7.0134e-08,1.00405,0.000484348,-3.08036e-07,6.91016e-08,1.00454,0.000483939,-1.00731e-07,-8.70633e-08,1.00502,0.000483476,-3.61921e-07,4.07328e-08,1.0055,0.000482875,-2.39723e-07,4.33413e-08,1.00599,0.000482525,-1.09699e-07,-9.48886e-08,1.00647,0.000482021,-3.94365e-07,9.77947e-08,1.00695,0.000481526,-1.00981e-07,-5.78713e-08,1.00743,0.00048115,-2.74595e-07,1.44814e-08,1.00791,0.000480645,-2.31151e-07,-5.42665e-11,1.00839,0.000480182,-2.31314e-07,-1.42643e-08,1.00887,0.000479677,-2.74106e-07,5.71115e-08,1.00935,0.0004793,-1.02772e-07,-9.49724e-08,1.00983,0.000478809,-3.87689e-07,8.43596e-08,1.01031,0.000478287,-1.3461e-07,-4.04755e-09,1.01079,0.000478006,-1.46753e-07,-6.81694e-08,1.01127,0.000477508,-3.51261e-07,3.83067e-08,1.01174,0.00047692,-2.36341e-07,3.41521e-08,1.01222,0.00047655,-1.33885e-07,-5.57058e-08,1.0127,0.000476115,-3.01002e-07,6.94616e-08,1.01317,0.000475721,-9.26174e-08,-1.02931e-07,1.01365,0.000475227,-4.01412e-07,1.03846e-07,1.01412,0.000474736,-8.98751e-08,-7.40321e-08,1.0146,0.000474334,-3.11971e-07,7.30735e-08,1.01507,0.00047393,-9.27508e-08,-9.90527e-08,1.01554,0.000473447,-3.89909e-07,8.47188e-08,1.01602,0.000472921,-1.35753e-07,-1.40381e-09,1.01649,0.000472645,-1.39964e-07,-7.91035e-08,1.01696,0.000472128,-3.77275e-07,7.93993e-08,1.01744,0.000471612,-1.39077e-07,-7.52607e-11,1.01791,0.000471334,-1.39302e-07,-7.90983e-08,1.01838,0.000470818,-3.76597e-07,7.80499e-08,1.01885,0.000470299,-1.42448e-07,5.31733e-09,1.01932,0.00047003,-1.26496e-07,-9.93193e-08,1.01979,0.000469479,-4.24453e-07,1.53541e-07,1.02026,0.00046909,3.617e-08,-1.57217e-07,1.02073,0.000468691,-4.35482e-07,1.177e-07,1.02119,0.000468173,-8.23808e-08,-7.51659e-08,1.02166,0.000467783,-3.07878e-07,6.37538e-08,1.02213,0.000467358,-1.16617e-07,-6.064e-08,1.0226,0.000466943,-2.98537e-07,5.9597e-08,1.02306,0.000466525,-1.19746e-07,-5.85386e-08,1.02353,0.00046611,-2.95362e-07,5.53482e-08,1.024,0.000465685,-1.29317e-07,-4.36449e-08,1.02446,0.000465296,-2.60252e-07,2.20268e-11,1.02493,0.000464775,-2.60186e-07,4.35568e-08,1.02539,0.000464386,-1.29516e-07,-5.50398e-08,1.02586,0.000463961,-2.94635e-07,5.73932e-08,1.02632,0.000463544,-1.22456e-07,-5.53236e-08,1.02678,0.000463133,-2.88426e-07,4.46921e-08,1.02725,0.000462691,-1.5435e-07,-4.23534e-09,1.02771,0.000462369,-1.67056e-07,-2.77507e-08,1.02817,0.000461952,-2.50308e-07,-3.97101e-09,1.02863,0.000461439,-2.62221e-07,4.36348e-08,1.02909,0.000461046,-1.31317e-07,-5.13589e-08,1.02955,0.000460629,-2.85394e-07,4.25913e-08,1.03001,0.000460186,-1.5762e-07,2.0285e-10,1.03047,0.000459871,-1.57011e-07,-4.34027e-08,1.03093,0.000459427,-2.87219e-07,5.41987e-08,1.03139,0.000459015,-1.24623e-07,-5.4183e-08,1.03185,0.000458604,-2.87172e-07,4.33239e-08,1.03231,0.000458159,-1.572e-07,9.65817e-11,1.03277,0.000457845,-1.56911e-07,-4.37103e-08,1.03323,0.0004574,-2.88041e-07,5.55351e-08,1.03368,0.000456991,-1.21436e-07,-5.9221e-08,1.03414,0.00045657,-2.99099e-07,6.21394e-08,1.0346,0.000456158,-1.1268e-07,-7.01275e-08,1.03505,0.000455723,-3.23063e-07,9.91614e-08,1.03551,0.000455374,-2.55788e-08,-8.80996e-08,1.03596,0.000455058,-2.89878e-07,1.48184e-08,1.03642,0.000454523,-2.45422e-07,2.88258e-08,1.03687,0.000454119,-1.58945e-07,-1.09125e-08,1.03733,0.000453768,-1.91682e-07,1.48241e-08,1.03778,0.000453429,-1.4721e-07,-4.83838e-08,1.03823,0.00045299,-2.92361e-07,5.95019e-08,1.03869,0.000452584,-1.13856e-07,-7.04146e-08,1.03914,0.000452145,-3.25099e-07,1.02947e-07,1.03959,0.000451803,-1.62583e-08,-1.02955e-07,1.04004,0.000451462,-3.25123e-07,7.04544e-08,1.04049,0.000451023,-1.1376e-07,-5.96534e-08,1.04094,0.000450616,-2.9272e-07,4.89499e-08,1.04139,0.000450178,-1.45871e-07,-1.69369e-08,1.04184,0.000449835,-1.96681e-07,1.87977e-08,1.04229,0.000449498,-1.40288e-07,-5.82539e-08,1.04274,0.000449043,-3.1505e-07,9.50087e-08,1.04319,0.000448698,-3.00238e-08,-8.33623e-08,1.04364,0.000448388,-2.80111e-07,2.20363e-11,1.04409,0.000447828,-2.80045e-07,8.32742e-08,1.04454,0.000447517,-3.02221e-08,-9.47002e-08,1.04498,0.000447173,-3.14323e-07,5.7108e-08,1.04543,0.000446716,-1.42999e-07,-1.45225e-08,1.04588,0.000446386,-1.86566e-07,9.82022e-10,1.04632,0.000446016,-1.8362e-07,1.05944e-08,1.04677,0.00044568,-1.51837e-07,-4.33597e-08,1.04721,0.000445247,-2.81916e-07,4.36352e-08,1.04766,0.000444814,-1.51011e-07,-1.19717e-08,1.0481,0.000444476,-1.86926e-07,4.25158e-09,1.04855,0.000444115,-1.74171e-07,-5.03461e-09,1.04899,0.000443751,-1.89275e-07,1.58868e-08,1.04944,0.00044342,-1.41614e-07,-5.85127e-08,1.04988,0.000442961,-3.17152e-07,9.89548e-08,1.05032,0.000442624,-2.0288e-08,-9.88878e-08,1.05076,0.000442287,-3.16951e-07,5.81779e-08,1.05121,0.000441827,-1.42418e-07,-1.46144e-08,1.05165,0.000441499,-1.86261e-07,2.79892e-10,1.05209,0.000441127,-1.85421e-07,1.34949e-08,1.05253,0.000440797,-1.44937e-07,-5.42594e-08,1.05297,0.000440344,-3.07715e-07,8.43335e-08,1.05341,0.000439982,-5.47146e-08,-4.46558e-08,1.05385,0.000439738,-1.88682e-07,-2.49193e-08,1.05429,0.000439286,-2.6344e-07,2.5124e-08,1.05473,0.000438835,-1.88068e-07,4.36328e-08,1.05517,0.000438589,-5.71699e-08,-8.04459e-08,1.05561,0.000438234,-2.98508e-07,3.97324e-08,1.05605,0.000437756,-1.79311e-07,4.07258e-08,1.05648,0.000437519,-5.71332e-08,-8.34263e-08,1.05692,0.000437155,-3.07412e-07,5.45608e-08,1.05736,0.000436704,-1.4373e-07,-1.56078e-08,1.05779,0.000436369,-1.90553e-07,7.87043e-09,1.05823,0.000436012,-1.66942e-07,-1.58739e-08,1.05867,0.00043563,-2.14563e-07,5.56251e-08,1.0591,0.000435368,-4.76881e-08,-8.74172e-08,1.05954,0.000435011,-3.0994e-07,5.56251e-08,1.05997,0.000434558,-1.43064e-07,-1.58739e-08,1.06041,0.000434224,-1.90686e-07,7.87042e-09,1.06084,0.000433866,-1.67075e-07,-1.56078e-08,1.06127,0.000433485,-2.13898e-07,5.45609e-08,1.06171,0.000433221,-5.02157e-08,-8.34263e-08,1.06214,0.00043287,-3.00495e-07,4.07258e-08,1.06257,0.000432391,-1.78317e-07,3.97325e-08,1.063,0.000432154,-5.91198e-08,-8.04464e-08,1.06344,0.000431794,-3.00459e-07,4.36347e-08,1.06387,0.000431324,-1.69555e-07,2.5117e-08,1.0643,0.000431061,-9.42041e-08,-2.48934e-08,1.06473,0.000430798,-1.68884e-07,-4.47527e-08,1.06516,0.000430326,-3.03142e-07,8.46951e-08,1.06559,0.000429973,-4.90573e-08,-5.56089e-08,1.06602,0.000429708,-2.15884e-07,1.85314e-08,1.06645,0.000429332,-1.6029e-07,-1.85166e-08,1.06688,0.000428956,-2.1584e-07,5.5535e-08,1.06731,0.000428691,-4.92347e-08,-8.44142e-08,1.06774,0.000428339,-3.02477e-07,4.37032e-08,1.06816,0.000427865,-1.71368e-07,2.88107e-08,1.06859,0.000427609,-8.49356e-08,-3.97367e-08,1.06902,0.00042732,-2.04146e-07,1.09267e-08,1.06945,0.000426945,-1.71365e-07,-3.97023e-09,1.06987,0.00042659,-1.83276e-07,4.9542e-09,1.0703,0.000426238,-1.68414e-07,-1.58466e-08,1.07073,0.000425854,-2.15953e-07,5.84321e-08,1.07115,0.000425597,-4.0657e-08,-9.86725e-08,1.07158,0.00042522,-3.36674e-07,9.78392e-08,1.072,0.00042484,-4.31568e-08,-5.42658e-08,1.07243,0.000424591,-2.05954e-07,1.45377e-11,1.07285,0.000424179,-2.0591e-07,5.42076e-08,1.07328,0.00042393,-4.32877e-08,-9.76357e-08,1.0737,0.00042355,-3.36195e-07,9.79165e-08,1.07412,0.000423172,-4.24451e-08,-5.56118e-08,1.07455,0.00042292,-2.09281e-07,5.32143e-09,1.07497,0.000422518,-1.93316e-07,3.43261e-08,1.07539,0.000422234,-9.0338e-08,-2.34165e-08,1.07581,0.000421983,-1.60588e-07,-5.98692e-08,1.07623,0.000421482,-3.40195e-07,1.43684e-07,1.07666,0.000421233,9.08574e-08,-1.5724e-07,1.07708,0.000420943,-3.80862e-07,1.27647e-07,1.0775,0.000420564,2.0791e-09,-1.1493e-07,1.07792,0.000420223,-3.4271e-07,9.36534e-08,1.07834,0.000419819,-6.17499e-08,-2.12653e-08,1.07876,0.000419632,-1.25546e-07,-8.59219e-09,1.07918,0.000419355,-1.51322e-07,-6.35752e-08,1.0796,0.000418861,-3.42048e-07,1.43684e-07,1.08002,0.000418608,8.90034e-08,-1.53532e-07,1.08043,0.000418326,-3.71593e-07,1.12817e-07,1.08085,0.000417921,-3.31414e-08,-5.93184e-08,1.08127,0.000417677,-2.11097e-07,5.24697e-09,1.08169,0.00041727,-1.95356e-07,3.83305e-08,1.0821,0.000416995,-8.03642e-08,-3.93597e-08,1.08252,0.000416716,-1.98443e-07,-1.0094e-10,1.08294,0.000416319,-1.98746e-07,3.97635e-08,1.08335,0.00041604,-7.94557e-08,-3.97437e-08,1.08377,0.000415762,-1.98687e-07,1.94215e-12,1.08419,0.000415365,-1.98681e-07,3.97359e-08,1.0846,0.000415087,-7.94732e-08,-3.97362e-08,1.08502,0.000414809,-1.98682e-07,-4.31063e-13,1.08543,0.000414411,-1.98683e-07,3.97379e-08,1.08584,0.000414133,-7.94694e-08,-3.97418e-08,1.08626,0.000413855,-1.98695e-07,2.00563e-11,1.08667,0.000413458,-1.98635e-07,3.96616e-08,1.08709,0.000413179,-7.965e-08,-3.9457e-08,1.0875,0.000412902,-1.98021e-07,-1.04281e-09,1.08791,0.000412502,-2.01149e-07,4.36282e-08,1.08832,0.000412231,-7.02648e-08,-5.42608e-08,1.08874,0.000411928,-2.33047e-07,5.42057e-08,1.08915,0.000411624,-7.04301e-08,-4.33527e-08,1.08956,0.000411353,-2.00488e-07,-4.07378e-12,1.08997,0.000410952,-2.005e-07,4.3369e-08,1.09038,0.000410681,-7.03934e-08,-5.42627e-08,1.09079,0.000410378,-2.33182e-07,5.44726e-08,1.0912,0.000410075,-6.97637e-08,-4.44186e-08,1.09161,0.000409802,-2.03019e-07,3.99235e-09,1.09202,0.000409408,-1.91042e-07,2.84491e-08,1.09243,0.000409111,-1.05695e-07,1.42043e-09,1.09284,0.000408904,-1.01434e-07,-3.41308e-08,1.09325,0.000408599,-2.03826e-07,1.58937e-08,1.09366,0.000408239,-1.56145e-07,-2.94438e-08,1.09406,0.000407838,-2.44476e-07,1.01881e-07,1.09447,0.000407655,6.11676e-08,-1.39663e-07,1.09488,0.000407358,-3.57822e-07,9.91432e-08,1.09529,0.00040694,-6.03921e-08,-1.84912e-08,1.09569,0.000406764,-1.15866e-07,-2.51785e-08,1.0961,0.000406457,-1.91401e-07,-4.03115e-12,1.09651,0.000406074,-1.91413e-07,2.51947e-08,1.09691,0.000405767,-1.15829e-07,1.84346e-08,1.09732,0.00040559,-6.05254e-08,-9.89332e-08,1.09772,0.000405172,-3.57325e-07,1.3888e-07,1.09813,0.000404874,5.93136e-08,-9.8957e-08,1.09853,0.000404696,-2.37557e-07,1.853e-08,1.09894,0.000404277,-1.81968e-07,2.48372e-08,1.09934,0.000403987,-1.07456e-07,1.33047e-09,1.09975,0.000403776,-1.03465e-07,-3.01591e-08,1.10015,0.000403479,-1.93942e-07,9.66054e-11,1.10055,0.000403091,-1.93652e-07,2.97727e-08,1.10096,0.000402793,-1.04334e-07,2.19273e-11,1.10136,0.000402585,-1.04268e-07,-2.98604e-08,1.10176,0.000402287,-1.93849e-07,2.10325e-10,1.10216,0.0004019,-1.93218e-07,2.90191e-08,1.10256,0.0004016,-1.06161e-07,2.92264e-09,1.10297,0.000401397,-9.73931e-08,-4.07096e-08,1.10337,0.00040108,-2.19522e-07,4.07067e-08,1.10377,0.000400763,-9.7402e-08,-2.90783e-09,1.10417,0.000400559,-1.06126e-07,-2.90754e-08,1.10457,0.00040026,-1.93352e-07,9.00021e-14,1.10497,0.000399873,-1.93351e-07,2.9075e-08,1.10537,0.000399574,-1.06126e-07,2.90902e-09,1.10577,0.00039937,-9.73992e-08,-4.07111e-08,1.10617,0.000399053,-2.19533e-07,4.07262e-08,1.10657,0.000398736,-9.73541e-08,-2.98424e-09,1.10697,0.000398533,-1.06307e-07,-2.87892e-08,1.10736,0.000398234,-1.92674e-07,-1.06824e-09,1.10776,0.000397845,-1.95879e-07,3.30622e-08,1.10816,0.000397552,-9.66926e-08,-1.19712e-08,1.10856,0.000397323,-1.32606e-07,1.48225e-08,1.10895,0.000397102,-8.81387e-08,-4.73187e-08,1.10935,0.000396784,-2.30095e-07,5.52429e-08,1.10975,0.00039649,-6.4366e-08,-5.44437e-08,1.11014,0.000396198,-2.27697e-07,4.33226e-08,1.11054,0.000395872,-9.77293e-08,3.62656e-10,1.11094,0.000395678,-9.66414e-08,-4.47732e-08,1.11133,0.00039535,-2.30961e-07,5.95208e-08,1.11173,0.000395067,-5.23985e-08,-7.41008e-08,1.11212,0.00039474,-2.74701e-07,1.17673e-07,1.11252,0.000394543,7.83181e-08,-1.58172e-07,1.11291,0.000394225,-3.96199e-07,1.57389e-07,1.1133,0.000393905,7.59679e-08,-1.13756e-07,1.1137,0.000393716,-2.653e-07,5.92165e-08,1.11409,0.000393363,-8.76507e-08,-3.90074e-09,1.11449,0.000393176,-9.93529e-08,-4.36136e-08,1.11488,0.000392846,-2.30194e-07,5.91457e-08,1.11527,0.000392563,-5.27564e-08,-7.376e-08,1.11566,0.000392237,-2.74037e-07,1.16685e-07,1.11606,0.000392039,7.60189e-08,-1.54562e-07,1.11645,0.000391727,-3.87667e-07,1.43935e-07,1.11684,0.000391384,4.4137e-08,-6.35487e-08,1.11723,0.000391281,-1.46509e-07,-8.94896e-09,1.11762,0.000390961,-1.73356e-07,-1.98647e-08,1.11801,0.000390555,-2.3295e-07,8.8408e-08,1.1184,0.000390354,3.22736e-08,-9.53486e-08,1.11879,0.000390133,-2.53772e-07,5.45677e-08,1.11918,0.000389789,-9.0069e-08,-3.71296e-09,1.11957,0.000389598,-1.01208e-07,-3.97159e-08,1.11996,0.000389276,-2.20355e-07,4.33671e-08,1.12035,0.000388966,-9.02542e-08,-1.45431e-08,1.12074,0.000388741,-1.33883e-07,1.48052e-08,1.12113,0.000388518,-8.94678e-08,-4.46778e-08,1.12152,0.000388205,-2.23501e-07,4.46966e-08,1.12191,0.000387892,-8.94114e-08,-1.48992e-08,1.12229,0.000387669,-1.34109e-07,1.49003e-08,1.12268,0.000387445,-8.94082e-08,-4.47019e-08,1.12307,0.000387132,-2.23514e-07,4.4698e-08,1.12345,0.000386819,-8.942e-08,-1.48806e-08,1.12384,0.000386596,-1.34062e-07,1.48245e-08,1.12423,0.000386372,-8.95885e-08,-4.44172e-08,1.12461,0.00038606,-2.2284e-07,4.36351e-08,1.125,0.000385745,-9.19348e-08,-1.09139e-08,1.12539,0.000385528,-1.24677e-07,2.05584e-11,1.12577,0.000385279,-1.24615e-07,1.08317e-08,1.12616,0.000385062,-9.21198e-08,-4.33473e-08,1.12654,0.000384748,-2.22162e-07,4.33481e-08,1.12693,0.000384434,-9.21174e-08,-1.08356e-08,1.12731,0.000384217,-1.24624e-07,-5.50907e-12,1.12769,0.000383968,-1.24641e-07,1.08577e-08,1.12808,0.000383751,-9.20679e-08,-4.34252e-08,1.12846,0.000383437,-2.22343e-07,4.36337e-08,1.12884,0.000383123,-9.14422e-08,-1.19005e-08,1.12923,0.000382904,-1.27144e-07,3.96813e-09,1.12961,0.000382662,-1.15239e-07,-3.97207e-09,1.12999,0.000382419,-1.27155e-07,1.19201e-08,1.13038,0.000382201,-9.1395e-08,-4.37085e-08,1.13076,0.000381887,-2.2252e-07,4.37046e-08,1.13114,0.000381573,-9.14068e-08,-1.19005e-08,1.13152,0.000381355,-1.27108e-07,3.89734e-09,1.1319,0.000381112,-1.15416e-07,-3.68887e-09,1.13228,0.00038087,-1.26483e-07,1.08582e-08,1.13266,0.00038065,-9.39083e-08,-3.97438e-08,1.13304,0.000380343,-2.1314e-07,2.89076e-08,1.13342,0.000380003,-1.26417e-07,4.33225e-08,1.1338,0.00037988,3.55072e-09,-8.29883e-08,1.13418,0.000379638,-2.45414e-07,5.0212e-08,1.13456,0.000379298,-9.47781e-08,1.34964e-09,1.13494,0.000379113,-9.07292e-08,-5.56105e-08,1.13532,0.000378764,-2.57561e-07,1.01883e-07,1.1357,0.000378555,4.80889e-08,-1.13504e-07,1.13608,0.000378311,-2.92423e-07,1.13713e-07,1.13646,0.000378067,4.87176e-08,-1.02931e-07,1.13683,0.000377856,-2.60076e-07,5.95923e-08,1.13721,0.000377514,-8.12988e-08,-1.62288e-08,1.13759,0.000377303,-1.29985e-07,5.32278e-09,1.13797,0.000377059,-1.14017e-07,-5.06237e-09,1.13834,0.000376816,-1.29204e-07,1.49267e-08,1.13872,0.000376602,-8.44237e-08,-5.46444e-08,1.1391,0.000376269,-2.48357e-07,8.44417e-08,1.13947,0.000376026,4.96815e-09,-4.47039e-08,1.13985,0.000375902,-1.29143e-07,-2.48355e-08,1.14023,0.000375569,-2.0365e-07,2.48368e-08,1.1406,0.000375236,-1.2914e-07,4.46977e-08,1.14098,0.000375112,4.95341e-09,-8.44184e-08,1.14135,0.000374869,-2.48302e-07,5.45572e-08,1.14173,0.000374536,-8.463e-08,-1.46013e-08,1.1421,0.000374323,-1.28434e-07,3.8478e-09,1.14247,0.000374077,-1.1689e-07,-7.89941e-10,1.14285,0.000373841,-1.1926e-07,-6.88042e-10,1.14322,0.0003736,-1.21324e-07,3.54213e-09,1.1436,0.000373368,-1.10698e-07,-1.34805e-08,1.14397,0.000373107,-1.51139e-07,5.03798e-08,1.14434,0.000372767,0.,0.}; + + template + __device__ __forceinline__ void RGB2LuvConvert_f(const T& src, D& dst) + { + const float _d = 1.f / (0.950456f + 15 + 1.088754f * 3); + const float _un = 13 * (4 * 0.950456f * _d); + const float _vn = 13 * (9 * _d); + + float B = blueIdx == 0 ? src.x : src.z; + float G = src.y; + float R = blueIdx == 0 ? src.z : src.x; + + if (srgb) + { + B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBGammaTab, GAMMA_TAB_SIZE); + } + + float X = R * 0.412453f + G * 0.357580f + B * 0.180423f; + float Y = R * 0.212671f + G * 0.715160f + B * 0.072169f; + float Z = R * 0.019334f + G * 0.119193f + B * 0.950227f; + + float L = splineInterpolate(Y * (LAB_CBRT_TAB_SIZE / 1.5f), c_LabCbrtTab, LAB_CBRT_TAB_SIZE); + L = 116.f * L - 16.f; + + const float d = (4 * 13) / ::fmaxf(X + 15 * Y + 3 * Z, numeric_limits::epsilon()); + float u = L * (X * d - _un); + float v = L * ((9 * 0.25f) * Y * d - _vn); + + dst.x = L; + dst.y = u; + dst.z = v; + } + + template + __device__ __forceinline__ void RGB2LuvConvert_b(const T& src, D& dst) + { + float3 srcf, dstf; + + srcf.x = src.x * (1.f / 255.f); + srcf.y = src.y * (1.f / 255.f); + srcf.z = src.z * (1.f / 255.f); + + RGB2LuvConvert_f(srcf, dstf); + + dst.x = saturate_cast(dstf.x * 2.55f); + dst.y = saturate_cast(dstf.y * 0.72033898305084743f + 96.525423728813564f); + dst.z = saturate_cast(dstf.z * 0.9732824427480916f + 136.259541984732824f); + } + + template struct RGB2Luv; + template + struct RGB2Luv + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2LuvConvert_b(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2Luv() {} + __host__ __device__ __forceinline__ RGB2Luv(const RGB2Luv&) {} + }; + template + struct RGB2Luv + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + RGB2LuvConvert_f(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ RGB2Luv() {} + __host__ __device__ __forceinline__ RGB2Luv(const RGB2Luv&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(name, scn, dcn, srgb, blueIdx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::RGB2Luv functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + namespace color_detail + { + template + __device__ __forceinline__ void Luv2RGBConvert_f(const T& src, D& dst) + { + const float _d = 1.f / (0.950456f + 15 + 1.088754f * 3); + const float _un = 4 * 0.950456f * _d; + const float _vn = 9 * _d; + + float L = src.x; + float u = src.y; + float v = src.z; + + float Y = (L + 16.f) * (1.f / 116.f); + Y = Y * Y * Y; + + float d = (1.f / 13.f) / L; + u = u * d + _un; + v = v * d + _vn; + + float iv = 1.f / v; + float X = 2.25f * u * Y * iv; + float Z = (12 - 3 * u - 20 * v) * Y * 0.25f * iv; + + float B = 0.055648f * X - 0.204043f * Y + 1.057311f * Z; + float G = -0.969256f * X + 1.875991f * Y + 0.041556f * Z; + float R = 3.240479f * X - 1.537150f * Y - 0.498535f * Z; + + if (srgb) + { + B = splineInterpolate(B * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + G = splineInterpolate(G * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + R = splineInterpolate(R * GAMMA_TAB_SIZE, c_sRGBInvGammaTab, GAMMA_TAB_SIZE); + } + + dst.x = blueIdx == 0 ? B : R; + dst.y = G; + dst.z = blueIdx == 0 ? R : B; + setAlpha(dst, ColorChannel::max()); + } + + template + __device__ __forceinline__ void Luv2RGBConvert_b(const T& src, D& dst) + { + float3 srcf, dstf; + + srcf.x = src.x * (100.f / 255.f); + srcf.y = src.y * 1.388235294117647f - 134.f; + srcf.z = src.z * 1.027450980392157f - 140.f; + + Luv2RGBConvert_f(srcf, dstf); + + dst.x = saturate_cast(dstf.x * 255.f); + dst.y = saturate_cast(dstf.y * 255.f); + dst.z = saturate_cast(dstf.z * 255.f); + setAlpha(dst, ColorChannel::max()); + } + + template struct Luv2RGB; + template + struct Luv2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + Luv2RGBConvert_b(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ Luv2RGB() {} + __host__ __device__ __forceinline__ Luv2RGB(const Luv2RGB&) {} + }; + template + struct Luv2RGB + : unary_function::vec_type, typename TypeVec::vec_type> + { + __device__ __forceinline__ typename TypeVec::vec_type operator ()(const typename TypeVec::vec_type& src) const + { + typename TypeVec::vec_type dst; + + Luv2RGBConvert_f(src, dst); + + return dst; + } + __host__ __device__ __forceinline__ Luv2RGB() {} + __host__ __device__ __forceinline__ Luv2RGB(const Luv2RGB&) {} + }; + } + +#define OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(name, scn, dcn, srgb, blueIdx) \ + template struct name ## _traits \ + { \ + typedef ::cv::cuda::device::color_detail::Luv2RGB functor_type; \ + static __host__ __device__ __forceinline__ functor_type create_functor() \ + { \ + return functor_type(); \ + } \ + }; + + #undef CV_DESCALE + +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_COLOR_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce.hpp new file mode 100644 index 0000000..8af20b0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce.hpp @@ -0,0 +1,365 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_REDUCE_DETAIL_HPP +#define OPENCV_CUDA_REDUCE_DETAIL_HPP + +#include +#include "../warp.hpp" +#include "../warp_shuffle.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + namespace reduce_detail + { + template struct GetType; + template struct GetType + { + typedef T type; + }; + template struct GetType + { + typedef T type; + }; + template struct GetType + { + typedef T type; + }; + + template + struct For + { + template + static __device__ void loadToSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid) + { + thrust::get(smem)[tid] = thrust::get(val); + + For::loadToSmem(smem, val, tid); + } + template + static __device__ void loadFromSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid) + { + thrust::get(val) = thrust::get(smem)[tid]; + + For::loadFromSmem(smem, val, tid); + } + + template + static __device__ void merge(const PointerTuple& smem, const ValTuple& val, unsigned int tid, unsigned int delta, const OpTuple& op) + { + typename GetType::type>::type reg = thrust::get(smem)[tid + delta]; + thrust::get(smem)[tid] = thrust::get(val) = thrust::get(op)(thrust::get(val), reg); + + For::merge(smem, val, tid, delta, op); + } + template + static __device__ void mergeShfl(const ValTuple& val, unsigned int delta, unsigned int width, const OpTuple& op) + { + typename GetType::type>::type reg = shfl_down(thrust::get(val), delta, width); + thrust::get(val) = thrust::get(op)(thrust::get(val), reg); + + For::mergeShfl(val, delta, width, op); + } + }; + template + struct For + { + template + static __device__ void loadToSmem(const PointerTuple&, const ValTuple&, unsigned int) + { + } + template + static __device__ void loadFromSmem(const PointerTuple&, const ValTuple&, unsigned int) + { + } + + template + static __device__ void merge(const PointerTuple&, const ValTuple&, unsigned int, unsigned int, const OpTuple&) + { + } + template + static __device__ void mergeShfl(const ValTuple&, unsigned int, unsigned int, const OpTuple&) + { + } + }; + + template + __device__ __forceinline__ void loadToSmem(volatile T* smem, T& val, unsigned int tid) + { + smem[tid] = val; + } + template + __device__ __forceinline__ void loadFromSmem(volatile T* smem, T& val, unsigned int tid) + { + val = smem[tid]; + } + template + __device__ __forceinline__ void loadToSmem(const thrust::tuple& smem, + const thrust::tuple& val, + unsigned int tid) + { + For<0, thrust::tuple_size >::value>::loadToSmem(smem, val, tid); + } + template + __device__ __forceinline__ void loadFromSmem(const thrust::tuple& smem, + const thrust::tuple& val, + unsigned int tid) + { + For<0, thrust::tuple_size >::value>::loadFromSmem(smem, val, tid); + } + + template + __device__ __forceinline__ void merge(volatile T* smem, T& val, unsigned int tid, unsigned int delta, const Op& op) + { + T reg = smem[tid + delta]; + smem[tid] = val = op(val, reg); + } + template + __device__ __forceinline__ void mergeShfl(T& val, unsigned int delta, unsigned int width, const Op& op) + { + T reg = shfl_down(val, delta, width); + val = op(val, reg); + } + template + __device__ __forceinline__ void merge(const thrust::tuple& smem, + const thrust::tuple& val, + unsigned int tid, + unsigned int delta, + const thrust::tuple& op) + { + For<0, thrust::tuple_size >::value>::merge(smem, val, tid, delta, op); + } + template + __device__ __forceinline__ void mergeShfl(const thrust::tuple& val, + unsigned int delta, + unsigned int width, + const thrust::tuple& op) + { + For<0, thrust::tuple_size >::value>::mergeShfl(val, delta, width, op); + } + + template struct Generic + { + template + static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) + { + loadToSmem(smem, val, tid); + if (N >= 32) + __syncthreads(); + + if (N >= 2048) + { + if (tid < 1024) + merge(smem, val, tid, 1024, op); + + __syncthreads(); + } + if (N >= 1024) + { + if (tid < 512) + merge(smem, val, tid, 512, op); + + __syncthreads(); + } + if (N >= 512) + { + if (tid < 256) + merge(smem, val, tid, 256, op); + + __syncthreads(); + } + if (N >= 256) + { + if (tid < 128) + merge(smem, val, tid, 128, op); + + __syncthreads(); + } + if (N >= 128) + { + if (tid < 64) + merge(smem, val, tid, 64, op); + + __syncthreads(); + } + if (N >= 64) + { + if (tid < 32) + merge(smem, val, tid, 32, op); + } + + if (tid < 16) + { + merge(smem, val, tid, 16, op); + merge(smem, val, tid, 8, op); + merge(smem, val, tid, 4, op); + merge(smem, val, tid, 2, op); + merge(smem, val, tid, 1, op); + } + } + }; + + template + struct Unroll + { + static __device__ void loopShfl(Reference val, Op op, unsigned int N) + { + mergeShfl(val, I, N, op); + Unroll::loopShfl(val, op, N); + } + static __device__ void loop(Pointer smem, Reference val, unsigned int tid, Op op) + { + merge(smem, val, tid, I, op); + Unroll::loop(smem, val, tid, op); + } + }; + template + struct Unroll<0, Pointer, Reference, Op> + { + static __device__ void loopShfl(Reference, Op, unsigned int) + { + } + static __device__ void loop(Pointer, Reference, unsigned int, Op) + { + } + }; + + template struct WarpOptimized + { + template + static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + CV_UNUSED(smem); + CV_UNUSED(tid); + + Unroll::loopShfl(val, op, N); + #else + loadToSmem(smem, val, tid); + + if (tid < N / 2) + Unroll::loop(smem, val, tid, op); + #endif + } + }; + + template struct GenericOptimized32 + { + enum { M = N / 32 }; + + template + static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) + { + const unsigned int laneId = Warp::laneId(); + + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + Unroll<16, Pointer, Reference, Op>::loopShfl(val, op, warpSize); + + if (laneId == 0) + loadToSmem(smem, val, tid / 32); + #else + loadToSmem(smem, val, tid); + + if (laneId < 16) + Unroll<16, Pointer, Reference, Op>::loop(smem, val, tid, op); + + __syncthreads(); + + if (laneId == 0) + loadToSmem(smem, val, tid / 32); + #endif + + __syncthreads(); + + loadFromSmem(smem, val, tid); + + if (tid < 32) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + Unroll::loopShfl(val, op, M); + #else + Unroll::loop(smem, val, tid, op); + #endif + } + } + }; + + template struct StaticIf; + template struct StaticIf + { + typedef T1 type; + }; + template struct StaticIf + { + typedef T2 type; + }; + + template struct IsPowerOf2 + { + enum { value = ((N != 0) && !(N & (N - 1))) }; + }; + + template struct Dispatcher + { + typedef typename StaticIf< + (N <= 32) && IsPowerOf2::value, + WarpOptimized, + typename StaticIf< + (N <= 1024) && IsPowerOf2::value, + GenericOptimized32, + Generic + >::type + >::type reductor; + }; + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_REDUCE_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce_key_val.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce_key_val.hpp new file mode 100644 index 0000000..df37c17 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/reduce_key_val.hpp @@ -0,0 +1,502 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP +#define OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP + +#include +#include "../warp.hpp" +#include "../warp_shuffle.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + namespace reduce_key_val_detail + { + template struct GetType; + template struct GetType + { + typedef T type; + }; + template struct GetType + { + typedef T type; + }; + template struct GetType + { + typedef T type; + }; + + template + struct For + { + template + static __device__ void loadToSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid) + { + thrust::get(smem)[tid] = thrust::get(data); + + For::loadToSmem(smem, data, tid); + } + template + static __device__ void loadFromSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid) + { + thrust::get(data) = thrust::get(smem)[tid]; + + For::loadFromSmem(smem, data, tid); + } + + template + static __device__ void copyShfl(const ReferenceTuple& val, unsigned int delta, int width) + { + thrust::get(val) = shfl_down(thrust::get(val), delta, width); + + For::copyShfl(val, delta, width); + } + template + static __device__ void copy(const PointerTuple& svals, const ReferenceTuple& val, unsigned int tid, unsigned int delta) + { + thrust::get(svals)[tid] = thrust::get(val) = thrust::get(svals)[tid + delta]; + + For::copy(svals, val, tid, delta); + } + + template + static __device__ void mergeShfl(const KeyReferenceTuple& key, const ValReferenceTuple& val, const CmpTuple& cmp, unsigned int delta, int width) + { + typename GetType::type>::type reg = shfl_down(thrust::get(key), delta, width); + + if (thrust::get(cmp)(reg, thrust::get(key))) + { + thrust::get(key) = reg; + thrust::get(val) = shfl_down(thrust::get(val), delta, width); + } + + For::mergeShfl(key, val, cmp, delta, width); + } + template + static __device__ void merge(const KeyPointerTuple& skeys, const KeyReferenceTuple& key, + const ValPointerTuple& svals, const ValReferenceTuple& val, + const CmpTuple& cmp, + unsigned int tid, unsigned int delta) + { + typename GetType::type>::type reg = thrust::get(skeys)[tid + delta]; + + if (thrust::get(cmp)(reg, thrust::get(key))) + { + thrust::get(skeys)[tid] = thrust::get(key) = reg; + thrust::get(svals)[tid] = thrust::get(val) = thrust::get(svals)[tid + delta]; + } + + For::merge(skeys, key, svals, val, cmp, tid, delta); + } + }; + template + struct For + { + template + static __device__ void loadToSmem(const PointerTuple&, const ReferenceTuple&, unsigned int) + { + } + template + static __device__ void loadFromSmem(const PointerTuple&, const ReferenceTuple&, unsigned int) + { + } + + template + static __device__ void copyShfl(const ReferenceTuple&, unsigned int, int) + { + } + template + static __device__ void copy(const PointerTuple&, const ReferenceTuple&, unsigned int, unsigned int) + { + } + + template + static __device__ void mergeShfl(const KeyReferenceTuple&, const ValReferenceTuple&, const CmpTuple&, unsigned int, int) + { + } + template + static __device__ void merge(const KeyPointerTuple&, const KeyReferenceTuple&, + const ValPointerTuple&, const ValReferenceTuple&, + const CmpTuple&, + unsigned int, unsigned int) + { + } + }; + + ////////////////////////////////////////////////////// + // loadToSmem + + template + __device__ __forceinline__ void loadToSmem(volatile T* smem, T& data, unsigned int tid) + { + smem[tid] = data; + } + template + __device__ __forceinline__ void loadFromSmem(volatile T* smem, T& data, unsigned int tid) + { + data = smem[tid]; + } + template + __device__ __forceinline__ void loadToSmem(const thrust::tuple& smem, + const thrust::tuple& data, + unsigned int tid) + { + For<0, thrust::tuple_size >::value>::loadToSmem(smem, data, tid); + } + template + __device__ __forceinline__ void loadFromSmem(const thrust::tuple& smem, + const thrust::tuple& data, + unsigned int tid) + { + For<0, thrust::tuple_size >::value>::loadFromSmem(smem, data, tid); + } + + ////////////////////////////////////////////////////// + // copyVals + + template + __device__ __forceinline__ void copyValsShfl(V& val, unsigned int delta, int width) + { + val = shfl_down(val, delta, width); + } + template + __device__ __forceinline__ void copyVals(volatile V* svals, V& val, unsigned int tid, unsigned int delta) + { + svals[tid] = val = svals[tid + delta]; + } + template + __device__ __forceinline__ void copyValsShfl(const thrust::tuple& val, + unsigned int delta, + int width) + { + For<0, thrust::tuple_size >::value>::copyShfl(val, delta, width); + } + template + __device__ __forceinline__ void copyVals(const thrust::tuple& svals, + const thrust::tuple& val, + unsigned int tid, unsigned int delta) + { + For<0, thrust::tuple_size >::value>::copy(svals, val, tid, delta); + } + + ////////////////////////////////////////////////////// + // merge + + template + __device__ __forceinline__ void mergeShfl(K& key, V& val, const Cmp& cmp, unsigned int delta, int width) + { + K reg = shfl_down(key, delta, width); + + if (cmp(reg, key)) + { + key = reg; + copyValsShfl(val, delta, width); + } + } + template + __device__ __forceinline__ void merge(volatile K* skeys, K& key, volatile V* svals, V& val, const Cmp& cmp, unsigned int tid, unsigned int delta) + { + K reg = skeys[tid + delta]; + + if (cmp(reg, key)) + { + skeys[tid] = key = reg; + copyVals(svals, val, tid, delta); + } + } + template + __device__ __forceinline__ void mergeShfl(K& key, + const thrust::tuple& val, + const Cmp& cmp, + unsigned int delta, int width) + { + K reg = shfl_down(key, delta, width); + + if (cmp(reg, key)) + { + key = reg; + copyValsShfl(val, delta, width); + } + } + template + __device__ __forceinline__ void merge(volatile K* skeys, K& key, + const thrust::tuple& svals, + const thrust::tuple& val, + const Cmp& cmp, unsigned int tid, unsigned int delta) + { + K reg = skeys[tid + delta]; + + if (cmp(reg, key)) + { + skeys[tid] = key = reg; + copyVals(svals, val, tid, delta); + } + } + template + __device__ __forceinline__ void mergeShfl(const thrust::tuple& key, + const thrust::tuple& val, + const thrust::tuple& cmp, + unsigned int delta, int width) + { + For<0, thrust::tuple_size >::value>::mergeShfl(key, val, cmp, delta, width); + } + template + __device__ __forceinline__ void merge(const thrust::tuple& skeys, + const thrust::tuple& key, + const thrust::tuple& svals, + const thrust::tuple& val, + const thrust::tuple& cmp, + unsigned int tid, unsigned int delta) + { + For<0, thrust::tuple_size >::value>::merge(skeys, key, svals, val, cmp, tid, delta); + } + + ////////////////////////////////////////////////////// + // Generic + + template struct Generic + { + template + static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) + { + loadToSmem(skeys, key, tid); + loadValsToSmem(svals, val, tid); + if (N >= 32) + __syncthreads(); + + if (N >= 2048) + { + if (tid < 1024) + merge(skeys, key, svals, val, cmp, tid, 1024); + + __syncthreads(); + } + if (N >= 1024) + { + if (tid < 512) + merge(skeys, key, svals, val, cmp, tid, 512); + + __syncthreads(); + } + if (N >= 512) + { + if (tid < 256) + merge(skeys, key, svals, val, cmp, tid, 256); + + __syncthreads(); + } + if (N >= 256) + { + if (tid < 128) + merge(skeys, key, svals, val, cmp, tid, 128); + + __syncthreads(); + } + if (N >= 128) + { + if (tid < 64) + merge(skeys, key, svals, val, cmp, tid, 64); + + __syncthreads(); + } + if (N >= 64) + { + if (tid < 32) + merge(skeys, key, svals, val, cmp, tid, 32); + } + + if (tid < 16) + { + merge(skeys, key, svals, val, cmp, tid, 16); + merge(skeys, key, svals, val, cmp, tid, 8); + merge(skeys, key, svals, val, cmp, tid, 4); + merge(skeys, key, svals, val, cmp, tid, 2); + merge(skeys, key, svals, val, cmp, tid, 1); + } + } + }; + + template + struct Unroll + { + static __device__ void loopShfl(KR key, VR val, Cmp cmp, unsigned int N) + { + mergeShfl(key, val, cmp, I, N); + Unroll::loopShfl(key, val, cmp, N); + } + static __device__ void loop(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) + { + merge(skeys, key, svals, val, cmp, tid, I); + Unroll::loop(skeys, key, svals, val, tid, cmp); + } + }; + template + struct Unroll<0, KP, KR, VP, VR, Cmp> + { + static __device__ void loopShfl(KR, VR, Cmp, unsigned int) + { + } + static __device__ void loop(KP, KR, VP, VR, unsigned int, Cmp) + { + } + }; + + template struct WarpOptimized + { + template + static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) + { + #if 0 // __CUDA_ARCH__ >= 300 + CV_UNUSED(skeys); + CV_UNUSED(svals); + CV_UNUSED(tid); + + Unroll::loopShfl(key, val, cmp, N); + #else + loadToSmem(skeys, key, tid); + loadToSmem(svals, val, tid); + + if (tid < N / 2) + Unroll::loop(skeys, key, svals, val, tid, cmp); + #endif + } + }; + + template struct GenericOptimized32 + { + enum { M = N / 32 }; + + template + static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) + { + const unsigned int laneId = Warp::laneId(); + + #if 0 // __CUDA_ARCH__ >= 300 + Unroll<16, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, warpSize); + + if (laneId == 0) + { + loadToSmem(skeys, key, tid / 32); + loadToSmem(svals, val, tid / 32); + } + #else + loadToSmem(skeys, key, tid); + loadToSmem(svals, val, tid); + + if (laneId < 16) + Unroll<16, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp); + + __syncthreads(); + + if (laneId == 0) + { + loadToSmem(skeys, key, tid / 32); + loadToSmem(svals, val, tid / 32); + } + #endif + + __syncthreads(); + + loadFromSmem(skeys, key, tid); + + if (tid < 32) + { + #if 0 // __CUDA_ARCH__ >= 300 + loadFromSmem(svals, val, tid); + + Unroll::loopShfl(key, val, cmp, M); + #else + Unroll::loop(skeys, key, svals, val, tid, cmp); + #endif + } + } + }; + + template struct StaticIf; + template struct StaticIf + { + typedef T1 type; + }; + template struct StaticIf + { + typedef T2 type; + }; + + template struct IsPowerOf2 + { + enum { value = ((N != 0) && !(N & (N - 1))) }; + }; + + template struct Dispatcher + { + typedef typename StaticIf< + (N <= 32) && IsPowerOf2::value, + WarpOptimized, + typename StaticIf< + (N <= 1024) && IsPowerOf2::value, + GenericOptimized32, + Generic + >::type + >::type reductor; + }; + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/transform_detail.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/transform_detail.hpp new file mode 100644 index 0000000..1919848 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/transform_detail.hpp @@ -0,0 +1,392 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_TRANSFORM_DETAIL_HPP +#define OPENCV_CUDA_TRANSFORM_DETAIL_HPP + +#include "../common.hpp" +#include "../vec_traits.hpp" +#include "../functional.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + namespace transform_detail + { + //! Read Write Traits + + template struct UnaryReadWriteTraits + { + typedef typename TypeVec::vec_type read_type; + typedef typename TypeVec::vec_type write_type; + }; + + template struct BinaryReadWriteTraits + { + typedef typename TypeVec::vec_type read_type1; + typedef typename TypeVec::vec_type read_type2; + typedef typename TypeVec::vec_type write_type; + }; + + //! Transform kernels + + template struct OpUnroller; + template <> struct OpUnroller<1> + { + template + static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src.x); + } + + template + static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src1.x, src2.x); + } + }; + template <> struct OpUnroller<2> + { + template + static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src.y); + } + + template + static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src1.x, src2.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src1.y, src2.y); + } + }; + template <> struct OpUnroller<3> + { + template + static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src.y); + if (mask(y, x_shifted + 2)) + dst.z = op(src.z); + } + + template + static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src1.x, src2.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src1.y, src2.y); + if (mask(y, x_shifted + 2)) + dst.z = op(src1.z, src2.z); + } + }; + template <> struct OpUnroller<4> + { + template + static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src.y); + if (mask(y, x_shifted + 2)) + dst.z = op(src.z); + if (mask(y, x_shifted + 3)) + dst.w = op(src.w); + } + + template + static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.x = op(src1.x, src2.x); + if (mask(y, x_shifted + 1)) + dst.y = op(src1.y, src2.y); + if (mask(y, x_shifted + 2)) + dst.z = op(src1.z, src2.z); + if (mask(y, x_shifted + 3)) + dst.w = op(src1.w, src2.w); + } + }; + template <> struct OpUnroller<8> + { + template + static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.a0 = op(src.a0); + if (mask(y, x_shifted + 1)) + dst.a1 = op(src.a1); + if (mask(y, x_shifted + 2)) + dst.a2 = op(src.a2); + if (mask(y, x_shifted + 3)) + dst.a3 = op(src.a3); + if (mask(y, x_shifted + 4)) + dst.a4 = op(src.a4); + if (mask(y, x_shifted + 5)) + dst.a5 = op(src.a5); + if (mask(y, x_shifted + 6)) + dst.a6 = op(src.a6); + if (mask(y, x_shifted + 7)) + dst.a7 = op(src.a7); + } + + template + static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) + { + if (mask(y, x_shifted)) + dst.a0 = op(src1.a0, src2.a0); + if (mask(y, x_shifted + 1)) + dst.a1 = op(src1.a1, src2.a1); + if (mask(y, x_shifted + 2)) + dst.a2 = op(src1.a2, src2.a2); + if (mask(y, x_shifted + 3)) + dst.a3 = op(src1.a3, src2.a3); + if (mask(y, x_shifted + 4)) + dst.a4 = op(src1.a4, src2.a4); + if (mask(y, x_shifted + 5)) + dst.a5 = op(src1.a5, src2.a5); + if (mask(y, x_shifted + 6)) + dst.a6 = op(src1.a6, src2.a6); + if (mask(y, x_shifted + 7)) + dst.a7 = op(src1.a7, src2.a7); + } + }; + + template + static __global__ void transformSmart(const PtrStepSz src_, PtrStep dst_, const Mask mask, const UnOp op) + { + typedef TransformFunctorTraits ft; + typedef typename UnaryReadWriteTraits::read_type read_type; + typedef typename UnaryReadWriteTraits::write_type write_type; + + const int x = threadIdx.x + blockIdx.x * blockDim.x; + const int y = threadIdx.y + blockIdx.y * blockDim.y; + const int x_shifted = x * ft::smart_shift; + + if (y < src_.rows) + { + const T* src = src_.ptr(y); + D* dst = dst_.ptr(y); + + if (x_shifted + ft::smart_shift - 1 < src_.cols) + { + const read_type src_n_el = ((const read_type*)src)[x]; + OpUnroller::unroll(src_n_el, ((write_type*)dst)[x], mask, op, x_shifted, y); + } + else + { + for (int real_x = x_shifted; real_x < src_.cols; ++real_x) + { + if (mask(y, real_x)) + dst[real_x] = op(src[real_x]); + } + } + } + } + + template + __global__ static void transformSimple(const PtrStepSz src, PtrStep dst, const Mask mask, const UnOp op) + { + const int x = blockDim.x * blockIdx.x + threadIdx.x; + const int y = blockDim.y * blockIdx.y + threadIdx.y; + + if (x < src.cols && y < src.rows && mask(y, x)) + { + dst.ptr(y)[x] = op(src.ptr(y)[x]); + } + } + + template + static __global__ void transformSmart(const PtrStepSz src1_, const PtrStep src2_, PtrStep dst_, + const Mask mask, const BinOp op) + { + typedef TransformFunctorTraits ft; + typedef typename BinaryReadWriteTraits::read_type1 read_type1; + typedef typename BinaryReadWriteTraits::read_type2 read_type2; + typedef typename BinaryReadWriteTraits::write_type write_type; + + const int x = threadIdx.x + blockIdx.x * blockDim.x; + const int y = threadIdx.y + blockIdx.y * blockDim.y; + const int x_shifted = x * ft::smart_shift; + + if (y < src1_.rows) + { + const T1* src1 = src1_.ptr(y); + const T2* src2 = src2_.ptr(y); + D* dst = dst_.ptr(y); + + if (x_shifted + ft::smart_shift - 1 < src1_.cols) + { + const read_type1 src1_n_el = ((const read_type1*)src1)[x]; + const read_type2 src2_n_el = ((const read_type2*)src2)[x]; + + OpUnroller::unroll(src1_n_el, src2_n_el, ((write_type*)dst)[x], mask, op, x_shifted, y); + } + else + { + for (int real_x = x_shifted; real_x < src1_.cols; ++real_x) + { + if (mask(y, real_x)) + dst[real_x] = op(src1[real_x], src2[real_x]); + } + } + } + } + + template + static __global__ void transformSimple(const PtrStepSz src1, const PtrStep src2, PtrStep dst, + const Mask mask, const BinOp op) + { + const int x = blockDim.x * blockIdx.x + threadIdx.x; + const int y = blockDim.y * blockIdx.y + threadIdx.y; + + if (x < src1.cols && y < src1.rows && mask(y, x)) + { + const T1 src1_data = src1.ptr(y)[x]; + const T2 src2_data = src2.ptr(y)[x]; + dst.ptr(y)[x] = op(src1_data, src2_data); + } + } + + template struct TransformDispatcher; + template<> struct TransformDispatcher + { + template + static void call(PtrStepSz src, PtrStepSz dst, UnOp op, Mask mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + + const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1); + const dim3 grid(divUp(src.cols, threads.x), divUp(src.rows, threads.y), 1); + + transformSimple<<>>(src, dst, mask, op); + cudaSafeCall( cudaGetLastError() ); + + if (stream == 0) + cudaSafeCall( cudaDeviceSynchronize() ); + } + + template + static void call(PtrStepSz src1, PtrStepSz src2, PtrStepSz dst, BinOp op, Mask mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + + const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1); + const dim3 grid(divUp(src1.cols, threads.x), divUp(src1.rows, threads.y), 1); + + transformSimple<<>>(src1, src2, dst, mask, op); + cudaSafeCall( cudaGetLastError() ); + + if (stream == 0) + cudaSafeCall( cudaDeviceSynchronize() ); + } + }; + template<> struct TransformDispatcher + { + template + static void call(PtrStepSz src, PtrStepSz dst, UnOp op, Mask mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + + CV_StaticAssert(ft::smart_shift != 1, ""); + + if (!isAligned(src.data, ft::smart_shift * sizeof(T)) || !isAligned(src.step, ft::smart_shift * sizeof(T)) || + !isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D))) + { + TransformDispatcher::call(src, dst, op, mask, stream); + return; + } + + const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1); + const dim3 grid(divUp(src.cols, threads.x * ft::smart_shift), divUp(src.rows, threads.y), 1); + + transformSmart<<>>(src, dst, mask, op); + cudaSafeCall( cudaGetLastError() ); + + if (stream == 0) + cudaSafeCall( cudaDeviceSynchronize() ); + } + + template + static void call(PtrStepSz src1, PtrStepSz src2, PtrStepSz dst, BinOp op, Mask mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + + CV_StaticAssert(ft::smart_shift != 1, ""); + + if (!isAligned(src1.data, ft::smart_shift * sizeof(T1)) || !isAligned(src1.step, ft::smart_shift * sizeof(T1)) || + !isAligned(src2.data, ft::smart_shift * sizeof(T2)) || !isAligned(src2.step, ft::smart_shift * sizeof(T2)) || + !isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D))) + { + TransformDispatcher::call(src1, src2, dst, op, mask, stream); + return; + } + + const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1); + const dim3 grid(divUp(src1.cols, threads.x * ft::smart_shift), divUp(src1.rows, threads.y), 1); + + transformSmart<<>>(src1, src2, dst, mask, op); + cudaSafeCall( cudaGetLastError() ); + + if (stream == 0) + cudaSafeCall( cudaDeviceSynchronize() ); + } + }; + } // namespace transform_detail +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_TRANSFORM_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/type_traits_detail.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/type_traits_detail.hpp new file mode 100644 index 0000000..a78bd2c --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/type_traits_detail.hpp @@ -0,0 +1,191 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP +#define OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP + +#include "../common.hpp" +#include "../vec_traits.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + namespace type_traits_detail + { + template struct Select { typedef T1 type; }; + template struct Select { typedef T2 type; }; + + template struct IsSignedIntergral { enum {value = 0}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + template <> struct IsSignedIntergral { enum {value = 1}; }; + + template struct IsUnsignedIntegral { enum {value = 0}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + template <> struct IsUnsignedIntegral { enum {value = 1}; }; + + template struct IsIntegral { enum {value = IsSignedIntergral::value || IsUnsignedIntegral::value}; }; + template <> struct IsIntegral { enum {value = 1}; }; + template <> struct IsIntegral { enum {value = 1}; }; + + template struct IsFloat { enum {value = 0}; }; + template <> struct IsFloat { enum {value = 1}; }; + template <> struct IsFloat { enum {value = 1}; }; + + template struct IsVec { enum {value = 0}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + template <> struct IsVec { enum {value = 1}; }; + + template struct AddParameterType { typedef const U& type; }; + template struct AddParameterType { typedef U& type; }; + template <> struct AddParameterType { typedef void type; }; + + template struct ReferenceTraits + { + enum { value = false }; + typedef U type; + }; + template struct ReferenceTraits + { + enum { value = true }; + typedef U type; + }; + + template struct PointerTraits + { + enum { value = false }; + typedef void type; + }; + template struct PointerTraits + { + enum { value = true }; + typedef U type; + }; + template struct PointerTraits + { + enum { value = true }; + typedef U type; + }; + + template struct UnConst + { + typedef U type; + enum { value = 0 }; + }; + template struct UnConst + { + typedef U type; + enum { value = 1 }; + }; + template struct UnConst + { + typedef U& type; + enum { value = 1 }; + }; + + template struct UnVolatile + { + typedef U type; + enum { value = 0 }; + }; + template struct UnVolatile + { + typedef U type; + enum { value = 1 }; + }; + template struct UnVolatile + { + typedef U& type; + enum { value = 1 }; + }; + } // namespace type_traits_detail +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/vec_distance_detail.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/vec_distance_detail.hpp new file mode 100644 index 0000000..8283a99 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/detail/vec_distance_detail.hpp @@ -0,0 +1,121 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP +#define OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP + +#include "../datamov_utils.hpp" + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + namespace vec_distance_detail + { + template struct UnrollVecDiffCached + { + template + static __device__ void calcCheck(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int ind) + { + if (ind < len) + { + T1 val1 = *vecCached++; + + T2 val2; + ForceGlob::Load(vecGlob, ind, val2); + + dist.reduceIter(val1, val2); + + UnrollVecDiffCached::calcCheck(vecCached, vecGlob, len, dist, ind + THREAD_DIM); + } + } + + template + static __device__ void calcWithoutCheck(const T1* vecCached, const T2* vecGlob, Dist& dist) + { + T1 val1 = *vecCached++; + + T2 val2; + ForceGlob::Load(vecGlob, 0, val2); + vecGlob += THREAD_DIM; + + dist.reduceIter(val1, val2); + + UnrollVecDiffCached::calcWithoutCheck(vecCached, vecGlob, dist); + } + }; + template struct UnrollVecDiffCached + { + template + static __device__ __forceinline__ void calcCheck(const T1*, const T2*, int, Dist&, int) + { + } + + template + static __device__ __forceinline__ void calcWithoutCheck(const T1*, const T2*, Dist&) + { + } + }; + + template struct VecDiffCachedCalculator; + template struct VecDiffCachedCalculator + { + template + static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid) + { + UnrollVecDiffCached::calcCheck(vecCached, vecGlob, len, dist, tid); + } + }; + template struct VecDiffCachedCalculator + { + template + static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid) + { + UnrollVecDiffCached::calcWithoutCheck(vecCached, vecGlob + tid, dist); + } + }; + } // namespace vec_distance_detail +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/dynamic_smem.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/dynamic_smem.hpp new file mode 100644 index 0000000..42570c6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/dynamic_smem.hpp @@ -0,0 +1,88 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_DYNAMIC_SMEM_HPP +#define OPENCV_CUDA_DYNAMIC_SMEM_HPP + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template struct DynamicSharedMem + { + __device__ __forceinline__ operator T*() + { + extern __shared__ int __smem[]; + return (T*)__smem; + } + + __device__ __forceinline__ operator const T*() const + { + extern __shared__ int __smem[]; + return (T*)__smem; + } + }; + + // specialize for double to avoid unaligned memory access compile errors + template<> struct DynamicSharedMem + { + __device__ __forceinline__ operator double*() + { + extern __shared__ double __smem_d[]; + return (double*)__smem_d; + } + + __device__ __forceinline__ operator const double*() const + { + extern __shared__ double __smem_d[]; + return (double*)__smem_d; + } + }; +}}} + +//! @endcond + +#endif // OPENCV_CUDA_DYNAMIC_SMEM_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/emulation.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/emulation.hpp new file mode 100644 index 0000000..17dc117 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/emulation.hpp @@ -0,0 +1,269 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_EMULATION_HPP_ +#define OPENCV_CUDA_EMULATION_HPP_ + +#include "common.hpp" +#include "warp_reduce.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + struct Emulation + { + + static __device__ __forceinline__ int syncthreadsOr(int pred) + { +#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 200) + // just campilation stab + return 0; +#else + return __syncthreads_or(pred); +#endif + } + + template + static __forceinline__ __device__ int Ballot(int predicate) + { +#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200) + return __ballot(predicate); +#else + __shared__ volatile int cta_buffer[CTA_SIZE]; + + int tid = threadIdx.x; + cta_buffer[tid] = predicate ? (1 << (tid & 31)) : 0; + return warp_reduce(cta_buffer); +#endif + } + + struct smem + { + enum { TAG_MASK = (1U << ( (sizeof(unsigned int) << 3) - 5U)) - 1U }; + + template + static __device__ __forceinline__ T atomicInc(T* address, T val) + { +#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) + T count; + unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U); + do + { + count = *address & TAG_MASK; + count = tag | (count + 1); + *address = count; + } while (*address != count); + + return (count & TAG_MASK) - 1; +#else + return ::atomicInc(address, val); +#endif + } + + template + static __device__ __forceinline__ T atomicAdd(T* address, T val) + { +#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) + T count; + unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U); + do + { + count = *address & TAG_MASK; + count = tag | (count + val); + *address = count; + } while (*address != count); + + return (count & TAG_MASK) - val; +#else + return ::atomicAdd(address, val); +#endif + } + + template + static __device__ __forceinline__ T atomicMin(T* address, T val) + { +#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) + T count = ::min(*address, val); + do + { + *address = count; + } while (*address > count); + + return count; +#else + return ::atomicMin(address, val); +#endif + } + }; // struct cmem + + struct glob + { + static __device__ __forceinline__ int atomicAdd(int* address, int val) + { + return ::atomicAdd(address, val); + } + static __device__ __forceinline__ unsigned int atomicAdd(unsigned int* address, unsigned int val) + { + return ::atomicAdd(address, val); + } + static __device__ __forceinline__ float atomicAdd(float* address, float val) + { + #if __CUDA_ARCH__ >= 200 + return ::atomicAdd(address, val); + #else + int* address_as_i = (int*) address; + int old = *address_as_i, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_i, assumed, + __float_as_int(val + __int_as_float(assumed))); + } while (assumed != old); + return __int_as_float(old); + #endif + } + static __device__ __forceinline__ double atomicAdd(double* address, double val) + { + #if __CUDA_ARCH__ >= 130 + unsigned long long int* address_as_ull = (unsigned long long int*) address; + unsigned long long int old = *address_as_ull, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_ull, assumed, + __double_as_longlong(val + __longlong_as_double(assumed))); + } while (assumed != old); + return __longlong_as_double(old); + #else + CV_UNUSED(address); + CV_UNUSED(val); + return 0.0; + #endif + } + + static __device__ __forceinline__ int atomicMin(int* address, int val) + { + return ::atomicMin(address, val); + } + static __device__ __forceinline__ float atomicMin(float* address, float val) + { + #if __CUDA_ARCH__ >= 120 + int* address_as_i = (int*) address; + int old = *address_as_i, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_i, assumed, + __float_as_int(::fminf(val, __int_as_float(assumed)))); + } while (assumed != old); + return __int_as_float(old); + #else + CV_UNUSED(address); + CV_UNUSED(val); + return 0.0f; + #endif + } + static __device__ __forceinline__ double atomicMin(double* address, double val) + { + #if __CUDA_ARCH__ >= 130 + unsigned long long int* address_as_ull = (unsigned long long int*) address; + unsigned long long int old = *address_as_ull, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_ull, assumed, + __double_as_longlong(::fmin(val, __longlong_as_double(assumed)))); + } while (assumed != old); + return __longlong_as_double(old); + #else + CV_UNUSED(address); + CV_UNUSED(val); + return 0.0; + #endif + } + + static __device__ __forceinline__ int atomicMax(int* address, int val) + { + return ::atomicMax(address, val); + } + static __device__ __forceinline__ float atomicMax(float* address, float val) + { + #if __CUDA_ARCH__ >= 120 + int* address_as_i = (int*) address; + int old = *address_as_i, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_i, assumed, + __float_as_int(::fmaxf(val, __int_as_float(assumed)))); + } while (assumed != old); + return __int_as_float(old); + #else + CV_UNUSED(address); + CV_UNUSED(val); + return 0.0f; + #endif + } + static __device__ __forceinline__ double atomicMax(double* address, double val) + { + #if __CUDA_ARCH__ >= 130 + unsigned long long int* address_as_ull = (unsigned long long int*) address; + unsigned long long int old = *address_as_ull, assumed; + do { + assumed = old; + old = ::atomicCAS(address_as_ull, assumed, + __double_as_longlong(::fmax(val, __longlong_as_double(assumed)))); + } while (assumed != old); + return __longlong_as_double(old); + #else + CV_UNUSED(address); + CV_UNUSED(val); + return 0.0; + #endif + } + }; + }; //struct Emulation +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif /* OPENCV_CUDA_EMULATION_HPP_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/filters.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/filters.hpp new file mode 100644 index 0000000..bb94212 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/filters.hpp @@ -0,0 +1,286 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_FILTERS_HPP +#define OPENCV_CUDA_FILTERS_HPP + +#include "saturate_cast.hpp" +#include "vec_traits.hpp" +#include "vec_math.hpp" +#include "type_traits.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template struct PointFilter + { + typedef typename Ptr2D::elem_type elem_type; + typedef float index_type; + + explicit __host__ __device__ __forceinline__ PointFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) + : src(src_) + { + CV_UNUSED(fx); + CV_UNUSED(fy); + } + + __device__ __forceinline__ elem_type operator ()(float y, float x) const + { + return src(__float2int_rz(y), __float2int_rz(x)); + } + + Ptr2D src; + }; + + template struct LinearFilter + { + typedef typename Ptr2D::elem_type elem_type; + typedef float index_type; + + explicit __host__ __device__ __forceinline__ LinearFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) + : src(src_) + { + CV_UNUSED(fx); + CV_UNUSED(fy); + } + __device__ __forceinline__ elem_type operator ()(float y, float x) const + { + typedef typename TypeVec::cn>::vec_type work_type; + + work_type out = VecTraits::all(0); + + const int x1 = __float2int_rd(x); + const int y1 = __float2int_rd(y); + const int x2 = x1 + 1; + const int y2 = y1 + 1; + + elem_type src_reg = src(y1, x1); + out = out + src_reg * ((x2 - x) * (y2 - y)); + + src_reg = src(y1, x2); + out = out + src_reg * ((x - x1) * (y2 - y)); + + src_reg = src(y2, x1); + out = out + src_reg * ((x2 - x) * (y - y1)); + + src_reg = src(y2, x2); + out = out + src_reg * ((x - x1) * (y - y1)); + + return saturate_cast(out); + } + + Ptr2D src; + }; + + template struct CubicFilter + { + typedef typename Ptr2D::elem_type elem_type; + typedef float index_type; + typedef typename TypeVec::cn>::vec_type work_type; + + explicit __host__ __device__ __forceinline__ CubicFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) + : src(src_) + { + CV_UNUSED(fx); + CV_UNUSED(fy); + } + + static __device__ __forceinline__ float bicubicCoeff(float x_) + { + float x = fabsf(x_); + if (x <= 1.0f) + { + return x * x * (1.5f * x - 2.5f) + 1.0f; + } + else if (x < 2.0f) + { + return x * (x * (-0.5f * x + 2.5f) - 4.0f) + 2.0f; + } + else + { + return 0.0f; + } + } + + __device__ elem_type operator ()(float y, float x) const + { + const float xmin = ::ceilf(x - 2.0f); + const float xmax = ::floorf(x + 2.0f); + + const float ymin = ::ceilf(y - 2.0f); + const float ymax = ::floorf(y + 2.0f); + + work_type sum = VecTraits::all(0); + float wsum = 0.0f; + + for (float cy = ymin; cy <= ymax; cy += 1.0f) + { + for (float cx = xmin; cx <= xmax; cx += 1.0f) + { + const float w = bicubicCoeff(x - cx) * bicubicCoeff(y - cy); + sum = sum + w * src(__float2int_rd(cy), __float2int_rd(cx)); + wsum += w; + } + } + + work_type res = (!wsum)? VecTraits::all(0) : sum / wsum; + + return saturate_cast(res); + } + + Ptr2D src; + }; + // for integer scaling + template struct IntegerAreaFilter + { + typedef typename Ptr2D::elem_type elem_type; + typedef float index_type; + + explicit __host__ __device__ __forceinline__ IntegerAreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_) + : src(src_), scale_x(scale_x_), scale_y(scale_y_), scale(1.f / (scale_x * scale_y)) {} + + __device__ __forceinline__ elem_type operator ()(float y, float x) const + { + float fsx1 = x * scale_x; + float fsx2 = fsx1 + scale_x; + + int sx1 = __float2int_ru(fsx1); + int sx2 = __float2int_rd(fsx2); + + float fsy1 = y * scale_y; + float fsy2 = fsy1 + scale_y; + + int sy1 = __float2int_ru(fsy1); + int sy2 = __float2int_rd(fsy2); + + typedef typename TypeVec::cn>::vec_type work_type; + work_type out = VecTraits::all(0.f); + + for(int dy = sy1; dy < sy2; ++dy) + for(int dx = sx1; dx < sx2; ++dx) + { + out = out + src(dy, dx) * scale; + } + + return saturate_cast(out); + } + + Ptr2D src; + float scale_x, scale_y ,scale; + }; + + template struct AreaFilter + { + typedef typename Ptr2D::elem_type elem_type; + typedef float index_type; + + explicit __host__ __device__ __forceinline__ AreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_) + : src(src_), scale_x(scale_x_), scale_y(scale_y_){} + + __device__ __forceinline__ elem_type operator ()(float y, float x) const + { + float fsx1 = x * scale_x; + float fsx2 = fsx1 + scale_x; + + int sx1 = __float2int_ru(fsx1); + int sx2 = __float2int_rd(fsx2); + + float fsy1 = y * scale_y; + float fsy2 = fsy1 + scale_y; + + int sy1 = __float2int_ru(fsy1); + int sy2 = __float2int_rd(fsy2); + + float scale = 1.f / (fminf(scale_x, src.width - fsx1) * fminf(scale_y, src.height - fsy1)); + + typedef typename TypeVec::cn>::vec_type work_type; + work_type out = VecTraits::all(0.f); + + for (int dy = sy1; dy < sy2; ++dy) + { + for (int dx = sx1; dx < sx2; ++dx) + out = out + src(dy, dx) * scale; + + if (sx1 > fsx1) + out = out + src(dy, (sx1 -1) ) * ((sx1 - fsx1) * scale); + + if (sx2 < fsx2) + out = out + src(dy, sx2) * ((fsx2 -sx2) * scale); + } + + if (sy1 > fsy1) + for (int dx = sx1; dx < sx2; ++dx) + out = out + src( (sy1 - 1) , dx) * ((sy1 -fsy1) * scale); + + if (sy2 < fsy2) + for (int dx = sx1; dx < sx2; ++dx) + out = out + src(sy2, dx) * ((fsy2 -sy2) * scale); + + if ((sy1 > fsy1) && (sx1 > fsx1)) + out = out + src( (sy1 - 1) , (sx1 - 1)) * ((sy1 -fsy1) * (sx1 -fsx1) * scale); + + if ((sy1 > fsy1) && (sx2 < fsx2)) + out = out + src( (sy1 - 1) , sx2) * ((sy1 -fsy1) * (fsx2 -sx2) * scale); + + if ((sy2 < fsy2) && (sx2 < fsx2)) + out = out + src(sy2, sx2) * ((fsy2 -sy2) * (fsx2 -sx2) * scale); + + if ((sy2 < fsy2) && (sx1 > fsx1)) + out = out + src(sy2, (sx1 - 1)) * ((fsy2 -sy2) * (sx1 -fsx1) * scale); + + return saturate_cast(out); + } + + Ptr2D src; + float scale_x, scale_y; + int width, haight; + }; +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_FILTERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/funcattrib.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/funcattrib.hpp new file mode 100644 index 0000000..f582080 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/funcattrib.hpp @@ -0,0 +1,79 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP +#define OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP + +#include + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template + void printFuncAttrib(Func& func) + { + + cudaFuncAttributes attrs; + cudaFuncGetAttributes(&attrs, func); + + printf("=== Function stats ===\n"); + printf("Name: \n"); + printf("sharedSizeBytes = %d\n", attrs.sharedSizeBytes); + printf("constSizeBytes = %d\n", attrs.constSizeBytes); + printf("localSizeBytes = %d\n", attrs.localSizeBytes); + printf("maxThreadsPerBlock = %d\n", attrs.maxThreadsPerBlock); + printf("numRegs = %d\n", attrs.numRegs); + printf("ptxVersion = %d\n", attrs.ptxVersion); + printf("binaryVersion = %d\n", attrs.binaryVersion); + printf("\n"); + fflush(stdout); + } +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif /* OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/functional.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/functional.hpp new file mode 100644 index 0000000..9f53d87 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/functional.hpp @@ -0,0 +1,805 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_FUNCTIONAL_HPP +#define OPENCV_CUDA_FUNCTIONAL_HPP + +#include +#include "saturate_cast.hpp" +#include "vec_traits.hpp" +#include "type_traits.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + // Function Objects + template struct unary_function + { + typedef Argument argument_type; + typedef Result result_type; + }; + template struct binary_function + { + typedef Argument1 first_argument_type; + typedef Argument2 second_argument_type; + typedef Result result_type; + }; + + // Arithmetic Operations + template struct plus : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a + b; + } + __host__ __device__ __forceinline__ plus() {} + __host__ __device__ __forceinline__ plus(const plus&) {} + }; + + template struct minus : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a - b; + } + __host__ __device__ __forceinline__ minus() {} + __host__ __device__ __forceinline__ minus(const minus&) {} + }; + + template struct multiplies : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a * b; + } + __host__ __device__ __forceinline__ multiplies() {} + __host__ __device__ __forceinline__ multiplies(const multiplies&) {} + }; + + template struct divides : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a / b; + } + __host__ __device__ __forceinline__ divides() {} + __host__ __device__ __forceinline__ divides(const divides&) {} + }; + + template struct modulus : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a % b; + } + __host__ __device__ __forceinline__ modulus() {} + __host__ __device__ __forceinline__ modulus(const modulus&) {} + }; + + template struct negate : unary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a) const + { + return -a; + } + __host__ __device__ __forceinline__ negate() {} + __host__ __device__ __forceinline__ negate(const negate&) {} + }; + + // Comparison Operations + template struct equal_to : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a == b; + } + __host__ __device__ __forceinline__ equal_to() {} + __host__ __device__ __forceinline__ equal_to(const equal_to&) {} + }; + + template struct not_equal_to : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a != b; + } + __host__ __device__ __forceinline__ not_equal_to() {} + __host__ __device__ __forceinline__ not_equal_to(const not_equal_to&) {} + }; + + template struct greater : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a > b; + } + __host__ __device__ __forceinline__ greater() {} + __host__ __device__ __forceinline__ greater(const greater&) {} + }; + + template struct less : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a < b; + } + __host__ __device__ __forceinline__ less() {} + __host__ __device__ __forceinline__ less(const less&) {} + }; + + template struct greater_equal : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a >= b; + } + __host__ __device__ __forceinline__ greater_equal() {} + __host__ __device__ __forceinline__ greater_equal(const greater_equal&) {} + }; + + template struct less_equal : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a <= b; + } + __host__ __device__ __forceinline__ less_equal() {} + __host__ __device__ __forceinline__ less_equal(const less_equal&) {} + }; + + // Logical Operations + template struct logical_and : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a && b; + } + __host__ __device__ __forceinline__ logical_and() {} + __host__ __device__ __forceinline__ logical_and(const logical_and&) {} + }; + + template struct logical_or : binary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a || b; + } + __host__ __device__ __forceinline__ logical_or() {} + __host__ __device__ __forceinline__ logical_or(const logical_or&) {} + }; + + template struct logical_not : unary_function + { + __device__ __forceinline__ bool operator ()(typename TypeTraits::ParameterType a) const + { + return !a; + } + __host__ __device__ __forceinline__ logical_not() {} + __host__ __device__ __forceinline__ logical_not(const logical_not&) {} + }; + + // Bitwise Operations + template struct bit_and : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a & b; + } + __host__ __device__ __forceinline__ bit_and() {} + __host__ __device__ __forceinline__ bit_and(const bit_and&) {} + }; + + template struct bit_or : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a | b; + } + __host__ __device__ __forceinline__ bit_or() {} + __host__ __device__ __forceinline__ bit_or(const bit_or&) {} + }; + + template struct bit_xor : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType a, + typename TypeTraits::ParameterType b) const + { + return a ^ b; + } + __host__ __device__ __forceinline__ bit_xor() {} + __host__ __device__ __forceinline__ bit_xor(const bit_xor&) {} + }; + + template struct bit_not : unary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType v) const + { + return ~v; + } + __host__ __device__ __forceinline__ bit_not() {} + __host__ __device__ __forceinline__ bit_not(const bit_not&) {} + }; + + // Generalized Identity Operations + template struct identity : unary_function + { + __device__ __forceinline__ typename TypeTraits::ParameterType operator()(typename TypeTraits::ParameterType x) const + { + return x; + } + __host__ __device__ __forceinline__ identity() {} + __host__ __device__ __forceinline__ identity(const identity&) {} + }; + + template struct project1st : binary_function + { + __device__ __forceinline__ typename TypeTraits::ParameterType operator()(typename TypeTraits::ParameterType lhs, typename TypeTraits::ParameterType rhs) const + { + return lhs; + } + __host__ __device__ __forceinline__ project1st() {} + __host__ __device__ __forceinline__ project1st(const project1st&) {} + }; + + template struct project2nd : binary_function + { + __device__ __forceinline__ typename TypeTraits::ParameterType operator()(typename TypeTraits::ParameterType lhs, typename TypeTraits::ParameterType rhs) const + { + return rhs; + } + __host__ __device__ __forceinline__ project2nd() {} + __host__ __device__ __forceinline__ project2nd(const project2nd&) {} + }; + + // Min/Max Operations + +#define OPENCV_CUDA_IMPLEMENT_MINMAX(name, type, op) \ + template <> struct name : binary_function \ + { \ + __device__ __forceinline__ type operator()(type lhs, type rhs) const {return op(lhs, rhs);} \ + __host__ __device__ __forceinline__ name() {}\ + __host__ __device__ __forceinline__ name(const name&) {}\ + }; + + template struct maximum : binary_function + { + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType lhs, typename TypeTraits::ParameterType rhs) const + { + return max(lhs, rhs); + } + __host__ __device__ __forceinline__ maximum() {} + __host__ __device__ __forceinline__ maximum(const maximum&) {} + }; + + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, uchar, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, schar, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, char, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, ushort, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, short, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, int, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, uint, ::max) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, float, ::fmax) + OPENCV_CUDA_IMPLEMENT_MINMAX(maximum, double, ::fmax) + + template struct minimum : binary_function + { + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType lhs, typename TypeTraits::ParameterType rhs) const + { + return min(lhs, rhs); + } + __host__ __device__ __forceinline__ minimum() {} + __host__ __device__ __forceinline__ minimum(const minimum&) {} + }; + + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, uchar, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, schar, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, char, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, ushort, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, short, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, int, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, uint, ::min) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, float, ::fmin) + OPENCV_CUDA_IMPLEMENT_MINMAX(minimum, double, ::fmin) + +#undef OPENCV_CUDA_IMPLEMENT_MINMAX + + // Math functions + + template struct abs_func : unary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType x) const + { + return abs(x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ unsigned char operator ()(unsigned char x) const + { + return x; + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ signed char operator ()(signed char x) const + { + return ::abs((int)x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ char operator ()(char x) const + { + return ::abs((int)x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ unsigned short operator ()(unsigned short x) const + { + return x; + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ short operator ()(short x) const + { + return ::abs((int)x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ unsigned int operator ()(unsigned int x) const + { + return x; + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ int operator ()(int x) const + { + return ::abs(x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ float operator ()(float x) const + { + return ::fabsf(x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + template <> struct abs_func : unary_function + { + __device__ __forceinline__ double operator ()(double x) const + { + return ::fabs(x); + } + + __host__ __device__ __forceinline__ abs_func() {} + __host__ __device__ __forceinline__ abs_func(const abs_func&) {} + }; + +#define OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(name, func) \ + template struct name ## _func : unary_function \ + { \ + __device__ __forceinline__ float operator ()(typename TypeTraits::ParameterType v) const \ + { \ + return func ## f(v); \ + } \ + __host__ __device__ __forceinline__ name ## _func() {} \ + __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \ + }; \ + template <> struct name ## _func : unary_function \ + { \ + __device__ __forceinline__ double operator ()(double v) const \ + { \ + return func(v); \ + } \ + __host__ __device__ __forceinline__ name ## _func() {} \ + __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \ + }; + +#define OPENCV_CUDA_IMPLEMENT_BIN_FUNCTOR(name, func) \ + template struct name ## _func : binary_function \ + { \ + __device__ __forceinline__ float operator ()(typename TypeTraits::ParameterType v1, typename TypeTraits::ParameterType v2) const \ + { \ + return func ## f(v1, v2); \ + } \ + __host__ __device__ __forceinline__ name ## _func() {} \ + __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \ + }; \ + template <> struct name ## _func : binary_function \ + { \ + __device__ __forceinline__ double operator ()(double v1, double v2) const \ + { \ + return func(v1, v2); \ + } \ + __host__ __device__ __forceinline__ name ## _func() {} \ + __host__ __device__ __forceinline__ name ## _func(const name ## _func&) {} \ + }; + + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(sqrt, ::sqrt) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(exp, ::exp) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(exp2, ::exp2) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(exp10, ::exp10) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(log, ::log) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(log2, ::log2) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(log10, ::log10) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(sin, ::sin) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(cos, ::cos) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(tan, ::tan) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(asin, ::asin) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(acos, ::acos) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(atan, ::atan) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(sinh, ::sinh) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(cosh, ::cosh) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(tanh, ::tanh) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(asinh, ::asinh) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(acosh, ::acosh) + OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR(atanh, ::atanh) + + OPENCV_CUDA_IMPLEMENT_BIN_FUNCTOR(hypot, ::hypot) + OPENCV_CUDA_IMPLEMENT_BIN_FUNCTOR(atan2, ::atan2) + OPENCV_CUDA_IMPLEMENT_BIN_FUNCTOR(pow, ::pow) + + #undef OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR + #undef OPENCV_CUDA_IMPLEMENT_UN_FUNCTOR_NO_DOUBLE + #undef OPENCV_CUDA_IMPLEMENT_BIN_FUNCTOR + + template struct hypot_sqr_func : binary_function + { + __device__ __forceinline__ T operator ()(typename TypeTraits::ParameterType src1, typename TypeTraits::ParameterType src2) const + { + return src1 * src1 + src2 * src2; + } + __host__ __device__ __forceinline__ hypot_sqr_func() {} + __host__ __device__ __forceinline__ hypot_sqr_func(const hypot_sqr_func&) {} + }; + + // Saturate Cast Functor + template struct saturate_cast_func : unary_function + { + __device__ __forceinline__ D operator ()(typename TypeTraits::ParameterType v) const + { + return saturate_cast(v); + } + __host__ __device__ __forceinline__ saturate_cast_func() {} + __host__ __device__ __forceinline__ saturate_cast_func(const saturate_cast_func&) {} + }; + + // Threshold Functors + template struct thresh_binary_func : unary_function + { + __host__ __device__ __forceinline__ thresh_binary_func(T thresh_, T maxVal_) : thresh(thresh_), maxVal(maxVal_) {} + + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType src) const + { + return (src > thresh) * maxVal; + } + + __host__ __device__ __forceinline__ thresh_binary_func() {} + __host__ __device__ __forceinline__ thresh_binary_func(const thresh_binary_func& other) + : thresh(other.thresh), maxVal(other.maxVal) {} + + T thresh; + T maxVal; + }; + + template struct thresh_binary_inv_func : unary_function + { + __host__ __device__ __forceinline__ thresh_binary_inv_func(T thresh_, T maxVal_) : thresh(thresh_), maxVal(maxVal_) {} + + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType src) const + { + return (src <= thresh) * maxVal; + } + + __host__ __device__ __forceinline__ thresh_binary_inv_func() {} + __host__ __device__ __forceinline__ thresh_binary_inv_func(const thresh_binary_inv_func& other) + : thresh(other.thresh), maxVal(other.maxVal) {} + + T thresh; + T maxVal; + }; + + template struct thresh_trunc_func : unary_function + { + explicit __host__ __device__ __forceinline__ thresh_trunc_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {CV_UNUSED(maxVal_);} + + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType src) const + { + return minimum()(src, thresh); + } + + __host__ __device__ __forceinline__ thresh_trunc_func() {} + __host__ __device__ __forceinline__ thresh_trunc_func(const thresh_trunc_func& other) + : thresh(other.thresh) {} + + T thresh; + }; + + template struct thresh_to_zero_func : unary_function + { + explicit __host__ __device__ __forceinline__ thresh_to_zero_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {CV_UNUSED(maxVal_);} + + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType src) const + { + return (src > thresh) * src; + } + + __host__ __device__ __forceinline__ thresh_to_zero_func() {} + __host__ __device__ __forceinline__ thresh_to_zero_func(const thresh_to_zero_func& other) + : thresh(other.thresh) {} + + T thresh; + }; + + template struct thresh_to_zero_inv_func : unary_function + { + explicit __host__ __device__ __forceinline__ thresh_to_zero_inv_func(T thresh_, T maxVal_ = 0) : thresh(thresh_) {CV_UNUSED(maxVal_);} + + __device__ __forceinline__ T operator()(typename TypeTraits::ParameterType src) const + { + return (src <= thresh) * src; + } + + __host__ __device__ __forceinline__ thresh_to_zero_inv_func() {} + __host__ __device__ __forceinline__ thresh_to_zero_inv_func(const thresh_to_zero_inv_func& other) + : thresh(other.thresh) {} + + T thresh; + }; + + // Function Object Adaptors + template struct unary_negate : unary_function + { + explicit __host__ __device__ __forceinline__ unary_negate(const Predicate& p) : pred(p) {} + + __device__ __forceinline__ bool operator()(typename TypeTraits::ParameterType x) const + { + return !pred(x); + } + + __host__ __device__ __forceinline__ unary_negate() {} + __host__ __device__ __forceinline__ unary_negate(const unary_negate& other) : pred(other.pred) {} + + Predicate pred; + }; + + template __host__ __device__ __forceinline__ unary_negate not1(const Predicate& pred) + { + return unary_negate(pred); + } + + template struct binary_negate : binary_function + { + explicit __host__ __device__ __forceinline__ binary_negate(const Predicate& p) : pred(p) {} + + __device__ __forceinline__ bool operator()(typename TypeTraits::ParameterType x, + typename TypeTraits::ParameterType y) const + { + return !pred(x,y); + } + + __host__ __device__ __forceinline__ binary_negate() {} + __host__ __device__ __forceinline__ binary_negate(const binary_negate& other) : pred(other.pred) {} + + Predicate pred; + }; + + template __host__ __device__ __forceinline__ binary_negate not2(const BinaryPredicate& pred) + { + return binary_negate(pred); + } + + template struct binder1st : unary_function + { + __host__ __device__ __forceinline__ binder1st(const Op& op_, const typename Op::first_argument_type& arg1_) : op(op_), arg1(arg1_) {} + + __device__ __forceinline__ typename Op::result_type operator ()(typename TypeTraits::ParameterType a) const + { + return op(arg1, a); + } + + __host__ __device__ __forceinline__ binder1st() {} + __host__ __device__ __forceinline__ binder1st(const binder1st& other) : op(other.op), arg1(other.arg1) {} + + Op op; + typename Op::first_argument_type arg1; + }; + + template __host__ __device__ __forceinline__ binder1st bind1st(const Op& op, const T& x) + { + return binder1st(op, typename Op::first_argument_type(x)); + } + + template struct binder2nd : unary_function + { + __host__ __device__ __forceinline__ binder2nd(const Op& op_, const typename Op::second_argument_type& arg2_) : op(op_), arg2(arg2_) {} + + __forceinline__ __device__ typename Op::result_type operator ()(typename TypeTraits::ParameterType a) const + { + return op(a, arg2); + } + + __host__ __device__ __forceinline__ binder2nd() {} + __host__ __device__ __forceinline__ binder2nd(const binder2nd& other) : op(other.op), arg2(other.arg2) {} + + Op op; + typename Op::second_argument_type arg2; + }; + + template __host__ __device__ __forceinline__ binder2nd bind2nd(const Op& op, const T& x) + { + return binder2nd(op, typename Op::second_argument_type(x)); + } + + // Functor Traits + template struct IsUnaryFunction + { + typedef char Yes; + struct No {Yes a[2];}; + + template static Yes check(unary_function); + static No check(...); + + static F makeF(); + + enum { value = (sizeof(check(makeF())) == sizeof(Yes)) }; + }; + + template struct IsBinaryFunction + { + typedef char Yes; + struct No {Yes a[2];}; + + template static Yes check(binary_function); + static No check(...); + + static F makeF(); + + enum { value = (sizeof(check(makeF())) == sizeof(Yes)) }; + }; + + namespace functional_detail + { + template struct UnOpShift { enum { shift = 1 }; }; + template struct UnOpShift { enum { shift = 4 }; }; + template struct UnOpShift { enum { shift = 2 }; }; + + template struct DefaultUnaryShift + { + enum { shift = UnOpShift::shift }; + }; + + template struct BinOpShift { enum { shift = 1 }; }; + template struct BinOpShift { enum { shift = 4 }; }; + template struct BinOpShift { enum { shift = 2 }; }; + + template struct DefaultBinaryShift + { + enum { shift = BinOpShift::shift }; + }; + + template ::value> struct ShiftDispatcher; + template struct ShiftDispatcher + { + enum { shift = DefaultUnaryShift::shift }; + }; + template struct ShiftDispatcher + { + enum { shift = DefaultBinaryShift::shift }; + }; + } + + template struct DefaultTransformShift + { + enum { shift = functional_detail::ShiftDispatcher::shift }; + }; + + template struct DefaultTransformFunctorTraits + { + enum { simple_block_dim_x = 16 }; + enum { simple_block_dim_y = 16 }; + + enum { smart_block_dim_x = 16 }; + enum { smart_block_dim_y = 16 }; + enum { smart_shift = DefaultTransformShift::shift }; + }; + + template struct TransformFunctorTraits : DefaultTransformFunctorTraits {}; + +#define OPENCV_CUDA_TRANSFORM_FUNCTOR_TRAITS(type) \ + template <> struct TransformFunctorTraits< type > : DefaultTransformFunctorTraits< type > +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_FUNCTIONAL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/limits.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/limits.hpp new file mode 100644 index 0000000..7e15ed6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/limits.hpp @@ -0,0 +1,128 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_LIMITS_HPP +#define OPENCV_CUDA_LIMITS_HPP + +#include +#include +#include "common.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ +template struct numeric_limits; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static bool min() { return false; } + __device__ __forceinline__ static bool max() { return true; } + static const bool is_signed = false; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static signed char min() { return SCHAR_MIN; } + __device__ __forceinline__ static signed char max() { return SCHAR_MAX; } + static const bool is_signed = true; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static unsigned char min() { return 0; } + __device__ __forceinline__ static unsigned char max() { return UCHAR_MAX; } + static const bool is_signed = false; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static short min() { return SHRT_MIN; } + __device__ __forceinline__ static short max() { return SHRT_MAX; } + static const bool is_signed = true; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static unsigned short min() { return 0; } + __device__ __forceinline__ static unsigned short max() { return USHRT_MAX; } + static const bool is_signed = false; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static int min() { return INT_MIN; } + __device__ __forceinline__ static int max() { return INT_MAX; } + static const bool is_signed = true; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static unsigned int min() { return 0; } + __device__ __forceinline__ static unsigned int max() { return UINT_MAX; } + static const bool is_signed = false; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static float min() { return FLT_MIN; } + __device__ __forceinline__ static float max() { return FLT_MAX; } + __device__ __forceinline__ static float epsilon() { return FLT_EPSILON; } + static const bool is_signed = true; +}; + +template <> struct numeric_limits +{ + __device__ __forceinline__ static double min() { return DBL_MIN; } + __device__ __forceinline__ static double max() { return DBL_MAX; } + __device__ __forceinline__ static double epsilon() { return DBL_EPSILON; } + static const bool is_signed = true; +}; +}}} // namespace cv { namespace cuda { namespace cudev { + +//! @endcond + +#endif // OPENCV_CUDA_LIMITS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/reduce.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/reduce.hpp new file mode 100644 index 0000000..5de3650 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/reduce.hpp @@ -0,0 +1,209 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_REDUCE_HPP +#define OPENCV_CUDA_REDUCE_HPP + +#ifndef THRUST_DEBUG // eliminate -Wundef warning +#define THRUST_DEBUG 0 +#endif + +#include +#include "detail/reduce.hpp" +#include "detail/reduce_key_val.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template + __device__ __forceinline__ void reduce(volatile T* smem, T& val, unsigned int tid, const Op& op) + { + reduce_detail::Dispatcher::reductor::template reduce(smem, val, tid, op); + } + template + __device__ __forceinline__ void reduce(const thrust::tuple& smem, + const thrust::tuple& val, + unsigned int tid, + const thrust::tuple& op) + { + reduce_detail::Dispatcher::reductor::template reduce< + const thrust::tuple&, + const thrust::tuple&, + const thrust::tuple&>(smem, val, tid, op); + } + + template + __device__ __forceinline__ void reduceKeyVal(volatile K* skeys, K& key, volatile V* svals, V& val, unsigned int tid, const Cmp& cmp) + { + reduce_key_val_detail::Dispatcher::reductor::template reduce(skeys, key, svals, val, tid, cmp); + } + template + __device__ __forceinline__ void reduceKeyVal(volatile K* skeys, K& key, + const thrust::tuple& svals, + const thrust::tuple& val, + unsigned int tid, const Cmp& cmp) + { + reduce_key_val_detail::Dispatcher::reductor::template reduce&, + const thrust::tuple&, + const Cmp&>(skeys, key, svals, val, tid, cmp); + } + template + __device__ __forceinline__ void reduceKeyVal(const thrust::tuple& skeys, + const thrust::tuple& key, + const thrust::tuple& svals, + const thrust::tuple& val, + unsigned int tid, + const thrust::tuple& cmp) + { + reduce_key_val_detail::Dispatcher::reductor::template reduce< + const thrust::tuple&, + const thrust::tuple&, + const thrust::tuple&, + const thrust::tuple&, + const thrust::tuple& + >(skeys, key, svals, val, tid, cmp); + } + + // smem_tuple + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0) + { + return thrust::make_tuple((volatile T0*) t0); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7, T8* t8) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7, (volatile T8*) t8); + } + + template + __device__ __forceinline__ + thrust::tuple + smem_tuple(T0* t0, T1* t1, T2* t2, T3* t3, T4* t4, T5* t5, T6* t6, T7* t7, T8* t8, T9* t9) + { + return thrust::make_tuple((volatile T0*) t0, (volatile T1*) t1, (volatile T2*) t2, (volatile T3*) t3, (volatile T4*) t4, (volatile T5*) t5, (volatile T6*) t6, (volatile T7*) t7, (volatile T8*) t8, (volatile T9*) t9); + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_REDUCE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/saturate_cast.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/saturate_cast.hpp new file mode 100644 index 0000000..c3a3d1c --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/saturate_cast.hpp @@ -0,0 +1,292 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_SATURATE_CAST_HPP +#define OPENCV_CUDA_SATURATE_CAST_HPP + +#include "common.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template __device__ __forceinline__ _Tp saturate_cast(uchar v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(schar v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(ushort v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(short v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(uint v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(int v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(float v) { return _Tp(v); } + template __device__ __forceinline__ _Tp saturate_cast(double v) { return _Tp(v); } + + template<> __device__ __forceinline__ uchar saturate_cast(schar v) + { + uint res = 0; + int vi = v; + asm("cvt.sat.u8.s8 %0, %1;" : "=r"(res) : "r"(vi)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(short v) + { + uint res = 0; + asm("cvt.sat.u8.s16 %0, %1;" : "=r"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(ushort v) + { + uint res = 0; + asm("cvt.sat.u8.u16 %0, %1;" : "=r"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(int v) + { + uint res = 0; + asm("cvt.sat.u8.s32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(uint v) + { + uint res = 0; + asm("cvt.sat.u8.u32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(float v) + { + uint res = 0; + asm("cvt.rni.sat.u8.f32 %0, %1;" : "=r"(res) : "f"(v)); + return res; + } + template<> __device__ __forceinline__ uchar saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + uint res = 0; + asm("cvt.rni.sat.u8.f64 %0, %1;" : "=r"(res) : "d"(v)); + return res; + #else + return saturate_cast((float)v); + #endif + } + + template<> __device__ __forceinline__ schar saturate_cast(uchar v) + { + uint res = 0; + uint vi = v; + asm("cvt.sat.s8.u8 %0, %1;" : "=r"(res) : "r"(vi)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(short v) + { + uint res = 0; + asm("cvt.sat.s8.s16 %0, %1;" : "=r"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(ushort v) + { + uint res = 0; + asm("cvt.sat.s8.u16 %0, %1;" : "=r"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(int v) + { + uint res = 0; + asm("cvt.sat.s8.s32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(uint v) + { + uint res = 0; + asm("cvt.sat.s8.u32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(float v) + { + uint res = 0; + asm("cvt.rni.sat.s8.f32 %0, %1;" : "=r"(res) : "f"(v)); + return res; + } + template<> __device__ __forceinline__ schar saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + uint res = 0; + asm("cvt.rni.sat.s8.f64 %0, %1;" : "=r"(res) : "d"(v)); + return res; + #else + return saturate_cast((float)v); + #endif + } + + template<> __device__ __forceinline__ ushort saturate_cast(schar v) + { + ushort res = 0; + int vi = v; + asm("cvt.sat.u16.s8 %0, %1;" : "=h"(res) : "r"(vi)); + return res; + } + template<> __device__ __forceinline__ ushort saturate_cast(short v) + { + ushort res = 0; + asm("cvt.sat.u16.s16 %0, %1;" : "=h"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ ushort saturate_cast(int v) + { + ushort res = 0; + asm("cvt.sat.u16.s32 %0, %1;" : "=h"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ ushort saturate_cast(uint v) + { + ushort res = 0; + asm("cvt.sat.u16.u32 %0, %1;" : "=h"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ ushort saturate_cast(float v) + { + ushort res = 0; + asm("cvt.rni.sat.u16.f32 %0, %1;" : "=h"(res) : "f"(v)); + return res; + } + template<> __device__ __forceinline__ ushort saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + ushort res = 0; + asm("cvt.rni.sat.u16.f64 %0, %1;" : "=h"(res) : "d"(v)); + return res; + #else + return saturate_cast((float)v); + #endif + } + + template<> __device__ __forceinline__ short saturate_cast(ushort v) + { + short res = 0; + asm("cvt.sat.s16.u16 %0, %1;" : "=h"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ short saturate_cast(int v) + { + short res = 0; + asm("cvt.sat.s16.s32 %0, %1;" : "=h"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ short saturate_cast(uint v) + { + short res = 0; + asm("cvt.sat.s16.u32 %0, %1;" : "=h"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ short saturate_cast(float v) + { + short res = 0; + asm("cvt.rni.sat.s16.f32 %0, %1;" : "=h"(res) : "f"(v)); + return res; + } + template<> __device__ __forceinline__ short saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + short res = 0; + asm("cvt.rni.sat.s16.f64 %0, %1;" : "=h"(res) : "d"(v)); + return res; + #else + return saturate_cast((float)v); + #endif + } + + template<> __device__ __forceinline__ int saturate_cast(uint v) + { + int res = 0; + asm("cvt.sat.s32.u32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ int saturate_cast(float v) + { + return __float2int_rn(v); + } + template<> __device__ __forceinline__ int saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + return __double2int_rn(v); + #else + return saturate_cast((float)v); + #endif + } + + template<> __device__ __forceinline__ uint saturate_cast(schar v) + { + uint res = 0; + int vi = v; + asm("cvt.sat.u32.s8 %0, %1;" : "=r"(res) : "r"(vi)); + return res; + } + template<> __device__ __forceinline__ uint saturate_cast(short v) + { + uint res = 0; + asm("cvt.sat.u32.s16 %0, %1;" : "=r"(res) : "h"(v)); + return res; + } + template<> __device__ __forceinline__ uint saturate_cast(int v) + { + uint res = 0; + asm("cvt.sat.u32.s32 %0, %1;" : "=r"(res) : "r"(v)); + return res; + } + template<> __device__ __forceinline__ uint saturate_cast(float v) + { + return __float2uint_rn(v); + } + template<> __device__ __forceinline__ uint saturate_cast(double v) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 130 + return __double2uint_rn(v); + #else + return saturate_cast((float)v); + #endif + } +}}} + +//! @endcond + +#endif /* OPENCV_CUDA_SATURATE_CAST_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/scan.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/scan.hpp new file mode 100644 index 0000000..e128fb0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/scan.hpp @@ -0,0 +1,258 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_SCAN_HPP +#define OPENCV_CUDA_SCAN_HPP + +#include "opencv2/core/cuda/common.hpp" +#include "opencv2/core/cuda/utility.hpp" +#include "opencv2/core/cuda/warp.hpp" +#include "opencv2/core/cuda/warp_shuffle.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + enum ScanKind { EXCLUSIVE = 0, INCLUSIVE = 1 }; + + template struct WarpScan + { + __device__ __forceinline__ WarpScan() {} + __device__ __forceinline__ WarpScan(const WarpScan& other) { CV_UNUSED(other); } + + __device__ __forceinline__ T operator()( volatile T *ptr , const unsigned int idx) + { + const unsigned int lane = idx & 31; + F op; + + if ( lane >= 1) ptr [idx ] = op(ptr [idx - 1], ptr [idx]); + if ( lane >= 2) ptr [idx ] = op(ptr [idx - 2], ptr [idx]); + if ( lane >= 4) ptr [idx ] = op(ptr [idx - 4], ptr [idx]); + if ( lane >= 8) ptr [idx ] = op(ptr [idx - 8], ptr [idx]); + if ( lane >= 16) ptr [idx ] = op(ptr [idx - 16], ptr [idx]); + + if( Kind == INCLUSIVE ) + return ptr [idx]; + else + return (lane > 0) ? ptr [idx - 1] : 0; + } + + __device__ __forceinline__ unsigned int index(const unsigned int tid) + { + return tid; + } + + __device__ __forceinline__ void init(volatile T *ptr){} + + static const int warp_offset = 0; + + typedef WarpScan merge; + }; + + template struct WarpScanNoComp + { + __device__ __forceinline__ WarpScanNoComp() {} + __device__ __forceinline__ WarpScanNoComp(const WarpScanNoComp& other) { CV_UNUSED(other); } + + __device__ __forceinline__ T operator()( volatile T *ptr , const unsigned int idx) + { + const unsigned int lane = threadIdx.x & 31; + F op; + + ptr [idx ] = op(ptr [idx - 1], ptr [idx]); + ptr [idx ] = op(ptr [idx - 2], ptr [idx]); + ptr [idx ] = op(ptr [idx - 4], ptr [idx]); + ptr [idx ] = op(ptr [idx - 8], ptr [idx]); + ptr [idx ] = op(ptr [idx - 16], ptr [idx]); + + if( Kind == INCLUSIVE ) + return ptr [idx]; + else + return (lane > 0) ? ptr [idx - 1] : 0; + } + + __device__ __forceinline__ unsigned int index(const unsigned int tid) + { + return (tid >> warp_log) * warp_smem_stride + 16 + (tid & warp_mask); + } + + __device__ __forceinline__ void init(volatile T *ptr) + { + ptr[threadIdx.x] = 0; + } + + static const int warp_smem_stride = 32 + 16 + 1; + static const int warp_offset = 16; + static const int warp_log = 5; + static const int warp_mask = 31; + + typedef WarpScanNoComp merge; + }; + + template struct BlockScan + { + __device__ __forceinline__ BlockScan() {} + __device__ __forceinline__ BlockScan(const BlockScan& other) { CV_UNUSED(other); } + + __device__ __forceinline__ T operator()(volatile T *ptr) + { + const unsigned int tid = threadIdx.x; + const unsigned int lane = tid & warp_mask; + const unsigned int warp = tid >> warp_log; + + Sc scan; + typename Sc::merge merge_scan; + const unsigned int idx = scan.index(tid); + + T val = scan(ptr, idx); + __syncthreads (); + + if( warp == 0) + scan.init(ptr); + __syncthreads (); + + if( lane == 31 ) + ptr [scan.warp_offset + warp ] = (Kind == INCLUSIVE) ? val : ptr [idx]; + __syncthreads (); + + if( warp == 0 ) + merge_scan(ptr, idx); + __syncthreads(); + + if ( warp > 0) + val = ptr [scan.warp_offset + warp - 1] + val; + __syncthreads (); + + ptr[idx] = val; + __syncthreads (); + + return val ; + } + + static const int warp_log = 5; + static const int warp_mask = 31; + }; + + template + __device__ T warpScanInclusive(T idata, volatile T* s_Data, unsigned int tid) + { + #if __CUDA_ARCH__ >= 300 + const unsigned int laneId = cv::cuda::device::Warp::laneId(); + + // scan on shuffl functions + #pragma unroll + for (int i = 1; i <= (OPENCV_CUDA_WARP_SIZE / 2); i *= 2) + { + const T n = cv::cuda::device::shfl_up(idata, i); + if (laneId >= i) + idata += n; + } + + return idata; + #else + unsigned int pos = 2 * tid - (tid & (OPENCV_CUDA_WARP_SIZE - 1)); + s_Data[pos] = 0; + pos += OPENCV_CUDA_WARP_SIZE; + s_Data[pos] = idata; + + s_Data[pos] += s_Data[pos - 1]; + s_Data[pos] += s_Data[pos - 2]; + s_Data[pos] += s_Data[pos - 4]; + s_Data[pos] += s_Data[pos - 8]; + s_Data[pos] += s_Data[pos - 16]; + + return s_Data[pos]; + #endif + } + + template + __device__ __forceinline__ T warpScanExclusive(T idata, volatile T* s_Data, unsigned int tid) + { + return warpScanInclusive(idata, s_Data, tid) - idata; + } + + template + __device__ T blockScanInclusive(T idata, volatile T* s_Data, unsigned int tid) + { + if (tiNumScanThreads > OPENCV_CUDA_WARP_SIZE) + { + //Bottom-level inclusive warp scan + T warpResult = warpScanInclusive(idata, s_Data, tid); + + //Save top elements of each warp for exclusive warp scan + //sync to wait for warp scans to complete (because s_Data is being overwritten) + __syncthreads(); + if ((tid & (OPENCV_CUDA_WARP_SIZE - 1)) == (OPENCV_CUDA_WARP_SIZE - 1)) + { + s_Data[tid >> OPENCV_CUDA_LOG_WARP_SIZE] = warpResult; + } + + //wait for warp scans to complete + __syncthreads(); + + if (tid < (tiNumScanThreads / OPENCV_CUDA_WARP_SIZE) ) + { + //grab top warp elements + T val = s_Data[tid]; + //calculate exclusive scan and write back to shared memory + s_Data[tid] = warpScanExclusive(val, s_Data, tid); + } + + //return updated warp scans with exclusive scan results + __syncthreads(); + + return warpResult + s_Data[tid >> OPENCV_CUDA_LOG_WARP_SIZE]; + } + else + { + return warpScanInclusive(idata, s_Data, tid); + } + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_SCAN_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/simd_functions.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/simd_functions.hpp new file mode 100644 index 0000000..3d8c2e0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/simd_functions.hpp @@ -0,0 +1,869 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +/* + * Copyright (c) 2013 NVIDIA Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of NVIDIA Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef OPENCV_CUDA_SIMD_FUNCTIONS_HPP +#define OPENCV_CUDA_SIMD_FUNCTIONS_HPP + +#include "common.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + // 2 + + static __device__ __forceinline__ unsigned int vadd2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vadd2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vadd.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vadd.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s; + s = a ^ b; // sum bits + r = a + b; // actual sum + s = s ^ r; // determine carry-ins for each bit position + s = s & 0x00010000; // carry-in to high word (= carry-out from low word) + r = r - s; // subtract out carry-out from low word + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsub2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vsub2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vsub.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vsub.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s; + s = a ^ b; // sum bits + r = a - b; // actual sum + s = s ^ r; // determine carry-ins for each bit position + s = s & 0x00010000; // borrow to high word + r = r + s; // compensate for borrow from low word + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vabsdiff2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vabsdiff2.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vabsdiff.u32.u32.u32.sat %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vabsdiff.u32.u32.u32.sat %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s, t, u, v; + s = a & 0x0000ffff; // extract low halfword + r = b & 0x0000ffff; // extract low halfword + u = ::max(r, s); // maximum of low halfwords + v = ::min(r, s); // minimum of low halfwords + s = a & 0xffff0000; // extract high halfword + r = b & 0xffff0000; // extract high halfword + t = ::max(r, s); // maximum of high halfwords + s = ::min(r, s); // minimum of high halfwords + r = u | t; // maximum of both halfwords + s = v | s; // minimum of both halfwords + r = r - s; // |a - b| = max(a,b) - min(a,b); + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vavg2(unsigned int a, unsigned int b) + { + unsigned int r, s; + + // HAKMEM #23: a + b = 2 * (a & b) + (a ^ b) ==> + // (a + b) / 2 = (a & b) + ((a ^ b) >> 1) + s = a ^ b; + r = a & b; + s = s & 0xfffefffe; // ensure shift doesn't cross halfword boundaries + s = s >> 1; + s = r + s; + + return s; + } + + static __device__ __forceinline__ unsigned int vavrg2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vavrg2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // HAKMEM #23: a + b = 2 * (a | b) - (a ^ b) ==> + // (a + b + 1) / 2 = (a | b) - ((a ^ b) >> 1) + unsigned int s; + s = a ^ b; + r = a | b; + s = s & 0xfffefffe; // ensure shift doesn't cross half-word boundaries + s = s >> 1; + r = r - s; + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vseteq2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset2.u32.u32.eq %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + unsigned int c; + r = a ^ b; // 0x0000 if a == b + c = r | 0x80008000; // set msbs, to catch carry out + r = r ^ c; // extract msbs, msb = 1 if r < 0x8000 + c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000 + c = r & ~c; // msb = 1, if r was 0x0000 + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpeq2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vseteq2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + r = a ^ b; // 0x0000 if a == b + c = r | 0x80008000; // set msbs, to catch carry out + r = r ^ c; // extract msbs, msb = 1 if r < 0x8000 + c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000 + c = r & ~c; // msb = 1, if r was 0x0000 + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetge2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset2.u32.u32.ge %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavrg2(a, b); // (a + ~b + 1) / 2 = (a - b) / 2 + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpge2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetge2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavrg2(a, b); // (a + ~b + 1) / 2 = (a - b) / 2 + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetgt2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset2.u32.u32.gt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavg2(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down] + c = c & 0x80008000; // msbs = carry-outs + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpgt2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetgt2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavg2(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down] + c = c & 0x80008000; // msbs = carry-outs + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetle2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset2.u32.u32.le %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavrg2(a, b); // (b + ~a + 1) / 2 = (b - a) / 2 + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmple2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetle2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavrg2(a, b); // (b + ~a + 1) / 2 = (b - a) / 2 + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetlt2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset2.u32.u32.lt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavg2(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down] + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmplt2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetlt2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavg2(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down] + c = c & 0x80008000; // msb = carry-outs + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetne2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm ("vset2.u32.u32.ne %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + unsigned int c; + r = a ^ b; // 0x0000 if a == b + c = r | 0x80008000; // set msbs, to catch carry out + c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000 + c = r | c; // msb = 1, if r was not 0x0000 + c = c & 0x80008000; // extract msbs + r = c >> 15; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpne2(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetne2(a, b); + c = r << 16; // convert bool + r = c - r; // into mask + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + r = a ^ b; // 0x0000 if a == b + c = r | 0x80008000; // set msbs, to catch carry out + c = c - 0x00010001; // msb = 0, if r was 0x0000 or 0x8000 + c = r | c; // msb = 1, if r was not 0x0000 + c = c & 0x80008000; // extract msbs + r = c >> 15; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vmax2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vmax2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vmax.u32.u32.u32 %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmax.u32.u32.u32 %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s, t, u; + r = a & 0x0000ffff; // extract low halfword + s = b & 0x0000ffff; // extract low halfword + t = ::max(r, s); // maximum of low halfwords + r = a & 0xffff0000; // extract high halfword + s = b & 0xffff0000; // extract high halfword + u = ::max(r, s); // maximum of high halfwords + r = t | u; // combine halfword maximums + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vmin2(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vmin2.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vmin.u32.u32.u32 %0.h0, %1.h0, %2.h0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmin.u32.u32.u32 %0.h1, %1.h1, %2.h1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s, t, u; + r = a & 0x0000ffff; // extract low halfword + s = b & 0x0000ffff; // extract low halfword + t = ::min(r, s); // minimum of low halfwords + r = a & 0xffff0000; // extract high halfword + s = b & 0xffff0000; // extract high halfword + u = ::min(r, s); // minimum of high halfwords + r = t | u; // combine halfword minimums + #endif + + return r; + } + + // 4 + + static __device__ __forceinline__ unsigned int vadd4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vadd4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vadd.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vadd.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vadd.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vadd.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s, t; + s = a ^ b; // sum bits + r = a & 0x7f7f7f7f; // clear msbs + t = b & 0x7f7f7f7f; // clear msbs + s = s & 0x80808080; // msb sum bits + r = r + t; // add without msbs, record carry-out in msbs + r = r ^ s; // sum of msb sum and carry-in bits, w/o carry-out + #endif /* __CUDA_ARCH__ >= 300 */ + + return r; + } + + static __device__ __forceinline__ unsigned int vsub4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vsub4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vsub.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vsub.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vsub.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vsub.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s, t; + s = a ^ ~b; // inverted sum bits + r = a | 0x80808080; // set msbs + t = b & 0x7f7f7f7f; // clear msbs + s = s & 0x80808080; // inverted msb sum bits + r = r - t; // subtract w/o msbs, record inverted borrows in msb + r = r ^ s; // combine inverted msb sum bits and borrows + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vavg4(unsigned int a, unsigned int b) + { + unsigned int r, s; + + // HAKMEM #23: a + b = 2 * (a & b) + (a ^ b) ==> + // (a + b) / 2 = (a & b) + ((a ^ b) >> 1) + s = a ^ b; + r = a & b; + s = s & 0xfefefefe; // ensure following shift doesn't cross byte boundaries + s = s >> 1; + s = r + s; + + return s; + } + + static __device__ __forceinline__ unsigned int vavrg4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vavrg4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // HAKMEM #23: a + b = 2 * (a | b) - (a ^ b) ==> + // (a + b + 1) / 2 = (a | b) - ((a ^ b) >> 1) + unsigned int c; + c = a ^ b; + r = a | b; + c = c & 0xfefefefe; // ensure following shift doesn't cross byte boundaries + c = c >> 1; + r = r - c; + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vseteq4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.eq %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + unsigned int c; + r = a ^ b; // 0x00 if a == b + c = r | 0x80808080; // set msbs, to catch carry out + r = r ^ c; // extract msbs, msb = 1 if r < 0x80 + c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80 + c = r & ~c; // msb = 1, if r was 0x00 + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpeq4(unsigned int a, unsigned int b) + { + unsigned int r, t; + + #if __CUDA_ARCH__ >= 300 + r = vseteq4(a, b); + t = r << 8; // convert bool + r = t - r; // to mask + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + t = a ^ b; // 0x00 if a == b + r = t | 0x80808080; // set msbs, to catch carry out + t = t ^ r; // extract msbs, msb = 1 if t < 0x80 + r = r - 0x01010101; // msb = 0, if t was 0x00 or 0x80 + r = t & ~r; // msb = 1, if t was 0x00 + t = r >> 7; // build mask + t = r - t; // from + r = t | r; // msbs + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetle4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.le %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavrg4(a, b); // (b + ~a + 1) / 2 = (b - a) / 2 + c = c & 0x80808080; // msb = carry-outs + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmple4(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetle4(a, b); + c = r << 8; // convert bool + r = c - r; // to mask + #else + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavrg4(a, b); // (b + ~a + 1) / 2 = (b - a) / 2 + c = c & 0x80808080; // msbs = carry-outs + r = c >> 7; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetlt4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.lt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavg4(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down] + c = c & 0x80808080; // msb = carry-outs + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmplt4(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetlt4(a, b); + c = r << 8; // convert bool + r = c - r; // to mask + #else + asm("not.b32 %0, %0;" : "+r"(a)); + c = vavg4(a, b); // (b + ~a) / 2 = (b - a) / 2 [rounded down] + c = c & 0x80808080; // msbs = carry-outs + r = c >> 7; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetge4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.ge %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavrg4(a, b); // (a + ~b + 1) / 2 = (a - b) / 2 + c = c & 0x80808080; // msb = carry-outs + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpge4(unsigned int a, unsigned int b) + { + unsigned int r, s; + + #if __CUDA_ARCH__ >= 300 + r = vsetge4(a, b); + s = r << 8; // convert bool + r = s - r; // to mask + #else + asm ("not.b32 %0,%0;" : "+r"(b)); + r = vavrg4 (a, b); // (a + ~b + 1) / 2 = (a - b) / 2 + r = r & 0x80808080; // msb = carry-outs + s = r >> 7; // build mask + s = r - s; // from + r = s | r; // msbs + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetgt4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.gt %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int c; + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavg4(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down] + c = c & 0x80808080; // msb = carry-outs + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpgt4(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetgt4(a, b); + c = r << 8; // convert bool + r = c - r; // to mask + #else + asm("not.b32 %0, %0;" : "+r"(b)); + c = vavg4(a, b); // (a + ~b) / 2 = (a - b) / 2 [rounded down] + c = c & 0x80808080; // msb = carry-outs + r = c >> 7; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vsetne4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vset4.u32.u32.ne %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + unsigned int c; + r = a ^ b; // 0x00 if a == b + c = r | 0x80808080; // set msbs, to catch carry out + c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80 + c = r | c; // msb = 1, if r was not 0x00 + c = c & 0x80808080; // extract msbs + r = c >> 7; // convert to bool + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vcmpne4(unsigned int a, unsigned int b) + { + unsigned int r, c; + + #if __CUDA_ARCH__ >= 300 + r = vsetne4(a, b); + c = r << 8; // convert bool + r = c - r; // to mask + #else + // inspired by Alan Mycroft's null-byte detection algorithm: + // null_byte(x) = ((x - 0x01010101) & (~x & 0x80808080)) + r = a ^ b; // 0x00 if a == b + c = r | 0x80808080; // set msbs, to catch carry out + c = c - 0x01010101; // msb = 0, if r was 0x00 or 0x80 + c = r | c; // msb = 1, if r was not 0x00 + c = c & 0x80808080; // extract msbs + r = c >> 7; // convert + r = c - r; // msbs to + r = c | r; // mask + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vabsdiff4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vabsdiff4.u32.u32.u32.sat %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vabsdiff.u32.u32.u32.sat %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vabsdiff.u32.u32.u32.sat %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vabsdiff.u32.u32.u32.sat %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vabsdiff.u32.u32.u32.sat %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s; + s = vcmpge4(a, b); // mask = 0xff if a >= b + r = a ^ b; // + s = (r & s) ^ b; // select a when a >= b, else select b => max(a,b) + r = s ^ r; // select a when b >= a, else select b => min(a,b) + r = s - r; // |a - b| = max(a,b) - min(a,b); + #endif + + return r; + } + + static __device__ __forceinline__ unsigned int vmax4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vmax4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vmax.u32.u32.u32 %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmax.u32.u32.u32 %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmax.u32.u32.u32 %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmax.u32.u32.u32 %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s; + s = vcmpge4(a, b); // mask = 0xff if a >= b + r = a & s; // select a when b >= a + s = b & ~s; // select b when b < a + r = r | s; // combine byte selections + #endif + + return r; // byte-wise unsigned maximum + } + + static __device__ __forceinline__ unsigned int vmin4(unsigned int a, unsigned int b) + { + unsigned int r = 0; + + #if __CUDA_ARCH__ >= 300 + asm("vmin4.u32.u32.u32 %0, %1, %2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #elif __CUDA_ARCH__ >= 200 + asm("vmin.u32.u32.u32 %0.b0, %1.b0, %2.b0, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmin.u32.u32.u32 %0.b1, %1.b1, %2.b1, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmin.u32.u32.u32 %0.b2, %1.b2, %2.b2, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + asm("vmin.u32.u32.u32 %0.b3, %1.b3, %2.b3, %3;" : "=r"(r) : "r"(a), "r"(b), "r"(r)); + #else + unsigned int s; + s = vcmpge4(b, a); // mask = 0xff if a >= b + r = a & s; // select a when b >= a + s = b & ~s; // select b when b < a + r = r | s; // combine byte selections + #endif + + return r; + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_SIMD_FUNCTIONS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/transform.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/transform.hpp new file mode 100644 index 0000000..42aa6ea --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/transform.hpp @@ -0,0 +1,75 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_TRANSFORM_HPP +#define OPENCV_CUDA_TRANSFORM_HPP + +#include "common.hpp" +#include "utility.hpp" +#include "detail/transform_detail.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template + static inline void transform(PtrStepSz src, PtrStepSz dst, UnOp op, const Mask& mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + transform_detail::TransformDispatcher::cn == 1 && VecTraits::cn == 1 && ft::smart_shift != 1>::call(src, dst, op, mask, stream); + } + + template + static inline void transform(PtrStepSz src1, PtrStepSz src2, PtrStepSz dst, BinOp op, const Mask& mask, cudaStream_t stream) + { + typedef TransformFunctorTraits ft; + transform_detail::TransformDispatcher::cn == 1 && VecTraits::cn == 1 && VecTraits::cn == 1 && ft::smart_shift != 1>::call(src1, src2, dst, op, mask, stream); + } +}}} + +//! @endcond + +#endif // OPENCV_CUDA_TRANSFORM_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/type_traits.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/type_traits.hpp new file mode 100644 index 0000000..8b7a3fd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/type_traits.hpp @@ -0,0 +1,90 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_TYPE_TRAITS_HPP +#define OPENCV_CUDA_TYPE_TRAITS_HPP + +#include "detail/type_traits_detail.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template struct IsSimpleParameter + { + enum {value = type_traits_detail::IsIntegral::value || type_traits_detail::IsFloat::value || + type_traits_detail::PointerTraits::type>::value}; + }; + + template struct TypeTraits + { + typedef typename type_traits_detail::UnConst::type NonConstType; + typedef typename type_traits_detail::UnVolatile::type NonVolatileType; + typedef typename type_traits_detail::UnVolatile::type>::type UnqualifiedType; + typedef typename type_traits_detail::PointerTraits::type PointeeType; + typedef typename type_traits_detail::ReferenceTraits::type ReferredType; + + enum { isConst = type_traits_detail::UnConst::value }; + enum { isVolatile = type_traits_detail::UnVolatile::value }; + + enum { isReference = type_traits_detail::ReferenceTraits::value }; + enum { isPointer = type_traits_detail::PointerTraits::type>::value }; + + enum { isUnsignedInt = type_traits_detail::IsUnsignedIntegral::value }; + enum { isSignedInt = type_traits_detail::IsSignedIntergral::value }; + enum { isIntegral = type_traits_detail::IsIntegral::value }; + enum { isFloat = type_traits_detail::IsFloat::value }; + enum { isArith = isIntegral || isFloat }; + enum { isVec = type_traits_detail::IsVec::value }; + + typedef typename type_traits_detail::Select::value, + T, typename type_traits_detail::AddParameterType::type>::type ParameterType; + }; +}}} + +//! @endcond + +#endif // OPENCV_CUDA_TYPE_TRAITS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/utility.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/utility.hpp new file mode 100644 index 0000000..7f5db48 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/utility.hpp @@ -0,0 +1,230 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_UTILITY_HPP +#define OPENCV_CUDA_UTILITY_HPP + +#include "saturate_cast.hpp" +#include "datamov_utils.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + struct CV_EXPORTS ThrustAllocator + { + typedef uchar value_type; + virtual ~ThrustAllocator(); + virtual __device__ __host__ uchar* allocate(size_t numBytes) = 0; + virtual __device__ __host__ void deallocate(uchar* ptr, size_t numBytes) = 0; + static ThrustAllocator& getAllocator(); + static void setAllocator(ThrustAllocator* allocator); + }; + #define OPENCV_CUDA_LOG_WARP_SIZE (5) + #define OPENCV_CUDA_WARP_SIZE (1 << OPENCV_CUDA_LOG_WARP_SIZE) + #define OPENCV_CUDA_LOG_MEM_BANKS ((__CUDA_ARCH__ >= 200) ? 5 : 4) // 32 banks on fermi, 16 on tesla + #define OPENCV_CUDA_MEM_BANKS (1 << OPENCV_CUDA_LOG_MEM_BANKS) + + /////////////////////////////////////////////////////////////////////////////// + // swap + + template void __device__ __host__ __forceinline__ swap(T& a, T& b) + { + const T temp = a; + a = b; + b = temp; + } + + /////////////////////////////////////////////////////////////////////////////// + // Mask Reader + + struct SingleMask + { + explicit __host__ __device__ __forceinline__ SingleMask(PtrStepb mask_) : mask(mask_) {} + __host__ __device__ __forceinline__ SingleMask(const SingleMask& mask_): mask(mask_.mask){} + + __device__ __forceinline__ bool operator()(int y, int x) const + { + return mask.ptr(y)[x] != 0; + } + + PtrStepb mask; + }; + + struct SingleMaskChannels + { + __host__ __device__ __forceinline__ SingleMaskChannels(PtrStepb mask_, int channels_) + : mask(mask_), channels(channels_) {} + __host__ __device__ __forceinline__ SingleMaskChannels(const SingleMaskChannels& mask_) + :mask(mask_.mask), channels(mask_.channels){} + + __device__ __forceinline__ bool operator()(int y, int x) const + { + return mask.ptr(y)[x / channels] != 0; + } + + PtrStepb mask; + int channels; + }; + + struct MaskCollection + { + explicit __host__ __device__ __forceinline__ MaskCollection(PtrStepb* maskCollection_) + : maskCollection(maskCollection_) {} + + __device__ __forceinline__ MaskCollection(const MaskCollection& masks_) + : maskCollection(masks_.maskCollection), curMask(masks_.curMask){} + + __device__ __forceinline__ void next() + { + curMask = *maskCollection++; + } + __device__ __forceinline__ void setMask(int z) + { + curMask = maskCollection[z]; + } + + __device__ __forceinline__ bool operator()(int y, int x) const + { + uchar val; + return curMask.data == 0 || (ForceGlob::Load(curMask.ptr(y), x, val), (val != 0)); + } + + const PtrStepb* maskCollection; + PtrStepb curMask; + }; + + struct WithOutMask + { + __host__ __device__ __forceinline__ WithOutMask(){} + __host__ __device__ __forceinline__ WithOutMask(const WithOutMask&){} + + __device__ __forceinline__ void next() const + { + } + __device__ __forceinline__ void setMask(int) const + { + } + + __device__ __forceinline__ bool operator()(int, int) const + { + return true; + } + + __device__ __forceinline__ bool operator()(int, int, int) const + { + return true; + } + + static __device__ __forceinline__ bool check(int, int) + { + return true; + } + + static __device__ __forceinline__ bool check(int, int, int) + { + return true; + } + }; + + /////////////////////////////////////////////////////////////////////////////// + // Solve linear system + + // solve 2x2 linear system Ax=b + template __device__ __forceinline__ bool solve2x2(const T A[2][2], const T b[2], T x[2]) + { + T det = A[0][0] * A[1][1] - A[1][0] * A[0][1]; + + if (det != 0) + { + double invdet = 1.0 / det; + + x[0] = saturate_cast(invdet * (b[0] * A[1][1] - b[1] * A[0][1])); + + x[1] = saturate_cast(invdet * (A[0][0] * b[1] - A[1][0] * b[0])); + + return true; + } + + return false; + } + + // solve 3x3 linear system Ax=b + template __device__ __forceinline__ bool solve3x3(const T A[3][3], const T b[3], T x[3]) + { + T det = A[0][0] * (A[1][1] * A[2][2] - A[1][2] * A[2][1]) + - A[0][1] * (A[1][0] * A[2][2] - A[1][2] * A[2][0]) + + A[0][2] * (A[1][0] * A[2][1] - A[1][1] * A[2][0]); + + if (det != 0) + { + double invdet = 1.0 / det; + + x[0] = saturate_cast(invdet * + (b[0] * (A[1][1] * A[2][2] - A[1][2] * A[2][1]) - + A[0][1] * (b[1] * A[2][2] - A[1][2] * b[2] ) + + A[0][2] * (b[1] * A[2][1] - A[1][1] * b[2] ))); + + x[1] = saturate_cast(invdet * + (A[0][0] * (b[1] * A[2][2] - A[1][2] * b[2] ) - + b[0] * (A[1][0] * A[2][2] - A[1][2] * A[2][0]) + + A[0][2] * (A[1][0] * b[2] - b[1] * A[2][0]))); + + x[2] = saturate_cast(invdet * + (A[0][0] * (A[1][1] * b[2] - b[1] * A[2][1]) - + A[0][1] * (A[1][0] * b[2] - b[1] * A[2][0]) + + b[0] * (A[1][0] * A[2][1] - A[1][1] * A[2][0]))); + + return true; + } + + return false; + } +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_UTILITY_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_distance.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_distance.hpp new file mode 100644 index 0000000..ef6e510 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_distance.hpp @@ -0,0 +1,232 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_VEC_DISTANCE_HPP +#define OPENCV_CUDA_VEC_DISTANCE_HPP + +#include "reduce.hpp" +#include "functional.hpp" +#include "detail/vec_distance_detail.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template struct L1Dist + { + typedef int value_type; + typedef int result_type; + + __device__ __forceinline__ L1Dist() : mySum(0) {} + + __device__ __forceinline__ void reduceIter(int val1, int val2) + { + mySum = __sad(val1, val2, mySum); + } + + template __device__ __forceinline__ void reduceAll(int* smem, int tid) + { + reduce(smem, mySum, tid, plus()); + } + + __device__ __forceinline__ operator int() const + { + return mySum; + } + + int mySum; + }; + template <> struct L1Dist + { + typedef float value_type; + typedef float result_type; + + __device__ __forceinline__ L1Dist() : mySum(0.0f) {} + + __device__ __forceinline__ void reduceIter(float val1, float val2) + { + mySum += ::fabs(val1 - val2); + } + + template __device__ __forceinline__ void reduceAll(float* smem, int tid) + { + reduce(smem, mySum, tid, plus()); + } + + __device__ __forceinline__ operator float() const + { + return mySum; + } + + float mySum; + }; + + struct L2Dist + { + typedef float value_type; + typedef float result_type; + + __device__ __forceinline__ L2Dist() : mySum(0.0f) {} + + __device__ __forceinline__ void reduceIter(float val1, float val2) + { + float reg = val1 - val2; + mySum += reg * reg; + } + + template __device__ __forceinline__ void reduceAll(float* smem, int tid) + { + reduce(smem, mySum, tid, plus()); + } + + __device__ __forceinline__ operator float() const + { + return sqrtf(mySum); + } + + float mySum; + }; + + struct HammingDist + { + typedef int value_type; + typedef int result_type; + + __device__ __forceinline__ HammingDist() : mySum(0) {} + + __device__ __forceinline__ void reduceIter(int val1, int val2) + { + mySum += __popc(val1 ^ val2); + } + + template __device__ __forceinline__ void reduceAll(int* smem, int tid) + { + reduce(smem, mySum, tid, plus()); + } + + __device__ __forceinline__ operator int() const + { + return mySum; + } + + int mySum; + }; + + // calc distance between two vectors in global memory + template + __device__ void calcVecDiffGlobal(const T1* vec1, const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid) + { + for (int i = tid; i < len; i += THREAD_DIM) + { + T1 val1; + ForceGlob::Load(vec1, i, val1); + + T2 val2; + ForceGlob::Load(vec2, i, val2); + + dist.reduceIter(val1, val2); + } + + dist.reduceAll(smem, tid); + } + + // calc distance between two vectors, first vector is cached in register or shared memory, second vector is in global memory + template + __device__ __forceinline__ void calcVecDiffCached(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, typename Dist::result_type* smem, int tid) + { + vec_distance_detail::VecDiffCachedCalculator::calc(vecCached, vecGlob, len, dist, tid); + + dist.reduceAll(smem, tid); + } + + // calc distance between two vectors in global memory + template struct VecDiffGlobal + { + explicit __device__ __forceinline__ VecDiffGlobal(const T1* vec1_, int = 0, void* = 0, int = 0, int = 0) + { + vec1 = vec1_; + } + + template + __device__ __forceinline__ void calc(const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid) const + { + calcVecDiffGlobal(vec1, vec2, len, dist, smem, tid); + } + + const T1* vec1; + }; + + // calc distance between two vectors, first vector is cached in register memory, second vector is in global memory + template struct VecDiffCachedRegister + { + template __device__ __forceinline__ VecDiffCachedRegister(const T1* vec1, int len, U* smem, int glob_tid, int tid) + { + if (glob_tid < len) + smem[glob_tid] = vec1[glob_tid]; + __syncthreads(); + + U* vec1ValsPtr = vec1Vals; + + #pragma unroll + for (int i = tid; i < MAX_LEN; i += THREAD_DIM) + *vec1ValsPtr++ = smem[i]; + + __syncthreads(); + } + + template + __device__ __forceinline__ void calc(const T2* vec2, int len, Dist& dist, typename Dist::result_type* smem, int tid) const + { + calcVecDiffCached(vec1Vals, vec2, len, dist, smem, tid); + } + + U vec1Vals[MAX_LEN / THREAD_DIM]; + }; +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_VEC_DISTANCE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_math.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_math.hpp new file mode 100644 index 0000000..80b1303 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_math.hpp @@ -0,0 +1,923 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_VECMATH_HPP +#define OPENCV_CUDA_VECMATH_HPP + +#include "vec_traits.hpp" +#include "saturate_cast.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + +// saturate_cast + +namespace vec_math_detail +{ + template struct SatCastHelper; + template struct SatCastHelper<1, VecD> + { + template static __device__ __forceinline__ VecD cast(const VecS& v) + { + typedef typename VecTraits::elem_type D; + return VecTraits::make(saturate_cast(v.x)); + } + }; + template struct SatCastHelper<2, VecD> + { + template static __device__ __forceinline__ VecD cast(const VecS& v) + { + typedef typename VecTraits::elem_type D; + return VecTraits::make(saturate_cast(v.x), saturate_cast(v.y)); + } + }; + template struct SatCastHelper<3, VecD> + { + template static __device__ __forceinline__ VecD cast(const VecS& v) + { + typedef typename VecTraits::elem_type D; + return VecTraits::make(saturate_cast(v.x), saturate_cast(v.y), saturate_cast(v.z)); + } + }; + template struct SatCastHelper<4, VecD> + { + template static __device__ __forceinline__ VecD cast(const VecS& v) + { + typedef typename VecTraits::elem_type D; + return VecTraits::make(saturate_cast(v.x), saturate_cast(v.y), saturate_cast(v.z), saturate_cast(v.w)); + } + }; + + template static __device__ __forceinline__ VecD saturate_cast_helper(const VecS& v) + { + return SatCastHelper::cn, VecD>::cast(v); + } +} + +template static __device__ __forceinline__ T saturate_cast(const uchar1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const char1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const ushort1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const short1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const uint1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const int1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const float1& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const double1& v) {return vec_math_detail::saturate_cast_helper(v);} + +template static __device__ __forceinline__ T saturate_cast(const uchar2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const char2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const ushort2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const short2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const uint2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const int2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const float2& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const double2& v) {return vec_math_detail::saturate_cast_helper(v);} + +template static __device__ __forceinline__ T saturate_cast(const uchar3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const char3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const ushort3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const short3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const uint3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const int3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const float3& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const double3& v) {return vec_math_detail::saturate_cast_helper(v);} + +template static __device__ __forceinline__ T saturate_cast(const uchar4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const char4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const ushort4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const short4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const uint4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const int4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const float4& v) {return vec_math_detail::saturate_cast_helper(v);} +template static __device__ __forceinline__ T saturate_cast(const double4& v) {return vec_math_detail::saturate_cast_helper(v);} + +// unary operators + +#define CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(op, input_type, output_type) \ + __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a) \ + { \ + return VecTraits::make(op (a.x)); \ + } \ + __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a) \ + { \ + return VecTraits::make(op (a.x), op (a.y)); \ + } \ + __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a) \ + { \ + return VecTraits::make(op (a.x), op (a.y), op (a.z)); \ + } \ + __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a) \ + { \ + return VecTraits::make(op (a.x), op (a.y), op (a.z), op (a.w)); \ + } + +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, char, char) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, short, short) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, int, int) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(-, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(!, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, char, char) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, short, short) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, int, int) +CV_CUDEV_IMPLEMENT_VEC_UNARY_OP(~, uint, uint) + +#undef CV_CUDEV_IMPLEMENT_VEC_UNARY_OP + +// unary functions + +#define CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(func_name, func, input_type, output_type) \ + __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a) \ + { \ + return VecTraits::make(func (a.x)); \ + } \ + __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a) \ + { \ + return VecTraits::make(func (a.x), func (a.y)); \ + } \ + __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a) \ + { \ + return VecTraits::make(func (a.x), func (a.y), func (a.z)); \ + } \ + __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a) \ + { \ + return VecTraits::make(func (a.x), func (a.y), func (a.z), func (a.w)); \ + } + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::fabsf, float, float) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrtf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sqrt, ::sqrt, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::expf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp, ::exp, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2f, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp2, ::exp2, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10f, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(exp10, ::exp10, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::logf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log, ::log, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2f, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log2, ::log2, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10f, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(log10, ::log10, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sinf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sin, ::sin, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cosf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cos, ::cos, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tanf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tan, ::tan, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asinf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asin, ::asin, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acosf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acos, ::acos, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atanf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atan, ::atan, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinhf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(sinh, ::sinh, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::coshf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(cosh, ::cosh, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanhf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(tanh, ::tanh, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinhf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(asinh, ::asinh, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acoshf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(acosh, ::acosh, double, double) + +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, char, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, short, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, int, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanhf, float, float) +CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(atanh, ::atanh, double, double) + +#undef CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC + +// binary operators (vec & vec) + +#define CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(op, input_type, output_type) \ + __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, const input_type ## 1 & b) \ + { \ + return VecTraits::make(a.x op b.x); \ + } \ + __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, const input_type ## 2 & b) \ + { \ + return VecTraits::make(a.x op b.x, a.y op b.y); \ + } \ + __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, const input_type ## 3 & b) \ + { \ + return VecTraits::make(a.x op b.x, a.y op b.y, a.z op b.z); \ + } \ + __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, const input_type ## 4 & b) \ + { \ + return VecTraits::make(a.x op b.x, a.y op b.y, a.z op b.z, a.w op b.w); \ + } + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, uchar, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, char, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, ushort, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, short, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(+, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, uchar, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, char, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, ushort, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, short, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(-, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, uchar, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, char, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, ushort, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, short, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(*, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, uchar, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, char, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, ushort, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, short, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(/, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(==, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(!=, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(>=, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(<=, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&&, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, char, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, ushort, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, short, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, int, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, uint, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, float, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(||, double, uchar) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, char, char) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, short, short) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(&, uint, uint) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, char, char) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, short, short) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(|, uint, uint) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, char, char) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, short, short) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_OP(^, uint, uint) + +#undef CV_CUDEV_IMPLEMENT_VEC_BINARY_OP + +// binary operators (vec & scalar) + +#define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(op, input_type, scalar_type, output_type) \ + __device__ __forceinline__ output_type ## 1 operator op(const input_type ## 1 & a, scalar_type s) \ + { \ + return VecTraits::make(a.x op s); \ + } \ + __device__ __forceinline__ output_type ## 1 operator op(scalar_type s, const input_type ## 1 & b) \ + { \ + return VecTraits::make(s op b.x); \ + } \ + __device__ __forceinline__ output_type ## 2 operator op(const input_type ## 2 & a, scalar_type s) \ + { \ + return VecTraits::make(a.x op s, a.y op s); \ + } \ + __device__ __forceinline__ output_type ## 2 operator op(scalar_type s, const input_type ## 2 & b) \ + { \ + return VecTraits::make(s op b.x, s op b.y); \ + } \ + __device__ __forceinline__ output_type ## 3 operator op(const input_type ## 3 & a, scalar_type s) \ + { \ + return VecTraits::make(a.x op s, a.y op s, a.z op s); \ + } \ + __device__ __forceinline__ output_type ## 3 operator op(scalar_type s, const input_type ## 3 & b) \ + { \ + return VecTraits::make(s op b.x, s op b.y, s op b.z); \ + } \ + __device__ __forceinline__ output_type ## 4 operator op(const input_type ## 4 & a, scalar_type s) \ + { \ + return VecTraits::make(a.x op s, a.y op s, a.z op s, a.w op s); \ + } \ + __device__ __forceinline__ output_type ## 4 operator op(scalar_type s, const input_type ## 4 & b) \ + { \ + return VecTraits::make(s op b.x, s op b.y, s op b.z, s op b.w); \ + } + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(+, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(-, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(*, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(/, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(==, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(!=, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(>=, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(<=, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&&, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, char, char, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, ushort, ushort, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, short, short, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, int, int, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, uint, uint, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, float, float, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(||, double, double, uchar) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, char, char, char) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, ushort, ushort, ushort) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, short, short, short) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(&, uint, uint, uint) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, char, char, char) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, ushort, ushort, ushort) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, short, short, short) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(|, uint, uint, uint) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, char, char, char) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, ushort, ushort, ushort) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, short, short, short) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP(^, uint, uint, uint) + +#undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_OP + +// binary function (vec & vec) + +#define CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(func_name, func, input_type, output_type) \ + __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, const input_type ## 1 & b) \ + { \ + return VecTraits::make(func (a.x, b.x)); \ + } \ + __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, const input_type ## 2 & b) \ + { \ + return VecTraits::make(func (a.x, b.x), func (a.y, b.y)); \ + } \ + __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, const input_type ## 3 & b) \ + { \ + return VecTraits::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z)); \ + } \ + __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, const input_type ## 4 & b) \ + { \ + return VecTraits::make(func (a.x, b.x), func (a.y, b.y), func (a.z, b.z), func (a.w, b.w)); \ + } + +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, char, char) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, short, short) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::max, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::fmaxf, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(max, ::fmax, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, uchar, uchar) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, char, char) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, ushort, ushort) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, short, short) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, uint, uint) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::min, int, int) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::fminf, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(min, ::fmin, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, char, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, short, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, uint, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, int, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypotf, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(hypot, ::hypot, double, double) + +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, uchar, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, char, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, ushort, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, short, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, uint, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, int, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2f, float, float) +CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC(atan2, ::atan2, double, double) + +#undef CV_CUDEV_IMPLEMENT_VEC_BINARY_FUNC + +// binary function (vec & scalar) + +#define CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(func_name, func, input_type, scalar_type, output_type) \ + __device__ __forceinline__ output_type ## 1 func_name(const input_type ## 1 & a, scalar_type s) \ + { \ + return VecTraits::make(func ((output_type) a.x, (output_type) s)); \ + } \ + __device__ __forceinline__ output_type ## 1 func_name(scalar_type s, const input_type ## 1 & b) \ + { \ + return VecTraits::make(func ((output_type) s, (output_type) b.x)); \ + } \ + __device__ __forceinline__ output_type ## 2 func_name(const input_type ## 2 & a, scalar_type s) \ + { \ + return VecTraits::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s)); \ + } \ + __device__ __forceinline__ output_type ## 2 func_name(scalar_type s, const input_type ## 2 & b) \ + { \ + return VecTraits::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y)); \ + } \ + __device__ __forceinline__ output_type ## 3 func_name(const input_type ## 3 & a, scalar_type s) \ + { \ + return VecTraits::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s)); \ + } \ + __device__ __forceinline__ output_type ## 3 func_name(scalar_type s, const input_type ## 3 & b) \ + { \ + return VecTraits::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z)); \ + } \ + __device__ __forceinline__ output_type ## 4 func_name(const input_type ## 4 & a, scalar_type s) \ + { \ + return VecTraits::make(func ((output_type) a.x, (output_type) s), func ((output_type) a.y, (output_type) s), func ((output_type) a.z, (output_type) s), func ((output_type) a.w, (output_type) s)); \ + } \ + __device__ __forceinline__ output_type ## 4 func_name(scalar_type s, const input_type ## 4 & b) \ + { \ + return VecTraits::make(func ((output_type) s, (output_type) b.x), func ((output_type) s, (output_type) b.y), func ((output_type) s, (output_type) b.z), func ((output_type) s, (output_type) b.w)); \ + } + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, char, char, char) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, ushort, ushort, ushort) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, short, short, short) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::max, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmaxf, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(max, ::fmax, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, uchar, uchar, uchar) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, char, char, char) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, ushort, ushort, ushort) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, short, short, short) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, uint, uint, uint) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::min, int, int, int) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fminf, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(min, ::fmin, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypotf, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(hypot, ::hypot, double, double, double) + +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, uchar, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, uchar, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, char, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, char, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, ushort, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, ushort, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, short, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, short, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, uint, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, uint, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, int, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, int, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2f, float, float, float) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, float, double, double) +CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC(atan2, ::atan2, double, double, double) + +#undef CV_CUDEV_IMPLEMENT_SCALAR_BINARY_FUNC + +}}} // namespace cv { namespace cuda { namespace device + +//! @endcond + +#endif // OPENCV_CUDA_VECMATH_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_traits.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_traits.hpp new file mode 100644 index 0000000..b5ff281 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/vec_traits.hpp @@ -0,0 +1,288 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_VEC_TRAITS_HPP +#define OPENCV_CUDA_VEC_TRAITS_HPP + +#include "common.hpp" + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template struct TypeVec; + + struct __align__(8) uchar8 + { + uchar a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ uchar8 make_uchar8(uchar a0, uchar a1, uchar a2, uchar a3, uchar a4, uchar a5, uchar a6, uchar a7) + { + uchar8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(8) char8 + { + schar a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ char8 make_char8(schar a0, schar a1, schar a2, schar a3, schar a4, schar a5, schar a6, schar a7) + { + char8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(16) ushort8 + { + ushort a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ ushort8 make_ushort8(ushort a0, ushort a1, ushort a2, ushort a3, ushort a4, ushort a5, ushort a6, ushort a7) + { + ushort8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(16) short8 + { + short a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ short8 make_short8(short a0, short a1, short a2, short a3, short a4, short a5, short a6, short a7) + { + short8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(32) uint8 + { + uint a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ uint8 make_uint8(uint a0, uint a1, uint a2, uint a3, uint a4, uint a5, uint a6, uint a7) + { + uint8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(32) int8 + { + int a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ int8 make_int8(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7) + { + int8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct __align__(32) float8 + { + float a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ float8 make_float8(float a0, float a1, float a2, float a3, float a4, float a5, float a6, float a7) + { + float8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + struct double8 + { + double a0, a1, a2, a3, a4, a5, a6, a7; + }; + static __host__ __device__ __forceinline__ double8 make_double8(double a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7) + { + double8 val = {a0, a1, a2, a3, a4, a5, a6, a7}; + return val; + } + +#define OPENCV_CUDA_IMPLEMENT_TYPE_VEC(type) \ + template<> struct TypeVec { typedef type vec_type; }; \ + template<> struct TypeVec { typedef type ## 1 vec_type; }; \ + template<> struct TypeVec { typedef type ## 2 vec_type; }; \ + template<> struct TypeVec { typedef type ## 2 vec_type; }; \ + template<> struct TypeVec { typedef type ## 3 vec_type; }; \ + template<> struct TypeVec { typedef type ## 3 vec_type; }; \ + template<> struct TypeVec { typedef type ## 4 vec_type; }; \ + template<> struct TypeVec { typedef type ## 4 vec_type; }; \ + template<> struct TypeVec { typedef type ## 8 vec_type; }; \ + template<> struct TypeVec { typedef type ## 8 vec_type; }; + + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(uchar) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(char) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(ushort) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(short) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(int) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(uint) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(float) + OPENCV_CUDA_IMPLEMENT_TYPE_VEC(double) + + #undef OPENCV_CUDA_IMPLEMENT_TYPE_VEC + + template<> struct TypeVec { typedef schar vec_type; }; + template<> struct TypeVec { typedef char2 vec_type; }; + template<> struct TypeVec { typedef char3 vec_type; }; + template<> struct TypeVec { typedef char4 vec_type; }; + template<> struct TypeVec { typedef char8 vec_type; }; + + template<> struct TypeVec { typedef uchar vec_type; }; + template<> struct TypeVec { typedef uchar2 vec_type; }; + template<> struct TypeVec { typedef uchar3 vec_type; }; + template<> struct TypeVec { typedef uchar4 vec_type; }; + template<> struct TypeVec { typedef uchar8 vec_type; }; + + template struct VecTraits; + +#define OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(type) \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=1}; \ + static __device__ __host__ __forceinline__ type all(type v) {return v;} \ + static __device__ __host__ __forceinline__ type make(type x) {return x;} \ + static __device__ __host__ __forceinline__ type make(const type* v) {return *v;} \ + }; \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=1}; \ + static __device__ __host__ __forceinline__ type ## 1 all(type v) {return make_ ## type ## 1(v);} \ + static __device__ __host__ __forceinline__ type ## 1 make(type x) {return make_ ## type ## 1(x);} \ + static __device__ __host__ __forceinline__ type ## 1 make(const type* v) {return make_ ## type ## 1(*v);} \ + }; \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=2}; \ + static __device__ __host__ __forceinline__ type ## 2 all(type v) {return make_ ## type ## 2(v, v);} \ + static __device__ __host__ __forceinline__ type ## 2 make(type x, type y) {return make_ ## type ## 2(x, y);} \ + static __device__ __host__ __forceinline__ type ## 2 make(const type* v) {return make_ ## type ## 2(v[0], v[1]);} \ + }; \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=3}; \ + static __device__ __host__ __forceinline__ type ## 3 all(type v) {return make_ ## type ## 3(v, v, v);} \ + static __device__ __host__ __forceinline__ type ## 3 make(type x, type y, type z) {return make_ ## type ## 3(x, y, z);} \ + static __device__ __host__ __forceinline__ type ## 3 make(const type* v) {return make_ ## type ## 3(v[0], v[1], v[2]);} \ + }; \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=4}; \ + static __device__ __host__ __forceinline__ type ## 4 all(type v) {return make_ ## type ## 4(v, v, v, v);} \ + static __device__ __host__ __forceinline__ type ## 4 make(type x, type y, type z, type w) {return make_ ## type ## 4(x, y, z, w);} \ + static __device__ __host__ __forceinline__ type ## 4 make(const type* v) {return make_ ## type ## 4(v[0], v[1], v[2], v[3]);} \ + }; \ + template<> struct VecTraits \ + { \ + typedef type elem_type; \ + enum {cn=8}; \ + static __device__ __host__ __forceinline__ type ## 8 all(type v) {return make_ ## type ## 8(v, v, v, v, v, v, v, v);} \ + static __device__ __host__ __forceinline__ type ## 8 make(type a0, type a1, type a2, type a3, type a4, type a5, type a6, type a7) {return make_ ## type ## 8(a0, a1, a2, a3, a4, a5, a6, a7);} \ + static __device__ __host__ __forceinline__ type ## 8 make(const type* v) {return make_ ## type ## 8(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);} \ + }; + + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(uchar) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(ushort) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(short) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(int) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(uint) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(float) + OPENCV_CUDA_IMPLEMENT_VEC_TRAITS(double) + + #undef OPENCV_CUDA_IMPLEMENT_VEC_TRAITS + + template<> struct VecTraits + { + typedef char elem_type; + enum {cn=1}; + static __device__ __host__ __forceinline__ char all(char v) {return v;} + static __device__ __host__ __forceinline__ char make(char x) {return x;} + static __device__ __host__ __forceinline__ char make(const char* x) {return *x;} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=1}; + static __device__ __host__ __forceinline__ schar all(schar v) {return v;} + static __device__ __host__ __forceinline__ schar make(schar x) {return x;} + static __device__ __host__ __forceinline__ schar make(const schar* x) {return *x;} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=1}; + static __device__ __host__ __forceinline__ char1 all(schar v) {return make_char1(v);} + static __device__ __host__ __forceinline__ char1 make(schar x) {return make_char1(x);} + static __device__ __host__ __forceinline__ char1 make(const schar* v) {return make_char1(v[0]);} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=2}; + static __device__ __host__ __forceinline__ char2 all(schar v) {return make_char2(v, v);} + static __device__ __host__ __forceinline__ char2 make(schar x, schar y) {return make_char2(x, y);} + static __device__ __host__ __forceinline__ char2 make(const schar* v) {return make_char2(v[0], v[1]);} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=3}; + static __device__ __host__ __forceinline__ char3 all(schar v) {return make_char3(v, v, v);} + static __device__ __host__ __forceinline__ char3 make(schar x, schar y, schar z) {return make_char3(x, y, z);} + static __device__ __host__ __forceinline__ char3 make(const schar* v) {return make_char3(v[0], v[1], v[2]);} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=4}; + static __device__ __host__ __forceinline__ char4 all(schar v) {return make_char4(v, v, v, v);} + static __device__ __host__ __forceinline__ char4 make(schar x, schar y, schar z, schar w) {return make_char4(x, y, z, w);} + static __device__ __host__ __forceinline__ char4 make(const schar* v) {return make_char4(v[0], v[1], v[2], v[3]);} + }; + template<> struct VecTraits + { + typedef schar elem_type; + enum {cn=8}; + static __device__ __host__ __forceinline__ char8 all(schar v) {return make_char8(v, v, v, v, v, v, v, v);} + static __device__ __host__ __forceinline__ char8 make(schar a0, schar a1, schar a2, schar a3, schar a4, schar a5, schar a6, schar a7) {return make_char8(a0, a1, a2, a3, a4, a5, a6, a7);} + static __device__ __host__ __forceinline__ char8 make(const schar* v) {return make_char8(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);} + }; +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif // OPENCV_CUDA_VEC_TRAITS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp.hpp new file mode 100644 index 0000000..8af7e6a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp.hpp @@ -0,0 +1,139 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_DEVICE_WARP_HPP +#define OPENCV_CUDA_DEVICE_WARP_HPP + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + struct Warp + { + enum + { + LOG_WARP_SIZE = 5, + WARP_SIZE = 1 << LOG_WARP_SIZE, + STRIDE = WARP_SIZE + }; + + /** \brief Returns the warp lane ID of the calling thread. */ + static __device__ __forceinline__ unsigned int laneId() + { + unsigned int ret; + asm("mov.u32 %0, %%laneid;" : "=r"(ret) ); + return ret; + } + + template + static __device__ __forceinline__ void fill(It beg, It end, const T& value) + { + for(It t = beg + laneId(); t < end; t += STRIDE) + *t = value; + } + + template + static __device__ __forceinline__ OutIt copy(InIt beg, InIt end, OutIt out) + { + for(InIt t = beg + laneId(); t < end; t += STRIDE, out += STRIDE) + *out = *t; + return out; + } + + template + static __device__ __forceinline__ OutIt transform(InIt beg, InIt end, OutIt out, UnOp op) + { + for(InIt t = beg + laneId(); t < end; t += STRIDE, out += STRIDE) + *out = op(*t); + return out; + } + + template + static __device__ __forceinline__ OutIt transform(InIt1 beg1, InIt1 end1, InIt2 beg2, OutIt out, BinOp op) + { + unsigned int lane = laneId(); + + InIt1 t1 = beg1 + lane; + InIt2 t2 = beg2 + lane; + for(; t1 < end1; t1 += STRIDE, t2 += STRIDE, out += STRIDE) + *out = op(*t1, *t2); + return out; + } + + template + static __device__ __forceinline__ T reduce(volatile T *ptr, BinOp op) + { + const unsigned int lane = laneId(); + + if (lane < 16) + { + T partial = ptr[lane]; + + ptr[lane] = partial = op(partial, ptr[lane + 16]); + ptr[lane] = partial = op(partial, ptr[lane + 8]); + ptr[lane] = partial = op(partial, ptr[lane + 4]); + ptr[lane] = partial = op(partial, ptr[lane + 2]); + ptr[lane] = partial = op(partial, ptr[lane + 1]); + } + + return *ptr; + } + + template + static __device__ __forceinline__ void yota(OutIt beg, OutIt end, T value) + { + unsigned int lane = laneId(); + value += lane; + + for(OutIt t = beg + lane; t < end; t += STRIDE, value += STRIDE) + *t = value; + } + }; +}}} // namespace cv { namespace cuda { namespace cudev + +//! @endcond + +#endif /* OPENCV_CUDA_DEVICE_WARP_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_reduce.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_reduce.hpp new file mode 100644 index 0000000..530303d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_reduce.hpp @@ -0,0 +1,76 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_WARP_REDUCE_HPP__ +#define OPENCV_CUDA_WARP_REDUCE_HPP__ + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ + template + __device__ __forceinline__ T warp_reduce(volatile T *ptr , const unsigned int tid = threadIdx.x) + { + const unsigned int lane = tid & 31; // index of thread in warp (0..31) + + if (lane < 16) + { + T partial = ptr[tid]; + + ptr[tid] = partial = partial + ptr[tid + 16]; + ptr[tid] = partial = partial + ptr[tid + 8]; + ptr[tid] = partial = partial + ptr[tid + 4]; + ptr[tid] = partial = partial + ptr[tid + 2]; + ptr[tid] = partial = partial + ptr[tid + 1]; + } + + return ptr[tid - lane]; + } +}}} // namespace cv { namespace cuda { namespace cudev { + +//! @endcond + +#endif /* OPENCV_CUDA_WARP_REDUCE_HPP__ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_shuffle.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_shuffle.hpp new file mode 100644 index 0000000..0da54ae --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda/warp_shuffle.hpp @@ -0,0 +1,162 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CUDA_WARP_SHUFFLE_HPP +#define OPENCV_CUDA_WARP_SHUFFLE_HPP + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +namespace cv { namespace cuda { namespace device +{ +#if __CUDACC_VER_MAJOR__ >= 9 +# define __shfl(x, y, z) __shfl_sync(0xFFFFFFFFU, x, y, z) +# define __shfl_up(x, y, z) __shfl_up_sync(0xFFFFFFFFU, x, y, z) +# define __shfl_down(x, y, z) __shfl_down_sync(0xFFFFFFFFU, x, y, z) +#endif + template + __device__ __forceinline__ T shfl(T val, int srcLane, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return __shfl(val, srcLane, width); + #else + return T(); + #endif + } + __device__ __forceinline__ unsigned int shfl(unsigned int val, int srcLane, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return (unsigned int) __shfl((int) val, srcLane, width); + #else + return 0; + #endif + } + __device__ __forceinline__ double shfl(double val, int srcLane, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + int lo = __double2loint(val); + int hi = __double2hiint(val); + + lo = __shfl(lo, srcLane, width); + hi = __shfl(hi, srcLane, width); + + return __hiloint2double(hi, lo); + #else + return 0.0; + #endif + } + + template + __device__ __forceinline__ T shfl_down(T val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return __shfl_down(val, delta, width); + #else + return T(); + #endif + } + __device__ __forceinline__ unsigned int shfl_down(unsigned int val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return (unsigned int) __shfl_down((int) val, delta, width); + #else + return 0; + #endif + } + __device__ __forceinline__ double shfl_down(double val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + int lo = __double2loint(val); + int hi = __double2hiint(val); + + lo = __shfl_down(lo, delta, width); + hi = __shfl_down(hi, delta, width); + + return __hiloint2double(hi, lo); + #else + return 0.0; + #endif + } + + template + __device__ __forceinline__ T shfl_up(T val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return __shfl_up(val, delta, width); + #else + return T(); + #endif + } + __device__ __forceinline__ unsigned int shfl_up(unsigned int val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + return (unsigned int) __shfl_up((int) val, delta, width); + #else + return 0; + #endif + } + __device__ __forceinline__ double shfl_up(double val, unsigned int delta, int width = warpSize) + { + #if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 + int lo = __double2loint(val); + int hi = __double2hiint(val); + + lo = __shfl_up(lo, delta, width); + hi = __shfl_up(hi, delta, width); + + return __hiloint2double(hi, lo); + #else + return 0.0; + #endif + } +}}} + +# undef __shfl +# undef __shfl_up +# undef __shfl_down + +//! @endcond + +#endif // OPENCV_CUDA_WARP_SHUFFLE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda_stream_accessor.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda_stream_accessor.hpp new file mode 100644 index 0000000..deaf356 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda_stream_accessor.hpp @@ -0,0 +1,86 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CUDA_STREAM_ACCESSOR_HPP +#define OPENCV_CORE_CUDA_STREAM_ACCESSOR_HPP + +#ifndef __cplusplus +# error cuda_stream_accessor.hpp header must be compiled as C++ +#endif + +/** @file cuda_stream_accessor.hpp + * This is only header file that depends on CUDA Runtime API. All other headers are independent. + */ + +#include +#include "opencv2/core/cuda.hpp" + +namespace cv +{ + namespace cuda + { + +//! @addtogroup cudacore_struct +//! @{ + + /** @brief Class that enables getting cudaStream_t from cuda::Stream + */ + struct StreamAccessor + { + CV_EXPORTS static cudaStream_t getStream(const Stream& stream); + CV_EXPORTS static Stream wrapStream(cudaStream_t stream); + }; + + /** @brief Class that enables getting cudaEvent_t from cuda::Event + */ + struct EventAccessor + { + CV_EXPORTS static cudaEvent_t getEvent(const Event& event); + CV_EXPORTS static Event wrapEvent(cudaEvent_t event); + }; + +//! @} + + } +} + +#endif /* OPENCV_CORE_CUDA_STREAM_ACCESSOR_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cuda_types.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cuda_types.hpp new file mode 100644 index 0000000..45dc2ca --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cuda_types.hpp @@ -0,0 +1,144 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CUDA_TYPES_HPP +#define OPENCV_CORE_CUDA_TYPES_HPP + +#ifndef __cplusplus +# error cuda_types.hpp header must be compiled as C++ +#endif + +#if defined(__OPENCV_BUILD) && defined(__clang__) +#pragma clang diagnostic ignored "-Winconsistent-missing-override" +#endif +#if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5 +#pragma GCC diagnostic ignored "-Wsuggest-override" +#endif + +/** @file + * @deprecated Use @ref cudev instead. + */ + +//! @cond IGNORED + +#ifdef __CUDACC__ + #define __CV_CUDA_HOST_DEVICE__ __host__ __device__ __forceinline__ +#else + #define __CV_CUDA_HOST_DEVICE__ +#endif + +namespace cv +{ + namespace cuda + { + + // Simple lightweight structures that encapsulates information about an image on device. + // It is intended to pass to nvcc-compiled code. GpuMat depends on headers that nvcc can't compile + + template struct DevPtr + { + typedef T elem_type; + typedef int index_type; + + enum { elem_size = sizeof(elem_type) }; + + T* data; + + __CV_CUDA_HOST_DEVICE__ DevPtr() : data(0) {} + __CV_CUDA_HOST_DEVICE__ DevPtr(T* data_) : data(data_) {} + + __CV_CUDA_HOST_DEVICE__ size_t elemSize() const { return elem_size; } + __CV_CUDA_HOST_DEVICE__ operator T*() { return data; } + __CV_CUDA_HOST_DEVICE__ operator const T*() const { return data; } + }; + + template struct PtrSz : public DevPtr + { + __CV_CUDA_HOST_DEVICE__ PtrSz() : size(0) {} + __CV_CUDA_HOST_DEVICE__ PtrSz(T* data_, size_t size_) : DevPtr(data_), size(size_) {} + + size_t size; + }; + + template struct PtrStep : public DevPtr + { + __CV_CUDA_HOST_DEVICE__ PtrStep() : step(0) {} + __CV_CUDA_HOST_DEVICE__ PtrStep(T* data_, size_t step_) : DevPtr(data_), step(step_) {} + + size_t step; + + __CV_CUDA_HOST_DEVICE__ T* ptr(int y = 0) { return ( T*)( ( char*)DevPtr::data + y * step); } + __CV_CUDA_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)DevPtr::data + y * step); } + + __CV_CUDA_HOST_DEVICE__ T& operator ()(int y, int x) { return ptr(y)[x]; } + __CV_CUDA_HOST_DEVICE__ const T& operator ()(int y, int x) const { return ptr(y)[x]; } + }; + + template struct PtrStepSz : public PtrStep + { + __CV_CUDA_HOST_DEVICE__ PtrStepSz() : cols(0), rows(0) {} + __CV_CUDA_HOST_DEVICE__ PtrStepSz(int rows_, int cols_, T* data_, size_t step_) + : PtrStep(data_, step_), cols(cols_), rows(rows_) {} + + template + explicit PtrStepSz(const PtrStepSz& d) : PtrStep((T*)d.data, d.step), cols(d.cols), rows(d.rows){} + + int cols; + int rows; + }; + + typedef PtrStepSz PtrStepSzb; + typedef PtrStepSz PtrStepSzus; + typedef PtrStepSz PtrStepSzf; + typedef PtrStepSz PtrStepSzi; + + typedef PtrStep PtrStepb; + typedef PtrStep PtrStepus; + typedef PtrStep PtrStepf; + typedef PtrStep PtrStepi; + + } +} + +//! @endcond + +#endif /* OPENCV_CORE_CUDA_TYPES_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_dispatch.h b/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_dispatch.h new file mode 100644 index 0000000..7f6d6b0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_dispatch.h @@ -0,0 +1,252 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#if defined __OPENCV_BUILD \ + +#include "cv_cpu_config.h" +#include "cv_cpu_helper.h" + +#ifdef CV_CPU_DISPATCH_MODE +#define CV_CPU_OPTIMIZATION_NAMESPACE __CV_CAT(opt_, CV_CPU_DISPATCH_MODE) +#define CV_CPU_OPTIMIZATION_NAMESPACE_BEGIN namespace __CV_CAT(opt_, CV_CPU_DISPATCH_MODE) { +#define CV_CPU_OPTIMIZATION_NAMESPACE_END } +#else +#define CV_CPU_OPTIMIZATION_NAMESPACE cpu_baseline +#define CV_CPU_OPTIMIZATION_NAMESPACE_BEGIN namespace cpu_baseline { +#define CV_CPU_OPTIMIZATION_NAMESPACE_END } +#define CV_CPU_BASELINE_MODE 1 +#endif + + +#define __CV_CPU_DISPATCH_CHAIN_END(fn, args, mode, ...) /* done */ +#define __CV_CPU_DISPATCH(fn, args, mode, ...) __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) +#define __CV_CPU_DISPATCH_EXPAND(fn, args, ...) __CV_EXPAND(__CV_CPU_DISPATCH(fn, args, __VA_ARGS__)) +#define CV_CPU_DISPATCH(fn, args, ...) __CV_CPU_DISPATCH_EXPAND(fn, args, __VA_ARGS__, END) // expand macros + + +#if defined CV_ENABLE_INTRINSICS \ + && !defined CV_DISABLE_OPTIMIZATION \ + && !defined __CUDACC__ /* do not include SSE/AVX/NEON headers for NVCC compiler */ \ + +#ifdef CV_CPU_COMPILE_SSE2 +# include +# define CV_MMX 1 +# define CV_SSE 1 +# define CV_SSE2 1 +#endif +#ifdef CV_CPU_COMPILE_SSE3 +# include +# define CV_SSE3 1 +#endif +#ifdef CV_CPU_COMPILE_SSSE3 +# include +# define CV_SSSE3 1 +#endif +#ifdef CV_CPU_COMPILE_SSE4_1 +# include +# define CV_SSE4_1 1 +#endif +#ifdef CV_CPU_COMPILE_SSE4_2 +# include +# define CV_SSE4_2 1 +#endif +#ifdef CV_CPU_COMPILE_POPCNT +# ifdef _MSC_VER +# include +# if defined(_M_X64) +# define CV_POPCNT_U64 _mm_popcnt_u64 +# endif +# define CV_POPCNT_U32 _mm_popcnt_u32 +# else +# include +# if defined(__x86_64__) +# define CV_POPCNT_U64 __builtin_popcountll +# endif +# define CV_POPCNT_U32 __builtin_popcount +# endif +# define CV_POPCNT 1 +#endif +#ifdef CV_CPU_COMPILE_AVX +# include +# define CV_AVX 1 +#endif +#ifdef CV_CPU_COMPILE_FP16 +# if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) +# include +# else +# include +# endif +# define CV_FP16 1 +#endif +#ifdef CV_CPU_COMPILE_AVX2 +# include +# define CV_AVX2 1 +#endif +#ifdef CV_CPU_COMPILE_AVX_512F +# include +# define CV_AVX_512F 1 +#endif +#ifdef CV_CPU_COMPILE_AVX512_SKX +# include +# define CV_AVX512_SKX 1 +#endif +#ifdef CV_CPU_COMPILE_FMA3 +# define CV_FMA3 1 +#endif + +#if defined _WIN32 && defined(_M_ARM) +# include +# include +# define CV_NEON 1 +#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__)) +# include +# define CV_NEON 1 +#endif + +#if defined(__ARM_NEON__) || defined(__aarch64__) +# include +#endif + +#ifdef CV_CPU_COMPILE_VSX +# include +# undef vector +# undef pixel +# undef bool +# define CV_VSX 1 +#endif + +#ifdef CV_CPU_COMPILE_VSX3 +# define CV_VSX3 1 +#endif + +#endif // CV_ENABLE_INTRINSICS && !CV_DISABLE_OPTIMIZATION && !__CUDACC__ + +#if defined CV_CPU_COMPILE_AVX && !defined CV_CPU_BASELINE_COMPILE_AVX +struct VZeroUpperGuard { +#ifdef __GNUC__ + __attribute__((always_inline)) +#endif + inline VZeroUpperGuard() { _mm256_zeroupper(); } +#ifdef __GNUC__ + __attribute__((always_inline)) +#endif + inline ~VZeroUpperGuard() { _mm256_zeroupper(); } +}; +#define __CV_AVX_GUARD VZeroUpperGuard __vzeroupper_guard; CV_UNUSED(__vzeroupper_guard); +#endif + +#ifdef __CV_AVX_GUARD +#define CV_AVX_GUARD __CV_AVX_GUARD +#else +#define CV_AVX_GUARD +#endif + +#endif // __OPENCV_BUILD + + + +#if !defined __OPENCV_BUILD /* Compatibility code */ \ + && !defined __CUDACC__ /* do not include SSE/AVX/NEON headers for NVCC compiler */ +#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2) +# include +# define CV_MMX 1 +# define CV_SSE 1 +# define CV_SSE2 1 +#elif defined _WIN32 && defined(_M_ARM) +# include +# include +# define CV_NEON 1 +#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__)) +# include +# define CV_NEON 1 +#elif defined(__VSX__) && defined(__PPC64__) && defined(__LITTLE_ENDIAN__) +# include +# undef vector +# undef pixel +# undef bool +# define CV_VSX 1 +#endif + +#endif // !__OPENCV_BUILD && !__CUDACC (Compatibility code) + + + +#ifndef CV_MMX +# define CV_MMX 0 +#endif +#ifndef CV_SSE +# define CV_SSE 0 +#endif +#ifndef CV_SSE2 +# define CV_SSE2 0 +#endif +#ifndef CV_SSE3 +# define CV_SSE3 0 +#endif +#ifndef CV_SSSE3 +# define CV_SSSE3 0 +#endif +#ifndef CV_SSE4_1 +# define CV_SSE4_1 0 +#endif +#ifndef CV_SSE4_2 +# define CV_SSE4_2 0 +#endif +#ifndef CV_POPCNT +# define CV_POPCNT 0 +#endif +#ifndef CV_AVX +# define CV_AVX 0 +#endif +#ifndef CV_FP16 +# define CV_FP16 0 +#endif +#ifndef CV_AVX2 +# define CV_AVX2 0 +#endif +#ifndef CV_FMA3 +# define CV_FMA3 0 +#endif +#ifndef CV_AVX_512F +# define CV_AVX_512F 0 +#endif +#ifndef CV_AVX_512BW +# define CV_AVX_512BW 0 +#endif +#ifndef CV_AVX_512CD +# define CV_AVX_512CD 0 +#endif +#ifndef CV_AVX_512DQ +# define CV_AVX_512DQ 0 +#endif +#ifndef CV_AVX_512ER +# define CV_AVX_512ER 0 +#endif +#ifndef CV_AVX_512IFMA512 +# define CV_AVX_512IFMA512 0 +#endif +#ifndef CV_AVX_512PF +# define CV_AVX_512PF 0 +#endif +#ifndef CV_AVX_512VBMI +# define CV_AVX_512VBMI 0 +#endif +#ifndef CV_AVX_512VL +# define CV_AVX_512VL 0 +#endif +#ifndef CV_AVX512_SKX +# define CV_AVX512_SKX 0 +#endif + +#ifndef CV_NEON +# define CV_NEON 0 +#endif + +#ifndef CV_VSX +# define CV_VSX 0 +#endif + +#ifndef CV_VSX3 +# define CV_VSX3 0 +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_helper.h b/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_helper.h new file mode 100644 index 0000000..ad13397 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cv_cpu_helper.h @@ -0,0 +1,340 @@ +// AUTOGENERATED, DO NOT EDIT + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE +# define CV_TRY_SSE 1 +# define CV_CPU_FORCE_SSE 1 +# define CV_CPU_HAS_SUPPORT_SSE 1 +# define CV_CPU_CALL_SSE(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSE_(fn, args) return (opt_SSE::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE +# define CV_TRY_SSE 1 +# define CV_CPU_FORCE_SSE 0 +# define CV_CPU_HAS_SUPPORT_SSE (cv::checkHardwareSupport(CV_CPU_SSE)) +# define CV_CPU_CALL_SSE(fn, args) if (CV_CPU_HAS_SUPPORT_SSE) return (opt_SSE::fn args) +# define CV_CPU_CALL_SSE_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE) return (opt_SSE::fn args) +#else +# define CV_TRY_SSE 0 +# define CV_CPU_FORCE_SSE 0 +# define CV_CPU_HAS_SUPPORT_SSE 0 +# define CV_CPU_CALL_SSE(fn, args) +# define CV_CPU_CALL_SSE_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSE(fn, args, mode, ...) CV_CPU_CALL_SSE(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE2 +# define CV_TRY_SSE2 1 +# define CV_CPU_FORCE_SSE2 1 +# define CV_CPU_HAS_SUPPORT_SSE2 1 +# define CV_CPU_CALL_SSE2(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSE2_(fn, args) return (opt_SSE2::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE2 +# define CV_TRY_SSE2 1 +# define CV_CPU_FORCE_SSE2 0 +# define CV_CPU_HAS_SUPPORT_SSE2 (cv::checkHardwareSupport(CV_CPU_SSE2)) +# define CV_CPU_CALL_SSE2(fn, args) if (CV_CPU_HAS_SUPPORT_SSE2) return (opt_SSE2::fn args) +# define CV_CPU_CALL_SSE2_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE2) return (opt_SSE2::fn args) +#else +# define CV_TRY_SSE2 0 +# define CV_CPU_FORCE_SSE2 0 +# define CV_CPU_HAS_SUPPORT_SSE2 0 +# define CV_CPU_CALL_SSE2(fn, args) +# define CV_CPU_CALL_SSE2_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSE2(fn, args, mode, ...) CV_CPU_CALL_SSE2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE3 +# define CV_TRY_SSE3 1 +# define CV_CPU_FORCE_SSE3 1 +# define CV_CPU_HAS_SUPPORT_SSE3 1 +# define CV_CPU_CALL_SSE3(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSE3_(fn, args) return (opt_SSE3::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE3 +# define CV_TRY_SSE3 1 +# define CV_CPU_FORCE_SSE3 0 +# define CV_CPU_HAS_SUPPORT_SSE3 (cv::checkHardwareSupport(CV_CPU_SSE3)) +# define CV_CPU_CALL_SSE3(fn, args) if (CV_CPU_HAS_SUPPORT_SSE3) return (opt_SSE3::fn args) +# define CV_CPU_CALL_SSE3_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE3) return (opt_SSE3::fn args) +#else +# define CV_TRY_SSE3 0 +# define CV_CPU_FORCE_SSE3 0 +# define CV_CPU_HAS_SUPPORT_SSE3 0 +# define CV_CPU_CALL_SSE3(fn, args) +# define CV_CPU_CALL_SSE3_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSE3(fn, args, mode, ...) CV_CPU_CALL_SSE3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSSE3 +# define CV_TRY_SSSE3 1 +# define CV_CPU_FORCE_SSSE3 1 +# define CV_CPU_HAS_SUPPORT_SSSE3 1 +# define CV_CPU_CALL_SSSE3(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSSE3_(fn, args) return (opt_SSSE3::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSSE3 +# define CV_TRY_SSSE3 1 +# define CV_CPU_FORCE_SSSE3 0 +# define CV_CPU_HAS_SUPPORT_SSSE3 (cv::checkHardwareSupport(CV_CPU_SSSE3)) +# define CV_CPU_CALL_SSSE3(fn, args) if (CV_CPU_HAS_SUPPORT_SSSE3) return (opt_SSSE3::fn args) +# define CV_CPU_CALL_SSSE3_(fn, args) if (CV_CPU_HAS_SUPPORT_SSSE3) return (opt_SSSE3::fn args) +#else +# define CV_TRY_SSSE3 0 +# define CV_CPU_FORCE_SSSE3 0 +# define CV_CPU_HAS_SUPPORT_SSSE3 0 +# define CV_CPU_CALL_SSSE3(fn, args) +# define CV_CPU_CALL_SSSE3_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSSE3(fn, args, mode, ...) CV_CPU_CALL_SSSE3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_1 +# define CV_TRY_SSE4_1 1 +# define CV_CPU_FORCE_SSE4_1 1 +# define CV_CPU_HAS_SUPPORT_SSE4_1 1 +# define CV_CPU_CALL_SSE4_1(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSE4_1_(fn, args) return (opt_SSE4_1::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_1 +# define CV_TRY_SSE4_1 1 +# define CV_CPU_FORCE_SSE4_1 0 +# define CV_CPU_HAS_SUPPORT_SSE4_1 (cv::checkHardwareSupport(CV_CPU_SSE4_1)) +# define CV_CPU_CALL_SSE4_1(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_1) return (opt_SSE4_1::fn args) +# define CV_CPU_CALL_SSE4_1_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_1) return (opt_SSE4_1::fn args) +#else +# define CV_TRY_SSE4_1 0 +# define CV_CPU_FORCE_SSE4_1 0 +# define CV_CPU_HAS_SUPPORT_SSE4_1 0 +# define CV_CPU_CALL_SSE4_1(fn, args) +# define CV_CPU_CALL_SSE4_1_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSE4_1(fn, args, mode, ...) CV_CPU_CALL_SSE4_1(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_2 +# define CV_TRY_SSE4_2 1 +# define CV_CPU_FORCE_SSE4_2 1 +# define CV_CPU_HAS_SUPPORT_SSE4_2 1 +# define CV_CPU_CALL_SSE4_2(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_SSE4_2_(fn, args) return (opt_SSE4_2::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_2 +# define CV_TRY_SSE4_2 1 +# define CV_CPU_FORCE_SSE4_2 0 +# define CV_CPU_HAS_SUPPORT_SSE4_2 (cv::checkHardwareSupport(CV_CPU_SSE4_2)) +# define CV_CPU_CALL_SSE4_2(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_2) return (opt_SSE4_2::fn args) +# define CV_CPU_CALL_SSE4_2_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_2) return (opt_SSE4_2::fn args) +#else +# define CV_TRY_SSE4_2 0 +# define CV_CPU_FORCE_SSE4_2 0 +# define CV_CPU_HAS_SUPPORT_SSE4_2 0 +# define CV_CPU_CALL_SSE4_2(fn, args) +# define CV_CPU_CALL_SSE4_2_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_SSE4_2(fn, args, mode, ...) CV_CPU_CALL_SSE4_2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_POPCNT +# define CV_TRY_POPCNT 1 +# define CV_CPU_FORCE_POPCNT 1 +# define CV_CPU_HAS_SUPPORT_POPCNT 1 +# define CV_CPU_CALL_POPCNT(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_POPCNT_(fn, args) return (opt_POPCNT::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_POPCNT +# define CV_TRY_POPCNT 1 +# define CV_CPU_FORCE_POPCNT 0 +# define CV_CPU_HAS_SUPPORT_POPCNT (cv::checkHardwareSupport(CV_CPU_POPCNT)) +# define CV_CPU_CALL_POPCNT(fn, args) if (CV_CPU_HAS_SUPPORT_POPCNT) return (opt_POPCNT::fn args) +# define CV_CPU_CALL_POPCNT_(fn, args) if (CV_CPU_HAS_SUPPORT_POPCNT) return (opt_POPCNT::fn args) +#else +# define CV_TRY_POPCNT 0 +# define CV_CPU_FORCE_POPCNT 0 +# define CV_CPU_HAS_SUPPORT_POPCNT 0 +# define CV_CPU_CALL_POPCNT(fn, args) +# define CV_CPU_CALL_POPCNT_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_POPCNT(fn, args, mode, ...) CV_CPU_CALL_POPCNT(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX +# define CV_TRY_AVX 1 +# define CV_CPU_FORCE_AVX 1 +# define CV_CPU_HAS_SUPPORT_AVX 1 +# define CV_CPU_CALL_AVX(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_AVX_(fn, args) return (opt_AVX::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX +# define CV_TRY_AVX 1 +# define CV_CPU_FORCE_AVX 0 +# define CV_CPU_HAS_SUPPORT_AVX (cv::checkHardwareSupport(CV_CPU_AVX)) +# define CV_CPU_CALL_AVX(fn, args) if (CV_CPU_HAS_SUPPORT_AVX) return (opt_AVX::fn args) +# define CV_CPU_CALL_AVX_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX) return (opt_AVX::fn args) +#else +# define CV_TRY_AVX 0 +# define CV_CPU_FORCE_AVX 0 +# define CV_CPU_HAS_SUPPORT_AVX 0 +# define CV_CPU_CALL_AVX(fn, args) +# define CV_CPU_CALL_AVX_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_AVX(fn, args, mode, ...) CV_CPU_CALL_AVX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FP16 +# define CV_TRY_FP16 1 +# define CV_CPU_FORCE_FP16 1 +# define CV_CPU_HAS_SUPPORT_FP16 1 +# define CV_CPU_CALL_FP16(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_FP16_(fn, args) return (opt_FP16::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FP16 +# define CV_TRY_FP16 1 +# define CV_CPU_FORCE_FP16 0 +# define CV_CPU_HAS_SUPPORT_FP16 (cv::checkHardwareSupport(CV_CPU_FP16)) +# define CV_CPU_CALL_FP16(fn, args) if (CV_CPU_HAS_SUPPORT_FP16) return (opt_FP16::fn args) +# define CV_CPU_CALL_FP16_(fn, args) if (CV_CPU_HAS_SUPPORT_FP16) return (opt_FP16::fn args) +#else +# define CV_TRY_FP16 0 +# define CV_CPU_FORCE_FP16 0 +# define CV_CPU_HAS_SUPPORT_FP16 0 +# define CV_CPU_CALL_FP16(fn, args) +# define CV_CPU_CALL_FP16_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_FP16(fn, args, mode, ...) CV_CPU_CALL_FP16(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX2 +# define CV_TRY_AVX2 1 +# define CV_CPU_FORCE_AVX2 1 +# define CV_CPU_HAS_SUPPORT_AVX2 1 +# define CV_CPU_CALL_AVX2(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_AVX2_(fn, args) return (opt_AVX2::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX2 +# define CV_TRY_AVX2 1 +# define CV_CPU_FORCE_AVX2 0 +# define CV_CPU_HAS_SUPPORT_AVX2 (cv::checkHardwareSupport(CV_CPU_AVX2)) +# define CV_CPU_CALL_AVX2(fn, args) if (CV_CPU_HAS_SUPPORT_AVX2) return (opt_AVX2::fn args) +# define CV_CPU_CALL_AVX2_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX2) return (opt_AVX2::fn args) +#else +# define CV_TRY_AVX2 0 +# define CV_CPU_FORCE_AVX2 0 +# define CV_CPU_HAS_SUPPORT_AVX2 0 +# define CV_CPU_CALL_AVX2(fn, args) +# define CV_CPU_CALL_AVX2_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_AVX2(fn, args, mode, ...) CV_CPU_CALL_AVX2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FMA3 +# define CV_TRY_FMA3 1 +# define CV_CPU_FORCE_FMA3 1 +# define CV_CPU_HAS_SUPPORT_FMA3 1 +# define CV_CPU_CALL_FMA3(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_FMA3_(fn, args) return (opt_FMA3::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FMA3 +# define CV_TRY_FMA3 1 +# define CV_CPU_FORCE_FMA3 0 +# define CV_CPU_HAS_SUPPORT_FMA3 (cv::checkHardwareSupport(CV_CPU_FMA3)) +# define CV_CPU_CALL_FMA3(fn, args) if (CV_CPU_HAS_SUPPORT_FMA3) return (opt_FMA3::fn args) +# define CV_CPU_CALL_FMA3_(fn, args) if (CV_CPU_HAS_SUPPORT_FMA3) return (opt_FMA3::fn args) +#else +# define CV_TRY_FMA3 0 +# define CV_CPU_FORCE_FMA3 0 +# define CV_CPU_HAS_SUPPORT_FMA3 0 +# define CV_CPU_CALL_FMA3(fn, args) +# define CV_CPU_CALL_FMA3_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_FMA3(fn, args, mode, ...) CV_CPU_CALL_FMA3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX_512F +# define CV_TRY_AVX_512F 1 +# define CV_CPU_FORCE_AVX_512F 1 +# define CV_CPU_HAS_SUPPORT_AVX_512F 1 +# define CV_CPU_CALL_AVX_512F(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_AVX_512F_(fn, args) return (opt_AVX_512F::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX_512F +# define CV_TRY_AVX_512F 1 +# define CV_CPU_FORCE_AVX_512F 0 +# define CV_CPU_HAS_SUPPORT_AVX_512F (cv::checkHardwareSupport(CV_CPU_AVX_512F)) +# define CV_CPU_CALL_AVX_512F(fn, args) if (CV_CPU_HAS_SUPPORT_AVX_512F) return (opt_AVX_512F::fn args) +# define CV_CPU_CALL_AVX_512F_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX_512F) return (opt_AVX_512F::fn args) +#else +# define CV_TRY_AVX_512F 0 +# define CV_CPU_FORCE_AVX_512F 0 +# define CV_CPU_HAS_SUPPORT_AVX_512F 0 +# define CV_CPU_CALL_AVX_512F(fn, args) +# define CV_CPU_CALL_AVX_512F_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_AVX_512F(fn, args, mode, ...) CV_CPU_CALL_AVX_512F(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_SKX +# define CV_TRY_AVX512_SKX 1 +# define CV_CPU_FORCE_AVX512_SKX 1 +# define CV_CPU_HAS_SUPPORT_AVX512_SKX 1 +# define CV_CPU_CALL_AVX512_SKX(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_AVX512_SKX_(fn, args) return (opt_AVX512_SKX::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_SKX +# define CV_TRY_AVX512_SKX 1 +# define CV_CPU_FORCE_AVX512_SKX 0 +# define CV_CPU_HAS_SUPPORT_AVX512_SKX (cv::checkHardwareSupport(CV_CPU_AVX512_SKX)) +# define CV_CPU_CALL_AVX512_SKX(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_SKX) return (opt_AVX512_SKX::fn args) +# define CV_CPU_CALL_AVX512_SKX_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_SKX) return (opt_AVX512_SKX::fn args) +#else +# define CV_TRY_AVX512_SKX 0 +# define CV_CPU_FORCE_AVX512_SKX 0 +# define CV_CPU_HAS_SUPPORT_AVX512_SKX 0 +# define CV_CPU_CALL_AVX512_SKX(fn, args) +# define CV_CPU_CALL_AVX512_SKX_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_AVX512_SKX(fn, args, mode, ...) CV_CPU_CALL_AVX512_SKX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_NEON +# define CV_TRY_NEON 1 +# define CV_CPU_FORCE_NEON 1 +# define CV_CPU_HAS_SUPPORT_NEON 1 +# define CV_CPU_CALL_NEON(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_NEON_(fn, args) return (opt_NEON::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON +# define CV_TRY_NEON 1 +# define CV_CPU_FORCE_NEON 0 +# define CV_CPU_HAS_SUPPORT_NEON (cv::checkHardwareSupport(CV_CPU_NEON)) +# define CV_CPU_CALL_NEON(fn, args) if (CV_CPU_HAS_SUPPORT_NEON) return (opt_NEON::fn args) +# define CV_CPU_CALL_NEON_(fn, args) if (CV_CPU_HAS_SUPPORT_NEON) return (opt_NEON::fn args) +#else +# define CV_TRY_NEON 0 +# define CV_CPU_FORCE_NEON 0 +# define CV_CPU_HAS_SUPPORT_NEON 0 +# define CV_CPU_CALL_NEON(fn, args) +# define CV_CPU_CALL_NEON_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_NEON(fn, args, mode, ...) CV_CPU_CALL_NEON(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX +# define CV_TRY_VSX 1 +# define CV_CPU_FORCE_VSX 1 +# define CV_CPU_HAS_SUPPORT_VSX 1 +# define CV_CPU_CALL_VSX(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_VSX_(fn, args) return (opt_VSX::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX +# define CV_TRY_VSX 1 +# define CV_CPU_FORCE_VSX 0 +# define CV_CPU_HAS_SUPPORT_VSX (cv::checkHardwareSupport(CV_CPU_VSX)) +# define CV_CPU_CALL_VSX(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args) +# define CV_CPU_CALL_VSX_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args) +#else +# define CV_TRY_VSX 0 +# define CV_CPU_FORCE_VSX 0 +# define CV_CPU_HAS_SUPPORT_VSX 0 +# define CV_CPU_CALL_VSX(fn, args) +# define CV_CPU_CALL_VSX_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_VSX(fn, args, mode, ...) CV_CPU_CALL_VSX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX3 +# define CV_TRY_VSX3 1 +# define CV_CPU_FORCE_VSX3 1 +# define CV_CPU_HAS_SUPPORT_VSX3 1 +# define CV_CPU_CALL_VSX3(fn, args) return (cpu_baseline::fn args) +# define CV_CPU_CALL_VSX3_(fn, args) return (opt_VSX3::fn args) +#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX3 +# define CV_TRY_VSX3 1 +# define CV_CPU_FORCE_VSX3 0 +# define CV_CPU_HAS_SUPPORT_VSX3 (cv::checkHardwareSupport(CV_CPU_VSX3)) +# define CV_CPU_CALL_VSX3(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args) +# define CV_CPU_CALL_VSX3_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args) +#else +# define CV_TRY_VSX3 0 +# define CV_CPU_FORCE_VSX3 0 +# define CV_CPU_HAS_SUPPORT_VSX3 0 +# define CV_CPU_CALL_VSX3(fn, args) +# define CV_CPU_CALL_VSX3_(fn, args) +#endif +#define __CV_CPU_DISPATCH_CHAIN_VSX3(fn, args, mode, ...) CV_CPU_CALL_VSX3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) + +#define CV_CPU_CALL_BASELINE(fn, args) return (cpu_baseline::fn args) +#define __CV_CPU_DISPATCH_CHAIN_BASELINE(fn, args, mode, ...) CV_CPU_CALL_BASELINE(fn, args) /* last in sequence */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cvdef.h b/LaiPuLaser/OpenCV/include/opencv2/core/cvdef.h new file mode 100644 index 0000000..caa4a9e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cvdef.h @@ -0,0 +1,857 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CVDEF_H +#define OPENCV_CORE_CVDEF_H + +//! @addtogroup core_utils +//! @{ + +#if !defined CV_DOXYGEN && !defined CV_IGNORE_DEBUG_BUILD_GUARD +#if (defined(_MSC_VER) && (defined(DEBUG) || defined(_DEBUG))) || \ + (defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_DEBUG_PEDANTIC)) +// Guard to prevent using of binary incompatible binaries / runtimes +// https://github.com/opencv/opencv/pull/9161 +#define CV__DEBUG_NS_BEGIN namespace debug_build_guard { +#define CV__DEBUG_NS_END } +namespace cv { namespace debug_build_guard { } using namespace debug_build_guard; } +#endif +#endif + +#ifndef CV__DEBUG_NS_BEGIN +#define CV__DEBUG_NS_BEGIN +#define CV__DEBUG_NS_END +#endif + + +#ifdef __OPENCV_BUILD +#include "cvconfig.h" +#endif + +#ifndef __CV_EXPAND +#define __CV_EXPAND(x) x +#endif + +#ifndef __CV_CAT +#define __CV_CAT__(x, y) x ## y +#define __CV_CAT_(x, y) __CV_CAT__(x, y) +#define __CV_CAT(x, y) __CV_CAT_(x, y) +#endif + +#define __CV_VA_NUM_ARGS_HELPER(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N +#define __CV_VA_NUM_ARGS(...) __CV_EXPAND(__CV_VA_NUM_ARGS_HELPER(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)) + +#if defined __GNUC__ +#define CV_Func __func__ +#elif defined _MSC_VER +#define CV_Func __FUNCTION__ +#else +#define CV_Func "" +#endif + +//! @cond IGNORED + +//////////////// static assert ///////////////// +#define CVAUX_CONCAT_EXP(a, b) a##b +#define CVAUX_CONCAT(a, b) CVAUX_CONCAT_EXP(a,b) + +#if defined(__clang__) +# ifndef __has_extension +# define __has_extension __has_feature /* compatibility, for older versions of clang */ +# endif +# if __has_extension(cxx_static_assert) +# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) +# elif __has_extension(c_static_assert) +# define CV_StaticAssert(condition, reason) _Static_assert((condition), reason " " #condition) +# endif +#elif defined(__GNUC__) +# if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) +# endif +#elif defined(_MSC_VER) +# if _MSC_VER >= 1600 /* MSVC 10 */ +# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) +# endif +#endif +#ifndef CV_StaticAssert +# if !defined(__clang__) && defined(__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__ > 302) +# define CV_StaticAssert(condition, reason) ({ extern int __attribute__((error("CV_StaticAssert: " reason " " #condition))) CV_StaticAssert(); ((condition) ? 0 : CV_StaticAssert()); }) +# else + template struct CV_StaticAssert_failed; + template <> struct CV_StaticAssert_failed { enum { val = 1 }; }; + template struct CV_StaticAssert_test {}; +# define CV_StaticAssert(condition, reason)\ + typedef cv::CV_StaticAssert_test< sizeof(cv::CV_StaticAssert_failed< static_cast(condition) >) > CVAUX_CONCAT(CV_StaticAssert_failed_at_, __LINE__) +# endif +#endif + +// Suppress warning "-Wdeprecated-declarations" / C4996 +#if defined(_MSC_VER) + #define CV_DO_PRAGMA(x) __pragma(x) +#elif defined(__GNUC__) + #define CV_DO_PRAGMA(x) _Pragma (#x) +#else + #define CV_DO_PRAGMA(x) +#endif + +#ifdef _MSC_VER +#define CV_SUPPRESS_DEPRECATED_START \ + CV_DO_PRAGMA(warning(push)) \ + CV_DO_PRAGMA(warning(disable: 4996)) +#define CV_SUPPRESS_DEPRECATED_END CV_DO_PRAGMA(warning(pop)) +#elif defined (__clang__) || ((__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__ > 405)) +#define CV_SUPPRESS_DEPRECATED_START \ + CV_DO_PRAGMA(GCC diagnostic push) \ + CV_DO_PRAGMA(GCC diagnostic ignored "-Wdeprecated-declarations") +#define CV_SUPPRESS_DEPRECATED_END CV_DO_PRAGMA(GCC diagnostic pop) +#else +#define CV_SUPPRESS_DEPRECATED_START +#define CV_SUPPRESS_DEPRECATED_END +#endif + +#define CV_UNUSED(name) (void)name + +//! @endcond + +// undef problematic defines sometimes defined by system headers (windows.h in particular) +#undef small +#undef min +#undef max +#undef abs +#undef Complex + +#include +#include "opencv2/core/hal/interface.h" + +#if defined __ICL +# define CV_ICC __ICL +#elif defined __ICC +# define CV_ICC __ICC +#elif defined __ECL +# define CV_ICC __ECL +#elif defined __ECC +# define CV_ICC __ECC +#elif defined __INTEL_COMPILER +# define CV_ICC __INTEL_COMPILER +#endif + +#ifndef CV_INLINE +# if defined __cplusplus +# define CV_INLINE static inline +# elif defined _MSC_VER +# define CV_INLINE __inline +# else +# define CV_INLINE static +# endif +#endif + +#ifndef CV_ALWAYS_INLINE +#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +#define CV_ALWAYS_INLINE inline __attribute__((always_inline)) +#elif defined(_MSC_VER) +#define CV_ALWAYS_INLINE __forceinline +#else +#define CV_ALWAYS_INLINE inline +#endif +#endif + +#if defined CV_DISABLE_OPTIMIZATION || (defined CV_ICC && !defined CV_ENABLE_UNROLLED) +# define CV_ENABLE_UNROLLED 0 +#else +# define CV_ENABLE_UNROLLED 1 +#endif + +#ifdef __GNUC__ +# define CV_DECL_ALIGNED(x) __attribute__ ((aligned (x))) +#elif defined _MSC_VER +# define CV_DECL_ALIGNED(x) __declspec(align(x)) +#else +# define CV_DECL_ALIGNED(x) +#endif + +/* CPU features and intrinsics support */ +#define CV_CPU_NONE 0 +#define CV_CPU_MMX 1 +#define CV_CPU_SSE 2 +#define CV_CPU_SSE2 3 +#define CV_CPU_SSE3 4 +#define CV_CPU_SSSE3 5 +#define CV_CPU_SSE4_1 6 +#define CV_CPU_SSE4_2 7 +#define CV_CPU_POPCNT 8 +#define CV_CPU_FP16 9 +#define CV_CPU_AVX 10 +#define CV_CPU_AVX2 11 +#define CV_CPU_FMA3 12 + +#define CV_CPU_AVX_512F 13 +#define CV_CPU_AVX_512BW 14 +#define CV_CPU_AVX_512CD 15 +#define CV_CPU_AVX_512DQ 16 +#define CV_CPU_AVX_512ER 17 +#define CV_CPU_AVX_512IFMA512 18 // deprecated +#define CV_CPU_AVX_512IFMA 18 +#define CV_CPU_AVX_512PF 19 +#define CV_CPU_AVX_512VBMI 20 +#define CV_CPU_AVX_512VL 21 + +#define CV_CPU_NEON 100 + +#define CV_CPU_VSX 200 +#define CV_CPU_VSX3 201 + +// CPU features groups +#define CV_CPU_AVX512_SKX 256 + +// when adding to this list remember to update the following enum +#define CV_HARDWARE_MAX_FEATURE 512 + +/** @brief Available CPU features. +*/ +enum CpuFeatures { + CPU_MMX = 1, + CPU_SSE = 2, + CPU_SSE2 = 3, + CPU_SSE3 = 4, + CPU_SSSE3 = 5, + CPU_SSE4_1 = 6, + CPU_SSE4_2 = 7, + CPU_POPCNT = 8, + CPU_FP16 = 9, + CPU_AVX = 10, + CPU_AVX2 = 11, + CPU_FMA3 = 12, + + CPU_AVX_512F = 13, + CPU_AVX_512BW = 14, + CPU_AVX_512CD = 15, + CPU_AVX_512DQ = 16, + CPU_AVX_512ER = 17, + CPU_AVX_512IFMA512 = 18, // deprecated + CPU_AVX_512IFMA = 18, + CPU_AVX_512PF = 19, + CPU_AVX_512VBMI = 20, + CPU_AVX_512VL = 21, + + CPU_NEON = 100, + + CPU_VSX = 200, + CPU_VSX3 = 201, + + CPU_AVX512_SKX = 256, //!< Skylake-X with AVX-512F/CD/BW/DQ/VL + + CPU_MAX_FEATURE = 512 // see CV_HARDWARE_MAX_FEATURE +}; + + +#include "cv_cpu_dispatch.h" + + +/* fundamental constants */ +#define CV_PI 3.1415926535897932384626433832795 +#define CV_2PI 6.283185307179586476925286766559 +#define CV_LOG2 0.69314718055994530941723212145818 + +#if defined __ARM_FP16_FORMAT_IEEE \ + && !defined __CUDACC__ +# define CV_FP16_TYPE 1 +#else +# define CV_FP16_TYPE 0 +#endif + +typedef union Cv16suf +{ + short i; + ushort u; +#if CV_FP16_TYPE + __fp16 h; +#endif +} +Cv16suf; + +typedef union Cv32suf +{ + int i; + unsigned u; + float f; +} +Cv32suf; + +typedef union Cv64suf +{ + int64 i; + uint64 u; + double f; +} +Cv64suf; + +#define OPENCV_ABI_COMPATIBILITY 400 + +#ifdef __OPENCV_BUILD +# define DISABLE_OPENCV_3_COMPATIBILITY +# define OPENCV_DISABLE_DEPRECATED_COMPATIBILITY +#endif + +#ifdef CVAPI_EXPORTS +# if (defined _WIN32 || defined WINCE || defined __CYGWIN__) +# define CV_EXPORTS __declspec(dllexport) +# elif defined __GNUC__ && __GNUC__ >= 4 +# define CV_EXPORTS __attribute__ ((visibility ("default"))) +# endif +#endif + +#ifndef CV_EXPORTS +# define CV_EXPORTS +#endif + +#ifdef _MSC_VER +# define CV_EXPORTS_TEMPLATE +#else +# define CV_EXPORTS_TEMPLATE CV_EXPORTS +#endif + +#ifndef CV_DEPRECATED +# if defined(__GNUC__) +# define CV_DEPRECATED __attribute__ ((deprecated)) +# elif defined(_MSC_VER) +# define CV_DEPRECATED __declspec(deprecated) +# else +# define CV_DEPRECATED +# endif +#endif + +#ifndef CV_DEPRECATED_EXTERNAL +# if defined(__OPENCV_BUILD) +# define CV_DEPRECATED_EXTERNAL /* nothing */ +# else +# define CV_DEPRECATED_EXTERNAL CV_DEPRECATED +# endif +#endif + + +#ifndef CV_EXTERN_C +# ifdef __cplusplus +# define CV_EXTERN_C extern "C" +# else +# define CV_EXTERN_C +# endif +#endif + +/* special informative macros for wrapper generators */ +#define CV_EXPORTS_W CV_EXPORTS +#define CV_EXPORTS_W_SIMPLE CV_EXPORTS +#define CV_EXPORTS_AS(synonym) CV_EXPORTS +#define CV_EXPORTS_W_MAP CV_EXPORTS +#define CV_IN_OUT +#define CV_OUT +#define CV_PROP +#define CV_PROP_RW +#define CV_WRAP +#define CV_WRAP_AS(synonym) +#define CV_WRAP_MAPPABLE(mappable) +#define CV_WRAP_PHANTOM(phantom_header) +#define CV_WRAP_DEFAULT(val) + +/****************************************************************************************\ +* Matrix type (Mat) * +\****************************************************************************************/ + +#define CV_MAT_CN_MASK ((CV_CN_MAX - 1) << CV_CN_SHIFT) +#define CV_MAT_CN(flags) ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1) +#define CV_MAT_TYPE_MASK (CV_DEPTH_MAX*CV_CN_MAX - 1) +#define CV_MAT_TYPE(flags) ((flags) & CV_MAT_TYPE_MASK) +#define CV_MAT_CONT_FLAG_SHIFT 14 +#define CV_MAT_CONT_FLAG (1 << CV_MAT_CONT_FLAG_SHIFT) +#define CV_IS_MAT_CONT(flags) ((flags) & CV_MAT_CONT_FLAG) +#define CV_IS_CONT_MAT CV_IS_MAT_CONT +#define CV_SUBMAT_FLAG_SHIFT 15 +#define CV_SUBMAT_FLAG (1 << CV_SUBMAT_FLAG_SHIFT) +#define CV_IS_SUBMAT(flags) ((flags) & CV_MAT_SUBMAT_FLAG) + +/** Size of each channel item, + 0x28442211 = 0010 1000 0100 0100 0010 0010 0001 0001 ~ array of sizeof(arr_type_elem) */ +#define CV_ELEM_SIZE1(type) ((0x28442211 >> CV_MAT_DEPTH(type)*4) & 15) + +#define CV_ELEM_SIZE(type) (CV_MAT_CN(type)*CV_ELEM_SIZE1(type)) + +#ifndef MIN +# define MIN(a,b) ((a) > (b) ? (b) : (a)) +#endif + +#ifndef MAX +# define MAX(a,b) ((a) < (b) ? (b) : (a)) +#endif + +///////////////////////////////////////// Enum operators /////////////////////////////////////// + +/** + +Provides compatibility operators for both classical and C++11 enum classes, +as well as exposing the C++11 enum class members for backwards compatibility + +@code + // Provides operators required for flag enums + CV_ENUM_FLAGS(AccessFlag) + + // Exposes the listed members of the enum class AccessFlag to the current namespace + CV_ENUM_CLASS_EXPOSE(AccessFlag, ACCESS_READ [, ACCESS_WRITE [, ...] ]); +@endcode +*/ + +#define __CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST) \ +static const EnumType MEMBER_CONST = EnumType::MEMBER_CONST; \ + +#define __CV_ENUM_CLASS_EXPOSE_2(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_1(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_3(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_2(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_4(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_3(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_5(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_4(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_6(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_5(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_7(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_6(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_8(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_7(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_CLASS_EXPOSE_9(EnumType, MEMBER_CONST, ...) \ +__CV_ENUM_CLASS_EXPOSE_1(EnumType, MEMBER_CONST); \ +__CV_EXPAND(__CV_ENUM_CLASS_EXPOSE_8(EnumType, __VA_ARGS__)); \ + +#define __CV_ENUM_FLAGS_LOGICAL_NOT(EnumType) \ +static inline bool operator!(const EnumType& val) \ +{ \ + typedef std::underlying_type::type UnderlyingType; \ + return !static_cast(val); \ +} \ + +#define __CV_ENUM_FLAGS_LOGICAL_NOT_EQ(Arg1Type, Arg2Type) \ +static inline bool operator!=(const Arg1Type& a, const Arg2Type& b) \ +{ \ + return static_cast(a) != static_cast(b); \ +} \ + +#define __CV_ENUM_FLAGS_LOGICAL_EQ(Arg1Type, Arg2Type) \ +static inline bool operator==(const Arg1Type& a, const Arg2Type& b) \ +{ \ + return static_cast(a) == static_cast(b); \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_NOT(EnumType) \ +static inline EnumType operator~(const EnumType& val) \ +{ \ + typedef std::underlying_type::type UnderlyingType; \ + return static_cast(~static_cast(val)); \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_OR(EnumType, Arg1Type, Arg2Type) \ +static inline EnumType operator|(const Arg1Type& a, const Arg2Type& b) \ +{ \ + typedef std::underlying_type::type UnderlyingType; \ + return static_cast(static_cast(a) | static_cast(b)); \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_AND(EnumType, Arg1Type, Arg2Type) \ +static inline EnumType operator&(const Arg1Type& a, const Arg2Type& b) \ +{ \ + typedef std::underlying_type::type UnderlyingType; \ + return static_cast(static_cast(a) & static_cast(b)); \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_XOR(EnumType, Arg1Type, Arg2Type) \ +static inline EnumType operator^(const Arg1Type& a, const Arg2Type& b) \ +{ \ + typedef std::underlying_type::type UnderlyingType; \ + return static_cast(static_cast(a) ^ static_cast(b)); \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_OR_EQ(EnumType, Arg1Type) \ +static inline EnumType& operator|=(EnumType& _this, const Arg1Type& val) \ +{ \ + _this = static_cast(static_cast(_this) | static_cast(val)); \ + return _this; \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_AND_EQ(EnumType, Arg1Type) \ +static inline EnumType& operator&=(EnumType& _this, const Arg1Type& val) \ +{ \ + _this = static_cast(static_cast(_this) & static_cast(val)); \ + return _this; \ +} \ + +#define __CV_ENUM_FLAGS_BITWISE_XOR_EQ(EnumType, Arg1Type) \ +static inline EnumType& operator^=(EnumType& _this, const Arg1Type& val) \ +{ \ + _this = static_cast(static_cast(_this) ^ static_cast(val)); \ + return _this; \ +} \ + +#define CV_ENUM_CLASS_EXPOSE(EnumType, ...) \ +__CV_EXPAND(__CV_CAT(__CV_ENUM_CLASS_EXPOSE_, __CV_VA_NUM_ARGS(__VA_ARGS__))(EnumType, __VA_ARGS__)); \ + +#define CV_ENUM_FLAGS(EnumType) \ +__CV_ENUM_FLAGS_LOGICAL_NOT (EnumType) \ +__CV_ENUM_FLAGS_LOGICAL_EQ (EnumType, int) \ +__CV_ENUM_FLAGS_LOGICAL_NOT_EQ (EnumType, int) \ + \ +__CV_ENUM_FLAGS_BITWISE_NOT (EnumType) \ +__CV_ENUM_FLAGS_BITWISE_OR (EnumType, EnumType, EnumType) \ +__CV_ENUM_FLAGS_BITWISE_AND (EnumType, EnumType, EnumType) \ +__CV_ENUM_FLAGS_BITWISE_XOR (EnumType, EnumType, EnumType) \ + \ +__CV_ENUM_FLAGS_BITWISE_OR_EQ (EnumType, EnumType) \ +__CV_ENUM_FLAGS_BITWISE_AND_EQ (EnumType, EnumType) \ +__CV_ENUM_FLAGS_BITWISE_XOR_EQ (EnumType, EnumType) \ + +/****************************************************************************************\ +* static analysys * +\****************************************************************************************/ + +// In practice, some macro are not processed correctly (noreturn is not detected). +// We need to use simplified definition for them. +#ifndef CV_STATIC_ANALYSIS +# if defined(__KLOCWORK__) || defined(__clang_analyzer__) || defined(__COVERITY__) +# define CV_STATIC_ANALYSIS 1 +# endif +#else +# if defined(CV_STATIC_ANALYSIS) && !(__CV_CAT(1, CV_STATIC_ANALYSIS) == 1) // defined and not empty +# if 0 == CV_STATIC_ANALYSIS +# undef CV_STATIC_ANALYSIS +# endif +# endif +#endif + +/****************************************************************************************\ +* Thread sanitizer * +\****************************************************************************************/ +#ifndef CV_THREAD_SANITIZER +# if defined(__has_feature) +# if __has_feature(thread_sanitizer) +# define CV_THREAD_SANITIZER +# endif +# endif +#endif + +/****************************************************************************************\ +* exchange-add operation for atomic operations on reference counters * +\****************************************************************************************/ + +#ifdef CV_XADD + // allow to use user-defined macro +#elif defined __GNUC__ || defined __clang__ +# if defined __clang__ && __clang_major__ >= 3 && !defined __ANDROID__ && !defined __EMSCRIPTEN__ && !defined(__CUDACC__) && !defined __INTEL_COMPILER +# ifdef __ATOMIC_ACQ_REL +# define CV_XADD(addr, delta) __c11_atomic_fetch_add((_Atomic(int)*)(addr), delta, __ATOMIC_ACQ_REL) +# else +# define CV_XADD(addr, delta) __atomic_fetch_add((_Atomic(int)*)(addr), delta, 4) +# endif +# else +# if defined __ATOMIC_ACQ_REL && !defined __clang__ + // version for gcc >= 4.7 +# define CV_XADD(addr, delta) (int)__atomic_fetch_add((unsigned*)(addr), (unsigned)(delta), __ATOMIC_ACQ_REL) +# else +# define CV_XADD(addr, delta) (int)__sync_fetch_and_add((unsigned*)(addr), (unsigned)(delta)) +# endif +# endif +#elif defined _MSC_VER && !defined RC_INVOKED +# include +# define CV_XADD(addr, delta) (int)_InterlockedExchangeAdd((long volatile*)addr, delta) +#else + CV_INLINE CV_XADD(int* addr, int delta) { int tmp = *addr; *addr += delta; return tmp; } +#endif + + +/****************************************************************************************\ +* CV_NORETURN attribute * +\****************************************************************************************/ + +#ifndef CV_NORETURN +# if defined(__GNUC__) +# define CV_NORETURN __attribute__((__noreturn__)) +# elif defined(_MSC_VER) && (_MSC_VER >= 1300) +# define CV_NORETURN __declspec(noreturn) +# else +# define CV_NORETURN /* nothing by default */ +# endif +#endif + + +/****************************************************************************************\ +* CV_NODISCARD attribute * +* encourages the compiler to issue a warning if the return value is discarded (C++17) * +\****************************************************************************************/ +#ifndef CV_NODISCARD +# if defined(__GNUC__) +# define CV_NODISCARD __attribute__((__warn_unused_result__)) // at least available with GCC 3.4 +# elif defined(__clang__) && defined(__has_attribute) +# if __has_attribute(__warn_unused_result__) +# define CV_NODISCARD __attribute__((__warn_unused_result__)) +# endif +# endif +#endif +#ifndef CV_NODISCARD +# define CV_NODISCARD /* nothing by default */ +#endif + + +/****************************************************************************************\ +* C++ 11 * +\****************************************************************************************/ +#ifndef CV_CXX11 +# if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800) +# define CV_CXX11 1 +# endif +#else +# if CV_CXX11 == 0 +# undef CV_CXX11 +# endif +#endif +#ifndef CV_CXX11 +# error "OpenCV 4.x+ requires enabled C++11 support" +#endif + +#define CV_CXX_MOVE_SEMANTICS 1 +#define CV_CXX_STD_ARRAY 1 +#include +#ifndef CV_OVERRIDE +# define CV_OVERRIDE override +#endif +#ifndef CV_FINAL +# define CV_FINAL final +#endif + +#ifndef CV_NOEXCEPT +# if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900/*MSVS 2015*/) +# define CV_NOEXCEPT noexcept +# endif +#endif +#ifndef CV_NOEXCEPT +# define CV_NOEXCEPT +#endif + +#ifndef CV_CONSTEXPR +# if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900/*MSVS 2015*/) +# define CV_CONSTEXPR constexpr +# endif +#endif +#ifndef CV_CONSTEXPR +# define CV_CONSTEXPR +#endif + +// Integer types portatibility +#ifdef OPENCV_STDINT_HEADER +#include OPENCV_STDINT_HEADER +#elif defined(__cplusplus) +#if defined(_MSC_VER) && _MSC_VER < 1600 /* MSVS 2010 */ +namespace cv { +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +} +#elif defined(_MSC_VER) || __cplusplus >= 201103L +#include +namespace cv { +using std::int8_t; +using std::uint8_t; +using std::int16_t; +using std::uint16_t; +using std::int32_t; +using std::uint32_t; +using std::int64_t; +using std::uint64_t; +} +#else +#include +namespace cv { +typedef ::int8_t int8_t; +typedef ::uint8_t uint8_t; +typedef ::int16_t int16_t; +typedef ::uint16_t uint16_t; +typedef ::int32_t int32_t; +typedef ::uint32_t uint32_t; +typedef ::int64_t int64_t; +typedef ::uint64_t uint64_t; +} +#endif +#else // pure C +#include +#endif + +#ifdef __cplusplus +namespace cv +{ + +class float16_t +{ +public: +#if CV_FP16_TYPE + + float16_t() : h(0) {} + explicit float16_t(float x) { h = (__fp16)x; } + operator float() const { return (float)h; } + static float16_t fromBits(ushort w) + { + Cv16suf u; + u.u = w; + float16_t result; + result.h = u.h; + return result; + } + static float16_t zero() + { + float16_t result; + result.h = (__fp16)0; + return result; + } + ushort bits() const + { + Cv16suf u; + u.h = h; + return u.u; + } +protected: + __fp16 h; + +#else + float16_t() : w(0) {} + explicit float16_t(float x) + { + #if CV_AVX2 + __m128 v = _mm_load_ss(&x); + w = (ushort)_mm_cvtsi128_si32(_mm_cvtps_ph(v, 0)); + #else + Cv32suf in; + in.f = x; + unsigned sign = in.u & 0x80000000; + in.u ^= sign; + + if( in.u >= 0x47800000 ) + w = (ushort)(in.u > 0x7f800000 ? 0x7e00 : 0x7c00); + else + { + if (in.u < 0x38800000) + { + in.f += 0.5f; + w = (ushort)(in.u - 0x3f000000); + } + else + { + unsigned t = in.u + 0xc8000fff; + w = (ushort)((t + ((in.u >> 13) & 1)) >> 13); + } + } + + w = (ushort)(w | (sign >> 16)); + #endif + } + + operator float() const + { + #if CV_AVX2 + float f; + _mm_store_ss(&f, _mm_cvtph_ps(_mm_cvtsi32_si128(w))); + return f; + #else + Cv32suf out; + + unsigned t = ((w & 0x7fff) << 13) + 0x38000000; + unsigned sign = (w & 0x8000) << 16; + unsigned e = w & 0x7c00; + + out.u = t + (1 << 23); + out.u = (e >= 0x7c00 ? t + 0x38000000 : + e == 0 ? (static_cast(out.f -= 6.103515625e-05f), out.u) : t) | sign; + return out.f; + #endif + } + + static float16_t fromBits(ushort b) + { + float16_t result; + result.w = b; + return result; + } + static float16_t zero() + { + float16_t result; + result.w = (ushort)0; + return result; + } + ushort bits() const { return w; } +protected: + ushort w; + +#endif +}; + +} +#endif + +//! @} + +#ifndef __cplusplus +#include "opencv2/core/fast_math.hpp" // define cvRound(double) +#endif + +#endif // OPENCV_CORE_CVDEF_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.hpp new file mode 100644 index 0000000..6ce9e4b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.hpp @@ -0,0 +1,190 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CVSTD_HPP +#define OPENCV_CORE_CVSTD_HPP + +#ifndef __cplusplus +# error cvstd.hpp header must be compiled as C++ +#endif + +#include "opencv2/core/cvdef.h" +#include +#include +#include + +#include + +// import useful primitives from stl +# include +# include +# include //for abs(int) +# include + +namespace cv +{ + static inline uchar abs(uchar a) { return a; } + static inline ushort abs(ushort a) { return a; } + static inline unsigned abs(unsigned a) { return a; } + static inline uint64 abs(uint64 a) { return a; } + + using std::min; + using std::max; + using std::abs; + using std::swap; + using std::sqrt; + using std::exp; + using std::pow; + using std::log; +} + +#include "cvstd_wrapper.hpp" + +namespace cv { + +//! @addtogroup core_utils +//! @{ + +//////////////////////////// memory management functions //////////////////////////// + +/** @brief Allocates an aligned memory buffer. + +The function allocates the buffer of the specified size and returns it. When the buffer size is 16 +bytes or more, the returned buffer is aligned to 16 bytes. +@param bufSize Allocated buffer size. + */ +CV_EXPORTS void* fastMalloc(size_t bufSize); + +/** @brief Deallocates a memory buffer. + +The function deallocates the buffer allocated with fastMalloc . If NULL pointer is passed, the +function does nothing. C version of the function clears the pointer *pptr* to avoid problems with +double memory deallocation. +@param ptr Pointer to the allocated buffer. + */ +CV_EXPORTS void fastFree(void* ptr); + +/*! + The STL-compliant memory Allocator based on cv::fastMalloc() and cv::fastFree() +*/ +template class Allocator +{ +public: + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + template class rebind { typedef Allocator other; }; + + explicit Allocator() {} + ~Allocator() {} + explicit Allocator(Allocator const&) {} + template + explicit Allocator(Allocator const&) {} + + // address + pointer address(reference r) { return &r; } + const_pointer address(const_reference r) { return &r; } + + pointer allocate(size_type count, const void* =0) { return reinterpret_cast(fastMalloc(count * sizeof (_Tp))); } + void deallocate(pointer p, size_type) { fastFree(p); } + + void construct(pointer p, const _Tp& v) { new(static_cast(p)) _Tp(v); } + void destroy(pointer p) { p->~_Tp(); } + + size_type max_size() const { return cv::max(static_cast<_Tp>(-1)/sizeof(_Tp), 1); } +}; + +//! @} core_utils + +//! @endcond + +//! @addtogroup core_basic +//! @{ + +//////////////////////////////// string class //////////////////////////////// + +class CV_EXPORTS FileNode; //for string constructor from FileNode + +typedef std::string String; + +#ifndef OPENCV_DISABLE_STRING_LOWER_UPPER_CONVERSIONS + +//! @cond IGNORED +namespace details { +// std::tolower is int->int +static inline char char_tolower(char ch) +{ + return (char)std::tolower((int)ch); +} +// std::toupper is int->int +static inline char char_toupper(char ch) +{ + return (char)std::toupper((int)ch); +} +} // namespace details +//! @endcond + +static inline std::string toLowerCase(const std::string& str) +{ + std::string result(str); + std::transform(result.begin(), result.end(), result.begin(), details::char_tolower); + return result; +} + +static inline std::string toUpperCase(const std::string& str) +{ + std::string result(str); + std::transform(result.begin(), result.end(), result.begin(), details::char_toupper); + return result; +} + +#endif // OPENCV_DISABLE_STRING_LOWER_UPPER_CONVERSIONS + +//! @} core_basic +} // cv + +#endif //OPENCV_CORE_CVSTD_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.inl.hpp new file mode 100644 index 0000000..f158c3b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd.inl.hpp @@ -0,0 +1,202 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_CVSTDINL_HPP +#define OPENCV_CORE_CVSTDINL_HPP + +#include +#include + +//! @cond IGNORED + +#ifdef _MSC_VER +#pragma warning( push ) +#pragma warning( disable: 4127 ) +#endif + +namespace cv +{ + +template class DataType< std::complex<_Tp> > +{ +public: + typedef std::complex<_Tp> value_type; + typedef value_type work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + depth = DataType::depth, + channels = 2, + fmt = DataType::fmt + ((channels - 1) << 8), + type = CV_MAKETYPE(depth, channels) }; + + typedef Vec vec_type; +}; + +static inline +std::ostream& operator << (std::ostream& os, const String& str) +{ + return os << str.c_str(); +} + +static inline +std::ostream& operator << (std::ostream& out, Ptr fmtd) +{ + fmtd->reset(); + for(const char* str = fmtd->next(); str; str = fmtd->next()) + out << str; + return out; +} + +static inline +std::ostream& operator << (std::ostream& out, const Mat& mtx) +{ + return out << Formatter::get()->format(mtx); +} + +static inline +std::ostream& operator << (std::ostream& out, const UMat& m) +{ + return out << m.getMat(ACCESS_READ); +} + +template static inline +std::ostream& operator << (std::ostream& out, const Complex<_Tp>& c) +{ + return out << "(" << c.re << "," << c.im << ")"; +} + +template static inline +std::ostream& operator << (std::ostream& out, const std::vector >& vec) +{ + return out << Formatter::get()->format(Mat(vec)); +} + + +template static inline +std::ostream& operator << (std::ostream& out, const std::vector >& vec) +{ + return out << Formatter::get()->format(Mat(vec)); +} + + +template static inline +std::ostream& operator << (std::ostream& out, const Matx<_Tp, m, n>& matx) +{ + return out << Formatter::get()->format(Mat(matx)); +} + +template static inline +std::ostream& operator << (std::ostream& out, const Point_<_Tp>& p) +{ + out << "[" << p.x << ", " << p.y << "]"; + return out; +} + +template static inline +std::ostream& operator << (std::ostream& out, const Point3_<_Tp>& p) +{ + out << "[" << p.x << ", " << p.y << ", " << p.z << "]"; + return out; +} + +template static inline +std::ostream& operator << (std::ostream& out, const Vec<_Tp, n>& vec) +{ + out << "["; + if (cv::traits::Depth<_Tp>::value <= CV_32S) + { + for (int i = 0; i < n - 1; ++i) { + out << (int)vec[i] << ", "; + } + out << (int)vec[n-1] << "]"; + } + else + { + for (int i = 0; i < n - 1; ++i) { + out << vec[i] << ", "; + } + out << vec[n-1] << "]"; + } + + return out; +} + +template static inline +std::ostream& operator << (std::ostream& out, const Size_<_Tp>& size) +{ + return out << "[" << size.width << " x " << size.height << "]"; +} + +template static inline +std::ostream& operator << (std::ostream& out, const Rect_<_Tp>& rect) +{ + return out << "[" << rect.width << " x " << rect.height << " from (" << rect.x << ", " << rect.y << ")]"; +} + +static inline std::ostream& operator << (std::ostream& out, const MatSize& msize) +{ + int i, dims = msize.dims(); + for( i = 0; i < dims; i++ ) + { + out << msize[i]; + if( i < dims-1 ) + out << " x "; + } + return out; +} + +static inline std::ostream &operator<< (std::ostream &s, cv::Range &r) +{ + return s << "[" << r.start << " : " << r.end << ")"; +} + +} // cv + +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + +//! @endcond + +#endif // OPENCV_CORE_CVSTDINL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/cvstd_wrapper.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd_wrapper.hpp new file mode 100644 index 0000000..027639b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/cvstd_wrapper.hpp @@ -0,0 +1,149 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_CORE_CVSTD_WRAPPER_HPP +#define OPENCV_CORE_CVSTD_WRAPPER_HPP + +#include "opencv2/core/cvdef.h" + +#include +#include // std::shared_ptr +#include // std::enable_if + +namespace cv { + +using std::nullptr_t; + +//! @addtogroup core_basic +//! @{ + +#ifdef CV_DOXYGEN + +template using Ptr = std::shared_ptr<_Tp>; // In ideal world it should look like this, but we need some compatibility workarounds below + +template static inline +Ptr<_Tp> makePtr(const A1&... a1) { return std::make_shared<_Tp>(a1...); } + +#else // cv::Ptr with compatibility workarounds + +// It should be defined for C-API types only. +// C++ types should use regular "delete" operator. +template struct DefaultDeleter; +#if 0 +{ + void operator()(Y* p) const; +}; +#endif + +namespace sfinae { +template +struct has_parenthesis_operator +{ +private: + template + static CV_CONSTEXPR std::true_type check(typename std::is_same().operator()(std::declval()...))>::type, Ret>::type*); + + template static CV_CONSTEXPR std::false_type check(...); + + typedef decltype(check(0)) type; + +public: + static CV_CONSTEXPR bool value = type::value; +}; +} // namespace sfinae + +template +struct has_custom_delete + : public std::false_type {}; + +// Force has_custom_delete to std::false_type when NVCC is compiling CUDA source files +#ifndef __CUDACC__ +template +struct has_custom_delete, void, T*>::value >::type > + : public std::true_type {}; +#endif + +template +struct Ptr : public std::shared_ptr +{ +#if 0 + using std::shared_ptr::shared_ptr; // GCC 5.x can't handle this +#else + inline Ptr() CV_NOEXCEPT : std::shared_ptr() {} + inline Ptr(nullptr_t) CV_NOEXCEPT : std::shared_ptr(nullptr) {} + template inline Ptr(Y* p, D d) : std::shared_ptr(p, d) {} + template inline Ptr(nullptr_t, D d) : std::shared_ptr(nullptr, d) {} + + template inline Ptr(const Ptr& r, T* ptr) CV_NOEXCEPT : std::shared_ptr(r, ptr) {} + + inline Ptr(const Ptr& o) CV_NOEXCEPT : std::shared_ptr(o) {} + inline Ptr(Ptr&& o) CV_NOEXCEPT : std::shared_ptr(std::move(o)) {} + + template inline Ptr(const Ptr& o) CV_NOEXCEPT : std::shared_ptr(o) {} + template inline Ptr(Ptr&& o) CV_NOEXCEPT : std::shared_ptr(std::move(o)) {} +#endif + inline Ptr(const std::shared_ptr& o) CV_NOEXCEPT : std::shared_ptr(o) {} + inline Ptr(std::shared_ptr&& o) CV_NOEXCEPT : std::shared_ptr(std::move(o)) {} + + // Overload with custom DefaultDeleter: Ptr(...) + template + inline Ptr(const std::true_type&, Y* ptr) : std::shared_ptr(ptr, DefaultDeleter()) {} + + // Overload without custom deleter: Ptr(...); + template + inline Ptr(const std::false_type&, Y* ptr) : std::shared_ptr(ptr) {} + + template + inline Ptr(Y* ptr) : Ptr(has_custom_delete(), ptr) {} + + // Overload with custom DefaultDeleter: Ptr(...) + template + inline void reset(const std::true_type&, Y* ptr) { std::shared_ptr::reset(ptr, DefaultDeleter()); } + + // Overload without custom deleter: Ptr(...); + template + inline void reset(const std::false_type&, Y* ptr) { std::shared_ptr::reset(ptr); } + + template + inline void reset(Y* ptr) { Ptr::reset(has_custom_delete(), ptr); } + + template + void reset(Y* ptr, Deleter d) { std::shared_ptr::reset(ptr, d); } + + void reset() CV_NOEXCEPT { std::shared_ptr::reset(); } + + Ptr& operator=(const Ptr& o) { std::shared_ptr::operator =(o); return *this; } + template inline Ptr& operator=(const Ptr& o) { std::shared_ptr::operator =(o); return *this; } + + T* operator->() const CV_NOEXCEPT { return std::shared_ptr::get();} + typename std::add_lvalue_reference::type operator*() const CV_NOEXCEPT { return *std::shared_ptr::get(); } + + // OpenCV 3.x methods (not a part of standard C++ library) + inline void release() { std::shared_ptr::reset(); } + inline operator T* () const { return std::shared_ptr::get(); } + inline bool empty() const { return std::shared_ptr::get() == nullptr; } + + template inline + Ptr staticCast() const CV_NOEXCEPT { return std::static_pointer_cast(*this); } + + template inline + Ptr constCast() const CV_NOEXCEPT { return std::const_pointer_cast(*this); } + + template inline + Ptr dynamicCast() const CV_NOEXCEPT { return std::dynamic_pointer_cast(*this); } +}; + +template static inline +Ptr<_Tp> makePtr(const A1&... a1) +{ + static_assert( !has_custom_delete<_Tp>::value, "Can't use this makePtr with custom DefaultDeleter"); + return (Ptr<_Tp>)std::make_shared<_Tp>(a1...); +} + +#endif // CV_DOXYGEN + +//! @} core_basic +} // cv + +#endif //OPENCV_CORE_CVSTD_WRAPPER_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/directx.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/directx.hpp new file mode 100644 index 0000000..056a85a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/directx.hpp @@ -0,0 +1,184 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors as is and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the copyright holders or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_DIRECTX_HPP +#define OPENCV_CORE_DIRECTX_HPP + +#include "mat.hpp" +#include "ocl.hpp" + +#if !defined(__d3d11_h__) +struct ID3D11Device; +struct ID3D11Texture2D; +#endif + +#if !defined(__d3d10_h__) +struct ID3D10Device; +struct ID3D10Texture2D; +#endif + +#if !defined(_D3D9_H_) +struct IDirect3DDevice9; +struct IDirect3DDevice9Ex; +struct IDirect3DSurface9; +#endif + + +namespace cv { namespace directx { + +namespace ocl { +using namespace cv::ocl; + +//! @addtogroup core_directx +// This section describes OpenCL and DirectX interoperability. +// +// To enable DirectX support, configure OpenCV using CMake with WITH_DIRECTX=ON . Note, DirectX is +// supported only on Windows. +// +// To use OpenCL functionality you should first initialize OpenCL context from DirectX resource. +// +//! @{ + +// TODO static functions in the Context class +//! @brief Creates OpenCL context from D3D11 device +// +//! @param pD3D11Device - pointer to D3D11 device +//! @return Returns reference to OpenCL Context +CV_EXPORTS Context& initializeContextFromD3D11Device(ID3D11Device* pD3D11Device); + +//! @brief Creates OpenCL context from D3D10 device +// +//! @param pD3D10Device - pointer to D3D10 device +//! @return Returns reference to OpenCL Context +CV_EXPORTS Context& initializeContextFromD3D10Device(ID3D10Device* pD3D10Device); + +//! @brief Creates OpenCL context from Direct3DDevice9Ex device +// +//! @param pDirect3DDevice9Ex - pointer to Direct3DDevice9Ex device +//! @return Returns reference to OpenCL Context +CV_EXPORTS Context& initializeContextFromDirect3DDevice9Ex(IDirect3DDevice9Ex* pDirect3DDevice9Ex); + +//! @brief Creates OpenCL context from Direct3DDevice9 device +// +//! @param pDirect3DDevice9 - pointer to Direct3Device9 device +//! @return Returns reference to OpenCL Context +CV_EXPORTS Context& initializeContextFromDirect3DDevice9(IDirect3DDevice9* pDirect3DDevice9); + +//! @} + +} // namespace cv::directx::ocl + +//! @addtogroup core_directx +//! @{ + +//! @brief Converts InputArray to ID3D11Texture2D. If destination texture format is DXGI_FORMAT_NV12 then +//! input UMat expected to be in BGR format and data will be downsampled and color-converted to NV12. +// +//! @note Note: Destination texture must be allocated by application. Function does memory copy from src to +//! pD3D11Texture2D +// +//! @param src - source InputArray +//! @param pD3D11Texture2D - destination D3D11 texture +CV_EXPORTS void convertToD3D11Texture2D(InputArray src, ID3D11Texture2D* pD3D11Texture2D); + +//! @brief Converts ID3D11Texture2D to OutputArray. If input texture format is DXGI_FORMAT_NV12 then +//! data will be upsampled and color-converted to BGR format. +// +//! @note Note: Destination matrix will be re-allocated if it has not enough memory to match texture size. +//! function does memory copy from pD3D11Texture2D to dst +// +//! @param pD3D11Texture2D - source D3D11 texture +//! @param dst - destination OutputArray +CV_EXPORTS void convertFromD3D11Texture2D(ID3D11Texture2D* pD3D11Texture2D, OutputArray dst); + +//! @brief Converts InputArray to ID3D10Texture2D +// +//! @note Note: function does memory copy from src to +//! pD3D10Texture2D +// +//! @param src - source InputArray +//! @param pD3D10Texture2D - destination D3D10 texture +CV_EXPORTS void convertToD3D10Texture2D(InputArray src, ID3D10Texture2D* pD3D10Texture2D); + +//! @brief Converts ID3D10Texture2D to OutputArray +// +//! @note Note: function does memory copy from pD3D10Texture2D +//! to dst +// +//! @param pD3D10Texture2D - source D3D10 texture +//! @param dst - destination OutputArray +CV_EXPORTS void convertFromD3D10Texture2D(ID3D10Texture2D* pD3D10Texture2D, OutputArray dst); + +//! @brief Converts InputArray to IDirect3DSurface9 +// +//! @note Note: function does memory copy from src to +//! pDirect3DSurface9 +// +//! @param src - source InputArray +//! @param pDirect3DSurface9 - destination D3D10 texture +//! @param surfaceSharedHandle - shared handle +CV_EXPORTS void convertToDirect3DSurface9(InputArray src, IDirect3DSurface9* pDirect3DSurface9, void* surfaceSharedHandle = NULL); + +//! @brief Converts IDirect3DSurface9 to OutputArray +// +//! @note Note: function does memory copy from pDirect3DSurface9 +//! to dst +// +//! @param pDirect3DSurface9 - source D3D10 texture +//! @param dst - destination OutputArray +//! @param surfaceSharedHandle - shared handle +CV_EXPORTS void convertFromDirect3DSurface9(IDirect3DSurface9* pDirect3DSurface9, OutputArray dst, void* surfaceSharedHandle = NULL); + +//! @brief Get OpenCV type from DirectX type +//! @param iDXGI_FORMAT - enum DXGI_FORMAT for D3D10/D3D11 +//! @return OpenCV type or -1 if there is no equivalent +CV_EXPORTS int getTypeFromDXGI_FORMAT(const int iDXGI_FORMAT); // enum DXGI_FORMAT for D3D10/D3D11 + +//! @brief Get OpenCV type from DirectX type +//! @param iD3DFORMAT - enum D3DTYPE for D3D9 +//! @return OpenCV type or -1 if there is no equivalent +CV_EXPORTS int getTypeFromD3DFORMAT(const int iD3DFORMAT); // enum D3DTYPE for D3D9 + +//! @} + +} } // namespace cv::directx + +#endif // OPENCV_CORE_DIRECTX_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/eigen.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/eigen.hpp new file mode 100644 index 0000000..741648e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/eigen.hpp @@ -0,0 +1,280 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + + +#ifndef OPENCV_CORE_EIGEN_HPP +#define OPENCV_CORE_EIGEN_HPP + +#include "opencv2/core.hpp" + +#if defined _MSC_VER && _MSC_VER >= 1200 +#pragma warning( disable: 4714 ) //__forceinline is not inlined +#pragma warning( disable: 4127 ) //conditional expression is constant +#pragma warning( disable: 4244 ) //conversion from '__int64' to 'int', possible loss of data +#endif + +namespace cv +{ + +//! @addtogroup core_eigen +//! @{ + +template static inline +void eigen2cv( const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src, OutputArray dst ) +{ + if( !(src.Flags & Eigen::RowMajorBit) ) + { + Mat _src(src.cols(), src.rows(), traits::Type<_Tp>::value, + (void*)src.data(), src.outerStride()*sizeof(_Tp)); + transpose(_src, dst); + } + else + { + Mat _src(src.rows(), src.cols(), traits::Type<_Tp>::value, + (void*)src.data(), src.outerStride()*sizeof(_Tp)); + _src.copyTo(dst); + } +} + +// Matx case +template static inline +void eigen2cv( const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src, + Matx<_Tp, _rows, _cols>& dst ) +{ + if( !(src.Flags & Eigen::RowMajorBit) ) + { + dst = Matx<_Tp, _cols, _rows>(static_cast(src.data())).t(); + } + else + { + dst = Matx<_Tp, _rows, _cols>(static_cast(src.data())); + } +} + +template static inline +void cv2eigen( const Mat& src, + Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst ) +{ + CV_DbgAssert(src.rows == _rows && src.cols == _cols); + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(src.cols, src.rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + if( src.type() == _dst.type() ) + transpose(src, _dst); + else if( src.cols == src.rows ) + { + src.convertTo(_dst, _dst.type()); + transpose(_dst, _dst); + } + else + Mat(src.t()).convertTo(_dst, _dst.type()); + } + else + { + const Mat _dst(src.rows, src.cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + src.convertTo(_dst, _dst.type()); + } +} + +// Matx case +template static inline +void cv2eigen( const Matx<_Tp, _rows, _cols>& src, + Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst ) +{ + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(_cols, _rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + transpose(src, _dst); + } + else + { + const Mat _dst(_rows, _cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + Mat(src).copyTo(_dst); + } +} + +template static inline +void cv2eigen( const Mat& src, + Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst ) +{ + dst.resize(src.rows, src.cols); + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(src.cols, src.rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + if( src.type() == _dst.type() ) + transpose(src, _dst); + else if( src.cols == src.rows ) + { + src.convertTo(_dst, _dst.type()); + transpose(_dst, _dst); + } + else + Mat(src.t()).convertTo(_dst, _dst.type()); + } + else + { + const Mat _dst(src.rows, src.cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + src.convertTo(_dst, _dst.type()); + } +} + +// Matx case +template static inline +void cv2eigen( const Matx<_Tp, _rows, _cols>& src, + Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst ) +{ + dst.resize(_rows, _cols); + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(_cols, _rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + transpose(src, _dst); + } + else + { + const Mat _dst(_rows, _cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + Mat(src).copyTo(_dst); + } +} + +template static inline +void cv2eigen( const Mat& src, + Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst ) +{ + CV_Assert(src.cols == 1); + dst.resize(src.rows); + + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(src.cols, src.rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + if( src.type() == _dst.type() ) + transpose(src, _dst); + else + Mat(src.t()).convertTo(_dst, _dst.type()); + } + else + { + const Mat _dst(src.rows, src.cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + src.convertTo(_dst, _dst.type()); + } +} + +// Matx case +template static inline +void cv2eigen( const Matx<_Tp, _rows, 1>& src, + Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst ) +{ + dst.resize(_rows); + + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(1, _rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + transpose(src, _dst); + } + else + { + const Mat _dst(_rows, 1, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + src.copyTo(_dst); + } +} + + +template static inline +void cv2eigen( const Mat& src, + Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst ) +{ + CV_Assert(src.rows == 1); + dst.resize(src.cols); + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(src.cols, src.rows, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + if( src.type() == _dst.type() ) + transpose(src, _dst); + else + Mat(src.t()).convertTo(_dst, _dst.type()); + } + else + { + const Mat _dst(src.rows, src.cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + src.convertTo(_dst, _dst.type()); + } +} + +//Matx +template static inline +void cv2eigen( const Matx<_Tp, 1, _cols>& src, + Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst ) +{ + dst.resize(_cols); + if( !(dst.Flags & Eigen::RowMajorBit) ) + { + const Mat _dst(_cols, 1, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + transpose(src, _dst); + } + else + { + const Mat _dst(1, _cols, traits::Type<_Tp>::value, + dst.data(), (size_t)(dst.outerStride()*sizeof(_Tp))); + Mat(src).copyTo(_dst); + } +} + +//! @} + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/fast_math.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/fast_math.hpp new file mode 100644 index 0000000..065879b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/fast_math.hpp @@ -0,0 +1,261 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_FAST_MATH_HPP +#define OPENCV_CORE_FAST_MATH_HPP + +#include "opencv2/core/cvdef.h" + +#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \ + && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__) +#include +#endif + + +//! @addtogroup core_utils +//! @{ + +/****************************************************************************************\ +* fast math * +\****************************************************************************************/ + +#ifdef __cplusplus +# include +#else +# ifdef __BORLANDC__ +# include +# else +# include +# endif +#endif + +#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__ && !defined(__CUDACC__) + // 1. general scheme + #define ARM_ROUND(_value, _asm_string) \ + int res; \ + float temp; \ + CV_UNUSED(temp); \ + __asm__(_asm_string : [res] "=r" (res), [temp] "=w" (temp) : [value] "w" (_value)); \ + return res + // 2. version for double + #ifdef __clang__ + #define ARM_ROUND_DBL(value) ARM_ROUND(value, "vcvtr.s32.f64 %[temp], %[value] \n vmov %[res], %[temp]") + #else + #define ARM_ROUND_DBL(value) ARM_ROUND(value, "vcvtr.s32.f64 %[temp], %P[value] \n vmov %[res], %[temp]") + #endif + // 3. version for float + #define ARM_ROUND_FLT(value) ARM_ROUND(value, "vcvtr.s32.f32 %[temp], %[value]\n vmov %[res], %[temp]") +#endif + +/** @brief Rounds floating-point number to the nearest integer + + @param value floating-point number. If the value is outside of INT_MIN ... INT_MAX range, the + result is not defined. + */ +CV_INLINE int +cvRound( double value ) +{ +#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \ + && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__) + __m128d t = _mm_set_sd( value ); + return _mm_cvtsd_si32(t); +#elif defined _MSC_VER && defined _M_IX86 + int t; + __asm + { + fld value; + fistp t; + } + return t; +#elif defined CV_ICC || defined __GNUC__ +# if defined ARM_ROUND_DBL + ARM_ROUND_DBL(value); +# else + return (int)lrint(value); +# endif +#else + /* it's ok if round does not comply with IEEE754 standard; + the tests should allow +/-1 difference when the tested functions use round */ + return (int)(value + (value >= 0 ? 0.5 : -0.5)); +#endif +} + + +/** @brief Rounds floating-point number to the nearest integer not larger than the original. + + The function computes an integer i such that: + \f[i \le \texttt{value} < i+1\f] + @param value floating-point number. If the value is outside of INT_MIN ... INT_MAX range, the + result is not defined. + */ +CV_INLINE int cvFloor( double value ) +{ + int i = (int)value; + return i - (i > value); +} + +/** @brief Rounds floating-point number to the nearest integer not smaller than the original. + + The function computes an integer i such that: + \f[i \le \texttt{value} < i+1\f] + @param value floating-point number. If the value is outside of INT_MIN ... INT_MAX range, the + result is not defined. + */ +CV_INLINE int cvCeil( double value ) +{ + int i = (int)value; + return i + (i < value); +} + +/** @brief Determines if the argument is Not A Number. + + @param value The input floating-point value + + The function returns 1 if the argument is Not A Number (as defined by IEEE754 standard), 0 + otherwise. */ +CV_INLINE int cvIsNaN( double value ) +{ + Cv64suf ieee754; + ieee754.f = value; + return ((unsigned)(ieee754.u >> 32) & 0x7fffffff) + + ((unsigned)ieee754.u != 0) > 0x7ff00000; +} + +/** @brief Determines if the argument is Infinity. + + @param value The input floating-point value + + The function returns 1 if the argument is a plus or minus infinity (as defined by IEEE754 standard) + and 0 otherwise. */ +CV_INLINE int cvIsInf( double value ) +{ + Cv64suf ieee754; + ieee754.f = value; + return ((unsigned)(ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 && + (unsigned)ieee754.u == 0; +} + +#ifdef __cplusplus + +/** @overload */ +CV_INLINE int cvRound(float value) +{ +#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \ + && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__) + __m128 t = _mm_set_ss( value ); + return _mm_cvtss_si32(t); +#elif defined _MSC_VER && defined _M_IX86 + int t; + __asm + { + fld value; + fistp t; + } + return t; +#elif defined CV_ICC || defined __GNUC__ +# if defined ARM_ROUND_FLT + ARM_ROUND_FLT(value); +# else + return (int)lrintf(value); +# endif +#else + /* it's ok if round does not comply with IEEE754 standard; + the tests should allow +/-1 difference when the tested functions use round */ + return (int)(value + (value >= 0 ? 0.5f : -0.5f)); +#endif +} + +/** @overload */ +CV_INLINE int cvRound( int value ) +{ + return value; +} + +/** @overload */ +CV_INLINE int cvFloor( float value ) +{ + int i = (int)value; + return i - (i > value); +} + +/** @overload */ +CV_INLINE int cvFloor( int value ) +{ + return value; +} + +/** @overload */ +CV_INLINE int cvCeil( float value ) +{ + int i = (int)value; + return i + (i < value); +} + +/** @overload */ +CV_INLINE int cvCeil( int value ) +{ + return value; +} + +/** @overload */ +CV_INLINE int cvIsNaN( float value ) +{ + Cv32suf ieee754; + ieee754.f = value; + return (ieee754.u & 0x7fffffff) > 0x7f800000; +} + +/** @overload */ +CV_INLINE int cvIsInf( float value ) +{ + Cv32suf ieee754; + ieee754.f = value; + return (ieee754.u & 0x7fffffff) == 0x7f800000; +} + +#endif // __cplusplus + +//! @} core_utils + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/hal.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/hal.hpp new file mode 100644 index 0000000..0d68078 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/hal.hpp @@ -0,0 +1,256 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_HPP +#define OPENCV_HAL_HPP + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/cvstd.hpp" +#include "opencv2/core/hal/interface.h" + +namespace cv { namespace hal { + +//! @addtogroup core_hal_functions +//! @{ + +CV_EXPORTS int normHamming(const uchar* a, int n); +CV_EXPORTS int normHamming(const uchar* a, const uchar* b, int n); + +CV_EXPORTS int normHamming(const uchar* a, int n, int cellSize); +CV_EXPORTS int normHamming(const uchar* a, const uchar* b, int n, int cellSize); + +CV_EXPORTS int LU32f(float* A, size_t astep, int m, float* b, size_t bstep, int n); +CV_EXPORTS int LU64f(double* A, size_t astep, int m, double* b, size_t bstep, int n); +CV_EXPORTS bool Cholesky32f(float* A, size_t astep, int m, float* b, size_t bstep, int n); +CV_EXPORTS bool Cholesky64f(double* A, size_t astep, int m, double* b, size_t bstep, int n); +CV_EXPORTS void SVD32f(float* At, size_t astep, float* W, float* U, size_t ustep, float* Vt, size_t vstep, int m, int n, int flags); +CV_EXPORTS void SVD64f(double* At, size_t astep, double* W, double* U, size_t ustep, double* Vt, size_t vstep, int m, int n, int flags); +CV_EXPORTS int QR32f(float* A, size_t astep, int m, int n, int k, float* b, size_t bstep, float* hFactors); +CV_EXPORTS int QR64f(double* A, size_t astep, int m, int n, int k, double* b, size_t bstep, double* hFactors); + +CV_EXPORTS void gemm32f(const float* src1, size_t src1_step, const float* src2, size_t src2_step, + float alpha, const float* src3, size_t src3_step, float beta, float* dst, size_t dst_step, + int m_a, int n_a, int n_d, int flags); +CV_EXPORTS void gemm64f(const double* src1, size_t src1_step, const double* src2, size_t src2_step, + double alpha, const double* src3, size_t src3_step, double beta, double* dst, size_t dst_step, + int m_a, int n_a, int n_d, int flags); +CV_EXPORTS void gemm32fc(const float* src1, size_t src1_step, const float* src2, size_t src2_step, + float alpha, const float* src3, size_t src3_step, float beta, float* dst, size_t dst_step, + int m_a, int n_a, int n_d, int flags); +CV_EXPORTS void gemm64fc(const double* src1, size_t src1_step, const double* src2, size_t src2_step, + double alpha, const double* src3, size_t src3_step, double beta, double* dst, size_t dst_step, + int m_a, int n_a, int n_d, int flags); + +CV_EXPORTS int normL1_(const uchar* a, const uchar* b, int n); +CV_EXPORTS float normL1_(const float* a, const float* b, int n); +CV_EXPORTS float normL2Sqr_(const float* a, const float* b, int n); + +CV_EXPORTS void exp32f(const float* src, float* dst, int n); +CV_EXPORTS void exp64f(const double* src, double* dst, int n); +CV_EXPORTS void log32f(const float* src, float* dst, int n); +CV_EXPORTS void log64f(const double* src, double* dst, int n); + +CV_EXPORTS void fastAtan32f(const float* y, const float* x, float* dst, int n, bool angleInDegrees); +CV_EXPORTS void fastAtan64f(const double* y, const double* x, double* dst, int n, bool angleInDegrees); +CV_EXPORTS void magnitude32f(const float* x, const float* y, float* dst, int n); +CV_EXPORTS void magnitude64f(const double* x, const double* y, double* dst, int n); +CV_EXPORTS void sqrt32f(const float* src, float* dst, int len); +CV_EXPORTS void sqrt64f(const double* src, double* dst, int len); +CV_EXPORTS void invSqrt32f(const float* src, float* dst, int len); +CV_EXPORTS void invSqrt64f(const double* src, double* dst, int len); + +CV_EXPORTS void split8u(const uchar* src, uchar** dst, int len, int cn ); +CV_EXPORTS void split16u(const ushort* src, ushort** dst, int len, int cn ); +CV_EXPORTS void split32s(const int* src, int** dst, int len, int cn ); +CV_EXPORTS void split64s(const int64* src, int64** dst, int len, int cn ); + +CV_EXPORTS void merge8u(const uchar** src, uchar* dst, int len, int cn ); +CV_EXPORTS void merge16u(const ushort** src, ushort* dst, int len, int cn ); +CV_EXPORTS void merge32s(const int** src, int* dst, int len, int cn ); +CV_EXPORTS void merge64s(const int64** src, int64* dst, int len, int cn ); + +CV_EXPORTS void add8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void add64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void sub8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void sub64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void max8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void max64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void min8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void min64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void absdiff8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void absdiff64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void and8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void or8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void xor8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); +CV_EXPORTS void not8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* ); + +CV_EXPORTS void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp8s(const schar* src1, size_t step1, const schar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp16u(const ushort* src1, size_t step1, const ushort* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp16s(const short* src1, size_t step1, const short* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp32s(const int* src1, size_t step1, const int* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp32f(const float* src1, size_t step1, const float* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); +CV_EXPORTS void cmp64f(const double* src1, size_t step1, const double* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _cmpop); + +CV_EXPORTS void mul8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void mul64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* scale); + +CV_EXPORTS void div8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void div64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* scale); + +CV_EXPORTS void recip8u( const uchar *, size_t, const uchar * src2, size_t step2, uchar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip8s( const schar *, size_t, const schar * src2, size_t step2, schar* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip16u( const ushort *, size_t, const ushort * src2, size_t step2, ushort* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip16s( const short *, size_t, const short * src2, size_t step2, short* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip32s( const int *, size_t, const int * src2, size_t step2, int* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip32f( const float *, size_t, const float * src2, size_t step2, float* dst, size_t step, int width, int height, void* scale); +CV_EXPORTS void recip64f( const double *, size_t, const double * src2, size_t step2, double* dst, size_t step, int width, int height, void* scale); + +CV_EXPORTS void addWeighted8u( const uchar* src1, size_t step1, const uchar* src2, size_t step2, uchar* dst, size_t step, int width, int height, void* _scalars ); +CV_EXPORTS void addWeighted8s( const schar* src1, size_t step1, const schar* src2, size_t step2, schar* dst, size_t step, int width, int height, void* scalars ); +CV_EXPORTS void addWeighted16u( const ushort* src1, size_t step1, const ushort* src2, size_t step2, ushort* dst, size_t step, int width, int height, void* scalars ); +CV_EXPORTS void addWeighted16s( const short* src1, size_t step1, const short* src2, size_t step2, short* dst, size_t step, int width, int height, void* scalars ); +CV_EXPORTS void addWeighted32s( const int* src1, size_t step1, const int* src2, size_t step2, int* dst, size_t step, int width, int height, void* scalars ); +CV_EXPORTS void addWeighted32f( const float* src1, size_t step1, const float* src2, size_t step2, float* dst, size_t step, int width, int height, void* scalars ); +CV_EXPORTS void addWeighted64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, int width, int height, void* scalars ); + +CV_EXPORTS void cvt16f32f( const float16_t* src, float* dst, int len ); +CV_EXPORTS void cvt32f16f( const float* src, float16_t* dst, int len ); + +CV_EXPORTS void addRNGBias32f( float* arr, const float* scaleBiasPairs, int len ); +CV_EXPORTS void addRNGBias64f( double* arr, const double* scaleBiasPairs, int len ); + +struct CV_EXPORTS DFT1D +{ + static Ptr create(int len, int count, int depth, int flags, bool * useBuffer = 0); + virtual void apply(const uchar *src, uchar *dst) = 0; + virtual ~DFT1D() {} +}; + +struct CV_EXPORTS DFT2D +{ + static Ptr create(int width, int height, int depth, + int src_channels, int dst_channels, + int flags, int nonzero_rows = 0); + virtual void apply(const uchar *src_data, size_t src_step, uchar *dst_data, size_t dst_step) = 0; + virtual ~DFT2D() {} +}; + +struct CV_EXPORTS DCT2D +{ + static Ptr create(int width, int height, int depth, int flags); + virtual void apply(const uchar *src_data, size_t src_step, uchar *dst_data, size_t dst_step) = 0; + virtual ~DCT2D() {} +}; + +//! @} core_hal + +//============================================================================= +// for binary compatibility with 3.0 + +//! @cond IGNORED + +CV_EXPORTS int LU(float* A, size_t astep, int m, float* b, size_t bstep, int n); +CV_EXPORTS int LU(double* A, size_t astep, int m, double* b, size_t bstep, int n); +CV_EXPORTS bool Cholesky(float* A, size_t astep, int m, float* b, size_t bstep, int n); +CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n); + +CV_EXPORTS void exp(const float* src, float* dst, int n); +CV_EXPORTS void exp(const double* src, double* dst, int n); +CV_EXPORTS void log(const float* src, float* dst, int n); +CV_EXPORTS void log(const double* src, double* dst, int n); + +CV_EXPORTS void fastAtan2(const float* y, const float* x, float* dst, int n, bool angleInDegrees); +CV_EXPORTS void magnitude(const float* x, const float* y, float* dst, int n); +CV_EXPORTS void magnitude(const double* x, const double* y, double* dst, int n); +CV_EXPORTS void sqrt(const float* src, float* dst, int len); +CV_EXPORTS void sqrt(const double* src, double* dst, int len); +CV_EXPORTS void invSqrt(const float* src, float* dst, int len); +CV_EXPORTS void invSqrt(const double* src, double* dst, int len); + +//! @endcond + +}} //cv::hal + +#endif //OPENCV_HAL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/interface.h b/LaiPuLaser/OpenCV/include/opencv2/core/hal/interface.h new file mode 100644 index 0000000..6f0a83d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/interface.h @@ -0,0 +1,190 @@ +#ifndef OPENCV_CORE_HAL_INTERFACE_H +#define OPENCV_CORE_HAL_INTERFACE_H + +//! @addtogroup core_hal_interface +//! @{ + +//! @name Return codes +//! @{ +#define CV_HAL_ERROR_OK 0 +#define CV_HAL_ERROR_NOT_IMPLEMENTED 1 +#define CV_HAL_ERROR_UNKNOWN -1 +//! @} + +#ifdef __cplusplus +#include +#else +#include +#include +#endif + +//! @name Data types +//! primitive types +//! - schar - signed 1 byte integer +//! - uchar - unsigned 1 byte integer +//! - short - signed 2 byte integer +//! - ushort - unsigned 2 byte integer +//! - int - signed 4 byte integer +//! - uint - unsigned 4 byte integer +//! - int64 - signed 8 byte integer +//! - uint64 - unsigned 8 byte integer +//! @{ +#if !defined _MSC_VER && !defined __BORLANDC__ +# if defined __cplusplus && __cplusplus >= 201103L && !defined __APPLE__ +# include +# ifdef __NEWLIB__ + typedef unsigned int uint; +# else + typedef std::uint32_t uint; +# endif +# else +# include + typedef uint32_t uint; +# endif +#else + typedef unsigned uint; +#endif + +typedef signed char schar; + +#ifndef __IPL_H__ + typedef unsigned char uchar; + typedef unsigned short ushort; +#endif + +#if defined _MSC_VER || defined __BORLANDC__ + typedef __int64 int64; + typedef unsigned __int64 uint64; +# define CV_BIG_INT(n) n##I64 +# define CV_BIG_UINT(n) n##UI64 +#else + typedef int64_t int64; + typedef uint64_t uint64; +# define CV_BIG_INT(n) n##LL +# define CV_BIG_UINT(n) n##ULL +#endif + +#define CV_USRTYPE1 (void)"CV_USRTYPE1 support has been dropped in OpenCV 4.0" + +#define CV_CN_MAX 512 +#define CV_CN_SHIFT 3 +#define CV_DEPTH_MAX (1 << CV_CN_SHIFT) + +#define CV_8U 0 +#define CV_8S 1 +#define CV_16U 2 +#define CV_16S 3 +#define CV_32S 4 +#define CV_32F 5 +#define CV_64F 6 +#define CV_16F 7 + +#define CV_MAT_DEPTH_MASK (CV_DEPTH_MAX - 1) +#define CV_MAT_DEPTH(flags) ((flags) & CV_MAT_DEPTH_MASK) + +#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT)) +#define CV_MAKE_TYPE CV_MAKETYPE + +#define CV_8UC1 CV_MAKETYPE(CV_8U,1) +#define CV_8UC2 CV_MAKETYPE(CV_8U,2) +#define CV_8UC3 CV_MAKETYPE(CV_8U,3) +#define CV_8UC4 CV_MAKETYPE(CV_8U,4) +#define CV_8UC(n) CV_MAKETYPE(CV_8U,(n)) + +#define CV_8SC1 CV_MAKETYPE(CV_8S,1) +#define CV_8SC2 CV_MAKETYPE(CV_8S,2) +#define CV_8SC3 CV_MAKETYPE(CV_8S,3) +#define CV_8SC4 CV_MAKETYPE(CV_8S,4) +#define CV_8SC(n) CV_MAKETYPE(CV_8S,(n)) + +#define CV_16UC1 CV_MAKETYPE(CV_16U,1) +#define CV_16UC2 CV_MAKETYPE(CV_16U,2) +#define CV_16UC3 CV_MAKETYPE(CV_16U,3) +#define CV_16UC4 CV_MAKETYPE(CV_16U,4) +#define CV_16UC(n) CV_MAKETYPE(CV_16U,(n)) + +#define CV_16SC1 CV_MAKETYPE(CV_16S,1) +#define CV_16SC2 CV_MAKETYPE(CV_16S,2) +#define CV_16SC3 CV_MAKETYPE(CV_16S,3) +#define CV_16SC4 CV_MAKETYPE(CV_16S,4) +#define CV_16SC(n) CV_MAKETYPE(CV_16S,(n)) + +#define CV_32SC1 CV_MAKETYPE(CV_32S,1) +#define CV_32SC2 CV_MAKETYPE(CV_32S,2) +#define CV_32SC3 CV_MAKETYPE(CV_32S,3) +#define CV_32SC4 CV_MAKETYPE(CV_32S,4) +#define CV_32SC(n) CV_MAKETYPE(CV_32S,(n)) + +#define CV_32FC1 CV_MAKETYPE(CV_32F,1) +#define CV_32FC2 CV_MAKETYPE(CV_32F,2) +#define CV_32FC3 CV_MAKETYPE(CV_32F,3) +#define CV_32FC4 CV_MAKETYPE(CV_32F,4) +#define CV_32FC(n) CV_MAKETYPE(CV_32F,(n)) + +#define CV_64FC1 CV_MAKETYPE(CV_64F,1) +#define CV_64FC2 CV_MAKETYPE(CV_64F,2) +#define CV_64FC3 CV_MAKETYPE(CV_64F,3) +#define CV_64FC4 CV_MAKETYPE(CV_64F,4) +#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n)) + +#define CV_16FC1 CV_MAKETYPE(CV_16F,1) +#define CV_16FC2 CV_MAKETYPE(CV_16F,2) +#define CV_16FC3 CV_MAKETYPE(CV_16F,3) +#define CV_16FC4 CV_MAKETYPE(CV_16F,4) +#define CV_16FC(n) CV_MAKETYPE(CV_16F,(n)) +//! @} + +//! @name Comparison operation +//! @sa cv::CmpTypes +//! @{ +#define CV_HAL_CMP_EQ 0 +#define CV_HAL_CMP_GT 1 +#define CV_HAL_CMP_GE 2 +#define CV_HAL_CMP_LT 3 +#define CV_HAL_CMP_LE 4 +#define CV_HAL_CMP_NE 5 +//! @} + +//! @name Border processing modes +//! @sa cv::BorderTypes +//! @{ +#define CV_HAL_BORDER_CONSTANT 0 +#define CV_HAL_BORDER_REPLICATE 1 +#define CV_HAL_BORDER_REFLECT 2 +#define CV_HAL_BORDER_WRAP 3 +#define CV_HAL_BORDER_REFLECT_101 4 +#define CV_HAL_BORDER_TRANSPARENT 5 +#define CV_HAL_BORDER_ISOLATED 16 +//! @} + +//! @name DFT flags +//! @{ +#define CV_HAL_DFT_INVERSE 1 +#define CV_HAL_DFT_SCALE 2 +#define CV_HAL_DFT_ROWS 4 +#define CV_HAL_DFT_COMPLEX_OUTPUT 16 +#define CV_HAL_DFT_REAL_OUTPUT 32 +#define CV_HAL_DFT_TWO_STAGE 64 +#define CV_HAL_DFT_STAGE_COLS 128 +#define CV_HAL_DFT_IS_CONTINUOUS 512 +#define CV_HAL_DFT_IS_INPLACE 1024 +//! @} + +//! @name SVD flags +//! @{ +#define CV_HAL_SVD_NO_UV 1 +#define CV_HAL_SVD_SHORT_UV 2 +#define CV_HAL_SVD_MODIFY_A 4 +#define CV_HAL_SVD_FULL_UV 8 +//! @} + +//! @name Gemm flags +//! @{ +#define CV_HAL_GEMM_1_T 1 +#define CV_HAL_GEMM_2_T 2 +#define CV_HAL_GEMM_3_T 4 +//! @} + +//! @} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin.hpp new file mode 100644 index 0000000..460c5c5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin.hpp @@ -0,0 +1,429 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_INTRIN_HPP +#define OPENCV_HAL_INTRIN_HPP + +#include +#include +#include +#include "opencv2/core/cvdef.h" + +#define OPENCV_HAL_ADD(a, b) ((a) + (b)) +#define OPENCV_HAL_AND(a, b) ((a) & (b)) +#define OPENCV_HAL_NOP(a) (a) +#define OPENCV_HAL_1ST(a, b) (a) + +// unlike HAL API, which is in cv::hal, +// we put intrinsics into cv namespace to make its +// access from within opencv code more accessible +namespace cv { + +namespace hal { + +enum StoreMode +{ + STORE_UNALIGNED = 0, + STORE_ALIGNED = 1, + STORE_ALIGNED_NOCACHE = 2 +}; + +} + +template struct V_TypeTraits +{ +}; + +#define CV_INTRIN_DEF_TYPE_TRAITS(type, int_type_, uint_type_, abs_type_, w_type_, q_type_, sum_type_, nlanes128_) \ + template<> struct V_TypeTraits \ + { \ + typedef type value_type; \ + typedef int_type_ int_type; \ + typedef abs_type_ abs_type; \ + typedef uint_type_ uint_type; \ + typedef w_type_ w_type; \ + typedef q_type_ q_type; \ + typedef sum_type_ sum_type; \ + enum { nlanes128 = nlanes128_ }; \ + \ + static inline int_type reinterpret_int(type x) \ + { \ + union { type l; int_type i; } v; \ + v.l = x; \ + return v.i; \ + } \ + \ + static inline type reinterpret_from_int(int_type x) \ + { \ + union { type l; int_type i; } v; \ + v.i = x; \ + return v.l; \ + } \ + } + +CV_INTRIN_DEF_TYPE_TRAITS(uchar, schar, uchar, uchar, ushort, unsigned, unsigned, 16); +CV_INTRIN_DEF_TYPE_TRAITS(schar, schar, uchar, uchar, short, int, int, 16); +CV_INTRIN_DEF_TYPE_TRAITS(ushort, short, ushort, ushort, unsigned, uint64, unsigned, 8); +CV_INTRIN_DEF_TYPE_TRAITS(short, short, ushort, ushort, int, int64, int, 8); +CV_INTRIN_DEF_TYPE_TRAITS(unsigned, int, unsigned, unsigned, uint64, void, unsigned, 4); +CV_INTRIN_DEF_TYPE_TRAITS(int, int, unsigned, unsigned, int64, void, int, 4); +CV_INTRIN_DEF_TYPE_TRAITS(float, int, unsigned, float, double, void, float, 4); +CV_INTRIN_DEF_TYPE_TRAITS(uint64, int64, uint64, uint64, void, void, uint64, 2); +CV_INTRIN_DEF_TYPE_TRAITS(int64, int64, uint64, uint64, void, void, int64, 2); +CV_INTRIN_DEF_TYPE_TRAITS(double, int64, uint64, double, void, void, double, 2); + +#ifndef CV_DOXYGEN + +#ifdef CV_CPU_DISPATCH_MODE + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE __CV_CAT(hal_, CV_CPU_DISPATCH_MODE) + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN namespace __CV_CAT(hal_, CV_CPU_DISPATCH_MODE) { + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END } +#else + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE hal_baseline + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN namespace hal_baseline { + #define CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END } +#endif + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END +using namespace CV_CPU_OPTIMIZATION_HAL_NAMESPACE; +#endif +} + +#ifdef CV_DOXYGEN +# undef CV_AVX2 +# undef CV_SSE2 +# undef CV_NEON +# undef CV_VSX +# undef CV_FP16 +#endif + +#if CV_SSE2 || CV_NEON || CV_VSX +#define CV__SIMD_FORWARD 128 +#include "opencv2/core/hal/intrin_forward.hpp" +#endif + +#if CV_SSE2 + +#include "opencv2/core/hal/intrin_sse_em.hpp" +#include "opencv2/core/hal/intrin_sse.hpp" + +#elif CV_NEON + +#include "opencv2/core/hal/intrin_neon.hpp" + +#elif CV_VSX + +#include "opencv2/core/hal/intrin_vsx.hpp" + +#else + +#define CV_SIMD128_CPP 1 +#include "opencv2/core/hal/intrin_cpp.hpp" + +#endif + +// AVX2 can be used together with SSE2, so +// we define those two sets of intrinsics at once. +// Most of the intrinsics do not conflict (the proper overloaded variant is +// resolved by the argument types, e.g. v_float32x4 ~ SSE2, v_float32x8 ~ AVX2), +// but some of AVX2 intrinsics get v256_ prefix instead of v_, e.g. v256_load() vs v_load(). +// Correspondingly, the wide intrinsics (which are mapped to the "widest" +// available instruction set) will get vx_ prefix +// (and will be mapped to v256_ counterparts) (e.g. vx_load() => v256_load()) +#if CV_AVX2 + +#define CV__SIMD_FORWARD 256 +#include "opencv2/core/hal/intrin_forward.hpp" +#include "opencv2/core/hal/intrin_avx.hpp" + +#endif + +//! @cond IGNORED + +namespace cv { + +#ifndef CV_DOXYGEN +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN +#endif + +#ifndef CV_SIMD128 +#define CV_SIMD128 0 +#endif + +#ifndef CV_SIMD128_64F +#define CV_SIMD128_64F 0 +#endif + +#ifndef CV_SIMD256 +#define CV_SIMD256 0 +#endif + +#ifndef CV_SIMD256_64F +#define CV_SIMD256_64F 0 +#endif + +#ifndef CV_SIMD512 +#define CV_SIMD512 0 +#endif + +#ifndef CV_SIMD512_64F +#define CV_SIMD512_64F 0 +#endif + +#ifndef CV_SIMD128_FP16 +#define CV_SIMD128_FP16 0 +#endif + +#ifndef CV_SIMD256_FP16 +#define CV_SIMD256_FP16 0 +#endif + +#ifndef CV_SIMD512_FP16 +#define CV_SIMD512_FP16 0 +#endif + +//================================================================================================== + +#define CV_INTRIN_DEFINE_WIDE_INTRIN(typ, vtyp, short_typ, prefix, loadsfx) \ + inline vtyp vx_setall_##short_typ(typ v) { return prefix##_setall_##short_typ(v); } \ + inline vtyp vx_setzero_##short_typ() { return prefix##_setzero_##short_typ(); } \ + inline vtyp vx_##loadsfx(const typ* ptr) { return prefix##_##loadsfx(ptr); } \ + inline vtyp vx_##loadsfx##_aligned(const typ* ptr) { return prefix##_##loadsfx##_aligned(ptr); } \ + inline vtyp vx_##loadsfx##_low(const typ* ptr) { return prefix##_##loadsfx##_low(ptr); } \ + inline vtyp vx_##loadsfx##_halves(const typ* ptr0, const typ* ptr1) { return prefix##_##loadsfx##_halves(ptr0, ptr1); } \ + inline void vx_store(typ* ptr, const vtyp& v) { return v_store(ptr, v); } \ + inline void vx_store_aligned(typ* ptr, const vtyp& v) { return v_store_aligned(ptr, v); } \ + inline vtyp vx_lut(const typ* ptr, const int* idx) { return prefix##_lut(ptr, idx); } \ + inline vtyp vx_lut_pairs(const typ* ptr, const int* idx) { return prefix##_lut_pairs(ptr, idx); } + +#define CV_INTRIN_DEFINE_WIDE_LUT_QUAD(typ, vtyp, prefix) \ + inline vtyp vx_lut_quads(const typ* ptr, const int* idx) { return prefix##_lut_quads(ptr, idx); } + +#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(typ, wtyp, prefix) \ + inline wtyp vx_load_expand(const typ* ptr) { return prefix##_load_expand(ptr); } + +#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND_Q(typ, qtyp, prefix) \ + inline qtyp vx_load_expand_q(const typ* ptr) { return prefix##_load_expand_q(ptr); } + +#define CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(typ, vtyp, short_typ, wtyp, qtyp, prefix, loadsfx) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(typ, vtyp, short_typ, prefix, loadsfx) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(typ, vtyp, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(typ, wtyp, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND_Q(typ, qtyp, prefix) + +#define CV_INTRIN_DEFINE_WIDE_INTRIN_ALL_TYPES(prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(uchar, v_uint8, u8, v_uint16, v_uint32, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(schar, v_int8, s8, v_int16, v_int32, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(ushort, v_uint16, u16, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(ushort, v_uint16, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(ushort, v_uint32, prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(short, v_int16, s16, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(short, v_int16, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(short, v_int32, prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(int, v_int32, s32, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(int, v_int32, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(int, v_int64, prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(unsigned, v_uint32, u32, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(unsigned, v_uint32, prefix) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(unsigned, v_uint64, prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(float, v_float32, f32, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LUT_QUAD(float, v_float32, prefix) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(int64, v_int64, s64, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_INTRIN(uint64, v_uint64, u64, prefix, load) \ + CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(float16_t, v_float32, prefix) + +template struct V_RegTraits +{ +}; + +#define CV_DEF_REG_TRAITS(prefix, _reg, lane_type, suffix, _u_reg, _w_reg, _q_reg, _int_reg, _round_reg) \ + template<> struct V_RegTraits<_reg> \ + { \ + typedef _reg reg; \ + typedef _u_reg u_reg; \ + typedef _w_reg w_reg; \ + typedef _q_reg q_reg; \ + typedef _int_reg int_reg; \ + typedef _round_reg round_reg; \ + } + +#if CV_SIMD128 || CV_SIMD128_CPP + CV_DEF_REG_TRAITS(v, v_uint8x16, uchar, u8, v_uint8x16, v_uint16x8, v_uint32x4, v_int8x16, void); + CV_DEF_REG_TRAITS(v, v_int8x16, schar, s8, v_uint8x16, v_int16x8, v_int32x4, v_int8x16, void); + CV_DEF_REG_TRAITS(v, v_uint16x8, ushort, u16, v_uint16x8, v_uint32x4, v_uint64x2, v_int16x8, void); + CV_DEF_REG_TRAITS(v, v_int16x8, short, s16, v_uint16x8, v_int32x4, v_int64x2, v_int16x8, void); + CV_DEF_REG_TRAITS(v, v_uint32x4, unsigned, u32, v_uint32x4, v_uint64x2, void, v_int32x4, void); + CV_DEF_REG_TRAITS(v, v_int32x4, int, s32, v_uint32x4, v_int64x2, void, v_int32x4, void); +#if CV_SIMD128_64F + CV_DEF_REG_TRAITS(v, v_float32x4, float, f32, v_float32x4, v_float64x2, void, v_int32x4, v_int32x4); +#else + CV_DEF_REG_TRAITS(v, v_float32x4, float, f32, v_float32x4, void, void, v_int32x4, v_int32x4); +#endif + CV_DEF_REG_TRAITS(v, v_uint64x2, uint64, u64, v_uint64x2, void, void, v_int64x2, void); + CV_DEF_REG_TRAITS(v, v_int64x2, int64, s64, v_uint64x2, void, void, v_int64x2, void); +#if CV_SIMD128_64F + CV_DEF_REG_TRAITS(v, v_float64x2, double, f64, v_float64x2, void, void, v_int64x2, v_int32x4); +#endif +#endif + +#if CV_SIMD256 + CV_DEF_REG_TRAITS(v256, v_uint8x32, uchar, u8, v_uint8x32, v_uint16x16, v_uint32x8, v_int8x32, void); + CV_DEF_REG_TRAITS(v256, v_int8x32, schar, s8, v_uint8x32, v_int16x16, v_int32x8, v_int8x32, void); + CV_DEF_REG_TRAITS(v256, v_uint16x16, ushort, u16, v_uint16x16, v_uint32x8, v_uint64x4, v_int16x16, void); + CV_DEF_REG_TRAITS(v256, v_int16x16, short, s16, v_uint16x16, v_int32x8, v_int64x4, v_int16x16, void); + CV_DEF_REG_TRAITS(v256, v_uint32x8, unsigned, u32, v_uint32x8, v_uint64x4, void, v_int32x8, void); + CV_DEF_REG_TRAITS(v256, v_int32x8, int, s32, v_uint32x8, v_int64x4, void, v_int32x8, void); + CV_DEF_REG_TRAITS(v256, v_float32x8, float, f32, v_float32x8, v_float64x4, void, v_int32x8, v_int32x8); + CV_DEF_REG_TRAITS(v256, v_uint64x4, uint64, u64, v_uint64x4, void, void, v_int64x4, void); + CV_DEF_REG_TRAITS(v256, v_int64x4, int64, s64, v_uint64x4, void, void, v_int64x4, void); + CV_DEF_REG_TRAITS(v256, v_float64x4, double, f64, v_float64x4, void, void, v_int64x4, v_int32x8); +#endif + +#if CV_SIMD512 && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 512) +#define CV__SIMD_NAMESPACE simd512 +namespace CV__SIMD_NAMESPACE { + #define CV_SIMD 1 + #define CV_SIMD_64F CV_SIMD512_64F + #define CV_SIMD_WIDTH 64 + // TODO typedef v_uint8 / v_int32 / etc types here +} // namespace +using namespace CV__SIMD_NAMESPACE; +#elif CV_SIMD256 && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 256) +#define CV__SIMD_NAMESPACE simd256 +namespace CV__SIMD_NAMESPACE { + #define CV_SIMD 1 + #define CV_SIMD_64F CV_SIMD256_64F + #define CV_SIMD_FP16 CV_SIMD256_FP16 + #define CV_SIMD_WIDTH 32 + typedef v_uint8x32 v_uint8; + typedef v_int8x32 v_int8; + typedef v_uint16x16 v_uint16; + typedef v_int16x16 v_int16; + typedef v_uint32x8 v_uint32; + typedef v_int32x8 v_int32; + typedef v_uint64x4 v_uint64; + typedef v_int64x4 v_int64; + typedef v_float32x8 v_float32; + CV_INTRIN_DEFINE_WIDE_INTRIN_ALL_TYPES(v256) + #if CV_SIMD256_64F + typedef v_float64x4 v_float64; + CV_INTRIN_DEFINE_WIDE_INTRIN(double, v_float64, f64, v256, load) + #endif + inline void vx_cleanup() { v256_cleanup(); } +} // namespace +using namespace CV__SIMD_NAMESPACE; +#elif (CV_SIMD128 || CV_SIMD128_CPP) && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 128) +#define CV__SIMD_NAMESPACE simd128 +namespace CV__SIMD_NAMESPACE { + #define CV_SIMD CV_SIMD128 + #define CV_SIMD_64F CV_SIMD128_64F + #define CV_SIMD_WIDTH 16 + typedef v_uint8x16 v_uint8; + typedef v_int8x16 v_int8; + typedef v_uint16x8 v_uint16; + typedef v_int16x8 v_int16; + typedef v_uint32x4 v_uint32; + typedef v_int32x4 v_int32; + typedef v_uint64x2 v_uint64; + typedef v_int64x2 v_int64; + typedef v_float32x4 v_float32; + CV_INTRIN_DEFINE_WIDE_INTRIN_ALL_TYPES(v) + #if CV_SIMD128_64F + typedef v_float64x2 v_float64; + CV_INTRIN_DEFINE_WIDE_INTRIN(double, v_float64, f64, v, load) + #endif + inline void vx_cleanup() { v_cleanup(); } +} // namespace +using namespace CV__SIMD_NAMESPACE; +#endif + +inline unsigned int trailingZeros32(unsigned int value) { +#if defined(_MSC_VER) +#if (_MSC_VER < 1700) || defined(_M_ARM) + unsigned long index = 0; + _BitScanForward(&index, value); + return (unsigned int)index; +#elif defined(__clang__) + // clang-cl doesn't export _tzcnt_u32 for non BMI systems + return value ? __builtin_ctz(value) : 32; +#else + return _tzcnt_u32(value); +#endif +#elif defined(__GNUC__) || defined(__GNUG__) + return __builtin_ctz(value); +#elif defined(__ICC) || defined(__INTEL_COMPILER) + return _bit_scan_forward(value); +#elif defined(__clang__) + return llvm.cttz.i32(value, true); +#else + static const int MultiplyDeBruijnBitPosition[32] = { + 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, + 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9 }; + return MultiplyDeBruijnBitPosition[((uint32_t)((value & -value) * 0x077CB531U)) >> 27]; +#endif +} + +#ifndef CV_DOXYGEN +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END +#endif + +#ifndef CV_SIMD_64F +#define CV_SIMD_64F 0 +#endif + +#ifndef CV_SIMD_FP16 +#define CV_SIMD_FP16 0 //!< Defined to 1 on native support of operations with float16x8_t / float16x16_t (SIMD256) types +#endif + + +#ifndef CV_SIMD +#define CV_SIMD 0 +#endif + +} // cv:: + +//! @endcond + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_avx.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_avx.hpp new file mode 100644 index 0000000..58db714 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_avx.hpp @@ -0,0 +1,2772 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +#ifndef OPENCV_HAL_INTRIN_AVX_HPP +#define OPENCV_HAL_INTRIN_AVX_HPP + +#define CV_SIMD256 1 +#define CV_SIMD256_64F 1 +#define CV_SIMD256_FP16 0 // no native operations with FP16 type. Only load/store from float32x8 are available (if CV_FP16 == 1) + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +///////// Utils //////////// + +inline __m256i _v256_combine(const __m128i& lo, const __m128i& hi) +{ return _mm256_inserti128_si256(_mm256_castsi128_si256(lo), hi, 1); } + +inline __m256 _v256_combine(const __m128& lo, const __m128& hi) +{ return _mm256_insertf128_ps(_mm256_castps128_ps256(lo), hi, 1); } + +inline __m256d _v256_combine(const __m128d& lo, const __m128d& hi) +{ return _mm256_insertf128_pd(_mm256_castpd128_pd256(lo), hi, 1); } + +inline int _v_cvtsi256_si32(const __m256i& a) +{ return _mm_cvtsi128_si32(_mm256_castsi256_si128(a)); } + +inline __m256i _v256_shuffle_odd_64(const __m256i& v) +{ return _mm256_permute4x64_epi64(v, _MM_SHUFFLE(3, 1, 2, 0)); } + +inline __m256d _v256_shuffle_odd_64(const __m256d& v) +{ return _mm256_permute4x64_pd(v, _MM_SHUFFLE(3, 1, 2, 0)); } + +template +inline __m256i _v256_permute2x128(const __m256i& a, const __m256i& b) +{ return _mm256_permute2x128_si256(a, b, imm); } + +template +inline __m256 _v256_permute2x128(const __m256& a, const __m256& b) +{ return _mm256_permute2f128_ps(a, b, imm); } + +template +inline __m256d _v256_permute2x128(const __m256d& a, const __m256d& b) +{ return _mm256_permute2f128_pd(a, b, imm); } + +template +inline _Tpvec v256_permute2x128(const _Tpvec& a, const _Tpvec& b) +{ return _Tpvec(_v256_permute2x128(a.val, b.val)); } + +template +inline __m256i _v256_permute4x64(const __m256i& a) +{ return _mm256_permute4x64_epi64(a, imm); } + +template +inline __m256d _v256_permute4x64(const __m256d& a) +{ return _mm256_permute4x64_pd(a, imm); } + +template +inline _Tpvec v256_permute4x64(const _Tpvec& a) +{ return _Tpvec(_v256_permute4x64(a.val)); } + +inline __m128i _v256_extract_high(const __m256i& v) +{ return _mm256_extracti128_si256(v, 1); } + +inline __m128 _v256_extract_high(const __m256& v) +{ return _mm256_extractf128_ps(v, 1); } + +inline __m128d _v256_extract_high(const __m256d& v) +{ return _mm256_extractf128_pd(v, 1); } + +inline __m128i _v256_extract_low(const __m256i& v) +{ return _mm256_castsi256_si128(v); } + +inline __m128 _v256_extract_low(const __m256& v) +{ return _mm256_castps256_ps128(v); } + +inline __m128d _v256_extract_low(const __m256d& v) +{ return _mm256_castpd256_pd128(v); } + +inline __m256i _v256_packs_epu32(const __m256i& a, const __m256i& b) +{ + const __m256i m = _mm256_set1_epi32(65535); + __m256i am = _mm256_min_epu32(a, m); + __m256i bm = _mm256_min_epu32(b, m); + return _mm256_packus_epi32(am, bm); +} + +///////// Types //////////// + +struct v_uint8x32 +{ + typedef uchar lane_type; + enum { nlanes = 32 }; + __m256i val; + + explicit v_uint8x32(__m256i v) : val(v) {} + v_uint8x32(uchar v0, uchar v1, uchar v2, uchar v3, + uchar v4, uchar v5, uchar v6, uchar v7, + uchar v8, uchar v9, uchar v10, uchar v11, + uchar v12, uchar v13, uchar v14, uchar v15, + uchar v16, uchar v17, uchar v18, uchar v19, + uchar v20, uchar v21, uchar v22, uchar v23, + uchar v24, uchar v25, uchar v26, uchar v27, + uchar v28, uchar v29, uchar v30, uchar v31) + { + val = _mm256_setr_epi8((char)v0, (char)v1, (char)v2, (char)v3, + (char)v4, (char)v5, (char)v6 , (char)v7, (char)v8, (char)v9, + (char)v10, (char)v11, (char)v12, (char)v13, (char)v14, (char)v15, + (char)v16, (char)v17, (char)v18, (char)v19, (char)v20, (char)v21, + (char)v22, (char)v23, (char)v24, (char)v25, (char)v26, (char)v27, + (char)v28, (char)v29, (char)v30, (char)v31); + } + v_uint8x32() : val(_mm256_setzero_si256()) {} + uchar get0() const { return (uchar)_v_cvtsi256_si32(val); } +}; + +struct v_int8x32 +{ + typedef schar lane_type; + enum { nlanes = 32 }; + __m256i val; + + explicit v_int8x32(__m256i v) : val(v) {} + v_int8x32(schar v0, schar v1, schar v2, schar v3, + schar v4, schar v5, schar v6, schar v7, + schar v8, schar v9, schar v10, schar v11, + schar v12, schar v13, schar v14, schar v15, + schar v16, schar v17, schar v18, schar v19, + schar v20, schar v21, schar v22, schar v23, + schar v24, schar v25, schar v26, schar v27, + schar v28, schar v29, schar v30, schar v31) + { + val = _mm256_setr_epi8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, + v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31); + } + v_int8x32() : val(_mm256_setzero_si256()) {} + schar get0() const { return (schar)_v_cvtsi256_si32(val); } +}; + +struct v_uint16x16 +{ + typedef ushort lane_type; + enum { nlanes = 16 }; + __m256i val; + + explicit v_uint16x16(__m256i v) : val(v) {} + v_uint16x16(ushort v0, ushort v1, ushort v2, ushort v3, + ushort v4, ushort v5, ushort v6, ushort v7, + ushort v8, ushort v9, ushort v10, ushort v11, + ushort v12, ushort v13, ushort v14, ushort v15) + { + val = _mm256_setr_epi16((short)v0, (short)v1, (short)v2, (short)v3, + (short)v4, (short)v5, (short)v6, (short)v7, (short)v8, (short)v9, + (short)v10, (short)v11, (short)v12, (short)v13, (short)v14, (short)v15); + } + v_uint16x16() : val(_mm256_setzero_si256()) {} + ushort get0() const { return (ushort)_v_cvtsi256_si32(val); } +}; + +struct v_int16x16 +{ + typedef short lane_type; + enum { nlanes = 16 }; + __m256i val; + + explicit v_int16x16(__m256i v) : val(v) {} + v_int16x16(short v0, short v1, short v2, short v3, + short v4, short v5, short v6, short v7, + short v8, short v9, short v10, short v11, + short v12, short v13, short v14, short v15) + { + val = _mm256_setr_epi16(v0, v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15); + } + v_int16x16() : val(_mm256_setzero_si256()) {} + short get0() const { return (short)_v_cvtsi256_si32(val); } +}; + +struct v_uint32x8 +{ + typedef unsigned lane_type; + enum { nlanes = 8 }; + __m256i val; + + explicit v_uint32x8(__m256i v) : val(v) {} + v_uint32x8(unsigned v0, unsigned v1, unsigned v2, unsigned v3, + unsigned v4, unsigned v5, unsigned v6, unsigned v7) + { + val = _mm256_setr_epi32((unsigned)v0, (unsigned)v1, (unsigned)v2, + (unsigned)v3, (unsigned)v4, (unsigned)v5, (unsigned)v6, (unsigned)v7); + } + v_uint32x8() : val(_mm256_setzero_si256()) {} + unsigned get0() const { return (unsigned)_v_cvtsi256_si32(val); } +}; + +struct v_int32x8 +{ + typedef int lane_type; + enum { nlanes = 8 }; + __m256i val; + + explicit v_int32x8(__m256i v) : val(v) {} + v_int32x8(int v0, int v1, int v2, int v3, + int v4, int v5, int v6, int v7) + { + val = _mm256_setr_epi32(v0, v1, v2, v3, v4, v5, v6, v7); + } + v_int32x8() : val(_mm256_setzero_si256()) {} + int get0() const { return _v_cvtsi256_si32(val); } +}; + +struct v_float32x8 +{ + typedef float lane_type; + enum { nlanes = 8 }; + __m256 val; + + explicit v_float32x8(__m256 v) : val(v) {} + v_float32x8(float v0, float v1, float v2, float v3, + float v4, float v5, float v6, float v7) + { + val = _mm256_setr_ps(v0, v1, v2, v3, v4, v5, v6, v7); + } + v_float32x8() : val(_mm256_setzero_ps()) {} + float get0() const { return _mm_cvtss_f32(_mm256_castps256_ps128(val)); } +}; + +struct v_uint64x4 +{ + typedef uint64 lane_type; + enum { nlanes = 4 }; + __m256i val; + + explicit v_uint64x4(__m256i v) : val(v) {} + v_uint64x4(uint64 v0, uint64 v1, uint64 v2, uint64 v3) + { val = _mm256_setr_epi64x((int64)v0, (int64)v1, (int64)v2, (int64)v3); } + v_uint64x4() : val(_mm256_setzero_si256()) {} + uint64 get0() const + { + #if defined __x86_64__ || defined _M_X64 + return (uint64)_mm_cvtsi128_si64(_mm256_castsi256_si128(val)); + #else + int a = _mm_cvtsi128_si32(_mm256_castsi256_si128(val)); + int b = _mm_cvtsi128_si32(_mm256_castsi256_si128(_mm256_srli_epi64(val, 32))); + return (unsigned)a | ((uint64)(unsigned)b << 32); + #endif + } +}; + +struct v_int64x4 +{ + typedef int64 lane_type; + enum { nlanes = 4 }; + __m256i val; + + explicit v_int64x4(__m256i v) : val(v) {} + v_int64x4(int64 v0, int64 v1, int64 v2, int64 v3) + { val = _mm256_setr_epi64x(v0, v1, v2, v3); } + v_int64x4() : val(_mm256_setzero_si256()) {} + + int64 get0() const + { + #if defined __x86_64__ || defined _M_X64 + return (int64)_mm_cvtsi128_si64(_mm256_castsi256_si128(val)); + #else + int a = _mm_cvtsi128_si32(_mm256_castsi256_si128(val)); + int b = _mm_cvtsi128_si32(_mm256_castsi256_si128(_mm256_srli_epi64(val, 32))); + return (int64)((unsigned)a | ((uint64)(unsigned)b << 32)); + #endif + } +}; + +struct v_float64x4 +{ + typedef double lane_type; + enum { nlanes = 4 }; + __m256d val; + + explicit v_float64x4(__m256d v) : val(v) {} + v_float64x4(double v0, double v1, double v2, double v3) + { val = _mm256_setr_pd(v0, v1, v2, v3); } + v_float64x4() : val(_mm256_setzero_pd()) {} + double get0() const { return _mm_cvtsd_f64(_mm256_castpd256_pd128(val)); } +}; + +//////////////// Load and store operations /////////////// + +#define OPENCV_HAL_IMPL_AVX_LOADSTORE(_Tpvec, _Tp) \ + inline _Tpvec v256_load(const _Tp* ptr) \ + { return _Tpvec(_mm256_loadu_si256((const __m256i*)ptr)); } \ + inline _Tpvec v256_load_aligned(const _Tp* ptr) \ + { return _Tpvec(_mm256_load_si256((const __m256i*)ptr)); } \ + inline _Tpvec v256_load_low(const _Tp* ptr) \ + { \ + __m128i v128 = _mm_loadu_si128((const __m128i*)ptr); \ + return _Tpvec(_mm256_castsi128_si256(v128)); \ + } \ + inline _Tpvec v256_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ + { \ + __m128i vlo = _mm_loadu_si128((const __m128i*)ptr0); \ + __m128i vhi = _mm_loadu_si128((const __m128i*)ptr1); \ + return _Tpvec(_v256_combine(vlo, vhi)); \ + } \ + inline void v_store(_Tp* ptr, const _Tpvec& a) \ + { _mm256_storeu_si256((__m256i*)ptr, a.val); } \ + inline void v_store_aligned(_Tp* ptr, const _Tpvec& a) \ + { _mm256_store_si256((__m256i*)ptr, a.val); } \ + inline void v_store_aligned_nocache(_Tp* ptr, const _Tpvec& a) \ + { _mm256_stream_si256((__m256i*)ptr, a.val); } \ + inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode mode) \ + { \ + if( mode == hal::STORE_UNALIGNED ) \ + _mm256_storeu_si256((__m256i*)ptr, a.val); \ + else if( mode == hal::STORE_ALIGNED_NOCACHE ) \ + _mm256_stream_si256((__m256i*)ptr, a.val); \ + else \ + _mm256_store_si256((__m256i*)ptr, a.val); \ + } \ + inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ + { _mm_storeu_si128((__m128i*)ptr, _v256_extract_low(a.val)); } \ + inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ + { _mm_storeu_si128((__m128i*)ptr, _v256_extract_high(a.val)); } + +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_uint8x32, uchar) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_int8x32, schar) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_uint16x16, ushort) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_int16x16, short) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_uint32x8, unsigned) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_int32x8, int) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_uint64x4, uint64) +OPENCV_HAL_IMPL_AVX_LOADSTORE(v_int64x4, int64) + +#define OPENCV_HAL_IMPL_AVX_LOADSTORE_FLT(_Tpvec, _Tp, suffix, halfreg) \ + inline _Tpvec v256_load(const _Tp* ptr) \ + { return _Tpvec(_mm256_loadu_##suffix(ptr)); } \ + inline _Tpvec v256_load_aligned(const _Tp* ptr) \ + { return _Tpvec(_mm256_load_##suffix(ptr)); } \ + inline _Tpvec v256_load_low(const _Tp* ptr) \ + { \ + return _Tpvec(_mm256_cast##suffix##128_##suffix##256 \ + (_mm_loadu_##suffix(ptr))); \ + } \ + inline _Tpvec v256_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ + { \ + halfreg vlo = _mm_loadu_##suffix(ptr0); \ + halfreg vhi = _mm_loadu_##suffix(ptr1); \ + return _Tpvec(_v256_combine(vlo, vhi)); \ + } \ + inline void v_store(_Tp* ptr, const _Tpvec& a) \ + { _mm256_storeu_##suffix(ptr, a.val); } \ + inline void v_store_aligned(_Tp* ptr, const _Tpvec& a) \ + { _mm256_store_##suffix(ptr, a.val); } \ + inline void v_store_aligned_nocache(_Tp* ptr, const _Tpvec& a) \ + { _mm256_stream_##suffix(ptr, a.val); } \ + inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode mode) \ + { \ + if( mode == hal::STORE_UNALIGNED ) \ + _mm256_storeu_##suffix(ptr, a.val); \ + else if( mode == hal::STORE_ALIGNED_NOCACHE ) \ + _mm256_stream_##suffix(ptr, a.val); \ + else \ + _mm256_store_##suffix(ptr, a.val); \ + } \ + inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ + { _mm_storeu_##suffix(ptr, _v256_extract_low(a.val)); } \ + inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ + { _mm_storeu_##suffix(ptr, _v256_extract_high(a.val)); } + +OPENCV_HAL_IMPL_AVX_LOADSTORE_FLT(v_float32x8, float, ps, __m128) +OPENCV_HAL_IMPL_AVX_LOADSTORE_FLT(v_float64x4, double, pd, __m128d) + +#define OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, _Tpvecf, suffix, cast) \ + inline _Tpvec v_reinterpret_as_##suffix(const _Tpvecf& a) \ + { return _Tpvec(cast(a.val)); } + +#define OPENCV_HAL_IMPL_AVX_INIT(_Tpvec, _Tp, suffix, ssuffix, ctype_s) \ + inline _Tpvec v256_setzero_##suffix() \ + { return _Tpvec(_mm256_setzero_si256()); } \ + inline _Tpvec v256_setall_##suffix(_Tp v) \ + { return _Tpvec(_mm256_set1_##ssuffix((ctype_s)v)); } \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint8x32, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int8x32, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint16x16, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int16x16, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint32x8, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int32x8, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint64x4, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int64x4, suffix, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_float32x8, suffix, _mm256_castps_si256) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_float64x4, suffix, _mm256_castpd_si256) + +OPENCV_HAL_IMPL_AVX_INIT(v_uint8x32, uchar, u8, epi8, char) +OPENCV_HAL_IMPL_AVX_INIT(v_int8x32, schar, s8, epi8, char) +OPENCV_HAL_IMPL_AVX_INIT(v_uint16x16, ushort, u16, epi16, short) +OPENCV_HAL_IMPL_AVX_INIT(v_int16x16, short, s16, epi16, short) +OPENCV_HAL_IMPL_AVX_INIT(v_uint32x8, unsigned, u32, epi32, int) +OPENCV_HAL_IMPL_AVX_INIT(v_int32x8, int, s32, epi32, int) +OPENCV_HAL_IMPL_AVX_INIT(v_uint64x4, uint64, u64, epi64x, int64) +OPENCV_HAL_IMPL_AVX_INIT(v_int64x4, int64, s64, epi64x, int64) + +#define OPENCV_HAL_IMPL_AVX_INIT_FLT(_Tpvec, _Tp, suffix, zsuffix, cast) \ + inline _Tpvec v256_setzero_##suffix() \ + { return _Tpvec(_mm256_setzero_##zsuffix()); } \ + inline _Tpvec v256_setall_##suffix(_Tp v) \ + { return _Tpvec(_mm256_set1_##zsuffix(v)); } \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint8x32, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int8x32, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint16x16, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int16x16, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint32x8, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int32x8, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_uint64x4, suffix, cast) \ + OPENCV_HAL_IMPL_AVX_CAST(_Tpvec, v_int64x4, suffix, cast) + +OPENCV_HAL_IMPL_AVX_INIT_FLT(v_float32x8, float, f32, ps, _mm256_castsi256_ps) +OPENCV_HAL_IMPL_AVX_INIT_FLT(v_float64x4, double, f64, pd, _mm256_castsi256_pd) + +inline v_float32x8 v_reinterpret_as_f32(const v_float32x8& a) +{ return a; } +inline v_float32x8 v_reinterpret_as_f32(const v_float64x4& a) +{ return v_float32x8(_mm256_castpd_ps(a.val)); } + +inline v_float64x4 v_reinterpret_as_f64(const v_float64x4& a) +{ return a; } +inline v_float64x4 v_reinterpret_as_f64(const v_float32x8& a) +{ return v_float64x4(_mm256_castps_pd(a.val)); } + +#if CV_FP16 +inline v_float32x8 v256_load_fp16_f32(const short* ptr) +{ + return v_float32x8(_mm256_cvtph_ps(_mm_loadu_si128((const __m128i*)ptr))); +} + +inline void v_store_fp16(short* ptr, const v_float32x8& a) +{ + __m128i fp16_value = _mm256_cvtps_ph(a.val, 0); + _mm_store_si128((__m128i*)ptr, fp16_value); +} +#endif + +/* Recombine */ +/*#define OPENCV_HAL_IMPL_AVX_COMBINE(_Tpvec, perm) \ + inline _Tpvec v_combine_low(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(perm(a.val, b.val, 0x20)); } \ + inline _Tpvec v_combine_high(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(perm(a.val, b.val, 0x31)); } \ + inline void v_recombine(const _Tpvec& a, const _Tpvec& b, \ + _Tpvec& c, _Tpvec& d) \ + { c = v_combine_low(a, b); d = v_combine_high(a, b); } + +#define OPENCV_HAL_IMPL_AVX_UNPACKS(_Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_COMBINE(_Tpvec, _mm256_permute2x128_si256) \ + inline void v_zip(const _Tpvec& a0, const _Tpvec& a1, \ + _Tpvec& b0, _Tpvec& b1) \ + { \ + __m256i v0 = _v256_shuffle_odd_64(a0.val); \ + __m256i v1 = _v256_shuffle_odd_64(a1.val); \ + b0.val = _mm256_unpacklo_##suffix(v0, v1); \ + b1.val = _mm256_unpackhi_##suffix(v0, v1); \ + } + +OPENCV_HAL_IMPL_AVX_UNPACKS(v_uint8x32, epi8) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_int8x32, epi8) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_uint16x16, epi16) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_int16x16, epi16) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_uint32x8, epi32) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_int32x8, epi32) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_uint64x4, epi64) +OPENCV_HAL_IMPL_AVX_UNPACKS(v_int64x4, epi64) +OPENCV_HAL_IMPL_AVX_COMBINE(v_float32x8, _mm256_permute2f128_ps) +OPENCV_HAL_IMPL_AVX_COMBINE(v_float64x4, _mm256_permute2f128_pd) + +inline void v_zip(const v_float32x8& a0, const v_float32x8& a1, v_float32x8& b0, v_float32x8& b1) +{ + __m256 v0 = _mm256_unpacklo_ps(a0.val, a1.val); + __m256 v1 = _mm256_unpackhi_ps(a0.val, a1.val); + v_recombine(v_float32x8(v0), v_float32x8(v1), b0, b1); +} + +inline void v_zip(const v_float64x4& a0, const v_float64x4& a1, v_float64x4& b0, v_float64x4& b1) +{ + __m256d v0 = _v_shuffle_odd_64(a0.val); + __m256d v1 = _v_shuffle_odd_64(a1.val); + b0.val = _mm256_unpacklo_pd(v0, v1); + b1.val = _mm256_unpackhi_pd(v0, v1); +}*/ + +//////////////// Variant Value reordering /////////////// + +// unpacks +#define OPENCV_HAL_IMPL_AVX_UNPACK(_Tpvec, suffix) \ + inline _Tpvec v256_unpacklo(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_unpacklo_##suffix(a.val, b.val)); } \ + inline _Tpvec v256_unpackhi(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_unpackhi_##suffix(a.val, b.val)); } + +OPENCV_HAL_IMPL_AVX_UNPACK(v_uint8x32, epi8) +OPENCV_HAL_IMPL_AVX_UNPACK(v_int8x32, epi8) +OPENCV_HAL_IMPL_AVX_UNPACK(v_uint16x16, epi16) +OPENCV_HAL_IMPL_AVX_UNPACK(v_int16x16, epi16) +OPENCV_HAL_IMPL_AVX_UNPACK(v_uint32x8, epi32) +OPENCV_HAL_IMPL_AVX_UNPACK(v_int32x8, epi32) +OPENCV_HAL_IMPL_AVX_UNPACK(v_uint64x4, epi64) +OPENCV_HAL_IMPL_AVX_UNPACK(v_int64x4, epi64) +OPENCV_HAL_IMPL_AVX_UNPACK(v_float32x8, ps) +OPENCV_HAL_IMPL_AVX_UNPACK(v_float64x4, pd) + +// blend +#define OPENCV_HAL_IMPL_AVX_BLEND(_Tpvec, suffix) \ + template \ + inline _Tpvec v256_blend(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_blend_##suffix(a.val, b.val, m)); } + +OPENCV_HAL_IMPL_AVX_BLEND(v_uint16x16, epi16) +OPENCV_HAL_IMPL_AVX_BLEND(v_int16x16, epi16) +OPENCV_HAL_IMPL_AVX_BLEND(v_uint32x8, epi32) +OPENCV_HAL_IMPL_AVX_BLEND(v_int32x8, epi32) +OPENCV_HAL_IMPL_AVX_BLEND(v_float32x8, ps) +OPENCV_HAL_IMPL_AVX_BLEND(v_float64x4, pd) + +template +inline v_uint64x4 v256_blend(const v_uint64x4& a, const v_uint64x4& b) +{ + enum {M0 = m}; + enum {M1 = (M0 | (M0 << 2)) & 0x33}; + enum {M2 = (M1 | (M1 << 1)) & 0x55}; + enum {MM = M2 | (M2 << 1)}; + return v_uint64x4(_mm256_blend_epi32(a.val, b.val, MM)); +} +template +inline v_int64x4 v256_blend(const v_int64x4& a, const v_int64x4& b) +{ return v_int64x4(v256_blend(v_uint64x4(a.val), v_uint64x4(b.val)).val); } + +// shuffle +// todo: emluate 64bit +#define OPENCV_HAL_IMPL_AVX_SHUFFLE(_Tpvec, intrin) \ + template \ + inline _Tpvec v256_shuffle(const _Tpvec& a) \ + { return _Tpvec(_mm256_##intrin(a.val, m)); } + +OPENCV_HAL_IMPL_AVX_SHUFFLE(v_uint32x8, shuffle_epi32) +OPENCV_HAL_IMPL_AVX_SHUFFLE(v_int32x8, shuffle_epi32) +OPENCV_HAL_IMPL_AVX_SHUFFLE(v_float32x8, permute_ps) +OPENCV_HAL_IMPL_AVX_SHUFFLE(v_float64x4, permute_pd) + +template +inline void v256_zip(const _Tpvec& a, const _Tpvec& b, _Tpvec& ab0, _Tpvec& ab1) +{ + ab0 = v256_unpacklo(a, b); + ab1 = v256_unpackhi(a, b); +} + +template +inline _Tpvec v256_combine_diagonal(const _Tpvec& a, const _Tpvec& b) +{ return _Tpvec(_mm256_blend_epi32(a.val, b.val, 0xf0)); } + +inline v_float32x8 v256_combine_diagonal(const v_float32x8& a, const v_float32x8& b) +{ return v256_blend<0xf0>(a, b); } + +inline v_float64x4 v256_combine_diagonal(const v_float64x4& a, const v_float64x4& b) +{ return v256_blend<0xc>(a, b); } + +template +inline _Tpvec v256_alignr_128(const _Tpvec& a, const _Tpvec& b) +{ return v256_permute2x128<0x21>(a, b); } + +template +inline _Tpvec v256_alignr_64(const _Tpvec& a, const _Tpvec& b) +{ return _Tpvec(_mm256_alignr_epi8(a.val, b.val, 8)); } +inline v_float64x4 v256_alignr_64(const v_float64x4& a, const v_float64x4& b) +{ return v_float64x4(_mm256_shuffle_pd(b.val, a.val, _MM_SHUFFLE(0, 0, 1, 1))); } +// todo: emulate float32 + +template +inline _Tpvec v256_swap_halves(const _Tpvec& a) +{ return v256_permute2x128<1>(a, a); } + +template +inline _Tpvec v256_reverse_64(const _Tpvec& a) +{ return v256_permute4x64<_MM_SHUFFLE(0, 1, 2, 3)>(a); } + +// ZIP +#define OPENCV_HAL_IMPL_AVX_ZIP(_Tpvec) \ + inline _Tpvec v_combine_low(const _Tpvec& a, const _Tpvec& b) \ + { return v256_permute2x128<0x20>(a, b); } \ + inline _Tpvec v_combine_high(const _Tpvec& a, const _Tpvec& b) \ + { return v256_permute2x128<0x31>(a, b); } \ + inline void v_recombine(const _Tpvec& a, const _Tpvec& b, \ + _Tpvec& c, _Tpvec& d) \ + { \ + _Tpvec a1b0 = v256_alignr_128(a, b); \ + c = v256_combine_diagonal(a, a1b0); \ + d = v256_combine_diagonal(a1b0, b); \ + } \ + inline void v_zip(const _Tpvec& a, const _Tpvec& b, \ + _Tpvec& ab0, _Tpvec& ab1) \ + { \ + _Tpvec ab0ab2, ab1ab3; \ + v256_zip(a, b, ab0ab2, ab1ab3); \ + v_recombine(ab0ab2, ab1ab3, ab0, ab1); \ + } + +OPENCV_HAL_IMPL_AVX_ZIP(v_uint8x32) +OPENCV_HAL_IMPL_AVX_ZIP(v_int8x32) +OPENCV_HAL_IMPL_AVX_ZIP(v_uint16x16) +OPENCV_HAL_IMPL_AVX_ZIP(v_int16x16) +OPENCV_HAL_IMPL_AVX_ZIP(v_uint32x8) +OPENCV_HAL_IMPL_AVX_ZIP(v_int32x8) +OPENCV_HAL_IMPL_AVX_ZIP(v_uint64x4) +OPENCV_HAL_IMPL_AVX_ZIP(v_int64x4) +OPENCV_HAL_IMPL_AVX_ZIP(v_float32x8) +OPENCV_HAL_IMPL_AVX_ZIP(v_float64x4) + +////////// Arithmetic, bitwise and comparison operations ///////// + +/* Element-wise binary and unary operations */ + +/** Arithmetics **/ +#define OPENCV_HAL_IMPL_AVX_BIN_OP(bin_op, _Tpvec, intrin) \ + inline _Tpvec operator bin_op (const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(intrin(a.val, b.val)); } \ + inline _Tpvec& operator bin_op##= (_Tpvec& a, const _Tpvec& b) \ + { a.val = intrin(a.val, b.val); return a; } + +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_uint8x32, _mm256_adds_epu8) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_uint8x32, _mm256_subs_epu8) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_int8x32, _mm256_adds_epi8) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_int8x32, _mm256_subs_epi8) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_uint16x16, _mm256_adds_epu16) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_uint16x16, _mm256_subs_epu16) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_int16x16, _mm256_adds_epi16) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_int16x16, _mm256_subs_epi16) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_uint32x8, _mm256_add_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_uint32x8, _mm256_sub_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(*, v_uint32x8, _mm256_mullo_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_int32x8, _mm256_add_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_int32x8, _mm256_sub_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(*, v_int32x8, _mm256_mullo_epi32) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_uint64x4, _mm256_add_epi64) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_uint64x4, _mm256_sub_epi64) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_int64x4, _mm256_add_epi64) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_int64x4, _mm256_sub_epi64) + +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_float32x8, _mm256_add_ps) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_float32x8, _mm256_sub_ps) +OPENCV_HAL_IMPL_AVX_BIN_OP(*, v_float32x8, _mm256_mul_ps) +OPENCV_HAL_IMPL_AVX_BIN_OP(/, v_float32x8, _mm256_div_ps) +OPENCV_HAL_IMPL_AVX_BIN_OP(+, v_float64x4, _mm256_add_pd) +OPENCV_HAL_IMPL_AVX_BIN_OP(-, v_float64x4, _mm256_sub_pd) +OPENCV_HAL_IMPL_AVX_BIN_OP(*, v_float64x4, _mm256_mul_pd) +OPENCV_HAL_IMPL_AVX_BIN_OP(/, v_float64x4, _mm256_div_pd) + +// saturating multiply 8-bit, 16-bit +inline v_uint8x32 operator * (const v_uint8x32& a, const v_uint8x32& b) +{ + v_uint16x16 c, d; + v_mul_expand(a, b, c, d); + return v_pack(c, d); +} +inline v_int8x32 operator * (const v_int8x32& a, const v_int8x32& b) +{ + v_int16x16 c, d; + v_mul_expand(a, b, c, d); + return v_pack(c, d); +} +inline v_uint16x16 operator * (const v_uint16x16& a, const v_uint16x16& b) +{ + __m256i pl = _mm256_mullo_epi16(a.val, b.val); + __m256i ph = _mm256_mulhi_epu16(a.val, b.val); + __m256i p0 = _mm256_unpacklo_epi16(pl, ph); + __m256i p1 = _mm256_unpackhi_epi16(pl, ph); + return v_uint16x16(_v256_packs_epu32(p0, p1)); +} +inline v_int16x16 operator * (const v_int16x16& a, const v_int16x16& b) +{ + __m256i pl = _mm256_mullo_epi16(a.val, b.val); + __m256i ph = _mm256_mulhi_epi16(a.val, b.val); + __m256i p0 = _mm256_unpacklo_epi16(pl, ph); + __m256i p1 = _mm256_unpackhi_epi16(pl, ph); + return v_int16x16(_mm256_packs_epi32(p0, p1)); +} +inline v_uint8x32& operator *= (v_uint8x32& a, const v_uint8x32& b) +{ a = a * b; return a; } +inline v_int8x32& operator *= (v_int8x32& a, const v_int8x32& b) +{ a = a * b; return a; } +inline v_uint16x16& operator *= (v_uint16x16& a, const v_uint16x16& b) +{ a = a * b; return a; } +inline v_int16x16& operator *= (v_int16x16& a, const v_int16x16& b) +{ a = a * b; return a; } + +/** Non-saturating arithmetics **/ +#define OPENCV_HAL_IMPL_AVX_BIN_FUNC(func, _Tpvec, intrin) \ + inline _Tpvec func(const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(intrin(a.val, b.val)); } + +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_add_wrap, v_uint8x32, _mm256_add_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_add_wrap, v_int8x32, _mm256_add_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_add_wrap, v_uint16x16, _mm256_add_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_add_wrap, v_int16x16, _mm256_add_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_sub_wrap, v_uint8x32, _mm256_sub_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_sub_wrap, v_int8x32, _mm256_sub_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_sub_wrap, v_uint16x16, _mm256_sub_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_sub_wrap, v_int16x16, _mm256_sub_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_mul_wrap, v_uint16x16, _mm256_mullo_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_mul_wrap, v_int16x16, _mm256_mullo_epi16) + +inline v_uint8x32 v_mul_wrap(const v_uint8x32& a, const v_uint8x32& b) +{ + __m256i ad = _mm256_srai_epi16(a.val, 8); + __m256i bd = _mm256_srai_epi16(b.val, 8); + __m256i p0 = _mm256_mullo_epi16(a.val, b.val); // even + __m256i p1 = _mm256_slli_epi16(_mm256_mullo_epi16(ad, bd), 8); // odd + + const __m256i b01 = _mm256_set1_epi32(0xFF00FF00); + return v_uint8x32(_mm256_blendv_epi8(p0, p1, b01)); +} +inline v_int8x32 v_mul_wrap(const v_int8x32& a, const v_int8x32& b) +{ + return v_reinterpret_as_s8(v_mul_wrap(v_reinterpret_as_u8(a), v_reinterpret_as_u8(b))); +} + +// Multiply and expand +inline void v_mul_expand(const v_uint8x32& a, const v_uint8x32& b, + v_uint16x16& c, v_uint16x16& d) +{ + v_uint16x16 a0, a1, b0, b1; + v_expand(a, a0, a1); + v_expand(b, b0, b1); + c = v_mul_wrap(a0, b0); + d = v_mul_wrap(a1, b1); +} + +inline void v_mul_expand(const v_int8x32& a, const v_int8x32& b, + v_int16x16& c, v_int16x16& d) +{ + v_int16x16 a0, a1, b0, b1; + v_expand(a, a0, a1); + v_expand(b, b0, b1); + c = v_mul_wrap(a0, b0); + d = v_mul_wrap(a1, b1); +} + +inline void v_mul_expand(const v_int16x16& a, const v_int16x16& b, + v_int32x8& c, v_int32x8& d) +{ + v_int16x16 vhi = v_int16x16(_mm256_mulhi_epi16(a.val, b.val)); + + v_int16x16 v0, v1; + v_zip(v_mul_wrap(a, b), vhi, v0, v1); + + c = v_reinterpret_as_s32(v0); + d = v_reinterpret_as_s32(v1); +} + +inline void v_mul_expand(const v_uint16x16& a, const v_uint16x16& b, + v_uint32x8& c, v_uint32x8& d) +{ + v_uint16x16 vhi = v_uint16x16(_mm256_mulhi_epu16(a.val, b.val)); + + v_uint16x16 v0, v1; + v_zip(v_mul_wrap(a, b), vhi, v0, v1); + + c = v_reinterpret_as_u32(v0); + d = v_reinterpret_as_u32(v1); +} + +inline void v_mul_expand(const v_uint32x8& a, const v_uint32x8& b, + v_uint64x4& c, v_uint64x4& d) +{ + __m256i v0 = _mm256_mul_epu32(a.val, b.val); + __m256i v1 = _mm256_mul_epu32(_mm256_srli_epi64(a.val, 32), _mm256_srli_epi64(b.val, 32)); + v_zip(v_uint64x4(v0), v_uint64x4(v1), c, d); +} + +inline v_int16x16 v_mul_hi(const v_int16x16& a, const v_int16x16& b) { return v_int16x16(_mm256_mulhi_epi16(a.val, b.val)); } +inline v_uint16x16 v_mul_hi(const v_uint16x16& a, const v_uint16x16& b) { return v_uint16x16(_mm256_mulhi_epu16(a.val, b.val)); } + +/** Bitwise shifts **/ +#define OPENCV_HAL_IMPL_AVX_SHIFT_OP(_Tpuvec, _Tpsvec, suffix, srai) \ + inline _Tpuvec operator << (const _Tpuvec& a, int imm) \ + { return _Tpuvec(_mm256_slli_##suffix(a.val, imm)); } \ + inline _Tpsvec operator << (const _Tpsvec& a, int imm) \ + { return _Tpsvec(_mm256_slli_##suffix(a.val, imm)); } \ + inline _Tpuvec operator >> (const _Tpuvec& a, int imm) \ + { return _Tpuvec(_mm256_srli_##suffix(a.val, imm)); } \ + inline _Tpsvec operator >> (const _Tpsvec& a, int imm) \ + { return _Tpsvec(srai(a.val, imm)); } \ + template \ + inline _Tpuvec v_shl(const _Tpuvec& a) \ + { return _Tpuvec(_mm256_slli_##suffix(a.val, imm)); } \ + template \ + inline _Tpsvec v_shl(const _Tpsvec& a) \ + { return _Tpsvec(_mm256_slli_##suffix(a.val, imm)); } \ + template \ + inline _Tpuvec v_shr(const _Tpuvec& a) \ + { return _Tpuvec(_mm256_srli_##suffix(a.val, imm)); } \ + template \ + inline _Tpsvec v_shr(const _Tpsvec& a) \ + { return _Tpsvec(srai(a.val, imm)); } + +OPENCV_HAL_IMPL_AVX_SHIFT_OP(v_uint16x16, v_int16x16, epi16, _mm256_srai_epi16) +OPENCV_HAL_IMPL_AVX_SHIFT_OP(v_uint32x8, v_int32x8, epi32, _mm256_srai_epi32) + +inline __m256i _mm256_srai_epi64xx(const __m256i a, int imm) +{ + __m256i d = _mm256_set1_epi64x((int64)1 << 63); + __m256i r = _mm256_srli_epi64(_mm256_add_epi64(a, d), imm); + return _mm256_sub_epi64(r, _mm256_srli_epi64(d, imm)); +} +OPENCV_HAL_IMPL_AVX_SHIFT_OP(v_uint64x4, v_int64x4, epi64, _mm256_srai_epi64xx) + + +/** Bitwise logic **/ +#define OPENCV_HAL_IMPL_AVX_LOGIC_OP(_Tpvec, suffix, not_const) \ + OPENCV_HAL_IMPL_AVX_BIN_OP(&, _Tpvec, _mm256_and_##suffix) \ + OPENCV_HAL_IMPL_AVX_BIN_OP(|, _Tpvec, _mm256_or_##suffix) \ + OPENCV_HAL_IMPL_AVX_BIN_OP(^, _Tpvec, _mm256_xor_##suffix) \ + inline _Tpvec operator ~ (const _Tpvec& a) \ + { return _Tpvec(_mm256_xor_##suffix(a.val, not_const)); } + +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_uint8x32, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_int8x32, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_uint16x16, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_int16x16, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_uint32x8, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_int32x8, si256, _mm256_set1_epi32(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_uint64x4, si256, _mm256_set1_epi64x(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_int64x4, si256, _mm256_set1_epi64x(-1)) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_float32x8, ps, _mm256_castsi256_ps(_mm256_set1_epi32(-1))) +OPENCV_HAL_IMPL_AVX_LOGIC_OP(v_float64x4, pd, _mm256_castsi256_pd(_mm256_set1_epi32(-1))) + +/** Select **/ +#define OPENCV_HAL_IMPL_AVX_SELECT(_Tpvec, suffix) \ + inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_blendv_##suffix(b.val, a.val, mask.val)); } + +OPENCV_HAL_IMPL_AVX_SELECT(v_uint8x32, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_int8x32, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_uint16x16, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_int16x16, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_uint32x8, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_int32x8, epi8) +OPENCV_HAL_IMPL_AVX_SELECT(v_float32x8, ps) +OPENCV_HAL_IMPL_AVX_SELECT(v_float64x4, pd) + +/** Comparison **/ +#define OPENCV_HAL_IMPL_AVX_CMP_OP_OV(_Tpvec) \ + inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ + { return ~(a == b); } \ + inline _Tpvec operator < (const _Tpvec& a, const _Tpvec& b) \ + { return b > a; } \ + inline _Tpvec operator >= (const _Tpvec& a, const _Tpvec& b) \ + { return ~(a < b); } \ + inline _Tpvec operator <= (const _Tpvec& a, const _Tpvec& b) \ + { return b >= a; } + +#define OPENCV_HAL_IMPL_AVX_CMP_OP_INT(_Tpuvec, _Tpsvec, suffix, sbit) \ + inline _Tpuvec operator == (const _Tpuvec& a, const _Tpuvec& b) \ + { return _Tpuvec(_mm256_cmpeq_##suffix(a.val, b.val)); } \ + inline _Tpuvec operator > (const _Tpuvec& a, const _Tpuvec& b) \ + { \ + __m256i smask = _mm256_set1_##suffix(sbit); \ + return _Tpuvec(_mm256_cmpgt_##suffix( \ + _mm256_xor_si256(a.val, smask), \ + _mm256_xor_si256(b.val, smask))); \ + } \ + inline _Tpsvec operator == (const _Tpsvec& a, const _Tpsvec& b) \ + { return _Tpsvec(_mm256_cmpeq_##suffix(a.val, b.val)); } \ + inline _Tpsvec operator > (const _Tpsvec& a, const _Tpsvec& b) \ + { return _Tpsvec(_mm256_cmpgt_##suffix(a.val, b.val)); } \ + OPENCV_HAL_IMPL_AVX_CMP_OP_OV(_Tpuvec) \ + OPENCV_HAL_IMPL_AVX_CMP_OP_OV(_Tpsvec) + +OPENCV_HAL_IMPL_AVX_CMP_OP_INT(v_uint8x32, v_int8x32, epi8, (char)-128) +OPENCV_HAL_IMPL_AVX_CMP_OP_INT(v_uint16x16, v_int16x16, epi16, (short)-32768) +OPENCV_HAL_IMPL_AVX_CMP_OP_INT(v_uint32x8, v_int32x8, epi32, (int)0x80000000) + +#define OPENCV_HAL_IMPL_AVX_CMP_OP_64BIT(_Tpvec) \ + inline _Tpvec operator == (const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_cmpeq_epi64(a.val, b.val)); } \ + inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ + { return ~(a == b); } + +OPENCV_HAL_IMPL_AVX_CMP_OP_64BIT(v_uint64x4) +OPENCV_HAL_IMPL_AVX_CMP_OP_64BIT(v_int64x4) + +#define OPENCV_HAL_IMPL_AVX_CMP_FLT(bin_op, imm8, _Tpvec, suffix) \ + inline _Tpvec operator bin_op (const _Tpvec& a, const _Tpvec& b) \ + { return _Tpvec(_mm256_cmp_##suffix(a.val, b.val, imm8)); } + +#define OPENCV_HAL_IMPL_AVX_CMP_OP_FLT(_Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(==, _CMP_EQ_OQ, _Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(!=, _CMP_NEQ_OQ, _Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(<, _CMP_LT_OQ, _Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(>, _CMP_GT_OQ, _Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(<=, _CMP_LE_OQ, _Tpvec, suffix) \ + OPENCV_HAL_IMPL_AVX_CMP_FLT(>=, _CMP_GE_OQ, _Tpvec, suffix) + +OPENCV_HAL_IMPL_AVX_CMP_OP_FLT(v_float32x8, ps) +OPENCV_HAL_IMPL_AVX_CMP_OP_FLT(v_float64x4, pd) + +inline v_float32x8 v_not_nan(const v_float32x8& a) +{ return v_float32x8(_mm256_cmp_ps(a.val, a.val, _CMP_ORD_Q)); } +inline v_float64x4 v_not_nan(const v_float64x4& a) +{ return v_float64x4(_mm256_cmp_pd(a.val, a.val, _CMP_ORD_Q)); } + +/** min/max **/ +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_uint8x32, _mm256_min_epu8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_uint8x32, _mm256_max_epu8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_int8x32, _mm256_min_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_int8x32, _mm256_max_epi8) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_uint16x16, _mm256_min_epu16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_uint16x16, _mm256_max_epu16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_int16x16, _mm256_min_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_int16x16, _mm256_max_epi16) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_uint32x8, _mm256_min_epu32) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_uint32x8, _mm256_max_epu32) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_int32x8, _mm256_min_epi32) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_int32x8, _mm256_max_epi32) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_float32x8, _mm256_min_ps) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_float32x8, _mm256_max_ps) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_min, v_float64x4, _mm256_min_pd) +OPENCV_HAL_IMPL_AVX_BIN_FUNC(v_max, v_float64x4, _mm256_max_pd) + +/** Rotate **/ +template +inline v_uint8x32 v_rotate_left(const v_uint8x32& a, const v_uint8x32& b) +{ + enum {IMM_R = (16 - imm) & 0xFF}; + enum {IMM_R2 = (32 - imm) & 0xFF}; + + if (imm == 0) return a; + if (imm == 32) return b; + if (imm > 32) return v_uint8x32(); + + __m256i swap = _mm256_permute2x128_si256(a.val, b.val, 0x03); + if (imm == 16) return v_uint8x32(swap); + if (imm < 16) return v_uint8x32(_mm256_alignr_epi8(a.val, swap, IMM_R)); + return v_uint8x32(_mm256_alignr_epi8(swap, b.val, IMM_R2)); // imm < 32 +} + +template +inline v_uint8x32 v_rotate_right(const v_uint8x32& a, const v_uint8x32& b) +{ + enum {IMM_L = (imm - 16) & 0xFF}; + + if (imm == 0) return a; + if (imm == 32) return b; + if (imm > 32) return v_uint8x32(); + + __m256i swap = _mm256_permute2x128_si256(a.val, b.val, 0x21); + if (imm == 16) return v_uint8x32(swap); + if (imm < 16) return v_uint8x32(_mm256_alignr_epi8(swap, a.val, imm)); + return v_uint8x32(_mm256_alignr_epi8(b.val, swap, IMM_L)); +} + +template +inline v_uint8x32 v_rotate_left(const v_uint8x32& a) +{ + enum {IMM_L = (imm - 16) & 0xFF}; + enum {IMM_R = (16 - imm) & 0xFF}; + + if (imm == 0) return a; + if (imm > 32) return v_uint8x32(); + + // ESAC control[3] ? [127:0] = 0 + __m256i swapz = _mm256_permute2x128_si256(a.val, a.val, _MM_SHUFFLE(0, 0, 2, 0)); + if (imm == 16) return v_uint8x32(swapz); + if (imm < 16) return v_uint8x32(_mm256_alignr_epi8(a.val, swapz, IMM_R)); + return v_uint8x32(_mm256_slli_si256(swapz, IMM_L)); +} + +template +inline v_uint8x32 v_rotate_right(const v_uint8x32& a) +{ + enum {IMM_L = (imm - 16) & 0xFF}; + + if (imm == 0) return a; + if (imm > 32) return v_uint8x32(); + + // ESAC control[3] ? [127:0] = 0 + __m256i swapz = _mm256_permute2x128_si256(a.val, a.val, _MM_SHUFFLE(2, 0, 0, 1)); + if (imm == 16) return v_uint8x32(swapz); + if (imm < 16) return v_uint8x32(_mm256_alignr_epi8(swapz, a.val, imm)); + return v_uint8x32(_mm256_srli_si256(swapz, IMM_L)); +} + +#define OPENCV_HAL_IMPL_AVX_ROTATE_CAST(intrin, _Tpvec, cast) \ + template \ + inline _Tpvec intrin(const _Tpvec& a, const _Tpvec& b) \ + { \ + enum {IMMxW = imm * sizeof(typename _Tpvec::lane_type)}; \ + v_uint8x32 ret = intrin(v_reinterpret_as_u8(a), \ + v_reinterpret_as_u8(b)); \ + return _Tpvec(cast(ret.val)); \ + } \ + template \ + inline _Tpvec intrin(const _Tpvec& a) \ + { \ + enum {IMMxW = imm * sizeof(typename _Tpvec::lane_type)}; \ + v_uint8x32 ret = intrin(v_reinterpret_as_u8(a)); \ + return _Tpvec(cast(ret.val)); \ + } + +#define OPENCV_HAL_IMPL_AVX_ROTATE(_Tpvec) \ + OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_left, _Tpvec, OPENCV_HAL_NOP) \ + OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_right, _Tpvec, OPENCV_HAL_NOP) + +OPENCV_HAL_IMPL_AVX_ROTATE(v_int8x32) +OPENCV_HAL_IMPL_AVX_ROTATE(v_uint16x16) +OPENCV_HAL_IMPL_AVX_ROTATE(v_int16x16) +OPENCV_HAL_IMPL_AVX_ROTATE(v_uint32x8) +OPENCV_HAL_IMPL_AVX_ROTATE(v_int32x8) +OPENCV_HAL_IMPL_AVX_ROTATE(v_uint64x4) +OPENCV_HAL_IMPL_AVX_ROTATE(v_int64x4) + +OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_left, v_float32x8, _mm256_castsi256_ps) +OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_right, v_float32x8, _mm256_castsi256_ps) +OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_left, v_float64x4, _mm256_castsi256_pd) +OPENCV_HAL_IMPL_AVX_ROTATE_CAST(v_rotate_right, v_float64x4, _mm256_castsi256_pd) + +////////// Reduce and mask ///////// + +/** Reduce **/ +#define OPENCV_HAL_IMPL_AVX_REDUCE_16(_Tpvec, sctype, func, intrin) \ + inline sctype v_reduce_##func(const _Tpvec& a) \ + { \ + __m128i v0 = _v256_extract_low(a.val); \ + __m128i v1 = _v256_extract_high(a.val); \ + v0 = intrin(v0, v1); \ + v0 = intrin(v0, _mm_srli_si128(v0, 8)); \ + v0 = intrin(v0, _mm_srli_si128(v0, 4)); \ + v0 = intrin(v0, _mm_srli_si128(v0, 2)); \ + return (sctype) _mm_cvtsi128_si32(v0); \ + } + +OPENCV_HAL_IMPL_AVX_REDUCE_16(v_uint16x16, ushort, min, _mm_min_epu16) +OPENCV_HAL_IMPL_AVX_REDUCE_16(v_int16x16, short, min, _mm_min_epi16) +OPENCV_HAL_IMPL_AVX_REDUCE_16(v_uint16x16, ushort, max, _mm_max_epu16) +OPENCV_HAL_IMPL_AVX_REDUCE_16(v_int16x16, short, max, _mm_max_epi16) + +#define OPENCV_HAL_IMPL_AVX_REDUCE_8(_Tpvec, sctype, func, intrin) \ + inline sctype v_reduce_##func(const _Tpvec& a) \ + { \ + __m128i v0 = _v256_extract_low(a.val); \ + __m128i v1 = _v256_extract_high(a.val); \ + v0 = intrin(v0, v1); \ + v0 = intrin(v0, _mm_srli_si128(v0, 8)); \ + v0 = intrin(v0, _mm_srli_si128(v0, 4)); \ + return (sctype) _mm_cvtsi128_si32(v0); \ + } + +OPENCV_HAL_IMPL_AVX_REDUCE_8(v_uint32x8, unsigned, min, _mm_min_epu32) +OPENCV_HAL_IMPL_AVX_REDUCE_8(v_int32x8, int, min, _mm_min_epi32) +OPENCV_HAL_IMPL_AVX_REDUCE_8(v_uint32x8, unsigned, max, _mm_max_epu32) +OPENCV_HAL_IMPL_AVX_REDUCE_8(v_int32x8, int, max, _mm_max_epi32) + +#define OPENCV_HAL_IMPL_AVX_REDUCE_FLT(func, intrin) \ + inline float v_reduce_##func(const v_float32x8& a) \ + { \ + __m128 v0 = _v256_extract_low(a.val); \ + __m128 v1 = _v256_extract_high(a.val); \ + v0 = intrin(v0, v1); \ + v0 = intrin(v0, _mm_permute_ps(v0, _MM_SHUFFLE(0, 0, 3, 2))); \ + v0 = intrin(v0, _mm_permute_ps(v0, _MM_SHUFFLE(0, 0, 0, 3))); \ + return _mm_cvtss_f32(v0); \ + } + +OPENCV_HAL_IMPL_AVX_REDUCE_FLT(min, _mm_min_ps) +OPENCV_HAL_IMPL_AVX_REDUCE_FLT(max, _mm_max_ps) + +inline ushort v_reduce_sum(const v_uint16x16& a) +{ + __m128i a0 = _v256_extract_low(a.val); + __m128i a1 = _v256_extract_high(a.val); + + __m128i s0 = _mm_adds_epu16(a0, a1); + s0 = _mm_adds_epu16(s0, _mm_srli_si128(s0, 8)); + s0 = _mm_adds_epu16(s0, _mm_srli_si128(s0, 4)); + s0 = _mm_adds_epu16(s0, _mm_srli_si128(s0, 2)); + + return (ushort)_mm_cvtsi128_si32(s0); +} + +inline short v_reduce_sum(const v_int16x16& a) +{ + __m256i s0 = _mm256_hadds_epi16(a.val, a.val); + s0 = _mm256_hadds_epi16(s0, s0); + s0 = _mm256_hadds_epi16(s0, s0); + + __m128i s1 = _v256_extract_high(s0); + s1 = _mm_adds_epi16(_v256_extract_low(s0), s1); + + return (short)_mm_cvtsi128_si32(s1); +} + +inline int v_reduce_sum(const v_int32x8& a) +{ + __m256i s0 = _mm256_hadd_epi32(a.val, a.val); + s0 = _mm256_hadd_epi32(s0, s0); + + __m128i s1 = _v256_extract_high(s0); + s1 = _mm_add_epi32(_v256_extract_low(s0), s1); + + return _mm_cvtsi128_si32(s1); +} + +inline unsigned v_reduce_sum(const v_uint32x8& a) +{ return v_reduce_sum(v_reinterpret_as_s32(a)); } + +inline float v_reduce_sum(const v_float32x8& a) +{ + __m256 s0 = _mm256_hadd_ps(a.val, a.val); + s0 = _mm256_hadd_ps(s0, s0); + + __m128 s1 = _v256_extract_high(s0); + s1 = _mm_add_ps(_v256_extract_low(s0), s1); + + return _mm_cvtss_f32(s1); +} + +inline double v_reduce_sum(const v_float64x4& a) +{ + __m256d s0 = _mm256_hadd_pd(a.val, a.val); + return _mm_cvtsd_f64(_mm_add_pd(_v256_extract_low(s0), _v256_extract_high(s0))); +} + +inline v_float32x8 v_reduce_sum4(const v_float32x8& a, const v_float32x8& b, + const v_float32x8& c, const v_float32x8& d) +{ + __m256 ab = _mm256_hadd_ps(a.val, b.val); + __m256 cd = _mm256_hadd_ps(c.val, d.val); + return v_float32x8(_mm256_hadd_ps(ab, cd)); +} + +inline unsigned v_reduce_sad(const v_uint8x32& a, const v_uint8x32& b) +{ + return (unsigned)_v_cvtsi256_si32(_mm256_sad_epu8(a.val, b.val)); +} +inline unsigned v_reduce_sad(const v_int8x32& a, const v_int8x32& b) +{ + __m256i half = _mm256_set1_epi8(0x7f); + return (unsigned)_v_cvtsi256_si32(_mm256_sad_epu8(_mm256_add_epi8(a.val, half), _mm256_add_epi8(b.val, half))); +} +inline unsigned v_reduce_sad(const v_uint16x16& a, const v_uint16x16& b) +{ + v_uint32x8 l, h; + v_expand(v_add_wrap(a - b, b - a), l, h); + return v_reduce_sum(l + h); +} +inline unsigned v_reduce_sad(const v_int16x16& a, const v_int16x16& b) +{ + v_uint32x8 l, h; + v_expand(v_reinterpret_as_u16(v_sub_wrap(v_max(a, b), v_min(a, b))), l, h); + return v_reduce_sum(l + h); +} +inline unsigned v_reduce_sad(const v_uint32x8& a, const v_uint32x8& b) +{ + return v_reduce_sum(v_max(a, b) - v_min(a, b)); +} +inline unsigned v_reduce_sad(const v_int32x8& a, const v_int32x8& b) +{ + v_int32x8 m = a < b; + return v_reduce_sum(v_reinterpret_as_u32(((a - b) ^ m) - m)); +} +inline float v_reduce_sad(const v_float32x8& a, const v_float32x8& b) +{ + return v_reduce_sum((a - b) & v_float32x8(_mm256_castsi256_ps(_mm256_set1_epi32(0x7fffffff)))); +} + +/** Popcount **/ +#define OPENCV_HAL_IMPL_AVX_POPCOUNT(_Tpvec) \ + inline v_uint32x8 v_popcount(const _Tpvec& a) \ + { \ + const v_uint32x8 m1 = v256_setall_u32(0x55555555); \ + const v_uint32x8 m2 = v256_setall_u32(0x33333333); \ + const v_uint32x8 m4 = v256_setall_u32(0x0f0f0f0f); \ + v_uint32x8 p = v_reinterpret_as_u32(a); \ + p = ((p >> 1) & m1) + (p & m1); \ + p = ((p >> 2) & m2) + (p & m2); \ + p = ((p >> 4) & m4) + (p & m4); \ + p.val = _mm256_sad_epu8(p.val, _mm256_setzero_si256()); \ + return p; \ + } + +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_uint8x32) +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_int8x32) +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_uint16x16) +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_int16x16) +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_uint32x8) +OPENCV_HAL_IMPL_AVX_POPCOUNT(v_int32x8) + +/** Mask **/ +inline int v_signmask(const v_int8x32& a) +{ return _mm256_movemask_epi8(a.val); } +inline int v_signmask(const v_uint8x32& a) +{ return v_signmask(v_reinterpret_as_s8(a)); } + +inline int v_signmask(const v_int16x16& a) +{ + v_int8x32 v = v_int8x32(_mm256_packs_epi16(a.val, a.val)); + return v_signmask(v) & 255; +} +inline int v_signmask(const v_uint16x16& a) +{ return v_signmask(v_reinterpret_as_s16(a)); } + +inline int v_signmask(const v_int32x8& a) +{ + __m256i a16 = _mm256_packs_epi32(a.val, a.val); + v_int8x32 v = v_int8x32(_mm256_packs_epi16(a16, a16)); + return v_signmask(v) & 15; +} +inline int v_signmask(const v_uint32x8& a) +{ return v_signmask(v_reinterpret_as_s32(a)); } + +inline int v_signmask(const v_float32x8& a) +{ return _mm256_movemask_ps(a.val); } +inline int v_signmask(const v_float64x4& a) +{ return _mm256_movemask_pd(a.val); } + +/** Checks **/ +#define OPENCV_HAL_IMPL_AVX_CHECK(_Tpvec, and_op, allmask) \ + inline bool v_check_all(const _Tpvec& a) \ + { \ + int mask = v_signmask(v_reinterpret_as_s8(a)); \ + return and_op(mask, allmask) == allmask; \ + } \ + inline bool v_check_any(const _Tpvec& a) \ + { \ + int mask = v_signmask(v_reinterpret_as_s8(a)); \ + return and_op(mask, allmask) != 0; \ + } + +OPENCV_HAL_IMPL_AVX_CHECK(v_uint8x32, OPENCV_HAL_1ST, -1) +OPENCV_HAL_IMPL_AVX_CHECK(v_int8x32, OPENCV_HAL_1ST, -1) +OPENCV_HAL_IMPL_AVX_CHECK(v_uint16x16, OPENCV_HAL_AND, (int)0xaaaa) +OPENCV_HAL_IMPL_AVX_CHECK(v_int16x16, OPENCV_HAL_AND, (int)0xaaaa) +OPENCV_HAL_IMPL_AVX_CHECK(v_uint32x8, OPENCV_HAL_AND, (int)0x8888) +OPENCV_HAL_IMPL_AVX_CHECK(v_int32x8, OPENCV_HAL_AND, (int)0x8888) + +#define OPENCV_HAL_IMPL_AVX_CHECK_FLT(_Tpvec, allmask) \ + inline bool v_check_all(const _Tpvec& a) \ + { \ + int mask = v_signmask(a); \ + return mask == allmask; \ + } \ + inline bool v_check_any(const _Tpvec& a) \ + { \ + int mask = v_signmask(a); \ + return mask != 0; \ + } + +OPENCV_HAL_IMPL_AVX_CHECK_FLT(v_float32x8, 255) +OPENCV_HAL_IMPL_AVX_CHECK_FLT(v_float64x4, 15) + + +////////// Other math ///////// + +/** Some frequent operations **/ +#define OPENCV_HAL_IMPL_AVX_MULADD(_Tpvec, suffix) \ + inline _Tpvec v_fma(const _Tpvec& a, const _Tpvec& b, const _Tpvec& c) \ + { return _Tpvec(_mm256_fmadd_##suffix(a.val, b.val, c.val)); } \ + inline _Tpvec v_muladd(const _Tpvec& a, const _Tpvec& b, const _Tpvec& c) \ + { return _Tpvec(_mm256_fmadd_##suffix(a.val, b.val, c.val)); } \ + inline _Tpvec v_sqrt(const _Tpvec& x) \ + { return _Tpvec(_mm256_sqrt_##suffix(x.val)); } \ + inline _Tpvec v_sqr_magnitude(const _Tpvec& a, const _Tpvec& b) \ + { return v_fma(a, a, b * b); } \ + inline _Tpvec v_magnitude(const _Tpvec& a, const _Tpvec& b) \ + { return v_sqrt(v_fma(a, a, b*b)); } + +OPENCV_HAL_IMPL_AVX_MULADD(v_float32x8, ps) +OPENCV_HAL_IMPL_AVX_MULADD(v_float64x4, pd) + +inline v_int32x8 v_fma(const v_int32x8& a, const v_int32x8& b, const v_int32x8& c) +{ + return a * b + c; +} + +inline v_int32x8 v_muladd(const v_int32x8& a, const v_int32x8& b, const v_int32x8& c) +{ + return v_fma(a, b, c); +} + +inline v_float32x8 v_invsqrt(const v_float32x8& x) +{ + v_float32x8 half = x * v256_setall_f32(0.5); + v_float32x8 t = v_float32x8(_mm256_rsqrt_ps(x.val)); + // todo: _mm256_fnmsub_ps + t *= v256_setall_f32(1.5) - ((t * t) * half); + return t; +} + +inline v_float64x4 v_invsqrt(const v_float64x4& x) +{ + return v256_setall_f64(1.) / v_sqrt(x); +} + +/** Absolute values **/ +#define OPENCV_HAL_IMPL_AVX_ABS(_Tpvec, suffix) \ + inline v_u##_Tpvec v_abs(const v_##_Tpvec& x) \ + { return v_u##_Tpvec(_mm256_abs_##suffix(x.val)); } + +OPENCV_HAL_IMPL_AVX_ABS(int8x32, epi8) +OPENCV_HAL_IMPL_AVX_ABS(int16x16, epi16) +OPENCV_HAL_IMPL_AVX_ABS(int32x8, epi32) + +inline v_float32x8 v_abs(const v_float32x8& x) +{ return x & v_float32x8(_mm256_castsi256_ps(_mm256_set1_epi32(0x7fffffff))); } +inline v_float64x4 v_abs(const v_float64x4& x) +{ return x & v_float64x4(_mm256_castsi256_pd(_mm256_srli_epi64(_mm256_set1_epi64x(-1), 1))); } + +/** Absolute difference **/ +inline v_uint8x32 v_absdiff(const v_uint8x32& a, const v_uint8x32& b) +{ return v_add_wrap(a - b, b - a); } +inline v_uint16x16 v_absdiff(const v_uint16x16& a, const v_uint16x16& b) +{ return v_add_wrap(a - b, b - a); } +inline v_uint32x8 v_absdiff(const v_uint32x8& a, const v_uint32x8& b) +{ return v_max(a, b) - v_min(a, b); } + +inline v_uint8x32 v_absdiff(const v_int8x32& a, const v_int8x32& b) +{ + v_int8x32 d = v_sub_wrap(a, b); + v_int8x32 m = a < b; + return v_reinterpret_as_u8(v_sub_wrap(d ^ m, m)); +} + +inline v_uint16x16 v_absdiff(const v_int16x16& a, const v_int16x16& b) +{ return v_reinterpret_as_u16(v_sub_wrap(v_max(a, b), v_min(a, b))); } + +inline v_uint32x8 v_absdiff(const v_int32x8& a, const v_int32x8& b) +{ + v_int32x8 d = a - b; + v_int32x8 m = a < b; + return v_reinterpret_as_u32((d ^ m) - m); +} + +inline v_float32x8 v_absdiff(const v_float32x8& a, const v_float32x8& b) +{ return v_abs(a - b); } + +inline v_float64x4 v_absdiff(const v_float64x4& a, const v_float64x4& b) +{ return v_abs(a - b); } + +/** Saturating absolute difference **/ +inline v_int8x32 v_absdiffs(const v_int8x32& a, const v_int8x32& b) +{ + v_int8x32 d = a - b; + v_int8x32 m = a < b; + return (d ^ m) - m; +} +inline v_int16x16 v_absdiffs(const v_int16x16& a, const v_int16x16& b) +{ return v_max(a, b) - v_min(a, b); } + +////////// Conversions ///////// + +/** Rounding **/ +inline v_int32x8 v_round(const v_float32x8& a) +{ return v_int32x8(_mm256_cvtps_epi32(a.val)); } + +inline v_int32x8 v_round(const v_float64x4& a) +{ return v_int32x8(_mm256_castsi128_si256(_mm256_cvtpd_epi32(a.val))); } + +inline v_int32x8 v_round(const v_float64x4& a, const v_float64x4& b) +{ + __m128i ai = _mm256_cvtpd_epi32(a.val), bi = _mm256_cvtpd_epi32(b.val); + return v_int32x8(_v256_combine(ai, bi)); +} + +inline v_int32x8 v_trunc(const v_float32x8& a) +{ return v_int32x8(_mm256_cvttps_epi32(a.val)); } + +inline v_int32x8 v_trunc(const v_float64x4& a) +{ return v_int32x8(_mm256_castsi128_si256(_mm256_cvttpd_epi32(a.val))); } + +inline v_int32x8 v_floor(const v_float32x8& a) +{ return v_int32x8(_mm256_cvttps_epi32(_mm256_floor_ps(a.val))); } + +inline v_int32x8 v_floor(const v_float64x4& a) +{ return v_trunc(v_float64x4(_mm256_floor_pd(a.val))); } + +inline v_int32x8 v_ceil(const v_float32x8& a) +{ return v_int32x8(_mm256_cvttps_epi32(_mm256_ceil_ps(a.val))); } + +inline v_int32x8 v_ceil(const v_float64x4& a) +{ return v_trunc(v_float64x4(_mm256_ceil_pd(a.val))); } + +/** To float **/ +inline v_float32x8 v_cvt_f32(const v_int32x8& a) +{ return v_float32x8(_mm256_cvtepi32_ps(a.val)); } + +inline v_float32x8 v_cvt_f32(const v_float64x4& a) +{ return v_float32x8(_mm256_castps128_ps256(_mm256_cvtpd_ps(a.val))); } + +inline v_float32x8 v_cvt_f32(const v_float64x4& a, const v_float64x4& b) +{ + __m128 af = _mm256_cvtpd_ps(a.val), bf = _mm256_cvtpd_ps(b.val); + return v_float32x8(_mm256_insertf128_ps(_mm256_castps128_ps256(af), bf, 1)); +} + +inline v_float64x4 v_cvt_f64(const v_int32x8& a) +{ return v_float64x4(_mm256_cvtepi32_pd(_v256_extract_low(a.val))); } + +inline v_float64x4 v_cvt_f64_high(const v_int32x8& a) +{ return v_float64x4(_mm256_cvtepi32_pd(_v256_extract_high(a.val))); } + +inline v_float64x4 v_cvt_f64(const v_float32x8& a) +{ return v_float64x4(_mm256_cvtps_pd(_v256_extract_low(a.val))); } + +inline v_float64x4 v_cvt_f64_high(const v_float32x8& a) +{ return v_float64x4(_mm256_cvtps_pd(_v256_extract_high(a.val))); } + +////////////// Lookup table access //////////////////// + +inline v_int8x32 v256_lut(const schar* tab, const int* idx) +{ + return v_int8x32(_mm256_setr_epi8(tab[idx[ 0]], tab[idx[ 1]], tab[idx[ 2]], tab[idx[ 3]], tab[idx[ 4]], tab[idx[ 5]], tab[idx[ 6]], tab[idx[ 7]], + tab[idx[ 8]], tab[idx[ 9]], tab[idx[10]], tab[idx[11]], tab[idx[12]], tab[idx[13]], tab[idx[14]], tab[idx[15]], + tab[idx[16]], tab[idx[17]], tab[idx[18]], tab[idx[19]], tab[idx[20]], tab[idx[21]], tab[idx[22]], tab[idx[23]], + tab[idx[24]], tab[idx[25]], tab[idx[26]], tab[idx[27]], tab[idx[28]], tab[idx[29]], tab[idx[30]], tab[idx[31]])); +} +inline v_int8x32 v256_lut_pairs(const schar* tab, const int* idx) +{ + return v_int8x32(_mm256_setr_epi16(*(const short*)(tab + idx[ 0]), *(const short*)(tab + idx[ 1]), *(const short*)(tab + idx[ 2]), *(const short*)(tab + idx[ 3]), + *(const short*)(tab + idx[ 4]), *(const short*)(tab + idx[ 5]), *(const short*)(tab + idx[ 6]), *(const short*)(tab + idx[ 7]), + *(const short*)(tab + idx[ 8]), *(const short*)(tab + idx[ 9]), *(const short*)(tab + idx[10]), *(const short*)(tab + idx[11]), + *(const short*)(tab + idx[12]), *(const short*)(tab + idx[13]), *(const short*)(tab + idx[14]), *(const short*)(tab + idx[15]))); +} +inline v_int8x32 v256_lut_quads(const schar* tab, const int* idx) +{ + return v_int8x32(_mm256_i32gather_epi32((const int*)tab, _mm256_loadu_si256((const __m256i*)idx), 1)); +} +inline v_uint8x32 v256_lut(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v256_lut((const schar *)tab, idx)); } +inline v_uint8x32 v256_lut_pairs(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v256_lut_pairs((const schar *)tab, idx)); } +inline v_uint8x32 v256_lut_quads(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v256_lut_quads((const schar *)tab, idx)); } + +inline v_int16x16 v256_lut(const short* tab, const int* idx) +{ + return v_int16x16(_mm256_setr_epi16(tab[idx[0]], tab[idx[1]], tab[idx[ 2]], tab[idx[ 3]], tab[idx[ 4]], tab[idx[ 5]], tab[idx[ 6]], tab[idx[ 7]], + tab[idx[8]], tab[idx[9]], tab[idx[10]], tab[idx[11]], tab[idx[12]], tab[idx[13]], tab[idx[14]], tab[idx[15]])); +} +inline v_int16x16 v256_lut_pairs(const short* tab, const int* idx) +{ + return v_int16x16(_mm256_i32gather_epi32((const int*)tab, _mm256_loadu_si256((const __m256i*)idx), 2)); +} +inline v_int16x16 v256_lut_quads(const short* tab, const int* idx) +{ +#if defined(__GNUC__) + return v_int16x16(_mm256_i32gather_epi64((const long long int*)tab, _mm_loadu_si128((const __m128i*)idx), 2));//Looks like intrinsic has wrong definition +#else + return v_int16x16(_mm256_i32gather_epi64((const int64*)tab, _mm_loadu_si128((const __m128i*)idx), 2)); +#endif +} +inline v_uint16x16 v256_lut(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v256_lut((const short *)tab, idx)); } +inline v_uint16x16 v256_lut_pairs(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v256_lut_pairs((const short *)tab, idx)); } +inline v_uint16x16 v256_lut_quads(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v256_lut_quads((const short *)tab, idx)); } + +inline v_int32x8 v256_lut(const int* tab, const int* idx) +{ + return v_int32x8(_mm256_i32gather_epi32(tab, _mm256_loadu_si256((const __m256i*)idx), 4)); +} +inline v_int32x8 v256_lut_pairs(const int* tab, const int* idx) +{ +#if defined(__GNUC__) + return v_int32x8(_mm256_i32gather_epi64((const long long int*)tab, _mm_loadu_si128((const __m128i*)idx), 4)); +#else + return v_int32x8(_mm256_i32gather_epi64((const int64*)tab, _mm_loadu_si128((const __m128i*)idx), 4)); +#endif +} +inline v_int32x8 v256_lut_quads(const int* tab, const int* idx) +{ + return v_int32x8(_mm256_insertf128_si256(_mm256_castsi128_si256(_mm_loadu_si128((const __m128i*)(tab + idx[0]))), _mm_loadu_si128((const __m128i*)(tab + idx[1])), 0x1)); +} +inline v_uint32x8 v256_lut(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v256_lut((const int *)tab, idx)); } +inline v_uint32x8 v256_lut_pairs(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v256_lut_pairs((const int *)tab, idx)); } +inline v_uint32x8 v256_lut_quads(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v256_lut_quads((const int *)tab, idx)); } + +inline v_int64x4 v256_lut(const int64* tab, const int* idx) +{ +#if defined(__GNUC__) + return v_int64x4(_mm256_i32gather_epi64((const long long int*)tab, _mm_loadu_si128((const __m128i*)idx), 8)); +#else + return v_int64x4(_mm256_i32gather_epi64(tab, _mm_loadu_si128((const __m128i*)idx), 8)); +#endif +} +inline v_int64x4 v256_lut_pairs(const int64* tab, const int* idx) +{ + return v_int64x4(_mm256_insertf128_si256(_mm256_castsi128_si256(_mm_loadu_si128((const __m128i*)(tab + idx[0]))), _mm_loadu_si128((const __m128i*)(tab + idx[1])), 0x1)); +} +inline v_uint64x4 v256_lut(const uint64* tab, const int* idx) { return v_reinterpret_as_u64(v256_lut((const int64 *)tab, idx)); } +inline v_uint64x4 v256_lut_pairs(const uint64* tab, const int* idx) { return v_reinterpret_as_u64(v256_lut_pairs((const int64 *)tab, idx)); } + +inline v_float32x8 v256_lut(const float* tab, const int* idx) +{ + return v_float32x8(_mm256_i32gather_ps(tab, _mm256_loadu_si256((const __m256i*)idx), 4)); +} +inline v_float32x8 v256_lut_pairs(const float* tab, const int* idx) { return v_reinterpret_as_f32(v256_lut_pairs((const int *)tab, idx)); } +inline v_float32x8 v256_lut_quads(const float* tab, const int* idx) { return v_reinterpret_as_f32(v256_lut_quads((const int *)tab, idx)); } + +inline v_float64x4 v256_lut(const double* tab, const int* idx) +{ + return v_float64x4(_mm256_i32gather_pd(tab, _mm_loadu_si128((const __m128i*)idx), 8)); +} +inline v_float64x4 v256_lut_pairs(const double* tab, const int* idx) { return v_float64x4(_mm256_insertf128_pd(_mm256_castpd128_pd256(_mm_loadu_pd(tab + idx[0])), _mm_loadu_pd(tab + idx[1]), 0x1)); } + +inline v_int32x8 v_lut(const int* tab, const v_int32x8& idxvec) +{ + return v_int32x8(_mm256_i32gather_epi32(tab, idxvec.val, 4)); +} + +inline v_uint32x8 v_lut(const unsigned* tab, const v_int32x8& idxvec) +{ + return v_reinterpret_as_u32(v_lut((const int *)tab, idxvec)); +} + +inline v_float32x8 v_lut(const float* tab, const v_int32x8& idxvec) +{ + return v_float32x8(_mm256_i32gather_ps(tab, idxvec.val, 4)); +} + +inline v_float64x4 v_lut(const double* tab, const v_int32x8& idxvec) +{ + return v_float64x4(_mm256_i32gather_pd(tab, _mm256_castsi256_si128(idxvec.val), 8)); +} + +inline void v_lut_deinterleave(const float* tab, const v_int32x8& idxvec, v_float32x8& x, v_float32x8& y) +{ + int CV_DECL_ALIGNED(32) idx[8]; + v_store_aligned(idx, idxvec); + __m128 z = _mm_setzero_ps(); + __m128 xy01, xy45, xy23, xy67; + xy01 = _mm_loadl_pi(z, (const __m64*)(tab + idx[0])); + xy01 = _mm_loadh_pi(xy01, (const __m64*)(tab + idx[1])); + xy45 = _mm_loadl_pi(z, (const __m64*)(tab + idx[4])); + xy45 = _mm_loadh_pi(xy45, (const __m64*)(tab + idx[5])); + __m256 xy0145 = _v256_combine(xy01, xy45); + xy23 = _mm_loadl_pi(z, (const __m64*)(tab + idx[2])); + xy23 = _mm_loadh_pi(xy23, (const __m64*)(tab + idx[3])); + xy67 = _mm_loadl_pi(z, (const __m64*)(tab + idx[6])); + xy67 = _mm_loadh_pi(xy67, (const __m64*)(tab + idx[7])); + __m256 xy2367 = _v256_combine(xy23, xy67); + + __m256 xxyy0145 = _mm256_unpacklo_ps(xy0145, xy2367); + __m256 xxyy2367 = _mm256_unpackhi_ps(xy0145, xy2367); + + x = v_float32x8(_mm256_unpacklo_ps(xxyy0145, xxyy2367)); + y = v_float32x8(_mm256_unpackhi_ps(xxyy0145, xxyy2367)); +} + +inline void v_lut_deinterleave(const double* tab, const v_int32x8& idxvec, v_float64x4& x, v_float64x4& y) +{ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_low(idx, idxvec); + __m128d xy0 = _mm_loadu_pd(tab + idx[0]); + __m128d xy2 = _mm_loadu_pd(tab + idx[2]); + __m128d xy1 = _mm_loadu_pd(tab + idx[1]); + __m128d xy3 = _mm_loadu_pd(tab + idx[3]); + __m256d xy02 = _v256_combine(xy0, xy2); + __m256d xy13 = _v256_combine(xy1, xy3); + + x = v_float64x4(_mm256_unpacklo_pd(xy02, xy13)); + y = v_float64x4(_mm256_unpackhi_pd(xy02, xy13)); +} + +inline v_int8x32 v_interleave_pairs(const v_int8x32& vec) +{ + return v_int8x32(_mm256_shuffle_epi8(vec.val, _mm256_set_epi64x(0x0f0d0e0c0b090a08, 0x0705060403010200, 0x0f0d0e0c0b090a08, 0x0705060403010200))); +} +inline v_uint8x32 v_interleave_pairs(const v_uint8x32& vec) { return v_reinterpret_as_u8(v_interleave_pairs(v_reinterpret_as_s8(vec))); } +inline v_int8x32 v_interleave_quads(const v_int8x32& vec) +{ + return v_int8x32(_mm256_shuffle_epi8(vec.val, _mm256_set_epi64x(0x0f0b0e0a0d090c08, 0x0703060205010400, 0x0f0b0e0a0d090c08, 0x0703060205010400))); +} +inline v_uint8x32 v_interleave_quads(const v_uint8x32& vec) { return v_reinterpret_as_u8(v_interleave_quads(v_reinterpret_as_s8(vec))); } + +inline v_int16x16 v_interleave_pairs(const v_int16x16& vec) +{ + return v_int16x16(_mm256_shuffle_epi8(vec.val, _mm256_set_epi64x(0x0f0e0b0a0d0c0908, 0x0706030205040100, 0x0f0e0b0a0d0c0908, 0x0706030205040100))); +} +inline v_uint16x16 v_interleave_pairs(const v_uint16x16& vec) { return v_reinterpret_as_u16(v_interleave_pairs(v_reinterpret_as_s16(vec))); } +inline v_int16x16 v_interleave_quads(const v_int16x16& vec) +{ + return v_int16x16(_mm256_shuffle_epi8(vec.val, _mm256_set_epi64x(0x0f0e07060d0c0504, 0x0b0a030209080100, 0x0f0e07060d0c0504, 0x0b0a030209080100))); +} +inline v_uint16x16 v_interleave_quads(const v_uint16x16& vec) { return v_reinterpret_as_u16(v_interleave_quads(v_reinterpret_as_s16(vec))); } + +inline v_int32x8 v_interleave_pairs(const v_int32x8& vec) +{ + return v_int32x8(_mm256_shuffle_epi32(vec.val, _MM_SHUFFLE(3, 1, 2, 0))); +} +inline v_uint32x8 v_interleave_pairs(const v_uint32x8& vec) { return v_reinterpret_as_u32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } +inline v_float32x8 v_interleave_pairs(const v_float32x8& vec) { return v_reinterpret_as_f32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } + +inline v_int8x32 v_pack_triplets(const v_int8x32& vec) +{ + return v_int8x32(_mm256_permutevar8x32_epi32(_mm256_shuffle_epi8(vec.val, _mm256_broadcastsi128_si256(_mm_set_epi64x(0xffffff0f0e0d0c0a, 0x0908060504020100))), + _mm256_set_epi64x(0x0000000700000007, 0x0000000600000005, 0x0000000400000002, 0x0000000100000000))); +} +inline v_uint8x32 v_pack_triplets(const v_uint8x32& vec) { return v_reinterpret_as_u8(v_pack_triplets(v_reinterpret_as_s8(vec))); } + +inline v_int16x16 v_pack_triplets(const v_int16x16& vec) +{ + return v_int16x16(_mm256_permutevar8x32_epi32(_mm256_shuffle_epi8(vec.val, _mm256_broadcastsi128_si256(_mm_set_epi64x(0xffff0f0e0d0c0b0a, 0x0908050403020100))), + _mm256_set_epi64x(0x0000000700000007, 0x0000000600000005, 0x0000000400000002, 0x0000000100000000))); +} +inline v_uint16x16 v_pack_triplets(const v_uint16x16& vec) { return v_reinterpret_as_u16(v_pack_triplets(v_reinterpret_as_s16(vec))); } + +inline v_int32x8 v_pack_triplets(const v_int32x8& vec) +{ + return v_int32x8(_mm256_permutevar8x32_epi32(vec.val, _mm256_set_epi64x(0x0000000700000007, 0x0000000600000005, 0x0000000400000002, 0x0000000100000000))); +} +inline v_uint32x8 v_pack_triplets(const v_uint32x8& vec) { return v_reinterpret_as_u32(v_pack_triplets(v_reinterpret_as_s32(vec))); } +inline v_float32x8 v_pack_triplets(const v_float32x8& vec) +{ + return v_float32x8(_mm256_permutevar8x32_ps(vec.val, _mm256_set_epi64x(0x0000000700000007, 0x0000000600000005, 0x0000000400000002, 0x0000000100000000))); +} + +////////// Matrix operations ///////// + +inline v_int32x8 v_dotprod(const v_int16x16& a, const v_int16x16& b) +{ return v_int32x8(_mm256_madd_epi16(a.val, b.val)); } + +inline v_int32x8 v_dotprod(const v_int16x16& a, const v_int16x16& b, const v_int32x8& c) +{ return v_dotprod(a, b) + c; } + +#define OPENCV_HAL_AVX_SPLAT2_PS(a, im) \ + v_float32x8(_mm256_permute_ps(a.val, _MM_SHUFFLE(im, im, im, im))) + +inline v_float32x8 v_matmul(const v_float32x8& v, const v_float32x8& m0, + const v_float32x8& m1, const v_float32x8& m2, + const v_float32x8& m3) +{ + v_float32x8 v04 = OPENCV_HAL_AVX_SPLAT2_PS(v, 0); + v_float32x8 v15 = OPENCV_HAL_AVX_SPLAT2_PS(v, 1); + v_float32x8 v26 = OPENCV_HAL_AVX_SPLAT2_PS(v, 2); + v_float32x8 v37 = OPENCV_HAL_AVX_SPLAT2_PS(v, 3); + return v_fma(v04, m0, v_fma(v15, m1, v_fma(v26, m2, v37 * m3))); +} + +inline v_float32x8 v_matmuladd(const v_float32x8& v, const v_float32x8& m0, + const v_float32x8& m1, const v_float32x8& m2, + const v_float32x8& a) +{ + v_float32x8 v04 = OPENCV_HAL_AVX_SPLAT2_PS(v, 0); + v_float32x8 v15 = OPENCV_HAL_AVX_SPLAT2_PS(v, 1); + v_float32x8 v26 = OPENCV_HAL_AVX_SPLAT2_PS(v, 2); + return v_fma(v04, m0, v_fma(v15, m1, v_fma(v26, m2, a))); +} + +#define OPENCV_HAL_IMPL_AVX_TRANSPOSE4x4(_Tpvec, suffix, cast_from, cast_to) \ + inline void v_transpose4x4(const _Tpvec& a0, const _Tpvec& a1, \ + const _Tpvec& a2, const _Tpvec& a3, \ + _Tpvec& b0, _Tpvec& b1, _Tpvec& b2, _Tpvec& b3) \ + { \ + __m256i t0 = cast_from(_mm256_unpacklo_##suffix(a0.val, a1.val)); \ + __m256i t1 = cast_from(_mm256_unpacklo_##suffix(a2.val, a3.val)); \ + __m256i t2 = cast_from(_mm256_unpackhi_##suffix(a0.val, a1.val)); \ + __m256i t3 = cast_from(_mm256_unpackhi_##suffix(a2.val, a3.val)); \ + b0.val = cast_to(_mm256_unpacklo_epi64(t0, t1)); \ + b1.val = cast_to(_mm256_unpackhi_epi64(t0, t1)); \ + b2.val = cast_to(_mm256_unpacklo_epi64(t2, t3)); \ + b3.val = cast_to(_mm256_unpackhi_epi64(t2, t3)); \ + } + +OPENCV_HAL_IMPL_AVX_TRANSPOSE4x4(v_uint32x8, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_AVX_TRANSPOSE4x4(v_int32x8, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_AVX_TRANSPOSE4x4(v_float32x8, ps, _mm256_castps_si256, _mm256_castsi256_ps) + +//////////////// Value reordering /////////////// + +/* Expand */ +#define OPENCV_HAL_IMPL_AVX_EXPAND(_Tpvec, _Tpwvec, _Tp, intrin) \ + inline void v_expand(const _Tpvec& a, _Tpwvec& b0, _Tpwvec& b1) \ + { \ + b0.val = intrin(_v256_extract_low(a.val)); \ + b1.val = intrin(_v256_extract_high(a.val)); \ + } \ + inline _Tpwvec v_expand_low(const _Tpvec& a) \ + { return _Tpwvec(intrin(_v256_extract_low(a.val))); } \ + inline _Tpwvec v_expand_high(const _Tpvec& a) \ + { return _Tpwvec(intrin(_v256_extract_high(a.val))); } \ + inline _Tpwvec v256_load_expand(const _Tp* ptr) \ + { \ + __m128i a = _mm_loadu_si128((const __m128i*)ptr); \ + return _Tpwvec(intrin(a)); \ + } + +OPENCV_HAL_IMPL_AVX_EXPAND(v_uint8x32, v_uint16x16, uchar, _mm256_cvtepu8_epi16) +OPENCV_HAL_IMPL_AVX_EXPAND(v_int8x32, v_int16x16, schar, _mm256_cvtepi8_epi16) +OPENCV_HAL_IMPL_AVX_EXPAND(v_uint16x16, v_uint32x8, ushort, _mm256_cvtepu16_epi32) +OPENCV_HAL_IMPL_AVX_EXPAND(v_int16x16, v_int32x8, short, _mm256_cvtepi16_epi32) +OPENCV_HAL_IMPL_AVX_EXPAND(v_uint32x8, v_uint64x4, unsigned, _mm256_cvtepu32_epi64) +OPENCV_HAL_IMPL_AVX_EXPAND(v_int32x8, v_int64x4, int, _mm256_cvtepi32_epi64) + +#define OPENCV_HAL_IMPL_AVX_EXPAND_Q(_Tpvec, _Tp, intrin) \ + inline _Tpvec v256_load_expand_q(const _Tp* ptr) \ + { \ + __m128i a = _mm_loadl_epi64((const __m128i*)ptr); \ + return _Tpvec(intrin(a)); \ + } + +OPENCV_HAL_IMPL_AVX_EXPAND_Q(v_uint32x8, uchar, _mm256_cvtepu8_epi32) +OPENCV_HAL_IMPL_AVX_EXPAND_Q(v_int32x8, schar, _mm256_cvtepi8_epi32) + +/* pack */ +// 16 +inline v_int8x32 v_pack(const v_int16x16& a, const v_int16x16& b) +{ return v_int8x32(_v256_shuffle_odd_64(_mm256_packs_epi16(a.val, b.val))); } + +inline v_uint8x32 v_pack(const v_uint16x16& a, const v_uint16x16& b) +{ + __m256i t = _mm256_set1_epi16(255); + __m256i a1 = _mm256_min_epu16(a.val, t); + __m256i b1 = _mm256_min_epu16(b.val, t); + return v_uint8x32(_v256_shuffle_odd_64(_mm256_packus_epi16(a1, b1))); +} + +inline v_uint8x32 v_pack_u(const v_int16x16& a, const v_int16x16& b) +{ + return v_uint8x32(_v256_shuffle_odd_64(_mm256_packus_epi16(a.val, b.val))); +} + +inline void v_pack_store(schar* ptr, const v_int16x16& a) +{ v_store_low(ptr, v_pack(a, a)); } + +inline void v_pack_store(uchar* ptr, const v_uint16x16& a) +{ + const __m256i m = _mm256_set1_epi16(255); + __m256i am = _mm256_min_epu16(a.val, m); + am = _v256_shuffle_odd_64(_mm256_packus_epi16(am, am)); + v_store_low(ptr, v_uint8x32(am)); +} + +inline void v_pack_u_store(uchar* ptr, const v_int16x16& a) +{ v_store_low(ptr, v_pack_u(a, a)); } + +template inline +v_uint8x32 v_rshr_pack(const v_uint16x16& a, const v_uint16x16& b) +{ + // we assume that n > 0, and so the shifted 16-bit values can be treated as signed numbers. + v_uint16x16 delta = v256_setall_u16((short)(1 << (n-1))); + return v_pack_u(v_reinterpret_as_s16((a + delta) >> n), + v_reinterpret_as_s16((b + delta) >> n)); +} + +template inline +void v_rshr_pack_store(uchar* ptr, const v_uint16x16& a) +{ + v_uint16x16 delta = v256_setall_u16((short)(1 << (n-1))); + v_pack_u_store(ptr, v_reinterpret_as_s16((a + delta) >> n)); +} + +template inline +v_uint8x32 v_rshr_pack_u(const v_int16x16& a, const v_int16x16& b) +{ + v_int16x16 delta = v256_setall_s16((short)(1 << (n-1))); + return v_pack_u((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_u_store(uchar* ptr, const v_int16x16& a) +{ + v_int16x16 delta = v256_setall_s16((short)(1 << (n-1))); + v_pack_u_store(ptr, (a + delta) >> n); +} + +template inline +v_int8x32 v_rshr_pack(const v_int16x16& a, const v_int16x16& b) +{ + v_int16x16 delta = v256_setall_s16((short)(1 << (n-1))); + return v_pack((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_store(schar* ptr, const v_int16x16& a) +{ + v_int16x16 delta = v256_setall_s16((short)(1 << (n-1))); + v_pack_store(ptr, (a + delta) >> n); +} + +// 32 +inline v_int16x16 v_pack(const v_int32x8& a, const v_int32x8& b) +{ return v_int16x16(_v256_shuffle_odd_64(_mm256_packs_epi32(a.val, b.val))); } + +inline v_uint16x16 v_pack(const v_uint32x8& a, const v_uint32x8& b) +{ return v_uint16x16(_v256_shuffle_odd_64(_v256_packs_epu32(a.val, b.val))); } + +inline v_uint16x16 v_pack_u(const v_int32x8& a, const v_int32x8& b) +{ return v_uint16x16(_v256_shuffle_odd_64(_mm256_packus_epi32(a.val, b.val))); } + +inline void v_pack_store(short* ptr, const v_int32x8& a) +{ v_store_low(ptr, v_pack(a, a)); } + +inline void v_pack_store(ushort* ptr, const v_uint32x8& a) +{ + const __m256i m = _mm256_set1_epi32(65535); + __m256i am = _mm256_min_epu32(a.val, m); + am = _v256_shuffle_odd_64(_mm256_packus_epi32(am, am)); + v_store_low(ptr, v_uint16x16(am)); +} + +inline void v_pack_u_store(ushort* ptr, const v_int32x8& a) +{ v_store_low(ptr, v_pack_u(a, a)); } + + +template inline +v_uint16x16 v_rshr_pack(const v_uint32x8& a, const v_uint32x8& b) +{ + // we assume that n > 0, and so the shifted 32-bit values can be treated as signed numbers. + v_uint32x8 delta = v256_setall_u32(1 << (n-1)); + return v_pack_u(v_reinterpret_as_s32((a + delta) >> n), + v_reinterpret_as_s32((b + delta) >> n)); +} + +template inline +void v_rshr_pack_store(ushort* ptr, const v_uint32x8& a) +{ + v_uint32x8 delta = v256_setall_u32(1 << (n-1)); + v_pack_u_store(ptr, v_reinterpret_as_s32((a + delta) >> n)); +} + +template inline +v_uint16x16 v_rshr_pack_u(const v_int32x8& a, const v_int32x8& b) +{ + v_int32x8 delta = v256_setall_s32(1 << (n-1)); + return v_pack_u((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_u_store(ushort* ptr, const v_int32x8& a) +{ + v_int32x8 delta = v256_setall_s32(1 << (n-1)); + v_pack_u_store(ptr, (a + delta) >> n); +} + +template inline +v_int16x16 v_rshr_pack(const v_int32x8& a, const v_int32x8& b) +{ + v_int32x8 delta = v256_setall_s32(1 << (n-1)); + return v_pack((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_store(short* ptr, const v_int32x8& a) +{ + v_int32x8 delta = v256_setall_s32(1 << (n-1)); + v_pack_store(ptr, (a + delta) >> n); +} + +// 64 +// Non-saturating pack +inline v_uint32x8 v_pack(const v_uint64x4& a, const v_uint64x4& b) +{ + __m256i a0 = _mm256_shuffle_epi32(a.val, _MM_SHUFFLE(0, 0, 2, 0)); + __m256i b0 = _mm256_shuffle_epi32(b.val, _MM_SHUFFLE(0, 0, 2, 0)); + __m256i ab = _mm256_unpacklo_epi64(a0, b0); // a0, a1, b0, b1, a2, a3, b2, b3 + return v_uint32x8(_v256_shuffle_odd_64(ab)); +} + +inline v_int32x8 v_pack(const v_int64x4& a, const v_int64x4& b) +{ return v_reinterpret_as_s32(v_pack(v_reinterpret_as_u64(a), v_reinterpret_as_u64(b))); } + +inline void v_pack_store(unsigned* ptr, const v_uint64x4& a) +{ + __m256i a0 = _mm256_shuffle_epi32(a.val, _MM_SHUFFLE(0, 0, 2, 0)); + v_store_low(ptr, v_uint32x8(_v256_shuffle_odd_64(a0))); +} + +inline void v_pack_store(int* ptr, const v_int64x4& b) +{ v_pack_store((unsigned*)ptr, v_reinterpret_as_u64(b)); } + +template inline +v_uint32x8 v_rshr_pack(const v_uint64x4& a, const v_uint64x4& b) +{ + v_uint64x4 delta = v256_setall_u64((uint64)1 << (n-1)); + return v_pack((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_store(unsigned* ptr, const v_uint64x4& a) +{ + v_uint64x4 delta = v256_setall_u64((uint64)1 << (n-1)); + v_pack_store(ptr, (a + delta) >> n); +} + +template inline +v_int32x8 v_rshr_pack(const v_int64x4& a, const v_int64x4& b) +{ + v_int64x4 delta = v256_setall_s64((int64)1 << (n-1)); + return v_pack((a + delta) >> n, (b + delta) >> n); +} + +template inline +void v_rshr_pack_store(int* ptr, const v_int64x4& a) +{ + v_int64x4 delta = v256_setall_s64((int64)1 << (n-1)); + v_pack_store(ptr, (a + delta) >> n); +} + +// pack boolean +inline v_uint8x32 v_pack_b(const v_uint16x16& a, const v_uint16x16& b) +{ + __m256i ab = _mm256_packs_epi16(a.val, b.val); + return v_uint8x32(_v256_shuffle_odd_64(ab)); +} + +inline v_uint8x32 v_pack_b(const v_uint32x8& a, const v_uint32x8& b, + const v_uint32x8& c, const v_uint32x8& d) +{ + __m256i ab = _mm256_packs_epi32(a.val, b.val); + __m256i cd = _mm256_packs_epi32(c.val, d.val); + + __m256i abcd = _v256_shuffle_odd_64(_mm256_packs_epi16(ab, cd)); + return v_uint8x32(_mm256_shuffle_epi32(abcd, _MM_SHUFFLE(3, 1, 2, 0))); +} + +inline v_uint8x32 v_pack_b(const v_uint64x4& a, const v_uint64x4& b, const v_uint64x4& c, + const v_uint64x4& d, const v_uint64x4& e, const v_uint64x4& f, + const v_uint64x4& g, const v_uint64x4& h) +{ + __m256i ab = _mm256_packs_epi32(a.val, b.val); + __m256i cd = _mm256_packs_epi32(c.val, d.val); + __m256i ef = _mm256_packs_epi32(e.val, f.val); + __m256i gh = _mm256_packs_epi32(g.val, h.val); + + __m256i abcd = _mm256_packs_epi32(ab, cd); + __m256i efgh = _mm256_packs_epi32(ef, gh); + __m256i pkall = _v256_shuffle_odd_64(_mm256_packs_epi16(abcd, efgh)); + + __m256i rev = _mm256_alignr_epi8(pkall, pkall, 8); + return v_uint8x32(_mm256_unpacklo_epi16(pkall, rev)); +} + +/* Recombine */ +// its up there with load and store operations + +/* Extract */ +#define OPENCV_HAL_IMPL_AVX_EXTRACT(_Tpvec) \ + template \ + inline _Tpvec v_extract(const _Tpvec& a, const _Tpvec& b) \ + { return v_rotate_right(a, b); } + +OPENCV_HAL_IMPL_AVX_EXTRACT(v_uint8x32) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_int8x32) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_uint16x16) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_int16x16) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_uint32x8) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_int32x8) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_uint64x4) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_int64x4) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_float32x8) +OPENCV_HAL_IMPL_AVX_EXTRACT(v_float64x4) + + +///////////////////// load deinterleave ///////////////////////////// + +inline void v_load_deinterleave( const uchar* ptr, v_uint8x32& a, v_uint8x32& b ) +{ + __m256i ab0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i ab1 = _mm256_loadu_si256((const __m256i*)(ptr + 32)); + + const __m256i sh = _mm256_setr_epi8(0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15, + 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15); + __m256i p0 = _mm256_shuffle_epi8(ab0, sh); + __m256i p1 = _mm256_shuffle_epi8(ab1, sh); + __m256i pl = _mm256_permute2x128_si256(p0, p1, 0 + 2*16); + __m256i ph = _mm256_permute2x128_si256(p0, p1, 1 + 3*16); + __m256i a0 = _mm256_unpacklo_epi64(pl, ph); + __m256i b0 = _mm256_unpackhi_epi64(pl, ph); + a = v_uint8x32(a0); + b = v_uint8x32(b0); +} + +inline void v_load_deinterleave( const ushort* ptr, v_uint16x16& a, v_uint16x16& b ) +{ + __m256i ab0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i ab1 = _mm256_loadu_si256((const __m256i*)(ptr + 16)); + + const __m256i sh = _mm256_setr_epi8(0, 1, 4, 5, 8, 9, 12, 13, 2, 3, 6, 7, 10, 11, 14, 15, + 0, 1, 4, 5, 8, 9, 12, 13, 2, 3, 6, 7, 10, 11, 14, 15); + __m256i p0 = _mm256_shuffle_epi8(ab0, sh); + __m256i p1 = _mm256_shuffle_epi8(ab1, sh); + __m256i pl = _mm256_permute2x128_si256(p0, p1, 0 + 2*16); + __m256i ph = _mm256_permute2x128_si256(p0, p1, 1 + 3*16); + __m256i a0 = _mm256_unpacklo_epi64(pl, ph); + __m256i b0 = _mm256_unpackhi_epi64(pl, ph); + a = v_uint16x16(a0); + b = v_uint16x16(b0); +} + +inline void v_load_deinterleave( const unsigned* ptr, v_uint32x8& a, v_uint32x8& b ) +{ + __m256i ab0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i ab1 = _mm256_loadu_si256((const __m256i*)(ptr + 8)); + + const int sh = 0+2*4+1*16+3*64; + __m256i p0 = _mm256_shuffle_epi32(ab0, sh); + __m256i p1 = _mm256_shuffle_epi32(ab1, sh); + __m256i pl = _mm256_permute2x128_si256(p0, p1, 0 + 2*16); + __m256i ph = _mm256_permute2x128_si256(p0, p1, 1 + 3*16); + __m256i a0 = _mm256_unpacklo_epi64(pl, ph); + __m256i b0 = _mm256_unpackhi_epi64(pl, ph); + a = v_uint32x8(a0); + b = v_uint32x8(b0); +} + +inline void v_load_deinterleave( const uint64* ptr, v_uint64x4& a, v_uint64x4& b ) +{ + __m256i ab0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i ab1 = _mm256_loadu_si256((const __m256i*)(ptr + 4)); + + __m256i pl = _mm256_permute2x128_si256(ab0, ab1, 0 + 2*16); + __m256i ph = _mm256_permute2x128_si256(ab0, ab1, 1 + 3*16); + __m256i a0 = _mm256_unpacklo_epi64(pl, ph); + __m256i b0 = _mm256_unpackhi_epi64(pl, ph); + a = v_uint64x4(a0); + b = v_uint64x4(b0); +} + +inline void v_load_deinterleave( const uchar* ptr, v_uint8x32& a, v_uint8x32& b, v_uint8x32& c ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 32)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 64)); + + __m256i s02_low = _mm256_permute2x128_si256(bgr0, bgr2, 0 + 2*16); + __m256i s02_high = _mm256_permute2x128_si256(bgr0, bgr2, 1 + 3*16); + + const __m256i m0 = _mm256_setr_epi8(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, + 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0); + const __m256i m1 = _mm256_setr_epi8(0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, + -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1); + + __m256i b0 = _mm256_blendv_epi8(_mm256_blendv_epi8(s02_low, s02_high, m0), bgr1, m1); + __m256i g0 = _mm256_blendv_epi8(_mm256_blendv_epi8(s02_high, s02_low, m1), bgr1, m0); + __m256i r0 = _mm256_blendv_epi8(_mm256_blendv_epi8(bgr1, s02_low, m0), s02_high, m1); + + const __m256i + sh_b = _mm256_setr_epi8(0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, + 0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13), + sh_g = _mm256_setr_epi8(1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14, + 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14), + sh_r = _mm256_setr_epi8(2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, + 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15); + b0 = _mm256_shuffle_epi8(b0, sh_b); + g0 = _mm256_shuffle_epi8(g0, sh_g); + r0 = _mm256_shuffle_epi8(r0, sh_r); + + a = v_uint8x32(b0); + b = v_uint8x32(g0); + c = v_uint8x32(r0); +} + +inline void v_load_deinterleave( const ushort* ptr, v_uint16x16& a, v_uint16x16& b, v_uint16x16& c ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 16)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 32)); + + __m256i s02_low = _mm256_permute2x128_si256(bgr0, bgr2, 0 + 2*16); + __m256i s02_high = _mm256_permute2x128_si256(bgr0, bgr2, 1 + 3*16); + + const __m256i m0 = _mm256_setr_epi8(0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, + 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0); + const __m256i m1 = _mm256_setr_epi8(0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, + -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0); + __m256i b0 = _mm256_blendv_epi8(_mm256_blendv_epi8(s02_low, s02_high, m0), bgr1, m1); + __m256i g0 = _mm256_blendv_epi8(_mm256_blendv_epi8(bgr1, s02_low, m0), s02_high, m1); + __m256i r0 = _mm256_blendv_epi8(_mm256_blendv_epi8(s02_high, s02_low, m1), bgr1, m0); + const __m256i sh_b = _mm256_setr_epi8(0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11, + 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11); + const __m256i sh_g = _mm256_setr_epi8(2, 3, 8, 9, 14, 15, 4, 5, 10, 11, 0, 1, 6, 7, 12, 13, + 2, 3, 8, 9, 14, 15, 4, 5, 10, 11, 0, 1, 6, 7, 12, 13); + const __m256i sh_r = _mm256_setr_epi8(4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, + 4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15); + b0 = _mm256_shuffle_epi8(b0, sh_b); + g0 = _mm256_shuffle_epi8(g0, sh_g); + r0 = _mm256_shuffle_epi8(r0, sh_r); + + a = v_uint16x16(b0); + b = v_uint16x16(g0); + c = v_uint16x16(r0); +} + +inline void v_load_deinterleave( const unsigned* ptr, v_uint32x8& a, v_uint32x8& b, v_uint32x8& c ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 8)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 16)); + + __m256i s02_low = _mm256_permute2x128_si256(bgr0, bgr2, 0 + 2*16); + __m256i s02_high = _mm256_permute2x128_si256(bgr0, bgr2, 1 + 3*16); + + __m256i b0 = _mm256_blend_epi32(_mm256_blend_epi32(s02_low, s02_high, 0x24), bgr1, 0x92); + __m256i g0 = _mm256_blend_epi32(_mm256_blend_epi32(s02_high, s02_low, 0x92), bgr1, 0x24); + __m256i r0 = _mm256_blend_epi32(_mm256_blend_epi32(bgr1, s02_low, 0x24), s02_high, 0x92); + + b0 = _mm256_shuffle_epi32(b0, 0x6c); + g0 = _mm256_shuffle_epi32(g0, 0xb1); + r0 = _mm256_shuffle_epi32(r0, 0xc6); + + a = v_uint32x8(b0); + b = v_uint32x8(g0); + c = v_uint32x8(r0); +} + +inline void v_load_deinterleave( const uint64* ptr, v_uint64x4& a, v_uint64x4& b, v_uint64x4& c ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 4)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 8)); + + __m256i s01 = _mm256_blend_epi32(bgr0, bgr1, 0xf0); + __m256i s12 = _mm256_blend_epi32(bgr1, bgr2, 0xf0); + __m256i s20r = _mm256_permute4x64_epi64(_mm256_blend_epi32(bgr2, bgr0, 0xf0), 0x1b); + __m256i b0 = _mm256_unpacklo_epi64(s01, s20r); + __m256i g0 = _mm256_alignr_epi8(s12, s01, 8); + __m256i r0 = _mm256_unpackhi_epi64(s20r, s12); + + a = v_uint64x4(b0); + b = v_uint64x4(g0); + c = v_uint64x4(r0); +} + +inline void v_load_deinterleave( const uchar* ptr, v_uint8x32& a, v_uint8x32& b, v_uint8x32& c, v_uint8x32& d ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 32)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 64)); + __m256i bgr3 = _mm256_loadu_si256((const __m256i*)(ptr + 96)); + const __m256i sh = _mm256_setr_epi8(0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, + 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15); + + __m256i p0 = _mm256_shuffle_epi8(bgr0, sh); + __m256i p1 = _mm256_shuffle_epi8(bgr1, sh); + __m256i p2 = _mm256_shuffle_epi8(bgr2, sh); + __m256i p3 = _mm256_shuffle_epi8(bgr3, sh); + + __m256i p01l = _mm256_unpacklo_epi32(p0, p1); + __m256i p01h = _mm256_unpackhi_epi32(p0, p1); + __m256i p23l = _mm256_unpacklo_epi32(p2, p3); + __m256i p23h = _mm256_unpackhi_epi32(p2, p3); + + __m256i pll = _mm256_permute2x128_si256(p01l, p23l, 0 + 2*16); + __m256i plh = _mm256_permute2x128_si256(p01l, p23l, 1 + 3*16); + __m256i phl = _mm256_permute2x128_si256(p01h, p23h, 0 + 2*16); + __m256i phh = _mm256_permute2x128_si256(p01h, p23h, 1 + 3*16); + + __m256i b0 = _mm256_unpacklo_epi32(pll, plh); + __m256i g0 = _mm256_unpackhi_epi32(pll, plh); + __m256i r0 = _mm256_unpacklo_epi32(phl, phh); + __m256i a0 = _mm256_unpackhi_epi32(phl, phh); + + a = v_uint8x32(b0); + b = v_uint8x32(g0); + c = v_uint8x32(r0); + d = v_uint8x32(a0); +} + +inline void v_load_deinterleave( const ushort* ptr, v_uint16x16& a, v_uint16x16& b, v_uint16x16& c, v_uint16x16& d ) +{ + __m256i bgr0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgr1 = _mm256_loadu_si256((const __m256i*)(ptr + 16)); + __m256i bgr2 = _mm256_loadu_si256((const __m256i*)(ptr + 32)); + __m256i bgr3 = _mm256_loadu_si256((const __m256i*)(ptr + 48)); + const __m256i sh = _mm256_setr_epi8(0, 1, 8, 9, 2, 3, 10, 11, 4, 5, 12, 13, 6, 7, 14, 15, + 0, 1, 8, 9, 2, 3, 10, 11, 4, 5, 12, 13, 6, 7, 14, 15); + __m256i p0 = _mm256_shuffle_epi8(bgr0, sh); + __m256i p1 = _mm256_shuffle_epi8(bgr1, sh); + __m256i p2 = _mm256_shuffle_epi8(bgr2, sh); + __m256i p3 = _mm256_shuffle_epi8(bgr3, sh); + + __m256i p01l = _mm256_unpacklo_epi32(p0, p1); + __m256i p01h = _mm256_unpackhi_epi32(p0, p1); + __m256i p23l = _mm256_unpacklo_epi32(p2, p3); + __m256i p23h = _mm256_unpackhi_epi32(p2, p3); + + __m256i pll = _mm256_permute2x128_si256(p01l, p23l, 0 + 2*16); + __m256i plh = _mm256_permute2x128_si256(p01l, p23l, 1 + 3*16); + __m256i phl = _mm256_permute2x128_si256(p01h, p23h, 0 + 2*16); + __m256i phh = _mm256_permute2x128_si256(p01h, p23h, 1 + 3*16); + + __m256i b0 = _mm256_unpacklo_epi32(pll, plh); + __m256i g0 = _mm256_unpackhi_epi32(pll, plh); + __m256i r0 = _mm256_unpacklo_epi32(phl, phh); + __m256i a0 = _mm256_unpackhi_epi32(phl, phh); + + a = v_uint16x16(b0); + b = v_uint16x16(g0); + c = v_uint16x16(r0); + d = v_uint16x16(a0); +} + +inline void v_load_deinterleave( const unsigned* ptr, v_uint32x8& a, v_uint32x8& b, v_uint32x8& c, v_uint32x8& d ) +{ + __m256i p0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i p1 = _mm256_loadu_si256((const __m256i*)(ptr + 8)); + __m256i p2 = _mm256_loadu_si256((const __m256i*)(ptr + 16)); + __m256i p3 = _mm256_loadu_si256((const __m256i*)(ptr + 24)); + + __m256i p01l = _mm256_unpacklo_epi32(p0, p1); + __m256i p01h = _mm256_unpackhi_epi32(p0, p1); + __m256i p23l = _mm256_unpacklo_epi32(p2, p3); + __m256i p23h = _mm256_unpackhi_epi32(p2, p3); + + __m256i pll = _mm256_permute2x128_si256(p01l, p23l, 0 + 2*16); + __m256i plh = _mm256_permute2x128_si256(p01l, p23l, 1 + 3*16); + __m256i phl = _mm256_permute2x128_si256(p01h, p23h, 0 + 2*16); + __m256i phh = _mm256_permute2x128_si256(p01h, p23h, 1 + 3*16); + + __m256i b0 = _mm256_unpacklo_epi32(pll, plh); + __m256i g0 = _mm256_unpackhi_epi32(pll, plh); + __m256i r0 = _mm256_unpacklo_epi32(phl, phh); + __m256i a0 = _mm256_unpackhi_epi32(phl, phh); + + a = v_uint32x8(b0); + b = v_uint32x8(g0); + c = v_uint32x8(r0); + d = v_uint32x8(a0); +} + +inline void v_load_deinterleave( const uint64* ptr, v_uint64x4& a, v_uint64x4& b, v_uint64x4& c, v_uint64x4& d ) +{ + __m256i bgra0 = _mm256_loadu_si256((const __m256i*)ptr); + __m256i bgra1 = _mm256_loadu_si256((const __m256i*)(ptr + 4)); + __m256i bgra2 = _mm256_loadu_si256((const __m256i*)(ptr + 8)); + __m256i bgra3 = _mm256_loadu_si256((const __m256i*)(ptr + 12)); + + __m256i l02 = _mm256_permute2x128_si256(bgra0, bgra2, 0 + 2*16); + __m256i h02 = _mm256_permute2x128_si256(bgra0, bgra2, 1 + 3*16); + __m256i l13 = _mm256_permute2x128_si256(bgra1, bgra3, 0 + 2*16); + __m256i h13 = _mm256_permute2x128_si256(bgra1, bgra3, 1 + 3*16); + + __m256i b0 = _mm256_unpacklo_epi64(l02, l13); + __m256i g0 = _mm256_unpackhi_epi64(l02, l13); + __m256i r0 = _mm256_unpacklo_epi64(h02, h13); + __m256i a0 = _mm256_unpackhi_epi64(h02, h13); + + a = v_uint64x4(b0); + b = v_uint64x4(g0); + c = v_uint64x4(r0); + d = v_uint64x4(a0); +} + +///////////////////////////// store interleave ///////////////////////////////////// + +inline void v_store_interleave( uchar* ptr, const v_uint8x32& x, const v_uint8x32& y, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i xy_l = _mm256_unpacklo_epi8(x.val, y.val); + __m256i xy_h = _mm256_unpackhi_epi8(x.val, y.val); + + __m256i xy0 = _mm256_permute2x128_si256(xy_l, xy_h, 0 + 2*16); + __m256i xy1 = _mm256_permute2x128_si256(xy_l, xy_h, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, xy0); + _mm256_stream_si256((__m256i*)(ptr + 32), xy1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, xy0); + _mm256_store_si256((__m256i*)(ptr + 32), xy1); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, xy0); + _mm256_storeu_si256((__m256i*)(ptr + 32), xy1); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x16& x, const v_uint16x16& y, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i xy_l = _mm256_unpacklo_epi16(x.val, y.val); + __m256i xy_h = _mm256_unpackhi_epi16(x.val, y.val); + + __m256i xy0 = _mm256_permute2x128_si256(xy_l, xy_h, 0 + 2*16); + __m256i xy1 = _mm256_permute2x128_si256(xy_l, xy_h, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, xy0); + _mm256_stream_si256((__m256i*)(ptr + 16), xy1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, xy0); + _mm256_store_si256((__m256i*)(ptr + 16), xy1); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, xy0); + _mm256_storeu_si256((__m256i*)(ptr + 16), xy1); + } +} + +inline void v_store_interleave( unsigned* ptr, const v_uint32x8& x, const v_uint32x8& y, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i xy_l = _mm256_unpacklo_epi32(x.val, y.val); + __m256i xy_h = _mm256_unpackhi_epi32(x.val, y.val); + + __m256i xy0 = _mm256_permute2x128_si256(xy_l, xy_h, 0 + 2*16); + __m256i xy1 = _mm256_permute2x128_si256(xy_l, xy_h, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, xy0); + _mm256_stream_si256((__m256i*)(ptr + 8), xy1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, xy0); + _mm256_store_si256((__m256i*)(ptr + 8), xy1); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, xy0); + _mm256_storeu_si256((__m256i*)(ptr + 8), xy1); + } +} + +inline void v_store_interleave( uint64* ptr, const v_uint64x4& x, const v_uint64x4& y, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i xy_l = _mm256_unpacklo_epi64(x.val, y.val); + __m256i xy_h = _mm256_unpackhi_epi64(x.val, y.val); + + __m256i xy0 = _mm256_permute2x128_si256(xy_l, xy_h, 0 + 2*16); + __m256i xy1 = _mm256_permute2x128_si256(xy_l, xy_h, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, xy0); + _mm256_stream_si256((__m256i*)(ptr + 4), xy1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, xy0); + _mm256_store_si256((__m256i*)(ptr + 4), xy1); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, xy0); + _mm256_storeu_si256((__m256i*)(ptr + 4), xy1); + } +} + +inline void v_store_interleave( uchar* ptr, const v_uint8x32& a, const v_uint8x32& b, const v_uint8x32& c, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + const __m256i sh_b = _mm256_setr_epi8( + 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, 5, + 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, 5); + const __m256i sh_g = _mm256_setr_epi8( + 5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, + 5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10); + const __m256i sh_r = _mm256_setr_epi8( + 10, 5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, + 10, 5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15); + + __m256i b0 = _mm256_shuffle_epi8(a.val, sh_b); + __m256i g0 = _mm256_shuffle_epi8(b.val, sh_g); + __m256i r0 = _mm256_shuffle_epi8(c.val, sh_r); + + const __m256i m0 = _mm256_setr_epi8(0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, + 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0); + const __m256i m1 = _mm256_setr_epi8(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, + 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0); + + __m256i p0 = _mm256_blendv_epi8(_mm256_blendv_epi8(b0, g0, m0), r0, m1); + __m256i p1 = _mm256_blendv_epi8(_mm256_blendv_epi8(g0, r0, m0), b0, m1); + __m256i p2 = _mm256_blendv_epi8(_mm256_blendv_epi8(r0, b0, m0), g0, m1); + + __m256i bgr0 = _mm256_permute2x128_si256(p0, p1, 0 + 2*16); + __m256i bgr1 = _mm256_permute2x128_si256(p2, p0, 0 + 3*16); + __m256i bgr2 = _mm256_permute2x128_si256(p1, p2, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgr0); + _mm256_stream_si256((__m256i*)(ptr + 32), bgr1); + _mm256_stream_si256((__m256i*)(ptr + 64), bgr2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgr0); + _mm256_store_si256((__m256i*)(ptr + 32), bgr1); + _mm256_store_si256((__m256i*)(ptr + 64), bgr2); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgr0); + _mm256_storeu_si256((__m256i*)(ptr + 32), bgr1); + _mm256_storeu_si256((__m256i*)(ptr + 64), bgr2); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x16& a, const v_uint16x16& b, const v_uint16x16& c, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + const __m256i sh_b = _mm256_setr_epi8( + 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11, + 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11); + const __m256i sh_g = _mm256_setr_epi8( + 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, + 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5); + const __m256i sh_r = _mm256_setr_epi8( + 4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, + 4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15); + + __m256i b0 = _mm256_shuffle_epi8(a.val, sh_b); + __m256i g0 = _mm256_shuffle_epi8(b.val, sh_g); + __m256i r0 = _mm256_shuffle_epi8(c.val, sh_r); + + const __m256i m0 = _mm256_setr_epi8(0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, + 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0); + const __m256i m1 = _mm256_setr_epi8(0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, + -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0); + + __m256i p0 = _mm256_blendv_epi8(_mm256_blendv_epi8(b0, g0, m0), r0, m1); + __m256i p1 = _mm256_blendv_epi8(_mm256_blendv_epi8(g0, r0, m0), b0, m1); + __m256i p2 = _mm256_blendv_epi8(_mm256_blendv_epi8(r0, b0, m0), g0, m1); + + __m256i bgr0 = _mm256_permute2x128_si256(p0, p2, 0 + 2*16); + //__m256i bgr1 = p1; + __m256i bgr2 = _mm256_permute2x128_si256(p0, p2, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgr0); + _mm256_stream_si256((__m256i*)(ptr + 16), p1); + _mm256_stream_si256((__m256i*)(ptr + 32), bgr2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgr0); + _mm256_store_si256((__m256i*)(ptr + 16), p1); + _mm256_store_si256((__m256i*)(ptr + 32), bgr2); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgr0); + _mm256_storeu_si256((__m256i*)(ptr + 16), p1); + _mm256_storeu_si256((__m256i*)(ptr + 32), bgr2); + } +} + +inline void v_store_interleave( unsigned* ptr, const v_uint32x8& a, const v_uint32x8& b, const v_uint32x8& c, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i b0 = _mm256_shuffle_epi32(a.val, 0x6c); + __m256i g0 = _mm256_shuffle_epi32(b.val, 0xb1); + __m256i r0 = _mm256_shuffle_epi32(c.val, 0xc6); + + __m256i p0 = _mm256_blend_epi32(_mm256_blend_epi32(b0, g0, 0x92), r0, 0x24); + __m256i p1 = _mm256_blend_epi32(_mm256_blend_epi32(g0, r0, 0x92), b0, 0x24); + __m256i p2 = _mm256_blend_epi32(_mm256_blend_epi32(r0, b0, 0x92), g0, 0x24); + + __m256i bgr0 = _mm256_permute2x128_si256(p0, p1, 0 + 2*16); + //__m256i bgr1 = p2; + __m256i bgr2 = _mm256_permute2x128_si256(p0, p1, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgr0); + _mm256_stream_si256((__m256i*)(ptr + 8), p2); + _mm256_stream_si256((__m256i*)(ptr + 16), bgr2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgr0); + _mm256_store_si256((__m256i*)(ptr + 8), p2); + _mm256_store_si256((__m256i*)(ptr + 16), bgr2); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgr0); + _mm256_storeu_si256((__m256i*)(ptr + 8), p2); + _mm256_storeu_si256((__m256i*)(ptr + 16), bgr2); + } +} + +inline void v_store_interleave( uint64* ptr, const v_uint64x4& a, const v_uint64x4& b, const v_uint64x4& c, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i s01 = _mm256_unpacklo_epi64(a.val, b.val); + __m256i s12 = _mm256_unpackhi_epi64(b.val, c.val); + __m256i s20 = _mm256_blend_epi32(c.val, a.val, 0xcc); + + __m256i bgr0 = _mm256_permute2x128_si256(s01, s20, 0 + 2*16); + __m256i bgr1 = _mm256_blend_epi32(s01, s12, 0x0f); + __m256i bgr2 = _mm256_permute2x128_si256(s20, s12, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgr0); + _mm256_stream_si256((__m256i*)(ptr + 4), bgr1); + _mm256_stream_si256((__m256i*)(ptr + 8), bgr2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgr0); + _mm256_store_si256((__m256i*)(ptr + 4), bgr1); + _mm256_store_si256((__m256i*)(ptr + 8), bgr2); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgr0); + _mm256_storeu_si256((__m256i*)(ptr + 4), bgr1); + _mm256_storeu_si256((__m256i*)(ptr + 8), bgr2); + } +} + +inline void v_store_interleave( uchar* ptr, const v_uint8x32& a, const v_uint8x32& b, + const v_uint8x32& c, const v_uint8x32& d, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i bg0 = _mm256_unpacklo_epi8(a.val, b.val); + __m256i bg1 = _mm256_unpackhi_epi8(a.val, b.val); + __m256i ra0 = _mm256_unpacklo_epi8(c.val, d.val); + __m256i ra1 = _mm256_unpackhi_epi8(c.val, d.val); + + __m256i bgra0_ = _mm256_unpacklo_epi16(bg0, ra0); + __m256i bgra1_ = _mm256_unpackhi_epi16(bg0, ra0); + __m256i bgra2_ = _mm256_unpacklo_epi16(bg1, ra1); + __m256i bgra3_ = _mm256_unpackhi_epi16(bg1, ra1); + + __m256i bgra0 = _mm256_permute2x128_si256(bgra0_, bgra1_, 0 + 2*16); + __m256i bgra2 = _mm256_permute2x128_si256(bgra0_, bgra1_, 1 + 3*16); + __m256i bgra1 = _mm256_permute2x128_si256(bgra2_, bgra3_, 0 + 2*16); + __m256i bgra3 = _mm256_permute2x128_si256(bgra2_, bgra3_, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgra0); + _mm256_stream_si256((__m256i*)(ptr + 32), bgra1); + _mm256_stream_si256((__m256i*)(ptr + 64), bgra2); + _mm256_stream_si256((__m256i*)(ptr + 96), bgra3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgra0); + _mm256_store_si256((__m256i*)(ptr + 32), bgra1); + _mm256_store_si256((__m256i*)(ptr + 64), bgra2); + _mm256_store_si256((__m256i*)(ptr + 96), bgra3); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgra0); + _mm256_storeu_si256((__m256i*)(ptr + 32), bgra1); + _mm256_storeu_si256((__m256i*)(ptr + 64), bgra2); + _mm256_storeu_si256((__m256i*)(ptr + 96), bgra3); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x16& a, const v_uint16x16& b, + const v_uint16x16& c, const v_uint16x16& d, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i bg0 = _mm256_unpacklo_epi16(a.val, b.val); + __m256i bg1 = _mm256_unpackhi_epi16(a.val, b.val); + __m256i ra0 = _mm256_unpacklo_epi16(c.val, d.val); + __m256i ra1 = _mm256_unpackhi_epi16(c.val, d.val); + + __m256i bgra0_ = _mm256_unpacklo_epi32(bg0, ra0); + __m256i bgra1_ = _mm256_unpackhi_epi32(bg0, ra0); + __m256i bgra2_ = _mm256_unpacklo_epi32(bg1, ra1); + __m256i bgra3_ = _mm256_unpackhi_epi32(bg1, ra1); + + __m256i bgra0 = _mm256_permute2x128_si256(bgra0_, bgra1_, 0 + 2*16); + __m256i bgra2 = _mm256_permute2x128_si256(bgra0_, bgra1_, 1 + 3*16); + __m256i bgra1 = _mm256_permute2x128_si256(bgra2_, bgra3_, 0 + 2*16); + __m256i bgra3 = _mm256_permute2x128_si256(bgra2_, bgra3_, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgra0); + _mm256_stream_si256((__m256i*)(ptr + 16), bgra1); + _mm256_stream_si256((__m256i*)(ptr + 32), bgra2); + _mm256_stream_si256((__m256i*)(ptr + 48), bgra3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgra0); + _mm256_store_si256((__m256i*)(ptr + 16), bgra1); + _mm256_store_si256((__m256i*)(ptr + 32), bgra2); + _mm256_store_si256((__m256i*)(ptr + 48), bgra3); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgra0); + _mm256_storeu_si256((__m256i*)(ptr + 16), bgra1); + _mm256_storeu_si256((__m256i*)(ptr + 32), bgra2); + _mm256_storeu_si256((__m256i*)(ptr + 48), bgra3); + } +} + +inline void v_store_interleave( unsigned* ptr, const v_uint32x8& a, const v_uint32x8& b, + const v_uint32x8& c, const v_uint32x8& d, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i bg0 = _mm256_unpacklo_epi32(a.val, b.val); + __m256i bg1 = _mm256_unpackhi_epi32(a.val, b.val); + __m256i ra0 = _mm256_unpacklo_epi32(c.val, d.val); + __m256i ra1 = _mm256_unpackhi_epi32(c.val, d.val); + + __m256i bgra0_ = _mm256_unpacklo_epi64(bg0, ra0); + __m256i bgra1_ = _mm256_unpackhi_epi64(bg0, ra0); + __m256i bgra2_ = _mm256_unpacklo_epi64(bg1, ra1); + __m256i bgra3_ = _mm256_unpackhi_epi64(bg1, ra1); + + __m256i bgra0 = _mm256_permute2x128_si256(bgra0_, bgra1_, 0 + 2*16); + __m256i bgra2 = _mm256_permute2x128_si256(bgra0_, bgra1_, 1 + 3*16); + __m256i bgra1 = _mm256_permute2x128_si256(bgra2_, bgra3_, 0 + 2*16); + __m256i bgra3 = _mm256_permute2x128_si256(bgra2_, bgra3_, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgra0); + _mm256_stream_si256((__m256i*)(ptr + 8), bgra1); + _mm256_stream_si256((__m256i*)(ptr + 16), bgra2); + _mm256_stream_si256((__m256i*)(ptr + 24), bgra3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgra0); + _mm256_store_si256((__m256i*)(ptr + 8), bgra1); + _mm256_store_si256((__m256i*)(ptr + 16), bgra2); + _mm256_store_si256((__m256i*)(ptr + 24), bgra3); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgra0); + _mm256_storeu_si256((__m256i*)(ptr + 8), bgra1); + _mm256_storeu_si256((__m256i*)(ptr + 16), bgra2); + _mm256_storeu_si256((__m256i*)(ptr + 24), bgra3); + } +} + +inline void v_store_interleave( uint64* ptr, const v_uint64x4& a, const v_uint64x4& b, + const v_uint64x4& c, const v_uint64x4& d, + hal::StoreMode mode=hal::STORE_UNALIGNED ) +{ + __m256i bg0 = _mm256_unpacklo_epi64(a.val, b.val); + __m256i bg1 = _mm256_unpackhi_epi64(a.val, b.val); + __m256i ra0 = _mm256_unpacklo_epi64(c.val, d.val); + __m256i ra1 = _mm256_unpackhi_epi64(c.val, d.val); + + __m256i bgra0 = _mm256_permute2x128_si256(bg0, ra0, 0 + 2*16); + __m256i bgra1 = _mm256_permute2x128_si256(bg1, ra1, 0 + 2*16); + __m256i bgra2 = _mm256_permute2x128_si256(bg0, ra0, 1 + 3*16); + __m256i bgra3 = _mm256_permute2x128_si256(bg1, ra1, 1 + 3*16); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm256_stream_si256((__m256i*)ptr, bgra0); + _mm256_stream_si256((__m256i*)(ptr + 4), bgra1); + _mm256_stream_si256((__m256i*)(ptr + 8), bgra2); + _mm256_stream_si256((__m256i*)(ptr + 12), bgra3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm256_store_si256((__m256i*)ptr, bgra0); + _mm256_store_si256((__m256i*)(ptr + 4), bgra1); + _mm256_store_si256((__m256i*)(ptr + 8), bgra2); + _mm256_store_si256((__m256i*)(ptr + 12), bgra3); + } + else + { + _mm256_storeu_si256((__m256i*)ptr, bgra0); + _mm256_storeu_si256((__m256i*)(ptr + 4), bgra1); + _mm256_storeu_si256((__m256i*)(ptr + 8), bgra2); + _mm256_storeu_si256((__m256i*)(ptr + 12), bgra3); + } +} + +#define OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(_Tpvec0, _Tp0, suffix0, _Tpvec1, _Tp1, suffix1) \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0 ) \ +{ \ + _Tpvec1 a1, b1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ +} \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0, _Tpvec0& c0 ) \ +{ \ + _Tpvec1 a1, b1, c1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1, c1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ + c0 = v_reinterpret_as_##suffix0(c1); \ +} \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0, _Tpvec0& c0, _Tpvec0& d0 ) \ +{ \ + _Tpvec1 a1, b1, c1, d1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1, c1, d1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ + c0 = v_reinterpret_as_##suffix0(c1); \ + d0 = v_reinterpret_as_##suffix0(d1); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, \ + hal::StoreMode mode=hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, mode); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, const _Tpvec0& c0, \ + hal::StoreMode mode=hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + _Tpvec1 c1 = v_reinterpret_as_##suffix1(c0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, c1, mode); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, \ + const _Tpvec0& c0, const _Tpvec0& d0, \ + hal::StoreMode mode=hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + _Tpvec1 c1 = v_reinterpret_as_##suffix1(c0); \ + _Tpvec1 d1 = v_reinterpret_as_##suffix1(d0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, c1, d1, mode); \ +} + +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_int8x32, schar, s8, v_uint8x32, uchar, u8) +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_int16x16, short, s16, v_uint16x16, ushort, u16) +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_int32x8, int, s32, v_uint32x8, unsigned, u32) +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_float32x8, float, f32, v_uint32x8, unsigned, u32) +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_int64x4, int64, s64, v_uint64x4, uint64, u64) +OPENCV_HAL_IMPL_AVX_LOADSTORE_INTERLEAVE(v_float64x4, double, f64, v_uint64x4, uint64, u64) + +// FP16 +inline v_float32x8 v256_load_expand(const float16_t* ptr) +{ + return v_float32x8(_mm256_cvtph_ps(_mm_loadu_si128((const __m128i*)ptr))); +} + +inline void v_pack_store(float16_t* ptr, const v_float32x8& a) +{ + __m128i ah = _mm256_cvtps_ph(a.val, 0); + _mm_storeu_si128((__m128i*)ptr, ah); +} + +inline void v256_cleanup() { _mm256_zeroall(); } + +//! @name Check SIMD256 support +//! @{ +//! @brief Check CPU capability of SIMD operation +static inline bool hasSIMD256() +{ + return (CV_CPU_HAS_SUPPORT_AVX2) ? true : false; +} +//! @} + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} // cv:: + +#endif // OPENCV_HAL_INTRIN_AVX_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_cpp.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_cpp.hpp new file mode 100644 index 0000000..757c67b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_cpp.hpp @@ -0,0 +1,2382 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_INTRIN_CPP_HPP +#define OPENCV_HAL_INTRIN_CPP_HPP + +#include +#include +#include +#include "opencv2/core/saturate.hpp" + +namespace cv +{ + +#ifndef CV_DOXYGEN +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN +#endif + +/** @addtogroup core_hal_intrin + +"Universal intrinsics" is a types and functions set intended to simplify vectorization of code on +different platforms. Currently there are two supported SIMD extensions: __SSE/SSE2__ on x86 +architectures and __NEON__ on ARM architectures, both allow working with 128 bit registers +containing packed values of different types. In case when there is no SIMD extension available +during compilation, fallback C++ implementation of intrinsics will be chosen and code will work as +expected although it could be slower. + +### Types + +There are several types representing 128-bit register as a vector of packed values, each type is +implemented as a structure based on a one SIMD register. + +- cv::v_uint8x16 and cv::v_int8x16: sixteen 8-bit integer values (unsigned/signed) - char +- cv::v_uint16x8 and cv::v_int16x8: eight 16-bit integer values (unsigned/signed) - short +- cv::v_uint32x4 and cv::v_int32x4: four 32-bit integer values (unsgined/signed) - int +- cv::v_uint64x2 and cv::v_int64x2: two 64-bit integer values (unsigned/signed) - int64 +- cv::v_float32x4: four 32-bit floating point values (signed) - float +- cv::v_float64x2: two 64-bit floating point valies (signed) - double + +@note +cv::v_float64x2 is not implemented in NEON variant, if you want to use this type, don't forget to +check the CV_SIMD128_64F preprocessor definition: +@code +#if CV_SIMD128_64F +//... +#endif +@endcode + +### Load and store operations + +These operations allow to set contents of the register explicitly or by loading it from some memory +block and to save contents of the register to memory block. + +- Constructors: +@ref v_reg::v_reg(const _Tp *ptr) "from memory", +@ref v_reg::v_reg(_Tp s0, _Tp s1) "from two values", ... +- Other create methods: +@ref v_setall_s8, @ref v_setall_u8, ..., +@ref v_setzero_u8, @ref v_setzero_s8, ... +- Memory operations: +@ref v_load, @ref v_load_aligned, @ref v_load_low, @ref v_load_halves, +@ref v_store, @ref v_store_aligned, +@ref v_store_high, @ref v_store_low + +### Value reordering + +These operations allow to reorder or recombine elements in one or multiple vectors. + +- Interleave, deinterleave (2, 3 and 4 channels): @ref v_load_deinterleave, @ref v_store_interleave +- Expand: @ref v_load_expand, @ref v_load_expand_q, @ref v_expand, @ref v_expand_low, @ref v_expand_high +- Pack: @ref v_pack, @ref v_pack_u, @ref v_pack_b, @ref v_rshr_pack, @ref v_rshr_pack_u, +@ref v_pack_store, @ref v_pack_u_store, @ref v_rshr_pack_store, @ref v_rshr_pack_u_store +- Recombine: @ref v_zip, @ref v_recombine, @ref v_combine_low, @ref v_combine_high +- Extract: @ref v_extract + + +### Arithmetic, bitwise and comparison operations + +Element-wise binary and unary operations. + +- Arithmetics: +@ref operator +(const v_reg &a, const v_reg &b) "+", +@ref operator -(const v_reg &a, const v_reg &b) "-", +@ref operator *(const v_reg &a, const v_reg &b) "*", +@ref operator /(const v_reg &a, const v_reg &b) "/", +@ref v_mul_expand + +- Non-saturating arithmetics: @ref v_add_wrap, @ref v_sub_wrap + +- Bitwise shifts: +@ref operator <<(const v_reg &a, int s) "<<", +@ref operator >>(const v_reg &a, int s) ">>", +@ref v_shl, @ref v_shr + +- Bitwise logic: +@ref operator&(const v_reg &a, const v_reg &b) "&", +@ref operator |(const v_reg &a, const v_reg &b) "|", +@ref operator ^(const v_reg &a, const v_reg &b) "^", +@ref operator ~(const v_reg &a) "~" + +- Comparison: +@ref operator >(const v_reg &a, const v_reg &b) ">", +@ref operator >=(const v_reg &a, const v_reg &b) ">=", +@ref operator <(const v_reg &a, const v_reg &b) "<", +@ref operator <=(const v_reg &a, const v_reg &b) "<=", +@ref operator==(const v_reg &a, const v_reg &b) "==", +@ref operator !=(const v_reg &a, const v_reg &b) "!=" + +- min/max: @ref v_min, @ref v_max + +### Reduce and mask + +Most of these operations return only one value. + +- Reduce: @ref v_reduce_min, @ref v_reduce_max, @ref v_reduce_sum, @ref v_popcount +- Mask: @ref v_signmask, @ref v_check_all, @ref v_check_any, @ref v_select + +### Other math + +- Some frequent operations: @ref v_sqrt, @ref v_invsqrt, @ref v_magnitude, @ref v_sqr_magnitude +- Absolute values: @ref v_abs, @ref v_absdiff, @ref v_absdiffs + +### Conversions + +Different type conversions and casts: + +- Rounding: @ref v_round, @ref v_floor, @ref v_ceil, @ref v_trunc, +- To float: @ref v_cvt_f32, @ref v_cvt_f64 +- Reinterpret: @ref v_reinterpret_as_u8, @ref v_reinterpret_as_s8, ... + +### Matrix operations + +In these operations vectors represent matrix rows/columns: @ref v_dotprod, @ref v_matmul, @ref v_transpose4x4 + +### Usability + +Most operations are implemented only for some subset of the available types, following matrices +shows the applicability of different operations to the types. + +Regular integers: + +| Operations\\Types | uint 8x16 | int 8x16 | uint 16x8 | int 16x8 | uint 32x4 | int 32x4 | +|-------------------|:-:|:-:|:-:|:-:|:-:|:-:| +|load, store | x | x | x | x | x | x | +|interleave | x | x | x | x | x | x | +|expand | x | x | x | x | x | x | +|expand_low | x | x | x | x | x | x | +|expand_high | x | x | x | x | x | x | +|expand_q | x | x | | | | | +|add, sub | x | x | x | x | x | x | +|add_wrap, sub_wrap | x | x | x | x | | | +|mul_wrap | x | x | x | x | | | +|mul | x | x | x | x | x | x | +|mul_expand | x | x | x | x | x | | +|compare | x | x | x | x | x | x | +|shift | | | x | x | x | x | +|dotprod | | | | x | | | +|logical | x | x | x | x | x | x | +|min, max | x | x | x | x | x | x | +|absdiff | x | x | x | x | x | x | +|absdiffs | | x | | x | | | +|reduce | | | | | x | x | +|mask | x | x | x | x | x | x | +|pack | x | x | x | x | x | x | +|pack_u | x | | x | | | | +|pack_b | x | | | | | | +|unpack | x | x | x | x | x | x | +|extract | x | x | x | x | x | x | +|rotate (lanes) | x | x | x | x | x | x | +|cvt_flt32 | | | | | | x | +|cvt_flt64 | | | | | | x | +|transpose4x4 | | | | | x | x | + +Big integers: + +| Operations\\Types | uint 64x2 | int 64x2 | +|-------------------|:-:|:-:| +|load, store | x | x | +|add, sub | x | x | +|shift | x | x | +|logical | x | x | +|extract | x | x | +|rotate (lanes) | x | x | + +Floating point: + +| Operations\\Types | float 32x4 | float 64x2 | +|-------------------|:-:|:-:| +|load, store | x | x | +|interleave | x | | +|add, sub | x | x | +|mul | x | x | +|div | x | x | +|compare | x | x | +|min, max | x | x | +|absdiff | x | x | +|reduce | x | | +|mask | x | x | +|unpack | x | x | +|cvt_flt32 | | x | +|cvt_flt64 | x | | +|sqrt, abs | x | x | +|float math | x | x | +|transpose4x4 | x | | +|extract | x | x | +|rotate (lanes) | x | x | + + @{ */ + +template struct v_reg +{ +//! @cond IGNORED + typedef _Tp lane_type; + enum { nlanes = n }; +// !@endcond + + /** @brief Constructor + + Initializes register with data from memory + @param ptr pointer to memory block with data for register */ + explicit v_reg(const _Tp* ptr) { for( int i = 0; i < n; i++ ) s[i] = ptr[i]; } + + /** @brief Constructor + + Initializes register with two 64-bit values */ + v_reg(_Tp s0, _Tp s1) { s[0] = s0; s[1] = s1; } + + /** @brief Constructor + + Initializes register with four 32-bit values */ + v_reg(_Tp s0, _Tp s1, _Tp s2, _Tp s3) { s[0] = s0; s[1] = s1; s[2] = s2; s[3] = s3; } + + /** @brief Constructor + + Initializes register with eight 16-bit values */ + v_reg(_Tp s0, _Tp s1, _Tp s2, _Tp s3, + _Tp s4, _Tp s5, _Tp s6, _Tp s7) + { + s[0] = s0; s[1] = s1; s[2] = s2; s[3] = s3; + s[4] = s4; s[5] = s5; s[6] = s6; s[7] = s7; + } + + /** @brief Constructor + + Initializes register with sixteen 8-bit values */ + v_reg(_Tp s0, _Tp s1, _Tp s2, _Tp s3, + _Tp s4, _Tp s5, _Tp s6, _Tp s7, + _Tp s8, _Tp s9, _Tp s10, _Tp s11, + _Tp s12, _Tp s13, _Tp s14, _Tp s15) + { + s[0] = s0; s[1] = s1; s[2] = s2; s[3] = s3; + s[4] = s4; s[5] = s5; s[6] = s6; s[7] = s7; + s[8] = s8; s[9] = s9; s[10] = s10; s[11] = s11; + s[12] = s12; s[13] = s13; s[14] = s14; s[15] = s15; + } + + /** @brief Default constructor + + Does not initialize anything*/ + v_reg() {} + + /** @brief Copy constructor */ + v_reg(const v_reg<_Tp, n> & r) + { + for( int i = 0; i < n; i++ ) + s[i] = r.s[i]; + } + /** @brief Access first value + + Returns value of the first lane according to register type, for example: + @code{.cpp} + v_int32x4 r(1, 2, 3, 4); + int v = r.get0(); // returns 1 + v_uint64x2 r(1, 2); + uint64_t v = r.get0(); // returns 1 + @endcode + */ + _Tp get0() const { return s[0]; } + +//! @cond IGNORED + _Tp get(const int i) const { return s[i]; } + v_reg<_Tp, n> high() const + { + v_reg<_Tp, n> c; + int i; + for( i = 0; i < n/2; i++ ) + { + c.s[i] = s[i+(n/2)]; + c.s[i+(n/2)] = 0; + } + return c; + } + + static v_reg<_Tp, n> zero() + { + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = (_Tp)0; + return c; + } + + static v_reg<_Tp, n> all(_Tp s) + { + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = s; + return c; + } + + template v_reg<_Tp2, n2> reinterpret_as() const + { + size_t bytes = std::min(sizeof(_Tp2)*n2, sizeof(_Tp)*n); + v_reg<_Tp2, n2> c; + std::memcpy(&c.s[0], &s[0], bytes); + return c; + } + + _Tp s[n]; +//! @endcond +}; + +/** @brief Sixteen 8-bit unsigned integer values */ +typedef v_reg v_uint8x16; +/** @brief Sixteen 8-bit signed integer values */ +typedef v_reg v_int8x16; +/** @brief Eight 16-bit unsigned integer values */ +typedef v_reg v_uint16x8; +/** @brief Eight 16-bit signed integer values */ +typedef v_reg v_int16x8; +/** @brief Four 32-bit unsigned integer values */ +typedef v_reg v_uint32x4; +/** @brief Four 32-bit signed integer values */ +typedef v_reg v_int32x4; +/** @brief Four 32-bit floating point values (single precision) */ +typedef v_reg v_float32x4; +/** @brief Two 64-bit floating point values (double precision) */ +typedef v_reg v_float64x2; +/** @brief Two 64-bit unsigned integer values */ +typedef v_reg v_uint64x2; +/** @brief Two 64-bit signed integer values */ +typedef v_reg v_int64x2; + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_BIN_OP(bin_op) \ +template inline v_reg<_Tp, n> \ + operator bin_op (const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + v_reg<_Tp, n> c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = saturate_cast<_Tp>(a.s[i] bin_op b.s[i]); \ + return c; \ +} \ +template inline v_reg<_Tp, n>& \ + operator bin_op##= (v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + for( int i = 0; i < n; i++ ) \ + a.s[i] = saturate_cast<_Tp>(a.s[i] bin_op b.s[i]); \ + return a; \ +} + +/** @brief Add values + +For all types. */ +OPENCV_HAL_IMPL_BIN_OP(+) + +/** @brief Subtract values + +For all types. */ +OPENCV_HAL_IMPL_BIN_OP(-) + +/** @brief Multiply values + +For 16- and 32-bit integer types and floating types. */ +OPENCV_HAL_IMPL_BIN_OP(*) + +/** @brief Divide values + +For floating types only. */ +OPENCV_HAL_IMPL_BIN_OP(/) + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_BIT_OP(bit_op) \ +template inline v_reg<_Tp, n> operator bit_op \ + (const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + v_reg<_Tp, n> c; \ + typedef typename V_TypeTraits<_Tp>::int_type itype; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int((itype)(V_TypeTraits<_Tp>::reinterpret_int(a.s[i]) bit_op \ + V_TypeTraits<_Tp>::reinterpret_int(b.s[i]))); \ + return c; \ +} \ +template inline v_reg<_Tp, n>& operator \ + bit_op##= (v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + typedef typename V_TypeTraits<_Tp>::int_type itype; \ + for( int i = 0; i < n; i++ ) \ + a.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int((itype)(V_TypeTraits<_Tp>::reinterpret_int(a.s[i]) bit_op \ + V_TypeTraits<_Tp>::reinterpret_int(b.s[i]))); \ + return a; \ +} + +/** @brief Bitwise AND + +Only for integer types. */ +OPENCV_HAL_IMPL_BIT_OP(&) + +/** @brief Bitwise OR + +Only for integer types. */ +OPENCV_HAL_IMPL_BIT_OP(|) + +/** @brief Bitwise XOR + +Only for integer types.*/ +OPENCV_HAL_IMPL_BIT_OP(^) + +/** @brief Bitwise NOT + +Only for integer types.*/ +template inline v_reg<_Tp, n> operator ~ (const v_reg<_Tp, n>& a) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int(~V_TypeTraits<_Tp>::reinterpret_int(a.s[i])); + } + return c; +} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_MATH_FUNC(func, cfunc, _Tp2) \ +template inline v_reg<_Tp2, n> func(const v_reg<_Tp, n>& a) \ +{ \ + v_reg<_Tp2, n> c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = cfunc(a.s[i]); \ + return c; \ +} + +/** @brief Square root of elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_sqrt, std::sqrt, _Tp) + +//! @cond IGNORED +OPENCV_HAL_IMPL_MATH_FUNC(v_sin, std::sin, _Tp) +OPENCV_HAL_IMPL_MATH_FUNC(v_cos, std::cos, _Tp) +OPENCV_HAL_IMPL_MATH_FUNC(v_exp, std::exp, _Tp) +OPENCV_HAL_IMPL_MATH_FUNC(v_log, std::log, _Tp) +//! @endcond + +/** @brief Absolute value of elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_abs, (typename V_TypeTraits<_Tp>::abs_type)std::abs, + typename V_TypeTraits<_Tp>::abs_type) + +/** @brief Round elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_round, cvRound, int) + +/** @brief Floor elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_floor, cvFloor, int) + +/** @brief Ceil elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_ceil, cvCeil, int) + +/** @brief Truncate elements + +Only for floating point types.*/ +OPENCV_HAL_IMPL_MATH_FUNC(v_trunc, int, int) + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_MINMAX_FUNC(func, cfunc) \ +template inline v_reg<_Tp, n> func(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + v_reg<_Tp, n> c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = cfunc(a.s[i], b.s[i]); \ + return c; \ +} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_REDUCE_MINMAX_FUNC(func, cfunc) \ +template inline _Tp func(const v_reg<_Tp, n>& a) \ +{ \ + _Tp c = a.s[0]; \ + for( int i = 1; i < n; i++ ) \ + c = cfunc(c, a.s[i]); \ + return c; \ +} + +/** @brief Choose min values for each pair + +Scheme: +@code +{A1 A2 ...} +{B1 B2 ...} +-------------- +{min(A1,B1) min(A2,B2) ...} +@endcode +For all types except 64-bit integer. */ +OPENCV_HAL_IMPL_MINMAX_FUNC(v_min, std::min) + +/** @brief Choose max values for each pair + +Scheme: +@code +{A1 A2 ...} +{B1 B2 ...} +-------------- +{max(A1,B1) max(A2,B2) ...} +@endcode +For all types except 64-bit integer. */ +OPENCV_HAL_IMPL_MINMAX_FUNC(v_max, std::max) + +/** @brief Find one min value + +Scheme: +@code +{A1 A2 A3 ...} => min(A1,A2,A3,...) +@endcode +For 32-bit integer and 32-bit floating point types. */ +OPENCV_HAL_IMPL_REDUCE_MINMAX_FUNC(v_reduce_min, std::min) + +/** @brief Find one max value + +Scheme: +@code +{A1 A2 A3 ...} => max(A1,A2,A3,...) +@endcode +For 32-bit integer and 32-bit floating point types. */ +OPENCV_HAL_IMPL_REDUCE_MINMAX_FUNC(v_reduce_max, std::max) + +static const unsigned char popCountTable[] = +{ + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, +}; +/** @brief Count the 1 bits in the vector and return 4 values + +Scheme: +@code +{A1 A2 A3 ...} => popcount(A1) +@endcode +Any types but result will be in v_uint32x4*/ +template inline v_uint32x4 v_popcount(const v_reg<_Tp, n>& a) +{ + v_uint8x16 b; + b = v_reinterpret_as_u8(a); + for( int i = 0; i < v_uint8x16::nlanes; i++ ) + { + b.s[i] = popCountTable[b.s[i]]; + } + v_uint32x4 c; + for( int i = 0; i < v_uint32x4::nlanes; i++ ) + { + c.s[i] = b.s[i*4] + b.s[i*4+1] + b.s[i*4+2] + b.s[i*4+3]; + } + return c; +} + + +//! @cond IGNORED +template +inline void v_minmax( const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, + v_reg<_Tp, n>& minval, v_reg<_Tp, n>& maxval ) +{ + for( int i = 0; i < n; i++ ) + { + minval.s[i] = std::min(a.s[i], b.s[i]); + maxval.s[i] = std::max(a.s[i], b.s[i]); + } +} +//! @endcond + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_CMP_OP(cmp_op) \ +template \ +inline v_reg<_Tp, n> operator cmp_op(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + typedef typename V_TypeTraits<_Tp>::int_type itype; \ + v_reg<_Tp, n> c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int((itype)-(int)(a.s[i] cmp_op b.s[i])); \ + return c; \ +} + +/** @brief Less-than comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(<) + +/** @brief Greater-than comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(>) + +/** @brief Less-than or equal comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(<=) + +/** @brief Greater-than or equal comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(>=) + +/** @brief Equal comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(==) + +/** @brief Not equal comparison + +For all types except 64-bit integer values. */ +OPENCV_HAL_IMPL_CMP_OP(!=) + +template +inline v_reg v_not_nan(const v_reg& a) +{ + typedef typename V_TypeTraits::int_type itype; + v_reg c; + for (int i = 0; i < n; i++) + c.s[i] = V_TypeTraits::reinterpret_from_int((itype)-(int)(a.s[i] == a.s[i])); + return c; +} +template +inline v_reg v_not_nan(const v_reg& a) +{ + typedef typename V_TypeTraits::int_type itype; + v_reg c; + for (int i = 0; i < n; i++) + c.s[i] = V_TypeTraits::reinterpret_from_int((itype)-(int)(a.s[i] == a.s[i])); + return c; +} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_ARITHM_OP(func, bin_op, cast_op, _Tp2) \ +template \ +inline v_reg<_Tp2, n> func(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + typedef _Tp2 rtype; \ + v_reg c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = cast_op(a.s[i] bin_op b.s[i]); \ + return c; \ +} + +/** @brief Add values without saturation + +For 8- and 16-bit integer values. */ +OPENCV_HAL_IMPL_ARITHM_OP(v_add_wrap, +, (_Tp), _Tp) + +/** @brief Subtract values without saturation + +For 8- and 16-bit integer values. */ +OPENCV_HAL_IMPL_ARITHM_OP(v_sub_wrap, -, (_Tp), _Tp) + +/** @brief Multiply values without saturation + +For 8- and 16-bit integer values. */ +OPENCV_HAL_IMPL_ARITHM_OP(v_mul_wrap, *, (_Tp), _Tp) + +//! @cond IGNORED +template inline T _absdiff(T a, T b) +{ + return a > b ? a - b : b - a; +} +//! @endcond + +/** @brief Absolute difference + +Returns \f$ |a - b| \f$ converted to corresponding unsigned type. +Example: +@code{.cpp} +v_int32x4 a, b; // {1, 2, 3, 4} and {4, 3, 2, 1} +v_uint32x4 c = v_absdiff(a, b); // result is {3, 1, 1, 3} +@endcode +For 8-, 16-, 32-bit integer source types. */ +template +inline v_reg::abs_type, n> v_absdiff(const v_reg<_Tp, n>& a, const v_reg<_Tp, n> & b) +{ + typedef typename V_TypeTraits<_Tp>::abs_type rtype; + v_reg c; + const rtype mask = (rtype)(std::numeric_limits<_Tp>::is_signed ? (1 << (sizeof(rtype)*8 - 1)) : 0); + for( int i = 0; i < n; i++ ) + { + rtype ua = a.s[i] ^ mask; + rtype ub = b.s[i] ^ mask; + c.s[i] = _absdiff(ua, ub); + } + return c; +} + +/** @overload + +For 32-bit floating point values */ +inline v_float32x4 v_absdiff(const v_float32x4& a, const v_float32x4& b) +{ + v_float32x4 c; + for( int i = 0; i < c.nlanes; i++ ) + c.s[i] = _absdiff(a.s[i], b.s[i]); + return c; +} + +/** @overload + +For 64-bit floating point values */ +inline v_float64x2 v_absdiff(const v_float64x2& a, const v_float64x2& b) +{ + v_float64x2 c; + for( int i = 0; i < c.nlanes; i++ ) + c.s[i] = _absdiff(a.s[i], b.s[i]); + return c; +} + +/** @brief Saturating absolute difference + +Returns \f$ saturate(|a - b|) \f$ . +For 8-, 16-bit signed integer source types. */ +template +inline v_reg<_Tp, n> v_absdiffs(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++) + c.s[i] = saturate_cast<_Tp>(std::abs(a.s[i] - b.s[i])); + return c; +} + +/** @brief Inversed square root + +Returns \f$ 1/sqrt(a) \f$ +For floating point types only. */ +template +inline v_reg<_Tp, n> v_invsqrt(const v_reg<_Tp, n>& a) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = 1.f/std::sqrt(a.s[i]); + return c; +} + +/** @brief Magnitude + +Returns \f$ sqrt(a^2 + b^2) \f$ +For floating point types only. */ +template +inline v_reg<_Tp, n> v_magnitude(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = std::sqrt(a.s[i]*a.s[i] + b.s[i]*b.s[i]); + return c; +} + +/** @brief Square of the magnitude + +Returns \f$ a^2 + b^2 \f$ +For floating point types only. */ +template +inline v_reg<_Tp, n> v_sqr_magnitude(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = a.s[i]*a.s[i] + b.s[i]*b.s[i]; + return c; +} + +/** @brief Multiply and add + + Returns \f$ a*b + c \f$ + For floating point types and signed 32bit int only. */ +template +inline v_reg<_Tp, n> v_fma(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, + const v_reg<_Tp, n>& c) +{ + v_reg<_Tp, n> d; + for( int i = 0; i < n; i++ ) + d.s[i] = a.s[i]*b.s[i] + c.s[i]; + return d; +} + +/** @brief A synonym for v_fma */ +template +inline v_reg<_Tp, n> v_muladd(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, + const v_reg<_Tp, n>& c) +{ + return v_fma(a, b, c); +} + +/** @brief Dot product of elements + +Multiply values in two registers and sum adjacent result pairs. +Scheme: +@code + {A1 A2 ...} // 16-bit +x {B1 B2 ...} // 16-bit +------------- +{A1B1+A2B2 ...} // 32-bit +@endcode +Implemented only for 16-bit signed source type (v_int16x8). +*/ +template inline v_reg::w_type, n/2> + v_dotprod(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + v_reg c; + for( int i = 0; i < (n/2); i++ ) + c.s[i] = (w_type)a.s[i*2]*b.s[i*2] + (w_type)a.s[i*2+1]*b.s[i*2+1]; + return c; +} + +/** @brief Dot product of elements + +Same as cv::v_dotprod, but add a third element to the sum of adjacent pairs. +Scheme: +@code + {A1 A2 ...} // 16-bit +x {B1 B2 ...} // 16-bit +------------- + {A1B1+A2B2+C1 ...} // 32-bit + +@endcode +Implemented only for 16-bit signed source type (v_int16x8). +*/ +template inline v_reg::w_type, n/2> + v_dotprod(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, const v_reg::w_type, n / 2>& c) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + v_reg s; + for( int i = 0; i < (n/2); i++ ) + s.s[i] = (w_type)a.s[i*2]*b.s[i*2] + (w_type)a.s[i*2+1]*b.s[i*2+1] + c.s[i]; + return s; +} + +/** @brief Multiply and expand + +Multiply values two registers and store results in two registers with wider pack type. +Scheme: +@code + {A B C D} // 32-bit +x {E F G H} // 32-bit +--------------- +{AE BF} // 64-bit + {CG DH} // 64-bit +@endcode +Example: +@code{.cpp} +v_uint32x4 a, b; // {1,2,3,4} and {2,2,2,2} +v_uint64x2 c, d; // results +v_mul_expand(a, b, c, d); // c, d = {2,4}, {6, 8} +@endcode +Implemented only for 16- and unsigned 32-bit source types (v_int16x8, v_uint16x8, v_uint32x4). +*/ +template inline void v_mul_expand(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, + v_reg::w_type, n/2>& c, + v_reg::w_type, n/2>& d) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + for( int i = 0; i < (n/2); i++ ) + { + c.s[i] = (w_type)a.s[i]*b.s[i]; + d.s[i] = (w_type)a.s[i+(n/2)]*b.s[i+(n/2)]; + } +} + +/** @brief Multiply and extract high part + +Multiply values two registers and store high part of the results. +Implemented only for 16-bit source types (v_int16x8, v_uint16x8). Returns \f$ a*b >> 16 \f$ +*/ +template inline v_reg<_Tp, n> v_mul_hi(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + v_reg<_Tp, n> c; + for (int i = 0; i < n; i++) + c.s[i] = (_Tp)(((w_type)a.s[i] * b.s[i]) >> sizeof(_Tp)*8); + return c; +} + +//! @cond IGNORED +template inline void v_hsum(const v_reg<_Tp, n>& a, + v_reg::w_type, n/2>& c) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + for( int i = 0; i < (n/2); i++ ) + { + c.s[i] = (w_type)a.s[i*2] + a.s[i*2+1]; + } +} +//! @endcond + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_SHIFT_OP(shift_op) \ +template inline v_reg<_Tp, n> operator shift_op(const v_reg<_Tp, n>& a, int imm) \ +{ \ + v_reg<_Tp, n> c; \ + for( int i = 0; i < n; i++ ) \ + c.s[i] = (_Tp)(a.s[i] shift_op imm); \ + return c; \ +} + +/** @brief Bitwise shift left + +For 16-, 32- and 64-bit integer values. */ +OPENCV_HAL_IMPL_SHIFT_OP(<< ) + +/** @brief Bitwise shift right + +For 16-, 32- and 64-bit integer values. */ +OPENCV_HAL_IMPL_SHIFT_OP(>> ) + +/** @brief Element shift left among vector + +For all type */ +#define OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(suffix,opA,opB) \ +template inline v_reg<_Tp, n> v_rotate_##suffix(const v_reg<_Tp, n>& a) \ +{ \ + v_reg<_Tp, n> b; \ + for (int i = 0; i < n; i++) \ + { \ + int sIndex = i opA imm; \ + if (0 <= sIndex && sIndex < n) \ + { \ + b.s[i] = a.s[sIndex]; \ + } \ + else \ + { \ + b.s[i] = 0; \ + } \ + } \ + return b; \ +} \ +template inline v_reg<_Tp, n> v_rotate_##suffix(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \ +{ \ + v_reg<_Tp, n> c; \ + for (int i = 0; i < n; i++) \ + { \ + int aIndex = i opA imm; \ + int bIndex = i opA imm opB n; \ + if (0 <= bIndex && bIndex < n) \ + { \ + c.s[i] = b.s[bIndex]; \ + } \ + else if (0 <= aIndex && aIndex < n) \ + { \ + c.s[i] = a.s[aIndex]; \ + } \ + else \ + { \ + c.s[i] = 0; \ + } \ + } \ + return c; \ +} + +OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(left, -, +) +OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(right, +, -) + +/** @brief Sum packed values + +Scheme: +@code +{A1 A2 A3 ...} => sum{A1,A2,A3,...} +@endcode +For 32-bit integer and 32-bit floating point types.*/ +template inline typename V_TypeTraits<_Tp>::sum_type v_reduce_sum(const v_reg<_Tp, n>& a) +{ + typename V_TypeTraits<_Tp>::sum_type c = a.s[0]; + for( int i = 1; i < n; i++ ) + c += a.s[i]; + return c; +} + +/** @brief Sums all elements of each input vector, returns the vector of sums + + Scheme: + @code + result[0] = a[0] + a[1] + a[2] + a[3] + result[1] = b[0] + b[1] + b[2] + b[3] + result[2] = c[0] + c[1] + c[2] + c[3] + result[3] = d[0] + d[1] + d[2] + d[3] + @endcode +*/ +inline v_float32x4 v_reduce_sum4(const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, const v_float32x4& d) +{ + v_float32x4 r; + r.s[0] = a.s[0] + a.s[1] + a.s[2] + a.s[3]; + r.s[1] = b.s[0] + b.s[1] + b.s[2] + b.s[3]; + r.s[2] = c.s[0] + c.s[1] + c.s[2] + c.s[3]; + r.s[3] = d.s[0] + d.s[1] + d.s[2] + d.s[3]; + return r; +} + +/** @brief Sum absolute differences of values + +Scheme: +@code +{A1 A2 A3 ...} {B1 B2 B3 ...} => sum{ABS(A1-B1),abs(A2-B2),abs(A3-B3),...} +@endcode +For all types except 64-bit types.*/ +template inline typename V_TypeTraits< typename V_TypeTraits<_Tp>::abs_type >::sum_type v_reduce_sad(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + typename V_TypeTraits< typename V_TypeTraits<_Tp>::abs_type >::sum_type c = _absdiff(a.s[0], b.s[0]); + for (int i = 1; i < n; i++) + c += _absdiff(a.s[i], b.s[i]); + return c; +} + +/** @brief Get negative values mask + +Returned value is a bit mask with bits set to 1 on places corresponding to negative packed values indexes. +Example: +@code{.cpp} +v_int32x4 r; // set to {-1, -1, 1, 1} +int mask = v_signmask(r); // mask = 3 <== 00000000 00000000 00000000 00000011 +@endcode +For all types except 64-bit. */ +template inline int v_signmask(const v_reg<_Tp, n>& a) +{ + int mask = 0; + for( int i = 0; i < n; i++ ) + mask |= (V_TypeTraits<_Tp>::reinterpret_int(a.s[i]) < 0) << i; + return mask; +} + +/** @brief Check if all packed values are less than zero + +Unsigned values will be casted to signed: `uchar 254 => char -2`. +For all types except 64-bit. */ +template inline bool v_check_all(const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < n; i++ ) + if( V_TypeTraits<_Tp>::reinterpret_int(a.s[i]) >= 0 ) + return false; + return true; +} + +/** @brief Check if any of packed values is less than zero + +Unsigned values will be casted to signed: `uchar 254 => char -2`. +For all types except 64-bit. */ +template inline bool v_check_any(const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < n; i++ ) + if( V_TypeTraits<_Tp>::reinterpret_int(a.s[i]) < 0 ) + return true; + return false; +} + +/** @brief Per-element select (blend operation) + +Return value will be built by combining values _a_ and _b_ using the following scheme: + result[i] = mask[i] ? a[i] : b[i]; + +@note: _mask_ element values are restricted to these values: +- 0: select element from _b_ +- 0xff/0xffff/etc: select element from _a_ +(fully compatible with bitwise-based operator) +*/ +template inline v_reg<_Tp, n> v_select(const v_reg<_Tp, n>& mask, + const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + typedef V_TypeTraits<_Tp> Traits; + typedef typename Traits::int_type int_type; + v_reg<_Tp, n> c; + for( int i = 0; i < n; i++ ) + { + int_type m = Traits::reinterpret_int(mask.s[i]); + CV_DbgAssert(m == 0 || m == (~(int_type)0)); // restrict mask values: 0 or 0xff/0xffff/etc + c.s[i] = m ? a.s[i] : b.s[i]; + } + return c; +} + +/** @brief Expand values to the wider pack type + +Copy contents of register to two registers with 2x wider pack type. +Scheme: +@code + int32x4 int64x2 int64x2 +{A B C D} ==> {A B} , {C D} +@endcode */ +template inline void v_expand(const v_reg<_Tp, n>& a, + v_reg::w_type, n/2>& b0, + v_reg::w_type, n/2>& b1) +{ + for( int i = 0; i < (n/2); i++ ) + { + b0.s[i] = a.s[i]; + b1.s[i] = a.s[i+(n/2)]; + } +} + +/** @brief Expand lower values to the wider pack type + +Same as cv::v_expand, but return lower half of the vector. + +Scheme: +@code + int32x4 int64x2 +{A B C D} ==> {A B} +@endcode */ +template +inline v_reg::w_type, n/2> +v_expand_low(const v_reg<_Tp, n>& a) +{ + v_reg::w_type, n/2> b; + for( int i = 0; i < (n/2); i++ ) + b.s[i] = a.s[i]; + return b; +} + +/** @brief Expand higher values to the wider pack type + +Same as cv::v_expand_low, but expand higher half of the vector instead. + +Scheme: +@code + int32x4 int64x2 +{A B C D} ==> {C D} +@endcode */ +template +inline v_reg::w_type, n/2> +v_expand_high(const v_reg<_Tp, n>& a) +{ + v_reg::w_type, n/2> b; + for( int i = 0; i < (n/2); i++ ) + b.s[i] = a.s[i+(n/2)]; + return b; +} + +//! @cond IGNORED +template inline v_reg::int_type, n> + v_reinterpret_as_int(const v_reg<_Tp, n>& a) +{ + v_reg::int_type, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = V_TypeTraits<_Tp>::reinterpret_int(a.s[i]); + return c; +} + +template inline v_reg::uint_type, n> + v_reinterpret_as_uint(const v_reg<_Tp, n>& a) +{ + v_reg::uint_type, n> c; + for( int i = 0; i < n; i++ ) + c.s[i] = V_TypeTraits<_Tp>::reinterpret_uint(a.s[i]); + return c; +} +//! @endcond + +/** @brief Interleave two vectors + +Scheme: +@code + {A1 A2 A3 A4} + {B1 B2 B3 B4} +--------------- + {A1 B1 A2 B2} and {A3 B3 A4 B4} +@endcode +For all types except 64-bit. +*/ +template inline void v_zip( const v_reg<_Tp, n>& a0, const v_reg<_Tp, n>& a1, + v_reg<_Tp, n>& b0, v_reg<_Tp, n>& b1 ) +{ + int i; + for( i = 0; i < n/2; i++ ) + { + b0.s[i*2] = a0.s[i]; + b0.s[i*2+1] = a1.s[i]; + } + for( ; i < n; i++ ) + { + b1.s[i*2-n] = a0.s[i]; + b1.s[i*2-n+1] = a1.s[i]; + } +} + +/** @brief Load register contents from memory + +@param ptr pointer to memory block with data +@return register object + +@note Returned type will be detected from passed pointer type, for example uchar ==> cv::v_uint8x16, int ==> cv::v_int32x4, etc. + */ +template +inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_load(const _Tp* ptr) +{ + return v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128>(ptr); +} + +/** @brief Load register contents from memory (aligned) + +similar to cv::v_load, but source memory block should be aligned (to 16-byte boundary) + */ +template +inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_load_aligned(const _Tp* ptr) +{ + return v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128>(ptr); +} + +/** @brief Load 64-bits of data to lower part (high part is undefined). + +@param ptr memory block containing data for first half (0..n/2) + +@code{.cpp} +int lo[2] = { 1, 2 }; +v_int32x4 r = v_load_low(lo); +@endcode + */ +template +inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_load_low(const _Tp* ptr) +{ + v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> c; + for( int i = 0; i < c.nlanes/2; i++ ) + { + c.s[i] = ptr[i]; + } + return c; +} + +/** @brief Load register contents from two memory blocks + +@param loptr memory block containing data for first half (0..n/2) +@param hiptr memory block containing data for second half (n/2..n) + +@code{.cpp} +int lo[2] = { 1, 2 }, hi[2] = { 3, 4 }; +v_int32x4 r = v_load_halves(lo, hi); +@endcode + */ +template +inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_load_halves(const _Tp* loptr, const _Tp* hiptr) +{ + v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> c; + for( int i = 0; i < c.nlanes/2; i++ ) + { + c.s[i] = loptr[i]; + c.s[i+c.nlanes/2] = hiptr[i]; + } + return c; +} + +/** @brief Load register contents from memory with double expand + +Same as cv::v_load, but result pack type will be 2x wider than memory type. + +@code{.cpp} +short buf[4] = {1, 2, 3, 4}; // type is int16 +v_int32x4 r = v_load_expand(buf); // r = {1, 2, 3, 4} - type is int32 +@endcode +For 8-, 16-, 32-bit integer source types. */ +template +inline v_reg::w_type, V_TypeTraits<_Tp>::nlanes128 / 2> +v_load_expand(const _Tp* ptr) +{ + typedef typename V_TypeTraits<_Tp>::w_type w_type; + v_reg::nlanes128> c; + for( int i = 0; i < c.nlanes; i++ ) + { + c.s[i] = ptr[i]; + } + return c; +} + +/** @brief Load register contents from memory with quad expand + +Same as cv::v_load_expand, but result type is 4 times wider than source. +@code{.cpp} +char buf[4] = {1, 2, 3, 4}; // type is int8 +v_int32x4 r = v_load_q(buf); // r = {1, 2, 3, 4} - type is int32 +@endcode +For 8-bit integer source types. */ +template +inline v_reg::q_type, V_TypeTraits<_Tp>::nlanes128 / 4> +v_load_expand_q(const _Tp* ptr) +{ + typedef typename V_TypeTraits<_Tp>::q_type q_type; + v_reg::nlanes128> c; + for( int i = 0; i < c.nlanes; i++ ) + { + c.s[i] = ptr[i]; + } + return c; +} + +/** @brief Load and deinterleave (2 channels) + +Load data from memory deinterleave and store to 2 registers. +Scheme: +@code +{A1 B1 A2 B2 ...} ==> {A1 A2 ...}, {B1 B2 ...} +@endcode +For all types except 64-bit. */ +template inline void v_load_deinterleave(const _Tp* ptr, v_reg<_Tp, n>& a, + v_reg<_Tp, n>& b) +{ + int i, i2; + for( i = i2 = 0; i < n; i++, i2 += 2 ) + { + a.s[i] = ptr[i2]; + b.s[i] = ptr[i2+1]; + } +} + +/** @brief Load and deinterleave (3 channels) + +Load data from memory deinterleave and store to 3 registers. +Scheme: +@code +{A1 B1 C1 A2 B2 C2 ...} ==> {A1 A2 ...}, {B1 B2 ...}, {C1 C2 ...} +@endcode +For all types except 64-bit. */ +template inline void v_load_deinterleave(const _Tp* ptr, v_reg<_Tp, n>& a, + v_reg<_Tp, n>& b, v_reg<_Tp, n>& c) +{ + int i, i3; + for( i = i3 = 0; i < n; i++, i3 += 3 ) + { + a.s[i] = ptr[i3]; + b.s[i] = ptr[i3+1]; + c.s[i] = ptr[i3+2]; + } +} + +/** @brief Load and deinterleave (4 channels) + +Load data from memory deinterleave and store to 4 registers. +Scheme: +@code +{A1 B1 C1 D1 A2 B2 C2 D2 ...} ==> {A1 A2 ...}, {B1 B2 ...}, {C1 C2 ...}, {D1 D2 ...} +@endcode +For all types except 64-bit. */ +template +inline void v_load_deinterleave(const _Tp* ptr, v_reg<_Tp, n>& a, + v_reg<_Tp, n>& b, v_reg<_Tp, n>& c, + v_reg<_Tp, n>& d) +{ + int i, i4; + for( i = i4 = 0; i < n; i++, i4 += 4 ) + { + a.s[i] = ptr[i4]; + b.s[i] = ptr[i4+1]; + c.s[i] = ptr[i4+2]; + d.s[i] = ptr[i4+3]; + } +} + +/** @brief Interleave and store (2 channels) + +Interleave and store data from 2 registers to memory. +Scheme: +@code +{A1 A2 ...}, {B1 B2 ...} ==> {A1 B1 A2 B2 ...} +@endcode +For all types except 64-bit. */ +template +inline void v_store_interleave( _Tp* ptr, const v_reg<_Tp, n>& a, + const v_reg<_Tp, n>& b, + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) +{ + int i, i2; + for( i = i2 = 0; i < n; i++, i2 += 2 ) + { + ptr[i2] = a.s[i]; + ptr[i2+1] = b.s[i]; + } +} + +/** @brief Interleave and store (3 channels) + +Interleave and store data from 3 registers to memory. +Scheme: +@code +{A1 A2 ...}, {B1 B2 ...}, {C1 C2 ...} ==> {A1 B1 C1 A2 B2 C2 ...} +@endcode +For all types except 64-bit. */ +template +inline void v_store_interleave( _Tp* ptr, const v_reg<_Tp, n>& a, + const v_reg<_Tp, n>& b, const v_reg<_Tp, n>& c, + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) +{ + int i, i3; + for( i = i3 = 0; i < n; i++, i3 += 3 ) + { + ptr[i3] = a.s[i]; + ptr[i3+1] = b.s[i]; + ptr[i3+2] = c.s[i]; + } +} + +/** @brief Interleave and store (4 channels) + +Interleave and store data from 4 registers to memory. +Scheme: +@code +{A1 A2 ...}, {B1 B2 ...}, {C1 C2 ...}, {D1 D2 ...} ==> {A1 B1 C1 D1 A2 B2 C2 D2 ...} +@endcode +For all types except 64-bit. */ +template inline void v_store_interleave( _Tp* ptr, const v_reg<_Tp, n>& a, + const v_reg<_Tp, n>& b, const v_reg<_Tp, n>& c, + const v_reg<_Tp, n>& d, + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) +{ + int i, i4; + for( i = i4 = 0; i < n; i++, i4 += 4 ) + { + ptr[i4] = a.s[i]; + ptr[i4+1] = b.s[i]; + ptr[i4+2] = c.s[i]; + ptr[i4+3] = d.s[i]; + } +} + +/** @brief Store data to memory + +Store register contents to memory. +Scheme: +@code + REG {A B C D} ==> MEM {A B C D} +@endcode +Pointer can be unaligned. */ +template +inline void v_store(_Tp* ptr, const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < n; i++ ) + ptr[i] = a.s[i]; +} + +/** @brief Store data to memory (lower half) + +Store lower half of register contents to memory. +Scheme: +@code + REG {A B C D} ==> MEM {A B} +@endcode */ +template +inline void v_store_low(_Tp* ptr, const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < (n/2); i++ ) + ptr[i] = a.s[i]; +} + +/** @brief Store data to memory (higher half) + +Store higher half of register contents to memory. +Scheme: +@code + REG {A B C D} ==> MEM {C D} +@endcode */ +template +inline void v_store_high(_Tp* ptr, const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < (n/2); i++ ) + ptr[i] = a.s[i+(n/2)]; +} + +/** @brief Store data to memory (aligned) + +Store register contents to memory. +Scheme: +@code + REG {A B C D} ==> MEM {A B C D} +@endcode +Pointer __should__ be aligned by 16-byte boundary. */ +template +inline void v_store_aligned(_Tp* ptr, const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < n; i++ ) + ptr[i] = a.s[i]; +} + +template +inline void v_store_aligned_nocache(_Tp* ptr, const v_reg<_Tp, n>& a) +{ + for( int i = 0; i < n; i++ ) + ptr[i] = a.s[i]; +} + +template +inline void v_store_aligned(_Tp* ptr, const v_reg<_Tp, n>& a, hal::StoreMode /*mode*/) +{ + for( int i = 0; i < n; i++ ) + ptr[i] = a.s[i]; +} + +/** @brief Combine vector from first elements of two vectors + +Scheme: +@code + {A1 A2 A3 A4} + {B1 B2 B3 B4} +--------------- + {A1 A2 B1 B2} +@endcode +For all types except 64-bit. */ +template +inline v_reg<_Tp, n> v_combine_low(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < (n/2); i++ ) + { + c.s[i] = a.s[i]; + c.s[i+(n/2)] = b.s[i]; + } + return c; +} + +/** @brief Combine vector from last elements of two vectors + +Scheme: +@code + {A1 A2 A3 A4} + {B1 B2 B3 B4} +--------------- + {A3 A4 B3 B4} +@endcode +For all types except 64-bit. */ +template +inline v_reg<_Tp, n> v_combine_high(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> c; + for( int i = 0; i < (n/2); i++ ) + { + c.s[i] = a.s[i+(n/2)]; + c.s[i+(n/2)] = b.s[i+(n/2)]; + } + return c; +} + +/** @brief Combine two vectors from lower and higher parts of two other vectors + +@code{.cpp} +low = cv::v_combine_low(a, b); +high = cv::v_combine_high(a, b); +@endcode */ +template +inline void v_recombine(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b, + v_reg<_Tp, n>& low, v_reg<_Tp, n>& high) +{ + for( int i = 0; i < (n/2); i++ ) + { + low.s[i] = a.s[i]; + low.s[i+(n/2)] = b.s[i]; + high.s[i] = a.s[i+(n/2)]; + high.s[i+(n/2)] = b.s[i+(n/2)]; + } +} + +/** @brief Vector extract + +Scheme: +@code + {A1 A2 A3 A4} + {B1 B2 B3 B4} +======================== +shift = 1 {A2 A3 A4 B1} +shift = 2 {A3 A4 B1 B2} +shift = 3 {A4 B1 B2 B3} +@endcode +Restriction: 0 <= shift < nlanes + +Usage: +@code +v_int32x4 a, b, c; +c = v_extract<2>(a, b); +@endcode +For all types. */ +template +inline v_reg<_Tp, n> v_extract(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + v_reg<_Tp, n> r; + const int shift = n - s; + int i = 0; + for (; i < shift; ++i) + r.s[i] = a.s[i+s]; + for (; i < n; ++i) + r.s[i] = b.s[i-shift]; + return r; +} + +/** @brief Round + +Rounds each value. Input type is float vector ==> output type is int vector.*/ +template inline v_reg v_round(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = cvRound(a.s[i]); + return c; +} + +/** @overload */ +template inline v_reg v_round(const v_reg& a, const v_reg& b) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = cvRound(a.s[i]); + c.s[i+n] = cvRound(b.s[i]); + } + return c; +} + +/** @brief Floor + +Floor each value. Input type is float vector ==> output type is int vector.*/ +template inline v_reg v_floor(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = cvFloor(a.s[i]); + return c; +} + +/** @brief Ceil + +Ceil each value. Input type is float vector ==> output type is int vector.*/ +template inline v_reg v_ceil(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = cvCeil(a.s[i]); + return c; +} + +/** @brief Trunc + +Truncate each value. Input type is float vector ==> output type is int vector.*/ +template inline v_reg v_trunc(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = (int)(a.s[i]); + return c; +} + +/** @overload */ +template inline v_reg v_round(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = cvRound(a.s[i]); + c.s[i+n] = 0; + } + return c; +} + +/** @overload */ +template inline v_reg v_floor(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = cvFloor(a.s[i]); + c.s[i+n] = 0; + } + return c; +} + +/** @overload */ +template inline v_reg v_ceil(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = cvCeil(a.s[i]); + c.s[i+n] = 0; + } + return c; +} + +/** @overload */ +template inline v_reg v_trunc(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = cvCeil(a.s[i]); + c.s[i+n] = 0; + } + return c; +} + +/** @brief Convert to float + +Supported input type is cv::v_int32x4. */ +template inline v_reg v_cvt_f32(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = (float)a.s[i]; + return c; +} + +template inline v_reg v_cvt_f32(const v_reg& a, const v_reg& b) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + { + c.s[i] = (float)a.s[i]; + c.s[i+n] = (float)b.s[i]; + } + return c; +} + +/** @brief Convert to double + +Supported input type is cv::v_int32x4. */ +template inline v_reg v_cvt_f64(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = (double)a.s[i]; + return c; +} + +/** @brief Convert to double + +Supported input type is cv::v_float32x4. */ +template inline v_reg v_cvt_f64(const v_reg& a) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = (double)a.s[i]; + return c; +} + +template inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_lut(const _Tp* tab, const int* idx) +{ + v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> c; + for (int i = 0; i < V_TypeTraits<_Tp>::nlanes128; i++) + c.s[i] = tab[idx[i]]; + return c; +} +template inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_lut_pairs(const _Tp* tab, const int* idx) +{ + v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> c; + for (int i = 0; i < V_TypeTraits<_Tp>::nlanes128; i++) + c.s[i] = tab[idx[i / 2] + i % 2]; + return c; +} +template inline v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> v_lut_quads(const _Tp* tab, const int* idx) +{ + v_reg<_Tp, V_TypeTraits<_Tp>::nlanes128> c; + for (int i = 0; i < V_TypeTraits<_Tp>::nlanes128; i++) + c.s[i] = tab[idx[i / 4] + i % 4]; + return c; +} + +template inline v_reg v_lut(const int* tab, const v_reg& idx) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = tab[idx.s[i]]; + return c; +} + +template inline v_reg v_lut(const unsigned* tab, const v_reg& idx) +{ + v_reg c; + for (int i = 0; i < n; i++) + c.s[i] = tab[idx.s[i]]; + return c; +} + +template inline v_reg v_lut(const float* tab, const v_reg& idx) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = tab[idx.s[i]]; + return c; +} + +template inline v_reg v_lut(const double* tab, const v_reg& idx) +{ + v_reg c; + for( int i = 0; i < n; i++ ) + c.s[i] = tab[idx.s[i]]; + return c; +} + +template inline void v_lut_deinterleave(const float* tab, const v_reg& idx, + v_reg& x, v_reg& y) +{ + for( int i = 0; i < n; i++ ) + { + int j = idx.s[i]; + x.s[i] = tab[j]; + y.s[i] = tab[j+1]; + } +} + +template inline void v_lut_deinterleave(const double* tab, const v_reg& idx, + v_reg& x, v_reg& y) +{ + for( int i = 0; i < n; i++ ) + { + int j = idx.s[i]; + x.s[i] = tab[j]; + y.s[i] = tab[j+1]; + } +} + +template inline v_reg<_Tp, n> v_interleave_pairs(const v_reg<_Tp, n>& vec) +{ + v_reg c; + for (int i = 0; i < n/4; i++) + { + c.s[4*i ] = vec.s[4*i ]; + c.s[4*i+1] = vec.s[4*i+2]; + c.s[4*i+2] = vec.s[4*i+1]; + c.s[4*i+3] = vec.s[4*i+3]; + } + return c; +} + +template inline v_reg<_Tp, n> v_interleave_quads(const v_reg<_Tp, n>& vec) +{ + v_reg c; + for (int i = 0; i < n/8; i++) + { + c.s[8*i ] = vec.s[8*i ]; + c.s[8*i+1] = vec.s[8*i+4]; + c.s[8*i+2] = vec.s[8*i+1]; + c.s[8*i+3] = vec.s[8*i+5]; + c.s[8*i+4] = vec.s[8*i+2]; + c.s[8*i+5] = vec.s[8*i+6]; + c.s[8*i+6] = vec.s[8*i+3]; + c.s[8*i+7] = vec.s[8*i+7]; + } + return c; +} + +template inline v_reg<_Tp, n> v_pack_triplets(const v_reg<_Tp, n>& vec) +{ + v_reg c; + for (int i = 0; i < n/4; i++) + { + c.s[3*i ] = vec.s[4*i ]; + c.s[3*i+1] = vec.s[4*i+1]; + c.s[3*i+2] = vec.s[4*i+2]; + } + return c; +} + +/** @brief Transpose 4x4 matrix + +Scheme: +@code +a0 {A1 A2 A3 A4} +a1 {B1 B2 B3 B4} +a2 {C1 C2 C3 C4} +a3 {D1 D2 D3 D4} +=============== +b0 {A1 B1 C1 D1} +b1 {A2 B2 C2 D2} +b2 {A3 B3 C3 D3} +b3 {A4 B4 C4 D4} +@endcode +*/ +template +inline void v_transpose4x4( v_reg<_Tp, 4>& a0, const v_reg<_Tp, 4>& a1, + const v_reg<_Tp, 4>& a2, const v_reg<_Tp, 4>& a3, + v_reg<_Tp, 4>& b0, v_reg<_Tp, 4>& b1, + v_reg<_Tp, 4>& b2, v_reg<_Tp, 4>& b3 ) +{ + b0 = v_reg<_Tp, 4>(a0.s[0], a1.s[0], a2.s[0], a3.s[0]); + b1 = v_reg<_Tp, 4>(a0.s[1], a1.s[1], a2.s[1], a3.s[1]); + b2 = v_reg<_Tp, 4>(a0.s[2], a1.s[2], a2.s[2], a3.s[2]); + b3 = v_reg<_Tp, 4>(a0.s[3], a1.s[3], a2.s[3], a3.s[3]); +} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_INIT_ZERO(_Tpvec, _Tp, suffix) \ +inline _Tpvec v_setzero_##suffix() { return _Tpvec::zero(); } + +//! @name Init with zero +//! @{ +//! @brief Create new vector with zero elements +OPENCV_HAL_IMPL_C_INIT_ZERO(v_uint8x16, uchar, u8) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_int8x16, schar, s8) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_uint16x8, ushort, u16) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_int16x8, short, s16) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_int32x4, int, s32) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_float32x4, float, f32) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_float64x2, double, f64) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_uint64x2, uint64, u64) +OPENCV_HAL_IMPL_C_INIT_ZERO(v_int64x2, int64, s64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_INIT_VAL(_Tpvec, _Tp, suffix) \ +inline _Tpvec v_setall_##suffix(_Tp val) { return _Tpvec::all(val); } + +//! @name Init with value +//! @{ +//! @brief Create new vector with elements set to a specific value +OPENCV_HAL_IMPL_C_INIT_VAL(v_uint8x16, uchar, u8) +OPENCV_HAL_IMPL_C_INIT_VAL(v_int8x16, schar, s8) +OPENCV_HAL_IMPL_C_INIT_VAL(v_uint16x8, ushort, u16) +OPENCV_HAL_IMPL_C_INIT_VAL(v_int16x8, short, s16) +OPENCV_HAL_IMPL_C_INIT_VAL(v_uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_C_INIT_VAL(v_int32x4, int, s32) +OPENCV_HAL_IMPL_C_INIT_VAL(v_float32x4, float, f32) +OPENCV_HAL_IMPL_C_INIT_VAL(v_float64x2, double, f64) +OPENCV_HAL_IMPL_C_INIT_VAL(v_uint64x2, uint64, u64) +OPENCV_HAL_IMPL_C_INIT_VAL(v_int64x2, int64, s64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_REINTERPRET(_Tpvec, _Tp, suffix) \ +template inline _Tpvec \ + v_reinterpret_as_##suffix(const v_reg<_Tp0, n0>& a) \ +{ return a.template reinterpret_as<_Tp, _Tpvec::nlanes>(); } + +//! @name Reinterpret +//! @{ +//! @brief Convert vector to different type without modifying underlying data. +OPENCV_HAL_IMPL_C_REINTERPRET(v_uint8x16, uchar, u8) +OPENCV_HAL_IMPL_C_REINTERPRET(v_int8x16, schar, s8) +OPENCV_HAL_IMPL_C_REINTERPRET(v_uint16x8, ushort, u16) +OPENCV_HAL_IMPL_C_REINTERPRET(v_int16x8, short, s16) +OPENCV_HAL_IMPL_C_REINTERPRET(v_uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_C_REINTERPRET(v_int32x4, int, s32) +OPENCV_HAL_IMPL_C_REINTERPRET(v_float32x4, float, f32) +OPENCV_HAL_IMPL_C_REINTERPRET(v_float64x2, double, f64) +OPENCV_HAL_IMPL_C_REINTERPRET(v_uint64x2, uint64, u64) +OPENCV_HAL_IMPL_C_REINTERPRET(v_int64x2, int64, s64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_SHIFTL(_Tpvec, _Tp) \ +template inline _Tpvec v_shl(const _Tpvec& a) \ +{ return a << n; } + +//! @name Left shift +//! @{ +//! @brief Shift left +OPENCV_HAL_IMPL_C_SHIFTL(v_uint16x8, ushort) +OPENCV_HAL_IMPL_C_SHIFTL(v_int16x8, short) +OPENCV_HAL_IMPL_C_SHIFTL(v_uint32x4, unsigned) +OPENCV_HAL_IMPL_C_SHIFTL(v_int32x4, int) +OPENCV_HAL_IMPL_C_SHIFTL(v_uint64x2, uint64) +OPENCV_HAL_IMPL_C_SHIFTL(v_int64x2, int64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_SHIFTR(_Tpvec, _Tp) \ +template inline _Tpvec v_shr(const _Tpvec& a) \ +{ return a >> n; } + +//! @name Right shift +//! @{ +//! @brief Shift right +OPENCV_HAL_IMPL_C_SHIFTR(v_uint16x8, ushort) +OPENCV_HAL_IMPL_C_SHIFTR(v_int16x8, short) +OPENCV_HAL_IMPL_C_SHIFTR(v_uint32x4, unsigned) +OPENCV_HAL_IMPL_C_SHIFTR(v_int32x4, int) +OPENCV_HAL_IMPL_C_SHIFTR(v_uint64x2, uint64) +OPENCV_HAL_IMPL_C_SHIFTR(v_int64x2, int64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_RSHIFTR(_Tpvec, _Tp) \ +template inline _Tpvec v_rshr(const _Tpvec& a) \ +{ \ + _Tpvec c; \ + for( int i = 0; i < _Tpvec::nlanes; i++ ) \ + c.s[i] = (_Tp)((a.s[i] + ((_Tp)1 << (n - 1))) >> n); \ + return c; \ +} + +//! @name Rounding shift +//! @{ +//! @brief Rounding shift right +OPENCV_HAL_IMPL_C_RSHIFTR(v_uint16x8, ushort) +OPENCV_HAL_IMPL_C_RSHIFTR(v_int16x8, short) +OPENCV_HAL_IMPL_C_RSHIFTR(v_uint32x4, unsigned) +OPENCV_HAL_IMPL_C_RSHIFTR(v_int32x4, int) +OPENCV_HAL_IMPL_C_RSHIFTR(v_uint64x2, uint64) +OPENCV_HAL_IMPL_C_RSHIFTR(v_int64x2, int64) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_PACK(_Tpvec, _Tpnvec, _Tpn, pack_suffix, cast) \ +inline _Tpnvec v_##pack_suffix(const _Tpvec& a, const _Tpvec& b) \ +{ \ + _Tpnvec c; \ + for( int i = 0; i < _Tpvec::nlanes; i++ ) \ + { \ + c.s[i] = cast<_Tpn>(a.s[i]); \ + c.s[i+_Tpvec::nlanes] = cast<_Tpn>(b.s[i]); \ + } \ + return c; \ +} + +//! @name Pack +//! @{ +//! @brief Pack values from two vectors to one +//! +//! Return vector type have twice more elements than input vector types. Variant with _u_ suffix also +//! converts to corresponding unsigned type. +//! +//! - pack: for 16-, 32- and 64-bit integer input types +//! - pack_u: for 16- and 32-bit signed integer input types +//! +//! @note All variants except 64-bit use saturation. +OPENCV_HAL_IMPL_C_PACK(v_uint16x8, v_uint8x16, uchar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK(v_int16x8, v_int8x16, schar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK(v_uint32x4, v_uint16x8, ushort, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK(v_int32x4, v_int16x8, short, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK(v_uint64x2, v_uint32x4, unsigned, pack, static_cast) +OPENCV_HAL_IMPL_C_PACK(v_int64x2, v_int32x4, int, pack, static_cast) +OPENCV_HAL_IMPL_C_PACK(v_int16x8, v_uint8x16, uchar, pack_u, saturate_cast) +OPENCV_HAL_IMPL_C_PACK(v_int32x4, v_uint16x8, ushort, pack_u, saturate_cast) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_RSHR_PACK(_Tpvec, _Tp, _Tpnvec, _Tpn, pack_suffix, cast) \ +template inline _Tpnvec v_rshr_##pack_suffix(const _Tpvec& a, const _Tpvec& b) \ +{ \ + _Tpnvec c; \ + for( int i = 0; i < _Tpvec::nlanes; i++ ) \ + { \ + c.s[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (n - 1))) >> n); \ + c.s[i+_Tpvec::nlanes] = cast<_Tpn>((b.s[i] + ((_Tp)1 << (n - 1))) >> n); \ + } \ + return c; \ +} + +//! @name Pack with rounding shift +//! @{ +//! @brief Pack values from two vectors to one with rounding shift +//! +//! Values from the input vectors will be shifted right by _n_ bits with rounding, converted to narrower +//! type and returned in the result vector. Variant with _u_ suffix converts to unsigned type. +//! +//! - pack: for 16-, 32- and 64-bit integer input types +//! - pack_u: for 16- and 32-bit signed integer input types +//! +//! @note All variants except 64-bit use saturation. +OPENCV_HAL_IMPL_C_RSHR_PACK(v_uint16x8, ushort, v_uint8x16, uchar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_int16x8, short, v_int8x16, schar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_uint32x4, unsigned, v_uint16x8, ushort, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_int32x4, int, v_int16x8, short, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_uint64x2, uint64, v_uint32x4, unsigned, pack, static_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_int64x2, int64, v_int32x4, int, pack, static_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_int16x8, short, v_uint8x16, uchar, pack_u, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK(v_int32x4, int, v_uint16x8, ushort, pack_u, saturate_cast) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_PACK_STORE(_Tpvec, _Tp, _Tpnvec, _Tpn, pack_suffix, cast) \ +inline void v_##pack_suffix##_store(_Tpn* ptr, const _Tpvec& a) \ +{ \ + for( int i = 0; i < _Tpvec::nlanes; i++ ) \ + ptr[i] = cast<_Tpn>(a.s[i]); \ +} + +//! @name Pack and store +//! @{ +//! @brief Store values from the input vector into memory with pack +//! +//! Values will be stored into memory with conversion to narrower type. +//! Variant with _u_ suffix converts to corresponding unsigned type. +//! +//! - pack: for 16-, 32- and 64-bit integer input types +//! - pack_u: for 16- and 32-bit signed integer input types +//! +//! @note All variants except 64-bit use saturation. +OPENCV_HAL_IMPL_C_PACK_STORE(v_uint16x8, ushort, v_uint8x16, uchar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_int16x8, short, v_int8x16, schar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_uint32x4, unsigned, v_uint16x8, ushort, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_int32x4, int, v_int16x8, short, pack, saturate_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_uint64x2, uint64, v_uint32x4, unsigned, pack, static_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_int64x2, int64, v_int32x4, int, pack, static_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_int16x8, short, v_uint8x16, uchar, pack_u, saturate_cast) +OPENCV_HAL_IMPL_C_PACK_STORE(v_int32x4, int, v_uint16x8, ushort, pack_u, saturate_cast) +//! @} + +//! @brief Helper macro +//! @ingroup core_hal_intrin_impl +#define OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(_Tpvec, _Tp, _Tpnvec, _Tpn, pack_suffix, cast) \ +template inline void v_rshr_##pack_suffix##_store(_Tpn* ptr, const _Tpvec& a) \ +{ \ + for( int i = 0; i < _Tpvec::nlanes; i++ ) \ + ptr[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (n - 1))) >> n); \ +} + +//! @name Pack and store with rounding shift +//! @{ +//! @brief Store values from the input vector into memory with pack +//! +//! Values will be shifted _n_ bits right with rounding, converted to narrower type and stored into +//! memory. Variant with _u_ suffix converts to unsigned type. +//! +//! - pack: for 16-, 32- and 64-bit integer input types +//! - pack_u: for 16- and 32-bit signed integer input types +//! +//! @note All variants except 64-bit use saturation. +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_uint16x8, ushort, v_uint8x16, uchar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_int16x8, short, v_int8x16, schar, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_uint32x4, unsigned, v_uint16x8, ushort, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_int32x4, int, v_int16x8, short, pack, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_uint64x2, uint64, v_uint32x4, unsigned, pack, static_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_int64x2, int64, v_int32x4, int, pack, static_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_int16x8, short, v_uint8x16, uchar, pack_u, saturate_cast) +OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(v_int32x4, int, v_uint16x8, ushort, pack_u, saturate_cast) +//! @} + +//! @cond IGNORED +template +inline void _pack_b(_Tpm* mptr, const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) +{ + for (int i = 0; i < n; ++i) + { + mptr[i] = (_Tpm)a.s[i]; + mptr[i + n] = (_Tpm)b.s[i]; + } +} +//! @endcond + +//! @name Pack boolean values +//! @{ +//! @brief Pack boolean values from multiple vectors to one unsigned 8-bit integer vector +//! +//! @note Must provide valid boolean values to guarantee same result for all architectures. + +/** @brief +//! For 16-bit boolean values + +Scheme: +@code +a {0xFFFF 0 0 0xFFFF 0 0xFFFF 0xFFFF 0} +b {0xFFFF 0 0xFFFF 0 0 0xFFFF 0 0xFFFF} +=============== +{ + 0xFF 0 0 0xFF 0 0xFF 0xFF 0 + 0xFF 0 0xFF 0 0 0xFF 0 0xFF +} +@endcode */ + +inline v_uint8x16 v_pack_b(const v_uint16x8& a, const v_uint16x8& b) +{ + v_uint8x16 mask; + _pack_b(mask.s, a, b); + return mask; +} + +/** @overload +For 32-bit boolean values + +Scheme: +@code +a {0xFFFF.. 0 0 0xFFFF..} +b {0 0xFFFF.. 0xFFFF.. 0} +c {0xFFFF.. 0 0xFFFF.. 0} +d {0 0xFFFF.. 0 0xFFFF..} +=============== +{ + 0xFF 0 0 0xFF 0 0xFF 0xFF 0 + 0xFF 0 0xFF 0 0 0xFF 0 0xFF +} +@endcode */ + +inline v_uint8x16 v_pack_b(const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, const v_uint32x4& d) +{ + v_uint8x16 mask; + _pack_b(mask.s, a, b); + _pack_b(mask.s + 8, c, d); + return mask; +} + +/** @overload +For 64-bit boolean values + +Scheme: +@code +a {0xFFFF.. 0} +b {0 0xFFFF..} +c {0xFFFF.. 0} +d {0 0xFFFF..} + +e {0xFFFF.. 0} +f {0xFFFF.. 0} +g {0 0xFFFF..} +h {0 0xFFFF..} +=============== +{ + 0xFF 0 0 0xFF 0xFF 0 0 0xFF + 0xFF 0 0xFF 0 0 0xFF 0 0xFF +} +@endcode */ +inline v_uint8x16 v_pack_b(const v_uint64x2& a, const v_uint64x2& b, const v_uint64x2& c, + const v_uint64x2& d, const v_uint64x2& e, const v_uint64x2& f, + const v_uint64x2& g, const v_uint64x2& h) +{ + v_uint8x16 mask; + _pack_b(mask.s, a, b); + _pack_b(mask.s + 4, c, d); + _pack_b(mask.s + 8, e, f); + _pack_b(mask.s + 12, g, h); + return mask; +} +//! @} + +/** @brief Matrix multiplication + +Scheme: +@code +{A0 A1 A2 A3} |V0| +{B0 B1 B2 B3} |V1| +{C0 C1 C2 C3} |V2| +{D0 D1 D2 D3} x |V3| +==================== +{R0 R1 R2 R3}, where: +R0 = A0V0 + A1V1 + A2V2 + A3V3, +R1 = B0V0 + B1V1 + B2V2 + B3V3 +... +@endcode +*/ +inline v_float32x4 v_matmul(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& m3) +{ + return v_float32x4(v.s[0]*m0.s[0] + v.s[1]*m1.s[0] + v.s[2]*m2.s[0] + v.s[3]*m3.s[0], + v.s[0]*m0.s[1] + v.s[1]*m1.s[1] + v.s[2]*m2.s[1] + v.s[3]*m3.s[1], + v.s[0]*m0.s[2] + v.s[1]*m1.s[2] + v.s[2]*m2.s[2] + v.s[3]*m3.s[2], + v.s[0]*m0.s[3] + v.s[1]*m1.s[3] + v.s[2]*m2.s[3] + v.s[3]*m3.s[3]); +} + +/** @brief Matrix multiplication and add + +Scheme: +@code +{A0 A1 A2 } |V0| |D0| +{B0 B1 B2 } |V1| |D1| +{C0 C1 C2 } x |V2| + |D2| +==================== +{R0 R1 R2 R3}, where: +R0 = A0V0 + A1V1 + A2V2 + D0, +R1 = B0V0 + B1V1 + B2V2 + D1 +... +@endcode +*/ +inline v_float32x4 v_matmuladd(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& m3) +{ + return v_float32x4(v.s[0]*m0.s[0] + v.s[1]*m1.s[0] + v.s[2]*m2.s[0] + m3.s[0], + v.s[0]*m0.s[1] + v.s[1]*m1.s[1] + v.s[2]*m2.s[1] + m3.s[1], + v.s[0]*m0.s[2] + v.s[1]*m1.s[2] + v.s[2]*m2.s[2] + m3.s[2], + v.s[0]*m0.s[3] + v.s[1]*m1.s[3] + v.s[2]*m2.s[3] + m3.s[3]); +} + +////// FP16 support /////// + +inline v_reg::nlanes128> +v_load_expand(const float16_t* ptr) +{ + v_reg::nlanes128> v; + for( int i = 0; i < v.nlanes; i++ ) + { + v.s[i] = ptr[i]; + } + return v; +} + +inline void +v_pack_store(float16_t* ptr, v_reg::nlanes128>& v) +{ + for( int i = 0; i < v.nlanes; i++ ) + { + ptr[i] = float16_t(v.s[i]); + } +} + +inline void v_cleanup() {} + +//! @} + +//! @name Check SIMD support +//! @{ +//! @brief Check CPU capability of SIMD operation +static inline bool hasSIMD128() +{ + return false; +} + +//! @} + +#ifndef CV_DOXYGEN +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END +#endif +} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_forward.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_forward.hpp new file mode 100644 index 0000000..4618552 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_forward.hpp @@ -0,0 +1,158 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +#ifndef CV__SIMD_FORWARD +#error "Need to pre-define forward width" +#endif + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +/** Types **/ +#if CV__SIMD_FORWARD == 512 +// [todo] 512 +#error "AVX512 Not implemented yet" +#elif CV__SIMD_FORWARD == 256 +// 256 +#define __CV_VX(fun) v256_##fun +#define __CV_V_UINT8 v_uint8x32 +#define __CV_V_INT8 v_int8x32 +#define __CV_V_UINT16 v_uint16x16 +#define __CV_V_INT16 v_int16x16 +#define __CV_V_UINT32 v_uint32x8 +#define __CV_V_INT32 v_int32x8 +#define __CV_V_UINT64 v_uint64x4 +#define __CV_V_INT64 v_int64x4 +#define __CV_V_FLOAT32 v_float32x8 +#define __CV_V_FLOAT64 v_float64x4 +struct v_uint8x32; +struct v_int8x32; +struct v_uint16x16; +struct v_int16x16; +struct v_uint32x8; +struct v_int32x8; +struct v_uint64x4; +struct v_int64x4; +struct v_float32x8; +struct v_float64x4; +#else +// 128 +#define __CV_VX(fun) v_##fun +#define __CV_V_UINT8 v_uint8x16 +#define __CV_V_INT8 v_int8x16 +#define __CV_V_UINT16 v_uint16x8 +#define __CV_V_INT16 v_int16x8 +#define __CV_V_UINT32 v_uint32x4 +#define __CV_V_INT32 v_int32x4 +#define __CV_V_UINT64 v_uint64x2 +#define __CV_V_INT64 v_int64x2 +#define __CV_V_FLOAT32 v_float32x4 +#define __CV_V_FLOAT64 v_float64x2 +struct v_uint8x16; +struct v_int8x16; +struct v_uint16x8; +struct v_int16x8; +struct v_uint32x4; +struct v_int32x4; +struct v_uint64x2; +struct v_int64x2; +struct v_float32x4; +struct v_float64x2; +#endif + +/** Value reordering **/ + +// Expansion +void v_expand(const __CV_V_UINT8&, __CV_V_UINT16&, __CV_V_UINT16&); +void v_expand(const __CV_V_INT8&, __CV_V_INT16&, __CV_V_INT16&); +void v_expand(const __CV_V_UINT16&, __CV_V_UINT32&, __CV_V_UINT32&); +void v_expand(const __CV_V_INT16&, __CV_V_INT32&, __CV_V_INT32&); +void v_expand(const __CV_V_UINT32&, __CV_V_UINT64&, __CV_V_UINT64&); +void v_expand(const __CV_V_INT32&, __CV_V_INT64&, __CV_V_INT64&); +// Low Expansion +__CV_V_UINT16 v_expand_low(const __CV_V_UINT8&); +__CV_V_INT16 v_expand_low(const __CV_V_INT8&); +__CV_V_UINT32 v_expand_low(const __CV_V_UINT16&); +__CV_V_INT32 v_expand_low(const __CV_V_INT16&); +__CV_V_UINT64 v_expand_low(const __CV_V_UINT32&); +__CV_V_INT64 v_expand_low(const __CV_V_INT32&); +// High Expansion +__CV_V_UINT16 v_expand_high(const __CV_V_UINT8&); +__CV_V_INT16 v_expand_high(const __CV_V_INT8&); +__CV_V_UINT32 v_expand_high(const __CV_V_UINT16&); +__CV_V_INT32 v_expand_high(const __CV_V_INT16&); +__CV_V_UINT64 v_expand_high(const __CV_V_UINT32&); +__CV_V_INT64 v_expand_high(const __CV_V_INT32&); +// Load & Low Expansion +__CV_V_UINT16 __CV_VX(load_expand)(const uchar*); +__CV_V_INT16 __CV_VX(load_expand)(const schar*); +__CV_V_UINT32 __CV_VX(load_expand)(const ushort*); +__CV_V_INT32 __CV_VX(load_expand)(const short*); +__CV_V_UINT64 __CV_VX(load_expand)(const uint*); +__CV_V_INT64 __CV_VX(load_expand)(const int*); +// Load lower 8-bit and expand into 32-bit +__CV_V_UINT32 __CV_VX(load_expand_q)(const uchar*); +__CV_V_INT32 __CV_VX(load_expand_q)(const schar*); + +// Saturating Pack +__CV_V_UINT8 v_pack(const __CV_V_UINT16&, const __CV_V_UINT16&); +__CV_V_INT8 v_pack(const __CV_V_INT16&, const __CV_V_INT16&); +__CV_V_UINT16 v_pack(const __CV_V_UINT32&, const __CV_V_UINT32&); +__CV_V_INT16 v_pack(const __CV_V_INT32&, const __CV_V_INT32&); +// Non-saturating Pack +__CV_V_UINT32 v_pack(const __CV_V_UINT64&, const __CV_V_UINT64&); +__CV_V_INT32 v_pack(const __CV_V_INT64&, const __CV_V_INT64&); +// Pack signed integers with unsigned saturation +__CV_V_UINT8 v_pack_u(const __CV_V_INT16&, const __CV_V_INT16&); +__CV_V_UINT16 v_pack_u(const __CV_V_INT32&, const __CV_V_INT32&); + +/** Arithmetic, bitwise and comparison operations **/ + +// Non-saturating multiply +#if CV_VSX +template +Tvec v_mul_wrap(const Tvec& a, const Tvec& b); +#else +__CV_V_UINT8 v_mul_wrap(const __CV_V_UINT8&, const __CV_V_UINT8&); +__CV_V_INT8 v_mul_wrap(const __CV_V_INT8&, const __CV_V_INT8&); +__CV_V_UINT16 v_mul_wrap(const __CV_V_UINT16&, const __CV_V_UINT16&); +__CV_V_INT16 v_mul_wrap(const __CV_V_INT16&, const __CV_V_INT16&); +#endif + +// Multiply and expand +#if CV_VSX +template +void v_mul_expand(const Tvec& a, const Tvec& b, Twvec& c, Twvec& d); +#else +void v_mul_expand(const __CV_V_UINT8&, const __CV_V_UINT8&, __CV_V_UINT16&, __CV_V_UINT16&); +void v_mul_expand(const __CV_V_INT8&, const __CV_V_INT8&, __CV_V_INT16&, __CV_V_INT16&); +void v_mul_expand(const __CV_V_UINT16&, const __CV_V_UINT16&, __CV_V_UINT32&, __CV_V_UINT32&); +void v_mul_expand(const __CV_V_INT16&, const __CV_V_INT16&, __CV_V_INT32&, __CV_V_INT32&); +void v_mul_expand(const __CV_V_UINT32&, const __CV_V_UINT32&, __CV_V_UINT64&, __CV_V_UINT64&); +void v_mul_expand(const __CV_V_INT32&, const __CV_V_INT32&, __CV_V_INT64&, __CV_V_INT64&); +#endif + +/** Cleanup **/ +#undef CV__SIMD_FORWARD +#undef __CV_VX +#undef __CV_V_UINT8 +#undef __CV_V_INT8 +#undef __CV_V_UINT16 +#undef __CV_V_INT16 +#undef __CV_V_UINT32 +#undef __CV_V_INT32 +#undef __CV_V_UINT64 +#undef __CV_V_INT64 +#undef __CV_V_FLOAT32 +#undef __CV_V_FLOAT64 + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} // cv:: \ No newline at end of file diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_neon.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_neon.hpp new file mode 100644 index 0000000..3b946ff --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_neon.hpp @@ -0,0 +1,1943 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_INTRIN_NEON_HPP +#define OPENCV_HAL_INTRIN_NEON_HPP + +#include +#include "opencv2/core/utility.hpp" + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +#define CV_SIMD128 1 +#if defined(__aarch64__) +#define CV_SIMD128_64F 1 +#else +#define CV_SIMD128_64F 0 +#endif + +#if CV_SIMD128_64F +#define OPENCV_HAL_IMPL_NEON_REINTERPRET(_Tpv, suffix) \ +template static inline \ +_Tpv vreinterpretq_##suffix##_f64(T a) { return (_Tpv) a; } \ +template static inline \ +float64x2_t vreinterpretq_f64_##suffix(T a) { return (float64x2_t) a; } +OPENCV_HAL_IMPL_NEON_REINTERPRET(uint8x16_t, u8) +OPENCV_HAL_IMPL_NEON_REINTERPRET(int8x16_t, s8) +OPENCV_HAL_IMPL_NEON_REINTERPRET(uint16x8_t, u16) +OPENCV_HAL_IMPL_NEON_REINTERPRET(int16x8_t, s16) +OPENCV_HAL_IMPL_NEON_REINTERPRET(uint32x4_t, u32) +OPENCV_HAL_IMPL_NEON_REINTERPRET(int32x4_t, s32) +OPENCV_HAL_IMPL_NEON_REINTERPRET(uint64x2_t, u64) +OPENCV_HAL_IMPL_NEON_REINTERPRET(int64x2_t, s64) +OPENCV_HAL_IMPL_NEON_REINTERPRET(float32x4_t, f32) +#endif + +struct v_uint8x16 +{ + typedef uchar lane_type; + enum { nlanes = 16 }; + + v_uint8x16() {} + explicit v_uint8x16(uint8x16_t v) : val(v) {} + v_uint8x16(uchar v0, uchar v1, uchar v2, uchar v3, uchar v4, uchar v5, uchar v6, uchar v7, + uchar v8, uchar v9, uchar v10, uchar v11, uchar v12, uchar v13, uchar v14, uchar v15) + { + uchar v[] = {v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15}; + val = vld1q_u8(v); + } + uchar get0() const + { + return vgetq_lane_u8(val, 0); + } + + uint8x16_t val; +}; + +struct v_int8x16 +{ + typedef schar lane_type; + enum { nlanes = 16 }; + + v_int8x16() {} + explicit v_int8x16(int8x16_t v) : val(v) {} + v_int8x16(schar v0, schar v1, schar v2, schar v3, schar v4, schar v5, schar v6, schar v7, + schar v8, schar v9, schar v10, schar v11, schar v12, schar v13, schar v14, schar v15) + { + schar v[] = {v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15}; + val = vld1q_s8(v); + } + schar get0() const + { + return vgetq_lane_s8(val, 0); + } + + int8x16_t val; +}; + +struct v_uint16x8 +{ + typedef ushort lane_type; + enum { nlanes = 8 }; + + v_uint16x8() {} + explicit v_uint16x8(uint16x8_t v) : val(v) {} + v_uint16x8(ushort v0, ushort v1, ushort v2, ushort v3, ushort v4, ushort v5, ushort v6, ushort v7) + { + ushort v[] = {v0, v1, v2, v3, v4, v5, v6, v7}; + val = vld1q_u16(v); + } + ushort get0() const + { + return vgetq_lane_u16(val, 0); + } + + uint16x8_t val; +}; + +struct v_int16x8 +{ + typedef short lane_type; + enum { nlanes = 8 }; + + v_int16x8() {} + explicit v_int16x8(int16x8_t v) : val(v) {} + v_int16x8(short v0, short v1, short v2, short v3, short v4, short v5, short v6, short v7) + { + short v[] = {v0, v1, v2, v3, v4, v5, v6, v7}; + val = vld1q_s16(v); + } + short get0() const + { + return vgetq_lane_s16(val, 0); + } + + int16x8_t val; +}; + +struct v_uint32x4 +{ + typedef unsigned lane_type; + enum { nlanes = 4 }; + + v_uint32x4() {} + explicit v_uint32x4(uint32x4_t v) : val(v) {} + v_uint32x4(unsigned v0, unsigned v1, unsigned v2, unsigned v3) + { + unsigned v[] = {v0, v1, v2, v3}; + val = vld1q_u32(v); + } + unsigned get0() const + { + return vgetq_lane_u32(val, 0); + } + + uint32x4_t val; +}; + +struct v_int32x4 +{ + typedef int lane_type; + enum { nlanes = 4 }; + + v_int32x4() {} + explicit v_int32x4(int32x4_t v) : val(v) {} + v_int32x4(int v0, int v1, int v2, int v3) + { + int v[] = {v0, v1, v2, v3}; + val = vld1q_s32(v); + } + int get0() const + { + return vgetq_lane_s32(val, 0); + } + int32x4_t val; +}; + +struct v_float32x4 +{ + typedef float lane_type; + enum { nlanes = 4 }; + + v_float32x4() {} + explicit v_float32x4(float32x4_t v) : val(v) {} + v_float32x4(float v0, float v1, float v2, float v3) + { + float v[] = {v0, v1, v2, v3}; + val = vld1q_f32(v); + } + float get0() const + { + return vgetq_lane_f32(val, 0); + } + float32x4_t val; +}; + +struct v_uint64x2 +{ + typedef uint64 lane_type; + enum { nlanes = 2 }; + + v_uint64x2() {} + explicit v_uint64x2(uint64x2_t v) : val(v) {} + v_uint64x2(uint64 v0, uint64 v1) + { + uint64 v[] = {v0, v1}; + val = vld1q_u64(v); + } + uint64 get0() const + { + return vgetq_lane_u64(val, 0); + } + uint64x2_t val; +}; + +struct v_int64x2 +{ + typedef int64 lane_type; + enum { nlanes = 2 }; + + v_int64x2() {} + explicit v_int64x2(int64x2_t v) : val(v) {} + v_int64x2(int64 v0, int64 v1) + { + int64 v[] = {v0, v1}; + val = vld1q_s64(v); + } + int64 get0() const + { + return vgetq_lane_s64(val, 0); + } + int64x2_t val; +}; + +#if CV_SIMD128_64F +struct v_float64x2 +{ + typedef double lane_type; + enum { nlanes = 2 }; + + v_float64x2() {} + explicit v_float64x2(float64x2_t v) : val(v) {} + v_float64x2(double v0, double v1) + { + double v[] = {v0, v1}; + val = vld1q_f64(v); + } + double get0() const + { + return vgetq_lane_f64(val, 0); + } + float64x2_t val; +}; +#endif + +#if CV_FP16 +// Workaround for old compilers +static inline int16x4_t vreinterpret_s16_f16(float16x4_t a) { return (int16x4_t)a; } +static inline float16x4_t vreinterpret_f16_s16(int16x4_t a) { return (float16x4_t)a; } + +static inline float16x4_t cv_vld1_f16(const void* ptr) +{ +#ifndef vld1_f16 // APPLE compiler defines vld1_f16 as macro + return vreinterpret_f16_s16(vld1_s16((const short*)ptr)); +#else + return vld1_f16((const __fp16*)ptr); +#endif +} +static inline void cv_vst1_f16(void* ptr, float16x4_t a) +{ +#ifndef vst1_f16 // APPLE compiler defines vst1_f16 as macro + vst1_s16((short*)ptr, vreinterpret_s16_f16(a)); +#else + vst1_f16((__fp16*)ptr, a); +#endif +} + +#ifndef vdup_n_f16 + #define vdup_n_f16(v) (float16x4_t){v, v, v, v} +#endif + +#endif // CV_FP16 + +#if CV_FP16 +inline v_float32x4 v128_load_fp16_f32(const short* ptr) +{ + float16x4_t a = cv_vld1_f16((const __fp16*)ptr); + return v_float32x4(vcvt_f32_f16(a)); +} + +inline void v_store_fp16(short* ptr, const v_float32x4& a) +{ + float16x4_t fp16 = vcvt_f16_f32(a.val); + cv_vst1_f16((short*)ptr, fp16); +} +#endif + +#define OPENCV_HAL_IMPL_NEON_INIT(_Tpv, _Tp, suffix) \ +inline v_##_Tpv v_setzero_##suffix() { return v_##_Tpv(vdupq_n_##suffix((_Tp)0)); } \ +inline v_##_Tpv v_setall_##suffix(_Tp v) { return v_##_Tpv(vdupq_n_##suffix(v)); } \ +inline _Tpv##_t vreinterpretq_##suffix##_##suffix(_Tpv##_t v) { return v; } \ +inline v_uint8x16 v_reinterpret_as_u8(const v_##_Tpv& v) { return v_uint8x16(vreinterpretq_u8_##suffix(v.val)); } \ +inline v_int8x16 v_reinterpret_as_s8(const v_##_Tpv& v) { return v_int8x16(vreinterpretq_s8_##suffix(v.val)); } \ +inline v_uint16x8 v_reinterpret_as_u16(const v_##_Tpv& v) { return v_uint16x8(vreinterpretq_u16_##suffix(v.val)); } \ +inline v_int16x8 v_reinterpret_as_s16(const v_##_Tpv& v) { return v_int16x8(vreinterpretq_s16_##suffix(v.val)); } \ +inline v_uint32x4 v_reinterpret_as_u32(const v_##_Tpv& v) { return v_uint32x4(vreinterpretq_u32_##suffix(v.val)); } \ +inline v_int32x4 v_reinterpret_as_s32(const v_##_Tpv& v) { return v_int32x4(vreinterpretq_s32_##suffix(v.val)); } \ +inline v_uint64x2 v_reinterpret_as_u64(const v_##_Tpv& v) { return v_uint64x2(vreinterpretq_u64_##suffix(v.val)); } \ +inline v_int64x2 v_reinterpret_as_s64(const v_##_Tpv& v) { return v_int64x2(vreinterpretq_s64_##suffix(v.val)); } \ +inline v_float32x4 v_reinterpret_as_f32(const v_##_Tpv& v) { return v_float32x4(vreinterpretq_f32_##suffix(v.val)); } + +OPENCV_HAL_IMPL_NEON_INIT(uint8x16, uchar, u8) +OPENCV_HAL_IMPL_NEON_INIT(int8x16, schar, s8) +OPENCV_HAL_IMPL_NEON_INIT(uint16x8, ushort, u16) +OPENCV_HAL_IMPL_NEON_INIT(int16x8, short, s16) +OPENCV_HAL_IMPL_NEON_INIT(uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_NEON_INIT(int32x4, int, s32) +OPENCV_HAL_IMPL_NEON_INIT(uint64x2, uint64, u64) +OPENCV_HAL_IMPL_NEON_INIT(int64x2, int64, s64) +OPENCV_HAL_IMPL_NEON_INIT(float32x4, float, f32) +#if CV_SIMD128_64F +#define OPENCV_HAL_IMPL_NEON_INIT_64(_Tpv, suffix) \ +inline v_float64x2 v_reinterpret_as_f64(const v_##_Tpv& v) { return v_float64x2(vreinterpretq_f64_##suffix(v.val)); } +OPENCV_HAL_IMPL_NEON_INIT(float64x2, double, f64) +OPENCV_HAL_IMPL_NEON_INIT_64(uint8x16, u8) +OPENCV_HAL_IMPL_NEON_INIT_64(int8x16, s8) +OPENCV_HAL_IMPL_NEON_INIT_64(uint16x8, u16) +OPENCV_HAL_IMPL_NEON_INIT_64(int16x8, s16) +OPENCV_HAL_IMPL_NEON_INIT_64(uint32x4, u32) +OPENCV_HAL_IMPL_NEON_INIT_64(int32x4, s32) +OPENCV_HAL_IMPL_NEON_INIT_64(uint64x2, u64) +OPENCV_HAL_IMPL_NEON_INIT_64(int64x2, s64) +OPENCV_HAL_IMPL_NEON_INIT_64(float32x4, f32) +OPENCV_HAL_IMPL_NEON_INIT_64(float64x2, f64) +#endif + +#define OPENCV_HAL_IMPL_NEON_PACK(_Tpvec, _Tp, hreg, suffix, _Tpwvec, pack, mov, rshr) \ +inline _Tpvec v_##pack(const _Tpwvec& a, const _Tpwvec& b) \ +{ \ + hreg a1 = mov(a.val), b1 = mov(b.val); \ + return _Tpvec(vcombine_##suffix(a1, b1)); \ +} \ +inline void v_##pack##_store(_Tp* ptr, const _Tpwvec& a) \ +{ \ + hreg a1 = mov(a.val); \ + vst1_##suffix(ptr, a1); \ +} \ +template inline \ +_Tpvec v_rshr_##pack(const _Tpwvec& a, const _Tpwvec& b) \ +{ \ + hreg a1 = rshr(a.val, n); \ + hreg b1 = rshr(b.val, n); \ + return _Tpvec(vcombine_##suffix(a1, b1)); \ +} \ +template inline \ +void v_rshr_##pack##_store(_Tp* ptr, const _Tpwvec& a) \ +{ \ + hreg a1 = rshr(a.val, n); \ + vst1_##suffix(ptr, a1); \ +} + +OPENCV_HAL_IMPL_NEON_PACK(v_uint8x16, uchar, uint8x8_t, u8, v_uint16x8, pack, vqmovn_u16, vqrshrn_n_u16) +OPENCV_HAL_IMPL_NEON_PACK(v_int8x16, schar, int8x8_t, s8, v_int16x8, pack, vqmovn_s16, vqrshrn_n_s16) +OPENCV_HAL_IMPL_NEON_PACK(v_uint16x8, ushort, uint16x4_t, u16, v_uint32x4, pack, vqmovn_u32, vqrshrn_n_u32) +OPENCV_HAL_IMPL_NEON_PACK(v_int16x8, short, int16x4_t, s16, v_int32x4, pack, vqmovn_s32, vqrshrn_n_s32) +OPENCV_HAL_IMPL_NEON_PACK(v_uint32x4, unsigned, uint32x2_t, u32, v_uint64x2, pack, vmovn_u64, vrshrn_n_u64) +OPENCV_HAL_IMPL_NEON_PACK(v_int32x4, int, int32x2_t, s32, v_int64x2, pack, vmovn_s64, vrshrn_n_s64) + +OPENCV_HAL_IMPL_NEON_PACK(v_uint8x16, uchar, uint8x8_t, u8, v_int16x8, pack_u, vqmovun_s16, vqrshrun_n_s16) +OPENCV_HAL_IMPL_NEON_PACK(v_uint16x8, ushort, uint16x4_t, u16, v_int32x4, pack_u, vqmovun_s32, vqrshrun_n_s32) + +// pack boolean +inline v_uint8x16 v_pack_b(const v_uint16x8& a, const v_uint16x8& b) +{ + uint8x16_t ab = vcombine_u8(vmovn_u16(a.val), vmovn_u16(b.val)); + return v_uint8x16(ab); +} + +inline v_uint8x16 v_pack_b(const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, const v_uint32x4& d) +{ + uint16x8_t nab = vcombine_u16(vmovn_u32(a.val), vmovn_u32(b.val)); + uint16x8_t ncd = vcombine_u16(vmovn_u32(c.val), vmovn_u32(d.val)); + return v_uint8x16(vcombine_u8(vmovn_u16(nab), vmovn_u16(ncd))); +} + +inline v_uint8x16 v_pack_b(const v_uint64x2& a, const v_uint64x2& b, const v_uint64x2& c, + const v_uint64x2& d, const v_uint64x2& e, const v_uint64x2& f, + const v_uint64x2& g, const v_uint64x2& h) +{ + uint32x4_t ab = vcombine_u32(vmovn_u64(a.val), vmovn_u64(b.val)); + uint32x4_t cd = vcombine_u32(vmovn_u64(c.val), vmovn_u64(d.val)); + uint32x4_t ef = vcombine_u32(vmovn_u64(e.val), vmovn_u64(f.val)); + uint32x4_t gh = vcombine_u32(vmovn_u64(g.val), vmovn_u64(h.val)); + + uint16x8_t abcd = vcombine_u16(vmovn_u32(ab), vmovn_u32(cd)); + uint16x8_t efgh = vcombine_u16(vmovn_u32(ef), vmovn_u32(gh)); + return v_uint8x16(vcombine_u8(vmovn_u16(abcd), vmovn_u16(efgh))); +} + +inline v_float32x4 v_matmul(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& m3) +{ + float32x2_t vl = vget_low_f32(v.val), vh = vget_high_f32(v.val); + float32x4_t res = vmulq_lane_f32(m0.val, vl, 0); + res = vmlaq_lane_f32(res, m1.val, vl, 1); + res = vmlaq_lane_f32(res, m2.val, vh, 0); + res = vmlaq_lane_f32(res, m3.val, vh, 1); + return v_float32x4(res); +} + +inline v_float32x4 v_matmuladd(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& a) +{ + float32x2_t vl = vget_low_f32(v.val), vh = vget_high_f32(v.val); + float32x4_t res = vmulq_lane_f32(m0.val, vl, 0); + res = vmlaq_lane_f32(res, m1.val, vl, 1); + res = vmlaq_lane_f32(res, m2.val, vh, 0); + res = vaddq_f32(res, a.val); + return v_float32x4(res); +} + +#define OPENCV_HAL_IMPL_NEON_BIN_OP(bin_op, _Tpvec, intrin) \ +inline _Tpvec operator bin_op (const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(intrin(a.val, b.val)); \ +} \ +inline _Tpvec& operator bin_op##= (_Tpvec& a, const _Tpvec& b) \ +{ \ + a.val = intrin(a.val, b.val); \ + return a; \ +} + +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_uint8x16, vqaddq_u8) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_uint8x16, vqsubq_u8) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_int8x16, vqaddq_s8) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_int8x16, vqsubq_s8) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_uint16x8, vqaddq_u16) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_uint16x8, vqsubq_u16) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_int16x8, vqaddq_s16) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_int16x8, vqsubq_s16) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_int32x4, vaddq_s32) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_int32x4, vsubq_s32) +OPENCV_HAL_IMPL_NEON_BIN_OP(*, v_int32x4, vmulq_s32) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_uint32x4, vaddq_u32) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_uint32x4, vsubq_u32) +OPENCV_HAL_IMPL_NEON_BIN_OP(*, v_uint32x4, vmulq_u32) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_float32x4, vaddq_f32) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_float32x4, vsubq_f32) +OPENCV_HAL_IMPL_NEON_BIN_OP(*, v_float32x4, vmulq_f32) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_int64x2, vaddq_s64) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_int64x2, vsubq_s64) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_uint64x2, vaddq_u64) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_uint64x2, vsubq_u64) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_BIN_OP(/, v_float32x4, vdivq_f32) +OPENCV_HAL_IMPL_NEON_BIN_OP(+, v_float64x2, vaddq_f64) +OPENCV_HAL_IMPL_NEON_BIN_OP(-, v_float64x2, vsubq_f64) +OPENCV_HAL_IMPL_NEON_BIN_OP(*, v_float64x2, vmulq_f64) +OPENCV_HAL_IMPL_NEON_BIN_OP(/, v_float64x2, vdivq_f64) +#else +inline v_float32x4 operator / (const v_float32x4& a, const v_float32x4& b) +{ + float32x4_t reciprocal = vrecpeq_f32(b.val); + reciprocal = vmulq_f32(vrecpsq_f32(b.val, reciprocal), reciprocal); + reciprocal = vmulq_f32(vrecpsq_f32(b.val, reciprocal), reciprocal); + return v_float32x4(vmulq_f32(a.val, reciprocal)); +} +inline v_float32x4& operator /= (v_float32x4& a, const v_float32x4& b) +{ + float32x4_t reciprocal = vrecpeq_f32(b.val); + reciprocal = vmulq_f32(vrecpsq_f32(b.val, reciprocal), reciprocal); + reciprocal = vmulq_f32(vrecpsq_f32(b.val, reciprocal), reciprocal); + a.val = vmulq_f32(a.val, reciprocal); + return a; +} +#endif + +// saturating multiply 8-bit, 16-bit +#define OPENCV_HAL_IMPL_NEON_MUL_SAT(_Tpvec, _Tpwvec) \ + inline _Tpvec operator * (const _Tpvec& a, const _Tpvec& b) \ + { \ + _Tpwvec c, d; \ + v_mul_expand(a, b, c, d); \ + return v_pack(c, d); \ + } \ + inline _Tpvec& operator *= (_Tpvec& a, const _Tpvec& b) \ + { a = a * b; return a; } + +OPENCV_HAL_IMPL_NEON_MUL_SAT(v_int8x16, v_int16x8) +OPENCV_HAL_IMPL_NEON_MUL_SAT(v_uint8x16, v_uint16x8) +OPENCV_HAL_IMPL_NEON_MUL_SAT(v_int16x8, v_int32x4) +OPENCV_HAL_IMPL_NEON_MUL_SAT(v_uint16x8, v_uint32x4) + +// Multiply and expand +inline void v_mul_expand(const v_int8x16& a, const v_int8x16& b, + v_int16x8& c, v_int16x8& d) +{ + c.val = vmull_s8(vget_low_s8(a.val), vget_low_s8(b.val)); + d.val = vmull_s8(vget_high_s8(a.val), vget_high_s8(b.val)); +} + +inline void v_mul_expand(const v_uint8x16& a, const v_uint8x16& b, + v_uint16x8& c, v_uint16x8& d) +{ + c.val = vmull_u8(vget_low_u8(a.val), vget_low_u8(b.val)); + d.val = vmull_u8(vget_high_u8(a.val), vget_high_u8(b.val)); +} + +inline void v_mul_expand(const v_int16x8& a, const v_int16x8& b, + v_int32x4& c, v_int32x4& d) +{ + c.val = vmull_s16(vget_low_s16(a.val), vget_low_s16(b.val)); + d.val = vmull_s16(vget_high_s16(a.val), vget_high_s16(b.val)); +} + +inline void v_mul_expand(const v_uint16x8& a, const v_uint16x8& b, + v_uint32x4& c, v_uint32x4& d) +{ + c.val = vmull_u16(vget_low_u16(a.val), vget_low_u16(b.val)); + d.val = vmull_u16(vget_high_u16(a.val), vget_high_u16(b.val)); +} + +inline void v_mul_expand(const v_uint32x4& a, const v_uint32x4& b, + v_uint64x2& c, v_uint64x2& d) +{ + c.val = vmull_u32(vget_low_u32(a.val), vget_low_u32(b.val)); + d.val = vmull_u32(vget_high_u32(a.val), vget_high_u32(b.val)); +} + +inline v_int16x8 v_mul_hi(const v_int16x8& a, const v_int16x8& b) +{ + return v_int16x8(vcombine_s16( + vshrn_n_s32(vmull_s16( vget_low_s16(a.val), vget_low_s16(b.val)), 16), + vshrn_n_s32(vmull_s16(vget_high_s16(a.val), vget_high_s16(b.val)), 16) + )); +} +inline v_uint16x8 v_mul_hi(const v_uint16x8& a, const v_uint16x8& b) +{ + return v_uint16x8(vcombine_u16( + vshrn_n_u32(vmull_u16( vget_low_u16(a.val), vget_low_u16(b.val)), 16), + vshrn_n_u32(vmull_u16(vget_high_u16(a.val), vget_high_u16(b.val)), 16) + )); +} + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b) +{ + int32x4_t c = vmull_s16(vget_low_s16(a.val), vget_low_s16(b.val)); + int32x4_t d = vmull_s16(vget_high_s16(a.val), vget_high_s16(b.val)); + int32x4x2_t cd = vuzpq_s32(c, d); + return v_int32x4(vaddq_s32(cd.val[0], cd.val[1])); +} + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b, const v_int32x4& c) +{ + v_int32x4 s = v_dotprod(a, b); + return v_int32x4(vaddq_s32(s.val , c.val)); +} + +#define OPENCV_HAL_IMPL_NEON_LOGIC_OP(_Tpvec, suffix) \ + OPENCV_HAL_IMPL_NEON_BIN_OP(&, _Tpvec, vandq_##suffix) \ + OPENCV_HAL_IMPL_NEON_BIN_OP(|, _Tpvec, vorrq_##suffix) \ + OPENCV_HAL_IMPL_NEON_BIN_OP(^, _Tpvec, veorq_##suffix) \ + inline _Tpvec operator ~ (const _Tpvec& a) \ + { \ + return _Tpvec(vreinterpretq_##suffix##_u8(vmvnq_u8(vreinterpretq_u8_##suffix(a.val)))); \ + } + +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_uint8x16, u8) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_int8x16, s8) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_uint16x8, u16) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_int16x8, s16) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_uint32x4, u32) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_int32x4, s32) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_uint64x2, u64) +OPENCV_HAL_IMPL_NEON_LOGIC_OP(v_int64x2, s64) + +#define OPENCV_HAL_IMPL_NEON_FLT_BIT_OP(bin_op, intrin) \ +inline v_float32x4 operator bin_op (const v_float32x4& a, const v_float32x4& b) \ +{ \ + return v_float32x4(vreinterpretq_f32_s32(intrin(vreinterpretq_s32_f32(a.val), vreinterpretq_s32_f32(b.val)))); \ +} \ +inline v_float32x4& operator bin_op##= (v_float32x4& a, const v_float32x4& b) \ +{ \ + a.val = vreinterpretq_f32_s32(intrin(vreinterpretq_s32_f32(a.val), vreinterpretq_s32_f32(b.val))); \ + return a; \ +} + +OPENCV_HAL_IMPL_NEON_FLT_BIT_OP(&, vandq_s32) +OPENCV_HAL_IMPL_NEON_FLT_BIT_OP(|, vorrq_s32) +OPENCV_HAL_IMPL_NEON_FLT_BIT_OP(^, veorq_s32) + +inline v_float32x4 operator ~ (const v_float32x4& a) +{ + return v_float32x4(vreinterpretq_f32_s32(vmvnq_s32(vreinterpretq_s32_f32(a.val)))); +} + +#if CV_SIMD128_64F +inline v_float32x4 v_sqrt(const v_float32x4& x) +{ + return v_float32x4(vsqrtq_f32(x.val)); +} + +inline v_float32x4 v_invsqrt(const v_float32x4& x) +{ + v_float32x4 one = v_setall_f32(1.0f); + return one / v_sqrt(x); +} +#else +inline v_float32x4 v_sqrt(const v_float32x4& x) +{ + float32x4_t x1 = vmaxq_f32(x.val, vdupq_n_f32(FLT_MIN)); + float32x4_t e = vrsqrteq_f32(x1); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e); + return v_float32x4(vmulq_f32(x.val, e)); +} + +inline v_float32x4 v_invsqrt(const v_float32x4& x) +{ + float32x4_t e = vrsqrteq_f32(x.val); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x.val, e), e), e); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x.val, e), e), e); + return v_float32x4(e); +} +#endif + +#define OPENCV_HAL_IMPL_NEON_ABS(_Tpuvec, _Tpsvec, usuffix, ssuffix) \ +inline _Tpuvec v_abs(const _Tpsvec& a) { return v_reinterpret_as_##usuffix(_Tpsvec(vabsq_##ssuffix(a.val))); } + +OPENCV_HAL_IMPL_NEON_ABS(v_uint8x16, v_int8x16, u8, s8) +OPENCV_HAL_IMPL_NEON_ABS(v_uint16x8, v_int16x8, u16, s16) +OPENCV_HAL_IMPL_NEON_ABS(v_uint32x4, v_int32x4, u32, s32) + +inline v_float32x4 v_abs(v_float32x4 x) +{ return v_float32x4(vabsq_f32(x.val)); } + +#if CV_SIMD128_64F +#define OPENCV_HAL_IMPL_NEON_DBL_BIT_OP(bin_op, intrin) \ +inline v_float64x2 operator bin_op (const v_float64x2& a, const v_float64x2& b) \ +{ \ + return v_float64x2(vreinterpretq_f64_s64(intrin(vreinterpretq_s64_f64(a.val), vreinterpretq_s64_f64(b.val)))); \ +} \ +inline v_float64x2& operator bin_op##= (v_float64x2& a, const v_float64x2& b) \ +{ \ + a.val = vreinterpretq_f64_s64(intrin(vreinterpretq_s64_f64(a.val), vreinterpretq_s64_f64(b.val))); \ + return a; \ +} + +OPENCV_HAL_IMPL_NEON_DBL_BIT_OP(&, vandq_s64) +OPENCV_HAL_IMPL_NEON_DBL_BIT_OP(|, vorrq_s64) +OPENCV_HAL_IMPL_NEON_DBL_BIT_OP(^, veorq_s64) + +inline v_float64x2 operator ~ (const v_float64x2& a) +{ + return v_float64x2(vreinterpretq_f64_s32(vmvnq_s32(vreinterpretq_s32_f64(a.val)))); +} + +inline v_float64x2 v_sqrt(const v_float64x2& x) +{ + return v_float64x2(vsqrtq_f64(x.val)); +} + +inline v_float64x2 v_invsqrt(const v_float64x2& x) +{ + v_float64x2 one = v_setall_f64(1.0f); + return one / v_sqrt(x); +} + +inline v_float64x2 v_abs(v_float64x2 x) +{ return v_float64x2(vabsq_f64(x.val)); } +#endif + +// TODO: exp, log, sin, cos + +#define OPENCV_HAL_IMPL_NEON_BIN_FUNC(_Tpvec, func, intrin) \ +inline _Tpvec func(const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(intrin(a.val, b.val)); \ +} + +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_min, vminq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_max, vmaxq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int8x16, v_min, vminq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int8x16, v_max, vmaxq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_min, vminq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_max, vmaxq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int16x8, v_min, vminq_s16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int16x8, v_max, vmaxq_s16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint32x4, v_min, vminq_u32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint32x4, v_max, vmaxq_u32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int32x4, v_min, vminq_s32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int32x4, v_max, vmaxq_s32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float32x4, v_min, vminq_f32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float32x4, v_max, vmaxq_f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float64x2, v_min, vminq_f64) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float64x2, v_max, vmaxq_f64) +#endif + +#if CV_SIMD128_64F +inline int64x2_t vmvnq_s64(int64x2_t a) +{ + int64x2_t vx = vreinterpretq_s64_u32(vdupq_n_u32(0xFFFFFFFF)); + return veorq_s64(a, vx); +} +inline uint64x2_t vmvnq_u64(uint64x2_t a) +{ + uint64x2_t vx = vreinterpretq_u64_u32(vdupq_n_u32(0xFFFFFFFF)); + return veorq_u64(a, vx); +} +#endif +#define OPENCV_HAL_IMPL_NEON_INT_CMP_OP(_Tpvec, cast, suffix, not_suffix) \ +inline _Tpvec operator == (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vceqq_##suffix(a.val, b.val))); } \ +inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vmvnq_##not_suffix(vceqq_##suffix(a.val, b.val)))); } \ +inline _Tpvec operator < (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vcltq_##suffix(a.val, b.val))); } \ +inline _Tpvec operator > (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vcgtq_##suffix(a.val, b.val))); } \ +inline _Tpvec operator <= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vcleq_##suffix(a.val, b.val))); } \ +inline _Tpvec operator >= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(cast(vcgeq_##suffix(a.val, b.val))); } + +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_uint8x16, OPENCV_HAL_NOP, u8, u8) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_int8x16, vreinterpretq_s8_u8, s8, u8) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_uint16x8, OPENCV_HAL_NOP, u16, u16) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_int16x8, vreinterpretq_s16_u16, s16, u16) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_uint32x4, OPENCV_HAL_NOP, u32, u32) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_int32x4, vreinterpretq_s32_u32, s32, u32) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_float32x4, vreinterpretq_f32_u32, f32, u32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_uint64x2, OPENCV_HAL_NOP, u64, u64) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_int64x2, vreinterpretq_s64_u64, s64, u64) +OPENCV_HAL_IMPL_NEON_INT_CMP_OP(v_float64x2, vreinterpretq_f64_u64, f64, u64) +#endif + +inline v_float32x4 v_not_nan(const v_float32x4& a) +{ return v_float32x4(vreinterpretq_f32_u32(vceqq_f32(a.val, a.val))); } +#if CV_SIMD128_64F +inline v_float64x2 v_not_nan(const v_float64x2& a) +{ return v_float64x2(vreinterpretq_f64_u64(vceqq_f64(a.val, a.val))); } +#endif + +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_add_wrap, vaddq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int8x16, v_add_wrap, vaddq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_add_wrap, vaddq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int16x8, v_add_wrap, vaddq_s16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_sub_wrap, vsubq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int8x16, v_sub_wrap, vsubq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_sub_wrap, vsubq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int16x8, v_sub_wrap, vsubq_s16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_mul_wrap, vmulq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int8x16, v_mul_wrap, vmulq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_mul_wrap, vmulq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_int16x8, v_mul_wrap, vmulq_s16) + +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint8x16, v_absdiff, vabdq_u8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint16x8, v_absdiff, vabdq_u16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_uint32x4, v_absdiff, vabdq_u32) +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float32x4, v_absdiff, vabdq_f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_BIN_FUNC(v_float64x2, v_absdiff, vabdq_f64) +#endif + +/** Saturating absolute difference **/ +inline v_int8x16 v_absdiffs(const v_int8x16& a, const v_int8x16& b) +{ return v_int8x16(vqabsq_s8(vqsubq_s8(a.val, b.val))); } +inline v_int16x8 v_absdiffs(const v_int16x8& a, const v_int16x8& b) +{ return v_int16x8(vqabsq_s16(vqsubq_s16(a.val, b.val))); } + +#define OPENCV_HAL_IMPL_NEON_BIN_FUNC2(_Tpvec, _Tpvec2, cast, func, intrin) \ +inline _Tpvec2 func(const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec2(cast(intrin(a.val, b.val))); \ +} + +OPENCV_HAL_IMPL_NEON_BIN_FUNC2(v_int8x16, v_uint8x16, vreinterpretq_u8_s8, v_absdiff, vabdq_s8) +OPENCV_HAL_IMPL_NEON_BIN_FUNC2(v_int16x8, v_uint16x8, vreinterpretq_u16_s16, v_absdiff, vabdq_s16) +OPENCV_HAL_IMPL_NEON_BIN_FUNC2(v_int32x4, v_uint32x4, vreinterpretq_u32_s32, v_absdiff, vabdq_s32) + +inline v_float32x4 v_magnitude(const v_float32x4& a, const v_float32x4& b) +{ + v_float32x4 x(vmlaq_f32(vmulq_f32(a.val, a.val), b.val, b.val)); + return v_sqrt(x); +} + +inline v_float32x4 v_sqr_magnitude(const v_float32x4& a, const v_float32x4& b) +{ + return v_float32x4(vmlaq_f32(vmulq_f32(a.val, a.val), b.val, b.val)); +} + +inline v_float32x4 v_fma(const v_float32x4& a, const v_float32x4& b, const v_float32x4& c) +{ +#if CV_SIMD128_64F + // ARMv8, which adds support for 64-bit floating-point (so CV_SIMD128_64F is defined), + // also adds FMA support both for single- and double-precision floating-point vectors + return v_float32x4(vfmaq_f32(c.val, a.val, b.val)); +#else + return v_float32x4(vmlaq_f32(c.val, a.val, b.val)); +#endif +} + +inline v_int32x4 v_fma(const v_int32x4& a, const v_int32x4& b, const v_int32x4& c) +{ + return v_int32x4(vmlaq_s32(c.val, a.val, b.val)); +} + +inline v_float32x4 v_muladd(const v_float32x4& a, const v_float32x4& b, const v_float32x4& c) +{ + return v_fma(a, b, c); +} + +inline v_int32x4 v_muladd(const v_int32x4& a, const v_int32x4& b, const v_int32x4& c) +{ + return v_fma(a, b, c); +} + +#if CV_SIMD128_64F +inline v_float64x2 v_magnitude(const v_float64x2& a, const v_float64x2& b) +{ + v_float64x2 x(vaddq_f64(vmulq_f64(a.val, a.val), vmulq_f64(b.val, b.val))); + return v_sqrt(x); +} + +inline v_float64x2 v_sqr_magnitude(const v_float64x2& a, const v_float64x2& b) +{ + return v_float64x2(vaddq_f64(vmulq_f64(a.val, a.val), vmulq_f64(b.val, b.val))); +} + +inline v_float64x2 v_fma(const v_float64x2& a, const v_float64x2& b, const v_float64x2& c) +{ + return v_float64x2(vfmaq_f64(c.val, a.val, b.val)); +} + +inline v_float64x2 v_muladd(const v_float64x2& a, const v_float64x2& b, const v_float64x2& c) +{ + return v_fma(a, b, c); +} +#endif + +// trade efficiency for convenience +#define OPENCV_HAL_IMPL_NEON_SHIFT_OP(_Tpvec, suffix, _Tps, ssuffix) \ +inline _Tpvec operator << (const _Tpvec& a, int n) \ +{ return _Tpvec(vshlq_##suffix(a.val, vdupq_n_##ssuffix((_Tps)n))); } \ +inline _Tpvec operator >> (const _Tpvec& a, int n) \ +{ return _Tpvec(vshlq_##suffix(a.val, vdupq_n_##ssuffix((_Tps)-n))); } \ +template inline _Tpvec v_shl(const _Tpvec& a) \ +{ return _Tpvec(vshlq_n_##suffix(a.val, n)); } \ +template inline _Tpvec v_shr(const _Tpvec& a) \ +{ return _Tpvec(vshrq_n_##suffix(a.val, n)); } \ +template inline _Tpvec v_rshr(const _Tpvec& a) \ +{ return _Tpvec(vrshrq_n_##suffix(a.val, n)); } + +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_uint8x16, u8, schar, s8) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_int8x16, s8, schar, s8) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_uint16x8, u16, short, s16) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_int16x8, s16, short, s16) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_uint32x4, u32, int, s32) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_int32x4, s32, int, s32) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_uint64x2, u64, int64, s64) +OPENCV_HAL_IMPL_NEON_SHIFT_OP(v_int64x2, s64, int64, s64) + +#define OPENCV_HAL_IMPL_NEON_ROTATE_OP(_Tpvec, suffix) \ +template inline _Tpvec v_rotate_right(const _Tpvec& a) \ +{ return _Tpvec(vextq_##suffix(a.val, vdupq_n_##suffix(0), n)); } \ +template inline _Tpvec v_rotate_left(const _Tpvec& a) \ +{ return _Tpvec(vextq_##suffix(vdupq_n_##suffix(0), a.val, _Tpvec::nlanes - n)); } \ +template<> inline _Tpvec v_rotate_left<0>(const _Tpvec& a) \ +{ return a; } \ +template inline _Tpvec v_rotate_right(const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vextq_##suffix(a.val, b.val, n)); } \ +template inline _Tpvec v_rotate_left(const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vextq_##suffix(b.val, a.val, _Tpvec::nlanes - n)); } \ +template<> inline _Tpvec v_rotate_left<0>(const _Tpvec& a, const _Tpvec& b) \ +{ CV_UNUSED(b); return a; } + +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_uint8x16, u8) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_int8x16, s8) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_uint16x8, u16) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_int16x8, s16) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_uint32x4, u32) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_int32x4, s32) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_float32x4, f32) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_uint64x2, u64) +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_int64x2, s64) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_ROTATE_OP(v_float64x2, f64) +#endif + +#define OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(_Tpvec, _Tp, suffix) \ +inline _Tpvec v_load(const _Tp* ptr) \ +{ return _Tpvec(vld1q_##suffix(ptr)); } \ +inline _Tpvec v_load_aligned(const _Tp* ptr) \ +{ return _Tpvec(vld1q_##suffix(ptr)); } \ +inline _Tpvec v_load_low(const _Tp* ptr) \ +{ return _Tpvec(vcombine_##suffix(vld1_##suffix(ptr), vdup_n_##suffix((_Tp)0))); } \ +inline _Tpvec v_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ +{ return _Tpvec(vcombine_##suffix(vld1_##suffix(ptr0), vld1_##suffix(ptr1))); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a) \ +{ vst1q_##suffix(ptr, a.val); } \ +inline void v_store_aligned(_Tp* ptr, const _Tpvec& a) \ +{ vst1q_##suffix(ptr, a.val); } \ +inline void v_store_aligned_nocache(_Tp* ptr, const _Tpvec& a) \ +{ vst1q_##suffix(ptr, a.val); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode /*mode*/) \ +{ vst1q_##suffix(ptr, a.val); } \ +inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ +{ vst1_##suffix(ptr, vget_low_##suffix(a.val)); } \ +inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ +{ vst1_##suffix(ptr, vget_high_##suffix(a.val)); } + +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_uint8x16, uchar, u8) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_int8x16, schar, s8) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_uint16x8, ushort, u16) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_int16x8, short, s16) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_int32x4, int, s32) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_uint64x2, uint64, u64) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_int64x2, int64, s64) +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_float32x4, float, f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_LOADSTORE_OP(v_float64x2, double, f64) +#endif + +#define OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(_Tpvec, _Tpnvec, scalartype, func, vectorfunc, suffix) \ +inline scalartype v_reduce_##func(const _Tpvec& a) \ +{ \ + _Tpnvec##_t a0 = vp##vectorfunc##_##suffix(vget_low_##suffix(a.val), vget_high_##suffix(a.val)); \ + a0 = vp##vectorfunc##_##suffix(a0, a0); \ + return (scalartype)vget_lane_##suffix(vp##vectorfunc##_##suffix(a0, a0),0); \ +} + +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_uint16x8, uint16x4, unsigned short, sum, add, u16) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_uint16x8, uint16x4, unsigned short, max, max, u16) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_uint16x8, uint16x4, unsigned short, min, min, u16) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_int16x8, int16x4, short, sum, add, s16) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_int16x8, int16x4, short, max, max, s16) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_8(v_int16x8, int16x4, short, min, min, s16) + +#define OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(_Tpvec, _Tpnvec, scalartype, func, vectorfunc, suffix) \ +inline scalartype v_reduce_##func(const _Tpvec& a) \ +{ \ + _Tpnvec##_t a0 = vp##vectorfunc##_##suffix(vget_low_##suffix(a.val), vget_high_##suffix(a.val)); \ + return (scalartype)vget_lane_##suffix(vp##vectorfunc##_##suffix(a0, vget_high_##suffix(a.val)),0); \ +} + +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_uint32x4, uint32x2, unsigned, sum, add, u32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_uint32x4, uint32x2, unsigned, max, max, u32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_uint32x4, uint32x2, unsigned, min, min, u32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_int32x4, int32x2, int, sum, add, s32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_int32x4, int32x2, int, max, max, s32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_int32x4, int32x2, int, min, min, s32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_float32x4, float32x2, float, sum, add, f32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_float32x4, float32x2, float, max, max, f32) +OPENCV_HAL_IMPL_NEON_REDUCE_OP_4(v_float32x4, float32x2, float, min, min, f32) + +#if CV_SIMD128_64F +inline double v_reduce_sum(const v_float64x2& a) +{ + return vgetq_lane_f64(a.val, 0) + vgetq_lane_f64(a.val, 1); +} +#endif + +inline v_float32x4 v_reduce_sum4(const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, const v_float32x4& d) +{ + float32x4x2_t ab = vtrnq_f32(a.val, b.val); + float32x4x2_t cd = vtrnq_f32(c.val, d.val); + + float32x4_t u0 = vaddq_f32(ab.val[0], ab.val[1]); // a0+a1 b0+b1 a2+a3 b2+b3 + float32x4_t u1 = vaddq_f32(cd.val[0], cd.val[1]); // c0+c1 d0+d1 c2+c3 d2+d3 + + float32x4_t v0 = vcombine_f32(vget_low_f32(u0), vget_low_f32(u1)); + float32x4_t v1 = vcombine_f32(vget_high_f32(u0), vget_high_f32(u1)); + + return v_float32x4(vaddq_f32(v0, v1)); +} + +inline unsigned v_reduce_sad(const v_uint8x16& a, const v_uint8x16& b) +{ + uint32x4_t t0 = vpaddlq_u16(vpaddlq_u8(vabdq_u8(a.val, b.val))); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline unsigned v_reduce_sad(const v_int8x16& a, const v_int8x16& b) +{ + uint32x4_t t0 = vpaddlq_u16(vpaddlq_u8(vreinterpretq_u8_s8(vabdq_s8(a.val, b.val)))); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline unsigned v_reduce_sad(const v_uint16x8& a, const v_uint16x8& b) +{ + uint32x4_t t0 = vpaddlq_u16(vabdq_u16(a.val, b.val)); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline unsigned v_reduce_sad(const v_int16x8& a, const v_int16x8& b) +{ + uint32x4_t t0 = vpaddlq_u16(vreinterpretq_u16_s16(vabdq_s16(a.val, b.val))); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline unsigned v_reduce_sad(const v_uint32x4& a, const v_uint32x4& b) +{ + uint32x4_t t0 = vabdq_u32(a.val, b.val); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline unsigned v_reduce_sad(const v_int32x4& a, const v_int32x4& b) +{ + uint32x4_t t0 = vreinterpretq_u32_s32(vabdq_s32(a.val, b.val)); + uint32x2_t t1 = vpadd_u32(vget_low_u32(t0), vget_high_u32(t0)); + return vget_lane_u32(vpadd_u32(t1, t1), 0); +} +inline float v_reduce_sad(const v_float32x4& a, const v_float32x4& b) +{ + float32x4_t t0 = vabdq_f32(a.val, b.val); + float32x2_t t1 = vpadd_f32(vget_low_f32(t0), vget_high_f32(t0)); + return vget_lane_f32(vpadd_f32(t1, t1), 0); +} + +#define OPENCV_HAL_IMPL_NEON_POPCOUNT(_Tpvec, cast) \ +inline v_uint32x4 v_popcount(const _Tpvec& a) \ +{ \ + uint8x16_t t = vcntq_u8(cast(a.val)); \ + uint16x8_t t0 = vpaddlq_u8(t); /* 16 -> 8 */ \ + uint32x4_t t1 = vpaddlq_u16(t0); /* 8 -> 4 */ \ + return v_uint32x4(t1); \ +} + +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_uint8x16, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_uint16x8, vreinterpretq_u8_u16) +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_uint32x4, vreinterpretq_u8_u32) +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_int8x16, vreinterpretq_u8_s8) +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_int16x8, vreinterpretq_u8_s16) +OPENCV_HAL_IMPL_NEON_POPCOUNT(v_int32x4, vreinterpretq_u8_s32) + +inline int v_signmask(const v_uint8x16& a) +{ + int8x8_t m0 = vcreate_s8(CV_BIG_UINT(0x0706050403020100)); + uint8x16_t v0 = vshlq_u8(vshrq_n_u8(a.val, 7), vcombine_s8(m0, m0)); + uint64x2_t v1 = vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(v0))); + return (int)vgetq_lane_u64(v1, 0) + ((int)vgetq_lane_u64(v1, 1) << 8); +} +inline int v_signmask(const v_int8x16& a) +{ return v_signmask(v_reinterpret_as_u8(a)); } + +inline int v_signmask(const v_uint16x8& a) +{ + int16x4_t m0 = vcreate_s16(CV_BIG_UINT(0x0003000200010000)); + uint16x8_t v0 = vshlq_u16(vshrq_n_u16(a.val, 15), vcombine_s16(m0, m0)); + uint64x2_t v1 = vpaddlq_u32(vpaddlq_u16(v0)); + return (int)vgetq_lane_u64(v1, 0) + ((int)vgetq_lane_u64(v1, 1) << 4); +} +inline int v_signmask(const v_int16x8& a) +{ return v_signmask(v_reinterpret_as_u16(a)); } + +inline int v_signmask(const v_uint32x4& a) +{ + int32x2_t m0 = vcreate_s32(CV_BIG_UINT(0x0000000100000000)); + uint32x4_t v0 = vshlq_u32(vshrq_n_u32(a.val, 31), vcombine_s32(m0, m0)); + uint64x2_t v1 = vpaddlq_u32(v0); + return (int)vgetq_lane_u64(v1, 0) + ((int)vgetq_lane_u64(v1, 1) << 2); +} +inline int v_signmask(const v_int32x4& a) +{ return v_signmask(v_reinterpret_as_u32(a)); } +inline int v_signmask(const v_float32x4& a) +{ return v_signmask(v_reinterpret_as_u32(a)); } +#if CV_SIMD128_64F +inline int v_signmask(const v_uint64x2& a) +{ + int64x1_t m0 = vdup_n_s64(0); + uint64x2_t v0 = vshlq_u64(vshrq_n_u64(a.val, 63), vcombine_s64(m0, m0)); + return (int)vgetq_lane_u64(v0, 0) + ((int)vgetq_lane_u64(v0, 1) << 1); +} +inline int v_signmask(const v_float64x2& a) +{ return v_signmask(v_reinterpret_as_u64(a)); } +#endif + +#define OPENCV_HAL_IMPL_NEON_CHECK_ALLANY(_Tpvec, suffix, shift) \ +inline bool v_check_all(const v_##_Tpvec& a) \ +{ \ + _Tpvec##_t v0 = vshrq_n_##suffix(vmvnq_##suffix(a.val), shift); \ + uint64x2_t v1 = vreinterpretq_u64_##suffix(v0); \ + return (vgetq_lane_u64(v1, 0) | vgetq_lane_u64(v1, 1)) == 0; \ +} \ +inline bool v_check_any(const v_##_Tpvec& a) \ +{ \ + _Tpvec##_t v0 = vshrq_n_##suffix(a.val, shift); \ + uint64x2_t v1 = vreinterpretq_u64_##suffix(v0); \ + return (vgetq_lane_u64(v1, 0) | vgetq_lane_u64(v1, 1)) != 0; \ +} + +OPENCV_HAL_IMPL_NEON_CHECK_ALLANY(uint8x16, u8, 7) +OPENCV_HAL_IMPL_NEON_CHECK_ALLANY(uint16x8, u16, 15) +OPENCV_HAL_IMPL_NEON_CHECK_ALLANY(uint32x4, u32, 31) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_CHECK_ALLANY(uint64x2, u64, 63) +#endif + +inline bool v_check_all(const v_int8x16& a) +{ return v_check_all(v_reinterpret_as_u8(a)); } +inline bool v_check_all(const v_int16x8& a) +{ return v_check_all(v_reinterpret_as_u16(a)); } +inline bool v_check_all(const v_int32x4& a) +{ return v_check_all(v_reinterpret_as_u32(a)); } +inline bool v_check_all(const v_float32x4& a) +{ return v_check_all(v_reinterpret_as_u32(a)); } + +inline bool v_check_any(const v_int8x16& a) +{ return v_check_any(v_reinterpret_as_u8(a)); } +inline bool v_check_any(const v_int16x8& a) +{ return v_check_any(v_reinterpret_as_u16(a)); } +inline bool v_check_any(const v_int32x4& a) +{ return v_check_any(v_reinterpret_as_u32(a)); } +inline bool v_check_any(const v_float32x4& a) +{ return v_check_any(v_reinterpret_as_u32(a)); } + +#if CV_SIMD128_64F +inline bool v_check_all(const v_int64x2& a) +{ return v_check_all(v_reinterpret_as_u64(a)); } +inline bool v_check_all(const v_float64x2& a) +{ return v_check_all(v_reinterpret_as_u64(a)); } +inline bool v_check_any(const v_int64x2& a) +{ return v_check_any(v_reinterpret_as_u64(a)); } +inline bool v_check_any(const v_float64x2& a) +{ return v_check_any(v_reinterpret_as_u64(a)); } +#endif + +#define OPENCV_HAL_IMPL_NEON_SELECT(_Tpvec, suffix, usuffix) \ +inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(vbslq_##suffix(vreinterpretq_##usuffix##_##suffix(mask.val), a.val, b.val)); \ +} + +OPENCV_HAL_IMPL_NEON_SELECT(v_uint8x16, u8, u8) +OPENCV_HAL_IMPL_NEON_SELECT(v_int8x16, s8, u8) +OPENCV_HAL_IMPL_NEON_SELECT(v_uint16x8, u16, u16) +OPENCV_HAL_IMPL_NEON_SELECT(v_int16x8, s16, u16) +OPENCV_HAL_IMPL_NEON_SELECT(v_uint32x4, u32, u32) +OPENCV_HAL_IMPL_NEON_SELECT(v_int32x4, s32, u32) +OPENCV_HAL_IMPL_NEON_SELECT(v_float32x4, f32, u32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_SELECT(v_float64x2, f64, u64) +#endif + +#define OPENCV_HAL_IMPL_NEON_EXPAND(_Tpvec, _Tpwvec, _Tp, suffix) \ +inline void v_expand(const _Tpvec& a, _Tpwvec& b0, _Tpwvec& b1) \ +{ \ + b0.val = vmovl_##suffix(vget_low_##suffix(a.val)); \ + b1.val = vmovl_##suffix(vget_high_##suffix(a.val)); \ +} \ +inline _Tpwvec v_expand_low(const _Tpvec& a) \ +{ \ + return _Tpwvec(vmovl_##suffix(vget_low_##suffix(a.val))); \ +} \ +inline _Tpwvec v_expand_high(const _Tpvec& a) \ +{ \ + return _Tpwvec(vmovl_##suffix(vget_high_##suffix(a.val))); \ +} \ +inline _Tpwvec v_load_expand(const _Tp* ptr) \ +{ \ + return _Tpwvec(vmovl_##suffix(vld1_##suffix(ptr))); \ +} + +OPENCV_HAL_IMPL_NEON_EXPAND(v_uint8x16, v_uint16x8, uchar, u8) +OPENCV_HAL_IMPL_NEON_EXPAND(v_int8x16, v_int16x8, schar, s8) +OPENCV_HAL_IMPL_NEON_EXPAND(v_uint16x8, v_uint32x4, ushort, u16) +OPENCV_HAL_IMPL_NEON_EXPAND(v_int16x8, v_int32x4, short, s16) +OPENCV_HAL_IMPL_NEON_EXPAND(v_uint32x4, v_uint64x2, uint, u32) +OPENCV_HAL_IMPL_NEON_EXPAND(v_int32x4, v_int64x2, int, s32) + +inline v_uint32x4 v_load_expand_q(const uchar* ptr) +{ + typedef unsigned int CV_DECL_ALIGNED(1) unaligned_uint; + uint8x8_t v0 = vcreate_u8(*(unaligned_uint*)ptr); + uint16x4_t v1 = vget_low_u16(vmovl_u8(v0)); + return v_uint32x4(vmovl_u16(v1)); +} + +inline v_int32x4 v_load_expand_q(const schar* ptr) +{ + typedef unsigned int CV_DECL_ALIGNED(1) unaligned_uint; + int8x8_t v0 = vcreate_s8(*(unaligned_uint*)ptr); + int16x4_t v1 = vget_low_s16(vmovl_s8(v0)); + return v_int32x4(vmovl_s16(v1)); +} + +#if defined(__aarch64__) +#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \ +inline void v_zip(const v_##_Tpvec& a0, const v_##_Tpvec& a1, v_##_Tpvec& b0, v_##_Tpvec& b1) \ +{ \ + b0.val = vzip1q_##suffix(a0.val, a1.val); \ + b1.val = vzip2q_##suffix(a0.val, a1.val); \ +} \ +inline v_##_Tpvec v_combine_low(const v_##_Tpvec& a, const v_##_Tpvec& b) \ +{ \ + return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val))); \ +} \ +inline v_##_Tpvec v_combine_high(const v_##_Tpvec& a, const v_##_Tpvec& b) \ +{ \ + return v_##_Tpvec(vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val))); \ +} \ +inline void v_recombine(const v_##_Tpvec& a, const v_##_Tpvec& b, v_##_Tpvec& c, v_##_Tpvec& d) \ +{ \ + c.val = vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val)); \ + d.val = vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val)); \ +} +#else +#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \ +inline void v_zip(const v_##_Tpvec& a0, const v_##_Tpvec& a1, v_##_Tpvec& b0, v_##_Tpvec& b1) \ +{ \ + _Tpvec##x2_t p = vzipq_##suffix(a0.val, a1.val); \ + b0.val = p.val[0]; \ + b1.val = p.val[1]; \ +} \ +inline v_##_Tpvec v_combine_low(const v_##_Tpvec& a, const v_##_Tpvec& b) \ +{ \ + return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val))); \ +} \ +inline v_##_Tpvec v_combine_high(const v_##_Tpvec& a, const v_##_Tpvec& b) \ +{ \ + return v_##_Tpvec(vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val))); \ +} \ +inline void v_recombine(const v_##_Tpvec& a, const v_##_Tpvec& b, v_##_Tpvec& c, v_##_Tpvec& d) \ +{ \ + c.val = vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val)); \ + d.val = vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val)); \ +} +#endif + +OPENCV_HAL_IMPL_NEON_UNPACKS(uint8x16, u8) +OPENCV_HAL_IMPL_NEON_UNPACKS(int8x16, s8) +OPENCV_HAL_IMPL_NEON_UNPACKS(uint16x8, u16) +OPENCV_HAL_IMPL_NEON_UNPACKS(int16x8, s16) +OPENCV_HAL_IMPL_NEON_UNPACKS(uint32x4, u32) +OPENCV_HAL_IMPL_NEON_UNPACKS(int32x4, s32) +OPENCV_HAL_IMPL_NEON_UNPACKS(float32x4, f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_UNPACKS(float64x2, f64) +#endif + +#define OPENCV_HAL_IMPL_NEON_EXTRACT(_Tpvec, suffix) \ +template \ +inline v_##_Tpvec v_extract(const v_##_Tpvec& a, const v_##_Tpvec& b) \ +{ \ + return v_##_Tpvec(vextq_##suffix(a.val, b.val, s)); \ +} + +OPENCV_HAL_IMPL_NEON_EXTRACT(uint8x16, u8) +OPENCV_HAL_IMPL_NEON_EXTRACT(int8x16, s8) +OPENCV_HAL_IMPL_NEON_EXTRACT(uint16x8, u16) +OPENCV_HAL_IMPL_NEON_EXTRACT(int16x8, s16) +OPENCV_HAL_IMPL_NEON_EXTRACT(uint32x4, u32) +OPENCV_HAL_IMPL_NEON_EXTRACT(int32x4, s32) +OPENCV_HAL_IMPL_NEON_EXTRACT(uint64x2, u64) +OPENCV_HAL_IMPL_NEON_EXTRACT(int64x2, s64) +OPENCV_HAL_IMPL_NEON_EXTRACT(float32x4, f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_EXTRACT(float64x2, f64) +#endif + +#if CV_SIMD128_64F +inline v_int32x4 v_round(const v_float32x4& a) +{ + float32x4_t a_ = a.val; + int32x4_t result; + __asm__ ("fcvtns %0.4s, %1.4s" + : "=w"(result) + : "w"(a_) + : /* No clobbers */); + return v_int32x4(result); +} +#else +inline v_int32x4 v_round(const v_float32x4& a) +{ + static const int32x4_t v_sign = vdupq_n_s32(1 << 31), + v_05 = vreinterpretq_s32_f32(vdupq_n_f32(0.5f)); + + int32x4_t v_addition = vorrq_s32(v_05, vandq_s32(v_sign, vreinterpretq_s32_f32(a.val))); + return v_int32x4(vcvtq_s32_f32(vaddq_f32(a.val, vreinterpretq_f32_s32(v_addition)))); +} +#endif +inline v_int32x4 v_floor(const v_float32x4& a) +{ + int32x4_t a1 = vcvtq_s32_f32(a.val); + uint32x4_t mask = vcgtq_f32(vcvtq_f32_s32(a1), a.val); + return v_int32x4(vaddq_s32(a1, vreinterpretq_s32_u32(mask))); +} + +inline v_int32x4 v_ceil(const v_float32x4& a) +{ + int32x4_t a1 = vcvtq_s32_f32(a.val); + uint32x4_t mask = vcgtq_f32(a.val, vcvtq_f32_s32(a1)); + return v_int32x4(vsubq_s32(a1, vreinterpretq_s32_u32(mask))); +} + +inline v_int32x4 v_trunc(const v_float32x4& a) +{ return v_int32x4(vcvtq_s32_f32(a.val)); } + +#if CV_SIMD128_64F +inline v_int32x4 v_round(const v_float64x2& a) +{ + static const int32x2_t zero = vdup_n_s32(0); + return v_int32x4(vcombine_s32(vmovn_s64(vcvtaq_s64_f64(a.val)), zero)); +} + +inline v_int32x4 v_round(const v_float64x2& a, const v_float64x2& b) +{ + return v_int32x4(vcombine_s32(vmovn_s64(vcvtaq_s64_f64(a.val)), vmovn_s64(vcvtaq_s64_f64(b.val)))); +} + +inline v_int32x4 v_floor(const v_float64x2& a) +{ + static const int32x2_t zero = vdup_n_s32(0); + int64x2_t a1 = vcvtq_s64_f64(a.val); + uint64x2_t mask = vcgtq_f64(vcvtq_f64_s64(a1), a.val); + a1 = vaddq_s64(a1, vreinterpretq_s64_u64(mask)); + return v_int32x4(vcombine_s32(vmovn_s64(a1), zero)); +} + +inline v_int32x4 v_ceil(const v_float64x2& a) +{ + static const int32x2_t zero = vdup_n_s32(0); + int64x2_t a1 = vcvtq_s64_f64(a.val); + uint64x2_t mask = vcgtq_f64(a.val, vcvtq_f64_s64(a1)); + a1 = vsubq_s64(a1, vreinterpretq_s64_u64(mask)); + return v_int32x4(vcombine_s32(vmovn_s64(a1), zero)); +} + +inline v_int32x4 v_trunc(const v_float64x2& a) +{ + static const int32x2_t zero = vdup_n_s32(0); + return v_int32x4(vcombine_s32(vmovn_s64(vcvtaq_s64_f64(a.val)), zero)); +} +#endif + +#define OPENCV_HAL_IMPL_NEON_TRANSPOSE4x4(_Tpvec, suffix) \ +inline void v_transpose4x4(const v_##_Tpvec& a0, const v_##_Tpvec& a1, \ + const v_##_Tpvec& a2, const v_##_Tpvec& a3, \ + v_##_Tpvec& b0, v_##_Tpvec& b1, \ + v_##_Tpvec& b2, v_##_Tpvec& b3) \ +{ \ + /* m00 m01 m02 m03 */ \ + /* m10 m11 m12 m13 */ \ + /* m20 m21 m22 m23 */ \ + /* m30 m31 m32 m33 */ \ + _Tpvec##x2_t t0 = vtrnq_##suffix(a0.val, a1.val); \ + _Tpvec##x2_t t1 = vtrnq_##suffix(a2.val, a3.val); \ + /* m00 m10 m02 m12 */ \ + /* m01 m11 m03 m13 */ \ + /* m20 m30 m22 m32 */ \ + /* m21 m31 m23 m33 */ \ + b0.val = vcombine_##suffix(vget_low_##suffix(t0.val[0]), vget_low_##suffix(t1.val[0])); \ + b1.val = vcombine_##suffix(vget_low_##suffix(t0.val[1]), vget_low_##suffix(t1.val[1])); \ + b2.val = vcombine_##suffix(vget_high_##suffix(t0.val[0]), vget_high_##suffix(t1.val[0])); \ + b3.val = vcombine_##suffix(vget_high_##suffix(t0.val[1]), vget_high_##suffix(t1.val[1])); \ +} + +OPENCV_HAL_IMPL_NEON_TRANSPOSE4x4(uint32x4, u32) +OPENCV_HAL_IMPL_NEON_TRANSPOSE4x4(int32x4, s32) +OPENCV_HAL_IMPL_NEON_TRANSPOSE4x4(float32x4, f32) + +#define OPENCV_HAL_IMPL_NEON_INTERLEAVED(_Tpvec, _Tp, suffix) \ +inline void v_load_deinterleave(const _Tp* ptr, v_##_Tpvec& a, v_##_Tpvec& b) \ +{ \ + _Tpvec##x2_t v = vld2q_##suffix(ptr); \ + a.val = v.val[0]; \ + b.val = v.val[1]; \ +} \ +inline void v_load_deinterleave(const _Tp* ptr, v_##_Tpvec& a, v_##_Tpvec& b, v_##_Tpvec& c) \ +{ \ + _Tpvec##x3_t v = vld3q_##suffix(ptr); \ + a.val = v.val[0]; \ + b.val = v.val[1]; \ + c.val = v.val[2]; \ +} \ +inline void v_load_deinterleave(const _Tp* ptr, v_##_Tpvec& a, v_##_Tpvec& b, \ + v_##_Tpvec& c, v_##_Tpvec& d) \ +{ \ + _Tpvec##x4_t v = vld4q_##suffix(ptr); \ + a.val = v.val[0]; \ + b.val = v.val[1]; \ + c.val = v.val[2]; \ + d.val = v.val[3]; \ +} \ +inline void v_store_interleave( _Tp* ptr, const v_##_Tpvec& a, const v_##_Tpvec& b, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ \ + _Tpvec##x2_t v; \ + v.val[0] = a.val; \ + v.val[1] = b.val; \ + vst2q_##suffix(ptr, v); \ +} \ +inline void v_store_interleave( _Tp* ptr, const v_##_Tpvec& a, const v_##_Tpvec& b, \ + const v_##_Tpvec& c, hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ \ + _Tpvec##x3_t v; \ + v.val[0] = a.val; \ + v.val[1] = b.val; \ + v.val[2] = c.val; \ + vst3q_##suffix(ptr, v); \ +} \ +inline void v_store_interleave( _Tp* ptr, const v_##_Tpvec& a, const v_##_Tpvec& b, \ + const v_##_Tpvec& c, const v_##_Tpvec& d, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec##x4_t v; \ + v.val[0] = a.val; \ + v.val[1] = b.val; \ + v.val[2] = c.val; \ + v.val[3] = d.val; \ + vst4q_##suffix(ptr, v); \ +} + +#define OPENCV_HAL_IMPL_NEON_INTERLEAVED_INT64(tp, suffix) \ +inline void v_load_deinterleave( const tp* ptr, v_##tp##x2& a, v_##tp##x2& b ) \ +{ \ + tp##x1_t a0 = vld1_##suffix(ptr); \ + tp##x1_t b0 = vld1_##suffix(ptr + 1); \ + tp##x1_t a1 = vld1_##suffix(ptr + 2); \ + tp##x1_t b1 = vld1_##suffix(ptr + 3); \ + a = v_##tp##x2(vcombine_##suffix(a0, a1)); \ + b = v_##tp##x2(vcombine_##suffix(b0, b1)); \ +} \ + \ +inline void v_load_deinterleave( const tp* ptr, v_##tp##x2& a, \ + v_##tp##x2& b, v_##tp##x2& c ) \ +{ \ + tp##x1_t a0 = vld1_##suffix(ptr); \ + tp##x1_t b0 = vld1_##suffix(ptr + 1); \ + tp##x1_t c0 = vld1_##suffix(ptr + 2); \ + tp##x1_t a1 = vld1_##suffix(ptr + 3); \ + tp##x1_t b1 = vld1_##suffix(ptr + 4); \ + tp##x1_t c1 = vld1_##suffix(ptr + 5); \ + a = v_##tp##x2(vcombine_##suffix(a0, a1)); \ + b = v_##tp##x2(vcombine_##suffix(b0, b1)); \ + c = v_##tp##x2(vcombine_##suffix(c0, c1)); \ +} \ + \ +inline void v_load_deinterleave( const tp* ptr, v_##tp##x2& a, v_##tp##x2& b, \ + v_##tp##x2& c, v_##tp##x2& d ) \ +{ \ + tp##x1_t a0 = vld1_##suffix(ptr); \ + tp##x1_t b0 = vld1_##suffix(ptr + 1); \ + tp##x1_t c0 = vld1_##suffix(ptr + 2); \ + tp##x1_t d0 = vld1_##suffix(ptr + 3); \ + tp##x1_t a1 = vld1_##suffix(ptr + 4); \ + tp##x1_t b1 = vld1_##suffix(ptr + 5); \ + tp##x1_t c1 = vld1_##suffix(ptr + 6); \ + tp##x1_t d1 = vld1_##suffix(ptr + 7); \ + a = v_##tp##x2(vcombine_##suffix(a0, a1)); \ + b = v_##tp##x2(vcombine_##suffix(b0, b1)); \ + c = v_##tp##x2(vcombine_##suffix(c0, c1)); \ + d = v_##tp##x2(vcombine_##suffix(d0, d1)); \ +} \ + \ +inline void v_store_interleave( tp* ptr, const v_##tp##x2& a, const v_##tp##x2& b, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ \ + vst1_##suffix(ptr, vget_low_##suffix(a.val)); \ + vst1_##suffix(ptr + 1, vget_low_##suffix(b.val)); \ + vst1_##suffix(ptr + 2, vget_high_##suffix(a.val)); \ + vst1_##suffix(ptr + 3, vget_high_##suffix(b.val)); \ +} \ + \ +inline void v_store_interleave( tp* ptr, const v_##tp##x2& a, \ + const v_##tp##x2& b, const v_##tp##x2& c, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ \ + vst1_##suffix(ptr, vget_low_##suffix(a.val)); \ + vst1_##suffix(ptr + 1, vget_low_##suffix(b.val)); \ + vst1_##suffix(ptr + 2, vget_low_##suffix(c.val)); \ + vst1_##suffix(ptr + 3, vget_high_##suffix(a.val)); \ + vst1_##suffix(ptr + 4, vget_high_##suffix(b.val)); \ + vst1_##suffix(ptr + 5, vget_high_##suffix(c.val)); \ +} \ + \ +inline void v_store_interleave( tp* ptr, const v_##tp##x2& a, const v_##tp##x2& b, \ + const v_##tp##x2& c, const v_##tp##x2& d, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ \ + vst1_##suffix(ptr, vget_low_##suffix(a.val)); \ + vst1_##suffix(ptr + 1, vget_low_##suffix(b.val)); \ + vst1_##suffix(ptr + 2, vget_low_##suffix(c.val)); \ + vst1_##suffix(ptr + 3, vget_low_##suffix(d.val)); \ + vst1_##suffix(ptr + 4, vget_high_##suffix(a.val)); \ + vst1_##suffix(ptr + 5, vget_high_##suffix(b.val)); \ + vst1_##suffix(ptr + 6, vget_high_##suffix(c.val)); \ + vst1_##suffix(ptr + 7, vget_high_##suffix(d.val)); \ +} + +OPENCV_HAL_IMPL_NEON_INTERLEAVED(uint8x16, uchar, u8) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(int8x16, schar, s8) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(uint16x8, ushort, u16) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(int16x8, short, s16) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(int32x4, int, s32) +OPENCV_HAL_IMPL_NEON_INTERLEAVED(float32x4, float, f32) +#if CV_SIMD128_64F +OPENCV_HAL_IMPL_NEON_INTERLEAVED(float64x2, double, f64) +#endif + +OPENCV_HAL_IMPL_NEON_INTERLEAVED_INT64(int64, s64) +OPENCV_HAL_IMPL_NEON_INTERLEAVED_INT64(uint64, u64) + +inline v_float32x4 v_cvt_f32(const v_int32x4& a) +{ + return v_float32x4(vcvtq_f32_s32(a.val)); +} + +#if CV_SIMD128_64F +inline v_float32x4 v_cvt_f32(const v_float64x2& a) +{ + float32x2_t zero = vdup_n_f32(0.0f); + return v_float32x4(vcombine_f32(vcvt_f32_f64(a.val), zero)); +} + +inline v_float32x4 v_cvt_f32(const v_float64x2& a, const v_float64x2& b) +{ + return v_float32x4(vcombine_f32(vcvt_f32_f64(a.val), vcvt_f32_f64(b.val))); +} + +inline v_float64x2 v_cvt_f64(const v_int32x4& a) +{ + return v_float64x2(vcvt_f64_f32(vcvt_f32_s32(vget_low_s32(a.val)))); +} + +inline v_float64x2 v_cvt_f64_high(const v_int32x4& a) +{ + return v_float64x2(vcvt_f64_f32(vcvt_f32_s32(vget_high_s32(a.val)))); +} + +inline v_float64x2 v_cvt_f64(const v_float32x4& a) +{ + return v_float64x2(vcvt_f64_f32(vget_low_f32(a.val))); +} + +inline v_float64x2 v_cvt_f64_high(const v_float32x4& a) +{ + return v_float64x2(vcvt_f64_f32(vget_high_f32(a.val))); +} +#endif + +////////////// Lookup table access //////////////////// + +inline v_int8x16 v_lut(const schar* tab, const int* idx) +{ + schar CV_DECL_ALIGNED(32) elems[16] = + { + tab[idx[ 0]], + tab[idx[ 1]], + tab[idx[ 2]], + tab[idx[ 3]], + tab[idx[ 4]], + tab[idx[ 5]], + tab[idx[ 6]], + tab[idx[ 7]], + tab[idx[ 8]], + tab[idx[ 9]], + tab[idx[10]], + tab[idx[11]], + tab[idx[12]], + tab[idx[13]], + tab[idx[14]], + tab[idx[15]] + }; + return v_int8x16(vld1q_s8(elems)); +} +inline v_int8x16 v_lut_pairs(const schar* tab, const int* idx) +{ + schar CV_DECL_ALIGNED(32) elems[16] = + { + tab[idx[0]], + tab[idx[0] + 1], + tab[idx[1]], + tab[idx[1] + 1], + tab[idx[2]], + tab[idx[2] + 1], + tab[idx[3]], + tab[idx[3] + 1], + tab[idx[4]], + tab[idx[4] + 1], + tab[idx[5]], + tab[idx[5] + 1], + tab[idx[6]], + tab[idx[6] + 1], + tab[idx[7]], + tab[idx[7] + 1] + }; + return v_int8x16(vld1q_s8(elems)); +} +inline v_int8x16 v_lut_quads(const schar* tab, const int* idx) +{ + schar CV_DECL_ALIGNED(32) elems[16] = + { + tab[idx[0]], + tab[idx[0] + 1], + tab[idx[0] + 2], + tab[idx[0] + 3], + tab[idx[1]], + tab[idx[1] + 1], + tab[idx[1] + 2], + tab[idx[1] + 3], + tab[idx[2]], + tab[idx[2] + 1], + tab[idx[2] + 2], + tab[idx[2] + 3], + tab[idx[3]], + tab[idx[3] + 1], + tab[idx[3] + 2], + tab[idx[3] + 3] + }; + return v_int8x16(vld1q_s8(elems)); +} +inline v_uint8x16 v_lut(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut((schar*)tab, idx)); } +inline v_uint8x16 v_lut_pairs(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_pairs((schar*)tab, idx)); } +inline v_uint8x16 v_lut_quads(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_quads((schar*)tab, idx)); } + +inline v_int16x8 v_lut(const short* tab, const int* idx) +{ + short CV_DECL_ALIGNED(32) elems[8] = + { + tab[idx[0]], + tab[idx[1]], + tab[idx[2]], + tab[idx[3]], + tab[idx[4]], + tab[idx[5]], + tab[idx[6]], + tab[idx[7]] + }; + return v_int16x8(vld1q_s16(elems)); +} +inline v_int16x8 v_lut_pairs(const short* tab, const int* idx) +{ + short CV_DECL_ALIGNED(32) elems[8] = + { + tab[idx[0]], + tab[idx[0] + 1], + tab[idx[1]], + tab[idx[1] + 1], + tab[idx[2]], + tab[idx[2] + 1], + tab[idx[3]], + tab[idx[3] + 1] + }; + return v_int16x8(vld1q_s16(elems)); +} +inline v_int16x8 v_lut_quads(const short* tab, const int* idx) +{ + return v_int16x8(vcombine_s16(vld1_s16(tab + idx[0]), vld1_s16(tab + idx[1]))); +} +inline v_uint16x8 v_lut(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut((short*)tab, idx)); } +inline v_uint16x8 v_lut_pairs(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_pairs((short*)tab, idx)); } +inline v_uint16x8 v_lut_quads(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_quads((short*)tab, idx)); } + +inline v_int32x4 v_lut(const int* tab, const int* idx) +{ + int CV_DECL_ALIGNED(32) elems[4] = + { + tab[idx[0]], + tab[idx[1]], + tab[idx[2]], + tab[idx[3]] + }; + return v_int32x4(vld1q_s32(elems)); +} +inline v_int32x4 v_lut_pairs(const int* tab, const int* idx) +{ + return v_int32x4(vcombine_s32(vld1_s32(tab + idx[0]), vld1_s32(tab + idx[1]))); +} +inline v_int32x4 v_lut_quads(const int* tab, const int* idx) +{ + return v_int32x4(vld1q_s32(tab + idx[0])); +} +inline v_uint32x4 v_lut(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut((int*)tab, idx)); } +inline v_uint32x4 v_lut_pairs(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_pairs((int*)tab, idx)); } +inline v_uint32x4 v_lut_quads(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_quads((int*)tab, idx)); } + +inline v_int64x2 v_lut(const int64_t* tab, const int* idx) +{ + return v_int64x2(vcombine_s64(vcreate_s64(tab[idx[0]]), vcreate_s64(tab[idx[1]]))); +} +inline v_int64x2 v_lut_pairs(const int64_t* tab, const int* idx) +{ + return v_int64x2(vld1q_s64(tab + idx[0])); +} +inline v_uint64x2 v_lut(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut((const int64_t *)tab, idx)); } +inline v_uint64x2 v_lut_pairs(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut_pairs((const int64_t *)tab, idx)); } + +inline v_float32x4 v_lut(const float* tab, const int* idx) +{ + float CV_DECL_ALIGNED(32) elems[4] = + { + tab[idx[0]], + tab[idx[1]], + tab[idx[2]], + tab[idx[3]] + }; + return v_float32x4(vld1q_f32(elems)); +} +inline v_float32x4 v_lut_pairs(const float* tab, const int* idx) +{ + uint64 CV_DECL_ALIGNED(32) elems[2] = + { + *(uint64*)(tab + idx[0]), + *(uint64*)(tab + idx[1]) + }; + return v_float32x4(vreinterpretq_f32_u64(vld1q_u64(elems))); +} +inline v_float32x4 v_lut_quads(const float* tab, const int* idx) +{ + return v_float32x4(vld1q_f32(tab + idx[0])); +} + +inline v_int32x4 v_lut(const int* tab, const v_int32x4& idxvec) +{ + int CV_DECL_ALIGNED(32) elems[4] = + { + tab[vgetq_lane_s32(idxvec.val, 0)], + tab[vgetq_lane_s32(idxvec.val, 1)], + tab[vgetq_lane_s32(idxvec.val, 2)], + tab[vgetq_lane_s32(idxvec.val, 3)] + }; + return v_int32x4(vld1q_s32(elems)); +} + +inline v_uint32x4 v_lut(const unsigned* tab, const v_int32x4& idxvec) +{ + unsigned CV_DECL_ALIGNED(32) elems[4] = + { + tab[vgetq_lane_s32(idxvec.val, 0)], + tab[vgetq_lane_s32(idxvec.val, 1)], + tab[vgetq_lane_s32(idxvec.val, 2)], + tab[vgetq_lane_s32(idxvec.val, 3)] + }; + return v_uint32x4(vld1q_u32(elems)); +} + +inline v_float32x4 v_lut(const float* tab, const v_int32x4& idxvec) +{ + float CV_DECL_ALIGNED(32) elems[4] = + { + tab[vgetq_lane_s32(idxvec.val, 0)], + tab[vgetq_lane_s32(idxvec.val, 1)], + tab[vgetq_lane_s32(idxvec.val, 2)], + tab[vgetq_lane_s32(idxvec.val, 3)] + }; + return v_float32x4(vld1q_f32(elems)); +} + +inline void v_lut_deinterleave(const float* tab, const v_int32x4& idxvec, v_float32x4& x, v_float32x4& y) +{ + /*int CV_DECL_ALIGNED(32) idx[4]; + v_store(idx, idxvec); + + float32x4_t xy02 = vcombine_f32(vld1_f32(tab + idx[0]), vld1_f32(tab + idx[2])); + float32x4_t xy13 = vcombine_f32(vld1_f32(tab + idx[1]), vld1_f32(tab + idx[3])); + + float32x4x2_t xxyy = vuzpq_f32(xy02, xy13); + x = v_float32x4(xxyy.val[0]); + y = v_float32x4(xxyy.val[1]);*/ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_aligned(idx, idxvec); + + x = v_float32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); + y = v_float32x4(tab[idx[0]+1], tab[idx[1]+1], tab[idx[2]+1], tab[idx[3]+1]); +} + +inline v_int8x16 v_interleave_pairs(const v_int8x16& vec) +{ + return v_int8x16(vcombine_s8(vtbl1_s8(vget_low_s8(vec.val), vcreate_s8(0x0705060403010200)), vtbl1_s8(vget_high_s8(vec.val), vcreate_s8(0x0705060403010200)))); +} +inline v_uint8x16 v_interleave_pairs(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_interleave_pairs(v_reinterpret_as_s8(vec))); } +inline v_int8x16 v_interleave_quads(const v_int8x16& vec) +{ + return v_int8x16(vcombine_s8(vtbl1_s8(vget_low_s8(vec.val), vcreate_s8(0x0703060205010400)), vtbl1_s8(vget_high_s8(vec.val), vcreate_s8(0x0703060205010400)))); +} +inline v_uint8x16 v_interleave_quads(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_interleave_quads(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_interleave_pairs(const v_int16x8& vec) +{ + return v_int16x8(vreinterpretq_s16_s8(vcombine_s8(vtbl1_s8(vget_low_s8(vreinterpretq_s8_s16(vec.val)), vcreate_s8(0x0706030205040100)), vtbl1_s8(vget_high_s8(vreinterpretq_s8_s16(vec.val)), vcreate_s8(0x0706030205040100))))); +} +inline v_uint16x8 v_interleave_pairs(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_interleave_pairs(v_reinterpret_as_s16(vec))); } +inline v_int16x8 v_interleave_quads(const v_int16x8& vec) +{ + int16x4x2_t res = vzip_s16(vget_low_s16(vec.val), vget_high_s16(vec.val)); + return v_int16x8(vcombine_s16(res.val[0], res.val[1])); +} +inline v_uint16x8 v_interleave_quads(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_interleave_quads(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_interleave_pairs(const v_int32x4& vec) +{ + int32x2x2_t res = vzip_s32(vget_low_s32(vec.val), vget_high_s32(vec.val)); + return v_int32x4(vcombine_s32(res.val[0], res.val[1])); +} +inline v_uint32x4 v_interleave_pairs(const v_uint32x4& vec) { return v_reinterpret_as_u32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } +inline v_float32x4 v_interleave_pairs(const v_float32x4& vec) { return v_reinterpret_as_f32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } + +inline v_int8x16 v_pack_triplets(const v_int8x16& vec) +{ + return v_int8x16(vextq_s8(vcombine_s8(vtbl1_s8(vget_low_s8(vec.val), vcreate_s8(0x0605040201000000)), vtbl1_s8(vget_high_s8(vec.val), vcreate_s8(0x0807060504020100))), vdupq_n_s8(0), 2)); +} +inline v_uint8x16 v_pack_triplets(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_pack_triplets(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_pack_triplets(const v_int16x8& vec) +{ + return v_int16x8(vreinterpretq_s16_s8(vextq_s8(vcombine_s8(vtbl1_s8(vget_low_s8(vreinterpretq_s8_s16(vec.val)), vcreate_s8(0x0504030201000000)), vget_high_s8(vreinterpretq_s8_s16(vec.val))), vdupq_n_s8(0), 2))); +} +inline v_uint16x8 v_pack_triplets(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_pack_triplets(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_pack_triplets(const v_int32x4& vec) { return vec; } +inline v_uint32x4 v_pack_triplets(const v_uint32x4& vec) { return vec; } +inline v_float32x4 v_pack_triplets(const v_float32x4& vec) { return vec; } + +#if CV_SIMD128_64F +inline v_float64x2 v_lut(const double* tab, const int* idx) +{ + double CV_DECL_ALIGNED(32) elems[2] = + { + tab[idx[0]], + tab[idx[1]] + }; + return v_float64x2(vld1q_f64(elems)); +} + +inline v_float64x2 v_lut_pairs(const double* tab, const int* idx) +{ + return v_float64x2(vld1q_f64(tab + idx[0])); +} + +inline v_float64x2 v_lut(const double* tab, const v_int32x4& idxvec) +{ + double CV_DECL_ALIGNED(32) elems[2] = + { + tab[vgetq_lane_s32(idxvec.val, 0)], + tab[vgetq_lane_s32(idxvec.val, 1)], + }; + return v_float64x2(vld1q_f64(elems)); +} + +inline void v_lut_deinterleave(const double* tab, const v_int32x4& idxvec, v_float64x2& x, v_float64x2& y) +{ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_aligned(idx, idxvec); + + x = v_float64x2(tab[idx[0]], tab[idx[1]]); + y = v_float64x2(tab[idx[0]+1], tab[idx[1]+1]); +} +#endif + +////// FP16 support /////// +#if CV_FP16 +inline v_float32x4 v_load_expand(const float16_t* ptr) +{ + float16x4_t v = + #ifndef vld1_f16 // APPLE compiler defines vld1_f16 as macro + (float16x4_t)vld1_s16((const short*)ptr); + #else + vld1_f16((const __fp16*)ptr); + #endif + return v_float32x4(vcvt_f32_f16(v)); +} + +inline void v_pack_store(float16_t* ptr, const v_float32x4& v) +{ + float16x4_t hv = vcvt_f16_f32(v.val); + + #ifndef vst1_f16 // APPLE compiler defines vst1_f16 as macro + vst1_s16((short*)ptr, (int16x4_t)hv); + #else + vst1_f16((__fp16*)ptr, hv); + #endif +} +#else +inline v_float32x4 v_load_expand(const float16_t* ptr) +{ + const int N = 4; + float buf[N]; + for( int i = 0; i < N; i++ ) buf[i] = (float)ptr[i]; + return v_load(buf); +} + +inline void v_pack_store(float16_t* ptr, const v_float32x4& v) +{ + const int N = 4; + float buf[N]; + v_store(buf, v); + for( int i = 0; i < N; i++ ) ptr[i] = float16_t(buf[i]); +} +#endif + +inline void v_cleanup() {} + +//! @name Check SIMD support +//! @{ +//! @brief Check CPU capability of SIMD operation +static inline bool hasSIMD128() +{ + return (CV_CPU_HAS_SUPPORT_NEON) ? true : false; +} + +//! @} + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse.hpp new file mode 100644 index 0000000..a5adad0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse.hpp @@ -0,0 +1,3016 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_SSE_HPP +#define OPENCV_HAL_SSE_HPP + +#include +#include "opencv2/core/utility.hpp" + +#define CV_SIMD128 1 +#define CV_SIMD128_64F 1 +#define CV_SIMD128_FP16 0 // no native operations with FP16 type. + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +///////// Types //////////// + +struct v_uint8x16 +{ + typedef uchar lane_type; + typedef __m128i vector_type; + enum { nlanes = 16 }; + + v_uint8x16() : val(_mm_setzero_si128()) {} + explicit v_uint8x16(__m128i v) : val(v) {} + v_uint8x16(uchar v0, uchar v1, uchar v2, uchar v3, uchar v4, uchar v5, uchar v6, uchar v7, + uchar v8, uchar v9, uchar v10, uchar v11, uchar v12, uchar v13, uchar v14, uchar v15) + { + val = _mm_setr_epi8((char)v0, (char)v1, (char)v2, (char)v3, + (char)v4, (char)v5, (char)v6, (char)v7, + (char)v8, (char)v9, (char)v10, (char)v11, + (char)v12, (char)v13, (char)v14, (char)v15); + } + uchar get0() const + { + return (uchar)_mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_int8x16 +{ + typedef schar lane_type; + typedef __m128i vector_type; + enum { nlanes = 16 }; + + v_int8x16() : val(_mm_setzero_si128()) {} + explicit v_int8x16(__m128i v) : val(v) {} + v_int8x16(schar v0, schar v1, schar v2, schar v3, schar v4, schar v5, schar v6, schar v7, + schar v8, schar v9, schar v10, schar v11, schar v12, schar v13, schar v14, schar v15) + { + val = _mm_setr_epi8((char)v0, (char)v1, (char)v2, (char)v3, + (char)v4, (char)v5, (char)v6, (char)v7, + (char)v8, (char)v9, (char)v10, (char)v11, + (char)v12, (char)v13, (char)v14, (char)v15); + } + schar get0() const + { + return (schar)_mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_uint16x8 +{ + typedef ushort lane_type; + typedef __m128i vector_type; + enum { nlanes = 8 }; + + v_uint16x8() : val(_mm_setzero_si128()) {} + explicit v_uint16x8(__m128i v) : val(v) {} + v_uint16x8(ushort v0, ushort v1, ushort v2, ushort v3, ushort v4, ushort v5, ushort v6, ushort v7) + { + val = _mm_setr_epi16((short)v0, (short)v1, (short)v2, (short)v3, + (short)v4, (short)v5, (short)v6, (short)v7); + } + ushort get0() const + { + return (ushort)_mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_int16x8 +{ + typedef short lane_type; + typedef __m128i vector_type; + enum { nlanes = 8 }; + + v_int16x8() : val(_mm_setzero_si128()) {} + explicit v_int16x8(__m128i v) : val(v) {} + v_int16x8(short v0, short v1, short v2, short v3, short v4, short v5, short v6, short v7) + { + val = _mm_setr_epi16((short)v0, (short)v1, (short)v2, (short)v3, + (short)v4, (short)v5, (short)v6, (short)v7); + } + short get0() const + { + return (short)_mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_uint32x4 +{ + typedef unsigned lane_type; + typedef __m128i vector_type; + enum { nlanes = 4 }; + + v_uint32x4() : val(_mm_setzero_si128()) {} + explicit v_uint32x4(__m128i v) : val(v) {} + v_uint32x4(unsigned v0, unsigned v1, unsigned v2, unsigned v3) + { + val = _mm_setr_epi32((int)v0, (int)v1, (int)v2, (int)v3); + } + unsigned get0() const + { + return (unsigned)_mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_int32x4 +{ + typedef int lane_type; + typedef __m128i vector_type; + enum { nlanes = 4 }; + + v_int32x4() : val(_mm_setzero_si128()) {} + explicit v_int32x4(__m128i v) : val(v) {} + v_int32x4(int v0, int v1, int v2, int v3) + { + val = _mm_setr_epi32(v0, v1, v2, v3); + } + int get0() const + { + return _mm_cvtsi128_si32(val); + } + + __m128i val; +}; + +struct v_float32x4 +{ + typedef float lane_type; + typedef __m128 vector_type; + enum { nlanes = 4 }; + + v_float32x4() : val(_mm_setzero_ps()) {} + explicit v_float32x4(__m128 v) : val(v) {} + v_float32x4(float v0, float v1, float v2, float v3) + { + val = _mm_setr_ps(v0, v1, v2, v3); + } + float get0() const + { + return _mm_cvtss_f32(val); + } + + __m128 val; +}; + +struct v_uint64x2 +{ + typedef uint64 lane_type; + typedef __m128i vector_type; + enum { nlanes = 2 }; + + v_uint64x2() : val(_mm_setzero_si128()) {} + explicit v_uint64x2(__m128i v) : val(v) {} + v_uint64x2(uint64 v0, uint64 v1) + { + val = _mm_setr_epi32((int)v0, (int)(v0 >> 32), (int)v1, (int)(v1 >> 32)); + } + uint64 get0() const + { + int a = _mm_cvtsi128_si32(val); + int b = _mm_cvtsi128_si32(_mm_srli_epi64(val, 32)); + return (unsigned)a | ((uint64)(unsigned)b << 32); + } + + __m128i val; +}; + +struct v_int64x2 +{ + typedef int64 lane_type; + typedef __m128i vector_type; + enum { nlanes = 2 }; + + v_int64x2() : val(_mm_setzero_si128()) {} + explicit v_int64x2(__m128i v) : val(v) {} + v_int64x2(int64 v0, int64 v1) + { + val = _mm_setr_epi32((int)v0, (int)(v0 >> 32), (int)v1, (int)(v1 >> 32)); + } + int64 get0() const + { + int a = _mm_cvtsi128_si32(val); + int b = _mm_cvtsi128_si32(_mm_srli_epi64(val, 32)); + return (int64)((unsigned)a | ((uint64)(unsigned)b << 32)); + } + + __m128i val; +}; + +struct v_float64x2 +{ + typedef double lane_type; + typedef __m128d vector_type; + enum { nlanes = 2 }; + + v_float64x2() : val(_mm_setzero_pd()) {} + explicit v_float64x2(__m128d v) : val(v) {} + v_float64x2(double v0, double v1) + { + val = _mm_setr_pd(v0, v1); + } + double get0() const + { + return _mm_cvtsd_f64(val); + } + + __m128d val; +}; + +namespace hal_sse_internal +{ + template + to_sse_type v_sse_reinterpret_as(const from_sse_type& val); + +#define OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(to_sse_type, from_sse_type, sse_cast_intrin) \ + template<> inline \ + to_sse_type v_sse_reinterpret_as(const from_sse_type& a) \ + { return sse_cast_intrin(a); } + + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128i, __m128i, OPENCV_HAL_NOP) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128i, __m128, _mm_castps_si128) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128i, __m128d, _mm_castpd_si128) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128, __m128i, _mm_castsi128_ps) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128, __m128, OPENCV_HAL_NOP) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128, __m128d, _mm_castpd_ps) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128d, __m128i, _mm_castsi128_pd) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128d, __m128, _mm_castps_pd) + OPENCV_HAL_IMPL_SSE_REINTERPRET_RAW(__m128d, __m128d, OPENCV_HAL_NOP) +} + +#define OPENCV_HAL_IMPL_SSE_INITVEC(_Tpvec, _Tp, suffix, zsuffix, ssuffix, _Tps, cast) \ +inline _Tpvec v_setzero_##suffix() { return _Tpvec(_mm_setzero_##zsuffix()); } \ +inline _Tpvec v_setall_##suffix(_Tp v) { return _Tpvec(_mm_set1_##ssuffix((_Tps)v)); } \ +template inline _Tpvec v_reinterpret_as_##suffix(const _Tpvec0& a) \ +{ return _Tpvec(cast(a.val)); } + +OPENCV_HAL_IMPL_SSE_INITVEC(v_uint8x16, uchar, u8, si128, epi8, char, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_int8x16, schar, s8, si128, epi8, char, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_uint16x8, ushort, u16, si128, epi16, short, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_int16x8, short, s16, si128, epi16, short, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_uint32x4, unsigned, u32, si128, epi32, int, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_int32x4, int, s32, si128, epi32, int, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_INITVEC(v_float32x4, float, f32, ps, ps, float, _mm_castsi128_ps) +OPENCV_HAL_IMPL_SSE_INITVEC(v_float64x2, double, f64, pd, pd, double, _mm_castsi128_pd) + +inline v_uint64x2 v_setzero_u64() { return v_uint64x2(_mm_setzero_si128()); } +inline v_int64x2 v_setzero_s64() { return v_int64x2(_mm_setzero_si128()); } +inline v_uint64x2 v_setall_u64(uint64 val) { return v_uint64x2(val, val); } +inline v_int64x2 v_setall_s64(int64 val) { return v_int64x2(val, val); } + +template inline +v_uint64x2 v_reinterpret_as_u64(const _Tpvec& a) { return v_uint64x2(a.val); } +template inline +v_int64x2 v_reinterpret_as_s64(const _Tpvec& a) { return v_int64x2(a.val); } +inline v_float32x4 v_reinterpret_as_f32(const v_uint64x2& a) +{ return v_float32x4(_mm_castsi128_ps(a.val)); } +inline v_float32x4 v_reinterpret_as_f32(const v_int64x2& a) +{ return v_float32x4(_mm_castsi128_ps(a.val)); } +inline v_float64x2 v_reinterpret_as_f64(const v_uint64x2& a) +{ return v_float64x2(_mm_castsi128_pd(a.val)); } +inline v_float64x2 v_reinterpret_as_f64(const v_int64x2& a) +{ return v_float64x2(_mm_castsi128_pd(a.val)); } + +#define OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(_Tpvec, suffix) \ +inline _Tpvec v_reinterpret_as_##suffix(const v_float32x4& a) \ +{ return _Tpvec(_mm_castps_si128(a.val)); } \ +inline _Tpvec v_reinterpret_as_##suffix(const v_float64x2& a) \ +{ return _Tpvec(_mm_castpd_si128(a.val)); } + +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_uint8x16, u8) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_int8x16, s8) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_uint16x8, u16) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_int16x8, s16) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_uint32x4, u32) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_int32x4, s32) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_uint64x2, u64) +OPENCV_HAL_IMPL_SSE_INIT_FROM_FLT(v_int64x2, s64) + +inline v_float32x4 v_reinterpret_as_f32(const v_float32x4& a) {return a; } +inline v_float64x2 v_reinterpret_as_f64(const v_float64x2& a) {return a; } +inline v_float32x4 v_reinterpret_as_f32(const v_float64x2& a) {return v_float32x4(_mm_castpd_ps(a.val)); } +inline v_float64x2 v_reinterpret_as_f64(const v_float32x4& a) {return v_float64x2(_mm_castps_pd(a.val)); } + +//////////////// PACK /////////////// +inline v_uint8x16 v_pack(const v_uint16x8& a, const v_uint16x8& b) +{ + __m128i delta = _mm_set1_epi16(255); + return v_uint8x16(_mm_packus_epi16(_mm_subs_epu16(a.val, _mm_subs_epu16(a.val, delta)), + _mm_subs_epu16(b.val, _mm_subs_epu16(b.val, delta)))); +} + +inline void v_pack_store(uchar* ptr, const v_uint16x8& a) +{ + __m128i delta = _mm_set1_epi16(255); + __m128i a1 = _mm_subs_epu16(a.val, _mm_subs_epu16(a.val, delta)); + _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi16(a1, a1)); +} + +inline v_uint8x16 v_pack_u(const v_int16x8& a, const v_int16x8& b) +{ return v_uint8x16(_mm_packus_epi16(a.val, b.val)); } + +inline void v_pack_u_store(uchar* ptr, const v_int16x8& a) +{ _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi16(a.val, a.val)); } + +template inline +v_uint8x16 v_rshr_pack(const v_uint16x8& a, const v_uint16x8& b) +{ + // we assume that n > 0, and so the shifted 16-bit values can be treated as signed numbers. + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + return v_uint8x16(_mm_packus_epi16(_mm_srli_epi16(_mm_adds_epu16(a.val, delta), n), + _mm_srli_epi16(_mm_adds_epu16(b.val, delta), n))); +} + +template inline +void v_rshr_pack_store(uchar* ptr, const v_uint16x8& a) +{ + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + __m128i a1 = _mm_srli_epi16(_mm_adds_epu16(a.val, delta), n); + _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi16(a1, a1)); +} + +template inline +v_uint8x16 v_rshr_pack_u(const v_int16x8& a, const v_int16x8& b) +{ + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + return v_uint8x16(_mm_packus_epi16(_mm_srai_epi16(_mm_adds_epi16(a.val, delta), n), + _mm_srai_epi16(_mm_adds_epi16(b.val, delta), n))); +} + +template inline +void v_rshr_pack_u_store(uchar* ptr, const v_int16x8& a) +{ + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + __m128i a1 = _mm_srai_epi16(_mm_adds_epi16(a.val, delta), n); + _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi16(a1, a1)); +} + +inline v_int8x16 v_pack(const v_int16x8& a, const v_int16x8& b) +{ return v_int8x16(_mm_packs_epi16(a.val, b.val)); } + +inline void v_pack_store(schar* ptr, const v_int16x8& a) +{ _mm_storel_epi64((__m128i*)ptr, _mm_packs_epi16(a.val, a.val)); } + +template inline +v_int8x16 v_rshr_pack(const v_int16x8& a, const v_int16x8& b) +{ + // we assume that n > 0, and so the shifted 16-bit values can be treated as signed numbers. + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + return v_int8x16(_mm_packs_epi16(_mm_srai_epi16(_mm_adds_epi16(a.val, delta), n), + _mm_srai_epi16(_mm_adds_epi16(b.val, delta), n))); +} +template inline +void v_rshr_pack_store(schar* ptr, const v_int16x8& a) +{ + // we assume that n > 0, and so the shifted 16-bit values can be treated as signed numbers. + __m128i delta = _mm_set1_epi16((short)(1 << (n-1))); + __m128i a1 = _mm_srai_epi16(_mm_adds_epi16(a.val, delta), n); + _mm_storel_epi64((__m128i*)ptr, _mm_packs_epi16(a1, a1)); +} + + +// byte-wise "mask ? a : b" +inline __m128i v_select_si128(__m128i mask, __m128i a, __m128i b) +{ +#if CV_SSE4_1 + return _mm_blendv_epi8(b, a, mask); +#else + return _mm_xor_si128(b, _mm_and_si128(_mm_xor_si128(a, b), mask)); +#endif +} + +inline v_uint16x8 v_pack(const v_uint32x4& a, const v_uint32x4& b) +{ return v_uint16x8(_v128_packs_epu32(a.val, b.val)); } + +inline void v_pack_store(ushort* ptr, const v_uint32x4& a) +{ + __m128i z = _mm_setzero_si128(), maxval32 = _mm_set1_epi32(65535), delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(v_select_si128(_mm_cmpgt_epi32(z, a.val), maxval32, a.val), delta32); + __m128i r = _mm_packs_epi32(a1, a1); + _mm_storel_epi64((__m128i*)ptr, _mm_sub_epi16(r, _mm_set1_epi16(-32768))); +} + +template inline +v_uint16x8 v_rshr_pack(const v_uint32x4& a, const v_uint32x4& b) +{ + __m128i delta = _mm_set1_epi32(1 << (n-1)), delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(_mm_srli_epi32(_mm_add_epi32(a.val, delta), n), delta32); + __m128i b1 = _mm_sub_epi32(_mm_srli_epi32(_mm_add_epi32(b.val, delta), n), delta32); + return v_uint16x8(_mm_sub_epi16(_mm_packs_epi32(a1, b1), _mm_set1_epi16(-32768))); +} + +template inline +void v_rshr_pack_store(ushort* ptr, const v_uint32x4& a) +{ + __m128i delta = _mm_set1_epi32(1 << (n-1)), delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(_mm_srli_epi32(_mm_add_epi32(a.val, delta), n), delta32); + __m128i a2 = _mm_sub_epi16(_mm_packs_epi32(a1, a1), _mm_set1_epi16(-32768)); + _mm_storel_epi64((__m128i*)ptr, a2); +} + +inline v_uint16x8 v_pack_u(const v_int32x4& a, const v_int32x4& b) +{ +#if CV_SSE4_1 + return v_uint16x8(_mm_packus_epi32(a.val, b.val)); +#else + __m128i delta32 = _mm_set1_epi32(32768); + + // preliminary saturate negative values to zero + __m128i a1 = _mm_and_si128(a.val, _mm_cmpgt_epi32(a.val, _mm_set1_epi32(0))); + __m128i b1 = _mm_and_si128(b.val, _mm_cmpgt_epi32(b.val, _mm_set1_epi32(0))); + + __m128i r = _mm_packs_epi32(_mm_sub_epi32(a1, delta32), _mm_sub_epi32(b1, delta32)); + return v_uint16x8(_mm_sub_epi16(r, _mm_set1_epi16(-32768))); +#endif +} + +inline void v_pack_u_store(ushort* ptr, const v_int32x4& a) +{ +#if CV_SSE4_1 + _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi32(a.val, a.val)); +#else + __m128i delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(a.val, delta32); + __m128i r = _mm_sub_epi16(_mm_packs_epi32(a1, a1), _mm_set1_epi16(-32768)); + _mm_storel_epi64((__m128i*)ptr, r); +#endif +} + +template inline +v_uint16x8 v_rshr_pack_u(const v_int32x4& a, const v_int32x4& b) +{ +#if CV_SSE4_1 + __m128i delta = _mm_set1_epi32(1 << (n - 1)); + return v_uint16x8(_mm_packus_epi32(_mm_srai_epi32(_mm_add_epi32(a.val, delta), n), + _mm_srai_epi32(_mm_add_epi32(b.val, delta), n))); +#else + __m128i delta = _mm_set1_epi32(1 << (n-1)), delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(_mm_srai_epi32(_mm_add_epi32(a.val, delta), n), delta32); + __m128i a2 = _mm_sub_epi16(_mm_packs_epi32(a1, a1), _mm_set1_epi16(-32768)); + __m128i b1 = _mm_sub_epi32(_mm_srai_epi32(_mm_add_epi32(b.val, delta), n), delta32); + __m128i b2 = _mm_sub_epi16(_mm_packs_epi32(b1, b1), _mm_set1_epi16(-32768)); + return v_uint16x8(_mm_unpacklo_epi64(a2, b2)); +#endif +} + +template inline +void v_rshr_pack_u_store(ushort* ptr, const v_int32x4& a) +{ +#if CV_SSE4_1 + __m128i delta = _mm_set1_epi32(1 << (n - 1)); + __m128i a1 = _mm_srai_epi32(_mm_add_epi32(a.val, delta), n); + _mm_storel_epi64((__m128i*)ptr, _mm_packus_epi32(a1, a1)); +#else + __m128i delta = _mm_set1_epi32(1 << (n-1)), delta32 = _mm_set1_epi32(32768); + __m128i a1 = _mm_sub_epi32(_mm_srai_epi32(_mm_add_epi32(a.val, delta), n), delta32); + __m128i a2 = _mm_sub_epi16(_mm_packs_epi32(a1, a1), _mm_set1_epi16(-32768)); + _mm_storel_epi64((__m128i*)ptr, a2); +#endif +} + +inline v_int16x8 v_pack(const v_int32x4& a, const v_int32x4& b) +{ return v_int16x8(_mm_packs_epi32(a.val, b.val)); } + +inline void v_pack_store(short* ptr, const v_int32x4& a) +{ + _mm_storel_epi64((__m128i*)ptr, _mm_packs_epi32(a.val, a.val)); +} + +template inline +v_int16x8 v_rshr_pack(const v_int32x4& a, const v_int32x4& b) +{ + __m128i delta = _mm_set1_epi32(1 << (n-1)); + return v_int16x8(_mm_packs_epi32(_mm_srai_epi32(_mm_add_epi32(a.val, delta), n), + _mm_srai_epi32(_mm_add_epi32(b.val, delta), n))); +} + +template inline +void v_rshr_pack_store(short* ptr, const v_int32x4& a) +{ + __m128i delta = _mm_set1_epi32(1 << (n-1)); + __m128i a1 = _mm_srai_epi32(_mm_add_epi32(a.val, delta), n); + _mm_storel_epi64((__m128i*)ptr, _mm_packs_epi32(a1, a1)); +} + + +// [a0 0 | b0 0] [a1 0 | b1 0] +inline v_uint32x4 v_pack(const v_uint64x2& a, const v_uint64x2& b) +{ + __m128i v0 = _mm_unpacklo_epi32(a.val, b.val); // a0 a1 0 0 + __m128i v1 = _mm_unpackhi_epi32(a.val, b.val); // b0 b1 0 0 + return v_uint32x4(_mm_unpacklo_epi32(v0, v1)); +} + +inline void v_pack_store(unsigned* ptr, const v_uint64x2& a) +{ + __m128i a1 = _mm_shuffle_epi32(a.val, _MM_SHUFFLE(0, 2, 2, 0)); + _mm_storel_epi64((__m128i*)ptr, a1); +} + +// [a0 0 | b0 0] [a1 0 | b1 0] +inline v_int32x4 v_pack(const v_int64x2& a, const v_int64x2& b) +{ + __m128i v0 = _mm_unpacklo_epi32(a.val, b.val); // a0 a1 0 0 + __m128i v1 = _mm_unpackhi_epi32(a.val, b.val); // b0 b1 0 0 + return v_int32x4(_mm_unpacklo_epi32(v0, v1)); +} + +inline void v_pack_store(int* ptr, const v_int64x2& a) +{ + __m128i a1 = _mm_shuffle_epi32(a.val, _MM_SHUFFLE(0, 2, 2, 0)); + _mm_storel_epi64((__m128i*)ptr, a1); +} + +template inline +v_uint32x4 v_rshr_pack(const v_uint64x2& a, const v_uint64x2& b) +{ + uint64 delta = (uint64)1 << (n-1); + v_uint64x2 delta2(delta, delta); + __m128i a1 = _mm_srli_epi64(_mm_add_epi64(a.val, delta2.val), n); + __m128i b1 = _mm_srli_epi64(_mm_add_epi64(b.val, delta2.val), n); + __m128i v0 = _mm_unpacklo_epi32(a1, b1); // a0 a1 0 0 + __m128i v1 = _mm_unpackhi_epi32(a1, b1); // b0 b1 0 0 + return v_uint32x4(_mm_unpacklo_epi32(v0, v1)); +} + +template inline +void v_rshr_pack_store(unsigned* ptr, const v_uint64x2& a) +{ + uint64 delta = (uint64)1 << (n-1); + v_uint64x2 delta2(delta, delta); + __m128i a1 = _mm_srli_epi64(_mm_add_epi64(a.val, delta2.val), n); + __m128i a2 = _mm_shuffle_epi32(a1, _MM_SHUFFLE(0, 2, 2, 0)); + _mm_storel_epi64((__m128i*)ptr, a2); +} + +inline __m128i v_sign_epi64(__m128i a) +{ + return _mm_shuffle_epi32(_mm_srai_epi32(a, 31), _MM_SHUFFLE(3, 3, 1, 1)); // x m0 | x m1 +} + +inline __m128i v_srai_epi64(__m128i a, int imm) +{ + __m128i smask = v_sign_epi64(a); + return _mm_xor_si128(_mm_srli_epi64(_mm_xor_si128(a, smask), imm), smask); +} + +template inline +v_int32x4 v_rshr_pack(const v_int64x2& a, const v_int64x2& b) +{ + int64 delta = (int64)1 << (n-1); + v_int64x2 delta2(delta, delta); + __m128i a1 = v_srai_epi64(_mm_add_epi64(a.val, delta2.val), n); + __m128i b1 = v_srai_epi64(_mm_add_epi64(b.val, delta2.val), n); + __m128i v0 = _mm_unpacklo_epi32(a1, b1); // a0 a1 0 0 + __m128i v1 = _mm_unpackhi_epi32(a1, b1); // b0 b1 0 0 + return v_int32x4(_mm_unpacklo_epi32(v0, v1)); +} + +template inline +void v_rshr_pack_store(int* ptr, const v_int64x2& a) +{ + int64 delta = (int64)1 << (n-1); + v_int64x2 delta2(delta, delta); + __m128i a1 = v_srai_epi64(_mm_add_epi64(a.val, delta2.val), n); + __m128i a2 = _mm_shuffle_epi32(a1, _MM_SHUFFLE(0, 2, 2, 0)); + _mm_storel_epi64((__m128i*)ptr, a2); +} + +// pack boolean +inline v_uint8x16 v_pack_b(const v_uint16x8& a, const v_uint16x8& b) +{ + __m128i ab = _mm_packs_epi16(a.val, b.val); + return v_uint8x16(ab); +} + +inline v_uint8x16 v_pack_b(const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, const v_uint32x4& d) +{ + __m128i ab = _mm_packs_epi32(a.val, b.val); + __m128i cd = _mm_packs_epi32(c.val, d.val); + return v_uint8x16(_mm_packs_epi16(ab, cd)); +} + +inline v_uint8x16 v_pack_b(const v_uint64x2& a, const v_uint64x2& b, const v_uint64x2& c, + const v_uint64x2& d, const v_uint64x2& e, const v_uint64x2& f, + const v_uint64x2& g, const v_uint64x2& h) +{ + __m128i ab = _mm_packs_epi32(a.val, b.val); + __m128i cd = _mm_packs_epi32(c.val, d.val); + __m128i ef = _mm_packs_epi32(e.val, f.val); + __m128i gh = _mm_packs_epi32(g.val, h.val); + + __m128i abcd = _mm_packs_epi32(ab, cd); + __m128i efgh = _mm_packs_epi32(ef, gh); + return v_uint8x16(_mm_packs_epi16(abcd, efgh)); +} + +inline v_float32x4 v_matmul(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& m3) +{ + __m128 v0 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(0, 0, 0, 0)), m0.val); + __m128 v1 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(1, 1, 1, 1)), m1.val); + __m128 v2 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(2, 2, 2, 2)), m2.val); + __m128 v3 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(3, 3, 3, 3)), m3.val); + + return v_float32x4(_mm_add_ps(_mm_add_ps(v0, v1), _mm_add_ps(v2, v3))); +} + +inline v_float32x4 v_matmuladd(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& a) +{ + __m128 v0 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(0, 0, 0, 0)), m0.val); + __m128 v1 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(1, 1, 1, 1)), m1.val); + __m128 v2 = _mm_mul_ps(_mm_shuffle_ps(v.val, v.val, _MM_SHUFFLE(2, 2, 2, 2)), m2.val); + + return v_float32x4(_mm_add_ps(_mm_add_ps(v0, v1), _mm_add_ps(v2, a.val))); +} + +#define OPENCV_HAL_IMPL_SSE_BIN_OP(bin_op, _Tpvec, intrin) \ + inline _Tpvec operator bin_op (const _Tpvec& a, const _Tpvec& b) \ + { \ + return _Tpvec(intrin(a.val, b.val)); \ + } \ + inline _Tpvec& operator bin_op##= (_Tpvec& a, const _Tpvec& b) \ + { \ + a.val = intrin(a.val, b.val); \ + return a; \ + } + +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_uint8x16, _mm_adds_epu8) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_uint8x16, _mm_subs_epu8) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_int8x16, _mm_adds_epi8) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_int8x16, _mm_subs_epi8) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_uint16x8, _mm_adds_epu16) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_uint16x8, _mm_subs_epu16) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_int16x8, _mm_adds_epi16) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_int16x8, _mm_subs_epi16) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_uint32x4, _mm_add_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_uint32x4, _mm_sub_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(*, v_uint32x4, _v128_mullo_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_int32x4, _mm_add_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_int32x4, _mm_sub_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(*, v_int32x4, _v128_mullo_epi32) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_float32x4, _mm_add_ps) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_float32x4, _mm_sub_ps) +OPENCV_HAL_IMPL_SSE_BIN_OP(*, v_float32x4, _mm_mul_ps) +OPENCV_HAL_IMPL_SSE_BIN_OP(/, v_float32x4, _mm_div_ps) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_float64x2, _mm_add_pd) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_float64x2, _mm_sub_pd) +OPENCV_HAL_IMPL_SSE_BIN_OP(*, v_float64x2, _mm_mul_pd) +OPENCV_HAL_IMPL_SSE_BIN_OP(/, v_float64x2, _mm_div_pd) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_uint64x2, _mm_add_epi64) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_uint64x2, _mm_sub_epi64) +OPENCV_HAL_IMPL_SSE_BIN_OP(+, v_int64x2, _mm_add_epi64) +OPENCV_HAL_IMPL_SSE_BIN_OP(-, v_int64x2, _mm_sub_epi64) + +// saturating multiply 8-bit, 16-bit +#define OPENCV_HAL_IMPL_SSE_MUL_SAT(_Tpvec, _Tpwvec) \ + inline _Tpvec operator * (const _Tpvec& a, const _Tpvec& b) \ + { \ + _Tpwvec c, d; \ + v_mul_expand(a, b, c, d); \ + return v_pack(c, d); \ + } \ + inline _Tpvec& operator *= (_Tpvec& a, const _Tpvec& b) \ + { a = a * b; return a; } + +OPENCV_HAL_IMPL_SSE_MUL_SAT(v_uint8x16, v_uint16x8) +OPENCV_HAL_IMPL_SSE_MUL_SAT(v_int8x16, v_int16x8) +OPENCV_HAL_IMPL_SSE_MUL_SAT(v_uint16x8, v_uint32x4) +OPENCV_HAL_IMPL_SSE_MUL_SAT(v_int16x8, v_int32x4) + +// Multiply and expand +inline void v_mul_expand(const v_uint8x16& a, const v_uint8x16& b, + v_uint16x8& c, v_uint16x8& d) +{ + v_uint16x8 a0, a1, b0, b1; + v_expand(a, a0, a1); + v_expand(b, b0, b1); + c = v_mul_wrap(a0, b0); + d = v_mul_wrap(a1, b1); +} + +inline void v_mul_expand(const v_int8x16& a, const v_int8x16& b, + v_int16x8& c, v_int16x8& d) +{ + v_int16x8 a0, a1, b0, b1; + v_expand(a, a0, a1); + v_expand(b, b0, b1); + c = v_mul_wrap(a0, b0); + d = v_mul_wrap(a1, b1); +} + +inline void v_mul_expand(const v_int16x8& a, const v_int16x8& b, + v_int32x4& c, v_int32x4& d) +{ + __m128i v0 = _mm_mullo_epi16(a.val, b.val); + __m128i v1 = _mm_mulhi_epi16(a.val, b.val); + c.val = _mm_unpacklo_epi16(v0, v1); + d.val = _mm_unpackhi_epi16(v0, v1); +} + +inline void v_mul_expand(const v_uint16x8& a, const v_uint16x8& b, + v_uint32x4& c, v_uint32x4& d) +{ + __m128i v0 = _mm_mullo_epi16(a.val, b.val); + __m128i v1 = _mm_mulhi_epu16(a.val, b.val); + c.val = _mm_unpacklo_epi16(v0, v1); + d.val = _mm_unpackhi_epi16(v0, v1); +} + +inline void v_mul_expand(const v_uint32x4& a, const v_uint32x4& b, + v_uint64x2& c, v_uint64x2& d) +{ + __m128i c0 = _mm_mul_epu32(a.val, b.val); + __m128i c1 = _mm_mul_epu32(_mm_srli_epi64(a.val, 32), _mm_srli_epi64(b.val, 32)); + c.val = _mm_unpacklo_epi64(c0, c1); + d.val = _mm_unpackhi_epi64(c0, c1); +} + +inline v_int16x8 v_mul_hi(const v_int16x8& a, const v_int16x8& b) { return v_int16x8(_mm_mulhi_epi16(a.val, b.val)); } +inline v_uint16x8 v_mul_hi(const v_uint16x8& a, const v_uint16x8& b) { return v_uint16x8(_mm_mulhi_epu16(a.val, b.val)); } + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b) +{ + return v_int32x4(_mm_madd_epi16(a.val, b.val)); +} + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b, const v_int32x4& c) +{ + return v_int32x4(_mm_add_epi32(_mm_madd_epi16(a.val, b.val), c.val)); +} + +#define OPENCV_HAL_IMPL_SSE_LOGIC_OP(_Tpvec, suffix, not_const) \ + OPENCV_HAL_IMPL_SSE_BIN_OP(&, _Tpvec, _mm_and_##suffix) \ + OPENCV_HAL_IMPL_SSE_BIN_OP(|, _Tpvec, _mm_or_##suffix) \ + OPENCV_HAL_IMPL_SSE_BIN_OP(^, _Tpvec, _mm_xor_##suffix) \ + inline _Tpvec operator ~ (const _Tpvec& a) \ + { \ + return _Tpvec(_mm_xor_##suffix(a.val, not_const)); \ + } + +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_uint8x16, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_int8x16, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_uint16x8, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_int16x8, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_uint32x4, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_int32x4, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_uint64x2, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_int64x2, si128, _mm_set1_epi32(-1)) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_float32x4, ps, _mm_castsi128_ps(_mm_set1_epi32(-1))) +OPENCV_HAL_IMPL_SSE_LOGIC_OP(v_float64x2, pd, _mm_castsi128_pd(_mm_set1_epi32(-1))) + +inline v_float32x4 v_sqrt(const v_float32x4& x) +{ return v_float32x4(_mm_sqrt_ps(x.val)); } + +inline v_float32x4 v_invsqrt(const v_float32x4& x) +{ + const __m128 _0_5 = _mm_set1_ps(0.5f), _1_5 = _mm_set1_ps(1.5f); + __m128 t = x.val; + __m128 h = _mm_mul_ps(t, _0_5); + t = _mm_rsqrt_ps(t); + t = _mm_mul_ps(t, _mm_sub_ps(_1_5, _mm_mul_ps(_mm_mul_ps(t, t), h))); + return v_float32x4(t); +} + +inline v_float64x2 v_sqrt(const v_float64x2& x) +{ return v_float64x2(_mm_sqrt_pd(x.val)); } + +inline v_float64x2 v_invsqrt(const v_float64x2& x) +{ + const __m128d v_1 = _mm_set1_pd(1.); + return v_float64x2(_mm_div_pd(v_1, _mm_sqrt_pd(x.val))); +} + +#define OPENCV_HAL_IMPL_SSE_ABS_INT_FUNC(_Tpuvec, _Tpsvec, func, suffix, subWidth) \ +inline _Tpuvec v_abs(const _Tpsvec& x) \ +{ return _Tpuvec(_mm_##func##_ep##suffix(x.val, _mm_sub_ep##subWidth(_mm_setzero_si128(), x.val))); } + +OPENCV_HAL_IMPL_SSE_ABS_INT_FUNC(v_uint8x16, v_int8x16, min, u8, i8) +OPENCV_HAL_IMPL_SSE_ABS_INT_FUNC(v_uint16x8, v_int16x8, max, i16, i16) +inline v_uint32x4 v_abs(const v_int32x4& x) +{ + __m128i s = _mm_srli_epi32(x.val, 31); + __m128i f = _mm_srai_epi32(x.val, 31); + return v_uint32x4(_mm_add_epi32(_mm_xor_si128(x.val, f), s)); +} +inline v_float32x4 v_abs(const v_float32x4& x) +{ return v_float32x4(_mm_and_ps(x.val, _mm_castsi128_ps(_mm_set1_epi32(0x7fffffff)))); } +inline v_float64x2 v_abs(const v_float64x2& x) +{ + return v_float64x2(_mm_and_pd(x.val, + _mm_castsi128_pd(_mm_srli_epi64(_mm_set1_epi32(-1), 1)))); +} + +// TODO: exp, log, sin, cos + +#define OPENCV_HAL_IMPL_SSE_BIN_FUNC(_Tpvec, func, intrin) \ +inline _Tpvec func(const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(intrin(a.val, b.val)); \ +} + +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint8x16, v_min, _mm_min_epu8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint8x16, v_max, _mm_max_epu8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int16x8, v_min, _mm_min_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int16x8, v_max, _mm_max_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_float32x4, v_min, _mm_min_ps) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_float32x4, v_max, _mm_max_ps) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_float64x2, v_min, _mm_min_pd) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_float64x2, v_max, _mm_max_pd) + +inline v_int8x16 v_min(const v_int8x16& a, const v_int8x16& b) +{ +#if CV_SSE4_1 + return v_int8x16(_mm_min_epi8(a.val, b.val)); +#else + __m128i delta = _mm_set1_epi8((char)-128); + return v_int8x16(_mm_xor_si128(delta, _mm_min_epu8(_mm_xor_si128(a.val, delta), + _mm_xor_si128(b.val, delta)))); +#endif +} +inline v_int8x16 v_max(const v_int8x16& a, const v_int8x16& b) +{ +#if CV_SSE4_1 + return v_int8x16(_mm_max_epi8(a.val, b.val)); +#else + __m128i delta = _mm_set1_epi8((char)-128); + return v_int8x16(_mm_xor_si128(delta, _mm_max_epu8(_mm_xor_si128(a.val, delta), + _mm_xor_si128(b.val, delta)))); +#endif +} +inline v_uint16x8 v_min(const v_uint16x8& a, const v_uint16x8& b) +{ +#if CV_SSE4_1 + return v_uint16x8(_mm_min_epu16(a.val, b.val)); +#else + return v_uint16x8(_mm_subs_epu16(a.val, _mm_subs_epu16(a.val, b.val))); +#endif +} +inline v_uint16x8 v_max(const v_uint16x8& a, const v_uint16x8& b) +{ +#if CV_SSE4_1 + return v_uint16x8(_mm_max_epu16(a.val, b.val)); +#else + return v_uint16x8(_mm_adds_epu16(_mm_subs_epu16(a.val, b.val), b.val)); +#endif +} +inline v_uint32x4 v_min(const v_uint32x4& a, const v_uint32x4& b) +{ +#if CV_SSE4_1 + return v_uint32x4(_mm_min_epu32(a.val, b.val)); +#else + __m128i delta = _mm_set1_epi32((int)0x80000000); + __m128i mask = _mm_cmpgt_epi32(_mm_xor_si128(a.val, delta), _mm_xor_si128(b.val, delta)); + return v_uint32x4(v_select_si128(mask, b.val, a.val)); +#endif +} +inline v_uint32x4 v_max(const v_uint32x4& a, const v_uint32x4& b) +{ +#if CV_SSE4_1 + return v_uint32x4(_mm_max_epu32(a.val, b.val)); +#else + __m128i delta = _mm_set1_epi32((int)0x80000000); + __m128i mask = _mm_cmpgt_epi32(_mm_xor_si128(a.val, delta), _mm_xor_si128(b.val, delta)); + return v_uint32x4(v_select_si128(mask, a.val, b.val)); +#endif +} +inline v_int32x4 v_min(const v_int32x4& a, const v_int32x4& b) +{ +#if CV_SSE4_1 + return v_int32x4(_mm_min_epi32(a.val, b.val)); +#else + return v_int32x4(v_select_si128(_mm_cmpgt_epi32(a.val, b.val), b.val, a.val)); +#endif +} +inline v_int32x4 v_max(const v_int32x4& a, const v_int32x4& b) +{ +#if CV_SSE4_1 + return v_int32x4(_mm_max_epi32(a.val, b.val)); +#else + return v_int32x4(v_select_si128(_mm_cmpgt_epi32(a.val, b.val), a.val, b.val)); +#endif +} + +#define OPENCV_HAL_IMPL_SSE_INT_CMP_OP(_Tpuvec, _Tpsvec, suffix, sbit) \ +inline _Tpuvec operator == (const _Tpuvec& a, const _Tpuvec& b) \ +{ return _Tpuvec(_mm_cmpeq_##suffix(a.val, b.val)); } \ +inline _Tpuvec operator != (const _Tpuvec& a, const _Tpuvec& b) \ +{ \ + __m128i not_mask = _mm_set1_epi32(-1); \ + return _Tpuvec(_mm_xor_si128(_mm_cmpeq_##suffix(a.val, b.val), not_mask)); \ +} \ +inline _Tpsvec operator == (const _Tpsvec& a, const _Tpsvec& b) \ +{ return _Tpsvec(_mm_cmpeq_##suffix(a.val, b.val)); } \ +inline _Tpsvec operator != (const _Tpsvec& a, const _Tpsvec& b) \ +{ \ + __m128i not_mask = _mm_set1_epi32(-1); \ + return _Tpsvec(_mm_xor_si128(_mm_cmpeq_##suffix(a.val, b.val), not_mask)); \ +} \ +inline _Tpuvec operator < (const _Tpuvec& a, const _Tpuvec& b) \ +{ \ + __m128i smask = _mm_set1_##suffix(sbit); \ + return _Tpuvec(_mm_cmpgt_##suffix(_mm_xor_si128(b.val, smask), _mm_xor_si128(a.val, smask))); \ +} \ +inline _Tpuvec operator > (const _Tpuvec& a, const _Tpuvec& b) \ +{ \ + __m128i smask = _mm_set1_##suffix(sbit); \ + return _Tpuvec(_mm_cmpgt_##suffix(_mm_xor_si128(a.val, smask), _mm_xor_si128(b.val, smask))); \ +} \ +inline _Tpuvec operator <= (const _Tpuvec& a, const _Tpuvec& b) \ +{ \ + __m128i smask = _mm_set1_##suffix(sbit); \ + __m128i not_mask = _mm_set1_epi32(-1); \ + __m128i res = _mm_cmpgt_##suffix(_mm_xor_si128(a.val, smask), _mm_xor_si128(b.val, smask)); \ + return _Tpuvec(_mm_xor_si128(res, not_mask)); \ +} \ +inline _Tpuvec operator >= (const _Tpuvec& a, const _Tpuvec& b) \ +{ \ + __m128i smask = _mm_set1_##suffix(sbit); \ + __m128i not_mask = _mm_set1_epi32(-1); \ + __m128i res = _mm_cmpgt_##suffix(_mm_xor_si128(b.val, smask), _mm_xor_si128(a.val, smask)); \ + return _Tpuvec(_mm_xor_si128(res, not_mask)); \ +} \ +inline _Tpsvec operator < (const _Tpsvec& a, const _Tpsvec& b) \ +{ \ + return _Tpsvec(_mm_cmpgt_##suffix(b.val, a.val)); \ +} \ +inline _Tpsvec operator > (const _Tpsvec& a, const _Tpsvec& b) \ +{ \ + return _Tpsvec(_mm_cmpgt_##suffix(a.val, b.val)); \ +} \ +inline _Tpsvec operator <= (const _Tpsvec& a, const _Tpsvec& b) \ +{ \ + __m128i not_mask = _mm_set1_epi32(-1); \ + return _Tpsvec(_mm_xor_si128(_mm_cmpgt_##suffix(a.val, b.val), not_mask)); \ +} \ +inline _Tpsvec operator >= (const _Tpsvec& a, const _Tpsvec& b) \ +{ \ + __m128i not_mask = _mm_set1_epi32(-1); \ + return _Tpsvec(_mm_xor_si128(_mm_cmpgt_##suffix(b.val, a.val), not_mask)); \ +} + +OPENCV_HAL_IMPL_SSE_INT_CMP_OP(v_uint8x16, v_int8x16, epi8, (char)-128) +OPENCV_HAL_IMPL_SSE_INT_CMP_OP(v_uint16x8, v_int16x8, epi16, (short)-32768) +OPENCV_HAL_IMPL_SSE_INT_CMP_OP(v_uint32x4, v_int32x4, epi32, (int)0x80000000) + +#define OPENCV_HAL_IMPL_SSE_FLT_CMP_OP(_Tpvec, suffix) \ +inline _Tpvec operator == (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmpeq_##suffix(a.val, b.val)); } \ +inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmpneq_##suffix(a.val, b.val)); } \ +inline _Tpvec operator < (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmplt_##suffix(a.val, b.val)); } \ +inline _Tpvec operator > (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmpgt_##suffix(a.val, b.val)); } \ +inline _Tpvec operator <= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmple_##suffix(a.val, b.val)); } \ +inline _Tpvec operator >= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(_mm_cmpge_##suffix(a.val, b.val)); } + +OPENCV_HAL_IMPL_SSE_FLT_CMP_OP(v_float32x4, ps) +OPENCV_HAL_IMPL_SSE_FLT_CMP_OP(v_float64x2, pd) + +#define OPENCV_HAL_IMPL_SSE_64BIT_CMP_OP(_Tpvec, cast) \ +inline _Tpvec operator == (const _Tpvec& a, const _Tpvec& b) \ +{ return cast(v_reinterpret_as_f64(a) == v_reinterpret_as_f64(b)); } \ +inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ +{ return cast(v_reinterpret_as_f64(a) != v_reinterpret_as_f64(b)); } + +OPENCV_HAL_IMPL_SSE_64BIT_CMP_OP(v_uint64x2, v_reinterpret_as_u64) +OPENCV_HAL_IMPL_SSE_64BIT_CMP_OP(v_int64x2, v_reinterpret_as_s64) + +inline v_float32x4 v_not_nan(const v_float32x4& a) +{ return v_float32x4(_mm_cmpord_ps(a.val, a.val)); } +inline v_float64x2 v_not_nan(const v_float64x2& a) +{ return v_float64x2(_mm_cmpord_pd(a.val, a.val)); } + +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint8x16, v_add_wrap, _mm_add_epi8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int8x16, v_add_wrap, _mm_add_epi8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint16x8, v_add_wrap, _mm_add_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int16x8, v_add_wrap, _mm_add_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint8x16, v_sub_wrap, _mm_sub_epi8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int8x16, v_sub_wrap, _mm_sub_epi8) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint16x8, v_sub_wrap, _mm_sub_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int16x8, v_sub_wrap, _mm_sub_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_uint16x8, v_mul_wrap, _mm_mullo_epi16) +OPENCV_HAL_IMPL_SSE_BIN_FUNC(v_int16x8, v_mul_wrap, _mm_mullo_epi16) + +inline v_uint8x16 v_mul_wrap(const v_uint8x16& a, const v_uint8x16& b) +{ + __m128i ad = _mm_srai_epi16(a.val, 8); + __m128i bd = _mm_srai_epi16(b.val, 8); + __m128i p0 = _mm_mullo_epi16(a.val, b.val); // even + __m128i p1 = _mm_slli_epi16(_mm_mullo_epi16(ad, bd), 8); // odd + const __m128i b01 = _mm_set1_epi32(0xFF00FF00); + return v_uint8x16(_v128_blendv_epi8(p0, p1, b01)); +} +inline v_int8x16 v_mul_wrap(const v_int8x16& a, const v_int8x16& b) +{ + return v_reinterpret_as_s8(v_mul_wrap(v_reinterpret_as_u8(a), v_reinterpret_as_u8(b))); +} + +/** Absolute difference **/ + +inline v_uint8x16 v_absdiff(const v_uint8x16& a, const v_uint8x16& b) +{ return v_add_wrap(a - b, b - a); } +inline v_uint16x8 v_absdiff(const v_uint16x8& a, const v_uint16x8& b) +{ return v_add_wrap(a - b, b - a); } +inline v_uint32x4 v_absdiff(const v_uint32x4& a, const v_uint32x4& b) +{ return v_max(a, b) - v_min(a, b); } + +inline v_uint8x16 v_absdiff(const v_int8x16& a, const v_int8x16& b) +{ + v_int8x16 d = v_sub_wrap(a, b); + v_int8x16 m = a < b; + return v_reinterpret_as_u8(v_sub_wrap(d ^ m, m)); +} +inline v_uint16x8 v_absdiff(const v_int16x8& a, const v_int16x8& b) +{ + return v_reinterpret_as_u16(v_sub_wrap(v_max(a, b), v_min(a, b))); +} +inline v_uint32x4 v_absdiff(const v_int32x4& a, const v_int32x4& b) +{ + v_int32x4 d = a - b; + v_int32x4 m = a < b; + return v_reinterpret_as_u32((d ^ m) - m); +} + +/** Saturating absolute difference **/ +inline v_int8x16 v_absdiffs(const v_int8x16& a, const v_int8x16& b) +{ + v_int8x16 d = a - b; + v_int8x16 m = a < b; + return (d ^ m) - m; + } +inline v_int16x8 v_absdiffs(const v_int16x8& a, const v_int16x8& b) +{ return v_max(a, b) - v_min(a, b); } + + +inline v_int32x4 v_fma(const v_int32x4& a, const v_int32x4& b, const v_int32x4& c) +{ + return a * b + c; +} + +inline v_int32x4 v_muladd(const v_int32x4& a, const v_int32x4& b, const v_int32x4& c) +{ + return v_fma(a, b, c); +} + +inline v_float32x4 v_fma(const v_float32x4& a, const v_float32x4& b, const v_float32x4& c) +{ +#if CV_FMA3 + return v_float32x4(_mm_fmadd_ps(a.val, b.val, c.val)); +#else + return v_float32x4(_mm_add_ps(_mm_mul_ps(a.val, b.val), c.val)); +#endif +} + +inline v_float64x2 v_fma(const v_float64x2& a, const v_float64x2& b, const v_float64x2& c) +{ +#if CV_FMA3 + return v_float64x2(_mm_fmadd_pd(a.val, b.val, c.val)); +#else + return v_float64x2(_mm_add_pd(_mm_mul_pd(a.val, b.val), c.val)); +#endif +} + +#define OPENCV_HAL_IMPL_SSE_MISC_FLT_OP(_Tpvec, _Tp, _Tpreg, suffix, absmask_vec) \ +inline _Tpvec v_absdiff(const _Tpvec& a, const _Tpvec& b) \ +{ \ + _Tpreg absmask = _mm_castsi128_##suffix(absmask_vec); \ + return _Tpvec(_mm_and_##suffix(_mm_sub_##suffix(a.val, b.val), absmask)); \ +} \ +inline _Tpvec v_magnitude(const _Tpvec& a, const _Tpvec& b) \ +{ \ + _Tpvec res = v_fma(a, a, b*b); \ + return _Tpvec(_mm_sqrt_##suffix(res.val)); \ +} \ +inline _Tpvec v_sqr_magnitude(const _Tpvec& a, const _Tpvec& b) \ +{ \ + return v_fma(a, a, b*b); \ +} \ +inline _Tpvec v_muladd(const _Tpvec& a, const _Tpvec& b, const _Tpvec& c) \ +{ \ + return v_fma(a, b, c); \ +} + +OPENCV_HAL_IMPL_SSE_MISC_FLT_OP(v_float32x4, float, __m128, ps, _mm_set1_epi32((int)0x7fffffff)) +OPENCV_HAL_IMPL_SSE_MISC_FLT_OP(v_float64x2, double, __m128d, pd, _mm_srli_epi64(_mm_set1_epi32(-1), 1)) + +#define OPENCV_HAL_IMPL_SSE_SHIFT_OP(_Tpuvec, _Tpsvec, suffix, srai) \ +inline _Tpuvec operator << (const _Tpuvec& a, int imm) \ +{ \ + return _Tpuvec(_mm_slli_##suffix(a.val, imm)); \ +} \ +inline _Tpsvec operator << (const _Tpsvec& a, int imm) \ +{ \ + return _Tpsvec(_mm_slli_##suffix(a.val, imm)); \ +} \ +inline _Tpuvec operator >> (const _Tpuvec& a, int imm) \ +{ \ + return _Tpuvec(_mm_srli_##suffix(a.val, imm)); \ +} \ +inline _Tpsvec operator >> (const _Tpsvec& a, int imm) \ +{ \ + return _Tpsvec(srai(a.val, imm)); \ +} \ +template \ +inline _Tpuvec v_shl(const _Tpuvec& a) \ +{ \ + return _Tpuvec(_mm_slli_##suffix(a.val, imm)); \ +} \ +template \ +inline _Tpsvec v_shl(const _Tpsvec& a) \ +{ \ + return _Tpsvec(_mm_slli_##suffix(a.val, imm)); \ +} \ +template \ +inline _Tpuvec v_shr(const _Tpuvec& a) \ +{ \ + return _Tpuvec(_mm_srli_##suffix(a.val, imm)); \ +} \ +template \ +inline _Tpsvec v_shr(const _Tpsvec& a) \ +{ \ + return _Tpsvec(srai(a.val, imm)); \ +} + +OPENCV_HAL_IMPL_SSE_SHIFT_OP(v_uint16x8, v_int16x8, epi16, _mm_srai_epi16) +OPENCV_HAL_IMPL_SSE_SHIFT_OP(v_uint32x4, v_int32x4, epi32, _mm_srai_epi32) +OPENCV_HAL_IMPL_SSE_SHIFT_OP(v_uint64x2, v_int64x2, epi64, v_srai_epi64) + +namespace hal_sse_internal +{ + template 16)), + bool is_first = (imm == 0), + bool is_half = (imm == 8), + bool is_second = (imm == 16), + bool is_other = (((imm > 0) && (imm < 8)) || ((imm > 8) && (imm < 16)))> + class v_sse_palignr_u8_class; + + template + class v_sse_palignr_u8_class; + + template + class v_sse_palignr_u8_class + { + public: + inline __m128i operator()(const __m128i& a, const __m128i&) const + { + return a; + } + }; + + template + class v_sse_palignr_u8_class + { + public: + inline __m128i operator()(const __m128i& a, const __m128i& b) const + { + return _mm_unpacklo_epi64(_mm_unpackhi_epi64(a, a), b); + } + }; + + template + class v_sse_palignr_u8_class + { + public: + inline __m128i operator()(const __m128i&, const __m128i& b) const + { + return b; + } + }; + + template + class v_sse_palignr_u8_class + { +#if CV_SSSE3 + public: + inline __m128i operator()(const __m128i& a, const __m128i& b) const + { + return _mm_alignr_epi8(b, a, imm); + } +#else + public: + inline __m128i operator()(const __m128i& a, const __m128i& b) const + { + enum { imm2 = (sizeof(__m128i) - imm) }; + return _mm_or_si128(_mm_srli_si128(a, imm), _mm_slli_si128(b, imm2)); + } +#endif + }; + + template + inline __m128i v_sse_palignr_u8(const __m128i& a, const __m128i& b) + { + CV_StaticAssert((imm >= 0) && (imm <= 16), "Invalid imm for v_sse_palignr_u8."); + return v_sse_palignr_u8_class()(a, b); + } +} + +template +inline _Tpvec v_rotate_right(const _Tpvec &a) +{ + using namespace hal_sse_internal; + enum { imm2 = (imm * sizeof(typename _Tpvec::lane_type)) }; + return _Tpvec(v_sse_reinterpret_as( + _mm_srli_si128( + v_sse_reinterpret_as<__m128i>(a.val), imm2))); +} + +template +inline _Tpvec v_rotate_left(const _Tpvec &a) +{ + using namespace hal_sse_internal; + enum { imm2 = (imm * sizeof(typename _Tpvec::lane_type)) }; + return _Tpvec(v_sse_reinterpret_as( + _mm_slli_si128( + v_sse_reinterpret_as<__m128i>(a.val), imm2))); +} + +template +inline _Tpvec v_rotate_right(const _Tpvec &a, const _Tpvec &b) +{ + using namespace hal_sse_internal; + enum { imm2 = (imm * sizeof(typename _Tpvec::lane_type)) }; + return _Tpvec(v_sse_reinterpret_as( + v_sse_palignr_u8( + v_sse_reinterpret_as<__m128i>(a.val), + v_sse_reinterpret_as<__m128i>(b.val)))); +} + +template +inline _Tpvec v_rotate_left(const _Tpvec &a, const _Tpvec &b) +{ + using namespace hal_sse_internal; + enum { imm2 = ((_Tpvec::nlanes - imm) * sizeof(typename _Tpvec::lane_type)) }; + return _Tpvec(v_sse_reinterpret_as( + v_sse_palignr_u8( + v_sse_reinterpret_as<__m128i>(b.val), + v_sse_reinterpret_as<__m128i>(a.val)))); +} + +#define OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(_Tpvec, _Tp) \ +inline _Tpvec v_load(const _Tp* ptr) \ +{ return _Tpvec(_mm_loadu_si128((const __m128i*)ptr)); } \ +inline _Tpvec v_load_aligned(const _Tp* ptr) \ +{ return _Tpvec(_mm_load_si128((const __m128i*)ptr)); } \ +inline _Tpvec v_load_low(const _Tp* ptr) \ +{ return _Tpvec(_mm_loadl_epi64((const __m128i*)ptr)); } \ +inline _Tpvec v_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ +{ \ + return _Tpvec(_mm_unpacklo_epi64(_mm_loadl_epi64((const __m128i*)ptr0), \ + _mm_loadl_epi64((const __m128i*)ptr1))); \ +} \ +inline void v_store(_Tp* ptr, const _Tpvec& a) \ +{ _mm_storeu_si128((__m128i*)ptr, a.val); } \ +inline void v_store_aligned(_Tp* ptr, const _Tpvec& a) \ +{ _mm_store_si128((__m128i*)ptr, a.val); } \ +inline void v_store_aligned_nocache(_Tp* ptr, const _Tpvec& a) \ +{ _mm_stream_si128((__m128i*)ptr, a.val); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode mode) \ +{ \ + if( mode == hal::STORE_UNALIGNED ) \ + _mm_storeu_si128((__m128i*)ptr, a.val); \ + else if( mode == hal::STORE_ALIGNED_NOCACHE ) \ + _mm_stream_si128((__m128i*)ptr, a.val); \ + else \ + _mm_store_si128((__m128i*)ptr, a.val); \ +} \ +inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ +{ _mm_storel_epi64((__m128i*)ptr, a.val); } \ +inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ +{ _mm_storel_epi64((__m128i*)ptr, _mm_unpackhi_epi64(a.val, a.val)); } + +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_uint8x16, uchar) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_int8x16, schar) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_uint16x8, ushort) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_int16x8, short) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_uint32x4, unsigned) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_int32x4, int) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_uint64x2, uint64) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(v_int64x2, int64) + +#define OPENCV_HAL_IMPL_SSE_LOADSTORE_FLT_OP(_Tpvec, _Tp, suffix) \ +inline _Tpvec v_load(const _Tp* ptr) \ +{ return _Tpvec(_mm_loadu_##suffix(ptr)); } \ +inline _Tpvec v_load_aligned(const _Tp* ptr) \ +{ return _Tpvec(_mm_load_##suffix(ptr)); } \ +inline _Tpvec v_load_low(const _Tp* ptr) \ +{ return _Tpvec(_mm_castsi128_##suffix(_mm_loadl_epi64((const __m128i*)ptr))); } \ +inline _Tpvec v_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ +{ \ + return _Tpvec(_mm_castsi128_##suffix( \ + _mm_unpacklo_epi64(_mm_loadl_epi64((const __m128i*)ptr0), \ + _mm_loadl_epi64((const __m128i*)ptr1)))); \ +} \ +inline void v_store(_Tp* ptr, const _Tpvec& a) \ +{ _mm_storeu_##suffix(ptr, a.val); } \ +inline void v_store_aligned(_Tp* ptr, const _Tpvec& a) \ +{ _mm_store_##suffix(ptr, a.val); } \ +inline void v_store_aligned_nocache(_Tp* ptr, const _Tpvec& a) \ +{ _mm_stream_##suffix(ptr, a.val); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode mode) \ +{ \ + if( mode == hal::STORE_UNALIGNED ) \ + _mm_storeu_##suffix(ptr, a.val); \ + else if( mode == hal::STORE_ALIGNED_NOCACHE ) \ + _mm_stream_##suffix(ptr, a.val); \ + else \ + _mm_store_##suffix(ptr, a.val); \ +} \ +inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ +{ _mm_storel_epi64((__m128i*)ptr, _mm_cast##suffix##_si128(a.val)); } \ +inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ +{ \ + __m128i a1 = _mm_cast##suffix##_si128(a.val); \ + _mm_storel_epi64((__m128i*)ptr, _mm_unpackhi_epi64(a1, a1)); \ +} + +OPENCV_HAL_IMPL_SSE_LOADSTORE_FLT_OP(v_float32x4, float, ps) +OPENCV_HAL_IMPL_SSE_LOADSTORE_FLT_OP(v_float64x2, double, pd) + +#define OPENCV_HAL_IMPL_SSE_REDUCE_OP_8(_Tpvec, scalartype, func, suffix, sbit) \ +inline scalartype v_reduce_##func(const v_##_Tpvec& a) \ +{ \ + __m128i val = a.val; \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,8)); \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,4)); \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,2)); \ + return (scalartype)_mm_cvtsi128_si32(val); \ +} \ +inline unsigned scalartype v_reduce_##func(const v_u##_Tpvec& a) \ +{ \ + __m128i val = a.val; \ + __m128i smask = _mm_set1_epi16(sbit); \ + val = _mm_xor_si128(val, smask); \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,8)); \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,4)); \ + val = _mm_##func##_##suffix(val, _mm_srli_si128(val,2)); \ + return (unsigned scalartype)(_mm_cvtsi128_si32(val) ^ sbit); \ +} +#define OPENCV_HAL_IMPL_SSE_REDUCE_OP_8_SUM(_Tpvec, scalartype, suffix) \ +inline scalartype v_reduce_sum(const v_##_Tpvec& a) \ +{ \ + __m128i val = a.val; \ + val = _mm_adds_epi##suffix(val, _mm_srli_si128(val, 8)); \ + val = _mm_adds_epi##suffix(val, _mm_srli_si128(val, 4)); \ + val = _mm_adds_epi##suffix(val, _mm_srli_si128(val, 2)); \ + return (scalartype)_mm_cvtsi128_si32(val); \ +} \ +inline unsigned scalartype v_reduce_sum(const v_u##_Tpvec& a) \ +{ \ + __m128i val = a.val; \ + val = _mm_adds_epu##suffix(val, _mm_srli_si128(val, 8)); \ + val = _mm_adds_epu##suffix(val, _mm_srli_si128(val, 4)); \ + val = _mm_adds_epu##suffix(val, _mm_srli_si128(val, 2)); \ + return (unsigned scalartype)_mm_cvtsi128_si32(val); \ +} +OPENCV_HAL_IMPL_SSE_REDUCE_OP_8(int16x8, short, max, epi16, (short)-32768) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_8(int16x8, short, min, epi16, (short)-32768) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_8_SUM(int16x8, short, 16) + +#define OPENCV_HAL_IMPL_SSE_REDUCE_OP_4_SUM(_Tpvec, scalartype, regtype, suffix, cast_from, cast_to, extract) \ +inline scalartype v_reduce_sum(const _Tpvec& a) \ +{ \ + regtype val = a.val; \ + val = _mm_add_##suffix(val, cast_to(_mm_srli_si128(cast_from(val), 8))); \ + val = _mm_add_##suffix(val, cast_to(_mm_srli_si128(cast_from(val), 4))); \ + return (scalartype)_mm_cvt##extract(val); \ +} + +#define OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(_Tpvec, scalartype, func, scalar_func) \ +inline scalartype v_reduce_##func(const _Tpvec& a) \ +{ \ + scalartype CV_DECL_ALIGNED(16) buf[4]; \ + v_store_aligned(buf, a); \ + scalartype s0 = scalar_func(buf[0], buf[1]); \ + scalartype s1 = scalar_func(buf[2], buf[3]); \ + return scalar_func(s0, s1); \ +} + +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4_SUM(v_uint32x4, unsigned, __m128i, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP, si128_si32) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4_SUM(v_int32x4, int, __m128i, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP, si128_si32) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4_SUM(v_float32x4, float, __m128, ps, _mm_castps_si128, _mm_castsi128_ps, ss_f32) + +inline double v_reduce_sum(const v_float64x2& a) +{ + double CV_DECL_ALIGNED(32) idx[2]; + v_store_aligned(idx, a); + return idx[0] + idx[1]; +} + +inline v_float32x4 v_reduce_sum4(const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, const v_float32x4& d) +{ +#if CV_SSE3 + __m128 ab = _mm_hadd_ps(a.val, b.val); + __m128 cd = _mm_hadd_ps(c.val, d.val); + return v_float32x4(_mm_hadd_ps(ab, cd)); +#else + __m128 ac = _mm_add_ps(_mm_unpacklo_ps(a.val, c.val), _mm_unpackhi_ps(a.val, c.val)); + __m128 bd = _mm_add_ps(_mm_unpacklo_ps(b.val, d.val), _mm_unpackhi_ps(b.val, d.val)); + return v_float32x4(_mm_add_ps(_mm_unpacklo_ps(ac, bd), _mm_unpackhi_ps(ac, bd))); +#endif +} + +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_uint32x4, unsigned, max, std::max) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_uint32x4, unsigned, min, std::min) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_int32x4, int, max, std::max) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_int32x4, int, min, std::min) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_float32x4, float, max, std::max) +OPENCV_HAL_IMPL_SSE_REDUCE_OP_4(v_float32x4, float, min, std::min) + +inline unsigned v_reduce_sad(const v_uint8x16& a, const v_uint8x16& b) +{ + return (unsigned)_mm_cvtsi128_si32(_mm_sad_epu8(a.val, b.val)); +} +inline unsigned v_reduce_sad(const v_int8x16& a, const v_int8x16& b) +{ + __m128i half = _mm_set1_epi8(0x7f); + return (unsigned)_mm_cvtsi128_si32(_mm_sad_epu8(_mm_add_epi8(a.val, half), + _mm_add_epi8(b.val, half))); +} +inline unsigned v_reduce_sad(const v_uint16x8& a, const v_uint16x8& b) +{ + v_uint32x4 l, h; + v_expand(v_absdiff(a, b), l, h); + return v_reduce_sum(l + h); +} +inline unsigned v_reduce_sad(const v_int16x8& a, const v_int16x8& b) +{ + v_uint32x4 l, h; + v_expand(v_absdiff(a, b), l, h); + return v_reduce_sum(l + h); +} +inline unsigned v_reduce_sad(const v_uint32x4& a, const v_uint32x4& b) +{ + return v_reduce_sum(v_absdiff(a, b)); +} +inline unsigned v_reduce_sad(const v_int32x4& a, const v_int32x4& b) +{ + return v_reduce_sum(v_absdiff(a, b)); +} +inline float v_reduce_sad(const v_float32x4& a, const v_float32x4& b) +{ + return v_reduce_sum(v_absdiff(a, b)); +} + +#define OPENCV_HAL_IMPL_SSE_POPCOUNT(_Tpvec) \ +inline v_uint32x4 v_popcount(const _Tpvec& a) \ +{ \ + __m128i m1 = _mm_set1_epi32(0x55555555); \ + __m128i m2 = _mm_set1_epi32(0x33333333); \ + __m128i m4 = _mm_set1_epi32(0x0f0f0f0f); \ + __m128i p = a.val; \ + p = _mm_add_epi32(_mm_and_si128(_mm_srli_epi32(p, 1), m1), _mm_and_si128(p, m1)); \ + p = _mm_add_epi32(_mm_and_si128(_mm_srli_epi32(p, 2), m2), _mm_and_si128(p, m2)); \ + p = _mm_add_epi32(_mm_and_si128(_mm_srli_epi32(p, 4), m4), _mm_and_si128(p, m4)); \ + p = _mm_adds_epi8(p, _mm_srli_si128(p, 1)); \ + p = _mm_adds_epi8(p, _mm_srli_si128(p, 2)); \ + return v_uint32x4(_mm_and_si128(p, _mm_set1_epi32(0x000000ff))); \ +} + +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_uint8x16) +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_uint16x8) +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_uint32x4) +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_int8x16) +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_int16x8) +OPENCV_HAL_IMPL_SSE_POPCOUNT(v_int32x4) + +#define OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(_Tpvec, suffix, pack_op, and_op, signmask, allmask) \ +inline int v_signmask(const _Tpvec& a) \ +{ \ + return and_op(_mm_movemask_##suffix(pack_op(a.val)), signmask); \ +} \ +inline bool v_check_all(const _Tpvec& a) \ +{ return and_op(_mm_movemask_##suffix(a.val), allmask) == allmask; } \ +inline bool v_check_any(const _Tpvec& a) \ +{ return and_op(_mm_movemask_##suffix(a.val), allmask) != 0; } + +#define OPENCV_HAL_PACKS(a) _mm_packs_epi16(a, a) +inline __m128i v_packq_epi32(__m128i a) +{ + __m128i b = _mm_packs_epi32(a, a); + return _mm_packs_epi16(b, b); +} + +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_uint8x16, epi8, OPENCV_HAL_NOP, OPENCV_HAL_1ST, 65535, 65535) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_int8x16, epi8, OPENCV_HAL_NOP, OPENCV_HAL_1ST, 65535, 65535) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_uint16x8, epi8, OPENCV_HAL_PACKS, OPENCV_HAL_AND, 255, (int)0xaaaa) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_int16x8, epi8, OPENCV_HAL_PACKS, OPENCV_HAL_AND, 255, (int)0xaaaa) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_uint32x4, epi8, v_packq_epi32, OPENCV_HAL_AND, 15, (int)0x8888) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_int32x4, epi8, v_packq_epi32, OPENCV_HAL_AND, 15, (int)0x8888) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_float32x4, ps, OPENCV_HAL_NOP, OPENCV_HAL_1ST, 15, 15) +OPENCV_HAL_IMPL_SSE_CHECK_SIGNS(v_float64x2, pd, OPENCV_HAL_NOP, OPENCV_HAL_1ST, 3, 3) + +#if CV_SSE4_1 +#define OPENCV_HAL_IMPL_SSE_SELECT(_Tpvec, cast_ret, cast, suffix) \ +inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(cast_ret(_mm_blendv_##suffix(cast(b.val), cast(a.val), cast(mask.val)))); \ +} + +OPENCV_HAL_IMPL_SSE_SELECT(v_uint8x16, OPENCV_HAL_NOP, OPENCV_HAL_NOP, epi8) +OPENCV_HAL_IMPL_SSE_SELECT(v_int8x16, OPENCV_HAL_NOP, OPENCV_HAL_NOP, epi8) +OPENCV_HAL_IMPL_SSE_SELECT(v_uint16x8, OPENCV_HAL_NOP, OPENCV_HAL_NOP, epi8) +OPENCV_HAL_IMPL_SSE_SELECT(v_int16x8, OPENCV_HAL_NOP, OPENCV_HAL_NOP, epi8) +OPENCV_HAL_IMPL_SSE_SELECT(v_uint32x4, _mm_castps_si128, _mm_castsi128_ps, ps) +OPENCV_HAL_IMPL_SSE_SELECT(v_int32x4, _mm_castps_si128, _mm_castsi128_ps, ps) +// OPENCV_HAL_IMPL_SSE_SELECT(v_uint64x2, TBD, TBD, pd) +// OPENCV_HAL_IMPL_SSE_SELECT(v_int64x2, TBD, TBD, ps) +OPENCV_HAL_IMPL_SSE_SELECT(v_float32x4, OPENCV_HAL_NOP, OPENCV_HAL_NOP, ps) +OPENCV_HAL_IMPL_SSE_SELECT(v_float64x2, OPENCV_HAL_NOP, OPENCV_HAL_NOP, pd) + +#else // CV_SSE4_1 + +#define OPENCV_HAL_IMPL_SSE_SELECT(_Tpvec, suffix) \ +inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \ +{ \ + return _Tpvec(_mm_xor_##suffix(b.val, _mm_and_##suffix(_mm_xor_##suffix(b.val, a.val), mask.val))); \ +} + +OPENCV_HAL_IMPL_SSE_SELECT(v_uint8x16, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_int8x16, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_uint16x8, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_int16x8, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_uint32x4, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_int32x4, si128) +// OPENCV_HAL_IMPL_SSE_SELECT(v_uint64x2, si128) +// OPENCV_HAL_IMPL_SSE_SELECT(v_int64x2, si128) +OPENCV_HAL_IMPL_SSE_SELECT(v_float32x4, ps) +OPENCV_HAL_IMPL_SSE_SELECT(v_float64x2, pd) +#endif + +/* Expand */ +#define OPENCV_HAL_IMPL_SSE_EXPAND(_Tpvec, _Tpwvec, _Tp, intrin) \ + inline void v_expand(const _Tpvec& a, _Tpwvec& b0, _Tpwvec& b1) \ + { \ + b0.val = intrin(a.val); \ + b1.val = __CV_CAT(intrin, _high)(a.val); \ + } \ + inline _Tpwvec v_expand_low(const _Tpvec& a) \ + { return _Tpwvec(intrin(a.val)); } \ + inline _Tpwvec v_expand_high(const _Tpvec& a) \ + { return _Tpwvec(__CV_CAT(intrin, _high)(a.val)); } \ + inline _Tpwvec v_load_expand(const _Tp* ptr) \ + { \ + __m128i a = _mm_loadl_epi64((const __m128i*)ptr); \ + return _Tpwvec(intrin(a)); \ + } + +OPENCV_HAL_IMPL_SSE_EXPAND(v_uint8x16, v_uint16x8, uchar, _v128_cvtepu8_epi16) +OPENCV_HAL_IMPL_SSE_EXPAND(v_int8x16, v_int16x8, schar, _v128_cvtepi8_epi16) +OPENCV_HAL_IMPL_SSE_EXPAND(v_uint16x8, v_uint32x4, ushort, _v128_cvtepu16_epi32) +OPENCV_HAL_IMPL_SSE_EXPAND(v_int16x8, v_int32x4, short, _v128_cvtepi16_epi32) +OPENCV_HAL_IMPL_SSE_EXPAND(v_uint32x4, v_uint64x2, unsigned, _v128_cvtepu32_epi64) +OPENCV_HAL_IMPL_SSE_EXPAND(v_int32x4, v_int64x2, int, _v128_cvtepi32_epi64) + +#define OPENCV_HAL_IMPL_SSE_EXPAND_Q(_Tpvec, _Tp, intrin) \ + inline _Tpvec v_load_expand_q(const _Tp* ptr) \ + { \ + __m128i a = _mm_cvtsi32_si128(*(const int*)ptr); \ + return _Tpvec(intrin(a)); \ + } + +OPENCV_HAL_IMPL_SSE_EXPAND_Q(v_uint32x4, uchar, _v128_cvtepu8_epi32) +OPENCV_HAL_IMPL_SSE_EXPAND_Q(v_int32x4, schar, _v128_cvtepi8_epi32) + +#define OPENCV_HAL_IMPL_SSE_UNPACKS(_Tpvec, suffix, cast_from, cast_to) \ +inline void v_zip(const _Tpvec& a0, const _Tpvec& a1, _Tpvec& b0, _Tpvec& b1) \ +{ \ + b0.val = _mm_unpacklo_##suffix(a0.val, a1.val); \ + b1.val = _mm_unpackhi_##suffix(a0.val, a1.val); \ +} \ +inline _Tpvec v_combine_low(const _Tpvec& a, const _Tpvec& b) \ +{ \ + __m128i a1 = cast_from(a.val), b1 = cast_from(b.val); \ + return _Tpvec(cast_to(_mm_unpacklo_epi64(a1, b1))); \ +} \ +inline _Tpvec v_combine_high(const _Tpvec& a, const _Tpvec& b) \ +{ \ + __m128i a1 = cast_from(a.val), b1 = cast_from(b.val); \ + return _Tpvec(cast_to(_mm_unpackhi_epi64(a1, b1))); \ +} \ +inline void v_recombine(const _Tpvec& a, const _Tpvec& b, _Tpvec& c, _Tpvec& d) \ +{ \ + __m128i a1 = cast_from(a.val), b1 = cast_from(b.val); \ + c.val = cast_to(_mm_unpacklo_epi64(a1, b1)); \ + d.val = cast_to(_mm_unpackhi_epi64(a1, b1)); \ +} + +OPENCV_HAL_IMPL_SSE_UNPACKS(v_uint8x16, epi8, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_int8x16, epi8, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_uint16x8, epi16, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_int16x8, epi16, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_uint32x4, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_int32x4, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_float32x4, ps, _mm_castps_si128, _mm_castsi128_ps) +OPENCV_HAL_IMPL_SSE_UNPACKS(v_float64x2, pd, _mm_castpd_si128, _mm_castsi128_pd) + +template +inline _Tpvec v_extract(const _Tpvec& a, const _Tpvec& b) +{ + return v_rotate_right(a, b); +} + +inline v_int32x4 v_round(const v_float32x4& a) +{ return v_int32x4(_mm_cvtps_epi32(a.val)); } + +inline v_int32x4 v_floor(const v_float32x4& a) +{ + __m128i a1 = _mm_cvtps_epi32(a.val); + __m128i mask = _mm_castps_si128(_mm_cmpgt_ps(_mm_cvtepi32_ps(a1), a.val)); + return v_int32x4(_mm_add_epi32(a1, mask)); +} + +inline v_int32x4 v_ceil(const v_float32x4& a) +{ + __m128i a1 = _mm_cvtps_epi32(a.val); + __m128i mask = _mm_castps_si128(_mm_cmpgt_ps(a.val, _mm_cvtepi32_ps(a1))); + return v_int32x4(_mm_sub_epi32(a1, mask)); +} + +inline v_int32x4 v_trunc(const v_float32x4& a) +{ return v_int32x4(_mm_cvttps_epi32(a.val)); } + +inline v_int32x4 v_round(const v_float64x2& a) +{ return v_int32x4(_mm_cvtpd_epi32(a.val)); } + +inline v_int32x4 v_round(const v_float64x2& a, const v_float64x2& b) +{ + __m128i ai = _mm_cvtpd_epi32(a.val), bi = _mm_cvtpd_epi32(b.val); + return v_int32x4(_mm_unpacklo_epi64(ai, bi)); +} + +inline v_int32x4 v_floor(const v_float64x2& a) +{ + __m128i a1 = _mm_cvtpd_epi32(a.val); + __m128i mask = _mm_castpd_si128(_mm_cmpgt_pd(_mm_cvtepi32_pd(a1), a.val)); + mask = _mm_srli_si128(_mm_slli_si128(mask, 4), 8); // m0 m0 m1 m1 => m0 m1 0 0 + return v_int32x4(_mm_add_epi32(a1, mask)); +} + +inline v_int32x4 v_ceil(const v_float64x2& a) +{ + __m128i a1 = _mm_cvtpd_epi32(a.val); + __m128i mask = _mm_castpd_si128(_mm_cmpgt_pd(a.val, _mm_cvtepi32_pd(a1))); + mask = _mm_srli_si128(_mm_slli_si128(mask, 4), 8); // m0 m0 m1 m1 => m0 m1 0 0 + return v_int32x4(_mm_sub_epi32(a1, mask)); +} + +inline v_int32x4 v_trunc(const v_float64x2& a) +{ return v_int32x4(_mm_cvttpd_epi32(a.val)); } + +#define OPENCV_HAL_IMPL_SSE_TRANSPOSE4x4(_Tpvec, suffix, cast_from, cast_to) \ +inline void v_transpose4x4(const _Tpvec& a0, const _Tpvec& a1, \ + const _Tpvec& a2, const _Tpvec& a3, \ + _Tpvec& b0, _Tpvec& b1, \ + _Tpvec& b2, _Tpvec& b3) \ +{ \ + __m128i t0 = cast_from(_mm_unpacklo_##suffix(a0.val, a1.val)); \ + __m128i t1 = cast_from(_mm_unpacklo_##suffix(a2.val, a3.val)); \ + __m128i t2 = cast_from(_mm_unpackhi_##suffix(a0.val, a1.val)); \ + __m128i t3 = cast_from(_mm_unpackhi_##suffix(a2.val, a3.val)); \ +\ + b0.val = cast_to(_mm_unpacklo_epi64(t0, t1)); \ + b1.val = cast_to(_mm_unpackhi_epi64(t0, t1)); \ + b2.val = cast_to(_mm_unpacklo_epi64(t2, t3)); \ + b3.val = cast_to(_mm_unpackhi_epi64(t2, t3)); \ +} + +OPENCV_HAL_IMPL_SSE_TRANSPOSE4x4(v_uint32x4, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_TRANSPOSE4x4(v_int32x4, epi32, OPENCV_HAL_NOP, OPENCV_HAL_NOP) +OPENCV_HAL_IMPL_SSE_TRANSPOSE4x4(v_float32x4, ps, _mm_castps_si128, _mm_castsi128_ps) + +// load deinterleave +inline void v_load_deinterleave(const uchar* ptr, v_uint8x16& a, v_uint8x16& b) +{ + __m128i t00 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t01 = _mm_loadu_si128((const __m128i*)(ptr + 16)); + + __m128i t10 = _mm_unpacklo_epi8(t00, t01); + __m128i t11 = _mm_unpackhi_epi8(t00, t01); + + __m128i t20 = _mm_unpacklo_epi8(t10, t11); + __m128i t21 = _mm_unpackhi_epi8(t10, t11); + + __m128i t30 = _mm_unpacklo_epi8(t20, t21); + __m128i t31 = _mm_unpackhi_epi8(t20, t21); + + a.val = _mm_unpacklo_epi8(t30, t31); + b.val = _mm_unpackhi_epi8(t30, t31); +} + +inline void v_load_deinterleave(const uchar* ptr, v_uint8x16& a, v_uint8x16& b, v_uint8x16& c) +{ +#if CV_SSE4_1 + const __m128i m0 = _mm_setr_epi8(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0); + const __m128i m1 = _mm_setr_epi8(0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0); + __m128i s0 = _mm_loadu_si128((const __m128i*)ptr); + __m128i s1 = _mm_loadu_si128((const __m128i*)(ptr + 16)); + __m128i s2 = _mm_loadu_si128((const __m128i*)(ptr + 32)); + __m128i a0 = _mm_blendv_epi8(_mm_blendv_epi8(s0, s1, m0), s2, m1); + __m128i b0 = _mm_blendv_epi8(_mm_blendv_epi8(s1, s2, m0), s0, m1); + __m128i c0 = _mm_blendv_epi8(_mm_blendv_epi8(s2, s0, m0), s1, m1); + const __m128i sh_b = _mm_setr_epi8(0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13); + const __m128i sh_g = _mm_setr_epi8(1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2, 5, 8, 11, 14); + const __m128i sh_r = _mm_setr_epi8(2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15); + a0 = _mm_shuffle_epi8(a0, sh_b); + b0 = _mm_shuffle_epi8(b0, sh_g); + c0 = _mm_shuffle_epi8(c0, sh_r); + a.val = a0; + b.val = b0; + c.val = c0; +#elif CV_SSSE3 + const __m128i m0 = _mm_setr_epi8(0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 2, 5, 8, 11, 14); + const __m128i m1 = _mm_alignr_epi8(m0, m0, 11); + const __m128i m2 = _mm_alignr_epi8(m0, m0, 6); + + __m128i t0 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t1 = _mm_loadu_si128((const __m128i*)(ptr + 16)); + __m128i t2 = _mm_loadu_si128((const __m128i*)(ptr + 32)); + + __m128i s0 = _mm_shuffle_epi8(t0, m0); + __m128i s1 = _mm_shuffle_epi8(t1, m1); + __m128i s2 = _mm_shuffle_epi8(t2, m2); + + t0 = _mm_alignr_epi8(s1, _mm_slli_si128(s0, 10), 5); + a.val = _mm_alignr_epi8(s2, t0, 5); + + t1 = _mm_alignr_epi8(_mm_srli_si128(s1, 5), _mm_slli_si128(s0, 5), 6); + b.val = _mm_alignr_epi8(_mm_srli_si128(s2, 5), t1, 5); + + t2 = _mm_alignr_epi8(_mm_srli_si128(s2, 10), s1, 11); + c.val = _mm_alignr_epi8(t2, s0, 11); +#else + __m128i t00 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t01 = _mm_loadu_si128((const __m128i*)(ptr + 16)); + __m128i t02 = _mm_loadu_si128((const __m128i*)(ptr + 32)); + + __m128i t10 = _mm_unpacklo_epi8(t00, _mm_unpackhi_epi64(t01, t01)); + __m128i t11 = _mm_unpacklo_epi8(_mm_unpackhi_epi64(t00, t00), t02); + __m128i t12 = _mm_unpacklo_epi8(t01, _mm_unpackhi_epi64(t02, t02)); + + __m128i t20 = _mm_unpacklo_epi8(t10, _mm_unpackhi_epi64(t11, t11)); + __m128i t21 = _mm_unpacklo_epi8(_mm_unpackhi_epi64(t10, t10), t12); + __m128i t22 = _mm_unpacklo_epi8(t11, _mm_unpackhi_epi64(t12, t12)); + + __m128i t30 = _mm_unpacklo_epi8(t20, _mm_unpackhi_epi64(t21, t21)); + __m128i t31 = _mm_unpacklo_epi8(_mm_unpackhi_epi64(t20, t20), t22); + __m128i t32 = _mm_unpacklo_epi8(t21, _mm_unpackhi_epi64(t22, t22)); + + a.val = _mm_unpacklo_epi8(t30, _mm_unpackhi_epi64(t31, t31)); + b.val = _mm_unpacklo_epi8(_mm_unpackhi_epi64(t30, t30), t32); + c.val = _mm_unpacklo_epi8(t31, _mm_unpackhi_epi64(t32, t32)); +#endif +} + +inline void v_load_deinterleave(const uchar* ptr, v_uint8x16& a, v_uint8x16& b, v_uint8x16& c, v_uint8x16& d) +{ + __m128i u0 = _mm_loadu_si128((const __m128i*)ptr); // a0 b0 c0 d0 a1 b1 c1 d1 ... + __m128i u1 = _mm_loadu_si128((const __m128i*)(ptr + 16)); // a4 b4 c4 d4 ... + __m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 32)); // a8 b8 c8 d8 ... + __m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 48)); // a12 b12 c12 d12 ... + + __m128i v0 = _mm_unpacklo_epi8(u0, u2); // a0 a8 b0 b8 ... + __m128i v1 = _mm_unpackhi_epi8(u0, u2); // a2 a10 b2 b10 ... + __m128i v2 = _mm_unpacklo_epi8(u1, u3); // a4 a12 b4 b12 ... + __m128i v3 = _mm_unpackhi_epi8(u1, u3); // a6 a14 b6 b14 ... + + u0 = _mm_unpacklo_epi8(v0, v2); // a0 a4 a8 a12 ... + u1 = _mm_unpacklo_epi8(v1, v3); // a2 a6 a10 a14 ... + u2 = _mm_unpackhi_epi8(v0, v2); // a1 a5 a9 a13 ... + u3 = _mm_unpackhi_epi8(v1, v3); // a3 a7 a11 a15 ... + + v0 = _mm_unpacklo_epi8(u0, u1); // a0 a2 a4 a6 ... + v1 = _mm_unpacklo_epi8(u2, u3); // a1 a3 a5 a7 ... + v2 = _mm_unpackhi_epi8(u0, u1); // c0 c2 c4 c6 ... + v3 = _mm_unpackhi_epi8(u2, u3); // c1 c3 c5 c7 ... + + a.val = _mm_unpacklo_epi8(v0, v1); + b.val = _mm_unpackhi_epi8(v0, v1); + c.val = _mm_unpacklo_epi8(v2, v3); + d.val = _mm_unpackhi_epi8(v2, v3); +} + +inline void v_load_deinterleave(const ushort* ptr, v_uint16x8& a, v_uint16x8& b) +{ + __m128i v0 = _mm_loadu_si128((__m128i*)(ptr)); // a0 b0 a1 b1 a2 b2 a3 b3 + __m128i v1 = _mm_loadu_si128((__m128i*)(ptr + 8)); // a4 b4 a5 b5 a6 b6 a7 b7 + + __m128i v2 = _mm_unpacklo_epi16(v0, v1); // a0 a4 b0 b4 a1 a5 b1 b5 + __m128i v3 = _mm_unpackhi_epi16(v0, v1); // a2 a6 b2 b6 a3 a7 b3 b7 + __m128i v4 = _mm_unpacklo_epi16(v2, v3); // a0 a2 a4 a6 b0 b2 b4 b6 + __m128i v5 = _mm_unpackhi_epi16(v2, v3); // a1 a3 a5 a7 b1 b3 b5 b7 + + a.val = _mm_unpacklo_epi16(v4, v5); // a0 a1 a2 a3 a4 a5 a6 a7 + b.val = _mm_unpackhi_epi16(v4, v5); // b0 b1 ab b3 b4 b5 b6 b7 +} + +inline void v_load_deinterleave(const ushort* ptr, v_uint16x8& a, v_uint16x8& b, v_uint16x8& c) +{ +#if CV_SSE4_1 + __m128i v0 = _mm_loadu_si128((__m128i*)(ptr)); + __m128i v1 = _mm_loadu_si128((__m128i*)(ptr + 8)); + __m128i v2 = _mm_loadu_si128((__m128i*)(ptr + 16)); + __m128i a0 = _mm_blend_epi16(_mm_blend_epi16(v0, v1, 0x92), v2, 0x24); + __m128i b0 = _mm_blend_epi16(_mm_blend_epi16(v2, v0, 0x92), v1, 0x24); + __m128i c0 = _mm_blend_epi16(_mm_blend_epi16(v1, v2, 0x92), v0, 0x24); + + const __m128i sh_a = _mm_setr_epi8(0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11); + const __m128i sh_b = _mm_setr_epi8(2, 3, 8, 9, 14, 15, 4, 5, 10, 11, 0, 1, 6, 7, 12, 13); + const __m128i sh_c = _mm_setr_epi8(4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15); + a0 = _mm_shuffle_epi8(a0, sh_a); + b0 = _mm_shuffle_epi8(b0, sh_b); + c0 = _mm_shuffle_epi8(c0, sh_c); + + a.val = a0; + b.val = b0; + c.val = c0; +#else + __m128i t00 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t01 = _mm_loadu_si128((const __m128i*)(ptr + 8)); + __m128i t02 = _mm_loadu_si128((const __m128i*)(ptr + 16)); + + __m128i t10 = _mm_unpacklo_epi16(t00, _mm_unpackhi_epi64(t01, t01)); + __m128i t11 = _mm_unpacklo_epi16(_mm_unpackhi_epi64(t00, t00), t02); + __m128i t12 = _mm_unpacklo_epi16(t01, _mm_unpackhi_epi64(t02, t02)); + + __m128i t20 = _mm_unpacklo_epi16(t10, _mm_unpackhi_epi64(t11, t11)); + __m128i t21 = _mm_unpacklo_epi16(_mm_unpackhi_epi64(t10, t10), t12); + __m128i t22 = _mm_unpacklo_epi16(t11, _mm_unpackhi_epi64(t12, t12)); + + a.val = _mm_unpacklo_epi16(t20, _mm_unpackhi_epi64(t21, t21)); + b.val = _mm_unpacklo_epi16(_mm_unpackhi_epi64(t20, t20), t22); + c.val = _mm_unpacklo_epi16(t21, _mm_unpackhi_epi64(t22, t22)); +#endif +} + +inline void v_load_deinterleave(const ushort* ptr, v_uint16x8& a, v_uint16x8& b, v_uint16x8& c, v_uint16x8& d) +{ + __m128i u0 = _mm_loadu_si128((const __m128i*)ptr); // a0 b0 c0 d0 a1 b1 c1 d1 + __m128i u1 = _mm_loadu_si128((const __m128i*)(ptr + 8)); // a2 b2 c2 d2 ... + __m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 16)); // a4 b4 c4 d4 ... + __m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 24)); // a6 b6 c6 d6 ... + + __m128i v0 = _mm_unpacklo_epi16(u0, u2); // a0 a4 b0 b4 ... + __m128i v1 = _mm_unpackhi_epi16(u0, u2); // a1 a5 b1 b5 ... + __m128i v2 = _mm_unpacklo_epi16(u1, u3); // a2 a6 b2 b6 ... + __m128i v3 = _mm_unpackhi_epi16(u1, u3); // a3 a7 b3 b7 ... + + u0 = _mm_unpacklo_epi16(v0, v2); // a0 a2 a4 a6 ... + u1 = _mm_unpacklo_epi16(v1, v3); // a1 a3 a5 a7 ... + u2 = _mm_unpackhi_epi16(v0, v2); // c0 c2 c4 c6 ... + u3 = _mm_unpackhi_epi16(v1, v3); // c1 c3 c5 c7 ... + + a.val = _mm_unpacklo_epi16(u0, u1); + b.val = _mm_unpackhi_epi16(u0, u1); + c.val = _mm_unpacklo_epi16(u2, u3); + d.val = _mm_unpackhi_epi16(u2, u3); +} + +inline void v_load_deinterleave(const unsigned* ptr, v_uint32x4& a, v_uint32x4& b) +{ + __m128i v0 = _mm_loadu_si128((__m128i*)(ptr)); // a0 b0 a1 b1 + __m128i v1 = _mm_loadu_si128((__m128i*)(ptr + 4)); // a2 b2 a3 b3 + + __m128i v2 = _mm_unpacklo_epi32(v0, v1); // a0 a2 b0 b2 + __m128i v3 = _mm_unpackhi_epi32(v0, v1); // a1 a3 b1 b3 + + a.val = _mm_unpacklo_epi32(v2, v3); // a0 a1 a2 a3 + b.val = _mm_unpackhi_epi32(v2, v3); // b0 b1 ab b3 +} + +inline void v_load_deinterleave(const unsigned* ptr, v_uint32x4& a, v_uint32x4& b, v_uint32x4& c) +{ + __m128i t00 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t01 = _mm_loadu_si128((const __m128i*)(ptr + 4)); + __m128i t02 = _mm_loadu_si128((const __m128i*)(ptr + 8)); + + __m128i t10 = _mm_unpacklo_epi32(t00, _mm_unpackhi_epi64(t01, t01)); + __m128i t11 = _mm_unpacklo_epi32(_mm_unpackhi_epi64(t00, t00), t02); + __m128i t12 = _mm_unpacklo_epi32(t01, _mm_unpackhi_epi64(t02, t02)); + + a.val = _mm_unpacklo_epi32(t10, _mm_unpackhi_epi64(t11, t11)); + b.val = _mm_unpacklo_epi32(_mm_unpackhi_epi64(t10, t10), t12); + c.val = _mm_unpacklo_epi32(t11, _mm_unpackhi_epi64(t12, t12)); +} + +inline void v_load_deinterleave(const unsigned* ptr, v_uint32x4& a, v_uint32x4& b, v_uint32x4& c, v_uint32x4& d) +{ + v_uint32x4 s0(_mm_loadu_si128((const __m128i*)ptr)); // a0 b0 c0 d0 + v_uint32x4 s1(_mm_loadu_si128((const __m128i*)(ptr + 4))); // a1 b1 c1 d1 + v_uint32x4 s2(_mm_loadu_si128((const __m128i*)(ptr + 8))); // a2 b2 c2 d2 + v_uint32x4 s3(_mm_loadu_si128((const __m128i*)(ptr + 12))); // a3 b3 c3 d3 + + v_transpose4x4(s0, s1, s2, s3, a, b, c, d); +} + +inline void v_load_deinterleave(const float* ptr, v_float32x4& a, v_float32x4& b) +{ + __m128 u0 = _mm_loadu_ps(ptr); // a0 b0 a1 b1 + __m128 u1 = _mm_loadu_ps((ptr + 4)); // a2 b2 a3 b3 + + a.val = _mm_shuffle_ps(u0, u1, _MM_SHUFFLE(2, 0, 2, 0)); // a0 a1 a2 a3 + b.val = _mm_shuffle_ps(u0, u1, _MM_SHUFFLE(3, 1, 3, 1)); // b0 b1 ab b3 +} + +inline void v_load_deinterleave(const float* ptr, v_float32x4& a, v_float32x4& b, v_float32x4& c) +{ + __m128 t0 = _mm_loadu_ps(ptr + 0); + __m128 t1 = _mm_loadu_ps(ptr + 4); + __m128 t2 = _mm_loadu_ps(ptr + 8); + + __m128 at12 = _mm_shuffle_ps(t1, t2, _MM_SHUFFLE(0, 1, 0, 2)); + a.val = _mm_shuffle_ps(t0, at12, _MM_SHUFFLE(2, 0, 3, 0)); + + __m128 bt01 = _mm_shuffle_ps(t0, t1, _MM_SHUFFLE(0, 0, 0, 1)); + __m128 bt12 = _mm_shuffle_ps(t1, t2, _MM_SHUFFLE(0, 2, 0, 3)); + b.val = _mm_shuffle_ps(bt01, bt12, _MM_SHUFFLE(2, 0, 2, 0)); + + __m128 ct01 = _mm_shuffle_ps(t0, t1, _MM_SHUFFLE(0, 1, 0, 2)); + c.val = _mm_shuffle_ps(ct01, t2, _MM_SHUFFLE(3, 0, 2, 0)); +} + +inline void v_load_deinterleave(const float* ptr, v_float32x4& a, v_float32x4& b, v_float32x4& c, v_float32x4& d) +{ + __m128 t0 = _mm_loadu_ps(ptr + 0); + __m128 t1 = _mm_loadu_ps(ptr + 4); + __m128 t2 = _mm_loadu_ps(ptr + 8); + __m128 t3 = _mm_loadu_ps(ptr + 12); + __m128 t02lo = _mm_unpacklo_ps(t0, t2); + __m128 t13lo = _mm_unpacklo_ps(t1, t3); + __m128 t02hi = _mm_unpackhi_ps(t0, t2); + __m128 t13hi = _mm_unpackhi_ps(t1, t3); + a.val = _mm_unpacklo_ps(t02lo, t13lo); + b.val = _mm_unpackhi_ps(t02lo, t13lo); + c.val = _mm_unpacklo_ps(t02hi, t13hi); + d.val = _mm_unpackhi_ps(t02hi, t13hi); +} + +inline void v_load_deinterleave(const uint64 *ptr, v_uint64x2& a, v_uint64x2& b) +{ + __m128i t0 = _mm_loadu_si128((const __m128i*)ptr); + __m128i t1 = _mm_loadu_si128((const __m128i*)(ptr + 2)); + + a = v_uint64x2(_mm_unpacklo_epi64(t0, t1)); + b = v_uint64x2(_mm_unpackhi_epi64(t0, t1)); +} + +inline void v_load_deinterleave(const uint64 *ptr, v_uint64x2& a, v_uint64x2& b, v_uint64x2& c) +{ + __m128i t0 = _mm_loadu_si128((const __m128i*)ptr); // a0, b0 + __m128i t1 = _mm_loadu_si128((const __m128i*)(ptr + 2)); // c0, a1 + __m128i t2 = _mm_loadu_si128((const __m128i*)(ptr + 4)); // b1, c1 + + t1 = _mm_shuffle_epi32(t1, 0x4e); // a1, c0 + + a = v_uint64x2(_mm_unpacklo_epi64(t0, t1)); + b = v_uint64x2(_mm_unpacklo_epi64(_mm_unpackhi_epi64(t0, t0), t2)); + c = v_uint64x2(_mm_unpackhi_epi64(t1, t2)); +} + +inline void v_load_deinterleave(const uint64 *ptr, v_uint64x2& a, + v_uint64x2& b, v_uint64x2& c, v_uint64x2& d) +{ + __m128i t0 = _mm_loadu_si128((const __m128i*)ptr); // a0 b0 + __m128i t1 = _mm_loadu_si128((const __m128i*)(ptr + 2)); // c0 d0 + __m128i t2 = _mm_loadu_si128((const __m128i*)(ptr + 4)); // a1 b1 + __m128i t3 = _mm_loadu_si128((const __m128i*)(ptr + 6)); // c1 d1 + + a = v_uint64x2(_mm_unpacklo_epi64(t0, t2)); + b = v_uint64x2(_mm_unpackhi_epi64(t0, t2)); + c = v_uint64x2(_mm_unpacklo_epi64(t1, t3)); + d = v_uint64x2(_mm_unpackhi_epi64(t1, t3)); +} + +// store interleave + +inline void v_store_interleave( uchar* ptr, const v_uint8x16& a, const v_uint8x16& b, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi8(a.val, b.val); + __m128i v1 = _mm_unpackhi_epi8(a.val, b.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 16), v1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 16), v1); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 16), v1); + } +} + +inline void v_store_interleave( uchar* ptr, const v_uint8x16& a, const v_uint8x16& b, + const v_uint8x16& c, hal::StoreMode mode = hal::STORE_UNALIGNED) +{ +#if CV_SSE4_1 + const __m128i sh_a = _mm_setr_epi8(0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, 5); + const __m128i sh_b = _mm_setr_epi8(5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10); + const __m128i sh_c = _mm_setr_epi8(10, 5, 0, 11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15); + __m128i a0 = _mm_shuffle_epi8(a.val, sh_a); + __m128i b0 = _mm_shuffle_epi8(b.val, sh_b); + __m128i c0 = _mm_shuffle_epi8(c.val, sh_c); + + const __m128i m0 = _mm_setr_epi8(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0); + const __m128i m1 = _mm_setr_epi8(0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0); + __m128i v0 = _mm_blendv_epi8(_mm_blendv_epi8(a0, b0, m1), c0, m0); + __m128i v1 = _mm_blendv_epi8(_mm_blendv_epi8(b0, c0, m1), a0, m0); + __m128i v2 = _mm_blendv_epi8(_mm_blendv_epi8(c0, a0, m1), b0, m0); +#elif CV_SSSE3 + const __m128i m0 = _mm_setr_epi8(0, 6, 11, 1, 7, 12, 2, 8, 13, 3, 9, 14, 4, 10, 15, 5); + const __m128i m1 = _mm_setr_epi8(5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10); + const __m128i m2 = _mm_setr_epi8(10, 0, 5, 11, 1, 6, 12, 2, 7, 13, 3, 8, 14, 4, 9, 15); + + __m128i t0 = _mm_alignr_epi8(b.val, _mm_slli_si128(a.val, 10), 5); + t0 = _mm_alignr_epi8(c.val, t0, 5); + __m128i v0 = _mm_shuffle_epi8(t0, m0); + + __m128i t1 = _mm_alignr_epi8(_mm_srli_si128(b.val, 5), _mm_slli_si128(a.val, 5), 6); + t1 = _mm_alignr_epi8(_mm_srli_si128(c.val, 5), t1, 5); + __m128i v1 = _mm_shuffle_epi8(t1, m1); + + __m128i t2 = _mm_alignr_epi8(_mm_srli_si128(c.val, 10), b.val, 11); + t2 = _mm_alignr_epi8(t2, a.val, 11); + __m128i v2 = _mm_shuffle_epi8(t2, m2); +#else + __m128i z = _mm_setzero_si128(); + __m128i ab0 = _mm_unpacklo_epi8(a.val, b.val); + __m128i ab1 = _mm_unpackhi_epi8(a.val, b.val); + __m128i c0 = _mm_unpacklo_epi8(c.val, z); + __m128i c1 = _mm_unpackhi_epi8(c.val, z); + + __m128i p00 = _mm_unpacklo_epi16(ab0, c0); + __m128i p01 = _mm_unpackhi_epi16(ab0, c0); + __m128i p02 = _mm_unpacklo_epi16(ab1, c1); + __m128i p03 = _mm_unpackhi_epi16(ab1, c1); + + __m128i p10 = _mm_unpacklo_epi32(p00, p01); + __m128i p11 = _mm_unpackhi_epi32(p00, p01); + __m128i p12 = _mm_unpacklo_epi32(p02, p03); + __m128i p13 = _mm_unpackhi_epi32(p02, p03); + + __m128i p20 = _mm_unpacklo_epi64(p10, p11); + __m128i p21 = _mm_unpackhi_epi64(p10, p11); + __m128i p22 = _mm_unpacklo_epi64(p12, p13); + __m128i p23 = _mm_unpackhi_epi64(p12, p13); + + p20 = _mm_slli_si128(p20, 1); + p22 = _mm_slli_si128(p22, 1); + + __m128i p30 = _mm_slli_epi64(_mm_unpacklo_epi32(p20, p21), 8); + __m128i p31 = _mm_srli_epi64(_mm_unpackhi_epi32(p20, p21), 8); + __m128i p32 = _mm_slli_epi64(_mm_unpacklo_epi32(p22, p23), 8); + __m128i p33 = _mm_srli_epi64(_mm_unpackhi_epi32(p22, p23), 8); + + __m128i p40 = _mm_unpacklo_epi64(p30, p31); + __m128i p41 = _mm_unpackhi_epi64(p30, p31); + __m128i p42 = _mm_unpacklo_epi64(p32, p33); + __m128i p43 = _mm_unpackhi_epi64(p32, p33); + + __m128i v0 = _mm_or_si128(_mm_srli_si128(p40, 2), _mm_slli_si128(p41, 10)); + __m128i v1 = _mm_or_si128(_mm_srli_si128(p41, 6), _mm_slli_si128(p42, 6)); + __m128i v2 = _mm_or_si128(_mm_srli_si128(p42, 10), _mm_slli_si128(p43, 2)); +#endif + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 16), v1); + _mm_stream_si128((__m128i*)(ptr + 32), v2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 16), v1); + _mm_store_si128((__m128i*)(ptr + 32), v2); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 16), v1); + _mm_storeu_si128((__m128i*)(ptr + 32), v2); + } +} + +inline void v_store_interleave( uchar* ptr, const v_uint8x16& a, const v_uint8x16& b, + const v_uint8x16& c, const v_uint8x16& d, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + // a0 a1 a2 a3 .... + // b0 b1 b2 b3 .... + // c0 c1 c2 c3 .... + // d0 d1 d2 d3 .... + __m128i u0 = _mm_unpacklo_epi8(a.val, c.val); // a0 c0 a1 c1 ... + __m128i u1 = _mm_unpackhi_epi8(a.val, c.val); // a8 c8 a9 c9 ... + __m128i u2 = _mm_unpacklo_epi8(b.val, d.val); // b0 d0 b1 d1 ... + __m128i u3 = _mm_unpackhi_epi8(b.val, d.val); // b8 d8 b9 d9 ... + + __m128i v0 = _mm_unpacklo_epi8(u0, u2); // a0 b0 c0 d0 ... + __m128i v1 = _mm_unpackhi_epi8(u0, u2); // a4 b4 c4 d4 ... + __m128i v2 = _mm_unpacklo_epi8(u1, u3); // a8 b8 c8 d8 ... + __m128i v3 = _mm_unpackhi_epi8(u1, u3); // a12 b12 c12 d12 ... + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 16), v1); + _mm_stream_si128((__m128i*)(ptr + 32), v2); + _mm_stream_si128((__m128i*)(ptr + 48), v3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 16), v1); + _mm_store_si128((__m128i*)(ptr + 32), v2); + _mm_store_si128((__m128i*)(ptr + 48), v3); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 16), v1); + _mm_storeu_si128((__m128i*)(ptr + 32), v2); + _mm_storeu_si128((__m128i*)(ptr + 48), v3); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x8& a, const v_uint16x8& b, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi16(a.val, b.val); + __m128i v1 = _mm_unpackhi_epi16(a.val, b.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 8), v1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 8), v1); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 8), v1); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x8& a, + const v_uint16x8& b, const v_uint16x8& c, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ +#if CV_SSE4_1 + const __m128i sh_a = _mm_setr_epi8(0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5, 10, 11); + const __m128i sh_b = _mm_setr_epi8(10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15, 4, 5); + const __m128i sh_c = _mm_setr_epi8(4, 5, 10, 11, 0, 1, 6, 7, 12, 13, 2, 3, 8, 9, 14, 15); + __m128i a0 = _mm_shuffle_epi8(a.val, sh_a); + __m128i b0 = _mm_shuffle_epi8(b.val, sh_b); + __m128i c0 = _mm_shuffle_epi8(c.val, sh_c); + + __m128i v0 = _mm_blend_epi16(_mm_blend_epi16(a0, b0, 0x92), c0, 0x24); + __m128i v1 = _mm_blend_epi16(_mm_blend_epi16(c0, a0, 0x92), b0, 0x24); + __m128i v2 = _mm_blend_epi16(_mm_blend_epi16(b0, c0, 0x92), a0, 0x24); +#else + __m128i z = _mm_setzero_si128(); + __m128i ab0 = _mm_unpacklo_epi16(a.val, b.val); + __m128i ab1 = _mm_unpackhi_epi16(a.val, b.val); + __m128i c0 = _mm_unpacklo_epi16(c.val, z); + __m128i c1 = _mm_unpackhi_epi16(c.val, z); + + __m128i p10 = _mm_unpacklo_epi32(ab0, c0); + __m128i p11 = _mm_unpackhi_epi32(ab0, c0); + __m128i p12 = _mm_unpacklo_epi32(ab1, c1); + __m128i p13 = _mm_unpackhi_epi32(ab1, c1); + + __m128i p20 = _mm_unpacklo_epi64(p10, p11); + __m128i p21 = _mm_unpackhi_epi64(p10, p11); + __m128i p22 = _mm_unpacklo_epi64(p12, p13); + __m128i p23 = _mm_unpackhi_epi64(p12, p13); + + p20 = _mm_slli_si128(p20, 2); + p22 = _mm_slli_si128(p22, 2); + + __m128i p30 = _mm_unpacklo_epi64(p20, p21); + __m128i p31 = _mm_unpackhi_epi64(p20, p21); + __m128i p32 = _mm_unpacklo_epi64(p22, p23); + __m128i p33 = _mm_unpackhi_epi64(p22, p23); + + __m128i v0 = _mm_or_si128(_mm_srli_si128(p30, 2), _mm_slli_si128(p31, 10)); + __m128i v1 = _mm_or_si128(_mm_srli_si128(p31, 6), _mm_slli_si128(p32, 6)); + __m128i v2 = _mm_or_si128(_mm_srli_si128(p32, 10), _mm_slli_si128(p33, 2)); +#endif + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 8), v1); + _mm_stream_si128((__m128i*)(ptr + 16), v2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 8), v1); + _mm_store_si128((__m128i*)(ptr + 16), v2); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 8), v1); + _mm_storeu_si128((__m128i*)(ptr + 16), v2); + } +} + +inline void v_store_interleave( ushort* ptr, const v_uint16x8& a, const v_uint16x8& b, + const v_uint16x8& c, const v_uint16x8& d, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + // a0 a1 a2 a3 .... + // b0 b1 b2 b3 .... + // c0 c1 c2 c3 .... + // d0 d1 d2 d3 .... + __m128i u0 = _mm_unpacklo_epi16(a.val, c.val); // a0 c0 a1 c1 ... + __m128i u1 = _mm_unpackhi_epi16(a.val, c.val); // a4 c4 a5 c5 ... + __m128i u2 = _mm_unpacklo_epi16(b.val, d.val); // b0 d0 b1 d1 ... + __m128i u3 = _mm_unpackhi_epi16(b.val, d.val); // b4 d4 b5 d5 ... + + __m128i v0 = _mm_unpacklo_epi16(u0, u2); // a0 b0 c0 d0 ... + __m128i v1 = _mm_unpackhi_epi16(u0, u2); // a2 b2 c2 d2 ... + __m128i v2 = _mm_unpacklo_epi16(u1, u3); // a4 b4 c4 d4 ... + __m128i v3 = _mm_unpackhi_epi16(u1, u3); // a6 b6 c6 d6 ... + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 8), v1); + _mm_stream_si128((__m128i*)(ptr + 16), v2); + _mm_stream_si128((__m128i*)(ptr + 24), v3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 8), v1); + _mm_store_si128((__m128i*)(ptr + 16), v2); + _mm_store_si128((__m128i*)(ptr + 24), v3); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 8), v1); + _mm_storeu_si128((__m128i*)(ptr + 16), v2); + _mm_storeu_si128((__m128i*)(ptr + 24), v3); + } +} + +inline void v_store_interleave( unsigned* ptr, const v_uint32x4& a, const v_uint32x4& b, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi32(a.val, b.val); + __m128i v1 = _mm_unpackhi_epi32(a.val, b.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 4), v1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 4), v1); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 4), v1); + } +} + +inline void v_store_interleave( unsigned* ptr, const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + v_uint32x4 z = v_setzero_u32(), u0, u1, u2, u3; + v_transpose4x4(a, b, c, z, u0, u1, u2, u3); + + __m128i v0 = _mm_or_si128(u0.val, _mm_slli_si128(u1.val, 12)); + __m128i v1 = _mm_or_si128(_mm_srli_si128(u1.val, 4), _mm_slli_si128(u2.val, 8)); + __m128i v2 = _mm_or_si128(_mm_srli_si128(u2.val, 8), _mm_slli_si128(u3.val, 4)); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 4), v1); + _mm_stream_si128((__m128i*)(ptr + 8), v2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 4), v1); + _mm_store_si128((__m128i*)(ptr + 8), v2); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 4), v1); + _mm_storeu_si128((__m128i*)(ptr + 8), v2); + } +} + +inline void v_store_interleave(unsigned* ptr, const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, const v_uint32x4& d, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + v_uint32x4 v0, v1, v2, v3; + v_transpose4x4(a, b, c, d, v0, v1, v2, v3); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0.val); + _mm_stream_si128((__m128i*)(ptr + 4), v1.val); + _mm_stream_si128((__m128i*)(ptr + 8), v2.val); + _mm_stream_si128((__m128i*)(ptr + 12), v3.val); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0.val); + _mm_store_si128((__m128i*)(ptr + 4), v1.val); + _mm_store_si128((__m128i*)(ptr + 8), v2.val); + _mm_store_si128((__m128i*)(ptr + 12), v3.val); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0.val); + _mm_storeu_si128((__m128i*)(ptr + 4), v1.val); + _mm_storeu_si128((__m128i*)(ptr + 8), v2.val); + _mm_storeu_si128((__m128i*)(ptr + 12), v3.val); + } +} + +// 2-channel, float only +inline void v_store_interleave(float* ptr, const v_float32x4& a, const v_float32x4& b, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128 v0 = _mm_unpacklo_ps(a.val, b.val); // a0 b0 a1 b1 + __m128 v1 = _mm_unpackhi_ps(a.val, b.val); // a2 b2 a3 b3 + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_ps(ptr, v0); + _mm_stream_ps(ptr + 4, v1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_ps(ptr, v0); + _mm_store_ps(ptr + 4, v1); + } + else + { + _mm_storeu_ps(ptr, v0); + _mm_storeu_ps(ptr + 4, v1); + } +} + +inline void v_store_interleave(float* ptr, const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128 u0 = _mm_shuffle_ps(a.val, b.val, _MM_SHUFFLE(0, 0, 0, 0)); + __m128 u1 = _mm_shuffle_ps(c.val, a.val, _MM_SHUFFLE(1, 1, 0, 0)); + __m128 v0 = _mm_shuffle_ps(u0, u1, _MM_SHUFFLE(2, 0, 2, 0)); + __m128 u2 = _mm_shuffle_ps(b.val, c.val, _MM_SHUFFLE(1, 1, 1, 1)); + __m128 u3 = _mm_shuffle_ps(a.val, b.val, _MM_SHUFFLE(2, 2, 2, 2)); + __m128 v1 = _mm_shuffle_ps(u2, u3, _MM_SHUFFLE(2, 0, 2, 0)); + __m128 u4 = _mm_shuffle_ps(c.val, a.val, _MM_SHUFFLE(3, 3, 2, 2)); + __m128 u5 = _mm_shuffle_ps(b.val, c.val, _MM_SHUFFLE(3, 3, 3, 3)); + __m128 v2 = _mm_shuffle_ps(u4, u5, _MM_SHUFFLE(2, 0, 2, 0)); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_ps(ptr, v0); + _mm_stream_ps(ptr + 4, v1); + _mm_stream_ps(ptr + 8, v2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_ps(ptr, v0); + _mm_store_ps(ptr + 4, v1); + _mm_store_ps(ptr + 8, v2); + } + else + { + _mm_storeu_ps(ptr, v0); + _mm_storeu_ps(ptr + 4, v1); + _mm_storeu_ps(ptr + 8, v2); + } +} + +inline void v_store_interleave(float* ptr, const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, const v_float32x4& d, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128 u0 = _mm_unpacklo_ps(a.val, c.val); + __m128 u1 = _mm_unpacklo_ps(b.val, d.val); + __m128 u2 = _mm_unpackhi_ps(a.val, c.val); + __m128 u3 = _mm_unpackhi_ps(b.val, d.val); + __m128 v0 = _mm_unpacklo_ps(u0, u1); + __m128 v2 = _mm_unpacklo_ps(u2, u3); + __m128 v1 = _mm_unpackhi_ps(u0, u1); + __m128 v3 = _mm_unpackhi_ps(u2, u3); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_ps(ptr, v0); + _mm_stream_ps(ptr + 4, v1); + _mm_stream_ps(ptr + 8, v2); + _mm_stream_ps(ptr + 12, v3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_ps(ptr, v0); + _mm_store_ps(ptr + 4, v1); + _mm_store_ps(ptr + 8, v2); + _mm_store_ps(ptr + 12, v3); + } + else + { + _mm_storeu_ps(ptr, v0); + _mm_storeu_ps(ptr + 4, v1); + _mm_storeu_ps(ptr + 8, v2); + _mm_storeu_ps(ptr + 12, v3); + } +} + +inline void v_store_interleave(uint64 *ptr, const v_uint64x2& a, const v_uint64x2& b, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi64(a.val, b.val); + __m128i v1 = _mm_unpackhi_epi64(a.val, b.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 2), v1); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 2), v1); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 2), v1); + } +} + +inline void v_store_interleave(uint64 *ptr, const v_uint64x2& a, const v_uint64x2& b, + const v_uint64x2& c, hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi64(a.val, b.val); + __m128i v1 = _mm_unpacklo_epi64(c.val, _mm_unpackhi_epi64(a.val, a.val)); + __m128i v2 = _mm_unpackhi_epi64(b.val, c.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 2), v1); + _mm_stream_si128((__m128i*)(ptr + 4), v2); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 2), v1); + _mm_store_si128((__m128i*)(ptr + 4), v2); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 2), v1); + _mm_storeu_si128((__m128i*)(ptr + 4), v2); + } +} + +inline void v_store_interleave(uint64 *ptr, const v_uint64x2& a, const v_uint64x2& b, + const v_uint64x2& c, const v_uint64x2& d, + hal::StoreMode mode = hal::STORE_UNALIGNED) +{ + __m128i v0 = _mm_unpacklo_epi64(a.val, b.val); + __m128i v1 = _mm_unpacklo_epi64(c.val, d.val); + __m128i v2 = _mm_unpackhi_epi64(a.val, b.val); + __m128i v3 = _mm_unpackhi_epi64(c.val, d.val); + + if( mode == hal::STORE_ALIGNED_NOCACHE ) + { + _mm_stream_si128((__m128i*)(ptr), v0); + _mm_stream_si128((__m128i*)(ptr + 2), v1); + _mm_stream_si128((__m128i*)(ptr + 4), v2); + _mm_stream_si128((__m128i*)(ptr + 6), v3); + } + else if( mode == hal::STORE_ALIGNED ) + { + _mm_store_si128((__m128i*)(ptr), v0); + _mm_store_si128((__m128i*)(ptr + 2), v1); + _mm_store_si128((__m128i*)(ptr + 4), v2); + _mm_store_si128((__m128i*)(ptr + 6), v3); + } + else + { + _mm_storeu_si128((__m128i*)(ptr), v0); + _mm_storeu_si128((__m128i*)(ptr + 2), v1); + _mm_storeu_si128((__m128i*)(ptr + 4), v2); + _mm_storeu_si128((__m128i*)(ptr + 6), v3); + } +} + +#define OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(_Tpvec0, _Tp0, suffix0, _Tpvec1, _Tp1, suffix1) \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0 ) \ +{ \ + _Tpvec1 a1, b1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ +} \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0, _Tpvec0& c0 ) \ +{ \ + _Tpvec1 a1, b1, c1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1, c1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ + c0 = v_reinterpret_as_##suffix0(c1); \ +} \ +inline void v_load_deinterleave( const _Tp0* ptr, _Tpvec0& a0, _Tpvec0& b0, _Tpvec0& c0, _Tpvec0& d0 ) \ +{ \ + _Tpvec1 a1, b1, c1, d1; \ + v_load_deinterleave((const _Tp1*)ptr, a1, b1, c1, d1); \ + a0 = v_reinterpret_as_##suffix0(a1); \ + b0 = v_reinterpret_as_##suffix0(b1); \ + c0 = v_reinterpret_as_##suffix0(c1); \ + d0 = v_reinterpret_as_##suffix0(d1); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, \ + hal::StoreMode mode = hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, mode); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, \ + const _Tpvec0& c0, hal::StoreMode mode = hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + _Tpvec1 c1 = v_reinterpret_as_##suffix1(c0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, c1, mode); \ +} \ +inline void v_store_interleave( _Tp0* ptr, const _Tpvec0& a0, const _Tpvec0& b0, \ + const _Tpvec0& c0, const _Tpvec0& d0, \ + hal::StoreMode mode = hal::STORE_UNALIGNED ) \ +{ \ + _Tpvec1 a1 = v_reinterpret_as_##suffix1(a0); \ + _Tpvec1 b1 = v_reinterpret_as_##suffix1(b0); \ + _Tpvec1 c1 = v_reinterpret_as_##suffix1(c0); \ + _Tpvec1 d1 = v_reinterpret_as_##suffix1(d0); \ + v_store_interleave((_Tp1*)ptr, a1, b1, c1, d1, mode); \ +} + +OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(v_int8x16, schar, s8, v_uint8x16, uchar, u8) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(v_int16x8, short, s16, v_uint16x8, ushort, u16) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(v_int32x4, int, s32, v_uint32x4, unsigned, u32) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(v_int64x2, int64, s64, v_uint64x2, uint64, u64) +OPENCV_HAL_IMPL_SSE_LOADSTORE_INTERLEAVE(v_float64x2, double, f64, v_uint64x2, uint64, u64) + +inline v_float32x4 v_cvt_f32(const v_int32x4& a) +{ + return v_float32x4(_mm_cvtepi32_ps(a.val)); +} + +inline v_float32x4 v_cvt_f32(const v_float64x2& a) +{ + return v_float32x4(_mm_cvtpd_ps(a.val)); +} + +inline v_float32x4 v_cvt_f32(const v_float64x2& a, const v_float64x2& b) +{ + return v_float32x4(_mm_movelh_ps(_mm_cvtpd_ps(a.val), _mm_cvtpd_ps(b.val))); +} + +inline v_float64x2 v_cvt_f64(const v_int32x4& a) +{ + return v_float64x2(_mm_cvtepi32_pd(a.val)); +} + +inline v_float64x2 v_cvt_f64_high(const v_int32x4& a) +{ + return v_float64x2(_mm_cvtepi32_pd(_mm_srli_si128(a.val,8))); +} + +inline v_float64x2 v_cvt_f64(const v_float32x4& a) +{ + return v_float64x2(_mm_cvtps_pd(a.val)); +} + +inline v_float64x2 v_cvt_f64_high(const v_float32x4& a) +{ + return v_float64x2(_mm_cvtps_pd(_mm_movehl_ps(a.val, a.val))); +} + +#if CV_FP16 +inline v_float32x4 v128_load_fp16_f32(const short* ptr) +{ + return v_float32x4(_mm_cvtph_ps(_mm_loadu_si128((const __m128i*)ptr))); +} + +inline void v_store_fp16(short* ptr, const v_float32x4& a) +{ + __m128i fp16_value = _mm_cvtps_ph(a.val, 0); + _mm_storel_epi64((__m128i*)ptr, fp16_value); +} +#endif + +////////////// Lookup table access //////////////////// + +inline v_int8x16 v_lut(const schar* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int8x16(_mm_setr_epi8(tab[idx[0]], tab[idx[1]], tab[idx[ 2]], tab[idx[ 3]], tab[idx[ 4]], tab[idx[ 5]], tab[idx[ 6]], tab[idx[ 7]], + tab[idx[8]], tab[idx[9]], tab[idx[10]], tab[idx[11]], tab[idx[12]], tab[idx[13]], tab[idx[14]], tab[idx[15]])); +#else + return v_int8x16(_mm_setr_epi64( + _mm_setr_pi8(tab[idx[0]], tab[idx[1]], tab[idx[ 2]], tab[idx[ 3]], tab[idx[ 4]], tab[idx[ 5]], tab[idx[ 6]], tab[idx[ 7]]), + _mm_setr_pi8(tab[idx[8]], tab[idx[9]], tab[idx[10]], tab[idx[11]], tab[idx[12]], tab[idx[13]], tab[idx[14]], tab[idx[15]]) + )); +#endif +} +inline v_int8x16 v_lut_pairs(const schar* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int8x16(_mm_setr_epi16(*(const short*)(tab + idx[0]), *(const short*)(tab + idx[1]), *(const short*)(tab + idx[2]), *(const short*)(tab + idx[3]), + *(const short*)(tab + idx[4]), *(const short*)(tab + idx[5]), *(const short*)(tab + idx[6]), *(const short*)(tab + idx[7]))); +#else + return v_int8x16(_mm_setr_epi64( + _mm_setr_pi16(*(const short*)(tab + idx[0]), *(const short*)(tab + idx[1]), *(const short*)(tab + idx[2]), *(const short*)(tab + idx[3])), + _mm_setr_pi16(*(const short*)(tab + idx[4]), *(const short*)(tab + idx[5]), *(const short*)(tab + idx[6]), *(const short*)(tab + idx[7])) + )); +#endif +} +inline v_int8x16 v_lut_quads(const schar* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int8x16(_mm_setr_epi32(*(const int*)(tab + idx[0]), *(const int*)(tab + idx[1]), + *(const int*)(tab + idx[2]), *(const int*)(tab + idx[3]))); +#else + return v_int8x16(_mm_setr_epi64( + _mm_setr_pi32(*(const int*)(tab + idx[0]), *(const int*)(tab + idx[1])), + _mm_setr_pi32(*(const int*)(tab + idx[2]), *(const int*)(tab + idx[3])) + )); +#endif +} +inline v_uint8x16 v_lut(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut((const schar *)tab, idx)); } +inline v_uint8x16 v_lut_pairs(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_pairs((const schar *)tab, idx)); } +inline v_uint8x16 v_lut_quads(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_quads((const schar *)tab, idx)); } + +inline v_int16x8 v_lut(const short* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int16x8(_mm_setr_epi16(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]], + tab[idx[4]], tab[idx[5]], tab[idx[6]], tab[idx[7]])); +#else + return v_int16x8(_mm_setr_epi64( + _mm_setr_pi16(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]), + _mm_setr_pi16(tab[idx[4]], tab[idx[5]], tab[idx[6]], tab[idx[7]]) + )); +#endif +} +inline v_int16x8 v_lut_pairs(const short* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int16x8(_mm_setr_epi32(*(const int*)(tab + idx[0]), *(const int*)(tab + idx[1]), + *(const int*)(tab + idx[2]), *(const int*)(tab + idx[3]))); +#else + return v_int16x8(_mm_setr_epi64( + _mm_setr_pi32(*(const int*)(tab + idx[0]), *(const int*)(tab + idx[1])), + _mm_setr_pi32(*(const int*)(tab + idx[2]), *(const int*)(tab + idx[3])) + )); +#endif +} +inline v_int16x8 v_lut_quads(const short* tab, const int* idx) +{ + return v_int16x8(_mm_set_epi64x(*(const int64_t*)(tab + idx[1]), *(const int64_t*)(tab + idx[0]))); +} +inline v_uint16x8 v_lut(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut((const short *)tab, idx)); } +inline v_uint16x8 v_lut_pairs(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_pairs((const short *)tab, idx)); } +inline v_uint16x8 v_lut_quads(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_quads((const short *)tab, idx)); } + +inline v_int32x4 v_lut(const int* tab, const int* idx) +{ +#if defined(_MSC_VER) + return v_int32x4(_mm_setr_epi32(tab[idx[0]], tab[idx[1]], + tab[idx[2]], tab[idx[3]])); +#else + return v_int32x4(_mm_setr_epi64( + _mm_setr_pi32(tab[idx[0]], tab[idx[1]]), + _mm_setr_pi32(tab[idx[2]], tab[idx[3]]) + )); +#endif +} +inline v_int32x4 v_lut_pairs(const int* tab, const int* idx) +{ + return v_int32x4(_mm_set_epi64x(*(const int64_t*)(tab + idx[1]), *(const int64_t*)(tab + idx[0]))); +} +inline v_int32x4 v_lut_quads(const int* tab, const int* idx) +{ + return v_int32x4(_mm_loadu_si128((const __m128i*)(tab + idx[0]))); +} +inline v_uint32x4 v_lut(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut((const int *)tab, idx)); } +inline v_uint32x4 v_lut_pairs(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_pairs((const int *)tab, idx)); } +inline v_uint32x4 v_lut_quads(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_quads((const int *)tab, idx)); } + +inline v_int64x2 v_lut(const int64_t* tab, const int* idx) +{ + return v_int64x2(_mm_set_epi64x(tab[idx[1]], tab[idx[0]])); +} +inline v_int64x2 v_lut_pairs(const int64_t* tab, const int* idx) +{ + return v_int64x2(_mm_loadu_si128((const __m128i*)(tab + idx[0]))); +} +inline v_uint64x2 v_lut(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut((const int64_t *)tab, idx)); } +inline v_uint64x2 v_lut_pairs(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut_pairs((const int64_t *)tab, idx)); } + +inline v_float32x4 v_lut(const float* tab, const int* idx) +{ + return v_float32x4(_mm_setr_ps(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]])); +} +inline v_float32x4 v_lut_pairs(const float* tab, const int* idx) { return v_reinterpret_as_f32(v_lut_pairs((const int *)tab, idx)); } +inline v_float32x4 v_lut_quads(const float* tab, const int* idx) { return v_reinterpret_as_f32(v_lut_quads((const int *)tab, idx)); } + +inline v_float64x2 v_lut(const double* tab, const int* idx) +{ + return v_float64x2(_mm_setr_pd(tab[idx[0]], tab[idx[1]])); +} +inline v_float64x2 v_lut_pairs(const double* tab, const int* idx) { return v_float64x2(_mm_castsi128_pd(_mm_loadu_si128((const __m128i*)(tab + idx[0])))); } + +inline v_int32x4 v_lut(const int* tab, const v_int32x4& idxvec) +{ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_aligned(idx, idxvec); + return v_int32x4(_mm_setr_epi32(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]])); +} + +inline v_uint32x4 v_lut(const unsigned* tab, const v_int32x4& idxvec) +{ + return v_reinterpret_as_u32(v_lut((const int *)tab, idxvec)); +} + +inline v_float32x4 v_lut(const float* tab, const v_int32x4& idxvec) +{ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_aligned(idx, idxvec); + return v_float32x4(_mm_setr_ps(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]])); +} + +inline v_float64x2 v_lut(const double* tab, const v_int32x4& idxvec) +{ + int idx[2]; + v_store_low(idx, idxvec); + return v_float64x2(_mm_setr_pd(tab[idx[0]], tab[idx[1]])); +} + +// loads pairs from the table and deinterleaves them, e.g. returns: +// x = (tab[idxvec[0], tab[idxvec[1]], tab[idxvec[2]], tab[idxvec[3]]), +// y = (tab[idxvec[0]+1], tab[idxvec[1]+1], tab[idxvec[2]+1], tab[idxvec[3]+1]) +// note that the indices are float's indices, not the float-pair indices. +// in theory, this function can be used to implement bilinear interpolation, +// when idxvec are the offsets within the image. +inline void v_lut_deinterleave(const float* tab, const v_int32x4& idxvec, v_float32x4& x, v_float32x4& y) +{ + int CV_DECL_ALIGNED(32) idx[4]; + v_store_aligned(idx, idxvec); + __m128 z = _mm_setzero_ps(); + __m128 xy01 = _mm_loadl_pi(z, (__m64*)(tab + idx[0])); + __m128 xy23 = _mm_loadl_pi(z, (__m64*)(tab + idx[2])); + xy01 = _mm_loadh_pi(xy01, (__m64*)(tab + idx[1])); + xy23 = _mm_loadh_pi(xy23, (__m64*)(tab + idx[3])); + __m128 xxyy02 = _mm_unpacklo_ps(xy01, xy23); + __m128 xxyy13 = _mm_unpackhi_ps(xy01, xy23); + x = v_float32x4(_mm_unpacklo_ps(xxyy02, xxyy13)); + y = v_float32x4(_mm_unpackhi_ps(xxyy02, xxyy13)); +} + +inline void v_lut_deinterleave(const double* tab, const v_int32x4& idxvec, v_float64x2& x, v_float64x2& y) +{ + int idx[2]; + v_store_low(idx, idxvec); + __m128d xy0 = _mm_loadu_pd(tab + idx[0]); + __m128d xy1 = _mm_loadu_pd(tab + idx[1]); + x = v_float64x2(_mm_unpacklo_pd(xy0, xy1)); + y = v_float64x2(_mm_unpackhi_pd(xy0, xy1)); +} + +inline v_int8x16 v_interleave_pairs(const v_int8x16& vec) +{ +#if CV_SSSE3 + return v_int8x16(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0x0f0d0e0c0b090a08, 0x0705060403010200))); +#else + __m128i a = _mm_shufflelo_epi16(vec.val, _MM_SHUFFLE(3, 1, 2, 0)); + a = _mm_shufflehi_epi16(a, _MM_SHUFFLE(3, 1, 2, 0)); + a = _mm_shuffle_epi32(a, _MM_SHUFFLE(3, 1, 2, 0)); + return v_int8x16(_mm_unpacklo_epi8(a, _mm_unpackhi_epi64(a, a))); +#endif +} +inline v_uint8x16 v_interleave_pairs(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_interleave_pairs(v_reinterpret_as_s8(vec))); } +inline v_int8x16 v_interleave_quads(const v_int8x16& vec) +{ +#if CV_SSSE3 + return v_int8x16(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0x0f0b0e0a0d090c08, 0x0703060205010400))); +#else + __m128i a = _mm_shuffle_epi32(vec.val, _MM_SHUFFLE(3, 1, 2, 0)); + return v_int8x16(_mm_unpacklo_epi8(a, _mm_unpackhi_epi64(a, a))); +#endif +} +inline v_uint8x16 v_interleave_quads(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_interleave_quads(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_interleave_pairs(const v_int16x8& vec) +{ +#if CV_SSSE3 + return v_int16x8(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0x0f0e0b0a0d0c0908, 0x0706030205040100))); +#else + __m128i a = _mm_shufflelo_epi16(vec.val, _MM_SHUFFLE(3, 1, 2, 0)); + return v_int16x8(_mm_shufflehi_epi16(a, _MM_SHUFFLE(3, 1, 2, 0))); +#endif +} +inline v_uint16x8 v_interleave_pairs(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_interleave_pairs(v_reinterpret_as_s16(vec))); } +inline v_int16x8 v_interleave_quads(const v_int16x8& vec) +{ +#if CV_SSSE3 + return v_int16x8(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0x0f0e07060d0c0504, 0x0b0a030209080100))); +#else + return v_int16x8(_mm_unpacklo_epi16(vec.val, _mm_unpackhi_epi64(vec.val, vec.val))); +#endif +} +inline v_uint16x8 v_interleave_quads(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_interleave_quads(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_interleave_pairs(const v_int32x4& vec) +{ + return v_int32x4(_mm_shuffle_epi32(vec.val, _MM_SHUFFLE(3, 1, 2, 0))); +} +inline v_uint32x4 v_interleave_pairs(const v_uint32x4& vec) { return v_reinterpret_as_u32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } +inline v_float32x4 v_interleave_pairs(const v_float32x4& vec) { return v_reinterpret_as_f32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } + +inline v_int8x16 v_pack_triplets(const v_int8x16& vec) +{ +#if CV_SSSE3 + return v_int8x16(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0xffffff0f0e0d0c0a, 0x0908060504020100))); +#else + __m128i mask = _mm_set1_epi64x(0x00000000FFFFFFFF); + __m128i a = _mm_srli_si128(_mm_or_si128(_mm_andnot_si128(mask, vec.val), _mm_and_si128(mask, _mm_sll_epi32(vec.val, _mm_set_epi64x(0, 8)))), 1); + return v_int8x16(_mm_srli_si128(_mm_shufflelo_epi16(a, _MM_SHUFFLE(2, 1, 0, 3)), 2)); +#endif +} +inline v_uint8x16 v_pack_triplets(const v_uint8x16& vec) { return v_reinterpret_as_u8(v_pack_triplets(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_pack_triplets(const v_int16x8& vec) +{ +#if CV_SSSE3 + return v_int16x8(_mm_shuffle_epi8(vec.val, _mm_set_epi64x(0xffff0f0e0d0c0b0a, 0x0908050403020100))); +#else + return v_int16x8(_mm_srli_si128(_mm_shufflelo_epi16(vec.val, _MM_SHUFFLE(2, 1, 0, 3)), 2)); +#endif +} +inline v_uint16x8 v_pack_triplets(const v_uint16x8& vec) { return v_reinterpret_as_u16(v_pack_triplets(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_pack_triplets(const v_int32x4& vec) { return vec; } +inline v_uint32x4 v_pack_triplets(const v_uint32x4& vec) { return vec; } +inline v_float32x4 v_pack_triplets(const v_float32x4& vec) { return vec; } + +////////////// FP16 support /////////////////////////// + +inline v_float32x4 v_load_expand(const float16_t* ptr) +{ + const __m128i z = _mm_setzero_si128(), delta = _mm_set1_epi32(0x38000000); + const __m128i signmask = _mm_set1_epi32(0x80000000), maxexp = _mm_set1_epi32(0x7c000000); + const __m128 deltaf = _mm_castsi128_ps(_mm_set1_epi32(0x38800000)); + __m128i bits = _mm_unpacklo_epi16(z, _mm_loadl_epi64((const __m128i*)ptr)); // h << 16 + __m128i e = _mm_and_si128(bits, maxexp), sign = _mm_and_si128(bits, signmask); + __m128i t = _mm_add_epi32(_mm_srli_epi32(_mm_xor_si128(bits, sign), 3), delta); // ((h & 0x7fff) << 13) + delta + __m128i zt = _mm_castps_si128(_mm_sub_ps(_mm_castsi128_ps(_mm_add_epi32(t, _mm_set1_epi32(1 << 23))), deltaf)); + + t = _mm_add_epi32(t, _mm_and_si128(delta, _mm_cmpeq_epi32(maxexp, e))); + __m128i zmask = _mm_cmpeq_epi32(e, z); + __m128i ft = v_select_si128(zmask, zt, t); + return v_float32x4(_mm_castsi128_ps(_mm_or_si128(ft, sign))); +} + +inline void v_pack_store(float16_t* ptr, const v_float32x4& v) +{ + const __m128i signmask = _mm_set1_epi32(0x80000000); + const __m128i rval = _mm_set1_epi32(0x3f000000); + + __m128i t = _mm_castps_si128(v.val); + __m128i sign = _mm_srai_epi32(_mm_and_si128(t, signmask), 16); + t = _mm_andnot_si128(signmask, t); + + __m128i finitemask = _mm_cmpgt_epi32(_mm_set1_epi32(0x47800000), t); + __m128i isnan = _mm_cmpgt_epi32(t, _mm_set1_epi32(0x7f800000)); + __m128i naninf = v_select_si128(isnan, _mm_set1_epi32(0x7e00), _mm_set1_epi32(0x7c00)); + __m128i tinymask = _mm_cmpgt_epi32(_mm_set1_epi32(0x38800000), t); + __m128i tt = _mm_castps_si128(_mm_add_ps(_mm_castsi128_ps(t), _mm_castsi128_ps(rval))); + tt = _mm_sub_epi32(tt, rval); + __m128i odd = _mm_and_si128(_mm_srli_epi32(t, 13), _mm_set1_epi32(1)); + __m128i nt = _mm_add_epi32(t, _mm_set1_epi32(0xc8000fff)); + nt = _mm_srli_epi32(_mm_add_epi32(nt, odd), 13); + t = v_select_si128(tinymask, tt, nt); + t = v_select_si128(finitemask, t, naninf); + t = _mm_or_si128(t, sign); + t = _mm_packs_epi32(t, t); + _mm_storel_epi64((__m128i*)ptr, t); +} + +inline void v_cleanup() {} + +//! @name Check SIMD support +//! @{ +//! @brief Check CPU capability of SIMD operation +static inline bool hasSIMD128() +{ + return (CV_CPU_HAS_SUPPORT_SSE2) ? true : false; +} + +//! @} + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse_em.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse_em.hpp new file mode 100644 index 0000000..be27668 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_sse_em.hpp @@ -0,0 +1,167 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +#ifndef OPENCV_HAL_INTRIN_SSE_EM_HPP +#define OPENCV_HAL_INTRIN_SSE_EM_HPP + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +#define OPENCV_HAL_SSE_WRAP_1(fun, tp) \ + inline tp _v128_##fun(const tp& a) \ + { return _mm_##fun(a); } + +#define OPENCV_HAL_SSE_WRAP_2(fun, tp) \ + inline tp _v128_##fun(const tp& a, const tp& b) \ + { return _mm_##fun(a, b); } + +#define OPENCV_HAL_SSE_WRAP_3(fun, tp) \ + inline tp _v128_##fun(const tp& a, const tp& b, const tp& c) \ + { return _mm_##fun(a, b, c); } + +///////////////////////////// XOP ///////////////////////////// + +// [todo] define CV_XOP +#if 1 // CV_XOP +inline __m128i _v128_comgt_epu32(const __m128i& a, const __m128i& b) +{ + const __m128i delta = _mm_set1_epi32((int)0x80000000); + return _mm_cmpgt_epi32(_mm_xor_si128(a, delta), _mm_xor_si128(b, delta)); +} +// wrapping XOP +#else +OPENCV_HAL_SSE_WRAP_2(_v128_comgt_epu32, __m128i) +#endif // !CV_XOP + +///////////////////////////// SSE4.1 ///////////////////////////// + +#if !CV_SSE4_1 + +/** Swizzle **/ +inline __m128i _v128_blendv_epi8(const __m128i& a, const __m128i& b, const __m128i& mask) +{ return _mm_xor_si128(a, _mm_and_si128(_mm_xor_si128(b, a), mask)); } + +/** Convert **/ +// 8 >> 16 +inline __m128i _v128_cvtepu8_epi16(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpacklo_epi8(a, z); +} +inline __m128i _v128_cvtepi8_epi16(const __m128i& a) +{ return _mm_srai_epi16(_mm_unpacklo_epi8(a, a), 8); } +// 8 >> 32 +inline __m128i _v128_cvtepu8_epi32(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpacklo_epi16(_mm_unpacklo_epi8(a, z), z); +} +inline __m128i _v128_cvtepi8_epi32(const __m128i& a) +{ + __m128i r = _mm_unpacklo_epi8(a, a); + r = _mm_unpacklo_epi8(r, r); + return _mm_srai_epi32(r, 24); +} +// 16 >> 32 +inline __m128i _v128_cvtepu16_epi32(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpacklo_epi16(a, z); +} +inline __m128i _v128_cvtepi16_epi32(const __m128i& a) +{ return _mm_srai_epi32(_mm_unpacklo_epi16(a, a), 16); } +// 32 >> 64 +inline __m128i _v128_cvtepu32_epi64(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpacklo_epi32(a, z); +} +inline __m128i _v128_cvtepi32_epi64(const __m128i& a) +{ return _mm_unpacklo_epi32(a, _mm_srai_epi32(a, 31)); } + +/** Arithmetic **/ +inline __m128i _v128_mullo_epi32(const __m128i& a, const __m128i& b) +{ + __m128i c0 = _mm_mul_epu32(a, b); + __m128i c1 = _mm_mul_epu32(_mm_srli_epi64(a, 32), _mm_srli_epi64(b, 32)); + __m128i d0 = _mm_unpacklo_epi32(c0, c1); + __m128i d1 = _mm_unpackhi_epi32(c0, c1); + return _mm_unpacklo_epi64(d0, d1); +} + +/** Math **/ +inline __m128i _v128_min_epu32(const __m128i& a, const __m128i& b) +{ return _v128_blendv_epi8(a, b, _v128_comgt_epu32(a, b)); } + +// wrapping SSE4.1 +#else +OPENCV_HAL_SSE_WRAP_1(cvtepu8_epi16, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepi8_epi16, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepu8_epi32, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepi8_epi32, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepu16_epi32, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepi16_epi32, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepu32_epi64, __m128i) +OPENCV_HAL_SSE_WRAP_1(cvtepi32_epi64, __m128i) +OPENCV_HAL_SSE_WRAP_2(min_epu32, __m128i) +OPENCV_HAL_SSE_WRAP_2(mullo_epi32, __m128i) +OPENCV_HAL_SSE_WRAP_3(blendv_epi8, __m128i) +#endif // !CV_SSE4_1 + +///////////////////////////// Revolutionary ///////////////////////////// + +/** Convert **/ +// 16 << 8 +inline __m128i _v128_cvtepu8_epi16_high(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpackhi_epi8(a, z); +} +inline __m128i _v128_cvtepi8_epi16_high(const __m128i& a) +{ return _mm_srai_epi16(_mm_unpackhi_epi8(a, a), 8); } +// 32 << 16 +inline __m128i _v128_cvtepu16_epi32_high(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpackhi_epi16(a, z); +} +inline __m128i _v128_cvtepi16_epi32_high(const __m128i& a) +{ return _mm_srai_epi32(_mm_unpackhi_epi16(a, a), 16); } +// 64 << 32 +inline __m128i _v128_cvtepu32_epi64_high(const __m128i& a) +{ + const __m128i z = _mm_setzero_si128(); + return _mm_unpackhi_epi32(a, z); +} +inline __m128i _v128_cvtepi32_epi64_high(const __m128i& a) +{ return _mm_unpackhi_epi32(a, _mm_srai_epi32(a, 31)); } + +/** Miscellaneous **/ +inline __m128i _v128_packs_epu32(const __m128i& a, const __m128i& b) +{ + const __m128i m = _mm_set1_epi32(65535); + __m128i am = _v128_min_epu32(a, m); + __m128i bm = _v128_min_epu32(b, m); +#if CV_SSE4_1 + return _mm_packus_epi32(am, bm); +#else + const __m128i d = _mm_set1_epi32(32768), nd = _mm_set1_epi16(-32768); + am = _mm_sub_epi32(am, d); + bm = _mm_sub_epi32(bm, d); + am = _mm_packs_epi32(am, bm); + return _mm_sub_epi16(am, nd); +#endif +} + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} // cv:: + +#endif // OPENCV_HAL_INTRIN_SSE_EM_HPP \ No newline at end of file diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_vsx.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_vsx.hpp new file mode 100644 index 0000000..c5ceb11 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/hal/intrin_vsx.hpp @@ -0,0 +1,1328 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +#ifndef OPENCV_HAL_VSX_HPP +#define OPENCV_HAL_VSX_HPP + +#include +#include "opencv2/core/utility.hpp" + +#define CV_SIMD128 1 +#define CV_SIMD128_64F 1 + +namespace cv +{ + +//! @cond IGNORED + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN + +///////// Types //////////// + +struct v_uint8x16 +{ + typedef uchar lane_type; + enum { nlanes = 16 }; + vec_uchar16 val; + + explicit v_uint8x16(const vec_uchar16& v) : val(v) + {} + v_uint8x16() : val(vec_uchar16_z) + {} + v_uint8x16(vec_bchar16 v) : val(vec_uchar16_c(v)) + {} + v_uint8x16(uchar v0, uchar v1, uchar v2, uchar v3, uchar v4, uchar v5, uchar v6, uchar v7, + uchar v8, uchar v9, uchar v10, uchar v11, uchar v12, uchar v13, uchar v14, uchar v15) + : val(vec_uchar16_set(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) + {} + uchar get0() const + { return vec_extract(val, 0); } +}; + +struct v_int8x16 +{ + typedef schar lane_type; + enum { nlanes = 16 }; + vec_char16 val; + + explicit v_int8x16(const vec_char16& v) : val(v) + {} + v_int8x16() : val(vec_char16_z) + {} + v_int8x16(vec_bchar16 v) : val(vec_char16_c(v)) + {} + v_int8x16(schar v0, schar v1, schar v2, schar v3, schar v4, schar v5, schar v6, schar v7, + schar v8, schar v9, schar v10, schar v11, schar v12, schar v13, schar v14, schar v15) + : val(vec_char16_set(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) + {} + schar get0() const + { return vec_extract(val, 0); } +}; + +struct v_uint16x8 +{ + typedef ushort lane_type; + enum { nlanes = 8 }; + vec_ushort8 val; + + explicit v_uint16x8(const vec_ushort8& v) : val(v) + {} + v_uint16x8() : val(vec_ushort8_z) + {} + v_uint16x8(vec_bshort8 v) : val(vec_ushort8_c(v)) + {} + v_uint16x8(ushort v0, ushort v1, ushort v2, ushort v3, ushort v4, ushort v5, ushort v6, ushort v7) + : val(vec_ushort8_set(v0, v1, v2, v3, v4, v5, v6, v7)) + {} + ushort get0() const + { return vec_extract(val, 0); } +}; + +struct v_int16x8 +{ + typedef short lane_type; + enum { nlanes = 8 }; + vec_short8 val; + + explicit v_int16x8(const vec_short8& v) : val(v) + {} + v_int16x8() : val(vec_short8_z) + {} + v_int16x8(vec_bshort8 v) : val(vec_short8_c(v)) + {} + v_int16x8(short v0, short v1, short v2, short v3, short v4, short v5, short v6, short v7) + : val(vec_short8_set(v0, v1, v2, v3, v4, v5, v6, v7)) + {} + short get0() const + { return vec_extract(val, 0); } +}; + +struct v_uint32x4 +{ + typedef unsigned lane_type; + enum { nlanes = 4 }; + vec_uint4 val; + + explicit v_uint32x4(const vec_uint4& v) : val(v) + {} + v_uint32x4() : val(vec_uint4_z) + {} + v_uint32x4(vec_bint4 v) : val(vec_uint4_c(v)) + {} + v_uint32x4(unsigned v0, unsigned v1, unsigned v2, unsigned v3) : val(vec_uint4_set(v0, v1, v2, v3)) + {} + uint get0() const + { return vec_extract(val, 0); } +}; + +struct v_int32x4 +{ + typedef int lane_type; + enum { nlanes = 4 }; + vec_int4 val; + + explicit v_int32x4(const vec_int4& v) : val(v) + {} + v_int32x4() : val(vec_int4_z) + {} + v_int32x4(vec_bint4 v) : val(vec_int4_c(v)) + {} + v_int32x4(int v0, int v1, int v2, int v3) : val(vec_int4_set(v0, v1, v2, v3)) + {} + int get0() const + { return vec_extract(val, 0); } +}; + +struct v_float32x4 +{ + typedef float lane_type; + enum { nlanes = 4 }; + vec_float4 val; + + explicit v_float32x4(const vec_float4& v) : val(v) + {} + v_float32x4() : val(vec_float4_z) + {} + v_float32x4(vec_bint4 v) : val(vec_float4_c(v)) + {} + v_float32x4(float v0, float v1, float v2, float v3) : val(vec_float4_set(v0, v1, v2, v3)) + {} + float get0() const + { return vec_extract(val, 0); } +}; + +struct v_uint64x2 +{ + typedef uint64 lane_type; + enum { nlanes = 2 }; + vec_udword2 val; + + explicit v_uint64x2(const vec_udword2& v) : val(v) + {} + v_uint64x2() : val(vec_udword2_z) + {} + v_uint64x2(vec_bdword2 v) : val(vec_udword2_c(v)) + {} + v_uint64x2(uint64 v0, uint64 v1) : val(vec_udword2_set(v0, v1)) + {} + uint64 get0() const + { return vec_extract(val, 0); } +}; + +struct v_int64x2 +{ + typedef int64 lane_type; + enum { nlanes = 2 }; + vec_dword2 val; + + explicit v_int64x2(const vec_dword2& v) : val(v) + {} + v_int64x2() : val(vec_dword2_z) + {} + v_int64x2(vec_bdword2 v) : val(vec_dword2_c(v)) + {} + v_int64x2(int64 v0, int64 v1) : val(vec_dword2_set(v0, v1)) + {} + int64 get0() const + { return vec_extract(val, 0); } +}; + +struct v_float64x2 +{ + typedef double lane_type; + enum { nlanes = 2 }; + vec_double2 val; + + explicit v_float64x2(const vec_double2& v) : val(v) + {} + v_float64x2() : val(vec_double2_z) + {} + v_float64x2(vec_bdword2 v) : val(vec_double2_c(v)) + {} + v_float64x2(double v0, double v1) : val(vec_double2_set(v0, v1)) + {} + double get0() const + { return vec_extract(val, 0); } +}; + +//////////////// Load and store operations /////////////// + +/* + * clang-5 aborted during parse "vec_xxx_c" only if it's + * inside a function template which is defined by preprocessor macro. + * + * if vec_xxx_c defined as C++ cast, clang-5 will pass it +*/ +#define OPENCV_HAL_IMPL_VSX_INITVEC(_Tpvec, _Tp, suffix, cast) \ +inline _Tpvec v_setzero_##suffix() { return _Tpvec(); } \ +inline _Tpvec v_setall_##suffix(_Tp v) { return _Tpvec(vec_splats((_Tp)v));} \ +template inline _Tpvec v_reinterpret_as_##suffix(const _Tpvec0 &a) \ +{ return _Tpvec((cast)a.val); } + +OPENCV_HAL_IMPL_VSX_INITVEC(v_uint8x16, uchar, u8, vec_uchar16) +OPENCV_HAL_IMPL_VSX_INITVEC(v_int8x16, schar, s8, vec_char16) +OPENCV_HAL_IMPL_VSX_INITVEC(v_uint16x8, ushort, u16, vec_ushort8) +OPENCV_HAL_IMPL_VSX_INITVEC(v_int16x8, short, s16, vec_short8) +OPENCV_HAL_IMPL_VSX_INITVEC(v_uint32x4, uint, u32, vec_uint4) +OPENCV_HAL_IMPL_VSX_INITVEC(v_int32x4, int, s32, vec_int4) +OPENCV_HAL_IMPL_VSX_INITVEC(v_uint64x2, uint64, u64, vec_udword2) +OPENCV_HAL_IMPL_VSX_INITVEC(v_int64x2, int64, s64, vec_dword2) +OPENCV_HAL_IMPL_VSX_INITVEC(v_float32x4, float, f32, vec_float4) +OPENCV_HAL_IMPL_VSX_INITVEC(v_float64x2, double, f64, vec_double2) + +#define OPENCV_HAL_IMPL_VSX_LOADSTORE_C(_Tpvec, _Tp, ld, ld_a, st, st_a) \ +inline _Tpvec v_load(const _Tp* ptr) \ +{ return _Tpvec(ld(0, ptr)); } \ +inline _Tpvec v_load_aligned(VSX_UNUSED(const _Tp* ptr)) \ +{ return _Tpvec(ld_a(0, ptr)); } \ +inline _Tpvec v_load_low(const _Tp* ptr) \ +{ return _Tpvec(vec_ld_l8(ptr)); } \ +inline _Tpvec v_load_halves(const _Tp* ptr0, const _Tp* ptr1) \ +{ return _Tpvec(vec_mergesqh(vec_ld_l8(ptr0), vec_ld_l8(ptr1))); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a) \ +{ st(a.val, 0, ptr); } \ +inline void v_store_aligned(VSX_UNUSED(_Tp* ptr), const _Tpvec& a) \ +{ st_a(a.val, 0, ptr); } \ +inline void v_store_aligned_nocache(VSX_UNUSED(_Tp* ptr), const _Tpvec& a) \ +{ st_a(a.val, 0, ptr); } \ +inline void v_store(_Tp* ptr, const _Tpvec& a, hal::StoreMode mode) \ +{ if(mode == hal::STORE_UNALIGNED) st(a.val, 0, ptr); else st_a(a.val, 0, ptr); } \ +inline void v_store_low(_Tp* ptr, const _Tpvec& a) \ +{ vec_st_l8(a.val, ptr); } \ +inline void v_store_high(_Tp* ptr, const _Tpvec& a) \ +{ vec_st_h8(a.val, ptr); } + +// working around gcc bug for aligned ld/st +// if runtime check for vec_ld/st fail we failback to unaligned ld/st +// https://github.com/opencv/opencv/issues/13211 +#ifdef CV_COMPILER_VSX_BROKEN_ALIGNED + #define OPENCV_HAL_IMPL_VSX_LOADSTORE(_Tpvec, _Tp) \ + OPENCV_HAL_IMPL_VSX_LOADSTORE_C(_Tpvec, _Tp, vsx_ld, vsx_ld, vsx_st, vsx_st) +#else + #define OPENCV_HAL_IMPL_VSX_LOADSTORE(_Tpvec, _Tp) \ + OPENCV_HAL_IMPL_VSX_LOADSTORE_C(_Tpvec, _Tp, vsx_ld, vec_ld, vsx_st, vec_st) +#endif + +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_uint8x16, uchar) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_int8x16, schar) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_uint16x8, ushort) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_int16x8, short) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_uint32x4, uint) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_int32x4, int) +OPENCV_HAL_IMPL_VSX_LOADSTORE(v_float32x4, float) + +OPENCV_HAL_IMPL_VSX_LOADSTORE_C(v_float64x2, double, vsx_ld, vsx_ld, vsx_st, vsx_st) +OPENCV_HAL_IMPL_VSX_LOADSTORE_C(v_uint64x2, uint64, vsx_ld2, vsx_ld2, vsx_st2, vsx_st2) +OPENCV_HAL_IMPL_VSX_LOADSTORE_C(v_int64x2, int64, vsx_ld2, vsx_ld2, vsx_st2, vsx_st2) + +//////////////// Value reordering /////////////// + +/* de&interleave */ +#define OPENCV_HAL_IMPL_VSX_INTERLEAVE(_Tp, _Tpvec) \ +inline void v_load_deinterleave(const _Tp* ptr, _Tpvec& a, _Tpvec& b) \ +{ vec_ld_deinterleave(ptr, a.val, b.val);} \ +inline void v_load_deinterleave(const _Tp* ptr, _Tpvec& a, \ + _Tpvec& b, _Tpvec& c) \ +{ vec_ld_deinterleave(ptr, a.val, b.val, c.val); } \ +inline void v_load_deinterleave(const _Tp* ptr, _Tpvec& a, _Tpvec& b, \ + _Tpvec& c, _Tpvec& d) \ +{ vec_ld_deinterleave(ptr, a.val, b.val, c.val, d.val); } \ +inline void v_store_interleave(_Tp* ptr, const _Tpvec& a, const _Tpvec& b, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ vec_st_interleave(a.val, b.val, ptr); } \ +inline void v_store_interleave(_Tp* ptr, const _Tpvec& a, \ + const _Tpvec& b, const _Tpvec& c, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ vec_st_interleave(a.val, b.val, c.val, ptr); } \ +inline void v_store_interleave(_Tp* ptr, const _Tpvec& a, const _Tpvec& b, \ + const _Tpvec& c, const _Tpvec& d, \ + hal::StoreMode /*mode*/=hal::STORE_UNALIGNED) \ +{ vec_st_interleave(a.val, b.val, c.val, d.val, ptr); } + +OPENCV_HAL_IMPL_VSX_INTERLEAVE(uchar, v_uint8x16) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(schar, v_int8x16) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(ushort, v_uint16x8) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(short, v_int16x8) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(uint, v_uint32x4) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(int, v_int32x4) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(float, v_float32x4) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(double, v_float64x2) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(int64, v_int64x2) +OPENCV_HAL_IMPL_VSX_INTERLEAVE(uint64, v_uint64x2) + +/* Expand */ +#define OPENCV_HAL_IMPL_VSX_EXPAND(_Tpvec, _Tpwvec, _Tp, fl, fh) \ +inline void v_expand(const _Tpvec& a, _Tpwvec& b0, _Tpwvec& b1) \ +{ \ + b0.val = fh(a.val); \ + b1.val = fl(a.val); \ +} \ +inline _Tpwvec v_expand_low(const _Tpvec& a) \ +{ return _Tpwvec(fh(a.val)); } \ +inline _Tpwvec v_expand_high(const _Tpvec& a) \ +{ return _Tpwvec(fl(a.val)); } \ +inline _Tpwvec v_load_expand(const _Tp* ptr) \ +{ return _Tpwvec(fh(vec_ld_l8(ptr))); } + +OPENCV_HAL_IMPL_VSX_EXPAND(v_uint8x16, v_uint16x8, uchar, vec_unpacklu, vec_unpackhu) +OPENCV_HAL_IMPL_VSX_EXPAND(v_int8x16, v_int16x8, schar, vec_unpackl, vec_unpackh) +OPENCV_HAL_IMPL_VSX_EXPAND(v_uint16x8, v_uint32x4, ushort, vec_unpacklu, vec_unpackhu) +OPENCV_HAL_IMPL_VSX_EXPAND(v_int16x8, v_int32x4, short, vec_unpackl, vec_unpackh) +OPENCV_HAL_IMPL_VSX_EXPAND(v_uint32x4, v_uint64x2, uint, vec_unpacklu, vec_unpackhu) +OPENCV_HAL_IMPL_VSX_EXPAND(v_int32x4, v_int64x2, int, vec_unpackl, vec_unpackh) + +inline v_uint32x4 v_load_expand_q(const uchar* ptr) +{ return v_uint32x4(vec_uint4_set(ptr[0], ptr[1], ptr[2], ptr[3])); } + +inline v_int32x4 v_load_expand_q(const schar* ptr) +{ return v_int32x4(vec_int4_set(ptr[0], ptr[1], ptr[2], ptr[3])); } + +/* pack */ +#define OPENCV_HAL_IMPL_VSX_PACK(_Tpvec, _Tp, _Tpwvec, _Tpvn, _Tpdel, sfnc, pkfnc, addfnc, pack) \ +inline _Tpvec v_##pack(const _Tpwvec& a, const _Tpwvec& b) \ +{ \ + return _Tpvec(pkfnc(a.val, b.val)); \ +} \ +inline void v_##pack##_store(_Tp* ptr, const _Tpwvec& a) \ +{ \ + vec_st_l8(pkfnc(a.val, a.val), ptr); \ +} \ +template \ +inline _Tpvec v_rshr_##pack(const _Tpwvec& a, const _Tpwvec& b) \ +{ \ + const __vector _Tpvn vn = vec_splats((_Tpvn)n); \ + const __vector _Tpdel delta = vec_splats((_Tpdel)((_Tpdel)1 << (n-1))); \ + return _Tpvec(pkfnc(sfnc(addfnc(a.val, delta), vn), sfnc(addfnc(b.val, delta), vn))); \ +} \ +template \ +inline void v_rshr_##pack##_store(_Tp* ptr, const _Tpwvec& a) \ +{ \ + const __vector _Tpvn vn = vec_splats((_Tpvn)n); \ + const __vector _Tpdel delta = vec_splats((_Tpdel)((_Tpdel)1 << (n-1))); \ + vec_st_l8(pkfnc(sfnc(addfnc(a.val, delta), vn), delta), ptr); \ +} + +OPENCV_HAL_IMPL_VSX_PACK(v_uint8x16, uchar, v_uint16x8, unsigned short, unsigned short, + vec_sr, vec_packs, vec_adds, pack) +OPENCV_HAL_IMPL_VSX_PACK(v_int8x16, schar, v_int16x8, unsigned short, short, + vec_sra, vec_packs, vec_adds, pack) + +OPENCV_HAL_IMPL_VSX_PACK(v_uint16x8, ushort, v_uint32x4, unsigned int, unsigned int, + vec_sr, vec_packs, vec_add, pack) +OPENCV_HAL_IMPL_VSX_PACK(v_int16x8, short, v_int32x4, unsigned int, int, + vec_sra, vec_packs, vec_add, pack) + +OPENCV_HAL_IMPL_VSX_PACK(v_uint32x4, uint, v_uint64x2, unsigned long long, unsigned long long, + vec_sr, vec_pack, vec_add, pack) +OPENCV_HAL_IMPL_VSX_PACK(v_int32x4, int, v_int64x2, unsigned long long, long long, + vec_sra, vec_pack, vec_add, pack) + +OPENCV_HAL_IMPL_VSX_PACK(v_uint8x16, uchar, v_int16x8, unsigned short, short, + vec_sra, vec_packsu, vec_adds, pack_u) +OPENCV_HAL_IMPL_VSX_PACK(v_uint16x8, ushort, v_int32x4, unsigned int, int, + vec_sra, vec_packsu, vec_add, pack_u) +// Following variant is not implemented on other platforms: +//OPENCV_HAL_IMPL_VSX_PACK(v_uint32x4, uint, v_int64x2, unsigned long long, long long, +// vec_sra, vec_packsu, vec_add, pack_u) + +// pack boolean +inline v_uint8x16 v_pack_b(const v_uint16x8& a, const v_uint16x8& b) +{ + vec_uchar16 ab = vec_pack(a.val, b.val); + return v_uint8x16(ab); +} + +inline v_uint8x16 v_pack_b(const v_uint32x4& a, const v_uint32x4& b, + const v_uint32x4& c, const v_uint32x4& d) +{ + vec_ushort8 ab = vec_pack(a.val, b.val); + vec_ushort8 cd = vec_pack(c.val, d.val); + return v_uint8x16(vec_pack(ab, cd)); +} + +inline v_uint8x16 v_pack_b(const v_uint64x2& a, const v_uint64x2& b, const v_uint64x2& c, + const v_uint64x2& d, const v_uint64x2& e, const v_uint64x2& f, + const v_uint64x2& g, const v_uint64x2& h) +{ + vec_uint4 ab = vec_pack(a.val, b.val); + vec_uint4 cd = vec_pack(c.val, d.val); + vec_uint4 ef = vec_pack(e.val, f.val); + vec_uint4 gh = vec_pack(g.val, h.val); + + vec_ushort8 abcd = vec_pack(ab, cd); + vec_ushort8 efgh = vec_pack(ef, gh); + return v_uint8x16(vec_pack(abcd, efgh)); +} + +/* Recombine */ +template +inline void v_zip(const _Tpvec& a0, const _Tpvec& a1, _Tpvec& b0, _Tpvec& b1) +{ + b0.val = vec_mergeh(a0.val, a1.val); + b1.val = vec_mergel(a0.val, a1.val); +} + +template +inline _Tpvec v_combine_high(const _Tpvec& a, const _Tpvec& b) +{ return _Tpvec(vec_mergesql(a.val, b.val)); } + +template +inline _Tpvec v_combine_low(const _Tpvec& a, const _Tpvec& b) +{ return _Tpvec(vec_mergesqh(a.val, b.val)); } + +template +inline void v_recombine(const _Tpvec& a, const _Tpvec& b, _Tpvec& c, _Tpvec& d) +{ + c.val = vec_mergesqh(a.val, b.val); + d.val = vec_mergesql(a.val, b.val); +} + +////////// Arithmetic, bitwise and comparison operations ///////// + +/* Element-wise binary and unary operations */ +/** Arithmetics **/ +#define OPENCV_HAL_IMPL_VSX_BIN_OP(bin_op, _Tpvec, intrin) \ +inline _Tpvec operator bin_op (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(intrin(a.val, b.val)); } \ +inline _Tpvec& operator bin_op##= (_Tpvec& a, const _Tpvec& b) \ +{ a.val = intrin(a.val, b.val); return a; } + +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_uint8x16, vec_adds) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_uint8x16, vec_subs) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_int8x16, vec_adds) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_int8x16, vec_subs) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_uint16x8, vec_adds) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_uint16x8, vec_subs) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_int16x8, vec_adds) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_int16x8, vec_subs) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_uint32x4, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_uint32x4, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_OP(*, v_uint32x4, vec_mul) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_int32x4, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_int32x4, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_OP(*, v_int32x4, vec_mul) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_float32x4, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_float32x4, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_OP(*, v_float32x4, vec_mul) +OPENCV_HAL_IMPL_VSX_BIN_OP(/, v_float32x4, vec_div) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_float64x2, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_float64x2, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_OP(*, v_float64x2, vec_mul) +OPENCV_HAL_IMPL_VSX_BIN_OP(/, v_float64x2, vec_div) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_uint64x2, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_uint64x2, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_OP(+, v_int64x2, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_OP(-, v_int64x2, vec_sub) + +// saturating multiply +#define OPENCV_HAL_IMPL_VSX_MUL_SAT(_Tpvec, _Tpwvec) \ + inline _Tpvec operator * (const _Tpvec& a, const _Tpvec& b) \ + { \ + _Tpwvec c, d; \ + v_mul_expand(a, b, c, d); \ + return v_pack(c, d); \ + } \ + inline _Tpvec& operator *= (_Tpvec& a, const _Tpvec& b) \ + { a = a * b; return a; } + +OPENCV_HAL_IMPL_VSX_MUL_SAT(v_int8x16, v_int16x8) +OPENCV_HAL_IMPL_VSX_MUL_SAT(v_uint8x16, v_uint16x8) +OPENCV_HAL_IMPL_VSX_MUL_SAT(v_int16x8, v_int32x4) +OPENCV_HAL_IMPL_VSX_MUL_SAT(v_uint16x8, v_uint32x4) + +template +inline void v_mul_expand(const Tvec& a, const Tvec& b, Twvec& c, Twvec& d) +{ + Twvec p0 = Twvec(vec_mule(a.val, b.val)); + Twvec p1 = Twvec(vec_mulo(a.val, b.val)); + v_zip(p0, p1, c, d); +} + +inline void v_mul_expand(const v_uint32x4& a, const v_uint32x4& b, v_uint64x2& c, v_uint64x2& d) +{ + c.val = vec_mul(vec_unpackhu(a.val), vec_unpackhu(b.val)); + d.val = vec_mul(vec_unpacklu(a.val), vec_unpacklu(b.val)); +} + +inline v_int16x8 v_mul_hi(const v_int16x8& a, const v_int16x8& b) +{ + vec_int4 p0 = vec_mule(a.val, b.val); + vec_int4 p1 = vec_mulo(a.val, b.val); + static const vec_uchar16 perm = {2, 3, 18, 19, 6, 7, 22, 23, 10, 11, 26, 27, 14, 15, 30, 31}; + return v_int16x8(vec_perm(vec_short8_c(p0), vec_short8_c(p1), perm)); +} +inline v_uint16x8 v_mul_hi(const v_uint16x8& a, const v_uint16x8& b) +{ + vec_uint4 p0 = vec_mule(a.val, b.val); + vec_uint4 p1 = vec_mulo(a.val, b.val); + static const vec_uchar16 perm = {2, 3, 18, 19, 6, 7, 22, 23, 10, 11, 26, 27, 14, 15, 30, 31}; + return v_uint16x8(vec_perm(vec_ushort8_c(p0), vec_ushort8_c(p1), perm)); +} + +/** Non-saturating arithmetics **/ +#define OPENCV_HAL_IMPL_VSX_BIN_FUNC(func, intrin) \ +template \ +inline _Tpvec func(const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(intrin(a.val, b.val)); } + +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_add_wrap, vec_add) +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_sub_wrap, vec_sub) +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_mul_wrap, vec_mul) + +/** Bitwise shifts **/ +#define OPENCV_HAL_IMPL_VSX_SHIFT_OP(_Tpvec, shr, splfunc) \ +inline _Tpvec operator << (const _Tpvec& a, int imm) \ +{ return _Tpvec(vec_sl(a.val, splfunc(imm))); } \ +inline _Tpvec operator >> (const _Tpvec& a, int imm) \ +{ return _Tpvec(shr(a.val, splfunc(imm))); } \ +template inline _Tpvec v_shl(const _Tpvec& a) \ +{ return _Tpvec(vec_sl(a.val, splfunc(imm))); } \ +template inline _Tpvec v_shr(const _Tpvec& a) \ +{ return _Tpvec(shr(a.val, splfunc(imm))); } + +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_uint8x16, vec_sr, vec_uchar16_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_uint16x8, vec_sr, vec_ushort8_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_uint32x4, vec_sr, vec_uint4_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_uint64x2, vec_sr, vec_udword2_sp) +// algebraic right shift +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_int8x16, vec_sra, vec_uchar16_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_int16x8, vec_sra, vec_ushort8_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_int32x4, vec_sra, vec_uint4_sp) +OPENCV_HAL_IMPL_VSX_SHIFT_OP(v_int64x2, vec_sra, vec_udword2_sp) + +/** Bitwise logic **/ +#define OPENCV_HAL_IMPL_VSX_LOGIC_OP(_Tpvec) \ +OPENCV_HAL_IMPL_VSX_BIN_OP(&, _Tpvec, vec_and) \ +OPENCV_HAL_IMPL_VSX_BIN_OP(|, _Tpvec, vec_or) \ +OPENCV_HAL_IMPL_VSX_BIN_OP(^, _Tpvec, vec_xor) \ +inline _Tpvec operator ~ (const _Tpvec& a) \ +{ return _Tpvec(vec_not(a.val)); } + +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_uint8x16) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_int8x16) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_uint16x8) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_int16x8) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_uint32x4) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_int32x4) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_uint64x2) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_int64x2) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_float32x4) +OPENCV_HAL_IMPL_VSX_LOGIC_OP(v_float64x2) + +/** Bitwise select **/ +#define OPENCV_HAL_IMPL_VSX_SELECT(_Tpvec, cast) \ +inline _Tpvec v_select(const _Tpvec& mask, const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_sel(b.val, a.val, cast(mask.val))); } + +OPENCV_HAL_IMPL_VSX_SELECT(v_uint8x16, vec_bchar16_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_int8x16, vec_bchar16_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_uint16x8, vec_bshort8_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_int16x8, vec_bshort8_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_uint32x4, vec_bint4_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_int32x4, vec_bint4_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_float32x4, vec_bint4_c) +OPENCV_HAL_IMPL_VSX_SELECT(v_float64x2, vec_bdword2_c) + +/** Comparison **/ +#define OPENCV_HAL_IMPL_VSX_INT_CMP_OP(_Tpvec) \ +inline _Tpvec operator == (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmpeq(a.val, b.val)); } \ +inline _Tpvec operator != (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmpne(a.val, b.val)); } \ +inline _Tpvec operator < (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmplt(a.val, b.val)); } \ +inline _Tpvec operator > (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmpgt(a.val, b.val)); } \ +inline _Tpvec operator <= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmple(a.val, b.val)); } \ +inline _Tpvec operator >= (const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_cmpge(a.val, b.val)); } + +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_uint8x16) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_int8x16) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_uint16x8) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_int16x8) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_uint32x4) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_int32x4) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_float32x4) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_float64x2) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_uint64x2) +OPENCV_HAL_IMPL_VSX_INT_CMP_OP(v_int64x2) + +inline v_float32x4 v_not_nan(const v_float32x4& a) +{ return v_float32x4(vec_cmpeq(a.val, a.val)); } +inline v_float64x2 v_not_nan(const v_float64x2& a) +{ return v_float64x2(vec_cmpeq(a.val, a.val)); } + +/** min/max **/ +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_min, vec_min) +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_max, vec_max) + +/** Rotate **/ +#define OPENCV_IMPL_VSX_ROTATE(_Tpvec, suffix, shf, cast) \ +template \ +inline _Tpvec v_rotate_##suffix(const _Tpvec& a) \ +{ \ + const int wd = imm * sizeof(typename _Tpvec::lane_type); \ + if (wd > 15) \ + return _Tpvec(); \ + return _Tpvec((cast)shf(vec_uchar16_c(a.val), vec_uchar16_sp(wd << 3))); \ +} + +#define OPENCV_IMPL_VSX_ROTATE_LR(_Tpvec, cast) \ +OPENCV_IMPL_VSX_ROTATE(_Tpvec, left, vec_slo, cast) \ +OPENCV_IMPL_VSX_ROTATE(_Tpvec, right, vec_sro, cast) + +OPENCV_IMPL_VSX_ROTATE_LR(v_uint8x16, vec_uchar16) +OPENCV_IMPL_VSX_ROTATE_LR(v_int8x16, vec_char16) +OPENCV_IMPL_VSX_ROTATE_LR(v_uint16x8, vec_ushort8) +OPENCV_IMPL_VSX_ROTATE_LR(v_int16x8, vec_short8) +OPENCV_IMPL_VSX_ROTATE_LR(v_uint32x4, vec_uint4) +OPENCV_IMPL_VSX_ROTATE_LR(v_int32x4, vec_int4) +OPENCV_IMPL_VSX_ROTATE_LR(v_float32x4, vec_float4) +OPENCV_IMPL_VSX_ROTATE_LR(v_uint64x2, vec_udword2) +OPENCV_IMPL_VSX_ROTATE_LR(v_int64x2, vec_dword2) +OPENCV_IMPL_VSX_ROTATE_LR(v_float64x2, vec_double2) + +template +inline _Tpvec v_rotate_right(const _Tpvec& a, const _Tpvec& b) +{ + enum { CV_SHIFT = 16 - imm * (sizeof(typename _Tpvec::lane_type)) }; + if (CV_SHIFT == 16) + return a; +#ifdef __IBMCPP__ + return _Tpvec(vec_sld(b.val, a.val, CV_SHIFT & 15)); +#else + return _Tpvec(vec_sld(b.val, a.val, CV_SHIFT)); +#endif +} + +template +inline _Tpvec v_rotate_left(const _Tpvec& a, const _Tpvec& b) +{ + enum { CV_SHIFT = imm * (sizeof(typename _Tpvec::lane_type)) }; + if (CV_SHIFT == 16) + return b; + return _Tpvec(vec_sld(a.val, b.val, CV_SHIFT)); +} + +#define OPENCV_IMPL_VSX_ROTATE_64_2RG(_Tpvec, suffix, rg1, rg2) \ +template \ +inline _Tpvec v_rotate_##suffix(const _Tpvec& a, const _Tpvec& b) \ +{ \ + if (imm == 1) \ + return _Tpvec(vec_permi(rg1.val, rg2.val, 2)); \ + return imm ? b : a; \ +} + +#define OPENCV_IMPL_VSX_ROTATE_64_2RG_LR(_Tpvec) \ +OPENCV_IMPL_VSX_ROTATE_64_2RG(_Tpvec, left, b, a) \ +OPENCV_IMPL_VSX_ROTATE_64_2RG(_Tpvec, right, a, b) + +OPENCV_IMPL_VSX_ROTATE_64_2RG_LR(v_float64x2) +OPENCV_IMPL_VSX_ROTATE_64_2RG_LR(v_uint64x2) +OPENCV_IMPL_VSX_ROTATE_64_2RG_LR(v_int64x2) + +/* Extract */ +template +inline _Tpvec v_extract(const _Tpvec& a, const _Tpvec& b) +{ return v_rotate_right(a, b); } + +////////// Reduce and mask ///////// + +/** Reduce **/ +inline short v_reduce_sum(const v_int16x8& a) +{ + const vec_int4 zero = vec_int4_z; + return saturate_cast(vec_extract(vec_sums(vec_sum4s(a.val, zero), zero), 3)); +} +inline ushort v_reduce_sum(const v_uint16x8& a) +{ + const vec_int4 v4 = vec_int4_c(vec_unpackhu(vec_adds(a.val, vec_sld(a.val, a.val, 8)))); + return saturate_cast(vec_extract(vec_sums(v4, vec_int4_z), 3)); +} + +#define OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(_Tpvec, _Tpvec2, scalartype, suffix, func) \ +inline scalartype v_reduce_##suffix(const _Tpvec& a) \ +{ \ + const _Tpvec2 rs = func(a.val, vec_sld(a.val, a.val, 8)); \ + return vec_extract(func(rs, vec_sld(rs, rs, 4)), 0); \ +} +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_uint32x4, vec_uint4, uint, sum, vec_add) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_uint32x4, vec_uint4, uint, max, vec_max) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_uint32x4, vec_uint4, uint, min, vec_min) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_int32x4, vec_int4, int, sum, vec_add) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_int32x4, vec_int4, int, max, vec_max) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_int32x4, vec_int4, int, min, vec_min) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_float32x4, vec_float4, float, sum, vec_add) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_float32x4, vec_float4, float, max, vec_max) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_4(v_float32x4, vec_float4, float, min, vec_min) + +inline double v_reduce_sum(const v_float64x2& a) +{ + return vec_extract(vec_add(a.val, vec_permi(a.val, a.val, 3)), 0); +} + +#define OPENCV_HAL_IMPL_VSX_REDUCE_OP_8(_Tpvec, _Tpvec2, scalartype, suffix, func) \ +inline scalartype v_reduce_##suffix(const _Tpvec& a) \ +{ \ + _Tpvec2 rs = func(a.val, vec_sld(a.val, a.val, 8)); \ + rs = func(rs, vec_sld(rs, rs, 4)); \ + return vec_extract(func(rs, vec_sld(rs, rs, 2)), 0); \ +} +OPENCV_HAL_IMPL_VSX_REDUCE_OP_8(v_uint16x8, vec_ushort8, ushort, max, vec_max) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_8(v_uint16x8, vec_ushort8, ushort, min, vec_min) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_8(v_int16x8, vec_short8, short, max, vec_max) +OPENCV_HAL_IMPL_VSX_REDUCE_OP_8(v_int16x8, vec_short8, short, min, vec_min) + +inline v_float32x4 v_reduce_sum4(const v_float32x4& a, const v_float32x4& b, + const v_float32x4& c, const v_float32x4& d) +{ + vec_float4 ac = vec_add(vec_mergel(a.val, c.val), vec_mergeh(a.val, c.val)); + ac = vec_add(ac, vec_sld(ac, ac, 8)); + + vec_float4 bd = vec_add(vec_mergel(b.val, d.val), vec_mergeh(b.val, d.val)); + bd = vec_add(bd, vec_sld(bd, bd, 8)); + return v_float32x4(vec_mergeh(ac, bd)); +} + +inline unsigned v_reduce_sad(const v_uint8x16& a, const v_uint8x16& b) +{ + const vec_uint4 zero4 = vec_uint4_z; + vec_uint4 sum4 = vec_sum4s(vec_absd(a.val, b.val), zero4); + return (unsigned)vec_extract(vec_sums(vec_int4_c(sum4), vec_int4_c(zero4)), 3); +} +inline unsigned v_reduce_sad(const v_int8x16& a, const v_int8x16& b) +{ + const vec_int4 zero4 = vec_int4_z; + vec_char16 ad = vec_abss(vec_subs(a.val, b.val)); + vec_int4 sum4 = vec_sum4s(ad, zero4); + return (unsigned)vec_extract(vec_sums(sum4, zero4), 3); +} +inline unsigned v_reduce_sad(const v_uint16x8& a, const v_uint16x8& b) +{ + vec_ushort8 ad = vec_absd(a.val, b.val); + VSX_UNUSED(vec_int4) sum = vec_sums(vec_int4_c(vec_unpackhu(ad)), vec_int4_c(vec_unpacklu(ad))); + return (unsigned)vec_extract(sum, 3); +} +inline unsigned v_reduce_sad(const v_int16x8& a, const v_int16x8& b) +{ + const vec_int4 zero4 = vec_int4_z; + vec_short8 ad = vec_abss(vec_subs(a.val, b.val)); + vec_int4 sum4 = vec_sum4s(ad, zero4); + return (unsigned)vec_extract(vec_sums(sum4, zero4), 3); +} +inline unsigned v_reduce_sad(const v_uint32x4& a, const v_uint32x4& b) +{ + const vec_uint4 ad = vec_absd(a.val, b.val); + const vec_uint4 rd = vec_add(ad, vec_sld(ad, ad, 8)); + return vec_extract(vec_add(rd, vec_sld(rd, rd, 4)), 0); +} +inline unsigned v_reduce_sad(const v_int32x4& a, const v_int32x4& b) +{ + vec_int4 ad = vec_abss(vec_sub(a.val, b.val)); + return (unsigned)vec_extract(vec_sums(ad, vec_int4_z), 3); +} +inline float v_reduce_sad(const v_float32x4& a, const v_float32x4& b) +{ + const vec_float4 ad = vec_abs(vec_sub(a.val, b.val)); + const vec_float4 rd = vec_add(ad, vec_sld(ad, ad, 8)); + return vec_extract(vec_add(rd, vec_sld(rd, rd, 4)), 0); +} + +/** Popcount **/ +template +inline v_uint32x4 v_popcount(const _Tpvec& a) +{ return v_uint32x4(vec_popcntu(vec_uint4_c(a.val))); } + +/** Mask **/ +inline int v_signmask(const v_uint8x16& a) +{ + vec_uchar16 sv = vec_sr(a.val, vec_uchar16_sp(7)); + static const vec_uchar16 slm = {0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7}; + sv = vec_sl(sv, slm); + vec_uint4 sv4 = vec_sum4s(sv, vec_uint4_z); + static const vec_uint4 slm4 = {0, 0, 8, 8}; + sv4 = vec_sl(sv4, slm4); + return vec_extract(vec_sums((vec_int4) sv4, vec_int4_z), 3); +} +inline int v_signmask(const v_int8x16& a) +{ return v_signmask(v_reinterpret_as_u8(a)); } + +inline int v_signmask(const v_int16x8& a) +{ + static const vec_ushort8 slm = {0, 1, 2, 3, 4, 5, 6, 7}; + vec_short8 sv = vec_sr(a.val, vec_ushort8_sp(15)); + sv = vec_sl(sv, slm); + vec_int4 svi = vec_int4_z; + svi = vec_sums(vec_sum4s(sv, svi), svi); + return vec_extract(svi, 3); +} +inline int v_signmask(const v_uint16x8& a) +{ return v_signmask(v_reinterpret_as_s16(a)); } + +inline int v_signmask(const v_int32x4& a) +{ + static const vec_uint4 slm = {0, 1, 2, 3}; + vec_int4 sv = vec_sr(a.val, vec_uint4_sp(31)); + sv = vec_sl(sv, slm); + sv = vec_sums(sv, vec_int4_z); + return vec_extract(sv, 3); +} +inline int v_signmask(const v_uint32x4& a) +{ return v_signmask(v_reinterpret_as_s32(a)); } +inline int v_signmask(const v_float32x4& a) +{ return v_signmask(v_reinterpret_as_s32(a)); } + +inline int v_signmask(const v_int64x2& a) +{ + VSX_UNUSED(const vec_dword2) sv = vec_sr(a.val, vec_udword2_sp(63)); + return (int)vec_extract(sv, 0) | (int)vec_extract(sv, 1) << 1; +} +inline int v_signmask(const v_uint64x2& a) +{ return v_signmask(v_reinterpret_as_s64(a)); } +inline int v_signmask(const v_float64x2& a) +{ return v_signmask(v_reinterpret_as_s64(a)); } + +template +inline bool v_check_all(const _Tpvec& a) +{ return vec_all_lt(a.val, _Tpvec().val); } +inline bool v_check_all(const v_uint8x16& a) +{ return v_check_all(v_reinterpret_as_s8(a)); } +inline bool v_check_all(const v_uint16x8& a) +{ return v_check_all(v_reinterpret_as_s16(a)); } +inline bool v_check_all(const v_uint32x4& a) +{ return v_check_all(v_reinterpret_as_s32(a)); } +inline bool v_check_all(const v_float32x4& a) +{ return v_check_all(v_reinterpret_as_s32(a)); } +inline bool v_check_all(const v_float64x2& a) +{ return v_check_all(v_reinterpret_as_s64(a)); } + +template +inline bool v_check_any(const _Tpvec& a) +{ return vec_any_lt(a.val, _Tpvec().val); } +inline bool v_check_any(const v_uint8x16& a) +{ return v_check_any(v_reinterpret_as_s8(a)); } +inline bool v_check_any(const v_uint16x8& a) +{ return v_check_any(v_reinterpret_as_s16(a)); } +inline bool v_check_any(const v_uint32x4& a) +{ return v_check_any(v_reinterpret_as_s32(a)); } +inline bool v_check_any(const v_float32x4& a) +{ return v_check_any(v_reinterpret_as_s32(a)); } +inline bool v_check_any(const v_float64x2& a) +{ return v_check_any(v_reinterpret_as_s64(a)); } + +////////// Other math ///////// + +/** Some frequent operations **/ +inline v_float32x4 v_sqrt(const v_float32x4& x) +{ return v_float32x4(vec_sqrt(x.val)); } +inline v_float64x2 v_sqrt(const v_float64x2& x) +{ return v_float64x2(vec_sqrt(x.val)); } + +inline v_float32x4 v_invsqrt(const v_float32x4& x) +{ return v_float32x4(vec_rsqrt(x.val)); } +inline v_float64x2 v_invsqrt(const v_float64x2& x) +{ return v_float64x2(vec_rsqrt(x.val)); } + +#define OPENCV_HAL_IMPL_VSX_MULADD(_Tpvec) \ +inline _Tpvec v_magnitude(const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_sqrt(vec_madd(a.val, a.val, vec_mul(b.val, b.val)))); } \ +inline _Tpvec v_sqr_magnitude(const _Tpvec& a, const _Tpvec& b) \ +{ return _Tpvec(vec_madd(a.val, a.val, vec_mul(b.val, b.val))); } \ +inline _Tpvec v_fma(const _Tpvec& a, const _Tpvec& b, const _Tpvec& c) \ +{ return _Tpvec(vec_madd(a.val, b.val, c.val)); } \ +inline _Tpvec v_muladd(const _Tpvec& a, const _Tpvec& b, const _Tpvec& c) \ +{ return _Tpvec(vec_madd(a.val, b.val, c.val)); } + +OPENCV_HAL_IMPL_VSX_MULADD(v_float32x4) +OPENCV_HAL_IMPL_VSX_MULADD(v_float64x2) + +inline v_int32x4 v_muladd(const v_int32x4& a, const v_int32x4& b, const v_int32x4& c) +{ return a * b + c; } + +// TODO: exp, log, sin, cos + +/** Absolute values **/ +inline v_uint8x16 v_abs(const v_int8x16& x) +{ return v_uint8x16(vec_uchar16_c(vec_abs(x.val))); } + +inline v_uint16x8 v_abs(const v_int16x8& x) +{ return v_uint16x8(vec_ushort8_c(vec_abs(x.val))); } + +inline v_uint32x4 v_abs(const v_int32x4& x) +{ return v_uint32x4(vec_uint4_c(vec_abs(x.val))); } + +inline v_float32x4 v_abs(const v_float32x4& x) +{ return v_float32x4(vec_abs(x.val)); } + +inline v_float64x2 v_abs(const v_float64x2& x) +{ return v_float64x2(vec_abs(x.val)); } + +/** Absolute difference **/ +// unsigned +OPENCV_HAL_IMPL_VSX_BIN_FUNC(v_absdiff, vec_absd) + +inline v_uint8x16 v_absdiff(const v_int8x16& a, const v_int8x16& b) +{ return v_reinterpret_as_u8(v_sub_wrap(v_max(a, b), v_min(a, b))); } +inline v_uint16x8 v_absdiff(const v_int16x8& a, const v_int16x8& b) +{ return v_reinterpret_as_u16(v_sub_wrap(v_max(a, b), v_min(a, b))); } +inline v_uint32x4 v_absdiff(const v_int32x4& a, const v_int32x4& b) +{ return v_reinterpret_as_u32(v_max(a, b) - v_min(a, b)); } + +inline v_float32x4 v_absdiff(const v_float32x4& a, const v_float32x4& b) +{ return v_abs(a - b); } +inline v_float64x2 v_absdiff(const v_float64x2& a, const v_float64x2& b) +{ return v_abs(a - b); } + +/** Absolute difference for signed integers **/ +inline v_int8x16 v_absdiffs(const v_int8x16& a, const v_int8x16& b) +{ return v_int8x16(vec_abss(vec_subs(a.val, b.val))); } +inline v_int16x8 v_absdiffs(const v_int16x8& a, const v_int16x8& b) +{ return v_int16x8(vec_abss(vec_subs(a.val, b.val))); } + +////////// Conversions ///////// + +/** Rounding **/ +inline v_int32x4 v_round(const v_float32x4& a) +{ return v_int32x4(vec_cts(vec_rint(a.val))); } + +inline v_int32x4 v_round(const v_float64x2& a) +{ return v_int32x4(vec_mergesqo(vec_ctso(vec_rint(a.val)), vec_int4_z)); } + +inline v_int32x4 v_round(const v_float64x2& a, const v_float64x2& b) +{ return v_int32x4(vec_mergesqo(vec_ctso(vec_rint(a.val)), vec_ctso(vec_rint(b.val)))); } + +inline v_int32x4 v_floor(const v_float32x4& a) +{ return v_int32x4(vec_cts(vec_floor(a.val))); } + +inline v_int32x4 v_floor(const v_float64x2& a) +{ return v_int32x4(vec_mergesqo(vec_ctso(vec_floor(a.val)), vec_int4_z)); } + +inline v_int32x4 v_ceil(const v_float32x4& a) +{ return v_int32x4(vec_cts(vec_ceil(a.val))); } + +inline v_int32x4 v_ceil(const v_float64x2& a) +{ return v_int32x4(vec_mergesqo(vec_ctso(vec_ceil(a.val)), vec_int4_z)); } + +inline v_int32x4 v_trunc(const v_float32x4& a) +{ return v_int32x4(vec_cts(a.val)); } + +inline v_int32x4 v_trunc(const v_float64x2& a) +{ return v_int32x4(vec_mergesqo(vec_ctso(a.val), vec_int4_z)); } + +/** To float **/ +inline v_float32x4 v_cvt_f32(const v_int32x4& a) +{ return v_float32x4(vec_ctf(a.val)); } + +inline v_float32x4 v_cvt_f32(const v_float64x2& a) +{ return v_float32x4(vec_mergesqo(vec_cvfo(a.val), vec_float4_z)); } + +inline v_float32x4 v_cvt_f32(const v_float64x2& a, const v_float64x2& b) +{ return v_float32x4(vec_mergesqo(vec_cvfo(a.val), vec_cvfo(b.val))); } + +inline v_float64x2 v_cvt_f64(const v_int32x4& a) +{ return v_float64x2(vec_ctdo(vec_mergeh(a.val, a.val))); } + +inline v_float64x2 v_cvt_f64_high(const v_int32x4& a) +{ return v_float64x2(vec_ctdo(vec_mergel(a.val, a.val))); } + +inline v_float64x2 v_cvt_f64(const v_float32x4& a) +{ return v_float64x2(vec_cvfo(vec_mergeh(a.val, a.val))); } + +inline v_float64x2 v_cvt_f64_high(const v_float32x4& a) +{ return v_float64x2(vec_cvfo(vec_mergel(a.val, a.val))); } + +////////////// Lookup table access //////////////////// + +inline v_int8x16 v_lut(const schar* tab, const int* idx) +{ + return v_int8x16(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]], tab[idx[4]], tab[idx[5]], tab[idx[6]], tab[idx[7]], + tab[idx[8]], tab[idx[9]], tab[idx[10]], tab[idx[11]], tab[idx[12]], tab[idx[13]], tab[idx[14]], tab[idx[15]]); +} +inline v_int8x16 v_lut_pairs(const schar* tab, const int* idx) +{ + return v_reinterpret_as_s8(v_int16x8(*(const short*)(tab+idx[0]), *(const short*)(tab+idx[1]), *(const short*)(tab+idx[2]), *(const short*)(tab+idx[3]), + *(const short*)(tab+idx[4]), *(const short*)(tab+idx[5]), *(const short*)(tab+idx[6]), *(const short*)(tab+idx[7]))); +} +inline v_int8x16 v_lut_quads(const schar* tab, const int* idx) +{ + return v_reinterpret_as_s8(v_int32x4(*(const int*)(tab+idx[0]), *(const int*)(tab+idx[1]), *(const int*)(tab+idx[2]), *(const int*)(tab+idx[3]))); +} +inline v_uint8x16 v_lut(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut((const schar*)tab, idx)); } +inline v_uint8x16 v_lut_pairs(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_pairs((const schar*)tab, idx)); } +inline v_uint8x16 v_lut_quads(const uchar* tab, const int* idx) { return v_reinterpret_as_u8(v_lut_quads((const schar*)tab, idx)); } + +inline v_int16x8 v_lut(const short* tab, const int* idx) +{ + return v_int16x8(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]], tab[idx[4]], tab[idx[5]], tab[idx[6]], tab[idx[7]]); +} +inline v_int16x8 v_lut_pairs(const short* tab, const int* idx) +{ + return v_reinterpret_as_s16(v_int32x4(*(const int*)(tab + idx[0]), *(const int*)(tab + idx[1]), *(const int*)(tab + idx[2]), *(const int*)(tab + idx[3]))); +} +inline v_int16x8 v_lut_quads(const short* tab, const int* idx) +{ + return v_reinterpret_as_s16(v_int64x2(*(const int64*)(tab + idx[0]), *(const int64*)(tab + idx[1]))); +} +inline v_uint16x8 v_lut(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut((const short*)tab, idx)); } +inline v_uint16x8 v_lut_pairs(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_pairs((const short*)tab, idx)); } +inline v_uint16x8 v_lut_quads(const ushort* tab, const int* idx) { return v_reinterpret_as_u16(v_lut_quads((const short*)tab, idx)); } + +inline v_int32x4 v_lut(const int* tab, const int* idx) +{ + return v_int32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); +} +inline v_int32x4 v_lut_pairs(const int* tab, const int* idx) +{ + return v_reinterpret_as_s32(v_int64x2(*(const int64*)(tab + idx[0]), *(const int64*)(tab + idx[1]))); +} +inline v_int32x4 v_lut_quads(const int* tab, const int* idx) +{ + return v_int32x4(vsx_ld(0, tab + idx[0])); +} +inline v_uint32x4 v_lut(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut((const int*)tab, idx)); } +inline v_uint32x4 v_lut_pairs(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_pairs((const int*)tab, idx)); } +inline v_uint32x4 v_lut_quads(const unsigned* tab, const int* idx) { return v_reinterpret_as_u32(v_lut_quads((const int*)tab, idx)); } + +inline v_int64x2 v_lut(const int64_t* tab, const int* idx) +{ + return v_int64x2(tab[idx[0]], tab[idx[1]]); +} +inline v_int64x2 v_lut_pairs(const int64_t* tab, const int* idx) +{ + return v_int64x2(vsx_ld2(0, tab + idx[0])); +} +inline v_uint64x2 v_lut(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut((const int64_t *)tab, idx)); } +inline v_uint64x2 v_lut_pairs(const uint64_t* tab, const int* idx) { return v_reinterpret_as_u64(v_lut_pairs((const int64_t *)tab, idx)); } + +inline v_float32x4 v_lut(const float* tab, const int* idx) +{ + return v_float32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); +} +inline v_float32x4 v_lut_pairs(const float* tab, const int* idx) { return v_reinterpret_as_f32(v_lut_pairs((const int*)tab, idx)); } +inline v_float32x4 v_lut_quads(const float* tab, const int* idx) { return v_load(tab + *idx); } + +inline v_float64x2 v_lut(const double* tab, const int* idx) +{ + return v_float64x2(tab[idx[0]], tab[idx[1]]); +} +inline v_float64x2 v_lut_pairs(const double* tab, const int* idx) { return v_load(tab + *idx); } + +inline v_int32x4 v_lut(const int* tab, const v_int32x4& idxvec) +{ + const int idx[4] = { + vec_extract(idxvec.val, 0), + vec_extract(idxvec.val, 1), + vec_extract(idxvec.val, 2), + vec_extract(idxvec.val, 3) + }; + return v_int32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); +} + +inline v_uint32x4 v_lut(const unsigned* tab, const v_int32x4& idxvec) +{ + const int idx[4] = { + vec_extract(idxvec.val, 0), + vec_extract(idxvec.val, 1), + vec_extract(idxvec.val, 2), + vec_extract(idxvec.val, 3) + }; + return v_uint32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); +} + +inline v_float32x4 v_lut(const float* tab, const v_int32x4& idxvec) +{ + const int idx[4] = { + vec_extract(idxvec.val, 0), + vec_extract(idxvec.val, 1), + vec_extract(idxvec.val, 2), + vec_extract(idxvec.val, 3) + }; + return v_float32x4(tab[idx[0]], tab[idx[1]], tab[idx[2]], tab[idx[3]]); +} + +inline v_float64x2 v_lut(const double* tab, const v_int32x4& idxvec) +{ + const int idx[2] = { + vec_extract(idxvec.val, 0), + vec_extract(idxvec.val, 1) + }; + return v_float64x2(tab[idx[0]], tab[idx[1]]); +} + +inline void v_lut_deinterleave(const float* tab, const v_int32x4& idxvec, v_float32x4& x, v_float32x4& y) +{ + vec_float4 xy0 = vec_ld_l8(tab + vec_extract(idxvec.val, 0)); + vec_float4 xy1 = vec_ld_l8(tab + vec_extract(idxvec.val, 1)); + vec_float4 xy2 = vec_ld_l8(tab + vec_extract(idxvec.val, 2)); + vec_float4 xy3 = vec_ld_l8(tab + vec_extract(idxvec.val, 3)); + vec_float4 xy02 = vec_mergeh(xy0, xy2); // x0, x2, y0, y2 + vec_float4 xy13 = vec_mergeh(xy1, xy3); // x1, x3, y1, y3 + x.val = vec_mergeh(xy02, xy13); + y.val = vec_mergel(xy02, xy13); +} +inline void v_lut_deinterleave(const double* tab, const v_int32x4& idxvec, v_float64x2& x, v_float64x2& y) +{ + vec_double2 xy0 = vsx_ld(vec_extract(idxvec.val, 0), tab); + vec_double2 xy1 = vsx_ld(vec_extract(idxvec.val, 1), tab); + x.val = vec_mergeh(xy0, xy1); + y.val = vec_mergel(xy0, xy1); +} + +inline v_int8x16 v_interleave_pairs(const v_int8x16& vec) +{ + static const vec_uchar16 perm = {0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 14, 13, 15}; + return v_int8x16(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint8x16 v_interleave_pairs(const v_uint8x16& vec) +{ return v_reinterpret_as_u8(v_interleave_pairs(v_reinterpret_as_s8(vec))); } + +inline v_int8x16 v_interleave_quads(const v_int8x16& vec) +{ + static const vec_uchar16 perm = {0, 4, 1, 5, 2, 6, 3, 7, 8, 12, 9, 13, 10, 14, 11, 15}; + return v_int8x16(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint8x16 v_interleave_quads(const v_uint8x16& vec) +{ return v_reinterpret_as_u8(v_interleave_quads(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_interleave_pairs(const v_int16x8& vec) +{ + static const vec_uchar16 perm = {0,1, 4,5, 2,3, 6,7, 8,9, 12,13, 10,11, 14,15}; + return v_int16x8(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint16x8 v_interleave_pairs(const v_uint16x8& vec) +{ return v_reinterpret_as_u16(v_interleave_pairs(v_reinterpret_as_s16(vec))); } + +inline v_int16x8 v_interleave_quads(const v_int16x8& vec) +{ + static const vec_uchar16 perm = {0,1, 8,9, 2,3, 10,11, 4,5, 12,13, 6,7, 14,15}; + return v_int16x8(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint16x8 v_interleave_quads(const v_uint16x8& vec) +{ return v_reinterpret_as_u16(v_interleave_quads(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_interleave_pairs(const v_int32x4& vec) +{ + static const vec_uchar16 perm = {0,1,2,3, 8,9,10,11, 4,5,6,7, 12,13,14,15}; + return v_int32x4(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint32x4 v_interleave_pairs(const v_uint32x4& vec) +{ return v_reinterpret_as_u32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } +inline v_float32x4 v_interleave_pairs(const v_float32x4& vec) +{ return v_reinterpret_as_f32(v_interleave_pairs(v_reinterpret_as_s32(vec))); } + +inline v_int8x16 v_pack_triplets(const v_int8x16& vec) +{ + static const vec_uchar16 perm = {0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 15, 15, 15}; + return v_int8x16(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint8x16 v_pack_triplets(const v_uint8x16& vec) +{ return v_reinterpret_as_u8(v_pack_triplets(v_reinterpret_as_s8(vec))); } + +inline v_int16x8 v_pack_triplets(const v_int16x8& vec) +{ + static const vec_uchar16 perm = {0,1, 2,3, 4,5, 8,9, 10,11, 12,13, 14,15, 14,15}; + return v_int16x8(vec_perm(vec.val, vec.val, perm)); +} +inline v_uint16x8 v_pack_triplets(const v_uint16x8& vec) +{ return v_reinterpret_as_u16(v_pack_triplets(v_reinterpret_as_s16(vec))); } + +inline v_int32x4 v_pack_triplets(const v_int32x4& vec) +{ return vec; } +inline v_uint32x4 v_pack_triplets(const v_uint32x4& vec) +{ return vec; } +inline v_float32x4 v_pack_triplets(const v_float32x4& vec) +{ return vec; } + +/////// FP16 support //////// + +inline v_float32x4 v_load_expand(const float16_t* ptr) +{ + vec_ushort8 vf16 = vec_ld_l8((const ushort*)ptr); +#if CV_VSX3 && defined(vec_extract_fp_from_shorth) + return v_float32x4(vec_extract_fp_from_shorth(vf16)); +#elif CV_VSX3 && !defined(CV_COMPILER_VSX_BROKEN_ASM) + vec_float4 vf32; + __asm__ __volatile__ ("xvcvhpsp %x0,%x1" : "=wf" (vf32) : "wa" (vec_mergeh(vf16, vf16))); + return v_float32x4(vf32); +#else + const vec_int4 z = vec_int4_z, delta = vec_int4_sp(0x38000000); + const vec_int4 signmask = vec_int4_sp(0x80000000); + const vec_int4 maxexp = vec_int4_sp(0x7c000000); + const vec_float4 deltaf = vec_float4_c(vec_int4_sp(0x38800000)); + + vec_int4 bits = vec_int4_c(vec_mergeh(vec_short8_c(z), vec_short8_c(vf16))); + vec_int4 e = vec_and(bits, maxexp), sign = vec_and(bits, signmask); + vec_int4 t = vec_add(vec_sr(vec_xor(bits, sign), vec_uint4_sp(3)), delta); // ((h & 0x7fff) << 13) + delta + vec_int4 zt = vec_int4_c(vec_sub(vec_float4_c(vec_add(t, vec_int4_sp(1 << 23))), deltaf)); + + t = vec_add(t, vec_and(delta, vec_cmpeq(maxexp, e))); + vec_bint4 zmask = vec_cmpeq(e, z); + vec_int4 ft = vec_sel(t, zt, zmask); + return v_float32x4(vec_float4_c(vec_or(ft, sign))); +#endif +} + +inline void v_pack_store(float16_t* ptr, const v_float32x4& v) +{ +// fixme: Is there any buitin op or intrinsic that cover "xvcvsphp"? +#if CV_VSX3 && !defined(CV_COMPILER_VSX_BROKEN_ASM) + vec_ushort8 vf16; + __asm__ __volatile__ ("xvcvsphp %x0,%x1" : "=wa" (vf16) : "wf" (v.val)); + vec_st_l8(vec_mergesqe(vf16, vf16), ptr); +#else + const vec_int4 signmask = vec_int4_sp(0x80000000); + const vec_int4 rval = vec_int4_sp(0x3f000000); + + vec_int4 t = vec_int4_c(v.val); + vec_int4 sign = vec_sra(vec_and(t, signmask), vec_uint4_sp(16)); + t = vec_and(vec_nor(signmask, signmask), t); + + vec_bint4 finitemask = vec_cmpgt(vec_int4_sp(0x47800000), t); + vec_bint4 isnan = vec_cmpgt(t, vec_int4_sp(0x7f800000)); + vec_int4 naninf = vec_sel(vec_int4_sp(0x7c00), vec_int4_sp(0x7e00), isnan); + vec_bint4 tinymask = vec_cmpgt(vec_int4_sp(0x38800000), t); + vec_int4 tt = vec_int4_c(vec_add(vec_float4_c(t), vec_float4_c(rval))); + tt = vec_sub(tt, rval); + vec_int4 odd = vec_and(vec_sr(t, vec_uint4_sp(13)), vec_int4_sp(1)); + vec_int4 nt = vec_add(t, vec_int4_sp(0xc8000fff)); + nt = vec_sr(vec_add(nt, odd), vec_uint4_sp(13)); + t = vec_sel(nt, tt, tinymask); + t = vec_sel(naninf, t, finitemask); + t = vec_or(t, sign); + vec_st_l8(vec_packs(t, t), ptr); +#endif +} + +inline void v_cleanup() {} + + +/** Reinterpret **/ +/** its up there with load and store operations **/ + +////////// Matrix operations ///////// + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b) +{ return v_int32x4(vec_msum(a.val, b.val, vec_int4_z)); } + +inline v_int32x4 v_dotprod(const v_int16x8& a, const v_int16x8& b, const v_int32x4& c) +{ return v_int32x4(vec_msum(a.val, b.val, c.val)); } + +inline v_float32x4 v_matmul(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& m3) +{ + const vec_float4 v0 = vec_splat(v.val, 0); + const vec_float4 v1 = vec_splat(v.val, 1); + const vec_float4 v2 = vec_splat(v.val, 2); + VSX_UNUSED(const vec_float4) v3 = vec_splat(v.val, 3); + return v_float32x4(vec_madd(v0, m0.val, vec_madd(v1, m1.val, vec_madd(v2, m2.val, vec_mul(v3, m3.val))))); +} + +inline v_float32x4 v_matmuladd(const v_float32x4& v, const v_float32x4& m0, + const v_float32x4& m1, const v_float32x4& m2, + const v_float32x4& a) +{ + const vec_float4 v0 = vec_splat(v.val, 0); + const vec_float4 v1 = vec_splat(v.val, 1); + const vec_float4 v2 = vec_splat(v.val, 2); + return v_float32x4(vec_madd(v0, m0.val, vec_madd(v1, m1.val, vec_madd(v2, m2.val, a.val)))); +} + +#define OPENCV_HAL_IMPL_VSX_TRANSPOSE4x4(_Tpvec, _Tpvec2) \ +inline void v_transpose4x4(const _Tpvec& a0, const _Tpvec& a1, \ + const _Tpvec& a2, const _Tpvec& a3, \ + _Tpvec& b0, _Tpvec& b1, _Tpvec& b2, _Tpvec& b3) \ +{ \ + _Tpvec2 a02 = vec_mergeh(a0.val, a2.val); \ + _Tpvec2 a13 = vec_mergeh(a1.val, a3.val); \ + b0.val = vec_mergeh(a02, a13); \ + b1.val = vec_mergel(a02, a13); \ + a02 = vec_mergel(a0.val, a2.val); \ + a13 = vec_mergel(a1.val, a3.val); \ + b2.val = vec_mergeh(a02, a13); \ + b3.val = vec_mergel(a02, a13); \ +} +OPENCV_HAL_IMPL_VSX_TRANSPOSE4x4(v_uint32x4, vec_uint4) +OPENCV_HAL_IMPL_VSX_TRANSPOSE4x4(v_int32x4, vec_int4) +OPENCV_HAL_IMPL_VSX_TRANSPOSE4x4(v_float32x4, vec_float4) + +//! @name Check SIMD support +//! @{ +//! @brief Check CPU capability of SIMD operation +static inline bool hasSIMD128() +{ + return (CV_CPU_HAS_SUPPORT_VSX) ? true : false; +} + +//! @} + +CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END + +//! @endcond + +} + +#endif // OPENCV_HAL_VSX_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/mat.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/mat.hpp new file mode 100644 index 0000000..703c278 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/mat.hpp @@ -0,0 +1,3723 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_MAT_HPP +#define OPENCV_CORE_MAT_HPP + +#ifndef __cplusplus +# error mat.hpp header must be compiled as C++ +#endif + +#include "opencv2/core/matx.hpp" +#include "opencv2/core/types.hpp" + +#include "opencv2/core/bufferpool.hpp" + +#include + +namespace cv +{ + +//! @addtogroup core_basic +//! @{ + +enum AccessFlag { ACCESS_READ=1<<24, ACCESS_WRITE=1<<25, + ACCESS_RW=3<<24, ACCESS_MASK=ACCESS_RW, ACCESS_FAST=1<<26 }; +CV_ENUM_FLAGS(AccessFlag) +__CV_ENUM_FLAGS_BITWISE_AND(AccessFlag, int, AccessFlag) + +CV__DEBUG_NS_BEGIN + +class CV_EXPORTS _OutputArray; + +//////////////////////// Input/Output Array Arguments ///////////////////////////////// + +/** @brief This is the proxy class for passing read-only input arrays into OpenCV functions. + +It is defined as: +@code + typedef const _InputArray& InputArray; +@endcode +where _InputArray is a class that can be constructed from `Mat`, `Mat_`, `Matx`, +`std::vector`, `std::vector >`, `std::vector`, `std::vector >`, +`UMat`, `std::vector` or `double`. It can also be constructed from a matrix expression. + +Since this is mostly implementation-level class, and its interface may change in future versions, we +do not describe it in details. There are a few key things, though, that should be kept in mind: + +- When you see in the reference manual or in OpenCV source code a function that takes + InputArray, it means that you can actually pass `Mat`, `Matx`, `vector` etc. (see above the + complete list). +- Optional input arguments: If some of the input arrays may be empty, pass cv::noArray() (or + simply cv::Mat() as you probably did before). +- The class is designed solely for passing parameters. That is, normally you *should not* + declare class members, local and global variables of this type. +- If you want to design your own function or a class method that can operate of arrays of + multiple types, you can use InputArray (or OutputArray) for the respective parameters. Inside + a function you should use _InputArray::getMat() method to construct a matrix header for the + array (without copying data). _InputArray::kind() can be used to distinguish Mat from + `vector<>` etc., but normally it is not needed. + +Here is how you can use a function that takes InputArray : +@code + std::vector vec; + // points or a circle + for( int i = 0; i < 30; i++ ) + vec.push_back(Point2f((float)(100 + 30*cos(i*CV_PI*2/5)), + (float)(100 - 30*sin(i*CV_PI*2/5)))); + cv::transform(vec, vec, cv::Matx23f(0.707, -0.707, 10, 0.707, 0.707, 20)); +@endcode +That is, we form an STL vector containing points, and apply in-place affine transformation to the +vector using the 2x3 matrix created inline as `Matx` instance. + +Here is how such a function can be implemented (for simplicity, we implement a very specific case of +it, according to the assertion statement inside) : +@code + void myAffineTransform(InputArray _src, OutputArray _dst, InputArray _m) + { + // get Mat headers for input arrays. This is O(1) operation, + // unless _src and/or _m are matrix expressions. + Mat src = _src.getMat(), m = _m.getMat(); + CV_Assert( src.type() == CV_32FC2 && m.type() == CV_32F && m.size() == Size(3, 2) ); + + // [re]create the output array so that it has the proper size and type. + // In case of Mat it calls Mat::create, in case of STL vector it calls vector::resize. + _dst.create(src.size(), src.type()); + Mat dst = _dst.getMat(); + + for( int i = 0; i < src.rows; i++ ) + for( int j = 0; j < src.cols; j++ ) + { + Point2f pt = src.at(i, j); + dst.at(i, j) = Point2f(m.at(0, 0)*pt.x + + m.at(0, 1)*pt.y + + m.at(0, 2), + m.at(1, 0)*pt.x + + m.at(1, 1)*pt.y + + m.at(1, 2)); + } + } +@endcode +There is another related type, InputArrayOfArrays, which is currently defined as a synonym for +InputArray: +@code + typedef InputArray InputArrayOfArrays; +@endcode +It denotes function arguments that are either vectors of vectors or vectors of matrices. A separate +synonym is needed to generate Python/Java etc. wrappers properly. At the function implementation +level their use is similar, but _InputArray::getMat(idx) should be used to get header for the +idx-th component of the outer vector and _InputArray::size().area() should be used to find the +number of components (vectors/matrices) of the outer vector. + +In general, type support is limited to cv::Mat types. Other types are forbidden. +But in some cases we need to support passing of custom non-general Mat types, like arrays of cv::KeyPoint, cv::DMatch, etc. +This data is not intented to be interpreted as an image data, or processed somehow like regular cv::Mat. +To pass such custom type use rawIn() / rawOut() / rawInOut() wrappers. +Custom type is wrapped as Mat-compatible `CV_8UC` values (N = sizeof(T), N <= CV_CN_MAX). + */ +class CV_EXPORTS _InputArray +{ +public: + enum KindFlag { + KIND_SHIFT = 16, + FIXED_TYPE = 0x8000 << KIND_SHIFT, + FIXED_SIZE = 0x4000 << KIND_SHIFT, + KIND_MASK = 31 << KIND_SHIFT, + + NONE = 0 << KIND_SHIFT, + MAT = 1 << KIND_SHIFT, + MATX = 2 << KIND_SHIFT, + STD_VECTOR = 3 << KIND_SHIFT, + STD_VECTOR_VECTOR = 4 << KIND_SHIFT, + STD_VECTOR_MAT = 5 << KIND_SHIFT, + EXPR = 6 << KIND_SHIFT, + OPENGL_BUFFER = 7 << KIND_SHIFT, + CUDA_HOST_MEM = 8 << KIND_SHIFT, + CUDA_GPU_MAT = 9 << KIND_SHIFT, + UMAT =10 << KIND_SHIFT, + STD_VECTOR_UMAT =11 << KIND_SHIFT, + STD_BOOL_VECTOR =12 << KIND_SHIFT, + STD_VECTOR_CUDA_GPU_MAT = 13 << KIND_SHIFT, + STD_ARRAY =14 << KIND_SHIFT, + STD_ARRAY_MAT =15 << KIND_SHIFT + }; + + _InputArray(); + _InputArray(int _flags, void* _obj); + _InputArray(const Mat& m); + _InputArray(const MatExpr& expr); + _InputArray(const std::vector& vec); + template _InputArray(const Mat_<_Tp>& m); + template _InputArray(const std::vector<_Tp>& vec); + _InputArray(const std::vector& vec); + template _InputArray(const std::vector >& vec); + _InputArray(const std::vector >&) = delete; // not supported + template _InputArray(const std::vector >& vec); + template _InputArray(const _Tp* vec, int n); + template _InputArray(const Matx<_Tp, m, n>& matx); + _InputArray(const double& val); + _InputArray(const cuda::GpuMat& d_mat); + _InputArray(const std::vector& d_mat_array); + _InputArray(const ogl::Buffer& buf); + _InputArray(const cuda::HostMem& cuda_mem); + template _InputArray(const cudev::GpuMat_<_Tp>& m); + _InputArray(const UMat& um); + _InputArray(const std::vector& umv); + + template _InputArray(const std::array<_Tp, _Nm>& arr); + template _InputArray(const std::array& arr); + + template static _InputArray rawIn(const std::vector<_Tp>& vec); + template static _InputArray rawIn(const std::array<_Tp, _Nm>& arr); + + Mat getMat(int idx=-1) const; + Mat getMat_(int idx=-1) const; + UMat getUMat(int idx=-1) const; + void getMatVector(std::vector& mv) const; + void getUMatVector(std::vector& umv) const; + void getGpuMatVector(std::vector& gpumv) const; + cuda::GpuMat getGpuMat() const; + ogl::Buffer getOGlBuffer() const; + + int getFlags() const; + void* getObj() const; + Size getSz() const; + + _InputArray::KindFlag kind() const; + int dims(int i=-1) const; + int cols(int i=-1) const; + int rows(int i=-1) const; + Size size(int i=-1) const; + int sizend(int* sz, int i=-1) const; + bool sameSize(const _InputArray& arr) const; + size_t total(int i=-1) const; + int type(int i=-1) const; + int depth(int i=-1) const; + int channels(int i=-1) const; + bool isContinuous(int i=-1) const; + bool isSubmatrix(int i=-1) const; + bool empty() const; + void copyTo(const _OutputArray& arr) const; + void copyTo(const _OutputArray& arr, const _InputArray & mask) const; + size_t offset(int i=-1) const; + size_t step(int i=-1) const; + bool isMat() const; + bool isUMat() const; + bool isMatVector() const; + bool isUMatVector() const; + bool isMatx() const; + bool isVector() const; + bool isGpuMat() const; + bool isGpuMatVector() const; + ~_InputArray(); + +protected: + int flags; + void* obj; + Size sz; + + void init(int _flags, const void* _obj); + void init(int _flags, const void* _obj, Size _sz); +}; +CV_ENUM_FLAGS(_InputArray::KindFlag) +__CV_ENUM_FLAGS_BITWISE_AND(_InputArray::KindFlag, int, _InputArray::KindFlag) + +/** @brief This type is very similar to InputArray except that it is used for input/output and output function +parameters. + +Just like with InputArray, OpenCV users should not care about OutputArray, they just pass `Mat`, +`vector` etc. to the functions. The same limitation as for `InputArray`: *Do not explicitly +create OutputArray instances* applies here too. + +If you want to make your function polymorphic (i.e. accept different arrays as output parameters), +it is also not very difficult. Take the sample above as the reference. Note that +_OutputArray::create() needs to be called before _OutputArray::getMat(). This way you guarantee +that the output array is properly allocated. + +Optional output parameters. If you do not need certain output array to be computed and returned to +you, pass cv::noArray(), just like you would in the case of optional input array. At the +implementation level, use _OutputArray::needed() to check if certain output array needs to be +computed or not. + +There are several synonyms for OutputArray that are used to assist automatic Python/Java/... wrapper +generators: +@code + typedef OutputArray OutputArrayOfArrays; + typedef OutputArray InputOutputArray; + typedef OutputArray InputOutputArrayOfArrays; +@endcode + */ +class CV_EXPORTS _OutputArray : public _InputArray +{ +public: + enum DepthMask + { + DEPTH_MASK_8U = 1 << CV_8U, + DEPTH_MASK_8S = 1 << CV_8S, + DEPTH_MASK_16U = 1 << CV_16U, + DEPTH_MASK_16S = 1 << CV_16S, + DEPTH_MASK_32S = 1 << CV_32S, + DEPTH_MASK_32F = 1 << CV_32F, + DEPTH_MASK_64F = 1 << CV_64F, + DEPTH_MASK_16F = 1 << CV_16F, + DEPTH_MASK_ALL = (DEPTH_MASK_64F<<1)-1, + DEPTH_MASK_ALL_BUT_8S = DEPTH_MASK_ALL & ~DEPTH_MASK_8S, + DEPTH_MASK_ALL_16F = (DEPTH_MASK_16F<<1)-1, + DEPTH_MASK_FLT = DEPTH_MASK_32F + DEPTH_MASK_64F + }; + + _OutputArray(); + _OutputArray(int _flags, void* _obj); + _OutputArray(Mat& m); + _OutputArray(std::vector& vec); + _OutputArray(cuda::GpuMat& d_mat); + _OutputArray(std::vector& d_mat); + _OutputArray(ogl::Buffer& buf); + _OutputArray(cuda::HostMem& cuda_mem); + template _OutputArray(cudev::GpuMat_<_Tp>& m); + template _OutputArray(std::vector<_Tp>& vec); + _OutputArray(std::vector& vec) = delete; // not supported + template _OutputArray(std::vector >& vec); + _OutputArray(std::vector >&) = delete; // not supported + template _OutputArray(std::vector >& vec); + template _OutputArray(Mat_<_Tp>& m); + template _OutputArray(_Tp* vec, int n); + template _OutputArray(Matx<_Tp, m, n>& matx); + _OutputArray(UMat& m); + _OutputArray(std::vector& vec); + + _OutputArray(const Mat& m); + _OutputArray(const std::vector& vec); + _OutputArray(const cuda::GpuMat& d_mat); + _OutputArray(const std::vector& d_mat); + _OutputArray(const ogl::Buffer& buf); + _OutputArray(const cuda::HostMem& cuda_mem); + template _OutputArray(const cudev::GpuMat_<_Tp>& m); + template _OutputArray(const std::vector<_Tp>& vec); + template _OutputArray(const std::vector >& vec); + template _OutputArray(const std::vector >& vec); + template _OutputArray(const Mat_<_Tp>& m); + template _OutputArray(const _Tp* vec, int n); + template _OutputArray(const Matx<_Tp, m, n>& matx); + _OutputArray(const UMat& m); + _OutputArray(const std::vector& vec); + + template _OutputArray(std::array<_Tp, _Nm>& arr); + template _OutputArray(const std::array<_Tp, _Nm>& arr); + template _OutputArray(std::array& arr); + template _OutputArray(const std::array& arr); + + template static _OutputArray rawOut(std::vector<_Tp>& vec); + template static _OutputArray rawOut(std::array<_Tp, _Nm>& arr); + + bool fixedSize() const; + bool fixedType() const; + bool needed() const; + Mat& getMatRef(int i=-1) const; + UMat& getUMatRef(int i=-1) const; + cuda::GpuMat& getGpuMatRef() const; + std::vector& getGpuMatVecRef() const; + ogl::Buffer& getOGlBufferRef() const; + cuda::HostMem& getHostMemRef() const; + void create(Size sz, int type, int i=-1, bool allowTransposed=false, _OutputArray::DepthMask fixedDepthMask=static_cast<_OutputArray::DepthMask>(0)) const; + void create(int rows, int cols, int type, int i=-1, bool allowTransposed=false, _OutputArray::DepthMask fixedDepthMask=static_cast<_OutputArray::DepthMask>(0)) const; + void create(int dims, const int* size, int type, int i=-1, bool allowTransposed=false, _OutputArray::DepthMask fixedDepthMask=static_cast<_OutputArray::DepthMask>(0)) const; + void createSameSize(const _InputArray& arr, int mtype) const; + void release() const; + void clear() const; + void setTo(const _InputArray& value, const _InputArray & mask = _InputArray()) const; + + void assign(const UMat& u) const; + void assign(const Mat& m) const; + + void assign(const std::vector& v) const; + void assign(const std::vector& v) const; +}; + + +class CV_EXPORTS _InputOutputArray : public _OutputArray +{ +public: + _InputOutputArray(); + _InputOutputArray(int _flags, void* _obj); + _InputOutputArray(Mat& m); + _InputOutputArray(std::vector& vec); + _InputOutputArray(cuda::GpuMat& d_mat); + _InputOutputArray(ogl::Buffer& buf); + _InputOutputArray(cuda::HostMem& cuda_mem); + template _InputOutputArray(cudev::GpuMat_<_Tp>& m); + template _InputOutputArray(std::vector<_Tp>& vec); + _InputOutputArray(std::vector& vec) = delete; // not supported + template _InputOutputArray(std::vector >& vec); + template _InputOutputArray(std::vector >& vec); + template _InputOutputArray(Mat_<_Tp>& m); + template _InputOutputArray(_Tp* vec, int n); + template _InputOutputArray(Matx<_Tp, m, n>& matx); + _InputOutputArray(UMat& m); + _InputOutputArray(std::vector& vec); + + _InputOutputArray(const Mat& m); + _InputOutputArray(const std::vector& vec); + _InputOutputArray(const cuda::GpuMat& d_mat); + _InputOutputArray(const std::vector& d_mat); + _InputOutputArray(const ogl::Buffer& buf); + _InputOutputArray(const cuda::HostMem& cuda_mem); + template _InputOutputArray(const cudev::GpuMat_<_Tp>& m); + template _InputOutputArray(const std::vector<_Tp>& vec); + template _InputOutputArray(const std::vector >& vec); + template _InputOutputArray(const std::vector >& vec); + template _InputOutputArray(const Mat_<_Tp>& m); + template _InputOutputArray(const _Tp* vec, int n); + template _InputOutputArray(const Matx<_Tp, m, n>& matx); + _InputOutputArray(const UMat& m); + _InputOutputArray(const std::vector& vec); + + template _InputOutputArray(std::array<_Tp, _Nm>& arr); + template _InputOutputArray(const std::array<_Tp, _Nm>& arr); + template _InputOutputArray(std::array& arr); + template _InputOutputArray(const std::array& arr); + + template static _InputOutputArray rawInOut(std::vector<_Tp>& vec); + template _InputOutputArray rawInOut(std::array<_Tp, _Nm>& arr); + +}; + +/** Helper to wrap custom types. @see InputArray */ +template static inline _InputArray rawIn(_Tp& v); +/** Helper to wrap custom types. @see InputArray */ +template static inline _OutputArray rawOut(_Tp& v); +/** Helper to wrap custom types. @see InputArray */ +template static inline _InputOutputArray rawInOut(_Tp& v); + +CV__DEBUG_NS_END + +typedef const _InputArray& InputArray; +typedef InputArray InputArrayOfArrays; +typedef const _OutputArray& OutputArray; +typedef OutputArray OutputArrayOfArrays; +typedef const _InputOutputArray& InputOutputArray; +typedef InputOutputArray InputOutputArrayOfArrays; + +CV_EXPORTS InputOutputArray noArray(); + +/////////////////////////////////// MatAllocator ////////////////////////////////////// + +//! Usage flags for allocator +enum UMatUsageFlags +{ + USAGE_DEFAULT = 0, + + // buffer allocation policy is platform and usage specific + USAGE_ALLOCATE_HOST_MEMORY = 1 << 0, + USAGE_ALLOCATE_DEVICE_MEMORY = 1 << 1, + USAGE_ALLOCATE_SHARED_MEMORY = 1 << 2, // It is not equal to: USAGE_ALLOCATE_HOST_MEMORY | USAGE_ALLOCATE_DEVICE_MEMORY + + __UMAT_USAGE_FLAGS_32BIT = 0x7fffffff // Binary compatibility hint +}; + +struct CV_EXPORTS UMatData; + +/** @brief Custom array allocator +*/ +class CV_EXPORTS MatAllocator +{ +public: + MatAllocator() {} + virtual ~MatAllocator() {} + + // let's comment it off for now to detect and fix all the uses of allocator + //virtual void allocate(int dims, const int* sizes, int type, int*& refcount, + // uchar*& datastart, uchar*& data, size_t* step) = 0; + //virtual void deallocate(int* refcount, uchar* datastart, uchar* data) = 0; + virtual UMatData* allocate(int dims, const int* sizes, int type, + void* data, size_t* step, AccessFlag flags, UMatUsageFlags usageFlags) const = 0; + virtual bool allocate(UMatData* data, AccessFlag accessflags, UMatUsageFlags usageFlags) const = 0; + virtual void deallocate(UMatData* data) const = 0; + virtual void map(UMatData* data, AccessFlag accessflags) const; + virtual void unmap(UMatData* data) const; + virtual void download(UMatData* data, void* dst, int dims, const size_t sz[], + const size_t srcofs[], const size_t srcstep[], + const size_t dststep[]) const; + virtual void upload(UMatData* data, const void* src, int dims, const size_t sz[], + const size_t dstofs[], const size_t dststep[], + const size_t srcstep[]) const; + virtual void copy(UMatData* srcdata, UMatData* dstdata, int dims, const size_t sz[], + const size_t srcofs[], const size_t srcstep[], + const size_t dstofs[], const size_t dststep[], bool sync) const; + + // default implementation returns DummyBufferPoolController + virtual BufferPoolController* getBufferPoolController(const char* id = NULL) const; +}; + + +//////////////////////////////// MatCommaInitializer ////////////////////////////////// + +/** @brief Comma-separated Matrix Initializer + + The class instances are usually not created explicitly. + Instead, they are created on "matrix << firstValue" operator. + + The sample below initializes 2x2 rotation matrix: + + \code + double angle = 30, a = cos(angle*CV_PI/180), b = sin(angle*CV_PI/180); + Mat R = (Mat_(2,2) << a, -b, b, a); + \endcode +*/ +template class MatCommaInitializer_ +{ +public: + //! the constructor, created by "matrix << firstValue" operator, where matrix is cv::Mat + MatCommaInitializer_(Mat_<_Tp>* _m); + //! the operator that takes the next value and put it to the matrix + template MatCommaInitializer_<_Tp>& operator , (T2 v); + //! another form of conversion operator + operator Mat_<_Tp>() const; +protected: + MatIterator_<_Tp> it; +}; + + +/////////////////////////////////////// Mat /////////////////////////////////////////// + +// note that umatdata might be allocated together +// with the matrix data, not as a separate object. +// therefore, it does not have constructor or destructor; +// it should be explicitly initialized using init(). +struct CV_EXPORTS UMatData +{ + enum MemoryFlag { COPY_ON_MAP=1, HOST_COPY_OBSOLETE=2, + DEVICE_COPY_OBSOLETE=4, TEMP_UMAT=8, TEMP_COPIED_UMAT=24, + USER_ALLOCATED=32, DEVICE_MEM_MAPPED=64, + ASYNC_CLEANUP=128 + }; + UMatData(const MatAllocator* allocator); + ~UMatData(); + + // provide atomic access to the structure + void lock(); + void unlock(); + + bool hostCopyObsolete() const; + bool deviceCopyObsolete() const; + bool deviceMemMapped() const; + bool copyOnMap() const; + bool tempUMat() const; + bool tempCopiedUMat() const; + void markHostCopyObsolete(bool flag); + void markDeviceCopyObsolete(bool flag); + void markDeviceMemMapped(bool flag); + + const MatAllocator* prevAllocator; + const MatAllocator* currAllocator; + int urefcount; + int refcount; + uchar* data; + uchar* origdata; + size_t size; + + UMatData::MemoryFlag flags; + void* handle; + void* userdata; + int allocatorFlags_; + int mapcount; + UMatData* originalUMatData; +}; +CV_ENUM_FLAGS(UMatData::MemoryFlag) + + +struct CV_EXPORTS MatSize +{ + explicit MatSize(int* _p); + int dims() const; + Size operator()() const; + const int& operator[](int i) const; + int& operator[](int i); + operator const int*() const; // TODO OpenCV 4.0: drop this + bool operator == (const MatSize& sz) const; + bool operator != (const MatSize& sz) const; + + int* p; +}; + +struct CV_EXPORTS MatStep +{ + MatStep(); + explicit MatStep(size_t s); + const size_t& operator[](int i) const; + size_t& operator[](int i); + operator size_t() const; + MatStep& operator = (size_t s); + + size_t* p; + size_t buf[2]; +protected: + MatStep& operator = (const MatStep&); +}; + +/** @example samples/cpp/cout_mat.cpp +An example demonstrating the serial out capabilities of cv::Mat +*/ + + /** @brief n-dimensional dense array class \anchor CVMat_Details + +The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It +can be used to store real or complex-valued vectors and matrices, grayscale or color images, voxel +volumes, vector fields, point clouds, tensors, histograms (though, very high-dimensional histograms +may be better stored in a SparseMat ). The data layout of the array `M` is defined by the array +`M.step[]`, so that the address of element \f$(i_0,...,i_{M.dims-1})\f$, where \f$0\leq i_k= M.step[i+1]` (in fact, `M.step[i] >= M.step[i+1]*M.size[i+1]` ). This means +that 2-dimensional matrices are stored row-by-row, 3-dimensional matrices are stored plane-by-plane, +and so on. M.step[M.dims-1] is minimal and always equal to the element size M.elemSize() . + +So, the data layout in Mat is compatible with the majority of dense array types from the standard +toolkits and SDKs, such as Numpy (ndarray), Win32 (independent device bitmaps), and others, +that is, with any array that uses *steps* (or *strides*) to compute the position of a pixel. +Due to this compatibility, it is possible to make a Mat header for user-allocated data and process +it in-place using OpenCV functions. + +There are many different ways to create a Mat object. The most popular options are listed below: + +- Use the create(nrows, ncols, type) method or the similar Mat(nrows, ncols, type[, fillValue]) +constructor. A new array of the specified size and type is allocated. type has the same meaning as +in the cvCreateMat method. For example, CV_8UC1 means a 8-bit single-channel array, CV_32FC2 +means a 2-channel (complex) floating-point array, and so on. +@code + // make a 7x7 complex matrix filled with 1+3j. + Mat M(7,7,CV_32FC2,Scalar(1,3)); + // and now turn M to a 100x60 15-channel 8-bit matrix. + // The old content will be deallocated + M.create(100,60,CV_8UC(15)); +@endcode +As noted in the introduction to this chapter, create() allocates only a new array when the shape +or type of the current array are different from the specified ones. + +- Create a multi-dimensional array: +@code + // create a 100x100x100 8-bit array + int sz[] = {100, 100, 100}; + Mat bigCube(3, sz, CV_8U, Scalar::all(0)); +@endcode +It passes the number of dimensions =1 to the Mat constructor but the created array will be +2-dimensional with the number of columns set to 1. So, Mat::dims is always \>= 2 (can also be 0 +when the array is empty). + +- Use a copy constructor or assignment operator where there can be an array or expression on the +right side (see below). As noted in the introduction, the array assignment is an O(1) operation +because it only copies the header and increases the reference counter. The Mat::clone() method can +be used to get a full (deep) copy of the array when you need it. + +- Construct a header for a part of another array. It can be a single row, single column, several +rows, several columns, rectangular region in the array (called a *minor* in algebra) or a +diagonal. Such operations are also O(1) because the new header references the same data. You can +actually modify a part of the array using this feature, for example: +@code + // add the 5-th row, multiplied by 3 to the 3rd row + M.row(3) = M.row(3) + M.row(5)*3; + // now copy the 7-th column to the 1-st column + // M.col(1) = M.col(7); // this will not work + Mat M1 = M.col(1); + M.col(7).copyTo(M1); + // create a new 320x240 image + Mat img(Size(320,240),CV_8UC3); + // select a ROI + Mat roi(img, Rect(10,10,100,100)); + // fill the ROI with (0,255,0) (which is green in RGB space); + // the original 320x240 image will be modified + roi = Scalar(0,255,0); +@endcode +Due to the additional datastart and dataend members, it is possible to compute a relative +sub-array position in the main *container* array using locateROI(): +@code + Mat A = Mat::eye(10, 10, CV_32S); + // extracts A columns, 1 (inclusive) to 3 (exclusive). + Mat B = A(Range::all(), Range(1, 3)); + // extracts B rows, 5 (inclusive) to 9 (exclusive). + // that is, C \~ A(Range(5, 9), Range(1, 3)) + Mat C = B(Range(5, 9), Range::all()); + Size size; Point ofs; + C.locateROI(size, ofs); + // size will be (width=10,height=10) and the ofs will be (x=1, y=5) +@endcode +As in case of whole matrices, if you need a deep copy, use the `clone()` method of the extracted +sub-matrices. + +- Make a header for user-allocated data. It can be useful to do the following: + -# Process "foreign" data using OpenCV (for example, when you implement a DirectShow\* filter or + a processing module for gstreamer, and so on). For example: + @code + void process_video_frame(const unsigned char* pixels, + int width, int height, int step) + { + Mat img(height, width, CV_8UC3, pixels, step); + GaussianBlur(img, img, Size(7,7), 1.5, 1.5); + } + @endcode + -# Quickly initialize small matrices and/or get a super-fast element access. + @code + double m[3][3] = {{a, b, c}, {d, e, f}, {g, h, i}}; + Mat M = Mat(3, 3, CV_64F, m).inv(); + @endcode + . + +- Use MATLAB-style array initializers, zeros(), ones(), eye(), for example: +@code + // create a double-precision identity matrix and add it to M. + M += Mat::eye(M.rows, M.cols, CV_64F); +@endcode + +- Use a comma-separated initializer: +@code + // create a 3x3 double-precision identity matrix + Mat M = (Mat_(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1); +@endcode +With this approach, you first call a constructor of the Mat class with the proper parameters, and +then you just put `<< operator` followed by comma-separated values that can be constants, +variables, expressions, and so on. Also, note the extra parentheses required to avoid compilation +errors. + +Once the array is created, it is automatically managed via a reference-counting mechanism. If the +array header is built on top of user-allocated data, you should handle the data by yourself. The +array data is deallocated when no one points to it. If you want to release the data pointed by a +array header before the array destructor is called, use Mat::release(). + +The next important thing to learn about the array class is element access. This manual already +described how to compute an address of each array element. Normally, you are not required to use the +formula directly in the code. If you know the array element type (which can be retrieved using the +method Mat::type() ), you can access the element \f$M_{ij}\f$ of a 2-dimensional array as: +@code + M.at(i,j) += 1.f; +@endcode +assuming that `M` is a double-precision floating-point array. There are several variants of the method +at for a different number of dimensions. + +If you need to process a whole row of a 2D array, the most efficient way is to get the pointer to +the row first, and then just use the plain C operator [] : +@code + // compute sum of positive matrix elements + // (assuming that M is a double-precision matrix) + double sum=0; + for(int i = 0; i < M.rows; i++) + { + const double* Mi = M.ptr(i); + for(int j = 0; j < M.cols; j++) + sum += std::max(Mi[j], 0.); + } +@endcode +Some operations, like the one above, do not actually depend on the array shape. They just process +elements of an array one by one (or elements from multiple arrays that have the same coordinates, +for example, array addition). Such operations are called *element-wise*. It makes sense to check +whether all the input/output arrays are continuous, namely, have no gaps at the end of each row. If +yes, process them as a long single row: +@code + // compute the sum of positive matrix elements, optimized variant + double sum=0; + int cols = M.cols, rows = M.rows; + if(M.isContinuous()) + { + cols *= rows; + rows = 1; + } + for(int i = 0; i < rows; i++) + { + const double* Mi = M.ptr(i); + for(int j = 0; j < cols; j++) + sum += std::max(Mi[j], 0.); + } +@endcode +In case of the continuous matrix, the outer loop body is executed just once. So, the overhead is +smaller, which is especially noticeable in case of small matrices. + +Finally, there are STL-style iterators that are smart enough to skip gaps between successive rows: +@code + // compute sum of positive matrix elements, iterator-based variant + double sum=0; + MatConstIterator_ it = M.begin(), it_end = M.end(); + for(; it != it_end; ++it) + sum += std::max(*it, 0.); +@endcode +The matrix iterators are random-access iterators, so they can be passed to any STL algorithm, +including std::sort(). + +@note Matrix Expressions and arithmetic see MatExpr +*/ +class CV_EXPORTS Mat +{ +public: + /** + These are various constructors that form a matrix. As noted in the AutomaticAllocation, often + the default constructor is enough, and the proper matrix will be allocated by an OpenCV function. + The constructed matrix can further be assigned to another matrix or matrix expression or can be + allocated with Mat::create . In the former case, the old content is de-referenced. + */ + Mat(); + + /** @overload + @param rows Number of rows in a 2D array. + @param cols Number of columns in a 2D array. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + */ + Mat(int rows, int cols, int type); + + /** @overload + @param size 2D array size: Size(cols, rows) . In the Size() constructor, the number of rows and the + number of columns go in the reverse order. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + */ + Mat(Size size, int type); + + /** @overload + @param rows Number of rows in a 2D array. + @param cols Number of columns in a 2D array. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param s An optional value to initialize each matrix element with. To set all the matrix elements to + the particular value after the construction, use the assignment operator + Mat::operator=(const Scalar& value) . + */ + Mat(int rows, int cols, int type, const Scalar& s); + + /** @overload + @param size 2D array size: Size(cols, rows) . In the Size() constructor, the number of rows and the + number of columns go in the reverse order. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param s An optional value to initialize each matrix element with. To set all the matrix elements to + the particular value after the construction, use the assignment operator + Mat::operator=(const Scalar& value) . + */ + Mat(Size size, int type, const Scalar& s); + + /** @overload + @param ndims Array dimensionality. + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + */ + Mat(int ndims, const int* sizes, int type); + + /** @overload + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + */ + Mat(const std::vector& sizes, int type); + + /** @overload + @param ndims Array dimensionality. + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param s An optional value to initialize each matrix element with. To set all the matrix elements to + the particular value after the construction, use the assignment operator + Mat::operator=(const Scalar& value) . + */ + Mat(int ndims, const int* sizes, int type, const Scalar& s); + + /** @overload + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param s An optional value to initialize each matrix element with. To set all the matrix elements to + the particular value after the construction, use the assignment operator + Mat::operator=(const Scalar& value) . + */ + Mat(const std::vector& sizes, int type, const Scalar& s); + + + /** @overload + @param m Array that (as a whole or partly) is assigned to the constructed matrix. No data is copied + by these constructors. Instead, the header pointing to m data or its sub-array is constructed and + associated with it. The reference counter, if any, is incremented. So, when you modify the matrix + formed using such a constructor, you also modify the corresponding elements of m . If you want to + have an independent copy of the sub-array, use Mat::clone() . + */ + Mat(const Mat& m); + + /** @overload + @param rows Number of rows in a 2D array. + @param cols Number of columns in a 2D array. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param data Pointer to the user data. Matrix constructors that take data and step parameters do not + allocate matrix data. Instead, they just initialize the matrix header that points to the specified + data, which means that no data is copied. This operation is very efficient and can be used to + process external data using OpenCV functions. The external data is not automatically deallocated, so + you should take care of it. + @param step Number of bytes each matrix row occupies. The value should include the padding bytes at + the end of each row, if any. If the parameter is missing (set to AUTO_STEP ), no padding is assumed + and the actual step is calculated as cols*elemSize(). See Mat::elemSize. + */ + Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP); + + /** @overload + @param size 2D array size: Size(cols, rows) . In the Size() constructor, the number of rows and the + number of columns go in the reverse order. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param data Pointer to the user data. Matrix constructors that take data and step parameters do not + allocate matrix data. Instead, they just initialize the matrix header that points to the specified + data, which means that no data is copied. This operation is very efficient and can be used to + process external data using OpenCV functions. The external data is not automatically deallocated, so + you should take care of it. + @param step Number of bytes each matrix row occupies. The value should include the padding bytes at + the end of each row, if any. If the parameter is missing (set to AUTO_STEP ), no padding is assumed + and the actual step is calculated as cols*elemSize(). See Mat::elemSize. + */ + Mat(Size size, int type, void* data, size_t step=AUTO_STEP); + + /** @overload + @param ndims Array dimensionality. + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param data Pointer to the user data. Matrix constructors that take data and step parameters do not + allocate matrix data. Instead, they just initialize the matrix header that points to the specified + data, which means that no data is copied. This operation is very efficient and can be used to + process external data using OpenCV functions. The external data is not automatically deallocated, so + you should take care of it. + @param steps Array of ndims-1 steps in case of a multi-dimensional array (the last step is always + set to the element size). If not specified, the matrix is assumed to be continuous. + */ + Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0); + + /** @overload + @param sizes Array of integers specifying an n-dimensional array shape. + @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param data Pointer to the user data. Matrix constructors that take data and step parameters do not + allocate matrix data. Instead, they just initialize the matrix header that points to the specified + data, which means that no data is copied. This operation is very efficient and can be used to + process external data using OpenCV functions. The external data is not automatically deallocated, so + you should take care of it. + @param steps Array of ndims-1 steps in case of a multi-dimensional array (the last step is always + set to the element size). If not specified, the matrix is assumed to be continuous. + */ + Mat(const std::vector& sizes, int type, void* data, const size_t* steps=0); + + /** @overload + @param m Array that (as a whole or partly) is assigned to the constructed matrix. No data is copied + by these constructors. Instead, the header pointing to m data or its sub-array is constructed and + associated with it. The reference counter, if any, is incremented. So, when you modify the matrix + formed using such a constructor, you also modify the corresponding elements of m . If you want to + have an independent copy of the sub-array, use Mat::clone() . + @param rowRange Range of the m rows to take. As usual, the range start is inclusive and the range + end is exclusive. Use Range::all() to take all the rows. + @param colRange Range of the m columns to take. Use Range::all() to take all the columns. + */ + Mat(const Mat& m, const Range& rowRange, const Range& colRange=Range::all()); + + /** @overload + @param m Array that (as a whole or partly) is assigned to the constructed matrix. No data is copied + by these constructors. Instead, the header pointing to m data or its sub-array is constructed and + associated with it. The reference counter, if any, is incremented. So, when you modify the matrix + formed using such a constructor, you also modify the corresponding elements of m . If you want to + have an independent copy of the sub-array, use Mat::clone() . + @param roi Region of interest. + */ + Mat(const Mat& m, const Rect& roi); + + /** @overload + @param m Array that (as a whole or partly) is assigned to the constructed matrix. No data is copied + by these constructors. Instead, the header pointing to m data or its sub-array is constructed and + associated with it. The reference counter, if any, is incremented. So, when you modify the matrix + formed using such a constructor, you also modify the corresponding elements of m . If you want to + have an independent copy of the sub-array, use Mat::clone() . + @param ranges Array of selected ranges of m along each dimensionality. + */ + Mat(const Mat& m, const Range* ranges); + + /** @overload + @param m Array that (as a whole or partly) is assigned to the constructed matrix. No data is copied + by these constructors. Instead, the header pointing to m data or its sub-array is constructed and + associated with it. The reference counter, if any, is incremented. So, when you modify the matrix + formed using such a constructor, you also modify the corresponding elements of m . If you want to + have an independent copy of the sub-array, use Mat::clone() . + @param ranges Array of selected ranges of m along each dimensionality. + */ + Mat(const Mat& m, const std::vector& ranges); + + /** @overload + @param vec STL vector whose elements form the matrix. The matrix has a single column and the number + of rows equal to the number of vector elements. Type of the matrix matches the type of vector + elements. The constructor can handle arbitrary types, for which there is a properly declared + DataType . This means that the vector elements must be primitive numbers or uni-type numerical + tuples of numbers. Mixed-type structures are not supported. The corresponding constructor is + explicit. Since STL vectors are not automatically converted to Mat instances, you should write + Mat(vec) explicitly. Unless you copy the data into the matrix ( copyData=true ), no new elements + will be added to the vector because it can potentially yield vector data reallocation, and, thus, + the matrix data pointer will be invalid. + @param copyData Flag to specify whether the underlying data of the STL vector should be copied + to (true) or shared with (false) the newly constructed matrix. When the data is copied, the + allocated buffer is managed using Mat reference counting mechanism. While the data is shared, + the reference counter is NULL, and you should not deallocate the data until the matrix is not + destructed. + */ + template explicit Mat(const std::vector<_Tp>& vec, bool copyData=false); + + /** @overload + */ + template::value>::type> + explicit Mat(const std::initializer_list<_Tp> list); + + /** @overload + */ + template explicit Mat(const std::initializer_list sizes, const std::initializer_list<_Tp> list); + + /** @overload + */ + template explicit Mat(const std::array<_Tp, _Nm>& arr, bool copyData=false); + + /** @overload + */ + template explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true); + + /** @overload + */ + template explicit Mat(const Matx<_Tp, m, n>& mtx, bool copyData=true); + + /** @overload + */ + template explicit Mat(const Point_<_Tp>& pt, bool copyData=true); + + /** @overload + */ + template explicit Mat(const Point3_<_Tp>& pt, bool copyData=true); + + /** @overload + */ + template explicit Mat(const MatCommaInitializer_<_Tp>& commaInitializer); + + //! download data from GpuMat + explicit Mat(const cuda::GpuMat& m); + + //! destructor - calls release() + ~Mat(); + + /** @brief assignment operators + + These are available assignment operators. Since they all are very different, make sure to read the + operator parameters description. + @param m Assigned, right-hand-side matrix. Matrix assignment is an O(1) operation. This means that + no data is copied but the data is shared and the reference counter, if any, is incremented. Before + assigning new data, the old data is de-referenced via Mat::release . + */ + Mat& operator = (const Mat& m); + + /** @overload + @param expr Assigned matrix expression object. As opposite to the first form of the assignment + operation, the second form can reuse already allocated matrix if it has the right size and type to + fit the matrix expression result. It is automatically handled by the real function that the matrix + expressions is expanded to. For example, C=A+B is expanded to add(A, B, C), and add takes care of + automatic C reallocation. + */ + Mat& operator = (const MatExpr& expr); + + //! retrieve UMat from Mat + UMat getUMat(AccessFlag accessFlags, UMatUsageFlags usageFlags = USAGE_DEFAULT) const; + + /** @brief Creates a matrix header for the specified matrix row. + + The method makes a new header for the specified matrix row and returns it. This is an O(1) + operation, regardless of the matrix size. The underlying data of the new matrix is shared with the + original matrix. Here is the example of one of the classical basic matrix processing operations, + axpy, used by LU and many other algorithms: + @code + inline void matrix_axpy(Mat& A, int i, int j, double alpha) + { + A.row(i) += A.row(j)*alpha; + } + @endcode + @note In the current implementation, the following code does not work as expected: + @code + Mat A; + ... + A.row(i) = A.row(j); // will not work + @endcode + This happens because A.row(i) forms a temporary header that is further assigned to another header. + Remember that each of these operations is O(1), that is, no data is copied. Thus, the above + assignment is not true if you may have expected the j-th row to be copied to the i-th row. To + achieve that, you should either turn this simple assignment into an expression or use the + Mat::copyTo method: + @code + Mat A; + ... + // works, but looks a bit obscure. + A.row(i) = A.row(j) + 0; + // this is a bit longer, but the recommended method. + A.row(j).copyTo(A.row(i)); + @endcode + @param y A 0-based row index. + */ + Mat row(int y) const; + + /** @brief Creates a matrix header for the specified matrix column. + + The method makes a new header for the specified matrix column and returns it. This is an O(1) + operation, regardless of the matrix size. The underlying data of the new matrix is shared with the + original matrix. See also the Mat::row description. + @param x A 0-based column index. + */ + Mat col(int x) const; + + /** @brief Creates a matrix header for the specified row span. + + The method makes a new header for the specified row span of the matrix. Similarly to Mat::row and + Mat::col , this is an O(1) operation. + @param startrow An inclusive 0-based start index of the row span. + @param endrow An exclusive 0-based ending index of the row span. + */ + Mat rowRange(int startrow, int endrow) const; + + /** @overload + @param r Range structure containing both the start and the end indices. + */ + Mat rowRange(const Range& r) const; + + /** @brief Creates a matrix header for the specified column span. + + The method makes a new header for the specified column span of the matrix. Similarly to Mat::row and + Mat::col , this is an O(1) operation. + @param startcol An inclusive 0-based start index of the column span. + @param endcol An exclusive 0-based ending index of the column span. + */ + Mat colRange(int startcol, int endcol) const; + + /** @overload + @param r Range structure containing both the start and the end indices. + */ + Mat colRange(const Range& r) const; + + /** @brief Extracts a diagonal from a matrix + + The method makes a new header for the specified matrix diagonal. The new matrix is represented as a + single-column matrix. Similarly to Mat::row and Mat::col, this is an O(1) operation. + @param d index of the diagonal, with the following values: + - `d=0` is the main diagonal. + - `d<0` is a diagonal from the lower half. For example, d=-1 means the diagonal is set + immediately below the main one. + - `d>0` is a diagonal from the upper half. For example, d=1 means the diagonal is set + immediately above the main one. + For example: + @code + Mat m = (Mat_(3,3) << + 1,2,3, + 4,5,6, + 7,8,9); + Mat d0 = m.diag(0); + Mat d1 = m.diag(1); + Mat d_1 = m.diag(-1); + @endcode + The resulting matrices are + @code + d0 = + [1; + 5; + 9] + d1 = + [2; + 6] + d_1 = + [4; + 8] + @endcode + */ + Mat diag(int d=0) const; + + /** @brief creates a diagonal matrix + + The method creates a square diagonal matrix from specified main diagonal. + @param d One-dimensional matrix that represents the main diagonal. + */ + static Mat diag(const Mat& d); + + /** @brief Creates a full copy of the array and the underlying data. + + The method creates a full copy of the array. The original step[] is not taken into account. So, the + array copy is a continuous array occupying total()*elemSize() bytes. + */ + Mat clone() const CV_NODISCARD; + + /** @brief Copies the matrix to another one. + + The method copies the matrix data to another matrix. Before copying the data, the method invokes : + @code + m.create(this->size(), this->type()); + @endcode + so that the destination matrix is reallocated if needed. While m.copyTo(m); works flawlessly, the + function does not handle the case of a partial overlap between the source and the destination + matrices. + + When the operation mask is specified, if the Mat::create call shown above reallocates the matrix, + the newly allocated matrix is initialized with all zeros before copying the data. + @param m Destination matrix. If it does not have a proper size or type before the operation, it is + reallocated. + */ + void copyTo( OutputArray m ) const; + + /** @overload + @param m Destination matrix. If it does not have a proper size or type before the operation, it is + reallocated. + @param mask Operation mask of the same size as \*this. Its non-zero elements indicate which matrix + elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels. + */ + void copyTo( OutputArray m, InputArray mask ) const; + + /** @brief Converts an array to another data type with optional scaling. + + The method converts source pixel values to the target data type. saturate_cast\<\> is applied at + the end to avoid possible overflows: + + \f[m(x,y) = saturate \_ cast( \alpha (*this)(x,y) + \beta )\f] + @param m output matrix; if it does not have a proper size or type before the operation, it is + reallocated. + @param rtype desired output matrix type or, rather, the depth since the number of channels are the + same as the input has; if rtype is negative, the output matrix will have the same type as the input. + @param alpha optional scale factor. + @param beta optional delta added to the scaled values. + */ + void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const; + + /** @brief Provides a functional form of convertTo. + + This is an internally used method called by the @ref MatrixExpressions engine. + @param m Destination array. + @param type Desired destination array depth (or -1 if it should be the same as the source type). + */ + void assignTo( Mat& m, int type=-1 ) const; + + /** @brief Sets all or some of the array elements to the specified value. + @param s Assigned scalar converted to the actual array type. + */ + Mat& operator = (const Scalar& s); + + /** @brief Sets all or some of the array elements to the specified value. + + This is an advanced variant of the Mat::operator=(const Scalar& s) operator. + @param value Assigned scalar converted to the actual array type. + @param mask Operation mask of the same size as \*this. Its non-zero elements indicate which matrix + elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels + */ + Mat& setTo(InputArray value, InputArray mask=noArray()); + + /** @brief Changes the shape and/or the number of channels of a 2D matrix without copying the data. + + The method makes a new matrix header for \*this elements. The new matrix may have a different size + and/or different number of channels. Any combination is possible if: + - No extra elements are included into the new matrix and no elements are excluded. Consequently, + the product rows\*cols\*channels() must stay the same after the transformation. + - No data is copied. That is, this is an O(1) operation. Consequently, if you change the number of + rows, or the operation changes the indices of elements row in some other way, the matrix must be + continuous. See Mat::isContinuous . + + For example, if there is a set of 3D points stored as an STL vector, and you want to represent the + points as a 3xN matrix, do the following: + @code + std::vector vec; + ... + Mat pointMat = Mat(vec). // convert vector to Mat, O(1) operation + reshape(1). // make Nx3 1-channel matrix out of Nx1 3-channel. + // Also, an O(1) operation + t(); // finally, transpose the Nx3 matrix. + // This involves copying all the elements + @endcode + @param cn New number of channels. If the parameter is 0, the number of channels remains the same. + @param rows New number of rows. If the parameter is 0, the number of rows remains the same. + */ + Mat reshape(int cn, int rows=0) const; + + /** @overload */ + Mat reshape(int cn, int newndims, const int* newsz) const; + + /** @overload */ + Mat reshape(int cn, const std::vector& newshape) const; + + /** @brief Transposes a matrix. + + The method performs matrix transposition by means of matrix expressions. It does not perform the + actual transposition but returns a temporary matrix transposition object that can be further used as + a part of more complex matrix expressions or can be assigned to a matrix: + @code + Mat A1 = A + Mat::eye(A.size(), A.type())*lambda; + Mat C = A1.t()*A1; // compute (A + lambda*I)^t * (A + lamda*I) + @endcode + */ + MatExpr t() const; + + /** @brief Inverses a matrix. + + The method performs a matrix inversion by means of matrix expressions. This means that a temporary + matrix inversion object is returned by the method and can be used further as a part of more complex + matrix expressions or can be assigned to a matrix. + @param method Matrix inversion method. One of cv::DecompTypes + */ + MatExpr inv(int method=DECOMP_LU) const; + + /** @brief Performs an element-wise multiplication or division of the two matrices. + + The method returns a temporary object encoding per-element array multiplication, with optional + scale. Note that this is not a matrix multiplication that corresponds to a simpler "\*" operator. + + Example: + @code + Mat C = A.mul(5/B); // equivalent to divide(A, B, C, 5) + @endcode + @param m Another array of the same type and the same size as \*this, or a matrix expression. + @param scale Optional scale factor. + */ + MatExpr mul(InputArray m, double scale=1) const; + + /** @brief Computes a cross-product of two 3-element vectors. + + The method computes a cross-product of two 3-element vectors. The vectors must be 3-element + floating-point vectors of the same shape and size. The result is another 3-element vector of the + same shape and type as operands. + @param m Another cross-product operand. + */ + Mat cross(InputArray m) const; + + /** @brief Computes a dot-product of two vectors. + + The method computes a dot-product of two matrices. If the matrices are not single-column or + single-row vectors, the top-to-bottom left-to-right scan ordering is used to treat them as 1D + vectors. The vectors must have the same size and type. If the matrices have more than one channel, + the dot products from all the channels are summed together. + @param m another dot-product operand. + */ + double dot(InputArray m) const; + + /** @brief Returns a zero array of the specified size and type. + + The method returns a Matlab-style zero array initializer. It can be used to quickly form a constant + array as a function parameter, part of a matrix expression, or as a matrix initializer: + @code + Mat A; + A = Mat::zeros(3, 3, CV_32F); + @endcode + In the example above, a new matrix is allocated only if A is not a 3x3 floating-point matrix. + Otherwise, the existing matrix A is filled with zeros. + @param rows Number of rows. + @param cols Number of columns. + @param type Created matrix type. + */ + static MatExpr zeros(int rows, int cols, int type); + + /** @overload + @param size Alternative to the matrix size specification Size(cols, rows) . + @param type Created matrix type. + */ + static MatExpr zeros(Size size, int type); + + /** @overload + @param ndims Array dimensionality. + @param sz Array of integers specifying the array shape. + @param type Created matrix type. + */ + static MatExpr zeros(int ndims, const int* sz, int type); + + /** @brief Returns an array of all 1's of the specified size and type. + + The method returns a Matlab-style 1's array initializer, similarly to Mat::zeros. Note that using + this method you can initialize an array with an arbitrary value, using the following Matlab idiom: + @code + Mat A = Mat::ones(100, 100, CV_8U)*3; // make 100x100 matrix filled with 3. + @endcode + The above operation does not form a 100x100 matrix of 1's and then multiply it by 3. Instead, it + just remembers the scale factor (3 in this case) and use it when actually invoking the matrix + initializer. + @note In case of multi-channels type, only the first channel will be initialized with 1's, the + others will be set to 0's. + @param rows Number of rows. + @param cols Number of columns. + @param type Created matrix type. + */ + static MatExpr ones(int rows, int cols, int type); + + /** @overload + @param size Alternative to the matrix size specification Size(cols, rows) . + @param type Created matrix type. + */ + static MatExpr ones(Size size, int type); + + /** @overload + @param ndims Array dimensionality. + @param sz Array of integers specifying the array shape. + @param type Created matrix type. + */ + static MatExpr ones(int ndims, const int* sz, int type); + + /** @brief Returns an identity matrix of the specified size and type. + + The method returns a Matlab-style identity matrix initializer, similarly to Mat::zeros. Similarly to + Mat::ones, you can use a scale operation to create a scaled identity matrix efficiently: + @code + // make a 4x4 diagonal matrix with 0.1's on the diagonal. + Mat A = Mat::eye(4, 4, CV_32F)*0.1; + @endcode + @note In case of multi-channels type, identity matrix will be initialized only for the first channel, + the others will be set to 0's + @param rows Number of rows. + @param cols Number of columns. + @param type Created matrix type. + */ + static MatExpr eye(int rows, int cols, int type); + + /** @overload + @param size Alternative matrix size specification as Size(cols, rows) . + @param type Created matrix type. + */ + static MatExpr eye(Size size, int type); + + /** @brief Allocates new array data if needed. + + This is one of the key Mat methods. Most new-style OpenCV functions and methods that produce arrays + call this method for each output array. The method uses the following algorithm: + + -# If the current array shape and the type match the new ones, return immediately. Otherwise, + de-reference the previous data by calling Mat::release. + -# Initialize the new header. + -# Allocate the new data of total()\*elemSize() bytes. + -# Allocate the new, associated with the data, reference counter and set it to 1. + + Such a scheme makes the memory management robust and efficient at the same time and helps avoid + extra typing for you. This means that usually there is no need to explicitly allocate output arrays. + That is, instead of writing: + @code + Mat color; + ... + Mat gray(color.rows, color.cols, color.depth()); + cvtColor(color, gray, COLOR_BGR2GRAY); + @endcode + you can simply write: + @code + Mat color; + ... + Mat gray; + cvtColor(color, gray, COLOR_BGR2GRAY); + @endcode + because cvtColor, as well as the most of OpenCV functions, calls Mat::create() for the output array + internally. + @param rows New number of rows. + @param cols New number of columns. + @param type New matrix type. + */ + void create(int rows, int cols, int type); + + /** @overload + @param size Alternative new matrix size specification: Size(cols, rows) + @param type New matrix type. + */ + void create(Size size, int type); + + /** @overload + @param ndims New array dimensionality. + @param sizes Array of integers specifying a new array shape. + @param type New matrix type. + */ + void create(int ndims, const int* sizes, int type); + + /** @overload + @param sizes Array of integers specifying a new array shape. + @param type New matrix type. + */ + void create(const std::vector& sizes, int type); + + /** @brief Increments the reference counter. + + The method increments the reference counter associated with the matrix data. If the matrix header + points to an external data set (see Mat::Mat ), the reference counter is NULL, and the method has no + effect in this case. Normally, to avoid memory leaks, the method should not be called explicitly. It + is called implicitly by the matrix assignment operator. The reference counter increment is an atomic + operation on the platforms that support it. Thus, it is safe to operate on the same matrices + asynchronously in different threads. + */ + void addref(); + + /** @brief Decrements the reference counter and deallocates the matrix if needed. + + The method decrements the reference counter associated with the matrix data. When the reference + counter reaches 0, the matrix data is deallocated and the data and the reference counter pointers + are set to NULL's. If the matrix header points to an external data set (see Mat::Mat ), the + reference counter is NULL, and the method has no effect in this case. + + This method can be called manually to force the matrix data deallocation. But since this method is + automatically called in the destructor, or by any other method that changes the data pointer, it is + usually not needed. The reference counter decrement and check for 0 is an atomic operation on the + platforms that support it. Thus, it is safe to operate on the same matrices asynchronously in + different threads. + */ + void release(); + + //! internal use function, consider to use 'release' method instead; deallocates the matrix data + void deallocate(); + //! internal use function; properly re-allocates _size, _step arrays + void copySize(const Mat& m); + + /** @brief Reserves space for the certain number of rows. + + The method reserves space for sz rows. If the matrix already has enough space to store sz rows, + nothing happens. If the matrix is reallocated, the first Mat::rows rows are preserved. The method + emulates the corresponding method of the STL vector class. + @param sz Number of rows. + */ + void reserve(size_t sz); + + /** @brief Reserves space for the certain number of bytes. + + The method reserves space for sz bytes. If the matrix already has enough space to store sz bytes, + nothing happens. If matrix has to be reallocated its previous content could be lost. + @param sz Number of bytes. + */ + void reserveBuffer(size_t sz); + + /** @brief Changes the number of matrix rows. + + The methods change the number of matrix rows. If the matrix is reallocated, the first + min(Mat::rows, sz) rows are preserved. The methods emulate the corresponding methods of the STL + vector class. + @param sz New number of rows. + */ + void resize(size_t sz); + + /** @overload + @param sz New number of rows. + @param s Value assigned to the newly added elements. + */ + void resize(size_t sz, const Scalar& s); + + //! internal function + void push_back_(const void* elem); + + /** @brief Adds elements to the bottom of the matrix. + + The methods add one or more elements to the bottom of the matrix. They emulate the corresponding + method of the STL vector class. When elem is Mat , its type and the number of columns must be the + same as in the container matrix. + @param elem Added element(s). + */ + template void push_back(const _Tp& elem); + + /** @overload + @param elem Added element(s). + */ + template void push_back(const Mat_<_Tp>& elem); + + /** @overload + @param elem Added element(s). + */ + template void push_back(const std::vector<_Tp>& elem); + + /** @overload + @param m Added line(s). + */ + void push_back(const Mat& m); + + /** @brief Removes elements from the bottom of the matrix. + + The method removes one or more rows from the bottom of the matrix. + @param nelems Number of removed rows. If it is greater than the total number of rows, an exception + is thrown. + */ + void pop_back(size_t nelems=1); + + /** @brief Locates the matrix header within a parent matrix. + + After you extracted a submatrix from a matrix using Mat::row, Mat::col, Mat::rowRange, + Mat::colRange, and others, the resultant submatrix points just to the part of the original big + matrix. However, each submatrix contains information (represented by datastart and dataend + fields) that helps reconstruct the original matrix size and the position of the extracted + submatrix within the original matrix. The method locateROI does exactly that. + @param wholeSize Output parameter that contains the size of the whole matrix containing *this* + as a part. + @param ofs Output parameter that contains an offset of *this* inside the whole matrix. + */ + void locateROI( Size& wholeSize, Point& ofs ) const; + + /** @brief Adjusts a submatrix size and position within the parent matrix. + + The method is complimentary to Mat::locateROI . The typical use of these functions is to determine + the submatrix position within the parent matrix and then shift the position somehow. Typically, it + can be required for filtering operations when pixels outside of the ROI should be taken into + account. When all the method parameters are positive, the ROI needs to grow in all directions by the + specified amount, for example: + @code + A.adjustROI(2, 2, 2, 2); + @endcode + In this example, the matrix size is increased by 4 elements in each direction. The matrix is shifted + by 2 elements to the left and 2 elements up, which brings in all the necessary pixels for the + filtering with the 5x5 kernel. + + adjustROI forces the adjusted ROI to be inside of the parent matrix that is boundaries of the + adjusted ROI are constrained by boundaries of the parent matrix. For example, if the submatrix A is + located in the first row of a parent matrix and you called A.adjustROI(2, 2, 2, 2) then A will not + be increased in the upward direction. + + The function is used internally by the OpenCV filtering functions, like filter2D , morphological + operations, and so on. + @param dtop Shift of the top submatrix boundary upwards. + @param dbottom Shift of the bottom submatrix boundary downwards. + @param dleft Shift of the left submatrix boundary to the left. + @param dright Shift of the right submatrix boundary to the right. + @sa copyMakeBorder + */ + Mat& adjustROI( int dtop, int dbottom, int dleft, int dright ); + + /** @brief Extracts a rectangular submatrix. + + The operators make a new header for the specified sub-array of \*this . They are the most + generalized forms of Mat::row, Mat::col, Mat::rowRange, and Mat::colRange . For example, + `A(Range(0, 10), Range::all())` is equivalent to `A.rowRange(0, 10)`. Similarly to all of the above, + the operators are O(1) operations, that is, no matrix data is copied. + @param rowRange Start and end row of the extracted submatrix. The upper boundary is not included. To + select all the rows, use Range::all(). + @param colRange Start and end column of the extracted submatrix. The upper boundary is not included. + To select all the columns, use Range::all(). + */ + Mat operator()( Range rowRange, Range colRange ) const; + + /** @overload + @param roi Extracted submatrix specified as a rectangle. + */ + Mat operator()( const Rect& roi ) const; + + /** @overload + @param ranges Array of selected ranges along each array dimension. + */ + Mat operator()( const Range* ranges ) const; + + /** @overload + @param ranges Array of selected ranges along each array dimension. + */ + Mat operator()(const std::vector& ranges) const; + + template operator std::vector<_Tp>() const; + template operator Vec<_Tp, n>() const; + template operator Matx<_Tp, m, n>() const; + + template operator std::array<_Tp, _Nm>() const; + + /** @brief Reports whether the matrix is continuous or not. + + The method returns true if the matrix elements are stored continuously without gaps at the end of + each row. Otherwise, it returns false. Obviously, 1x1 or 1xN matrices are always continuous. + Matrices created with Mat::create are always continuous. But if you extract a part of the matrix + using Mat::col, Mat::diag, and so on, or constructed a matrix header for externally allocated data, + such matrices may no longer have this property. + + The continuity flag is stored as a bit in the Mat::flags field and is computed automatically when + you construct a matrix header. Thus, the continuity check is a very fast operation, though + theoretically it could be done as follows: + @code + // alternative implementation of Mat::isContinuous() + bool myCheckMatContinuity(const Mat& m) + { + //return (m.flags & Mat::CONTINUOUS_FLAG) != 0; + return m.rows == 1 || m.step == m.cols*m.elemSize(); + } + @endcode + The method is used in quite a few of OpenCV functions. The point is that element-wise operations + (such as arithmetic and logical operations, math functions, alpha blending, color space + transformations, and others) do not depend on the image geometry. Thus, if all the input and output + arrays are continuous, the functions can process them as very long single-row vectors. The example + below illustrates how an alpha-blending function can be implemented: + @code + template + void alphaBlendRGBA(const Mat& src1, const Mat& src2, Mat& dst) + { + const float alpha_scale = (float)std::numeric_limits::max(), + inv_scale = 1.f/alpha_scale; + + CV_Assert( src1.type() == src2.type() && + src1.type() == CV_MAKETYPE(traits::Depth::value, 4) && + src1.size() == src2.size()); + Size size = src1.size(); + dst.create(size, src1.type()); + + // here is the idiom: check the arrays for continuity and, + // if this is the case, + // treat the arrays as 1D vectors + if( src1.isContinuous() && src2.isContinuous() && dst.isContinuous() ) + { + size.width *= size.height; + size.height = 1; + } + size.width *= 4; + + for( int i = 0; i < size.height; i++ ) + { + // when the arrays are continuous, + // the outer loop is executed only once + const T* ptr1 = src1.ptr(i); + const T* ptr2 = src2.ptr(i); + T* dptr = dst.ptr(i); + + for( int j = 0; j < size.width; j += 4 ) + { + float alpha = ptr1[j+3]*inv_scale, beta = ptr2[j+3]*inv_scale; + dptr[j] = saturate_cast(ptr1[j]*alpha + ptr2[j]*beta); + dptr[j+1] = saturate_cast(ptr1[j+1]*alpha + ptr2[j+1]*beta); + dptr[j+2] = saturate_cast(ptr1[j+2]*alpha + ptr2[j+2]*beta); + dptr[j+3] = saturate_cast((1 - (1-alpha)*(1-beta))*alpha_scale); + } + } + } + @endcode + This approach, while being very simple, can boost the performance of a simple element-operation by + 10-20 percents, especially if the image is rather small and the operation is quite simple. + + Another OpenCV idiom in this function, a call of Mat::create for the destination array, that + allocates the destination array unless it already has the proper size and type. And while the newly + allocated arrays are always continuous, you still need to check the destination array because + Mat::create does not always allocate a new matrix. + */ + bool isContinuous() const; + + //! returns true if the matrix is a submatrix of another matrix + bool isSubmatrix() const; + + /** @brief Returns the matrix element size in bytes. + + The method returns the matrix element size in bytes. For example, if the matrix type is CV_16SC3 , + the method returns 3\*sizeof(short) or 6. + */ + size_t elemSize() const; + + /** @brief Returns the size of each matrix element channel in bytes. + + The method returns the matrix element channel size in bytes, that is, it ignores the number of + channels. For example, if the matrix type is CV_16SC3 , the method returns sizeof(short) or 2. + */ + size_t elemSize1() const; + + /** @brief Returns the type of a matrix element. + + The method returns a matrix element type. This is an identifier compatible with the CvMat type + system, like CV_16SC3 or 16-bit signed 3-channel array, and so on. + */ + int type() const; + + /** @brief Returns the depth of a matrix element. + + The method returns the identifier of the matrix element depth (the type of each individual channel). + For example, for a 16-bit signed element array, the method returns CV_16S . A complete list of + matrix types contains the following values: + - CV_8U - 8-bit unsigned integers ( 0..255 ) + - CV_8S - 8-bit signed integers ( -128..127 ) + - CV_16U - 16-bit unsigned integers ( 0..65535 ) + - CV_16S - 16-bit signed integers ( -32768..32767 ) + - CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) + - CV_32F - 32-bit floating-point numbers ( -FLT_MAX..FLT_MAX, INF, NAN ) + - CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN ) + */ + int depth() const; + + /** @brief Returns the number of matrix channels. + + The method returns the number of matrix channels. + */ + int channels() const; + + /** @brief Returns a normalized step. + + The method returns a matrix step divided by Mat::elemSize1() . It can be useful to quickly access an + arbitrary matrix element. + */ + size_t step1(int i=0) const; + + /** @brief Returns true if the array has no elements. + + The method returns true if Mat::total() is 0 or if Mat::data is NULL. Because of pop_back() and + resize() methods `M.total() == 0` does not imply that `M.data == NULL`. + */ + bool empty() const; + + /** @brief Returns the total number of array elements. + + The method returns the number of array elements (a number of pixels if the array represents an + image). + */ + size_t total() const; + + /** @brief Returns the total number of array elements. + + The method returns the number of elements within a certain sub-array slice with startDim <= dim < endDim + */ + size_t total(int startDim, int endDim=INT_MAX) const; + + /** + * @param elemChannels Number of channels or number of columns the matrix should have. + * For a 2-D matrix, when the matrix has only 1 column, then it should have + * elemChannels channels; When the matrix has only 1 channel, + * then it should have elemChannels columns. + * For a 3-D matrix, it should have only one channel. Furthermore, + * if the number of planes is not one, then the number of rows + * within every plane has to be 1; if the number of rows within + * every plane is not 1, then the number of planes has to be 1. + * @param depth The depth the matrix should have. Set it to -1 when any depth is fine. + * @param requireContinuous Set it to true to require the matrix to be continuous + * @return -1 if the requirement is not satisfied. + * Otherwise, it returns the number of elements in the matrix. Note + * that an element may have multiple channels. + * + * The following code demonstrates its usage for a 2-d matrix: + * @snippet snippets/core_mat_checkVector.cpp example-2d + * + * The following code demonstrates its usage for a 3-d matrix: + * @snippet snippets/core_mat_checkVector.cpp example-3d + */ + int checkVector(int elemChannels, int depth=-1, bool requireContinuous=true) const; + + /** @brief Returns a pointer to the specified matrix row. + + The methods return `uchar*` or typed pointer to the specified matrix row. See the sample in + Mat::isContinuous to know how to use these methods. + @param i0 A 0-based row index. + */ + uchar* ptr(int i0=0); + /** @overload */ + const uchar* ptr(int i0=0) const; + + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + uchar* ptr(int row, int col); + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + const uchar* ptr(int row, int col) const; + + /** @overload */ + uchar* ptr(int i0, int i1, int i2); + /** @overload */ + const uchar* ptr(int i0, int i1, int i2) const; + + /** @overload */ + uchar* ptr(const int* idx); + /** @overload */ + const uchar* ptr(const int* idx) const; + /** @overload */ + template uchar* ptr(const Vec& idx); + /** @overload */ + template const uchar* ptr(const Vec& idx) const; + + /** @overload */ + template _Tp* ptr(int i0=0); + /** @overload */ + template const _Tp* ptr(int i0=0) const; + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + template _Tp* ptr(int row, int col); + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + template const _Tp* ptr(int row, int col) const; + /** @overload */ + template _Tp* ptr(int i0, int i1, int i2); + /** @overload */ + template const _Tp* ptr(int i0, int i1, int i2) const; + /** @overload */ + template _Tp* ptr(const int* idx); + /** @overload */ + template const _Tp* ptr(const int* idx) const; + /** @overload */ + template _Tp* ptr(const Vec& idx); + /** @overload */ + template const _Tp* ptr(const Vec& idx) const; + + /** @brief Returns a reference to the specified array element. + + The template methods return a reference to the specified array element. For the sake of higher + performance, the index range checks are only performed in the Debug configuration. + + Note that the variants with a single index (i) can be used to access elements of single-row or + single-column 2-dimensional arrays. That is, if, for example, A is a 1 x N floating-point matrix and + B is an M x 1 integer matrix, you can simply write `A.at(k+4)` and `B.at(2*i+1)` + instead of `A.at(0,k+4)` and `B.at(2*i+1,0)`, respectively. + + The example below initializes a Hilbert matrix: + @code + Mat H(100, 100, CV_64F); + for(int i = 0; i < H.rows; i++) + for(int j = 0; j < H.cols; j++) + H.at(i,j)=1./(i+j+1); + @endcode + + Keep in mind that the size identifier used in the at operator cannot be chosen at random. It depends + on the image from which you are trying to retrieve the data. The table below gives a better insight in this: + - If matrix is of type `CV_8U` then use `Mat.at(y,x)`. + - If matrix is of type `CV_8S` then use `Mat.at(y,x)`. + - If matrix is of type `CV_16U` then use `Mat.at(y,x)`. + - If matrix is of type `CV_16S` then use `Mat.at(y,x)`. + - If matrix is of type `CV_32S` then use `Mat.at(y,x)`. + - If matrix is of type `CV_32F` then use `Mat.at(y,x)`. + - If matrix is of type `CV_64F` then use `Mat.at(y,x)`. + + @param i0 Index along the dimension 0 + */ + template _Tp& at(int i0=0); + /** @overload + @param i0 Index along the dimension 0 + */ + template const _Tp& at(int i0=0) const; + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + template _Tp& at(int row, int col); + /** @overload + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + template const _Tp& at(int row, int col) const; + + /** @overload + @param i0 Index along the dimension 0 + @param i1 Index along the dimension 1 + @param i2 Index along the dimension 2 + */ + template _Tp& at(int i0, int i1, int i2); + /** @overload + @param i0 Index along the dimension 0 + @param i1 Index along the dimension 1 + @param i2 Index along the dimension 2 + */ + template const _Tp& at(int i0, int i1, int i2) const; + + /** @overload + @param idx Array of Mat::dims indices. + */ + template _Tp& at(const int* idx); + /** @overload + @param idx Array of Mat::dims indices. + */ + template const _Tp& at(const int* idx) const; + + /** @overload */ + template _Tp& at(const Vec& idx); + /** @overload */ + template const _Tp& at(const Vec& idx) const; + + /** @overload + special versions for 2D arrays (especially convenient for referencing image pixels) + @param pt Element position specified as Point(j,i) . + */ + template _Tp& at(Point pt); + /** @overload + special versions for 2D arrays (especially convenient for referencing image pixels) + @param pt Element position specified as Point(j,i) . + */ + template const _Tp& at(Point pt) const; + + /** @brief Returns the matrix iterator and sets it to the first matrix element. + + The methods return the matrix read-only or read-write iterators. The use of matrix iterators is very + similar to the use of bi-directional STL iterators. In the example below, the alpha blending + function is rewritten using the matrix iterators: + @code + template + void alphaBlendRGBA(const Mat& src1, const Mat& src2, Mat& dst) + { + typedef Vec VT; + + const float alpha_scale = (float)std::numeric_limits::max(), + inv_scale = 1.f/alpha_scale; + + CV_Assert( src1.type() == src2.type() && + src1.type() == traits::Type::value && + src1.size() == src2.size()); + Size size = src1.size(); + dst.create(size, src1.type()); + + MatConstIterator_ it1 = src1.begin(), it1_end = src1.end(); + MatConstIterator_ it2 = src2.begin(); + MatIterator_ dst_it = dst.begin(); + + for( ; it1 != it1_end; ++it1, ++it2, ++dst_it ) + { + VT pix1 = *it1, pix2 = *it2; + float alpha = pix1[3]*inv_scale, beta = pix2[3]*inv_scale; + *dst_it = VT(saturate_cast(pix1[0]*alpha + pix2[0]*beta), + saturate_cast(pix1[1]*alpha + pix2[1]*beta), + saturate_cast(pix1[2]*alpha + pix2[2]*beta), + saturate_cast((1 - (1-alpha)*(1-beta))*alpha_scale)); + } + } + @endcode + */ + template MatIterator_<_Tp> begin(); + template MatConstIterator_<_Tp> begin() const; + + /** @brief Returns the matrix iterator and sets it to the after-last matrix element. + + The methods return the matrix read-only or read-write iterators, set to the point following the last + matrix element. + */ + template MatIterator_<_Tp> end(); + template MatConstIterator_<_Tp> end() const; + + /** @brief Runs the given functor over all matrix elements in parallel. + + The operation passed as argument has to be a function pointer, a function object or a lambda(C++11). + + Example 1. All of the operations below put 0xFF the first channel of all matrix elements: + @code + Mat image(1920, 1080, CV_8UC3); + typedef cv::Point3_ Pixel; + + // first. raw pointer access. + for (int r = 0; r < image.rows; ++r) { + Pixel* ptr = image.ptr(r, 0); + const Pixel* ptr_end = ptr + image.cols; + for (; ptr != ptr_end; ++ptr) { + ptr->x = 255; + } + } + + // Using MatIterator. (Simple but there are a Iterator's overhead) + for (Pixel &p : cv::Mat_(image)) { + p.x = 255; + } + + // Parallel execution with function object. + struct Operator { + void operator ()(Pixel &pixel, const int * position) { + pixel.x = 255; + } + }; + image.forEach(Operator()); + + // Parallel execution using C++11 lambda. + image.forEach([](Pixel &p, const int * position) -> void { + p.x = 255; + }); + @endcode + Example 2. Using the pixel's position: + @code + // Creating 3D matrix (255 x 255 x 255) typed uint8_t + // and initialize all elements by the value which equals elements position. + // i.e. pixels (x,y,z) = (1,2,3) is (b,g,r) = (1,2,3). + + int sizes[] = { 255, 255, 255 }; + typedef cv::Point3_ Pixel; + + Mat_ image = Mat::zeros(3, sizes, CV_8UC3); + + image.forEach([&](Pixel& pixel, const int position[]) -> void { + pixel.x = position[0]; + pixel.y = position[1]; + pixel.z = position[2]; + }); + @endcode + */ + template void forEach(const Functor& operation); + /** @overload */ + template void forEach(const Functor& operation) const; + + Mat(Mat&& m); + Mat& operator = (Mat&& m); + + enum { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }; + enum { MAGIC_MASK = 0xFFFF0000, TYPE_MASK = 0x00000FFF, DEPTH_MASK = 7 }; + + /*! includes several bit-fields: + - the magic signature + - continuity flag + - depth + - number of channels + */ + int flags; + //! the matrix dimensionality, >= 2 + int dims; + //! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions + int rows, cols; + //! pointer to the data + uchar* data; + + //! helper fields used in locateROI and adjustROI + const uchar* datastart; + const uchar* dataend; + const uchar* datalimit; + + //! custom allocator + MatAllocator* allocator; + //! and the standard allocator + static MatAllocator* getStdAllocator(); + static MatAllocator* getDefaultAllocator(); + static void setDefaultAllocator(MatAllocator* allocator); + + //! internal use method: updates the continuity flag + void updateContinuityFlag(); + + //! interaction with UMat + UMatData* u; + + MatSize size; + MatStep step; + +protected: + template void forEach_impl(const Functor& operation); +}; + + +///////////////////////////////// Mat_<_Tp> //////////////////////////////////// + +/** @brief Template matrix class derived from Mat + +@code{.cpp} + template class Mat_ : public Mat + { + public: + // ... some specific methods + // and + // no new extra fields + }; +@endcode +The class `Mat_<_Tp>` is a *thin* template wrapper on top of the Mat class. It does not have any +extra data fields. Nor this class nor Mat has any virtual methods. Thus, references or pointers to +these two classes can be freely but carefully converted one to another. For example: +@code{.cpp} + // create a 100x100 8-bit matrix + Mat M(100,100,CV_8U); + // this will be compiled fine. no any data conversion will be done. + Mat_& M1 = (Mat_&)M; + // the program is likely to crash at the statement below + M1(99,99) = 1.f; +@endcode +While Mat is sufficient in most cases, Mat_ can be more convenient if you use a lot of element +access operations and if you know matrix type at the compilation time. Note that +`Mat::at(int y,int x)` and `Mat_::operator()(int y,int x)` do absolutely the same +and run at the same speed, but the latter is certainly shorter: +@code{.cpp} + Mat_ M(20,20); + for(int i = 0; i < M.rows; i++) + for(int j = 0; j < M.cols; j++) + M(i,j) = 1./(i+j+1); + Mat E, V; + eigen(M,E,V); + cout << E.at(0,0)/E.at(M.rows-1,0); +@endcode +To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter: +@code{.cpp} + // allocate a 320x240 color image and fill it with green (in RGB space) + Mat_ img(240, 320, Vec3b(0,255,0)); + // now draw a diagonal white line + for(int i = 0; i < 100; i++) + img(i,i)=Vec3b(255,255,255); + // and now scramble the 2nd (red) channel of each pixel + for(int i = 0; i < img.rows; i++) + for(int j = 0; j < img.cols; j++) + img(i,j)[2] ^= (uchar)(i ^ j); +@endcode +Mat_ is fully compatible with C++11 range-based for loop. For example such loop +can be used to safely apply look-up table: +@code{.cpp} +void applyTable(Mat_& I, const uchar* const table) +{ + for(auto& pixel : I) + { + pixel = table[pixel]; + } +} +@endcode + */ +template class Mat_ : public Mat +{ +public: + typedef _Tp value_type; + typedef typename DataType<_Tp>::channel_type channel_type; + typedef MatIterator_<_Tp> iterator; + typedef MatConstIterator_<_Tp> const_iterator; + + //! default constructor + Mat_(); + //! equivalent to Mat(_rows, _cols, DataType<_Tp>::type) + Mat_(int _rows, int _cols); + //! constructor that sets each matrix element to specified value + Mat_(int _rows, int _cols, const _Tp& value); + //! equivalent to Mat(_size, DataType<_Tp>::type) + explicit Mat_(Size _size); + //! constructor that sets each matrix element to specified value + Mat_(Size _size, const _Tp& value); + //! n-dim array constructor + Mat_(int _ndims, const int* _sizes); + //! n-dim array constructor that sets each matrix element to specified value + Mat_(int _ndims, const int* _sizes, const _Tp& value); + //! copy/conversion constructor. If m is of different type, it's converted + Mat_(const Mat& m); + //! copy constructor + Mat_(const Mat_& m); + //! constructs a matrix on top of user-allocated data. step is in bytes(!!!), regardless of the type + Mat_(int _rows, int _cols, _Tp* _data, size_t _step=AUTO_STEP); + //! constructs n-dim matrix on top of user-allocated data. steps are in bytes(!!!), regardless of the type + Mat_(int _ndims, const int* _sizes, _Tp* _data, const size_t* _steps=0); + //! selects a submatrix + Mat_(const Mat_& m, const Range& rowRange, const Range& colRange=Range::all()); + //! selects a submatrix + Mat_(const Mat_& m, const Rect& roi); + //! selects a submatrix, n-dim version + Mat_(const Mat_& m, const Range* ranges); + //! selects a submatrix, n-dim version + Mat_(const Mat_& m, const std::vector& ranges); + //! from a matrix expression + explicit Mat_(const MatExpr& e); + //! makes a matrix out of Vec, std::vector, Point_ or Point3_. The matrix will have a single column + explicit Mat_(const std::vector<_Tp>& vec, bool copyData=false); + template explicit Mat_(const Vec::channel_type, n>& vec, bool copyData=true); + template explicit Mat_(const Matx::channel_type, m, n>& mtx, bool copyData=true); + explicit Mat_(const Point_::channel_type>& pt, bool copyData=true); + explicit Mat_(const Point3_::channel_type>& pt, bool copyData=true); + explicit Mat_(const MatCommaInitializer_<_Tp>& commaInitializer); + + Mat_(std::initializer_list<_Tp> values); + explicit Mat_(const std::initializer_list sizes, const std::initializer_list<_Tp> values); + + template explicit Mat_(const std::array<_Tp, _Nm>& arr, bool copyData=false); + + Mat_& operator = (const Mat& m); + Mat_& operator = (const Mat_& m); + //! set all the elements to s. + Mat_& operator = (const _Tp& s); + //! assign a matrix expression + Mat_& operator = (const MatExpr& e); + + //! iterators; they are smart enough to skip gaps in the end of rows + iterator begin(); + iterator end(); + const_iterator begin() const; + const_iterator end() const; + + //! template methods for for operation over all matrix elements. + // the operations take care of skipping gaps in the end of rows (if any) + template void forEach(const Functor& operation); + template void forEach(const Functor& operation) const; + + //! equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type) + void create(int _rows, int _cols); + //! equivalent to Mat::create(_size, DataType<_Tp>::type) + void create(Size _size); + //! equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type) + void create(int _ndims, const int* _sizes); + //! equivalent to Mat::release() + void release(); + //! cross-product + Mat_ cross(const Mat_& m) const; + //! data type conversion + template operator Mat_() const; + //! overridden forms of Mat::row() etc. + Mat_ row(int y) const; + Mat_ col(int x) const; + Mat_ diag(int d=0) const; + Mat_ clone() const CV_NODISCARD; + + //! overridden forms of Mat::elemSize() etc. + size_t elemSize() const; + size_t elemSize1() const; + int type() const; + int depth() const; + int channels() const; + size_t step1(int i=0) const; + //! returns step()/sizeof(_Tp) + size_t stepT(int i=0) const; + + //! overridden forms of Mat::zeros() etc. Data type is omitted, of course + static MatExpr zeros(int rows, int cols); + static MatExpr zeros(Size size); + static MatExpr zeros(int _ndims, const int* _sizes); + static MatExpr ones(int rows, int cols); + static MatExpr ones(Size size); + static MatExpr ones(int _ndims, const int* _sizes); + static MatExpr eye(int rows, int cols); + static MatExpr eye(Size size); + + //! some more overridden methods + Mat_& adjustROI( int dtop, int dbottom, int dleft, int dright ); + Mat_ operator()( const Range& rowRange, const Range& colRange ) const; + Mat_ operator()( const Rect& roi ) const; + Mat_ operator()( const Range* ranges ) const; + Mat_ operator()(const std::vector& ranges) const; + + //! more convenient forms of row and element access operators + _Tp* operator [](int y); + const _Tp* operator [](int y) const; + + //! returns reference to the specified element + _Tp& operator ()(const int* idx); + //! returns read-only reference to the specified element + const _Tp& operator ()(const int* idx) const; + + //! returns reference to the specified element + template _Tp& operator ()(const Vec& idx); + //! returns read-only reference to the specified element + template const _Tp& operator ()(const Vec& idx) const; + + //! returns reference to the specified element (1D case) + _Tp& operator ()(int idx0); + //! returns read-only reference to the specified element (1D case) + const _Tp& operator ()(int idx0) const; + //! returns reference to the specified element (2D case) + _Tp& operator ()(int row, int col); + //! returns read-only reference to the specified element (2D case) + const _Tp& operator ()(int row, int col) const; + //! returns reference to the specified element (3D case) + _Tp& operator ()(int idx0, int idx1, int idx2); + //! returns read-only reference to the specified element (3D case) + const _Tp& operator ()(int idx0, int idx1, int idx2) const; + + _Tp& operator ()(Point pt); + const _Tp& operator ()(Point pt) const; + + //! conversion to vector. + operator std::vector<_Tp>() const; + + //! conversion to array. + template operator std::array<_Tp, _Nm>() const; + + //! conversion to Vec + template operator Vec::channel_type, n>() const; + //! conversion to Matx + template operator Matx::channel_type, m, n>() const; + + Mat_(Mat_&& m); + Mat_& operator = (Mat_&& m); + + Mat_(Mat&& m); + Mat_& operator = (Mat&& m); + + Mat_(MatExpr&& e); +}; + +typedef Mat_ Mat1b; +typedef Mat_ Mat2b; +typedef Mat_ Mat3b; +typedef Mat_ Mat4b; + +typedef Mat_ Mat1s; +typedef Mat_ Mat2s; +typedef Mat_ Mat3s; +typedef Mat_ Mat4s; + +typedef Mat_ Mat1w; +typedef Mat_ Mat2w; +typedef Mat_ Mat3w; +typedef Mat_ Mat4w; + +typedef Mat_ Mat1i; +typedef Mat_ Mat2i; +typedef Mat_ Mat3i; +typedef Mat_ Mat4i; + +typedef Mat_ Mat1f; +typedef Mat_ Mat2f; +typedef Mat_ Mat3f; +typedef Mat_ Mat4f; + +typedef Mat_ Mat1d; +typedef Mat_ Mat2d; +typedef Mat_ Mat3d; +typedef Mat_ Mat4d; + +/** @todo document */ +class CV_EXPORTS UMat +{ +public: + //! default constructor + UMat(UMatUsageFlags usageFlags = USAGE_DEFAULT); + //! constructs 2D matrix of the specified size and type + // (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.) + UMat(int rows, int cols, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + UMat(Size size, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + //! constucts 2D matrix and fills it with the specified value _s. + UMat(int rows, int cols, int type, const Scalar& s, UMatUsageFlags usageFlags = USAGE_DEFAULT); + UMat(Size size, int type, const Scalar& s, UMatUsageFlags usageFlags = USAGE_DEFAULT); + + //! constructs n-dimensional matrix + UMat(int ndims, const int* sizes, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + UMat(int ndims, const int* sizes, int type, const Scalar& s, UMatUsageFlags usageFlags = USAGE_DEFAULT); + + //! copy constructor + UMat(const UMat& m); + + //! creates a matrix header for a part of the bigger matrix + UMat(const UMat& m, const Range& rowRange, const Range& colRange=Range::all()); + UMat(const UMat& m, const Rect& roi); + UMat(const UMat& m, const Range* ranges); + UMat(const UMat& m, const std::vector& ranges); + //! builds matrix from std::vector with or without copying the data + template explicit UMat(const std::vector<_Tp>& vec, bool copyData=false); + + //! builds matrix from cv::Vec; the data is copied by default + template explicit UMat(const Vec<_Tp, n>& vec, bool copyData=true); + //! builds matrix from cv::Matx; the data is copied by default + template explicit UMat(const Matx<_Tp, m, n>& mtx, bool copyData=true); + //! builds matrix from a 2D point + template explicit UMat(const Point_<_Tp>& pt, bool copyData=true); + //! builds matrix from a 3D point + template explicit UMat(const Point3_<_Tp>& pt, bool copyData=true); + //! builds matrix from comma initializer + template explicit UMat(const MatCommaInitializer_<_Tp>& commaInitializer); + + //! destructor - calls release() + ~UMat(); + //! assignment operators + UMat& operator = (const UMat& m); + + Mat getMat(AccessFlag flags) const; + + //! returns a new matrix header for the specified row + UMat row(int y) const; + //! returns a new matrix header for the specified column + UMat col(int x) const; + //! ... for the specified row span + UMat rowRange(int startrow, int endrow) const; + UMat rowRange(const Range& r) const; + //! ... for the specified column span + UMat colRange(int startcol, int endcol) const; + UMat colRange(const Range& r) const; + //! ... for the specified diagonal + //! (d=0 - the main diagonal, + //! >0 - a diagonal from the upper half, + //! <0 - a diagonal from the lower half) + UMat diag(int d=0) const; + //! constructs a square diagonal matrix which main diagonal is vector "d" + static UMat diag(const UMat& d); + + //! returns deep copy of the matrix, i.e. the data is copied + UMat clone() const CV_NODISCARD; + //! copies the matrix content to "m". + // It calls m.create(this->size(), this->type()). + void copyTo( OutputArray m ) const; + //! copies those matrix elements to "m" that are marked with non-zero mask elements. + void copyTo( OutputArray m, InputArray mask ) const; + //! converts matrix to another datatype with optional scaling. See cvConvertScale. + void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const; + + void assignTo( UMat& m, int type=-1 ) const; + + //! sets every matrix element to s + UMat& operator = (const Scalar& s); + //! sets some of the matrix elements to s, according to the mask + UMat& setTo(InputArray value, InputArray mask=noArray()); + //! creates alternative matrix header for the same data, with different + // number of channels and/or different number of rows. see cvReshape. + UMat reshape(int cn, int rows=0) const; + UMat reshape(int cn, int newndims, const int* newsz) const; + + //! matrix transposition by means of matrix expressions + UMat t() const; + //! matrix inversion by means of matrix expressions + UMat inv(int method=DECOMP_LU) const; + //! per-element matrix multiplication by means of matrix expressions + UMat mul(InputArray m, double scale=1) const; + + //! computes dot-product + double dot(InputArray m) const; + + //! Matlab-style matrix initialization + static UMat zeros(int rows, int cols, int type); + static UMat zeros(Size size, int type); + static UMat zeros(int ndims, const int* sz, int type); + static UMat ones(int rows, int cols, int type); + static UMat ones(Size size, int type); + static UMat ones(int ndims, const int* sz, int type); + static UMat eye(int rows, int cols, int type); + static UMat eye(Size size, int type); + + //! allocates new matrix data unless the matrix already has specified size and type. + // previous data is unreferenced if needed. + void create(int rows, int cols, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + void create(Size size, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + void create(int ndims, const int* sizes, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + void create(const std::vector& sizes, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + + //! increases the reference counter; use with care to avoid memleaks + void addref(); + //! decreases reference counter; + // deallocates the data when reference counter reaches 0. + void release(); + + //! deallocates the matrix data + void deallocate(); + //! internal use function; properly re-allocates _size, _step arrays + void copySize(const UMat& m); + + //! locates matrix header within a parent matrix. See below + void locateROI( Size& wholeSize, Point& ofs ) const; + //! moves/resizes the current matrix ROI inside the parent matrix. + UMat& adjustROI( int dtop, int dbottom, int dleft, int dright ); + //! extracts a rectangular sub-matrix + // (this is a generalized form of row, rowRange etc.) + UMat operator()( Range rowRange, Range colRange ) const; + UMat operator()( const Rect& roi ) const; + UMat operator()( const Range* ranges ) const; + UMat operator()(const std::vector& ranges) const; + + //! returns true iff the matrix data is continuous + // (i.e. when there are no gaps between successive rows). + // similar to CV_IS_MAT_CONT(cvmat->type) + bool isContinuous() const; + + //! returns true if the matrix is a submatrix of another matrix + bool isSubmatrix() const; + + //! returns element size in bytes, + // similar to CV_ELEM_SIZE(cvmat->type) + size_t elemSize() const; + //! returns the size of element channel in bytes. + size_t elemSize1() const; + //! returns element type, similar to CV_MAT_TYPE(cvmat->type) + int type() const; + //! returns element type, similar to CV_MAT_DEPTH(cvmat->type) + int depth() const; + //! returns element type, similar to CV_MAT_CN(cvmat->type) + int channels() const; + //! returns step/elemSize1() + size_t step1(int i=0) const; + //! returns true if matrix data is NULL + bool empty() const; + //! returns the total number of matrix elements + size_t total() const; + + //! returns N if the matrix is 1-channel (N x ptdim) or ptdim-channel (1 x N) or (N x 1); negative number otherwise + int checkVector(int elemChannels, int depth=-1, bool requireContinuous=true) const; + + UMat(UMat&& m); + UMat& operator = (UMat&& m); + + /*! Returns the OpenCL buffer handle on which UMat operates on. + The UMat instance should be kept alive during the use of the handle to prevent the buffer to be + returned to the OpenCV buffer pool. + */ + void* handle(AccessFlag accessFlags) const; + void ndoffset(size_t* ofs) const; + + enum { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }; + enum { MAGIC_MASK = 0xFFFF0000, TYPE_MASK = 0x00000FFF, DEPTH_MASK = 7 }; + + /*! includes several bit-fields: + - the magic signature + - continuity flag + - depth + - number of channels + */ + int flags; + //! the matrix dimensionality, >= 2 + int dims; + //! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions + int rows, cols; + + //! custom allocator + MatAllocator* allocator; + UMatUsageFlags usageFlags; // usage flags for allocator + //! and the standard allocator + static MatAllocator* getStdAllocator(); + + //! internal use method: updates the continuity flag + void updateContinuityFlag(); + + // black-box container of UMat data + UMatData* u; + + // offset of the submatrix (or 0) + size_t offset; + + MatSize size; + MatStep step; + +protected: +}; + + +/////////////////////////// multi-dimensional sparse matrix ////////////////////////// + +/** @brief The class SparseMat represents multi-dimensional sparse numerical arrays. + +Such a sparse array can store elements of any type that Mat can store. *Sparse* means that only +non-zero elements are stored (though, as a result of operations on a sparse matrix, some of its +stored elements can actually become 0. It is up to you to detect such elements and delete them +using SparseMat::erase ). The non-zero elements are stored in a hash table that grows when it is +filled so that the search time is O(1) in average (regardless of whether element is there or not). +Elements can be accessed using the following methods: +- Query operations (SparseMat::ptr and the higher-level SparseMat::ref, SparseMat::value and + SparseMat::find), for example: + @code + const int dims = 5; + int size[5] = {10, 10, 10, 10, 10}; + SparseMat sparse_mat(dims, size, CV_32F); + for(int i = 0; i < 1000; i++) + { + int idx[dims]; + for(int k = 0; k < dims; k++) + idx[k] = rand() % size[k]; + sparse_mat.ref(idx) += 1.f; + } + cout << "nnz = " << sparse_mat.nzcount() << endl; + @endcode +- Sparse matrix iterators. They are similar to MatIterator but different from NAryMatIterator. + That is, the iteration loop is familiar to STL users: + @code + // prints elements of a sparse floating-point matrix + // and the sum of elements. + SparseMatConstIterator_ + it = sparse_mat.begin(), + it_end = sparse_mat.end(); + double s = 0; + int dims = sparse_mat.dims(); + for(; it != it_end; ++it) + { + // print element indices and the element value + const SparseMat::Node* n = it.node(); + printf("("); + for(int i = 0; i < dims; i++) + printf("%d%s", n->idx[i], i < dims-1 ? ", " : ")"); + printf(": %g\n", it.value()); + s += *it; + } + printf("Element sum is %g\n", s); + @endcode + If you run this loop, you will notice that elements are not enumerated in a logical order + (lexicographical, and so on). They come in the same order as they are stored in the hash table + (semi-randomly). You may collect pointers to the nodes and sort them to get the proper ordering. + Note, however, that pointers to the nodes may become invalid when you add more elements to the + matrix. This may happen due to possible buffer reallocation. +- Combination of the above 2 methods when you need to process 2 or more sparse matrices + simultaneously. For example, this is how you can compute unnormalized cross-correlation of the 2 + floating-point sparse matrices: + @code + double cross_corr(const SparseMat& a, const SparseMat& b) + { + const SparseMat *_a = &a, *_b = &b; + // if b contains less elements than a, + // it is faster to iterate through b + if(_a->nzcount() > _b->nzcount()) + std::swap(_a, _b); + SparseMatConstIterator_ it = _a->begin(), + it_end = _a->end(); + double ccorr = 0; + for(; it != it_end; ++it) + { + // take the next element from the first matrix + float avalue = *it; + const Node* anode = it.node(); + // and try to find an element with the same index in the second matrix. + // since the hash value depends only on the element index, + // reuse the hash value stored in the node + float bvalue = _b->value(anode->idx,&anode->hashval); + ccorr += avalue*bvalue; + } + return ccorr; + } + @endcode + */ +class CV_EXPORTS SparseMat +{ +public: + typedef SparseMatIterator iterator; + typedef SparseMatConstIterator const_iterator; + + enum { MAGIC_VAL=0x42FD0000, MAX_DIM=32, HASH_SCALE=0x5bd1e995, HASH_BIT=0x80000000 }; + + //! the sparse matrix header + struct CV_EXPORTS Hdr + { + Hdr(int _dims, const int* _sizes, int _type); + void clear(); + int refcount; + int dims; + int valueOffset; + size_t nodeSize; + size_t nodeCount; + size_t freeList; + std::vector pool; + std::vector hashtab; + int size[MAX_DIM]; + }; + + //! sparse matrix node - element of a hash table + struct CV_EXPORTS Node + { + //! hash value + size_t hashval; + //! index of the next node in the same hash table entry + size_t next; + //! index of the matrix element + int idx[MAX_DIM]; + }; + + /** @brief Various SparseMat constructors. + */ + SparseMat(); + + /** @overload + @param dims Array dimensionality. + @param _sizes Sparce matrix size on all dementions. + @param _type Sparse matrix data type. + */ + SparseMat(int dims, const int* _sizes, int _type); + + /** @overload + @param m Source matrix for copy constructor. If m is dense matrix (ocvMat) then it will be converted + to sparse representation. + */ + SparseMat(const SparseMat& m); + + /** @overload + @param m Source matrix for copy constructor. If m is dense matrix (ocvMat) then it will be converted + to sparse representation. + */ + explicit SparseMat(const Mat& m); + + //! the destructor + ~SparseMat(); + + //! assignment operator. This is O(1) operation, i.e. no data is copied + SparseMat& operator = (const SparseMat& m); + //! equivalent to the corresponding constructor + SparseMat& operator = (const Mat& m); + + //! creates full copy of the matrix + SparseMat clone() const CV_NODISCARD; + + //! copies all the data to the destination matrix. All the previous content of m is erased + void copyTo( SparseMat& m ) const; + //! converts sparse matrix to dense matrix. + void copyTo( Mat& m ) const; + //! multiplies all the matrix elements by the specified scale factor alpha and converts the results to the specified data type + void convertTo( SparseMat& m, int rtype, double alpha=1 ) const; + //! converts sparse matrix to dense n-dim matrix with optional type conversion and scaling. + /*! + @param [out] m - output matrix; if it does not have a proper size or type before the operation, + it is reallocated + @param [in] rtype - desired output matrix type or, rather, the depth since the number of channels + are the same as the input has; if rtype is negative, the output matrix will have the + same type as the input. + @param [in] alpha - optional scale factor + @param [in] beta - optional delta added to the scaled values + */ + void convertTo( Mat& m, int rtype, double alpha=1, double beta=0 ) const; + + // not used now + void assignTo( SparseMat& m, int type=-1 ) const; + + //! reallocates sparse matrix. + /*! + If the matrix already had the proper size and type, + it is simply cleared with clear(), otherwise, + the old matrix is released (using release()) and the new one is allocated. + */ + void create(int dims, const int* _sizes, int _type); + //! sets all the sparse matrix elements to 0, which means clearing the hash table. + void clear(); + //! manually increments the reference counter to the header. + void addref(); + // decrements the header reference counter. When the counter reaches 0, the header and all the underlying data are deallocated. + void release(); + + //! converts sparse matrix to the old-style representation; all the elements are copied. + //operator CvSparseMat*() const; + //! returns the size of each element in bytes (not including the overhead - the space occupied by SparseMat::Node elements) + size_t elemSize() const; + //! returns elemSize()/channels() + size_t elemSize1() const; + + //! returns type of sparse matrix elements + int type() const; + //! returns the depth of sparse matrix elements + int depth() const; + //! returns the number of channels + int channels() const; + + //! returns the array of sizes, or NULL if the matrix is not allocated + const int* size() const; + //! returns the size of i-th matrix dimension (or 0) + int size(int i) const; + //! returns the matrix dimensionality + int dims() const; + //! returns the number of non-zero elements (=the number of hash table nodes) + size_t nzcount() const; + + //! computes the element hash value (1D case) + size_t hash(int i0) const; + //! computes the element hash value (2D case) + size_t hash(int i0, int i1) const; + //! computes the element hash value (3D case) + size_t hash(int i0, int i1, int i2) const; + //! computes the element hash value (nD case) + size_t hash(const int* idx) const; + + //!@{ + /*! + specialized variants for 1D, 2D, 3D cases and the generic_type one for n-D case. + return pointer to the matrix element. + - if the element is there (it's non-zero), the pointer to it is returned + - if it's not there and createMissing=false, NULL pointer is returned + - if it's not there and createMissing=true, then the new element + is created and initialized with 0. Pointer to it is returned + - if the optional hashval pointer is not NULL, the element hash value is + not computed, but *hashval is taken instead. + */ + //! returns pointer to the specified element (1D case) + uchar* ptr(int i0, bool createMissing, size_t* hashval=0); + //! returns pointer to the specified element (2D case) + uchar* ptr(int i0, int i1, bool createMissing, size_t* hashval=0); + //! returns pointer to the specified element (3D case) + uchar* ptr(int i0, int i1, int i2, bool createMissing, size_t* hashval=0); + //! returns pointer to the specified element (nD case) + uchar* ptr(const int* idx, bool createMissing, size_t* hashval=0); + //!@} + + //!@{ + /*! + return read-write reference to the specified sparse matrix element. + + `ref<_Tp>(i0,...[,hashval])` is equivalent to `*(_Tp*)ptr(i0,...,true[,hashval])`. + The methods always return a valid reference. + If the element did not exist, it is created and initialiazed with 0. + */ + //! returns reference to the specified element (1D case) + template _Tp& ref(int i0, size_t* hashval=0); + //! returns reference to the specified element (2D case) + template _Tp& ref(int i0, int i1, size_t* hashval=0); + //! returns reference to the specified element (3D case) + template _Tp& ref(int i0, int i1, int i2, size_t* hashval=0); + //! returns reference to the specified element (nD case) + template _Tp& ref(const int* idx, size_t* hashval=0); + //!@} + + //!@{ + /*! + return value of the specified sparse matrix element. + + `value<_Tp>(i0,...[,hashval])` is equivalent to + @code + { const _Tp* p = find<_Tp>(i0,...[,hashval]); return p ? *p : _Tp(); } + @endcode + + That is, if the element did not exist, the methods return 0. + */ + //! returns value of the specified element (1D case) + template _Tp value(int i0, size_t* hashval=0) const; + //! returns value of the specified element (2D case) + template _Tp value(int i0, int i1, size_t* hashval=0) const; + //! returns value of the specified element (3D case) + template _Tp value(int i0, int i1, int i2, size_t* hashval=0) const; + //! returns value of the specified element (nD case) + template _Tp value(const int* idx, size_t* hashval=0) const; + //!@} + + //!@{ + /*! + Return pointer to the specified sparse matrix element if it exists + + `find<_Tp>(i0,...[,hashval])` is equivalent to `(_const Tp*)ptr(i0,...false[,hashval])`. + + If the specified element does not exist, the methods return NULL. + */ + //! returns pointer to the specified element (1D case) + template const _Tp* find(int i0, size_t* hashval=0) const; + //! returns pointer to the specified element (2D case) + template const _Tp* find(int i0, int i1, size_t* hashval=0) const; + //! returns pointer to the specified element (3D case) + template const _Tp* find(int i0, int i1, int i2, size_t* hashval=0) const; + //! returns pointer to the specified element (nD case) + template const _Tp* find(const int* idx, size_t* hashval=0) const; + //!@} + + //! erases the specified element (2D case) + void erase(int i0, int i1, size_t* hashval=0); + //! erases the specified element (3D case) + void erase(int i0, int i1, int i2, size_t* hashval=0); + //! erases the specified element (nD case) + void erase(const int* idx, size_t* hashval=0); + + //!@{ + /*! + return the sparse matrix iterator pointing to the first sparse matrix element + */ + //! returns the sparse matrix iterator at the matrix beginning + SparseMatIterator begin(); + //! returns the sparse matrix iterator at the matrix beginning + template SparseMatIterator_<_Tp> begin(); + //! returns the read-only sparse matrix iterator at the matrix beginning + SparseMatConstIterator begin() const; + //! returns the read-only sparse matrix iterator at the matrix beginning + template SparseMatConstIterator_<_Tp> begin() const; + //!@} + /*! + return the sparse matrix iterator pointing to the element following the last sparse matrix element + */ + //! returns the sparse matrix iterator at the matrix end + SparseMatIterator end(); + //! returns the read-only sparse matrix iterator at the matrix end + SparseMatConstIterator end() const; + //! returns the typed sparse matrix iterator at the matrix end + template SparseMatIterator_<_Tp> end(); + //! returns the typed read-only sparse matrix iterator at the matrix end + template SparseMatConstIterator_<_Tp> end() const; + + //! returns the value stored in the sparse martix node + template _Tp& value(Node* n); + //! returns the value stored in the sparse martix node + template const _Tp& value(const Node* n) const; + + ////////////// some internal-use methods /////////////// + Node* node(size_t nidx); + const Node* node(size_t nidx) const; + + uchar* newNode(const int* idx, size_t hashval); + void removeNode(size_t hidx, size_t nidx, size_t previdx); + void resizeHashTab(size_t newsize); + + int flags; + Hdr* hdr; +}; + + + +///////////////////////////////// SparseMat_<_Tp> //////////////////////////////////// + +/** @brief Template sparse n-dimensional array class derived from SparseMat + +SparseMat_ is a thin wrapper on top of SparseMat created in the same way as Mat_ . It simplifies +notation of some operations: +@code + int sz[] = {10, 20, 30}; + SparseMat_ M(3, sz); + ... + M.ref(1, 2, 3) = M(4, 5, 6) + M(7, 8, 9); +@endcode + */ +template class SparseMat_ : public SparseMat +{ +public: + typedef SparseMatIterator_<_Tp> iterator; + typedef SparseMatConstIterator_<_Tp> const_iterator; + + //! the default constructor + SparseMat_(); + //! the full constructor equivalent to SparseMat(dims, _sizes, DataType<_Tp>::type) + SparseMat_(int dims, const int* _sizes); + //! the copy constructor. If DataType<_Tp>.type != m.type(), the m elements are converted + SparseMat_(const SparseMat& m); + //! the copy constructor. This is O(1) operation - no data is copied + SparseMat_(const SparseMat_& m); + //! converts dense matrix to the sparse form + SparseMat_(const Mat& m); + //! converts the old-style sparse matrix to the C++ class. All the elements are copied + //SparseMat_(const CvSparseMat* m); + //! the assignment operator. If DataType<_Tp>.type != m.type(), the m elements are converted + SparseMat_& operator = (const SparseMat& m); + //! the assignment operator. This is O(1) operation - no data is copied + SparseMat_& operator = (const SparseMat_& m); + //! converts dense matrix to the sparse form + SparseMat_& operator = (const Mat& m); + + //! makes full copy of the matrix. All the elements are duplicated + SparseMat_ clone() const CV_NODISCARD; + //! equivalent to cv::SparseMat::create(dims, _sizes, DataType<_Tp>::type) + void create(int dims, const int* _sizes); + //! converts sparse matrix to the old-style CvSparseMat. All the elements are copied + //operator CvSparseMat*() const; + + //! returns type of the matrix elements + int type() const; + //! returns depth of the matrix elements + int depth() const; + //! returns the number of channels in each matrix element + int channels() const; + + //! equivalent to SparseMat::ref<_Tp>(i0, hashval) + _Tp& ref(int i0, size_t* hashval=0); + //! equivalent to SparseMat::ref<_Tp>(i0, i1, hashval) + _Tp& ref(int i0, int i1, size_t* hashval=0); + //! equivalent to SparseMat::ref<_Tp>(i0, i1, i2, hashval) + _Tp& ref(int i0, int i1, int i2, size_t* hashval=0); + //! equivalent to SparseMat::ref<_Tp>(idx, hashval) + _Tp& ref(const int* idx, size_t* hashval=0); + + //! equivalent to SparseMat::value<_Tp>(i0, hashval) + _Tp operator()(int i0, size_t* hashval=0) const; + //! equivalent to SparseMat::value<_Tp>(i0, i1, hashval) + _Tp operator()(int i0, int i1, size_t* hashval=0) const; + //! equivalent to SparseMat::value<_Tp>(i0, i1, i2, hashval) + _Tp operator()(int i0, int i1, int i2, size_t* hashval=0) const; + //! equivalent to SparseMat::value<_Tp>(idx, hashval) + _Tp operator()(const int* idx, size_t* hashval=0) const; + + //! returns sparse matrix iterator pointing to the first sparse matrix element + SparseMatIterator_<_Tp> begin(); + //! returns read-only sparse matrix iterator pointing to the first sparse matrix element + SparseMatConstIterator_<_Tp> begin() const; + //! returns sparse matrix iterator pointing to the element following the last sparse matrix element + SparseMatIterator_<_Tp> end(); + //! returns read-only sparse matrix iterator pointing to the element following the last sparse matrix element + SparseMatConstIterator_<_Tp> end() const; +}; + + + +////////////////////////////////// MatConstIterator ////////////////////////////////// + +class CV_EXPORTS MatConstIterator +{ +public: + typedef uchar* value_type; + typedef ptrdiff_t difference_type; + typedef const uchar** pointer; + typedef uchar* reference; + + typedef std::random_access_iterator_tag iterator_category; + + //! default constructor + MatConstIterator(); + //! constructor that sets the iterator to the beginning of the matrix + MatConstIterator(const Mat* _m); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator(const Mat* _m, int _row, int _col=0); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator(const Mat* _m, Point _pt); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator(const Mat* _m, const int* _idx); + //! copy constructor + MatConstIterator(const MatConstIterator& it); + + //! copy operator + MatConstIterator& operator = (const MatConstIterator& it); + //! returns the current matrix element + const uchar* operator *() const; + //! returns the i-th matrix element, relative to the current + const uchar* operator [](ptrdiff_t i) const; + + //! shifts the iterator forward by the specified number of elements + MatConstIterator& operator += (ptrdiff_t ofs); + //! shifts the iterator backward by the specified number of elements + MatConstIterator& operator -= (ptrdiff_t ofs); + //! decrements the iterator + MatConstIterator& operator --(); + //! decrements the iterator + MatConstIterator operator --(int); + //! increments the iterator + MatConstIterator& operator ++(); + //! increments the iterator + MatConstIterator operator ++(int); + //! returns the current iterator position + Point pos() const; + //! returns the current iterator position + void pos(int* _idx) const; + + ptrdiff_t lpos() const; + void seek(ptrdiff_t ofs, bool relative = false); + void seek(const int* _idx, bool relative = false); + + const Mat* m; + size_t elemSize; + const uchar* ptr; + const uchar* sliceStart; + const uchar* sliceEnd; +}; + + + +////////////////////////////////// MatConstIterator_ ///////////////////////////////// + +/** @brief Matrix read-only iterator + */ +template +class MatConstIterator_ : public MatConstIterator +{ +public: + typedef _Tp value_type; + typedef ptrdiff_t difference_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + + typedef std::random_access_iterator_tag iterator_category; + + //! default constructor + MatConstIterator_(); + //! constructor that sets the iterator to the beginning of the matrix + MatConstIterator_(const Mat_<_Tp>* _m); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator_(const Mat_<_Tp>* _m, int _row, int _col=0); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator_(const Mat_<_Tp>* _m, Point _pt); + //! constructor that sets the iterator to the specified element of the matrix + MatConstIterator_(const Mat_<_Tp>* _m, const int* _idx); + //! copy constructor + MatConstIterator_(const MatConstIterator_& it); + + //! copy operator + MatConstIterator_& operator = (const MatConstIterator_& it); + //! returns the current matrix element + const _Tp& operator *() const; + //! returns the i-th matrix element, relative to the current + const _Tp& operator [](ptrdiff_t i) const; + + //! shifts the iterator forward by the specified number of elements + MatConstIterator_& operator += (ptrdiff_t ofs); + //! shifts the iterator backward by the specified number of elements + MatConstIterator_& operator -= (ptrdiff_t ofs); + //! decrements the iterator + MatConstIterator_& operator --(); + //! decrements the iterator + MatConstIterator_ operator --(int); + //! increments the iterator + MatConstIterator_& operator ++(); + //! increments the iterator + MatConstIterator_ operator ++(int); + //! returns the current iterator position + Point pos() const; +}; + + + +//////////////////////////////////// MatIterator_ //////////////////////////////////// + +/** @brief Matrix read-write iterator +*/ +template +class MatIterator_ : public MatConstIterator_<_Tp> +{ +public: + typedef _Tp* pointer; + typedef _Tp& reference; + + typedef std::random_access_iterator_tag iterator_category; + + //! the default constructor + MatIterator_(); + //! constructor that sets the iterator to the beginning of the matrix + MatIterator_(Mat_<_Tp>* _m); + //! constructor that sets the iterator to the specified element of the matrix + MatIterator_(Mat_<_Tp>* _m, int _row, int _col=0); + //! constructor that sets the iterator to the specified element of the matrix + MatIterator_(Mat_<_Tp>* _m, Point _pt); + //! constructor that sets the iterator to the specified element of the matrix + MatIterator_(Mat_<_Tp>* _m, const int* _idx); + //! copy constructor + MatIterator_(const MatIterator_& it); + //! copy operator + MatIterator_& operator = (const MatIterator_<_Tp>& it ); + + //! returns the current matrix element + _Tp& operator *() const; + //! returns the i-th matrix element, relative to the current + _Tp& operator [](ptrdiff_t i) const; + + //! shifts the iterator forward by the specified number of elements + MatIterator_& operator += (ptrdiff_t ofs); + //! shifts the iterator backward by the specified number of elements + MatIterator_& operator -= (ptrdiff_t ofs); + //! decrements the iterator + MatIterator_& operator --(); + //! decrements the iterator + MatIterator_ operator --(int); + //! increments the iterator + MatIterator_& operator ++(); + //! increments the iterator + MatIterator_ operator ++(int); +}; + + + +/////////////////////////////// SparseMatConstIterator /////////////////////////////// + +/** @brief Read-Only Sparse Matrix Iterator. + + Here is how to use the iterator to compute the sum of floating-point sparse matrix elements: + + \code + SparseMatConstIterator it = m.begin(), it_end = m.end(); + double s = 0; + CV_Assert( m.type() == CV_32F ); + for( ; it != it_end; ++it ) + s += it.value(); + \endcode +*/ +class CV_EXPORTS SparseMatConstIterator +{ +public: + //! the default constructor + SparseMatConstIterator(); + //! the full constructor setting the iterator to the first sparse matrix element + SparseMatConstIterator(const SparseMat* _m); + //! the copy constructor + SparseMatConstIterator(const SparseMatConstIterator& it); + + //! the assignment operator + SparseMatConstIterator& operator = (const SparseMatConstIterator& it); + + //! template method returning the current matrix element + template const _Tp& value() const; + //! returns the current node of the sparse matrix. it.node->idx is the current element index + const SparseMat::Node* node() const; + + //! moves iterator to the previous element + SparseMatConstIterator& operator --(); + //! moves iterator to the previous element + SparseMatConstIterator operator --(int); + //! moves iterator to the next element + SparseMatConstIterator& operator ++(); + //! moves iterator to the next element + SparseMatConstIterator operator ++(int); + + //! moves iterator to the element after the last element + void seekEnd(); + + const SparseMat* m; + size_t hashidx; + uchar* ptr; +}; + + + +////////////////////////////////// SparseMatIterator ///////////////////////////////// + +/** @brief Read-write Sparse Matrix Iterator + + The class is similar to cv::SparseMatConstIterator, + but can be used for in-place modification of the matrix elements. +*/ +class CV_EXPORTS SparseMatIterator : public SparseMatConstIterator +{ +public: + //! the default constructor + SparseMatIterator(); + //! the full constructor setting the iterator to the first sparse matrix element + SparseMatIterator(SparseMat* _m); + //! the full constructor setting the iterator to the specified sparse matrix element + SparseMatIterator(SparseMat* _m, const int* idx); + //! the copy constructor + SparseMatIterator(const SparseMatIterator& it); + + //! the assignment operator + SparseMatIterator& operator = (const SparseMatIterator& it); + //! returns read-write reference to the current sparse matrix element + template _Tp& value() const; + //! returns pointer to the current sparse matrix node. it.node->idx is the index of the current element (do not modify it!) + SparseMat::Node* node() const; + + //! moves iterator to the next element + SparseMatIterator& operator ++(); + //! moves iterator to the next element + SparseMatIterator operator ++(int); +}; + + + +/////////////////////////////// SparseMatConstIterator_ ////////////////////////////// + +/** @brief Template Read-Only Sparse Matrix Iterator Class. + + This is the derived from SparseMatConstIterator class that + introduces more convenient operator *() for accessing the current element. +*/ +template class SparseMatConstIterator_ : public SparseMatConstIterator +{ +public: + + typedef std::forward_iterator_tag iterator_category; + + //! the default constructor + SparseMatConstIterator_(); + //! the full constructor setting the iterator to the first sparse matrix element + SparseMatConstIterator_(const SparseMat_<_Tp>* _m); + SparseMatConstIterator_(const SparseMat* _m); + //! the copy constructor + SparseMatConstIterator_(const SparseMatConstIterator_& it); + + //! the assignment operator + SparseMatConstIterator_& operator = (const SparseMatConstIterator_& it); + //! the element access operator + const _Tp& operator *() const; + + //! moves iterator to the next element + SparseMatConstIterator_& operator ++(); + //! moves iterator to the next element + SparseMatConstIterator_ operator ++(int); +}; + + + +///////////////////////////////// SparseMatIterator_ ///////////////////////////////// + +/** @brief Template Read-Write Sparse Matrix Iterator Class. + + This is the derived from cv::SparseMatConstIterator_ class that + introduces more convenient operator *() for accessing the current element. +*/ +template class SparseMatIterator_ : public SparseMatConstIterator_<_Tp> +{ +public: + + typedef std::forward_iterator_tag iterator_category; + + //! the default constructor + SparseMatIterator_(); + //! the full constructor setting the iterator to the first sparse matrix element + SparseMatIterator_(SparseMat_<_Tp>* _m); + SparseMatIterator_(SparseMat* _m); + //! the copy constructor + SparseMatIterator_(const SparseMatIterator_& it); + + //! the assignment operator + SparseMatIterator_& operator = (const SparseMatIterator_& it); + //! returns the reference to the current element + _Tp& operator *() const; + + //! moves the iterator to the next element + SparseMatIterator_& operator ++(); + //! moves the iterator to the next element + SparseMatIterator_ operator ++(int); +}; + + + +/////////////////////////////////// NAryMatIterator ////////////////////////////////// + +/** @brief n-ary multi-dimensional array iterator. + +Use the class to implement unary, binary, and, generally, n-ary element-wise operations on +multi-dimensional arrays. Some of the arguments of an n-ary function may be continuous arrays, some +may be not. It is possible to use conventional MatIterator 's for each array but incrementing all of +the iterators after each small operations may be a big overhead. In this case consider using +NAryMatIterator to iterate through several matrices simultaneously as long as they have the same +geometry (dimensionality and all the dimension sizes are the same). On each iteration `it.planes[0]`, +`it.planes[1]`,... will be the slices of the corresponding matrices. + +The example below illustrates how you can compute a normalized and threshold 3D color histogram: +@code + void computeNormalizedColorHist(const Mat& image, Mat& hist, int N, double minProb) + { + const int histSize[] = {N, N, N}; + + // make sure that the histogram has a proper size and type + hist.create(3, histSize, CV_32F); + + // and clear it + hist = Scalar(0); + + // the loop below assumes that the image + // is a 8-bit 3-channel. check it. + CV_Assert(image.type() == CV_8UC3); + MatConstIterator_ it = image.begin(), + it_end = image.end(); + for( ; it != it_end; ++it ) + { + const Vec3b& pix = *it; + hist.at(pix[0]*N/256, pix[1]*N/256, pix[2]*N/256) += 1.f; + } + + minProb *= image.rows*image.cols; + + // initialize iterator (the style is different from STL). + // after initialization the iterator will contain + // the number of slices or planes the iterator will go through. + // it simultaneously increments iterators for several matrices + // supplied as a null terminated list of pointers + const Mat* arrays[] = {&hist, 0}; + Mat planes[1]; + NAryMatIterator itNAry(arrays, planes, 1); + double s = 0; + // iterate through the matrix. on each iteration + // itNAry.planes[i] (of type Mat) will be set to the current plane + // of the i-th n-dim matrix passed to the iterator constructor. + for(int p = 0; p < itNAry.nplanes; p++, ++itNAry) + { + threshold(itNAry.planes[0], itNAry.planes[0], minProb, 0, THRESH_TOZERO); + s += sum(itNAry.planes[0])[0]; + } + + s = 1./s; + itNAry = NAryMatIterator(arrays, planes, 1); + for(int p = 0; p < itNAry.nplanes; p++, ++itNAry) + itNAry.planes[0] *= s; + } +@endcode + */ +class CV_EXPORTS NAryMatIterator +{ +public: + //! the default constructor + NAryMatIterator(); + //! the full constructor taking arbitrary number of n-dim matrices + NAryMatIterator(const Mat** arrays, uchar** ptrs, int narrays=-1); + //! the full constructor taking arbitrary number of n-dim matrices + NAryMatIterator(const Mat** arrays, Mat* planes, int narrays=-1); + //! the separate iterator initialization method + void init(const Mat** arrays, Mat* planes, uchar** ptrs, int narrays=-1); + + //! proceeds to the next plane of every iterated matrix + NAryMatIterator& operator ++(); + //! proceeds to the next plane of every iterated matrix (postfix increment operator) + NAryMatIterator operator ++(int); + + //! the iterated arrays + const Mat** arrays; + //! the current planes + Mat* planes; + //! data pointers + uchar** ptrs; + //! the number of arrays + int narrays; + //! the number of hyper-planes that the iterator steps through + size_t nplanes; + //! the size of each segment (in elements) + size_t size; +protected: + int iterdepth; + size_t idx; +}; + + + +///////////////////////////////// Matrix Expressions ///////////////////////////////// + +class CV_EXPORTS MatOp +{ +public: + MatOp(); + virtual ~MatOp(); + + virtual bool elementWise(const MatExpr& expr) const; + virtual void assign(const MatExpr& expr, Mat& m, int type=-1) const = 0; + virtual void roi(const MatExpr& expr, const Range& rowRange, + const Range& colRange, MatExpr& res) const; + virtual void diag(const MatExpr& expr, int d, MatExpr& res) const; + virtual void augAssignAdd(const MatExpr& expr, Mat& m) const; + virtual void augAssignSubtract(const MatExpr& expr, Mat& m) const; + virtual void augAssignMultiply(const MatExpr& expr, Mat& m) const; + virtual void augAssignDivide(const MatExpr& expr, Mat& m) const; + virtual void augAssignAnd(const MatExpr& expr, Mat& m) const; + virtual void augAssignOr(const MatExpr& expr, Mat& m) const; + virtual void augAssignXor(const MatExpr& expr, Mat& m) const; + + virtual void add(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const; + virtual void add(const MatExpr& expr1, const Scalar& s, MatExpr& res) const; + + virtual void subtract(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const; + virtual void subtract(const Scalar& s, const MatExpr& expr, MatExpr& res) const; + + virtual void multiply(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res, double scale=1) const; + virtual void multiply(const MatExpr& expr1, double s, MatExpr& res) const; + + virtual void divide(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res, double scale=1) const; + virtual void divide(double s, const MatExpr& expr, MatExpr& res) const; + + virtual void abs(const MatExpr& expr, MatExpr& res) const; + + virtual void transpose(const MatExpr& expr, MatExpr& res) const; + virtual void matmul(const MatExpr& expr1, const MatExpr& expr2, MatExpr& res) const; + virtual void invert(const MatExpr& expr, int method, MatExpr& res) const; + + virtual Size size(const MatExpr& expr) const; + virtual int type(const MatExpr& expr) const; +}; + +/** @brief Matrix expression representation +@anchor MatrixExpressions +This is a list of implemented matrix operations that can be combined in arbitrary complex +expressions (here A, B stand for matrices ( Mat ), s for a scalar ( Scalar ), alpha for a +real-valued scalar ( double )): +- Addition, subtraction, negation: `A+B`, `A-B`, `A+s`, `A-s`, `s+A`, `s-A`, `-A` +- Scaling: `A*alpha` +- Per-element multiplication and division: `A.mul(B)`, `A/B`, `alpha/A` +- Matrix multiplication: `A*B` +- Transposition: `A.t()` (means AT) +- Matrix inversion and pseudo-inversion, solving linear systems and least-squares problems: + `A.inv([method]) (~ A-1)`, `A.inv([method])*B (~ X: AX=B)` +- Comparison: `A cmpop B`, `A cmpop alpha`, `alpha cmpop A`, where *cmpop* is one of + `>`, `>=`, `==`, `!=`, `<=`, `<`. The result of comparison is an 8-bit single channel mask whose + elements are set to 255 (if the particular element or pair of elements satisfy the condition) or + 0. +- Bitwise logical operations: `A logicop B`, `A logicop s`, `s logicop A`, `~A`, where *logicop* is one of + `&`, `|`, `^`. +- Element-wise minimum and maximum: `min(A, B)`, `min(A, alpha)`, `max(A, B)`, `max(A, alpha)` +- Element-wise absolute value: `abs(A)` +- Cross-product, dot-product: `A.cross(B)`, `A.dot(B)` +- Any function of matrix or matrices and scalars that returns a matrix or a scalar, such as norm, + mean, sum, countNonZero, trace, determinant, repeat, and others. +- Matrix initializers ( Mat::eye(), Mat::zeros(), Mat::ones() ), matrix comma-separated + initializers, matrix constructors and operators that extract sub-matrices (see Mat description). +- Mat_() constructors to cast the result to the proper type. +@note Comma-separated initializers and probably some other operations may require additional +explicit Mat() or Mat_() constructor calls to resolve a possible ambiguity. + +Here are examples of matrix expressions: +@code + // compute pseudo-inverse of A, equivalent to A.inv(DECOMP_SVD) + SVD svd(A); + Mat pinvA = svd.vt.t()*Mat::diag(1./svd.w)*svd.u.t(); + + // compute the new vector of parameters in the Levenberg-Marquardt algorithm + x -= (A.t()*A + lambda*Mat::eye(A.cols,A.cols,A.type())).inv(DECOMP_CHOLESKY)*(A.t()*err); + + // sharpen image using "unsharp mask" algorithm + Mat blurred; double sigma = 1, threshold = 5, amount = 1; + GaussianBlur(img, blurred, Size(), sigma, sigma); + Mat lowContrastMask = abs(img - blurred) < threshold; + Mat sharpened = img*(1+amount) + blurred*(-amount); + img.copyTo(sharpened, lowContrastMask); +@endcode +*/ +class CV_EXPORTS MatExpr +{ +public: + MatExpr(); + explicit MatExpr(const Mat& m); + + MatExpr(const MatOp* _op, int _flags, const Mat& _a = Mat(), const Mat& _b = Mat(), + const Mat& _c = Mat(), double _alpha = 1, double _beta = 1, const Scalar& _s = Scalar()); + + operator Mat() const; + template operator Mat_<_Tp>() const; + + Size size() const; + int type() const; + + MatExpr row(int y) const; + MatExpr col(int x) const; + MatExpr diag(int d = 0) const; + MatExpr operator()( const Range& rowRange, const Range& colRange ) const; + MatExpr operator()( const Rect& roi ) const; + + MatExpr t() const; + MatExpr inv(int method = DECOMP_LU) const; + MatExpr mul(const MatExpr& e, double scale=1) const; + MatExpr mul(const Mat& m, double scale=1) const; + + Mat cross(const Mat& m) const; + double dot(const Mat& m) const; + + const MatOp* op; + int flags; + + Mat a, b, c; + double alpha, beta; + Scalar s; +}; + +//! @} core_basic + +//! @relates cv::MatExpr +//! @{ +CV_EXPORTS MatExpr operator + (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator + (const Mat& a, const Scalar& s); +CV_EXPORTS MatExpr operator + (const Scalar& s, const Mat& a); +CV_EXPORTS MatExpr operator + (const MatExpr& e, const Mat& m); +CV_EXPORTS MatExpr operator + (const Mat& m, const MatExpr& e); +CV_EXPORTS MatExpr operator + (const MatExpr& e, const Scalar& s); +CV_EXPORTS MatExpr operator + (const Scalar& s, const MatExpr& e); +CV_EXPORTS MatExpr operator + (const MatExpr& e1, const MatExpr& e2); +template static inline +MatExpr operator + (const Mat& a, const Matx<_Tp, m, n>& b) { return a + Mat(b); } +template static inline +MatExpr operator + (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) + b; } + +CV_EXPORTS MatExpr operator - (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator - (const Mat& a, const Scalar& s); +CV_EXPORTS MatExpr operator - (const Scalar& s, const Mat& a); +CV_EXPORTS MatExpr operator - (const MatExpr& e, const Mat& m); +CV_EXPORTS MatExpr operator - (const Mat& m, const MatExpr& e); +CV_EXPORTS MatExpr operator - (const MatExpr& e, const Scalar& s); +CV_EXPORTS MatExpr operator - (const Scalar& s, const MatExpr& e); +CV_EXPORTS MatExpr operator - (const MatExpr& e1, const MatExpr& e2); +template static inline +MatExpr operator - (const Mat& a, const Matx<_Tp, m, n>& b) { return a - Mat(b); } +template static inline +MatExpr operator - (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) - b; } + +CV_EXPORTS MatExpr operator - (const Mat& m); +CV_EXPORTS MatExpr operator - (const MatExpr& e); + +CV_EXPORTS MatExpr operator * (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator * (const Mat& a, double s); +CV_EXPORTS MatExpr operator * (double s, const Mat& a); +CV_EXPORTS MatExpr operator * (const MatExpr& e, const Mat& m); +CV_EXPORTS MatExpr operator * (const Mat& m, const MatExpr& e); +CV_EXPORTS MatExpr operator * (const MatExpr& e, double s); +CV_EXPORTS MatExpr operator * (double s, const MatExpr& e); +CV_EXPORTS MatExpr operator * (const MatExpr& e1, const MatExpr& e2); +template static inline +MatExpr operator * (const Mat& a, const Matx<_Tp, m, n>& b) { return a * Mat(b); } +template static inline +MatExpr operator * (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) * b; } + +CV_EXPORTS MatExpr operator / (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator / (const Mat& a, double s); +CV_EXPORTS MatExpr operator / (double s, const Mat& a); +CV_EXPORTS MatExpr operator / (const MatExpr& e, const Mat& m); +CV_EXPORTS MatExpr operator / (const Mat& m, const MatExpr& e); +CV_EXPORTS MatExpr operator / (const MatExpr& e, double s); +CV_EXPORTS MatExpr operator / (double s, const MatExpr& e); +CV_EXPORTS MatExpr operator / (const MatExpr& e1, const MatExpr& e2); +template static inline +MatExpr operator / (const Mat& a, const Matx<_Tp, m, n>& b) { return a / Mat(b); } +template static inline +MatExpr operator / (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) / b; } + +CV_EXPORTS MatExpr operator < (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator < (const Mat& a, double s); +CV_EXPORTS MatExpr operator < (double s, const Mat& a); +template static inline +MatExpr operator < (const Mat& a, const Matx<_Tp, m, n>& b) { return a < Mat(b); } +template static inline +MatExpr operator < (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) < b; } + +CV_EXPORTS MatExpr operator <= (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator <= (const Mat& a, double s); +CV_EXPORTS MatExpr operator <= (double s, const Mat& a); +template static inline +MatExpr operator <= (const Mat& a, const Matx<_Tp, m, n>& b) { return a <= Mat(b); } +template static inline +MatExpr operator <= (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) <= b; } + +CV_EXPORTS MatExpr operator == (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator == (const Mat& a, double s); +CV_EXPORTS MatExpr operator == (double s, const Mat& a); +template static inline +MatExpr operator == (const Mat& a, const Matx<_Tp, m, n>& b) { return a == Mat(b); } +template static inline +MatExpr operator == (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) == b; } + +CV_EXPORTS MatExpr operator != (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator != (const Mat& a, double s); +CV_EXPORTS MatExpr operator != (double s, const Mat& a); +template static inline +MatExpr operator != (const Mat& a, const Matx<_Tp, m, n>& b) { return a != Mat(b); } +template static inline +MatExpr operator != (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) != b; } + +CV_EXPORTS MatExpr operator >= (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator >= (const Mat& a, double s); +CV_EXPORTS MatExpr operator >= (double s, const Mat& a); +template static inline +MatExpr operator >= (const Mat& a, const Matx<_Tp, m, n>& b) { return a >= Mat(b); } +template static inline +MatExpr operator >= (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) >= b; } + +CV_EXPORTS MatExpr operator > (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator > (const Mat& a, double s); +CV_EXPORTS MatExpr operator > (double s, const Mat& a); +template static inline +MatExpr operator > (const Mat& a, const Matx<_Tp, m, n>& b) { return a > Mat(b); } +template static inline +MatExpr operator > (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) > b; } + +CV_EXPORTS MatExpr operator & (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator & (const Mat& a, const Scalar& s); +CV_EXPORTS MatExpr operator & (const Scalar& s, const Mat& a); +template static inline +MatExpr operator & (const Mat& a, const Matx<_Tp, m, n>& b) { return a & Mat(b); } +template static inline +MatExpr operator & (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) & b; } + +CV_EXPORTS MatExpr operator | (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator | (const Mat& a, const Scalar& s); +CV_EXPORTS MatExpr operator | (const Scalar& s, const Mat& a); +template static inline +MatExpr operator | (const Mat& a, const Matx<_Tp, m, n>& b) { return a | Mat(b); } +template static inline +MatExpr operator | (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) | b; } + +CV_EXPORTS MatExpr operator ^ (const Mat& a, const Mat& b); +CV_EXPORTS MatExpr operator ^ (const Mat& a, const Scalar& s); +CV_EXPORTS MatExpr operator ^ (const Scalar& s, const Mat& a); +template static inline +MatExpr operator ^ (const Mat& a, const Matx<_Tp, m, n>& b) { return a ^ Mat(b); } +template static inline +MatExpr operator ^ (const Matx<_Tp, m, n>& a, const Mat& b) { return Mat(a) ^ b; } + +CV_EXPORTS MatExpr operator ~(const Mat& m); + +CV_EXPORTS MatExpr min(const Mat& a, const Mat& b); +CV_EXPORTS MatExpr min(const Mat& a, double s); +CV_EXPORTS MatExpr min(double s, const Mat& a); +template static inline +MatExpr min (const Mat& a, const Matx<_Tp, m, n>& b) { return min(a, Mat(b)); } +template static inline +MatExpr min (const Matx<_Tp, m, n>& a, const Mat& b) { return min(Mat(a), b); } + +CV_EXPORTS MatExpr max(const Mat& a, const Mat& b); +CV_EXPORTS MatExpr max(const Mat& a, double s); +CV_EXPORTS MatExpr max(double s, const Mat& a); +template static inline +MatExpr max (const Mat& a, const Matx<_Tp, m, n>& b) { return max(a, Mat(b)); } +template static inline +MatExpr max (const Matx<_Tp, m, n>& a, const Mat& b) { return max(Mat(a), b); } + +/** @brief Calculates an absolute value of each matrix element. + +abs is a meta-function that is expanded to one of absdiff or convertScaleAbs forms: +- C = abs(A-B) is equivalent to `absdiff(A, B, C)` +- C = abs(A) is equivalent to `absdiff(A, Scalar::all(0), C)` +- C = `Mat_ >(abs(A*alpha + beta))` is equivalent to `convertScaleAbs(A, C, alpha, +beta)` + +The output matrix has the same size and the same type as the input one except for the last case, +where C is depth=CV_8U . +@param m matrix. +@sa @ref MatrixExpressions, absdiff, convertScaleAbs + */ +CV_EXPORTS MatExpr abs(const Mat& m); +/** @overload +@param e matrix expression. +*/ +CV_EXPORTS MatExpr abs(const MatExpr& e); +//! @} relates cv::MatExpr + +} // cv + +#include "opencv2/core/mat.inl.hpp" + +#endif // OPENCV_CORE_MAT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/mat.inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/mat.inl.hpp new file mode 100644 index 0000000..0ef6405 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/mat.inl.hpp @@ -0,0 +1,3973 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_MATRIX_OPERATIONS_HPP +#define OPENCV_CORE_MATRIX_OPERATIONS_HPP + +#ifndef __cplusplus +# error mat.inl.hpp header must be compiled as C++ +#endif + +#ifdef _MSC_VER +#pragma warning( push ) +#pragma warning( disable: 4127 ) +#endif + +namespace cv +{ +CV__DEBUG_NS_BEGIN + + +//! @cond IGNORED + +////////////////////////// Custom (raw) type wrapper ////////////////////////// + +template static inline +int rawType() +{ + CV_StaticAssert(sizeof(_Tp) <= CV_CN_MAX, "sizeof(_Tp) is too large"); + const int elemSize = sizeof(_Tp); + return (int)CV_MAKETYPE(CV_8U, elemSize); +} + +//////////////////////// Input/Output Arrays //////////////////////// + +inline void _InputArray::init(int _flags, const void* _obj) +{ flags = _flags; obj = (void*)_obj; } + +inline void _InputArray::init(int _flags, const void* _obj, Size _sz) +{ flags = _flags; obj = (void*)_obj; sz = _sz; } + +inline void* _InputArray::getObj() const { return obj; } +inline int _InputArray::getFlags() const { return flags; } +inline Size _InputArray::getSz() const { return sz; } + +inline _InputArray::_InputArray() { init(0 + NONE, 0); } +inline _InputArray::_InputArray(int _flags, void* _obj) { init(_flags, _obj); } +inline _InputArray::_InputArray(const Mat& m) { init(MAT+ACCESS_READ, &m); } +inline _InputArray::_InputArray(const std::vector& vec) { init(STD_VECTOR_MAT+ACCESS_READ, &vec); } +inline _InputArray::_InputArray(const UMat& m) { init(UMAT+ACCESS_READ, &m); } +inline _InputArray::_InputArray(const std::vector& vec) { init(STD_VECTOR_UMAT+ACCESS_READ, &vec); } + +template inline +_InputArray::_InputArray(const std::vector<_Tp>& vec) +{ init(FIXED_TYPE + STD_VECTOR + traits::Type<_Tp>::value + ACCESS_READ, &vec); } + +template inline +_InputArray::_InputArray(const std::array<_Tp, _Nm>& arr) +{ init(FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_READ, arr.data(), Size(1, _Nm)); } + +template inline +_InputArray::_InputArray(const std::array& arr) +{ init(STD_ARRAY_MAT + ACCESS_READ, arr.data(), Size(1, _Nm)); } + +inline +_InputArray::_InputArray(const std::vector& vec) +{ init(FIXED_TYPE + STD_BOOL_VECTOR + traits::Type::value + ACCESS_READ, &vec); } + +template inline +_InputArray::_InputArray(const std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_VECTOR + traits::Type<_Tp>::value + ACCESS_READ, &vec); } + +template inline +_InputArray::_InputArray(const std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_MAT + traits::Type<_Tp>::value + ACCESS_READ, &vec); } + +template inline +_InputArray::_InputArray(const Matx<_Tp, m, n>& mtx) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_READ, &mtx, Size(n, m)); } + +template inline +_InputArray::_InputArray(const _Tp* vec, int n) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_READ, vec, Size(n, 1)); } + +template inline +_InputArray::_InputArray(const Mat_<_Tp>& m) +{ init(FIXED_TYPE + MAT + traits::Type<_Tp>::value + ACCESS_READ, &m); } + +inline _InputArray::_InputArray(const double& val) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + CV_64F + ACCESS_READ, &val, Size(1,1)); } + +inline _InputArray::_InputArray(const MatExpr& expr) +{ init(FIXED_TYPE + FIXED_SIZE + EXPR + ACCESS_READ, &expr); } + +inline _InputArray::_InputArray(const cuda::GpuMat& d_mat) +{ init(CUDA_GPU_MAT + ACCESS_READ, &d_mat); } + +inline _InputArray::_InputArray(const std::vector& d_mat) +{ init(STD_VECTOR_CUDA_GPU_MAT + ACCESS_READ, &d_mat);} + +inline _InputArray::_InputArray(const ogl::Buffer& buf) +{ init(OPENGL_BUFFER + ACCESS_READ, &buf); } + +inline _InputArray::_InputArray(const cuda::HostMem& cuda_mem) +{ init(CUDA_HOST_MEM + ACCESS_READ, &cuda_mem); } + +template inline +_InputArray _InputArray::rawIn(const std::vector<_Tp>& vec) +{ + _InputArray v; + v.flags = _InputArray::FIXED_TYPE + _InputArray::STD_VECTOR + rawType<_Tp>() + ACCESS_READ; + v.obj = (void*)&vec; + return v; +} + +template inline +_InputArray _InputArray::rawIn(const std::array<_Tp, _Nm>& arr) +{ + _InputArray v; + v.flags = FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_READ; + v.obj = (void*)arr.data(); + v.sz = Size(1, _Nm); + return v; +} + +inline _InputArray::~_InputArray() {} + +inline Mat _InputArray::getMat(int i) const +{ + if( kind() == MAT && i < 0 ) + return *(const Mat*)obj; + return getMat_(i); +} + +inline bool _InputArray::isMat() const { return kind() == _InputArray::MAT; } +inline bool _InputArray::isUMat() const { return kind() == _InputArray::UMAT; } +inline bool _InputArray::isMatVector() const { return kind() == _InputArray::STD_VECTOR_MAT; } +inline bool _InputArray::isUMatVector() const { return kind() == _InputArray::STD_VECTOR_UMAT; } +inline bool _InputArray::isMatx() const { return kind() == _InputArray::MATX; } +inline bool _InputArray::isVector() const { return kind() == _InputArray::STD_VECTOR || + kind() == _InputArray::STD_BOOL_VECTOR || + kind() == _InputArray::STD_ARRAY; } +inline bool _InputArray::isGpuMat() const { return kind() == _InputArray::CUDA_GPU_MAT; } +inline bool _InputArray::isGpuMatVector() const { return kind() == _InputArray::STD_VECTOR_CUDA_GPU_MAT; } + +//////////////////////////////////////////////////////////////////////////////////////// + +inline _OutputArray::_OutputArray() { init(NONE + ACCESS_WRITE, 0); } +inline _OutputArray::_OutputArray(int _flags, void* _obj) { init(_flags + ACCESS_WRITE, _obj); } +inline _OutputArray::_OutputArray(Mat& m) { init(MAT+ACCESS_WRITE, &m); } +inline _OutputArray::_OutputArray(std::vector& vec) { init(STD_VECTOR_MAT + ACCESS_WRITE, &vec); } +inline _OutputArray::_OutputArray(UMat& m) { init(UMAT + ACCESS_WRITE, &m); } +inline _OutputArray::_OutputArray(std::vector& vec) { init(STD_VECTOR_UMAT + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(std::vector<_Tp>& vec) +{ init(FIXED_TYPE + STD_VECTOR + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(std::array<_Tp, _Nm>& arr) +{ init(FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_WRITE, arr.data(), Size(1, _Nm)); } + +template inline +_OutputArray::_OutputArray(std::array& arr) +{ init(STD_ARRAY_MAT + ACCESS_WRITE, arr.data(), Size(1, _Nm)); } + +template inline +_OutputArray::_OutputArray(std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_VECTOR + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_MAT + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(Mat_<_Tp>& m) +{ init(FIXED_TYPE + MAT + traits::Type<_Tp>::value + ACCESS_WRITE, &m); } + +template inline +_OutputArray::_OutputArray(Matx<_Tp, m, n>& mtx) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_WRITE, &mtx, Size(n, m)); } + +template inline +_OutputArray::_OutputArray(_Tp* vec, int n) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_WRITE, vec, Size(n, 1)); } + +template inline +_OutputArray::_OutputArray(const std::vector<_Tp>& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(const std::array<_Tp, _Nm>& arr) +{ init(FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_WRITE, arr.data(), Size(1, _Nm)); } + +template inline +_OutputArray::_OutputArray(const std::array& arr) +{ init(FIXED_SIZE + STD_ARRAY_MAT + ACCESS_WRITE, arr.data(), Size(1, _Nm)); } + +template inline +_OutputArray::_OutputArray(const std::vector >& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_VECTOR + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(const std::vector >& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_MAT + traits::Type<_Tp>::value + ACCESS_WRITE, &vec); } + +template inline +_OutputArray::_OutputArray(const Mat_<_Tp>& m) +{ init(FIXED_TYPE + FIXED_SIZE + MAT + traits::Type<_Tp>::value + ACCESS_WRITE, &m); } + +template inline +_OutputArray::_OutputArray(const Matx<_Tp, m, n>& mtx) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_WRITE, &mtx, Size(n, m)); } + +template inline +_OutputArray::_OutputArray(const _Tp* vec, int n) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_WRITE, vec, Size(n, 1)); } + +inline _OutputArray::_OutputArray(cuda::GpuMat& d_mat) +{ init(CUDA_GPU_MAT + ACCESS_WRITE, &d_mat); } + +inline _OutputArray::_OutputArray(std::vector& d_mat) +{ init(STD_VECTOR_CUDA_GPU_MAT + ACCESS_WRITE, &d_mat);} + +inline _OutputArray::_OutputArray(ogl::Buffer& buf) +{ init(OPENGL_BUFFER + ACCESS_WRITE, &buf); } + +inline _OutputArray::_OutputArray(cuda::HostMem& cuda_mem) +{ init(CUDA_HOST_MEM + ACCESS_WRITE, &cuda_mem); } + +inline _OutputArray::_OutputArray(const Mat& m) +{ init(FIXED_TYPE + FIXED_SIZE + MAT + ACCESS_WRITE, &m); } + +inline _OutputArray::_OutputArray(const std::vector& vec) +{ init(FIXED_SIZE + STD_VECTOR_MAT + ACCESS_WRITE, &vec); } + +inline _OutputArray::_OutputArray(const UMat& m) +{ init(FIXED_TYPE + FIXED_SIZE + UMAT + ACCESS_WRITE, &m); } + +inline _OutputArray::_OutputArray(const std::vector& vec) +{ init(FIXED_SIZE + STD_VECTOR_UMAT + ACCESS_WRITE, &vec); } + +inline _OutputArray::_OutputArray(const cuda::GpuMat& d_mat) +{ init(FIXED_TYPE + FIXED_SIZE + CUDA_GPU_MAT + ACCESS_WRITE, &d_mat); } + + +inline _OutputArray::_OutputArray(const ogl::Buffer& buf) +{ init(FIXED_TYPE + FIXED_SIZE + OPENGL_BUFFER + ACCESS_WRITE, &buf); } + +inline _OutputArray::_OutputArray(const cuda::HostMem& cuda_mem) +{ init(FIXED_TYPE + FIXED_SIZE + CUDA_HOST_MEM + ACCESS_WRITE, &cuda_mem); } + +template inline +_OutputArray _OutputArray::rawOut(std::vector<_Tp>& vec) +{ + _OutputArray v; + v.flags = _InputArray::FIXED_TYPE + _InputArray::STD_VECTOR + rawType<_Tp>() + ACCESS_WRITE; + v.obj = (void*)&vec; + return v; +} + +template inline +_OutputArray _OutputArray::rawOut(std::array<_Tp, _Nm>& arr) +{ + _OutputArray v; + v.flags = FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_WRITE; + v.obj = (void*)arr.data(); + v.sz = Size(1, _Nm); + return v; +} + +/////////////////////////////////////////////////////////////////////////////////////////// + +inline _InputOutputArray::_InputOutputArray() { init(0+ACCESS_RW, 0); } +inline _InputOutputArray::_InputOutputArray(int _flags, void* _obj) { init(_flags+ACCESS_RW, _obj); } +inline _InputOutputArray::_InputOutputArray(Mat& m) { init(MAT+ACCESS_RW, &m); } +inline _InputOutputArray::_InputOutputArray(std::vector& vec) { init(STD_VECTOR_MAT+ACCESS_RW, &vec); } +inline _InputOutputArray::_InputOutputArray(UMat& m) { init(UMAT+ACCESS_RW, &m); } +inline _InputOutputArray::_InputOutputArray(std::vector& vec) { init(STD_VECTOR_UMAT+ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(std::vector<_Tp>& vec) +{ init(FIXED_TYPE + STD_VECTOR + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(std::array<_Tp, _Nm>& arr) +{ init(FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_RW, arr.data(), Size(1, _Nm)); } + +template inline +_InputOutputArray::_InputOutputArray(std::array& arr) +{ init(STD_ARRAY_MAT + ACCESS_RW, arr.data(), Size(1, _Nm)); } + +template inline +_InputOutputArray::_InputOutputArray(std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_VECTOR + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(std::vector >& vec) +{ init(FIXED_TYPE + STD_VECTOR_MAT + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(Mat_<_Tp>& m) +{ init(FIXED_TYPE + MAT + traits::Type<_Tp>::value + ACCESS_RW, &m); } + +template inline +_InputOutputArray::_InputOutputArray(Matx<_Tp, m, n>& mtx) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_RW, &mtx, Size(n, m)); } + +template inline +_InputOutputArray::_InputOutputArray(_Tp* vec, int n) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_RW, vec, Size(n, 1)); } + +template inline +_InputOutputArray::_InputOutputArray(const std::vector<_Tp>& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(const std::array<_Tp, _Nm>& arr) +{ init(FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_RW, arr.data(), Size(1, _Nm)); } + +template inline +_InputOutputArray::_InputOutputArray(const std::array& arr) +{ init(FIXED_SIZE + STD_ARRAY_MAT + ACCESS_RW, arr.data(), Size(1, _Nm)); } + +template inline +_InputOutputArray::_InputOutputArray(const std::vector >& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_VECTOR + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(const std::vector >& vec) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_MAT + traits::Type<_Tp>::value + ACCESS_RW, &vec); } + +template inline +_InputOutputArray::_InputOutputArray(const Mat_<_Tp>& m) +{ init(FIXED_TYPE + FIXED_SIZE + MAT + traits::Type<_Tp>::value + ACCESS_RW, &m); } + +template inline +_InputOutputArray::_InputOutputArray(const Matx<_Tp, m, n>& mtx) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_RW, &mtx, Size(n, m)); } + +template inline +_InputOutputArray::_InputOutputArray(const _Tp* vec, int n) +{ init(FIXED_TYPE + FIXED_SIZE + MATX + traits::Type<_Tp>::value + ACCESS_RW, vec, Size(n, 1)); } + +inline _InputOutputArray::_InputOutputArray(cuda::GpuMat& d_mat) +{ init(CUDA_GPU_MAT + ACCESS_RW, &d_mat); } + +inline _InputOutputArray::_InputOutputArray(ogl::Buffer& buf) +{ init(OPENGL_BUFFER + ACCESS_RW, &buf); } + +inline _InputOutputArray::_InputOutputArray(cuda::HostMem& cuda_mem) +{ init(CUDA_HOST_MEM + ACCESS_RW, &cuda_mem); } + +inline _InputOutputArray::_InputOutputArray(const Mat& m) +{ init(FIXED_TYPE + FIXED_SIZE + MAT + ACCESS_RW, &m); } + +inline _InputOutputArray::_InputOutputArray(const std::vector& vec) +{ init(FIXED_SIZE + STD_VECTOR_MAT + ACCESS_RW, &vec); } + +inline _InputOutputArray::_InputOutputArray(const UMat& m) +{ init(FIXED_TYPE + FIXED_SIZE + UMAT + ACCESS_RW, &m); } + +inline _InputOutputArray::_InputOutputArray(const std::vector& vec) +{ init(FIXED_SIZE + STD_VECTOR_UMAT + ACCESS_RW, &vec); } + +inline _InputOutputArray::_InputOutputArray(const cuda::GpuMat& d_mat) +{ init(FIXED_TYPE + FIXED_SIZE + CUDA_GPU_MAT + ACCESS_RW, &d_mat); } + +inline _InputOutputArray::_InputOutputArray(const std::vector& d_mat) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_CUDA_GPU_MAT + ACCESS_RW, &d_mat);} + +template<> inline _InputOutputArray::_InputOutputArray(std::vector& d_mat) +{ init(FIXED_TYPE + FIXED_SIZE + STD_VECTOR_CUDA_GPU_MAT + ACCESS_RW, &d_mat);} + +inline _InputOutputArray::_InputOutputArray(const ogl::Buffer& buf) +{ init(FIXED_TYPE + FIXED_SIZE + OPENGL_BUFFER + ACCESS_RW, &buf); } + +inline _InputOutputArray::_InputOutputArray(const cuda::HostMem& cuda_mem) +{ init(FIXED_TYPE + FIXED_SIZE + CUDA_HOST_MEM + ACCESS_RW, &cuda_mem); } + +template inline +_InputOutputArray _InputOutputArray::rawInOut(std::vector<_Tp>& vec) +{ + _InputOutputArray v; + v.flags = _InputArray::FIXED_TYPE + _InputArray::STD_VECTOR + rawType<_Tp>() + ACCESS_RW; + v.obj = (void*)&vec; + return v; +} + +template inline +_InputOutputArray _InputOutputArray::rawInOut(std::array<_Tp, _Nm>& arr) +{ + _InputOutputArray v; + v.flags = FIXED_TYPE + FIXED_SIZE + STD_ARRAY + traits::Type<_Tp>::value + ACCESS_RW; + v.obj = (void*)arr.data(); + v.sz = Size(1, _Nm); + return v; +} + + +template static inline _InputArray rawIn(_Tp& v) { return _InputArray::rawIn(v); } +template static inline _OutputArray rawOut(_Tp& v) { return _OutputArray::rawOut(v); } +template static inline _InputOutputArray rawInOut(_Tp& v) { return _InputOutputArray::rawInOut(v); } + +CV__DEBUG_NS_END + +//////////////////////////////////////////// Mat ////////////////////////////////////////// + +inline +Mat::Mat() + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{} + +inline +Mat::Mat(int _rows, int _cols, int _type) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_rows, _cols, _type); +} + +inline +Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_rows, _cols, _type); + *this = _s; +} + +inline +Mat::Mat(Size _sz, int _type) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create( _sz.height, _sz.width, _type ); +} + +inline +Mat::Mat(Size _sz, int _type, const Scalar& _s) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_sz.height, _sz.width, _type); + *this = _s; +} + +inline +Mat::Mat(int _dims, const int* _sz, int _type) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_dims, _sz, _type); +} + +inline +Mat::Mat(int _dims, const int* _sz, int _type, const Scalar& _s) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_dims, _sz, _type); + *this = _s; +} + +inline +Mat::Mat(const std::vector& _sz, int _type) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_sz, _type); +} + +inline +Mat::Mat(const std::vector& _sz, int _type, const Scalar& _s) + : flags(MAGIC_VAL), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), + datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + create(_sz, _type); + *this = _s; +} + +inline +Mat::Mat(const Mat& m) + : flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), data(m.data), + datastart(m.datastart), dataend(m.dataend), datalimit(m.datalimit), allocator(m.allocator), + u(m.u), size(&rows), step(0) +{ + if( u ) + CV_XADD(&u->refcount, 1); + if( m.dims <= 2 ) + { + step[0] = m.step[0]; step[1] = m.step[1]; + } + else + { + dims = 0; + copySize(m); + } +} + +inline +Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step) + : flags(MAGIC_VAL + (_type & TYPE_MASK)), dims(2), rows(_rows), cols(_cols), + data((uchar*)_data), datastart((uchar*)_data), dataend(0), datalimit(0), + allocator(0), u(0), size(&rows) +{ + CV_Assert(total() == 0 || data != NULL); + + size_t esz = CV_ELEM_SIZE(_type), esz1 = CV_ELEM_SIZE1(_type); + size_t minstep = cols * esz; + if( _step == AUTO_STEP ) + { + _step = minstep; + } + else + { + CV_DbgAssert( _step >= minstep ); + if (_step % esz1 != 0) + { + CV_Error(Error::BadStep, "Step must be a multiple of esz1"); + } + } + step[0] = _step; + step[1] = esz; + datalimit = datastart + _step * rows; + dataend = datalimit - _step + minstep; + updateContinuityFlag(); +} + +inline +Mat::Mat(Size _sz, int _type, void* _data, size_t _step) + : flags(MAGIC_VAL + (_type & TYPE_MASK)), dims(2), rows(_sz.height), cols(_sz.width), + data((uchar*)_data), datastart((uchar*)_data), dataend(0), datalimit(0), + allocator(0), u(0), size(&rows) +{ + CV_Assert(total() == 0 || data != NULL); + + size_t esz = CV_ELEM_SIZE(_type), esz1 = CV_ELEM_SIZE1(_type); + size_t minstep = cols*esz; + if( _step == AUTO_STEP ) + { + _step = minstep; + } + else + { + CV_DbgAssert( _step >= minstep ); + + if (_step % esz1 != 0) + { + CV_Error(Error::BadStep, "Step must be a multiple of esz1"); + } + } + step[0] = _step; + step[1] = esz; + datalimit = datastart + _step*rows; + dataend = datalimit - _step + minstep; + updateContinuityFlag(); +} + +template inline +Mat::Mat(const std::vector<_Tp>& vec, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows((int)vec.size()), + cols(1), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if(vec.empty()) + return; + if( !copyData ) + { + step[0] = step[1] = sizeof(_Tp); + datastart = data = (uchar*)&vec[0]; + datalimit = dataend = datastart + rows * step[0]; + } + else + Mat((int)vec.size(), 1, traits::Type<_Tp>::value, (uchar*)&vec[0]).copyTo(*this); +} + +template inline +Mat::Mat(const std::initializer_list<_Tp> list) + : Mat() +{ + CV_Assert(list.size() != 0); + Mat((int)list.size(), 1, traits::Type<_Tp>::value, (uchar*)list.begin()).copyTo(*this); +} + +template inline +Mat::Mat(const std::initializer_list sizes, const std::initializer_list<_Tp> list) + : Mat() +{ + size_t size_total = 1; + for(auto s : sizes) + size_total *= s; + CV_Assert(list.size() != 0); + CV_Assert(size_total == list.size()); + Mat((int)sizes.size(), (int*)sizes.begin(), traits::Type<_Tp>::value, (uchar*)list.begin()).copyTo(*this); +} + +template inline +Mat::Mat(const std::array<_Tp, _Nm>& arr, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows((int)arr.size()), + cols(1), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if(arr.empty()) + return; + if( !copyData ) + { + step[0] = step[1] = sizeof(_Tp); + datastart = data = (uchar*)arr.data(); + datalimit = dataend = datastart + rows * step[0]; + } + else + Mat((int)arr.size(), 1, traits::Type<_Tp>::value, (uchar*)arr.data()).copyTo(*this); +} + +template inline +Mat::Mat(const Vec<_Tp, n>& vec, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows(n), cols(1), data(0), + datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if( !copyData ) + { + step[0] = step[1] = sizeof(_Tp); + datastart = data = (uchar*)vec.val; + datalimit = dataend = datastart + rows * step[0]; + } + else + Mat(n, 1, traits::Type<_Tp>::value, (void*)vec.val).copyTo(*this); +} + + +template inline +Mat::Mat(const Matx<_Tp,m,n>& M, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows(m), cols(n), data(0), + datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if( !copyData ) + { + step[0] = cols * sizeof(_Tp); + step[1] = sizeof(_Tp); + datastart = data = (uchar*)M.val; + datalimit = dataend = datastart + rows * step[0]; + } + else + Mat(m, n, traits::Type<_Tp>::value, (uchar*)M.val).copyTo(*this); +} + +template inline +Mat::Mat(const Point_<_Tp>& pt, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows(2), cols(1), data(0), + datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if( !copyData ) + { + step[0] = step[1] = sizeof(_Tp); + datastart = data = (uchar*)&pt.x; + datalimit = dataend = datastart + rows * step[0]; + } + else + { + create(2, 1, traits::Type<_Tp>::value); + ((_Tp*)data)[0] = pt.x; + ((_Tp*)data)[1] = pt.y; + } +} + +template inline +Mat::Mat(const Point3_<_Tp>& pt, bool copyData) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows(3), cols(1), data(0), + datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0) +{ + if( !copyData ) + { + step[0] = step[1] = sizeof(_Tp); + datastart = data = (uchar*)&pt.x; + datalimit = dataend = datastart + rows * step[0]; + } + else + { + create(3, 1, traits::Type<_Tp>::value); + ((_Tp*)data)[0] = pt.x; + ((_Tp*)data)[1] = pt.y; + ((_Tp*)data)[2] = pt.z; + } +} + +template inline +Mat::Mat(const MatCommaInitializer_<_Tp>& commaInitializer) + : flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(0), rows(0), cols(0), data(0), + datastart(0), dataend(0), allocator(0), u(0), size(&rows) +{ + *this = commaInitializer.operator Mat_<_Tp>(); +} + +inline +Mat::~Mat() +{ + release(); + if( step.p != step.buf ) + fastFree(step.p); +} + +inline +Mat& Mat::operator = (const Mat& m) +{ + if( this != &m ) + { + if( m.u ) + CV_XADD(&m.u->refcount, 1); + release(); + flags = m.flags; + if( dims <= 2 && m.dims <= 2 ) + { + dims = m.dims; + rows = m.rows; + cols = m.cols; + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + copySize(m); + data = m.data; + datastart = m.datastart; + dataend = m.dataend; + datalimit = m.datalimit; + allocator = m.allocator; + u = m.u; + } + return *this; +} + +inline +Mat Mat::row(int y) const +{ + return Mat(*this, Range(y, y + 1), Range::all()); +} + +inline +Mat Mat::col(int x) const +{ + return Mat(*this, Range::all(), Range(x, x + 1)); +} + +inline +Mat Mat::rowRange(int startrow, int endrow) const +{ + return Mat(*this, Range(startrow, endrow), Range::all()); +} + +inline +Mat Mat::rowRange(const Range& r) const +{ + return Mat(*this, r, Range::all()); +} + +inline +Mat Mat::colRange(int startcol, int endcol) const +{ + return Mat(*this, Range::all(), Range(startcol, endcol)); +} + +inline +Mat Mat::colRange(const Range& r) const +{ + return Mat(*this, Range::all(), r); +} + +inline +Mat Mat::clone() const +{ + Mat m; + copyTo(m); + return m; +} + +inline +void Mat::assignTo( Mat& m, int _type ) const +{ + if( _type < 0 ) + m = *this; + else + convertTo(m, _type); +} + +inline +void Mat::create(int _rows, int _cols, int _type) +{ + _type &= TYPE_MASK; + if( dims <= 2 && rows == _rows && cols == _cols && type() == _type && data ) + return; + int sz[] = {_rows, _cols}; + create(2, sz, _type); +} + +inline +void Mat::create(Size _sz, int _type) +{ + create(_sz.height, _sz.width, _type); +} + +inline +void Mat::addref() +{ + if( u ) + CV_XADD(&u->refcount, 1); +} + +inline +void Mat::release() +{ + if( u && CV_XADD(&u->refcount, -1) == 1 ) + deallocate(); + u = NULL; + datastart = dataend = datalimit = data = 0; + for(int i = 0; i < dims; i++) + size.p[i] = 0; +#ifdef _DEBUG + flags = MAGIC_VAL; + dims = rows = cols = 0; + if(step.p != step.buf) + { + fastFree(step.p); + step.p = step.buf; + size.p = &rows; + } +#endif +} + +inline +Mat Mat::operator()( Range _rowRange, Range _colRange ) const +{ + return Mat(*this, _rowRange, _colRange); +} + +inline +Mat Mat::operator()( const Rect& roi ) const +{ + return Mat(*this, roi); +} + +inline +Mat Mat::operator()(const Range* ranges) const +{ + return Mat(*this, ranges); +} + +inline +Mat Mat::operator()(const std::vector& ranges) const +{ + return Mat(*this, ranges); +} + +inline +bool Mat::isContinuous() const +{ + return (flags & CONTINUOUS_FLAG) != 0; +} + +inline +bool Mat::isSubmatrix() const +{ + return (flags & SUBMATRIX_FLAG) != 0; +} + +inline +size_t Mat::elemSize() const +{ + size_t res = dims > 0 ? step.p[dims - 1] : 0; + CV_DbgAssert(res != 0); + return res; +} + +inline +size_t Mat::elemSize1() const +{ + return CV_ELEM_SIZE1(flags); +} + +inline +int Mat::type() const +{ + return CV_MAT_TYPE(flags); +} + +inline +int Mat::depth() const +{ + return CV_MAT_DEPTH(flags); +} + +inline +int Mat::channels() const +{ + return CV_MAT_CN(flags); +} + +inline +size_t Mat::step1(int i) const +{ + return step.p[i] / elemSize1(); +} + +inline +bool Mat::empty() const +{ + return data == 0 || total() == 0 || dims == 0; +} + +inline +size_t Mat::total() const +{ + if( dims <= 2 ) + return (size_t)rows * cols; + size_t p = 1; + for( int i = 0; i < dims; i++ ) + p *= size[i]; + return p; +} + +inline +size_t Mat::total(int startDim, int endDim) const +{ + CV_Assert( 0 <= startDim && startDim <= endDim); + size_t p = 1; + int endDim_ = endDim <= dims ? endDim : dims; + for( int i = startDim; i < endDim_; i++ ) + p *= size[i]; + return p; +} + +inline +uchar* Mat::ptr(int y) +{ + CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) ); + return data + step.p[0] * y; +} + +inline +const uchar* Mat::ptr(int y) const +{ + CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) ); + return data + step.p[0] * y; +} + +template inline +_Tp* Mat::ptr(int y) +{ + CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) ); + return (_Tp*)(data + step.p[0] * y); +} + +template inline +const _Tp* Mat::ptr(int y) const +{ + CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) ); + return (const _Tp*)(data + step.p[0] * y); +} + +inline +uchar* Mat::ptr(int i0, int i1) +{ + CV_DbgAssert(dims >= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + return data + i0 * step.p[0] + i1 * step.p[1]; +} + +inline +const uchar* Mat::ptr(int i0, int i1) const +{ + CV_DbgAssert(dims >= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + return data + i0 * step.p[0] + i1 * step.p[1]; +} + +template inline +_Tp* Mat::ptr(int i0, int i1) +{ + CV_DbgAssert(dims >= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + return (_Tp*)(data + i0 * step.p[0] + i1 * step.p[1]); +} + +template inline +const _Tp* Mat::ptr(int i0, int i1) const +{ + CV_DbgAssert(dims >= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + return (const _Tp*)(data + i0 * step.p[0] + i1 * step.p[1]); +} + +inline +uchar* Mat::ptr(int i0, int i1, int i2) +{ + CV_DbgAssert(dims >= 3); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert((unsigned)i2 < (unsigned)size.p[2]); + return data + i0 * step.p[0] + i1 * step.p[1] + i2 * step.p[2]; +} + +inline +const uchar* Mat::ptr(int i0, int i1, int i2) const +{ + CV_DbgAssert(dims >= 3); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert((unsigned)i2 < (unsigned)size.p[2]); + return data + i0 * step.p[0] + i1 * step.p[1] + i2 * step.p[2]; +} + +template inline +_Tp* Mat::ptr(int i0, int i1, int i2) +{ + CV_DbgAssert(dims >= 3); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert((unsigned)i2 < (unsigned)size.p[2]); + return (_Tp*)(data + i0 * step.p[0] + i1 * step.p[1] + i2 * step.p[2]); +} + +template inline +const _Tp* Mat::ptr(int i0, int i1, int i2) const +{ + CV_DbgAssert(dims >= 3); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert((unsigned)i2 < (unsigned)size.p[2]); + return (const _Tp*)(data + i0 * step.p[0] + i1 * step.p[1] + i2 * step.p[2]); +} + +inline +uchar* Mat::ptr(const int* idx) +{ + int i, d = dims; + uchar* p = data; + CV_DbgAssert( d >= 1 && p ); + for( i = 0; i < d; i++ ) + { + CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] ); + p += idx[i] * step.p[i]; + } + return p; +} + +inline +const uchar* Mat::ptr(const int* idx) const +{ + int i, d = dims; + uchar* p = data; + CV_DbgAssert( d >= 1 && p ); + for( i = 0; i < d; i++ ) + { + CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] ); + p += idx[i] * step.p[i]; + } + return p; +} + +template inline +_Tp* Mat::ptr(const int* idx) +{ + int i, d = dims; + uchar* p = data; + CV_DbgAssert( d >= 1 && p ); + for( i = 0; i < d; i++ ) + { + CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] ); + p += idx[i] * step.p[i]; + } + return (_Tp*)p; +} + +template inline +const _Tp* Mat::ptr(const int* idx) const +{ + int i, d = dims; + uchar* p = data; + CV_DbgAssert( d >= 1 && p ); + for( i = 0; i < d; i++ ) + { + CV_DbgAssert( (unsigned)idx[i] < (unsigned)size.p[i] ); + p += idx[i] * step.p[i]; + } + return (const _Tp*)p; +} + +template inline +_Tp& Mat::at(int i0, int i1) +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())); + CV_DbgAssert(CV_ELEM_SIZE1(traits::Depth<_Tp>::value) == elemSize1()); + return ((_Tp*)(data + step.p[0] * i0))[i1]; +} + +template inline +const _Tp& Mat::at(int i0, int i1) const +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())); + CV_DbgAssert(CV_ELEM_SIZE1(traits::Depth<_Tp>::value) == elemSize1()); + return ((const _Tp*)(data + step.p[0] * i0))[i1]; +} + +template inline +_Tp& Mat::at(Point pt) +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)pt.y < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)(pt.x * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())); + CV_DbgAssert(CV_ELEM_SIZE1(traits::Depth<_Tp>::value) == elemSize1()); + return ((_Tp*)(data + step.p[0] * pt.y))[pt.x]; +} + +template inline +const _Tp& Mat::at(Point pt) const +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)pt.y < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)(pt.x * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())); + CV_DbgAssert(CV_ELEM_SIZE1(traits::Depth<_Tp>::value) == elemSize1()); + return ((const _Tp*)(data + step.p[0] * pt.y))[pt.x]; +} + +template inline +_Tp& Mat::at(int i0) +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)(size.p[0] * size.p[1])); + CV_DbgAssert(elemSize() == sizeof(_Tp)); + if( isContinuous() || size.p[0] == 1 ) + return ((_Tp*)data)[i0]; + if( size.p[1] == 1 ) + return *(_Tp*)(data + step.p[0] * i0); + int i = i0 / cols, j = i0 - i * cols; + return ((_Tp*)(data + step.p[0] * i))[j]; +} + +template inline +const _Tp& Mat::at(int i0) const +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)(size.p[0] * size.p[1])); + CV_DbgAssert(elemSize() == sizeof(_Tp)); + if( isContinuous() || size.p[0] == 1 ) + return ((const _Tp*)data)[i0]; + if( size.p[1] == 1 ) + return *(const _Tp*)(data + step.p[0] * i0); + int i = i0 / cols, j = i0 - i * cols; + return ((const _Tp*)(data + step.p[0] * i))[j]; +} + +template inline +_Tp& Mat::at(int i0, int i1, int i2) +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(_Tp*)ptr(i0, i1, i2); +} + +template inline +const _Tp& Mat::at(int i0, int i1, int i2) const +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(const _Tp*)ptr(i0, i1, i2); +} + +template inline +_Tp& Mat::at(const int* idx) +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(_Tp*)ptr(idx); +} + +template inline +const _Tp& Mat::at(const int* idx) const +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(const _Tp*)ptr(idx); +} + +template inline +_Tp& Mat::at(const Vec& idx) +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(_Tp*)ptr(idx.val); +} + +template inline +const _Tp& Mat::at(const Vec& idx) const +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return *(const _Tp*)ptr(idx.val); +} + +template inline +MatConstIterator_<_Tp> Mat::begin() const +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return MatConstIterator_<_Tp>((const Mat_<_Tp>*)this); +} + +template inline +MatConstIterator_<_Tp> Mat::end() const +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + MatConstIterator_<_Tp> it((const Mat_<_Tp>*)this); + it += total(); + return it; +} + +template inline +MatIterator_<_Tp> Mat::begin() +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + return MatIterator_<_Tp>((Mat_<_Tp>*)this); +} + +template inline +MatIterator_<_Tp> Mat::end() +{ + CV_DbgAssert( elemSize() == sizeof(_Tp) ); + MatIterator_<_Tp> it((Mat_<_Tp>*)this); + it += total(); + return it; +} + +template inline +void Mat::forEach(const Functor& operation) { + this->forEach_impl<_Tp>(operation); +} + +template inline +void Mat::forEach(const Functor& operation) const { + // call as not const + (const_cast(this))->forEach<_Tp>(operation); +} + +template inline +Mat::operator std::vector<_Tp>() const +{ + std::vector<_Tp> v; + copyTo(v); + return v; +} + +template inline +Mat::operator std::array<_Tp, _Nm>() const +{ + std::array<_Tp, _Nm> v; + copyTo(v); + return v; +} + +template inline +Mat::operator Vec<_Tp, n>() const +{ + CV_Assert( data && dims <= 2 && (rows == 1 || cols == 1) && + rows + cols - 1 == n && channels() == 1 ); + + if( isContinuous() && type() == traits::Type<_Tp>::value ) + return Vec<_Tp, n>((_Tp*)data); + Vec<_Tp, n> v; + Mat tmp(rows, cols, traits::Type<_Tp>::value, v.val); + convertTo(tmp, tmp.type()); + return v; +} + +template inline +Mat::operator Matx<_Tp, m, n>() const +{ + CV_Assert( data && dims <= 2 && rows == m && cols == n && channels() == 1 ); + + if( isContinuous() && type() == traits::Type<_Tp>::value ) + return Matx<_Tp, m, n>((_Tp*)data); + Matx<_Tp, m, n> mtx; + Mat tmp(rows, cols, traits::Type<_Tp>::value, mtx.val); + convertTo(tmp, tmp.type()); + return mtx; +} + +template inline +void Mat::push_back(const _Tp& elem) +{ + if( !data ) + { + *this = Mat(1, 1, traits::Type<_Tp>::value, (void*)&elem).clone(); + return; + } + CV_Assert(traits::Type<_Tp>::value == type() && cols == 1 + /* && dims == 2 (cols == 1 implies dims == 2) */); + const uchar* tmp = dataend + step[0]; + if( !isSubmatrix() && isContinuous() && tmp <= datalimit ) + { + *(_Tp*)(data + (size.p[0]++) * step.p[0]) = elem; + dataend = tmp; + } + else + push_back_(&elem); +} + +template inline +void Mat::push_back(const Mat_<_Tp>& m) +{ + push_back((const Mat&)m); +} + +template<> inline +void Mat::push_back(const MatExpr& expr) +{ + push_back(static_cast(expr)); +} + + +template inline +void Mat::push_back(const std::vector<_Tp>& v) +{ + push_back(Mat(v)); +} + +inline +Mat::Mat(Mat&& m) + : flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), data(m.data), + datastart(m.datastart), dataend(m.dataend), datalimit(m.datalimit), allocator(m.allocator), + u(m.u), size(&rows) +{ + if (m.dims <= 2) // move new step/size info + { + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + { + CV_DbgAssert(m.step.p != m.step.buf); + step.p = m.step.p; + size.p = m.size.p; + m.step.p = m.step.buf; + m.size.p = &m.rows; + } + m.flags = MAGIC_VAL; m.dims = m.rows = m.cols = 0; + m.data = NULL; m.datastart = NULL; m.dataend = NULL; m.datalimit = NULL; + m.allocator = NULL; + m.u = NULL; +} + +inline +Mat& Mat::operator = (Mat&& m) +{ + if (this == &m) + return *this; + + release(); + flags = m.flags; dims = m.dims; rows = m.rows; cols = m.cols; data = m.data; + datastart = m.datastart; dataend = m.dataend; datalimit = m.datalimit; allocator = m.allocator; + u = m.u; + if (step.p != step.buf) // release self step/size + { + fastFree(step.p); + step.p = step.buf; + size.p = &rows; + } + if (m.dims <= 2) // move new step/size info + { + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + { + CV_DbgAssert(m.step.p != m.step.buf); + step.p = m.step.p; + size.p = m.size.p; + m.step.p = m.step.buf; + m.size.p = &m.rows; + } + m.flags = MAGIC_VAL; m.dims = m.rows = m.cols = 0; + m.data = NULL; m.datastart = NULL; m.dataend = NULL; m.datalimit = NULL; + m.allocator = NULL; + m.u = NULL; + return *this; +} + + +///////////////////////////// MatSize //////////////////////////// + +inline +MatSize::MatSize(int* _p) + : p(_p) {} + +inline +int MatSize::dims() const +{ + return (p - 1)[0]; +} + +inline +Size MatSize::operator()() const +{ + CV_DbgAssert(dims() <= 2); + return Size(p[1], p[0]); +} + +inline +const int& MatSize::operator[](int i) const +{ + CV_DbgAssert(i < dims()); +#ifdef __OPENCV_BUILD + CV_DbgAssert(i >= 0); +#endif + return p[i]; +} + +inline +int& MatSize::operator[](int i) +{ + CV_DbgAssert(i < dims()); +#ifdef __OPENCV_BUILD + CV_DbgAssert(i >= 0); +#endif + return p[i]; +} + +inline +MatSize::operator const int*() const +{ + return p; +} + +inline +bool MatSize::operator == (const MatSize& sz) const +{ + int d = dims(); + int dsz = sz.dims(); + if( d != dsz ) + return false; + if( d == 2 ) + return p[0] == sz.p[0] && p[1] == sz.p[1]; + + for( int i = 0; i < d; i++ ) + if( p[i] != sz.p[i] ) + return false; + return true; +} + +inline +bool MatSize::operator != (const MatSize& sz) const +{ + return !(*this == sz); +} + + + +///////////////////////////// MatStep //////////////////////////// + +inline +MatStep::MatStep() +{ + p = buf; p[0] = p[1] = 0; +} + +inline +MatStep::MatStep(size_t s) +{ + p = buf; p[0] = s; p[1] = 0; +} + +inline +const size_t& MatStep::operator[](int i) const +{ + return p[i]; +} + +inline +size_t& MatStep::operator[](int i) +{ + return p[i]; +} + +inline MatStep::operator size_t() const +{ + CV_DbgAssert( p == buf ); + return buf[0]; +} + +inline MatStep& MatStep::operator = (size_t s) +{ + CV_DbgAssert( p == buf ); + buf[0] = s; + return *this; +} + + + +////////////////////////////// Mat_<_Tp> //////////////////////////// + +template inline +Mat_<_Tp>::Mat_() + : Mat() +{ + flags = (flags & ~CV_MAT_TYPE_MASK) + traits::Type<_Tp>::value; +} + +template inline +Mat_<_Tp>::Mat_(int _rows, int _cols) + : Mat(_rows, _cols, traits::Type<_Tp>::value) +{ +} + +template inline +Mat_<_Tp>::Mat_(int _rows, int _cols, const _Tp& value) + : Mat(_rows, _cols, traits::Type<_Tp>::value) +{ + *this = value; +} + +template inline +Mat_<_Tp>::Mat_(Size _sz) + : Mat(_sz.height, _sz.width, traits::Type<_Tp>::value) +{} + +template inline +Mat_<_Tp>::Mat_(Size _sz, const _Tp& value) + : Mat(_sz.height, _sz.width, traits::Type<_Tp>::value) +{ + *this = value; +} + +template inline +Mat_<_Tp>::Mat_(int _dims, const int* _sz) + : Mat(_dims, _sz, traits::Type<_Tp>::value) +{} + +template inline +Mat_<_Tp>::Mat_(int _dims, const int* _sz, const _Tp& _s) + : Mat(_dims, _sz, traits::Type<_Tp>::value, Scalar(_s)) +{} + +template inline +Mat_<_Tp>::Mat_(int _dims, const int* _sz, _Tp* _data, const size_t* _steps) + : Mat(_dims, _sz, traits::Type<_Tp>::value, _data, _steps) +{} + +template inline +Mat_<_Tp>::Mat_(const Mat_<_Tp>& m, const Range* ranges) + : Mat(m, ranges) +{} + +template inline +Mat_<_Tp>::Mat_(const Mat_<_Tp>& m, const std::vector& ranges) + : Mat(m, ranges) +{} + +template inline +Mat_<_Tp>::Mat_(const Mat& m) + : Mat() +{ + flags = (flags & ~CV_MAT_TYPE_MASK) + traits::Type<_Tp>::value; + *this = m; +} + +template inline +Mat_<_Tp>::Mat_(const Mat_& m) + : Mat(m) +{} + +template inline +Mat_<_Tp>::Mat_(int _rows, int _cols, _Tp* _data, size_t steps) + : Mat(_rows, _cols, traits::Type<_Tp>::value, _data, steps) +{} + +template inline +Mat_<_Tp>::Mat_(const Mat_& m, const Range& _rowRange, const Range& _colRange) + : Mat(m, _rowRange, _colRange) +{} + +template inline +Mat_<_Tp>::Mat_(const Mat_& m, const Rect& roi) + : Mat(m, roi) +{} + +template template inline +Mat_<_Tp>::Mat_(const Vec::channel_type, n>& vec, bool copyData) + : Mat(n / DataType<_Tp>::channels, 1, traits::Type<_Tp>::value, (void*)&vec) +{ + CV_Assert(n%DataType<_Tp>::channels == 0); + if( copyData ) + *this = clone(); +} + +template template inline +Mat_<_Tp>::Mat_(const Matx::channel_type, m, n>& M, bool copyData) + : Mat(m, n / DataType<_Tp>::channels, traits::Type<_Tp>::value, (void*)&M) +{ + CV_Assert(n % DataType<_Tp>::channels == 0); + if( copyData ) + *this = clone(); +} + +template inline +Mat_<_Tp>::Mat_(const Point_::channel_type>& pt, bool copyData) + : Mat(2 / DataType<_Tp>::channels, 1, traits::Type<_Tp>::value, (void*)&pt) +{ + CV_Assert(2 % DataType<_Tp>::channels == 0); + if( copyData ) + *this = clone(); +} + +template inline +Mat_<_Tp>::Mat_(const Point3_::channel_type>& pt, bool copyData) + : Mat(3 / DataType<_Tp>::channels, 1, traits::Type<_Tp>::value, (void*)&pt) +{ + CV_Assert(3 % DataType<_Tp>::channels == 0); + if( copyData ) + *this = clone(); +} + +template inline +Mat_<_Tp>::Mat_(const MatCommaInitializer_<_Tp>& commaInitializer) + : Mat(commaInitializer) +{} + +template inline +Mat_<_Tp>::Mat_(const std::vector<_Tp>& vec, bool copyData) + : Mat(vec, copyData) +{} + +template inline +Mat_<_Tp>::Mat_(std::initializer_list<_Tp> list) + : Mat(list) +{} + +template inline +Mat_<_Tp>::Mat_(const std::initializer_list sizes, std::initializer_list<_Tp> list) + : Mat(sizes, list) +{} + +template template inline +Mat_<_Tp>::Mat_(const std::array<_Tp, _Nm>& arr, bool copyData) + : Mat(arr, copyData) +{} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (const Mat& m) +{ + if( traits::Type<_Tp>::value == m.type() ) + { + Mat::operator = (m); + return *this; + } + if( traits::Depth<_Tp>::value == m.depth() ) + { + return (*this = m.reshape(DataType<_Tp>::channels, m.dims, 0)); + } + CV_Assert(DataType<_Tp>::channels == m.channels() || m.empty()); + m.convertTo(*this, type()); + return *this; +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (const Mat_& m) +{ + Mat::operator=(m); + return *this; +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (const _Tp& s) +{ + typedef typename DataType<_Tp>::vec_type VT; + Mat::operator=(Scalar((const VT&)s)); + return *this; +} + +template inline +void Mat_<_Tp>::create(int _rows, int _cols) +{ + Mat::create(_rows, _cols, traits::Type<_Tp>::value); +} + +template inline +void Mat_<_Tp>::create(Size _sz) +{ + Mat::create(_sz, traits::Type<_Tp>::value); +} + +template inline +void Mat_<_Tp>::create(int _dims, const int* _sz) +{ + Mat::create(_dims, _sz, traits::Type<_Tp>::value); +} + +template inline +void Mat_<_Tp>::release() +{ + Mat::release(); +#ifdef _DEBUG + flags = (flags & ~CV_MAT_TYPE_MASK) + traits::Type<_Tp>::value; +#endif +} + +template inline +Mat_<_Tp> Mat_<_Tp>::cross(const Mat_& m) const +{ + return Mat_<_Tp>(Mat::cross(m)); +} + +template template inline +Mat_<_Tp>::operator Mat_() const +{ + return Mat_(*this); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::row(int y) const +{ + return Mat_(*this, Range(y, y+1), Range::all()); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::col(int x) const +{ + return Mat_(*this, Range::all(), Range(x, x+1)); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::diag(int d) const +{ + return Mat_(Mat::diag(d)); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::clone() const +{ + return Mat_(Mat::clone()); +} + +template inline +size_t Mat_<_Tp>::elemSize() const +{ + CV_DbgAssert( Mat::elemSize() == sizeof(_Tp) ); + return sizeof(_Tp); +} + +template inline +size_t Mat_<_Tp>::elemSize1() const +{ + CV_DbgAssert( Mat::elemSize1() == sizeof(_Tp) / DataType<_Tp>::channels ); + return sizeof(_Tp) / DataType<_Tp>::channels; +} + +template inline +int Mat_<_Tp>::type() const +{ + CV_DbgAssert( Mat::type() == traits::Type<_Tp>::value ); + return traits::Type<_Tp>::value; +} + +template inline +int Mat_<_Tp>::depth() const +{ + CV_DbgAssert( Mat::depth() == traits::Depth<_Tp>::value ); + return traits::Depth<_Tp>::value; +} + +template inline +int Mat_<_Tp>::channels() const +{ + CV_DbgAssert( Mat::channels() == DataType<_Tp>::channels ); + return DataType<_Tp>::channels; +} + +template inline +size_t Mat_<_Tp>::stepT(int i) const +{ + return step.p[i] / elemSize(); +} + +template inline +size_t Mat_<_Tp>::step1(int i) const +{ + return step.p[i] / elemSize1(); +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::adjustROI( int dtop, int dbottom, int dleft, int dright ) +{ + return (Mat_<_Tp>&)(Mat::adjustROI(dtop, dbottom, dleft, dright)); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::operator()( const Range& _rowRange, const Range& _colRange ) const +{ + return Mat_<_Tp>(*this, _rowRange, _colRange); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::operator()( const Rect& roi ) const +{ + return Mat_<_Tp>(*this, roi); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::operator()( const Range* ranges ) const +{ + return Mat_<_Tp>(*this, ranges); +} + +template inline +Mat_<_Tp> Mat_<_Tp>::operator()(const std::vector& ranges) const +{ + return Mat_<_Tp>(*this, ranges); +} + +template inline +_Tp* Mat_<_Tp>::operator [](int y) +{ + CV_DbgAssert( 0 <= y && y < size.p[0] ); + return (_Tp*)(data + y*step.p[0]); +} + +template inline +const _Tp* Mat_<_Tp>::operator [](int y) const +{ + CV_DbgAssert( 0 <= y && y < size.p[0] ); + return (const _Tp*)(data + y*step.p[0]); +} + +template inline +_Tp& Mat_<_Tp>::operator ()(int i0, int i1) +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert(type() == traits::Type<_Tp>::value); + return ((_Tp*)(data + step.p[0] * i0))[i1]; +} + +template inline +const _Tp& Mat_<_Tp>::operator ()(int i0, int i1) const +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]); + CV_DbgAssert(type() == traits::Type<_Tp>::value); + return ((const _Tp*)(data + step.p[0] * i0))[i1]; +} + +template inline +_Tp& Mat_<_Tp>::operator ()(Point pt) +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)pt.y < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)pt.x < (unsigned)size.p[1]); + CV_DbgAssert(type() == traits::Type<_Tp>::value); + return ((_Tp*)(data + step.p[0] * pt.y))[pt.x]; +} + +template inline +const _Tp& Mat_<_Tp>::operator ()(Point pt) const +{ + CV_DbgAssert(dims <= 2); + CV_DbgAssert(data); + CV_DbgAssert((unsigned)pt.y < (unsigned)size.p[0]); + CV_DbgAssert((unsigned)pt.x < (unsigned)size.p[1]); + CV_DbgAssert(type() == traits::Type<_Tp>::value); + return ((const _Tp*)(data + step.p[0] * pt.y))[pt.x]; +} + +template inline +_Tp& Mat_<_Tp>::operator ()(const int* idx) +{ + return Mat::at<_Tp>(idx); +} + +template inline +const _Tp& Mat_<_Tp>::operator ()(const int* idx) const +{ + return Mat::at<_Tp>(idx); +} + +template template inline +_Tp& Mat_<_Tp>::operator ()(const Vec& idx) +{ + return Mat::at<_Tp>(idx); +} + +template template inline +const _Tp& Mat_<_Tp>::operator ()(const Vec& idx) const +{ + return Mat::at<_Tp>(idx); +} + +template inline +_Tp& Mat_<_Tp>::operator ()(int i0) +{ + return this->at<_Tp>(i0); +} + +template inline +const _Tp& Mat_<_Tp>::operator ()(int i0) const +{ + return this->at<_Tp>(i0); +} + +template inline +_Tp& Mat_<_Tp>::operator ()(int i0, int i1, int i2) +{ + return this->at<_Tp>(i0, i1, i2); +} + +template inline +const _Tp& Mat_<_Tp>::operator ()(int i0, int i1, int i2) const +{ + return this->at<_Tp>(i0, i1, i2); +} + +template inline +Mat_<_Tp>::operator std::vector<_Tp>() const +{ + std::vector<_Tp> v; + copyTo(v); + return v; +} + +template template inline +Mat_<_Tp>::operator std::array<_Tp, _Nm>() const +{ + std::array<_Tp, _Nm> a; + copyTo(a); + return a; +} + +template template inline +Mat_<_Tp>::operator Vec::channel_type, n>() const +{ + CV_Assert(n % DataType<_Tp>::channels == 0); + +#if defined _MSC_VER + const Mat* pMat = (const Mat*)this; // workaround for MSVS <= 2012 compiler bugs (but GCC 4.6 dislikes this workaround) + return pMat->operator Vec::channel_type, n>(); +#else + return this->Mat::operator Vec::channel_type, n>(); +#endif +} + +template template inline +Mat_<_Tp>::operator Matx::channel_type, m, n>() const +{ + CV_Assert(n % DataType<_Tp>::channels == 0); + +#if defined _MSC_VER + const Mat* pMat = (const Mat*)this; // workaround for MSVS <= 2012 compiler bugs (but GCC 4.6 dislikes this workaround) + Matx::channel_type, m, n> res = pMat->operator Matx::channel_type, m, n>(); + return res; +#else + Matx::channel_type, m, n> res = this->Mat::operator Matx::channel_type, m, n>(); + return res; +#endif +} + +template inline +MatConstIterator_<_Tp> Mat_<_Tp>::begin() const +{ + return Mat::begin<_Tp>(); +} + +template inline +MatConstIterator_<_Tp> Mat_<_Tp>::end() const +{ + return Mat::end<_Tp>(); +} + +template inline +MatIterator_<_Tp> Mat_<_Tp>::begin() +{ + return Mat::begin<_Tp>(); +} + +template inline +MatIterator_<_Tp> Mat_<_Tp>::end() +{ + return Mat::end<_Tp>(); +} + +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) { + Mat::forEach<_Tp, Functor>(operation); +} + +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) const { + Mat::forEach<_Tp, Functor>(operation); +} + +template inline +Mat_<_Tp>::Mat_(Mat_&& m) + : Mat(m) +{ +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (Mat_&& m) +{ + Mat::operator = (std::move(m)); + return *this; +} + +template inline +Mat_<_Tp>::Mat_(Mat&& m) + : Mat() +{ + flags = (flags & ~CV_MAT_TYPE_MASK) + traits::Type<_Tp>::value; + *this = m; +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (Mat&& m) +{ + if( traits::Type<_Tp>::value == m.type() ) + { + Mat::operator = ((Mat&&)m); + return *this; + } + if( traits::Depth<_Tp>::value == m.depth() ) + { + Mat::operator = ((Mat&&)m.reshape(DataType<_Tp>::channels, m.dims, 0)); + return *this; + } + CV_DbgAssert(DataType<_Tp>::channels == m.channels()); + m.convertTo(*this, type()); + return *this; +} + +template inline +Mat_<_Tp>::Mat_(MatExpr&& e) + : Mat() +{ + flags = (flags & ~CV_MAT_TYPE_MASK) + traits::Type<_Tp>::value; + *this = Mat(e); +} + + +///////////////////////////// SparseMat ///////////////////////////// + +inline +SparseMat::SparseMat() + : flags(MAGIC_VAL), hdr(0) +{} + +inline +SparseMat::SparseMat(int _dims, const int* _sizes, int _type) + : flags(MAGIC_VAL), hdr(0) +{ + create(_dims, _sizes, _type); +} + +inline +SparseMat::SparseMat(const SparseMat& m) + : flags(m.flags), hdr(m.hdr) +{ + addref(); +} + +inline +SparseMat::~SparseMat() +{ + release(); +} + +inline +SparseMat& SparseMat::operator = (const SparseMat& m) +{ + if( this != &m ) + { + if( m.hdr ) + CV_XADD(&m.hdr->refcount, 1); + release(); + flags = m.flags; + hdr = m.hdr; + } + return *this; +} + +inline +SparseMat& SparseMat::operator = (const Mat& m) +{ + return (*this = SparseMat(m)); +} + +inline +SparseMat SparseMat::clone() const +{ + SparseMat temp; + this->copyTo(temp); + return temp; +} + +inline +void SparseMat::assignTo( SparseMat& m, int _type ) const +{ + if( _type < 0 ) + m = *this; + else + convertTo(m, _type); +} + +inline +void SparseMat::addref() +{ + if( hdr ) + CV_XADD(&hdr->refcount, 1); +} + +inline +void SparseMat::release() +{ + if( hdr && CV_XADD(&hdr->refcount, -1) == 1 ) + delete hdr; + hdr = 0; +} + +inline +size_t SparseMat::elemSize() const +{ + return CV_ELEM_SIZE(flags); +} + +inline +size_t SparseMat::elemSize1() const +{ + return CV_ELEM_SIZE1(flags); +} + +inline +int SparseMat::type() const +{ + return CV_MAT_TYPE(flags); +} + +inline +int SparseMat::depth() const +{ + return CV_MAT_DEPTH(flags); +} + +inline +int SparseMat::channels() const +{ + return CV_MAT_CN(flags); +} + +inline +const int* SparseMat::size() const +{ + return hdr ? hdr->size : 0; +} + +inline +int SparseMat::size(int i) const +{ + if( hdr ) + { + CV_DbgAssert((unsigned)i < (unsigned)hdr->dims); + return hdr->size[i]; + } + return 0; +} + +inline +int SparseMat::dims() const +{ + return hdr ? hdr->dims : 0; +} + +inline +size_t SparseMat::nzcount() const +{ + return hdr ? hdr->nodeCount : 0; +} + +inline +size_t SparseMat::hash(int i0) const +{ + return (size_t)i0; +} + +inline +size_t SparseMat::hash(int i0, int i1) const +{ + return (size_t)(unsigned)i0 * HASH_SCALE + (unsigned)i1; +} + +inline +size_t SparseMat::hash(int i0, int i1, int i2) const +{ + return ((size_t)(unsigned)i0 * HASH_SCALE + (unsigned)i1) * HASH_SCALE + (unsigned)i2; +} + +inline +size_t SparseMat::hash(const int* idx) const +{ + size_t h = (unsigned)idx[0]; + if( !hdr ) + return 0; + int d = hdr->dims; + for(int i = 1; i < d; i++ ) + h = h * HASH_SCALE + (unsigned)idx[i]; + return h; +} + +template inline +_Tp& SparseMat::ref(int i0, size_t* hashval) +{ + return *(_Tp*)((SparseMat*)this)->ptr(i0, true, hashval); +} + +template inline +_Tp& SparseMat::ref(int i0, int i1, size_t* hashval) +{ + return *(_Tp*)((SparseMat*)this)->ptr(i0, i1, true, hashval); +} + +template inline +_Tp& SparseMat::ref(int i0, int i1, int i2, size_t* hashval) +{ + return *(_Tp*)((SparseMat*)this)->ptr(i0, i1, i2, true, hashval); +} + +template inline +_Tp& SparseMat::ref(const int* idx, size_t* hashval) +{ + return *(_Tp*)((SparseMat*)this)->ptr(idx, true, hashval); +} + +template inline +_Tp SparseMat::value(int i0, size_t* hashval) const +{ + const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, false, hashval); + return p ? *p : _Tp(); +} + +template inline +_Tp SparseMat::value(int i0, int i1, size_t* hashval) const +{ + const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, i1, false, hashval); + return p ? *p : _Tp(); +} + +template inline +_Tp SparseMat::value(int i0, int i1, int i2, size_t* hashval) const +{ + const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(i0, i1, i2, false, hashval); + return p ? *p : _Tp(); +} + +template inline +_Tp SparseMat::value(const int* idx, size_t* hashval) const +{ + const _Tp* p = (const _Tp*)((SparseMat*)this)->ptr(idx, false, hashval); + return p ? *p : _Tp(); +} + +template inline +const _Tp* SparseMat::find(int i0, size_t* hashval) const +{ + return (const _Tp*)((SparseMat*)this)->ptr(i0, false, hashval); +} + +template inline +const _Tp* SparseMat::find(int i0, int i1, size_t* hashval) const +{ + return (const _Tp*)((SparseMat*)this)->ptr(i0, i1, false, hashval); +} + +template inline +const _Tp* SparseMat::find(int i0, int i1, int i2, size_t* hashval) const +{ + return (const _Tp*)((SparseMat*)this)->ptr(i0, i1, i2, false, hashval); +} + +template inline +const _Tp* SparseMat::find(const int* idx, size_t* hashval) const +{ + return (const _Tp*)((SparseMat*)this)->ptr(idx, false, hashval); +} + +template inline +_Tp& SparseMat::value(Node* n) +{ + return *(_Tp*)((uchar*)n + hdr->valueOffset); +} + +template inline +const _Tp& SparseMat::value(const Node* n) const +{ + return *(const _Tp*)((const uchar*)n + hdr->valueOffset); +} + +inline +SparseMat::Node* SparseMat::node(size_t nidx) +{ + return (Node*)(void*)&hdr->pool[nidx]; +} + +inline +const SparseMat::Node* SparseMat::node(size_t nidx) const +{ + return (const Node*)(const void*)&hdr->pool[nidx]; +} + +inline +SparseMatIterator SparseMat::begin() +{ + return SparseMatIterator(this); +} + +inline +SparseMatConstIterator SparseMat::begin() const +{ + return SparseMatConstIterator(this); +} + +inline +SparseMatIterator SparseMat::end() +{ + SparseMatIterator it(this); + it.seekEnd(); + return it; +} + +inline +SparseMatConstIterator SparseMat::end() const +{ + SparseMatConstIterator it(this); + it.seekEnd(); + return it; +} + +template inline +SparseMatIterator_<_Tp> SparseMat::begin() +{ + return SparseMatIterator_<_Tp>(this); +} + +template inline +SparseMatConstIterator_<_Tp> SparseMat::begin() const +{ + return SparseMatConstIterator_<_Tp>(this); +} + +template inline +SparseMatIterator_<_Tp> SparseMat::end() +{ + SparseMatIterator_<_Tp> it(this); + it.seekEnd(); + return it; +} + +template inline +SparseMatConstIterator_<_Tp> SparseMat::end() const +{ + SparseMatConstIterator_<_Tp> it(this); + it.seekEnd(); + return it; +} + + + +///////////////////////////// SparseMat_ //////////////////////////// + +template inline +SparseMat_<_Tp>::SparseMat_() +{ + flags = MAGIC_VAL + traits::Type<_Tp>::value; +} + +template inline +SparseMat_<_Tp>::SparseMat_(int _dims, const int* _sizes) + : SparseMat(_dims, _sizes, traits::Type<_Tp>::value) +{} + +template inline +SparseMat_<_Tp>::SparseMat_(const SparseMat& m) +{ + if( m.type() == traits::Type<_Tp>::value ) + *this = (const SparseMat_<_Tp>&)m; + else + m.convertTo(*this, traits::Type<_Tp>::value); +} + +template inline +SparseMat_<_Tp>::SparseMat_(const SparseMat_<_Tp>& m) +{ + this->flags = m.flags; + this->hdr = m.hdr; + if( this->hdr ) + CV_XADD(&this->hdr->refcount, 1); +} + +template inline +SparseMat_<_Tp>::SparseMat_(const Mat& m) +{ + SparseMat sm(m); + *this = sm; +} + +template inline +SparseMat_<_Tp>& SparseMat_<_Tp>::operator = (const SparseMat_<_Tp>& m) +{ + if( this != &m ) + { + if( m.hdr ) CV_XADD(&m.hdr->refcount, 1); + release(); + flags = m.flags; + hdr = m.hdr; + } + return *this; +} + +template inline +SparseMat_<_Tp>& SparseMat_<_Tp>::operator = (const SparseMat& m) +{ + if( m.type() == traits::Type<_Tp>::value ) + return (*this = (const SparseMat_<_Tp>&)m); + m.convertTo(*this, traits::Type<_Tp>::value); + return *this; +} + +template inline +SparseMat_<_Tp>& SparseMat_<_Tp>::operator = (const Mat& m) +{ + return (*this = SparseMat(m)); +} + +template inline +SparseMat_<_Tp> SparseMat_<_Tp>::clone() const +{ + SparseMat_<_Tp> m; + this->copyTo(m); + return m; +} + +template inline +void SparseMat_<_Tp>::create(int _dims, const int* _sizes) +{ + SparseMat::create(_dims, _sizes, traits::Type<_Tp>::value); +} + +template inline +int SparseMat_<_Tp>::type() const +{ + return traits::Type<_Tp>::value; +} + +template inline +int SparseMat_<_Tp>::depth() const +{ + return traits::Depth<_Tp>::value; +} + +template inline +int SparseMat_<_Tp>::channels() const +{ + return DataType<_Tp>::channels; +} + +template inline +_Tp& SparseMat_<_Tp>::ref(int i0, size_t* hashval) +{ + return SparseMat::ref<_Tp>(i0, hashval); +} + +template inline +_Tp SparseMat_<_Tp>::operator()(int i0, size_t* hashval) const +{ + return SparseMat::value<_Tp>(i0, hashval); +} + +template inline +_Tp& SparseMat_<_Tp>::ref(int i0, int i1, size_t* hashval) +{ + return SparseMat::ref<_Tp>(i0, i1, hashval); +} + +template inline +_Tp SparseMat_<_Tp>::operator()(int i0, int i1, size_t* hashval) const +{ + return SparseMat::value<_Tp>(i0, i1, hashval); +} + +template inline +_Tp& SparseMat_<_Tp>::ref(int i0, int i1, int i2, size_t* hashval) +{ + return SparseMat::ref<_Tp>(i0, i1, i2, hashval); +} + +template inline +_Tp SparseMat_<_Tp>::operator()(int i0, int i1, int i2, size_t* hashval) const +{ + return SparseMat::value<_Tp>(i0, i1, i2, hashval); +} + +template inline +_Tp& SparseMat_<_Tp>::ref(const int* idx, size_t* hashval) +{ + return SparseMat::ref<_Tp>(idx, hashval); +} + +template inline +_Tp SparseMat_<_Tp>::operator()(const int* idx, size_t* hashval) const +{ + return SparseMat::value<_Tp>(idx, hashval); +} + +template inline +SparseMatIterator_<_Tp> SparseMat_<_Tp>::begin() +{ + return SparseMatIterator_<_Tp>(this); +} + +template inline +SparseMatConstIterator_<_Tp> SparseMat_<_Tp>::begin() const +{ + return SparseMatConstIterator_<_Tp>(this); +} + +template inline +SparseMatIterator_<_Tp> SparseMat_<_Tp>::end() +{ + SparseMatIterator_<_Tp> it(this); + it.seekEnd(); + return it; +} + +template inline +SparseMatConstIterator_<_Tp> SparseMat_<_Tp>::end() const +{ + SparseMatConstIterator_<_Tp> it(this); + it.seekEnd(); + return it; +} + + + +////////////////////////// MatConstIterator ///////////////////////// + +inline +MatConstIterator::MatConstIterator() + : m(0), elemSize(0), ptr(0), sliceStart(0), sliceEnd(0) +{} + +inline +MatConstIterator::MatConstIterator(const Mat* _m) + : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0) +{ + if( m && m->isContinuous() ) + { + sliceStart = m->ptr(); + sliceEnd = sliceStart + m->total()*elemSize; + } + seek((const int*)0); +} + +inline +MatConstIterator::MatConstIterator(const Mat* _m, int _row, int _col) + : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0) +{ + CV_Assert(m && m->dims <= 2); + if( m->isContinuous() ) + { + sliceStart = m->ptr(); + sliceEnd = sliceStart + m->total()*elemSize; + } + int idx[] = {_row, _col}; + seek(idx); +} + +inline +MatConstIterator::MatConstIterator(const Mat* _m, Point _pt) + : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0) +{ + CV_Assert(m && m->dims <= 2); + if( m->isContinuous() ) + { + sliceStart = m->ptr(); + sliceEnd = sliceStart + m->total()*elemSize; + } + int idx[] = {_pt.y, _pt.x}; + seek(idx); +} + +inline +MatConstIterator::MatConstIterator(const MatConstIterator& it) + : m(it.m), elemSize(it.elemSize), ptr(it.ptr), sliceStart(it.sliceStart), sliceEnd(it.sliceEnd) +{} + +inline +MatConstIterator& MatConstIterator::operator = (const MatConstIterator& it ) +{ + m = it.m; elemSize = it.elemSize; ptr = it.ptr; + sliceStart = it.sliceStart; sliceEnd = it.sliceEnd; + return *this; +} + +inline +const uchar* MatConstIterator::operator *() const +{ + return ptr; +} + +inline MatConstIterator& MatConstIterator::operator += (ptrdiff_t ofs) +{ + if( !m || ofs == 0 ) + return *this; + ptrdiff_t ofsb = ofs*elemSize; + ptr += ofsb; + if( ptr < sliceStart || sliceEnd <= ptr ) + { + ptr -= ofsb; + seek(ofs, true); + } + return *this; +} + +inline +MatConstIterator& MatConstIterator::operator -= (ptrdiff_t ofs) +{ + return (*this += -ofs); +} + +inline +MatConstIterator& MatConstIterator::operator --() +{ + if( m && (ptr -= elemSize) < sliceStart ) + { + ptr += elemSize; + seek(-1, true); + } + return *this; +} + +inline +MatConstIterator MatConstIterator::operator --(int) +{ + MatConstIterator b = *this; + *this += -1; + return b; +} + +inline +MatConstIterator& MatConstIterator::operator ++() +{ + if( m && (ptr += elemSize) >= sliceEnd ) + { + ptr -= elemSize; + seek(1, true); + } + return *this; +} + +inline MatConstIterator MatConstIterator::operator ++(int) +{ + MatConstIterator b = *this; + *this += 1; + return b; +} + + +static inline +bool operator == (const MatConstIterator& a, const MatConstIterator& b) +{ + return a.m == b.m && a.ptr == b.ptr; +} + +static inline +bool operator != (const MatConstIterator& a, const MatConstIterator& b) +{ + return !(a == b); +} + +static inline +bool operator < (const MatConstIterator& a, const MatConstIterator& b) +{ + return a.ptr < b.ptr; +} + +static inline +bool operator > (const MatConstIterator& a, const MatConstIterator& b) +{ + return a.ptr > b.ptr; +} + +static inline +bool operator <= (const MatConstIterator& a, const MatConstIterator& b) +{ + return a.ptr <= b.ptr; +} + +static inline +bool operator >= (const MatConstIterator& a, const MatConstIterator& b) +{ + return a.ptr >= b.ptr; +} + +static inline +ptrdiff_t operator - (const MatConstIterator& b, const MatConstIterator& a) +{ + if( a.m != b.m ) + return ((size_t)(-1) >> 1); + if( a.sliceEnd == b.sliceEnd ) + return (b.ptr - a.ptr)/static_cast(b.elemSize); + + return b.lpos() - a.lpos(); +} + +static inline +MatConstIterator operator + (const MatConstIterator& a, ptrdiff_t ofs) +{ + MatConstIterator b = a; + return b += ofs; +} + +static inline +MatConstIterator operator + (ptrdiff_t ofs, const MatConstIterator& a) +{ + MatConstIterator b = a; + return b += ofs; +} + +static inline +MatConstIterator operator - (const MatConstIterator& a, ptrdiff_t ofs) +{ + MatConstIterator b = a; + return b += -ofs; +} + + +inline +const uchar* MatConstIterator::operator [](ptrdiff_t i) const +{ + return *(*this + i); +} + + + +///////////////////////// MatConstIterator_ ///////////////////////// + +template inline +MatConstIterator_<_Tp>::MatConstIterator_() +{} + +template inline +MatConstIterator_<_Tp>::MatConstIterator_(const Mat_<_Tp>* _m) + : MatConstIterator(_m) +{} + +template inline +MatConstIterator_<_Tp>::MatConstIterator_(const Mat_<_Tp>* _m, int _row, int _col) + : MatConstIterator(_m, _row, _col) +{} + +template inline +MatConstIterator_<_Tp>::MatConstIterator_(const Mat_<_Tp>* _m, Point _pt) + : MatConstIterator(_m, _pt) +{} + +template inline +MatConstIterator_<_Tp>::MatConstIterator_(const MatConstIterator_& it) + : MatConstIterator(it) +{} + +template inline +MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator = (const MatConstIterator_& it ) +{ + MatConstIterator::operator = (it); + return *this; +} + +template inline +const _Tp& MatConstIterator_<_Tp>::operator *() const +{ + return *(_Tp*)(this->ptr); +} + +template inline +MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator += (ptrdiff_t ofs) +{ + MatConstIterator::operator += (ofs); + return *this; +} + +template inline +MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator -= (ptrdiff_t ofs) +{ + return (*this += -ofs); +} + +template inline +MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator --() +{ + MatConstIterator::operator --(); + return *this; +} + +template inline +MatConstIterator_<_Tp> MatConstIterator_<_Tp>::operator --(int) +{ + MatConstIterator_ b = *this; + MatConstIterator::operator --(); + return b; +} + +template inline +MatConstIterator_<_Tp>& MatConstIterator_<_Tp>::operator ++() +{ + MatConstIterator::operator ++(); + return *this; +} + +template inline +MatConstIterator_<_Tp> MatConstIterator_<_Tp>::operator ++(int) +{ + MatConstIterator_ b = *this; + MatConstIterator::operator ++(); + return b; +} + + +template inline +Point MatConstIterator_<_Tp>::pos() const +{ + if( !m ) + return Point(); + CV_DbgAssert( m->dims <= 2 ); + if( m->isContinuous() ) + { + ptrdiff_t ofs = (const _Tp*)ptr - (const _Tp*)m->data; + int y = (int)(ofs / m->cols); + int x = (int)(ofs - (ptrdiff_t)y * m->cols); + return Point(x, y); + } + else + { + ptrdiff_t ofs = (uchar*)ptr - m->data; + int y = (int)(ofs / m->step); + int x = (int)((ofs - y * m->step)/sizeof(_Tp)); + return Point(x, y); + } +} + + +template static inline +bool operator == (const MatConstIterator_<_Tp>& a, const MatConstIterator_<_Tp>& b) +{ + return a.m == b.m && a.ptr == b.ptr; +} + +template static inline +bool operator != (const MatConstIterator_<_Tp>& a, const MatConstIterator_<_Tp>& b) +{ + return a.m != b.m || a.ptr != b.ptr; +} + +template static inline +MatConstIterator_<_Tp> operator + (const MatConstIterator_<_Tp>& a, ptrdiff_t ofs) +{ + MatConstIterator t = (const MatConstIterator&)a + ofs; + return (MatConstIterator_<_Tp>&)t; +} + +template static inline +MatConstIterator_<_Tp> operator + (ptrdiff_t ofs, const MatConstIterator_<_Tp>& a) +{ + MatConstIterator t = (const MatConstIterator&)a + ofs; + return (MatConstIterator_<_Tp>&)t; +} + +template static inline +MatConstIterator_<_Tp> operator - (const MatConstIterator_<_Tp>& a, ptrdiff_t ofs) +{ + MatConstIterator t = (const MatConstIterator&)a - ofs; + return (MatConstIterator_<_Tp>&)t; +} + +template inline +const _Tp& MatConstIterator_<_Tp>::operator [](ptrdiff_t i) const +{ + return *(_Tp*)MatConstIterator::operator [](i); +} + + + +//////////////////////////// MatIterator_ /////////////////////////// + +template inline +MatIterator_<_Tp>::MatIterator_() + : MatConstIterator_<_Tp>() +{} + +template inline +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m) + : MatConstIterator_<_Tp>(_m) +{} + +template inline +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, int _row, int _col) + : MatConstIterator_<_Tp>(_m, _row, _col) +{} + +template inline +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, Point _pt) + : MatConstIterator_<_Tp>(_m, _pt) +{} + +template inline +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, const int* _idx) + : MatConstIterator_<_Tp>(_m, _idx) +{} + +template inline +MatIterator_<_Tp>::MatIterator_(const MatIterator_& it) + : MatConstIterator_<_Tp>(it) +{} + +template inline +MatIterator_<_Tp>& MatIterator_<_Tp>::operator = (const MatIterator_<_Tp>& it ) +{ + MatConstIterator::operator = (it); + return *this; +} + +template inline +_Tp& MatIterator_<_Tp>::operator *() const +{ + return *(_Tp*)(this->ptr); +} + +template inline +MatIterator_<_Tp>& MatIterator_<_Tp>::operator += (ptrdiff_t ofs) +{ + MatConstIterator::operator += (ofs); + return *this; +} + +template inline +MatIterator_<_Tp>& MatIterator_<_Tp>::operator -= (ptrdiff_t ofs) +{ + MatConstIterator::operator += (-ofs); + return *this; +} + +template inline +MatIterator_<_Tp>& MatIterator_<_Tp>::operator --() +{ + MatConstIterator::operator --(); + return *this; +} + +template inline +MatIterator_<_Tp> MatIterator_<_Tp>::operator --(int) +{ + MatIterator_ b = *this; + MatConstIterator::operator --(); + return b; +} + +template inline +MatIterator_<_Tp>& MatIterator_<_Tp>::operator ++() +{ + MatConstIterator::operator ++(); + return *this; +} + +template inline +MatIterator_<_Tp> MatIterator_<_Tp>::operator ++(int) +{ + MatIterator_ b = *this; + MatConstIterator::operator ++(); + return b; +} + +template inline +_Tp& MatIterator_<_Tp>::operator [](ptrdiff_t i) const +{ + return *(*this + i); +} + + +template static inline +bool operator == (const MatIterator_<_Tp>& a, const MatIterator_<_Tp>& b) +{ + return a.m == b.m && a.ptr == b.ptr; +} + +template static inline +bool operator != (const MatIterator_<_Tp>& a, const MatIterator_<_Tp>& b) +{ + return a.m != b.m || a.ptr != b.ptr; +} + +template static inline +MatIterator_<_Tp> operator + (const MatIterator_<_Tp>& a, ptrdiff_t ofs) +{ + MatConstIterator t = (const MatConstIterator&)a + ofs; + return (MatIterator_<_Tp>&)t; +} + +template static inline +MatIterator_<_Tp> operator + (ptrdiff_t ofs, const MatIterator_<_Tp>& a) +{ + MatConstIterator t = (const MatConstIterator&)a + ofs; + return (MatIterator_<_Tp>&)t; +} + +template static inline +MatIterator_<_Tp> operator - (const MatIterator_<_Tp>& a, ptrdiff_t ofs) +{ + MatConstIterator t = (const MatConstIterator&)a - ofs; + return (MatIterator_<_Tp>&)t; +} + + + +/////////////////////// SparseMatConstIterator ////////////////////// + +inline +SparseMatConstIterator::SparseMatConstIterator() + : m(0), hashidx(0), ptr(0) +{} + +inline +SparseMatConstIterator::SparseMatConstIterator(const SparseMatConstIterator& it) + : m(it.m), hashidx(it.hashidx), ptr(it.ptr) +{} + +inline SparseMatConstIterator& SparseMatConstIterator::operator = (const SparseMatConstIterator& it) +{ + if( this != &it ) + { + m = it.m; + hashidx = it.hashidx; + ptr = it.ptr; + } + return *this; +} + +template inline +const _Tp& SparseMatConstIterator::value() const +{ + return *(const _Tp*)ptr; +} + +inline +const SparseMat::Node* SparseMatConstIterator::node() const +{ + return (ptr && m && m->hdr) ? (const SparseMat::Node*)(const void*)(ptr - m->hdr->valueOffset) : 0; +} + +inline +SparseMatConstIterator SparseMatConstIterator::operator ++(int) +{ + SparseMatConstIterator it = *this; + ++*this; + return it; +} + +inline +void SparseMatConstIterator::seekEnd() +{ + if( m && m->hdr ) + { + hashidx = m->hdr->hashtab.size(); + ptr = 0; + } +} + + +static inline +bool operator == (const SparseMatConstIterator& it1, const SparseMatConstIterator& it2) +{ + return it1.m == it2.m && it1.ptr == it2.ptr; +} + +static inline +bool operator != (const SparseMatConstIterator& it1, const SparseMatConstIterator& it2) +{ + return !(it1 == it2); +} + + + +///////////////////////// SparseMatIterator ///////////////////////// + +inline +SparseMatIterator::SparseMatIterator() +{} + +inline +SparseMatIterator::SparseMatIterator(SparseMat* _m) + : SparseMatConstIterator(_m) +{} + +inline +SparseMatIterator::SparseMatIterator(const SparseMatIterator& it) + : SparseMatConstIterator(it) +{} + +inline +SparseMatIterator& SparseMatIterator::operator = (const SparseMatIterator& it) +{ + (SparseMatConstIterator&)*this = it; + return *this; +} + +template inline +_Tp& SparseMatIterator::value() const +{ + return *(_Tp*)ptr; +} + +inline +SparseMat::Node* SparseMatIterator::node() const +{ + return (SparseMat::Node*)SparseMatConstIterator::node(); +} + +inline +SparseMatIterator& SparseMatIterator::operator ++() +{ + SparseMatConstIterator::operator ++(); + return *this; +} + +inline +SparseMatIterator SparseMatIterator::operator ++(int) +{ + SparseMatIterator it = *this; + ++*this; + return it; +} + + + +////////////////////// SparseMatConstIterator_ ////////////////////// + +template inline +SparseMatConstIterator_<_Tp>::SparseMatConstIterator_() +{} + +template inline +SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMat_<_Tp>* _m) + : SparseMatConstIterator(_m) +{} + +template inline +SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMat* _m) + : SparseMatConstIterator(_m) +{ + CV_Assert( _m->type() == traits::Type<_Tp>::value ); +} + +template inline +SparseMatConstIterator_<_Tp>::SparseMatConstIterator_(const SparseMatConstIterator_<_Tp>& it) + : SparseMatConstIterator(it) +{} + +template inline +SparseMatConstIterator_<_Tp>& SparseMatConstIterator_<_Tp>::operator = (const SparseMatConstIterator_<_Tp>& it) +{ + return reinterpret_cast&> + (*reinterpret_cast(this) = + reinterpret_cast(it)); +} + +template inline +const _Tp& SparseMatConstIterator_<_Tp>::operator *() const +{ + return *(const _Tp*)this->ptr; +} + +template inline +SparseMatConstIterator_<_Tp>& SparseMatConstIterator_<_Tp>::operator ++() +{ + SparseMatConstIterator::operator ++(); + return *this; +} + +template inline +SparseMatConstIterator_<_Tp> SparseMatConstIterator_<_Tp>::operator ++(int) +{ + SparseMatConstIterator_<_Tp> it = *this; + SparseMatConstIterator::operator ++(); + return it; +} + + + +///////////////////////// SparseMatIterator_ //////////////////////// + +template inline +SparseMatIterator_<_Tp>::SparseMatIterator_() +{} + +template inline +SparseMatIterator_<_Tp>::SparseMatIterator_(SparseMat_<_Tp>* _m) + : SparseMatConstIterator_<_Tp>(_m) +{} + +template inline +SparseMatIterator_<_Tp>::SparseMatIterator_(SparseMat* _m) + : SparseMatConstIterator_<_Tp>(_m) +{} + +template inline +SparseMatIterator_<_Tp>::SparseMatIterator_(const SparseMatIterator_<_Tp>& it) + : SparseMatConstIterator_<_Tp>(it) +{} + +template inline +SparseMatIterator_<_Tp>& SparseMatIterator_<_Tp>::operator = (const SparseMatIterator_<_Tp>& it) +{ + return reinterpret_cast&> + (*reinterpret_cast(this) = + reinterpret_cast(it)); +} + +template inline +_Tp& SparseMatIterator_<_Tp>::operator *() const +{ + return *(_Tp*)this->ptr; +} + +template inline +SparseMatIterator_<_Tp>& SparseMatIterator_<_Tp>::operator ++() +{ + SparseMatConstIterator::operator ++(); + return *this; +} + +template inline +SparseMatIterator_<_Tp> SparseMatIterator_<_Tp>::operator ++(int) +{ + SparseMatIterator_<_Tp> it = *this; + SparseMatConstIterator::operator ++(); + return it; +} + + + +//////////////////////// MatCommaInitializer_ /////////////////////// + +template inline +MatCommaInitializer_<_Tp>::MatCommaInitializer_(Mat_<_Tp>* _m) + : it(_m) +{} + +template template inline +MatCommaInitializer_<_Tp>& MatCommaInitializer_<_Tp>::operator , (T2 v) +{ + CV_DbgAssert( this->it < ((const Mat_<_Tp>*)this->it.m)->end() ); + *this->it = _Tp(v); + ++this->it; + return *this; +} + +template inline +MatCommaInitializer_<_Tp>::operator Mat_<_Tp>() const +{ + CV_DbgAssert( this->it == ((const Mat_<_Tp>*)this->it.m)->end() ); + return Mat_<_Tp>(*this->it.m); +} + + +template static inline +MatCommaInitializer_<_Tp> operator << (const Mat_<_Tp>& m, T2 val) +{ + MatCommaInitializer_<_Tp> commaInitializer((Mat_<_Tp>*)&m); + return (commaInitializer, val); +} + + + +///////////////////////// Matrix Expressions //////////////////////// + +inline +Mat& Mat::operator = (const MatExpr& e) +{ + e.op->assign(e, *this); + return *this; +} + +template inline +Mat_<_Tp>::Mat_(const MatExpr& e) +{ + e.op->assign(e, *this, traits::Type<_Tp>::value); +} + +template inline +Mat_<_Tp>& Mat_<_Tp>::operator = (const MatExpr& e) +{ + e.op->assign(e, *this, traits::Type<_Tp>::value); + return *this; +} + +template inline +MatExpr Mat_<_Tp>::zeros(int rows, int cols) +{ + return Mat::zeros(rows, cols, traits::Type<_Tp>::value); +} + +template inline +MatExpr Mat_<_Tp>::zeros(Size sz) +{ + return Mat::zeros(sz, traits::Type<_Tp>::value); +} + +template inline +MatExpr Mat_<_Tp>::ones(int rows, int cols) +{ + return Mat::ones(rows, cols, traits::Type<_Tp>::value); +} + +template inline +MatExpr Mat_<_Tp>::ones(Size sz) +{ + return Mat::ones(sz, traits::Type<_Tp>::value); +} + +template inline +MatExpr Mat_<_Tp>::eye(int rows, int cols) +{ + return Mat::eye(rows, cols, traits::Type<_Tp>::value); +} + +template inline +MatExpr Mat_<_Tp>::eye(Size sz) +{ + return Mat::eye(sz, traits::Type<_Tp>::value); +} + +inline +MatExpr::MatExpr() + : op(0), flags(0), a(Mat()), b(Mat()), c(Mat()), alpha(0), beta(0), s() +{} + +inline +MatExpr::MatExpr(const MatOp* _op, int _flags, const Mat& _a, const Mat& _b, + const Mat& _c, double _alpha, double _beta, const Scalar& _s) + : op(_op), flags(_flags), a(_a), b(_b), c(_c), alpha(_alpha), beta(_beta), s(_s) +{} + +inline +MatExpr::operator Mat() const +{ + Mat m; + op->assign(*this, m); + return m; +} + +template inline +MatExpr::operator Mat_<_Tp>() const +{ + Mat_<_Tp> m; + op->assign(*this, m, traits::Type<_Tp>::value); + return m; +} + + +template static inline +MatExpr min(const Mat_<_Tp>& a, const Mat_<_Tp>& b) +{ + return cv::min((const Mat&)a, (const Mat&)b); +} + +template static inline +MatExpr min(const Mat_<_Tp>& a, double s) +{ + return cv::min((const Mat&)a, s); +} + +template static inline +MatExpr min(double s, const Mat_<_Tp>& a) +{ + return cv::min((const Mat&)a, s); +} + +template static inline +MatExpr max(const Mat_<_Tp>& a, const Mat_<_Tp>& b) +{ + return cv::max((const Mat&)a, (const Mat&)b); +} + +template static inline +MatExpr max(const Mat_<_Tp>& a, double s) +{ + return cv::max((const Mat&)a, s); +} + +template static inline +MatExpr max(double s, const Mat_<_Tp>& a) +{ + return cv::max((const Mat&)a, s); +} + +template static inline +MatExpr abs(const Mat_<_Tp>& m) +{ + return cv::abs((const Mat&)m); +} + + +static inline +Mat& operator += (Mat& a, const MatExpr& b) +{ + b.op->augAssignAdd(b, a); + return a; +} + +static inline +const Mat& operator += (const Mat& a, const MatExpr& b) +{ + b.op->augAssignAdd(b, (Mat&)a); + return a; +} + +template static inline +Mat_<_Tp>& operator += (Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignAdd(b, a); + return a; +} + +template static inline +const Mat_<_Tp>& operator += (const Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignAdd(b, (Mat&)a); + return a; +} + +static inline +Mat& operator -= (Mat& a, const MatExpr& b) +{ + b.op->augAssignSubtract(b, a); + return a; +} + +static inline +const Mat& operator -= (const Mat& a, const MatExpr& b) +{ + b.op->augAssignSubtract(b, (Mat&)a); + return a; +} + +template static inline +Mat_<_Tp>& operator -= (Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignSubtract(b, a); + return a; +} + +template static inline +const Mat_<_Tp>& operator -= (const Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignSubtract(b, (Mat&)a); + return a; +} + +static inline +Mat& operator *= (Mat& a, const MatExpr& b) +{ + b.op->augAssignMultiply(b, a); + return a; +} + +static inline +const Mat& operator *= (const Mat& a, const MatExpr& b) +{ + b.op->augAssignMultiply(b, (Mat&)a); + return a; +} + +template static inline +Mat_<_Tp>& operator *= (Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignMultiply(b, a); + return a; +} + +template static inline +const Mat_<_Tp>& operator *= (const Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignMultiply(b, (Mat&)a); + return a; +} + +static inline +Mat& operator /= (Mat& a, const MatExpr& b) +{ + b.op->augAssignDivide(b, a); + return a; +} + +static inline +const Mat& operator /= (const Mat& a, const MatExpr& b) +{ + b.op->augAssignDivide(b, (Mat&)a); + return a; +} + +template static inline +Mat_<_Tp>& operator /= (Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignDivide(b, a); + return a; +} + +template static inline +const Mat_<_Tp>& operator /= (const Mat_<_Tp>& a, const MatExpr& b) +{ + b.op->augAssignDivide(b, (Mat&)a); + return a; +} + + +//////////////////////////////// UMat //////////////////////////////// + +inline +UMat::UMat(UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{} + +inline +UMat::UMat(int _rows, int _cols, int _type, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create(_rows, _cols, _type); +} + +inline +UMat::UMat(int _rows, int _cols, int _type, const Scalar& _s, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create(_rows, _cols, _type); + *this = _s; +} + +inline +UMat::UMat(Size _sz, int _type, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create( _sz.height, _sz.width, _type ); +} + +inline +UMat::UMat(Size _sz, int _type, const Scalar& _s, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create(_sz.height, _sz.width, _type); + *this = _s; +} + +inline +UMat::UMat(int _dims, const int* _sz, int _type, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create(_dims, _sz, _type); +} + +inline +UMat::UMat(int _dims, const int* _sz, int _type, const Scalar& _s, UMatUsageFlags _usageFlags) +: flags(MAGIC_VAL), dims(0), rows(0), cols(0), allocator(0), usageFlags(_usageFlags), u(0), offset(0), size(&rows) +{ + create(_dims, _sz, _type); + *this = _s; +} + +inline +UMat::UMat(const UMat& m) +: flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), allocator(m.allocator), + usageFlags(m.usageFlags), u(m.u), offset(m.offset), size(&rows) +{ + addref(); + if( m.dims <= 2 ) + { + step[0] = m.step[0]; step[1] = m.step[1]; + } + else + { + dims = 0; + copySize(m); + } +} + + +template inline +UMat::UMat(const std::vector<_Tp>& vec, bool copyData) +: flags(MAGIC_VAL + traits::Type<_Tp>::value + CV_MAT_CONT_FLAG), dims(2), rows((int)vec.size()), +cols(1), allocator(0), usageFlags(USAGE_DEFAULT), u(0), offset(0), size(&rows) +{ + if(vec.empty()) + return; + if( !copyData ) + { + // !!!TODO!!! + CV_Error(Error::StsNotImplemented, ""); + } + else + Mat((int)vec.size(), 1, traits::Type<_Tp>::value, (uchar*)&vec[0]).copyTo(*this); +} + +inline +UMat& UMat::operator = (const UMat& m) +{ + if( this != &m ) + { + const_cast(m).addref(); + release(); + flags = m.flags; + if( dims <= 2 && m.dims <= 2 ) + { + dims = m.dims; + rows = m.rows; + cols = m.cols; + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + copySize(m); + allocator = m.allocator; + if (usageFlags == USAGE_DEFAULT) + usageFlags = m.usageFlags; + u = m.u; + offset = m.offset; + } + return *this; +} + +inline +UMat UMat::row(int y) const +{ + return UMat(*this, Range(y, y + 1), Range::all()); +} + +inline +UMat UMat::col(int x) const +{ + return UMat(*this, Range::all(), Range(x, x + 1)); +} + +inline +UMat UMat::rowRange(int startrow, int endrow) const +{ + return UMat(*this, Range(startrow, endrow), Range::all()); +} + +inline +UMat UMat::rowRange(const Range& r) const +{ + return UMat(*this, r, Range::all()); +} + +inline +UMat UMat::colRange(int startcol, int endcol) const +{ + return UMat(*this, Range::all(), Range(startcol, endcol)); +} + +inline +UMat UMat::colRange(const Range& r) const +{ + return UMat(*this, Range::all(), r); +} + +inline +UMat UMat::clone() const +{ + UMat m; + copyTo(m); + return m; +} + +inline +void UMat::assignTo( UMat& m, int _type ) const +{ + if( _type < 0 ) + m = *this; + else + convertTo(m, _type); +} + +inline +void UMat::create(int _rows, int _cols, int _type, UMatUsageFlags _usageFlags) +{ + _type &= TYPE_MASK; + if( dims <= 2 && rows == _rows && cols == _cols && type() == _type && u ) + return; + int sz[] = {_rows, _cols}; + create(2, sz, _type, _usageFlags); +} + +inline +void UMat::create(Size _sz, int _type, UMatUsageFlags _usageFlags) +{ + create(_sz.height, _sz.width, _type, _usageFlags); +} + +inline +void UMat::addref() +{ + if( u ) + CV_XADD(&(u->urefcount), 1); +} + +inline void UMat::release() +{ + if( u && CV_XADD(&(u->urefcount), -1) == 1 ) + deallocate(); + for(int i = 0; i < dims; i++) + size.p[i] = 0; + u = 0; +} + +inline +UMat UMat::operator()( Range _rowRange, Range _colRange ) const +{ + return UMat(*this, _rowRange, _colRange); +} + +inline +UMat UMat::operator()( const Rect& roi ) const +{ + return UMat(*this, roi); +} + +inline +UMat UMat::operator()(const Range* ranges) const +{ + return UMat(*this, ranges); +} + +inline +UMat UMat::operator()(const std::vector& ranges) const +{ + return UMat(*this, ranges); +} + +inline +bool UMat::isContinuous() const +{ + return (flags & CONTINUOUS_FLAG) != 0; +} + +inline +bool UMat::isSubmatrix() const +{ + return (flags & SUBMATRIX_FLAG) != 0; +} + +inline +size_t UMat::elemSize() const +{ + size_t res = dims > 0 ? step.p[dims - 1] : 0; + CV_DbgAssert(res != 0); + return res; +} + +inline +size_t UMat::elemSize1() const +{ + return CV_ELEM_SIZE1(flags); +} + +inline +int UMat::type() const +{ + return CV_MAT_TYPE(flags); +} + +inline +int UMat::depth() const +{ + return CV_MAT_DEPTH(flags); +} + +inline +int UMat::channels() const +{ + return CV_MAT_CN(flags); +} + +inline +size_t UMat::step1(int i) const +{ + return step.p[i] / elemSize1(); +} + +inline +bool UMat::empty() const +{ + return u == 0 || total() == 0 || dims == 0; +} + +inline +size_t UMat::total() const +{ + if( dims <= 2 ) + return (size_t)rows * cols; + size_t p = 1; + for( int i = 0; i < dims; i++ ) + p *= size[i]; + return p; +} + +inline +UMat::UMat(UMat&& m) +: flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), allocator(m.allocator), + usageFlags(m.usageFlags), u(m.u), offset(m.offset), size(&rows) +{ + if (m.dims <= 2) // move new step/size info + { + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + { + CV_DbgAssert(m.step.p != m.step.buf); + step.p = m.step.p; + size.p = m.size.p; + m.step.p = m.step.buf; + m.size.p = &m.rows; + } + m.flags = MAGIC_VAL; m.dims = m.rows = m.cols = 0; + m.allocator = NULL; + m.u = NULL; + m.offset = 0; +} + +inline +UMat& UMat::operator = (UMat&& m) +{ + if (this == &m) + return *this; + release(); + flags = m.flags; dims = m.dims; rows = m.rows; cols = m.cols; + allocator = m.allocator; usageFlags = m.usageFlags; + u = m.u; + offset = m.offset; + if (step.p != step.buf) // release self step/size + { + fastFree(step.p); + step.p = step.buf; + size.p = &rows; + } + if (m.dims <= 2) // move new step/size info + { + step[0] = m.step[0]; + step[1] = m.step[1]; + } + else + { + CV_DbgAssert(m.step.p != m.step.buf); + step.p = m.step.p; + size.p = m.size.p; + m.step.p = m.step.buf; + m.size.p = &m.rows; + } + m.flags = MAGIC_VAL; m.dims = m.rows = m.cols = 0; + m.allocator = NULL; + m.u = NULL; + m.offset = 0; + return *this; +} + + +inline bool UMatData::hostCopyObsolete() const { return (flags & HOST_COPY_OBSOLETE) != 0; } +inline bool UMatData::deviceCopyObsolete() const { return (flags & DEVICE_COPY_OBSOLETE) != 0; } +inline bool UMatData::deviceMemMapped() const { return (flags & DEVICE_MEM_MAPPED) != 0; } +inline bool UMatData::copyOnMap() const { return (flags & COPY_ON_MAP) != 0; } +inline bool UMatData::tempUMat() const { return (flags & TEMP_UMAT) != 0; } +inline bool UMatData::tempCopiedUMat() const { return (flags & TEMP_COPIED_UMAT) == TEMP_COPIED_UMAT; } + +inline void UMatData::markDeviceMemMapped(bool flag) +{ + if(flag) + flags |= DEVICE_MEM_MAPPED; + else + flags &= ~DEVICE_MEM_MAPPED; +} + +inline void UMatData::markHostCopyObsolete(bool flag) +{ + if(flag) + flags |= HOST_COPY_OBSOLETE; + else + flags &= ~HOST_COPY_OBSOLETE; +} +inline void UMatData::markDeviceCopyObsolete(bool flag) +{ + if(flag) + flags |= DEVICE_COPY_OBSOLETE; + else + flags &= ~DEVICE_COPY_OBSOLETE; +} + +//! @endcond + +} //cv + +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/matx.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/matx.hpp new file mode 100644 index 0000000..320a6fe --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/matx.hpp @@ -0,0 +1,1467 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_MATX_HPP +#define OPENCV_CORE_MATX_HPP + +#ifndef __cplusplus +# error matx.hpp header must be compiled as C++ +#endif + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/base.hpp" +#include "opencv2/core/traits.hpp" +#include "opencv2/core/saturate.hpp" + +#include + +namespace cv +{ + +//! @addtogroup core_basic +//! @{ + +////////////////////////////// Small Matrix /////////////////////////// + +//! @cond IGNORED +// FIXIT Remove this (especially CV_EXPORTS modifier) +struct CV_EXPORTS Matx_AddOp { Matx_AddOp() {} Matx_AddOp(const Matx_AddOp&) {} }; +struct CV_EXPORTS Matx_SubOp { Matx_SubOp() {} Matx_SubOp(const Matx_SubOp&) {} }; +struct CV_EXPORTS Matx_ScaleOp { Matx_ScaleOp() {} Matx_ScaleOp(const Matx_ScaleOp&) {} }; +struct CV_EXPORTS Matx_MulOp { Matx_MulOp() {} Matx_MulOp(const Matx_MulOp&) {} }; +struct CV_EXPORTS Matx_DivOp { Matx_DivOp() {} Matx_DivOp(const Matx_DivOp&) {} }; +struct CV_EXPORTS Matx_MatMulOp { Matx_MatMulOp() {} Matx_MatMulOp(const Matx_MatMulOp&) {} }; +struct CV_EXPORTS Matx_TOp { Matx_TOp() {} Matx_TOp(const Matx_TOp&) {} }; +//! @endcond + +/** @brief Template class for small matrices whose type and size are known at compilation time + +If you need a more flexible type, use Mat . The elements of the matrix M are accessible using the +M(i,j) notation. Most of the common matrix operations (see also @ref MatrixExpressions ) are +available. To do an operation on Matx that is not implemented, you can easily convert the matrix to +Mat and backwards: +@code{.cpp} + Matx33f m(1, 2, 3, + 4, 5, 6, + 7, 8, 9); + cout << sum(Mat(m*m.t())) << endl; +@endcode +Except of the plain constructor which takes a list of elements, Matx can be initialized from a C-array: +@code{.cpp} + float values[] = { 1, 2, 3}; + Matx31f m(values); +@endcode +In case if C++11 features are available, std::initializer_list can be also used to initialize Matx: +@code{.cpp} + Matx31f m = { 1, 2, 3}; +@endcode + */ +template class Matx +{ +public: + enum { + rows = m, + cols = n, + channels = rows*cols, +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + depth = traits::Type<_Tp>::value, + type = CV_MAKETYPE(depth, channels), +#endif + shortdim = (m < n ? m : n) + }; + + typedef _Tp value_type; + typedef Matx<_Tp, m, n> mat_type; + typedef Matx<_Tp, shortdim, 1> diag_type; + + //! default constructor + Matx(); + + explicit Matx(_Tp v0); //!< 1x1 matrix + Matx(_Tp v0, _Tp v1); //!< 1x2 or 2x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2); //!< 1x3 or 3x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 1x4, 2x2 or 4x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 1x5 or 5x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 1x6, 2x3, 3x2 or 6x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 1x7 or 7x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 1x8, 2x4, 4x2 or 8x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 1x9, 3x3 or 9x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 1x10, 2x5 or 5x2 or 10x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, + _Tp v4, _Tp v5, _Tp v6, _Tp v7, + _Tp v8, _Tp v9, _Tp v10, _Tp v11); //!< 1x12, 2x6, 3x4, 4x3, 6x2 or 12x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, + _Tp v4, _Tp v5, _Tp v6, _Tp v7, + _Tp v8, _Tp v9, _Tp v10, _Tp v11, + _Tp v12, _Tp v13); //!< 1x14, 2x7, 7x2 or 14x1 matrix + Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, + _Tp v4, _Tp v5, _Tp v6, _Tp v7, + _Tp v8, _Tp v9, _Tp v10, _Tp v11, + _Tp v12, _Tp v13, _Tp v14, _Tp v15); //!< 1x16, 4x4 or 16x1 matrix + explicit Matx(const _Tp* vals); //!< initialize from a plain array + + Matx(std::initializer_list<_Tp>); //!< initialize from an initializer list + + static Matx all(_Tp alpha); + static Matx zeros(); + static Matx ones(); + static Matx eye(); + static Matx diag(const diag_type& d); + static Matx randu(_Tp a, _Tp b); + static Matx randn(_Tp a, _Tp b); + + //! dot product computed with the default precision + _Tp dot(const Matx<_Tp, m, n>& v) const; + + //! dot product computed in double-precision arithmetics + double ddot(const Matx<_Tp, m, n>& v) const; + + //! conversion to another data type + template operator Matx() const; + + //! change the matrix shape + template Matx<_Tp, m1, n1> reshape() const; + + //! extract part of the matrix + template Matx<_Tp, m1, n1> get_minor(int base_row, int base_col) const; + + //! extract the matrix row + Matx<_Tp, 1, n> row(int i) const; + + //! extract the matrix column + Matx<_Tp, m, 1> col(int i) const; + + //! extract the matrix diagonal + diag_type diag() const; + + //! transpose the matrix + Matx<_Tp, n, m> t() const; + + //! invert the matrix + Matx<_Tp, n, m> inv(int method=DECOMP_LU, bool *p_is_ok = NULL) const; + + //! solve linear system + template Matx<_Tp, n, l> solve(const Matx<_Tp, m, l>& rhs, int flags=DECOMP_LU) const; + Vec<_Tp, n> solve(const Vec<_Tp, m>& rhs, int method) const; + + //! multiply two matrices element-wise + Matx<_Tp, m, n> mul(const Matx<_Tp, m, n>& a) const; + + //! divide two matrices element-wise + Matx<_Tp, m, n> div(const Matx<_Tp, m, n>& a) const; + + //! element access + const _Tp& operator ()(int row, int col) const; + _Tp& operator ()(int row, int col); + + //! 1D element access + const _Tp& operator ()(int i) const; + _Tp& operator ()(int i); + + Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp); + Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp); + template Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp); + Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp); + Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_DivOp); + template Matx(const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b, Matx_MatMulOp); + Matx(const Matx<_Tp, n, m>& a, Matx_TOp); + + _Tp val[m*n]; //< matrix elements +}; + +typedef Matx Matx12f; +typedef Matx Matx12d; +typedef Matx Matx13f; +typedef Matx Matx13d; +typedef Matx Matx14f; +typedef Matx Matx14d; +typedef Matx Matx16f; +typedef Matx Matx16d; + +typedef Matx Matx21f; +typedef Matx Matx21d; +typedef Matx Matx31f; +typedef Matx Matx31d; +typedef Matx Matx41f; +typedef Matx Matx41d; +typedef Matx Matx61f; +typedef Matx Matx61d; + +typedef Matx Matx22f; +typedef Matx Matx22d; +typedef Matx Matx23f; +typedef Matx Matx23d; +typedef Matx Matx32f; +typedef Matx Matx32d; + +typedef Matx Matx33f; +typedef Matx Matx33d; + +typedef Matx Matx34f; +typedef Matx Matx34d; +typedef Matx Matx43f; +typedef Matx Matx43d; + +typedef Matx Matx44f; +typedef Matx Matx44d; +typedef Matx Matx66f; +typedef Matx Matx66d; + +/*! + traits +*/ +template class DataType< Matx<_Tp, m, n> > +{ +public: + typedef Matx<_Tp, m, n> value_type; + typedef Matx::work_type, m, n> work_type; + typedef _Tp channel_type; + typedef value_type vec_type; + + enum { generic_type = 0, + channels = m * n, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; +}; + +namespace traits { +template +struct Depth< Matx<_Tp, m, n> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Matx<_Tp, m, n> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, n*m) }; }; +} // namespace + + +/** @brief Comma-separated Matrix Initializer +*/ +template class MatxCommaInitializer +{ +public: + MatxCommaInitializer(Matx<_Tp, m, n>* _mtx); + template MatxCommaInitializer<_Tp, m, n>& operator , (T2 val); + Matx<_Tp, m, n> operator *() const; + + Matx<_Tp, m, n>* dst; + int idx; +}; + +/* + Utility methods +*/ +template static double determinant(const Matx<_Tp, m, m>& a); +template static double trace(const Matx<_Tp, m, n>& a); +template static double norm(const Matx<_Tp, m, n>& M); +template static double norm(const Matx<_Tp, m, n>& M, int normType); + + + +/////////////////////// Vec (used as element of multi-channel images ///////////////////// + +/** @brief Template class for short numerical vectors, a partial case of Matx + +This template class represents short numerical vectors (of 1, 2, 3, 4 ... elements) on which you +can perform basic arithmetical operations, access individual elements using [] operator etc. The +vectors are allocated on stack, as opposite to std::valarray, std::vector, cv::Mat etc., which +elements are dynamically allocated in the heap. + +The template takes 2 parameters: +@tparam _Tp element type +@tparam cn the number of elements + +In addition to the universal notation like Vec, you can use shorter aliases +for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec. + +It is possible to convert Vec\ to/from Point_, Vec\ to/from Point3_ , and Vec\ +to CvScalar or Scalar_. Use operator[] to access the elements of Vec. + +All the expected vector operations are also implemented: +- v1 = v2 + v3 +- v1 = v2 - v3 +- v1 = v2 \* scale +- v1 = scale \* v2 +- v1 = -v2 +- v1 += v2 and other augmenting operations +- v1 == v2, v1 != v2 +- norm(v1) (euclidean norm) +The Vec class is commonly used to describe pixel types of multi-channel arrays. See Mat for details. +*/ +template class Vec : public Matx<_Tp, cn, 1> +{ +public: + typedef _Tp value_type; + enum { + channels = cn, +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + depth = Matx<_Tp, cn, 1>::depth, + type = CV_MAKETYPE(depth, channels), +#endif + _dummy_enum_finalizer = 0 + }; + + //! default constructor + Vec(); + + Vec(_Tp v0); //!< 1-element vector constructor + Vec(_Tp v0, _Tp v1); //!< 2-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2); //!< 3-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 4-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 5-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 6-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 7-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 8-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 9-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 10-element vector constructor + Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13); //!< 14-element vector constructor + explicit Vec(const _Tp* values); + + Vec(std::initializer_list<_Tp>); + + Vec(const Vec<_Tp, cn>& v); + + static Vec all(_Tp alpha); + + //! per-element multiplication + Vec mul(const Vec<_Tp, cn>& v) const; + + //! conjugation (makes sense for complex numbers and quaternions) + Vec conj() const; + + /*! + cross product of the two 3D vectors. + + For other dimensionalities the exception is raised + */ + Vec cross(const Vec& v) const; + //! conversion to another data type + template operator Vec() const; + + /*! element access */ + const _Tp& operator [](int i) const; + _Tp& operator[](int i); + const _Tp& operator ()(int i) const; + _Tp& operator ()(int i); + + Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_AddOp); + Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_SubOp); + template Vec(const Matx<_Tp, cn, 1>& a, _T2 alpha, Matx_ScaleOp); +}; + +/** @name Shorter aliases for the most popular specializations of Vec + @{ +*/ +typedef Vec Vec2b; +typedef Vec Vec3b; +typedef Vec Vec4b; + +typedef Vec Vec2s; +typedef Vec Vec3s; +typedef Vec Vec4s; + +typedef Vec Vec2w; +typedef Vec Vec3w; +typedef Vec Vec4w; + +typedef Vec Vec2i; +typedef Vec Vec3i; +typedef Vec Vec4i; +typedef Vec Vec6i; +typedef Vec Vec8i; + +typedef Vec Vec2f; +typedef Vec Vec3f; +typedef Vec Vec4f; +typedef Vec Vec6f; + +typedef Vec Vec2d; +typedef Vec Vec3d; +typedef Vec Vec4d; +typedef Vec Vec6d; +/** @} */ + +/*! + traits +*/ +template class DataType< Vec<_Tp, cn> > +{ +public: + typedef Vec<_Tp, cn> value_type; + typedef Vec::work_type, cn> work_type; + typedef _Tp channel_type; + typedef value_type vec_type; + + enum { generic_type = 0, + channels = cn, + fmt = DataType::fmt + ((channels - 1) << 8), +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + depth = DataType::depth, + type = CV_MAKETYPE(depth, channels), +#endif + _dummy_enum_finalizer = 0 + }; +}; + +namespace traits { +template +struct Depth< Vec<_Tp, cn> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Vec<_Tp, cn> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, cn) }; }; +} // namespace + + +/** @brief Comma-separated Vec Initializer +*/ +template class VecCommaInitializer : public MatxCommaInitializer<_Tp, m, 1> +{ +public: + VecCommaInitializer(Vec<_Tp, m>* _vec); + template VecCommaInitializer<_Tp, m>& operator , (T2 val); + Vec<_Tp, m> operator *() const; +}; + +template static Vec<_Tp, cn> normalize(const Vec<_Tp, cn>& v); + +//! @} core_basic + +//! @cond IGNORED + +///////////////////////////////////// helper classes ///////////////////////////////////// +namespace internal +{ + +template struct Matx_DetOp +{ + double operator ()(const Matx<_Tp, m, m>& a) const + { + Matx<_Tp, m, m> temp = a; + double p = LU(temp.val, m*sizeof(_Tp), m, 0, 0, 0); + if( p == 0 ) + return p; + for( int i = 0; i < m; i++ ) + p *= temp(i, i); + return p; + } +}; + +template struct Matx_DetOp<_Tp, 1> +{ + double operator ()(const Matx<_Tp, 1, 1>& a) const + { + return a(0,0); + } +}; + +template struct Matx_DetOp<_Tp, 2> +{ + double operator ()(const Matx<_Tp, 2, 2>& a) const + { + return a(0,0)*a(1,1) - a(0,1)*a(1,0); + } +}; + +template struct Matx_DetOp<_Tp, 3> +{ + double operator ()(const Matx<_Tp, 3, 3>& a) const + { + return a(0,0)*(a(1,1)*a(2,2) - a(2,1)*a(1,2)) - + a(0,1)*(a(1,0)*a(2,2) - a(2,0)*a(1,2)) + + a(0,2)*(a(1,0)*a(2,1) - a(2,0)*a(1,1)); + } +}; + +template Vec<_Tp, 2> inline conjugate(const Vec<_Tp, 2>& v) +{ + return Vec<_Tp, 2>(v[0], -v[1]); +} + +template Vec<_Tp, 4> inline conjugate(const Vec<_Tp, 4>& v) +{ + return Vec<_Tp, 4>(v[0], -v[1], -v[2], -v[3]); +} + +} // internal + + + +////////////////////////////////// Matx Implementation /////////////////////////////////// + +template inline +Matx<_Tp, m, n>::Matx() +{ + for(int i = 0; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0) +{ + val[0] = v0; + for(int i = 1; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1) +{ + CV_StaticAssert(channels >= 2, "Matx should have at least 2 elements."); + val[0] = v0; val[1] = v1; + for(int i = 2; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2) +{ + CV_StaticAssert(channels >= 3, "Matx should have at least 3 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; + for(int i = 3; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3) +{ + CV_StaticAssert(channels >= 4, "Matx should have at least 4 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + for(int i = 4; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4) +{ + CV_StaticAssert(channels >= 5, "Matx should have at least 5 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; val[4] = v4; + for(int i = 5; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5) +{ + CV_StaticAssert(channels >= 6, "Matx should have at least 6 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; + for(int i = 6; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6) +{ + CV_StaticAssert(channels >= 7, "Matx should have at least 7 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; + for(int i = 7; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7) +{ + CV_StaticAssert(channels >= 8, "Matx should have at least 8 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + for(int i = 8; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8) +{ + CV_StaticAssert(channels >= 9, "Matx should have at least 9 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + val[8] = v8; + for(int i = 9; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9) +{ + CV_StaticAssert(channels >= 10, "Matx should have at least 10 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + val[8] = v8; val[9] = v9; + for(int i = 10; i < channels; i++) val[i] = _Tp(0); +} + + +template inline +Matx<_Tp,m,n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11) +{ + CV_StaticAssert(channels >= 12, "Matx should have at least 12 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + val[8] = v8; val[9] = v9; val[10] = v10; val[11] = v11; + for(int i = 12; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp,m,n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13) +{ + CV_StaticAssert(channels >= 14, "Matx should have at least 14 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + val[8] = v8; val[9] = v9; val[10] = v10; val[11] = v11; + val[12] = v12; val[13] = v13; + for (int i = 14; i < channels; i++) val[i] = _Tp(0); +} + + +template inline +Matx<_Tp,m,n>::Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13, _Tp v14, _Tp v15) +{ + CV_StaticAssert(channels >= 16, "Matx should have at least 16 elements."); + val[0] = v0; val[1] = v1; val[2] = v2; val[3] = v3; + val[4] = v4; val[5] = v5; val[6] = v6; val[7] = v7; + val[8] = v8; val[9] = v9; val[10] = v10; val[11] = v11; + val[12] = v12; val[13] = v13; val[14] = v14; val[15] = v15; + for(int i = 16; i < channels; i++) val[i] = _Tp(0); +} + +template inline +Matx<_Tp, m, n>::Matx(const _Tp* values) +{ + for( int i = 0; i < channels; i++ ) val[i] = values[i]; +} + +template inline +Matx<_Tp, m, n>::Matx(std::initializer_list<_Tp> list) +{ + CV_DbgAssert(list.size() == channels); + int i = 0; + for(const auto& elem : list) + { + val[i++] = elem; + } +} + +template inline +Matx<_Tp, m, n> Matx<_Tp, m, n>::all(_Tp alpha) +{ + Matx<_Tp, m, n> M; + for( int i = 0; i < m*n; i++ ) M.val[i] = alpha; + return M; +} + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::zeros() +{ + return all(0); +} + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::ones() +{ + return all(1); +} + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::eye() +{ + Matx<_Tp,m,n> M; + for(int i = 0; i < shortdim; i++) + M(i,i) = 1; + return M; +} + +template inline +_Tp Matx<_Tp, m, n>::dot(const Matx<_Tp, m, n>& M) const +{ + _Tp s = 0; + for( int i = 0; i < channels; i++ ) s += val[i]*M.val[i]; + return s; +} + +template inline +double Matx<_Tp, m, n>::ddot(const Matx<_Tp, m, n>& M) const +{ + double s = 0; + for( int i = 0; i < channels; i++ ) s += (double)val[i]*M.val[i]; + return s; +} + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::diag(const typename Matx<_Tp,m,n>::diag_type& d) +{ + Matx<_Tp,m,n> M; + for(int i = 0; i < shortdim; i++) + M(i,i) = d(i, 0); + return M; +} + +template template +inline Matx<_Tp, m, n>::operator Matx() const +{ + Matx M; + for( int i = 0; i < m*n; i++ ) M.val[i] = saturate_cast(val[i]); + return M; +} + +template template inline +Matx<_Tp, m1, n1> Matx<_Tp, m, n>::reshape() const +{ + CV_StaticAssert(m1*n1 == m*n, "Input and destnarion matrices must have the same number of elements"); + return (const Matx<_Tp, m1, n1>&)*this; +} + +template +template inline +Matx<_Tp, m1, n1> Matx<_Tp, m, n>::get_minor(int base_row, int base_col) const +{ + CV_DbgAssert(0 <= base_row && base_row+m1 <= m && 0 <= base_col && base_col+n1 <= n); + Matx<_Tp, m1, n1> s; + for( int di = 0; di < m1; di++ ) + for( int dj = 0; dj < n1; dj++ ) + s(di, dj) = (*this)(base_row+di, base_col+dj); + return s; +} + +template inline +Matx<_Tp, 1, n> Matx<_Tp, m, n>::row(int i) const +{ + CV_DbgAssert((unsigned)i < (unsigned)m); + return Matx<_Tp, 1, n>(&val[i*n]); +} + +template inline +Matx<_Tp, m, 1> Matx<_Tp, m, n>::col(int j) const +{ + CV_DbgAssert((unsigned)j < (unsigned)n); + Matx<_Tp, m, 1> v; + for( int i = 0; i < m; i++ ) + v.val[i] = val[i*n + j]; + return v; +} + +template inline +typename Matx<_Tp, m, n>::diag_type Matx<_Tp, m, n>::diag() const +{ + diag_type d; + for( int i = 0; i < shortdim; i++ ) + d.val[i] = val[i*n + i]; + return d; +} + +template inline +const _Tp& Matx<_Tp, m, n>::operator()(int row_idx, int col_idx) const +{ + CV_DbgAssert( (unsigned)row_idx < (unsigned)m && (unsigned)col_idx < (unsigned)n ); + return this->val[row_idx*n + col_idx]; +} + +template inline +_Tp& Matx<_Tp, m, n>::operator ()(int row_idx, int col_idx) +{ + CV_DbgAssert( (unsigned)row_idx < (unsigned)m && (unsigned)col_idx < (unsigned)n ); + return val[row_idx*n + col_idx]; +} + +template inline +const _Tp& Matx<_Tp, m, n>::operator ()(int i) const +{ + CV_StaticAssert(m == 1 || n == 1, "Single index indexation requires matrix to be a column or a row"); + CV_DbgAssert( (unsigned)i < (unsigned)(m+n-1) ); + return val[i]; +} + +template inline +_Tp& Matx<_Tp, m, n>::operator ()(int i) +{ + CV_StaticAssert(m == 1 || n == 1, "Single index indexation requires matrix to be a column or a row"); + CV_DbgAssert( (unsigned)i < (unsigned)(m+n-1) ); + return val[i]; +} + +template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp) +{ + for( int i = 0; i < channels; i++ ) + val[i] = saturate_cast<_Tp>(a.val[i] + b.val[i]); +} + +template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp) +{ + for( int i = 0; i < channels; i++ ) + val[i] = saturate_cast<_Tp>(a.val[i] - b.val[i]); +} + +template template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp) +{ + for( int i = 0; i < channels; i++ ) + val[i] = saturate_cast<_Tp>(a.val[i] * alpha); +} + +template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp) +{ + for( int i = 0; i < channels; i++ ) + val[i] = saturate_cast<_Tp>(a.val[i] * b.val[i]); +} + +template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_DivOp) +{ + for( int i = 0; i < channels; i++ ) + val[i] = saturate_cast<_Tp>(a.val[i] / b.val[i]); +} + +template template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b, Matx_MatMulOp) +{ + for( int i = 0; i < m; i++ ) + for( int j = 0; j < n; j++ ) + { + _Tp s = 0; + for( int k = 0; k < l; k++ ) + s += a(i, k) * b(k, j); + val[i*n + j] = s; + } +} + +template inline +Matx<_Tp,m,n>::Matx(const Matx<_Tp, n, m>& a, Matx_TOp) +{ + for( int i = 0; i < m; i++ ) + for( int j = 0; j < n; j++ ) + val[i*n + j] = a(j, i); +} + +template inline +Matx<_Tp, m, n> Matx<_Tp, m, n>::mul(const Matx<_Tp, m, n>& a) const +{ + return Matx<_Tp, m, n>(*this, a, Matx_MulOp()); +} + +template inline +Matx<_Tp, m, n> Matx<_Tp, m, n>::div(const Matx<_Tp, m, n>& a) const +{ + return Matx<_Tp, m, n>(*this, a, Matx_DivOp()); +} + +template inline +Matx<_Tp, n, m> Matx<_Tp, m, n>::t() const +{ + return Matx<_Tp, n, m>(*this, Matx_TOp()); +} + +template inline +Vec<_Tp, n> Matx<_Tp, m, n>::solve(const Vec<_Tp, m>& rhs, int method) const +{ + Matx<_Tp, n, 1> x = solve((const Matx<_Tp, m, 1>&)(rhs), method); + return (Vec<_Tp, n>&)(x); +} + +template static inline +double determinant(const Matx<_Tp, m, m>& a) +{ + return cv::internal::Matx_DetOp<_Tp, m>()(a); +} + +template static inline +double trace(const Matx<_Tp, m, n>& a) +{ + _Tp s = 0; + for( int i = 0; i < std::min(m, n); i++ ) + s += a(i,i); + return s; +} + +template static inline +double norm(const Matx<_Tp, m, n>& M) +{ + return std::sqrt(normL2Sqr<_Tp, double>(M.val, m*n)); +} + +template static inline +double norm(const Matx<_Tp, m, n>& M, int normType) +{ + switch(normType) { + case NORM_INF: + return (double)normInf<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n); + case NORM_L1: + return (double)normL1<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n); + case NORM_L2SQR: + return (double)normL2Sqr<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n); + default: + case NORM_L2: + return std::sqrt((double)normL2Sqr<_Tp, typename DataType<_Tp>::work_type>(M.val, m*n)); + } +} + + + +//////////////////////////////// matx comma initializer ////////////////////////////////// + +template static inline +MatxCommaInitializer<_Tp, m, n> operator << (const Matx<_Tp, m, n>& mtx, _T2 val) +{ + MatxCommaInitializer<_Tp, m, n> commaInitializer((Matx<_Tp, m, n>*)&mtx); + return (commaInitializer, val); +} + +template inline +MatxCommaInitializer<_Tp, m, n>::MatxCommaInitializer(Matx<_Tp, m, n>* _mtx) + : dst(_mtx), idx(0) +{} + +template template inline +MatxCommaInitializer<_Tp, m, n>& MatxCommaInitializer<_Tp, m, n>::operator , (_T2 value) +{ + CV_DbgAssert( idx < m*n ); + dst->val[idx++] = saturate_cast<_Tp>(value); + return *this; +} + +template inline +Matx<_Tp, m, n> MatxCommaInitializer<_Tp, m, n>::operator *() const +{ + CV_DbgAssert( idx == n*m ); + return *dst; +} + + + +/////////////////////////////////// Vec Implementation /////////////////////////////////// + +template inline +Vec<_Tp, cn>::Vec() {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0) + : Matx<_Tp, cn, 1>(v0) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1) + : Matx<_Tp, cn, 1>(v0, v1) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2) + : Matx<_Tp, cn, 1>(v0, v1, v2) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7, v8) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {} + +template inline +Vec<_Tp, cn>::Vec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13) + : Matx<_Tp, cn, 1>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) {} + +template inline +Vec<_Tp, cn>::Vec(const _Tp* values) + : Matx<_Tp, cn, 1>(values) {} + +template inline +Vec<_Tp, cn>::Vec(std::initializer_list<_Tp> list) + : Matx<_Tp, cn, 1>(list) {} + +template inline +Vec<_Tp, cn>::Vec(const Vec<_Tp, cn>& m) + : Matx<_Tp, cn, 1>(m.val) {} + +template inline +Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_AddOp op) + : Matx<_Tp, cn, 1>(a, b, op) {} + +template inline +Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_SubOp op) + : Matx<_Tp, cn, 1>(a, b, op) {} + +template template inline +Vec<_Tp, cn>::Vec(const Matx<_Tp, cn, 1>& a, _T2 alpha, Matx_ScaleOp op) + : Matx<_Tp, cn, 1>(a, alpha, op) {} + +template inline +Vec<_Tp, cn> Vec<_Tp, cn>::all(_Tp alpha) +{ + Vec v; + for( int i = 0; i < cn; i++ ) v.val[i] = alpha; + return v; +} + +template inline +Vec<_Tp, cn> Vec<_Tp, cn>::mul(const Vec<_Tp, cn>& v) const +{ + Vec<_Tp, cn> w; + for( int i = 0; i < cn; i++ ) w.val[i] = saturate_cast<_Tp>(this->val[i]*v.val[i]); + return w; +} + +template<> inline +Vec Vec::conj() const +{ + return cv::internal::conjugate(*this); +} + +template<> inline +Vec Vec::conj() const +{ + return cv::internal::conjugate(*this); +} + +template<> inline +Vec Vec::conj() const +{ + return cv::internal::conjugate(*this); +} + +template<> inline +Vec Vec::conj() const +{ + return cv::internal::conjugate(*this); +} + +template inline +Vec<_Tp, cn> Vec<_Tp, cn>::cross(const Vec<_Tp, cn>&) const +{ + CV_StaticAssert(cn == 3, "for arbitrary-size vector there is no cross-product defined"); + return Vec<_Tp, cn>(); +} + +template<> inline +Vec Vec::cross(const Vec& v) const +{ + return Vec(this->val[1]*v.val[2] - this->val[2]*v.val[1], + this->val[2]*v.val[0] - this->val[0]*v.val[2], + this->val[0]*v.val[1] - this->val[1]*v.val[0]); +} + +template<> inline +Vec Vec::cross(const Vec& v) const +{ + return Vec(this->val[1]*v.val[2] - this->val[2]*v.val[1], + this->val[2]*v.val[0] - this->val[0]*v.val[2], + this->val[0]*v.val[1] - this->val[1]*v.val[0]); +} + +template template inline +Vec<_Tp, cn>::operator Vec() const +{ + Vec v; + for( int i = 0; i < cn; i++ ) v.val[i] = saturate_cast(this->val[i]); + return v; +} + +template inline +const _Tp& Vec<_Tp, cn>::operator [](int i) const +{ + CV_DbgAssert( (unsigned)i < (unsigned)cn ); + return this->val[i]; +} + +template inline +_Tp& Vec<_Tp, cn>::operator [](int i) +{ + CV_DbgAssert( (unsigned)i < (unsigned)cn ); + return this->val[i]; +} + +template inline +const _Tp& Vec<_Tp, cn>::operator ()(int i) const +{ + CV_DbgAssert( (unsigned)i < (unsigned)cn ); + return this->val[i]; +} + +template inline +_Tp& Vec<_Tp, cn>::operator ()(int i) +{ + CV_DbgAssert( (unsigned)i < (unsigned)cn ); + return this->val[i]; +} + +template inline +Vec<_Tp, cn> normalize(const Vec<_Tp, cn>& v) +{ + double nv = norm(v); + return v * (nv ? 1./nv : 0.); +} + + + +//////////////////////////////// vec comma initializer ////////////////////////////////// + + +template static inline +VecCommaInitializer<_Tp, cn> operator << (const Vec<_Tp, cn>& vec, _T2 val) +{ + VecCommaInitializer<_Tp, cn> commaInitializer((Vec<_Tp, cn>*)&vec); + return (commaInitializer, val); +} + +template inline +VecCommaInitializer<_Tp, cn>::VecCommaInitializer(Vec<_Tp, cn>* _vec) + : MatxCommaInitializer<_Tp, cn, 1>(_vec) +{} + +template template inline +VecCommaInitializer<_Tp, cn>& VecCommaInitializer<_Tp, cn>::operator , (_T2 value) +{ + CV_DbgAssert( this->idx < cn ); + this->dst->val[this->idx++] = saturate_cast<_Tp>(value); + return *this; +} + +template inline +Vec<_Tp, cn> VecCommaInitializer<_Tp, cn>::operator *() const +{ + CV_DbgAssert( this->idx == cn ); + return *this->dst; +} + +//! @endcond + +///////////////////////////// Matx out-of-class operators //////////////////////////////// + +//! @relates cv::Matx +//! @{ + +template static inline +Matx<_Tp1, m, n>& operator += (Matx<_Tp1, m, n>& a, const Matx<_Tp2, m, n>& b) +{ + for( int i = 0; i < m*n; i++ ) + a.val[i] = saturate_cast<_Tp1>(a.val[i] + b.val[i]); + return a; +} + +template static inline +Matx<_Tp1, m, n>& operator -= (Matx<_Tp1, m, n>& a, const Matx<_Tp2, m, n>& b) +{ + for( int i = 0; i < m*n; i++ ) + a.val[i] = saturate_cast<_Tp1>(a.val[i] - b.val[i]); + return a; +} + +template static inline +Matx<_Tp, m, n> operator + (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) +{ + return Matx<_Tp, m, n>(a, b, Matx_AddOp()); +} + +template static inline +Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) +{ + return Matx<_Tp, m, n>(a, b, Matx_SubOp()); +} + +template static inline +Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, int alpha) +{ + for( int i = 0; i < m*n; i++ ) + a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha); + return a; +} + +template static inline +Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, float alpha) +{ + for( int i = 0; i < m*n; i++ ) + a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha); + return a; +} + +template static inline +Matx<_Tp, m, n>& operator *= (Matx<_Tp, m, n>& a, double alpha) +{ + for( int i = 0; i < m*n; i++ ) + a.val[i] = saturate_cast<_Tp>(a.val[i] * alpha); + return a; +} + +template static inline +Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, int alpha) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, float alpha) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (const Matx<_Tp, m, n>& a, double alpha) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (int alpha, const Matx<_Tp, m, n>& a) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (float alpha, const Matx<_Tp, m, n>& a) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (double alpha, const Matx<_Tp, m, n>& a) +{ + return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a) +{ + return Matx<_Tp, m, n>(a, -1, Matx_ScaleOp()); +} + +template static inline +Matx<_Tp, m, n> operator * (const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b) +{ + return Matx<_Tp, m, n>(a, b, Matx_MatMulOp()); +} + +template static inline +Vec<_Tp, m> operator * (const Matx<_Tp, m, n>& a, const Vec<_Tp, n>& b) +{ + Matx<_Tp, m, 1> c(a, b, Matx_MatMulOp()); + return (const Vec<_Tp, m>&)(c); +} + +template static inline +bool operator == (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) +{ + for( int i = 0; i < m*n; i++ ) + if( a.val[i] != b.val[i] ) return false; + return true; +} + +template static inline +bool operator != (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) +{ + return !(a == b); +} + +//! @} + +////////////////////////////// Vec out-of-class operators //////////////////////////////// + +//! @relates cv::Vec +//! @{ + +template static inline +Vec<_Tp1, cn>& operator += (Vec<_Tp1, cn>& a, const Vec<_Tp2, cn>& b) +{ + for( int i = 0; i < cn; i++ ) + a.val[i] = saturate_cast<_Tp1>(a.val[i] + b.val[i]); + return a; +} + +template static inline +Vec<_Tp1, cn>& operator -= (Vec<_Tp1, cn>& a, const Vec<_Tp2, cn>& b) +{ + for( int i = 0; i < cn; i++ ) + a.val[i] = saturate_cast<_Tp1>(a.val[i] - b.val[i]); + return a; +} + +template static inline +Vec<_Tp, cn> operator + (const Vec<_Tp, cn>& a, const Vec<_Tp, cn>& b) +{ + return Vec<_Tp, cn>(a, b, Matx_AddOp()); +} + +template static inline +Vec<_Tp, cn> operator - (const Vec<_Tp, cn>& a, const Vec<_Tp, cn>& b) +{ + return Vec<_Tp, cn>(a, b, Matx_SubOp()); +} + +template static inline +Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, int alpha) +{ + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*alpha); + return a; +} + +template static inline +Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, float alpha) +{ + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*alpha); + return a; +} + +template static inline +Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, double alpha) +{ + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*alpha); + return a; +} + +template static inline +Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, int alpha) +{ + double ialpha = 1./alpha; + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*ialpha); + return a; +} + +template static inline +Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, float alpha) +{ + float ialpha = 1.f/alpha; + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*ialpha); + return a; +} + +template static inline +Vec<_Tp, cn>& operator /= (Vec<_Tp, cn>& a, double alpha) +{ + double ialpha = 1./alpha; + for( int i = 0; i < cn; i++ ) + a[i] = saturate_cast<_Tp>(a[i]*ialpha); + return a; +} + +template static inline +Vec<_Tp, cn> operator * (const Vec<_Tp, cn>& a, int alpha) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator * (int alpha, const Vec<_Tp, cn>& a) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator * (const Vec<_Tp, cn>& a, float alpha) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator * (float alpha, const Vec<_Tp, cn>& a) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator * (const Vec<_Tp, cn>& a, double alpha) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator * (double alpha, const Vec<_Tp, cn>& a) +{ + return Vec<_Tp, cn>(a, alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator / (const Vec<_Tp, cn>& a, int alpha) +{ + return Vec<_Tp, cn>(a, 1./alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator / (const Vec<_Tp, cn>& a, float alpha) +{ + return Vec<_Tp, cn>(a, 1.f/alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator / (const Vec<_Tp, cn>& a, double alpha) +{ + return Vec<_Tp, cn>(a, 1./alpha, Matx_ScaleOp()); +} + +template static inline +Vec<_Tp, cn> operator - (const Vec<_Tp, cn>& a) +{ + Vec<_Tp,cn> t; + for( int i = 0; i < cn; i++ ) t.val[i] = saturate_cast<_Tp>(-a.val[i]); + return t; +} + +template inline Vec<_Tp, 4> operator * (const Vec<_Tp, 4>& v1, const Vec<_Tp, 4>& v2) +{ + return Vec<_Tp, 4>(saturate_cast<_Tp>(v1[0]*v2[0] - v1[1]*v2[1] - v1[2]*v2[2] - v1[3]*v2[3]), + saturate_cast<_Tp>(v1[0]*v2[1] + v1[1]*v2[0] + v1[2]*v2[3] - v1[3]*v2[2]), + saturate_cast<_Tp>(v1[0]*v2[2] - v1[1]*v2[3] + v1[2]*v2[0] + v1[3]*v2[1]), + saturate_cast<_Tp>(v1[0]*v2[3] + v1[1]*v2[2] - v1[2]*v2[1] + v1[3]*v2[0])); +} + +template inline Vec<_Tp, 4>& operator *= (Vec<_Tp, 4>& v1, const Vec<_Tp, 4>& v2) +{ + v1 = v1 * v2; + return v1; +} + +//! @} + +} // cv + +#endif // OPENCV_CORE_MATX_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/neon_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/neon_utils.hpp new file mode 100644 index 0000000..573ba99 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/neon_utils.hpp @@ -0,0 +1,128 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HAL_NEON_UTILS_HPP +#define OPENCV_HAL_NEON_UTILS_HPP + +#include "opencv2/core/cvdef.h" + +//! @addtogroup core_utils_neon +//! @{ + +#if CV_NEON + +inline int32x2_t cv_vrnd_s32_f32(float32x2_t v) +{ + static int32x2_t v_sign = vdup_n_s32(1 << 31), + v_05 = vreinterpret_s32_f32(vdup_n_f32(0.5f)); + + int32x2_t v_addition = vorr_s32(v_05, vand_s32(v_sign, vreinterpret_s32_f32(v))); + return vcvt_s32_f32(vadd_f32(v, vreinterpret_f32_s32(v_addition))); +} + +inline int32x4_t cv_vrndq_s32_f32(float32x4_t v) +{ + static int32x4_t v_sign = vdupq_n_s32(1 << 31), + v_05 = vreinterpretq_s32_f32(vdupq_n_f32(0.5f)); + + int32x4_t v_addition = vorrq_s32(v_05, vandq_s32(v_sign, vreinterpretq_s32_f32(v))); + return vcvtq_s32_f32(vaddq_f32(v, vreinterpretq_f32_s32(v_addition))); +} + +inline uint32x2_t cv_vrnd_u32_f32(float32x2_t v) +{ + static float32x2_t v_05 = vdup_n_f32(0.5f); + return vcvt_u32_f32(vadd_f32(v, v_05)); +} + +inline uint32x4_t cv_vrndq_u32_f32(float32x4_t v) +{ + static float32x4_t v_05 = vdupq_n_f32(0.5f); + return vcvtq_u32_f32(vaddq_f32(v, v_05)); +} + +inline float32x4_t cv_vrecpq_f32(float32x4_t val) +{ + float32x4_t reciprocal = vrecpeq_f32(val); + reciprocal = vmulq_f32(vrecpsq_f32(val, reciprocal), reciprocal); + reciprocal = vmulq_f32(vrecpsq_f32(val, reciprocal), reciprocal); + return reciprocal; +} + +inline float32x2_t cv_vrecp_f32(float32x2_t val) +{ + float32x2_t reciprocal = vrecpe_f32(val); + reciprocal = vmul_f32(vrecps_f32(val, reciprocal), reciprocal); + reciprocal = vmul_f32(vrecps_f32(val, reciprocal), reciprocal); + return reciprocal; +} + +inline float32x4_t cv_vrsqrtq_f32(float32x4_t val) +{ + float32x4_t e = vrsqrteq_f32(val); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(e, e), val), e); + e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(e, e), val), e); + return e; +} + +inline float32x2_t cv_vrsqrt_f32(float32x2_t val) +{ + float32x2_t e = vrsqrte_f32(val); + e = vmul_f32(vrsqrts_f32(vmul_f32(e, e), val), e); + e = vmul_f32(vrsqrts_f32(vmul_f32(e, e), val), e); + return e; +} + +inline float32x4_t cv_vsqrtq_f32(float32x4_t val) +{ + return cv_vrecpq_f32(cv_vrsqrtq_f32(val)); +} + +inline float32x2_t cv_vsqrt_f32(float32x2_t val) +{ + return cv_vrecp_f32(cv_vrsqrt_f32(val)); +} + +#endif + +//! @} + +#endif // OPENCV_HAL_NEON_UTILS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/ocl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/ocl.hpp new file mode 100644 index 0000000..95f0fcd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/ocl.hpp @@ -0,0 +1,843 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_OPENCL_HPP +#define OPENCV_OPENCL_HPP + +#include "opencv2/core.hpp" + +namespace cv { namespace ocl { + +//! @addtogroup core_opencl +//! @{ + +CV_EXPORTS_W bool haveOpenCL(); +CV_EXPORTS_W bool useOpenCL(); +CV_EXPORTS_W bool haveAmdBlas(); +CV_EXPORTS_W bool haveAmdFft(); +CV_EXPORTS_W void setUseOpenCL(bool flag); +CV_EXPORTS_W void finish(); + +CV_EXPORTS bool haveSVM(); + +class CV_EXPORTS Context; +class CV_EXPORTS_W_SIMPLE Device; +class CV_EXPORTS Kernel; +class CV_EXPORTS Program; +class CV_EXPORTS ProgramSource; +class CV_EXPORTS Queue; +class CV_EXPORTS PlatformInfo; +class CV_EXPORTS Image2D; + +class CV_EXPORTS_W_SIMPLE Device +{ +public: + CV_WRAP Device(); + explicit Device(void* d); + Device(const Device& d); + Device& operator = (const Device& d); + CV_WRAP ~Device(); + + void set(void* d); + + enum + { + TYPE_DEFAULT = (1 << 0), + TYPE_CPU = (1 << 1), + TYPE_GPU = (1 << 2), + TYPE_ACCELERATOR = (1 << 3), + TYPE_DGPU = TYPE_GPU + (1 << 16), + TYPE_IGPU = TYPE_GPU + (1 << 17), + TYPE_ALL = 0xFFFFFFFF + }; + + CV_WRAP String name() const; + CV_WRAP String extensions() const; + CV_WRAP bool isExtensionSupported(const String& extensionName) const; + CV_WRAP String version() const; + CV_WRAP String vendorName() const; + CV_WRAP String OpenCL_C_Version() const; + CV_WRAP String OpenCLVersion() const; + CV_WRAP int deviceVersionMajor() const; + CV_WRAP int deviceVersionMinor() const; + CV_WRAP String driverVersion() const; + void* ptr() const; + + CV_WRAP int type() const; + + CV_WRAP int addressBits() const; + CV_WRAP bool available() const; + CV_WRAP bool compilerAvailable() const; + CV_WRAP bool linkerAvailable() const; + + enum + { + FP_DENORM=(1 << 0), + FP_INF_NAN=(1 << 1), + FP_ROUND_TO_NEAREST=(1 << 2), + FP_ROUND_TO_ZERO=(1 << 3), + FP_ROUND_TO_INF=(1 << 4), + FP_FMA=(1 << 5), + FP_SOFT_FLOAT=(1 << 6), + FP_CORRECTLY_ROUNDED_DIVIDE_SQRT=(1 << 7) + }; + CV_WRAP int doubleFPConfig() const; + CV_WRAP int singleFPConfig() const; + CV_WRAP int halfFPConfig() const; + + CV_WRAP bool endianLittle() const; + CV_WRAP bool errorCorrectionSupport() const; + + enum + { + EXEC_KERNEL=(1 << 0), + EXEC_NATIVE_KERNEL=(1 << 1) + }; + CV_WRAP int executionCapabilities() const; + + CV_WRAP size_t globalMemCacheSize() const; + + enum + { + NO_CACHE=0, + READ_ONLY_CACHE=1, + READ_WRITE_CACHE=2 + }; + CV_WRAP int globalMemCacheType() const; + CV_WRAP int globalMemCacheLineSize() const; + CV_WRAP size_t globalMemSize() const; + + CV_WRAP size_t localMemSize() const; + enum + { + NO_LOCAL_MEM=0, + LOCAL_IS_LOCAL=1, + LOCAL_IS_GLOBAL=2 + }; + CV_WRAP int localMemType() const; + CV_WRAP bool hostUnifiedMemory() const; + + CV_WRAP bool imageSupport() const; + + CV_WRAP bool imageFromBufferSupport() const; + uint imagePitchAlignment() const; + uint imageBaseAddressAlignment() const; + + /// deprecated, use isExtensionSupported() method (probably with "cl_khr_subgroups" value) + CV_WRAP bool intelSubgroupsSupport() const; + + CV_WRAP size_t image2DMaxWidth() const; + CV_WRAP size_t image2DMaxHeight() const; + + CV_WRAP size_t image3DMaxWidth() const; + CV_WRAP size_t image3DMaxHeight() const; + CV_WRAP size_t image3DMaxDepth() const; + + CV_WRAP size_t imageMaxBufferSize() const; + CV_WRAP size_t imageMaxArraySize() const; + + enum + { + UNKNOWN_VENDOR=0, + VENDOR_AMD=1, + VENDOR_INTEL=2, + VENDOR_NVIDIA=3 + }; + CV_WRAP int vendorID() const; + // FIXIT + // dev.isAMD() doesn't work for OpenCL CPU devices from AMD OpenCL platform. + // This method should use platform name instead of vendor name. + // After fix restore code in arithm.cpp: ocl_compare() + CV_WRAP inline bool isAMD() const { return vendorID() == VENDOR_AMD; } + CV_WRAP inline bool isIntel() const { return vendorID() == VENDOR_INTEL; } + CV_WRAP inline bool isNVidia() const { return vendorID() == VENDOR_NVIDIA; } + + CV_WRAP int maxClockFrequency() const; + CV_WRAP int maxComputeUnits() const; + CV_WRAP int maxConstantArgs() const; + CV_WRAP size_t maxConstantBufferSize() const; + + CV_WRAP size_t maxMemAllocSize() const; + CV_WRAP size_t maxParameterSize() const; + + CV_WRAP int maxReadImageArgs() const; + CV_WRAP int maxWriteImageArgs() const; + CV_WRAP int maxSamplers() const; + + CV_WRAP size_t maxWorkGroupSize() const; + CV_WRAP int maxWorkItemDims() const; + void maxWorkItemSizes(size_t*) const; + + CV_WRAP int memBaseAddrAlign() const; + + CV_WRAP int nativeVectorWidthChar() const; + CV_WRAP int nativeVectorWidthShort() const; + CV_WRAP int nativeVectorWidthInt() const; + CV_WRAP int nativeVectorWidthLong() const; + CV_WRAP int nativeVectorWidthFloat() const; + CV_WRAP int nativeVectorWidthDouble() const; + CV_WRAP int nativeVectorWidthHalf() const; + + CV_WRAP int preferredVectorWidthChar() const; + CV_WRAP int preferredVectorWidthShort() const; + CV_WRAP int preferredVectorWidthInt() const; + CV_WRAP int preferredVectorWidthLong() const; + CV_WRAP int preferredVectorWidthFloat() const; + CV_WRAP int preferredVectorWidthDouble() const; + CV_WRAP int preferredVectorWidthHalf() const; + + CV_WRAP size_t printfBufferSize() const; + CV_WRAP size_t profilingTimerResolution() const; + + CV_WRAP static const Device& getDefault(); + +protected: + struct Impl; + Impl* p; +}; + + +class CV_EXPORTS Context +{ +public: + Context(); + explicit Context(int dtype); + ~Context(); + Context(const Context& c); + Context& operator = (const Context& c); + + bool create(); + bool create(int dtype); + size_t ndevices() const; + const Device& device(size_t idx) const; + Program getProg(const ProgramSource& prog, + const String& buildopt, String& errmsg); + void unloadProg(Program& prog); + + static Context& getDefault(bool initialize = true); + void* ptr() const; + + friend void initializeContextFromHandle(Context& ctx, void* platform, void* context, void* device); + + bool useSVM() const; + void setUseSVM(bool enabled); + + struct Impl; + inline Impl* getImpl() const { return (Impl*)p; } +//protected: + Impl* p; +}; + +class CV_EXPORTS Platform +{ +public: + Platform(); + ~Platform(); + Platform(const Platform& p); + Platform& operator = (const Platform& p); + + void* ptr() const; + static Platform& getDefault(); + + friend void initializeContextFromHandle(Context& ctx, void* platform, void* context, void* device); +protected: + struct Impl; + Impl* p; +}; + +/** @brief Attaches OpenCL context to OpenCV +@note + OpenCV will check if available OpenCL platform has platformName name, then assign context to + OpenCV and call `clRetainContext` function. The deviceID device will be used as target device and + new command queue will be created. +@param platformName name of OpenCL platform to attach, this string is used to check if platform is available to OpenCV at runtime +@param platformID ID of platform attached context was created for +@param context OpenCL context to be attached to OpenCV +@param deviceID ID of device, must be created from attached context +*/ +CV_EXPORTS void attachContext(const String& platformName, void* platformID, void* context, void* deviceID); + +/** @brief Convert OpenCL buffer to UMat +@note + OpenCL buffer (cl_mem_buffer) should contain 2D image data, compatible with OpenCV. Memory + content is not copied from `clBuffer` to UMat. Instead, buffer handle assigned to UMat and + `clRetainMemObject` is called. +@param cl_mem_buffer source clBuffer handle +@param step num of bytes in single row +@param rows number of rows +@param cols number of cols +@param type OpenCV type of image +@param dst destination UMat +*/ +CV_EXPORTS void convertFromBuffer(void* cl_mem_buffer, size_t step, int rows, int cols, int type, UMat& dst); + +/** @brief Convert OpenCL image2d_t to UMat +@note + OpenCL `image2d_t` (cl_mem_image), should be compatible with OpenCV UMat formats. Memory content + is copied from image to UMat with `clEnqueueCopyImageToBuffer` function. +@param cl_mem_image source image2d_t handle +@param dst destination UMat +*/ +CV_EXPORTS void convertFromImage(void* cl_mem_image, UMat& dst); + +// TODO Move to internal header +void initializeContextFromHandle(Context& ctx, void* platform, void* context, void* device); + +class CV_EXPORTS Queue +{ +public: + Queue(); + explicit Queue(const Context& c, const Device& d=Device()); + ~Queue(); + Queue(const Queue& q); + Queue& operator = (const Queue& q); + + bool create(const Context& c=Context(), const Device& d=Device()); + void finish(); + void* ptr() const; + static Queue& getDefault(); + + /// @brief Returns OpenCL command queue with enable profiling mode support + const Queue& getProfilingQueue() const; + + struct Impl; friend struct Impl; + inline Impl* getImpl() const { return p; } +protected: + Impl* p; +}; + + +class CV_EXPORTS KernelArg +{ +public: + enum { LOCAL=1, READ_ONLY=2, WRITE_ONLY=4, READ_WRITE=6, CONSTANT=8, PTR_ONLY = 16, NO_SIZE=256 }; + KernelArg(int _flags, UMat* _m, int wscale=1, int iwscale=1, const void* _obj=0, size_t _sz=0); + KernelArg(); + + static KernelArg Local(size_t localMemSize) + { return KernelArg(LOCAL, 0, 1, 1, 0, localMemSize); } + static KernelArg PtrWriteOnly(const UMat& m) + { return KernelArg(PTR_ONLY+WRITE_ONLY, (UMat*)&m); } + static KernelArg PtrReadOnly(const UMat& m) + { return KernelArg(PTR_ONLY+READ_ONLY, (UMat*)&m); } + static KernelArg PtrReadWrite(const UMat& m) + { return KernelArg(PTR_ONLY+READ_WRITE, (UMat*)&m); } + static KernelArg ReadWrite(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(READ_WRITE, (UMat*)&m, wscale, iwscale); } + static KernelArg ReadWriteNoSize(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(READ_WRITE+NO_SIZE, (UMat*)&m, wscale, iwscale); } + static KernelArg ReadOnly(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(READ_ONLY, (UMat*)&m, wscale, iwscale); } + static KernelArg WriteOnly(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(WRITE_ONLY, (UMat*)&m, wscale, iwscale); } + static KernelArg ReadOnlyNoSize(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(READ_ONLY+NO_SIZE, (UMat*)&m, wscale, iwscale); } + static KernelArg WriteOnlyNoSize(const UMat& m, int wscale=1, int iwscale=1) + { return KernelArg(WRITE_ONLY+NO_SIZE, (UMat*)&m, wscale, iwscale); } + static KernelArg Constant(const Mat& m); + template static KernelArg Constant(const _Tp* arr, size_t n) + { return KernelArg(CONSTANT, 0, 1, 1, (void*)arr, n); } + + int flags; + UMat* m; + const void* obj; + size_t sz; + int wscale, iwscale; +}; + + +class CV_EXPORTS Kernel +{ +public: + Kernel(); + Kernel(const char* kname, const Program& prog); + Kernel(const char* kname, const ProgramSource& prog, + const String& buildopts = String(), String* errmsg=0); + ~Kernel(); + Kernel(const Kernel& k); + Kernel& operator = (const Kernel& k); + + bool empty() const; + bool create(const char* kname, const Program& prog); + bool create(const char* kname, const ProgramSource& prog, + const String& buildopts, String* errmsg=0); + + int set(int i, const void* value, size_t sz); + int set(int i, const Image2D& image2D); + int set(int i, const UMat& m); + int set(int i, const KernelArg& arg); + template int set(int i, const _Tp& value) + { return set(i, &value, sizeof(value)); } + + template + Kernel& args(const _Tp0& a0) + { + set(0, a0); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1) + { + int i = set(0, a0); set(i, a1); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2) + { + int i = set(0, a0); i = set(i, a1); set(i, a2); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, + const _Tp3& a3, const _Tp4& a4) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); + i = set(i, a3); set(i, a4); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, + const _Tp3& a3, const _Tp4& a4, const _Tp5& a5) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); + i = set(i, a3); i = set(i, a4); set(i, a5); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); + i = set(i, a4); i = set(i, a5); set(i, a6); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); + i = set(i, a4); i = set(i, a5); i = set(i, a6); set(i, a7); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); + i = set(i, a5); i = set(i, a6); i = set(i, a7); set(i, a8); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); set(i, a9); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); set(i, a10); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10, const _Tp11& a11) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); i = set(i, a10); set(i, a11); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10, const _Tp11& a11, + const _Tp12& a12) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); i = set(i, a10); i = set(i, a11); + set(i, a12); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10, const _Tp11& a11, + const _Tp12& a12, const _Tp13& a13) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); i = set(i, a10); i = set(i, a11); + i = set(i, a12); set(i, a13); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10, const _Tp11& a11, + const _Tp12& a12, const _Tp13& a13, const _Tp14& a14) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); i = set(i, a10); i = set(i, a11); + i = set(i, a12); i = set(i, a13); set(i, a14); return *this; + } + + template + Kernel& args(const _Tp0& a0, const _Tp1& a1, const _Tp2& a2, const _Tp3& a3, + const _Tp4& a4, const _Tp5& a5, const _Tp6& a6, const _Tp7& a7, + const _Tp8& a8, const _Tp9& a9, const _Tp10& a10, const _Tp11& a11, + const _Tp12& a12, const _Tp13& a13, const _Tp14& a14, const _Tp15& a15) + { + int i = set(0, a0); i = set(i, a1); i = set(i, a2); i = set(i, a3); i = set(i, a4); i = set(i, a5); + i = set(i, a6); i = set(i, a7); i = set(i, a8); i = set(i, a9); i = set(i, a10); i = set(i, a11); + i = set(i, a12); i = set(i, a13); i = set(i, a14); set(i, a15); return *this; + } + /** @brief Run the OpenCL kernel. + @param dims the work problem dimensions. It is the length of globalsize and localsize. It can be either 1, 2 or 3. + @param globalsize work items for each dimension. It is not the final globalsize passed to + OpenCL. Each dimension will be adjusted to the nearest integer divisible by the corresponding + value in localsize. If localsize is NULL, it will still be adjusted depending on dims. The + adjusted values are greater than or equal to the original values. + @param localsize work-group size for each dimension. + @param sync specify whether to wait for OpenCL computation to finish before return. + @param q command queue + */ + bool run(int dims, size_t globalsize[], + size_t localsize[], bool sync, const Queue& q=Queue()); + bool runTask(bool sync, const Queue& q=Queue()); + + /** @brief Similar to synchronized run() call with returning of kernel execution time + * Separate OpenCL command queue may be used (with CL_QUEUE_PROFILING_ENABLE) + * @return Execution time in nanoseconds or negative number on error + */ + int64 runProfiling(int dims, size_t globalsize[], size_t localsize[], const Queue& q=Queue()); + + size_t workGroupSize() const; + size_t preferedWorkGroupSizeMultiple() const; + bool compileWorkGroupSize(size_t wsz[]) const; + size_t localMemSize() const; + + void* ptr() const; + struct Impl; + +protected: + Impl* p; +}; + +class CV_EXPORTS Program +{ +public: + Program(); + Program(const ProgramSource& src, + const String& buildflags, String& errmsg); + Program(const Program& prog); + + Program& operator = (const Program& prog); + ~Program(); + + bool create(const ProgramSource& src, + const String& buildflags, String& errmsg); + + void* ptr() const; + + /** + * @brief Query device-specific program binary. + * + * Returns RAW OpenCL executable binary without additional attachments. + * + * @sa ProgramSource::fromBinary + * + * @param[out] binary output buffer + */ + void getBinary(std::vector& binary) const; + + struct Impl; friend struct Impl; + inline Impl* getImpl() const { return (Impl*)p; } +protected: + Impl* p; +public: +#ifndef OPENCV_REMOVE_DEPRECATED_API + // TODO Remove this + CV_DEPRECATED bool read(const String& buf, const String& buildflags); // removed, use ProgramSource instead + CV_DEPRECATED bool write(String& buf) const; // removed, use getBinary() method instead (RAW OpenCL binary) + CV_DEPRECATED const ProgramSource& source() const; // implementation removed + CV_DEPRECATED String getPrefix() const; // deprecated, implementation replaced + CV_DEPRECATED static String getPrefix(const String& buildflags); // deprecated, implementation replaced +#endif +}; + + +class CV_EXPORTS ProgramSource +{ +public: + typedef uint64 hash_t; // deprecated + + ProgramSource(); + explicit ProgramSource(const String& module, const String& name, const String& codeStr, const String& codeHash); + explicit ProgramSource(const String& prog); // deprecated + explicit ProgramSource(const char* prog); // deprecated + ~ProgramSource(); + ProgramSource(const ProgramSource& prog); + ProgramSource& operator = (const ProgramSource& prog); + + const String& source() const; // deprecated + hash_t hash() const; // deprecated + + + /** @brief Describe OpenCL program binary. + * Do not call clCreateProgramWithBinary() and/or clBuildProgram(). + * + * Caller should guarantee binary buffer lifetime greater than ProgramSource object (and any of its copies). + * + * This kind of binary is not portable between platforms in general - it is specific to OpenCL vendor / device / driver version. + * + * @param module name of program owner module + * @param name unique name of program (module+name is used as key for OpenCL program caching) + * @param binary buffer address. See buffer lifetime requirement in description. + * @param size buffer size + * @param buildOptions additional program-related build options passed to clBuildProgram() + * @return created ProgramSource object + */ + static ProgramSource fromBinary(const String& module, const String& name, + const unsigned char* binary, const size_t size, + const cv::String& buildOptions = cv::String()); + + /** @brief Describe OpenCL program in SPIR format. + * Do not call clCreateProgramWithBinary() and/or clBuildProgram(). + * + * Supports SPIR 1.2 by default (pass '-spir-std=X.Y' in buildOptions to override this behavior) + * + * Caller should guarantee binary buffer lifetime greater than ProgramSource object (and any of its copies). + * + * Programs in this format are portable between OpenCL implementations with 'khr_spir' extension: + * https://www.khronos.org/registry/OpenCL/sdk/2.0/docs/man/xhtml/cl_khr_spir.html + * (but they are not portable between different platforms: 32-bit / 64-bit) + * + * Note: these programs can't support vendor specific extensions, like 'cl_intel_subgroups'. + * + * @param module name of program owner module + * @param name unique name of program (module+name is used as key for OpenCL program caching) + * @param binary buffer address. See buffer lifetime requirement in description. + * @param size buffer size + * @param buildOptions additional program-related build options passed to clBuildProgram() + * (these options are added automatically: '-x spir' and '-spir-std=1.2') + * @return created ProgramSource object. + */ + static ProgramSource fromSPIR(const String& module, const String& name, + const unsigned char* binary, const size_t size, + const cv::String& buildOptions = cv::String()); + + //OpenCL 2.1+ only + //static Program fromSPIRV(const String& module, const String& name, + // const unsigned char* binary, const size_t size, + // const cv::String& buildOptions = cv::String()); + + struct Impl; friend struct Impl; + inline Impl* getImpl() const { return (Impl*)p; } +protected: + Impl* p; +}; + +class CV_EXPORTS PlatformInfo +{ +public: + PlatformInfo(); + explicit PlatformInfo(void* id); + ~PlatformInfo(); + + PlatformInfo(const PlatformInfo& i); + PlatformInfo& operator =(const PlatformInfo& i); + + String name() const; + String vendor() const; + String version() const; + int deviceNumber() const; + void getDevice(Device& device, int d) const; + +protected: + struct Impl; + Impl* p; +}; + +CV_EXPORTS const char* convertTypeStr(int sdepth, int ddepth, int cn, char* buf); +CV_EXPORTS const char* typeToStr(int t); +CV_EXPORTS const char* memopTypeToStr(int t); +CV_EXPORTS const char* vecopTypeToStr(int t); +CV_EXPORTS const char* getOpenCLErrorString(int errorCode); +CV_EXPORTS String kernelToStr(InputArray _kernel, int ddepth = -1, const char * name = NULL); +CV_EXPORTS void getPlatfomsInfo(std::vector& platform_info); + + +enum OclVectorStrategy +{ + // all matrices have its own vector width + OCL_VECTOR_OWN = 0, + // all matrices have maximal vector width among all matrices + // (useful for cases when matrices have different data types) + OCL_VECTOR_MAX = 1, + + // default strategy + OCL_VECTOR_DEFAULT = OCL_VECTOR_OWN +}; + +CV_EXPORTS int predictOptimalVectorWidth(InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), + InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), + InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), + OclVectorStrategy strat = OCL_VECTOR_DEFAULT); + +CV_EXPORTS int checkOptimalVectorWidth(const int *vectorWidths, + InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), + InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), + InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), + OclVectorStrategy strat = OCL_VECTOR_DEFAULT); + +// with OCL_VECTOR_MAX strategy +CV_EXPORTS int predictOptimalVectorWidthMax(InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), + InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), + InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray()); + +CV_EXPORTS void buildOptionsAddMatrixDescription(String& buildOptions, const String& name, InputArray _m); + +class CV_EXPORTS Image2D +{ +public: + Image2D(); + + /** + @param src UMat object from which to get image properties and data + @param norm flag to enable the use of normalized channel data types + @param alias flag indicating that the image should alias the src UMat. If true, changes to the + image or src will be reflected in both objects. + */ + explicit Image2D(const UMat &src, bool norm = false, bool alias = false); + Image2D(const Image2D & i); + ~Image2D(); + + Image2D & operator = (const Image2D & i); + + /** Indicates if creating an aliased image should succeed. + Depends on the underlying platform and the dimensions of the UMat. + */ + static bool canCreateAlias(const UMat &u); + + /** Indicates if the image format is supported. + */ + static bool isFormatSupported(int depth, int cn, bool norm); + + void* ptr() const; +protected: + struct Impl; + Impl* p; +}; + +class CV_EXPORTS Timer +{ +public: + Timer(const Queue& q); + ~Timer(); + void start(); + void stop(); + + uint64 durationNS() const; //< duration in nanoseconds + +protected: + struct Impl; + Impl* const p; + +private: + Timer(const Timer&); // disabled + Timer& operator=(const Timer&); // disabled +}; + +CV_EXPORTS MatAllocator* getOpenCLAllocator(); + + +#ifdef __OPENCV_BUILD +namespace internal { + +CV_EXPORTS bool isOpenCLForced(); +#define OCL_FORCE_CHECK(condition) (cv::ocl::internal::isOpenCLForced() || (condition)) + +CV_EXPORTS bool isPerformanceCheckBypassed(); +#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::internal::isPerformanceCheckBypassed() || (condition)) + +CV_EXPORTS bool isCLBuffer(UMat& u); + +} // namespace internal +#endif + +//! @} + +}} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/ocl_genbase.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/ocl_genbase.hpp new file mode 100644 index 0000000..5334cf1 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/ocl_genbase.hpp @@ -0,0 +1,69 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_OPENCL_GENBASE_HPP +#define OPENCV_OPENCL_GENBASE_HPP + +//! @cond IGNORED + +namespace cv { +namespace ocl { + +class ProgramSource; + +namespace internal { + +struct CV_EXPORTS ProgramEntry +{ + const char* module; + const char* name; + const char* programCode; + const char* programHash; + ProgramSource* pProgramSource; + + operator ProgramSource& () const; +}; + +} } } // namespace + +//! @endcond + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/ocl_defs.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/ocl_defs.hpp new file mode 100644 index 0000000..14df750 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/ocl_defs.hpp @@ -0,0 +1,82 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. + +#ifndef OPENCV_CORE_OPENCL_DEFS_HPP +#define OPENCV_CORE_OPENCL_DEFS_HPP + +#include "opencv2/core/utility.hpp" +#include "cvconfig.h" + +namespace cv { namespace ocl { +#ifdef HAVE_OPENCL +/// Call is similar to useOpenCL() but doesn't try to load OpenCL runtime or create OpenCL context +CV_EXPORTS bool isOpenCLActivated(); +#else +static inline bool isOpenCLActivated() { return false; } +#endif +}} // namespace + + +//#define CV_OPENCL_RUN_ASSERT + +#ifdef HAVE_OPENCL + +#ifdef CV_OPENCL_RUN_VERBOSE +#define CV_OCL_RUN_(condition, func, ...) \ + { \ + if (cv::ocl::isOpenCLActivated() && (condition) && func) \ + { \ + printf("%s: OpenCL implementation is running\n", CV_Func); \ + fflush(stdout); \ + CV_IMPL_ADD(CV_IMPL_OCL); \ + return __VA_ARGS__; \ + } \ + else \ + { \ + printf("%s: Plain implementation is running\n", CV_Func); \ + fflush(stdout); \ + } \ + } +#elif defined CV_OPENCL_RUN_ASSERT +#define CV_OCL_RUN_(condition, func, ...) \ + { \ + if (cv::ocl::isOpenCLActivated() && (condition)) \ + { \ + if(func) \ + { \ + CV_IMPL_ADD(CV_IMPL_OCL); \ + } \ + else \ + { \ + CV_Error(cv::Error::StsAssert, #func); \ + } \ + return __VA_ARGS__; \ + } \ + } +#else +#define CV_OCL_RUN_(condition, func, ...) \ +try \ +{ \ + if (cv::ocl::isOpenCLActivated() && (condition) && func) \ + { \ + CV_IMPL_ADD(CV_IMPL_OCL); \ + return __VA_ARGS__; \ + } \ +} \ +catch (const cv::Exception& e) \ +{ \ + CV_UNUSED(e); /* TODO: Add some logging here */ \ +} +#endif + +#else +#define CV_OCL_RUN_(condition, func, ...) +#endif + +#define CV_OCL_RUN(condition, func) CV_OCL_RUN_(condition, func) + +#endif // OPENCV_CORE_OPENCL_DEFS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_info.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_info.hpp new file mode 100644 index 0000000..b5d3739 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_info.hpp @@ -0,0 +1,198 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include + +#include +#include + +#ifndef DUMP_CONFIG_PROPERTY +#define DUMP_CONFIG_PROPERTY(...) +#endif + +#ifndef DUMP_MESSAGE_STDOUT +#define DUMP_MESSAGE_STDOUT(...) do { std::cout << __VA_ARGS__ << std::endl; } while (false) +#endif + +namespace cv { + +namespace { +static std::string bytesToStringRepr(size_t value) +{ + size_t b = value % 1024; + value /= 1024; + + size_t kb = value % 1024; + value /= 1024; + + size_t mb = value % 1024; + value /= 1024; + + size_t gb = value; + + std::ostringstream stream; + + if (gb > 0) + stream << gb << " GB "; + if (mb > 0) + stream << mb << " MB "; + if (kb > 0) + stream << kb << " KB "; + if (b > 0) + stream << b << " B"; + + std::string s = stream.str(); + if (s[s.size() - 1] == ' ') + s = s.substr(0, s.size() - 1); + return s; +} +} // namespace + +static void dumpOpenCLInformation() +{ + using namespace cv::ocl; + + try + { + if (!haveOpenCL() || !useOpenCL()) + { + DUMP_MESSAGE_STDOUT("OpenCL is disabled"); + DUMP_CONFIG_PROPERTY("cv_ocl", "disabled"); + return; + } + + std::vector platforms; + cv::ocl::getPlatfomsInfo(platforms); + if (platforms.size() > 0) + { + DUMP_MESSAGE_STDOUT("OpenCL Platforms: "); + for (size_t i = 0; i < platforms.size(); i++) + { + const PlatformInfo* platform = &platforms[i]; + DUMP_MESSAGE_STDOUT(" " << platform->name().c_str()); + Device current_device; + for (int j = 0; j < platform->deviceNumber(); j++) + { + platform->getDevice(current_device, j); + const char* deviceTypeStr = current_device.type() == Device::TYPE_CPU + ? ("CPU") : (current_device.type() == Device::TYPE_GPU ? current_device.hostUnifiedMemory() ? "iGPU" : "dGPU" : "unknown"); + DUMP_MESSAGE_STDOUT( " " << deviceTypeStr << ": " << current_device.name().c_str() << " (" << current_device.version().c_str() << ")"); + DUMP_CONFIG_PROPERTY( cv::format("cv_ocl_platform_%d_device_%d", (int)i, (int)j ), + cv::format("(Platform=%s)(Type=%s)(Name=%s)(Version=%s)", + platform->name().c_str(), deviceTypeStr, current_device.name().c_str(), current_device.version().c_str()) ); + } + } + } + else + { + DUMP_MESSAGE_STDOUT("OpenCL is not available"); + DUMP_CONFIG_PROPERTY("cv_ocl", "not available"); + return; + } + + const Device& device = Device::getDefault(); + if (!device.available()) + CV_Error(Error::OpenCLInitError, "OpenCL device is not available"); + + DUMP_MESSAGE_STDOUT("Current OpenCL device: "); + +#if 0 + DUMP_MESSAGE_STDOUT(" Platform = " << device.getPlatform().name()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_platformName", device.getPlatform().name()); +#endif + + const char* deviceTypeStr = device.type() == Device::TYPE_CPU + ? ("CPU") : (device.type() == Device::TYPE_GPU ? device.hostUnifiedMemory() ? "iGPU" : "dGPU" : "unknown"); + DUMP_MESSAGE_STDOUT(" Type = " << deviceTypeStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_deviceType", deviceTypeStr); + + DUMP_MESSAGE_STDOUT(" Name = " << device.name()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_deviceName", device.name()); + + DUMP_MESSAGE_STDOUT(" Version = " << device.version()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_deviceVersion", device.version()); + + DUMP_MESSAGE_STDOUT(" Driver version = " << device.driverVersion()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_driverVersion", device.driverVersion()); + + DUMP_MESSAGE_STDOUT(" Address bits = " << device.addressBits()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_addressBits", device.addressBits()); + + DUMP_MESSAGE_STDOUT(" Compute units = " << device.maxComputeUnits()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_maxComputeUnits", device.maxComputeUnits()); + + DUMP_MESSAGE_STDOUT(" Max work group size = " << device.maxWorkGroupSize()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_maxWorkGroupSize", device.maxWorkGroupSize()); + + std::string localMemorySizeStr = bytesToStringRepr(device.localMemSize()); + DUMP_MESSAGE_STDOUT(" Local memory size = " << localMemorySizeStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_localMemSize", device.localMemSize()); + + std::string maxMemAllocSizeStr = bytesToStringRepr(device.maxMemAllocSize()); + DUMP_MESSAGE_STDOUT(" Max memory allocation size = " << maxMemAllocSizeStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_maxMemAllocSize", device.maxMemAllocSize()); + + const char* doubleSupportStr = device.doubleFPConfig() > 0 ? "Yes" : "No"; + DUMP_MESSAGE_STDOUT(" Double support = " << doubleSupportStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_haveDoubleSupport", device.doubleFPConfig() > 0); + + const char* isUnifiedMemoryStr = device.hostUnifiedMemory() ? "Yes" : "No"; + DUMP_MESSAGE_STDOUT(" Host unified memory = " << isUnifiedMemoryStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_hostUnifiedMemory", device.hostUnifiedMemory()); + + DUMP_MESSAGE_STDOUT(" Device extensions:"); + String extensionsStr = device.extensions(); + size_t pos = 0; + while (pos < extensionsStr.size()) + { + size_t pos2 = extensionsStr.find(' ', pos); + if (pos2 == String::npos) + pos2 = extensionsStr.size(); + if (pos2 > pos) + { + String extensionName = extensionsStr.substr(pos, pos2 - pos); + DUMP_MESSAGE_STDOUT(" " << extensionName); + } + pos = pos2 + 1; + } + DUMP_CONFIG_PROPERTY("cv_ocl_current_extensions", extensionsStr.c_str()); + + const char* haveAmdBlasStr = haveAmdBlas() ? "Yes" : "No"; + DUMP_MESSAGE_STDOUT(" Has AMD Blas = " << haveAmdBlasStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_AmdBlas", haveAmdBlas()); + + const char* haveAmdFftStr = haveAmdFft() ? "Yes" : "No"; + DUMP_MESSAGE_STDOUT(" Has AMD Fft = " << haveAmdFftStr); + DUMP_CONFIG_PROPERTY("cv_ocl_current_AmdFft", haveAmdFft()); + + + DUMP_MESSAGE_STDOUT(" Preferred vector width char = " << device.preferredVectorWidthChar()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthChar", device.preferredVectorWidthChar()); + + DUMP_MESSAGE_STDOUT(" Preferred vector width short = " << device.preferredVectorWidthShort()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthShort", device.preferredVectorWidthShort()); + + DUMP_MESSAGE_STDOUT(" Preferred vector width int = " << device.preferredVectorWidthInt()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthInt", device.preferredVectorWidthInt()); + + DUMP_MESSAGE_STDOUT(" Preferred vector width long = " << device.preferredVectorWidthLong()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthLong", device.preferredVectorWidthLong()); + + DUMP_MESSAGE_STDOUT(" Preferred vector width float = " << device.preferredVectorWidthFloat()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthFloat", device.preferredVectorWidthFloat()); + + DUMP_MESSAGE_STDOUT(" Preferred vector width double = " << device.preferredVectorWidthDouble()); + DUMP_CONFIG_PROPERTY("cv_ocl_current_preferredVectorWidthDouble", device.preferredVectorWidthDouble()); + } + catch (...) + { + DUMP_MESSAGE_STDOUT("Exception. Can't dump OpenCL info"); + DUMP_MESSAGE_STDOUT("OpenCL device not available"); + DUMP_CONFIG_PROPERTY("cv_ocl", "not available"); + } +} +#undef DUMP_MESSAGE_STDOUT +#undef DUMP_CONFIG_PROPERTY + +} // namespace diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_svm.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_svm.hpp new file mode 100644 index 0000000..7453082 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/opencl_svm.hpp @@ -0,0 +1,81 @@ +/* See LICENSE file in the root OpenCV directory */ + +#ifndef OPENCV_CORE_OPENCL_SVM_HPP +#define OPENCV_CORE_OPENCL_SVM_HPP + +// +// Internal usage only (binary compatibility is not guaranteed) +// +#ifndef __OPENCV_BUILD +#error Internal header file +#endif + +#if defined(HAVE_OPENCL) && defined(HAVE_OPENCL_SVM) +#include "runtime/opencl_core.hpp" +#include "runtime/opencl_svm_20.hpp" +#include "runtime/opencl_svm_hsa_extension.hpp" + +namespace cv { namespace ocl { namespace svm { + +struct SVMCapabilities +{ + enum Value + { + SVM_COARSE_GRAIN_BUFFER = (1 << 0), + SVM_FINE_GRAIN_BUFFER = (1 << 1), + SVM_FINE_GRAIN_SYSTEM = (1 << 2), + SVM_ATOMICS = (1 << 3), + }; + int value_; + + SVMCapabilities(int capabilities = 0) : value_(capabilities) { } + operator int() const { return value_; } + + inline bool isNoSVMSupport() const { return value_ == 0; } + inline bool isSupportCoarseGrainBuffer() const { return (value_ & SVM_COARSE_GRAIN_BUFFER) != 0; } + inline bool isSupportFineGrainBuffer() const { return (value_ & SVM_FINE_GRAIN_BUFFER) != 0; } + inline bool isSupportFineGrainSystem() const { return (value_ & SVM_FINE_GRAIN_SYSTEM) != 0; } + inline bool isSupportAtomics() const { return (value_ & SVM_ATOMICS) != 0; } +}; + +CV_EXPORTS const SVMCapabilities getSVMCapabilitites(const ocl::Context& context); + +struct SVMFunctions +{ + clSVMAllocAMD_fn fn_clSVMAlloc; + clSVMFreeAMD_fn fn_clSVMFree; + clSetKernelArgSVMPointerAMD_fn fn_clSetKernelArgSVMPointer; + //clSetKernelExecInfoAMD_fn fn_clSetKernelExecInfo; + //clEnqueueSVMFreeAMD_fn fn_clEnqueueSVMFree; + clEnqueueSVMMemcpyAMD_fn fn_clEnqueueSVMMemcpy; + clEnqueueSVMMemFillAMD_fn fn_clEnqueueSVMMemFill; + clEnqueueSVMMapAMD_fn fn_clEnqueueSVMMap; + clEnqueueSVMUnmapAMD_fn fn_clEnqueueSVMUnmap; + + inline SVMFunctions() + : fn_clSVMAlloc(NULL), fn_clSVMFree(NULL), + fn_clSetKernelArgSVMPointer(NULL), /*fn_clSetKernelExecInfo(NULL),*/ + /*fn_clEnqueueSVMFree(NULL),*/ fn_clEnqueueSVMMemcpy(NULL), fn_clEnqueueSVMMemFill(NULL), + fn_clEnqueueSVMMap(NULL), fn_clEnqueueSVMUnmap(NULL) + { + // nothing + } + + inline bool isValid() const + { + return fn_clSVMAlloc != NULL && fn_clSVMFree && fn_clSetKernelArgSVMPointer && + /*fn_clSetKernelExecInfo && fn_clEnqueueSVMFree &&*/ fn_clEnqueueSVMMemcpy && + fn_clEnqueueSVMMemFill && fn_clEnqueueSVMMap && fn_clEnqueueSVMUnmap; + } +}; + +// We should guarantee that SVMFunctions lifetime is not less than context's lifetime +CV_EXPORTS const SVMFunctions* getSVMFunctions(const ocl::Context& context); + +CV_EXPORTS bool useSVM(UMatUsageFlags usageFlags); + +}}} //namespace cv::ocl::svm +#endif + +#endif // OPENCV_CORE_OPENCL_SVM_HPP +/* End of file. */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp new file mode 100644 index 0000000..65c8493 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp @@ -0,0 +1,714 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP +#error "Invalid usage" +#endif + +// generated by parser_clamdblas.py +#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_ +#define clAmdBlasCaxpy clAmdBlasCaxpy_ +#define clAmdBlasCcopy clAmdBlasCcopy_ +#define clAmdBlasCdotc clAmdBlasCdotc_ +#define clAmdBlasCdotu clAmdBlasCdotu_ +#define clAmdBlasCgbmv clAmdBlasCgbmv_ +#define clAmdBlasCgemm clAmdBlasCgemm_ +#define clAmdBlasCgemmEx clAmdBlasCgemmEx_ +#define clAmdBlasCgemv clAmdBlasCgemv_ +#define clAmdBlasCgemvEx clAmdBlasCgemvEx_ +#define clAmdBlasCgerc clAmdBlasCgerc_ +#define clAmdBlasCgeru clAmdBlasCgeru_ +#define clAmdBlasChbmv clAmdBlasChbmv_ +#define clAmdBlasChemm clAmdBlasChemm_ +#define clAmdBlasChemv clAmdBlasChemv_ +#define clAmdBlasCher clAmdBlasCher_ +#define clAmdBlasCher2 clAmdBlasCher2_ +#define clAmdBlasCher2k clAmdBlasCher2k_ +#define clAmdBlasCherk clAmdBlasCherk_ +#define clAmdBlasChpmv clAmdBlasChpmv_ +#define clAmdBlasChpr clAmdBlasChpr_ +#define clAmdBlasChpr2 clAmdBlasChpr2_ +#define clAmdBlasCrotg clAmdBlasCrotg_ +#define clAmdBlasCscal clAmdBlasCscal_ +#define clAmdBlasCsrot clAmdBlasCsrot_ +#define clAmdBlasCsscal clAmdBlasCsscal_ +#define clAmdBlasCswap clAmdBlasCswap_ +#define clAmdBlasCsymm clAmdBlasCsymm_ +#define clAmdBlasCsyr2k clAmdBlasCsyr2k_ +#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_ +#define clAmdBlasCsyrk clAmdBlasCsyrk_ +#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_ +#define clAmdBlasCtbmv clAmdBlasCtbmv_ +#define clAmdBlasCtbsv clAmdBlasCtbsv_ +#define clAmdBlasCtpmv clAmdBlasCtpmv_ +#define clAmdBlasCtpsv clAmdBlasCtpsv_ +#define clAmdBlasCtrmm clAmdBlasCtrmm_ +#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_ +#define clAmdBlasCtrmv clAmdBlasCtrmv_ +#define clAmdBlasCtrsm clAmdBlasCtrsm_ +#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_ +#define clAmdBlasCtrsv clAmdBlasCtrsv_ +#define clAmdBlasDasum clAmdBlasDasum_ +#define clAmdBlasDaxpy clAmdBlasDaxpy_ +#define clAmdBlasDcopy clAmdBlasDcopy_ +#define clAmdBlasDdot clAmdBlasDdot_ +#define clAmdBlasDgbmv clAmdBlasDgbmv_ +#define clAmdBlasDgemm clAmdBlasDgemm_ +#define clAmdBlasDgemmEx clAmdBlasDgemmEx_ +#define clAmdBlasDgemv clAmdBlasDgemv_ +#define clAmdBlasDgemvEx clAmdBlasDgemvEx_ +#define clAmdBlasDger clAmdBlasDger_ +#define clAmdBlasDnrm2 clAmdBlasDnrm2_ +#define clAmdBlasDrot clAmdBlasDrot_ +#define clAmdBlasDrotg clAmdBlasDrotg_ +#define clAmdBlasDrotm clAmdBlasDrotm_ +#define clAmdBlasDrotmg clAmdBlasDrotmg_ +#define clAmdBlasDsbmv clAmdBlasDsbmv_ +#define clAmdBlasDscal clAmdBlasDscal_ +#define clAmdBlasDspmv clAmdBlasDspmv_ +#define clAmdBlasDspr clAmdBlasDspr_ +#define clAmdBlasDspr2 clAmdBlasDspr2_ +#define clAmdBlasDswap clAmdBlasDswap_ +#define clAmdBlasDsymm clAmdBlasDsymm_ +#define clAmdBlasDsymv clAmdBlasDsymv_ +#define clAmdBlasDsymvEx clAmdBlasDsymvEx_ +#define clAmdBlasDsyr clAmdBlasDsyr_ +#define clAmdBlasDsyr2 clAmdBlasDsyr2_ +#define clAmdBlasDsyr2k clAmdBlasDsyr2k_ +#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_ +#define clAmdBlasDsyrk clAmdBlasDsyrk_ +#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_ +#define clAmdBlasDtbmv clAmdBlasDtbmv_ +#define clAmdBlasDtbsv clAmdBlasDtbsv_ +#define clAmdBlasDtpmv clAmdBlasDtpmv_ +#define clAmdBlasDtpsv clAmdBlasDtpsv_ +#define clAmdBlasDtrmm clAmdBlasDtrmm_ +#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_ +#define clAmdBlasDtrmv clAmdBlasDtrmv_ +#define clAmdBlasDtrsm clAmdBlasDtrsm_ +#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_ +#define clAmdBlasDtrsv clAmdBlasDtrsv_ +#define clAmdBlasDzasum clAmdBlasDzasum_ +#define clAmdBlasDznrm2 clAmdBlasDznrm2_ +#define clAmdBlasGetVersion clAmdBlasGetVersion_ +#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_ +#define clAmdBlasSasum clAmdBlasSasum_ +#define clAmdBlasSaxpy clAmdBlasSaxpy_ +#define clAmdBlasScasum clAmdBlasScasum_ +#define clAmdBlasScnrm2 clAmdBlasScnrm2_ +#define clAmdBlasScopy clAmdBlasScopy_ +#define clAmdBlasSdot clAmdBlasSdot_ +#define clAmdBlasSetup clAmdBlasSetup_ +#define clAmdBlasSgbmv clAmdBlasSgbmv_ +#define clAmdBlasSgemm clAmdBlasSgemm_ +#define clAmdBlasSgemmEx clAmdBlasSgemmEx_ +#define clAmdBlasSgemv clAmdBlasSgemv_ +#define clAmdBlasSgemvEx clAmdBlasSgemvEx_ +#define clAmdBlasSger clAmdBlasSger_ +#define clAmdBlasSnrm2 clAmdBlasSnrm2_ +#define clAmdBlasSrot clAmdBlasSrot_ +#define clAmdBlasSrotg clAmdBlasSrotg_ +#define clAmdBlasSrotm clAmdBlasSrotm_ +#define clAmdBlasSrotmg clAmdBlasSrotmg_ +#define clAmdBlasSsbmv clAmdBlasSsbmv_ +#define clAmdBlasSscal clAmdBlasSscal_ +#define clAmdBlasSspmv clAmdBlasSspmv_ +#define clAmdBlasSspr clAmdBlasSspr_ +#define clAmdBlasSspr2 clAmdBlasSspr2_ +#define clAmdBlasSswap clAmdBlasSswap_ +#define clAmdBlasSsymm clAmdBlasSsymm_ +#define clAmdBlasSsymv clAmdBlasSsymv_ +#define clAmdBlasSsymvEx clAmdBlasSsymvEx_ +#define clAmdBlasSsyr clAmdBlasSsyr_ +#define clAmdBlasSsyr2 clAmdBlasSsyr2_ +#define clAmdBlasSsyr2k clAmdBlasSsyr2k_ +#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_ +#define clAmdBlasSsyrk clAmdBlasSsyrk_ +#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_ +#define clAmdBlasStbmv clAmdBlasStbmv_ +#define clAmdBlasStbsv clAmdBlasStbsv_ +#define clAmdBlasStpmv clAmdBlasStpmv_ +#define clAmdBlasStpsv clAmdBlasStpsv_ +#define clAmdBlasStrmm clAmdBlasStrmm_ +#define clAmdBlasStrmmEx clAmdBlasStrmmEx_ +#define clAmdBlasStrmv clAmdBlasStrmv_ +#define clAmdBlasStrsm clAmdBlasStrsm_ +#define clAmdBlasStrsmEx clAmdBlasStrsmEx_ +#define clAmdBlasStrsv clAmdBlasStrsv_ +#define clAmdBlasTeardown clAmdBlasTeardown_ +#define clAmdBlasZaxpy clAmdBlasZaxpy_ +#define clAmdBlasZcopy clAmdBlasZcopy_ +#define clAmdBlasZdotc clAmdBlasZdotc_ +#define clAmdBlasZdotu clAmdBlasZdotu_ +#define clAmdBlasZdrot clAmdBlasZdrot_ +#define clAmdBlasZdscal clAmdBlasZdscal_ +#define clAmdBlasZgbmv clAmdBlasZgbmv_ +#define clAmdBlasZgemm clAmdBlasZgemm_ +#define clAmdBlasZgemmEx clAmdBlasZgemmEx_ +#define clAmdBlasZgemv clAmdBlasZgemv_ +#define clAmdBlasZgemvEx clAmdBlasZgemvEx_ +#define clAmdBlasZgerc clAmdBlasZgerc_ +#define clAmdBlasZgeru clAmdBlasZgeru_ +#define clAmdBlasZhbmv clAmdBlasZhbmv_ +#define clAmdBlasZhemm clAmdBlasZhemm_ +#define clAmdBlasZhemv clAmdBlasZhemv_ +#define clAmdBlasZher clAmdBlasZher_ +#define clAmdBlasZher2 clAmdBlasZher2_ +#define clAmdBlasZher2k clAmdBlasZher2k_ +#define clAmdBlasZherk clAmdBlasZherk_ +#define clAmdBlasZhpmv clAmdBlasZhpmv_ +#define clAmdBlasZhpr clAmdBlasZhpr_ +#define clAmdBlasZhpr2 clAmdBlasZhpr2_ +#define clAmdBlasZrotg clAmdBlasZrotg_ +#define clAmdBlasZscal clAmdBlasZscal_ +#define clAmdBlasZswap clAmdBlasZswap_ +#define clAmdBlasZsymm clAmdBlasZsymm_ +#define clAmdBlasZsyr2k clAmdBlasZsyr2k_ +#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_ +#define clAmdBlasZsyrk clAmdBlasZsyrk_ +#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_ +#define clAmdBlasZtbmv clAmdBlasZtbmv_ +#define clAmdBlasZtbsv clAmdBlasZtbsv_ +#define clAmdBlasZtpmv clAmdBlasZtpmv_ +#define clAmdBlasZtpsv clAmdBlasZtpsv_ +#define clAmdBlasZtrmm clAmdBlasZtrmm_ +#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_ +#define clAmdBlasZtrmv clAmdBlasZtrmv_ +#define clAmdBlasZtrsm clAmdBlasZtrsm_ +#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_ +#define clAmdBlasZtrsv clAmdBlasZtrsv_ +#define clAmdBlasiCamax clAmdBlasiCamax_ +#define clAmdBlasiDamax clAmdBlasiDamax_ +#define clAmdBlasiSamax clAmdBlasiSamax_ +#define clAmdBlasiZamax clAmdBlasiZamax_ + +#include + +// generated by parser_clamdblas.py +#undef clAmdBlasAddScratchImage +//#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_pfn +#undef clAmdBlasCaxpy +//#define clAmdBlasCaxpy clAmdBlasCaxpy_pfn +#undef clAmdBlasCcopy +//#define clAmdBlasCcopy clAmdBlasCcopy_pfn +#undef clAmdBlasCdotc +//#define clAmdBlasCdotc clAmdBlasCdotc_pfn +#undef clAmdBlasCdotu +//#define clAmdBlasCdotu clAmdBlasCdotu_pfn +#undef clAmdBlasCgbmv +//#define clAmdBlasCgbmv clAmdBlasCgbmv_pfn +#undef clAmdBlasCgemm +//#define clAmdBlasCgemm clAmdBlasCgemm_pfn +#undef clAmdBlasCgemmEx +#define clAmdBlasCgemmEx clAmdBlasCgemmEx_pfn +#undef clAmdBlasCgemv +//#define clAmdBlasCgemv clAmdBlasCgemv_pfn +#undef clAmdBlasCgemvEx +//#define clAmdBlasCgemvEx clAmdBlasCgemvEx_pfn +#undef clAmdBlasCgerc +//#define clAmdBlasCgerc clAmdBlasCgerc_pfn +#undef clAmdBlasCgeru +//#define clAmdBlasCgeru clAmdBlasCgeru_pfn +#undef clAmdBlasChbmv +//#define clAmdBlasChbmv clAmdBlasChbmv_pfn +#undef clAmdBlasChemm +//#define clAmdBlasChemm clAmdBlasChemm_pfn +#undef clAmdBlasChemv +//#define clAmdBlasChemv clAmdBlasChemv_pfn +#undef clAmdBlasCher +//#define clAmdBlasCher clAmdBlasCher_pfn +#undef clAmdBlasCher2 +//#define clAmdBlasCher2 clAmdBlasCher2_pfn +#undef clAmdBlasCher2k +//#define clAmdBlasCher2k clAmdBlasCher2k_pfn +#undef clAmdBlasCherk +//#define clAmdBlasCherk clAmdBlasCherk_pfn +#undef clAmdBlasChpmv +//#define clAmdBlasChpmv clAmdBlasChpmv_pfn +#undef clAmdBlasChpr +//#define clAmdBlasChpr clAmdBlasChpr_pfn +#undef clAmdBlasChpr2 +//#define clAmdBlasChpr2 clAmdBlasChpr2_pfn +#undef clAmdBlasCrotg +//#define clAmdBlasCrotg clAmdBlasCrotg_pfn +#undef clAmdBlasCscal +//#define clAmdBlasCscal clAmdBlasCscal_pfn +#undef clAmdBlasCsrot +//#define clAmdBlasCsrot clAmdBlasCsrot_pfn +#undef clAmdBlasCsscal +//#define clAmdBlasCsscal clAmdBlasCsscal_pfn +#undef clAmdBlasCswap +//#define clAmdBlasCswap clAmdBlasCswap_pfn +#undef clAmdBlasCsymm +//#define clAmdBlasCsymm clAmdBlasCsymm_pfn +#undef clAmdBlasCsyr2k +//#define clAmdBlasCsyr2k clAmdBlasCsyr2k_pfn +#undef clAmdBlasCsyr2kEx +//#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_pfn +#undef clAmdBlasCsyrk +//#define clAmdBlasCsyrk clAmdBlasCsyrk_pfn +#undef clAmdBlasCsyrkEx +//#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_pfn +#undef clAmdBlasCtbmv +//#define clAmdBlasCtbmv clAmdBlasCtbmv_pfn +#undef clAmdBlasCtbsv +//#define clAmdBlasCtbsv clAmdBlasCtbsv_pfn +#undef clAmdBlasCtpmv +//#define clAmdBlasCtpmv clAmdBlasCtpmv_pfn +#undef clAmdBlasCtpsv +//#define clAmdBlasCtpsv clAmdBlasCtpsv_pfn +#undef clAmdBlasCtrmm +//#define clAmdBlasCtrmm clAmdBlasCtrmm_pfn +#undef clAmdBlasCtrmmEx +//#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_pfn +#undef clAmdBlasCtrmv +//#define clAmdBlasCtrmv clAmdBlasCtrmv_pfn +#undef clAmdBlasCtrsm +//#define clAmdBlasCtrsm clAmdBlasCtrsm_pfn +#undef clAmdBlasCtrsmEx +//#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_pfn +#undef clAmdBlasCtrsv +//#define clAmdBlasCtrsv clAmdBlasCtrsv_pfn +#undef clAmdBlasDasum +//#define clAmdBlasDasum clAmdBlasDasum_pfn +#undef clAmdBlasDaxpy +//#define clAmdBlasDaxpy clAmdBlasDaxpy_pfn +#undef clAmdBlasDcopy +//#define clAmdBlasDcopy clAmdBlasDcopy_pfn +#undef clAmdBlasDdot +//#define clAmdBlasDdot clAmdBlasDdot_pfn +#undef clAmdBlasDgbmv +//#define clAmdBlasDgbmv clAmdBlasDgbmv_pfn +#undef clAmdBlasDgemm +//#define clAmdBlasDgemm clAmdBlasDgemm_pfn +#undef clAmdBlasDgemmEx +#define clAmdBlasDgemmEx clAmdBlasDgemmEx_pfn +#undef clAmdBlasDgemv +//#define clAmdBlasDgemv clAmdBlasDgemv_pfn +#undef clAmdBlasDgemvEx +//#define clAmdBlasDgemvEx clAmdBlasDgemvEx_pfn +#undef clAmdBlasDger +//#define clAmdBlasDger clAmdBlasDger_pfn +#undef clAmdBlasDnrm2 +//#define clAmdBlasDnrm2 clAmdBlasDnrm2_pfn +#undef clAmdBlasDrot +//#define clAmdBlasDrot clAmdBlasDrot_pfn +#undef clAmdBlasDrotg +//#define clAmdBlasDrotg clAmdBlasDrotg_pfn +#undef clAmdBlasDrotm +//#define clAmdBlasDrotm clAmdBlasDrotm_pfn +#undef clAmdBlasDrotmg +//#define clAmdBlasDrotmg clAmdBlasDrotmg_pfn +#undef clAmdBlasDsbmv +//#define clAmdBlasDsbmv clAmdBlasDsbmv_pfn +#undef clAmdBlasDscal +//#define clAmdBlasDscal clAmdBlasDscal_pfn +#undef clAmdBlasDspmv +//#define clAmdBlasDspmv clAmdBlasDspmv_pfn +#undef clAmdBlasDspr +//#define clAmdBlasDspr clAmdBlasDspr_pfn +#undef clAmdBlasDspr2 +//#define clAmdBlasDspr2 clAmdBlasDspr2_pfn +#undef clAmdBlasDswap +//#define clAmdBlasDswap clAmdBlasDswap_pfn +#undef clAmdBlasDsymm +//#define clAmdBlasDsymm clAmdBlasDsymm_pfn +#undef clAmdBlasDsymv +//#define clAmdBlasDsymv clAmdBlasDsymv_pfn +#undef clAmdBlasDsymvEx +//#define clAmdBlasDsymvEx clAmdBlasDsymvEx_pfn +#undef clAmdBlasDsyr +//#define clAmdBlasDsyr clAmdBlasDsyr_pfn +#undef clAmdBlasDsyr2 +//#define clAmdBlasDsyr2 clAmdBlasDsyr2_pfn +#undef clAmdBlasDsyr2k +//#define clAmdBlasDsyr2k clAmdBlasDsyr2k_pfn +#undef clAmdBlasDsyr2kEx +//#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_pfn +#undef clAmdBlasDsyrk +//#define clAmdBlasDsyrk clAmdBlasDsyrk_pfn +#undef clAmdBlasDsyrkEx +//#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_pfn +#undef clAmdBlasDtbmv +//#define clAmdBlasDtbmv clAmdBlasDtbmv_pfn +#undef clAmdBlasDtbsv +//#define clAmdBlasDtbsv clAmdBlasDtbsv_pfn +#undef clAmdBlasDtpmv +//#define clAmdBlasDtpmv clAmdBlasDtpmv_pfn +#undef clAmdBlasDtpsv +//#define clAmdBlasDtpsv clAmdBlasDtpsv_pfn +#undef clAmdBlasDtrmm +//#define clAmdBlasDtrmm clAmdBlasDtrmm_pfn +#undef clAmdBlasDtrmmEx +//#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_pfn +#undef clAmdBlasDtrmv +//#define clAmdBlasDtrmv clAmdBlasDtrmv_pfn +#undef clAmdBlasDtrsm +//#define clAmdBlasDtrsm clAmdBlasDtrsm_pfn +#undef clAmdBlasDtrsmEx +//#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_pfn +#undef clAmdBlasDtrsv +//#define clAmdBlasDtrsv clAmdBlasDtrsv_pfn +#undef clAmdBlasDzasum +//#define clAmdBlasDzasum clAmdBlasDzasum_pfn +#undef clAmdBlasDznrm2 +//#define clAmdBlasDznrm2 clAmdBlasDznrm2_pfn +#undef clAmdBlasGetVersion +//#define clAmdBlasGetVersion clAmdBlasGetVersion_pfn +#undef clAmdBlasRemoveScratchImage +//#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_pfn +#undef clAmdBlasSasum +//#define clAmdBlasSasum clAmdBlasSasum_pfn +#undef clAmdBlasSaxpy +//#define clAmdBlasSaxpy clAmdBlasSaxpy_pfn +#undef clAmdBlasScasum +//#define clAmdBlasScasum clAmdBlasScasum_pfn +#undef clAmdBlasScnrm2 +//#define clAmdBlasScnrm2 clAmdBlasScnrm2_pfn +#undef clAmdBlasScopy +//#define clAmdBlasScopy clAmdBlasScopy_pfn +#undef clAmdBlasSdot +//#define clAmdBlasSdot clAmdBlasSdot_pfn +#undef clAmdBlasSetup +#define clAmdBlasSetup clAmdBlasSetup_pfn +#undef clAmdBlasSgbmv +//#define clAmdBlasSgbmv clAmdBlasSgbmv_pfn +#undef clAmdBlasSgemm +//#define clAmdBlasSgemm clAmdBlasSgemm_pfn +#undef clAmdBlasSgemmEx +#define clAmdBlasSgemmEx clAmdBlasSgemmEx_pfn +#undef clAmdBlasSgemv +//#define clAmdBlasSgemv clAmdBlasSgemv_pfn +#undef clAmdBlasSgemvEx +//#define clAmdBlasSgemvEx clAmdBlasSgemvEx_pfn +#undef clAmdBlasSger +//#define clAmdBlasSger clAmdBlasSger_pfn +#undef clAmdBlasSnrm2 +//#define clAmdBlasSnrm2 clAmdBlasSnrm2_pfn +#undef clAmdBlasSrot +//#define clAmdBlasSrot clAmdBlasSrot_pfn +#undef clAmdBlasSrotg +//#define clAmdBlasSrotg clAmdBlasSrotg_pfn +#undef clAmdBlasSrotm +//#define clAmdBlasSrotm clAmdBlasSrotm_pfn +#undef clAmdBlasSrotmg +//#define clAmdBlasSrotmg clAmdBlasSrotmg_pfn +#undef clAmdBlasSsbmv +//#define clAmdBlasSsbmv clAmdBlasSsbmv_pfn +#undef clAmdBlasSscal +//#define clAmdBlasSscal clAmdBlasSscal_pfn +#undef clAmdBlasSspmv +//#define clAmdBlasSspmv clAmdBlasSspmv_pfn +#undef clAmdBlasSspr +//#define clAmdBlasSspr clAmdBlasSspr_pfn +#undef clAmdBlasSspr2 +//#define clAmdBlasSspr2 clAmdBlasSspr2_pfn +#undef clAmdBlasSswap +//#define clAmdBlasSswap clAmdBlasSswap_pfn +#undef clAmdBlasSsymm +//#define clAmdBlasSsymm clAmdBlasSsymm_pfn +#undef clAmdBlasSsymv +//#define clAmdBlasSsymv clAmdBlasSsymv_pfn +#undef clAmdBlasSsymvEx +//#define clAmdBlasSsymvEx clAmdBlasSsymvEx_pfn +#undef clAmdBlasSsyr +//#define clAmdBlasSsyr clAmdBlasSsyr_pfn +#undef clAmdBlasSsyr2 +//#define clAmdBlasSsyr2 clAmdBlasSsyr2_pfn +#undef clAmdBlasSsyr2k +//#define clAmdBlasSsyr2k clAmdBlasSsyr2k_pfn +#undef clAmdBlasSsyr2kEx +//#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_pfn +#undef clAmdBlasSsyrk +//#define clAmdBlasSsyrk clAmdBlasSsyrk_pfn +#undef clAmdBlasSsyrkEx +//#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_pfn +#undef clAmdBlasStbmv +//#define clAmdBlasStbmv clAmdBlasStbmv_pfn +#undef clAmdBlasStbsv +//#define clAmdBlasStbsv clAmdBlasStbsv_pfn +#undef clAmdBlasStpmv +//#define clAmdBlasStpmv clAmdBlasStpmv_pfn +#undef clAmdBlasStpsv +//#define clAmdBlasStpsv clAmdBlasStpsv_pfn +#undef clAmdBlasStrmm +//#define clAmdBlasStrmm clAmdBlasStrmm_pfn +#undef clAmdBlasStrmmEx +//#define clAmdBlasStrmmEx clAmdBlasStrmmEx_pfn +#undef clAmdBlasStrmv +//#define clAmdBlasStrmv clAmdBlasStrmv_pfn +#undef clAmdBlasStrsm +//#define clAmdBlasStrsm clAmdBlasStrsm_pfn +#undef clAmdBlasStrsmEx +//#define clAmdBlasStrsmEx clAmdBlasStrsmEx_pfn +#undef clAmdBlasStrsv +//#define clAmdBlasStrsv clAmdBlasStrsv_pfn +#undef clAmdBlasTeardown +#define clAmdBlasTeardown clAmdBlasTeardown_pfn +#undef clAmdBlasZaxpy +//#define clAmdBlasZaxpy clAmdBlasZaxpy_pfn +#undef clAmdBlasZcopy +//#define clAmdBlasZcopy clAmdBlasZcopy_pfn +#undef clAmdBlasZdotc +//#define clAmdBlasZdotc clAmdBlasZdotc_pfn +#undef clAmdBlasZdotu +//#define clAmdBlasZdotu clAmdBlasZdotu_pfn +#undef clAmdBlasZdrot +//#define clAmdBlasZdrot clAmdBlasZdrot_pfn +#undef clAmdBlasZdscal +//#define clAmdBlasZdscal clAmdBlasZdscal_pfn +#undef clAmdBlasZgbmv +//#define clAmdBlasZgbmv clAmdBlasZgbmv_pfn +#undef clAmdBlasZgemm +//#define clAmdBlasZgemm clAmdBlasZgemm_pfn +#undef clAmdBlasZgemmEx +#define clAmdBlasZgemmEx clAmdBlasZgemmEx_pfn +#undef clAmdBlasZgemv +//#define clAmdBlasZgemv clAmdBlasZgemv_pfn +#undef clAmdBlasZgemvEx +//#define clAmdBlasZgemvEx clAmdBlasZgemvEx_pfn +#undef clAmdBlasZgerc +//#define clAmdBlasZgerc clAmdBlasZgerc_pfn +#undef clAmdBlasZgeru +//#define clAmdBlasZgeru clAmdBlasZgeru_pfn +#undef clAmdBlasZhbmv +//#define clAmdBlasZhbmv clAmdBlasZhbmv_pfn +#undef clAmdBlasZhemm +//#define clAmdBlasZhemm clAmdBlasZhemm_pfn +#undef clAmdBlasZhemv +//#define clAmdBlasZhemv clAmdBlasZhemv_pfn +#undef clAmdBlasZher +//#define clAmdBlasZher clAmdBlasZher_pfn +#undef clAmdBlasZher2 +//#define clAmdBlasZher2 clAmdBlasZher2_pfn +#undef clAmdBlasZher2k +//#define clAmdBlasZher2k clAmdBlasZher2k_pfn +#undef clAmdBlasZherk +//#define clAmdBlasZherk clAmdBlasZherk_pfn +#undef clAmdBlasZhpmv +//#define clAmdBlasZhpmv clAmdBlasZhpmv_pfn +#undef clAmdBlasZhpr +//#define clAmdBlasZhpr clAmdBlasZhpr_pfn +#undef clAmdBlasZhpr2 +//#define clAmdBlasZhpr2 clAmdBlasZhpr2_pfn +#undef clAmdBlasZrotg +//#define clAmdBlasZrotg clAmdBlasZrotg_pfn +#undef clAmdBlasZscal +//#define clAmdBlasZscal clAmdBlasZscal_pfn +#undef clAmdBlasZswap +//#define clAmdBlasZswap clAmdBlasZswap_pfn +#undef clAmdBlasZsymm +//#define clAmdBlasZsymm clAmdBlasZsymm_pfn +#undef clAmdBlasZsyr2k +//#define clAmdBlasZsyr2k clAmdBlasZsyr2k_pfn +#undef clAmdBlasZsyr2kEx +//#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_pfn +#undef clAmdBlasZsyrk +//#define clAmdBlasZsyrk clAmdBlasZsyrk_pfn +#undef clAmdBlasZsyrkEx +//#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_pfn +#undef clAmdBlasZtbmv +//#define clAmdBlasZtbmv clAmdBlasZtbmv_pfn +#undef clAmdBlasZtbsv +//#define clAmdBlasZtbsv clAmdBlasZtbsv_pfn +#undef clAmdBlasZtpmv +//#define clAmdBlasZtpmv clAmdBlasZtpmv_pfn +#undef clAmdBlasZtpsv +//#define clAmdBlasZtpsv clAmdBlasZtpsv_pfn +#undef clAmdBlasZtrmm +//#define clAmdBlasZtrmm clAmdBlasZtrmm_pfn +#undef clAmdBlasZtrmmEx +//#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_pfn +#undef clAmdBlasZtrmv +//#define clAmdBlasZtrmv clAmdBlasZtrmv_pfn +#undef clAmdBlasZtrsm +//#define clAmdBlasZtrsm clAmdBlasZtrsm_pfn +#undef clAmdBlasZtrsmEx +//#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_pfn +#undef clAmdBlasZtrsv +//#define clAmdBlasZtrsv clAmdBlasZtrsv_pfn +#undef clAmdBlasiCamax +//#define clAmdBlasiCamax clAmdBlasiCamax_pfn +#undef clAmdBlasiDamax +//#define clAmdBlasiDamax clAmdBlasiDamax_pfn +#undef clAmdBlasiSamax +//#define clAmdBlasiSamax clAmdBlasiSamax_pfn +#undef clAmdBlasiZamax +//#define clAmdBlasiZamax clAmdBlasiZamax_pfn + +// generated by parser_clamdblas.py +//extern CL_RUNTIME_EXPORT cl_ulong (*clAmdBlasAddScratchImage)(cl_context context, size_t width, size_t height, clAmdBlasStatus* status); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCaxpy)(size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, FloatComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, float alpha, const cl_mem A, size_t offa, size_t lda, float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCscal)(size_t N, cl_float2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDaxpy)(size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDger)(clAmdBlasOrder order, size_t M, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotg)(cl_mem DA, size_t offDA, cl_mem DB, size_t offDB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotmg)(cl_mem DD1, size_t offDD1, cl_mem DD2, size_t offDD2, cl_mem DX1, size_t offDX1, const cl_mem DY1, size_t offDY1, cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDzasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDznrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasRemoveScratchImage)(cl_ulong imageID); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSaxpy)(size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSetup)(); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSger)(clAmdBlasOrder order, size_t M, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotg)(cl_mem SA, size_t offSA, cl_mem SB, size_t offSB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotmg)(cl_mem SD1, size_t offSD1, cl_mem SD2, size_t offSD2, cl_mem SX1, size_t offSX1, const cl_mem SY1, size_t offSY1, cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT void (*clAmdBlasTeardown)(); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZaxpy)(size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, DoubleComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, double alpha, const cl_mem A, size_t offa, size_t lda, double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZscal)(size_t N, cl_double2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiCamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiDamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiSamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); +//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiZamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events); diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp new file mode 100644 index 0000000..1457d7e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp @@ -0,0 +1,142 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP +#error "Invalid usage" +#endif + +// generated by parser_clamdfft.py +#define clAmdFftBakePlan clAmdFftBakePlan_ +#define clAmdFftCopyPlan clAmdFftCopyPlan_ +#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_ +#define clAmdFftDestroyPlan clAmdFftDestroyPlan_ +#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_ +#define clAmdFftGetLayout clAmdFftGetLayout_ +#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_ +#define clAmdFftGetPlanContext clAmdFftGetPlanContext_ +#define clAmdFftGetPlanDim clAmdFftGetPlanDim_ +#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_ +#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_ +#define clAmdFftGetPlanLength clAmdFftGetPlanLength_ +#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_ +#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_ +#define clAmdFftGetPlanScale clAmdFftGetPlanScale_ +#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_ +#define clAmdFftGetResultLocation clAmdFftGetResultLocation_ +#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_ +#define clAmdFftGetVersion clAmdFftGetVersion_ +#define clAmdFftSetLayout clAmdFftSetLayout_ +#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_ +#define clAmdFftSetPlanDim clAmdFftSetPlanDim_ +#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_ +#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_ +#define clAmdFftSetPlanLength clAmdFftSetPlanLength_ +#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_ +#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_ +#define clAmdFftSetPlanScale clAmdFftSetPlanScale_ +#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_ +#define clAmdFftSetResultLocation clAmdFftSetResultLocation_ +#define clAmdFftSetup clAmdFftSetup_ +#define clAmdFftTeardown clAmdFftTeardown_ + +#include + +// generated by parser_clamdfft.py +#undef clAmdFftBakePlan +#define clAmdFftBakePlan clAmdFftBakePlan_pfn +#undef clAmdFftCopyPlan +//#define clAmdFftCopyPlan clAmdFftCopyPlan_pfn +#undef clAmdFftCreateDefaultPlan +#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_pfn +#undef clAmdFftDestroyPlan +#define clAmdFftDestroyPlan clAmdFftDestroyPlan_pfn +#undef clAmdFftEnqueueTransform +#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_pfn +#undef clAmdFftGetLayout +//#define clAmdFftGetLayout clAmdFftGetLayout_pfn +#undef clAmdFftGetPlanBatchSize +//#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_pfn +#undef clAmdFftGetPlanContext +//#define clAmdFftGetPlanContext clAmdFftGetPlanContext_pfn +#undef clAmdFftGetPlanDim +//#define clAmdFftGetPlanDim clAmdFftGetPlanDim_pfn +#undef clAmdFftGetPlanDistance +//#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_pfn +#undef clAmdFftGetPlanInStride +//#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_pfn +#undef clAmdFftGetPlanLength +//#define clAmdFftGetPlanLength clAmdFftGetPlanLength_pfn +#undef clAmdFftGetPlanOutStride +//#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_pfn +#undef clAmdFftGetPlanPrecision +//#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_pfn +#undef clAmdFftGetPlanScale +//#define clAmdFftGetPlanScale clAmdFftGetPlanScale_pfn +#undef clAmdFftGetPlanTransposeResult +//#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_pfn +#undef clAmdFftGetResultLocation +//#define clAmdFftGetResultLocation clAmdFftGetResultLocation_pfn +#undef clAmdFftGetTmpBufSize +#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_pfn +#undef clAmdFftGetVersion +#define clAmdFftGetVersion clAmdFftGetVersion_pfn +#undef clAmdFftSetLayout +#define clAmdFftSetLayout clAmdFftSetLayout_pfn +#undef clAmdFftSetPlanBatchSize +#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_pfn +#undef clAmdFftSetPlanDim +//#define clAmdFftSetPlanDim clAmdFftSetPlanDim_pfn +#undef clAmdFftSetPlanDistance +#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_pfn +#undef clAmdFftSetPlanInStride +#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_pfn +#undef clAmdFftSetPlanLength +//#define clAmdFftSetPlanLength clAmdFftSetPlanLength_pfn +#undef clAmdFftSetPlanOutStride +#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_pfn +#undef clAmdFftSetPlanPrecision +#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_pfn +#undef clAmdFftSetPlanScale +#define clAmdFftSetPlanScale clAmdFftSetPlanScale_pfn +#undef clAmdFftSetPlanTransposeResult +//#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_pfn +#undef clAmdFftSetResultLocation +#define clAmdFftSetResultLocation clAmdFftSetResultLocation_pfn +#undef clAmdFftSetup +#define clAmdFftSetup clAmdFftSetup_pfn +#undef clAmdFftTeardown +#define clAmdFftTeardown clAmdFftTeardown_pfn + +// generated by parser_clamdfft.py +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle plHandle, cl_uint numQueues, cl_command_queue* commQueueFFT, void (CL_CALLBACK* pfn_notify) (clAmdFftPlanHandle plHandle, void* user_data), void* user_data); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle* out_plHandle, cl_context new_context, clAmdFftPlanHandle in_plHandle); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle* plHandle, cl_context context, const clAmdFftDim dim, const size_t* clLengths); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle* plHandle); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftEnqueueTransform)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_uint numQueuesAndEvents, cl_command_queue* commQueues, cl_uint numWaitEvents, const cl_event* waitEvents, cl_event* outEvents, cl_mem* inputBuffers, cl_mem* outputBuffers, cl_mem tmpBuffer); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle plHandle, clAmdFftLayout* iLayout, clAmdFftLayout* oLayout); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle plHandle, size_t* batchSize); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle plHandle, cl_context* context); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle plHandle, clAmdFftDim* dim, cl_uint* size); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle plHandle, size_t* iDist, size_t* oDist); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clLengths); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle plHandle, clAmdFftPrecision* precision); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float* scale); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle plHandle, clAmdFftResultTransposed* transposed); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle plHandle, clAmdFftResultLocation* placeness); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle plHandle, size_t* buffersize); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle plHandle, clAmdFftLayout iLayout, clAmdFftLayout oLayout); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle plHandle, size_t batchSize); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle plHandle, size_t iDist, size_t oDist); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, const size_t* clLengths); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle plHandle, clAmdFftPrecision precision); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float scale); +//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle plHandle, clAmdFftResultTransposed transposed); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle plHandle, clAmdFftResultLocation placeness); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetup)(const clAmdFftSetupData* setupData); +extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftTeardown)(); diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp new file mode 100644 index 0000000..28618a1 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp @@ -0,0 +1,371 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_CORE_HPP +#error "Invalid usage" +#endif + +// generated by parser_cl.py +#define clBuildProgram clBuildProgram_ +#define clCompileProgram clCompileProgram_ +#define clCreateBuffer clCreateBuffer_ +#define clCreateCommandQueue clCreateCommandQueue_ +#define clCreateContext clCreateContext_ +#define clCreateContextFromType clCreateContextFromType_ +#define clCreateImage clCreateImage_ +#define clCreateImage2D clCreateImage2D_ +#define clCreateImage3D clCreateImage3D_ +#define clCreateKernel clCreateKernel_ +#define clCreateKernelsInProgram clCreateKernelsInProgram_ +#define clCreateProgramWithBinary clCreateProgramWithBinary_ +#define clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels_ +#define clCreateProgramWithSource clCreateProgramWithSource_ +#define clCreateSampler clCreateSampler_ +#define clCreateSubBuffer clCreateSubBuffer_ +#define clCreateSubDevices clCreateSubDevices_ +#define clCreateUserEvent clCreateUserEvent_ +#define clEnqueueBarrier clEnqueueBarrier_ +#define clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList_ +#define clEnqueueCopyBuffer clEnqueueCopyBuffer_ +#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_ +#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_ +#define clEnqueueCopyImage clEnqueueCopyImage_ +#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_ +#define clEnqueueFillBuffer clEnqueueFillBuffer_ +#define clEnqueueFillImage clEnqueueFillImage_ +#define clEnqueueMapBuffer clEnqueueMapBuffer_ +#define clEnqueueMapImage clEnqueueMapImage_ +#define clEnqueueMarker clEnqueueMarker_ +#define clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList_ +#define clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects_ +#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_ +#define clEnqueueNativeKernel clEnqueueNativeKernel_ +#define clEnqueueReadBuffer clEnqueueReadBuffer_ +#define clEnqueueReadBufferRect clEnqueueReadBufferRect_ +#define clEnqueueReadImage clEnqueueReadImage_ +#define clEnqueueTask clEnqueueTask_ +#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_ +#define clEnqueueWaitForEvents clEnqueueWaitForEvents_ +#define clEnqueueWriteBuffer clEnqueueWriteBuffer_ +#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_ +#define clEnqueueWriteImage clEnqueueWriteImage_ +#define clFinish clFinish_ +#define clFlush clFlush_ +#define clGetCommandQueueInfo clGetCommandQueueInfo_ +#define clGetContextInfo clGetContextInfo_ +#define clGetDeviceIDs clGetDeviceIDs_ +#define clGetDeviceInfo clGetDeviceInfo_ +#define clGetEventInfo clGetEventInfo_ +#define clGetEventProfilingInfo clGetEventProfilingInfo_ +#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_ +#define clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform_ +#define clGetImageInfo clGetImageInfo_ +#define clGetKernelArgInfo clGetKernelArgInfo_ +#define clGetKernelInfo clGetKernelInfo_ +#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_ +#define clGetMemObjectInfo clGetMemObjectInfo_ +#define clGetPlatformIDs clGetPlatformIDs_ +#define clGetPlatformInfo clGetPlatformInfo_ +#define clGetProgramBuildInfo clGetProgramBuildInfo_ +#define clGetProgramInfo clGetProgramInfo_ +#define clGetSamplerInfo clGetSamplerInfo_ +#define clGetSupportedImageFormats clGetSupportedImageFormats_ +#define clLinkProgram clLinkProgram_ +#define clReleaseCommandQueue clReleaseCommandQueue_ +#define clReleaseContext clReleaseContext_ +#define clReleaseDevice clReleaseDevice_ +#define clReleaseEvent clReleaseEvent_ +#define clReleaseKernel clReleaseKernel_ +#define clReleaseMemObject clReleaseMemObject_ +#define clReleaseProgram clReleaseProgram_ +#define clReleaseSampler clReleaseSampler_ +#define clRetainCommandQueue clRetainCommandQueue_ +#define clRetainContext clRetainContext_ +#define clRetainDevice clRetainDevice_ +#define clRetainEvent clRetainEvent_ +#define clRetainKernel clRetainKernel_ +#define clRetainMemObject clRetainMemObject_ +#define clRetainProgram clRetainProgram_ +#define clRetainSampler clRetainSampler_ +#define clSetEventCallback clSetEventCallback_ +#define clSetKernelArg clSetKernelArg_ +#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_ +#define clSetUserEventStatus clSetUserEventStatus_ +#define clUnloadCompiler clUnloadCompiler_ +#define clUnloadPlatformCompiler clUnloadPlatformCompiler_ +#define clWaitForEvents clWaitForEvents_ + +#if defined __APPLE__ +#define CL_SILENCE_DEPRECATION +#include +#else +#include +#endif + +// generated by parser_cl.py +#undef clBuildProgram +#define clBuildProgram clBuildProgram_pfn +#undef clCompileProgram +#define clCompileProgram clCompileProgram_pfn +#undef clCreateBuffer +#define clCreateBuffer clCreateBuffer_pfn +#undef clCreateCommandQueue +#define clCreateCommandQueue clCreateCommandQueue_pfn +#undef clCreateContext +#define clCreateContext clCreateContext_pfn +#undef clCreateContextFromType +#define clCreateContextFromType clCreateContextFromType_pfn +#undef clCreateImage +#define clCreateImage clCreateImage_pfn +#undef clCreateImage2D +#define clCreateImage2D clCreateImage2D_pfn +#undef clCreateImage3D +#define clCreateImage3D clCreateImage3D_pfn +#undef clCreateKernel +#define clCreateKernel clCreateKernel_pfn +#undef clCreateKernelsInProgram +#define clCreateKernelsInProgram clCreateKernelsInProgram_pfn +#undef clCreateProgramWithBinary +#define clCreateProgramWithBinary clCreateProgramWithBinary_pfn +#undef clCreateProgramWithBuiltInKernels +#define clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels_pfn +#undef clCreateProgramWithSource +#define clCreateProgramWithSource clCreateProgramWithSource_pfn +#undef clCreateSampler +#define clCreateSampler clCreateSampler_pfn +#undef clCreateSubBuffer +#define clCreateSubBuffer clCreateSubBuffer_pfn +#undef clCreateSubDevices +#define clCreateSubDevices clCreateSubDevices_pfn +#undef clCreateUserEvent +#define clCreateUserEvent clCreateUserEvent_pfn +#undef clEnqueueBarrier +#define clEnqueueBarrier clEnqueueBarrier_pfn +#undef clEnqueueBarrierWithWaitList +#define clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList_pfn +#undef clEnqueueCopyBuffer +#define clEnqueueCopyBuffer clEnqueueCopyBuffer_pfn +#undef clEnqueueCopyBufferRect +#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_pfn +#undef clEnqueueCopyBufferToImage +#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_pfn +#undef clEnqueueCopyImage +#define clEnqueueCopyImage clEnqueueCopyImage_pfn +#undef clEnqueueCopyImageToBuffer +#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_pfn +#undef clEnqueueFillBuffer +#define clEnqueueFillBuffer clEnqueueFillBuffer_pfn +#undef clEnqueueFillImage +#define clEnqueueFillImage clEnqueueFillImage_pfn +#undef clEnqueueMapBuffer +#define clEnqueueMapBuffer clEnqueueMapBuffer_pfn +#undef clEnqueueMapImage +#define clEnqueueMapImage clEnqueueMapImage_pfn +#undef clEnqueueMarker +#define clEnqueueMarker clEnqueueMarker_pfn +#undef clEnqueueMarkerWithWaitList +#define clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList_pfn +#undef clEnqueueMigrateMemObjects +#define clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects_pfn +#undef clEnqueueNDRangeKernel +#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_pfn +#undef clEnqueueNativeKernel +#define clEnqueueNativeKernel clEnqueueNativeKernel_pfn +#undef clEnqueueReadBuffer +#define clEnqueueReadBuffer clEnqueueReadBuffer_pfn +#undef clEnqueueReadBufferRect +#define clEnqueueReadBufferRect clEnqueueReadBufferRect_pfn +#undef clEnqueueReadImage +#define clEnqueueReadImage clEnqueueReadImage_pfn +#undef clEnqueueTask +#define clEnqueueTask clEnqueueTask_pfn +#undef clEnqueueUnmapMemObject +#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_pfn +#undef clEnqueueWaitForEvents +#define clEnqueueWaitForEvents clEnqueueWaitForEvents_pfn +#undef clEnqueueWriteBuffer +#define clEnqueueWriteBuffer clEnqueueWriteBuffer_pfn +#undef clEnqueueWriteBufferRect +#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_pfn +#undef clEnqueueWriteImage +#define clEnqueueWriteImage clEnqueueWriteImage_pfn +#undef clFinish +#define clFinish clFinish_pfn +#undef clFlush +#define clFlush clFlush_pfn +#undef clGetCommandQueueInfo +#define clGetCommandQueueInfo clGetCommandQueueInfo_pfn +#undef clGetContextInfo +#define clGetContextInfo clGetContextInfo_pfn +#undef clGetDeviceIDs +#define clGetDeviceIDs clGetDeviceIDs_pfn +#undef clGetDeviceInfo +#define clGetDeviceInfo clGetDeviceInfo_pfn +#undef clGetEventInfo +#define clGetEventInfo clGetEventInfo_pfn +#undef clGetEventProfilingInfo +#define clGetEventProfilingInfo clGetEventProfilingInfo_pfn +#undef clGetExtensionFunctionAddress +#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_pfn +#undef clGetExtensionFunctionAddressForPlatform +#define clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform_pfn +#undef clGetImageInfo +#define clGetImageInfo clGetImageInfo_pfn +#undef clGetKernelArgInfo +#define clGetKernelArgInfo clGetKernelArgInfo_pfn +#undef clGetKernelInfo +#define clGetKernelInfo clGetKernelInfo_pfn +#undef clGetKernelWorkGroupInfo +#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_pfn +#undef clGetMemObjectInfo +#define clGetMemObjectInfo clGetMemObjectInfo_pfn +#undef clGetPlatformIDs +#define clGetPlatformIDs clGetPlatformIDs_pfn +#undef clGetPlatformInfo +#define clGetPlatformInfo clGetPlatformInfo_pfn +#undef clGetProgramBuildInfo +#define clGetProgramBuildInfo clGetProgramBuildInfo_pfn +#undef clGetProgramInfo +#define clGetProgramInfo clGetProgramInfo_pfn +#undef clGetSamplerInfo +#define clGetSamplerInfo clGetSamplerInfo_pfn +#undef clGetSupportedImageFormats +#define clGetSupportedImageFormats clGetSupportedImageFormats_pfn +#undef clLinkProgram +#define clLinkProgram clLinkProgram_pfn +#undef clReleaseCommandQueue +#define clReleaseCommandQueue clReleaseCommandQueue_pfn +#undef clReleaseContext +#define clReleaseContext clReleaseContext_pfn +#undef clReleaseDevice +#define clReleaseDevice clReleaseDevice_pfn +#undef clReleaseEvent +#define clReleaseEvent clReleaseEvent_pfn +#undef clReleaseKernel +#define clReleaseKernel clReleaseKernel_pfn +#undef clReleaseMemObject +#define clReleaseMemObject clReleaseMemObject_pfn +#undef clReleaseProgram +#define clReleaseProgram clReleaseProgram_pfn +#undef clReleaseSampler +#define clReleaseSampler clReleaseSampler_pfn +#undef clRetainCommandQueue +#define clRetainCommandQueue clRetainCommandQueue_pfn +#undef clRetainContext +#define clRetainContext clRetainContext_pfn +#undef clRetainDevice +#define clRetainDevice clRetainDevice_pfn +#undef clRetainEvent +#define clRetainEvent clRetainEvent_pfn +#undef clRetainKernel +#define clRetainKernel clRetainKernel_pfn +#undef clRetainMemObject +#define clRetainMemObject clRetainMemObject_pfn +#undef clRetainProgram +#define clRetainProgram clRetainProgram_pfn +#undef clRetainSampler +#define clRetainSampler clRetainSampler_pfn +#undef clSetEventCallback +#define clSetEventCallback clSetEventCallback_pfn +#undef clSetKernelArg +#define clSetKernelArg clSetKernelArg_pfn +#undef clSetMemObjectDestructorCallback +#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_pfn +#undef clSetUserEventStatus +#define clSetUserEventStatus clSetUserEventStatus_pfn +#undef clUnloadCompiler +#define clUnloadCompiler clUnloadCompiler_pfn +#undef clUnloadPlatformCompiler +#define clUnloadPlatformCompiler clUnloadPlatformCompiler_pfn +#undef clWaitForEvents +#define clWaitForEvents clWaitForEvents_pfn + +// generated by parser_cl.py +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clBuildProgram)(cl_program, cl_uint, const cl_device_id*, const char*, void (CL_CALLBACK*) (cl_program, void*), void*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clCompileProgram)(cl_program, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, const char**, void (CL_CALLBACK*) (cl_program, void*), void*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateBuffer)(cl_context, cl_mem_flags, size_t, void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_command_queue (CL_API_CALL*clCreateCommandQueue)(cl_context, cl_device_id, cl_command_queue_properties, cl_int*); +extern CL_RUNTIME_EXPORT cl_context (CL_API_CALL*clCreateContext)(const cl_context_properties*, cl_uint, const cl_device_id*, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_context (CL_API_CALL*clCreateContextFromType)(const cl_context_properties*, cl_device_type, void (CL_CALLBACK*) (const char*, const void*, size_t, void*), void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateImage)(cl_context, cl_mem_flags, const cl_image_format*, const cl_image_desc*, void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateImage2D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateImage3D)(cl_context, cl_mem_flags, const cl_image_format*, size_t, size_t, size_t, size_t, size_t, void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_kernel (CL_API_CALL*clCreateKernel)(cl_program, const char*, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clCreateKernelsInProgram)(cl_program, cl_uint, cl_kernel*, cl_uint*); +extern CL_RUNTIME_EXPORT cl_program (CL_API_CALL*clCreateProgramWithBinary)(cl_context, cl_uint, const cl_device_id*, const size_t*, const unsigned char**, cl_int*, cl_int*); +extern CL_RUNTIME_EXPORT cl_program (CL_API_CALL*clCreateProgramWithBuiltInKernels)(cl_context, cl_uint, const cl_device_id*, const char*, cl_int*); +extern CL_RUNTIME_EXPORT cl_program (CL_API_CALL*clCreateProgramWithSource)(cl_context, cl_uint, const char**, const size_t*, cl_int*); +extern CL_RUNTIME_EXPORT cl_sampler (CL_API_CALL*clCreateSampler)(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateSubBuffer)(cl_mem, cl_mem_flags, cl_buffer_create_type, const void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clCreateSubDevices)(cl_device_id, const cl_device_partition_property*, cl_uint, cl_device_id*, cl_uint*); +extern CL_RUNTIME_EXPORT cl_event (CL_API_CALL*clCreateUserEvent)(cl_context, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueBarrier)(cl_command_queue); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueBarrierWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueCopyBuffer)(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueCopyBufferRect)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueCopyBufferToImage)(cl_command_queue, cl_mem, cl_mem, size_t, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueCopyImage)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueCopyImageToBuffer)(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, size_t, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueFillBuffer)(cl_command_queue, cl_mem, const void*, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueFillImage)(cl_command_queue, cl_mem, const void*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT void* (CL_API_CALL*clEnqueueMapBuffer)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*); +extern CL_RUNTIME_EXPORT void* (CL_API_CALL*clEnqueueMapImage)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueMarker)(cl_command_queue, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueMarkerWithWaitList)(cl_command_queue, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueMigrateMemObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueNDRangeKernel)(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueNativeKernel)(cl_command_queue, void (CL_CALLBACK*) (void*), void*, size_t, cl_uint, const cl_mem*, const void**, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueReadBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueReadBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueReadImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueTask)(cl_command_queue, cl_kernel, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueUnmapMemObject)(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueWaitForEvents)(cl_command_queue, cl_uint, const cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueWriteBuffer)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueWriteBufferRect)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueWriteImage)(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, const void*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clFinish)(cl_command_queue); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clFlush)(cl_command_queue); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetCommandQueueInfo)(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetContextInfo)(cl_context, cl_context_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetDeviceIDs)(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetDeviceInfo)(cl_device_id, cl_device_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetEventInfo)(cl_event, cl_event_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetEventProfilingInfo)(cl_event, cl_profiling_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT void* (CL_API_CALL*clGetExtensionFunctionAddress)(const char*); +extern CL_RUNTIME_EXPORT void* (CL_API_CALL*clGetExtensionFunctionAddressForPlatform)(cl_platform_id, const char*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetImageInfo)(cl_mem, cl_image_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetKernelArgInfo)(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetKernelInfo)(cl_kernel, cl_kernel_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetKernelWorkGroupInfo)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetMemObjectInfo)(cl_mem, cl_mem_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetPlatformInfo)(cl_platform_id, cl_platform_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetProgramBuildInfo)(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetProgramInfo)(cl_program, cl_program_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetSamplerInfo)(cl_sampler, cl_sampler_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetSupportedImageFormats)(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*); +extern CL_RUNTIME_EXPORT cl_program (CL_API_CALL*clLinkProgram)(cl_context, cl_uint, const cl_device_id*, const char*, cl_uint, const cl_program*, void (CL_CALLBACK*) (cl_program, void*), void*, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseCommandQueue)(cl_command_queue); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseContext)(cl_context); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseDevice)(cl_device_id); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseEvent)(cl_event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseKernel)(cl_kernel); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseMemObject)(cl_mem); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseProgram)(cl_program); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clReleaseSampler)(cl_sampler); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainCommandQueue)(cl_command_queue); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainContext)(cl_context); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainDevice)(cl_device_id); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainEvent)(cl_event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainKernel)(cl_kernel); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainMemObject)(cl_mem); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainProgram)(cl_program); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clRetainSampler)(cl_sampler); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clSetEventCallback)(cl_event, cl_int, void (CL_CALLBACK*) (cl_event, cl_int, void*), void*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clSetKernelArg)(cl_kernel, cl_uint, size_t, const void*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clSetMemObjectDestructorCallback)(cl_mem, void (CL_CALLBACK*) (cl_mem, void*), void*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clSetUserEventStatus)(cl_event, cl_int); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clUnloadCompiler)(); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clUnloadPlatformCompiler)(cl_platform_id); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clWaitForEvents)(cl_uint, const cl_event*); diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp new file mode 100644 index 0000000..216b22b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp @@ -0,0 +1,272 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_WRAPPERS_HPP +#error "Invalid usage" +#endif + +// generated by parser_cl.py +#undef clBuildProgram +#define clBuildProgram clBuildProgram_fn +inline cl_int clBuildProgram(cl_program p0, cl_uint p1, const cl_device_id* p2, const char* p3, void (CL_CALLBACK*p4) (cl_program, void*), void* p5) { return clBuildProgram_pfn(p0, p1, p2, p3, p4, p5); } +#undef clCompileProgram +#define clCompileProgram clCompileProgram_fn +inline cl_int clCompileProgram(cl_program p0, cl_uint p1, const cl_device_id* p2, const char* p3, cl_uint p4, const cl_program* p5, const char** p6, void (CL_CALLBACK*p7) (cl_program, void*), void* p8) { return clCompileProgram_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clCreateBuffer +#define clCreateBuffer clCreateBuffer_fn +inline cl_mem clCreateBuffer(cl_context p0, cl_mem_flags p1, size_t p2, void* p3, cl_int* p4) { return clCreateBuffer_pfn(p0, p1, p2, p3, p4); } +#undef clCreateCommandQueue +#define clCreateCommandQueue clCreateCommandQueue_fn +inline cl_command_queue clCreateCommandQueue(cl_context p0, cl_device_id p1, cl_command_queue_properties p2, cl_int* p3) { return clCreateCommandQueue_pfn(p0, p1, p2, p3); } +#undef clCreateContext +#define clCreateContext clCreateContext_fn +inline cl_context clCreateContext(const cl_context_properties* p0, cl_uint p1, const cl_device_id* p2, void (CL_CALLBACK*p3) (const char*, const void*, size_t, void*), void* p4, cl_int* p5) { return clCreateContext_pfn(p0, p1, p2, p3, p4, p5); } +#undef clCreateContextFromType +#define clCreateContextFromType clCreateContextFromType_fn +inline cl_context clCreateContextFromType(const cl_context_properties* p0, cl_device_type p1, void (CL_CALLBACK*p2) (const char*, const void*, size_t, void*), void* p3, cl_int* p4) { return clCreateContextFromType_pfn(p0, p1, p2, p3, p4); } +#undef clCreateImage +#define clCreateImage clCreateImage_fn +inline cl_mem clCreateImage(cl_context p0, cl_mem_flags p1, const cl_image_format* p2, const cl_image_desc* p3, void* p4, cl_int* p5) { return clCreateImage_pfn(p0, p1, p2, p3, p4, p5); } +#undef clCreateImage2D +#define clCreateImage2D clCreateImage2D_fn +inline cl_mem clCreateImage2D(cl_context p0, cl_mem_flags p1, const cl_image_format* p2, size_t p3, size_t p4, size_t p5, void* p6, cl_int* p7) { return clCreateImage2D_pfn(p0, p1, p2, p3, p4, p5, p6, p7); } +#undef clCreateImage3D +#define clCreateImage3D clCreateImage3D_fn +inline cl_mem clCreateImage3D(cl_context p0, cl_mem_flags p1, const cl_image_format* p2, size_t p3, size_t p4, size_t p5, size_t p6, size_t p7, void* p8, cl_int* p9) { return clCreateImage3D_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); } +#undef clCreateKernel +#define clCreateKernel clCreateKernel_fn +inline cl_kernel clCreateKernel(cl_program p0, const char* p1, cl_int* p2) { return clCreateKernel_pfn(p0, p1, p2); } +#undef clCreateKernelsInProgram +#define clCreateKernelsInProgram clCreateKernelsInProgram_fn +inline cl_int clCreateKernelsInProgram(cl_program p0, cl_uint p1, cl_kernel* p2, cl_uint* p3) { return clCreateKernelsInProgram_pfn(p0, p1, p2, p3); } +#undef clCreateProgramWithBinary +#define clCreateProgramWithBinary clCreateProgramWithBinary_fn +inline cl_program clCreateProgramWithBinary(cl_context p0, cl_uint p1, const cl_device_id* p2, const size_t* p3, const unsigned char** p4, cl_int* p5, cl_int* p6) { return clCreateProgramWithBinary_pfn(p0, p1, p2, p3, p4, p5, p6); } +#undef clCreateProgramWithBuiltInKernels +#define clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels_fn +inline cl_program clCreateProgramWithBuiltInKernels(cl_context p0, cl_uint p1, const cl_device_id* p2, const char* p3, cl_int* p4) { return clCreateProgramWithBuiltInKernels_pfn(p0, p1, p2, p3, p4); } +#undef clCreateProgramWithSource +#define clCreateProgramWithSource clCreateProgramWithSource_fn +inline cl_program clCreateProgramWithSource(cl_context p0, cl_uint p1, const char** p2, const size_t* p3, cl_int* p4) { return clCreateProgramWithSource_pfn(p0, p1, p2, p3, p4); } +#undef clCreateSampler +#define clCreateSampler clCreateSampler_fn +inline cl_sampler clCreateSampler(cl_context p0, cl_bool p1, cl_addressing_mode p2, cl_filter_mode p3, cl_int* p4) { return clCreateSampler_pfn(p0, p1, p2, p3, p4); } +#undef clCreateSubBuffer +#define clCreateSubBuffer clCreateSubBuffer_fn +inline cl_mem clCreateSubBuffer(cl_mem p0, cl_mem_flags p1, cl_buffer_create_type p2, const void* p3, cl_int* p4) { return clCreateSubBuffer_pfn(p0, p1, p2, p3, p4); } +#undef clCreateSubDevices +#define clCreateSubDevices clCreateSubDevices_fn +inline cl_int clCreateSubDevices(cl_device_id p0, const cl_device_partition_property* p1, cl_uint p2, cl_device_id* p3, cl_uint* p4) { return clCreateSubDevices_pfn(p0, p1, p2, p3, p4); } +#undef clCreateUserEvent +#define clCreateUserEvent clCreateUserEvent_fn +inline cl_event clCreateUserEvent(cl_context p0, cl_int* p1) { return clCreateUserEvent_pfn(p0, p1); } +#undef clEnqueueBarrier +#define clEnqueueBarrier clEnqueueBarrier_fn +inline cl_int clEnqueueBarrier(cl_command_queue p0) { return clEnqueueBarrier_pfn(p0); } +#undef clEnqueueBarrierWithWaitList +#define clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList_fn +inline cl_int clEnqueueBarrierWithWaitList(cl_command_queue p0, cl_uint p1, const cl_event* p2, cl_event* p3) { return clEnqueueBarrierWithWaitList_pfn(p0, p1, p2, p3); } +#undef clEnqueueCopyBuffer +#define clEnqueueCopyBuffer clEnqueueCopyBuffer_fn +inline cl_int clEnqueueCopyBuffer(cl_command_queue p0, cl_mem p1, cl_mem p2, size_t p3, size_t p4, size_t p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueCopyBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueCopyBufferRect +#define clEnqueueCopyBufferRect clEnqueueCopyBufferRect_fn +inline cl_int clEnqueueCopyBufferRect(cl_command_queue p0, cl_mem p1, cl_mem p2, const size_t* p3, const size_t* p4, const size_t* p5, size_t p6, size_t p7, size_t p8, size_t p9, cl_uint p10, const cl_event* p11, cl_event* p12) { return clEnqueueCopyBufferRect_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); } +#undef clEnqueueCopyBufferToImage +#define clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage_fn +inline cl_int clEnqueueCopyBufferToImage(cl_command_queue p0, cl_mem p1, cl_mem p2, size_t p3, const size_t* p4, const size_t* p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueCopyBufferToImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueCopyImage +#define clEnqueueCopyImage clEnqueueCopyImage_fn +inline cl_int clEnqueueCopyImage(cl_command_queue p0, cl_mem p1, cl_mem p2, const size_t* p3, const size_t* p4, const size_t* p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueCopyImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueCopyImageToBuffer +#define clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer_fn +inline cl_int clEnqueueCopyImageToBuffer(cl_command_queue p0, cl_mem p1, cl_mem p2, const size_t* p3, const size_t* p4, size_t p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueCopyImageToBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueFillBuffer +#define clEnqueueFillBuffer clEnqueueFillBuffer_fn +inline cl_int clEnqueueFillBuffer(cl_command_queue p0, cl_mem p1, const void* p2, size_t p3, size_t p4, size_t p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueFillBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueFillImage +#define clEnqueueFillImage clEnqueueFillImage_fn +inline cl_int clEnqueueFillImage(cl_command_queue p0, cl_mem p1, const void* p2, const size_t* p3, const size_t* p4, cl_uint p5, const cl_event* p6, cl_event* p7) { return clEnqueueFillImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7); } +#undef clEnqueueMapBuffer +#define clEnqueueMapBuffer clEnqueueMapBuffer_fn +inline void* clEnqueueMapBuffer(cl_command_queue p0, cl_mem p1, cl_bool p2, cl_map_flags p3, size_t p4, size_t p5, cl_uint p6, const cl_event* p7, cl_event* p8, cl_int* p9) { return clEnqueueMapBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); } +#undef clEnqueueMapImage +#define clEnqueueMapImage clEnqueueMapImage_fn +inline void* clEnqueueMapImage(cl_command_queue p0, cl_mem p1, cl_bool p2, cl_map_flags p3, const size_t* p4, const size_t* p5, size_t* p6, size_t* p7, cl_uint p8, const cl_event* p9, cl_event* p10, cl_int* p11) { return clEnqueueMapImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } +#undef clEnqueueMarker +#define clEnqueueMarker clEnqueueMarker_fn +inline cl_int clEnqueueMarker(cl_command_queue p0, cl_event* p1) { return clEnqueueMarker_pfn(p0, p1); } +#undef clEnqueueMarkerWithWaitList +#define clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList_fn +inline cl_int clEnqueueMarkerWithWaitList(cl_command_queue p0, cl_uint p1, const cl_event* p2, cl_event* p3) { return clEnqueueMarkerWithWaitList_pfn(p0, p1, p2, p3); } +#undef clEnqueueMigrateMemObjects +#define clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects_fn +inline cl_int clEnqueueMigrateMemObjects(cl_command_queue p0, cl_uint p1, const cl_mem* p2, cl_mem_migration_flags p3, cl_uint p4, const cl_event* p5, cl_event* p6) { return clEnqueueMigrateMemObjects_pfn(p0, p1, p2, p3, p4, p5, p6); } +#undef clEnqueueNDRangeKernel +#define clEnqueueNDRangeKernel clEnqueueNDRangeKernel_fn +inline cl_int clEnqueueNDRangeKernel(cl_command_queue p0, cl_kernel p1, cl_uint p2, const size_t* p3, const size_t* p4, const size_t* p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueNDRangeKernel_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueNativeKernel +#define clEnqueueNativeKernel clEnqueueNativeKernel_fn +inline cl_int clEnqueueNativeKernel(cl_command_queue p0, void (CL_CALLBACK*p1) (void*), void* p2, size_t p3, cl_uint p4, const cl_mem* p5, const void** p6, cl_uint p7, const cl_event* p8, cl_event* p9) { return clEnqueueNativeKernel_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); } +#undef clEnqueueReadBuffer +#define clEnqueueReadBuffer clEnqueueReadBuffer_fn +inline cl_int clEnqueueReadBuffer(cl_command_queue p0, cl_mem p1, cl_bool p2, size_t p3, size_t p4, void* p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueReadBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueReadBufferRect +#define clEnqueueReadBufferRect clEnqueueReadBufferRect_fn +inline cl_int clEnqueueReadBufferRect(cl_command_queue p0, cl_mem p1, cl_bool p2, const size_t* p3, const size_t* p4, const size_t* p5, size_t p6, size_t p7, size_t p8, size_t p9, void* p10, cl_uint p11, const cl_event* p12, cl_event* p13) { return clEnqueueReadBufferRect_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } +#undef clEnqueueReadImage +#define clEnqueueReadImage clEnqueueReadImage_fn +inline cl_int clEnqueueReadImage(cl_command_queue p0, cl_mem p1, cl_bool p2, const size_t* p3, const size_t* p4, size_t p5, size_t p6, void* p7, cl_uint p8, const cl_event* p9, cl_event* p10) { return clEnqueueReadImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } +#undef clEnqueueTask +#define clEnqueueTask clEnqueueTask_fn +inline cl_int clEnqueueTask(cl_command_queue p0, cl_kernel p1, cl_uint p2, const cl_event* p3, cl_event* p4) { return clEnqueueTask_pfn(p0, p1, p2, p3, p4); } +#undef clEnqueueUnmapMemObject +#define clEnqueueUnmapMemObject clEnqueueUnmapMemObject_fn +inline cl_int clEnqueueUnmapMemObject(cl_command_queue p0, cl_mem p1, void* p2, cl_uint p3, const cl_event* p4, cl_event* p5) { return clEnqueueUnmapMemObject_pfn(p0, p1, p2, p3, p4, p5); } +#undef clEnqueueWaitForEvents +#define clEnqueueWaitForEvents clEnqueueWaitForEvents_fn +inline cl_int clEnqueueWaitForEvents(cl_command_queue p0, cl_uint p1, const cl_event* p2) { return clEnqueueWaitForEvents_pfn(p0, p1, p2); } +#undef clEnqueueWriteBuffer +#define clEnqueueWriteBuffer clEnqueueWriteBuffer_fn +inline cl_int clEnqueueWriteBuffer(cl_command_queue p0, cl_mem p1, cl_bool p2, size_t p3, size_t p4, const void* p5, cl_uint p6, const cl_event* p7, cl_event* p8) { return clEnqueueWriteBuffer_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clEnqueueWriteBufferRect +#define clEnqueueWriteBufferRect clEnqueueWriteBufferRect_fn +inline cl_int clEnqueueWriteBufferRect(cl_command_queue p0, cl_mem p1, cl_bool p2, const size_t* p3, const size_t* p4, const size_t* p5, size_t p6, size_t p7, size_t p8, size_t p9, const void* p10, cl_uint p11, const cl_event* p12, cl_event* p13) { return clEnqueueWriteBufferRect_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } +#undef clEnqueueWriteImage +#define clEnqueueWriteImage clEnqueueWriteImage_fn +inline cl_int clEnqueueWriteImage(cl_command_queue p0, cl_mem p1, cl_bool p2, const size_t* p3, const size_t* p4, size_t p5, size_t p6, const void* p7, cl_uint p8, const cl_event* p9, cl_event* p10) { return clEnqueueWriteImage_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } +#undef clFinish +#define clFinish clFinish_fn +inline cl_int clFinish(cl_command_queue p0) { return clFinish_pfn(p0); } +#undef clFlush +#define clFlush clFlush_fn +inline cl_int clFlush(cl_command_queue p0) { return clFlush_pfn(p0); } +#undef clGetCommandQueueInfo +#define clGetCommandQueueInfo clGetCommandQueueInfo_fn +inline cl_int clGetCommandQueueInfo(cl_command_queue p0, cl_command_queue_info p1, size_t p2, void* p3, size_t* p4) { return clGetCommandQueueInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetContextInfo +#define clGetContextInfo clGetContextInfo_fn +inline cl_int clGetContextInfo(cl_context p0, cl_context_info p1, size_t p2, void* p3, size_t* p4) { return clGetContextInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetDeviceIDs +#define clGetDeviceIDs clGetDeviceIDs_fn +inline cl_int clGetDeviceIDs(cl_platform_id p0, cl_device_type p1, cl_uint p2, cl_device_id* p3, cl_uint* p4) { return clGetDeviceIDs_pfn(p0, p1, p2, p3, p4); } +#undef clGetDeviceInfo +#define clGetDeviceInfo clGetDeviceInfo_fn +inline cl_int clGetDeviceInfo(cl_device_id p0, cl_device_info p1, size_t p2, void* p3, size_t* p4) { return clGetDeviceInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetEventInfo +#define clGetEventInfo clGetEventInfo_fn +inline cl_int clGetEventInfo(cl_event p0, cl_event_info p1, size_t p2, void* p3, size_t* p4) { return clGetEventInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetEventProfilingInfo +#define clGetEventProfilingInfo clGetEventProfilingInfo_fn +inline cl_int clGetEventProfilingInfo(cl_event p0, cl_profiling_info p1, size_t p2, void* p3, size_t* p4) { return clGetEventProfilingInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetExtensionFunctionAddress +#define clGetExtensionFunctionAddress clGetExtensionFunctionAddress_fn +inline void* clGetExtensionFunctionAddress(const char* p0) { return clGetExtensionFunctionAddress_pfn(p0); } +#undef clGetExtensionFunctionAddressForPlatform +#define clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform_fn +inline void* clGetExtensionFunctionAddressForPlatform(cl_platform_id p0, const char* p1) { return clGetExtensionFunctionAddressForPlatform_pfn(p0, p1); } +#undef clGetImageInfo +#define clGetImageInfo clGetImageInfo_fn +inline cl_int clGetImageInfo(cl_mem p0, cl_image_info p1, size_t p2, void* p3, size_t* p4) { return clGetImageInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetKernelArgInfo +#define clGetKernelArgInfo clGetKernelArgInfo_fn +inline cl_int clGetKernelArgInfo(cl_kernel p0, cl_uint p1, cl_kernel_arg_info p2, size_t p3, void* p4, size_t* p5) { return clGetKernelArgInfo_pfn(p0, p1, p2, p3, p4, p5); } +#undef clGetKernelInfo +#define clGetKernelInfo clGetKernelInfo_fn +inline cl_int clGetKernelInfo(cl_kernel p0, cl_kernel_info p1, size_t p2, void* p3, size_t* p4) { return clGetKernelInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetKernelWorkGroupInfo +#define clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo_fn +inline cl_int clGetKernelWorkGroupInfo(cl_kernel p0, cl_device_id p1, cl_kernel_work_group_info p2, size_t p3, void* p4, size_t* p5) { return clGetKernelWorkGroupInfo_pfn(p0, p1, p2, p3, p4, p5); } +#undef clGetMemObjectInfo +#define clGetMemObjectInfo clGetMemObjectInfo_fn +inline cl_int clGetMemObjectInfo(cl_mem p0, cl_mem_info p1, size_t p2, void* p3, size_t* p4) { return clGetMemObjectInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetPlatformIDs +#define clGetPlatformIDs clGetPlatformIDs_fn +inline cl_int clGetPlatformIDs(cl_uint p0, cl_platform_id* p1, cl_uint* p2) { return clGetPlatformIDs_pfn(p0, p1, p2); } +#undef clGetPlatformInfo +#define clGetPlatformInfo clGetPlatformInfo_fn +inline cl_int clGetPlatformInfo(cl_platform_id p0, cl_platform_info p1, size_t p2, void* p3, size_t* p4) { return clGetPlatformInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetProgramBuildInfo +#define clGetProgramBuildInfo clGetProgramBuildInfo_fn +inline cl_int clGetProgramBuildInfo(cl_program p0, cl_device_id p1, cl_program_build_info p2, size_t p3, void* p4, size_t* p5) { return clGetProgramBuildInfo_pfn(p0, p1, p2, p3, p4, p5); } +#undef clGetProgramInfo +#define clGetProgramInfo clGetProgramInfo_fn +inline cl_int clGetProgramInfo(cl_program p0, cl_program_info p1, size_t p2, void* p3, size_t* p4) { return clGetProgramInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetSamplerInfo +#define clGetSamplerInfo clGetSamplerInfo_fn +inline cl_int clGetSamplerInfo(cl_sampler p0, cl_sampler_info p1, size_t p2, void* p3, size_t* p4) { return clGetSamplerInfo_pfn(p0, p1, p2, p3, p4); } +#undef clGetSupportedImageFormats +#define clGetSupportedImageFormats clGetSupportedImageFormats_fn +inline cl_int clGetSupportedImageFormats(cl_context p0, cl_mem_flags p1, cl_mem_object_type p2, cl_uint p3, cl_image_format* p4, cl_uint* p5) { return clGetSupportedImageFormats_pfn(p0, p1, p2, p3, p4, p5); } +#undef clLinkProgram +#define clLinkProgram clLinkProgram_fn +inline cl_program clLinkProgram(cl_context p0, cl_uint p1, const cl_device_id* p2, const char* p3, cl_uint p4, const cl_program* p5, void (CL_CALLBACK*p6) (cl_program, void*), void* p7, cl_int* p8) { return clLinkProgram_pfn(p0, p1, p2, p3, p4, p5, p6, p7, p8); } +#undef clReleaseCommandQueue +#define clReleaseCommandQueue clReleaseCommandQueue_fn +inline cl_int clReleaseCommandQueue(cl_command_queue p0) { return clReleaseCommandQueue_pfn(p0); } +#undef clReleaseContext +#define clReleaseContext clReleaseContext_fn +inline cl_int clReleaseContext(cl_context p0) { return clReleaseContext_pfn(p0); } +#undef clReleaseDevice +#define clReleaseDevice clReleaseDevice_fn +inline cl_int clReleaseDevice(cl_device_id p0) { return clReleaseDevice_pfn(p0); } +#undef clReleaseEvent +#define clReleaseEvent clReleaseEvent_fn +inline cl_int clReleaseEvent(cl_event p0) { return clReleaseEvent_pfn(p0); } +#undef clReleaseKernel +#define clReleaseKernel clReleaseKernel_fn +inline cl_int clReleaseKernel(cl_kernel p0) { return clReleaseKernel_pfn(p0); } +#undef clReleaseMemObject +#define clReleaseMemObject clReleaseMemObject_fn +inline cl_int clReleaseMemObject(cl_mem p0) { return clReleaseMemObject_pfn(p0); } +#undef clReleaseProgram +#define clReleaseProgram clReleaseProgram_fn +inline cl_int clReleaseProgram(cl_program p0) { return clReleaseProgram_pfn(p0); } +#undef clReleaseSampler +#define clReleaseSampler clReleaseSampler_fn +inline cl_int clReleaseSampler(cl_sampler p0) { return clReleaseSampler_pfn(p0); } +#undef clRetainCommandQueue +#define clRetainCommandQueue clRetainCommandQueue_fn +inline cl_int clRetainCommandQueue(cl_command_queue p0) { return clRetainCommandQueue_pfn(p0); } +#undef clRetainContext +#define clRetainContext clRetainContext_fn +inline cl_int clRetainContext(cl_context p0) { return clRetainContext_pfn(p0); } +#undef clRetainDevice +#define clRetainDevice clRetainDevice_fn +inline cl_int clRetainDevice(cl_device_id p0) { return clRetainDevice_pfn(p0); } +#undef clRetainEvent +#define clRetainEvent clRetainEvent_fn +inline cl_int clRetainEvent(cl_event p0) { return clRetainEvent_pfn(p0); } +#undef clRetainKernel +#define clRetainKernel clRetainKernel_fn +inline cl_int clRetainKernel(cl_kernel p0) { return clRetainKernel_pfn(p0); } +#undef clRetainMemObject +#define clRetainMemObject clRetainMemObject_fn +inline cl_int clRetainMemObject(cl_mem p0) { return clRetainMemObject_pfn(p0); } +#undef clRetainProgram +#define clRetainProgram clRetainProgram_fn +inline cl_int clRetainProgram(cl_program p0) { return clRetainProgram_pfn(p0); } +#undef clRetainSampler +#define clRetainSampler clRetainSampler_fn +inline cl_int clRetainSampler(cl_sampler p0) { return clRetainSampler_pfn(p0); } +#undef clSetEventCallback +#define clSetEventCallback clSetEventCallback_fn +inline cl_int clSetEventCallback(cl_event p0, cl_int p1, void (CL_CALLBACK*p2) (cl_event, cl_int, void*), void* p3) { return clSetEventCallback_pfn(p0, p1, p2, p3); } +#undef clSetKernelArg +#define clSetKernelArg clSetKernelArg_fn +inline cl_int clSetKernelArg(cl_kernel p0, cl_uint p1, size_t p2, const void* p3) { return clSetKernelArg_pfn(p0, p1, p2, p3); } +#undef clSetMemObjectDestructorCallback +#define clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback_fn +inline cl_int clSetMemObjectDestructorCallback(cl_mem p0, void (CL_CALLBACK*p1) (cl_mem, void*), void* p2) { return clSetMemObjectDestructorCallback_pfn(p0, p1, p2); } +#undef clSetUserEventStatus +#define clSetUserEventStatus clSetUserEventStatus_fn +inline cl_int clSetUserEventStatus(cl_event p0, cl_int p1) { return clSetUserEventStatus_pfn(p0, p1); } +#undef clUnloadCompiler +#define clUnloadCompiler clUnloadCompiler_fn +inline cl_int clUnloadCompiler() { return clUnloadCompiler_pfn(); } +#undef clUnloadPlatformCompiler +#define clUnloadPlatformCompiler clUnloadPlatformCompiler_fn +inline cl_int clUnloadPlatformCompiler(cl_platform_id p0) { return clUnloadPlatformCompiler_pfn(p0); } +#undef clWaitForEvents +#define clWaitForEvents clWaitForEvents_fn +inline cl_int clWaitForEvents(cl_uint p0, const cl_event* p1) { return clWaitForEvents_pfn(p0, p1); } diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp new file mode 100644 index 0000000..0b12aed --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp @@ -0,0 +1,62 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP +#error "Invalid usage" +#endif + +// generated by parser_cl.py +#define clCreateFromGLBuffer clCreateFromGLBuffer_ +#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_ +#define clCreateFromGLTexture clCreateFromGLTexture_ +#define clCreateFromGLTexture2D clCreateFromGLTexture2D_ +#define clCreateFromGLTexture3D clCreateFromGLTexture3D_ +#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_ +#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_ +#define clGetGLContextInfoKHR clGetGLContextInfoKHR_ +#define clGetGLObjectInfo clGetGLObjectInfo_ +#define clGetGLTextureInfo clGetGLTextureInfo_ + +#if defined __APPLE__ +#include +#else +#include +#endif + +// generated by parser_cl.py +#undef clCreateFromGLBuffer +#define clCreateFromGLBuffer clCreateFromGLBuffer_pfn +#undef clCreateFromGLRenderbuffer +#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_pfn +#undef clCreateFromGLTexture +#define clCreateFromGLTexture clCreateFromGLTexture_pfn +#undef clCreateFromGLTexture2D +#define clCreateFromGLTexture2D clCreateFromGLTexture2D_pfn +#undef clCreateFromGLTexture3D +#define clCreateFromGLTexture3D clCreateFromGLTexture3D_pfn +#undef clEnqueueAcquireGLObjects +#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_pfn +#undef clEnqueueReleaseGLObjects +#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_pfn +#undef clGetGLContextInfoKHR +#define clGetGLContextInfoKHR clGetGLContextInfoKHR_pfn +#undef clGetGLObjectInfo +#define clGetGLObjectInfo clGetGLObjectInfo_pfn +#undef clGetGLTextureInfo +#define clGetGLTextureInfo clGetGLTextureInfo_pfn + +#ifdef cl_khr_gl_sharing + +// generated by parser_cl.py +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLBuffer)(cl_context, cl_mem_flags, cl_GLuint, int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLRenderbuffer)(cl_context, cl_mem_flags, cl_GLuint, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture2D)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*); +extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture3D)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueAcquireGLObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueReleaseGLObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_uint, const cl_event*, cl_event*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLContextInfoKHR)(const cl_context_properties*, cl_gl_context_info, size_t, void*, size_t*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLObjectInfo)(cl_mem, cl_gl_object_type*, cl_GLuint*); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLTextureInfo)(cl_mem, cl_gl_texture_info, size_t, void*, size_t*); + +#endif // cl_khr_gl_sharing diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp new file mode 100644 index 0000000..12f342b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp @@ -0,0 +1,42 @@ +// +// AUTOGENERATED, DO NOT EDIT +// +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP +#error "Invalid usage" +#endif + +#ifdef cl_khr_gl_sharing + +// generated by parser_cl.py +#undef clCreateFromGLBuffer +#define clCreateFromGLBuffer clCreateFromGLBuffer_fn +inline cl_mem clCreateFromGLBuffer(cl_context p0, cl_mem_flags p1, cl_GLuint p2, int* p3) { return clCreateFromGLBuffer_pfn(p0, p1, p2, p3); } +#undef clCreateFromGLRenderbuffer +#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_fn +inline cl_mem clCreateFromGLRenderbuffer(cl_context p0, cl_mem_flags p1, cl_GLuint p2, cl_int* p3) { return clCreateFromGLRenderbuffer_pfn(p0, p1, p2, p3); } +#undef clCreateFromGLTexture +#define clCreateFromGLTexture clCreateFromGLTexture_fn +inline cl_mem clCreateFromGLTexture(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture_pfn(p0, p1, p2, p3, p4, p5); } +#undef clCreateFromGLTexture2D +#define clCreateFromGLTexture2D clCreateFromGLTexture2D_fn +inline cl_mem clCreateFromGLTexture2D(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture2D_pfn(p0, p1, p2, p3, p4, p5); } +#undef clCreateFromGLTexture3D +#define clCreateFromGLTexture3D clCreateFromGLTexture3D_fn +inline cl_mem clCreateFromGLTexture3D(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture3D_pfn(p0, p1, p2, p3, p4, p5); } +#undef clEnqueueAcquireGLObjects +#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_fn +inline cl_int clEnqueueAcquireGLObjects(cl_command_queue p0, cl_uint p1, const cl_mem* p2, cl_uint p3, const cl_event* p4, cl_event* p5) { return clEnqueueAcquireGLObjects_pfn(p0, p1, p2, p3, p4, p5); } +#undef clEnqueueReleaseGLObjects +#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_fn +inline cl_int clEnqueueReleaseGLObjects(cl_command_queue p0, cl_uint p1, const cl_mem* p2, cl_uint p3, const cl_event* p4, cl_event* p5) { return clEnqueueReleaseGLObjects_pfn(p0, p1, p2, p3, p4, p5); } +#undef clGetGLContextInfoKHR +#define clGetGLContextInfoKHR clGetGLContextInfoKHR_fn +inline cl_int clGetGLContextInfoKHR(const cl_context_properties* p0, cl_gl_context_info p1, size_t p2, void* p3, size_t* p4) { return clGetGLContextInfoKHR_pfn(p0, p1, p2, p3, p4); } +#undef clGetGLObjectInfo +#define clGetGLObjectInfo clGetGLObjectInfo_fn +inline cl_int clGetGLObjectInfo(cl_mem p0, cl_gl_object_type* p1, cl_GLuint* p2) { return clGetGLObjectInfo_pfn(p0, p1, p2); } +#undef clGetGLTextureInfo +#define clGetGLTextureInfo clGetGLTextureInfo_fn +inline cl_int clGetGLTextureInfo(cl_mem p0, cl_gl_texture_info p1, size_t p2, void* p3, size_t* p4) { return clGetGLTextureInfo_pfn(p0, p1, p2, p3, p4); } + +#endif // cl_khr_gl_sharing diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdblas.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdblas.hpp new file mode 100644 index 0000000..2ad8ac0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdblas.hpp @@ -0,0 +1,53 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP +#define OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP + +#ifdef HAVE_CLAMDBLAS + +#include "opencl_core.hpp" + +#include "autogenerated/opencl_clamdblas.hpp" + +#endif // HAVE_CLAMDBLAS + +#endif // OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdfft.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdfft.hpp new file mode 100644 index 0000000..a328f72 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_clamdfft.hpp @@ -0,0 +1,53 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP +#define OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP + +#ifdef HAVE_CLAMDFFT + +#include "opencl_core.hpp" + +#include "autogenerated/opencl_clamdfft.hpp" + +#endif // HAVE_CLAMDFFT + +#endif // OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core.hpp new file mode 100644 index 0000000..0404b31 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core.hpp @@ -0,0 +1,84 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_CORE_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_CORE_HPP + +#ifdef HAVE_OPENCL + +#ifndef CL_RUNTIME_EXPORT +#if (defined(BUILD_SHARED_LIBS) || defined(OPENCV_CORE_SHARED)) && (defined _WIN32 || defined WINCE) && \ + !(defined(__OPENCV_BUILD) && defined(OPENCV_MODULE_IS_PART_OF_WORLD)) +#define CL_RUNTIME_EXPORT __declspec(dllimport) +#else +#define CL_RUNTIME_EXPORT +#endif +#endif + +#ifdef HAVE_OPENCL_SVM +#define clSVMAlloc clSVMAlloc_ +#define clSVMFree clSVMFree_ +#define clSetKernelArgSVMPointer clSetKernelArgSVMPointer_ +#define clSetKernelExecInfo clSetKernelExecInfo_ +#define clEnqueueSVMFree clEnqueueSVMFree_ +#define clEnqueueSVMMemcpy clEnqueueSVMMemcpy_ +#define clEnqueueSVMMemFill clEnqueueSVMMemFill_ +#define clEnqueueSVMMap clEnqueueSVMMap_ +#define clEnqueueSVMUnmap clEnqueueSVMUnmap_ +#endif + +#include "autogenerated/opencl_core.hpp" + +#ifndef CL_DEVICE_DOUBLE_FP_CONFIG +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#endif + +#ifndef CL_DEVICE_HALF_FP_CONFIG +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#endif + +#ifndef CL_VERSION_1_2 +#define CV_REQUIRE_OPENCL_1_2_ERROR CV_Error(cv::Error::OpenCLApiCallError, "OpenCV compiled without OpenCL v1.2 support, so we can't use functionality from OpenCL v1.2") +#endif + +#endif // HAVE_OPENCL + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_CORE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp new file mode 100644 index 0000000..38fcae9 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp @@ -0,0 +1,47 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_WRAPPERS_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_WRAPPERS_HPP + +#include "autogenerated/opencl_core_wrappers.hpp" + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_WRAPPERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl.hpp new file mode 100644 index 0000000..659c7d8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl.hpp @@ -0,0 +1,53 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP + +#if defined HAVE_OPENCL && defined HAVE_OPENGL + +#include "opencl_core.hpp" + +#include "autogenerated/opencl_gl.hpp" + +#endif // defined HAVE_OPENCL && defined HAVE_OPENGL + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp new file mode 100644 index 0000000..9700004 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp @@ -0,0 +1,47 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP + +#include "autogenerated/opencl_gl_wrappers.hpp" + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp new file mode 100644 index 0000000..9636b19 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp @@ -0,0 +1,48 @@ +/* See LICENSE file in the root OpenCV directory */ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_2_0_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_2_0_HPP + +#if defined(HAVE_OPENCL_SVM) +#include "opencl_core.hpp" + +#include "opencl_svm_definitions.hpp" + +#undef clSVMAlloc +#define clSVMAlloc clSVMAlloc_pfn +#undef clSVMFree +#define clSVMFree clSVMFree_pfn +#undef clSetKernelArgSVMPointer +#define clSetKernelArgSVMPointer clSetKernelArgSVMPointer_pfn +#undef clSetKernelExecInfo +//#define clSetKernelExecInfo clSetKernelExecInfo_pfn +#undef clEnqueueSVMFree +//#define clEnqueueSVMFree clEnqueueSVMFree_pfn +#undef clEnqueueSVMMemcpy +#define clEnqueueSVMMemcpy clEnqueueSVMMemcpy_pfn +#undef clEnqueueSVMMemFill +#define clEnqueueSVMMemFill clEnqueueSVMMemFill_pfn +#undef clEnqueueSVMMap +#define clEnqueueSVMMap clEnqueueSVMMap_pfn +#undef clEnqueueSVMUnmap +#define clEnqueueSVMUnmap clEnqueueSVMUnmap_pfn + +extern CL_RUNTIME_EXPORT void* (CL_API_CALL *clSVMAlloc)(cl_context context, cl_svm_mem_flags flags, size_t size, unsigned int alignment); +extern CL_RUNTIME_EXPORT void (CL_API_CALL *clSVMFree)(cl_context context, void* svm_pointer); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clSetKernelArgSVMPointer)(cl_kernel kernel, cl_uint arg_index, const void* arg_value); +//extern CL_RUNTIME_EXPORT void* (CL_API_CALL *clSetKernelExecInfo)(cl_kernel kernel, cl_kernel_exec_info param_name, size_t param_value_size, const void* param_value); +//extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clEnqueueSVMFree)(cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], +// void (CL_CALLBACK *pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, void* svm_pointers[], void* user_data), void* user_data, +// cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clEnqueueSVMMemcpy)(cl_command_queue command_queue, cl_bool blocking_copy, void* dst_ptr, const void* src_ptr, size_t size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clEnqueueSVMMemFill)(cl_command_queue command_queue, void* svm_ptr, const void* pattern, size_t pattern_size, size_t size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clEnqueueSVMMap)(cl_command_queue command_queue, cl_bool blocking_map, cl_map_flags map_flags, void* svm_ptr, size_t size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); +extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL *clEnqueueSVMUnmap)(cl_command_queue command_queue, void* svm_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + +#endif // HAVE_OPENCL_SVM + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_2_0_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp new file mode 100644 index 0000000..97c927b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp @@ -0,0 +1,42 @@ +/* See LICENSE file in the root OpenCV directory */ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_DEFINITIONS_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_DEFINITIONS_HPP + +#if defined(HAVE_OPENCL_SVM) +#if defined(CL_VERSION_2_0) + +// OpenCL 2.0 contains SVM definitions + +#else + +typedef cl_bitfield cl_device_svm_capabilities; +typedef cl_bitfield cl_svm_mem_flags; +typedef cl_uint cl_kernel_exec_info; + +// +// TODO Add real values after OpenCL 2.0 release +// + +#ifndef CL_DEVICE_SVM_CAPABILITIES +#define CL_DEVICE_SVM_CAPABILITIES 0x1053 + +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS (1 << 3) +#endif + +#ifndef CL_MEM_SVM_FINE_GRAIN_BUFFER +#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) +#endif + +#ifndef CL_MEM_SVM_ATOMICS +#define CL_MEM_SVM_ATOMICS (1 << 11) +#endif + + +#endif // CL_VERSION_2_0 +#endif // HAVE_OPENCL_SVM + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_DEFINITIONS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp new file mode 100644 index 0000000..497bc3d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp @@ -0,0 +1,166 @@ +/* See LICENSE file in the root OpenCV directory */ + +#ifndef OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP +#define OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP + +#if defined(HAVE_OPENCL_SVM) +#include "opencl_core.hpp" + +#ifndef CL_DEVICE_SVM_CAPABILITIES_AMD +// +// Part of the file is an extract from the cl_ext.h file from AMD APP SDK package. +// Below is the original copyright. +// +/******************************************************************************* + * Copyright (c) 2008-2013 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + ******************************************************************************/ + +/******************************************* + * Shared Virtual Memory (SVM) extension + *******************************************/ +typedef cl_bitfield cl_device_svm_capabilities_amd; +typedef cl_bitfield cl_svm_mem_flags_amd; +typedef cl_uint cl_kernel_exec_info_amd; + +/* cl_device_info */ +#define CL_DEVICE_SVM_CAPABILITIES_AMD 0x1053 +#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT_AMD 0x1054 + +/* cl_device_svm_capabilities_amd */ +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_AMD (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_AMD (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_AMD (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_AMD (1 << 3) + +/* cl_svm_mem_flags_amd */ +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_AMD (1 << 10) +#define CL_MEM_SVM_ATOMICS_AMD (1 << 11) + +/* cl_mem_info */ +#define CL_MEM_USES_SVM_POINTER_AMD 0x1109 + +/* cl_kernel_exec_info_amd */ +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_AMD 0x11B6 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_AMD 0x11B7 + +/* cl_command_type */ +#define CL_COMMAND_SVM_FREE_AMD 0x1209 +#define CL_COMMAND_SVM_MEMCPY_AMD 0x120A +#define CL_COMMAND_SVM_MEMFILL_AMD 0x120B +#define CL_COMMAND_SVM_MAP_AMD 0x120C +#define CL_COMMAND_SVM_UNMAP_AMD 0x120D + +typedef CL_API_ENTRY void* +(CL_API_CALL * clSVMAllocAMD_fn)( + cl_context /* context */, + cl_svm_mem_flags_amd /* flags */, + size_t /* size */, + unsigned int /* alignment */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY void +(CL_API_CALL * clSVMFreeAMD_fn)( + cl_context /* context */, + void* /* svm_pointer */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clEnqueueSVMFreeAMD_fn)( + cl_command_queue /* command_queue */, + cl_uint /* num_svm_pointers */, + void** /* svm_pointers */, + void (CL_CALLBACK *)( /*pfn_free_func*/ + cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void** /* svm_pointers */, + void* /* user_data */), + void* /* user_data */, + cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, + cl_event* /* event */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clEnqueueSVMMemcpyAMD_fn)( + cl_command_queue /* command_queue */, + cl_bool /* blocking_copy */, + void* /* dst_ptr */, + const void* /* src_ptr */, + size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, + cl_event* /* event */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clEnqueueSVMMemFillAMD_fn)( + cl_command_queue /* command_queue */, + void* /* svm_ptr */, + const void* /* pattern */, + size_t /* pattern_size */, + size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, + cl_event* /* event */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clEnqueueSVMMapAMD_fn)( + cl_command_queue /* command_queue */, + cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, + void* /* svm_ptr */, + size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, + cl_event* /* event */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clEnqueueSVMUnmapAMD_fn)( + cl_command_queue /* command_queue */, + void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, + cl_event* /* event */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clSetKernelArgSVMPointerAMD_fn)( + cl_kernel /* kernel */, + cl_uint /* arg_index */, + const void * /* arg_value */ +) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clSetKernelExecInfoAMD_fn)( + cl_kernel /* kernel */, + cl_kernel_exec_info_amd /* param_name */, + size_t /* param_value_size */, + const void * /* param_value */ +) CL_EXT_SUFFIX__VERSION_1_2; + +#endif + +#endif // HAVE_OPENCL_SVM + +#endif // OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/opengl.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/opengl.hpp new file mode 100644 index 0000000..a311ce2 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/opengl.hpp @@ -0,0 +1,725 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OPENGL_HPP +#define OPENCV_CORE_OPENGL_HPP + +#ifndef __cplusplus +# error opengl.hpp header must be compiled as C++ +#endif + +#include "opencv2/core.hpp" +#include "ocl.hpp" + +namespace cv { namespace ogl { + +/** @addtogroup core_opengl +This section describes OpenGL interoperability. + +To enable OpenGL support, configure OpenCV using CMake with WITH_OPENGL=ON . Currently OpenGL is +supported only with WIN32, GTK and Qt backends on Windows and Linux (MacOS and Android are not +supported). For GTK backend gtkglext-1.0 library is required. + +To use OpenGL functionality you should first create OpenGL context (window or frame buffer). You can +do this with namedWindow function or with other OpenGL toolkit (GLUT, for example). +*/ +//! @{ + +/////////////////// OpenGL Objects /////////////////// + +/** @brief Smart pointer for OpenGL buffer object with reference counting. + +Buffer Objects are OpenGL objects that store an array of unformatted memory allocated by the OpenGL +context. These can be used to store vertex data, pixel data retrieved from images or the +framebuffer, and a variety of other things. + +ogl::Buffer has interface similar with Mat interface and represents 2D array memory. + +ogl::Buffer supports memory transfers between host and device and also can be mapped to CUDA memory. + */ +class CV_EXPORTS Buffer +{ +public: + /** @brief The target defines how you intend to use the buffer object. + */ + enum Target + { + ARRAY_BUFFER = 0x8892, //!< The buffer will be used as a source for vertex data + ELEMENT_ARRAY_BUFFER = 0x8893, //!< The buffer will be used for indices (in glDrawElements, for example) + PIXEL_PACK_BUFFER = 0x88EB, //!< The buffer will be used for reading from OpenGL textures + PIXEL_UNPACK_BUFFER = 0x88EC //!< The buffer will be used for writing to OpenGL textures + }; + + enum Access + { + READ_ONLY = 0x88B8, + WRITE_ONLY = 0x88B9, + READ_WRITE = 0x88BA + }; + + /** @brief The constructors. + + Creates empty ogl::Buffer object, creates ogl::Buffer object from existed buffer ( abufId + parameter), allocates memory for ogl::Buffer object or copies from host/device memory. + */ + Buffer(); + + /** @overload + @param arows Number of rows in a 2D array. + @param acols Number of columns in a 2D array. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param abufId Buffer object name. + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Buffer(int arows, int acols, int atype, unsigned int abufId, bool autoRelease = false); + + /** @overload + @param asize 2D array size. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param abufId Buffer object name. + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Buffer(Size asize, int atype, unsigned int abufId, bool autoRelease = false); + + /** @overload + @param arows Number of rows in a 2D array. + @param acols Number of columns in a 2D array. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Buffer(int arows, int acols, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @overload + @param asize 2D array size. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Buffer(Size asize, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @overload + @param arr Input array (host or device memory, it can be Mat , cuda::GpuMat or std::vector ). + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + explicit Buffer(InputArray arr, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @brief Allocates memory for ogl::Buffer object. + + @param arows Number of rows in a 2D array. + @param acols Number of columns in a 2D array. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void create(int arows, int acols, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @overload + @param asize 2D array size. + @param atype Array type ( CV_8UC1, ..., CV_64FC4 ). See Mat for details. + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void create(Size asize, int atype, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @brief Decrements the reference counter and destroys the buffer object if needed. + + The function will call setAutoRelease(true) . + */ + void release(); + + /** @brief Sets auto release mode. + + The lifetime of the OpenGL object is tied to the lifetime of the context. If OpenGL context was + bound to a window it could be released at any time (user can close a window). If object's destructor + is called after destruction of the context it will cause an error. Thus ogl::Buffer doesn't destroy + OpenGL object in destructor by default (all OpenGL resources will be released with OpenGL context). + This function can force ogl::Buffer destructor to destroy OpenGL object. + @param flag Auto release mode (if true, release will be called in object's destructor). + */ + void setAutoRelease(bool flag); + + /** @brief Copies from host/device memory to OpenGL buffer. + @param arr Input array (host or device memory, it can be Mat , cuda::GpuMat or std::vector ). + @param target Buffer usage. See cv::ogl::Buffer::Target . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void copyFrom(InputArray arr, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @overload */ + void copyFrom(InputArray arr, cuda::Stream& stream, Target target = ARRAY_BUFFER, bool autoRelease = false); + + /** @brief Copies from OpenGL buffer to host/device memory or another OpenGL buffer object. + + @param arr Destination array (host or device memory, can be Mat , cuda::GpuMat , std::vector or + ogl::Buffer ). + */ + void copyTo(OutputArray arr) const; + + /** @overload */ + void copyTo(OutputArray arr, cuda::Stream& stream) const; + + /** @brief Creates a full copy of the buffer object and the underlying data. + + @param target Buffer usage for destination buffer. + @param autoRelease Auto release mode for destination buffer. + */ + Buffer clone(Target target = ARRAY_BUFFER, bool autoRelease = false) const; + + /** @brief Binds OpenGL buffer to the specified buffer binding point. + + @param target Binding point. See cv::ogl::Buffer::Target . + */ + void bind(Target target) const; + + /** @brief Unbind any buffers from the specified binding point. + + @param target Binding point. See cv::ogl::Buffer::Target . + */ + static void unbind(Target target); + + /** @brief Maps OpenGL buffer to host memory. + + mapHost maps to the client's address space the entire data store of the buffer object. The data can + then be directly read and/or written relative to the returned pointer, depending on the specified + access policy. + + A mapped data store must be unmapped with ogl::Buffer::unmapHost before its buffer object is used. + + This operation can lead to memory transfers between host and device. + + Only one buffer object can be mapped at a time. + @param access Access policy, indicating whether it will be possible to read from, write to, or both + read from and write to the buffer object's mapped data store. The symbolic constant must be + ogl::Buffer::READ_ONLY , ogl::Buffer::WRITE_ONLY or ogl::Buffer::READ_WRITE . + */ + Mat mapHost(Access access); + + /** @brief Unmaps OpenGL buffer. + */ + void unmapHost(); + + //! map to device memory (blocking) + cuda::GpuMat mapDevice(); + void unmapDevice(); + + /** @brief Maps OpenGL buffer to CUDA device memory. + + This operation doesn't copy data. Several buffer objects can be mapped to CUDA memory at a time. + + A mapped data store must be unmapped with ogl::Buffer::unmapDevice before its buffer object is used. + */ + cuda::GpuMat mapDevice(cuda::Stream& stream); + + /** @brief Unmaps OpenGL buffer. + */ + void unmapDevice(cuda::Stream& stream); + + int rows() const; + int cols() const; + Size size() const; + bool empty() const; + + int type() const; + int depth() const; + int channels() const; + int elemSize() const; + int elemSize1() const; + + //! get OpenGL opject id + unsigned int bufId() const; + + class Impl; + +private: + Ptr impl_; + int rows_; + int cols_; + int type_; +}; + +/** @brief Smart pointer for OpenGL 2D texture memory with reference counting. + */ +class CV_EXPORTS Texture2D +{ +public: + /** @brief An Image Format describes the way that the images in Textures store their data. + */ + enum Format + { + NONE = 0, + DEPTH_COMPONENT = 0x1902, //!< Depth + RGB = 0x1907, //!< Red, Green, Blue + RGBA = 0x1908 //!< Red, Green, Blue, Alpha + }; + + /** @brief The constructors. + + Creates empty ogl::Texture2D object, allocates memory for ogl::Texture2D object or copies from + host/device memory. + */ + Texture2D(); + + /** @overload */ + Texture2D(int arows, int acols, Format aformat, unsigned int atexId, bool autoRelease = false); + + /** @overload */ + Texture2D(Size asize, Format aformat, unsigned int atexId, bool autoRelease = false); + + /** @overload + @param arows Number of rows. + @param acols Number of columns. + @param aformat Image format. See cv::ogl::Texture2D::Format . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Texture2D(int arows, int acols, Format aformat, bool autoRelease = false); + + /** @overload + @param asize 2D array size. + @param aformat Image format. See cv::ogl::Texture2D::Format . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + Texture2D(Size asize, Format aformat, bool autoRelease = false); + + /** @overload + @param arr Input array (host or device memory, it can be Mat , cuda::GpuMat or ogl::Buffer ). + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + explicit Texture2D(InputArray arr, bool autoRelease = false); + + /** @brief Allocates memory for ogl::Texture2D object. + + @param arows Number of rows. + @param acols Number of columns. + @param aformat Image format. See cv::ogl::Texture2D::Format . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void create(int arows, int acols, Format aformat, bool autoRelease = false); + /** @overload + @param asize 2D array size. + @param aformat Image format. See cv::ogl::Texture2D::Format . + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void create(Size asize, Format aformat, bool autoRelease = false); + + /** @brief Decrements the reference counter and destroys the texture object if needed. + + The function will call setAutoRelease(true) . + */ + void release(); + + /** @brief Sets auto release mode. + + @param flag Auto release mode (if true, release will be called in object's destructor). + + The lifetime of the OpenGL object is tied to the lifetime of the context. If OpenGL context was + bound to a window it could be released at any time (user can close a window). If object's destructor + is called after destruction of the context it will cause an error. Thus ogl::Texture2D doesn't + destroy OpenGL object in destructor by default (all OpenGL resources will be released with OpenGL + context). This function can force ogl::Texture2D destructor to destroy OpenGL object. + */ + void setAutoRelease(bool flag); + + /** @brief Copies from host/device memory to OpenGL texture. + + @param arr Input array (host or device memory, it can be Mat , cuda::GpuMat or ogl::Buffer ). + @param autoRelease Auto release mode (if true, release will be called in object's destructor). + */ + void copyFrom(InputArray arr, bool autoRelease = false); + + /** @brief Copies from OpenGL texture to host/device memory or another OpenGL texture object. + + @param arr Destination array (host or device memory, can be Mat , cuda::GpuMat , ogl::Buffer or + ogl::Texture2D ). + @param ddepth Destination depth. + @param autoRelease Auto release mode for destination buffer (if arr is OpenGL buffer or texture). + */ + void copyTo(OutputArray arr, int ddepth = CV_32F, bool autoRelease = false) const; + + /** @brief Binds texture to current active texture unit for GL_TEXTURE_2D target. + */ + void bind() const; + + int rows() const; + int cols() const; + Size size() const; + bool empty() const; + + Format format() const; + + //! get OpenGL opject id + unsigned int texId() const; + + class Impl; + +private: + Ptr impl_; + int rows_; + int cols_; + Format format_; +}; + +/** @brief Wrapper for OpenGL Client-Side Vertex arrays. + +ogl::Arrays stores vertex data in ogl::Buffer objects. + */ +class CV_EXPORTS Arrays +{ +public: + /** @brief Default constructor + */ + Arrays(); + + /** @brief Sets an array of vertex coordinates. + @param vertex array with vertex coordinates, can be both host and device memory. + */ + void setVertexArray(InputArray vertex); + + /** @brief Resets vertex coordinates. + */ + void resetVertexArray(); + + /** @brief Sets an array of vertex colors. + @param color array with vertex colors, can be both host and device memory. + */ + void setColorArray(InputArray color); + + /** @brief Resets vertex colors. + */ + void resetColorArray(); + + /** @brief Sets an array of vertex normals. + @param normal array with vertex normals, can be both host and device memory. + */ + void setNormalArray(InputArray normal); + + /** @brief Resets vertex normals. + */ + void resetNormalArray(); + + /** @brief Sets an array of vertex texture coordinates. + @param texCoord array with vertex texture coordinates, can be both host and device memory. + */ + void setTexCoordArray(InputArray texCoord); + + /** @brief Resets vertex texture coordinates. + */ + void resetTexCoordArray(); + + /** @brief Releases all inner buffers. + */ + void release(); + + /** @brief Sets auto release mode all inner buffers. + @param flag Auto release mode. + */ + void setAutoRelease(bool flag); + + /** @brief Binds all vertex arrays. + */ + void bind() const; + + /** @brief Returns the vertex count. + */ + int size() const; + bool empty() const; + +private: + int size_; + Buffer vertex_; + Buffer color_; + Buffer normal_; + Buffer texCoord_; +}; + +/////////////////// Render Functions /////////////////// + +//! render mode +enum RenderModes { + POINTS = 0x0000, + LINES = 0x0001, + LINE_LOOP = 0x0002, + LINE_STRIP = 0x0003, + TRIANGLES = 0x0004, + TRIANGLE_STRIP = 0x0005, + TRIANGLE_FAN = 0x0006, + QUADS = 0x0007, + QUAD_STRIP = 0x0008, + POLYGON = 0x0009 +}; + +/** @brief Render OpenGL texture or primitives. +@param tex Texture to draw. +@param wndRect Region of window, where to draw a texture (normalized coordinates). +@param texRect Region of texture to draw (normalized coordinates). + */ +CV_EXPORTS void render(const Texture2D& tex, + Rect_ wndRect = Rect_(0.0, 0.0, 1.0, 1.0), + Rect_ texRect = Rect_(0.0, 0.0, 1.0, 1.0)); + +/** @overload +@param arr Array of privitives vertices. +@param mode Render mode. One of cv::ogl::RenderModes +@param color Color for all vertices. Will be used if arr doesn't contain color array. +*/ +CV_EXPORTS void render(const Arrays& arr, int mode = POINTS, Scalar color = Scalar::all(255)); + +/** @overload +@param arr Array of privitives vertices. +@param indices Array of vertices indices (host or device memory). +@param mode Render mode. One of cv::ogl::RenderModes +@param color Color for all vertices. Will be used if arr doesn't contain color array. +*/ +CV_EXPORTS void render(const Arrays& arr, InputArray indices, int mode = POINTS, Scalar color = Scalar::all(255)); + +/////////////////// CL-GL Interoperability Functions /////////////////// + +namespace ocl { +using namespace cv::ocl; + +// TODO static functions in the Context class +/** @brief Creates OpenCL context from GL. +@return Returns reference to OpenCL Context + */ +CV_EXPORTS Context& initializeContextFromGL(); + +} // namespace cv::ogl::ocl + +/** @brief Converts InputArray to Texture2D object. +@param src - source InputArray. +@param texture - destination Texture2D object. + */ +CV_EXPORTS void convertToGLTexture2D(InputArray src, Texture2D& texture); + +/** @brief Converts Texture2D object to OutputArray. +@param texture - source Texture2D object. +@param dst - destination OutputArray. + */ +CV_EXPORTS void convertFromGLTexture2D(const Texture2D& texture, OutputArray dst); + +/** @brief Maps Buffer object to process on CL side (convert to UMat). + +Function creates CL buffer from GL one, and then constructs UMat that can be used +to process buffer data with OpenCV functions. Note that in current implementation +UMat constructed this way doesn't own corresponding GL buffer object, so it is +the user responsibility to close down CL/GL buffers relationships by explicitly +calling unmapGLBuffer() function. +@param buffer - source Buffer object. +@param accessFlags - data access flags (ACCESS_READ|ACCESS_WRITE). +@return Returns UMat object + */ +CV_EXPORTS UMat mapGLBuffer(const Buffer& buffer, AccessFlag accessFlags = ACCESS_READ | ACCESS_WRITE); + +/** @brief Unmaps Buffer object (releases UMat, previously mapped from Buffer). + +Function must be called explicitly by the user for each UMat previously constructed +by the call to mapGLBuffer() function. +@param u - source UMat, created by mapGLBuffer(). + */ +CV_EXPORTS void unmapGLBuffer(UMat& u); + +//! @} +}} // namespace cv::ogl + +namespace cv { namespace cuda { + +/** @brief Sets a CUDA device and initializes it for the current thread with OpenGL interoperability. + +This function should be explicitly called after OpenGL context creation and before any CUDA calls. +@param device System index of a CUDA device starting with 0. +@ingroup core_opengl + */ +CV_EXPORTS void setGlDevice(int device = 0); + +}} + +//! @cond IGNORED + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +inline +cv::ogl::Buffer::Buffer(int arows, int acols, int atype, Target target, bool autoRelease) : rows_(0), cols_(0), type_(0) +{ + create(arows, acols, atype, target, autoRelease); +} + +inline +cv::ogl::Buffer::Buffer(Size asize, int atype, Target target, bool autoRelease) : rows_(0), cols_(0), type_(0) +{ + create(asize, atype, target, autoRelease); +} + +inline +void cv::ogl::Buffer::create(Size asize, int atype, Target target, bool autoRelease) +{ + create(asize.height, asize.width, atype, target, autoRelease); +} + +inline +int cv::ogl::Buffer::rows() const +{ + return rows_; +} + +inline +int cv::ogl::Buffer::cols() const +{ + return cols_; +} + +inline +cv::Size cv::ogl::Buffer::size() const +{ + return Size(cols_, rows_); +} + +inline +bool cv::ogl::Buffer::empty() const +{ + return rows_ == 0 || cols_ == 0; +} + +inline +int cv::ogl::Buffer::type() const +{ + return type_; +} + +inline +int cv::ogl::Buffer::depth() const +{ + return CV_MAT_DEPTH(type_); +} + +inline +int cv::ogl::Buffer::channels() const +{ + return CV_MAT_CN(type_); +} + +inline +int cv::ogl::Buffer::elemSize() const +{ + return CV_ELEM_SIZE(type_); +} + +inline +int cv::ogl::Buffer::elemSize1() const +{ + return CV_ELEM_SIZE1(type_); +} + +/////// + +inline +cv::ogl::Texture2D::Texture2D(int arows, int acols, Format aformat, bool autoRelease) : rows_(0), cols_(0), format_(NONE) +{ + create(arows, acols, aformat, autoRelease); +} + +inline +cv::ogl::Texture2D::Texture2D(Size asize, Format aformat, bool autoRelease) : rows_(0), cols_(0), format_(NONE) +{ + create(asize, aformat, autoRelease); +} + +inline +void cv::ogl::Texture2D::create(Size asize, Format aformat, bool autoRelease) +{ + create(asize.height, asize.width, aformat, autoRelease); +} + +inline +int cv::ogl::Texture2D::rows() const +{ + return rows_; +} + +inline +int cv::ogl::Texture2D::cols() const +{ + return cols_; +} + +inline +cv::Size cv::ogl::Texture2D::size() const +{ + return Size(cols_, rows_); +} + +inline +bool cv::ogl::Texture2D::empty() const +{ + return rows_ == 0 || cols_ == 0; +} + +inline +cv::ogl::Texture2D::Format cv::ogl::Texture2D::format() const +{ + return format_; +} + +/////// + +inline +cv::ogl::Arrays::Arrays() : size_(0) +{ +} + +inline +int cv::ogl::Arrays::size() const +{ + return size_; +} + +inline +bool cv::ogl::Arrays::empty() const +{ + return size_ == 0; +} + +//! @endcond + +#endif /* OPENCV_CORE_OPENGL_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/operations.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/operations.hpp new file mode 100644 index 0000000..0e0db40 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/operations.hpp @@ -0,0 +1,590 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_OPERATIONS_HPP +#define OPENCV_CORE_OPERATIONS_HPP + +#ifndef __cplusplus +# error operations.hpp header must be compiled as C++ +#endif + +#include + +#if defined(__GNUC__) || defined(__clang__) // at least GCC 3.1+, clang 3.5+ +# define CV_FORMAT_PRINTF(string_idx, first_to_check) __attribute__ ((format (printf, string_idx, first_to_check))) +#else +# define CV_FORMAT_PRINTF(A, B) +#endif + +//! @cond IGNORED + +namespace cv +{ + +////////////////////////////// Matx methods depending on core API ///////////////////////////// + +namespace internal +{ + +template struct Matx_FastInvOp +{ + bool operator()(const Matx<_Tp, m, n>& a, Matx<_Tp, n, m>& b, int method) const + { + return invert(a, b, method) != 0; + } +}; + +template struct Matx_FastInvOp<_Tp, m, m> +{ + bool operator()(const Matx<_Tp, m, m>& a, Matx<_Tp, m, m>& b, int method) const + { + if (method == DECOMP_LU || method == DECOMP_CHOLESKY) + { + Matx<_Tp, m, m> temp = a; + + // assume that b is all 0's on input => make it a unity matrix + for (int i = 0; i < m; i++) + b(i, i) = (_Tp)1; + + if (method == DECOMP_CHOLESKY) + return Cholesky(temp.val, m*sizeof(_Tp), m, b.val, m*sizeof(_Tp), m); + + return LU(temp.val, m*sizeof(_Tp), m, b.val, m*sizeof(_Tp), m) != 0; + } + else + { + return invert(a, b, method) != 0; + } + } +}; + +template struct Matx_FastInvOp<_Tp, 2, 2> +{ + bool operator()(const Matx<_Tp, 2, 2>& a, Matx<_Tp, 2, 2>& b, int /*method*/) const + { + _Tp d = (_Tp)determinant(a); + if (d == 0) + return false; + d = 1/d; + b(1,1) = a(0,0)*d; + b(0,0) = a(1,1)*d; + b(0,1) = -a(0,1)*d; + b(1,0) = -a(1,0)*d; + return true; + } +}; + +template struct Matx_FastInvOp<_Tp, 3, 3> +{ + bool operator()(const Matx<_Tp, 3, 3>& a, Matx<_Tp, 3, 3>& b, int /*method*/) const + { + _Tp d = (_Tp)determinant(a); + if (d == 0) + return false; + d = 1/d; + b(0,0) = (a(1,1) * a(2,2) - a(1,2) * a(2,1)) * d; + b(0,1) = (a(0,2) * a(2,1) - a(0,1) * a(2,2)) * d; + b(0,2) = (a(0,1) * a(1,2) - a(0,2) * a(1,1)) * d; + + b(1,0) = (a(1,2) * a(2,0) - a(1,0) * a(2,2)) * d; + b(1,1) = (a(0,0) * a(2,2) - a(0,2) * a(2,0)) * d; + b(1,2) = (a(0,2) * a(1,0) - a(0,0) * a(1,2)) * d; + + b(2,0) = (a(1,0) * a(2,1) - a(1,1) * a(2,0)) * d; + b(2,1) = (a(0,1) * a(2,0) - a(0,0) * a(2,1)) * d; + b(2,2) = (a(0,0) * a(1,1) - a(0,1) * a(1,0)) * d; + return true; + } +}; + + +template struct Matx_FastSolveOp +{ + bool operator()(const Matx<_Tp, m, l>& a, const Matx<_Tp, m, n>& b, + Matx<_Tp, l, n>& x, int method) const + { + return cv::solve(a, b, x, method); + } +}; + +template struct Matx_FastSolveOp<_Tp, m, m, n> +{ + bool operator()(const Matx<_Tp, m, m>& a, const Matx<_Tp, m, n>& b, + Matx<_Tp, m, n>& x, int method) const + { + if (method == DECOMP_LU || method == DECOMP_CHOLESKY) + { + Matx<_Tp, m, m> temp = a; + x = b; + if( method == DECOMP_CHOLESKY ) + return Cholesky(temp.val, m*sizeof(_Tp), m, x.val, n*sizeof(_Tp), n); + + return LU(temp.val, m*sizeof(_Tp), m, x.val, n*sizeof(_Tp), n) != 0; + } + else + { + return cv::solve(a, b, x, method); + } + } +}; + +template struct Matx_FastSolveOp<_Tp, 2, 2, 1> +{ + bool operator()(const Matx<_Tp, 2, 2>& a, const Matx<_Tp, 2, 1>& b, + Matx<_Tp, 2, 1>& x, int) const + { + _Tp d = (_Tp)determinant(a); + if (d == 0) + return false; + d = 1/d; + x(0) = (b(0)*a(1,1) - b(1)*a(0,1))*d; + x(1) = (b(1)*a(0,0) - b(0)*a(1,0))*d; + return true; + } +}; + +template struct Matx_FastSolveOp<_Tp, 3, 3, 1> +{ + bool operator()(const Matx<_Tp, 3, 3>& a, const Matx<_Tp, 3, 1>& b, + Matx<_Tp, 3, 1>& x, int) const + { + _Tp d = (_Tp)determinant(a); + if (d == 0) + return false; + d = 1/d; + x(0) = d*(b(0)*(a(1,1)*a(2,2) - a(1,2)*a(2,1)) - + a(0,1)*(b(1)*a(2,2) - a(1,2)*b(2)) + + a(0,2)*(b(1)*a(2,1) - a(1,1)*b(2))); + + x(1) = d*(a(0,0)*(b(1)*a(2,2) - a(1,2)*b(2)) - + b(0)*(a(1,0)*a(2,2) - a(1,2)*a(2,0)) + + a(0,2)*(a(1,0)*b(2) - b(1)*a(2,0))); + + x(2) = d*(a(0,0)*(a(1,1)*b(2) - b(1)*a(2,1)) - + a(0,1)*(a(1,0)*b(2) - b(1)*a(2,0)) + + b(0)*(a(1,0)*a(2,1) - a(1,1)*a(2,0))); + return true; + } +}; + +} // internal + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::randu(_Tp a, _Tp b) +{ + Matx<_Tp,m,n> M; + cv::randu(M, Scalar(a), Scalar(b)); + return M; +} + +template inline +Matx<_Tp,m,n> Matx<_Tp,m,n>::randn(_Tp a, _Tp b) +{ + Matx<_Tp,m,n> M; + cv::randn(M, Scalar(a), Scalar(b)); + return M; +} + +template inline +Matx<_Tp, n, m> Matx<_Tp, m, n>::inv(int method, bool *p_is_ok /*= NULL*/) const +{ + Matx<_Tp, n, m> b; + bool ok = cv::internal::Matx_FastInvOp<_Tp, m, n>()(*this, b, method); + if (p_is_ok) *p_is_ok = ok; + return ok ? b : Matx<_Tp, n, m>::zeros(); +} + +template template inline +Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) const +{ + Matx<_Tp, n, l> x; + bool ok = cv::internal::Matx_FastSolveOp<_Tp, m, n, l>()(*this, rhs, x, method); + return ok ? x : Matx<_Tp, n, l>::zeros(); +} + + + +////////////////////////// Augmenting algebraic & logical operations ////////////////////////// + +#define CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \ + static inline A& operator op (A& a, const B& b) { cvop; return a; } + +#define CV_MAT_AUG_OPERATOR(op, cvop, A, B) \ + CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \ + CV_MAT_AUG_OPERATOR1(op, cvop, const A, B) + +#define CV_MAT_AUG_OPERATOR_T(op, cvop, A, B) \ + template CV_MAT_AUG_OPERATOR1(op, cvop, A, B) \ + template CV_MAT_AUG_OPERATOR1(op, cvop, const A, B) + +#define CV_MAT_AUG_OPERATOR_TN(op, cvop, A) \ + template static inline A& operator op (A& a, const Matx<_Tp,m,n>& b) { cvop; return a; } \ + template static inline const A& operator op (const A& a, const Matx<_Tp,m,n>& b) { cvop; return a; } + +CV_MAT_AUG_OPERATOR (+=, cv::add(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR (+=, cv::add(a,b,a), Mat, Scalar) +CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Scalar) +CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR_TN(+=, cv::add(a,Mat(b),a), Mat) +CV_MAT_AUG_OPERATOR_TN(+=, cv::add(a,Mat(b),a), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (-=, cv::subtract(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR (-=, cv::subtract(a,b,a), Mat, Scalar) +CV_MAT_AUG_OPERATOR_T(-=, cv::subtract(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(-=, cv::subtract(a,b,a), Mat_<_Tp>, Scalar) +CV_MAT_AUG_OPERATOR_T(-=, cv::subtract(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR_TN(-=, cv::subtract(a,Mat(b),a), Mat) +CV_MAT_AUG_OPERATOR_TN(-=, cv::subtract(a,Mat(b),a), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (*=, cv::gemm(a, b, 1, Mat(), 0, a, 0), Mat, Mat) +CV_MAT_AUG_OPERATOR_T(*=, cv::gemm(a, b, 1, Mat(), 0, a, 0), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(*=, cv::gemm(a, b, 1, Mat(), 0, a, 0), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR (*=, a.convertTo(a, -1, b), Mat, double) +CV_MAT_AUG_OPERATOR_T(*=, a.convertTo(a, -1, b), Mat_<_Tp>, double) +CV_MAT_AUG_OPERATOR_TN(*=, cv::gemm(a, Mat(b), 1, Mat(), 0, a, 0), Mat) +CV_MAT_AUG_OPERATOR_TN(*=, cv::gemm(a, Mat(b), 1, Mat(), 0, a, 0), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (/=, cv::divide(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR_T(/=, cv::divide(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(/=, cv::divide(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR (/=, a.convertTo((Mat&)a, -1, 1./b), Mat, double) +CV_MAT_AUG_OPERATOR_T(/=, a.convertTo((Mat&)a, -1, 1./b), Mat_<_Tp>, double) +CV_MAT_AUG_OPERATOR_TN(/=, cv::divide(a, Mat(b), a), Mat) +CV_MAT_AUG_OPERATOR_TN(/=, cv::divide(a, Mat(b), a), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (&=, cv::bitwise_and(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR (&=, cv::bitwise_and(a,b,a), Mat, Scalar) +CV_MAT_AUG_OPERATOR_T(&=, cv::bitwise_and(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(&=, cv::bitwise_and(a,b,a), Mat_<_Tp>, Scalar) +CV_MAT_AUG_OPERATOR_T(&=, cv::bitwise_and(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR_TN(&=, cv::bitwise_and(a, Mat(b), a), Mat) +CV_MAT_AUG_OPERATOR_TN(&=, cv::bitwise_and(a, Mat(b), a), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (|=, cv::bitwise_or(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR (|=, cv::bitwise_or(a,b,a), Mat, Scalar) +CV_MAT_AUG_OPERATOR_T(|=, cv::bitwise_or(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(|=, cv::bitwise_or(a,b,a), Mat_<_Tp>, Scalar) +CV_MAT_AUG_OPERATOR_T(|=, cv::bitwise_or(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR_TN(|=, cv::bitwise_or(a, Mat(b), a), Mat) +CV_MAT_AUG_OPERATOR_TN(|=, cv::bitwise_or(a, Mat(b), a), Mat_<_Tp>) + +CV_MAT_AUG_OPERATOR (^=, cv::bitwise_xor(a,b,a), Mat, Mat) +CV_MAT_AUG_OPERATOR (^=, cv::bitwise_xor(a,b,a), Mat, Scalar) +CV_MAT_AUG_OPERATOR_T(^=, cv::bitwise_xor(a,b,a), Mat_<_Tp>, Mat) +CV_MAT_AUG_OPERATOR_T(^=, cv::bitwise_xor(a,b,a), Mat_<_Tp>, Scalar) +CV_MAT_AUG_OPERATOR_T(^=, cv::bitwise_xor(a,b,a), Mat_<_Tp>, Mat_<_Tp>) +CV_MAT_AUG_OPERATOR_TN(^=, cv::bitwise_xor(a, Mat(b), a), Mat) +CV_MAT_AUG_OPERATOR_TN(^=, cv::bitwise_xor(a, Mat(b), a), Mat_<_Tp>) + +#undef CV_MAT_AUG_OPERATOR_TN +#undef CV_MAT_AUG_OPERATOR_T +#undef CV_MAT_AUG_OPERATOR +#undef CV_MAT_AUG_OPERATOR1 + + + +///////////////////////////////////////////// SVD ///////////////////////////////////////////// + +inline SVD::SVD() {} +inline SVD::SVD( InputArray m, int flags ) { operator ()(m, flags); } +inline void SVD::solveZ( InputArray m, OutputArray _dst ) +{ + Mat mtx = m.getMat(); + SVD svd(mtx, (mtx.rows >= mtx.cols ? 0 : SVD::FULL_UV)); + _dst.create(svd.vt.cols, 1, svd.vt.type()); + Mat dst = _dst.getMat(); + svd.vt.row(svd.vt.rows-1).reshape(1,svd.vt.cols).copyTo(dst); +} + +template inline void + SVD::compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w, Matx<_Tp, m, nm>& u, Matx<_Tp, n, nm>& vt ) +{ + CV_StaticAssert( nm == MIN(m, n), "Invalid size of output vector."); + Mat _a(a, false), _u(u, false), _w(w, false), _vt(vt, false); + SVD::compute(_a, _w, _u, _vt); + CV_Assert(_w.data == (uchar*)&w.val[0] && _u.data == (uchar*)&u.val[0] && _vt.data == (uchar*)&vt.val[0]); +} + +template inline void +SVD::compute( const Matx<_Tp, m, n>& a, Matx<_Tp, nm, 1>& w ) +{ + CV_StaticAssert( nm == MIN(m, n), "Invalid size of output vector."); + Mat _a(a, false), _w(w, false); + SVD::compute(_a, _w); + CV_Assert(_w.data == (uchar*)&w.val[0]); +} + +template inline void +SVD::backSubst( const Matx<_Tp, nm, 1>& w, const Matx<_Tp, m, nm>& u, + const Matx<_Tp, n, nm>& vt, const Matx<_Tp, m, nb>& rhs, + Matx<_Tp, n, nb>& dst ) +{ + CV_StaticAssert( nm == MIN(m, n), "Invalid size of output vector."); + Mat _u(u, false), _w(w, false), _vt(vt, false), _rhs(rhs, false), _dst(dst, false); + SVD::backSubst(_w, _u, _vt, _rhs, _dst); + CV_Assert(_dst.data == (uchar*)&dst.val[0]); +} + + + +/////////////////////////////////// Multiply-with-Carry RNG /////////////////////////////////// + +inline RNG::RNG() { state = 0xffffffff; } +inline RNG::RNG(uint64 _state) { state = _state ? _state : 0xffffffff; } + +inline RNG::operator uchar() { return (uchar)next(); } +inline RNG::operator schar() { return (schar)next(); } +inline RNG::operator ushort() { return (ushort)next(); } +inline RNG::operator short() { return (short)next(); } +inline RNG::operator int() { return (int)next(); } +inline RNG::operator unsigned() { return next(); } +inline RNG::operator float() { return next()*2.3283064365386962890625e-10f; } +inline RNG::operator double() { unsigned t = next(); return (((uint64)t << 32) | next()) * 5.4210108624275221700372640043497e-20; } + +inline unsigned RNG::operator ()(unsigned N) { return (unsigned)uniform(0,N); } +inline unsigned RNG::operator ()() { return next(); } + +inline int RNG::uniform(int a, int b) { return a == b ? a : (int)(next() % (b - a) + a); } +inline float RNG::uniform(float a, float b) { return ((float)*this)*(b - a) + a; } +inline double RNG::uniform(double a, double b) { return ((double)*this)*(b - a) + a; } + +inline bool RNG::operator ==(const RNG& other) const { return state == other.state; } + +inline unsigned RNG::next() +{ + state = (uint64)(unsigned)state* /*CV_RNG_COEFF*/ 4164903690U + (unsigned)(state >> 32); + return (unsigned)state; +} + +//! returns the next unifomly-distributed random number of the specified type +template static inline _Tp randu() +{ + return (_Tp)theRNG(); +} + +///////////////////////////////// Formatted string generation ///////////////////////////////// + +/** @brief Returns a text string formatted using the printf-like expression. + +The function acts like sprintf but forms and returns an STL string. It can be used to form an error +message in the Exception constructor. +@param fmt printf-compatible formatting specifiers. + +**Note**: +|Type|Specifier| +|-|-| +|`const char*`|`%s`| +|`char`|`%c`| +|`float` / `double`|`%f`,`%g`| +|`int`, `long`, `long long`|`%d`, `%ld`, ``%lld`| +|`unsigned`, `unsigned long`, `unsigned long long`|`%u`, `%lu`, `%llu`| +|`uint64` -> `uintmax_t`, `int64` -> `intmax_t`|`%ju`, `%jd`| +|`size_t`|`%zu`| + */ +CV_EXPORTS String format( const char* fmt, ... ) CV_FORMAT_PRINTF(1, 2); + +///////////////////////////////// Formatted output of cv::Mat ///////////////////////////////// + +static inline +Ptr format(InputArray mtx, Formatter::FormatType fmt) +{ + return Formatter::get(fmt)->format(mtx.getMat()); +} + +static inline +int print(Ptr fmtd, FILE* stream = stdout) +{ + int written = 0; + fmtd->reset(); + for(const char* str = fmtd->next(); str; str = fmtd->next()) + written += fputs(str, stream); + + return written; +} + +static inline +int print(const Mat& mtx, FILE* stream = stdout) +{ + return print(Formatter::get()->format(mtx), stream); +} + +static inline +int print(const UMat& mtx, FILE* stream = stdout) +{ + return print(Formatter::get()->format(mtx.getMat(ACCESS_READ)), stream); +} + +template static inline +int print(const std::vector >& vec, FILE* stream = stdout) +{ + return print(Formatter::get()->format(Mat(vec)), stream); +} + +template static inline +int print(const std::vector >& vec, FILE* stream = stdout) +{ + return print(Formatter::get()->format(Mat(vec)), stream); +} + +template static inline +int print(const Matx<_Tp, m, n>& matx, FILE* stream = stdout) +{ + return print(Formatter::get()->format(cv::Mat(matx)), stream); +} + +//! @endcond + +/****************************************************************************************\ +* Auxiliary algorithms * +\****************************************************************************************/ + +/** @brief Splits an element set into equivalency classes. + +The generic function partition implements an \f$O(N^2)\f$ algorithm for splitting a set of \f$N\f$ elements +into one or more equivalency classes, as described in + . The function returns the number of +equivalency classes. +@param _vec Set of elements stored as a vector. +@param labels Output vector of labels. It contains as many elements as vec. Each label labels[i] is +a 0-based cluster index of `vec[i]`. +@param predicate Equivalence predicate (pointer to a boolean function of two arguments or an +instance of the class that has the method bool operator()(const _Tp& a, const _Tp& b) ). The +predicate returns true when the elements are certainly in the same class, and returns false if they +may or may not be in the same class. +@ingroup core_cluster +*/ +template int +partition( const std::vector<_Tp>& _vec, std::vector& labels, + _EqPredicate predicate=_EqPredicate()) +{ + int i, j, N = (int)_vec.size(); + const _Tp* vec = &_vec[0]; + + const int PARENT=0; + const int RANK=1; + + std::vector _nodes(N*2); + int (*nodes)[2] = (int(*)[2])&_nodes[0]; + + // The first O(N) pass: create N single-vertex trees + for(i = 0; i < N; i++) + { + nodes[i][PARENT]=-1; + nodes[i][RANK] = 0; + } + + // The main O(N^2) pass: merge connected components + for( i = 0; i < N; i++ ) + { + int root = i; + + // find root + while( nodes[root][PARENT] >= 0 ) + root = nodes[root][PARENT]; + + for( j = 0; j < N; j++ ) + { + if( i == j || !predicate(vec[i], vec[j])) + continue; + int root2 = j; + + while( nodes[root2][PARENT] >= 0 ) + root2 = nodes[root2][PARENT]; + + if( root2 != root ) + { + // unite both trees + int rank = nodes[root][RANK], rank2 = nodes[root2][RANK]; + if( rank > rank2 ) + nodes[root2][PARENT] = root; + else + { + nodes[root][PARENT] = root2; + nodes[root2][RANK] += rank == rank2; + root = root2; + } + CV_Assert( nodes[root][PARENT] < 0 ); + + int k = j, parent; + + // compress the path from node2 to root + while( (parent = nodes[k][PARENT]) >= 0 ) + { + nodes[k][PARENT] = root; + k = parent; + } + + // compress the path from node to root + k = i; + while( (parent = nodes[k][PARENT]) >= 0 ) + { + nodes[k][PARENT] = root; + k = parent; + } + } + } + } + + // Final O(N) pass: enumerate classes + labels.resize(N); + int nclasses = 0; + + for( i = 0; i < N; i++ ) + { + int root = i; + while( nodes[root][PARENT] >= 0 ) + root = nodes[root][PARENT]; + // re-use the rank as the class label + if( nodes[root][RANK] >= 0 ) + nodes[root][RANK] = ~nclasses++; + labels[i] = ~nodes[root][RANK]; + } + + return nclasses; +} + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/optim.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/optim.hpp new file mode 100644 index 0000000..36c798a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/optim.hpp @@ -0,0 +1,302 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the OpenCV Foundation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_OPTIM_HPP +#define OPENCV_OPTIM_HPP + +#include "opencv2/core.hpp" + +namespace cv +{ + +/** @addtogroup core_optim +The algorithms in this section minimize or maximize function value within specified constraints or +without any constraints. +@{ +*/ + +/** @brief Basic interface for all solvers + */ +class CV_EXPORTS MinProblemSolver : public Algorithm +{ +public: + /** @brief Represents function being optimized + */ + class CV_EXPORTS Function + { + public: + virtual ~Function() {} + virtual int getDims() const = 0; + virtual double getGradientEps() const; + virtual double calc(const double* x) const = 0; + virtual void getGradient(const double* x,double* grad); + }; + + /** @brief Getter for the optimized function. + + The optimized function is represented by Function interface, which requires derivatives to + implement the calc(double*) and getDim() methods to evaluate the function. + + @return Smart-pointer to an object that implements Function interface - it represents the + function that is being optimized. It can be empty, if no function was given so far. + */ + virtual Ptr getFunction() const = 0; + + /** @brief Setter for the optimized function. + + *It should be called at least once before the call to* minimize(), as default value is not usable. + + @param f The new function to optimize. + */ + virtual void setFunction(const Ptr& f) = 0; + + /** @brief Getter for the previously set terminal criteria for this algorithm. + + @return Deep copy of the terminal criteria used at the moment. + */ + virtual TermCriteria getTermCriteria() const = 0; + + /** @brief Set terminal criteria for solver. + + This method *is not necessary* to be called before the first call to minimize(), as the default + value is sensible. + + Algorithm stops when the number of function evaluations done exceeds termcrit.maxCount, when + the function values at the vertices of simplex are within termcrit.epsilon range or simplex + becomes so small that it can enclosed in a box with termcrit.epsilon sides, whatever comes + first. + @param termcrit Terminal criteria to be used, represented as cv::TermCriteria structure. + */ + virtual void setTermCriteria(const TermCriteria& termcrit) = 0; + + /** @brief actually runs the algorithm and performs the minimization. + + The sole input parameter determines the centroid of the starting simplex (roughly, it tells + where to start), all the others (terminal criteria, initial step, function to be minimized) are + supposed to be set via the setters before the call to this method or the default values (not + always sensible) will be used. + + @param x The initial point, that will become a centroid of an initial simplex. After the algorithm + will terminate, it will be set to the point where the algorithm stops, the point of possible + minimum. + @return The value of a function at the point found. + */ + virtual double minimize(InputOutputArray x) = 0; +}; + +/** @brief This class is used to perform the non-linear non-constrained minimization of a function, + +defined on an `n`-dimensional Euclidean space, using the **Nelder-Mead method**, also known as +**downhill simplex method**. The basic idea about the method can be obtained from +. + +It should be noted, that this method, although deterministic, is rather a heuristic and therefore +may converge to a local minima, not necessary a global one. It is iterative optimization technique, +which at each step uses an information about the values of a function evaluated only at `n+1` +points, arranged as a *simplex* in `n`-dimensional space (hence the second name of the method). At +each step new point is chosen to evaluate function at, obtained value is compared with previous +ones and based on this information simplex changes it's shape , slowly moving to the local minimum. +Thus this method is using *only* function values to make decision, on contrary to, say, Nonlinear +Conjugate Gradient method (which is also implemented in optim). + +Algorithm stops when the number of function evaluations done exceeds termcrit.maxCount, when the +function values at the vertices of simplex are within termcrit.epsilon range or simplex becomes so +small that it can enclosed in a box with termcrit.epsilon sides, whatever comes first, for some +defined by user positive integer termcrit.maxCount and positive non-integer termcrit.epsilon. + +@note DownhillSolver is a derivative of the abstract interface +cv::MinProblemSolver, which in turn is derived from the Algorithm interface and is used to +encapsulate the functionality, common to all non-linear optimization algorithms in the optim +module. + +@note term criteria should meet following condition: +@code + termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0 +@endcode + */ +class CV_EXPORTS DownhillSolver : public MinProblemSolver +{ +public: + /** @brief Returns the initial step that will be used in downhill simplex algorithm. + + @param step Initial step that will be used in algorithm. Note, that although corresponding setter + accepts column-vectors as well as row-vectors, this method will return a row-vector. + @see DownhillSolver::setInitStep + */ + virtual void getInitStep(OutputArray step) const=0; + + /** @brief Sets the initial step that will be used in downhill simplex algorithm. + + Step, together with initial point (givin in DownhillSolver::minimize) are two `n`-dimensional + vectors that are used to determine the shape of initial simplex. Roughly said, initial point + determines the position of a simplex (it will become simplex's centroid), while step determines the + spread (size in each dimension) of a simplex. To be more precise, if \f$s,x_0\in\mathbb{R}^n\f$ are + the initial step and initial point respectively, the vertices of a simplex will be: + \f$v_0:=x_0-\frac{1}{2} s\f$ and \f$v_i:=x_0+s_i\f$ for \f$i=1,2,\dots,n\f$ where \f$s_i\f$ denotes + projections of the initial step of *n*-th coordinate (the result of projection is treated to be + vector given by \f$s_i:=e_i\cdot\left\f$, where \f$e_i\f$ form canonical basis) + + @param step Initial step that will be used in algorithm. Roughly said, it determines the spread + (size in each dimension) of an initial simplex. + */ + virtual void setInitStep(InputArray step)=0; + + /** @brief This function returns the reference to the ready-to-use DownhillSolver object. + + All the parameters are optional, so this procedure can be called even without parameters at + all. In this case, the default values will be used. As default value for terminal criteria are + the only sensible ones, MinProblemSolver::setFunction() and DownhillSolver::setInitStep() + should be called upon the obtained object, if the respective parameters were not given to + create(). Otherwise, the two ways (give parameters to createDownhillSolver() or miss them out + and call the MinProblemSolver::setFunction() and DownhillSolver::setInitStep()) are absolutely + equivalent (and will drop the same errors in the same way, should invalid input be detected). + @param f Pointer to the function that will be minimized, similarly to the one you submit via + MinProblemSolver::setFunction. + @param initStep Initial step, that will be used to construct the initial simplex, similarly to the one + you submit via MinProblemSolver::setInitStep. + @param termcrit Terminal criteria to the algorithm, similarly to the one you submit via + MinProblemSolver::setTermCriteria. + */ + static Ptr create(const Ptr& f=Ptr(), + InputArray initStep=Mat_(1,1,0.0), + TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5000,0.000001)); +}; + +/** @brief This class is used to perform the non-linear non-constrained minimization of a function +with known gradient, + +defined on an *n*-dimensional Euclidean space, using the **Nonlinear Conjugate Gradient method**. +The implementation was done based on the beautifully clear explanatory article [An Introduction to +the Conjugate Gradient Method Without the Agonizing +Pain](http://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf) by Jonathan Richard +Shewchuk. The method can be seen as an adaptation of a standard Conjugate Gradient method (see, for +example ) for numerically solving the +systems of linear equations. + +It should be noted, that this method, although deterministic, is rather a heuristic method and +therefore may converge to a local minima, not necessary a global one. What is even more disastrous, +most of its behaviour is ruled by gradient, therefore it essentially cannot distinguish between +local minima and maxima. Therefore, if it starts sufficiently near to the local maximum, it may +converge to it. Another obvious restriction is that it should be possible to compute the gradient of +a function at any point, thus it is preferable to have analytic expression for gradient and +computational burden should be born by the user. + +The latter responsibility is accompilished via the getGradient method of a +MinProblemSolver::Function interface (which represents function being optimized). This method takes +point a point in *n*-dimensional space (first argument represents the array of coordinates of that +point) and comput its gradient (it should be stored in the second argument as an array). + +@note class ConjGradSolver thus does not add any new methods to the basic MinProblemSolver interface. + +@note term criteria should meet following condition: +@code + termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0 + // or + termcrit.type == TermCriteria::MAX_ITER) && termcrit.maxCount > 0 +@endcode + */ +class CV_EXPORTS ConjGradSolver : public MinProblemSolver +{ +public: + /** @brief This function returns the reference to the ready-to-use ConjGradSolver object. + + All the parameters are optional, so this procedure can be called even without parameters at + all. In this case, the default values will be used. As default value for terminal criteria are + the only sensible ones, MinProblemSolver::setFunction() should be called upon the obtained + object, if the function was not given to create(). Otherwise, the two ways (submit it to + create() or miss it out and call the MinProblemSolver::setFunction()) are absolutely equivalent + (and will drop the same errors in the same way, should invalid input be detected). + @param f Pointer to the function that will be minimized, similarly to the one you submit via + MinProblemSolver::setFunction. + @param termcrit Terminal criteria to the algorithm, similarly to the one you submit via + MinProblemSolver::setTermCriteria. + */ + static Ptr create(const Ptr& f=Ptr(), + TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5000,0.000001)); +}; + +//! return codes for cv::solveLP() function +enum SolveLPResult +{ + SOLVELP_UNBOUNDED = -2, //!< problem is unbounded (target function can achieve arbitrary high values) + SOLVELP_UNFEASIBLE = -1, //!< problem is unfeasible (there are no points that satisfy all the constraints imposed) + SOLVELP_SINGLE = 0, //!< there is only one maximum for target function + SOLVELP_MULTI = 1 //!< there are multiple maxima for target function - the arbitrary one is returned +}; + +/** @brief Solve given (non-integer) linear programming problem using the Simplex Algorithm (Simplex Method). + +What we mean here by "linear programming problem" (or LP problem, for short) can be formulated as: + +\f[\mbox{Maximize } c\cdot x\\ + \mbox{Subject to:}\\ + Ax\leq b\\ + x\geq 0\f] + +Where \f$c\f$ is fixed `1`-by-`n` row-vector, \f$A\f$ is fixed `m`-by-`n` matrix, \f$b\f$ is fixed `m`-by-`1` +column vector and \f$x\f$ is an arbitrary `n`-by-`1` column vector, which satisfies the constraints. + +Simplex algorithm is one of many algorithms that are designed to handle this sort of problems +efficiently. Although it is not optimal in theoretical sense (there exist algorithms that can solve +any problem written as above in polynomial time, while simplex method degenerates to exponential +time for some special cases), it is well-studied, easy to implement and is shown to work well for +real-life purposes. + +The particular implementation is taken almost verbatim from **Introduction to Algorithms, third +edition** by T. H. Cormen, C. E. Leiserson, R. L. Rivest and Clifford Stein. In particular, the +Bland's rule is used to prevent cycling. + +@param Func This row-vector corresponds to \f$c\f$ in the LP problem formulation (see above). It should +contain 32- or 64-bit floating point numbers. As a convenience, column-vector may be also submitted, +in the latter case it is understood to correspond to \f$c^T\f$. +@param Constr `m`-by-`n+1` matrix, whose rightmost column corresponds to \f$b\f$ in formulation above +and the remaining to \f$A\f$. It should contain 32- or 64-bit floating point numbers. +@param z The solution will be returned here as a column-vector - it corresponds to \f$c\f$ in the +formulation above. It will contain 64-bit floating point numbers. +@return One of cv::SolveLPResult + */ +CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z); + +//! @} + +}// cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/ovx.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/ovx.hpp new file mode 100644 index 0000000..8bb7d54 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/ovx.hpp @@ -0,0 +1,28 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +// Copyright (C) 2016, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. + +// OpenVX related definitions and declarations + +#pragma once +#ifndef OPENCV_OVX_HPP +#define OPENCV_OVX_HPP + +#include "cvdef.h" + +namespace cv +{ +/// Check if use of OpenVX is possible +CV_EXPORTS_W bool haveOpenVX(); + +/// Check if use of OpenVX is enabled +CV_EXPORTS_W bool useOpenVX(); + +/// Enable/disable use of OpenVX +CV_EXPORTS_W void setUseOpenVX(bool flag); +} // namespace cv + +#endif // OPENCV_OVX_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/persistence.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/persistence.hpp new file mode 100644 index 0000000..ba02d69 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/persistence.hpp @@ -0,0 +1,1333 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_PERSISTENCE_HPP +#define OPENCV_CORE_PERSISTENCE_HPP + +#ifndef CV_DOXYGEN +/// Define to support persistence legacy formats +#define CV__LEGACY_PERSISTENCE +#endif + +#ifndef __cplusplus +# error persistence.hpp header must be compiled as C++ +#endif + +//! @addtogroup core_c +//! @{ + +/** @brief "black box" representation of the file storage associated with a file on disk. + +Several functions that are described below take CvFileStorage\* as inputs and allow the user to +save or to load hierarchical collections that consist of scalar values, standard CXCore objects +(such as matrices, sequences, graphs), and user-defined objects. + +OpenCV can read and write data in XML (), YAML () or +JSON () formats. Below is an example of 3x3 floating-point identity matrix A, +stored in XML and YAML files +using CXCore functions: +XML: +@code{.xml} + + + + 3 + 3 +
f
+ 1. 0. 0. 0. 1. 0. 0. 0. 1. +
+
+@endcode +YAML: +@code{.yaml} + %YAML:1.0 + A: !!opencv-matrix + rows: 3 + cols: 3 + dt: f + data: [ 1., 0., 0., 0., 1., 0., 0., 0., 1.] +@endcode +As it can be seen from the examples, XML uses nested tags to represent hierarchy, while YAML uses +indentation for that purpose (similar to the Python programming language). + +The same functions can read and write data in both formats; the particular format is determined by +the extension of the opened file, ".xml" for XML files, ".yml" or ".yaml" for YAML and ".json" for +JSON. + */ + +//! @} core_c + +#include "opencv2/core/types.hpp" +#include "opencv2/core/mat.hpp" + +namespace cv { + +/** @addtogroup core_xml + +XML/YAML/JSON file storages. {#xml_storage} +======================= +Writing to a file storage. +-------------------------- +You can store and then restore various OpenCV data structures to/from XML (), +YAML () or JSON () formats. Also, it is possible to store +and load arbitrarily complex data structures, which include OpenCV data structures, as well as +primitive data types (integer and floating-point numbers and text strings) as their elements. + +Use the following procedure to write something to XML, YAML or JSON: +-# Create new FileStorage and open it for writing. It can be done with a single call to +FileStorage::FileStorage constructor that takes a filename, or you can use the default constructor +and then call FileStorage::open. Format of the file (XML, YAML or JSON) is determined from the filename +extension (".xml", ".yml"/".yaml" and ".json", respectively) +-# Write all the data you want using the streaming operator `<<`, just like in the case of STL +streams. +-# Close the file using FileStorage::release. FileStorage destructor also closes the file. + +Here is an example: +@code + #include "opencv2/opencv.hpp" + #include + + using namespace cv; + + int main(int, char** argv) + { + FileStorage fs("test.yml", FileStorage::WRITE); + + fs << "frameCount" << 5; + time_t rawtime; time(&rawtime); + fs << "calibrationDate" << asctime(localtime(&rawtime)); + Mat cameraMatrix = (Mat_(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1); + Mat distCoeffs = (Mat_(5,1) << 0.1, 0.01, -0.001, 0, 0); + fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs; + fs << "features" << "["; + for( int i = 0; i < 3; i++ ) + { + int x = rand() % 640; + int y = rand() % 480; + uchar lbp = rand() % 256; + + fs << "{:" << "x" << x << "y" << y << "lbp" << "[:"; + for( int j = 0; j < 8; j++ ) + fs << ((lbp >> j) & 1); + fs << "]" << "}"; + } + fs << "]"; + fs.release(); + return 0; + } +@endcode +The sample above stores to YML an integer, a text string (calibration date), 2 matrices, and a custom +structure "feature", which includes feature coordinates and LBP (local binary pattern) value. Here +is output of the sample: +@code{.yaml} +%YAML:1.0 +frameCount: 5 +calibrationDate: "Fri Jun 17 14:09:29 2011\n" +cameraMatrix: !!opencv-matrix + rows: 3 + cols: 3 + dt: d + data: [ 1000., 0., 320., 0., 1000., 240., 0., 0., 1. ] +distCoeffs: !!opencv-matrix + rows: 5 + cols: 1 + dt: d + data: [ 1.0000000000000001e-01, 1.0000000000000000e-02, + -1.0000000000000000e-03, 0., 0. ] +features: + - { x:167, y:49, lbp:[ 1, 0, 0, 1, 1, 0, 1, 1 ] } + - { x:298, y:130, lbp:[ 0, 0, 0, 1, 0, 0, 1, 1 ] } + - { x:344, y:158, lbp:[ 1, 1, 0, 0, 0, 0, 1, 0 ] } +@endcode + +As an exercise, you can replace ".yml" with ".xml" or ".json" in the sample above and see, how the +corresponding XML file will look like. + +Several things can be noted by looking at the sample code and the output: + +- The produced YAML (and XML/JSON) consists of heterogeneous collections that can be nested. There are + 2 types of collections: named collections (mappings) and unnamed collections (sequences). In mappings + each element has a name and is accessed by name. This is similar to structures and std::map in + C/C++ and dictionaries in Python. In sequences elements do not have names, they are accessed by + indices. This is similar to arrays and std::vector in C/C++ and lists, tuples in Python. + "Heterogeneous" means that elements of each single collection can have different types. + + Top-level collection in YAML/XML/JSON is a mapping. Each matrix is stored as a mapping, and the matrix + elements are stored as a sequence. Then, there is a sequence of features, where each feature is + represented a mapping, and lbp value in a nested sequence. + +- When you write to a mapping (a structure), you write element name followed by its value. When you + write to a sequence, you simply write the elements one by one. OpenCV data structures (such as + cv::Mat) are written in absolutely the same way as simple C data structures - using `<<` + operator. + +- To write a mapping, you first write the special string `{` to the storage, then write the + elements as pairs (`fs << << `) and then write the closing + `}`. + +- To write a sequence, you first write the special string `[`, then write the elements, then + write the closing `]`. + +- In YAML/JSON (but not XML), mappings and sequences can be written in a compact Python-like inline + form. In the sample above matrix elements, as well as each feature, including its lbp value, is + stored in such inline form. To store a mapping/sequence in a compact form, put `:` after the + opening character, e.g. use `{:` instead of `{` and `[:` instead of `[`. When the + data is written to XML, those extra `:` are ignored. + +Reading data from a file storage. +--------------------------------- +To read the previously written XML, YAML or JSON file, do the following: +-# Open the file storage using FileStorage::FileStorage constructor or FileStorage::open method. + In the current implementation the whole file is parsed and the whole representation of file + storage is built in memory as a hierarchy of file nodes (see FileNode) + +-# Read the data you are interested in. Use FileStorage::operator [], FileNode::operator [] + and/or FileNodeIterator. + +-# Close the storage using FileStorage::release. + +Here is how to read the file created by the code sample above: +@code + FileStorage fs2("test.yml", FileStorage::READ); + + // first method: use (type) operator on FileNode. + int frameCount = (int)fs2["frameCount"]; + + String date; + // second method: use FileNode::operator >> + fs2["calibrationDate"] >> date; + + Mat cameraMatrix2, distCoeffs2; + fs2["cameraMatrix"] >> cameraMatrix2; + fs2["distCoeffs"] >> distCoeffs2; + + cout << "frameCount: " << frameCount << endl + << "calibration date: " << date << endl + << "camera matrix: " << cameraMatrix2 << endl + << "distortion coeffs: " << distCoeffs2 << endl; + + FileNode features = fs2["features"]; + FileNodeIterator it = features.begin(), it_end = features.end(); + int idx = 0; + std::vector lbpval; + + // iterate through a sequence using FileNodeIterator + for( ; it != it_end; ++it, idx++ ) + { + cout << "feature #" << idx << ": "; + cout << "x=" << (int)(*it)["x"] << ", y=" << (int)(*it)["y"] << ", lbp: ("; + // you can also easily read numerical arrays using FileNode >> std::vector operator. + (*it)["lbp"] >> lbpval; + for( int i = 0; i < (int)lbpval.size(); i++ ) + cout << " " << (int)lbpval[i]; + cout << ")" << endl; + } + fs2.release(); +@endcode + +Format specification {#format_spec} +-------------------- +`([count]{u|c|w|s|i|f|d})`... where the characters correspond to fundamental C++ types: +- `u` 8-bit unsigned number +- `c` 8-bit signed number +- `w` 16-bit unsigned number +- `s` 16-bit signed number +- `i` 32-bit signed number +- `f` single precision floating-point number +- `d` double precision floating-point number +- `r` pointer, 32 lower bits of which are written as a signed integer. The type can be used to + store structures with links between the elements. + +`count` is the optional counter of values of a given type. For example, `2if` means that each array +element is a structure of 2 integers, followed by a single-precision floating-point number. The +equivalent notations of the above specification are `iif`, `2i1f` and so forth. Other examples: `u` +means that the array consists of bytes, and `2d` means the array consists of pairs of doubles. + +@see @ref samples/cpp/filestorage.cpp +*/ + +//! @{ + +/** @example samples/cpp/filestorage.cpp +A complete example using the FileStorage interface +*/ + +////////////////////////// XML & YAML I/O ////////////////////////// + +class CV_EXPORTS FileNode; +class CV_EXPORTS FileNodeIterator; + +/** @brief XML/YAML/JSON file storage class that encapsulates all the information necessary for writing or +reading data to/from a file. + */ +class CV_EXPORTS_W FileStorage +{ +public: + //! file storage mode + enum Mode + { + READ = 0, //!< value, open the file for reading + WRITE = 1, //!< value, open the file for writing + APPEND = 2, //!< value, open the file for appending + MEMORY = 4, //!< flag, read data from source or write data to the internal buffer (which is + //!< returned by FileStorage::release) + FORMAT_MASK = (7<<3), //!< mask for format flags + FORMAT_AUTO = 0, //!< flag, auto format + FORMAT_XML = (1<<3), //!< flag, XML format + FORMAT_YAML = (2<<3), //!< flag, YAML format + FORMAT_JSON = (3<<3), //!< flag, JSON format + + BASE64 = 64, //!< flag, write rawdata in Base64 by default. (consider using WRITE_BASE64) + WRITE_BASE64 = BASE64 | WRITE, //!< flag, enable both WRITE and BASE64 + }; + enum State + { + UNDEFINED = 0, + VALUE_EXPECTED = 1, + NAME_EXPECTED = 2, + INSIDE_MAP = 4 + }; + + /** @brief The constructors. + + The full constructor opens the file. Alternatively you can use the default constructor and then + call FileStorage::open. + */ + CV_WRAP FileStorage(); + + /** @overload + @copydoc open() + */ + CV_WRAP FileStorage(const String& filename, int flags, const String& encoding=String()); + + //! the destructor. calls release() + virtual ~FileStorage(); + + /** @brief Opens a file. + + See description of parameters in FileStorage::FileStorage. The method calls FileStorage::release + before opening the file. + @param filename Name of the file to open or the text string to read the data from. + Extension of the file (.xml, .yml/.yaml or .json) determines its format (XML, YAML or JSON + respectively). Also you can append .gz to work with compressed files, for example myHugeMatrix.xml.gz. If both + FileStorage::WRITE and FileStorage::MEMORY flags are specified, source is used just to specify + the output file format (e.g. mydata.xml, .yml etc.). A file name can also contain parameters. + You can use this format, "*?base64" (e.g. "file.json?base64" (case sensitive)), as an alternative to + FileStorage::BASE64 flag. + @param flags Mode of operation. One of FileStorage::Mode + @param encoding Encoding of the file. Note that UTF-16 XML encoding is not supported currently and + you should use 8-bit encoding instead of it. + */ + CV_WRAP virtual bool open(const String& filename, int flags, const String& encoding=String()); + + /** @brief Checks whether the file is opened. + + @returns true if the object is associated with the current file and false otherwise. It is a + good practice to call this method after you tried to open a file. + */ + CV_WRAP virtual bool isOpened() const; + + /** @brief Closes the file and releases all the memory buffers. + + Call this method after all I/O operations with the storage are finished. + */ + CV_WRAP virtual void release(); + + /** @brief Closes the file and releases all the memory buffers. + + Call this method after all I/O operations with the storage are finished. If the storage was + opened for writing data and FileStorage::WRITE was specified + */ + CV_WRAP virtual String releaseAndGetString(); + + /** @brief Returns the first element of the top-level mapping. + @returns The first element of the top-level mapping. + */ + CV_WRAP FileNode getFirstTopLevelNode() const; + + /** @brief Returns the top-level mapping + @param streamidx Zero-based index of the stream. In most cases there is only one stream in the file. + However, YAML supports multiple streams and so there can be several. + @returns The top-level mapping. + */ + CV_WRAP FileNode root(int streamidx=0) const; + + /** @brief Returns the specified element of the top-level mapping. + @param nodename Name of the file node. + @returns Node with the given name. + */ + FileNode operator[](const String& nodename) const; + + /** @overload */ + CV_WRAP_AS(getNode) FileNode operator[](const char* nodename) const; + + /** + * @brief Simplified writing API to use with bindings. + * @param name Name of the written object + * @param val Value of the written object + */ + CV_WRAP void write(const String& name, int val); + /// @overload + CV_WRAP void write(const String& name, double val); + /// @overload + CV_WRAP void write(const String& name, const String& val); + /// @overload + CV_WRAP void write(const String& name, const Mat& val); + /// @overload + CV_WRAP void write(const String& name, const std::vector& val); + + /** @brief Writes multiple numbers. + + Writes one or more numbers of the specified format to the currently written structure. Usually it is + more convenient to use operator `<<` instead of this method. + @param fmt Specification of each array element, see @ref format_spec "format specification" + @param vec Pointer to the written array. + @param len Number of the uchar elements to write. + */ + void writeRaw( const String& fmt, const void* vec, size_t len ); + + /** @brief Writes a comment. + + The function writes a comment into file storage. The comments are skipped when the storage is read. + @param comment The written comment, single-line or multi-line + @param append If true, the function tries to put the comment at the end of current line. + Else if the comment is multi-line, or if it does not fit at the end of the current + line, the comment starts a new line. + */ + CV_WRAP void writeComment(const String& comment, bool append = false); + + void startWriteStruct(const String& name, int flags, const String& typeName); + void endWriteStruct(); + + /** @brief Returns the normalized object name for the specified name of a file. + @param filename Name of a file + @returns The normalized object name. + */ + static String getDefaultObjectName(const String& filename); + + /** @brief Returns the current format. + * @returns The current format, see FileStorage::Mode + */ + CV_WRAP int getFormat() const; + + int state; + std::string elname; + + class Impl; + Ptr p; +}; + +/** @brief File Storage Node class. + +The node is used to store each and every element of the file storage opened for reading. When +XML/YAML file is read, it is first parsed and stored in the memory as a hierarchical collection of +nodes. Each node can be a "leaf" that is contain a single number or a string, or be a collection of +other nodes. There can be named collections (mappings) where each element has a name and it is +accessed by a name, and ordered collections (sequences) where elements do not have names but rather +accessed by index. Type of the file node can be determined using FileNode::type method. + +Note that file nodes are only used for navigating file storages opened for reading. When a file +storage is opened for writing, no data is stored in memory after it is written. + */ +class CV_EXPORTS_W_SIMPLE FileNode +{ +public: + //! type of the file storage node + enum + { + NONE = 0, //!< empty node + INT = 1, //!< an integer + REAL = 2, //!< floating-point number + FLOAT = REAL, //!< synonym or REAL + STR = 3, //!< text string in UTF-8 encoding + STRING = STR, //!< synonym for STR + SEQ = 4, //!< sequence + MAP = 5, //!< mapping + TYPE_MASK = 7, + + FLOW = 8, //!< compact representation of a sequence or mapping. Used only by YAML writer + UNIFORM = 8, //!< if set, means that all the collection elements are numbers of the same type (real's or int's). + //!< UNIFORM is used only when reading FileStorage; FLOW is used only when writing. So they share the same bit + EMPTY = 16, //!< empty structure (sequence or mapping) + NAMED = 32 //!< the node has a name (i.e. it is element of a mapping). + }; + /** @brief The constructors. + + These constructors are used to create a default file node, construct it from obsolete structures or + from the another file node. + */ + CV_WRAP FileNode(); + + /** @overload + @param fs Pointer to the file storage structure. + @param blockIdx Index of the memory block where the file node is stored + @param ofs Offset in bytes from the beginning of the serialized storage + */ + FileNode(const FileStorage* fs, size_t blockIdx, size_t ofs); + + /** @overload + @param node File node to be used as initialization for the created file node. + */ + FileNode(const FileNode& node); + + /** @brief Returns element of a mapping node or a sequence node. + @param nodename Name of an element in the mapping node. + @returns Returns the element with the given identifier. + */ + FileNode operator[](const String& nodename) const; + + /** @overload + @param nodename Name of an element in the mapping node. + */ + CV_WRAP_AS(getNode) FileNode operator[](const char* nodename) const; + + /** @overload + @param i Index of an element in the sequence node. + */ + CV_WRAP_AS(at) FileNode operator[](int i) const; + + /** @brief Returns keys of a mapping node. + @returns Keys of a mapping node. + */ + CV_WRAP std::vector keys() const; + + /** @brief Returns type of the node. + @returns Type of the node. See FileNode::Type + */ + CV_WRAP int type() const; + + //! returns true if the node is empty + CV_WRAP bool empty() const; + //! returns true if the node is a "none" object + CV_WRAP bool isNone() const; + //! returns true if the node is a sequence + CV_WRAP bool isSeq() const; + //! returns true if the node is a mapping + CV_WRAP bool isMap() const; + //! returns true if the node is an integer + CV_WRAP bool isInt() const; + //! returns true if the node is a floating-point number + CV_WRAP bool isReal() const; + //! returns true if the node is a text string + CV_WRAP bool isString() const; + //! returns true if the node has a name + CV_WRAP bool isNamed() const; + //! returns the node name or an empty string if the node is nameless + CV_WRAP std::string name() const; + //! returns the number of elements in the node, if it is a sequence or mapping, or 1 otherwise. + CV_WRAP size_t size() const; + //! returns raw size of the FileNode in bytes + CV_WRAP size_t rawSize() const; + //! returns the node content as an integer. If the node stores floating-point number, it is rounded. + operator int() const; + //! returns the node content as float + operator float() const; + //! returns the node content as double + operator double() const; + //! returns the node content as text string + inline operator std::string() const { return this->string(); } + + static bool isMap(int flags); + static bool isSeq(int flags); + static bool isCollection(int flags); + static bool isEmptyCollection(int flags); + static bool isFlow(int flags); + + uchar* ptr(); + const uchar* ptr() const; + + //! returns iterator pointing to the first node element + FileNodeIterator begin() const; + //! returns iterator pointing to the element following the last node element + FileNodeIterator end() const; + + /** @brief Reads node elements to the buffer with the specified format. + + Usually it is more convenient to use operator `>>` instead of this method. + @param fmt Specification of each array element. See @ref format_spec "format specification" + @param vec Pointer to the destination array. + @param len Number of elements to read. If it is greater than number of remaining elements then all + of them will be read. + */ + void readRaw( const String& fmt, void* vec, size_t len ) const; + + /** Internal method used when reading FileStorage. + Sets the type (int, real or string) and value of the previously created node. + */ + void setValue( int type, const void* value, int len=-1 ); + + //! Simplified reading API to use with bindings. + CV_WRAP double real() const; + //! Simplified reading API to use with bindings. + CV_WRAP std::string string() const; + //! Simplified reading API to use with bindings. + CV_WRAP Mat mat() const; + + //protected: + const FileStorage* fs; + size_t blockIdx; + size_t ofs; +}; + + +/** @brief used to iterate through sequences and mappings. + + A standard STL notation, with node.begin(), node.end() denoting the beginning and the end of a + sequence, stored in node. See the data reading sample in the beginning of the section. + */ +class CV_EXPORTS FileNodeIterator +{ +public: + /** @brief The constructors. + + These constructors are used to create a default iterator, set it to specific element in a file node + or construct it from another iterator. + */ + FileNodeIterator(); + + /** @overload + @param node File node - the collection to iterate over; + it can be a scalar (equivalent to 1-element collection) or "none" (equivalent to empty collection). + @param seekEnd - true if iterator needs to be set after the last element of the node; + that is: + * node.begin() => FileNodeIterator(node, false) + * node.end() => FileNodeIterator(node, true) + */ + FileNodeIterator(const FileNode& node, bool seekEnd); + + /** @overload + @param it Iterator to be used as initialization for the created iterator. + */ + FileNodeIterator(const FileNodeIterator& it); + + //! returns the currently observed element + FileNode operator *() const; + + //! moves iterator to the next node + FileNodeIterator& operator ++ (); + //! moves iterator to the next node + FileNodeIterator operator ++ (int); + //! moves iterator forward by the specified offset (possibly negative) + FileNodeIterator& operator += (int ofs); + + /** @brief Reads node elements to the buffer with the specified format. + + Usually it is more convenient to use operator `>>` instead of this method. + @param fmt Specification of each array element. See @ref format_spec "format specification" + @param vec Pointer to the destination array. + @param maxCount Number of elements to read. If it is greater than number of remaining elements then + all of them will be read. + */ + FileNodeIterator& readRaw( const String& fmt, void* vec, + size_t maxCount=(size_t)INT_MAX ); + + //! returns the number of remaining (not read yet) elements + size_t remaining() const; + + bool equalTo(const FileNodeIterator& it) const; + +protected: + const FileStorage* fs; + size_t blockIdx; + size_t ofs; + size_t blockSize; + size_t nodeNElems; + size_t idx; +}; + +//! @} core_xml + +/////////////////// XML & YAML I/O implementation ////////////////// + +//! @relates cv::FileStorage +//! @{ + +CV_EXPORTS void write( FileStorage& fs, const String& name, int value ); +CV_EXPORTS void write( FileStorage& fs, const String& name, float value ); +CV_EXPORTS void write( FileStorage& fs, const String& name, double value ); +CV_EXPORTS void write( FileStorage& fs, const String& name, const String& value ); +CV_EXPORTS void write( FileStorage& fs, const String& name, const Mat& value ); +CV_EXPORTS void write( FileStorage& fs, const String& name, const SparseMat& value ); +#ifdef CV__LEGACY_PERSISTENCE +CV_EXPORTS void write( FileStorage& fs, const String& name, const std::vector& value); +CV_EXPORTS void write( FileStorage& fs, const String& name, const std::vector& value); +#endif + +CV_EXPORTS void writeScalar( FileStorage& fs, int value ); +CV_EXPORTS void writeScalar( FileStorage& fs, float value ); +CV_EXPORTS void writeScalar( FileStorage& fs, double value ); +CV_EXPORTS void writeScalar( FileStorage& fs, const String& value ); + +//! @} + +//! @relates cv::FileNode +//! @{ + +CV_EXPORTS void read(const FileNode& node, int& value, int default_value); +CV_EXPORTS void read(const FileNode& node, float& value, float default_value); +CV_EXPORTS void read(const FileNode& node, double& value, double default_value); +CV_EXPORTS void read(const FileNode& node, std::string& value, const std::string& default_value); +CV_EXPORTS void read(const FileNode& node, Mat& mat, const Mat& default_mat = Mat() ); +CV_EXPORTS void read(const FileNode& node, SparseMat& mat, const SparseMat& default_mat = SparseMat() ); +#ifdef CV__LEGACY_PERSISTENCE +CV_EXPORTS void read(const FileNode& node, std::vector& keypoints); +CV_EXPORTS void read(const FileNode& node, std::vector& matches); +#endif +CV_EXPORTS void read(const FileNode& node, KeyPoint& value, const KeyPoint& default_value); +CV_EXPORTS void read(const FileNode& node, DMatch& value, const DMatch& default_value); + +template static inline void read(const FileNode& node, Point_<_Tp>& value, const Point_<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 2 ? default_value : Point_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1])); +} + +template static inline void read(const FileNode& node, Point3_<_Tp>& value, const Point3_<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 3 ? default_value : Point3_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]), + saturate_cast<_Tp>(temp[2])); +} + +template static inline void read(const FileNode& node, Size_<_Tp>& value, const Size_<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 2 ? default_value : Size_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1])); +} + +template static inline void read(const FileNode& node, Complex<_Tp>& value, const Complex<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 2 ? default_value : Complex<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1])); +} + +template static inline void read(const FileNode& node, Rect_<_Tp>& value, const Rect_<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 4 ? default_value : Rect_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]), + saturate_cast<_Tp>(temp[2]), saturate_cast<_Tp>(temp[3])); +} + +template static inline void read(const FileNode& node, Vec<_Tp, cn>& value, const Vec<_Tp, cn>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != cn ? default_value : Vec<_Tp, cn>(&temp[0]); +} + +template static inline void read(const FileNode& node, Matx<_Tp, m, n>& value, const Matx<_Tp, m, n>& default_matx = Matx<_Tp, m, n>()) +{ + Mat temp; + read(node, temp); // read as a Mat class + + if (temp.empty()) + value = default_matx; + else + value = Matx<_Tp, m, n>(temp); +} + +template static inline void read(const FileNode& node, Scalar_<_Tp>& value, const Scalar_<_Tp>& default_value) +{ + std::vector<_Tp> temp; FileNodeIterator it = node.begin(); it >> temp; + value = temp.size() != 4 ? default_value : Scalar_<_Tp>(saturate_cast<_Tp>(temp[0]), saturate_cast<_Tp>(temp[1]), + saturate_cast<_Tp>(temp[2]), saturate_cast<_Tp>(temp[3])); +} + +static inline void read(const FileNode& node, Range& value, const Range& default_value) +{ + Point2i temp(value.start, value.end); const Point2i default_temp = Point2i(default_value.start, default_value.end); + read(node, temp, default_temp); + value.start = temp.x; value.end = temp.y; +} + +//! @} + +/** @brief Writes string to a file storage. +@relates cv::FileStorage + */ +CV_EXPORTS FileStorage& operator << (FileStorage& fs, const String& str); + +//! @cond IGNORED + +namespace internal +{ + class CV_EXPORTS WriteStructContext + { + public: + WriteStructContext(FileStorage& _fs, const String& name, int flags, const String& typeName = String()); + ~WriteStructContext(); + private: + FileStorage* fs; + }; + + template class VecWriterProxy + { + public: + VecWriterProxy( FileStorage* _fs ) : fs(_fs) {} + void operator()(const std::vector<_Tp>& vec) const + { + size_t count = vec.size(); + for (size_t i = 0; i < count; i++) + write(*fs, vec[i]); + } + private: + FileStorage* fs; + }; + + template class VecWriterProxy<_Tp, 1> + { + public: + VecWriterProxy( FileStorage* _fs ) : fs(_fs) {} + void operator()(const std::vector<_Tp>& vec) const + { + int _fmt = traits::SafeFmt<_Tp>::fmt; + char fmt[] = { (char)((_fmt >> 8) + '1'), (char)_fmt, '\0' }; + fs->writeRaw(fmt, !vec.empty() ? (uchar*)&vec[0] : 0, vec.size() * sizeof(_Tp)); + } + private: + FileStorage* fs; + }; + + template class VecReaderProxy + { + public: + VecReaderProxy( FileNodeIterator* _it ) : it(_it) {} + void operator()(std::vector<_Tp>& vec, size_t count) const + { + count = std::min(count, it->remaining()); + vec.resize(count); + for (size_t i = 0; i < count; i++, ++(*it)) + read(**it, vec[i], _Tp()); + } + private: + FileNodeIterator* it; + }; + + template class VecReaderProxy<_Tp, 1> + { + public: + VecReaderProxy( FileNodeIterator* _it ) : it(_it) {} + void operator()(std::vector<_Tp>& vec, size_t count) const + { + size_t remaining = it->remaining(); + size_t cn = DataType<_Tp>::channels; + int _fmt = traits::SafeFmt<_Tp>::fmt; + CV_Assert((_fmt >> 8) < 9); + char fmt[] = { (char)((_fmt >> 8)+'1'), (char)_fmt, '\0' }; + CV_Assert((remaining % cn) == 0); + size_t remaining1 = remaining / cn; + count = count > remaining1 ? remaining1 : count; + vec.resize(count); + it->readRaw(fmt, !vec.empty() ? (uchar*)&vec[0] : 0, count*sizeof(_Tp)); + } + private: + FileNodeIterator* it; + }; + +} // internal + +//! @endcond + +//! @relates cv::FileStorage +//! @{ + +template static inline +void write(FileStorage& fs, const _Tp& value) +{ + write(fs, String(), value); +} + +template<> inline +void write( FileStorage& fs, const int& value ) +{ + writeScalar(fs, value); +} + +template<> inline +void write( FileStorage& fs, const float& value ) +{ + writeScalar(fs, value); +} + +template<> inline +void write( FileStorage& fs, const double& value ) +{ + writeScalar(fs, value); +} + +template<> inline +void write( FileStorage& fs, const String& value ) +{ + writeScalar(fs, value); +} + +template static inline +void write(FileStorage& fs, const Point_<_Tp>& pt ) +{ + write(fs, pt.x); + write(fs, pt.y); +} + +template static inline +void write(FileStorage& fs, const Point3_<_Tp>& pt ) +{ + write(fs, pt.x); + write(fs, pt.y); + write(fs, pt.z); +} + +template static inline +void write(FileStorage& fs, const Size_<_Tp>& sz ) +{ + write(fs, sz.width); + write(fs, sz.height); +} + +template static inline +void write(FileStorage& fs, const Complex<_Tp>& c ) +{ + write(fs, c.re); + write(fs, c.im); +} + +template static inline +void write(FileStorage& fs, const Rect_<_Tp>& r ) +{ + write(fs, r.x); + write(fs, r.y); + write(fs, r.width); + write(fs, r.height); +} + +template static inline +void write(FileStorage& fs, const Vec<_Tp, cn>& v ) +{ + for(int i = 0; i < cn; i++) + write(fs, v.val[i]); +} + +template static inline +void write(FileStorage& fs, const Matx<_Tp, m, n>& x ) +{ + write(fs, Mat(x)); // write as a Mat class +} + +template static inline +void write(FileStorage& fs, const Scalar_<_Tp>& s ) +{ + write(fs, s.val[0]); + write(fs, s.val[1]); + write(fs, s.val[2]); + write(fs, s.val[3]); +} + +static inline +void write(FileStorage& fs, const Range& r ) +{ + write(fs, r.start); + write(fs, r.end); +} + +template static inline +void write( FileStorage& fs, const std::vector<_Tp>& vec ) +{ + cv::internal::VecWriterProxy<_Tp, traits::SafeFmt<_Tp>::fmt != 0> w(&fs); + w(vec); +} + +template static inline +void write(FileStorage& fs, const String& name, const Point_<_Tp>& pt ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, pt); +} + +template static inline +void write(FileStorage& fs, const String& name, const Point3_<_Tp>& pt ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, pt); +} + +template static inline +void write(FileStorage& fs, const String& name, const Size_<_Tp>& sz ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, sz); +} + +template static inline +void write(FileStorage& fs, const String& name, const Complex<_Tp>& c ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, c); +} + +template static inline +void write(FileStorage& fs, const String& name, const Rect_<_Tp>& r ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, r); +} + +template static inline +void write(FileStorage& fs, const String& name, const Vec<_Tp, cn>& v ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, v); +} + +template static inline +void write(FileStorage& fs, const String& name, const Matx<_Tp, m, n>& x ) +{ + write(fs, name, Mat(x)); // write as a Mat class +} + +template static inline +void write(FileStorage& fs, const String& name, const Scalar_<_Tp>& s ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, s); +} + +static inline +void write(FileStorage& fs, const String& name, const Range& r ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, r); +} + +static inline +void write(FileStorage& fs, const String& name, const KeyPoint& kpt) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, kpt.pt.x); + write(fs, kpt.pt.y); + write(fs, kpt.size); + write(fs, kpt.angle); + write(fs, kpt.response); + write(fs, kpt.octave); + write(fs, kpt.class_id); +} + +static inline +void write(FileStorage& fs, const String& name, const DMatch& m) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+FileNode::FLOW); + write(fs, m.queryIdx); + write(fs, m.trainIdx); + write(fs, m.imgIdx); + write(fs, m.distance); +} + +template::value >::type* = nullptr> +static inline void write( FileStorage& fs, const String& name, const _Tp& val ) +{ + write(fs, name, static_cast(val)); +} + +template static inline +void write( FileStorage& fs, const String& name, const std::vector<_Tp>& vec ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ+(traits::SafeFmt<_Tp>::fmt != 0 ? FileNode::FLOW : 0)); + write(fs, vec); +} + +template static inline +void write( FileStorage& fs, const String& name, const std::vector< std::vector<_Tp> >& vec ) +{ + cv::internal::WriteStructContext ws(fs, name, FileNode::SEQ); + for(size_t i = 0; i < vec.size(); i++) + { + cv::internal::WriteStructContext ws_(fs, name, FileNode::SEQ+(traits::SafeFmt<_Tp>::fmt != 0 ? FileNode::FLOW : 0)); + write(fs, vec[i]); + } +} + +#ifdef CV__LEGACY_PERSISTENCE +// This code is not needed anymore, but it is preserved here to keep source compatibility +// Implementation is similar to templates instantiations +static inline void write(FileStorage& fs, const KeyPoint& kpt) { write(fs, String(), kpt); } +static inline void write(FileStorage& fs, const DMatch& m) { write(fs, String(), m); } +static inline void write(FileStorage& fs, const std::vector& vec) +{ + cv::internal::VecWriterProxy w(&fs); + w(vec); +} +static inline void write(FileStorage& fs, const std::vector& vec) +{ + cv::internal::VecWriterProxy w(&fs); + w(vec); + +} +#endif + +//! @} FileStorage + +//! @relates cv::FileNode +//! @{ + +static inline +void read(const FileNode& node, bool& value, bool default_value) +{ + int temp; + read(node, temp, (int)default_value); + value = temp != 0; +} + +static inline +void read(const FileNode& node, uchar& value, uchar default_value) +{ + int temp; + read(node, temp, (int)default_value); + value = saturate_cast(temp); +} + +static inline +void read(const FileNode& node, schar& value, schar default_value) +{ + int temp; + read(node, temp, (int)default_value); + value = saturate_cast(temp); +} + +static inline +void read(const FileNode& node, ushort& value, ushort default_value) +{ + int temp; + read(node, temp, (int)default_value); + value = saturate_cast(temp); +} + +static inline +void read(const FileNode& node, short& value, short default_value) +{ + int temp; + read(node, temp, (int)default_value); + value = saturate_cast(temp); +} + +template static inline +void read( FileNodeIterator& it, std::vector<_Tp>& vec, size_t maxCount = (size_t)INT_MAX ) +{ + cv::internal::VecReaderProxy<_Tp, traits::SafeFmt<_Tp>::fmt != 0> r(&it); + r(vec, maxCount); +} + +template::value >::type* = nullptr> +static inline void read(const FileNode& node, _Tp& value, const _Tp& default_value = static_cast<_Tp>(0)) +{ + int temp; + read(node, temp, static_cast(default_value)); + value = static_cast<_Tp>(temp); +} + +template static inline +void read( const FileNode& node, std::vector<_Tp>& vec, const std::vector<_Tp>& default_value = std::vector<_Tp>() ) +{ + if(node.empty()) + vec = default_value; + else + { + FileNodeIterator it = node.begin(); + read( it, vec ); + } +} + +static inline +void read( const FileNode& node, std::vector& vec, const std::vector& default_value ) +{ + if(node.empty()) + vec = default_value; + else + read(node, vec); +} + +static inline +void read( const FileNode& node, std::vector& vec, const std::vector& default_value ) +{ + if(node.empty()) + vec = default_value; + else + read(node, vec); +} + +//! @} FileNode + +//! @relates cv::FileStorage +//! @{ + +/** @brief Writes data to a file storage. + */ +template static inline +FileStorage& operator << (FileStorage& fs, const _Tp& value) +{ + if( !fs.isOpened() ) + return fs; + if( fs.state == FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP ) + CV_Error( Error::StsError, "No element name has been given" ); + write( fs, fs.elname, value ); + if( fs.state & FileStorage::INSIDE_MAP ) + fs.state = FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP; + return fs; +} + +/** @brief Writes data to a file storage. + */ +static inline +FileStorage& operator << (FileStorage& fs, const char* str) +{ + return (fs << String(str)); +} + +/** @brief Writes data to a file storage. + */ +static inline +FileStorage& operator << (FileStorage& fs, char* value) +{ + return (fs << String(value)); +} + +//! @} FileStorage + +//! @relates cv::FileNodeIterator +//! @{ + +/** @brief Reads data from a file storage. + */ +template static inline +FileNodeIterator& operator >> (FileNodeIterator& it, _Tp& value) +{ + read( *it, value, _Tp()); + return ++it; +} + +/** @brief Reads data from a file storage. + */ +template static inline +FileNodeIterator& operator >> (FileNodeIterator& it, std::vector<_Tp>& vec) +{ + cv::internal::VecReaderProxy<_Tp, traits::SafeFmt<_Tp>::fmt != 0> r(&it); + r(vec, (size_t)INT_MAX); + return it; +} + +//! @} FileNodeIterator + +//! @relates cv::FileNode +//! @{ + +/** @brief Reads data from a file storage. + */ +template static inline +void operator >> (const FileNode& n, _Tp& value) +{ + read( n, value, _Tp()); +} + +/** @brief Reads data from a file storage. + */ +template static inline +void operator >> (const FileNode& n, std::vector<_Tp>& vec) +{ + FileNodeIterator it = n.begin(); + it >> vec; +} + +/** @brief Reads KeyPoint from a file storage. +*/ +//It needs special handling because it contains two types of fields, int & float. +static inline +void operator >> (const FileNode& n, KeyPoint& kpt) +{ + FileNodeIterator it = n.begin(); + it >> kpt.pt.x >> kpt.pt.y >> kpt.size >> kpt.angle >> kpt.response >> kpt.octave >> kpt.class_id; +} + +#ifdef CV__LEGACY_PERSISTENCE +static inline +void operator >> (const FileNode& n, std::vector& vec) +{ + read(n, vec); +} +static inline +void operator >> (const FileNode& n, std::vector& vec) +{ + read(n, vec); +} +#endif + +/** @brief Reads DMatch from a file storage. +*/ +//It needs special handling because it contains two types of fields, int & float. +static inline +void operator >> (const FileNode& n, DMatch& m) +{ + FileNodeIterator it = n.begin(); + it >> m.queryIdx >> m.trainIdx >> m.imgIdx >> m.distance; +} + +//! @} FileNode + +//! @relates cv::FileNodeIterator +//! @{ + +CV_EXPORTS bool operator == (const FileNodeIterator& it1, const FileNodeIterator& it2); +CV_EXPORTS bool operator != (const FileNodeIterator& it1, const FileNodeIterator& it2); + +static inline +ptrdiff_t operator - (const FileNodeIterator& it1, const FileNodeIterator& it2) +{ + return it2.remaining() - it1.remaining(); +} + +static inline +bool operator < (const FileNodeIterator& it1, const FileNodeIterator& it2) +{ + return it1.remaining() > it2.remaining(); +} + +//! @} FileNodeIterator + +} // cv + +#endif // OPENCV_CORE_PERSISTENCE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/saturate.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/saturate.hpp new file mode 100644 index 0000000..ced5e66 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/saturate.hpp @@ -0,0 +1,181 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2014, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_SATURATE_HPP +#define OPENCV_CORE_SATURATE_HPP + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/fast_math.hpp" + +namespace cv +{ + +//! @addtogroup core_utils +//! @{ + +/////////////// saturate_cast (used in image & signal processing) /////////////////// + +/** @brief Template function for accurate conversion from one primitive type to another. + + The function saturate_cast resembles the standard C++ cast operations, such as static_cast\() + and others. It perform an efficient and accurate conversion from one primitive type to another + (see the introduction chapter). saturate in the name means that when the input value v is out of the + range of the target type, the result is not formed just by taking low bits of the input, but instead + the value is clipped. For example: + @code + uchar a = saturate_cast(-100); // a = 0 (UCHAR_MIN) + short b = saturate_cast(33333.33333); // b = 32767 (SHRT_MAX) + @endcode + Such clipping is done when the target type is unsigned char , signed char , unsigned short or + signed short . For 32-bit integers, no clipping is done. + + When the parameter is a floating-point value and the target type is an integer (8-, 16- or 32-bit), + the floating-point value is first rounded to the nearest integer and then clipped if needed (when + the target type is 8- or 16-bit). + + This operation is used in the simplest or most complex image processing functions in OpenCV. + + @param v Function parameter. + @sa add, subtract, multiply, divide, Mat::convertTo + */ +template static inline _Tp saturate_cast(uchar v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(schar v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(ushort v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(short v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(unsigned v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(int v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(float v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(double v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(int64 v) { return _Tp(v); } +/** @overload */ +template static inline _Tp saturate_cast(uint64 v) { return _Tp(v); } + +template<> inline uchar saturate_cast(schar v) { return (uchar)std::max((int)v, 0); } +template<> inline uchar saturate_cast(ushort v) { return (uchar)std::min((unsigned)v, (unsigned)UCHAR_MAX); } +template<> inline uchar saturate_cast(int v) { return (uchar)((unsigned)v <= UCHAR_MAX ? v : v > 0 ? UCHAR_MAX : 0); } +template<> inline uchar saturate_cast(short v) { return saturate_cast((int)v); } +template<> inline uchar saturate_cast(unsigned v) { return (uchar)std::min(v, (unsigned)UCHAR_MAX); } +template<> inline uchar saturate_cast(float v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline uchar saturate_cast(double v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline uchar saturate_cast(int64 v) { return (uchar)((uint64)v <= (uint64)UCHAR_MAX ? v : v > 0 ? UCHAR_MAX : 0); } +template<> inline uchar saturate_cast(uint64 v) { return (uchar)std::min(v, (uint64)UCHAR_MAX); } + +template<> inline schar saturate_cast(uchar v) { return (schar)std::min((int)v, SCHAR_MAX); } +template<> inline schar saturate_cast(ushort v) { return (schar)std::min((unsigned)v, (unsigned)SCHAR_MAX); } +template<> inline schar saturate_cast(int v) { return (schar)((unsigned)(v-SCHAR_MIN) <= (unsigned)UCHAR_MAX ? v : v > 0 ? SCHAR_MAX : SCHAR_MIN); } +template<> inline schar saturate_cast(short v) { return saturate_cast((int)v); } +template<> inline schar saturate_cast(unsigned v) { return (schar)std::min(v, (unsigned)SCHAR_MAX); } +template<> inline schar saturate_cast(float v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline schar saturate_cast(double v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline schar saturate_cast(int64 v) { return (schar)((uint64)((int64)v-SCHAR_MIN) <= (uint64)UCHAR_MAX ? v : v > 0 ? SCHAR_MAX : SCHAR_MIN); } +template<> inline schar saturate_cast(uint64 v) { return (schar)std::min(v, (uint64)SCHAR_MAX); } + +template<> inline ushort saturate_cast(schar v) { return (ushort)std::max((int)v, 0); } +template<> inline ushort saturate_cast(short v) { return (ushort)std::max((int)v, 0); } +template<> inline ushort saturate_cast(int v) { return (ushort)((unsigned)v <= (unsigned)USHRT_MAX ? v : v > 0 ? USHRT_MAX : 0); } +template<> inline ushort saturate_cast(unsigned v) { return (ushort)std::min(v, (unsigned)USHRT_MAX); } +template<> inline ushort saturate_cast(float v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline ushort saturate_cast(double v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline ushort saturate_cast(int64 v) { return (ushort)((uint64)v <= (uint64)USHRT_MAX ? v : v > 0 ? USHRT_MAX : 0); } +template<> inline ushort saturate_cast(uint64 v) { return (ushort)std::min(v, (uint64)USHRT_MAX); } + +template<> inline short saturate_cast(ushort v) { return (short)std::min((int)v, SHRT_MAX); } +template<> inline short saturate_cast(int v) { return (short)((unsigned)(v - SHRT_MIN) <= (unsigned)USHRT_MAX ? v : v > 0 ? SHRT_MAX : SHRT_MIN); } +template<> inline short saturate_cast(unsigned v) { return (short)std::min(v, (unsigned)SHRT_MAX); } +template<> inline short saturate_cast(float v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline short saturate_cast(double v) { int iv = cvRound(v); return saturate_cast(iv); } +template<> inline short saturate_cast(int64 v) { return (short)((uint64)((int64)v - SHRT_MIN) <= (uint64)USHRT_MAX ? v : v > 0 ? SHRT_MAX : SHRT_MIN); } +template<> inline short saturate_cast(uint64 v) { return (short)std::min(v, (uint64)SHRT_MAX); } + +template<> inline int saturate_cast(unsigned v) { return (int)std::min(v, (unsigned)INT_MAX); } +template<> inline int saturate_cast(int64 v) { return (int)((uint64)(v - INT_MIN) <= (uint64)UINT_MAX ? v : v > 0 ? INT_MAX : INT_MIN); } +template<> inline int saturate_cast(uint64 v) { return (int)std::min(v, (uint64)INT_MAX); } +template<> inline int saturate_cast(float v) { return cvRound(v); } +template<> inline int saturate_cast(double v) { return cvRound(v); } + +template<> inline unsigned saturate_cast(schar v) { return (unsigned)std::max(v, (schar)0); } +template<> inline unsigned saturate_cast(short v) { return (unsigned)std::max(v, (short)0); } +template<> inline unsigned saturate_cast(int v) { return (unsigned)std::max(v, (int)0); } +template<> inline unsigned saturate_cast(int64 v) { return (unsigned)((uint64)v <= (uint64)UINT_MAX ? v : v > 0 ? UINT_MAX : 0); } +template<> inline unsigned saturate_cast(uint64 v) { return (unsigned)std::min(v, (uint64)UINT_MAX); } +// we intentionally do not clip negative numbers, to make -1 become 0xffffffff etc. +template<> inline unsigned saturate_cast(float v) { return static_cast(cvRound(v)); } +template<> inline unsigned saturate_cast(double v) { return static_cast(cvRound(v)); } + +template<> inline uint64 saturate_cast(schar v) { return (uint64)std::max(v, (schar)0); } +template<> inline uint64 saturate_cast(short v) { return (uint64)std::max(v, (short)0); } +template<> inline uint64 saturate_cast(int v) { return (uint64)std::max(v, (int)0); } +template<> inline uint64 saturate_cast(int64 v) { return (uint64)std::max(v, (int64)0); } + +template<> inline int64 saturate_cast(uint64 v) { return (int64)std::min(v, (uint64)LLONG_MAX); } + +/** @overload */ +template static inline _Tp saturate_cast(float16_t v) { return saturate_cast<_Tp>((float)v); } + +// in theory, we could use a LUT for 8u/8s->16f conversion, +// but with hardware support for FP32->FP16 conversion the current approach is preferable +template<> inline float16_t saturate_cast(uchar v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(schar v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(ushort v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(short v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(unsigned v){ return float16_t((float)v); } +template<> inline float16_t saturate_cast(int v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(uint64 v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(int64 v) { return float16_t((float)v); } +template<> inline float16_t saturate_cast(float v) { return float16_t(v); } +template<> inline float16_t saturate_cast(double v) { return float16_t((float)v); } + +//! @} + +} // cv + +#endif // OPENCV_CORE_SATURATE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/softfloat.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/softfloat.hpp new file mode 100644 index 0000000..5470980 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/softfloat.hpp @@ -0,0 +1,514 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +// This file is based on files from package issued with the following license: + +/*============================================================================ + +This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic +Package, Release 3c, by John R. Hauser. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions, and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================================*/ + +#pragma once +#ifndef softfloat_h +#define softfloat_h 1 + +#include "cvdef.h" + +namespace cv +{ + +/** @addtogroup core_utils_softfloat + + [SoftFloat](http://www.jhauser.us/arithmetic/SoftFloat.html) is a software implementation + of floating-point calculations according to IEEE 754 standard. + All calculations are done in integers, that's why they are machine-independent and bit-exact. + This library can be useful in accuracy-critical parts like look-up tables generation, tests, etc. + OpenCV contains a subset of SoftFloat partially rewritten to C++. + + ### Types + + There are two basic types: @ref softfloat and @ref softdouble. + These types are binary compatible with float and double types respectively + and support conversions to/from them. + Other types from original SoftFloat library like fp16 or fp128 were thrown away + as well as quiet/signaling NaN support, on-the-fly rounding mode switch + and exception flags (though exceptions can be implemented in the future). + + ### Operations + + Both types support the following: + - Construction from signed and unsigned 32-bit and 64 integers, + float/double or raw binary representation + - Conversions between each other, to float or double and to int + using @ref cvRound, @ref cvTrunc, @ref cvFloor, @ref cvCeil or a bunch of + saturate_cast functions + - Add, subtract, multiply, divide, remainder, square root, FMA with absolute precision + - Comparison operations + - Explicit sign, exponent and significand manipulation through get/set methods, + number state indicators (isInf, isNan, isSubnormal) + - Type-specific constants like eps, minimum/maximum value, best pi approximation, etc. + - min(), max(), abs(), exp(), log() and pow() functions + +*/ +//! @{ + +struct softfloat; +struct softdouble; + +struct CV_EXPORTS softfloat +{ +public: + /** @brief Default constructor */ + softfloat() { v = 0; } + /** @brief Copy constructor */ + softfloat( const softfloat& c) { v = c.v; } + /** @brief Assign constructor */ + softfloat& operator=( const softfloat& c ) + { + if(&c != this) v = c.v; + return *this; + } + /** @brief Construct from raw + + Builds new value from raw binary representation + */ + static const softfloat fromRaw( const uint32_t a ) { softfloat x; x.v = a; return x; } + + /** @brief Construct from integer */ + explicit softfloat( const uint32_t ); + explicit softfloat( const uint64_t ); + explicit softfloat( const int32_t ); + explicit softfloat( const int64_t ); + +#ifdef CV_INT32_T_IS_LONG_INT + // for platforms with int32_t = long int + explicit softfloat( const int a ) { *this = softfloat(static_cast(a)); } +#endif + + /** @brief Construct from float */ + explicit softfloat( const float a ) { Cv32suf s; s.f = a; v = s.u; } + + /** @brief Type casts */ + operator softdouble() const; + operator float() const { Cv32suf s; s.u = v; return s.f; } + + /** @brief Basic arithmetics */ + softfloat operator + (const softfloat&) const; + softfloat operator - (const softfloat&) const; + softfloat operator * (const softfloat&) const; + softfloat operator / (const softfloat&) const; + softfloat operator - () const { softfloat x; x.v = v ^ (1U << 31); return x; } + + /** @brief Remainder operator + + A quote from original SoftFloat manual: + + > The IEEE Standard remainder operation computes the value + > a - n * b, where n is the integer closest to a / b. + > If a / b is exactly halfway between two integers, n is the even integer + > closest to a / b. The IEEE Standard’s remainder operation is always exact and so requires no rounding. + > Depending on the relative magnitudes of the operands, the remainder functions + > can take considerably longer to execute than the other SoftFloat functions. + > This is an inherent characteristic of the remainder operation itself and is not a flaw + > in the SoftFloat implementation. + */ + softfloat operator % (const softfloat&) const; + + softfloat& operator += (const softfloat& a) { *this = *this + a; return *this; } + softfloat& operator -= (const softfloat& a) { *this = *this - a; return *this; } + softfloat& operator *= (const softfloat& a) { *this = *this * a; return *this; } + softfloat& operator /= (const softfloat& a) { *this = *this / a; return *this; } + softfloat& operator %= (const softfloat& a) { *this = *this % a; return *this; } + + /** @brief Comparison operations + + - Any operation with NaN produces false + + The only exception is when x is NaN: x != y for any y. + - Positive and negative zeros are equal + */ + bool operator == ( const softfloat& ) const; + bool operator != ( const softfloat& ) const; + bool operator > ( const softfloat& ) const; + bool operator >= ( const softfloat& ) const; + bool operator < ( const softfloat& ) const; + bool operator <= ( const softfloat& ) const; + + /** @brief NaN state indicator */ + inline bool isNaN() const { return (v & 0x7fffffff) > 0x7f800000; } + /** @brief Inf state indicator */ + inline bool isInf() const { return (v & 0x7fffffff) == 0x7f800000; } + /** @brief Subnormal number indicator */ + inline bool isSubnormal() const { return ((v >> 23) & 0xFF) == 0; } + + /** @brief Get sign bit */ + inline bool getSign() const { return (v >> 31) != 0; } + /** @brief Construct a copy with new sign bit */ + inline softfloat setSign(bool sign) const { softfloat x; x.v = (v & ((1U << 31) - 1)) | ((uint32_t)sign << 31); return x; } + /** @brief Get 0-based exponent */ + inline int getExp() const { return ((v >> 23) & 0xFF) - 127; } + /** @brief Construct a copy with new 0-based exponent */ + inline softfloat setExp(int e) const { softfloat x; x.v = (v & 0x807fffff) | (((e + 127) & 0xFF) << 23 ); return x; } + + /** @brief Get a fraction part + + Returns a number 1 <= x < 2 with the same significand + */ + inline softfloat getFrac() const + { + uint_fast32_t vv = (v & 0x007fffff) | (127 << 23); + return softfloat::fromRaw(vv); + } + /** @brief Construct a copy with provided significand + + Constructs a copy of a number with significand taken from parameter + */ + inline softfloat setFrac(const softfloat& s) const + { + softfloat x; + x.v = (v & 0xff800000) | (s.v & 0x007fffff); + return x; + } + + /** @brief Zero constant */ + static softfloat zero() { return softfloat::fromRaw( 0 ); } + /** @brief Positive infinity constant */ + static softfloat inf() { return softfloat::fromRaw( 0xFF << 23 ); } + /** @brief Default NaN constant */ + static softfloat nan() { return softfloat::fromRaw( 0x7fffffff ); } + /** @brief One constant */ + static softfloat one() { return softfloat::fromRaw( 127 << 23 ); } + /** @brief Smallest normalized value */ + static softfloat min() { return softfloat::fromRaw( 0x01 << 23 ); } + /** @brief Difference between 1 and next representable value */ + static softfloat eps() { return softfloat::fromRaw( (127 - 23) << 23 ); } + /** @brief Biggest finite value */ + static softfloat max() { return softfloat::fromRaw( (0xFF << 23) - 1 ); } + /** @brief Correct pi approximation */ + static softfloat pi() { return softfloat::fromRaw( 0x40490fdb ); } + + uint32_t v; +}; + +/*---------------------------------------------------------------------------- +*----------------------------------------------------------------------------*/ + +struct CV_EXPORTS softdouble +{ +public: + /** @brief Default constructor */ + softdouble() : v(0) { } + /** @brief Copy constructor */ + softdouble( const softdouble& c) { v = c.v; } + /** @brief Assign constructor */ + softdouble& operator=( const softdouble& c ) + { + if(&c != this) v = c.v; + return *this; + } + /** @brief Construct from raw + + Builds new value from raw binary representation + */ + static softdouble fromRaw( const uint64_t a ) { softdouble x; x.v = a; return x; } + + /** @brief Construct from integer */ + explicit softdouble( const uint32_t ); + explicit softdouble( const uint64_t ); + explicit softdouble( const int32_t ); + explicit softdouble( const int64_t ); + +#ifdef CV_INT32_T_IS_LONG_INT + // for platforms with int32_t = long int + explicit softdouble( const int a ) { *this = softdouble(static_cast(a)); } +#endif + + /** @brief Construct from double */ + explicit softdouble( const double a ) { Cv64suf s; s.f = a; v = s.u; } + + /** @brief Type casts */ + operator softfloat() const; + operator double() const { Cv64suf s; s.u = v; return s.f; } + + /** @brief Basic arithmetics */ + softdouble operator + (const softdouble&) const; + softdouble operator - (const softdouble&) const; + softdouble operator * (const softdouble&) const; + softdouble operator / (const softdouble&) const; + softdouble operator - () const { softdouble x; x.v = v ^ (1ULL << 63); return x; } + + /** @brief Remainder operator + + A quote from original SoftFloat manual: + + > The IEEE Standard remainder operation computes the value + > a - n * b, where n is the integer closest to a / b. + > If a / b is exactly halfway between two integers, n is the even integer + > closest to a / b. The IEEE Standard’s remainder operation is always exact and so requires no rounding. + > Depending on the relative magnitudes of the operands, the remainder functions + > can take considerably longer to execute than the other SoftFloat functions. + > This is an inherent characteristic of the remainder operation itself and is not a flaw + > in the SoftFloat implementation. + */ + softdouble operator % (const softdouble&) const; + + softdouble& operator += (const softdouble& a) { *this = *this + a; return *this; } + softdouble& operator -= (const softdouble& a) { *this = *this - a; return *this; } + softdouble& operator *= (const softdouble& a) { *this = *this * a; return *this; } + softdouble& operator /= (const softdouble& a) { *this = *this / a; return *this; } + softdouble& operator %= (const softdouble& a) { *this = *this % a; return *this; } + + /** @brief Comparison operations + + - Any operation with NaN produces false + + The only exception is when x is NaN: x != y for any y. + - Positive and negative zeros are equal + */ + bool operator == ( const softdouble& ) const; + bool operator != ( const softdouble& ) const; + bool operator > ( const softdouble& ) const; + bool operator >= ( const softdouble& ) const; + bool operator < ( const softdouble& ) const; + bool operator <= ( const softdouble& ) const; + + /** @brief NaN state indicator */ + inline bool isNaN() const { return (v & 0x7fffffffffffffff) > 0x7ff0000000000000; } + /** @brief Inf state indicator */ + inline bool isInf() const { return (v & 0x7fffffffffffffff) == 0x7ff0000000000000; } + /** @brief Subnormal number indicator */ + inline bool isSubnormal() const { return ((v >> 52) & 0x7FF) == 0; } + + /** @brief Get sign bit */ + inline bool getSign() const { return (v >> 63) != 0; } + /** @brief Construct a copy with new sign bit */ + softdouble setSign(bool sign) const { softdouble x; x.v = (v & ((1ULL << 63) - 1)) | ((uint_fast64_t)(sign) << 63); return x; } + /** @brief Get 0-based exponent */ + inline int getExp() const { return ((v >> 52) & 0x7FF) - 1023; } + /** @brief Construct a copy with new 0-based exponent */ + inline softdouble setExp(int e) const + { + softdouble x; + x.v = (v & 0x800FFFFFFFFFFFFF) | ((uint_fast64_t)((e + 1023) & 0x7FF) << 52); + return x; + } + + /** @brief Get a fraction part + + Returns a number 1 <= x < 2 with the same significand + */ + inline softdouble getFrac() const + { + uint_fast64_t vv = (v & 0x000FFFFFFFFFFFFF) | ((uint_fast64_t)(1023) << 52); + return softdouble::fromRaw(vv); + } + /** @brief Construct a copy with provided significand + + Constructs a copy of a number with significand taken from parameter + */ + inline softdouble setFrac(const softdouble& s) const + { + softdouble x; + x.v = (v & 0xFFF0000000000000) | (s.v & 0x000FFFFFFFFFFFFF); + return x; + } + + /** @brief Zero constant */ + static softdouble zero() { return softdouble::fromRaw( 0 ); } + /** @brief Positive infinity constant */ + static softdouble inf() { return softdouble::fromRaw( (uint_fast64_t)(0x7FF) << 52 ); } + /** @brief Default NaN constant */ + static softdouble nan() { return softdouble::fromRaw( CV_BIG_INT(0x7FFFFFFFFFFFFFFF) ); } + /** @brief One constant */ + static softdouble one() { return softdouble::fromRaw( (uint_fast64_t)( 1023) << 52 ); } + /** @brief Smallest normalized value */ + static softdouble min() { return softdouble::fromRaw( (uint_fast64_t)( 0x01) << 52 ); } + /** @brief Difference between 1 and next representable value */ + static softdouble eps() { return softdouble::fromRaw( (uint_fast64_t)( 1023 - 52 ) << 52 ); } + /** @brief Biggest finite value */ + static softdouble max() { return softdouble::fromRaw( ((uint_fast64_t)(0x7FF) << 52) - 1 ); } + /** @brief Correct pi approximation */ + static softdouble pi() { return softdouble::fromRaw( CV_BIG_INT(0x400921FB54442D18) ); } + + uint64_t v; +}; + +/*---------------------------------------------------------------------------- +*----------------------------------------------------------------------------*/ + +/** @brief Fused Multiplication and Addition + +Computes (a*b)+c with single rounding +*/ +CV_EXPORTS softfloat mulAdd( const softfloat& a, const softfloat& b, const softfloat & c); +CV_EXPORTS softdouble mulAdd( const softdouble& a, const softdouble& b, const softdouble& c); + +/** @brief Square root */ +CV_EXPORTS softfloat sqrt( const softfloat& a ); +CV_EXPORTS softdouble sqrt( const softdouble& a ); +} + +/*---------------------------------------------------------------------------- +| Ported from OpenCV and added for usability +*----------------------------------------------------------------------------*/ + +/** @brief Truncates number to integer with minimum magnitude */ +CV_EXPORTS int cvTrunc(const cv::softfloat& a); +CV_EXPORTS int cvTrunc(const cv::softdouble& a); + +/** @brief Rounds a number to nearest even integer */ +CV_EXPORTS int cvRound(const cv::softfloat& a); +CV_EXPORTS int cvRound(const cv::softdouble& a); + +/** @brief Rounds a number to nearest even long long integer */ +CV_EXPORTS int64_t cvRound64(const cv::softdouble& a); + +/** @brief Rounds a number down to integer */ +CV_EXPORTS int cvFloor(const cv::softfloat& a); +CV_EXPORTS int cvFloor(const cv::softdouble& a); + +/** @brief Rounds number up to integer */ +CV_EXPORTS int cvCeil(const cv::softfloat& a); +CV_EXPORTS int cvCeil(const cv::softdouble& a); + +namespace cv +{ +/** @brief Saturate casts */ +template static inline _Tp saturate_cast(softfloat a) { return _Tp(a); } +template static inline _Tp saturate_cast(softdouble a) { return _Tp(a); } + +template<> inline uchar saturate_cast(softfloat a) { return (uchar)std::max(std::min(cvRound(a), (int)UCHAR_MAX), 0); } +template<> inline uchar saturate_cast(softdouble a) { return (uchar)std::max(std::min(cvRound(a), (int)UCHAR_MAX), 0); } + +template<> inline schar saturate_cast(softfloat a) { return (schar)std::min(std::max(cvRound(a), (int)SCHAR_MIN), (int)SCHAR_MAX); } +template<> inline schar saturate_cast(softdouble a) { return (schar)std::min(std::max(cvRound(a), (int)SCHAR_MIN), (int)SCHAR_MAX); } + +template<> inline ushort saturate_cast(softfloat a) { return (ushort)std::max(std::min(cvRound(a), (int)USHRT_MAX), 0); } +template<> inline ushort saturate_cast(softdouble a) { return (ushort)std::max(std::min(cvRound(a), (int)USHRT_MAX), 0); } + +template<> inline short saturate_cast(softfloat a) { return (short)std::min(std::max(cvRound(a), (int)SHRT_MIN), (int)SHRT_MAX); } +template<> inline short saturate_cast(softdouble a) { return (short)std::min(std::max(cvRound(a), (int)SHRT_MIN), (int)SHRT_MAX); } + +template<> inline int saturate_cast(softfloat a) { return cvRound(a); } +template<> inline int saturate_cast(softdouble a) { return cvRound(a); } + +template<> inline int64_t saturate_cast(softfloat a) { return cvRound(a); } +template<> inline int64_t saturate_cast(softdouble a) { return cvRound64(a); } + +/** @brief Saturate cast to unsigned integer and unsigned long long integer +We intentionally do not clip negative numbers, to make -1 become 0xffffffff etc. +*/ +template<> inline unsigned saturate_cast(softfloat a) { return cvRound(a); } +template<> inline unsigned saturate_cast(softdouble a) { return cvRound(a); } + +template<> inline uint64_t saturate_cast(softfloat a) { return cvRound(a); } +template<> inline uint64_t saturate_cast(softdouble a) { return cvRound64(a); } + +/** @brief Min and Max functions */ +inline softfloat min(const softfloat& a, const softfloat& b) { return (a > b) ? b : a; } +inline softdouble min(const softdouble& a, const softdouble& b) { return (a > b) ? b : a; } + +inline softfloat max(const softfloat& a, const softfloat& b) { return (a > b) ? a : b; } +inline softdouble max(const softdouble& a, const softdouble& b) { return (a > b) ? a : b; } + +/** @brief Absolute value */ +inline softfloat abs( softfloat a) { softfloat x; x.v = a.v & ((1U << 31) - 1); return x; } +inline softdouble abs( softdouble a) { softdouble x; x.v = a.v & ((1ULL << 63) - 1); return x; } + +/** @brief Exponent + +Special cases: +- exp(NaN) is NaN +- exp(-Inf) == 0 +- exp(+Inf) == +Inf +*/ +CV_EXPORTS softfloat exp( const softfloat& a); +CV_EXPORTS softdouble exp( const softdouble& a); + +/** @brief Natural logarithm + +Special cases: +- log(NaN), log(x < 0) are NaN +- log(0) == -Inf +*/ +CV_EXPORTS softfloat log( const softfloat& a ); +CV_EXPORTS softdouble log( const softdouble& a ); + +/** @brief Raising to the power + +Special cases: +- x**NaN is NaN for any x +- ( |x| == 1 )**Inf is NaN +- ( |x| > 1 )**+Inf or ( |x| < 1 )**-Inf is +Inf +- ( |x| > 1 )**-Inf or ( |x| < 1 )**+Inf is 0 +- x ** 0 == 1 for any x +- x ** 1 == 1 for any x +- NaN ** y is NaN for any other y +- Inf**(y < 0) == 0 +- Inf ** y is +Inf for any other y +- (x < 0)**y is NaN for any other y if x can't be correctly rounded to integer +- 0 ** 0 == 1 +- 0 ** (y < 0) is +Inf +- 0 ** (y > 0) is 0 +*/ +CV_EXPORTS softfloat pow( const softfloat& a, const softfloat& b); +CV_EXPORTS softdouble pow( const softdouble& a, const softdouble& b); + +/** @brief Cube root + +Special cases: +- cbrt(NaN) is NaN +- cbrt(+/-Inf) is +/-Inf +*/ +CV_EXPORTS softfloat cbrt( const softfloat& a ); + +/** @brief Sine + +Special cases: +- sin(Inf) or sin(NaN) is NaN +- sin(x) == x when sin(x) is close to zero +*/ +CV_EXPORTS softdouble sin( const softdouble& a ); + +/** @brief Cosine + * +Special cases: +- cos(Inf) or cos(NaN) is NaN +- cos(x) == +/- 1 when cos(x) is close to +/- 1 +*/ +CV_EXPORTS softdouble cos( const softdouble& a ); + +} + +//! @} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/sse_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/sse_utils.hpp new file mode 100644 index 0000000..0906583 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/sse_utils.hpp @@ -0,0 +1,652 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_SSE_UTILS_HPP +#define OPENCV_CORE_SSE_UTILS_HPP + +#ifndef __cplusplus +# error sse_utils.hpp header must be compiled as C++ +#endif + +#include "opencv2/core/cvdef.h" + +//! @addtogroup core_utils_sse +//! @{ + +#if CV_SSE2 + +inline void _mm_deinterleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi8(v_r0, v_g0); + __m128i layer1_chunk1 = _mm_unpackhi_epi8(v_r0, v_g0); + __m128i layer1_chunk2 = _mm_unpacklo_epi8(v_r1, v_g1); + __m128i layer1_chunk3 = _mm_unpackhi_epi8(v_r1, v_g1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi8(layer1_chunk0, layer1_chunk2); + __m128i layer2_chunk1 = _mm_unpackhi_epi8(layer1_chunk0, layer1_chunk2); + __m128i layer2_chunk2 = _mm_unpacklo_epi8(layer1_chunk1, layer1_chunk3); + __m128i layer2_chunk3 = _mm_unpackhi_epi8(layer1_chunk1, layer1_chunk3); + + __m128i layer3_chunk0 = _mm_unpacklo_epi8(layer2_chunk0, layer2_chunk2); + __m128i layer3_chunk1 = _mm_unpackhi_epi8(layer2_chunk0, layer2_chunk2); + __m128i layer3_chunk2 = _mm_unpacklo_epi8(layer2_chunk1, layer2_chunk3); + __m128i layer3_chunk3 = _mm_unpackhi_epi8(layer2_chunk1, layer2_chunk3); + + __m128i layer4_chunk0 = _mm_unpacklo_epi8(layer3_chunk0, layer3_chunk2); + __m128i layer4_chunk1 = _mm_unpackhi_epi8(layer3_chunk0, layer3_chunk2); + __m128i layer4_chunk2 = _mm_unpacklo_epi8(layer3_chunk1, layer3_chunk3); + __m128i layer4_chunk3 = _mm_unpackhi_epi8(layer3_chunk1, layer3_chunk3); + + v_r0 = _mm_unpacklo_epi8(layer4_chunk0, layer4_chunk2); + v_r1 = _mm_unpackhi_epi8(layer4_chunk0, layer4_chunk2); + v_g0 = _mm_unpacklo_epi8(layer4_chunk1, layer4_chunk3); + v_g1 = _mm_unpackhi_epi8(layer4_chunk1, layer4_chunk3); +} + +inline void _mm_deinterleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, + __m128i & v_g1, __m128i & v_b0, __m128i & v_b1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi8(v_r0, v_g1); + __m128i layer1_chunk1 = _mm_unpackhi_epi8(v_r0, v_g1); + __m128i layer1_chunk2 = _mm_unpacklo_epi8(v_r1, v_b0); + __m128i layer1_chunk3 = _mm_unpackhi_epi8(v_r1, v_b0); + __m128i layer1_chunk4 = _mm_unpacklo_epi8(v_g0, v_b1); + __m128i layer1_chunk5 = _mm_unpackhi_epi8(v_g0, v_b1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi8(layer1_chunk0, layer1_chunk3); + __m128i layer2_chunk1 = _mm_unpackhi_epi8(layer1_chunk0, layer1_chunk3); + __m128i layer2_chunk2 = _mm_unpacklo_epi8(layer1_chunk1, layer1_chunk4); + __m128i layer2_chunk3 = _mm_unpackhi_epi8(layer1_chunk1, layer1_chunk4); + __m128i layer2_chunk4 = _mm_unpacklo_epi8(layer1_chunk2, layer1_chunk5); + __m128i layer2_chunk5 = _mm_unpackhi_epi8(layer1_chunk2, layer1_chunk5); + + __m128i layer3_chunk0 = _mm_unpacklo_epi8(layer2_chunk0, layer2_chunk3); + __m128i layer3_chunk1 = _mm_unpackhi_epi8(layer2_chunk0, layer2_chunk3); + __m128i layer3_chunk2 = _mm_unpacklo_epi8(layer2_chunk1, layer2_chunk4); + __m128i layer3_chunk3 = _mm_unpackhi_epi8(layer2_chunk1, layer2_chunk4); + __m128i layer3_chunk4 = _mm_unpacklo_epi8(layer2_chunk2, layer2_chunk5); + __m128i layer3_chunk5 = _mm_unpackhi_epi8(layer2_chunk2, layer2_chunk5); + + __m128i layer4_chunk0 = _mm_unpacklo_epi8(layer3_chunk0, layer3_chunk3); + __m128i layer4_chunk1 = _mm_unpackhi_epi8(layer3_chunk0, layer3_chunk3); + __m128i layer4_chunk2 = _mm_unpacklo_epi8(layer3_chunk1, layer3_chunk4); + __m128i layer4_chunk3 = _mm_unpackhi_epi8(layer3_chunk1, layer3_chunk4); + __m128i layer4_chunk4 = _mm_unpacklo_epi8(layer3_chunk2, layer3_chunk5); + __m128i layer4_chunk5 = _mm_unpackhi_epi8(layer3_chunk2, layer3_chunk5); + + v_r0 = _mm_unpacklo_epi8(layer4_chunk0, layer4_chunk3); + v_r1 = _mm_unpackhi_epi8(layer4_chunk0, layer4_chunk3); + v_g0 = _mm_unpacklo_epi8(layer4_chunk1, layer4_chunk4); + v_g1 = _mm_unpackhi_epi8(layer4_chunk1, layer4_chunk4); + v_b0 = _mm_unpacklo_epi8(layer4_chunk2, layer4_chunk5); + v_b1 = _mm_unpackhi_epi8(layer4_chunk2, layer4_chunk5); +} + +inline void _mm_deinterleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1, + __m128i & v_b0, __m128i & v_b1, __m128i & v_a0, __m128i & v_a1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi8(v_r0, v_b0); + __m128i layer1_chunk1 = _mm_unpackhi_epi8(v_r0, v_b0); + __m128i layer1_chunk2 = _mm_unpacklo_epi8(v_r1, v_b1); + __m128i layer1_chunk3 = _mm_unpackhi_epi8(v_r1, v_b1); + __m128i layer1_chunk4 = _mm_unpacklo_epi8(v_g0, v_a0); + __m128i layer1_chunk5 = _mm_unpackhi_epi8(v_g0, v_a0); + __m128i layer1_chunk6 = _mm_unpacklo_epi8(v_g1, v_a1); + __m128i layer1_chunk7 = _mm_unpackhi_epi8(v_g1, v_a1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi8(layer1_chunk0, layer1_chunk4); + __m128i layer2_chunk1 = _mm_unpackhi_epi8(layer1_chunk0, layer1_chunk4); + __m128i layer2_chunk2 = _mm_unpacklo_epi8(layer1_chunk1, layer1_chunk5); + __m128i layer2_chunk3 = _mm_unpackhi_epi8(layer1_chunk1, layer1_chunk5); + __m128i layer2_chunk4 = _mm_unpacklo_epi8(layer1_chunk2, layer1_chunk6); + __m128i layer2_chunk5 = _mm_unpackhi_epi8(layer1_chunk2, layer1_chunk6); + __m128i layer2_chunk6 = _mm_unpacklo_epi8(layer1_chunk3, layer1_chunk7); + __m128i layer2_chunk7 = _mm_unpackhi_epi8(layer1_chunk3, layer1_chunk7); + + __m128i layer3_chunk0 = _mm_unpacklo_epi8(layer2_chunk0, layer2_chunk4); + __m128i layer3_chunk1 = _mm_unpackhi_epi8(layer2_chunk0, layer2_chunk4); + __m128i layer3_chunk2 = _mm_unpacklo_epi8(layer2_chunk1, layer2_chunk5); + __m128i layer3_chunk3 = _mm_unpackhi_epi8(layer2_chunk1, layer2_chunk5); + __m128i layer3_chunk4 = _mm_unpacklo_epi8(layer2_chunk2, layer2_chunk6); + __m128i layer3_chunk5 = _mm_unpackhi_epi8(layer2_chunk2, layer2_chunk6); + __m128i layer3_chunk6 = _mm_unpacklo_epi8(layer2_chunk3, layer2_chunk7); + __m128i layer3_chunk7 = _mm_unpackhi_epi8(layer2_chunk3, layer2_chunk7); + + __m128i layer4_chunk0 = _mm_unpacklo_epi8(layer3_chunk0, layer3_chunk4); + __m128i layer4_chunk1 = _mm_unpackhi_epi8(layer3_chunk0, layer3_chunk4); + __m128i layer4_chunk2 = _mm_unpacklo_epi8(layer3_chunk1, layer3_chunk5); + __m128i layer4_chunk3 = _mm_unpackhi_epi8(layer3_chunk1, layer3_chunk5); + __m128i layer4_chunk4 = _mm_unpacklo_epi8(layer3_chunk2, layer3_chunk6); + __m128i layer4_chunk5 = _mm_unpackhi_epi8(layer3_chunk2, layer3_chunk6); + __m128i layer4_chunk6 = _mm_unpacklo_epi8(layer3_chunk3, layer3_chunk7); + __m128i layer4_chunk7 = _mm_unpackhi_epi8(layer3_chunk3, layer3_chunk7); + + v_r0 = _mm_unpacklo_epi8(layer4_chunk0, layer4_chunk4); + v_r1 = _mm_unpackhi_epi8(layer4_chunk0, layer4_chunk4); + v_g0 = _mm_unpacklo_epi8(layer4_chunk1, layer4_chunk5); + v_g1 = _mm_unpackhi_epi8(layer4_chunk1, layer4_chunk5); + v_b0 = _mm_unpacklo_epi8(layer4_chunk2, layer4_chunk6); + v_b1 = _mm_unpackhi_epi8(layer4_chunk2, layer4_chunk6); + v_a0 = _mm_unpacklo_epi8(layer4_chunk3, layer4_chunk7); + v_a1 = _mm_unpackhi_epi8(layer4_chunk3, layer4_chunk7); +} + +inline void _mm_interleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1) +{ + __m128i v_mask = _mm_set1_epi16(0x00ff); + + __m128i layer4_chunk0 = _mm_packus_epi16(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer4_chunk2 = _mm_packus_epi16(_mm_srli_epi16(v_r0, 8), _mm_srli_epi16(v_r1, 8)); + __m128i layer4_chunk1 = _mm_packus_epi16(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer4_chunk3 = _mm_packus_epi16(_mm_srli_epi16(v_g0, 8), _mm_srli_epi16(v_g1, 8)); + + __m128i layer3_chunk0 = _mm_packus_epi16(_mm_and_si128(layer4_chunk0, v_mask), _mm_and_si128(layer4_chunk1, v_mask)); + __m128i layer3_chunk2 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk0, 8), _mm_srli_epi16(layer4_chunk1, 8)); + __m128i layer3_chunk1 = _mm_packus_epi16(_mm_and_si128(layer4_chunk2, v_mask), _mm_and_si128(layer4_chunk3, v_mask)); + __m128i layer3_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk2, 8), _mm_srli_epi16(layer4_chunk3, 8)); + + __m128i layer2_chunk0 = _mm_packus_epi16(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk2 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk0, 8), _mm_srli_epi16(layer3_chunk1, 8)); + __m128i layer2_chunk1 = _mm_packus_epi16(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk2, 8), _mm_srli_epi16(layer3_chunk3, 8)); + + __m128i layer1_chunk0 = _mm_packus_epi16(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk2 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk0, 8), _mm_srli_epi16(layer2_chunk1, 8)); + __m128i layer1_chunk1 = _mm_packus_epi16(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk2, 8), _mm_srli_epi16(layer2_chunk3, 8)); + + v_r0 = _mm_packus_epi16(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_g0 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk0, 8), _mm_srli_epi16(layer1_chunk1, 8)); + v_r1 = _mm_packus_epi16(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_g1 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk2, 8), _mm_srli_epi16(layer1_chunk3, 8)); +} + +inline void _mm_interleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, + __m128i & v_g1, __m128i & v_b0, __m128i & v_b1) +{ + __m128i v_mask = _mm_set1_epi16(0x00ff); + + __m128i layer4_chunk0 = _mm_packus_epi16(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer4_chunk3 = _mm_packus_epi16(_mm_srli_epi16(v_r0, 8), _mm_srli_epi16(v_r1, 8)); + __m128i layer4_chunk1 = _mm_packus_epi16(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer4_chunk4 = _mm_packus_epi16(_mm_srli_epi16(v_g0, 8), _mm_srli_epi16(v_g1, 8)); + __m128i layer4_chunk2 = _mm_packus_epi16(_mm_and_si128(v_b0, v_mask), _mm_and_si128(v_b1, v_mask)); + __m128i layer4_chunk5 = _mm_packus_epi16(_mm_srli_epi16(v_b0, 8), _mm_srli_epi16(v_b1, 8)); + + __m128i layer3_chunk0 = _mm_packus_epi16(_mm_and_si128(layer4_chunk0, v_mask), _mm_and_si128(layer4_chunk1, v_mask)); + __m128i layer3_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk0, 8), _mm_srli_epi16(layer4_chunk1, 8)); + __m128i layer3_chunk1 = _mm_packus_epi16(_mm_and_si128(layer4_chunk2, v_mask), _mm_and_si128(layer4_chunk3, v_mask)); + __m128i layer3_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk2, 8), _mm_srli_epi16(layer4_chunk3, 8)); + __m128i layer3_chunk2 = _mm_packus_epi16(_mm_and_si128(layer4_chunk4, v_mask), _mm_and_si128(layer4_chunk5, v_mask)); + __m128i layer3_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk4, 8), _mm_srli_epi16(layer4_chunk5, 8)); + + __m128i layer2_chunk0 = _mm_packus_epi16(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk0, 8), _mm_srli_epi16(layer3_chunk1, 8)); + __m128i layer2_chunk1 = _mm_packus_epi16(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk2, 8), _mm_srli_epi16(layer3_chunk3, 8)); + __m128i layer2_chunk2 = _mm_packus_epi16(_mm_and_si128(layer3_chunk4, v_mask), _mm_and_si128(layer3_chunk5, v_mask)); + __m128i layer2_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk4, 8), _mm_srli_epi16(layer3_chunk5, 8)); + + __m128i layer1_chunk0 = _mm_packus_epi16(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk3 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk0, 8), _mm_srli_epi16(layer2_chunk1, 8)); + __m128i layer1_chunk1 = _mm_packus_epi16(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk2, 8), _mm_srli_epi16(layer2_chunk3, 8)); + __m128i layer1_chunk2 = _mm_packus_epi16(_mm_and_si128(layer2_chunk4, v_mask), _mm_and_si128(layer2_chunk5, v_mask)); + __m128i layer1_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk4, 8), _mm_srli_epi16(layer2_chunk5, 8)); + + v_r0 = _mm_packus_epi16(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_g1 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk0, 8), _mm_srli_epi16(layer1_chunk1, 8)); + v_r1 = _mm_packus_epi16(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_b0 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk2, 8), _mm_srli_epi16(layer1_chunk3, 8)); + v_g0 = _mm_packus_epi16(_mm_and_si128(layer1_chunk4, v_mask), _mm_and_si128(layer1_chunk5, v_mask)); + v_b1 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk4, 8), _mm_srli_epi16(layer1_chunk5, 8)); +} + +inline void _mm_interleave_epi8(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1, + __m128i & v_b0, __m128i & v_b1, __m128i & v_a0, __m128i & v_a1) +{ + __m128i v_mask = _mm_set1_epi16(0x00ff); + + __m128i layer4_chunk0 = _mm_packus_epi16(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer4_chunk4 = _mm_packus_epi16(_mm_srli_epi16(v_r0, 8), _mm_srli_epi16(v_r1, 8)); + __m128i layer4_chunk1 = _mm_packus_epi16(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer4_chunk5 = _mm_packus_epi16(_mm_srli_epi16(v_g0, 8), _mm_srli_epi16(v_g1, 8)); + __m128i layer4_chunk2 = _mm_packus_epi16(_mm_and_si128(v_b0, v_mask), _mm_and_si128(v_b1, v_mask)); + __m128i layer4_chunk6 = _mm_packus_epi16(_mm_srli_epi16(v_b0, 8), _mm_srli_epi16(v_b1, 8)); + __m128i layer4_chunk3 = _mm_packus_epi16(_mm_and_si128(v_a0, v_mask), _mm_and_si128(v_a1, v_mask)); + __m128i layer4_chunk7 = _mm_packus_epi16(_mm_srli_epi16(v_a0, 8), _mm_srli_epi16(v_a1, 8)); + + __m128i layer3_chunk0 = _mm_packus_epi16(_mm_and_si128(layer4_chunk0, v_mask), _mm_and_si128(layer4_chunk1, v_mask)); + __m128i layer3_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk0, 8), _mm_srli_epi16(layer4_chunk1, 8)); + __m128i layer3_chunk1 = _mm_packus_epi16(_mm_and_si128(layer4_chunk2, v_mask), _mm_and_si128(layer4_chunk3, v_mask)); + __m128i layer3_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk2, 8), _mm_srli_epi16(layer4_chunk3, 8)); + __m128i layer3_chunk2 = _mm_packus_epi16(_mm_and_si128(layer4_chunk4, v_mask), _mm_and_si128(layer4_chunk5, v_mask)); + __m128i layer3_chunk6 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk4, 8), _mm_srli_epi16(layer4_chunk5, 8)); + __m128i layer3_chunk3 = _mm_packus_epi16(_mm_and_si128(layer4_chunk6, v_mask), _mm_and_si128(layer4_chunk7, v_mask)); + __m128i layer3_chunk7 = _mm_packus_epi16(_mm_srli_epi16(layer4_chunk6, 8), _mm_srli_epi16(layer4_chunk7, 8)); + + __m128i layer2_chunk0 = _mm_packus_epi16(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk0, 8), _mm_srli_epi16(layer3_chunk1, 8)); + __m128i layer2_chunk1 = _mm_packus_epi16(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk2, 8), _mm_srli_epi16(layer3_chunk3, 8)); + __m128i layer2_chunk2 = _mm_packus_epi16(_mm_and_si128(layer3_chunk4, v_mask), _mm_and_si128(layer3_chunk5, v_mask)); + __m128i layer2_chunk6 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk4, 8), _mm_srli_epi16(layer3_chunk5, 8)); + __m128i layer2_chunk3 = _mm_packus_epi16(_mm_and_si128(layer3_chunk6, v_mask), _mm_and_si128(layer3_chunk7, v_mask)); + __m128i layer2_chunk7 = _mm_packus_epi16(_mm_srli_epi16(layer3_chunk6, 8), _mm_srli_epi16(layer3_chunk7, 8)); + + __m128i layer1_chunk0 = _mm_packus_epi16(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk4 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk0, 8), _mm_srli_epi16(layer2_chunk1, 8)); + __m128i layer1_chunk1 = _mm_packus_epi16(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk5 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk2, 8), _mm_srli_epi16(layer2_chunk3, 8)); + __m128i layer1_chunk2 = _mm_packus_epi16(_mm_and_si128(layer2_chunk4, v_mask), _mm_and_si128(layer2_chunk5, v_mask)); + __m128i layer1_chunk6 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk4, 8), _mm_srli_epi16(layer2_chunk5, 8)); + __m128i layer1_chunk3 = _mm_packus_epi16(_mm_and_si128(layer2_chunk6, v_mask), _mm_and_si128(layer2_chunk7, v_mask)); + __m128i layer1_chunk7 = _mm_packus_epi16(_mm_srli_epi16(layer2_chunk6, 8), _mm_srli_epi16(layer2_chunk7, 8)); + + v_r0 = _mm_packus_epi16(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_b0 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk0, 8), _mm_srli_epi16(layer1_chunk1, 8)); + v_r1 = _mm_packus_epi16(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_b1 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk2, 8), _mm_srli_epi16(layer1_chunk3, 8)); + v_g0 = _mm_packus_epi16(_mm_and_si128(layer1_chunk4, v_mask), _mm_and_si128(layer1_chunk5, v_mask)); + v_a0 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk4, 8), _mm_srli_epi16(layer1_chunk5, 8)); + v_g1 = _mm_packus_epi16(_mm_and_si128(layer1_chunk6, v_mask), _mm_and_si128(layer1_chunk7, v_mask)); + v_a1 = _mm_packus_epi16(_mm_srli_epi16(layer1_chunk6, 8), _mm_srli_epi16(layer1_chunk7, 8)); +} + +inline void _mm_deinterleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi16(v_r0, v_g0); + __m128i layer1_chunk1 = _mm_unpackhi_epi16(v_r0, v_g0); + __m128i layer1_chunk2 = _mm_unpacklo_epi16(v_r1, v_g1); + __m128i layer1_chunk3 = _mm_unpackhi_epi16(v_r1, v_g1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi16(layer1_chunk0, layer1_chunk2); + __m128i layer2_chunk1 = _mm_unpackhi_epi16(layer1_chunk0, layer1_chunk2); + __m128i layer2_chunk2 = _mm_unpacklo_epi16(layer1_chunk1, layer1_chunk3); + __m128i layer2_chunk3 = _mm_unpackhi_epi16(layer1_chunk1, layer1_chunk3); + + __m128i layer3_chunk0 = _mm_unpacklo_epi16(layer2_chunk0, layer2_chunk2); + __m128i layer3_chunk1 = _mm_unpackhi_epi16(layer2_chunk0, layer2_chunk2); + __m128i layer3_chunk2 = _mm_unpacklo_epi16(layer2_chunk1, layer2_chunk3); + __m128i layer3_chunk3 = _mm_unpackhi_epi16(layer2_chunk1, layer2_chunk3); + + v_r0 = _mm_unpacklo_epi16(layer3_chunk0, layer3_chunk2); + v_r1 = _mm_unpackhi_epi16(layer3_chunk0, layer3_chunk2); + v_g0 = _mm_unpacklo_epi16(layer3_chunk1, layer3_chunk3); + v_g1 = _mm_unpackhi_epi16(layer3_chunk1, layer3_chunk3); +} + +inline void _mm_deinterleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, + __m128i & v_g1, __m128i & v_b0, __m128i & v_b1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi16(v_r0, v_g1); + __m128i layer1_chunk1 = _mm_unpackhi_epi16(v_r0, v_g1); + __m128i layer1_chunk2 = _mm_unpacklo_epi16(v_r1, v_b0); + __m128i layer1_chunk3 = _mm_unpackhi_epi16(v_r1, v_b0); + __m128i layer1_chunk4 = _mm_unpacklo_epi16(v_g0, v_b1); + __m128i layer1_chunk5 = _mm_unpackhi_epi16(v_g0, v_b1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi16(layer1_chunk0, layer1_chunk3); + __m128i layer2_chunk1 = _mm_unpackhi_epi16(layer1_chunk0, layer1_chunk3); + __m128i layer2_chunk2 = _mm_unpacklo_epi16(layer1_chunk1, layer1_chunk4); + __m128i layer2_chunk3 = _mm_unpackhi_epi16(layer1_chunk1, layer1_chunk4); + __m128i layer2_chunk4 = _mm_unpacklo_epi16(layer1_chunk2, layer1_chunk5); + __m128i layer2_chunk5 = _mm_unpackhi_epi16(layer1_chunk2, layer1_chunk5); + + __m128i layer3_chunk0 = _mm_unpacklo_epi16(layer2_chunk0, layer2_chunk3); + __m128i layer3_chunk1 = _mm_unpackhi_epi16(layer2_chunk0, layer2_chunk3); + __m128i layer3_chunk2 = _mm_unpacklo_epi16(layer2_chunk1, layer2_chunk4); + __m128i layer3_chunk3 = _mm_unpackhi_epi16(layer2_chunk1, layer2_chunk4); + __m128i layer3_chunk4 = _mm_unpacklo_epi16(layer2_chunk2, layer2_chunk5); + __m128i layer3_chunk5 = _mm_unpackhi_epi16(layer2_chunk2, layer2_chunk5); + + v_r0 = _mm_unpacklo_epi16(layer3_chunk0, layer3_chunk3); + v_r1 = _mm_unpackhi_epi16(layer3_chunk0, layer3_chunk3); + v_g0 = _mm_unpacklo_epi16(layer3_chunk1, layer3_chunk4); + v_g1 = _mm_unpackhi_epi16(layer3_chunk1, layer3_chunk4); + v_b0 = _mm_unpacklo_epi16(layer3_chunk2, layer3_chunk5); + v_b1 = _mm_unpackhi_epi16(layer3_chunk2, layer3_chunk5); +} + +inline void _mm_deinterleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1, + __m128i & v_b0, __m128i & v_b1, __m128i & v_a0, __m128i & v_a1) +{ + __m128i layer1_chunk0 = _mm_unpacklo_epi16(v_r0, v_b0); + __m128i layer1_chunk1 = _mm_unpackhi_epi16(v_r0, v_b0); + __m128i layer1_chunk2 = _mm_unpacklo_epi16(v_r1, v_b1); + __m128i layer1_chunk3 = _mm_unpackhi_epi16(v_r1, v_b1); + __m128i layer1_chunk4 = _mm_unpacklo_epi16(v_g0, v_a0); + __m128i layer1_chunk5 = _mm_unpackhi_epi16(v_g0, v_a0); + __m128i layer1_chunk6 = _mm_unpacklo_epi16(v_g1, v_a1); + __m128i layer1_chunk7 = _mm_unpackhi_epi16(v_g1, v_a1); + + __m128i layer2_chunk0 = _mm_unpacklo_epi16(layer1_chunk0, layer1_chunk4); + __m128i layer2_chunk1 = _mm_unpackhi_epi16(layer1_chunk0, layer1_chunk4); + __m128i layer2_chunk2 = _mm_unpacklo_epi16(layer1_chunk1, layer1_chunk5); + __m128i layer2_chunk3 = _mm_unpackhi_epi16(layer1_chunk1, layer1_chunk5); + __m128i layer2_chunk4 = _mm_unpacklo_epi16(layer1_chunk2, layer1_chunk6); + __m128i layer2_chunk5 = _mm_unpackhi_epi16(layer1_chunk2, layer1_chunk6); + __m128i layer2_chunk6 = _mm_unpacklo_epi16(layer1_chunk3, layer1_chunk7); + __m128i layer2_chunk7 = _mm_unpackhi_epi16(layer1_chunk3, layer1_chunk7); + + __m128i layer3_chunk0 = _mm_unpacklo_epi16(layer2_chunk0, layer2_chunk4); + __m128i layer3_chunk1 = _mm_unpackhi_epi16(layer2_chunk0, layer2_chunk4); + __m128i layer3_chunk2 = _mm_unpacklo_epi16(layer2_chunk1, layer2_chunk5); + __m128i layer3_chunk3 = _mm_unpackhi_epi16(layer2_chunk1, layer2_chunk5); + __m128i layer3_chunk4 = _mm_unpacklo_epi16(layer2_chunk2, layer2_chunk6); + __m128i layer3_chunk5 = _mm_unpackhi_epi16(layer2_chunk2, layer2_chunk6); + __m128i layer3_chunk6 = _mm_unpacklo_epi16(layer2_chunk3, layer2_chunk7); + __m128i layer3_chunk7 = _mm_unpackhi_epi16(layer2_chunk3, layer2_chunk7); + + v_r0 = _mm_unpacklo_epi16(layer3_chunk0, layer3_chunk4); + v_r1 = _mm_unpackhi_epi16(layer3_chunk0, layer3_chunk4); + v_g0 = _mm_unpacklo_epi16(layer3_chunk1, layer3_chunk5); + v_g1 = _mm_unpackhi_epi16(layer3_chunk1, layer3_chunk5); + v_b0 = _mm_unpacklo_epi16(layer3_chunk2, layer3_chunk6); + v_b1 = _mm_unpackhi_epi16(layer3_chunk2, layer3_chunk6); + v_a0 = _mm_unpacklo_epi16(layer3_chunk3, layer3_chunk7); + v_a1 = _mm_unpackhi_epi16(layer3_chunk3, layer3_chunk7); +} + +#if CV_SSE4_1 + +inline void _mm_interleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1) +{ + __m128i v_mask = _mm_set1_epi32(0x0000ffff); + + __m128i layer3_chunk0 = _mm_packus_epi32(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer3_chunk2 = _mm_packus_epi32(_mm_srli_epi32(v_r0, 16), _mm_srli_epi32(v_r1, 16)); + __m128i layer3_chunk1 = _mm_packus_epi32(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer3_chunk3 = _mm_packus_epi32(_mm_srli_epi32(v_g0, 16), _mm_srli_epi32(v_g1, 16)); + + __m128i layer2_chunk0 = _mm_packus_epi32(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk2 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk0, 16), _mm_srli_epi32(layer3_chunk1, 16)); + __m128i layer2_chunk1 = _mm_packus_epi32(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk3 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk2, 16), _mm_srli_epi32(layer3_chunk3, 16)); + + __m128i layer1_chunk0 = _mm_packus_epi32(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk2 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk0, 16), _mm_srli_epi32(layer2_chunk1, 16)); + __m128i layer1_chunk1 = _mm_packus_epi32(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk3 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk2, 16), _mm_srli_epi32(layer2_chunk3, 16)); + + v_r0 = _mm_packus_epi32(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_g0 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk0, 16), _mm_srli_epi32(layer1_chunk1, 16)); + v_r1 = _mm_packus_epi32(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_g1 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk2, 16), _mm_srli_epi32(layer1_chunk3, 16)); +} + +inline void _mm_interleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, + __m128i & v_g1, __m128i & v_b0, __m128i & v_b1) +{ + __m128i v_mask = _mm_set1_epi32(0x0000ffff); + + __m128i layer3_chunk0 = _mm_packus_epi32(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer3_chunk3 = _mm_packus_epi32(_mm_srli_epi32(v_r0, 16), _mm_srli_epi32(v_r1, 16)); + __m128i layer3_chunk1 = _mm_packus_epi32(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer3_chunk4 = _mm_packus_epi32(_mm_srli_epi32(v_g0, 16), _mm_srli_epi32(v_g1, 16)); + __m128i layer3_chunk2 = _mm_packus_epi32(_mm_and_si128(v_b0, v_mask), _mm_and_si128(v_b1, v_mask)); + __m128i layer3_chunk5 = _mm_packus_epi32(_mm_srli_epi32(v_b0, 16), _mm_srli_epi32(v_b1, 16)); + + __m128i layer2_chunk0 = _mm_packus_epi32(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk3 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk0, 16), _mm_srli_epi32(layer3_chunk1, 16)); + __m128i layer2_chunk1 = _mm_packus_epi32(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk4 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk2, 16), _mm_srli_epi32(layer3_chunk3, 16)); + __m128i layer2_chunk2 = _mm_packus_epi32(_mm_and_si128(layer3_chunk4, v_mask), _mm_and_si128(layer3_chunk5, v_mask)); + __m128i layer2_chunk5 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk4, 16), _mm_srli_epi32(layer3_chunk5, 16)); + + __m128i layer1_chunk0 = _mm_packus_epi32(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk3 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk0, 16), _mm_srli_epi32(layer2_chunk1, 16)); + __m128i layer1_chunk1 = _mm_packus_epi32(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk4 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk2, 16), _mm_srli_epi32(layer2_chunk3, 16)); + __m128i layer1_chunk2 = _mm_packus_epi32(_mm_and_si128(layer2_chunk4, v_mask), _mm_and_si128(layer2_chunk5, v_mask)); + __m128i layer1_chunk5 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk4, 16), _mm_srli_epi32(layer2_chunk5, 16)); + + v_r0 = _mm_packus_epi32(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_g1 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk0, 16), _mm_srli_epi32(layer1_chunk1, 16)); + v_r1 = _mm_packus_epi32(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_b0 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk2, 16), _mm_srli_epi32(layer1_chunk3, 16)); + v_g0 = _mm_packus_epi32(_mm_and_si128(layer1_chunk4, v_mask), _mm_and_si128(layer1_chunk5, v_mask)); + v_b1 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk4, 16), _mm_srli_epi32(layer1_chunk5, 16)); +} + +inline void _mm_interleave_epi16(__m128i & v_r0, __m128i & v_r1, __m128i & v_g0, __m128i & v_g1, + __m128i & v_b0, __m128i & v_b1, __m128i & v_a0, __m128i & v_a1) +{ + __m128i v_mask = _mm_set1_epi32(0x0000ffff); + + __m128i layer3_chunk0 = _mm_packus_epi32(_mm_and_si128(v_r0, v_mask), _mm_and_si128(v_r1, v_mask)); + __m128i layer3_chunk4 = _mm_packus_epi32(_mm_srli_epi32(v_r0, 16), _mm_srli_epi32(v_r1, 16)); + __m128i layer3_chunk1 = _mm_packus_epi32(_mm_and_si128(v_g0, v_mask), _mm_and_si128(v_g1, v_mask)); + __m128i layer3_chunk5 = _mm_packus_epi32(_mm_srli_epi32(v_g0, 16), _mm_srli_epi32(v_g1, 16)); + __m128i layer3_chunk2 = _mm_packus_epi32(_mm_and_si128(v_b0, v_mask), _mm_and_si128(v_b1, v_mask)); + __m128i layer3_chunk6 = _mm_packus_epi32(_mm_srli_epi32(v_b0, 16), _mm_srli_epi32(v_b1, 16)); + __m128i layer3_chunk3 = _mm_packus_epi32(_mm_and_si128(v_a0, v_mask), _mm_and_si128(v_a1, v_mask)); + __m128i layer3_chunk7 = _mm_packus_epi32(_mm_srli_epi32(v_a0, 16), _mm_srli_epi32(v_a1, 16)); + + __m128i layer2_chunk0 = _mm_packus_epi32(_mm_and_si128(layer3_chunk0, v_mask), _mm_and_si128(layer3_chunk1, v_mask)); + __m128i layer2_chunk4 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk0, 16), _mm_srli_epi32(layer3_chunk1, 16)); + __m128i layer2_chunk1 = _mm_packus_epi32(_mm_and_si128(layer3_chunk2, v_mask), _mm_and_si128(layer3_chunk3, v_mask)); + __m128i layer2_chunk5 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk2, 16), _mm_srli_epi32(layer3_chunk3, 16)); + __m128i layer2_chunk2 = _mm_packus_epi32(_mm_and_si128(layer3_chunk4, v_mask), _mm_and_si128(layer3_chunk5, v_mask)); + __m128i layer2_chunk6 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk4, 16), _mm_srli_epi32(layer3_chunk5, 16)); + __m128i layer2_chunk3 = _mm_packus_epi32(_mm_and_si128(layer3_chunk6, v_mask), _mm_and_si128(layer3_chunk7, v_mask)); + __m128i layer2_chunk7 = _mm_packus_epi32(_mm_srli_epi32(layer3_chunk6, 16), _mm_srli_epi32(layer3_chunk7, 16)); + + __m128i layer1_chunk0 = _mm_packus_epi32(_mm_and_si128(layer2_chunk0, v_mask), _mm_and_si128(layer2_chunk1, v_mask)); + __m128i layer1_chunk4 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk0, 16), _mm_srli_epi32(layer2_chunk1, 16)); + __m128i layer1_chunk1 = _mm_packus_epi32(_mm_and_si128(layer2_chunk2, v_mask), _mm_and_si128(layer2_chunk3, v_mask)); + __m128i layer1_chunk5 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk2, 16), _mm_srli_epi32(layer2_chunk3, 16)); + __m128i layer1_chunk2 = _mm_packus_epi32(_mm_and_si128(layer2_chunk4, v_mask), _mm_and_si128(layer2_chunk5, v_mask)); + __m128i layer1_chunk6 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk4, 16), _mm_srli_epi32(layer2_chunk5, 16)); + __m128i layer1_chunk3 = _mm_packus_epi32(_mm_and_si128(layer2_chunk6, v_mask), _mm_and_si128(layer2_chunk7, v_mask)); + __m128i layer1_chunk7 = _mm_packus_epi32(_mm_srli_epi32(layer2_chunk6, 16), _mm_srli_epi32(layer2_chunk7, 16)); + + v_r0 = _mm_packus_epi32(_mm_and_si128(layer1_chunk0, v_mask), _mm_and_si128(layer1_chunk1, v_mask)); + v_b0 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk0, 16), _mm_srli_epi32(layer1_chunk1, 16)); + v_r1 = _mm_packus_epi32(_mm_and_si128(layer1_chunk2, v_mask), _mm_and_si128(layer1_chunk3, v_mask)); + v_b1 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk2, 16), _mm_srli_epi32(layer1_chunk3, 16)); + v_g0 = _mm_packus_epi32(_mm_and_si128(layer1_chunk4, v_mask), _mm_and_si128(layer1_chunk5, v_mask)); + v_a0 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk4, 16), _mm_srli_epi32(layer1_chunk5, 16)); + v_g1 = _mm_packus_epi32(_mm_and_si128(layer1_chunk6, v_mask), _mm_and_si128(layer1_chunk7, v_mask)); + v_a1 = _mm_packus_epi32(_mm_srli_epi32(layer1_chunk6, 16), _mm_srli_epi32(layer1_chunk7, 16)); +} + +#endif // CV_SSE4_1 + +inline void _mm_deinterleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, __m128 & v_g1) +{ + __m128 layer1_chunk0 = _mm_unpacklo_ps(v_r0, v_g0); + __m128 layer1_chunk1 = _mm_unpackhi_ps(v_r0, v_g0); + __m128 layer1_chunk2 = _mm_unpacklo_ps(v_r1, v_g1); + __m128 layer1_chunk3 = _mm_unpackhi_ps(v_r1, v_g1); + + __m128 layer2_chunk0 = _mm_unpacklo_ps(layer1_chunk0, layer1_chunk2); + __m128 layer2_chunk1 = _mm_unpackhi_ps(layer1_chunk0, layer1_chunk2); + __m128 layer2_chunk2 = _mm_unpacklo_ps(layer1_chunk1, layer1_chunk3); + __m128 layer2_chunk3 = _mm_unpackhi_ps(layer1_chunk1, layer1_chunk3); + + v_r0 = _mm_unpacklo_ps(layer2_chunk0, layer2_chunk2); + v_r1 = _mm_unpackhi_ps(layer2_chunk0, layer2_chunk2); + v_g0 = _mm_unpacklo_ps(layer2_chunk1, layer2_chunk3); + v_g1 = _mm_unpackhi_ps(layer2_chunk1, layer2_chunk3); +} + +inline void _mm_deinterleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, + __m128 & v_g1, __m128 & v_b0, __m128 & v_b1) +{ + __m128 layer1_chunk0 = _mm_unpacklo_ps(v_r0, v_g1); + __m128 layer1_chunk1 = _mm_unpackhi_ps(v_r0, v_g1); + __m128 layer1_chunk2 = _mm_unpacklo_ps(v_r1, v_b0); + __m128 layer1_chunk3 = _mm_unpackhi_ps(v_r1, v_b0); + __m128 layer1_chunk4 = _mm_unpacklo_ps(v_g0, v_b1); + __m128 layer1_chunk5 = _mm_unpackhi_ps(v_g0, v_b1); + + __m128 layer2_chunk0 = _mm_unpacklo_ps(layer1_chunk0, layer1_chunk3); + __m128 layer2_chunk1 = _mm_unpackhi_ps(layer1_chunk0, layer1_chunk3); + __m128 layer2_chunk2 = _mm_unpacklo_ps(layer1_chunk1, layer1_chunk4); + __m128 layer2_chunk3 = _mm_unpackhi_ps(layer1_chunk1, layer1_chunk4); + __m128 layer2_chunk4 = _mm_unpacklo_ps(layer1_chunk2, layer1_chunk5); + __m128 layer2_chunk5 = _mm_unpackhi_ps(layer1_chunk2, layer1_chunk5); + + v_r0 = _mm_unpacklo_ps(layer2_chunk0, layer2_chunk3); + v_r1 = _mm_unpackhi_ps(layer2_chunk0, layer2_chunk3); + v_g0 = _mm_unpacklo_ps(layer2_chunk1, layer2_chunk4); + v_g1 = _mm_unpackhi_ps(layer2_chunk1, layer2_chunk4); + v_b0 = _mm_unpacklo_ps(layer2_chunk2, layer2_chunk5); + v_b1 = _mm_unpackhi_ps(layer2_chunk2, layer2_chunk5); +} + +inline void _mm_deinterleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, __m128 & v_g1, + __m128 & v_b0, __m128 & v_b1, __m128 & v_a0, __m128 & v_a1) +{ + __m128 layer1_chunk0 = _mm_unpacklo_ps(v_r0, v_b0); + __m128 layer1_chunk1 = _mm_unpackhi_ps(v_r0, v_b0); + __m128 layer1_chunk2 = _mm_unpacklo_ps(v_r1, v_b1); + __m128 layer1_chunk3 = _mm_unpackhi_ps(v_r1, v_b1); + __m128 layer1_chunk4 = _mm_unpacklo_ps(v_g0, v_a0); + __m128 layer1_chunk5 = _mm_unpackhi_ps(v_g0, v_a0); + __m128 layer1_chunk6 = _mm_unpacklo_ps(v_g1, v_a1); + __m128 layer1_chunk7 = _mm_unpackhi_ps(v_g1, v_a1); + + __m128 layer2_chunk0 = _mm_unpacklo_ps(layer1_chunk0, layer1_chunk4); + __m128 layer2_chunk1 = _mm_unpackhi_ps(layer1_chunk0, layer1_chunk4); + __m128 layer2_chunk2 = _mm_unpacklo_ps(layer1_chunk1, layer1_chunk5); + __m128 layer2_chunk3 = _mm_unpackhi_ps(layer1_chunk1, layer1_chunk5); + __m128 layer2_chunk4 = _mm_unpacklo_ps(layer1_chunk2, layer1_chunk6); + __m128 layer2_chunk5 = _mm_unpackhi_ps(layer1_chunk2, layer1_chunk6); + __m128 layer2_chunk6 = _mm_unpacklo_ps(layer1_chunk3, layer1_chunk7); + __m128 layer2_chunk7 = _mm_unpackhi_ps(layer1_chunk3, layer1_chunk7); + + v_r0 = _mm_unpacklo_ps(layer2_chunk0, layer2_chunk4); + v_r1 = _mm_unpackhi_ps(layer2_chunk0, layer2_chunk4); + v_g0 = _mm_unpacklo_ps(layer2_chunk1, layer2_chunk5); + v_g1 = _mm_unpackhi_ps(layer2_chunk1, layer2_chunk5); + v_b0 = _mm_unpacklo_ps(layer2_chunk2, layer2_chunk6); + v_b1 = _mm_unpackhi_ps(layer2_chunk2, layer2_chunk6); + v_a0 = _mm_unpacklo_ps(layer2_chunk3, layer2_chunk7); + v_a1 = _mm_unpackhi_ps(layer2_chunk3, layer2_chunk7); +} + +inline void _mm_interleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, __m128 & v_g1) +{ + enum { mask_lo = _MM_SHUFFLE(2, 0, 2, 0), mask_hi = _MM_SHUFFLE(3, 1, 3, 1) }; + + __m128 layer2_chunk0 = _mm_shuffle_ps(v_r0, v_r1, mask_lo); + __m128 layer2_chunk2 = _mm_shuffle_ps(v_r0, v_r1, mask_hi); + __m128 layer2_chunk1 = _mm_shuffle_ps(v_g0, v_g1, mask_lo); + __m128 layer2_chunk3 = _mm_shuffle_ps(v_g0, v_g1, mask_hi); + + __m128 layer1_chunk0 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_lo); + __m128 layer1_chunk2 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_hi); + __m128 layer1_chunk1 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_lo); + __m128 layer1_chunk3 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_hi); + + v_r0 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_lo); + v_g0 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_hi); + v_r1 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_lo); + v_g1 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_hi); +} + +inline void _mm_interleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, + __m128 & v_g1, __m128 & v_b0, __m128 & v_b1) +{ + enum { mask_lo = _MM_SHUFFLE(2, 0, 2, 0), mask_hi = _MM_SHUFFLE(3, 1, 3, 1) }; + + __m128 layer2_chunk0 = _mm_shuffle_ps(v_r0, v_r1, mask_lo); + __m128 layer2_chunk3 = _mm_shuffle_ps(v_r0, v_r1, mask_hi); + __m128 layer2_chunk1 = _mm_shuffle_ps(v_g0, v_g1, mask_lo); + __m128 layer2_chunk4 = _mm_shuffle_ps(v_g0, v_g1, mask_hi); + __m128 layer2_chunk2 = _mm_shuffle_ps(v_b0, v_b1, mask_lo); + __m128 layer2_chunk5 = _mm_shuffle_ps(v_b0, v_b1, mask_hi); + + __m128 layer1_chunk0 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_lo); + __m128 layer1_chunk3 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_hi); + __m128 layer1_chunk1 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_lo); + __m128 layer1_chunk4 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_hi); + __m128 layer1_chunk2 = _mm_shuffle_ps(layer2_chunk4, layer2_chunk5, mask_lo); + __m128 layer1_chunk5 = _mm_shuffle_ps(layer2_chunk4, layer2_chunk5, mask_hi); + + v_r0 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_lo); + v_g1 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_hi); + v_r1 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_lo); + v_b0 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_hi); + v_g0 = _mm_shuffle_ps(layer1_chunk4, layer1_chunk5, mask_lo); + v_b1 = _mm_shuffle_ps(layer1_chunk4, layer1_chunk5, mask_hi); +} + +inline void _mm_interleave_ps(__m128 & v_r0, __m128 & v_r1, __m128 & v_g0, __m128 & v_g1, + __m128 & v_b0, __m128 & v_b1, __m128 & v_a0, __m128 & v_a1) +{ + enum { mask_lo = _MM_SHUFFLE(2, 0, 2, 0), mask_hi = _MM_SHUFFLE(3, 1, 3, 1) }; + + __m128 layer2_chunk0 = _mm_shuffle_ps(v_r0, v_r1, mask_lo); + __m128 layer2_chunk4 = _mm_shuffle_ps(v_r0, v_r1, mask_hi); + __m128 layer2_chunk1 = _mm_shuffle_ps(v_g0, v_g1, mask_lo); + __m128 layer2_chunk5 = _mm_shuffle_ps(v_g0, v_g1, mask_hi); + __m128 layer2_chunk2 = _mm_shuffle_ps(v_b0, v_b1, mask_lo); + __m128 layer2_chunk6 = _mm_shuffle_ps(v_b0, v_b1, mask_hi); + __m128 layer2_chunk3 = _mm_shuffle_ps(v_a0, v_a1, mask_lo); + __m128 layer2_chunk7 = _mm_shuffle_ps(v_a0, v_a1, mask_hi); + + __m128 layer1_chunk0 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_lo); + __m128 layer1_chunk4 = _mm_shuffle_ps(layer2_chunk0, layer2_chunk1, mask_hi); + __m128 layer1_chunk1 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_lo); + __m128 layer1_chunk5 = _mm_shuffle_ps(layer2_chunk2, layer2_chunk3, mask_hi); + __m128 layer1_chunk2 = _mm_shuffle_ps(layer2_chunk4, layer2_chunk5, mask_lo); + __m128 layer1_chunk6 = _mm_shuffle_ps(layer2_chunk4, layer2_chunk5, mask_hi); + __m128 layer1_chunk3 = _mm_shuffle_ps(layer2_chunk6, layer2_chunk7, mask_lo); + __m128 layer1_chunk7 = _mm_shuffle_ps(layer2_chunk6, layer2_chunk7, mask_hi); + + v_r0 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_lo); + v_b0 = _mm_shuffle_ps(layer1_chunk0, layer1_chunk1, mask_hi); + v_r1 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_lo); + v_b1 = _mm_shuffle_ps(layer1_chunk2, layer1_chunk3, mask_hi); + v_g0 = _mm_shuffle_ps(layer1_chunk4, layer1_chunk5, mask_lo); + v_a0 = _mm_shuffle_ps(layer1_chunk4, layer1_chunk5, mask_hi); + v_g1 = _mm_shuffle_ps(layer1_chunk6, layer1_chunk7, mask_lo); + v_a1 = _mm_shuffle_ps(layer1_chunk6, layer1_chunk7, mask_hi); +} + +#endif // CV_SSE2 + +//! @} + +#endif //OPENCV_CORE_SSE_UTILS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/traits.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/traits.hpp new file mode 100644 index 0000000..52ab083 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/traits.hpp @@ -0,0 +1,417 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_TRAITS_HPP +#define OPENCV_CORE_TRAITS_HPP + +#include "opencv2/core/cvdef.h" + +namespace cv +{ + +//#define OPENCV_TRAITS_ENABLE_DEPRECATED + +//! @addtogroup core_basic +//! @{ + +/** @brief Template "trait" class for OpenCV primitive data types. + +@note Deprecated. This is replaced by "single purpose" traits: traits::Type and traits::Depth + +A primitive OpenCV data type is one of unsigned char, bool, signed char, unsigned short, signed +short, int, float, double, or a tuple of values of one of these types, where all the values in the +tuple have the same type. Any primitive type from the list can be defined by an identifier in the +form CV_\{U|S|F}C(\), for example: uchar \~ CV_8UC1, 3-element +floating-point tuple \~ CV_32FC3, and so on. A universal OpenCV structure that is able to store a +single instance of such a primitive data type is Vec. Multiple instances of such a type can be +stored in a std::vector, Mat, Mat_, SparseMat, SparseMat_, or any other container that is able to +store Vec instances. + +The DataType class is basically used to provide a description of such primitive data types without +adding any fields or methods to the corresponding classes (and it is actually impossible to add +anything to primitive C/C++ data types). This technique is known in C++ as class traits. It is not +DataType itself that is used but its specialized versions, such as: +@code + template<> class DataType + { + typedef uchar value_type; + typedef int work_type; + typedef uchar channel_type; + enum { channel_type = CV_8U, channels = 1, fmt='u', type = CV_8U }; + }; + ... + template DataType > + { + typedef std::complex<_Tp> value_type; + typedef std::complex<_Tp> work_type; + typedef _Tp channel_type; + // DataDepth is another helper trait class + enum { depth = DataDepth<_Tp>::value, channels=2, + fmt=(channels-1)*256+DataDepth<_Tp>::fmt, + type=CV_MAKETYPE(depth, channels) }; + }; + ... +@endcode +The main purpose of this class is to convert compilation-time type information to an +OpenCV-compatible data type identifier, for example: +@code + // allocates a 30x40 floating-point matrix + Mat A(30, 40, DataType::type); + + Mat B = Mat_ >(3, 3); + // the statement below will print 6, 2 , that is depth == CV_64F, channels == 2 + cout << B.depth() << ", " << B.channels() << endl; +@endcode +So, such traits are used to tell OpenCV which data type you are working with, even if such a type is +not native to OpenCV. For example, the matrix B initialization above is compiled because OpenCV +defines the proper specialized template class DataType\ \> . This mechanism is also +useful (and used in OpenCV this way) for generic algorithms implementations. + +@note Default values were dropped to stop confusing developers about using of unsupported types (see #7599) +*/ +template class DataType +{ +public: +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + typedef _Tp value_type; + typedef value_type work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 1, + depth = -1, + channels = 1, + fmt = 0, + type = CV_MAKETYPE(depth, channels) + }; +#endif +}; + +template<> class DataType +{ +public: + typedef bool value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_8U, + channels = 1, + fmt = (int)'u', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef uchar value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_8U, + channels = 1, + fmt = (int)'u', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef schar value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_8S, + channels = 1, + fmt = (int)'c', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef schar value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_8S, + channels = 1, + fmt = (int)'c', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef ushort value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_16U, + channels = 1, + fmt = (int)'w', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef short value_type; + typedef int work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_16S, + channels = 1, + fmt = (int)'s', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef int value_type; + typedef value_type work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_32S, + channels = 1, + fmt = (int)'i', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef float value_type; + typedef value_type work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_32F, + channels = 1, + fmt = (int)'f', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef double value_type; + typedef value_type work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_64F, + channels = 1, + fmt = (int)'d', + type = CV_MAKETYPE(depth, channels) + }; +}; + +template<> class DataType +{ +public: + typedef float16_t value_type; + typedef float work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 0, + depth = CV_16F, + channels = 1, + fmt = (int)'h', + type = CV_MAKETYPE(depth, channels) + }; +}; + +/** @brief A helper class for cv::DataType + +The class is specialized for each fundamental numerical data type supported by OpenCV. It provides +DataDepth::value constant. +*/ +template class DataDepth +{ +public: + enum + { + value = DataType<_Tp>::depth, + fmt = DataType<_Tp>::fmt + }; +}; + + +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + +template class TypeDepth +{ +#ifdef OPENCV_TRAITS_ENABLE_LEGACY_DEFAULTS + enum { depth = CV_USRTYPE1 }; + typedef void value_type; +#endif +}; + +template<> class TypeDepth +{ + enum { depth = CV_8U }; + typedef uchar value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_8S }; + typedef schar value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_16U }; + typedef ushort value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_16S }; + typedef short value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_32S }; + typedef int value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_32F }; + typedef float value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_64F }; + typedef double value_type; +}; + +template<> class TypeDepth +{ + enum { depth = CV_16F }; + typedef float16_t value_type; +}; + +#endif + +//! @} + +namespace traits { + +namespace internal { +#define CV_CREATE_MEMBER_CHECK(X) \ +template class CheckMember_##X { \ + struct Fallback { int X; }; \ + struct Derived : T, Fallback { }; \ + template struct Check; \ + typedef char CV_NO[1]; \ + typedef char CV_YES[2]; \ + template static CV_NO & func(Check *); \ + template static CV_YES & func(...); \ +public: \ + typedef CheckMember_##X type; \ + enum { value = sizeof(func(0)) == sizeof(CV_YES) }; \ +}; + +CV_CREATE_MEMBER_CHECK(fmt) +CV_CREATE_MEMBER_CHECK(type) + +} // namespace internal + + +template +struct Depth +{ enum { value = DataType::depth }; }; + +template +struct Type +{ enum { value = DataType::type }; }; + +/** Similar to traits::Type but has value = -1 in case of unknown type (instead of compiler error) */ +template >::value > +struct SafeType {}; + +template +struct SafeType +{ enum { value = -1 }; }; + +template +struct SafeType +{ enum { value = Type::value }; }; + + +template >::value > +struct SafeFmt {}; + +template +struct SafeFmt +{ enum { fmt = 0 }; }; + +template +struct SafeFmt +{ enum { fmt = DataType::fmt }; }; + + +} // namespace + +} // cv + +#endif // OPENCV_CORE_TRAITS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/types.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/types.hpp new file mode 100644 index 0000000..b1fa676 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/types.hpp @@ -0,0 +1,2476 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_TYPES_HPP +#define OPENCV_CORE_TYPES_HPP + +#ifndef __cplusplus +# error types.hpp header must be compiled as C++ +#endif + +#include +#include +#include +#include + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/cvstd.hpp" +#include "opencv2/core/matx.hpp" + +namespace cv +{ + +//! @addtogroup core_basic +//! @{ + +//////////////////////////////// Complex ////////////////////////////// + +/** @brief A complex number class. + + The template class is similar and compatible with std::complex, however it provides slightly + more convenient access to the real and imaginary parts using through the simple field access, as opposite + to std::complex::real() and std::complex::imag(). +*/ +template class Complex +{ +public: + + //! default constructor + Complex(); + Complex( _Tp _re, _Tp _im = 0 ); + + //! conversion to another data type + template operator Complex() const; + //! conjugation + Complex conj() const; + + _Tp re, im; //< the real and the imaginary parts +}; + +typedef Complex Complexf; +typedef Complex Complexd; + +template class DataType< Complex<_Tp> > +{ +public: + typedef Complex<_Tp> value_type; + typedef value_type work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 2, + fmt = DataType::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Complex<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Complex<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 2) }; }; +} // namespace + + +//////////////////////////////// Point_ //////////////////////////////// + +/** @brief Template class for 2D points specified by its coordinates `x` and `y`. + +An instance of the class is interchangeable with C structures, CvPoint and CvPoint2D32f . There is +also a cast operator to convert point coordinates to the specified type. The conversion from +floating-point coordinates to integer coordinates is done by rounding. Commonly, the conversion +uses this operation for each of the coordinates. Besides the class members listed in the +declaration above, the following operations on points are implemented: +@code + pt1 = pt2 + pt3; + pt1 = pt2 - pt3; + pt1 = pt2 * a; + pt1 = a * pt2; + pt1 = pt2 / a; + pt1 += pt2; + pt1 -= pt2; + pt1 *= a; + pt1 /= a; + double value = norm(pt); // L2 norm + pt1 == pt2; + pt1 != pt2; +@endcode +For your convenience, the following type aliases are defined: +@code + typedef Point_ Point2i; + typedef Point2i Point; + typedef Point_ Point2f; + typedef Point_ Point2d; +@endcode +Example: +@code + Point2f a(0.3f, 0.f), b(0.f, 0.4f); + Point pt = (a + b)*10.f; + cout << pt.x << ", " << pt.y << endl; +@endcode +*/ +template class Point_ +{ +public: + typedef _Tp value_type; + + //! default constructor + Point_(); + Point_(_Tp _x, _Tp _y); + Point_(const Point_& pt); + Point_(Point_&& pt) CV_NOEXCEPT; + Point_(const Size_<_Tp>& sz); + Point_(const Vec<_Tp, 2>& v); + + Point_& operator = (const Point_& pt); + Point_& operator = (Point_&& pt) CV_NOEXCEPT; + //! conversion to another data type + template operator Point_<_Tp2>() const; + + //! conversion to the old-style C structures + operator Vec<_Tp, 2>() const; + + //! dot product + _Tp dot(const Point_& pt) const; + //! dot product computed in double-precision arithmetics + double ddot(const Point_& pt) const; + //! cross-product + double cross(const Point_& pt) const; + //! checks whether the point is inside the specified rectangle + bool inside(const Rect_<_Tp>& r) const; + _Tp x; //!< x coordinate of the point + _Tp y; //!< y coordinate of the point +}; + +typedef Point_ Point2i; +typedef Point_ Point2l; +typedef Point_ Point2f; +typedef Point_ Point2d; +typedef Point2i Point; + +template class DataType< Point_<_Tp> > +{ +public: + typedef Point_<_Tp> value_type; + typedef Point_::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 2, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Point_<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Point_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 2) }; }; +} // namespace + + +//////////////////////////////// Point3_ //////////////////////////////// + +/** @brief Template class for 3D points specified by its coordinates `x`, `y` and `z`. + +An instance of the class is interchangeable with the C structure CvPoint2D32f . Similarly to +Point_ , the coordinates of 3D points can be converted to another type. The vector arithmetic and +comparison operations are also supported. + +The following Point3_\<\> aliases are available: +@code + typedef Point3_ Point3i; + typedef Point3_ Point3f; + typedef Point3_ Point3d; +@endcode +@see cv::Point3i, cv::Point3f and cv::Point3d +*/ +template class Point3_ +{ +public: + typedef _Tp value_type; + + //! default constructor + Point3_(); + Point3_(_Tp _x, _Tp _y, _Tp _z); + Point3_(const Point3_& pt); + Point3_(Point3_&& pt) CV_NOEXCEPT; + explicit Point3_(const Point_<_Tp>& pt); + Point3_(const Vec<_Tp, 3>& v); + + Point3_& operator = (const Point3_& pt); + Point3_& operator = (Point3_&& pt) CV_NOEXCEPT; + //! conversion to another data type + template operator Point3_<_Tp2>() const; + //! conversion to cv::Vec<> + operator Vec<_Tp, 3>() const; + + //! dot product + _Tp dot(const Point3_& pt) const; + //! dot product computed in double-precision arithmetics + double ddot(const Point3_& pt) const; + //! cross product of the 2 3D points + Point3_ cross(const Point3_& pt) const; + _Tp x; //!< x coordinate of the 3D point + _Tp y; //!< y coordinate of the 3D point + _Tp z; //!< z coordinate of the 3D point +}; + +typedef Point3_ Point3i; +typedef Point3_ Point3f; +typedef Point3_ Point3d; + +template class DataType< Point3_<_Tp> > +{ +public: + typedef Point3_<_Tp> value_type; + typedef Point3_::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 3, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Point3_<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Point3_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 3) }; }; +} // namespace + +//////////////////////////////// Size_ //////////////////////////////// + +/** @brief Template class for specifying the size of an image or rectangle. + +The class includes two members called width and height. The structure can be converted to and from +the old OpenCV structures CvSize and CvSize2D32f . The same set of arithmetic and comparison +operations as for Point_ is available. + +OpenCV defines the following Size_\<\> aliases: +@code + typedef Size_ Size2i; + typedef Size2i Size; + typedef Size_ Size2f; +@endcode +*/ +template class Size_ +{ +public: + typedef _Tp value_type; + + //! default constructor + Size_(); + Size_(_Tp _width, _Tp _height); + Size_(const Size_& sz); + Size_(Size_&& sz) CV_NOEXCEPT; + Size_(const Point_<_Tp>& pt); + + Size_& operator = (const Size_& sz); + Size_& operator = (Size_&& sz) CV_NOEXCEPT; + //! the area (width*height) + _Tp area() const; + //! aspect ratio (width/height) + double aspectRatio() const; + //! true if empty + bool empty() const; + + //! conversion of another data type. + template operator Size_<_Tp2>() const; + + _Tp width; //!< the width + _Tp height; //!< the height +}; + +typedef Size_ Size2i; +typedef Size_ Size2l; +typedef Size_ Size2f; +typedef Size_ Size2d; +typedef Size2i Size; + +template class DataType< Size_<_Tp> > +{ +public: + typedef Size_<_Tp> value_type; + typedef Size_::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 2, + fmt = DataType::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Size_<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Size_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 2) }; }; +} // namespace + +//////////////////////////////// Rect_ //////////////////////////////// + +/** @brief Template class for 2D rectangles + +described by the following parameters: +- Coordinates of the top-left corner. This is a default interpretation of Rect_::x and Rect_::y + in OpenCV. Though, in your algorithms you may count x and y from the bottom-left corner. +- Rectangle width and height. + +OpenCV typically assumes that the top and left boundary of the rectangle are inclusive, while the +right and bottom boundaries are not. For example, the method Rect_::contains returns true if + +\f[x \leq pt.x < x+width, + y \leq pt.y < y+height\f] + +Virtually every loop over an image ROI in OpenCV (where ROI is specified by Rect_\ ) is +implemented as: +@code + for(int y = roi.y; y < roi.y + roi.height; y++) + for(int x = roi.x; x < roi.x + roi.width; x++) + { + // ... + } +@endcode +In addition to the class members, the following operations on rectangles are implemented: +- \f$\texttt{rect} = \texttt{rect} \pm \texttt{point}\f$ (shifting a rectangle by a certain offset) +- \f$\texttt{rect} = \texttt{rect} \pm \texttt{size}\f$ (expanding or shrinking a rectangle by a + certain amount) +- rect += point, rect -= point, rect += size, rect -= size (augmenting operations) +- rect = rect1 & rect2 (rectangle intersection) +- rect = rect1 | rect2 (minimum area rectangle containing rect1 and rect2 ) +- rect &= rect1, rect |= rect1 (and the corresponding augmenting operations) +- rect == rect1, rect != rect1 (rectangle comparison) + +This is an example how the partial ordering on rectangles can be established (rect1 \f$\subseteq\f$ +rect2): +@code + template inline bool + operator <= (const Rect_<_Tp>& r1, const Rect_<_Tp>& r2) + { + return (r1 & r2) == r1; + } +@endcode +For your convenience, the Rect_\<\> alias is available: cv::Rect +*/ +template class Rect_ +{ +public: + typedef _Tp value_type; + + //! default constructor + Rect_(); + Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height); + Rect_(const Rect_& r); + Rect_(Rect_&& r) CV_NOEXCEPT; + Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz); + Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2); + + Rect_& operator = ( const Rect_& r ); + Rect_& operator = ( Rect_&& r ) CV_NOEXCEPT; + //! the top-left corner + Point_<_Tp> tl() const; + //! the bottom-right corner + Point_<_Tp> br() const; + + //! size (width, height) of the rectangle + Size_<_Tp> size() const; + //! area (width*height) of the rectangle + _Tp area() const; + //! true if empty + bool empty() const; + + //! conversion to another data type + template operator Rect_<_Tp2>() const; + + //! checks whether the rectangle contains the point + bool contains(const Point_<_Tp>& pt) const; + + _Tp x; //!< x coordinate of the top-left corner + _Tp y; //!< y coordinate of the top-left corner + _Tp width; //!< width of the rectangle + _Tp height; //!< height of the rectangle +}; + +typedef Rect_ Rect2i; +typedef Rect_ Rect2f; +typedef Rect_ Rect2d; +typedef Rect2i Rect; + +template class DataType< Rect_<_Tp> > +{ +public: + typedef Rect_<_Tp> value_type; + typedef Rect_::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 4, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Rect_<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Rect_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) }; }; +} // namespace + +///////////////////////////// RotatedRect ///////////////////////////// + +/** @brief The class represents rotated (i.e. not up-right) rectangles on a plane. + +Each rectangle is specified by the center point (mass center), length of each side (represented by +#Size2f structure) and the rotation angle in degrees. + +The sample below demonstrates how to use RotatedRect: +@snippet snippets/core_various.cpp RotatedRect_demo +![image](pics/rotatedrect.png) + +@sa CamShift, fitEllipse, minAreaRect, CvBox2D +*/ +class CV_EXPORTS RotatedRect +{ +public: + //! default constructor + RotatedRect(); + /** full constructor + @param center The rectangle mass center. + @param size Width and height of the rectangle. + @param angle The rotation angle in a clockwise direction. When the angle is 0, 90, 180, 270 etc., + the rectangle becomes an up-right rectangle. + */ + RotatedRect(const Point2f& center, const Size2f& size, float angle); + /** + Any 3 end points of the RotatedRect. They must be given in order (either clockwise or + anticlockwise). + */ + RotatedRect(const Point2f& point1, const Point2f& point2, const Point2f& point3); + + /** returns 4 vertices of the rectangle + @param pts The points array for storing rectangle vertices. The order is bottomLeft, topLeft, topRight, bottomRight. + */ + void points(Point2f pts[]) const; + //! returns the minimal up-right integer rectangle containing the rotated rectangle + Rect boundingRect() const; + //! returns the minimal (exact) floating point rectangle containing the rotated rectangle, not intended for use with images + Rect_ boundingRect2f() const; + //! returns the rectangle mass center + Point2f center; + //! returns width and height of the rectangle + Size2f size; + //! returns the rotation angle. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle. + float angle; +}; + +template<> class DataType< RotatedRect > +{ +public: + typedef RotatedRect value_type; + typedef value_type work_type; + typedef float channel_type; + + enum { generic_type = 0, + channels = (int)sizeof(value_type)/sizeof(channel_type), // 5 + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template<> +struct Depth< RotatedRect > { enum { value = Depth::value }; }; +template<> +struct Type< RotatedRect > { enum { value = CV_MAKETYPE(Depth::value, (int)sizeof(RotatedRect)/sizeof(float)) }; }; +} // namespace + + +//////////////////////////////// Range ///////////////////////////////// + +/** @brief Template class specifying a continuous subsequence (slice) of a sequence. + +The class is used to specify a row or a column span in a matrix ( Mat ) and for many other purposes. +Range(a,b) is basically the same as a:b in Matlab or a..b in Python. As in Python, start is an +inclusive left boundary of the range and end is an exclusive right boundary of the range. Such a +half-opened interval is usually denoted as \f$[start,end)\f$ . + +The static method Range::all() returns a special variable that means "the whole sequence" or "the +whole range", just like " : " in Matlab or " ... " in Python. All the methods and functions in +OpenCV that take Range support this special Range::all() value. But, of course, in case of your own +custom processing, you will probably have to check and handle it explicitly: +@code + void my_function(..., const Range& r, ....) + { + if(r == Range::all()) { + // process all the data + } + else { + // process [r.start, r.end) + } + } +@endcode +*/ +class CV_EXPORTS Range +{ +public: + Range(); + Range(int _start, int _end); + int size() const; + bool empty() const; + static Range all(); + + int start, end; +}; + +template<> class DataType +{ +public: + typedef Range value_type; + typedef value_type work_type; + typedef int channel_type; + + enum { generic_type = 0, + channels = 2, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template<> +struct Depth< Range > { enum { value = Depth::value }; }; +template<> +struct Type< Range > { enum { value = CV_MAKETYPE(Depth::value, 2) }; }; +} // namespace + + +//////////////////////////////// Scalar_ /////////////////////////////// + +/** @brief Template class for a 4-element vector derived from Vec. + +Being derived from Vec\<_Tp, 4\> , Scalar\_ and Scalar can be used just as typical 4-element +vectors. In addition, they can be converted to/from CvScalar . The type Scalar is widely used in +OpenCV to pass pixel values. +*/ +template class Scalar_ : public Vec<_Tp, 4> +{ +public: + //! default constructor + Scalar_(); + Scalar_(_Tp v0, _Tp v1, _Tp v2=0, _Tp v3=0); + Scalar_(_Tp v0); + + Scalar_(const Scalar_& s); + Scalar_(Scalar_&& s) CV_NOEXCEPT; + + Scalar_& operator=(const Scalar_& s); + Scalar_& operator=(Scalar_&& s) CV_NOEXCEPT; + + template + Scalar_(const Vec<_Tp2, cn>& v); + + //! returns a scalar with all elements set to v0 + static Scalar_<_Tp> all(_Tp v0); + + //! conversion to another data type + template operator Scalar_() const; + + //! per-element product + Scalar_<_Tp> mul(const Scalar_<_Tp>& a, double scale=1 ) const; + + //! returns (v0, -v1, -v2, -v3) + Scalar_<_Tp> conj() const; + + //! returns true iff v1 == v2 == v3 == 0 + bool isReal() const; +}; + +typedef Scalar_ Scalar; + +template class DataType< Scalar_<_Tp> > +{ +public: + typedef Scalar_<_Tp> value_type; + typedef Scalar_::work_type> work_type; + typedef _Tp channel_type; + + enum { generic_type = 0, + channels = 4, + fmt = traits::SafeFmt::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template +struct Depth< Scalar_<_Tp> > { enum { value = Depth<_Tp>::value }; }; +template +struct Type< Scalar_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) }; }; +} // namespace + + +/////////////////////////////// KeyPoint //////////////////////////////// + +/** @brief Data structure for salient point detectors. + +The class instance stores a keypoint, i.e. a point feature found by one of many available keypoint +detectors, such as Harris corner detector, #FAST, %StarDetector, %SURF, %SIFT etc. + +The keypoint is characterized by the 2D position, scale (proportional to the diameter of the +neighborhood that needs to be taken into account), orientation and some other parameters. The +keypoint neighborhood is then analyzed by another algorithm that builds a descriptor (usually +represented as a feature vector). The keypoints representing the same object in different images +can then be matched using %KDTree or another method. +*/ +class CV_EXPORTS_W_SIMPLE KeyPoint +{ +public: + //! the default constructor + CV_WRAP KeyPoint(); + /** + @param _pt x & y coordinates of the keypoint + @param _size keypoint diameter + @param _angle keypoint orientation + @param _response keypoint detector response on the keypoint (that is, strength of the keypoint) + @param _octave pyramid octave in which the keypoint has been detected + @param _class_id object id + */ + KeyPoint(Point2f _pt, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1); + /** + @param x x-coordinate of the keypoint + @param y y-coordinate of the keypoint + @param _size keypoint diameter + @param _angle keypoint orientation + @param _response keypoint detector response on the keypoint (that is, strength of the keypoint) + @param _octave pyramid octave in which the keypoint has been detected + @param _class_id object id + */ + CV_WRAP KeyPoint(float x, float y, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1); + + size_t hash() const; + + /** + This method converts vector of keypoints to vector of points or the reverse, where each keypoint is + assigned the same size and the same orientation. + + @param keypoints Keypoints obtained from any feature detection algorithm like SIFT/SURF/ORB + @param points2f Array of (x,y) coordinates of each keypoint + @param keypointIndexes Array of indexes of keypoints to be converted to points. (Acts like a mask to + convert only specified keypoints) + */ + CV_WRAP static void convert(const std::vector& keypoints, + CV_OUT std::vector& points2f, + const std::vector& keypointIndexes=std::vector()); + /** @overload + @param points2f Array of (x,y) coordinates of each keypoint + @param keypoints Keypoints obtained from any feature detection algorithm like SIFT/SURF/ORB + @param size keypoint diameter + @param response keypoint detector response on the keypoint (that is, strength of the keypoint) + @param octave pyramid octave in which the keypoint has been detected + @param class_id object id + */ + CV_WRAP static void convert(const std::vector& points2f, + CV_OUT std::vector& keypoints, + float size=1, float response=1, int octave=0, int class_id=-1); + + /** + This method computes overlap for pair of keypoints. Overlap is the ratio between area of keypoint + regions' intersection and area of keypoint regions' union (considering keypoint region as circle). + If they don't overlap, we get zero. If they coincide at same location with same size, we get 1. + @param kp1 First keypoint + @param kp2 Second keypoint + */ + CV_WRAP static float overlap(const KeyPoint& kp1, const KeyPoint& kp2); + + CV_PROP_RW Point2f pt; //!< coordinates of the keypoints + CV_PROP_RW float size; //!< diameter of the meaningful keypoint neighborhood + CV_PROP_RW float angle; //!< computed orientation of the keypoint (-1 if not applicable); + //!< it's in [0,360) degrees and measured relative to + //!< image coordinate system, ie in clockwise. + CV_PROP_RW float response; //!< the response by which the most strong keypoints have been selected. Can be used for the further sorting or subsampling + CV_PROP_RW int octave; //!< octave (pyramid layer) from which the keypoint has been extracted + CV_PROP_RW int class_id; //!< object class (if the keypoints need to be clustered by an object they belong to) +}; + +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED +template<> class DataType +{ +public: + typedef KeyPoint value_type; + typedef float work_type; + typedef float channel_type; + + enum { generic_type = 0, + depth = DataType::depth, + channels = (int)(sizeof(value_type)/sizeof(channel_type)), // 7 + fmt = DataType::fmt + ((channels - 1) << 8), + type = CV_MAKETYPE(depth, channels) + }; + + typedef Vec vec_type; +}; +#endif + + +//////////////////////////////// DMatch ///////////////////////////////// + +/** @brief Class for matching keypoint descriptors + +query descriptor index, train descriptor index, train image index, and distance between +descriptors. +*/ +class CV_EXPORTS_W_SIMPLE DMatch +{ +public: + CV_WRAP DMatch(); + CV_WRAP DMatch(int _queryIdx, int _trainIdx, float _distance); + CV_WRAP DMatch(int _queryIdx, int _trainIdx, int _imgIdx, float _distance); + + CV_PROP_RW int queryIdx; //!< query descriptor index + CV_PROP_RW int trainIdx; //!< train descriptor index + CV_PROP_RW int imgIdx; //!< train image index + + CV_PROP_RW float distance; + + // less is better + bool operator<(const DMatch &m) const; +}; + +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED +template<> class DataType +{ +public: + typedef DMatch value_type; + typedef int work_type; + typedef int channel_type; + + enum { generic_type = 0, + depth = DataType::depth, + channels = (int)(sizeof(value_type)/sizeof(channel_type)), // 4 + fmt = DataType::fmt + ((channels - 1) << 8), + type = CV_MAKETYPE(depth, channels) + }; + + typedef Vec vec_type; +}; +#endif + + +///////////////////////////// TermCriteria ////////////////////////////// + +/** @brief The class defining termination criteria for iterative algorithms. + +You can initialize it by default constructor and then override any parameters, or the structure may +be fully initialized using the advanced variant of the constructor. +*/ +class CV_EXPORTS TermCriteria +{ +public: + /** + Criteria type, can be one of: COUNT, EPS or COUNT + EPS + */ + enum Type + { + COUNT=1, //!< the maximum number of iterations or elements to compute + MAX_ITER=COUNT, //!< ditto + EPS=2 //!< the desired accuracy or change in parameters at which the iterative algorithm stops + }; + + //! default constructor + TermCriteria(); + /** + @param type The type of termination criteria, one of TermCriteria::Type + @param maxCount The maximum number of iterations or elements to compute. + @param epsilon The desired accuracy or change in parameters at which the iterative algorithm stops. + */ + TermCriteria(int type, int maxCount, double epsilon); + + inline bool isValid() const + { + const bool isCount = (type & COUNT) && maxCount > 0; + const bool isEps = (type & EPS) && !cvIsNaN(epsilon); + return isCount || isEps; + } + + int type; //!< the type of termination criteria: COUNT, EPS or COUNT + EPS + int maxCount; //!< the maximum number of iterations/elements + double epsilon; //!< the desired accuracy +}; + + +//! @} core_basic + +///////////////////////// raster image moments ////////////////////////// + +//! @addtogroup imgproc_shape +//! @{ + +/** @brief struct returned by cv::moments + +The spatial moments \f$\texttt{Moments::m}_{ji}\f$ are computed as: + +\f[\texttt{m} _{ji}= \sum _{x,y} \left ( \texttt{array} (x,y) \cdot x^j \cdot y^i \right )\f] + +The central moments \f$\texttt{Moments::mu}_{ji}\f$ are computed as: + +\f[\texttt{mu} _{ji}= \sum _{x,y} \left ( \texttt{array} (x,y) \cdot (x - \bar{x} )^j \cdot (y - \bar{y} )^i \right )\f] + +where \f$(\bar{x}, \bar{y})\f$ is the mass center: + +\f[\bar{x} = \frac{\texttt{m}_{10}}{\texttt{m}_{00}} , \; \bar{y} = \frac{\texttt{m}_{01}}{\texttt{m}_{00}}\f] + +The normalized central moments \f$\texttt{Moments::nu}_{ij}\f$ are computed as: + +\f[\texttt{nu} _{ji}= \frac{\texttt{mu}_{ji}}{\texttt{m}_{00}^{(i+j)/2+1}} .\f] + +@note +\f$\texttt{mu}_{00}=\texttt{m}_{00}\f$, \f$\texttt{nu}_{00}=1\f$ +\f$\texttt{nu}_{10}=\texttt{mu}_{10}=\texttt{mu}_{01}=\texttt{mu}_{10}=0\f$ , hence the values are not +stored. + +The moments of a contour are defined in the same way but computed using the Green's formula (see +). So, due to a limited raster resolution, the moments +computed for a contour are slightly different from the moments computed for the same rasterized +contour. + +@note +Since the contour moments are computed using Green formula, you may get seemingly odd results for +contours with self-intersections, e.g. a zero area (m00) for butterfly-shaped contours. + */ +class CV_EXPORTS_W_MAP Moments +{ +public: + //! the default constructor + Moments(); + //! the full constructor + Moments(double m00, double m10, double m01, double m20, double m11, + double m02, double m30, double m21, double m12, double m03 ); + ////! the conversion from CvMoments + //Moments( const CvMoments& moments ); + ////! the conversion to CvMoments + //operator CvMoments() const; + + //! @name spatial moments + //! @{ + CV_PROP_RW double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; + //! @} + + //! @name central moments + //! @{ + CV_PROP_RW double mu20, mu11, mu02, mu30, mu21, mu12, mu03; + //! @} + + //! @name central normalized moments + //! @{ + CV_PROP_RW double nu20, nu11, nu02, nu30, nu21, nu12, nu03; + //! @} +}; + +template<> class DataType +{ +public: + typedef Moments value_type; + typedef double work_type; + typedef double channel_type; + + enum { generic_type = 0, + channels = (int)(sizeof(value_type)/sizeof(channel_type)), // 24 + fmt = DataType::fmt + ((channels - 1) << 8) +#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED + ,depth = DataType::depth + ,type = CV_MAKETYPE(depth, channels) +#endif + }; + + typedef Vec vec_type; +}; + +namespace traits { +template<> +struct Depth< Moments > { enum { value = Depth::value }; }; +template<> +struct Type< Moments > { enum { value = CV_MAKETYPE(Depth::value, (int)(sizeof(Moments)/sizeof(double))) }; }; +} // namespace + +//! @} imgproc_shape + +//! @cond IGNORED + +///////////////////////////////////////////////////////////////////////// +///////////////////////////// Implementation //////////////////////////// +///////////////////////////////////////////////////////////////////////// + +//////////////////////////////// Complex //////////////////////////////// + +template inline +Complex<_Tp>::Complex() + : re(0), im(0) {} + +template inline +Complex<_Tp>::Complex( _Tp _re, _Tp _im ) + : re(_re), im(_im) {} + +template template inline +Complex<_Tp>::operator Complex() const +{ + return Complex(saturate_cast(re), saturate_cast(im)); +} + +template inline +Complex<_Tp> Complex<_Tp>::conj() const +{ + return Complex<_Tp>(re, -im); +} + + +template static inline +bool operator == (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + return a.re == b.re && a.im == b.im; +} + +template static inline +bool operator != (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + return a.re != b.re || a.im != b.im; +} + +template static inline +Complex<_Tp> operator + (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + return Complex<_Tp>( a.re + b.re, a.im + b.im ); +} + +template static inline +Complex<_Tp>& operator += (Complex<_Tp>& a, const Complex<_Tp>& b) +{ + a.re += b.re; a.im += b.im; + return a; +} + +template static inline +Complex<_Tp> operator - (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + return Complex<_Tp>( a.re - b.re, a.im - b.im ); +} + +template static inline +Complex<_Tp>& operator -= (Complex<_Tp>& a, const Complex<_Tp>& b) +{ + a.re -= b.re; a.im -= b.im; + return a; +} + +template static inline +Complex<_Tp> operator - (const Complex<_Tp>& a) +{ + return Complex<_Tp>(-a.re, -a.im); +} + +template static inline +Complex<_Tp> operator * (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + return Complex<_Tp>( a.re*b.re - a.im*b.im, a.re*b.im + a.im*b.re ); +} + +template static inline +Complex<_Tp> operator * (const Complex<_Tp>& a, _Tp b) +{ + return Complex<_Tp>( a.re*b, a.im*b ); +} + +template static inline +Complex<_Tp> operator * (_Tp b, const Complex<_Tp>& a) +{ + return Complex<_Tp>( a.re*b, a.im*b ); +} + +template static inline +Complex<_Tp> operator + (const Complex<_Tp>& a, _Tp b) +{ + return Complex<_Tp>( a.re + b, a.im ); +} + +template static inline +Complex<_Tp> operator - (const Complex<_Tp>& a, _Tp b) +{ return Complex<_Tp>( a.re - b, a.im ); } + +template static inline +Complex<_Tp> operator + (_Tp b, const Complex<_Tp>& a) +{ + return Complex<_Tp>( a.re + b, a.im ); +} + +template static inline +Complex<_Tp> operator - (_Tp b, const Complex<_Tp>& a) +{ + return Complex<_Tp>( b - a.re, -a.im ); +} + +template static inline +Complex<_Tp>& operator += (Complex<_Tp>& a, _Tp b) +{ + a.re += b; return a; +} + +template static inline +Complex<_Tp>& operator -= (Complex<_Tp>& a, _Tp b) +{ + a.re -= b; return a; +} + +template static inline +Complex<_Tp>& operator *= (Complex<_Tp>& a, _Tp b) +{ + a.re *= b; a.im *= b; return a; +} + +template static inline +double abs(const Complex<_Tp>& a) +{ + return std::sqrt( (double)a.re*a.re + (double)a.im*a.im); +} + +template static inline +Complex<_Tp> operator / (const Complex<_Tp>& a, const Complex<_Tp>& b) +{ + double t = 1./((double)b.re*b.re + (double)b.im*b.im); + return Complex<_Tp>( (_Tp)((a.re*b.re + a.im*b.im)*t), + (_Tp)((-a.re*b.im + a.im*b.re)*t) ); +} + +template static inline +Complex<_Tp>& operator /= (Complex<_Tp>& a, const Complex<_Tp>& b) +{ + a = a / b; + return a; +} + +template static inline +Complex<_Tp> operator / (const Complex<_Tp>& a, _Tp b) +{ + _Tp t = (_Tp)1/b; + return Complex<_Tp>( a.re*t, a.im*t ); +} + +template static inline +Complex<_Tp> operator / (_Tp b, const Complex<_Tp>& a) +{ + return Complex<_Tp>(b)/a; +} + +template static inline +Complex<_Tp> operator /= (const Complex<_Tp>& a, _Tp b) +{ + _Tp t = (_Tp)1/b; + a.re *= t; a.im *= t; return a; +} + + + +//////////////////////////////// 2D Point /////////////////////////////// + +template inline +Point_<_Tp>::Point_() + : x(0), y(0) {} + +template inline +Point_<_Tp>::Point_(_Tp _x, _Tp _y) + : x(_x), y(_y) {} + +template inline +Point_<_Tp>::Point_(const Point_& pt) + : x(pt.x), y(pt.y) {} + +template inline +Point_<_Tp>::Point_(Point_&& pt) CV_NOEXCEPT + : x(std::move(pt.x)), y(std::move(pt.y)) {} + +template inline +Point_<_Tp>::Point_(const Size_<_Tp>& sz) + : x(sz.width), y(sz.height) {} + +template inline +Point_<_Tp>::Point_(const Vec<_Tp,2>& v) + : x(v[0]), y(v[1]) {} + +template inline +Point_<_Tp>& Point_<_Tp>::operator = (const Point_& pt) +{ + x = pt.x; y = pt.y; + return *this; +} + +template inline +Point_<_Tp>& Point_<_Tp>::operator = (Point_&& pt) CV_NOEXCEPT +{ + x = std::move(pt.x); y = std::move(pt.y); + return *this; +} + +template template inline +Point_<_Tp>::operator Point_<_Tp2>() const +{ + return Point_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y)); +} + +template inline +Point_<_Tp>::operator Vec<_Tp, 2>() const +{ + return Vec<_Tp, 2>(x, y); +} + +template inline +_Tp Point_<_Tp>::dot(const Point_& pt) const +{ + return saturate_cast<_Tp>(x*pt.x + y*pt.y); +} + +template inline +double Point_<_Tp>::ddot(const Point_& pt) const +{ + return (double)x*pt.x + (double)y*pt.y; +} + +template inline +double Point_<_Tp>::cross(const Point_& pt) const +{ + return (double)x*pt.y - (double)y*pt.x; +} + +template inline bool +Point_<_Tp>::inside( const Rect_<_Tp>& r ) const +{ + return r.contains(*this); +} + + +template static inline +Point_<_Tp>& operator += (Point_<_Tp>& a, const Point_<_Tp>& b) +{ + a.x += b.x; + a.y += b.y; + return a; +} + +template static inline +Point_<_Tp>& operator -= (Point_<_Tp>& a, const Point_<_Tp>& b) +{ + a.x -= b.x; + a.y -= b.y; + return a; +} + +template static inline +Point_<_Tp>& operator *= (Point_<_Tp>& a, int b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + return a; +} + +template static inline +Point_<_Tp>& operator *= (Point_<_Tp>& a, float b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + return a; +} + +template static inline +Point_<_Tp>& operator *= (Point_<_Tp>& a, double b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + return a; +} + +template static inline +Point_<_Tp>& operator /= (Point_<_Tp>& a, int b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + return a; +} + +template static inline +Point_<_Tp>& operator /= (Point_<_Tp>& a, float b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + return a; +} + +template static inline +Point_<_Tp>& operator /= (Point_<_Tp>& a, double b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + return a; +} + +template static inline +double norm(const Point_<_Tp>& pt) +{ + return std::sqrt((double)pt.x*pt.x + (double)pt.y*pt.y); +} + +template static inline +bool operator == (const Point_<_Tp>& a, const Point_<_Tp>& b) +{ + return a.x == b.x && a.y == b.y; +} + +template static inline +bool operator != (const Point_<_Tp>& a, const Point_<_Tp>& b) +{ + return a.x != b.x || a.y != b.y; +} + +template static inline +Point_<_Tp> operator + (const Point_<_Tp>& a, const Point_<_Tp>& b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(a.x + b.x), saturate_cast<_Tp>(a.y + b.y) ); +} + +template static inline +Point_<_Tp> operator - (const Point_<_Tp>& a, const Point_<_Tp>& b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(a.x - b.x), saturate_cast<_Tp>(a.y - b.y) ); +} + +template static inline +Point_<_Tp> operator - (const Point_<_Tp>& a) +{ + return Point_<_Tp>( saturate_cast<_Tp>(-a.x), saturate_cast<_Tp>(-a.y) ); +} + +template static inline +Point_<_Tp> operator * (const Point_<_Tp>& a, int b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); +} + +template static inline +Point_<_Tp> operator * (int a, const Point_<_Tp>& b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); +} + +template static inline +Point_<_Tp> operator * (const Point_<_Tp>& a, float b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); +} + +template static inline +Point_<_Tp> operator * (float a, const Point_<_Tp>& b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); +} + +template static inline +Point_<_Tp> operator * (const Point_<_Tp>& a, double b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b) ); +} + +template static inline +Point_<_Tp> operator * (double a, const Point_<_Tp>& b) +{ + return Point_<_Tp>( saturate_cast<_Tp>(b.x*a), saturate_cast<_Tp>(b.y*a) ); +} + +template static inline +Point_<_Tp> operator * (const Matx<_Tp, 2, 2>& a, const Point_<_Tp>& b) +{ + Matx<_Tp, 2, 1> tmp = a * Vec<_Tp,2>(b.x, b.y); + return Point_<_Tp>(tmp.val[0], tmp.val[1]); +} + +template static inline +Point3_<_Tp> operator * (const Matx<_Tp, 3, 3>& a, const Point_<_Tp>& b) +{ + Matx<_Tp, 3, 1> tmp = a * Vec<_Tp,3>(b.x, b.y, 1); + return Point3_<_Tp>(tmp.val[0], tmp.val[1], tmp.val[2]); +} + +template static inline +Point_<_Tp> operator / (const Point_<_Tp>& a, int b) +{ + Point_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + +template static inline +Point_<_Tp> operator / (const Point_<_Tp>& a, float b) +{ + Point_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + +template static inline +Point_<_Tp> operator / (const Point_<_Tp>& a, double b) +{ + Point_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + + +template static inline _AccTp normL2Sqr(const Point_& pt); +template static inline _AccTp normL2Sqr(const Point_& pt); +template static inline _AccTp normL2Sqr(const Point_& pt); +template static inline _AccTp normL2Sqr(const Point_& pt); + +template<> inline int normL2Sqr(const Point_& pt) { return pt.dot(pt); } +template<> inline int64 normL2Sqr(const Point_& pt) { return pt.dot(pt); } +template<> inline float normL2Sqr(const Point_& pt) { return pt.dot(pt); } +template<> inline double normL2Sqr(const Point_& pt) { return pt.dot(pt); } + +template<> inline double normL2Sqr(const Point_& pt) { return pt.ddot(pt); } +template<> inline double normL2Sqr(const Point_& pt) { return pt.ddot(pt); } + + + +//////////////////////////////// 3D Point /////////////////////////////// + +template inline +Point3_<_Tp>::Point3_() + : x(0), y(0), z(0) {} + +template inline +Point3_<_Tp>::Point3_(_Tp _x, _Tp _y, _Tp _z) + : x(_x), y(_y), z(_z) {} + +template inline +Point3_<_Tp>::Point3_(const Point3_& pt) + : x(pt.x), y(pt.y), z(pt.z) {} + +template inline +Point3_<_Tp>::Point3_(Point3_&& pt) CV_NOEXCEPT + : x(std::move(pt.x)), y(std::move(pt.y)), z(std::move(pt.z)) {} + +template inline +Point3_<_Tp>::Point3_(const Point_<_Tp>& pt) + : x(pt.x), y(pt.y), z(_Tp()) {} + +template inline +Point3_<_Tp>::Point3_(const Vec<_Tp, 3>& v) + : x(v[0]), y(v[1]), z(v[2]) {} + +template template inline +Point3_<_Tp>::operator Point3_<_Tp2>() const +{ + return Point3_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y), saturate_cast<_Tp2>(z)); +} + +template inline +Point3_<_Tp>::operator Vec<_Tp, 3>() const +{ + return Vec<_Tp, 3>(x, y, z); +} + +template inline +Point3_<_Tp>& Point3_<_Tp>::operator = (const Point3_& pt) +{ + x = pt.x; y = pt.y; z = pt.z; + return *this; +} + +template inline +Point3_<_Tp>& Point3_<_Tp>::operator = (Point3_&& pt) CV_NOEXCEPT +{ + x = std::move(pt.x); y = std::move(pt.y); z = std::move(pt.z); + return *this; +} + +template inline +_Tp Point3_<_Tp>::dot(const Point3_& pt) const +{ + return saturate_cast<_Tp>(x*pt.x + y*pt.y + z*pt.z); +} + +template inline +double Point3_<_Tp>::ddot(const Point3_& pt) const +{ + return (double)x*pt.x + (double)y*pt.y + (double)z*pt.z; +} + +template inline +Point3_<_Tp> Point3_<_Tp>::cross(const Point3_<_Tp>& pt) const +{ + return Point3_<_Tp>(y*pt.z - z*pt.y, z*pt.x - x*pt.z, x*pt.y - y*pt.x); +} + + +template static inline +Point3_<_Tp>& operator += (Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + a.x += b.x; + a.y += b.y; + a.z += b.z; + return a; +} + +template static inline +Point3_<_Tp>& operator -= (Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + a.x -= b.x; + a.y -= b.y; + a.z -= b.z; + return a; +} + +template static inline +Point3_<_Tp>& operator *= (Point3_<_Tp>& a, int b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + a.z = saturate_cast<_Tp>(a.z * b); + return a; +} + +template static inline +Point3_<_Tp>& operator *= (Point3_<_Tp>& a, float b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + a.z = saturate_cast<_Tp>(a.z * b); + return a; +} + +template static inline +Point3_<_Tp>& operator *= (Point3_<_Tp>& a, double b) +{ + a.x = saturate_cast<_Tp>(a.x * b); + a.y = saturate_cast<_Tp>(a.y * b); + a.z = saturate_cast<_Tp>(a.z * b); + return a; +} + +template static inline +Point3_<_Tp>& operator /= (Point3_<_Tp>& a, int b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + a.z = saturate_cast<_Tp>(a.z / b); + return a; +} + +template static inline +Point3_<_Tp>& operator /= (Point3_<_Tp>& a, float b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + a.z = saturate_cast<_Tp>(a.z / b); + return a; +} + +template static inline +Point3_<_Tp>& operator /= (Point3_<_Tp>& a, double b) +{ + a.x = saturate_cast<_Tp>(a.x / b); + a.y = saturate_cast<_Tp>(a.y / b); + a.z = saturate_cast<_Tp>(a.z / b); + return a; +} + +template static inline +double norm(const Point3_<_Tp>& pt) +{ + return std::sqrt((double)pt.x*pt.x + (double)pt.y*pt.y + (double)pt.z*pt.z); +} + +template static inline +bool operator == (const Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + return a.x == b.x && a.y == b.y && a.z == b.z; +} + +template static inline +bool operator != (const Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + return a.x != b.x || a.y != b.y || a.z != b.z; +} + +template static inline +Point3_<_Tp> operator + (const Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(a.x + b.x), saturate_cast<_Tp>(a.y + b.y), saturate_cast<_Tp>(a.z + b.z)); +} + +template static inline +Point3_<_Tp> operator - (const Point3_<_Tp>& a, const Point3_<_Tp>& b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(a.x - b.x), saturate_cast<_Tp>(a.y - b.y), saturate_cast<_Tp>(a.z - b.z)); +} + +template static inline +Point3_<_Tp> operator - (const Point3_<_Tp>& a) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(-a.x), saturate_cast<_Tp>(-a.y), saturate_cast<_Tp>(-a.z) ); +} + +template static inline +Point3_<_Tp> operator * (const Point3_<_Tp>& a, int b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(a.x*b), saturate_cast<_Tp>(a.y*b), saturate_cast<_Tp>(a.z*b) ); +} + +template static inline +Point3_<_Tp> operator * (int a, const Point3_<_Tp>& b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(b.x * a), saturate_cast<_Tp>(b.y * a), saturate_cast<_Tp>(b.z * a) ); +} + +template static inline +Point3_<_Tp> operator * (const Point3_<_Tp>& a, float b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(a.x * b), saturate_cast<_Tp>(a.y * b), saturate_cast<_Tp>(a.z * b) ); +} + +template static inline +Point3_<_Tp> operator * (float a, const Point3_<_Tp>& b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(b.x * a), saturate_cast<_Tp>(b.y * a), saturate_cast<_Tp>(b.z * a) ); +} + +template static inline +Point3_<_Tp> operator * (const Point3_<_Tp>& a, double b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(a.x * b), saturate_cast<_Tp>(a.y * b), saturate_cast<_Tp>(a.z * b) ); +} + +template static inline +Point3_<_Tp> operator * (double a, const Point3_<_Tp>& b) +{ + return Point3_<_Tp>( saturate_cast<_Tp>(b.x * a), saturate_cast<_Tp>(b.y * a), saturate_cast<_Tp>(b.z * a) ); +} + +template static inline +Point3_<_Tp> operator * (const Matx<_Tp, 3, 3>& a, const Point3_<_Tp>& b) +{ + Matx<_Tp, 3, 1> tmp = a * Vec<_Tp,3>(b.x, b.y, b.z); + return Point3_<_Tp>(tmp.val[0], tmp.val[1], tmp.val[2]); +} + +template static inline +Matx<_Tp, 4, 1> operator * (const Matx<_Tp, 4, 4>& a, const Point3_<_Tp>& b) +{ + return a * Matx<_Tp, 4, 1>(b.x, b.y, b.z, 1); +} + +template static inline +Point3_<_Tp> operator / (const Point3_<_Tp>& a, int b) +{ + Point3_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + +template static inline +Point3_<_Tp> operator / (const Point3_<_Tp>& a, float b) +{ + Point3_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + +template static inline +Point3_<_Tp> operator / (const Point3_<_Tp>& a, double b) +{ + Point3_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + + + +////////////////////////////////// Size ///////////////////////////////// + +template inline +Size_<_Tp>::Size_() + : width(0), height(0) {} + +template inline +Size_<_Tp>::Size_(_Tp _width, _Tp _height) + : width(_width), height(_height) {} + +template inline +Size_<_Tp>::Size_(const Size_& sz) + : width(sz.width), height(sz.height) {} + +template inline +Size_<_Tp>::Size_(Size_&& sz) CV_NOEXCEPT + : width(std::move(sz.width)), height(std::move(sz.height)) {} + +template inline +Size_<_Tp>::Size_(const Point_<_Tp>& pt) + : width(pt.x), height(pt.y) {} + +template template inline +Size_<_Tp>::operator Size_<_Tp2>() const +{ + return Size_<_Tp2>(saturate_cast<_Tp2>(width), saturate_cast<_Tp2>(height)); +} + +template inline +Size_<_Tp>& Size_<_Tp>::operator = (const Size_<_Tp>& sz) +{ + width = sz.width; height = sz.height; + return *this; +} + +template inline +Size_<_Tp>& Size_<_Tp>::operator = (Size_<_Tp>&& sz) CV_NOEXCEPT +{ + width = std::move(sz.width); height = std::move(sz.height); + return *this; +} + +template inline +_Tp Size_<_Tp>::area() const +{ + const _Tp result = width * height; + CV_DbgAssert(!std::numeric_limits<_Tp>::is_integer + || width == 0 || result / width == height); // make sure the result fits in the return value + return result; +} + +template inline +double Size_<_Tp>::aspectRatio() const +{ + return width / static_cast(height); +} + +template inline +bool Size_<_Tp>::empty() const +{ + return width <= 0 || height <= 0; +} + + +template static inline +Size_<_Tp>& operator *= (Size_<_Tp>& a, _Tp b) +{ + a.width *= b; + a.height *= b; + return a; +} + +template static inline +Size_<_Tp> operator * (const Size_<_Tp>& a, _Tp b) +{ + Size_<_Tp> tmp(a); + tmp *= b; + return tmp; +} + +template static inline +Size_<_Tp>& operator /= (Size_<_Tp>& a, _Tp b) +{ + a.width /= b; + a.height /= b; + return a; +} + +template static inline +Size_<_Tp> operator / (const Size_<_Tp>& a, _Tp b) +{ + Size_<_Tp> tmp(a); + tmp /= b; + return tmp; +} + +template static inline +Size_<_Tp>& operator += (Size_<_Tp>& a, const Size_<_Tp>& b) +{ + a.width += b.width; + a.height += b.height; + return a; +} + +template static inline +Size_<_Tp> operator + (const Size_<_Tp>& a, const Size_<_Tp>& b) +{ + Size_<_Tp> tmp(a); + tmp += b; + return tmp; +} + +template static inline +Size_<_Tp>& operator -= (Size_<_Tp>& a, const Size_<_Tp>& b) +{ + a.width -= b.width; + a.height -= b.height; + return a; +} + +template static inline +Size_<_Tp> operator - (const Size_<_Tp>& a, const Size_<_Tp>& b) +{ + Size_<_Tp> tmp(a); + tmp -= b; + return tmp; +} + +template static inline +bool operator == (const Size_<_Tp>& a, const Size_<_Tp>& b) +{ + return a.width == b.width && a.height == b.height; +} + +template static inline +bool operator != (const Size_<_Tp>& a, const Size_<_Tp>& b) +{ + return !(a == b); +} + + + +////////////////////////////////// Rect ///////////////////////////////// + +template inline +Rect_<_Tp>::Rect_() + : x(0), y(0), width(0), height(0) {} + +template inline +Rect_<_Tp>::Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height) + : x(_x), y(_y), width(_width), height(_height) {} + +template inline +Rect_<_Tp>::Rect_(const Rect_<_Tp>& r) + : x(r.x), y(r.y), width(r.width), height(r.height) {} + +template inline +Rect_<_Tp>::Rect_(Rect_<_Tp>&& r) CV_NOEXCEPT + : x(std::move(r.x)), y(std::move(r.y)), width(std::move(r.width)), height(std::move(r.height)) {} + +template inline +Rect_<_Tp>::Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz) + : x(org.x), y(org.y), width(sz.width), height(sz.height) {} + +template inline +Rect_<_Tp>::Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2) +{ + x = std::min(pt1.x, pt2.x); + y = std::min(pt1.y, pt2.y); + width = std::max(pt1.x, pt2.x) - x; + height = std::max(pt1.y, pt2.y) - y; +} + +template inline +Rect_<_Tp>& Rect_<_Tp>::operator = ( const Rect_<_Tp>& r ) +{ + x = r.x; + y = r.y; + width = r.width; + height = r.height; + return *this; +} + +template inline +Rect_<_Tp>& Rect_<_Tp>::operator = ( Rect_<_Tp>&& r ) CV_NOEXCEPT +{ + x = std::move(r.x); + y = std::move(r.y); + width = std::move(r.width); + height = std::move(r.height); + return *this; +} + +template inline +Point_<_Tp> Rect_<_Tp>::tl() const +{ + return Point_<_Tp>(x,y); +} + +template inline +Point_<_Tp> Rect_<_Tp>::br() const +{ + return Point_<_Tp>(x + width, y + height); +} + +template inline +Size_<_Tp> Rect_<_Tp>::size() const +{ + return Size_<_Tp>(width, height); +} + +template inline +_Tp Rect_<_Tp>::area() const +{ + const _Tp result = width * height; + CV_DbgAssert(!std::numeric_limits<_Tp>::is_integer + || width == 0 || result / width == height); // make sure the result fits in the return value + return result; +} + +template inline +bool Rect_<_Tp>::empty() const +{ + return width <= 0 || height <= 0; +} + +template template inline +Rect_<_Tp>::operator Rect_<_Tp2>() const +{ + return Rect_<_Tp2>(saturate_cast<_Tp2>(x), saturate_cast<_Tp2>(y), saturate_cast<_Tp2>(width), saturate_cast<_Tp2>(height)); +} + +template inline +bool Rect_<_Tp>::contains(const Point_<_Tp>& pt) const +{ + return x <= pt.x && pt.x < x + width && y <= pt.y && pt.y < y + height; +} + + +template static inline +Rect_<_Tp>& operator += ( Rect_<_Tp>& a, const Point_<_Tp>& b ) +{ + a.x += b.x; + a.y += b.y; + return a; +} + +template static inline +Rect_<_Tp>& operator -= ( Rect_<_Tp>& a, const Point_<_Tp>& b ) +{ + a.x -= b.x; + a.y -= b.y; + return a; +} + +template static inline +Rect_<_Tp>& operator += ( Rect_<_Tp>& a, const Size_<_Tp>& b ) +{ + a.width += b.width; + a.height += b.height; + return a; +} + +template static inline +Rect_<_Tp>& operator -= ( Rect_<_Tp>& a, const Size_<_Tp>& b ) +{ + const _Tp width = a.width - b.width; + const _Tp height = a.height - b.height; + CV_DbgAssert(width >= 0 && height >= 0); + a.width = width; + a.height = height; + return a; +} + +template static inline +Rect_<_Tp>& operator &= ( Rect_<_Tp>& a, const Rect_<_Tp>& b ) +{ + _Tp x1 = std::max(a.x, b.x); + _Tp y1 = std::max(a.y, b.y); + a.width = std::min(a.x + a.width, b.x + b.width) - x1; + a.height = std::min(a.y + a.height, b.y + b.height) - y1; + a.x = x1; + a.y = y1; + if( a.width <= 0 || a.height <= 0 ) + a = Rect(); + return a; +} + +template static inline +Rect_<_Tp>& operator |= ( Rect_<_Tp>& a, const Rect_<_Tp>& b ) +{ + if (a.empty()) { + a = b; + } + else if (!b.empty()) { + _Tp x1 = std::min(a.x, b.x); + _Tp y1 = std::min(a.y, b.y); + a.width = std::max(a.x + a.width, b.x + b.width) - x1; + a.height = std::max(a.y + a.height, b.y + b.height) - y1; + a.x = x1; + a.y = y1; + } + return a; +} + +template static inline +bool operator == (const Rect_<_Tp>& a, const Rect_<_Tp>& b) +{ + return a.x == b.x && a.y == b.y && a.width == b.width && a.height == b.height; +} + +template static inline +bool operator != (const Rect_<_Tp>& a, const Rect_<_Tp>& b) +{ + return a.x != b.x || a.y != b.y || a.width != b.width || a.height != b.height; +} + +template static inline +Rect_<_Tp> operator + (const Rect_<_Tp>& a, const Point_<_Tp>& b) +{ + return Rect_<_Tp>( a.x + b.x, a.y + b.y, a.width, a.height ); +} + +template static inline +Rect_<_Tp> operator - (const Rect_<_Tp>& a, const Point_<_Tp>& b) +{ + return Rect_<_Tp>( a.x - b.x, a.y - b.y, a.width, a.height ); +} + +template static inline +Rect_<_Tp> operator + (const Rect_<_Tp>& a, const Size_<_Tp>& b) +{ + return Rect_<_Tp>( a.x, a.y, a.width + b.width, a.height + b.height ); +} + +template static inline +Rect_<_Tp> operator - (const Rect_<_Tp>& a, const Size_<_Tp>& b) +{ + const _Tp width = a.width - b.width; + const _Tp height = a.height - b.height; + CV_DbgAssert(width >= 0 && height >= 0); + return Rect_<_Tp>( a.x, a.y, width, height ); +} + +template static inline +Rect_<_Tp> operator & (const Rect_<_Tp>& a, const Rect_<_Tp>& b) +{ + Rect_<_Tp> c = a; + return c &= b; +} + +template static inline +Rect_<_Tp> operator | (const Rect_<_Tp>& a, const Rect_<_Tp>& b) +{ + Rect_<_Tp> c = a; + return c |= b; +} + +/** + * @brief measure dissimilarity between two sample sets + * + * computes the complement of the Jaccard Index as described in . + * For rectangles this reduces to computing the intersection over the union. + */ +template static inline +double jaccardDistance(const Rect_<_Tp>& a, const Rect_<_Tp>& b) { + _Tp Aa = a.area(); + _Tp Ab = b.area(); + + if ((Aa + Ab) <= std::numeric_limits<_Tp>::epsilon()) { + // jaccard_index = 1 -> distance = 0 + return 0.0; + } + + double Aab = (a & b).area(); + // distance = 1 - jaccard_index + return 1.0 - Aab / (Aa + Ab - Aab); +} + +////////////////////////////// RotatedRect ////////////////////////////// + +inline +RotatedRect::RotatedRect() + : center(), size(), angle(0) {} + +inline +RotatedRect::RotatedRect(const Point2f& _center, const Size2f& _size, float _angle) + : center(_center), size(_size), angle(_angle) {} + +///////////////////////////////// Range ///////////////////////////////// + +inline +Range::Range() + : start(0), end(0) {} + +inline +Range::Range(int _start, int _end) + : start(_start), end(_end) {} + +inline +int Range::size() const +{ + return end - start; +} + +inline +bool Range::empty() const +{ + return start == end; +} + +inline +Range Range::all() +{ + return Range(INT_MIN, INT_MAX); +} + + +static inline +bool operator == (const Range& r1, const Range& r2) +{ + return r1.start == r2.start && r1.end == r2.end; +} + +static inline +bool operator != (const Range& r1, const Range& r2) +{ + return !(r1 == r2); +} + +static inline +bool operator !(const Range& r) +{ + return r.start == r.end; +} + +static inline +Range operator & (const Range& r1, const Range& r2) +{ + Range r(std::max(r1.start, r2.start), std::min(r1.end, r2.end)); + r.end = std::max(r.end, r.start); + return r; +} + +static inline +Range& operator &= (Range& r1, const Range& r2) +{ + r1 = r1 & r2; + return r1; +} + +static inline +Range operator + (const Range& r1, int delta) +{ + return Range(r1.start + delta, r1.end + delta); +} + +static inline +Range operator + (int delta, const Range& r1) +{ + return Range(r1.start + delta, r1.end + delta); +} + +static inline +Range operator - (const Range& r1, int delta) +{ + return r1 + (-delta); +} + + + +///////////////////////////////// Scalar //////////////////////////////// + +template inline +Scalar_<_Tp>::Scalar_() +{ + this->val[0] = this->val[1] = this->val[2] = this->val[3] = 0; +} + +template inline +Scalar_<_Tp>::Scalar_(_Tp v0, _Tp v1, _Tp v2, _Tp v3) +{ + this->val[0] = v0; + this->val[1] = v1; + this->val[2] = v2; + this->val[3] = v3; +} + +template inline +Scalar_<_Tp>::Scalar_(const Scalar_<_Tp>& s) : Vec<_Tp, 4>(s) { +} + +template inline +Scalar_<_Tp>::Scalar_(Scalar_<_Tp>&& s) CV_NOEXCEPT { + this->val[0] = std::move(s.val[0]); + this->val[1] = std::move(s.val[1]); + this->val[2] = std::move(s.val[2]); + this->val[3] = std::move(s.val[3]); +} + +template inline +Scalar_<_Tp>& Scalar_<_Tp>::operator=(const Scalar_<_Tp>& s) { + this->val[0] = s.val[0]; + this->val[1] = s.val[1]; + this->val[2] = s.val[2]; + this->val[3] = s.val[3]; + return *this; +} + +template inline +Scalar_<_Tp>& Scalar_<_Tp>::operator=(Scalar_<_Tp>&& s) CV_NOEXCEPT { + this->val[0] = std::move(s.val[0]); + this->val[1] = std::move(s.val[1]); + this->val[2] = std::move(s.val[2]); + this->val[3] = std::move(s.val[3]); + return *this; +} + +template template inline +Scalar_<_Tp>::Scalar_(const Vec<_Tp2, cn>& v) +{ + int i; + for( i = 0; i < (cn < 4 ? cn : 4); i++ ) + this->val[i] = cv::saturate_cast<_Tp>(v.val[i]); + for( ; i < 4; i++ ) + this->val[i] = 0; +} + +template inline +Scalar_<_Tp>::Scalar_(_Tp v0) +{ + this->val[0] = v0; + this->val[1] = this->val[2] = this->val[3] = 0; +} + +template inline +Scalar_<_Tp> Scalar_<_Tp>::all(_Tp v0) +{ + return Scalar_<_Tp>(v0, v0, v0, v0); +} + + +template inline +Scalar_<_Tp> Scalar_<_Tp>::mul(const Scalar_<_Tp>& a, double scale ) const +{ + return Scalar_<_Tp>(saturate_cast<_Tp>(this->val[0] * a.val[0] * scale), + saturate_cast<_Tp>(this->val[1] * a.val[1] * scale), + saturate_cast<_Tp>(this->val[2] * a.val[2] * scale), + saturate_cast<_Tp>(this->val[3] * a.val[3] * scale)); +} + +template inline +Scalar_<_Tp> Scalar_<_Tp>::conj() const +{ + return Scalar_<_Tp>(saturate_cast<_Tp>( this->val[0]), + saturate_cast<_Tp>(-this->val[1]), + saturate_cast<_Tp>(-this->val[2]), + saturate_cast<_Tp>(-this->val[3])); +} + +template inline +bool Scalar_<_Tp>::isReal() const +{ + return this->val[1] == 0 && this->val[2] == 0 && this->val[3] == 0; +} + + +template template inline +Scalar_<_Tp>::operator Scalar_() const +{ + return Scalar_(saturate_cast(this->val[0]), + saturate_cast(this->val[1]), + saturate_cast(this->val[2]), + saturate_cast(this->val[3])); +} + + +template static inline +Scalar_<_Tp>& operator += (Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + a.val[0] += b.val[0]; + a.val[1] += b.val[1]; + a.val[2] += b.val[2]; + a.val[3] += b.val[3]; + return a; +} + +template static inline +Scalar_<_Tp>& operator -= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + a.val[0] -= b.val[0]; + a.val[1] -= b.val[1]; + a.val[2] -= b.val[2]; + a.val[3] -= b.val[3]; + return a; +} + +template static inline +Scalar_<_Tp>& operator *= ( Scalar_<_Tp>& a, _Tp v ) +{ + a.val[0] *= v; + a.val[1] *= v; + a.val[2] *= v; + a.val[3] *= v; + return a; +} + +template static inline +bool operator == ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b ) +{ + return a.val[0] == b.val[0] && a.val[1] == b.val[1] && + a.val[2] == b.val[2] && a.val[3] == b.val[3]; +} + +template static inline +bool operator != ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b ) +{ + return a.val[0] != b.val[0] || a.val[1] != b.val[1] || + a.val[2] != b.val[2] || a.val[3] != b.val[3]; +} + +template static inline +Scalar_<_Tp> operator + (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + return Scalar_<_Tp>(a.val[0] + b.val[0], + a.val[1] + b.val[1], + a.val[2] + b.val[2], + a.val[3] + b.val[3]); +} + +template static inline +Scalar_<_Tp> operator - (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + return Scalar_<_Tp>(saturate_cast<_Tp>(a.val[0] - b.val[0]), + saturate_cast<_Tp>(a.val[1] - b.val[1]), + saturate_cast<_Tp>(a.val[2] - b.val[2]), + saturate_cast<_Tp>(a.val[3] - b.val[3])); +} + +template static inline +Scalar_<_Tp> operator * (const Scalar_<_Tp>& a, _Tp alpha) +{ + return Scalar_<_Tp>(a.val[0] * alpha, + a.val[1] * alpha, + a.val[2] * alpha, + a.val[3] * alpha); +} + +template static inline +Scalar_<_Tp> operator * (_Tp alpha, const Scalar_<_Tp>& a) +{ + return a*alpha; +} + +template static inline +Scalar_<_Tp> operator - (const Scalar_<_Tp>& a) +{ + return Scalar_<_Tp>(saturate_cast<_Tp>(-a.val[0]), + saturate_cast<_Tp>(-a.val[1]), + saturate_cast<_Tp>(-a.val[2]), + saturate_cast<_Tp>(-a.val[3])); +} + + +template static inline +Scalar_<_Tp> operator * (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + return Scalar_<_Tp>(saturate_cast<_Tp>(a[0]*b[0] - a[1]*b[1] - a[2]*b[2] - a[3]*b[3]), + saturate_cast<_Tp>(a[0]*b[1] + a[1]*b[0] + a[2]*b[3] - a[3]*b[2]), + saturate_cast<_Tp>(a[0]*b[2] - a[1]*b[3] + a[2]*b[0] + a[3]*b[1]), + saturate_cast<_Tp>(a[0]*b[3] + a[1]*b[2] - a[2]*b[1] + a[3]*b[0])); +} + +template static inline +Scalar_<_Tp>& operator *= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + a = a * b; + return a; +} + +template static inline +Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, _Tp alpha) +{ + return Scalar_<_Tp>(a.val[0] / alpha, + a.val[1] / alpha, + a.val[2] / alpha, + a.val[3] / alpha); +} + +template static inline +Scalar_ operator / (const Scalar_& a, float alpha) +{ + float s = 1 / alpha; + return Scalar_(a.val[0] * s, a.val[1] * s, a.val[2] * s, a.val[3] * s); +} + +template static inline +Scalar_ operator / (const Scalar_& a, double alpha) +{ + double s = 1 / alpha; + return Scalar_(a.val[0] * s, a.val[1] * s, a.val[2] * s, a.val[3] * s); +} + +template static inline +Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, _Tp alpha) +{ + a = a / alpha; + return a; +} + +template static inline +Scalar_<_Tp> operator / (_Tp a, const Scalar_<_Tp>& b) +{ + _Tp s = a / (b[0]*b[0] + b[1]*b[1] + b[2]*b[2] + b[3]*b[3]); + return b.conj() * s; +} + +template static inline +Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + return a * ((_Tp)1 / b); +} + +template static inline +Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b) +{ + a = a / b; + return a; +} + +template static inline +Scalar operator * (const Matx<_Tp, 4, 4>& a, const Scalar& b) +{ + Matx c((Matx)a, b, Matx_MatMulOp()); + return reinterpret_cast(c); +} + +template<> inline +Scalar operator * (const Matx& a, const Scalar& b) +{ + Matx c(a, b, Matx_MatMulOp()); + return reinterpret_cast(c); +} + + + +//////////////////////////////// KeyPoint /////////////////////////////// + +inline +KeyPoint::KeyPoint() + : pt(0,0), size(0), angle(-1), response(0), octave(0), class_id(-1) {} + +inline +KeyPoint::KeyPoint(Point2f _pt, float _size, float _angle, float _response, int _octave, int _class_id) + : pt(_pt), size(_size), angle(_angle), response(_response), octave(_octave), class_id(_class_id) {} + +inline +KeyPoint::KeyPoint(float x, float y, float _size, float _angle, float _response, int _octave, int _class_id) + : pt(x, y), size(_size), angle(_angle), response(_response), octave(_octave), class_id(_class_id) {} + + + +///////////////////////////////// DMatch //////////////////////////////// + +inline +DMatch::DMatch() + : queryIdx(-1), trainIdx(-1), imgIdx(-1), distance(FLT_MAX) {} + +inline +DMatch::DMatch(int _queryIdx, int _trainIdx, float _distance) + : queryIdx(_queryIdx), trainIdx(_trainIdx), imgIdx(-1), distance(_distance) {} + +inline +DMatch::DMatch(int _queryIdx, int _trainIdx, int _imgIdx, float _distance) + : queryIdx(_queryIdx), trainIdx(_trainIdx), imgIdx(_imgIdx), distance(_distance) {} + +inline +bool DMatch::operator < (const DMatch &m) const +{ + return distance < m.distance; +} + + + +////////////////////////////// TermCriteria ///////////////////////////// + +inline +TermCriteria::TermCriteria() + : type(0), maxCount(0), epsilon(0) {} + +inline +TermCriteria::TermCriteria(int _type, int _maxCount, double _epsilon) + : type(_type), maxCount(_maxCount), epsilon(_epsilon) {} + +//! @endcond + +} // cv + +#endif //OPENCV_CORE_TYPES_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/types_c.h b/LaiPuLaser/OpenCV/include/opencv2/core/types_c.h new file mode 100644 index 0000000..a095bc3 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/types_c.h @@ -0,0 +1,2120 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_TYPES_H +#define OPENCV_CORE_TYPES_H + +#if !defined(__OPENCV_BUILD) && !defined(CV__DISABLE_C_API_CTORS) +#define CV__ENABLE_C_API_CTORS // enable C API ctors (must be removed) +#endif + +//#define CV__VALIDATE_UNUNITIALIZED_VARS 1 // C++11 & GCC only + +#ifdef __cplusplus + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#define CV_STRUCT_INITIALIZER {0,} +#else +#if defined(__GNUC__) && __GNUC__ == 4 // GCC 4.x warns on "= {}" initialization, fixed in GCC 5.0 +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif +#define CV_STRUCT_INITIALIZER {} +#endif + +#else +#define CV_STRUCT_INITIALIZER {0} +#endif + + +#ifdef HAVE_IPL +# ifndef __IPL_H__ +# if defined _WIN32 +# include +# else +# include +# endif +# endif +#elif defined __IPL_H__ +# define HAVE_IPL +#endif + +#include "opencv2/core/cvdef.h" + +#ifndef SKIP_INCLUDES +#include +#include +#include +#include +#endif // SKIP_INCLUDES + +#if defined _WIN32 +# define CV_CDECL __cdecl +# define CV_STDCALL __stdcall +#else +# define CV_CDECL +# define CV_STDCALL +#endif + +#ifndef CV_DEFAULT +# ifdef __cplusplus +# define CV_DEFAULT(val) = val +# else +# define CV_DEFAULT(val) +# endif +#endif + +#ifndef CV_EXTERN_C_FUNCPTR +# ifdef __cplusplus +# define CV_EXTERN_C_FUNCPTR(x) extern "C" { typedef x; } +# else +# define CV_EXTERN_C_FUNCPTR(x) typedef x +# endif +#endif + +#ifndef CVAPI +# define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL +#endif + +#ifndef CV_IMPL +# define CV_IMPL CV_EXTERN_C +#endif + +#ifdef __cplusplus +# include "opencv2/core.hpp" +#endif + +/** @addtogroup core_c + @{ +*/ + +/** @brief This is the "metatype" used *only* as a function parameter. + +It denotes that the function accepts arrays of multiple types, such as IplImage*, CvMat* or even +CvSeq* sometimes. The particular array type is determined at runtime by analyzing the first 4 +bytes of the header. In C++ interface the role of CvArr is played by InputArray and OutputArray. + */ +typedef void CvArr; + +typedef int CVStatus; + +/** @see cv::Error::Code */ +enum { + CV_StsOk= 0, /**< everything is ok */ + CV_StsBackTrace= -1, /**< pseudo error for back trace */ + CV_StsError= -2, /**< unknown /unspecified error */ + CV_StsInternal= -3, /**< internal error (bad state) */ + CV_StsNoMem= -4, /**< insufficient memory */ + CV_StsBadArg= -5, /**< function arg/param is bad */ + CV_StsBadFunc= -6, /**< unsupported function */ + CV_StsNoConv= -7, /**< iter. didn't converge */ + CV_StsAutoTrace= -8, /**< tracing */ + CV_HeaderIsNull= -9, /**< image header is NULL */ + CV_BadImageSize= -10, /**< image size is invalid */ + CV_BadOffset= -11, /**< offset is invalid */ + CV_BadDataPtr= -12, /**/ + CV_BadStep= -13, /**< image step is wrong, this may happen for a non-continuous matrix */ + CV_BadModelOrChSeq= -14, /**/ + CV_BadNumChannels= -15, /**< bad number of channels, for example, some functions accept only single channel matrices */ + CV_BadNumChannel1U= -16, /**/ + CV_BadDepth= -17, /**< input image depth is not supported by the function */ + CV_BadAlphaChannel= -18, /**/ + CV_BadOrder= -19, /**< number of dimensions is out of range */ + CV_BadOrigin= -20, /**< incorrect input origin */ + CV_BadAlign= -21, /**< incorrect input align */ + CV_BadCallBack= -22, /**/ + CV_BadTileSize= -23, /**/ + CV_BadCOI= -24, /**< input COI is not supported */ + CV_BadROISize= -25, /**< incorrect input roi */ + CV_MaskIsTiled= -26, /**/ + CV_StsNullPtr= -27, /**< null pointer */ + CV_StsVecLengthErr= -28, /**< incorrect vector length */ + CV_StsFilterStructContentErr= -29, /**< incorrect filter structure content */ + CV_StsKernelStructContentErr= -30, /**< incorrect transform kernel content */ + CV_StsFilterOffsetErr= -31, /**< incorrect filter offset value */ + CV_StsBadSize= -201, /**< the input/output structure size is incorrect */ + CV_StsDivByZero= -202, /**< division by zero */ + CV_StsInplaceNotSupported= -203, /**< in-place operation is not supported */ + CV_StsObjectNotFound= -204, /**< request can't be completed */ + CV_StsUnmatchedFormats= -205, /**< formats of input/output arrays differ */ + CV_StsBadFlag= -206, /**< flag is wrong or not supported */ + CV_StsBadPoint= -207, /**< bad CvPoint */ + CV_StsBadMask= -208, /**< bad format of mask (neither 8uC1 nor 8sC1)*/ + CV_StsUnmatchedSizes= -209, /**< sizes of input/output structures do not match */ + CV_StsUnsupportedFormat= -210, /**< the data format/type is not supported by the function*/ + CV_StsOutOfRange= -211, /**< some of parameters are out of range */ + CV_StsParseError= -212, /**< invalid syntax/structure of the parsed file */ + CV_StsNotImplemented= -213, /**< the requested function/feature is not implemented */ + CV_StsBadMemBlock= -214, /**< an allocated block has been corrupted */ + CV_StsAssert= -215, /**< assertion failed */ + CV_GpuNotSupported= -216, /**< no CUDA support */ + CV_GpuApiCallError= -217, /**< GPU API call error */ + CV_OpenGlNotSupported= -218, /**< no OpenGL support */ + CV_OpenGlApiCallError= -219, /**< OpenGL API call error */ + CV_OpenCLApiCallError= -220, /**< OpenCL API call error */ + CV_OpenCLDoubleNotSupported= -221, + CV_OpenCLInitError= -222, /**< OpenCL initialization error */ + CV_OpenCLNoAMDBlasFft= -223 +}; + +/****************************************************************************************\ +* Common macros and inline functions * +\****************************************************************************************/ + +#define CV_SWAP(a,b,t) ((t) = (a), (a) = (b), (b) = (t)) + +/** min & max without jumps */ +#define CV_IMIN(a, b) ((a) ^ (((a)^(b)) & (((a) < (b)) - 1))) + +#define CV_IMAX(a, b) ((a) ^ (((a)^(b)) & (((a) > (b)) - 1))) + +/** absolute value without jumps */ +#ifndef __cplusplus +# define CV_IABS(a) (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0)) +#else +# define CV_IABS(a) abs(a) +#endif +#define CV_CMP(a,b) (((a) > (b)) - ((a) < (b))) +#define CV_SIGN(a) CV_CMP((a),0) + +#define cvInvSqrt(value) ((float)(1./sqrt(value))) +#define cvSqrt(value) ((float)sqrt(value)) + + +/*************** Random number generation *******************/ + +typedef uint64 CvRNG; + +#define CV_RNG_COEFF 4164903690U + +/** @brief Initializes a random number generator state. + +The function initializes a random number generator and returns the state. The pointer to the state +can be then passed to the cvRandInt, cvRandReal and cvRandArr functions. In the current +implementation a multiply-with-carry generator is used. +@param seed 64-bit value used to initiate a random sequence +@sa the C++ class RNG replaced CvRNG. + */ +CV_INLINE CvRNG cvRNG( int64 seed CV_DEFAULT(-1)) +{ + CvRNG rng = seed ? (uint64)seed : (uint64)(int64)-1; + return rng; +} + +/** @brief Returns a 32-bit unsigned integer and updates RNG. + +The function returns a uniformly-distributed random 32-bit unsigned integer and updates the RNG +state. It is similar to the rand() function from the C runtime library, except that OpenCV functions +always generates a 32-bit random number, regardless of the platform. +@param rng CvRNG state initialized by cvRNG. + */ +CV_INLINE unsigned cvRandInt( CvRNG* rng ) +{ + uint64 temp = *rng; + temp = (uint64)(unsigned)temp*CV_RNG_COEFF + (temp >> 32); + *rng = temp; + return (unsigned)temp; +} + +/** @brief Returns a floating-point random number and updates RNG. + +The function returns a uniformly-distributed random floating-point number between 0 and 1 (1 is not +included). +@param rng RNG state initialized by cvRNG + */ +CV_INLINE double cvRandReal( CvRNG* rng ) +{ + return cvRandInt(rng)*2.3283064365386962890625e-10 /* 2^-32 */; +} + +/****************************************************************************************\ +* Image type (IplImage) * +\****************************************************************************************/ + +#ifndef HAVE_IPL + +/* + * The following definitions (until #endif) + * is an extract from IPL headers. + * Copyright (c) 1995 Intel Corporation. + */ +#define IPL_DEPTH_SIGN 0x80000000 + +#define IPL_DEPTH_1U 1 +#define IPL_DEPTH_8U 8 +#define IPL_DEPTH_16U 16 +#define IPL_DEPTH_32F 32 + +#define IPL_DEPTH_8S (IPL_DEPTH_SIGN| 8) +#define IPL_DEPTH_16S (IPL_DEPTH_SIGN|16) +#define IPL_DEPTH_32S (IPL_DEPTH_SIGN|32) + +#define IPL_DATA_ORDER_PIXEL 0 +#define IPL_DATA_ORDER_PLANE 1 + +#define IPL_ORIGIN_TL 0 +#define IPL_ORIGIN_BL 1 + +#define IPL_ALIGN_4BYTES 4 +#define IPL_ALIGN_8BYTES 8 +#define IPL_ALIGN_16BYTES 16 +#define IPL_ALIGN_32BYTES 32 + +#define IPL_ALIGN_DWORD IPL_ALIGN_4BYTES +#define IPL_ALIGN_QWORD IPL_ALIGN_8BYTES + +#define IPL_BORDER_CONSTANT 0 +#define IPL_BORDER_REPLICATE 1 +#define IPL_BORDER_REFLECT 2 +#define IPL_BORDER_WRAP 3 + +#ifdef __cplusplus +typedef struct _IplImage IplImage; +CV_EXPORTS _IplImage cvIplImage(const cv::Mat& m); +#endif + +/** The IplImage is taken from the Intel Image Processing Library, in which the format is native. OpenCV +only supports a subset of possible IplImage formats, as outlined in the parameter list above. + +In addition to the above restrictions, OpenCV handles ROIs differently. OpenCV functions require +that the image size or ROI size of all source and destination images match exactly. On the other +hand, the Intel Image Processing Library processes the area of intersection between the source and +destination images (or ROIs), allowing them to vary independently. +*/ +typedef struct +_IplImage +{ + int nSize; /**< sizeof(IplImage) */ + int ID; /**< version (=0)*/ + int nChannels; /**< Most of OpenCV functions support 1,2,3 or 4 channels */ + int alphaChannel; /**< Ignored by OpenCV */ + int depth; /**< Pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, + IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported. */ + char colorModel[4]; /**< Ignored by OpenCV */ + char channelSeq[4]; /**< ditto */ + int dataOrder; /**< 0 - interleaved color channels, 1 - separate color channels. + cvCreateImage can only create interleaved images */ + int origin; /**< 0 - top-left origin, + 1 - bottom-left origin (Windows bitmaps style). */ + int align; /**< Alignment of image rows (4 or 8). + OpenCV ignores it and uses widthStep instead. */ + int width; /**< Image width in pixels. */ + int height; /**< Image height in pixels. */ + struct _IplROI *roi; /**< Image ROI. If NULL, the whole image is selected. */ + struct _IplImage *maskROI; /**< Must be NULL. */ + void *imageId; /**< " " */ + struct _IplTileInfo *tileInfo; /**< " " */ + int imageSize; /**< Image data size in bytes + (==image->height*image->widthStep + in case of interleaved data)*/ + char *imageData; /**< Pointer to aligned image data. */ + int widthStep; /**< Size of aligned image row in bytes. */ + int BorderMode[4]; /**< Ignored by OpenCV. */ + int BorderConst[4]; /**< Ditto. */ + char *imageDataOrigin; /**< Pointer to very origin of image data + (not necessarily aligned) - + needed for correct deallocation */ + +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + _IplImage() {} + _IplImage(const cv::Mat& m) { *this = cvIplImage(m); } +#endif +} +IplImage; + +CV_INLINE IplImage cvIplImage() +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + IplImage self = CV_STRUCT_INITIALIZER; self.nSize = sizeof(IplImage); return self; +#else + return _IplImage(); +#endif +} + +typedef struct _IplTileInfo IplTileInfo; + +typedef struct _IplROI +{ + int coi; /**< 0 - no COI (all channels are selected), 1 - 0th channel is selected ...*/ + int xOffset; + int yOffset; + int width; + int height; +} +IplROI; + +typedef struct _IplConvKernel +{ + int nCols; + int nRows; + int anchorX; + int anchorY; + int *values; + int nShiftR; +} +IplConvKernel; + +typedef struct _IplConvKernelFP +{ + int nCols; + int nRows; + int anchorX; + int anchorY; + float *values; +} +IplConvKernelFP; + +#define IPL_IMAGE_HEADER 1 +#define IPL_IMAGE_DATA 2 +#define IPL_IMAGE_ROI 4 + +#endif/*HAVE_IPL*/ + +/** extra border mode */ +#define IPL_BORDER_REFLECT_101 4 +#define IPL_BORDER_TRANSPARENT 5 + +#define IPL_IMAGE_MAGIC_VAL ((int)sizeof(IplImage)) +#define CV_TYPE_NAME_IMAGE "opencv-image" + +#define CV_IS_IMAGE_HDR(img) \ + ((img) != NULL && ((const IplImage*)(img))->nSize == sizeof(IplImage)) + +#define CV_IS_IMAGE(img) \ + (CV_IS_IMAGE_HDR(img) && ((IplImage*)img)->imageData != NULL) + +/** for storing double-precision + floating point data in IplImage's */ +#define IPL_DEPTH_64F 64 + +/** get reference to pixel at (col,row), + for multi-channel images (col) should be multiplied by number of channels */ +#define CV_IMAGE_ELEM( image, elemtype, row, col ) \ + (((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)]) + +/****************************************************************************************\ +* Matrix type (CvMat) * +\****************************************************************************************/ + +#define CV_AUTO_STEP 0x7fffffff +#define CV_WHOLE_ARR cvSlice( 0, 0x3fffffff ) + +#define CV_MAGIC_MASK 0xFFFF0000 +#define CV_MAT_MAGIC_VAL 0x42420000 +#define CV_TYPE_NAME_MAT "opencv-matrix" + +#ifdef __cplusplus +typedef struct CvMat CvMat; +CV_INLINE CvMat cvMat(const cv::Mat& m); +#endif + +/** Matrix elements are stored row by row. Element (i, j) (i - 0-based row index, j - 0-based column +index) of a matrix can be retrieved or modified using CV_MAT_ELEM macro: + + uchar pixval = CV_MAT_ELEM(grayimg, uchar, i, j) + CV_MAT_ELEM(cameraMatrix, float, 0, 2) = image.width*0.5f; + +To access multiple-channel matrices, you can use +CV_MAT_ELEM(matrix, type, i, j\*nchannels + channel_idx). + +@deprecated CvMat is now obsolete; consider using Mat instead. + */ +typedef struct CvMat +{ + int type; + int step; + + /* for internal use only */ + int* refcount; + int hdr_refcount; + + union + { + uchar* ptr; + short* s; + int* i; + float* fl; + double* db; + } data; + +#ifdef __cplusplus + union + { + int rows; + int height; + }; + + union + { + int cols; + int width; + }; +#else + int rows; + int cols; +#endif + +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvMat() {} + CvMat(const cv::Mat& m) { *this = cvMat(m); } +#endif +} +CvMat; + + +#define CV_IS_MAT_HDR(mat) \ + ((mat) != NULL && \ + (((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \ + ((const CvMat*)(mat))->cols > 0 && ((const CvMat*)(mat))->rows > 0) + +#define CV_IS_MAT_HDR_Z(mat) \ + ((mat) != NULL && \ + (((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \ + ((const CvMat*)(mat))->cols >= 0 && ((const CvMat*)(mat))->rows >= 0) + +#define CV_IS_MAT(mat) \ + (CV_IS_MAT_HDR(mat) && ((const CvMat*)(mat))->data.ptr != NULL) + +#define CV_IS_MASK_ARR(mat) \ + (((mat)->type & (CV_MAT_TYPE_MASK & ~CV_8SC1)) == 0) + +#define CV_ARE_TYPES_EQ(mat1, mat2) \ + ((((mat1)->type ^ (mat2)->type) & CV_MAT_TYPE_MASK) == 0) + +#define CV_ARE_CNS_EQ(mat1, mat2) \ + ((((mat1)->type ^ (mat2)->type) & CV_MAT_CN_MASK) == 0) + +#define CV_ARE_DEPTHS_EQ(mat1, mat2) \ + ((((mat1)->type ^ (mat2)->type) & CV_MAT_DEPTH_MASK) == 0) + +#define CV_ARE_SIZES_EQ(mat1, mat2) \ + ((mat1)->rows == (mat2)->rows && (mat1)->cols == (mat2)->cols) + +#define CV_IS_MAT_CONST(mat) \ + (((mat)->rows|(mat)->cols) == 1) + +#define IPL2CV_DEPTH(depth) \ + ((((CV_8U)+(CV_16U<<4)+(CV_32F<<8)+(CV_64F<<16)+(CV_8S<<20)+ \ + (CV_16S<<24)+(CV_32S<<28)) >> ((((depth) & 0xF0) >> 2) + \ + (((depth) & IPL_DEPTH_SIGN) ? 20 : 0))) & 15) + +/** Inline constructor. No data is allocated internally!!! + * (Use together with cvCreateData, or use cvCreateMat instead to + * get a matrix with allocated data): + */ +CV_INLINE CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL)) +{ + CvMat m; + + assert( (unsigned)CV_MAT_DEPTH(type) <= CV_64F ); + type = CV_MAT_TYPE(type); + m.type = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | type; + m.cols = cols; + m.rows = rows; + m.step = m.cols*CV_ELEM_SIZE(type); + m.data.ptr = (uchar*)data; + m.refcount = NULL; + m.hdr_refcount = 0; + + return m; +} + +#ifdef __cplusplus + +CV_INLINE CvMat cvMat(const cv::Mat& m) +{ + CvMat self; + CV_DbgAssert(m.dims <= 2); + self = cvMat(m.rows, m.dims == 1 ? 1 : m.cols, m.type(), m.data); + self.step = (int)m.step[0]; + self.type = (self.type & ~cv::Mat::CONTINUOUS_FLAG) | (m.flags & cv::Mat::CONTINUOUS_FLAG); + return self; +} +CV_INLINE CvMat cvMat() +{ +#if !defined(CV__ENABLE_C_API_CTORS) + CvMat self = CV_STRUCT_INITIALIZER; return self; +#else + return CvMat(); +#endif +} +CV_INLINE CvMat cvMat(const CvMat& m) +{ +#if !defined(CV__ENABLE_C_API_CTORS) + CvMat self = CV_STRUCT_INITIALIZER; memcpy(&self, &m, sizeof(self)); return self; +#else + return CvMat(m); +#endif +} + +#endif // __cplusplus + + +#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size ) \ + (assert( (unsigned)(row) < (unsigned)(mat).rows && \ + (unsigned)(col) < (unsigned)(mat).cols ), \ + (mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col)) + +#define CV_MAT_ELEM_PTR( mat, row, col ) \ + CV_MAT_ELEM_PTR_FAST( mat, row, col, CV_ELEM_SIZE((mat).type) ) + +#define CV_MAT_ELEM( mat, elemtype, row, col ) \ + (*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype))) + +/** @brief Returns the particular element of single-channel floating-point matrix. + +The function is a fast replacement for cvGetReal2D in the case of single-channel floating-point +matrices. It is faster because it is inline, it does fewer checks for array type and array element +type, and it checks for the row and column ranges only in debug mode. +@param mat Input matrix +@param row The zero-based index of row +@param col The zero-based index of column + */ +CV_INLINE double cvmGet( const CvMat* mat, int row, int col ) +{ + int type; + + type = CV_MAT_TYPE(mat->type); + assert( (unsigned)row < (unsigned)mat->rows && + (unsigned)col < (unsigned)mat->cols ); + + if( type == CV_32FC1 ) + return ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col]; + else + { + assert( type == CV_64FC1 ); + return ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col]; + } +} + +/** @brief Sets a specific element of a single-channel floating-point matrix. + +The function is a fast replacement for cvSetReal2D in the case of single-channel floating-point +matrices. It is faster because it is inline, it does fewer checks for array type and array element +type, and it checks for the row and column ranges only in debug mode. +@param mat The matrix +@param row The zero-based index of row +@param col The zero-based index of column +@param value The new value of the matrix element + */ +CV_INLINE void cvmSet( CvMat* mat, int row, int col, double value ) +{ + int type; + type = CV_MAT_TYPE(mat->type); + assert( (unsigned)row < (unsigned)mat->rows && + (unsigned)col < (unsigned)mat->cols ); + + if( type == CV_32FC1 ) + ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (float)value; + else + { + assert( type == CV_64FC1 ); + ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = value; + } +} + + +CV_INLINE int cvIplDepth( int type ) +{ + int depth = CV_MAT_DEPTH(type); + return CV_ELEM_SIZE1(depth)*8 | (depth == CV_8S || depth == CV_16S || + depth == CV_32S ? IPL_DEPTH_SIGN : 0); +} + + +/****************************************************************************************\ +* Multi-dimensional dense array (CvMatND) * +\****************************************************************************************/ + +#define CV_MATND_MAGIC_VAL 0x42430000 +#define CV_TYPE_NAME_MATND "opencv-nd-matrix" + +#define CV_MAX_DIM 32 + +#ifdef __cplusplus +typedef struct CvMatND CvMatND; +CV_EXPORTS CvMatND cvMatND(const cv::Mat& m); +#endif + +/** + @deprecated consider using cv::Mat instead + */ +typedef struct +CvMatND +{ + int type; + int dims; + + int* refcount; + int hdr_refcount; + + union + { + uchar* ptr; + float* fl; + double* db; + int* i; + short* s; + } data; + + struct + { + int size; + int step; + } + dim[CV_MAX_DIM]; + +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvMatND() {} + CvMatND(const cv::Mat& m) { *this = cvMatND(m); } +#endif +} +CvMatND; + + +CV_INLINE CvMatND cvMatND() +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvMatND self = CV_STRUCT_INITIALIZER; return self; +#else + return CvMatND(); +#endif +} + +#define CV_IS_MATND_HDR(mat) \ + ((mat) != NULL && (((const CvMatND*)(mat))->type & CV_MAGIC_MASK) == CV_MATND_MAGIC_VAL) + +#define CV_IS_MATND(mat) \ + (CV_IS_MATND_HDR(mat) && ((const CvMatND*)(mat))->data.ptr != NULL) + + +/****************************************************************************************\ +* Multi-dimensional sparse array (CvSparseMat) * +\****************************************************************************************/ + +#define CV_SPARSE_MAT_MAGIC_VAL 0x42440000 +#define CV_TYPE_NAME_SPARSE_MAT "opencv-sparse-matrix" + +struct CvSet; + +typedef struct CvSparseMat +{ + int type; + int dims; + int* refcount; + int hdr_refcount; + + struct CvSet* heap; + void** hashtable; + int hashsize; + int valoffset; + int idxoffset; + int size[CV_MAX_DIM]; + +#ifdef __cplusplus + CV_EXPORTS void copyToSparseMat(cv::SparseMat& m) const; +#endif +} +CvSparseMat; + +#ifdef __cplusplus +CV_EXPORTS CvSparseMat* cvCreateSparseMat(const cv::SparseMat& m); +#endif + +#define CV_IS_SPARSE_MAT_HDR(mat) \ + ((mat) != NULL && \ + (((const CvSparseMat*)(mat))->type & CV_MAGIC_MASK) == CV_SPARSE_MAT_MAGIC_VAL) + +#define CV_IS_SPARSE_MAT(mat) \ + CV_IS_SPARSE_MAT_HDR(mat) + +/**************** iteration through a sparse array *****************/ + +typedef struct CvSparseNode +{ + unsigned hashval; + struct CvSparseNode* next; +} +CvSparseNode; + +typedef struct CvSparseMatIterator +{ + CvSparseMat* mat; + CvSparseNode* node; + int curidx; +} +CvSparseMatIterator; + +#define CV_NODE_VAL(mat,node) ((void*)((uchar*)(node) + (mat)->valoffset)) +#define CV_NODE_IDX(mat,node) ((int*)((uchar*)(node) + (mat)->idxoffset)) + +/****************************************************************************************\ +* Histogram * +\****************************************************************************************/ + +typedef int CvHistType; + +#define CV_HIST_MAGIC_VAL 0x42450000 +#define CV_HIST_UNIFORM_FLAG (1 << 10) + +/** indicates whether bin ranges are set already or not */ +#define CV_HIST_RANGES_FLAG (1 << 11) + +#define CV_HIST_ARRAY 0 +#define CV_HIST_SPARSE 1 +#define CV_HIST_TREE CV_HIST_SPARSE + +/** should be used as a parameter only, + it turns to CV_HIST_UNIFORM_FLAG of hist->type */ +#define CV_HIST_UNIFORM 1 + +typedef struct CvHistogram +{ + int type; + CvArr* bins; + float thresh[CV_MAX_DIM][2]; /**< For uniform histograms. */ + float** thresh2; /**< For non-uniform histograms. */ + CvMatND mat; /**< Embedded matrix header for array histograms. */ +} +CvHistogram; + +#define CV_IS_HIST( hist ) \ + ((hist) != NULL && \ + (((CvHistogram*)(hist))->type & CV_MAGIC_MASK) == CV_HIST_MAGIC_VAL && \ + (hist)->bins != NULL) + +#define CV_IS_UNIFORM_HIST( hist ) \ + (((hist)->type & CV_HIST_UNIFORM_FLAG) != 0) + +#define CV_IS_SPARSE_HIST( hist ) \ + CV_IS_SPARSE_MAT((hist)->bins) + +#define CV_HIST_HAS_RANGES( hist ) \ + (((hist)->type & CV_HIST_RANGES_FLAG) != 0) + +/****************************************************************************************\ +* Other supplementary data type definitions * +\****************************************************************************************/ + +/*************************************** CvRect *****************************************/ +/** @sa Rect_ */ +typedef struct CvRect +{ + int x; + int y; + int width; + int height; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvRect() __attribute__(( warning("Non-initialized variable") )) {}; + template CvRect(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 4); + x = y = width = height = 0; + if (list.size() == 4) + { + x = list.begin()[0]; y = list.begin()[1]; width = list.begin()[2]; height = list.begin()[3]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvRect(int _x = 0, int _y = 0, int w = 0, int h = 0): x(_x), y(_y), width(w), height(h) {} + template + CvRect(const cv::Rect_<_Tp>& r): x(cv::saturate_cast(r.x)), y(cv::saturate_cast(r.y)), width(cv::saturate_cast(r.width)), height(cv::saturate_cast(r.height)) {} +#endif +#ifdef __cplusplus + template + operator cv::Rect_<_Tp>() const { return cv::Rect_<_Tp>((_Tp)x, (_Tp)y, (_Tp)width, (_Tp)height); } +#endif +} +CvRect; + +/** constructs CvRect structure. */ +CV_INLINE CvRect cvRect( int x, int y, int width, int height ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvRect r = {x, y, width, height}; +#else + CvRect r(x, y , width, height); +#endif + return r; +} +#ifdef __cplusplus +CV_INLINE CvRect cvRect(const cv::Rect& rc) { return cvRect(rc.x, rc.y, rc.width, rc.height); } +#endif + +CV_INLINE IplROI cvRectToROI( CvRect rect, int coi ) +{ + IplROI roi; + roi.xOffset = rect.x; + roi.yOffset = rect.y; + roi.width = rect.width; + roi.height = rect.height; + roi.coi = coi; + + return roi; +} + + +CV_INLINE CvRect cvROIToRect( IplROI roi ) +{ + return cvRect( roi.xOffset, roi.yOffset, roi.width, roi.height ); +} + +/*********************************** CvTermCriteria *************************************/ + +#define CV_TERMCRIT_ITER 1 +#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER +#define CV_TERMCRIT_EPS 2 + +/** @sa TermCriteria + */ +typedef struct CvTermCriteria +{ + int type; /**< may be combination of + CV_TERMCRIT_ITER + CV_TERMCRIT_EPS */ + int max_iter; + double epsilon; +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvTermCriteria(int _type = 0, int _iter = 0, double _eps = 0) : type(_type), max_iter(_iter), epsilon(_eps) {} + CvTermCriteria(const cv::TermCriteria& t) : type(t.type), max_iter(t.maxCount), epsilon(t.epsilon) {} +#endif +#ifdef __cplusplus + operator cv::TermCriteria() const { return cv::TermCriteria(type, max_iter, epsilon); } +#endif +} +CvTermCriteria; + +CV_INLINE CvTermCriteria cvTermCriteria( int type, int max_iter, double epsilon ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvTermCriteria t = { type, max_iter, (float)epsilon}; +#else + CvTermCriteria t(type, max_iter, epsilon); +#endif + return t; +} +#ifdef __cplusplus +CV_INLINE CvTermCriteria cvTermCriteria(const cv::TermCriteria& t) { return cvTermCriteria(t.type, t.maxCount, t.epsilon); } +#endif + + +/******************************* CvPoint and variants ***********************************/ + +typedef struct CvPoint +{ + int x; + int y; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvPoint() __attribute__(( warning("Non-initialized variable") )) {} + template CvPoint(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + x = y = 0; + if (list.size() == 2) + { + x = list.begin()[0]; y = list.begin()[1]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvPoint(int _x = 0, int _y = 0): x(_x), y(_y) {} + template + CvPoint(const cv::Point_<_Tp>& pt): x((int)pt.x), y((int)pt.y) {} +#endif +#ifdef __cplusplus + template + operator cv::Point_<_Tp>() const { return cv::Point_<_Tp>(cv::saturate_cast<_Tp>(x), cv::saturate_cast<_Tp>(y)); } +#endif +} +CvPoint; + +/** constructs CvPoint structure. */ +CV_INLINE CvPoint cvPoint( int x, int y ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint p = {x, y}; +#else + CvPoint p(x, y); +#endif + return p; +} +#ifdef __cplusplus +CV_INLINE CvPoint cvPoint(const cv::Point& pt) { return cvPoint(pt.x, pt.y); } +#endif + +typedef struct CvPoint2D32f +{ + float x; + float y; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvPoint2D32f() __attribute__(( warning("Non-initialized variable") )) {} + template CvPoint2D32f(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + x = y = 0; + if (list.size() == 2) + { + x = list.begin()[0]; y = list.begin()[1]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvPoint2D32f(float _x = 0, float _y = 0): x(_x), y(_y) {} + template + CvPoint2D32f(const cv::Point_<_Tp>& pt): x((float)pt.x), y((float)pt.y) {} +#endif +#ifdef __cplusplus + template + operator cv::Point_<_Tp>() const { return cv::Point_<_Tp>(cv::saturate_cast<_Tp>(x), cv::saturate_cast<_Tp>(y)); } +#endif +} +CvPoint2D32f; + +/** constructs CvPoint2D32f structure. */ +CV_INLINE CvPoint2D32f cvPoint2D32f( double x, double y ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint2D32f p = { (float)x, (float)y }; +#else + CvPoint2D32f p((float)x, (float)y); +#endif + return p; +} + +#ifdef __cplusplus +template +CvPoint2D32f cvPoint2D32f(const cv::Point_<_Tp>& pt) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint2D32f p = { (float)pt.x, (float)pt.y }; +#else + CvPoint2D32f p((float)pt.x, (float)pt.y); +#endif + return p; +} +#endif + +/** converts CvPoint to CvPoint2D32f. */ +CV_INLINE CvPoint2D32f cvPointTo32f( CvPoint point ) +{ + return cvPoint2D32f( (float)point.x, (float)point.y ); +} + +/** converts CvPoint2D32f to CvPoint. */ +CV_INLINE CvPoint cvPointFrom32f( CvPoint2D32f point ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint ipt = { cvRound(point.x), cvRound(point.y) }; +#else + CvPoint ipt(cvRound(point.x), cvRound(point.y)); +#endif + return ipt; +} + + +typedef struct CvPoint3D32f +{ + float x; + float y; + float z; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvPoint3D32f() __attribute__(( warning("Non-initialized variable") )) {} + template CvPoint3D32f(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 3); + x = y = z = 0; + if (list.size() == 3) + { + x = list.begin()[0]; y = list.begin()[1]; z = list.begin()[2]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvPoint3D32f(float _x = 0, float _y = 0, float _z = 0): x(_x), y(_y), z(_z) {} + template + CvPoint3D32f(const cv::Point3_<_Tp>& pt): x((float)pt.x), y((float)pt.y), z((float)pt.z) {} +#endif +#ifdef __cplusplus + template + operator cv::Point3_<_Tp>() const { return cv::Point3_<_Tp>(cv::saturate_cast<_Tp>(x), cv::saturate_cast<_Tp>(y), cv::saturate_cast<_Tp>(z)); } +#endif +} +CvPoint3D32f; + +/** constructs CvPoint3D32f structure. */ +CV_INLINE CvPoint3D32f cvPoint3D32f( double x, double y, double z ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint3D32f p = { (float)x, (float)y, (float)z }; +#else + CvPoint3D32f p((float)x, (float)y, (float)z); +#endif + return p; +} + +#ifdef __cplusplus +template +CvPoint3D32f cvPoint3D32f(const cv::Point3_<_Tp>& pt) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvPoint3D32f p = { (float)pt.x, (float)pt.y, (float)pt.z }; +#else + CvPoint3D32f p((float)pt.x, (float)pt.y, (float)pt.z); +#endif + return p; +} +#endif + + +typedef struct CvPoint2D64f +{ + double x; + double y; +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvPoint2D64f() __attribute__(( warning("Non-initialized variable") )) {} + template CvPoint2D64f(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + x = y = 0; + if (list.size() == 2) + { + x = list.begin()[0]; y = list.begin()[1]; + } + }; +#endif +} +CvPoint2D64f; + +/** constructs CvPoint2D64f structure.*/ +CV_INLINE CvPoint2D64f cvPoint2D64f( double x, double y ) +{ + CvPoint2D64f p = { x, y }; + return p; +} + + +typedef struct CvPoint3D64f +{ + double x; + double y; + double z; +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvPoint3D64f() __attribute__(( warning("Non-initialized variable") )) {} + template CvPoint3D64f(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 3); + x = y = z = 0; + if (list.size() == 3) + { + x = list.begin()[0]; y = list.begin()[1]; z = list.begin()[2]; + } + }; +#endif +} +CvPoint3D64f; + +/** constructs CvPoint3D64f structure. */ +CV_INLINE CvPoint3D64f cvPoint3D64f( double x, double y, double z ) +{ + CvPoint3D64f p = { x, y, z }; + return p; +} + + +/******************************** CvSize's & CvBox **************************************/ + +typedef struct CvSize +{ + int width; + int height; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvSize() __attribute__(( warning("Non-initialized variable") )) {} + template CvSize(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + width = 0; height = 0; + if (list.size() == 2) + { + width = list.begin()[0]; height = list.begin()[1]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvSize(int w = 0, int h = 0): width(w), height(h) {} + template + CvSize(const cv::Size_<_Tp>& sz): width(cv::saturate_cast(sz.width)), height(cv::saturate_cast(sz.height)) {} +#endif +#ifdef __cplusplus + template + operator cv::Size_<_Tp>() const { return cv::Size_<_Tp>(cv::saturate_cast<_Tp>(width), cv::saturate_cast<_Tp>(height)); } +#endif +} +CvSize; + +/** constructs CvSize structure. */ +CV_INLINE CvSize cvSize( int width, int height ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvSize s = { width, height }; +#else + CvSize s(width, height); +#endif + return s; +} + +#ifdef __cplusplus +CV_INLINE CvSize cvSize(const cv::Size& sz) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvSize s = { sz.width, sz.height }; +#else + CvSize s(sz.width, sz.height); +#endif + return s; +} +#endif + +typedef struct CvSize2D32f +{ + float width; + float height; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvSize2D32f() __attribute__(( warning("Non-initialized variable") )) {} + template CvSize2D32f(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + width = 0; height = 0; + if (list.size() == 2) + { + width = list.begin()[0]; height = list.begin()[1]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvSize2D32f(float w = 0, float h = 0): width(w), height(h) {} + template + CvSize2D32f(const cv::Size_<_Tp>& sz): width(cv::saturate_cast(sz.width)), height(cv::saturate_cast(sz.height)) {} +#endif +#ifdef __cplusplus + template + operator cv::Size_<_Tp>() const { return cv::Size_<_Tp>(cv::saturate_cast<_Tp>(width), cv::saturate_cast<_Tp>(height)); } +#endif +} +CvSize2D32f; + +/** constructs CvSize2D32f structure. */ +CV_INLINE CvSize2D32f cvSize2D32f( double width, double height ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvSize2D32f s = { (float)width, (float)height }; +#else + CvSize2D32f s((float)width, (float)height); +#endif + return s; +} +#ifdef __cplusplus +template +CvSize2D32f cvSize2D32f(const cv::Size_<_Tp>& sz) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvSize2D32f s = { (float)sz.width, (float)sz.height }; +#else + CvSize2D32f s((float)sz.width, (float)sz.height); +#endif + return s; +} +#endif + +/** @sa RotatedRect + */ +typedef struct CvBox2D +{ + CvPoint2D32f center; /**< Center of the box. */ + CvSize2D32f size; /**< Box width and length. */ + float angle; /**< Angle between the horizontal axis */ + /**< and the first side (i.e. length) in degrees */ + +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvBox2D(CvPoint2D32f c = CvPoint2D32f(), CvSize2D32f s = CvSize2D32f(), float a = 0) : center(c), size(s), angle(a) {} + CvBox2D(const cv::RotatedRect& rr) : center(rr.center), size(rr.size), angle(rr.angle) {} +#endif +#ifdef __cplusplus + operator cv::RotatedRect() const { return cv::RotatedRect(center, size, angle); } +#endif +} +CvBox2D; + + +#ifdef __cplusplus +CV_INLINE CvBox2D cvBox2D(CvPoint2D32f c = CvPoint2D32f(), CvSize2D32f s = CvSize2D32f(), float a = 0) +{ + CvBox2D self; + self.center = c; + self.size = s; + self.angle = a; + return self; +} +CV_INLINE CvBox2D cvBox2D(const cv::RotatedRect& rr) +{ + CvBox2D self; + self.center = cvPoint2D32f(rr.center); + self.size = cvSize2D32f(rr.size); + self.angle = rr.angle; + return self; +} +#endif + + +/** Line iterator state: */ +typedef struct CvLineIterator +{ + /** Pointer to the current point: */ + uchar* ptr; + + /* Bresenham algorithm state: */ + int err; + int plus_delta; + int minus_delta; + int plus_step; + int minus_step; +} +CvLineIterator; + + + +/************************************* CvSlice ******************************************/ +#define CV_WHOLE_SEQ_END_INDEX 0x3fffffff +#define CV_WHOLE_SEQ cvSlice(0, CV_WHOLE_SEQ_END_INDEX) + +typedef struct CvSlice +{ + int start_index, end_index; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvSlice() __attribute__(( warning("Non-initialized variable") )) {} + template CvSlice(const std::initializer_list<_Tp> list) + { + CV_Assert(list.size() == 0 || list.size() == 2); + start_index = end_index = 0; + if (list.size() == 2) + { + start_index = list.begin()[0]; end_index = list.begin()[1]; + } + }; +#endif +#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) && !defined(__CUDACC__) + CvSlice(int start = 0, int end = 0) : start_index(start), end_index(end) {} + CvSlice(const cv::Range& r) { *this = (r.start != INT_MIN && r.end != INT_MAX) ? CvSlice(r.start, r.end) : CvSlice(0, CV_WHOLE_SEQ_END_INDEX); } + operator cv::Range() const { return (start_index == 0 && end_index == CV_WHOLE_SEQ_END_INDEX ) ? cv::Range::all() : cv::Range(start_index, end_index); } +#endif +} +CvSlice; + +CV_INLINE CvSlice cvSlice( int start, int end ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) && !defined(__CUDACC__)) + CvSlice slice = { start, end }; +#else + CvSlice slice(start, end); +#endif + return slice; +} + +#if defined(__cplusplus) +CV_INLINE CvSlice cvSlice(const cv::Range& r) +{ + CvSlice slice = (r.start != INT_MIN && r.end != INT_MAX) ? cvSlice(r.start, r.end) : cvSlice(0, CV_WHOLE_SEQ_END_INDEX); + return slice; +} +#endif + + +/************************************* CvScalar *****************************************/ +/** @sa Scalar_ + */ +typedef struct CvScalar +{ + double val[4]; + +#ifdef CV__VALIDATE_UNUNITIALIZED_VARS + CvScalar() __attribute__(( warning("Non-initialized variable") )) {} + CvScalar(const std::initializer_list list) + { + CV_Assert(list.size() == 0 || list.size() == 4); + val[0] = val[1] = val[2] = val[3] = 0; + if (list.size() == 4) + { + val[0] = list.begin()[0]; val[1] = list.begin()[1]; val[2] = list.begin()[2]; val[3] = list.begin()[3]; + } + }; +#elif defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus) + CvScalar() {} + CvScalar(double d0, double d1 = 0, double d2 = 0, double d3 = 0) { val[0] = d0; val[1] = d1; val[2] = d2; val[3] = d3; } + template + CvScalar(const cv::Scalar_<_Tp>& s) { val[0] = s.val[0]; val[1] = s.val[1]; val[2] = s.val[2]; val[3] = s.val[3]; } + template + CvScalar(const cv::Vec<_Tp, cn>& v) + { + int i; + for( i = 0; i < (cn < 4 ? cn : 4); i++ ) val[i] = v.val[i]; + for( ; i < 4; i++ ) val[i] = 0; + } +#endif +#ifdef __cplusplus + template + operator cv::Scalar_<_Tp>() const { return cv::Scalar_<_Tp>(cv::saturate_cast<_Tp>(val[0]), cv::saturate_cast<_Tp>(val[1]), cv::saturate_cast<_Tp>(val[2]), cv::saturate_cast<_Tp>(val[3])); } +#endif +} +CvScalar; + +CV_INLINE CvScalar cvScalar( double val0, double val1 CV_DEFAULT(0), + double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0)) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvScalar scalar = CV_STRUCT_INITIALIZER; +#else + CvScalar scalar; +#endif + scalar.val[0] = val0; scalar.val[1] = val1; + scalar.val[2] = val2; scalar.val[3] = val3; + return scalar; +} + +#ifdef __cplusplus +CV_INLINE CvScalar cvScalar() +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvScalar scalar = CV_STRUCT_INITIALIZER; +#else + CvScalar scalar; +#endif + scalar.val[0] = scalar.val[1] = scalar.val[2] = scalar.val[3] = 0; + return scalar; +} +CV_INLINE CvScalar cvScalar(const cv::Scalar& s) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvScalar scalar = CV_STRUCT_INITIALIZER; +#else + CvScalar scalar; +#endif + scalar.val[0] = s.val[0]; + scalar.val[1] = s.val[1]; + scalar.val[2] = s.val[2]; + scalar.val[3] = s.val[3]; + return scalar; +} +#endif + +CV_INLINE CvScalar cvRealScalar( double val0 ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvScalar scalar = CV_STRUCT_INITIALIZER; +#else + CvScalar scalar; +#endif + scalar.val[0] = val0; + scalar.val[1] = scalar.val[2] = scalar.val[3] = 0; + return scalar; +} + +CV_INLINE CvScalar cvScalarAll( double val0123 ) +{ +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) + CvScalar scalar = CV_STRUCT_INITIALIZER; +#else + CvScalar scalar; +#endif + scalar.val[0] = val0123; + scalar.val[1] = val0123; + scalar.val[2] = val0123; + scalar.val[3] = val0123; + return scalar; +} + +/****************************************************************************************\ +* Dynamic Data structures * +\****************************************************************************************/ + +/******************************** Memory storage ****************************************/ + +typedef struct CvMemBlock +{ + struct CvMemBlock* prev; + struct CvMemBlock* next; +} +CvMemBlock; + +#define CV_STORAGE_MAGIC_VAL 0x42890000 + +typedef struct CvMemStorage +{ + int signature; + CvMemBlock* bottom; /**< First allocated block. */ + CvMemBlock* top; /**< Current memory block - top of the stack. */ + struct CvMemStorage* parent; /**< We get new blocks from parent as needed. */ + int block_size; /**< Block size. */ + int free_space; /**< Remaining free space in current block. */ +} +CvMemStorage; + +#define CV_IS_STORAGE(storage) \ + ((storage) != NULL && \ + (((CvMemStorage*)(storage))->signature & CV_MAGIC_MASK) == CV_STORAGE_MAGIC_VAL) + + +typedef struct CvMemStoragePos +{ + CvMemBlock* top; + int free_space; +} +CvMemStoragePos; + + +/*********************************** Sequence *******************************************/ + +typedef struct CvSeqBlock +{ + struct CvSeqBlock* prev; /**< Previous sequence block. */ + struct CvSeqBlock* next; /**< Next sequence block. */ + int start_index; /**< Index of the first element in the block + */ + /**< sequence->first->start_index. */ + int count; /**< Number of elements in the block. */ + schar* data; /**< Pointer to the first element of the block. */ +} +CvSeqBlock; + + +#define CV_TREE_NODE_FIELDS(node_type) \ + int flags; /**< Miscellaneous flags. */ \ + int header_size; /**< Size of sequence header. */ \ + struct node_type* h_prev; /**< Previous sequence. */ \ + struct node_type* h_next; /**< Next sequence. */ \ + struct node_type* v_prev; /**< 2nd previous sequence. */ \ + struct node_type* v_next /**< 2nd next sequence. */ + +/** + Read/Write sequence. + Elements can be dynamically inserted to or deleted from the sequence. +*/ +#define CV_SEQUENCE_FIELDS() \ + CV_TREE_NODE_FIELDS(CvSeq); \ + int total; /**< Total number of elements. */ \ + int elem_size; /**< Size of sequence element in bytes. */ \ + schar* block_max; /**< Maximal bound of the last block. */ \ + schar* ptr; /**< Current write pointer. */ \ + int delta_elems; /**< Grow seq this many at a time. */ \ + CvMemStorage* storage; /**< Where the seq is stored. */ \ + CvSeqBlock* free_blocks; /**< Free blocks list. */ \ + CvSeqBlock* first; /**< Pointer to the first sequence block. */ + +typedef struct CvSeq +{ + CV_SEQUENCE_FIELDS() +} +CvSeq; + +#define CV_TYPE_NAME_SEQ "opencv-sequence" +#define CV_TYPE_NAME_SEQ_TREE "opencv-sequence-tree" + +/*************************************** Set ********************************************/ +/** @brief Set + Order is not preserved. There can be gaps between sequence elements. + After the element has been inserted it stays in the same place all the time. + The MSB(most-significant or sign bit) of the first field (flags) is 0 iff the element exists. +*/ +#define CV_SET_ELEM_FIELDS(elem_type) \ + int flags; \ + struct elem_type* next_free; + +typedef struct CvSetElem +{ + CV_SET_ELEM_FIELDS(CvSetElem) +} +CvSetElem; + +#define CV_SET_FIELDS() \ + CV_SEQUENCE_FIELDS() \ + CvSetElem* free_elems; \ + int active_count; + +typedef struct CvSet +{ + CV_SET_FIELDS() +} +CvSet; + + +#define CV_SET_ELEM_IDX_MASK ((1 << 26) - 1) +#define CV_SET_ELEM_FREE_FLAG (1 << (sizeof(int)*8-1)) + +/** Checks whether the element pointed by ptr belongs to a set or not */ +#define CV_IS_SET_ELEM( ptr ) (((CvSetElem*)(ptr))->flags >= 0) + +/************************************* Graph ********************************************/ + +/** @name Graph + +We represent a graph as a set of vertices. Vertices contain their adjacency lists (more exactly, +pointers to first incoming or outcoming edge (or 0 if isolated vertex)). Edges are stored in +another set. There is a singly-linked list of incoming/outcoming edges for each vertex. + +Each edge consists of: + +- Two pointers to the starting and ending vertices (vtx[0] and vtx[1] respectively). + + A graph may be oriented or not. In the latter case, edges between vertex i to vertex j are not +distinguished during search operations. + +- Two pointers to next edges for the starting and ending vertices, where next[0] points to the +next edge in the vtx[0] adjacency list and next[1] points to the next edge in the vtx[1] +adjacency list. + +@see CvGraphEdge, CvGraphVtx, CvGraphVtx2D, CvGraph +@{ +*/ +#define CV_GRAPH_EDGE_FIELDS() \ + int flags; \ + float weight; \ + struct CvGraphEdge* next[2]; \ + struct CvGraphVtx* vtx[2]; + + +#define CV_GRAPH_VERTEX_FIELDS() \ + int flags; \ + struct CvGraphEdge* first; + + +typedef struct CvGraphEdge +{ + CV_GRAPH_EDGE_FIELDS() +} +CvGraphEdge; + +typedef struct CvGraphVtx +{ + CV_GRAPH_VERTEX_FIELDS() +} +CvGraphVtx; + +typedef struct CvGraphVtx2D +{ + CV_GRAPH_VERTEX_FIELDS() + CvPoint2D32f* ptr; +} +CvGraphVtx2D; + +/** + Graph is "derived" from the set (this is set a of vertices) + and includes another set (edges) +*/ +#define CV_GRAPH_FIELDS() \ + CV_SET_FIELDS() \ + CvSet* edges; + +typedef struct CvGraph +{ + CV_GRAPH_FIELDS() +} +CvGraph; + +#define CV_TYPE_NAME_GRAPH "opencv-graph" + +/** @} */ + +/*********************************** Chain/Contour *************************************/ + +typedef struct CvChain +{ + CV_SEQUENCE_FIELDS() + CvPoint origin; +} +CvChain; + +#define CV_CONTOUR_FIELDS() \ + CV_SEQUENCE_FIELDS() \ + CvRect rect; \ + int color; \ + int reserved[3]; + +typedef struct CvContour +{ + CV_CONTOUR_FIELDS() +} +CvContour; + +typedef CvContour CvPoint2DSeq; + +/****************************************************************************************\ +* Sequence types * +\****************************************************************************************/ + +#define CV_SEQ_MAGIC_VAL 0x42990000 + +#define CV_IS_SEQ(seq) \ + ((seq) != NULL && (((CvSeq*)(seq))->flags & CV_MAGIC_MASK) == CV_SEQ_MAGIC_VAL) + +#define CV_SET_MAGIC_VAL 0x42980000 +#define CV_IS_SET(set) \ + ((set) != NULL && (((CvSeq*)(set))->flags & CV_MAGIC_MASK) == CV_SET_MAGIC_VAL) + +#define CV_SEQ_ELTYPE_BITS 12 +#define CV_SEQ_ELTYPE_MASK ((1 << CV_SEQ_ELTYPE_BITS) - 1) + +#define CV_SEQ_ELTYPE_POINT CV_32SC2 /**< (x,y) */ +#define CV_SEQ_ELTYPE_CODE CV_8UC1 /**< freeman code: 0..7 */ +#define CV_SEQ_ELTYPE_GENERIC 0 +#define CV_SEQ_ELTYPE_PTR CV_MAKE_TYPE(CV_8U, 8 /*sizeof(void*)*/) +#define CV_SEQ_ELTYPE_PPOINT CV_SEQ_ELTYPE_PTR /**< &(x,y) */ +#define CV_SEQ_ELTYPE_INDEX CV_32SC1 /**< #(x,y) */ +#define CV_SEQ_ELTYPE_GRAPH_EDGE 0 /**< &next_o, &next_d, &vtx_o, &vtx_d */ +#define CV_SEQ_ELTYPE_GRAPH_VERTEX 0 /**< first_edge, &(x,y) */ +#define CV_SEQ_ELTYPE_TRIAN_ATR 0 /**< vertex of the binary tree */ +#define CV_SEQ_ELTYPE_CONNECTED_COMP 0 /**< connected component */ +#define CV_SEQ_ELTYPE_POINT3D CV_32FC3 /**< (x,y,z) */ + +#define CV_SEQ_KIND_BITS 2 +#define CV_SEQ_KIND_MASK (((1 << CV_SEQ_KIND_BITS) - 1)<flags & CV_SEQ_ELTYPE_MASK) +#define CV_SEQ_KIND( seq ) ((seq)->flags & CV_SEQ_KIND_MASK ) + +/** flag checking */ +#define CV_IS_SEQ_INDEX( seq ) ((CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_INDEX) && \ + (CV_SEQ_KIND(seq) == CV_SEQ_KIND_GENERIC)) + +#define CV_IS_SEQ_CURVE( seq ) (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE) +#define CV_IS_SEQ_CLOSED( seq ) (((seq)->flags & CV_SEQ_FLAG_CLOSED) != 0) +#define CV_IS_SEQ_CONVEX( seq ) 0 +#define CV_IS_SEQ_HOLE( seq ) (((seq)->flags & CV_SEQ_FLAG_HOLE) != 0) +#define CV_IS_SEQ_SIMPLE( seq ) 1 + +/** type checking macros */ +#define CV_IS_SEQ_POINT_SET( seq ) \ + ((CV_SEQ_ELTYPE(seq) == CV_32SC2 || CV_SEQ_ELTYPE(seq) == CV_32FC2)) + +#define CV_IS_SEQ_POINT_SUBSET( seq ) \ + (CV_IS_SEQ_INDEX( seq ) || CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_PPOINT) + +#define CV_IS_SEQ_POLYLINE( seq ) \ + (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && CV_IS_SEQ_POINT_SET(seq)) + +#define CV_IS_SEQ_POLYGON( seq ) \ + (CV_IS_SEQ_POLYLINE(seq) && CV_IS_SEQ_CLOSED(seq)) + +#define CV_IS_SEQ_CHAIN( seq ) \ + (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && (seq)->elem_size == 1) + +#define CV_IS_SEQ_CONTOUR( seq ) \ + (CV_IS_SEQ_CLOSED(seq) && (CV_IS_SEQ_POLYLINE(seq) || CV_IS_SEQ_CHAIN(seq))) + +#define CV_IS_SEQ_CHAIN_CONTOUR( seq ) \ + (CV_IS_SEQ_CHAIN( seq ) && CV_IS_SEQ_CLOSED( seq )) + +#define CV_IS_SEQ_POLYGON_TREE( seq ) \ + (CV_SEQ_ELTYPE (seq) == CV_SEQ_ELTYPE_TRIAN_ATR && \ + CV_SEQ_KIND( seq ) == CV_SEQ_KIND_BIN_TREE ) + +#define CV_IS_GRAPH( seq ) \ + (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_GRAPH) + +#define CV_IS_GRAPH_ORIENTED( seq ) \ + (((seq)->flags & CV_GRAPH_FLAG_ORIENTED) != 0) + +#define CV_IS_SUBDIV2D( seq ) \ + (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_SUBDIV2D) + +/****************************************************************************************/ +/* Sequence writer & reader */ +/****************************************************************************************/ + +#define CV_SEQ_WRITER_FIELDS() \ + int header_size; \ + CvSeq* seq; /**< the sequence written */ \ + CvSeqBlock* block; /**< current block */ \ + schar* ptr; /**< pointer to free space */ \ + schar* block_min; /**< pointer to the beginning of block*/\ + schar* block_max; /**< pointer to the end of block */ + +typedef struct CvSeqWriter +{ + CV_SEQ_WRITER_FIELDS() +} +CvSeqWriter; + + +#define CV_SEQ_READER_FIELDS() \ + int header_size; \ + CvSeq* seq; /**< sequence, beign read */ \ + CvSeqBlock* block; /**< current block */ \ + schar* ptr; /**< pointer to element be read next */ \ + schar* block_min; /**< pointer to the beginning of block */\ + schar* block_max; /**< pointer to the end of block */ \ + int delta_index;/**< = seq->first->start_index */ \ + schar* prev_elem; /**< pointer to previous element */ + +typedef struct CvSeqReader +{ + CV_SEQ_READER_FIELDS() +} +CvSeqReader; + +/****************************************************************************************/ +/* Operations on sequences */ +/****************************************************************************************/ + +#define CV_SEQ_ELEM( seq, elem_type, index ) \ +/** assert gives some guarantee that parameter is valid */ \ +( assert(sizeof((seq)->first[0]) == sizeof(CvSeqBlock) && \ + (seq)->elem_size == sizeof(elem_type)), \ + (elem_type*)((seq)->first && (unsigned)index < \ + (unsigned)((seq)->first->count) ? \ + (seq)->first->data + (index) * sizeof(elem_type) : \ + cvGetSeqElem( (CvSeq*)(seq), (index) ))) +#define CV_GET_SEQ_ELEM( elem_type, seq, index ) CV_SEQ_ELEM( (seq), elem_type, (index) ) + +/** Add element to sequence: */ +#define CV_WRITE_SEQ_ELEM_VAR( elem_ptr, writer ) \ +{ \ + if( (writer).ptr >= (writer).block_max ) \ + { \ + cvCreateSeqBlock( &writer); \ + } \ + memcpy((writer).ptr, elem_ptr, (writer).seq->elem_size);\ + (writer).ptr += (writer).seq->elem_size; \ +} + +#define CV_WRITE_SEQ_ELEM( elem, writer ) \ +{ \ + assert( (writer).seq->elem_size == sizeof(elem)); \ + if( (writer).ptr >= (writer).block_max ) \ + { \ + cvCreateSeqBlock( &writer); \ + } \ + assert( (writer).ptr <= (writer).block_max - sizeof(elem));\ + memcpy((writer).ptr, &(elem), sizeof(elem)); \ + (writer).ptr += sizeof(elem); \ +} + + +/** Move reader position forward: */ +#define CV_NEXT_SEQ_ELEM( elem_size, reader ) \ +{ \ + if( ((reader).ptr += (elem_size)) >= (reader).block_max ) \ + { \ + cvChangeSeqBlock( &(reader), 1 ); \ + } \ +} + + +/** Move reader position backward: */ +#define CV_PREV_SEQ_ELEM( elem_size, reader ) \ +{ \ + if( ((reader).ptr -= (elem_size)) < (reader).block_min ) \ + { \ + cvChangeSeqBlock( &(reader), -1 ); \ + } \ +} + +/** Read element and move read position forward: */ +#define CV_READ_SEQ_ELEM( elem, reader ) \ +{ \ + assert( (reader).seq->elem_size == sizeof(elem)); \ + memcpy( &(elem), (reader).ptr, sizeof((elem))); \ + CV_NEXT_SEQ_ELEM( sizeof(elem), reader ) \ +} + +/** Read element and move read position backward: */ +#define CV_REV_READ_SEQ_ELEM( elem, reader ) \ +{ \ + assert( (reader).seq->elem_size == sizeof(elem)); \ + memcpy(&(elem), (reader).ptr, sizeof((elem))); \ + CV_PREV_SEQ_ELEM( sizeof(elem), reader ) \ +} + + +#define CV_READ_CHAIN_POINT( _pt, reader ) \ +{ \ + (_pt) = (reader).pt; \ + if( (reader).ptr ) \ + { \ + CV_READ_SEQ_ELEM( (reader).code, (reader)); \ + assert( ((reader).code & ~7) == 0 ); \ + (reader).pt.x += (reader).deltas[(int)(reader).code][0]; \ + (reader).pt.y += (reader).deltas[(int)(reader).code][1]; \ + } \ +} + +#define CV_CURRENT_POINT( reader ) (*((CvPoint*)((reader).ptr))) +#define CV_PREV_POINT( reader ) (*((CvPoint*)((reader).prev_elem))) + +#define CV_READ_EDGE( pt1, pt2, reader ) \ +{ \ + assert( sizeof(pt1) == sizeof(CvPoint) && \ + sizeof(pt2) == sizeof(CvPoint) && \ + reader.seq->elem_size == sizeof(CvPoint)); \ + (pt1) = CV_PREV_POINT( reader ); \ + (pt2) = CV_CURRENT_POINT( reader ); \ + (reader).prev_elem = (reader).ptr; \ + CV_NEXT_SEQ_ELEM( sizeof(CvPoint), (reader)); \ +} + +/************ Graph macros ************/ + +/** Return next graph edge for given vertex: */ +#define CV_NEXT_GRAPH_EDGE( edge, vertex ) \ + (assert((edge)->vtx[0] == (vertex) || (edge)->vtx[1] == (vertex)), \ + (edge)->next[(edge)->vtx[1] == (vertex)]) + + + +/****************************************************************************************\ +* Data structures for persistence (a.k.a serialization) functionality * +\****************************************************************************************/ + +#if 0 + +/** "black box" file storage */ +typedef struct CvFileStorage CvFileStorage; + +/** Storage flags: */ +#define CV_STORAGE_READ 0 +#define CV_STORAGE_WRITE 1 +#define CV_STORAGE_WRITE_TEXT CV_STORAGE_WRITE +#define CV_STORAGE_WRITE_BINARY CV_STORAGE_WRITE +#define CV_STORAGE_APPEND 2 +#define CV_STORAGE_MEMORY 4 +#define CV_STORAGE_FORMAT_MASK (7<<3) +#define CV_STORAGE_FORMAT_AUTO 0 +#define CV_STORAGE_FORMAT_XML 8 +#define CV_STORAGE_FORMAT_YAML 16 +#define CV_STORAGE_FORMAT_JSON 24 +#define CV_STORAGE_BASE64 64 +#define CV_STORAGE_WRITE_BASE64 (CV_STORAGE_BASE64 | CV_STORAGE_WRITE) + +/** @brief List of attributes. : + +In the current implementation, attributes are used to pass extra parameters when writing user +objects (see cvWrite). XML attributes inside tags are not supported, aside from the object type +specification (type_id attribute). +@see cvAttrList, cvAttrValue + */ +typedef struct CvAttrList +{ + const char** attr; /**< NULL-terminated array of (attribute_name,attribute_value) pairs. */ + struct CvAttrList* next; /**< Pointer to next chunk of the attributes list. */ +} +CvAttrList; + +/** initializes CvAttrList structure */ +CV_INLINE CvAttrList cvAttrList( const char** attr CV_DEFAULT(NULL), + CvAttrList* next CV_DEFAULT(NULL) ) +{ + CvAttrList l; + l.attr = attr; + l.next = next; + + return l; +} + +struct CvTypeInfo; + +#define CV_NODE_NONE 0 +#define CV_NODE_INT 1 +#define CV_NODE_INTEGER CV_NODE_INT +#define CV_NODE_REAL 2 +#define CV_NODE_FLOAT CV_NODE_REAL +#define CV_NODE_STR 3 +#define CV_NODE_STRING CV_NODE_STR +#define CV_NODE_REF 4 /**< not used */ +#define CV_NODE_SEQ 5 +#define CV_NODE_MAP 6 +#define CV_NODE_TYPE_MASK 7 + +#define CV_NODE_TYPE(flags) ((flags) & CV_NODE_TYPE_MASK) + +/** file node flags */ +#define CV_NODE_FLOW 8 /**= CV_NODE_SEQ) +#define CV_NODE_IS_FLOW(flags) (((flags) & CV_NODE_FLOW) != 0) +#define CV_NODE_IS_EMPTY(flags) (((flags) & CV_NODE_EMPTY) != 0) +#define CV_NODE_IS_USER(flags) (((flags) & CV_NODE_USER) != 0) +#define CV_NODE_HAS_NAME(flags) (((flags) & CV_NODE_NAMED) != 0) + +#define CV_NODE_SEQ_SIMPLE 256 +#define CV_NODE_SEQ_IS_SIMPLE(seq) (((seq)->flags & CV_NODE_SEQ_SIMPLE) != 0) + +typedef struct CvString +{ + int len; + char* ptr; +} +CvString; + +/** All the keys (names) of elements in the read file storage + are stored in the hash to speed up the lookup operations: */ +typedef struct CvStringHashNode +{ + unsigned hashval; + CvString str; + struct CvStringHashNode* next; +} +CvStringHashNode; + +typedef struct CvGenericHash CvFileNodeHash; + +/** Basic element of the file storage - scalar or collection: */ +typedef struct CvFileNode +{ + int tag; + struct CvTypeInfo* info; /**< type information + (only for user-defined object, for others it is 0) */ + union + { + double f; /**< scalar floating-point number */ + int i; /**< scalar integer number */ + CvString str; /**< text string */ + CvSeq* seq; /**< sequence (ordered collection of file nodes) */ + CvFileNodeHash* map; /**< map (collection of named file nodes) */ + } data; +} +CvFileNode; + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (CV_CDECL *CvIsInstanceFunc)( const void* struct_ptr ); +typedef void (CV_CDECL *CvReleaseFunc)( void** struct_dblptr ); +typedef void* (CV_CDECL *CvReadFunc)( CvFileStorage* storage, CvFileNode* node ); +typedef void (CV_CDECL *CvWriteFunc)( CvFileStorage* storage, const char* name, + const void* struct_ptr, CvAttrList attributes ); +typedef void* (CV_CDECL *CvCloneFunc)( const void* struct_ptr ); +#ifdef __cplusplus +} +#endif + +/** @brief Type information + +The structure contains information about one of the standard or user-defined types. Instances of the +type may or may not contain a pointer to the corresponding CvTypeInfo structure. In any case, there +is a way to find the type info structure for a given object using the cvTypeOf function. +Alternatively, type info can be found by type name using cvFindType, which is used when an object +is read from file storage. The user can register a new type with cvRegisterType that adds the type +information structure into the beginning of the type list. Thus, it is possible to create +specialized types from generic standard types and override the basic methods. + */ +typedef struct CvTypeInfo +{ + int flags; /**< not used */ + int header_size; /**< sizeof(CvTypeInfo) */ + struct CvTypeInfo* prev; /**< previous registered type in the list */ + struct CvTypeInfo* next; /**< next registered type in the list */ + const char* type_name; /**< type name, written to file storage */ + CvIsInstanceFunc is_instance; /**< checks if the passed object belongs to the type */ + CvReleaseFunc release; /**< releases object (memory etc.) */ + CvReadFunc read; /**< reads object from file storage */ + CvWriteFunc write; /**< writes object to file storage */ + CvCloneFunc clone; /**< creates a copy of the object */ +} +CvTypeInfo; +#endif + +/** @} */ + +#endif /*OPENCV_CORE_TYPES_H*/ + +/* End of file. */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/utility.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/utility.hpp new file mode 100644 index 0000000..29dd8fb --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/utility.hpp @@ -0,0 +1,1314 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2015, Itseez Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_CORE_UTILITY_H +#define OPENCV_CORE_UTILITY_H + +#ifndef __cplusplus +# error utility.hpp header must be compiled as C++ +#endif + +#if defined(check) +# warning Detected Apple 'check' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. +#endif + +#include "opencv2/core.hpp" +#include + +#include + +#if !defined(_M_CEE) +#include // std::mutex, std::lock_guard +#endif + +namespace cv +{ + +#ifdef CV_COLLECT_IMPL_DATA +CV_EXPORTS void setImpl(int flags); // set implementation flags and reset storage arrays +CV_EXPORTS void addImpl(int flag, const char* func = 0); // add implementation and function name to storage arrays +// Get stored implementation flags and functions names arrays +// Each implementation entry correspond to function name entry, so you can find which implementation was executed in which function +CV_EXPORTS int getImpl(std::vector &impl, std::vector &funName); + +CV_EXPORTS bool useCollection(); // return implementation collection state +CV_EXPORTS void setUseCollection(bool flag); // set implementation collection state + +#define CV_IMPL_PLAIN 0x01 // native CPU OpenCV implementation +#define CV_IMPL_OCL 0x02 // OpenCL implementation +#define CV_IMPL_IPP 0x04 // IPP implementation +#define CV_IMPL_MT 0x10 // multithreaded implementation + +#define CV_IMPL_ADD(impl) \ + if(cv::useCollection()) \ + { \ + cv::addImpl(impl, CV_Func); \ + } +#else +#define CV_IMPL_ADD(impl) +#endif + +//! @addtogroup core_utils +//! @{ + +/** @brief Automatically Allocated Buffer Class + + The class is used for temporary buffers in functions and methods. + If a temporary buffer is usually small (a few K's of memory), + but its size depends on the parameters, it makes sense to create a small + fixed-size array on stack and use it if it's large enough. If the required buffer size + is larger than the fixed size, another buffer of sufficient size is allocated dynamically + and released after the processing. Therefore, in typical cases, when the buffer size is small, + there is no overhead associated with malloc()/free(). + At the same time, there is no limit on the size of processed data. + + This is what AutoBuffer does. The template takes 2 parameters - type of the buffer elements and + the number of stack-allocated elements. Here is how the class is used: + + \code + void my_func(const cv::Mat& m) + { + cv::AutoBuffer buf(1000); // create automatic buffer containing 1000 floats + + buf.allocate(m.rows); // if m.rows <= 1000, the pre-allocated buffer is used, + // otherwise the buffer of "m.rows" floats will be allocated + // dynamically and deallocated in cv::AutoBuffer destructor + ... + } + \endcode +*/ +template class AutoBuffer +{ +public: + typedef _Tp value_type; + + //! the default constructor + AutoBuffer(); + //! constructor taking the real buffer size + explicit AutoBuffer(size_t _size); + + //! the copy constructor + AutoBuffer(const AutoBuffer<_Tp, fixed_size>& buf); + //! the assignment operator + AutoBuffer<_Tp, fixed_size>& operator = (const AutoBuffer<_Tp, fixed_size>& buf); + + //! destructor. calls deallocate() + ~AutoBuffer(); + + //! allocates the new buffer of size _size. if the _size is small enough, stack-allocated buffer is used + void allocate(size_t _size); + //! deallocates the buffer if it was dynamically allocated + void deallocate(); + //! resizes the buffer and preserves the content + void resize(size_t _size); + //! returns the current buffer size + size_t size() const; + //! returns pointer to the real buffer, stack-allocated or heap-allocated + inline _Tp* data() { return ptr; } + //! returns read-only pointer to the real buffer, stack-allocated or heap-allocated + inline const _Tp* data() const { return ptr; } + +#if !defined(OPENCV_DISABLE_DEPRECATED_COMPATIBILITY) // use to .data() calls instead + //! returns pointer to the real buffer, stack-allocated or heap-allocated + operator _Tp* () { return ptr; } + //! returns read-only pointer to the real buffer, stack-allocated or heap-allocated + operator const _Tp* () const { return ptr; } +#else + //! returns a reference to the element at specified location. No bounds checking is performed in Release builds. + inline _Tp& operator[] (size_t i) { CV_DbgCheckLT(i, sz, "out of range"); return ptr[i]; } + //! returns a reference to the element at specified location. No bounds checking is performed in Release builds. + inline const _Tp& operator[] (size_t i) const { CV_DbgCheckLT(i, sz, "out of range"); return ptr[i]; } +#endif + +protected: + //! pointer to the real buffer, can point to buf if the buffer is small enough + _Tp* ptr; + //! size of the real buffer + size_t sz; + //! pre-allocated buffer. At least 1 element to confirm C++ standard requirements + _Tp buf[(fixed_size > 0) ? fixed_size : 1]; +}; + +/** @brief Sets/resets the break-on-error mode. + +When the break-on-error mode is set, the default error handler issues a hardware exception, which +can make debugging more convenient. + +\return the previous state + */ +CV_EXPORTS bool setBreakOnError(bool flag); + +extern "C" typedef int (*ErrorCallback)( int status, const char* func_name, + const char* err_msg, const char* file_name, + int line, void* userdata ); + + +/** @brief Sets the new error handler and the optional user data. + + The function sets the new error handler, called from cv::error(). + + \param errCallback the new error handler. If NULL, the default error handler is used. + \param userdata the optional user data pointer, passed to the callback. + \param prevUserdata the optional output parameter where the previous user data pointer is stored + + \return the previous error handler +*/ +CV_EXPORTS ErrorCallback redirectError( ErrorCallback errCallback, void* userdata=0, void** prevUserdata=0); + +CV_EXPORTS String tempfile( const char* suffix = 0); +CV_EXPORTS void glob(String pattern, std::vector& result, bool recursive = false); + +/** @brief OpenCV will try to set the number of threads for the next parallel region. + +If threads == 0, OpenCV will disable threading optimizations and run all it's functions +sequentially. Passing threads \< 0 will reset threads number to system default. This function must +be called outside of parallel region. + +OpenCV will try to run its functions with specified threads number, but some behaviour differs from +framework: +- `TBB` - User-defined parallel constructions will run with the same threads number, if + another is not specified. If later on user creates his own scheduler, OpenCV will use it. +- `OpenMP` - No special defined behaviour. +- `Concurrency` - If threads == 1, OpenCV will disable threading optimizations and run its + functions sequentially. +- `GCD` - Supports only values \<= 0. +- `C=` - No special defined behaviour. +@param nthreads Number of threads used by OpenCV. +@sa getNumThreads, getThreadNum + */ +CV_EXPORTS_W void setNumThreads(int nthreads); + +/** @brief Returns the number of threads used by OpenCV for parallel regions. + +Always returns 1 if OpenCV is built without threading support. + +The exact meaning of return value depends on the threading framework used by OpenCV library: +- `TBB` - The number of threads, that OpenCV will try to use for parallel regions. If there is + any tbb::thread_scheduler_init in user code conflicting with OpenCV, then function returns + default number of threads used by TBB library. +- `OpenMP` - An upper bound on the number of threads that could be used to form a new team. +- `Concurrency` - The number of threads, that OpenCV will try to use for parallel regions. +- `GCD` - Unsupported; returns the GCD thread pool limit (512) for compatibility. +- `C=` - The number of threads, that OpenCV will try to use for parallel regions, if before + called setNumThreads with threads \> 0, otherwise returns the number of logical CPUs, + available for the process. +@sa setNumThreads, getThreadNum + */ +CV_EXPORTS_W int getNumThreads(); + +/** @brief Returns the index of the currently executed thread within the current parallel region. Always +returns 0 if called outside of parallel region. + +@deprecated Current implementation doesn't corresponding to this documentation. + +The exact meaning of the return value depends on the threading framework used by OpenCV library: +- `TBB` - Unsupported with current 4.1 TBB release. Maybe will be supported in future. +- `OpenMP` - The thread number, within the current team, of the calling thread. +- `Concurrency` - An ID for the virtual processor that the current context is executing on (0 + for master thread and unique number for others, but not necessary 1,2,3,...). +- `GCD` - System calling thread's ID. Never returns 0 inside parallel region. +- `C=` - The index of the current parallel task. +@sa setNumThreads, getNumThreads + */ +CV_EXPORTS_W int getThreadNum(); + +/** @brief Returns full configuration time cmake output. + +Returned value is raw cmake output including version control system revision, compiler version, +compiler flags, enabled modules and third party libraries, etc. Output format depends on target +architecture. + */ +CV_EXPORTS_W const String& getBuildInformation(); + +/** @brief Returns library version string + +For example "3.4.1-dev". + +@sa getMajorVersion, getMinorVersion, getRevisionVersion +*/ +CV_EXPORTS_W String getVersionString(); + +/** @brief Returns major library version */ +CV_EXPORTS_W int getVersionMajor(); + +/** @brief Returns minor library version */ +CV_EXPORTS_W int getVersionMinor(); + +/** @brief Returns revision field of the library version */ +CV_EXPORTS_W int getVersionRevision(); + +/** @brief Returns the number of ticks. + +The function returns the number of ticks after the certain event (for example, when the machine was +turned on). It can be used to initialize RNG or to measure a function execution time by reading the +tick count before and after the function call. +@sa getTickFrequency, TickMeter + */ +CV_EXPORTS_W int64 getTickCount(); + +/** @brief Returns the number of ticks per second. + +The function returns the number of ticks per second. That is, the following code computes the +execution time in seconds: +@code + double t = (double)getTickCount(); + // do something ... + t = ((double)getTickCount() - t)/getTickFrequency(); +@endcode +@sa getTickCount, TickMeter + */ +CV_EXPORTS_W double getTickFrequency(); + +/** @brief a Class to measure passing time. + +The class computes passing time by counting the number of ticks per second. That is, the following code computes the +execution time in seconds: +@code +TickMeter tm; +tm.start(); +// do something ... +tm.stop(); +std::cout << tm.getTimeSec(); +@endcode + +It is also possible to compute the average time over multiple runs: +@code +TickMeter tm; +for (int i = 0; i < 100; i++) +{ + tm.start(); + // do something ... + tm.stop(); +} +double average_time = tm.getTimeSec() / tm.getCounter(); +std::cout << "Average time in second per iteration is: " << average_time << std::endl; +@endcode +@sa getTickCount, getTickFrequency +*/ + +class CV_EXPORTS_W TickMeter +{ +public: + //! the default constructor + CV_WRAP TickMeter() + { + reset(); + } + + /** + starts counting ticks. + */ + CV_WRAP void start() + { + startTime = cv::getTickCount(); + } + + /** + stops counting ticks. + */ + CV_WRAP void stop() + { + int64 time = cv::getTickCount(); + if (startTime == 0) + return; + ++counter; + sumTime += (time - startTime); + startTime = 0; + } + + /** + returns counted ticks. + */ + CV_WRAP int64 getTimeTicks() const + { + return sumTime; + } + + /** + returns passed time in microseconds. + */ + CV_WRAP double getTimeMicro() const + { + return getTimeMilli()*1e3; + } + + /** + returns passed time in milliseconds. + */ + CV_WRAP double getTimeMilli() const + { + return getTimeSec()*1e3; + } + + /** + returns passed time in seconds. + */ + CV_WRAP double getTimeSec() const + { + return (double)getTimeTicks() / getTickFrequency(); + } + + /** + returns internal counter value. + */ + CV_WRAP int64 getCounter() const + { + return counter; + } + + /** + resets internal values. + */ + CV_WRAP void reset() + { + startTime = 0; + sumTime = 0; + counter = 0; + } + +private: + int64 counter; + int64 sumTime; + int64 startTime; +}; + +/** @brief output operator +@code +TickMeter tm; +tm.start(); +// do something ... +tm.stop(); +std::cout << tm; +@endcode +*/ + +static inline +std::ostream& operator << (std::ostream& out, const TickMeter& tm) +{ + return out << tm.getTimeSec() << "sec"; +} + +/** @brief Returns the number of CPU ticks. + +The function returns the current number of CPU ticks on some architectures (such as x86, x64, +PowerPC). On other platforms the function is equivalent to getTickCount. It can also be used for +very accurate time measurements, as well as for RNG initialization. Note that in case of multi-CPU +systems a thread, from which getCPUTickCount is called, can be suspended and resumed at another CPU +with its own counter. So, theoretically (and practically) the subsequent calls to the function do +not necessary return the monotonously increasing values. Also, since a modern CPU varies the CPU +frequency depending on the load, the number of CPU clocks spent in some code cannot be directly +converted to time units. Therefore, getTickCount is generally a preferable solution for measuring +execution time. + */ +CV_EXPORTS_W int64 getCPUTickCount(); + +/** @brief Returns true if the specified feature is supported by the host hardware. + +The function returns true if the host hardware supports the specified feature. When user calls +setUseOptimized(false), the subsequent calls to checkHardwareSupport() will return false until +setUseOptimized(true) is called. This way user can dynamically switch on and off the optimized code +in OpenCV. +@param feature The feature of interest, one of cv::CpuFeatures + */ +CV_EXPORTS_W bool checkHardwareSupport(int feature); + +/** @brief Returns feature name by ID + +Returns empty string if feature is not defined +*/ +CV_EXPORTS_W String getHardwareFeatureName(int feature); + +/** @brief Returns list of CPU features enabled during compilation. + +Returned value is a string containing space separated list of CPU features with following markers: + +- no markers - baseline features +- prefix `*` - features enabled in dispatcher +- suffix `?` - features enabled but not available in HW + +Example: `SSE SSE2 SSE3 *SSE4.1 *SSE4.2 *FP16 *AVX *AVX2 *AVX512-SKX?` +*/ +CV_EXPORTS std::string getCPUFeaturesLine(); + +/** @brief Returns the number of logical CPUs available for the process. + */ +CV_EXPORTS_W int getNumberOfCPUs(); + + +/** @brief Aligns a pointer to the specified number of bytes. + +The function returns the aligned pointer of the same type as the input pointer: +\f[\texttt{(_Tp*)(((size_t)ptr + n-1) & -n)}\f] +@param ptr Aligned pointer. +@param n Alignment size that must be a power of two. + */ +template static inline _Tp* alignPtr(_Tp* ptr, int n=(int)sizeof(_Tp)) +{ + CV_DbgAssert((n & (n - 1)) == 0); // n is a power of 2 + return (_Tp*)(((size_t)ptr + n-1) & -n); +} + +/** @brief Aligns a buffer size to the specified number of bytes. + +The function returns the minimum number that is greater than or equal to sz and is divisible by n : +\f[\texttt{(sz + n-1) & -n}\f] +@param sz Buffer size to align. +@param n Alignment size that must be a power of two. + */ +static inline size_t alignSize(size_t sz, int n) +{ + CV_DbgAssert((n & (n - 1)) == 0); // n is a power of 2 + return (sz + n-1) & -n; +} + +/** @brief Integer division with result round up. + +Use this function instead of `ceil((float)a / b)` expressions. + +@sa alignSize +*/ +static inline int divUp(int a, unsigned int b) +{ + CV_DbgAssert(a >= 0); + return (a + b - 1) / b; +} +/** @overload */ +static inline size_t divUp(size_t a, unsigned int b) +{ + return (a + b - 1) / b; +} + +/** @brief Round first value up to the nearest multiple of second value. + +Use this function instead of `ceil((float)a / b) * b` expressions. + +@sa divUp +*/ +static inline int roundUp(int a, unsigned int b) +{ + CV_DbgAssert(a >= 0); + return a + b - 1 - (a + b -1) % b; +} +/** @overload */ +static inline size_t roundUp(size_t a, unsigned int b) +{ + return a + b - 1 - (a + b - 1) % b; +} + +/** @brief Enables or disables the optimized code. + +The function can be used to dynamically turn on and off optimized dispatched code (code that uses SSE4.2, AVX/AVX2, +and other instructions on the platforms that support it). It sets a global flag that is further +checked by OpenCV functions. Since the flag is not checked in the inner OpenCV loops, it is only +safe to call the function on the very top level in your application where you can be sure that no +other OpenCV function is currently executed. + +By default, the optimized code is enabled unless you disable it in CMake. The current status can be +retrieved using useOptimized. +@param onoff The boolean flag specifying whether the optimized code should be used (onoff=true) +or not (onoff=false). + */ +CV_EXPORTS_W void setUseOptimized(bool onoff); + +/** @brief Returns the status of optimized code usage. + +The function returns true if the optimized code is enabled. Otherwise, it returns false. + */ +CV_EXPORTS_W bool useOptimized(); + +static inline size_t getElemSize(int type) { return (size_t)CV_ELEM_SIZE(type); } + +/////////////////////////////// Parallel Primitives ////////////////////////////////// + +/** @brief Base class for parallel data processors +*/ +class CV_EXPORTS ParallelLoopBody +{ +public: + virtual ~ParallelLoopBody(); + virtual void operator() (const Range& range) const = 0; +}; + +/** @brief Parallel data processor +*/ +CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body, double nstripes=-1.); + +class ParallelLoopBodyLambdaWrapper : public ParallelLoopBody +{ +private: + std::function m_functor; +public: + ParallelLoopBodyLambdaWrapper(std::function functor) : + m_functor(functor) + { } + + virtual void operator() (const cv::Range& range) const CV_OVERRIDE + { + m_functor(range); + } +}; + +inline void parallel_for_(const Range& range, std::function functor, double nstripes=-1.) +{ + parallel_for_(range, ParallelLoopBodyLambdaWrapper(functor), nstripes); +} + +/////////////////////////////// forEach method of cv::Mat //////////////////////////// +template inline +void Mat::forEach_impl(const Functor& operation) { + if (false) { + operation(*reinterpret_cast<_Tp*>(0), reinterpret_cast(0)); + // If your compiler fails in this line. + // Please check that your functor signature is + // (_Tp&, const int*) <- multi-dimensional + // or (_Tp&, void*) <- in case you don't need current idx. + } + + CV_Assert(this->total() / this->size[this->dims - 1] <= INT_MAX); + const int LINES = static_cast(this->total() / this->size[this->dims - 1]); + + class PixelOperationWrapper :public ParallelLoopBody + { + public: + PixelOperationWrapper(Mat_<_Tp>* const frame, const Functor& _operation) + : mat(frame), op(_operation) {} + virtual ~PixelOperationWrapper(){} + // ! Overloaded virtual operator + // convert range call to row call. + virtual void operator()(const Range &range) const CV_OVERRIDE + { + const int DIMS = mat->dims; + const int COLS = mat->size[DIMS - 1]; + if (DIMS <= 2) { + for (int row = range.start; row < range.end; ++row) { + this->rowCall2(row, COLS); + } + } else { + std::vector idx(DIMS); /// idx is modified in this->rowCall + idx[DIMS - 2] = range.start - 1; + + for (int line_num = range.start; line_num < range.end; ++line_num) { + idx[DIMS - 2]++; + for (int i = DIMS - 2; i >= 0; --i) { + if (idx[i] >= mat->size[i]) { + idx[i - 1] += idx[i] / mat->size[i]; + idx[i] %= mat->size[i]; + continue; // carry-over; + } + else { + break; + } + } + this->rowCall(&idx[0], COLS, DIMS); + } + } + } + private: + Mat_<_Tp>* const mat; + const Functor op; + // ! Call operator for each elements in this row. + inline void rowCall(int* const idx, const int COLS, const int DIMS) const { + int &col = idx[DIMS - 1]; + col = 0; + _Tp* pixel = &(mat->template at<_Tp>(idx)); + + while (col < COLS) { + op(*pixel, const_cast(idx)); + pixel++; col++; + } + col = 0; + } + // ! Call operator for each elements in this row. 2d mat special version. + inline void rowCall2(const int row, const int COLS) const { + union Index{ + int body[2]; + operator const int*() const { + return reinterpret_cast(this); + } + int& operator[](const int i) { + return body[i]; + } + } idx = {{row, 0}}; + // Special union is needed to avoid + // "error: array subscript is above array bounds [-Werror=array-bounds]" + // when call the functor `op` such that access idx[3]. + + _Tp* pixel = &(mat->template at<_Tp>(idx)); + const _Tp* const pixel_end = pixel + COLS; + while(pixel < pixel_end) { + op(*pixel++, static_cast(idx)); + idx[1]++; + } + } + PixelOperationWrapper& operator=(const PixelOperationWrapper &) { + CV_Assert(false); + // We can not remove this implementation because Visual Studio warning C4822. + return *this; + } + }; + + parallel_for_(cv::Range(0, LINES), PixelOperationWrapper(reinterpret_cast*>(this), operation)); +} + +/////////////////////////// Synchronization Primitives /////////////////////////////// + +#if !defined(_M_CEE) +typedef std::recursive_mutex Mutex; +typedef std::lock_guard AutoLock; +#endif + +// TLS interface +class CV_EXPORTS TLSDataContainer +{ +protected: + TLSDataContainer(); + virtual ~TLSDataContainer(); + + void gatherData(std::vector &data) const; + void* getData() const; + void release(); + +private: + virtual void* createDataInstance() const = 0; + virtual void deleteDataInstance(void* pData) const = 0; + + int key_; + +public: + void cleanup(); //! Release created TLS data container objects. It is similar to release() call, but it keeps TLS container valid. +}; + +// Main TLS data class +template +class TLSData : protected TLSDataContainer +{ +public: + inline TLSData() {} + inline ~TLSData() { release(); } // Release key and delete associated data + inline T* get() const { return (T*)getData(); } // Get data associated with key + inline T& getRef() const { T* ptr = (T*)getData(); CV_Assert(ptr); return *ptr; } // Get data associated with key + + // Get data from all threads + inline void gather(std::vector &data) const + { + std::vector &dataVoid = reinterpret_cast&>(data); + gatherData(dataVoid); + } + + inline void cleanup() { TLSDataContainer::cleanup(); } + +private: + virtual void* createDataInstance() const CV_OVERRIDE {return new T;} // Wrapper to allocate data by template + virtual void deleteDataInstance(void* pData) const CV_OVERRIDE {delete (T*)pData;} // Wrapper to release data by template + + // Disable TLS copy operations + TLSData(TLSData &) {} + TLSData& operator =(const TLSData &) {return *this;} +}; + +/** @brief Designed for command line parsing + +The sample below demonstrates how to use CommandLineParser: +@code + CommandLineParser parser(argc, argv, keys); + parser.about("Application name v1.0.0"); + + if (parser.has("help")) + { + parser.printMessage(); + return 0; + } + + int N = parser.get("N"); + double fps = parser.get("fps"); + String path = parser.get("path"); + + use_time_stamp = parser.has("timestamp"); + + String img1 = parser.get(0); + String img2 = parser.get(1); + + int repeat = parser.get(2); + + if (!parser.check()) + { + parser.printErrors(); + return 0; + } +@endcode + +### Keys syntax + +The keys parameter is a string containing several blocks, each one is enclosed in curly braces and +describes one argument. Each argument contains three parts separated by the `|` symbol: + +-# argument names is a space-separated list of option synonyms (to mark argument as positional, prefix it with the `@` symbol) +-# default value will be used if the argument was not provided (can be empty) +-# help message (can be empty) + +For example: + +@code{.cpp} + const String keys = + "{help h usage ? | | print this message }" + "{@image1 | | image1 for compare }" + "{@image2 || image2 for compare }" + "{@repeat |1 | number }" + "{path |. | path to file }" + "{fps | -1.0 | fps for output video }" + "{N count |100 | count of objects }" + "{ts timestamp | | use time stamp }" + ; +} +@endcode + +Note that there are no default values for `help` and `timestamp` so we can check their presence using the `has()` method. +Arguments with default values are considered to be always present. Use the `get()` method in these cases to check their +actual value instead. + +String keys like `get("@image1")` return the empty string `""` by default - even with an empty default value. +Use the special `` default value to enforce that the returned string must not be empty. (like in `get("@image2")`) + +### Usage + +For the described keys: + +@code{.sh} + # Good call (3 positional parameters: image1, image2 and repeat; N is 200, ts is true) + $ ./app -N=200 1.png 2.jpg 19 -ts + + # Bad call + $ ./app -fps=aaa + ERRORS: + Parameter 'fps': can not convert: [aaa] to [double] +@endcode + */ +class CV_EXPORTS CommandLineParser +{ +public: + + /** @brief Constructor + + Initializes command line parser object + + @param argc number of command line arguments (from main()) + @param argv array of command line arguments (from main()) + @param keys string describing acceptable command line parameters (see class description for syntax) + */ + CommandLineParser(int argc, const char* const argv[], const String& keys); + + /** @brief Copy constructor */ + CommandLineParser(const CommandLineParser& parser); + + /** @brief Assignment operator */ + CommandLineParser& operator = (const CommandLineParser& parser); + + /** @brief Destructor */ + ~CommandLineParser(); + + /** @brief Returns application path + + This method returns the path to the executable from the command line (`argv[0]`). + + For example, if the application has been started with such a command: + @code{.sh} + $ ./bin/my-executable + @endcode + this method will return `./bin`. + */ + String getPathToApplication() const; + + /** @brief Access arguments by name + + Returns argument converted to selected type. If the argument is not known or can not be + converted to selected type, the error flag is set (can be checked with @ref check). + + For example, define: + @code{.cpp} + String keys = "{N count||}"; + @endcode + + Call: + @code{.sh} + $ ./my-app -N=20 + # or + $ ./my-app --count=20 + @endcode + + Access: + @code{.cpp} + int N = parser.get("N"); + @endcode + + @param name name of the argument + @param space_delete remove spaces from the left and right of the string + @tparam T the argument will be converted to this type if possible + + @note You can access positional arguments by their `@`-prefixed name: + @code{.cpp} + parser.get("@image"); + @endcode + */ + template + T get(const String& name, bool space_delete = true) const + { + T val = T(); + getByName(name, space_delete, ParamType::type, (void*)&val); + return val; + } + + /** @brief Access positional arguments by index + + Returns argument converted to selected type. Indexes are counted from zero. + + For example, define: + @code{.cpp} + String keys = "{@arg1||}{@arg2||}" + @endcode + + Call: + @code{.sh} + ./my-app abc qwe + @endcode + + Access arguments: + @code{.cpp} + String val_1 = parser.get(0); // returns "abc", arg1 + String val_2 = parser.get(1); // returns "qwe", arg2 + @endcode + + @param index index of the argument + @param space_delete remove spaces from the left and right of the string + @tparam T the argument will be converted to this type if possible + */ + template + T get(int index, bool space_delete = true) const + { + T val = T(); + getByIndex(index, space_delete, ParamType::type, (void*)&val); + return val; + } + + /** @brief Check if field was provided in the command line + + @param name argument name to check + */ + bool has(const String& name) const; + + /** @brief Check for parsing errors + + Returns false if error occurred while accessing the parameters (bad conversion, missing arguments, + etc.). Call @ref printErrors to print error messages list. + */ + bool check() const; + + /** @brief Set the about message + + The about message will be shown when @ref printMessage is called, right before arguments table. + */ + void about(const String& message); + + /** @brief Print help message + + This method will print standard help message containing the about message and arguments description. + + @sa about + */ + void printMessage() const; + + /** @brief Print list of errors occurred + + @sa check + */ + void printErrors() const; + +protected: + void getByName(const String& name, bool space_delete, Param type, void* dst) const; + void getByIndex(int index, bool space_delete, Param type, void* dst) const; + + struct Impl; + Impl* impl; +}; + +//! @} core_utils + +//! @cond IGNORED + +/////////////////////////////// AutoBuffer implementation //////////////////////////////////////// + +template inline +AutoBuffer<_Tp, fixed_size>::AutoBuffer() +{ + ptr = buf; + sz = fixed_size; +} + +template inline +AutoBuffer<_Tp, fixed_size>::AutoBuffer(size_t _size) +{ + ptr = buf; + sz = fixed_size; + allocate(_size); +} + +template inline +AutoBuffer<_Tp, fixed_size>::AutoBuffer(const AutoBuffer<_Tp, fixed_size>& abuf ) +{ + ptr = buf; + sz = fixed_size; + allocate(abuf.size()); + for( size_t i = 0; i < sz; i++ ) + ptr[i] = abuf.ptr[i]; +} + +template inline AutoBuffer<_Tp, fixed_size>& +AutoBuffer<_Tp, fixed_size>::operator = (const AutoBuffer<_Tp, fixed_size>& abuf) +{ + if( this != &abuf ) + { + deallocate(); + allocate(abuf.size()); + for( size_t i = 0; i < sz; i++ ) + ptr[i] = abuf.ptr[i]; + } + return *this; +} + +template inline +AutoBuffer<_Tp, fixed_size>::~AutoBuffer() +{ deallocate(); } + +template inline void +AutoBuffer<_Tp, fixed_size>::allocate(size_t _size) +{ + if(_size <= sz) + { + sz = _size; + return; + } + deallocate(); + sz = _size; + if(_size > fixed_size) + { + ptr = new _Tp[_size]; + } +} + +template inline void +AutoBuffer<_Tp, fixed_size>::deallocate() +{ + if( ptr != buf ) + { + delete[] ptr; + ptr = buf; + sz = fixed_size; + } +} + +template inline void +AutoBuffer<_Tp, fixed_size>::resize(size_t _size) +{ + if(_size <= sz) + { + sz = _size; + return; + } + size_t i, prevsize = sz, minsize = MIN(prevsize, _size); + _Tp* prevptr = ptr; + + ptr = _size > fixed_size ? new _Tp[_size] : buf; + sz = _size; + + if( ptr != prevptr ) + for( i = 0; i < minsize; i++ ) + ptr[i] = prevptr[i]; + for( i = prevsize; i < _size; i++ ) + ptr[i] = _Tp(); + + if( prevptr != buf ) + delete[] prevptr; +} + +template inline size_t +AutoBuffer<_Tp, fixed_size>::size() const +{ return sz; } + +//! @endcond + + +// Basic Node class for tree building +template +class CV_EXPORTS Node +{ +public: + Node() + { + m_pParent = 0; + } + Node(OBJECT& payload) : m_payload(payload) + { + m_pParent = 0; + } + ~Node() + { + removeChilds(); + if (m_pParent) + { + int idx = m_pParent->findChild(this); + if (idx >= 0) + m_pParent->m_childs.erase(m_pParent->m_childs.begin() + idx); + } + } + + Node* findChild(OBJECT& payload) const + { + for(size_t i = 0; i < this->m_childs.size(); i++) + { + if(this->m_childs[i]->m_payload == payload) + return this->m_childs[i]; + } + return NULL; + } + + int findChild(Node *pNode) const + { + for (size_t i = 0; i < this->m_childs.size(); i++) + { + if(this->m_childs[i] == pNode) + return (int)i; + } + return -1; + } + + void addChild(Node *pNode) + { + if(!pNode) + return; + + CV_Assert(pNode->m_pParent == 0); + pNode->m_pParent = this; + this->m_childs.push_back(pNode); + } + + void removeChilds() + { + for(size_t i = 0; i < m_childs.size(); i++) + { + m_childs[i]->m_pParent = 0; // avoid excessive parent vector trimming + delete m_childs[i]; + } + m_childs.clear(); + } + + int getDepth() + { + int count = 0; + Node *pParent = m_pParent; + while(pParent) count++, pParent = pParent->m_pParent; + return count; + } + +public: + OBJECT m_payload; + Node* m_pParent; + std::vector*> m_childs; +}; + +// Instrumentation external interface +namespace instr +{ + +#if !defined OPENCV_ABI_CHECK + +enum TYPE +{ + TYPE_GENERAL = 0, // OpenCV API function, e.g. exported function + TYPE_MARKER, // Information marker + TYPE_WRAPPER, // Wrapper function for implementation + TYPE_FUN, // Simple function call +}; + +enum IMPL +{ + IMPL_PLAIN = 0, + IMPL_IPP, + IMPL_OPENCL, +}; + +struct NodeDataTls +{ + NodeDataTls() + { + m_ticksTotal = 0; + } + uint64 m_ticksTotal; +}; + +class CV_EXPORTS NodeData +{ +public: + NodeData(const char* funName = 0, const char* fileName = NULL, int lineNum = 0, void* retAddress = NULL, bool alwaysExpand = false, cv::instr::TYPE instrType = TYPE_GENERAL, cv::instr::IMPL implType = IMPL_PLAIN); + NodeData(NodeData &ref); + ~NodeData(); + NodeData& operator=(const NodeData&); + + cv::String m_funName; + cv::instr::TYPE m_instrType; + cv::instr::IMPL m_implType; + const char* m_fileName; + int m_lineNum; + void* m_retAddress; + bool m_alwaysExpand; + bool m_funError; + + volatile int m_counter; + volatile uint64 m_ticksTotal; + TLSData m_tls; + int m_threads; + + // No synchronization + double getTotalMs() const { return ((double)m_ticksTotal / cv::getTickFrequency()) * 1000; } + double getMeanMs() const { return (((double)m_ticksTotal/m_counter) / cv::getTickFrequency()) * 1000; } +}; +bool operator==(const NodeData& lhs, const NodeData& rhs); + +typedef Node InstrNode; + +CV_EXPORTS InstrNode* getTrace(); + +#endif // !defined OPENCV_ABI_CHECK + + +CV_EXPORTS bool useInstrumentation(); +CV_EXPORTS void setUseInstrumentation(bool flag); +CV_EXPORTS void resetTrace(); + +enum FLAGS +{ + FLAGS_NONE = 0, + FLAGS_MAPPING = 0x01, + FLAGS_EXPAND_SAME_NAMES = 0x02, +}; + +CV_EXPORTS void setFlags(FLAGS modeFlags); +static inline void setFlags(int modeFlags) { setFlags((FLAGS)modeFlags); } +CV_EXPORTS FLAGS getFlags(); + +} // namespace instr + + +namespace samples { + +//! @addtogroup core_utils_samples +// This section describes utility functions for OpenCV samples. +// +// @note Implementation of these utilities is not thread-safe. +// +//! @{ + +/** @brief Try to find requested data file + +Search directories: + +1. Directories passed via `addSamplesDataSearchPath()` +2. OPENCV_SAMPLES_DATA_PATH_HINT environment variable +3. OPENCV_SAMPLES_DATA_PATH environment variable + If parameter value is not empty and nothing is found then stop searching. +4. Detects build/install path based on: + a. current working directory (CWD) + b. and/or binary module location (opencv_core/opencv_world, doesn't work with static linkage) +5. Scan `/{,data,samples/data}` directories if build directory is detected or the current directory is in source tree. +6. Scan `/share/OpenCV` directory if install directory is detected. + +@see cv::utils::findDataFile + +@param relative_path Relative path to data file +@param required Specify "file not found" handling. + If true, function prints information message and raises cv::Exception. + If false, function returns empty result +@param silentMode Disables messages +@return Returns path (absolute or relative to the current directory) or empty string if file is not found +*/ +CV_EXPORTS_W cv::String findFile(const cv::String& relative_path, bool required = true, bool silentMode = false); + +CV_EXPORTS_W cv::String findFileOrKeep(const cv::String& relative_path, bool silentMode = false); + +inline cv::String findFileOrKeep(const cv::String& relative_path, bool silentMode) +{ + cv::String res = findFile(relative_path, false, silentMode); + if (res.empty()) + return relative_path; + return res; +} + +/** @brief Override search data path by adding new search location + +Use this only to override default behavior +Passed paths are used in LIFO order. + +@param path Path to used samples data +*/ +CV_EXPORTS_W void addSamplesDataSearchPath(const cv::String& path); + +/** @brief Append samples search data sub directory + +General usage is to add OpenCV modules name (`/modules//samples/data` -> `/samples/data` + `modules//samples/data`). +Passed subdirectories are used in LIFO order. + +@param subdir samples data sub directory +*/ +CV_EXPORTS_W void addSamplesDataSearchSubDirectory(const cv::String& subdir); + +//! @} +} // namespace samples + +namespace utils { + +CV_EXPORTS int getThreadID(); + +} // namespace + +} //namespace cv + +#endif //OPENCV_CORE_UTILITY_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/utils/filesystem.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/utils/filesystem.hpp new file mode 100644 index 0000000..9f043be --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/utils/filesystem.hpp @@ -0,0 +1,81 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_UTILS_FILESYSTEM_HPP +#define OPENCV_UTILS_FILESYSTEM_HPP + +namespace cv { namespace utils { namespace fs { + + +CV_EXPORTS bool exists(const cv::String& path); +CV_EXPORTS bool isDirectory(const cv::String& path); + +CV_EXPORTS void remove_all(const cv::String& path); + + +CV_EXPORTS cv::String getcwd(); + +/** @brief Converts path p to a canonical absolute path + * Symlinks are processed if there is support for them on running platform. + * + * @param path input path. Target file/directory should exist. + */ +CV_EXPORTS cv::String canonical(const cv::String& path); + +/** Join path components */ +CV_EXPORTS cv::String join(const cv::String& base, const cv::String& path); + +/** Get parent directory */ +CV_EXPORTS cv::String getParent(const cv::String &path); + +/** + * Generate a list of all files that match the globbing pattern. + * + * Result entries are prefixed by base directory path. + * + * @param directory base directory + * @param pattern filter pattern (based on '*'/'?' symbols). Use empty string to disable filtering and return all results + * @param[out] result result of globing. + * @param recursive scan nested directories too + * @param includeDirectories include directories into results list + */ +CV_EXPORTS void glob(const cv::String& directory, const cv::String& pattern, + CV_OUT std::vector& result, + bool recursive = false, bool includeDirectories = false); + +/** + * Generate a list of all files that match the globbing pattern. + * + * @param directory base directory + * @param pattern filter pattern (based on '*'/'?' symbols). Use empty string to disable filtering and return all results + * @param[out] result globbing result with relative paths from base directory + * @param recursive scan nested directories too + * @param includeDirectories include directories into results list + */ +CV_EXPORTS void glob_relative(const cv::String& directory, const cv::String& pattern, + CV_OUT std::vector& result, + bool recursive = false, bool includeDirectories = false); + + +CV_EXPORTS bool createDirectory(const cv::String& path); +CV_EXPORTS bool createDirectories(const cv::String& path); + +#ifdef __OPENCV_BUILD +// TODO +//CV_EXPORTS cv::String getTempDirectory(); + +/** + * @brief Returns directory to store OpenCV cache files + * Create sub-directory in common OpenCV cache directory if it doesn't exist. + * @param sub_directory_name name of sub-directory. NULL or "" value asks to return root cache directory. + * @param configuration_name optional name of configuration parameter name which overrides default behavior. + * @return Path to cache directory. Returns empty string if cache directories support is not available. Returns "disabled" if cache disabled by user. + */ +CV_EXPORTS cv::String getCacheDirectory(const char* sub_directory_name, const char* configuration_name = NULL); + +#endif + +}}} // namespace + +#endif // OPENCV_UTILS_FILESYSTEM_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.defines.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.defines.hpp new file mode 100644 index 0000000..b2dfc41 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.defines.hpp @@ -0,0 +1,22 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_LOGGER_DEFINES_HPP +#define OPENCV_LOGGER_DEFINES_HPP + +//! @addtogroup core_logging +//! @{ + +// Supported logging levels and their semantic +#define CV_LOG_LEVEL_SILENT 0 //!< for using in setLogLevel() call +#define CV_LOG_LEVEL_FATAL 1 //!< Fatal (critical) error (unrecoverable internal error) +#define CV_LOG_LEVEL_ERROR 2 //!< Error message +#define CV_LOG_LEVEL_WARN 3 //!< Warning message +#define CV_LOG_LEVEL_INFO 4 //!< Info message +#define CV_LOG_LEVEL_DEBUG 5 //!< Debug message. Disabled in the "Release" build. +#define CV_LOG_LEVEL_VERBOSE 6 //!< Verbose (trace) messages. Requires verbosity level. Disabled in the "Release" build. + +//! @} + +#endif // OPENCV_LOGGER_DEFINES_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.hpp new file mode 100644 index 0000000..47094f9 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/utils/logger.hpp @@ -0,0 +1,87 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_LOGGER_HPP +#define OPENCV_LOGGER_HPP + +#include +#include +#include // INT_MAX + +#include "logger.defines.hpp" + +//! @addtogroup core_logging +// This section describes OpenCV logging utilities. +// +//! @{ + +namespace cv { +namespace utils { +namespace logging { + +//! Supported logging levels and their semantic +enum LogLevel { + LOG_LEVEL_SILENT = 0, //!< for using in setLogVevel() call + LOG_LEVEL_FATAL = 1, //!< Fatal (critical) error (unrecoverable internal error) + LOG_LEVEL_ERROR = 2, //!< Error message + LOG_LEVEL_WARNING = 3, //!< Warning message + LOG_LEVEL_INFO = 4, //!< Info message + LOG_LEVEL_DEBUG = 5, //!< Debug message. Disabled in the "Release" build. + LOG_LEVEL_VERBOSE = 6, //!< Verbose (trace) messages. Requires verbosity level. Disabled in the "Release" build. +#ifndef CV_DOXYGEN + ENUM_LOG_LEVEL_FORCE_INT = INT_MAX +#endif +}; + +/** Set global logging level +@return previous logging level +*/ +CV_EXPORTS LogLevel setLogLevel(LogLevel logLevel); +/** Get global logging level */ +CV_EXPORTS LogLevel getLogLevel(); + +namespace internal { +/** Write log message */ +CV_EXPORTS void writeLogMessage(LogLevel logLevel, const char* message); +} // namespace + +/** + * \def CV_LOG_STRIP_LEVEL + * + * Define CV_LOG_STRIP_LEVEL=CV_LOG_LEVEL_[DEBUG|INFO|WARN|ERROR|FATAL|DISABLED] to compile out anything at that and before that logging level + */ +#ifndef CV_LOG_STRIP_LEVEL +# if defined NDEBUG +# define CV_LOG_STRIP_LEVEL CV_LOG_LEVEL_DEBUG +# else +# define CV_LOG_STRIP_LEVEL CV_LOG_LEVEL_VERBOSE +# endif +#endif + + +#define CV_LOG_FATAL(tag, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_FATAL) break; std::stringstream ss; ss << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_FATAL, ss.str().c_str()); break; } +#define CV_LOG_ERROR(tag, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_ERROR) break; std::stringstream ss; ss << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_ERROR, ss.str().c_str()); break; } +#define CV_LOG_WARNING(tag, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_WARNING) break; std::stringstream ss; ss << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_WARNING, ss.str().c_str()); break; } +#if CV_LOG_STRIP_LEVEL <= CV_LOG_LEVEL_INFO +#define CV_LOG_INFO(tag, ...) +#else +#define CV_LOG_INFO(tag, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_INFO) break; std::stringstream ss; ss << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_INFO, ss.str().c_str()); break; } +#endif +#if CV_LOG_STRIP_LEVEL <= CV_LOG_LEVEL_DEBUG +#define CV_LOG_DEBUG(tag, ...) +#else +#define CV_LOG_DEBUG(tag, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_DEBUG) break; std::stringstream ss; ss << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_DEBUG, ss.str().c_str()); break; } +#endif +#if CV_LOG_STRIP_LEVEL <= CV_LOG_LEVEL_VERBOSE +#define CV_LOG_VERBOSE(tag, v, ...) +#else +#define CV_LOG_VERBOSE(tag, v, ...) for(;;) { if (cv::utils::logging::getLogLevel() < cv::utils::logging::LOG_LEVEL_VERBOSE) break; std::stringstream ss; ss << "[VERB" << v << ":" << cv::utils::getThreadID() << "] " << __VA_ARGS__; cv::utils::logging::internal::writeLogMessage(cv::utils::logging::LOG_LEVEL_VERBOSE, ss.str().c_str()); break; } +#endif + + +}}} // namespace + +//! @} + +#endif // OPENCV_LOGGER_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/utils/trace.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/utils/trace.hpp new file mode 100644 index 0000000..858e973 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/utils/trace.hpp @@ -0,0 +1,254 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_TRACE_HPP +#define OPENCV_TRACE_HPP + +#include + +//! @addtogroup core_logging +// This section describes OpenCV tracing utilities. +// +//! @{ + +namespace cv { +namespace utils { +namespace trace { + +//! Macro to trace function +#define CV_TRACE_FUNCTION() + +#define CV_TRACE_FUNCTION_SKIP_NESTED() + +//! Trace code scope. +//! @note Dynamic names are not supported in this macro (on stack or heap). Use string literals here only, like "initialize". +#define CV_TRACE_REGION(name_as_static_string_literal) +//! mark completed of the current opened region and create new one +//! @note Dynamic names are not supported in this macro (on stack or heap). Use string literals here only, like "step1". +#define CV_TRACE_REGION_NEXT(name_as_static_string_literal) + +//! Macro to trace argument value +#define CV_TRACE_ARG(arg_id) + +//! Macro to trace argument value (expanded version) +#define CV_TRACE_ARG_VALUE(arg_id, arg_name, value) + +//! @cond IGNORED +#define CV_TRACE_NS cv::utils::trace + +#if !defined(OPENCV_DISABLE_TRACE) && defined(__EMSCRIPTEN__) +#define OPENCV_DISABLE_TRACE 1 +#endif + +namespace details { + +#ifndef __OPENCV_TRACE +# if defined __OPENCV_BUILD && !defined __OPENCV_TESTS && !defined __OPENCV_APPS +# define __OPENCV_TRACE 1 +# else +# define __OPENCV_TRACE 0 +# endif +#endif + +#ifndef CV_TRACE_FILENAME +# define CV_TRACE_FILENAME __FILE__ +#endif + +#ifndef CV__TRACE_FUNCTION +# if defined _MSC_VER +# define CV__TRACE_FUNCTION __FUNCSIG__ +# elif defined __GNUC__ +# define CV__TRACE_FUNCTION __PRETTY_FUNCTION__ +# else +# define CV__TRACE_FUNCTION "" +# endif +#endif + +//! Thread-local instance (usually allocated on stack) +class CV_EXPORTS Region +{ +public: + struct LocationExtraData; + struct LocationStaticStorage + { + LocationExtraData** ppExtra; //< implementation specific data + const char* name; //< region name (function name or other custom name) + const char* filename; //< source code filename + int line; //< source code line + int flags; //< flags (implementation code path: Plain, IPP, OpenCL) + }; + + Region(const LocationStaticStorage& location); + inline ~Region() + { + if (implFlags != 0) + destroy(); + CV_DbgAssert(implFlags == 0); + CV_DbgAssert(pImpl == NULL); + } + + class Impl; + Impl* pImpl; // NULL if current region is not active + int implFlags; // see RegionFlag, 0 if region is ignored + + bool isActive() const { return pImpl != NULL; } + + void destroy(); +private: + Region(const Region&); // disabled + Region& operator= (const Region&); // disabled +}; + +//! Specify region flags +enum RegionLocationFlag { + REGION_FLAG_FUNCTION = (1 << 0), //< region is function (=1) / nested named region (=0) + REGION_FLAG_APP_CODE = (1 << 1), //< region is Application code (=1) / OpenCV library code (=0) + REGION_FLAG_SKIP_NESTED = (1 << 2), //< avoid processing of nested regions + + REGION_FLAG_IMPL_IPP = (1 << 16), //< region is part of IPP code path + REGION_FLAG_IMPL_OPENCL = (2 << 16), //< region is part of OpenCL code path + REGION_FLAG_IMPL_OPENVX = (3 << 16), //< region is part of OpenVX code path + + REGION_FLAG_IMPL_MASK = (15 << 16), + + REGION_FLAG_REGION_FORCE = (1 << 30), + REGION_FLAG_REGION_NEXT = (1 << 31), //< close previous region (see #CV_TRACE_REGION_NEXT macro) + + ENUM_REGION_FLAG_FORCE_INT = INT_MAX +}; + +struct CV_EXPORTS TraceArg { +public: + struct ExtraData; + ExtraData** ppExtra; + const char* name; + int flags; +}; +/** @brief Add meta information to current region (function) + * See CV_TRACE_ARG macro + * @param arg argument information structure (global static cache) + * @param value argument value (can by dynamic string literal in case of string, static allocation is not required) + */ +CV_EXPORTS void traceArg(const TraceArg& arg, const char* value); +//! @overload +CV_EXPORTS void traceArg(const TraceArg& arg, int value); +//! @overload +CV_EXPORTS void traceArg(const TraceArg& arg, int64 value); +//! @overload +CV_EXPORTS void traceArg(const TraceArg& arg, double value); + +#define CV__TRACE_LOCATION_VARNAME(loc_id) CVAUX_CONCAT(CVAUX_CONCAT(__cv_trace_location_, loc_id), __LINE__) +#define CV__TRACE_LOCATION_EXTRA_VARNAME(loc_id) CVAUX_CONCAT(CVAUX_CONCAT(__cv_trace_location_extra_, loc_id) , __LINE__) + +#define CV__TRACE_DEFINE_LOCATION_(loc_id, name, flags) \ + static CV_TRACE_NS::details::Region::LocationExtraData* CV__TRACE_LOCATION_EXTRA_VARNAME(loc_id) = 0; \ + static const CV_TRACE_NS::details::Region::LocationStaticStorage \ + CV__TRACE_LOCATION_VARNAME(loc_id) = { &(CV__TRACE_LOCATION_EXTRA_VARNAME(loc_id)), name, CV_TRACE_FILENAME, __LINE__, flags}; + +#define CV__TRACE_DEFINE_LOCATION_FN(name, flags) CV__TRACE_DEFINE_LOCATION_(fn, name, ((flags) | CV_TRACE_NS::details::REGION_FLAG_FUNCTION)) + + +#define CV__TRACE_OPENCV_FUNCTION() \ + CV__TRACE_DEFINE_LOCATION_FN(CV__TRACE_FUNCTION, 0); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + +#define CV__TRACE_OPENCV_FUNCTION_NAME(name) \ + CV__TRACE_DEFINE_LOCATION_FN(name, 0); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + +#define CV__TRACE_APP_FUNCTION() \ + CV__TRACE_DEFINE_LOCATION_FN(CV__TRACE_FUNCTION, CV_TRACE_NS::details::REGION_FLAG_APP_CODE); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + +#define CV__TRACE_APP_FUNCTION_NAME(name) \ + CV__TRACE_DEFINE_LOCATION_FN(name, CV_TRACE_NS::details::REGION_FLAG_APP_CODE); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + + +#define CV__TRACE_OPENCV_FUNCTION_SKIP_NESTED() \ + CV__TRACE_DEFINE_LOCATION_FN(CV__TRACE_FUNCTION, CV_TRACE_NS::details::REGION_FLAG_SKIP_NESTED); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + +#define CV__TRACE_OPENCV_FUNCTION_NAME_SKIP_NESTED(name) \ + CV__TRACE_DEFINE_LOCATION_FN(name, CV_TRACE_NS::details::REGION_FLAG_SKIP_NESTED); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + +#define CV__TRACE_APP_FUNCTION_SKIP_NESTED() \ + CV__TRACE_DEFINE_LOCATION_FN(CV__TRACE_FUNCTION, CV_TRACE_NS::details::REGION_FLAG_SKIP_NESTED | CV_TRACE_NS::details::REGION_FLAG_APP_CODE); \ + const CV_TRACE_NS::details::Region __region_fn(CV__TRACE_LOCATION_VARNAME(fn)); + + +#define CV__TRACE_REGION_(name_as_static_string_literal, flags) \ + CV__TRACE_DEFINE_LOCATION_(region, name_as_static_string_literal, flags); \ + CV_TRACE_NS::details::Region CVAUX_CONCAT(__region_, __LINE__)(CV__TRACE_LOCATION_VARNAME(region)); + +#define CV__TRACE_REGION(name_as_static_string_literal) CV__TRACE_REGION_(name_as_static_string_literal, 0) +#define CV__TRACE_REGION_NEXT(name_as_static_string_literal) CV__TRACE_REGION_(name_as_static_string_literal, CV_TRACE_NS::details::REGION_FLAG_REGION_NEXT) + +#define CV__TRACE_ARG_VARNAME(arg_id) CVAUX_CONCAT(__cv_trace_arg_ ## arg_id, __LINE__) +#define CV__TRACE_ARG_EXTRA_VARNAME(arg_id) CVAUX_CONCAT(__cv_trace_arg_extra_ ## arg_id, __LINE__) + +#define CV__TRACE_DEFINE_ARG_(arg_id, name, flags) \ + static CV_TRACE_NS::details::TraceArg::ExtraData* CV__TRACE_ARG_EXTRA_VARNAME(arg_id) = 0; \ + static const CV_TRACE_NS::details::TraceArg \ + CV__TRACE_ARG_VARNAME(arg_id) = { &(CV__TRACE_ARG_EXTRA_VARNAME(arg_id)), name, flags }; + +#define CV__TRACE_ARG_VALUE(arg_id, arg_name, value) \ + CV__TRACE_DEFINE_ARG_(arg_id, arg_name, 0); \ + CV_TRACE_NS::details::traceArg((CV__TRACE_ARG_VARNAME(arg_id)), value); + +#define CV__TRACE_ARG(arg_id) CV_TRACE_ARG_VALUE(arg_id, #arg_id, (arg_id)) + +} // namespace + +#ifndef OPENCV_DISABLE_TRACE +#undef CV_TRACE_FUNCTION +#undef CV_TRACE_FUNCTION_SKIP_NESTED +#if __OPENCV_TRACE +#define CV_TRACE_FUNCTION CV__TRACE_OPENCV_FUNCTION +#define CV_TRACE_FUNCTION_SKIP_NESTED CV__TRACE_OPENCV_FUNCTION_SKIP_NESTED +#else +#define CV_TRACE_FUNCTION CV__TRACE_APP_FUNCTION +#define CV_TRACE_FUNCTION_SKIP_NESTED CV__TRACE_APP_FUNCTION_SKIP_NESTED +#endif + +#undef CV_TRACE_REGION +#define CV_TRACE_REGION CV__TRACE_REGION + +#undef CV_TRACE_REGION_NEXT +#define CV_TRACE_REGION_NEXT CV__TRACE_REGION_NEXT + +#undef CV_TRACE_ARG_VALUE +#define CV_TRACE_ARG_VALUE(arg_id, arg_name, value) \ + if (__region_fn.isActive()) \ + { \ + CV__TRACE_ARG_VALUE(arg_id, arg_name, value); \ + } + +#undef CV_TRACE_ARG +#define CV_TRACE_ARG CV__TRACE_ARG + +#endif // OPENCV_DISABLE_TRACE + +#ifdef OPENCV_TRACE_VERBOSE +#define CV_TRACE_FUNCTION_VERBOSE CV_TRACE_FUNCTION +#define CV_TRACE_REGION_VERBOSE CV_TRACE_REGION +#define CV_TRACE_REGION_NEXT_VERBOSE CV_TRACE_REGION_NEXT +#define CV_TRACE_ARG_VALUE_VERBOSE CV_TRACE_ARG_VALUE +#define CV_TRACE_ARG_VERBOSE CV_TRACE_ARG +#else +#define CV_TRACE_FUNCTION_VERBOSE(...) +#define CV_TRACE_REGION_VERBOSE(...) +#define CV_TRACE_REGION_NEXT_VERBOSE(...) +#define CV_TRACE_ARG_VALUE_VERBOSE(...) +#define CV_TRACE_ARG_VERBOSE(...) +#endif + +//! @endcond + +}}} // namespace + +//! @} + +#endif // OPENCV_TRACE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/va_intel.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/va_intel.hpp new file mode 100644 index 0000000..f665470 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/va_intel.hpp @@ -0,0 +1,78 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +// Copyright (C) 2015, Itseez, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. + +#ifndef OPENCV_CORE_VA_INTEL_HPP +#define OPENCV_CORE_VA_INTEL_HPP + +#ifndef __cplusplus +# error va_intel.hpp header must be compiled as C++ +#endif + +#include "opencv2/core.hpp" +#include "ocl.hpp" + +#if defined(HAVE_VA) +# include "va/va.h" +#else // HAVE_VA +# if !defined(_VA_H_) + typedef void* VADisplay; + typedef unsigned int VASurfaceID; +# endif // !_VA_H_ +#endif // HAVE_VA + +namespace cv { namespace va_intel { + +/** @addtogroup core_va_intel +This section describes Intel VA-API/OpenCL (CL-VA) interoperability. + +To enable CL-VA interoperability support, configure OpenCV using CMake with WITH_VA_INTEL=ON . Currently VA-API is +supported on Linux only. You should also install Intel Media Server Studio (MSS) to use this feature. You may +have to specify the path(s) to MSS components for cmake in environment variables: + +- VA_INTEL_IOCL_ROOT for Intel OpenCL (default is "/opt/intel/opencl"). + +To use CL-VA interoperability you should first create VADisplay (libva), and then call initializeContextFromVA() +function to create OpenCL context and set up interoperability. +*/ +//! @{ + +/////////////////// CL-VA Interoperability Functions /////////////////// + +namespace ocl { +using namespace cv::ocl; + +// TODO static functions in the Context class +/** @brief Creates OpenCL context from VA. +@param display - VADisplay for which CL interop should be established. +@param tryInterop - try to set up for interoperability, if true; set up for use slow copy if false. +@return Returns reference to OpenCL Context + */ +CV_EXPORTS Context& initializeContextFromVA(VADisplay display, bool tryInterop = true); + +} // namespace cv::va_intel::ocl + +/** @brief Converts InputArray to VASurfaceID object. +@param display - VADisplay object. +@param src - source InputArray. +@param surface - destination VASurfaceID object. +@param size - size of image represented by VASurfaceID object. + */ +CV_EXPORTS void convertToVASurface(VADisplay display, InputArray src, VASurfaceID surface, Size size); + +/** @brief Converts VASurfaceID object to OutputArray. +@param display - VADisplay object. +@param surface - source VASurfaceID object. +@param size - size of image represented by VASurfaceID object. +@param dst - destination OutputArray. + */ +CV_EXPORTS void convertFromVASurface(VADisplay display, VASurfaceID surface, Size size, OutputArray dst); + +//! @} + +}} // namespace cv::va_intel + +#endif /* OPENCV_CORE_VA_INTEL_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/version.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/version.hpp new file mode 100644 index 0000000..1dbe223 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/version.hpp @@ -0,0 +1,26 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_VERSION_HPP +#define OPENCV_VERSION_HPP + +#define CV_VERSION_MAJOR 4 +#define CV_VERSION_MINOR 1 +#define CV_VERSION_REVISION 0 +#define CV_VERSION_STATUS "" + +#define CVAUX_STR_EXP(__A) #__A +#define CVAUX_STR(__A) CVAUX_STR_EXP(__A) + +#define CVAUX_STRW_EXP(__A) L ## #__A +#define CVAUX_STRW(__A) CVAUX_STRW_EXP(__A) + +#define CV_VERSION CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) CV_VERSION_STATUS + +/* old style version constants*/ +#define CV_MAJOR_VERSION CV_VERSION_MAJOR +#define CV_MINOR_VERSION CV_VERSION_MINOR +#define CV_SUBMINOR_VERSION CV_VERSION_REVISION + +#endif // OPENCV_VERSION_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/core/vsx_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/core/vsx_utils.hpp new file mode 100644 index 0000000..6e2baea --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/core/vsx_utils.hpp @@ -0,0 +1,1013 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html + +#ifndef OPENCV_HAL_VSX_UTILS_HPP +#define OPENCV_HAL_VSX_UTILS_HPP + +#include "opencv2/core/cvdef.h" + +#ifndef SKIP_INCLUDES +# include +#endif + +//! @addtogroup core_utils_vsx +//! @{ +#if CV_VSX + +#define __VSX_S16__(c, v) (c){v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v} +#define __VSX_S8__(c, v) (c){v, v, v, v, v, v, v, v} +#define __VSX_S4__(c, v) (c){v, v, v, v} +#define __VSX_S2__(c, v) (c){v, v} + +typedef __vector unsigned char vec_uchar16; +#define vec_uchar16_set(...) (vec_uchar16){__VA_ARGS__} +#define vec_uchar16_sp(c) (__VSX_S16__(vec_uchar16, (unsigned char)c)) +#define vec_uchar16_c(v) ((vec_uchar16)(v)) +#define vec_uchar16_z vec_uchar16_sp(0) + +typedef __vector signed char vec_char16; +#define vec_char16_set(...) (vec_char16){__VA_ARGS__} +#define vec_char16_sp(c) (__VSX_S16__(vec_char16, (signed char)c)) +#define vec_char16_c(v) ((vec_char16)(v)) +#define vec_char16_z vec_char16_sp(0) + +typedef __vector unsigned short vec_ushort8; +#define vec_ushort8_set(...) (vec_ushort8){__VA_ARGS__} +#define vec_ushort8_sp(c) (__VSX_S8__(vec_ushort8, (unsigned short)c)) +#define vec_ushort8_c(v) ((vec_ushort8)(v)) +#define vec_ushort8_z vec_ushort8_sp(0) + +typedef __vector signed short vec_short8; +#define vec_short8_set(...) (vec_short8){__VA_ARGS__} +#define vec_short8_sp(c) (__VSX_S8__(vec_short8, (signed short)c)) +#define vec_short8_c(v) ((vec_short8)(v)) +#define vec_short8_z vec_short8_sp(0) + +typedef __vector unsigned int vec_uint4; +#define vec_uint4_set(...) (vec_uint4){__VA_ARGS__} +#define vec_uint4_sp(c) (__VSX_S4__(vec_uint4, (unsigned int)c)) +#define vec_uint4_c(v) ((vec_uint4)(v)) +#define vec_uint4_z vec_uint4_sp(0) + +typedef __vector signed int vec_int4; +#define vec_int4_set(...) (vec_int4){__VA_ARGS__} +#define vec_int4_sp(c) (__VSX_S4__(vec_int4, (signed int)c)) +#define vec_int4_c(v) ((vec_int4)(v)) +#define vec_int4_z vec_int4_sp(0) + +typedef __vector float vec_float4; +#define vec_float4_set(...) (vec_float4){__VA_ARGS__} +#define vec_float4_sp(c) (__VSX_S4__(vec_float4, c)) +#define vec_float4_c(v) ((vec_float4)(v)) +#define vec_float4_z vec_float4_sp(0) + +typedef __vector unsigned long long vec_udword2; +#define vec_udword2_set(...) (vec_udword2){__VA_ARGS__} +#define vec_udword2_sp(c) (__VSX_S2__(vec_udword2, (unsigned long long)c)) +#define vec_udword2_c(v) ((vec_udword2)(v)) +#define vec_udword2_z vec_udword2_sp(0) + +typedef __vector signed long long vec_dword2; +#define vec_dword2_set(...) (vec_dword2){__VA_ARGS__} +#define vec_dword2_sp(c) (__VSX_S2__(vec_dword2, (signed long long)c)) +#define vec_dword2_c(v) ((vec_dword2)(v)) +#define vec_dword2_z vec_dword2_sp(0) + +typedef __vector double vec_double2; +#define vec_double2_set(...) (vec_double2){__VA_ARGS__} +#define vec_double2_c(v) ((vec_double2)(v)) +#define vec_double2_sp(c) (__VSX_S2__(vec_double2, c)) +#define vec_double2_z vec_double2_sp(0) + +#define vec_bchar16 __vector __bool char +#define vec_bchar16_set(...) (vec_bchar16){__VA_ARGS__} +#define vec_bchar16_c(v) ((vec_bchar16)(v)) + +#define vec_bshort8 __vector __bool short +#define vec_bshort8_set(...) (vec_bshort8){__VA_ARGS__} +#define vec_bshort8_c(v) ((vec_bshort8)(v)) + +#define vec_bint4 __vector __bool int +#define vec_bint4_set(...) (vec_bint4){__VA_ARGS__} +#define vec_bint4_c(v) ((vec_bint4)(v)) + +#define vec_bdword2 __vector __bool long long +#define vec_bdword2_set(...) (vec_bdword2){__VA_ARGS__} +#define vec_bdword2_c(v) ((vec_bdword2)(v)) + +#define VSX_FINLINE(tp) extern inline tp __attribute__((always_inline)) + +#define VSX_REDIRECT_1RG(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a) { return fn2(a); } + +#define VSX_REDIRECT_2RG(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a, const rg& b) { return fn2(a, b); } + +/* + * GCC VSX compatibility +**/ +#if defined(__GNUG__) && !defined(__clang__) + +// inline asm helper +#define VSX_IMPL_1RG(rt, rto, rg, rgo, opc, fnm) \ +VSX_FINLINE(rt) fnm(const rg& a) \ +{ rt rs; __asm__ __volatile__(#opc" %x0,%x1" : "="#rto (rs) : #rgo (a)); return rs; } + +#define VSX_IMPL_1VRG(rt, rg, opc, fnm) \ +VSX_FINLINE(rt) fnm(const rg& a) \ +{ rt rs; __asm__ __volatile__(#opc" %0,%1" : "=v" (rs) : "v" (a)); return rs; } + +#define VSX_IMPL_2VRG_F(rt, rg, fopc, fnm) \ +VSX_FINLINE(rt) fnm(const rg& a, const rg& b) \ +{ rt rs; __asm__ __volatile__(fopc : "=v" (rs) : "v" (a), "v" (b)); return rs; } + +#define VSX_IMPL_2VRG(rt, rg, opc, fnm) VSX_IMPL_2VRG_F(rt, rg, #opc" %0,%1,%2", fnm) + +#if __GNUG__ < 7 +// up to GCC 6 vec_mul only supports precisions and llong +# ifdef vec_mul +# undef vec_mul +# endif +/* + * there's no a direct instruction for supporting 8-bit, 16-bit multiplication in ISA 2.07, + * XLC Implement it by using instruction "multiply even", "multiply odd" and "permute" +**/ +# define VSX_IMPL_MULH(Tvec, cperm) \ + VSX_FINLINE(Tvec) vec_mul(const Tvec& a, const Tvec& b) \ + { \ + static const vec_uchar16 ev_od = {cperm}; \ + return vec_perm((Tvec)vec_mule(a, b), (Tvec)vec_mulo(a, b), ev_od); \ + } + #define VSX_IMPL_MULH_P16 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 + VSX_IMPL_MULH(vec_char16, VSX_IMPL_MULH_P16) + VSX_IMPL_MULH(vec_uchar16, VSX_IMPL_MULH_P16) + #define VSX_IMPL_MULH_P8 0, 1, 16, 17, 4, 5, 20, 21, 8, 9, 24, 25, 12, 13, 28, 29 + VSX_IMPL_MULH(vec_short8, VSX_IMPL_MULH_P8) + VSX_IMPL_MULH(vec_ushort8, VSX_IMPL_MULH_P8) + // vmuluwm can be used for unsigned or signed integers, that's what they said + VSX_IMPL_2VRG(vec_int4, vec_int4, vmuluwm, vec_mul) + VSX_IMPL_2VRG(vec_uint4, vec_uint4, vmuluwm, vec_mul) + // redirect to GCC builtin vec_mul, since it already supports precisions and llong + VSX_REDIRECT_2RG(vec_float4, vec_float4, vec_mul, __builtin_vec_mul) + VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mul, __builtin_vec_mul) + VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mul, __builtin_vec_mul) + VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mul, __builtin_vec_mul) +#endif // __GNUG__ < 7 + +#if __GNUG__ < 6 +/* + * Instruction "compare greater than or equal" in ISA 2.07 only supports single + * and double precision. + * In XLC and new versions of GCC implement integers by using instruction "greater than" and NOR. +**/ +# ifdef vec_cmpge +# undef vec_cmpge +# endif +# ifdef vec_cmple +# undef vec_cmple +# endif +# define vec_cmple(a, b) vec_cmpge(b, a) +# define VSX_IMPL_CMPGE(rt, rg, opc, fnm) \ + VSX_IMPL_2VRG_F(rt, rg, #opc" %0,%2,%1\n\t xxlnor %x0,%x0,%x0", fnm) + + VSX_IMPL_CMPGE(vec_bchar16, vec_char16, vcmpgtsb, vec_cmpge) + VSX_IMPL_CMPGE(vec_bchar16, vec_uchar16, vcmpgtub, vec_cmpge) + VSX_IMPL_CMPGE(vec_bshort8, vec_short8, vcmpgtsh, vec_cmpge) + VSX_IMPL_CMPGE(vec_bshort8, vec_ushort8, vcmpgtuh, vec_cmpge) + VSX_IMPL_CMPGE(vec_bint4, vec_int4, vcmpgtsw, vec_cmpge) + VSX_IMPL_CMPGE(vec_bint4, vec_uint4, vcmpgtuw, vec_cmpge) + VSX_IMPL_CMPGE(vec_bdword2, vec_dword2, vcmpgtsd, vec_cmpge) + VSX_IMPL_CMPGE(vec_bdword2, vec_udword2, vcmpgtud, vec_cmpge) + +// redirect to GCC builtin cmpge, since it already supports precisions + VSX_REDIRECT_2RG(vec_bint4, vec_float4, vec_cmpge, __builtin_vec_cmpge) + VSX_REDIRECT_2RG(vec_bdword2, vec_double2, vec_cmpge, __builtin_vec_cmpge) + +// up to gcc5 vec_nor doesn't support bool long long +# undef vec_nor + template + VSX_REDIRECT_2RG(T, T, vec_nor, __builtin_vec_nor) + + VSX_FINLINE(vec_bdword2) vec_nor(const vec_bdword2& a, const vec_bdword2& b) + { return vec_bdword2_c(__builtin_vec_nor(vec_dword2_c(a), vec_dword2_c(b))); } + +// vec_packs doesn't support double words in gcc4 and old versions of gcc5 +# undef vec_packs + VSX_REDIRECT_2RG(vec_char16, vec_short8, vec_packs, __builtin_vec_packs) + VSX_REDIRECT_2RG(vec_uchar16, vec_ushort8, vec_packs, __builtin_vec_packs) + VSX_REDIRECT_2RG(vec_short8, vec_int4, vec_packs, __builtin_vec_packs) + VSX_REDIRECT_2RG(vec_ushort8, vec_uint4, vec_packs, __builtin_vec_packs) + + VSX_IMPL_2VRG_F(vec_int4, vec_dword2, "vpksdss %0,%2,%1", vec_packs) + VSX_IMPL_2VRG_F(vec_uint4, vec_udword2, "vpkudus %0,%2,%1", vec_packs) +#endif // __GNUG__ < 6 + +#if __GNUG__ < 5 +// vec_xxpermdi in gcc4 missing little-endian supports just like clang +# define vec_permi(a, b, c) vec_xxpermdi(b, a, (3 ^ (((c) & 1) << 1 | (c) >> 1))) +#else +# define vec_permi vec_xxpermdi +#endif // __GNUG__ < 5 + +// shift left double by word immediate +#ifndef vec_sldw +# define vec_sldw __builtin_vsx_xxsldwi +#endif + +// vector population count +VSX_IMPL_1VRG(vec_uchar16, vec_uchar16, vpopcntb, vec_popcntu) +VSX_IMPL_1VRG(vec_uchar16, vec_char16, vpopcntb, vec_popcntu) +VSX_IMPL_1VRG(vec_ushort8, vec_ushort8, vpopcnth, vec_popcntu) +VSX_IMPL_1VRG(vec_ushort8, vec_short8, vpopcnth, vec_popcntu) +VSX_IMPL_1VRG(vec_uint4, vec_uint4, vpopcntw, vec_popcntu) +VSX_IMPL_1VRG(vec_uint4, vec_int4, vpopcntw, vec_popcntu) +VSX_IMPL_1VRG(vec_udword2, vec_udword2, vpopcntd, vec_popcntu) +VSX_IMPL_1VRG(vec_udword2, vec_dword2, vpopcntd, vec_popcntu) + +// converts between single and double-precision +VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp) +VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp) + +// converts word and doubleword to double-precision +#ifdef vec_ctd +# undef vec_ctd +#endif +VSX_IMPL_1RG(vec_double2, wd, vec_int4, wa, xvcvsxwdp, vec_ctdo) +VSX_IMPL_1RG(vec_double2, wd, vec_uint4, wa, xvcvuxwdp, vec_ctdo) +VSX_IMPL_1RG(vec_double2, wd, vec_dword2, wi, xvcvsxddp, vec_ctd) +VSX_IMPL_1RG(vec_double2, wd, vec_udword2, wi, xvcvuxddp, vec_ctd) + +// converts word and doubleword to single-precision +#undef vec_ctf +VSX_IMPL_1RG(vec_float4, wf, vec_int4, wa, xvcvsxwsp, vec_ctf) +VSX_IMPL_1RG(vec_float4, wf, vec_uint4, wa, xvcvuxwsp, vec_ctf) +VSX_IMPL_1RG(vec_float4, wf, vec_dword2, wi, xvcvsxdsp, vec_ctfo) +VSX_IMPL_1RG(vec_float4, wf, vec_udword2, wi, xvcvuxdsp, vec_ctfo) + +// converts single and double precision to signed word +#undef vec_cts +VSX_IMPL_1RG(vec_int4, wa, vec_double2, wd, xvcvdpsxws, vec_ctso) +VSX_IMPL_1RG(vec_int4, wa, vec_float4, wf, xvcvspsxws, vec_cts) + +// converts single and double precision to unsigned word +#undef vec_ctu +VSX_IMPL_1RG(vec_uint4, wa, vec_double2, wd, xvcvdpuxws, vec_ctuo) +VSX_IMPL_1RG(vec_uint4, wa, vec_float4, wf, xvcvspuxws, vec_ctu) + +// converts single and double precision to signed doubleword +#ifdef vec_ctsl +# undef vec_ctsl +#endif +VSX_IMPL_1RG(vec_dword2, wi, vec_double2, wd, xvcvdpsxds, vec_ctsl) +VSX_IMPL_1RG(vec_dword2, wi, vec_float4, wf, xvcvspsxds, vec_ctslo) + +// converts single and double precision to unsigned doubleword +#ifdef vec_ctul +# undef vec_ctul +#endif +VSX_IMPL_1RG(vec_udword2, wi, vec_double2, wd, xvcvdpuxds, vec_ctul) +VSX_IMPL_1RG(vec_udword2, wi, vec_float4, wf, xvcvspuxds, vec_ctulo) + +// just in case if GCC doesn't define it +#ifndef vec_xl +# define vec_xl vec_vsx_ld +# define vec_xst vec_vsx_st +#endif + +#endif // GCC VSX compatibility + +/* + * CLANG VSX compatibility +**/ +#if defined(__clang__) && !defined(__IBMCPP__) + +/* + * CLANG doesn't support %x in the inline asm template which fixes register number + * when using any of the register constraints wa, wd, wf + * + * For more explanation checkout PowerPC and IBM RS6000 in https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html + * Also there's already an open bug https://bugs.llvm.org/show_bug.cgi?id=31837 + * + * So we're not able to use inline asm and only use built-in functions that CLANG supports + * and use __builtin_convertvector if clang missng any of vector conversions built-in functions + * + * todo: clang asm template bug is fixed, need to reconsider the current workarounds. +*/ + +// convert vector helper +#define VSX_IMPL_CONVERT(rt, rg, fnm) \ +VSX_FINLINE(rt) fnm(const rg& a) { return __builtin_convertvector(a, rt); } + +#if __clang_major__ < 5 +// implement vec_permi in a dirty way +# define VSX_IMPL_CLANG_4_PERMI(Tvec) \ + VSX_FINLINE(Tvec) vec_permi(const Tvec& a, const Tvec& b, unsigned const char c) \ + { \ + switch (c) \ + { \ + case 0: \ + return vec_mergeh(a, b); \ + case 1: \ + return vec_mergel(vec_mergeh(a, a), b); \ + case 2: \ + return vec_mergeh(vec_mergel(a, a), b); \ + default: \ + return vec_mergel(a, b); \ + } \ + } + VSX_IMPL_CLANG_4_PERMI(vec_udword2) + VSX_IMPL_CLANG_4_PERMI(vec_dword2) + VSX_IMPL_CLANG_4_PERMI(vec_double2) + +// vec_xxsldwi is missing in clang 4 +# define vec_xxsldwi(a, b, c) vec_sld(a, b, (c) * 4) +#else +// vec_xxpermdi is missing little-endian supports in clang 4 just like gcc4 +# define vec_permi(a, b, c) vec_xxpermdi(b, a, (3 ^ (((c) & 1) << 1 | (c) >> 1))) +#endif // __clang_major__ < 5 + +// shift left double by word immediate +#ifndef vec_sldw +# define vec_sldw vec_xxsldwi +#endif + +// Implement vec_rsqrt since clang only supports vec_rsqrte +#ifndef vec_rsqrt + VSX_FINLINE(vec_float4) vec_rsqrt(const vec_float4& a) + { return vec_div(vec_float4_sp(1), vec_sqrt(a)); } + + VSX_FINLINE(vec_double2) vec_rsqrt(const vec_double2& a) + { return vec_div(vec_double2_sp(1), vec_sqrt(a)); } +#endif + +// vec_promote missing support for doubleword +VSX_FINLINE(vec_dword2) vec_promote(long long a, int b) +{ + vec_dword2 ret = vec_dword2_z; + ret[b & 1] = a; + return ret; +} + +VSX_FINLINE(vec_udword2) vec_promote(unsigned long long a, int b) +{ + vec_udword2 ret = vec_udword2_z; + ret[b & 1] = a; + return ret; +} + +// vec_popcnt should return unsigned but clang has different thought just like gcc in vec_vpopcnt +#define VSX_IMPL_POPCNTU(Tvec, Tvec2, ucast) \ +VSX_FINLINE(Tvec) vec_popcntu(const Tvec2& a) \ +{ return ucast(vec_popcnt(a)); } +VSX_IMPL_POPCNTU(vec_uchar16, vec_char16, vec_uchar16_c); +VSX_IMPL_POPCNTU(vec_ushort8, vec_short8, vec_ushort8_c); +VSX_IMPL_POPCNTU(vec_uint4, vec_int4, vec_uint4_c); +// redirect unsigned types +VSX_REDIRECT_1RG(vec_uchar16, vec_uchar16, vec_popcntu, vec_popcnt) +VSX_REDIRECT_1RG(vec_ushort8, vec_ushort8, vec_popcntu, vec_popcnt) +VSX_REDIRECT_1RG(vec_uint4, vec_uint4, vec_popcntu, vec_popcnt) + +// converts between single and double precision +VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp) +VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp) + +// converts word and doubleword to double-precision +#ifdef vec_ctd +# undef vec_ctd +#endif +VSX_REDIRECT_1RG(vec_double2, vec_int4, vec_ctdo, __builtin_vsx_xvcvsxwdp) +VSX_REDIRECT_1RG(vec_double2, vec_uint4, vec_ctdo, __builtin_vsx_xvcvuxwdp) + +VSX_IMPL_CONVERT(vec_double2, vec_dword2, vec_ctd) +VSX_IMPL_CONVERT(vec_double2, vec_udword2, vec_ctd) + +// converts word and doubleword to single-precision +#if __clang_major__ > 4 +# undef vec_ctf +#endif +VSX_IMPL_CONVERT(vec_float4, vec_int4, vec_ctf) +VSX_IMPL_CONVERT(vec_float4, vec_uint4, vec_ctf) +VSX_REDIRECT_1RG(vec_float4, vec_dword2, vec_ctfo, __builtin_vsx_xvcvsxdsp) +VSX_REDIRECT_1RG(vec_float4, vec_udword2, vec_ctfo, __builtin_vsx_xvcvuxdsp) + +// converts single and double precision to signed word +#if __clang_major__ > 4 +# undef vec_cts +#endif +VSX_REDIRECT_1RG(vec_int4, vec_double2, vec_ctso, __builtin_vsx_xvcvdpsxws) +VSX_IMPL_CONVERT(vec_int4, vec_float4, vec_cts) + +// converts single and double precision to unsigned word +#if __clang_major__ > 4 +# undef vec_ctu +#endif +VSX_REDIRECT_1RG(vec_uint4, vec_double2, vec_ctuo, __builtin_vsx_xvcvdpuxws) +VSX_IMPL_CONVERT(vec_uint4, vec_float4, vec_ctu) + +// converts single and double precision to signed doubleword +#ifdef vec_ctsl +# undef vec_ctsl +#endif +VSX_IMPL_CONVERT(vec_dword2, vec_double2, vec_ctsl) +// __builtin_convertvector unable to convert, xvcvspsxds is missing on it +VSX_FINLINE(vec_dword2) vec_ctslo(const vec_float4& a) +{ return vec_ctsl(vec_cvfo(a)); } + +// converts single and double precision to unsigned doubleword +#ifdef vec_ctul +# undef vec_ctul +#endif +VSX_IMPL_CONVERT(vec_udword2, vec_double2, vec_ctul) +// __builtin_convertvector unable to convert, xvcvspuxds is missing on it +VSX_FINLINE(vec_udword2) vec_ctulo(const vec_float4& a) +{ return vec_ctul(vec_cvfo(a)); } + +#endif // CLANG VSX compatibility + +/* + * Common GCC, CLANG compatibility +**/ +#if defined(__GNUG__) && !defined(__IBMCPP__) + +#ifdef vec_cvf +# undef vec_cvf +#endif + +#define VSX_IMPL_CONV_EVEN_4_2(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a) \ +{ return fn2(vec_sldw(a, a, 1)); } + +VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_float4, vec_cvf, vec_cvfo) +VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_int4, vec_ctd, vec_ctdo) +VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_uint4, vec_ctd, vec_ctdo) + +VSX_IMPL_CONV_EVEN_4_2(vec_dword2, vec_float4, vec_ctsl, vec_ctslo) +VSX_IMPL_CONV_EVEN_4_2(vec_udword2, vec_float4, vec_ctul, vec_ctulo) + +#define VSX_IMPL_CONV_EVEN_2_4(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a) \ +{ \ + rt v4 = fn2(a); \ + return vec_sldw(v4, v4, 3); \ +} + +VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_double2, vec_cvf, vec_cvfo) +VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_dword2, vec_ctf, vec_ctfo) +VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_udword2, vec_ctf, vec_ctfo) + +VSX_IMPL_CONV_EVEN_2_4(vec_int4, vec_double2, vec_cts, vec_ctso) +VSX_IMPL_CONV_EVEN_2_4(vec_uint4, vec_double2, vec_ctu, vec_ctuo) + +// Only for Eigen! +/* + * changing behavior of conversion intrinsics for gcc has effect on Eigen + * so we redfine old behavior again only on gcc, clang +*/ +#if !defined(__clang__) || __clang_major__ > 4 + // ignoring second arg since Eigen only truncates toward zero +# define VSX_IMPL_CONV_2VARIANT(rt, rg, fnm, fn2) \ + VSX_FINLINE(rt) fnm(const rg& a, int only_truncate) \ + { \ + assert(only_truncate == 0); \ + CV_UNUSED(only_truncate); \ + return fn2(a); \ + } + VSX_IMPL_CONV_2VARIANT(vec_int4, vec_float4, vec_cts, vec_cts) + VSX_IMPL_CONV_2VARIANT(vec_float4, vec_int4, vec_ctf, vec_ctf) + // define vec_cts for converting double precision to signed doubleword + // which isn't combitable with xlc but its okay since Eigen only use it for gcc + VSX_IMPL_CONV_2VARIANT(vec_dword2, vec_double2, vec_cts, vec_ctsl) +#endif // Eigen + +#endif // Common GCC, CLANG compatibility + +/* + * XLC VSX compatibility +**/ +#if defined(__IBMCPP__) + +// vector population count +#define vec_popcntu vec_popcnt + +// overload and redirect with setting second arg to zero +// since we only support conversions without the second arg +#define VSX_IMPL_OVERLOAD_Z2(rt, rg, fnm) \ +VSX_FINLINE(rt) fnm(const rg& a) { return fnm(a, 0); } + +VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_int4, vec_ctd) +VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_uint4, vec_ctd) +VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_dword2, vec_ctd) +VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_udword2, vec_ctd) + +VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_int4, vec_ctf) +VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_uint4, vec_ctf) +VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_dword2, vec_ctf) +VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_udword2, vec_ctf) + +VSX_IMPL_OVERLOAD_Z2(vec_int4, vec_double2, vec_cts) +VSX_IMPL_OVERLOAD_Z2(vec_int4, vec_float4, vec_cts) + +VSX_IMPL_OVERLOAD_Z2(vec_uint4, vec_double2, vec_ctu) +VSX_IMPL_OVERLOAD_Z2(vec_uint4, vec_float4, vec_ctu) + +VSX_IMPL_OVERLOAD_Z2(vec_dword2, vec_double2, vec_ctsl) +VSX_IMPL_OVERLOAD_Z2(vec_dword2, vec_float4, vec_ctsl) + +VSX_IMPL_OVERLOAD_Z2(vec_udword2, vec_double2, vec_ctul) +VSX_IMPL_OVERLOAD_Z2(vec_udword2, vec_float4, vec_ctul) + +// fixme: implement conversions of odd-numbered elements in a dirty way +// since xlc doesn't support VSX registers operand in inline asm. +#define VSX_IMPL_CONV_ODD_4_2(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a) { return fn2(vec_sldw(a, a, 3)); } + +VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_float4, vec_cvfo, vec_cvf) +VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_int4, vec_ctdo, vec_ctd) +VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_uint4, vec_ctdo, vec_ctd) + +VSX_IMPL_CONV_ODD_4_2(vec_dword2, vec_float4, vec_ctslo, vec_ctsl) +VSX_IMPL_CONV_ODD_4_2(vec_udword2, vec_float4, vec_ctulo, vec_ctul) + +#define VSX_IMPL_CONV_ODD_2_4(rt, rg, fnm, fn2) \ +VSX_FINLINE(rt) fnm(const rg& a) \ +{ \ + rt v4 = fn2(a); \ + return vec_sldw(v4, v4, 1); \ +} + +VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_double2, vec_cvfo, vec_cvf) +VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_dword2, vec_ctfo, vec_ctf) +VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_udword2, vec_ctfo, vec_ctf) + +VSX_IMPL_CONV_ODD_2_4(vec_int4, vec_double2, vec_ctso, vec_cts) +VSX_IMPL_CONV_ODD_2_4(vec_uint4, vec_double2, vec_ctuo, vec_ctu) + +#endif // XLC VSX compatibility + +// ignore GCC warning that caused by -Wunused-but-set-variable in rare cases +#if defined(__GNUG__) && !defined(__clang__) +# define VSX_UNUSED(Tvec) Tvec __attribute__((__unused__)) +#else // CLANG, XLC +# define VSX_UNUSED(Tvec) Tvec +#endif + +// gcc can find his way in casting log int and XLC, CLANG ambiguous +#if defined(__clang__) || defined(__IBMCPP__) + VSX_FINLINE(vec_udword2) vec_splats(uint64 v) + { return vec_splats((unsigned long long) v); } + + VSX_FINLINE(vec_dword2) vec_splats(int64 v) + { return vec_splats((long long) v); } + + VSX_FINLINE(vec_udword2) vec_promote(uint64 a, int b) + { return vec_promote((unsigned long long) a, b); } + + VSX_FINLINE(vec_dword2) vec_promote(int64 a, int b) + { return vec_promote((long long) a, b); } +#endif + +/* + * implement vsx_ld(offset, pointer), vsx_st(vector, offset, pointer) + * load and set using offset depend on the pointer type + * + * implement vsx_ldf(offset, pointer), vsx_stf(vector, offset, pointer) + * load and set using offset depend on fixed bytes size + * + * Note: In clang vec_xl and vec_xst fails to load unaligned addresses + * so we are using vec_vsx_ld, vec_vsx_st instead +*/ + +#if defined(__clang__) && !defined(__IBMCPP__) +# define vsx_ldf vec_vsx_ld +# define vsx_stf vec_vsx_st +#else // GCC , XLC +# define vsx_ldf vec_xl +# define vsx_stf vec_xst +#endif + +#define VSX_OFFSET(o, p) ((o) * sizeof(*(p))) +#define vsx_ld(o, p) vsx_ldf(VSX_OFFSET(o, p), p) +#define vsx_st(v, o, p) vsx_stf(v, VSX_OFFSET(o, p), p) + +/* + * implement vsx_ld2(offset, pointer), vsx_st2(vector, offset, pointer) to load and store double words + * In GCC vec_xl and vec_xst it maps to vec_vsx_ld, vec_vsx_st which doesn't support long long + * and in CLANG we are using vec_vsx_ld, vec_vsx_st because vec_xl, vec_xst fails to load unaligned addresses + * + * In XLC vec_xl and vec_xst fail to cast int64(long int) to long long +*/ +#if (defined(__GNUG__) || defined(__clang__)) && !defined(__IBMCPP__) + VSX_FINLINE(vec_udword2) vsx_ld2(long o, const uint64* p) + { return vec_udword2_c(vsx_ldf(VSX_OFFSET(o, p), (unsigned int*)p)); } + + VSX_FINLINE(vec_dword2) vsx_ld2(long o, const int64* p) + { return vec_dword2_c(vsx_ldf(VSX_OFFSET(o, p), (int*)p)); } + + VSX_FINLINE(void) vsx_st2(const vec_udword2& vec, long o, uint64* p) + { vsx_stf(vec_uint4_c(vec), VSX_OFFSET(o, p), (unsigned int*)p); } + + VSX_FINLINE(void) vsx_st2(const vec_dword2& vec, long o, int64* p) + { vsx_stf(vec_int4_c(vec), VSX_OFFSET(o, p), (int*)p); } +#else // XLC + VSX_FINLINE(vec_udword2) vsx_ld2(long o, const uint64* p) + { return vsx_ldf(VSX_OFFSET(o, p), (unsigned long long*)p); } + + VSX_FINLINE(vec_dword2) vsx_ld2(long o, const int64* p) + { return vsx_ldf(VSX_OFFSET(o, p), (long long*)p); } + + VSX_FINLINE(void) vsx_st2(const vec_udword2& vec, long o, uint64* p) + { vsx_stf(vec, VSX_OFFSET(o, p), (unsigned long long*)p); } + + VSX_FINLINE(void) vsx_st2(const vec_dword2& vec, long o, int64* p) + { vsx_stf(vec, VSX_OFFSET(o, p), (long long*)p); } +#endif + +// Store lower 8 byte +#define vec_st_l8(v, p) *((uint64*)(p)) = vec_extract(vec_udword2_c(v), 0) + +// Store higher 8 byte +#define vec_st_h8(v, p) *((uint64*)(p)) = vec_extract(vec_udword2_c(v), 1) + +// Load 64-bits of integer data to lower part +#define VSX_IMPL_LOAD_L8(Tvec, Tp) \ +VSX_FINLINE(Tvec) vec_ld_l8(const Tp *p) \ +{ return ((Tvec)vec_promote(*((uint64*)p), 0)); } + +VSX_IMPL_LOAD_L8(vec_uchar16, uchar) +VSX_IMPL_LOAD_L8(vec_char16, schar) +VSX_IMPL_LOAD_L8(vec_ushort8, ushort) +VSX_IMPL_LOAD_L8(vec_short8, short) +VSX_IMPL_LOAD_L8(vec_uint4, uint) +VSX_IMPL_LOAD_L8(vec_int4, int) +VSX_IMPL_LOAD_L8(vec_float4, float) +VSX_IMPL_LOAD_L8(vec_udword2, uint64) +VSX_IMPL_LOAD_L8(vec_dword2, int64) +VSX_IMPL_LOAD_L8(vec_double2, double) + +// logical not +#define vec_not(a) vec_nor(a, a) + +// power9 yaya +// not equal +#ifndef vec_cmpne +# define vec_cmpne(a, b) vec_not(vec_cmpeq(a, b)) +#endif + +// absolute difference +#ifndef vec_absd +# define vec_absd(a, b) vec_sub(vec_max(a, b), vec_min(a, b)) +#endif + +/* + * Implement vec_unpacklu and vec_unpackhu + * since vec_unpackl, vec_unpackh only support signed integers +**/ +#define VSX_IMPL_UNPACKU(rt, rg, zero) \ +VSX_FINLINE(rt) vec_unpacklu(const rg& a) \ +{ return (rt)(vec_mergel(a, zero)); } \ +VSX_FINLINE(rt) vec_unpackhu(const rg& a) \ +{ return (rt)(vec_mergeh(a, zero)); } + +VSX_IMPL_UNPACKU(vec_ushort8, vec_uchar16, vec_uchar16_z) +VSX_IMPL_UNPACKU(vec_uint4, vec_ushort8, vec_ushort8_z) +VSX_IMPL_UNPACKU(vec_udword2, vec_uint4, vec_uint4_z) + +/* + * Implement vec_mergesqe and vec_mergesqo + * Merges the sequence values of even and odd elements of two vectors +*/ +#define VSX_IMPL_PERM(rt, fnm, ...) \ +VSX_FINLINE(rt) fnm(const rt& a, const rt& b) \ +{ static const vec_uchar16 perm = {__VA_ARGS__}; return vec_perm(a, b, perm); } + +// 16 +#define perm16_mergesqe 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 +#define perm16_mergesqo 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 +VSX_IMPL_PERM(vec_uchar16, vec_mergesqe, perm16_mergesqe) +VSX_IMPL_PERM(vec_uchar16, vec_mergesqo, perm16_mergesqo) +VSX_IMPL_PERM(vec_char16, vec_mergesqe, perm16_mergesqe) +VSX_IMPL_PERM(vec_char16, vec_mergesqo, perm16_mergesqo) +// 8 +#define perm8_mergesqe 0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29 +#define perm8_mergesqo 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31 +VSX_IMPL_PERM(vec_ushort8, vec_mergesqe, perm8_mergesqe) +VSX_IMPL_PERM(vec_ushort8, vec_mergesqo, perm8_mergesqo) +VSX_IMPL_PERM(vec_short8, vec_mergesqe, perm8_mergesqe) +VSX_IMPL_PERM(vec_short8, vec_mergesqo, perm8_mergesqo) +// 4 +#define perm4_mergesqe 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27 +#define perm4_mergesqo 4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31 +VSX_IMPL_PERM(vec_uint4, vec_mergesqe, perm4_mergesqe) +VSX_IMPL_PERM(vec_uint4, vec_mergesqo, perm4_mergesqo) +VSX_IMPL_PERM(vec_int4, vec_mergesqe, perm4_mergesqe) +VSX_IMPL_PERM(vec_int4, vec_mergesqo, perm4_mergesqo) +VSX_IMPL_PERM(vec_float4, vec_mergesqe, perm4_mergesqe) +VSX_IMPL_PERM(vec_float4, vec_mergesqo, perm4_mergesqo) +// 2 +VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqe, vec_mergeh) +VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqo, vec_mergel) +VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqe, vec_mergeh) +VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqo, vec_mergel) +VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqe, vec_mergeh) +VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqo, vec_mergel) + +/* + * Implement vec_mergesqh and vec_mergesql + * Merges the sequence most and least significant halves of two vectors +*/ +#define VSX_IMPL_MERGESQHL(Tvec) \ +VSX_FINLINE(Tvec) vec_mergesqh(const Tvec& a, const Tvec& b) \ +{ return (Tvec)vec_mergeh(vec_udword2_c(a), vec_udword2_c(b)); } \ +VSX_FINLINE(Tvec) vec_mergesql(const Tvec& a, const Tvec& b) \ +{ return (Tvec)vec_mergel(vec_udword2_c(a), vec_udword2_c(b)); } +VSX_IMPL_MERGESQHL(vec_uchar16) +VSX_IMPL_MERGESQHL(vec_char16) +VSX_IMPL_MERGESQHL(vec_ushort8) +VSX_IMPL_MERGESQHL(vec_short8) +VSX_IMPL_MERGESQHL(vec_uint4) +VSX_IMPL_MERGESQHL(vec_int4) +VSX_IMPL_MERGESQHL(vec_float4) +VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqh, vec_mergeh) +VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesql, vec_mergel) +VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqh, vec_mergeh) +VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesql, vec_mergel) +VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqh, vec_mergeh) +VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesql, vec_mergel) + + +// 2 and 4 channels interleave for all types except 2 lanes +#define VSX_IMPL_ST_INTERLEAVE(Tp, Tvec) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, Tp* ptr) \ +{ \ + vsx_stf(vec_mergeh(a, b), 0, ptr); \ + vsx_stf(vec_mergel(a, b), 16, ptr); \ +} \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, const Tvec& d, Tp* ptr) \ +{ \ + Tvec ac = vec_mergeh(a, c); \ + Tvec bd = vec_mergeh(b, d); \ + vsx_stf(vec_mergeh(ac, bd), 0, ptr); \ + vsx_stf(vec_mergel(ac, bd), 16, ptr); \ + ac = vec_mergel(a, c); \ + bd = vec_mergel(b, d); \ + vsx_stf(vec_mergeh(ac, bd), 32, ptr); \ + vsx_stf(vec_mergel(ac, bd), 48, ptr); \ +} +VSX_IMPL_ST_INTERLEAVE(uchar, vec_uchar16) +VSX_IMPL_ST_INTERLEAVE(schar, vec_char16) +VSX_IMPL_ST_INTERLEAVE(ushort, vec_ushort8) +VSX_IMPL_ST_INTERLEAVE(short, vec_short8) +VSX_IMPL_ST_INTERLEAVE(uint, vec_uint4) +VSX_IMPL_ST_INTERLEAVE(int, vec_int4) +VSX_IMPL_ST_INTERLEAVE(float, vec_float4) + +// 2 and 4 channels deinterleave for 16 lanes +#define VSX_IMPL_ST_DINTERLEAVE_8(Tp, Tvec) \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b) \ +{ \ + Tvec v0 = vsx_ld(0, ptr); \ + Tvec v1 = vsx_ld(16, ptr); \ + a = vec_mergesqe(v0, v1); \ + b = vec_mergesqo(v0, v1); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, \ + Tvec& c, Tvec& d) \ +{ \ + Tvec v0 = vsx_ld(0, ptr); \ + Tvec v1 = vsx_ld(16, ptr); \ + Tvec v2 = vsx_ld(32, ptr); \ + Tvec v3 = vsx_ld(48, ptr); \ + Tvec m0 = vec_mergesqe(v0, v1); \ + Tvec m1 = vec_mergesqe(v2, v3); \ + a = vec_mergesqe(m0, m1); \ + c = vec_mergesqo(m0, m1); \ + m0 = vec_mergesqo(v0, v1); \ + m1 = vec_mergesqo(v2, v3); \ + b = vec_mergesqe(m0, m1); \ + d = vec_mergesqo(m0, m1); \ +} +VSX_IMPL_ST_DINTERLEAVE_8(uchar, vec_uchar16) +VSX_IMPL_ST_DINTERLEAVE_8(schar, vec_char16) + +// 2 and 4 channels deinterleave for 8 lanes +#define VSX_IMPL_ST_DINTERLEAVE_16(Tp, Tvec) \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b) \ +{ \ + Tvec v0 = vsx_ld(0, ptr); \ + Tvec v1 = vsx_ld(8, ptr); \ + a = vec_mergesqe(v0, v1); \ + b = vec_mergesqo(v0, v1); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, \ + Tvec& c, Tvec& d) \ +{ \ + Tvec v0 = vsx_ld(0, ptr); \ + Tvec v1 = vsx_ld(8, ptr); \ + Tvec m0 = vec_mergeh(v0, v1); \ + Tvec m1 = vec_mergel(v0, v1); \ + Tvec ab0 = vec_mergeh(m0, m1); \ + Tvec cd0 = vec_mergel(m0, m1); \ + v0 = vsx_ld(16, ptr); \ + v1 = vsx_ld(24, ptr); \ + m0 = vec_mergeh(v0, v1); \ + m1 = vec_mergel(v0, v1); \ + Tvec ab1 = vec_mergeh(m0, m1); \ + Tvec cd1 = vec_mergel(m0, m1); \ + a = vec_mergesqh(ab0, ab1); \ + b = vec_mergesql(ab0, ab1); \ + c = vec_mergesqh(cd0, cd1); \ + d = vec_mergesql(cd0, cd1); \ +} +VSX_IMPL_ST_DINTERLEAVE_16(ushort, vec_ushort8) +VSX_IMPL_ST_DINTERLEAVE_16(short, vec_short8) + +// 2 and 4 channels deinterleave for 4 lanes +#define VSX_IMPL_ST_DINTERLEAVE_32(Tp, Tvec) \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b) \ +{ \ + a = vsx_ld(0, ptr); \ + b = vsx_ld(4, ptr); \ + Tvec m0 = vec_mergeh(a, b); \ + Tvec m1 = vec_mergel(a, b); \ + a = vec_mergeh(m0, m1); \ + b = vec_mergel(m0, m1); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, \ + Tvec& c, Tvec& d) \ +{ \ + Tvec v0 = vsx_ld(0, ptr); \ + Tvec v1 = vsx_ld(4, ptr); \ + Tvec v2 = vsx_ld(8, ptr); \ + Tvec v3 = vsx_ld(12, ptr); \ + Tvec m0 = vec_mergeh(v0, v2); \ + Tvec m1 = vec_mergeh(v1, v3); \ + a = vec_mergeh(m0, m1); \ + b = vec_mergel(m0, m1); \ + m0 = vec_mergel(v0, v2); \ + m1 = vec_mergel(v1, v3); \ + c = vec_mergeh(m0, m1); \ + d = vec_mergel(m0, m1); \ +} +VSX_IMPL_ST_DINTERLEAVE_32(uint, vec_uint4) +VSX_IMPL_ST_DINTERLEAVE_32(int, vec_int4) +VSX_IMPL_ST_DINTERLEAVE_32(float, vec_float4) + +// 2 and 4 channels interleave and deinterleave for 2 lanes +#define VSX_IMPL_ST_D_INTERLEAVE_64(Tp, Tvec, ld_func, st_func) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, Tp* ptr) \ +{ \ + st_func(vec_mergeh(a, b), 0, ptr); \ + st_func(vec_mergel(a, b), 2, ptr); \ +} \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, const Tvec& d, Tp* ptr) \ +{ \ + st_func(vec_mergeh(a, b), 0, ptr); \ + st_func(vec_mergeh(c, d), 2, ptr); \ + st_func(vec_mergel(a, b), 4, ptr); \ + st_func(vec_mergel(c, d), 6, ptr); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b) \ +{ \ + Tvec m0 = ld_func(0, ptr); \ + Tvec m1 = ld_func(2, ptr); \ + a = vec_mergeh(m0, m1); \ + b = vec_mergel(m0, m1); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, \ + Tvec& c, Tvec& d) \ +{ \ + Tvec v0 = ld_func(0, ptr); \ + Tvec v1 = ld_func(2, ptr); \ + Tvec v2 = ld_func(4, ptr); \ + Tvec v3 = ld_func(6, ptr); \ + a = vec_mergeh(v0, v2); \ + b = vec_mergel(v0, v2); \ + c = vec_mergeh(v1, v3); \ + d = vec_mergel(v1, v3); \ +} +VSX_IMPL_ST_D_INTERLEAVE_64(int64, vec_dword2, vsx_ld2, vsx_st2) +VSX_IMPL_ST_D_INTERLEAVE_64(uint64, vec_udword2, vsx_ld2, vsx_st2) +VSX_IMPL_ST_D_INTERLEAVE_64(double, vec_double2, vsx_ld, vsx_st) + +/* 3 channels */ +#define VSX_IMPL_ST_INTERLEAVE_3CH_16(Tp, Tvec) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, Tp* ptr) \ +{ \ + static const vec_uchar16 a12 = {0, 16, 0, 1, 17, 0, 2, 18, 0, 3, 19, 0, 4, 20, 0, 5}; \ + static const vec_uchar16 a123 = {0, 1, 16, 3, 4, 17, 6, 7, 18, 9, 10, 19, 12, 13, 20, 15}; \ + vsx_st(vec_perm(vec_perm(a, b, a12), c, a123), 0, ptr); \ + static const vec_uchar16 b12 = {21, 0, 6, 22, 0, 7, 23, 0, 8, 24, 0, 9, 25, 0, 10, 26}; \ + static const vec_uchar16 b123 = {0, 21, 2, 3, 22, 5, 6, 23, 8, 9, 24, 11, 12, 25, 14, 15}; \ + vsx_st(vec_perm(vec_perm(a, b, b12), c, b123), 16, ptr); \ + static const vec_uchar16 c12 = {0, 11, 27, 0, 12, 28, 0, 13, 29, 0, 14, 30, 0, 15, 31, 0}; \ + static const vec_uchar16 c123 = {26, 1, 2, 27, 4, 5, 28, 7, 8, 29, 10, 11, 30, 13, 14, 31}; \ + vsx_st(vec_perm(vec_perm(a, b, c12), c, c123), 32, ptr); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, Tvec& c) \ +{ \ + Tvec v1 = vsx_ld(0, ptr); \ + Tvec v2 = vsx_ld(16, ptr); \ + Tvec v3 = vsx_ld(32, ptr); \ + static const vec_uchar16 a12_perm = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 0, 0, 0, 0, 0}; \ + static const vec_uchar16 a123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 20, 23, 26, 29}; \ + a = vec_perm(vec_perm(v1, v2, a12_perm), v3, a123_perm); \ + static const vec_uchar16 b12_perm = {1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 0, 0, 0, 0, 0}; \ + static const vec_uchar16 b123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 18, 21, 24, 27, 30}; \ + b = vec_perm(vec_perm(v1, v2, b12_perm), v3, b123_perm); \ + static const vec_uchar16 c12_perm = {2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 0, 0, 0, 0, 0, 0}; \ + static const vec_uchar16 c123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 19, 22, 25, 28, 31}; \ + c = vec_perm(vec_perm(v1, v2, c12_perm), v3, c123_perm); \ +} +VSX_IMPL_ST_INTERLEAVE_3CH_16(uchar, vec_uchar16) +VSX_IMPL_ST_INTERLEAVE_3CH_16(schar, vec_char16) + +#define VSX_IMPL_ST_INTERLEAVE_3CH_8(Tp, Tvec) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, Tp* ptr) \ +{ \ + static const vec_uchar16 a12 = {0, 1, 16, 17, 0, 0, 2, 3, 18, 19, 0, 0, 4, 5, 20, 21}; \ + static const vec_uchar16 a123 = {0, 1, 2, 3, 16, 17, 6, 7, 8, 9, 18, 19, 12, 13, 14, 15}; \ + vsx_st(vec_perm(vec_perm(a, b, a12), c, a123), 0, ptr); \ + static const vec_uchar16 b12 = {0, 0, 6, 7, 22, 23, 0, 0, 8, 9, 24, 25, 0, 0, 10, 11}; \ + static const vec_uchar16 b123 = {20, 21, 2, 3, 4, 5, 22, 23, 8, 9, 10, 11, 24, 25, 14, 15}; \ + vsx_st(vec_perm(vec_perm(a, b, b12), c, b123), 8, ptr); \ + static const vec_uchar16 c12 = {26, 27, 0, 0, 12, 13, 28, 29, 0, 0, 14, 15, 30, 31, 0, 0}; \ + static const vec_uchar16 c123 = {0, 1, 26, 27, 4, 5, 6, 7, 28, 29, 10, 11, 12, 13, 30, 31}; \ + vsx_st(vec_perm(vec_perm(a, b, c12), c, c123), 16, ptr); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, Tvec& c) \ +{ \ + Tvec v1 = vsx_ld(0, ptr); \ + Tvec v2 = vsx_ld(8, ptr); \ + Tvec v3 = vsx_ld(16, ptr); \ + static const vec_uchar16 a12_perm = {0, 1, 6, 7, 12, 13, 18, 19, 24, 25, 30, 31, 0, 0, 0, 0}; \ + static const vec_uchar16 a123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 21, 26, 27}; \ + a = vec_perm(vec_perm(v1, v2, a12_perm), v3, a123_perm); \ + static const vec_uchar16 b12_perm = {2, 3, 8, 9, 14, 15, 20, 21, 26, 27, 0, 0, 0, 0, 0, 0}; \ + static const vec_uchar16 b123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 22, 23, 28, 29}; \ + b = vec_perm(vec_perm(v1, v2, b12_perm), v3, b123_perm); \ + static const vec_uchar16 c12_perm = {4, 5, 10, 11, 16, 17, 22, 23, 28, 29, 0, 0, 0, 0, 0, 0}; \ + static const vec_uchar16 c123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 19, 24, 25, 30, 31}; \ + c = vec_perm(vec_perm(v1, v2, c12_perm), v3, c123_perm); \ +} +VSX_IMPL_ST_INTERLEAVE_3CH_8(ushort, vec_ushort8) +VSX_IMPL_ST_INTERLEAVE_3CH_8(short, vec_short8) + +#define VSX_IMPL_ST_INTERLEAVE_3CH_4(Tp, Tvec) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, Tp* ptr) \ +{ \ + Tvec hbc = vec_mergeh(b, c); \ + static const vec_uchar16 ahbc = {0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 4, 5, 6, 7}; \ + vsx_st(vec_perm(a, hbc, ahbc), 0, ptr); \ + Tvec lab = vec_mergel(a, b); \ + vsx_st(vec_sld(lab, hbc, 8), 4, ptr); \ + static const vec_uchar16 clab = {8, 9, 10, 11, 24, 25, 26, 27, 28, 29, 30, 31, 12, 13, 14, 15};\ + vsx_st(vec_perm(c, lab, clab), 8, ptr); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, Tvec& b, Tvec& c) \ +{ \ + Tvec v1 = vsx_ld(0, ptr); \ + Tvec v2 = vsx_ld(4, ptr); \ + Tvec v3 = vsx_ld(8, ptr); \ + static const vec_uchar16 flp = {0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19, 28, 29, 30, 31}; \ + a = vec_perm(v1, vec_sld(v3, v2, 8), flp); \ + static const vec_uchar16 flp2 = {28, 29, 30, 31, 0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19}; \ + b = vec_perm(v2, vec_sld(v1, v3, 8), flp2); \ + c = vec_perm(vec_sld(v2, v1, 8), v3, flp); \ +} +VSX_IMPL_ST_INTERLEAVE_3CH_4(uint, vec_uint4) +VSX_IMPL_ST_INTERLEAVE_3CH_4(int, vec_int4) +VSX_IMPL_ST_INTERLEAVE_3CH_4(float, vec_float4) + +#define VSX_IMPL_ST_INTERLEAVE_3CH_2(Tp, Tvec, ld_func, st_func) \ +VSX_FINLINE(void) vec_st_interleave(const Tvec& a, const Tvec& b, \ + const Tvec& c, Tp* ptr) \ +{ \ + st_func(vec_mergeh(a, b), 0, ptr); \ + st_func(vec_permi(c, a, 1), 2, ptr); \ + st_func(vec_mergel(b, c), 4, ptr); \ +} \ +VSX_FINLINE(void) vec_ld_deinterleave(const Tp* ptr, Tvec& a, \ + Tvec& b, Tvec& c) \ +{ \ + Tvec v1 = ld_func(0, ptr); \ + Tvec v2 = ld_func(2, ptr); \ + Tvec v3 = ld_func(4, ptr); \ + a = vec_permi(v1, v2, 1); \ + b = vec_permi(v1, v3, 2); \ + c = vec_permi(v2, v3, 1); \ +} +VSX_IMPL_ST_INTERLEAVE_3CH_2(int64, vec_dword2, vsx_ld2, vsx_st2) +VSX_IMPL_ST_INTERLEAVE_3CH_2(uint64, vec_udword2, vsx_ld2, vsx_st2) +VSX_IMPL_ST_INTERLEAVE_3CH_2(double, vec_double2, vsx_ld, vsx_st) + +#endif // CV_VSX + +//! @} + +#endif // OPENCV_HAL_VSX_UTILS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/cvconfig.h b/LaiPuLaser/OpenCV/include/opencv2/cvconfig.h new file mode 100644 index 0000000..2c4b226 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/cvconfig.h @@ -0,0 +1,164 @@ +#ifndef OPENCV_CVCONFIG_H_INCLUDED +#define OPENCV_CVCONFIG_H_INCLUDED + +/* OpenCV compiled as static or dynamic libs */ +/* #undef BUILD_SHARED_LIBS */ + +/* OpenCV intrinsics optimized code */ +#define CV_ENABLE_INTRINSICS + +/* OpenCV additional optimized code */ +/* #undef CV_DISABLE_OPTIMIZATION */ + +/* Compile for 'real' NVIDIA GPU architectures */ +#define CUDA_ARCH_BIN "" + +/* Create PTX or BIN for 1.0 compute capability */ +/* #undef CUDA_ARCH_BIN_OR_PTX_10 */ + +/* NVIDIA GPU features are used */ +#define CUDA_ARCH_FEATURES "" + +/* Compile for 'virtual' NVIDIA PTX architectures */ +#define CUDA_ARCH_PTX "" + +/* AMD's Basic Linear Algebra Subprograms Library*/ +/* #undef HAVE_CLAMDBLAS */ + +/* AMD's OpenCL Fast Fourier Transform Library*/ +/* #undef HAVE_CLAMDFFT */ + +/* Clp support */ +/* #undef HAVE_CLP */ + +/* Cocoa API */ +/* #undef HAVE_COCOA */ + +/* NVIDIA CUDA Basic Linear Algebra Subprograms (BLAS) API*/ +/* #undef HAVE_CUBLAS */ + +/* NVIDIA CUDA Runtime API*/ +/* #undef HAVE_CUDA */ + +/* NVIDIA CUDA Fast Fourier Transform (FFT) API*/ +/* #undef HAVE_CUFFT */ + +/* DirectX */ +#define HAVE_DIRECTX +#define HAVE_DIRECTX_NV12 +#define HAVE_D3D11 +#define HAVE_D3D10 +#define HAVE_D3D9 + +/* Eigen Matrix & Linear Algebra Library */ +/* #undef HAVE_EIGEN */ + +/* Geospatial Data Abstraction Library */ +/* #undef HAVE_GDAL */ + +/* GTK+ 2.0 Thread support */ +/* #undef HAVE_GTHREAD */ + +/* GTK+ 2.x toolkit */ +/* #undef HAVE_GTK */ + +/* Halide support */ +/* #undef HAVE_HALIDE */ + +/* Vulkan support */ +/* #undef HAVE_VULKAN */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Intel Integrated Performance Primitives */ +/* #undef HAVE_IPP */ +/* #undef HAVE_IPP_ICV */ +/* #undef HAVE_IPP_IW */ +/* #undef HAVE_IPP_IW_LL */ + +/* JPEG-2000 codec */ +#define HAVE_JASPER + +/* IJG JPEG codec */ +#define HAVE_JPEG + +/* libpng/png.h needs to be included */ +/* #undef HAVE_LIBPNG_PNG_H */ + +/* GDCM DICOM codec */ +/* #undef HAVE_GDCM */ + +/* NVIDIA Video Decoding API*/ +/* #undef HAVE_NVCUVID */ + +/* NVIDIA Video Encoding API*/ +/* #undef HAVE_NVCUVENC */ + +/* OpenCL Support */ +#define HAVE_OPENCL +/* #undef HAVE_OPENCL_STATIC */ +/* #undef HAVE_OPENCL_SVM */ + +/* NVIDIA OpenCL D3D Extensions support */ +#define HAVE_OPENCL_D3D11_NV + +/* OpenEXR codec */ +#define HAVE_OPENEXR + +/* OpenGL support*/ +/* #undef HAVE_OPENGL */ + +/* PNG codec */ +#define HAVE_PNG + +/* Posix threads (pthreads) */ +/* #undef HAVE_PTHREAD */ + +/* parallel_for with pthreads */ +/* #undef HAVE_PTHREADS_PF */ + +/* Qt support */ +/* #undef HAVE_QT */ + +/* Qt OpenGL support */ +/* #undef HAVE_QT_OPENGL */ + +/* Intel Threading Building Blocks */ +/* #undef HAVE_TBB */ + +/* Ste||ar Group High Performance ParallelX */ +/* #undef HAVE_HPX */ + +/* TIFF codec */ +#define HAVE_TIFF + +/* Win32 UI */ +#define HAVE_WIN32UI + +/* Define if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* VA library (libva) */ +/* #undef HAVE_VA */ + +/* Intel VA-API/OpenCL */ +/* #undef HAVE_VA_INTEL */ + +/* Lapack */ +/* #undef HAVE_LAPACK */ + +/* Library was compiled with functions instrumentation */ +/* #undef ENABLE_INSTRUMENTATION */ + +/* OpenVX */ +/* #undef HAVE_OPENVX */ + +/* OpenCV trace utilities */ +#define OPENCV_TRACE + +/* Library QR-code decoding */ +#define HAVE_QUIRC + +#endif // OPENCV_CVCONFIG_H_INCLUDED diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn.hpp new file mode 100644 index 0000000..97f2fe3 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn.hpp @@ -0,0 +1,78 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_HPP +#define OPENCV_DNN_HPP + +// This is an umbrella header to include into you project. +// We are free to change headers layout in dnn subfolder, so please include +// this header for future compatibility + + +/** @defgroup dnn Deep Neural Network module + @{ + This module contains: + - API for new layers creation, layers are building bricks of neural networks; + - set of built-in most-useful Layers; + - API to construct and modify comprehensive neural networks from layers; + - functionality for loading serialized networks models from different frameworks. + + Functionality of this module is designed only for forward pass computations (i.e. network testing). + A network training is in principle not supported. + @} +*/ +/** @example samples/dnn/classification.cpp +Check @ref tutorial_dnn_googlenet "the corresponding tutorial" for more details +*/ +/** @example samples/dnn/colorization.cpp +*/ +/** @example samples/dnn/object_detection.cpp +Check @ref tutorial_dnn_yolo "the corresponding tutorial" for more details +*/ +/** @example samples/dnn/openpose.cpp +*/ +/** @example samples/dnn/segmentation.cpp +*/ +/** @example samples/dnn/text_detection.cpp +*/ +#include + +#endif /* OPENCV_DNN_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/all_layers.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/all_layers.hpp new file mode 100644 index 0000000..4bede76 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/all_layers.hpp @@ -0,0 +1,634 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_DNN_ALL_LAYERS_HPP +#define OPENCV_DNN_DNN_ALL_LAYERS_HPP +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN +//! @addtogroup dnn +//! @{ + +/** @defgroup dnnLayerList Partial List of Implemented Layers + @{ + This subsection of dnn module contains information about built-in layers and their descriptions. + + Classes listed here, in fact, provides C++ API for creating instances of built-in layers. + In addition to this way of layers instantiation, there is a more common factory API (see @ref dnnLayerFactory), it allows to create layers dynamically (by name) and register new ones. + You can use both API, but factory API is less convenient for native C++ programming and basically designed for use inside importers (see @ref readNetFromCaffe(), @ref readNetFromTorch(), @ref readNetFromTensorflow()). + + Built-in layers partially reproduce functionality of corresponding Caffe and Torch7 layers. + In particular, the following layers and Caffe importer were tested to reproduce Caffe functionality: + - Convolution + - Deconvolution + - Pooling + - InnerProduct + - TanH, ReLU, Sigmoid, BNLL, Power, AbsVal + - Softmax + - Reshape, Flatten, Slice, Split + - LRN + - MVN + - Dropout (since it does nothing on forward pass -)) +*/ + + class CV_EXPORTS BlankLayer : public Layer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + /** + * Constant layer produces the same data blob at an every forward pass. + */ + class CV_EXPORTS ConstLayer : public Layer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + //! LSTM recurrent layer + class CV_EXPORTS LSTMLayer : public Layer + { + public: + /** Creates instance of LSTM layer */ + static Ptr create(const LayerParams& params); + + /** @deprecated Use LayerParams::blobs instead. + @brief Set trained weights for LSTM layer. + + LSTM behavior on each step is defined by current input, previous output, previous cell state and learned weights. + + Let @f$x_t@f$ be current input, @f$h_t@f$ be current output, @f$c_t@f$ be current state. + Than current output and current cell state is computed as follows: + @f{eqnarray*}{ + h_t &= o_t \odot tanh(c_t), \\ + c_t &= f_t \odot c_{t-1} + i_t \odot g_t, \\ + @f} + where @f$\odot@f$ is per-element multiply operation and @f$i_t, f_t, o_t, g_t@f$ is internal gates that are computed using learned wights. + + Gates are computed as follows: + @f{eqnarray*}{ + i_t &= sigmoid&(W_{xi} x_t + W_{hi} h_{t-1} + b_i), \\ + f_t &= sigmoid&(W_{xf} x_t + W_{hf} h_{t-1} + b_f), \\ + o_t &= sigmoid&(W_{xo} x_t + W_{ho} h_{t-1} + b_o), \\ + g_t &= tanh &(W_{xg} x_t + W_{hg} h_{t-1} + b_g), \\ + @f} + where @f$W_{x?}@f$, @f$W_{h?}@f$ and @f$b_{?}@f$ are learned weights represented as matrices: + @f$W_{x?} \in R^{N_h \times N_x}@f$, @f$W_{h?} \in R^{N_h \times N_h}@f$, @f$b_? \in R^{N_h}@f$. + + For simplicity and performance purposes we use @f$ W_x = [W_{xi}; W_{xf}; W_{xo}, W_{xg}] @f$ + (i.e. @f$W_x@f$ is vertical concatenation of @f$ W_{x?} @f$), @f$ W_x \in R^{4N_h \times N_x} @f$. + The same for @f$ W_h = [W_{hi}; W_{hf}; W_{ho}, W_{hg}], W_h \in R^{4N_h \times N_h} @f$ + and for @f$ b = [b_i; b_f, b_o, b_g]@f$, @f$b \in R^{4N_h} @f$. + + @param Wh is matrix defining how previous output is transformed to internal gates (i.e. according to above mentioned notation is @f$ W_h @f$) + @param Wx is matrix defining how current input is transformed to internal gates (i.e. according to above mentioned notation is @f$ W_x @f$) + @param b is bias vector (i.e. according to above mentioned notation is @f$ b @f$) + */ + CV_DEPRECATED virtual void setWeights(const Mat &Wh, const Mat &Wx, const Mat &b) = 0; + + /** @brief Specifies shape of output blob which will be [[`T`], `N`] + @p outTailShape. + * @details If this parameter is empty or unset then @p outTailShape = [`Wh`.size(0)] will be used, + * where `Wh` is parameter from setWeights(). + */ + virtual void setOutShape(const MatShape &outTailShape = MatShape()) = 0; + + /** @deprecated Use flag `produce_cell_output` in LayerParams. + * @brief Specifies either interpret first dimension of input blob as timestamp dimenion either as sample. + * + * If flag is set to true then shape of input blob will be interpreted as [`T`, `N`, `[data dims]`] where `T` specifies number of timestamps, `N` is number of independent streams. + * In this case each forward() call will iterate through `T` timestamps and update layer's state `T` times. + * + * If flag is set to false then shape of input blob will be interpreted as [`N`, `[data dims]`]. + * In this case each forward() call will make one iteration and produce one timestamp with shape [`N`, `[out dims]`]. + */ + CV_DEPRECATED virtual void setUseTimstampsDim(bool use = true) = 0; + + /** @deprecated Use flag `use_timestamp_dim` in LayerParams. + * @brief If this flag is set to true then layer will produce @f$ c_t @f$ as second output. + * @details Shape of the second output is the same as first output. + */ + CV_DEPRECATED virtual void setProduceCellOutput(bool produce = false) = 0; + + /* In common case it use single input with @f$x_t@f$ values to compute output(s) @f$h_t@f$ (and @f$c_t@f$). + * @param input should contain packed values @f$x_t@f$ + * @param output contains computed outputs: @f$h_t@f$ (and @f$c_t@f$ if setProduceCellOutput() flag was set to true). + * + * If setUseTimstampsDim() is set to true then @p input[0] should has at least two dimensions with the following shape: [`T`, `N`, `[data dims]`], + * where `T` specifies number of timestamps, `N` is number of independent streams (i.e. @f$ x_{t_0 + t}^{stream} @f$ is stored inside @p input[0][t, stream, ...]). + * + * If setUseTimstampsDim() is set to false then @p input[0] should contain single timestamp, its shape should has form [`N`, `[data dims]`] with at least one dimension. + * (i.e. @f$ x_{t}^{stream} @f$ is stored inside @p input[0][stream, ...]). + */ + + int inputNameToIndex(String inputName) CV_OVERRIDE; + int outputNameToIndex(const String& outputName) CV_OVERRIDE; + }; + + /** @brief Classical recurrent layer + + Accepts two inputs @f$x_t@f$ and @f$h_{t-1}@f$ and compute two outputs @f$o_t@f$ and @f$h_t@f$. + + - input: should contain packed input @f$x_t@f$. + - output: should contain output @f$o_t@f$ (and @f$h_t@f$ if setProduceHiddenOutput() is set to true). + + input[0] should have shape [`T`, `N`, `data_dims`] where `T` and `N` is number of timestamps and number of independent samples of @f$x_t@f$ respectively. + + output[0] will have shape [`T`, `N`, @f$N_o@f$], where @f$N_o@f$ is number of rows in @f$ W_{xo} @f$ matrix. + + If setProduceHiddenOutput() is set to true then @p output[1] will contain a Mat with shape [`T`, `N`, @f$N_h@f$], where @f$N_h@f$ is number of rows in @f$ W_{hh} @f$ matrix. + */ + class CV_EXPORTS RNNLayer : public Layer + { + public: + /** Creates instance of RNNLayer */ + static Ptr create(const LayerParams& params); + + /** Setups learned weights. + + Recurrent-layer behavior on each step is defined by current input @f$ x_t @f$, previous state @f$ h_t @f$ and learned weights as follows: + @f{eqnarray*}{ + h_t &= tanh&(W_{hh} h_{t-1} + W_{xh} x_t + b_h), \\ + o_t &= tanh&(W_{ho} h_t + b_o), + @f} + + @param Wxh is @f$ W_{xh} @f$ matrix + @param bh is @f$ b_{h} @f$ vector + @param Whh is @f$ W_{hh} @f$ matrix + @param Who is @f$ W_{xo} @f$ matrix + @param bo is @f$ b_{o} @f$ vector + */ + virtual void setWeights(const Mat &Wxh, const Mat &bh, const Mat &Whh, const Mat &Who, const Mat &bo) = 0; + + /** @brief If this flag is set to true then layer will produce @f$ h_t @f$ as second output. + * @details Shape of the second output is the same as first output. + */ + virtual void setProduceHiddenOutput(bool produce = false) = 0; + + }; + + class CV_EXPORTS BaseConvolutionLayer : public Layer + { + public: + Size kernel, stride, pad, dilation, adjustPad; + String padMode; + int numOutput; + }; + + class CV_EXPORTS ConvolutionLayer : public BaseConvolutionLayer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS DeconvolutionLayer : public BaseConvolutionLayer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS LRNLayer : public Layer + { + public: + int type; + + int size; + float alpha, beta, bias; + bool normBySize; + + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS PoolingLayer : public Layer + { + public: + int type; + Size kernel, stride; + int pad_l, pad_t, pad_r, pad_b; + CV_DEPRECATED_EXTERNAL Size pad; + bool globalPooling; + bool computeMaxIdx; + String padMode; + bool ceilMode; + // If true for average pooling with padding, divide an every output region + // by a whole kernel area. Otherwise exclude zero padded values and divide + // by number of real values. + bool avePoolPaddedArea; + // ROIPooling parameters. + Size pooledSize; + float spatialScale; + // PSROIPooling parameters. + int psRoiOutChannels; + + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS SoftmaxLayer : public Layer + { + public: + bool logSoftMax; + + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS InnerProductLayer : public Layer + { + public: + int axis; + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS MVNLayer : public Layer + { + public: + float eps; + bool normVariance, acrossChannels; + + static Ptr create(const LayerParams& params); + }; + + /* Reshaping */ + + class CV_EXPORTS ReshapeLayer : public Layer + { + public: + MatShape newShapeDesc; + Range newShapeRange; + + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS FlattenLayer : public Layer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS ConcatLayer : public Layer + { + public: + int axis; + /** + * @brief Add zero padding in case of concatenation of blobs with different + * spatial sizes. + * + * Details: https://github.com/torch/nn/blob/master/doc/containers.md#depthconcat + */ + bool padding; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS SplitLayer : public Layer + { + public: + int outputsCount; //!< Number of copies that will be produced (is ignored when negative). + + static Ptr create(const LayerParams ¶ms); + }; + + /** + * Slice layer has several modes: + * 1. Caffe mode + * @param[in] axis Axis of split operation + * @param[in] slice_point Array of split points + * + * Number of output blobs equals to number of split points plus one. The + * first blob is a slice on input from 0 to @p slice_point[0] - 1 by @p axis, + * the second output blob is a slice of input from @p slice_point[0] to + * @p slice_point[1] - 1 by @p axis and the last output blob is a slice of + * input from @p slice_point[-1] up to the end of @p axis size. + * + * 2. TensorFlow mode + * @param begin Vector of start indices + * @param size Vector of sizes + * + * More convenient numpy-like slice. One and only output blob + * is a slice `input[begin[0]:begin[0]+size[0], begin[1]:begin[1]+size[1], ...]` + * + * 3. Torch mode + * @param axis Axis of split operation + * + * Split input blob on the equal parts by @p axis. + */ + class CV_EXPORTS SliceLayer : public Layer + { + public: + /** + * @brief Vector of slice ranges. + * + * The first dimension equals number of output blobs. + * Inner vector has slice ranges for the first number of input dimensions. + */ + std::vector > sliceRanges; + int axis; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS PermuteLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + /** + * Permute channels of 4-dimensional input blob. + * @param group Number of groups to split input channels and pick in turns + * into output blob. + * + * \f[ groupSize = \frac{number\ of\ channels}{group} \f] + * \f[ output(n, c, h, w) = input(n, groupSize \times (c \% group) + \lfloor \frac{c}{group} \rfloor, h, w) \f] + * Read more at https://arxiv.org/pdf/1707.01083.pdf + */ + class CV_EXPORTS ShuffleChannelLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + + int group; + }; + + /** + * @brief Adds extra values for specific axes. + * @param paddings Vector of paddings in format + * @code + * [ pad_before, pad_after, // [0]th dimension + * pad_before, pad_after, // [1]st dimension + * ... + * pad_before, pad_after ] // [n]th dimension + * @endcode + * that represents number of padded values at every dimension + * starting from the first one. The rest of dimensions won't + * be padded. + * @param value Value to be padded. Defaults to zero. + * @param type Padding type: 'constant', 'reflect' + * @param input_dims Torch's parameter. If @p input_dims is not equal to the + * actual input dimensionality then the `[0]th` dimension + * is considered as a batch dimension and @p paddings are shifted + * to a one dimension. Defaults to `-1` that means padding + * corresponding to @p paddings. + */ + class CV_EXPORTS PaddingLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + /* Activations */ + class CV_EXPORTS ActivationLayer : public Layer + { + public: + virtual void forwardSlice(const float* src, float* dst, int len, + size_t outPlaneSize, int cn0, int cn1) const = 0; + }; + + class CV_EXPORTS ReLULayer : public ActivationLayer + { + public: + float negativeSlope; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS ReLU6Layer : public ActivationLayer + { + public: + float minValue, maxValue; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS ChannelsPReLULayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS ELULayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS TanHLayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS SigmoidLayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS BNLLLayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS AbsLayer : public ActivationLayer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS PowerLayer : public ActivationLayer + { + public: + float power, scale, shift; + + static Ptr create(const LayerParams ¶ms); + }; + + /* Layers used in semantic segmentation */ + + class CV_EXPORTS CropLayer : public Layer + { + public: + int startAxis; + std::vector offset; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS EltwiseLayer : public Layer + { + public: + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS BatchNormLayer : public ActivationLayer + { + public: + bool hasWeights, hasBias; + float epsilon; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS MaxUnpoolLayer : public Layer + { + public: + Size poolKernel; + Size poolPad; + Size poolStride; + + static Ptr create(const LayerParams ¶ms); + }; + + class CV_EXPORTS ScaleLayer : public Layer + { + public: + bool hasBias; + int axis; + + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS ShiftLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS PriorBoxLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS ReorgLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS RegionLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS DetectionOutputLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + /** + * @brief \f$ L_p \f$ - normalization layer. + * @param p Normalization factor. The most common `p = 1` for \f$ L_1 \f$ - + * normalization or `p = 2` for \f$ L_2 \f$ - normalization or a custom one. + * @param eps Parameter \f$ \epsilon \f$ to prevent a division by zero. + * @param across_spatial If true, normalize an input across all non-batch dimensions. + * Otherwise normalize an every channel separately. + * + * Across spatial: + * @f[ + * norm = \sqrt[p]{\epsilon + \sum_{x, y, c} |src(x, y, c)|^p } \\ + * dst(x, y, c) = \frac{ src(x, y, c) }{norm} + * @f] + * + * Channel wise normalization: + * @f[ + * norm(c) = \sqrt[p]{\epsilon + \sum_{x, y} |src(x, y, c)|^p } \\ + * dst(x, y, c) = \frac{ src(x, y, c) }{norm(c)} + * @f] + * + * Where `x, y` - spatial coordinates, `c` - channel. + * + * An every sample in the batch is normalized separately. Optionally, + * output is scaled by the trained parameters. + */ + class CV_EXPORTS NormalizeBBoxLayer : public Layer + { + public: + float pnorm, epsilon; + CV_DEPRECATED_EXTERNAL bool acrossSpatial; + + static Ptr create(const LayerParams& params); + }; + + /** + * @brief Resize input 4-dimensional blob by nearest neighbor or bilinear strategy. + * + * Layer is used to support TensorFlow's resize_nearest_neighbor and resize_bilinear ops. + */ + class CV_EXPORTS ResizeLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + /** + * @brief Bilinear resize layer from https://github.com/cdmh/deeplab-public + * + * It differs from @ref ResizeLayer in output shape and resize scales computations. + */ + class CV_EXPORTS InterpLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS ProposalLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + + class CV_EXPORTS CropAndResizeLayer : public Layer + { + public: + static Ptr create(const LayerParams& params); + }; + +//! @} +//! @} +CV__DNN_INLINE_NS_END +} +} +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/dict.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/dict.hpp new file mode 100644 index 0000000..463d314 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/dict.hpp @@ -0,0 +1,160 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include +#include +#include + +#include + +#ifndef OPENCV_DNN_DNN_DICT_HPP +#define OPENCV_DNN_DNN_DICT_HPP + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN +//! @addtogroup dnn +//! @{ + +/** @brief This struct stores the scalar value (or array) of one of the following type: double, cv::String or int64. + * @todo Maybe int64 is useless because double type exactly stores at least 2^52 integers. + */ +struct CV_EXPORTS_W DictValue +{ + DictValue(const DictValue &r); + DictValue(bool i) : type(Param::INT), pi(new AutoBuffer) { (*pi)[0] = i ? 1 : 0; } //!< Constructs integer scalar + DictValue(int64 i = 0) : type(Param::INT), pi(new AutoBuffer) { (*pi)[0] = i; } //!< Constructs integer scalar + CV_WRAP DictValue(int i) : type(Param::INT), pi(new AutoBuffer) { (*pi)[0] = i; } //!< Constructs integer scalar + DictValue(unsigned p) : type(Param::INT), pi(new AutoBuffer) { (*pi)[0] = p; } //!< Constructs integer scalar + CV_WRAP DictValue(double p) : type(Param::REAL), pd(new AutoBuffer) { (*pd)[0] = p; } //!< Constructs floating point scalar + CV_WRAP DictValue(const String &s) : type(Param::STRING), ps(new AutoBuffer) { (*ps)[0] = s; } //!< Constructs string scalar + DictValue(const char *s) : type(Param::STRING), ps(new AutoBuffer) { (*ps)[0] = s; } //!< @overload + + template + static DictValue arrayInt(TypeIter begin, int size); //!< Constructs integer array + template + static DictValue arrayReal(TypeIter begin, int size); //!< Constructs floating point array + template + static DictValue arrayString(TypeIter begin, int size); //!< Constructs array of strings + + template + T get(int idx = -1) const; //!< Tries to convert array element with specified index to requested type and returns its. + + int size() const; + + CV_WRAP bool isInt() const; + CV_WRAP bool isString() const; + CV_WRAP bool isReal() const; + + CV_WRAP int getIntValue(int idx = -1) const; + CV_WRAP double getRealValue(int idx = -1) const; + CV_WRAP String getStringValue(int idx = -1) const; + + DictValue &operator=(const DictValue &r); + + friend std::ostream &operator<<(std::ostream &stream, const DictValue &dictv); + + ~DictValue(); + +private: + + Param type; + + union + { + AutoBuffer *pi; + AutoBuffer *pd; + AutoBuffer *ps; + void *pv; + }; + + DictValue(Param _type, void *_p) : type(_type), pv(_p) {} + void release(); +}; + +/** @brief This class implements name-value dictionary, values are instances of DictValue. */ +class CV_EXPORTS Dict +{ + typedef std::map _Dict; + _Dict dict; + +public: + + //! Checks a presence of the @p key in the dictionary. + bool has(const String &key) const; + + //! If the @p key in the dictionary then returns pointer to its value, else returns NULL. + DictValue *ptr(const String &key); + + /** @overload */ + const DictValue *ptr(const String &key) const; + + //! If the @p key in the dictionary then returns its value, else an error will be generated. + const DictValue &get(const String &key) const; + + /** @overload */ + template + T get(const String &key) const; + + //! If the @p key in the dictionary then returns its value, else returns @p defaultValue. + template + T get(const String &key, const T &defaultValue) const; + + //! Sets new @p value for the @p key, or adds new key-value pair into the dictionary. + template + const T &set(const String &key, const T &value); + + //! Erase @p key from the dictionary. + void erase(const String &key); + + friend std::ostream &operator<<(std::ostream &stream, const Dict &dict); + + std::map::const_iterator begin() const; + + std::map::const_iterator end() const; +}; + +//! @} +CV__DNN_INLINE_NS_END +} +} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.hpp new file mode 100644 index 0000000..127b761 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.hpp @@ -0,0 +1,969 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_DNN_HPP +#define OPENCV_DNN_DNN_HPP + +#include +#include + +#include "../dnn/version.hpp" + +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN +//! @addtogroup dnn +//! @{ + + typedef std::vector MatShape; + + /** + * @brief Enum of computation backends supported by layers. + * @see Net::setPreferableBackend + */ + enum Backend + { + //! DNN_BACKEND_DEFAULT equals to DNN_BACKEND_INFERENCE_ENGINE if + //! OpenCV is built with Intel's Inference Engine library or + //! DNN_BACKEND_OPENCV otherwise. + DNN_BACKEND_DEFAULT, + DNN_BACKEND_HALIDE, + DNN_BACKEND_INFERENCE_ENGINE, + DNN_BACKEND_OPENCV, + DNN_BACKEND_VKCOM + }; + + /** + * @brief Enum of target devices for computations. + * @see Net::setPreferableTarget + */ + enum Target + { + DNN_TARGET_CPU, + DNN_TARGET_OPENCL, + DNN_TARGET_OPENCL_FP16, + DNN_TARGET_MYRIAD, + DNN_TARGET_VULKAN, + //! FPGA device with CPU fallbacks using Inference Engine's Heterogeneous plugin. + DNN_TARGET_FPGA + }; + + CV_EXPORTS std::vector< std::pair > getAvailableBackends(); + CV_EXPORTS std::vector getAvailableTargets(Backend be); + + /** @brief This class provides all data needed to initialize layer. + * + * It includes dictionary with scalar params (which can be read by using Dict interface), + * blob params #blobs and optional meta information: #name and #type of layer instance. + */ + class CV_EXPORTS LayerParams : public Dict + { + public: + //TODO: Add ability to name blob params + std::vector blobs; //!< List of learned parameters stored as blobs. + + String name; //!< Name of the layer instance (optional, can be used internal purposes). + String type; //!< Type name which was used for creating layer by layer factory (optional). + }; + + /** + * @brief Derivatives of this class encapsulates functions of certain backends. + */ + class BackendNode + { + public: + BackendNode(int backendId); + + virtual ~BackendNode(); //!< Virtual destructor to make polymorphism. + + int backendId; //!< Backend identifier. + }; + + /** + * @brief Derivatives of this class wraps cv::Mat for different backends and targets. + */ + class BackendWrapper + { + public: + BackendWrapper(int backendId, int targetId); + + /** + * @brief Wrap cv::Mat for specific backend and target. + * @param[in] targetId Target identifier. + * @param[in] m cv::Mat for wrapping. + * + * Make CPU->GPU data transfer if it's require for the target. + */ + BackendWrapper(int targetId, const cv::Mat& m); + + /** + * @brief Make wrapper for reused cv::Mat. + * @param[in] base Wrapper of cv::Mat that will be reused. + * @param[in] shape Specific shape. + * + * Initialize wrapper from another one. It'll wrap the same host CPU + * memory and mustn't allocate memory on device(i.e. GPU). It might + * has different shape. Use in case of CPU memory reusing for reuse + * associated memory on device too. + */ + BackendWrapper(const Ptr& base, const MatShape& shape); + + virtual ~BackendWrapper(); //!< Virtual destructor to make polymorphism. + + /** + * @brief Transfer data to CPU host memory. + */ + virtual void copyToHost() = 0; + + /** + * @brief Indicate that an actual data is on CPU. + */ + virtual void setHostDirty() = 0; + + int backendId; //!< Backend identifier. + int targetId; //!< Target identifier. + }; + + class CV_EXPORTS ActivationLayer; + + /** @brief This interface class allows to build new Layers - are building blocks of networks. + * + * Each class, derived from Layer, must implement allocate() methods to declare own outputs and forward() to compute outputs. + * Also before using the new layer into networks you must register your layer by using one of @ref dnnLayerFactory "LayerFactory" macros. + */ + class CV_EXPORTS_W Layer : public Algorithm + { + public: + + //! List of learned parameters must be stored here to allow read them by using Net::getParam(). + CV_PROP_RW std::vector blobs; + + /** @brief Computes and sets internal parameters according to inputs, outputs and blobs. + * @deprecated Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead + * @param[in] input vector of already allocated input blobs + * @param[out] output vector of already allocated output blobs + * + * If this method is called after network has allocated all memory for input and output blobs + * and before inferencing. + */ + CV_DEPRECATED_EXTERNAL + virtual void finalize(const std::vector &input, std::vector &output); + + /** @brief Computes and sets internal parameters according to inputs, outputs and blobs. + * @param[in] inputs vector of already allocated input blobs + * @param[out] outputs vector of already allocated output blobs + * + * If this method is called after network has allocated all memory for input and output blobs + * and before inferencing. + */ + CV_WRAP virtual void finalize(InputArrayOfArrays inputs, OutputArrayOfArrays outputs); + + /** @brief Given the @p input blobs, computes the output @p blobs. + * @deprecated Use Layer::forward(InputArrayOfArrays, OutputArrayOfArrays, OutputArrayOfArrays) instead + * @param[in] input the input blobs. + * @param[out] output allocated output blobs, which will store results of the computation. + * @param[out] internals allocated internal blobs + */ + CV_DEPRECATED_EXTERNAL + virtual void forward(std::vector &input, std::vector &output, std::vector &internals); + + /** @brief Given the @p input blobs, computes the output @p blobs. + * @param[in] inputs the input blobs. + * @param[out] outputs allocated output blobs, which will store results of the computation. + * @param[out] internals allocated internal blobs + */ + virtual void forward(InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals); + + /** @brief Given the @p input blobs, computes the output @p blobs. + * @param[in] inputs the input blobs. + * @param[out] outputs allocated output blobs, which will store results of the computation. + * @param[out] internals allocated internal blobs + */ + void forward_fallback(InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals); + + /** @brief + * @overload + * @deprecated Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead + */ + CV_DEPRECATED_EXTERNAL + void finalize(const std::vector &inputs, CV_OUT std::vector &outputs); + + /** @brief + * @overload + * @deprecated Use Layer::finalize(InputArrayOfArrays, OutputArrayOfArrays) instead + */ + CV_DEPRECATED std::vector finalize(const std::vector &inputs); + + /** @brief Allocates layer and computes output. + * @deprecated This method will be removed in the future release. + */ + CV_DEPRECATED CV_WRAP void run(const std::vector &inputs, CV_OUT std::vector &outputs, + CV_IN_OUT std::vector &internals); + + /** @brief Returns index of input blob into the input array. + * @param inputName label of input blob + * + * Each layer input and output can be labeled to easily identify them using "%[.output_name]" notation. + * This method maps label of input blob to its index into input vector. + */ + virtual int inputNameToIndex(String inputName); + /** @brief Returns index of output blob in output array. + * @see inputNameToIndex() + */ + CV_WRAP virtual int outputNameToIndex(const String& outputName); + + /** + * @brief Ask layer if it support specific backend for doing computations. + * @param[in] backendId computation backend identifier. + * @see Backend + */ + virtual bool supportBackend(int backendId); + + /** + * @brief Returns Halide backend node. + * @param[in] inputs Input Halide buffers. + * @see BackendNode, BackendWrapper + * + * Input buffers should be exactly the same that will be used in forward invocations. + * Despite we can use Halide::ImageParam based on input shape only, + * it helps prevent some memory management issues (if something wrong, + * Halide tests will be failed). + */ + virtual Ptr initHalide(const std::vector > &inputs); + + virtual Ptr initInfEngine(const std::vector > &inputs); + + virtual Ptr initVkCom(const std::vector > &inputs); + /** + * @brief Automatic Halide scheduling based on layer hyper-parameters. + * @param[in] node Backend node with Halide functions. + * @param[in] inputs Blobs that will be used in forward invocations. + * @param[in] outputs Blobs that will be used in forward invocations. + * @param[in] targetId Target identifier + * @see BackendNode, Target + * + * Layer don't use own Halide::Func members because we can have applied + * layers fusing. In this way the fused function should be scheduled. + */ + virtual void applyHalideScheduler(Ptr& node, + const std::vector &inputs, + const std::vector &outputs, + int targetId) const; + + /** + * @brief Implement layers fusing. + * @param[in] node Backend node of bottom layer. + * @see BackendNode + * + * Actual for graph-based backends. If layer attached successfully, + * returns non-empty cv::Ptr to node of the same backend. + * Fuse only over the last function. + */ + virtual Ptr tryAttach(const Ptr& node); + + /** + * @brief Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case. + * @param[in] layer The subsequent activation layer. + * + * Returns true if the activation layer has been attached successfully. + */ + virtual bool setActivation(const Ptr& layer); + + /** + * @brief Try to fuse current layer with a next one + * @param[in] top Next layer to be fused. + * @returns True if fusion was performed. + */ + virtual bool tryFuse(Ptr& top); + + /** + * @brief Returns parameters of layers with channel-wise multiplication and addition. + * @param[out] scale Channel-wise multipliers. Total number of values should + * be equal to number of channels. + * @param[out] shift Channel-wise offsets. Total number of values should + * be equal to number of channels. + * + * Some layers can fuse their transformations with further layers. + * In example, convolution + batch normalization. This way base layer + * use weights from layer after it. Fused layer is skipped. + * By default, @p scale and @p shift are empty that means layer has no + * element-wise multiplications or additions. + */ + virtual void getScaleShift(Mat& scale, Mat& shift) const; + + /** + * @brief "Deattaches" all the layers, attached to particular layer. + */ + virtual void unsetAttached(); + + virtual bool getMemoryShapes(const std::vector &inputs, + const int requiredOutputs, + std::vector &outputs, + std::vector &internals) const; + virtual int64 getFLOPS(const std::vector &inputs, + const std::vector &outputs) const {CV_UNUSED(inputs); CV_UNUSED(outputs); return 0;} + + CV_PROP String name; //!< Name of the layer instance, can be used for logging or other internal purposes. + CV_PROP String type; //!< Type name which was used for creating layer by layer factory. + CV_PROP int preferableTarget; //!< prefer target for layer forwarding + + Layer(); + explicit Layer(const LayerParams ¶ms); //!< Initializes only #name, #type and #blobs fields. + void setParamsFrom(const LayerParams ¶ms); //!< Initializes only #name, #type and #blobs fields. + virtual ~Layer(); + }; + + /** @brief This class allows to create and manipulate comprehensive artificial neural networks. + * + * Neural network is presented as directed acyclic graph (DAG), where vertices are Layer instances, + * and edges specify relationships between layers inputs and outputs. + * + * Each network layer has unique integer id and unique string name inside its network. + * LayerId can store either layer name or layer id. + * + * This class supports reference counting of its instances, i. e. copies point to the same instance. + */ + class CV_EXPORTS_W_SIMPLE Net + { + public: + + CV_WRAP Net(); //!< Default constructor. + CV_WRAP ~Net(); //!< Destructor frees the net only if there aren't references to the net anymore. + + /** @brief Create a network from Intel's Model Optimizer intermediate representation. + * @param[in] xml XML configuration file with network's topology. + * @param[in] bin Binary file with trained weights. + * Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine + * backend. + */ + CV_WRAP static Net readFromModelOptimizer(const String& xml, const String& bin); + + /** Returns true if there are no layers in the network. */ + CV_WRAP bool empty() const; + + /** @brief Adds new layer to the net. + * @param name unique name of the adding layer. + * @param type typename of the adding layer (type must be registered in LayerRegister). + * @param params parameters which will be used to initialize the creating layer. + * @returns unique identifier of created layer, or -1 if a failure will happen. + */ + int addLayer(const String &name, const String &type, LayerParams ¶ms); + /** @brief Adds new layer and connects its first input to the first output of previously added layer. + * @see addLayer() + */ + int addLayerToPrev(const String &name, const String &type, LayerParams ¶ms); + + /** @brief Converts string name of the layer to the integer identifier. + * @returns id of the layer, or -1 if the layer wasn't found. + */ + CV_WRAP int getLayerId(const String &layer); + + CV_WRAP std::vector getLayerNames() const; + + /** @brief Container for strings and integers. */ + typedef DictValue LayerId; + + /** @brief Returns pointer to layer with specified id or name which the network use. */ + CV_WRAP Ptr getLayer(LayerId layerId); + + /** @brief Returns pointers to input layers of specific layer. */ + std::vector > getLayerInputs(LayerId layerId); // FIXIT: CV_WRAP + + /** @brief Connects output of the first layer to input of the second layer. + * @param outPin descriptor of the first layer output. + * @param inpPin descriptor of the second layer input. + * + * Descriptors have the following template <layer_name>[.input_number]: + * - the first part of the template layer_name is sting name of the added layer. + * If this part is empty then the network input pseudo layer will be used; + * - the second optional part of the template input_number + * is either number of the layer input, either label one. + * If this part is omitted then the first layer input will be used. + * + * @see setNetInputs(), Layer::inputNameToIndex(), Layer::outputNameToIndex() + */ + CV_WRAP void connect(String outPin, String inpPin); + + /** @brief Connects #@p outNum output of the first layer to #@p inNum input of the second layer. + * @param outLayerId identifier of the first layer + * @param outNum number of the first layer output + * @param inpLayerId identifier of the second layer + * @param inpNum number of the second layer input + */ + void connect(int outLayerId, int outNum, int inpLayerId, int inpNum); + + /** @brief Sets outputs names of the network input pseudo layer. + * + * Each net always has special own the network input pseudo layer with id=0. + * This layer stores the user blobs only and don't make any computations. + * In fact, this layer provides the only way to pass user data into the network. + * As any other layer, this layer can label its outputs and this function provides an easy way to do this. + */ + CV_WRAP void setInputsNames(const std::vector &inputBlobNames); + + /** @brief Runs forward pass to compute output of layer with name @p outputName. + * @param outputName name for layer which output is needed to get + * @return blob for first output of specified layer. + * @details By default runs forward pass for the whole network. + */ + CV_WRAP Mat forward(const String& outputName = String()); + + /** @brief Runs forward pass to compute output of layer with name @p outputName. + * @param outputBlobs contains all output blobs for specified layer. + * @param outputName name for layer which output is needed to get + * @details If @p outputName is empty, runs forward pass for the whole network. + */ + CV_WRAP void forward(OutputArrayOfArrays outputBlobs, const String& outputName = String()); + + /** @brief Runs forward pass to compute outputs of layers listed in @p outBlobNames. + * @param outputBlobs contains blobs for first outputs of specified layers. + * @param outBlobNames names for layers which outputs are needed to get + */ + CV_WRAP void forward(OutputArrayOfArrays outputBlobs, + const std::vector& outBlobNames); + + /** @brief Runs forward pass to compute outputs of layers listed in @p outBlobNames. + * @param outputBlobs contains all output blobs for each layer specified in @p outBlobNames. + * @param outBlobNames names for layers which outputs are needed to get + */ + CV_WRAP_AS(forwardAndRetrieve) void forward(CV_OUT std::vector >& outputBlobs, + const std::vector& outBlobNames); + + /** + * @brief Compile Halide layers. + * @param[in] scheduler Path to YAML file with scheduling directives. + * @see setPreferableBackend + * + * Schedule layers that support Halide backend. Then compile them for + * specific target. For layers that not represented in scheduling file + * or if no manual scheduling used at all, automatic scheduling will be applied. + */ + CV_WRAP void setHalideScheduler(const String& scheduler); + + /** + * @brief Ask network to use specific computation backend where it supported. + * @param[in] backendId backend identifier. + * @see Backend + * + * If OpenCV is compiled with Intel's Inference Engine library, DNN_BACKEND_DEFAULT + * means DNN_BACKEND_INFERENCE_ENGINE. Otherwise it equals to DNN_BACKEND_OPENCV. + */ + CV_WRAP void setPreferableBackend(int backendId); + + /** + * @brief Ask network to make computations on specific target device. + * @param[in] targetId target identifier. + * @see Target + * + * List of supported combinations backend / target: + * | | DNN_BACKEND_OPENCV | DNN_BACKEND_INFERENCE_ENGINE | DNN_BACKEND_HALIDE | + * |------------------------|--------------------|------------------------------|--------------------| + * | DNN_TARGET_CPU | + | + | + | + * | DNN_TARGET_OPENCL | + | + | + | + * | DNN_TARGET_OPENCL_FP16 | + | + | | + * | DNN_TARGET_MYRIAD | | + | | + * | DNN_TARGET_FPGA | | + | | + */ + CV_WRAP void setPreferableTarget(int targetId); + + /** @brief Sets the new input value for the network + * @param blob A new blob. Should have CV_32F or CV_8U depth. + * @param name A name of input layer. + * @param scalefactor An optional normalization scale. + * @param mean An optional mean subtraction values. + * @see connect(String, String) to know format of the descriptor. + * + * If scale or mean values are specified, a final input blob is computed + * as: + * \f[input(n,c,h,w) = scalefactor \times (blob(n,c,h,w) - mean_c)\f] + */ + CV_WRAP void setInput(InputArray blob, const String& name = "", + double scalefactor = 1.0, const Scalar& mean = Scalar()); + + /** @brief Sets the new value for the learned param of the layer. + * @param layer name or id of the layer. + * @param numParam index of the layer parameter in the Layer::blobs array. + * @param blob the new value. + * @see Layer::blobs + * @note If shape of the new blob differs from the previous shape, + * then the following forward pass may fail. + */ + CV_WRAP void setParam(LayerId layer, int numParam, const Mat &blob); + + /** @brief Returns parameter blob of the layer. + * @param layer name or id of the layer. + * @param numParam index of the layer parameter in the Layer::blobs array. + * @see Layer::blobs + */ + CV_WRAP Mat getParam(LayerId layer, int numParam = 0); + + /** @brief Returns indexes of layers with unconnected outputs. + */ + CV_WRAP std::vector getUnconnectedOutLayers() const; + + /** @brief Returns names of layers with unconnected outputs. + */ + CV_WRAP std::vector getUnconnectedOutLayersNames() const; + + /** @brief Returns input and output shapes for all layers in loaded model; + * preliminary inferencing isn't necessary. + * @param netInputShapes shapes for all input blobs in net input layer. + * @param layersIds output parameter for layer IDs. + * @param inLayersShapes output parameter for input layers shapes; + * order is the same as in layersIds + * @param outLayersShapes output parameter for output layers shapes; + * order is the same as in layersIds + */ + CV_WRAP void getLayersShapes(const std::vector& netInputShapes, + CV_OUT std::vector& layersIds, + CV_OUT std::vector >& inLayersShapes, + CV_OUT std::vector >& outLayersShapes) const; + + /** @overload */ + CV_WRAP void getLayersShapes(const MatShape& netInputShape, + CV_OUT std::vector& layersIds, + CV_OUT std::vector >& inLayersShapes, + CV_OUT std::vector >& outLayersShapes) const; + + /** @brief Returns input and output shapes for layer with specified + * id in loaded model; preliminary inferencing isn't necessary. + * @param netInputShape shape input blob in net input layer. + * @param layerId id for layer. + * @param inLayerShapes output parameter for input layers shapes; + * order is the same as in layersIds + * @param outLayerShapes output parameter for output layers shapes; + * order is the same as in layersIds + */ + void getLayerShapes(const MatShape& netInputShape, + const int layerId, + CV_OUT std::vector& inLayerShapes, + CV_OUT std::vector& outLayerShapes) const; // FIXIT: CV_WRAP + + /** @overload */ + void getLayerShapes(const std::vector& netInputShapes, + const int layerId, + CV_OUT std::vector& inLayerShapes, + CV_OUT std::vector& outLayerShapes) const; // FIXIT: CV_WRAP + + /** @brief Computes FLOP for whole loaded model with specified input shapes. + * @param netInputShapes vector of shapes for all net inputs. + * @returns computed FLOP. + */ + CV_WRAP int64 getFLOPS(const std::vector& netInputShapes) const; + /** @overload */ + CV_WRAP int64 getFLOPS(const MatShape& netInputShape) const; + /** @overload */ + CV_WRAP int64 getFLOPS(const int layerId, + const std::vector& netInputShapes) const; + /** @overload */ + CV_WRAP int64 getFLOPS(const int layerId, + const MatShape& netInputShape) const; + + /** @brief Returns list of types for layer used in model. + * @param layersTypes output parameter for returning types. + */ + CV_WRAP void getLayerTypes(CV_OUT std::vector& layersTypes) const; + + /** @brief Returns count of layers of specified type. + * @param layerType type. + * @returns count of layers + */ + CV_WRAP int getLayersCount(const String& layerType) const; + + /** @brief Computes bytes number which are required to store + * all weights and intermediate blobs for model. + * @param netInputShapes vector of shapes for all net inputs. + * @param weights output parameter to store resulting bytes for weights. + * @param blobs output parameter to store resulting bytes for intermediate blobs. + */ + void getMemoryConsumption(const std::vector& netInputShapes, + CV_OUT size_t& weights, CV_OUT size_t& blobs) const; // FIXIT: CV_WRAP + /** @overload */ + CV_WRAP void getMemoryConsumption(const MatShape& netInputShape, + CV_OUT size_t& weights, CV_OUT size_t& blobs) const; + /** @overload */ + CV_WRAP void getMemoryConsumption(const int layerId, + const std::vector& netInputShapes, + CV_OUT size_t& weights, CV_OUT size_t& blobs) const; + /** @overload */ + CV_WRAP void getMemoryConsumption(const int layerId, + const MatShape& netInputShape, + CV_OUT size_t& weights, CV_OUT size_t& blobs) const; + + /** @brief Computes bytes number which are required to store + * all weights and intermediate blobs for each layer. + * @param netInputShapes vector of shapes for all net inputs. + * @param layerIds output vector to save layer IDs. + * @param weights output parameter to store resulting bytes for weights. + * @param blobs output parameter to store resulting bytes for intermediate blobs. + */ + void getMemoryConsumption(const std::vector& netInputShapes, + CV_OUT std::vector& layerIds, + CV_OUT std::vector& weights, + CV_OUT std::vector& blobs) const; // FIXIT: CV_WRAP + /** @overload */ + void getMemoryConsumption(const MatShape& netInputShape, + CV_OUT std::vector& layerIds, + CV_OUT std::vector& weights, + CV_OUT std::vector& blobs) const; // FIXIT: CV_WRAP + + /** @brief Enables or disables layer fusion in the network. + * @param fusion true to enable the fusion, false to disable. The fusion is enabled by default. + */ + CV_WRAP void enableFusion(bool fusion); + + /** @brief Returns overall time for inference and timings (in ticks) for layers. + * Indexes in returned vector correspond to layers ids. Some layers can be fused with others, + * in this case zero ticks count will be return for that skipped layers. + * @param timings vector for tick timings for all layers. + * @return overall ticks for model inference. + */ + CV_WRAP int64 getPerfProfile(CV_OUT std::vector& timings); + + private: + struct Impl; + Ptr impl; + }; + + /** @brief Reads a network model stored in Darknet model files. + * @param cfgFile path to the .cfg file with text description of the network architecture. + * @param darknetModel path to the .weights file with learned network. + * @returns Network object that ready to do forward, throw an exception in failure cases. + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromDarknet(const String &cfgFile, const String &darknetModel = String()); + + /** @brief Reads a network model stored in Darknet model files. + * @param bufferCfg A buffer contains a content of .cfg file with text description of the network architecture. + * @param bufferModel A buffer contains a content of .weights file with learned network. + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromDarknet(const std::vector& bufferCfg, + const std::vector& bufferModel = std::vector()); + + /** @brief Reads a network model stored in Darknet model files. + * @param bufferCfg A buffer contains a content of .cfg file with text description of the network architecture. + * @param lenCfg Number of bytes to read from bufferCfg + * @param bufferModel A buffer contains a content of .weights file with learned network. + * @param lenModel Number of bytes to read from bufferModel + * @returns Net object. + */ + CV_EXPORTS Net readNetFromDarknet(const char *bufferCfg, size_t lenCfg, + const char *bufferModel = NULL, size_t lenModel = 0); + + /** @brief Reads a network model stored in Caffe framework's format. + * @param prototxt path to the .prototxt file with text description of the network architecture. + * @param caffeModel path to the .caffemodel file with learned network. + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromCaffe(const String &prototxt, const String &caffeModel = String()); + + /** @brief Reads a network model stored in Caffe model in memory. + * @param bufferProto buffer containing the content of the .prototxt file + * @param bufferModel buffer containing the content of the .caffemodel file + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromCaffe(const std::vector& bufferProto, + const std::vector& bufferModel = std::vector()); + + /** @brief Reads a network model stored in Caffe model in memory. + * @details This is an overloaded member function, provided for convenience. + * It differs from the above function only in what argument(s) it accepts. + * @param bufferProto buffer containing the content of the .prototxt file + * @param lenProto length of bufferProto + * @param bufferModel buffer containing the content of the .caffemodel file + * @param lenModel length of bufferModel + * @returns Net object. + */ + CV_EXPORTS Net readNetFromCaffe(const char *bufferProto, size_t lenProto, + const char *bufferModel = NULL, size_t lenModel = 0); + + /** @brief Reads a network model stored in TensorFlow framework's format. + * @param model path to the .pb file with binary protobuf description of the network architecture + * @param config path to the .pbtxt file that contains text graph definition in protobuf format. + * Resulting Net object is built by text graph using weights from a binary one that + * let us make it more flexible. + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromTensorflow(const String &model, const String &config = String()); + + /** @brief Reads a network model stored in TensorFlow framework's format. + * @param bufferModel buffer containing the content of the pb file + * @param bufferConfig buffer containing the content of the pbtxt file + * @returns Net object. + */ + CV_EXPORTS_W Net readNetFromTensorflow(const std::vector& bufferModel, + const std::vector& bufferConfig = std::vector()); + + /** @brief Reads a network model stored in TensorFlow framework's format. + * @details This is an overloaded member function, provided for convenience. + * It differs from the above function only in what argument(s) it accepts. + * @param bufferModel buffer containing the content of the pb file + * @param lenModel length of bufferModel + * @param bufferConfig buffer containing the content of the pbtxt file + * @param lenConfig length of bufferConfig + */ + CV_EXPORTS Net readNetFromTensorflow(const char *bufferModel, size_t lenModel, + const char *bufferConfig = NULL, size_t lenConfig = 0); + + /** + * @brief Reads a network model stored in Torch7 framework's format. + * @param model path to the file, dumped from Torch by using torch.save() function. + * @param isBinary specifies whether the network was serialized in ascii mode or binary. + * @param evaluate specifies testing phase of network. If true, it's similar to evaluate() method in Torch. + * @returns Net object. + * + * @note Ascii mode of Torch serializer is more preferable, because binary mode extensively use `long` type of C language, + * which has various bit-length on different systems. + * + * The loading file must contain serialized nn.Module object + * with importing network. Try to eliminate a custom objects from serialazing data to avoid importing errors. + * + * List of supported layers (i.e. object instances derived from Torch nn.Module class): + * - nn.Sequential + * - nn.Parallel + * - nn.Concat + * - nn.Linear + * - nn.SpatialConvolution + * - nn.SpatialMaxPooling, nn.SpatialAveragePooling + * - nn.ReLU, nn.TanH, nn.Sigmoid + * - nn.Reshape + * - nn.SoftMax, nn.LogSoftMax + * + * Also some equivalents of these classes from cunn, cudnn, and fbcunn may be successfully imported. + */ + CV_EXPORTS_W Net readNetFromTorch(const String &model, bool isBinary = true, bool evaluate = true); + + /** + * @brief Read deep learning network represented in one of the supported formats. + * @param[in] model Binary file contains trained weights. The following file + * extensions are expected for models from different frameworks: + * * `*.caffemodel` (Caffe, http://caffe.berkeleyvision.org/) + * * `*.pb` (TensorFlow, https://www.tensorflow.org/) + * * `*.t7` | `*.net` (Torch, http://torch.ch/) + * * `*.weights` (Darknet, https://pjreddie.com/darknet/) + * * `*.bin` (DLDT, https://software.intel.com/openvino-toolkit) + * @param[in] config Text file contains network configuration. It could be a + * file with the following extensions: + * * `*.prototxt` (Caffe, http://caffe.berkeleyvision.org/) + * * `*.pbtxt` (TensorFlow, https://www.tensorflow.org/) + * * `*.cfg` (Darknet, https://pjreddie.com/darknet/) + * * `*.xml` (DLDT, https://software.intel.com/openvino-toolkit) + * @param[in] framework Explicit framework name tag to determine a format. + * @returns Net object. + * + * This function automatically detects an origin framework of trained model + * and calls an appropriate function such @ref readNetFromCaffe, @ref readNetFromTensorflow, + * @ref readNetFromTorch or @ref readNetFromDarknet. An order of @p model and @p config + * arguments does not matter. + */ + CV_EXPORTS_W Net readNet(const String& model, const String& config = "", const String& framework = ""); + + /** + * @brief Read deep learning network represented in one of the supported formats. + * @details This is an overloaded member function, provided for convenience. + * It differs from the above function only in what argument(s) it accepts. + * @param[in] framework Name of origin framework. + * @param[in] bufferModel A buffer with a content of binary file with weights + * @param[in] bufferConfig A buffer with a content of text file contains network configuration. + * @returns Net object. + */ + CV_EXPORTS_W Net readNet(const String& framework, const std::vector& bufferModel, + const std::vector& bufferConfig = std::vector()); + + /** @brief Loads blob which was serialized as torch.Tensor object of Torch7 framework. + * @warning This function has the same limitations as readNetFromTorch(). + */ + CV_EXPORTS_W Mat readTorchBlob(const String &filename, bool isBinary = true); + + /** @brief Load a network from Intel's Model Optimizer intermediate representation. + * @param[in] xml XML configuration file with network's topology. + * @param[in] bin Binary file with trained weights. + * @returns Net object. + * Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine + * backend. + */ + CV_EXPORTS_W Net readNetFromModelOptimizer(const String &xml, const String &bin); + + /** @brief Reads a network model ONNX. + * @param onnxFile path to the .onnx file with text description of the network architecture. + * @returns Network object that ready to do forward, throw an exception in failure cases. + */ + CV_EXPORTS_W Net readNetFromONNX(const String &onnxFile); + + /** @brief Creates blob from .pb file. + * @param path to the .pb file with input tensor. + * @returns Mat. + */ + CV_EXPORTS_W Mat readTensorFromONNX(const String& path); + + /** @brief Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, + * subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels. + * @param image input image (with 1-, 3- or 4-channels). + * @param size spatial size for output image + * @param mean scalar with mean values which are subtracted from channels. Values are intended + * to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true. + * @param scalefactor multiplier for @p image values. + * @param swapRB flag which indicates that swap first and last channels + * in 3-channel image is necessary. + * @param crop flag which indicates whether image will be cropped after resize or not + * @param ddepth Depth of output blob. Choose CV_32F or CV_8U. + * @details if @p crop is true, input image is resized so one side after resize is equal to corresponding + * dimension in @p size and another one is equal or larger. Then, crop from the center is performed. + * If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. + * @returns 4-dimensional Mat with NCHW dimensions order. + */ + CV_EXPORTS_W Mat blobFromImage(InputArray image, double scalefactor=1.0, const Size& size = Size(), + const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false, + int ddepth=CV_32F); + + /** @brief Creates 4-dimensional blob from image. + * @details This is an overloaded member function, provided for convenience. + * It differs from the above function only in what argument(s) it accepts. + */ + CV_EXPORTS void blobFromImage(InputArray image, OutputArray blob, double scalefactor=1.0, + const Size& size = Size(), const Scalar& mean = Scalar(), + bool swapRB=false, bool crop=false, int ddepth=CV_32F); + + + /** @brief Creates 4-dimensional blob from series of images. Optionally resizes and + * crops @p images from center, subtract @p mean values, scales values by @p scalefactor, + * swap Blue and Red channels. + * @param images input images (all with 1-, 3- or 4-channels). + * @param size spatial size for output image + * @param mean scalar with mean values which are subtracted from channels. Values are intended + * to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true. + * @param scalefactor multiplier for @p images values. + * @param swapRB flag which indicates that swap first and last channels + * in 3-channel image is necessary. + * @param crop flag which indicates whether image will be cropped after resize or not + * @param ddepth Depth of output blob. Choose CV_32F or CV_8U. + * @details if @p crop is true, input image is resized so one side after resize is equal to corresponding + * dimension in @p size and another one is equal or larger. Then, crop from the center is performed. + * If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. + * @returns 4-dimensional Mat with NCHW dimensions order. + */ + CV_EXPORTS_W Mat blobFromImages(InputArrayOfArrays images, double scalefactor=1.0, + Size size = Size(), const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false, + int ddepth=CV_32F); + + /** @brief Creates 4-dimensional blob from series of images. + * @details This is an overloaded member function, provided for convenience. + * It differs from the above function only in what argument(s) it accepts. + */ + CV_EXPORTS void blobFromImages(InputArrayOfArrays images, OutputArray blob, + double scalefactor=1.0, Size size = Size(), + const Scalar& mean = Scalar(), bool swapRB=false, bool crop=false, + int ddepth=CV_32F); + + /** @brief Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure + * (std::vector). + * @param[in] blob_ 4 dimensional array (images, channels, height, width) in floating point precision (CV_32F) from + * which you would like to extract the images. + * @param[out] images_ array of 2D Mat containing the images extracted from the blob in floating point precision + * (CV_32F). They are non normalized neither mean added. The number of returned images equals the first dimension + * of the blob (batch size). Every image has a number of channels equals to the second dimension of the blob (depth). + */ + CV_EXPORTS_W void imagesFromBlob(const cv::Mat& blob_, OutputArrayOfArrays images_); + + /** @brief Convert all weights of Caffe network to half precision floating point. + * @param src Path to origin model from Caffe framework contains single + * precision floating point weights (usually has `.caffemodel` extension). + * @param dst Path to destination model with updated weights. + * @param layersTypes Set of layers types which parameters will be converted. + * By default, converts only Convolutional and Fully-Connected layers' + * weights. + * + * @note Shrinked model has no origin float32 weights so it can't be used + * in origin Caffe framework anymore. However the structure of data + * is taken from NVidia's Caffe fork: https://github.com/NVIDIA/caffe. + * So the resulting model may be used there. + */ + CV_EXPORTS_W void shrinkCaffeModel(const String& src, const String& dst, + const std::vector& layersTypes = std::vector()); + + /** @brief Create a text representation for a binary network stored in protocol buffer format. + * @param[in] model A path to binary network. + * @param[in] output A path to output text file to be created. + * + * @note To reduce output file size, trained weights are not included. + */ + CV_EXPORTS_W void writeTextGraph(const String& model, const String& output); + + /** @brief Performs non maximum suppression given boxes and corresponding scores. + + * @param bboxes a set of bounding boxes to apply NMS. + * @param scores a set of corresponding confidences. + * @param score_threshold a threshold used to filter boxes by score. + * @param nms_threshold a threshold used in non maximum suppression. + * @param indices the kept indices of bboxes after NMS. + * @param eta a coefficient in adaptive threshold formula: \f$nms\_threshold_{i+1}=eta\cdot nms\_threshold_i\f$. + * @param top_k if `>0`, keep at most @p top_k picked indices. + */ + CV_EXPORTS_W void NMSBoxes(const std::vector& bboxes, const std::vector& scores, + const float score_threshold, const float nms_threshold, + CV_OUT std::vector& indices, + const float eta = 1.f, const int top_k = 0); + + CV_EXPORTS_W void NMSBoxes(const std::vector& bboxes, const std::vector& scores, + const float score_threshold, const float nms_threshold, + CV_OUT std::vector& indices, + const float eta = 1.f, const int top_k = 0); + + CV_EXPORTS_AS(NMSBoxesRotated) void NMSBoxes(const std::vector& bboxes, const std::vector& scores, + const float score_threshold, const float nms_threshold, + CV_OUT std::vector& indices, + const float eta = 1.f, const int top_k = 0); + +//! @} +CV__DNN_INLINE_NS_END +} +} + +#include +#include + +/// @deprecated Include this header directly from application. Automatic inclusion will be removed +#include + +#endif /* OPENCV_DNN_DNN_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.inl.hpp new file mode 100644 index 0000000..d6809ce --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/dnn.inl.hpp @@ -0,0 +1,411 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_DNN_INL_HPP +#define OPENCV_DNN_DNN_INL_HPP + +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN + +template +DictValue DictValue::arrayInt(TypeIter begin, int size) +{ + DictValue res(Param::INT, new AutoBuffer(size)); + for (int j = 0; j < size; begin++, j++) + (*res.pi)[j] = *begin; + return res; +} + +template +DictValue DictValue::arrayReal(TypeIter begin, int size) +{ + DictValue res(Param::REAL, new AutoBuffer(size)); + for (int j = 0; j < size; begin++, j++) + (*res.pd)[j] = *begin; + return res; +} + +template +DictValue DictValue::arrayString(TypeIter begin, int size) +{ + DictValue res(Param::STRING, new AutoBuffer(size)); + for (int j = 0; j < size; begin++, j++) + (*res.ps)[j] = *begin; + return res; +} + +template<> +inline DictValue DictValue::get(int idx) const +{ + CV_Assert(idx == -1); + return *this; +} + +template<> +inline int64 DictValue::get(int idx) const +{ + CV_Assert((idx == -1 && size() == 1) || (idx >= 0 && idx < size())); + idx = (idx == -1) ? 0 : idx; + + if (type == Param::INT) + { + return (*pi)[idx]; + } + else if (type == Param::REAL) + { + double doubleValue = (*pd)[idx]; + + double fracpart, intpart; + fracpart = std::modf(doubleValue, &intpart); + CV_Assert(fracpart == 0.0); + + return (int64)doubleValue; + } + else if (type == Param::STRING) + { + return std::atoi((*ps)[idx].c_str()); + } + else + { + CV_Assert(isInt() || isReal() || isString()); + return 0; + } +} + +template<> +inline int DictValue::get(int idx) const +{ + return (int)get(idx); +} + +inline int DictValue::getIntValue(int idx) const +{ + return (int)get(idx); +} + +template<> +inline unsigned DictValue::get(int idx) const +{ + return (unsigned)get(idx); +} + +template<> +inline bool DictValue::get(int idx) const +{ + return (get(idx) != 0); +} + +template<> +inline double DictValue::get(int idx) const +{ + CV_Assert((idx == -1 && size() == 1) || (idx >= 0 && idx < size())); + idx = (idx == -1) ? 0 : idx; + + if (type == Param::REAL) + { + return (*pd)[idx]; + } + else if (type == Param::INT) + { + return (double)(*pi)[idx]; + } + else if (type == Param::STRING) + { + return std::atof((*ps)[idx].c_str()); + } + else + { + CV_Assert(isReal() || isInt() || isString()); + return 0; + } +} + +inline double DictValue::getRealValue(int idx) const +{ + return get(idx); +} + +template<> +inline float DictValue::get(int idx) const +{ + return (float)get(idx); +} + +template<> +inline String DictValue::get(int idx) const +{ + CV_Assert(isString()); + CV_Assert((idx == -1 && ps->size() == 1) || (idx >= 0 && idx < (int)ps->size())); + return (*ps)[(idx == -1) ? 0 : idx]; +} + + +inline String DictValue::getStringValue(int idx) const +{ + return get(idx); +} + +inline void DictValue::release() +{ + switch (type) + { + case Param::INT: + delete pi; + break; + case Param::STRING: + delete ps; + break; + case Param::REAL: + delete pd; + break; + case Param::BOOLEAN: + case Param::MAT: + case Param::MAT_VECTOR: + case Param::ALGORITHM: + case Param::FLOAT: + case Param::UNSIGNED_INT: + case Param::UINT64: + case Param::UCHAR: + case Param::SCALAR: + break; // unhandled + } +} + +inline DictValue::~DictValue() +{ + release(); +} + +inline DictValue & DictValue::operator=(const DictValue &r) +{ + if (&r == this) + return *this; + + if (r.type == Param::INT) + { + AutoBuffer *tmp = new AutoBuffer(*r.pi); + release(); + pi = tmp; + } + else if (r.type == Param::STRING) + { + AutoBuffer *tmp = new AutoBuffer(*r.ps); + release(); + ps = tmp; + } + else if (r.type == Param::REAL) + { + AutoBuffer *tmp = new AutoBuffer(*r.pd); + release(); + pd = tmp; + } + + type = r.type; + + return *this; +} + +inline DictValue::DictValue(const DictValue &r) +{ + type = r.type; + + if (r.type == Param::INT) + pi = new AutoBuffer(*r.pi); + else if (r.type == Param::STRING) + ps = new AutoBuffer(*r.ps); + else if (r.type == Param::REAL) + pd = new AutoBuffer(*r.pd); +} + +inline bool DictValue::isString() const +{ + return (type == Param::STRING); +} + +inline bool DictValue::isInt() const +{ + return (type == Param::INT); +} + +inline bool DictValue::isReal() const +{ + return (type == Param::REAL || type == Param::INT); +} + +inline int DictValue::size() const +{ + switch (type) + { + case Param::INT: + return (int)pi->size(); + case Param::STRING: + return (int)ps->size(); + case Param::REAL: + return (int)pd->size(); + case Param::BOOLEAN: + case Param::MAT: + case Param::MAT_VECTOR: + case Param::ALGORITHM: + case Param::FLOAT: + case Param::UNSIGNED_INT: + case Param::UINT64: + case Param::UCHAR: + case Param::SCALAR: + break; // unhandled + } + CV_Error_(Error::StsInternal, ("Unhandled type (%d)", static_cast(type))); +} + +inline std::ostream &operator<<(std::ostream &stream, const DictValue &dictv) +{ + int i; + + if (dictv.isInt()) + { + for (i = 0; i < dictv.size() - 1; i++) + stream << dictv.get(i) << ", "; + stream << dictv.get(i); + } + else if (dictv.isReal()) + { + for (i = 0; i < dictv.size() - 1; i++) + stream << dictv.get(i) << ", "; + stream << dictv.get(i); + } + else if (dictv.isString()) + { + for (i = 0; i < dictv.size() - 1; i++) + stream << "\"" << dictv.get(i) << "\", "; + stream << dictv.get(i); + } + + return stream; +} + +///////////////////////////////////////////////////////////////// + +inline bool Dict::has(const String &key) const +{ + return dict.count(key) != 0; +} + +inline DictValue *Dict::ptr(const String &key) +{ + _Dict::iterator i = dict.find(key); + return (i == dict.end()) ? NULL : &i->second; +} + +inline const DictValue *Dict::ptr(const String &key) const +{ + _Dict::const_iterator i = dict.find(key); + return (i == dict.end()) ? NULL : &i->second; +} + +inline const DictValue &Dict::get(const String &key) const +{ + _Dict::const_iterator i = dict.find(key); + if (i == dict.end()) + CV_Error(Error::StsObjectNotFound, "Required argument \"" + key + "\" not found into dictionary"); + return i->second; +} + +template +inline T Dict::get(const String &key) const +{ + return this->get(key).get(); +} + +template +inline T Dict::get(const String &key, const T &defaultValue) const +{ + _Dict::const_iterator i = dict.find(key); + + if (i != dict.end()) + return i->second.get(); + else + return defaultValue; +} + +template +inline const T &Dict::set(const String &key, const T &value) +{ + _Dict::iterator i = dict.find(key); + + if (i != dict.end()) + i->second = DictValue(value); + else + dict.insert(std::make_pair(key, DictValue(value))); + + return value; +} + +inline void Dict::erase(const String &key) +{ + dict.erase(key); +} + +inline std::ostream &operator<<(std::ostream &stream, const Dict &dict) +{ + Dict::_Dict::const_iterator it; + for (it = dict.dict.begin(); it != dict.dict.end(); it++) + stream << it->first << " : " << it->second << "\n"; + + return stream; +} + +inline std::map::const_iterator Dict::begin() const +{ + return dict.begin(); +} + +inline std::map::const_iterator Dict::end() const +{ + return dict.end(); +} + +CV__DNN_INLINE_NS_END +} +} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.details.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.details.hpp new file mode 100644 index 0000000..1133da5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.details.hpp @@ -0,0 +1,78 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +#ifndef OPENCV_DNN_LAYER_DETAILS_HPP +#define OPENCV_DNN_LAYER_DETAILS_HPP + +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN + +/** @brief Registers layer constructor in runtime. +* @param type string, containing type name of the layer. +* @param constructorFunc pointer to the function of type LayerRegister::Constructor, which creates the layer. +* @details This macros must be placed inside the function code. +*/ +#define CV_DNN_REGISTER_LAYER_FUNC(type, constructorFunc) \ + cv::dnn::LayerFactory::registerLayer(#type, constructorFunc); + +/** @brief Registers layer class in runtime. + * @param type string, containing type name of the layer. + * @param class C++ class, derived from Layer. + * @details This macros must be placed inside the function code. + */ +#define CV_DNN_REGISTER_LAYER_CLASS(type, class) \ + cv::dnn::LayerFactory::registerLayer(#type, cv::dnn::details::_layerDynamicRegisterer); + +/** @brief Registers layer constructor on module load time. +* @param type string, containing type name of the layer. +* @param constructorFunc pointer to the function of type LayerRegister::Constructor, which creates the layer. +* @details This macros must be placed outside the function code. +*/ +#define CV_DNN_REGISTER_LAYER_FUNC_STATIC(type, constructorFunc) \ +static cv::dnn::details::_LayerStaticRegisterer __LayerStaticRegisterer_##type(#type, constructorFunc); + +/** @brief Registers layer class on module load time. + * @param type string, containing type name of the layer. + * @param class C++ class, derived from Layer. + * @details This macros must be placed outside the function code. + */ +#define CV_DNN_REGISTER_LAYER_CLASS_STATIC(type, class) \ +Ptr __LayerStaticRegisterer_func_##type(LayerParams ¶ms) \ + { return Ptr(new class(params)); } \ +static cv::dnn::details::_LayerStaticRegisterer __LayerStaticRegisterer_##type(#type, __LayerStaticRegisterer_func_##type); + +namespace details { + +template +Ptr _layerDynamicRegisterer(LayerParams ¶ms) +{ + return Ptr(LayerClass::create(params)); +} + +//allows automatically register created layer on module load time +class _LayerStaticRegisterer +{ + String type; +public: + + _LayerStaticRegisterer(const String &layerType, LayerFactory::Constructor layerConstructor) + { + this->type = layerType; + LayerFactory::registerLayer(layerType, layerConstructor); + } + + ~_LayerStaticRegisterer() + { + LayerFactory::unregisterLayer(type); + } +}; + +} // namespace +CV__DNN_INLINE_NS_END +}} // namespace + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.hpp new file mode 100644 index 0000000..8500599 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/layer.hpp @@ -0,0 +1,85 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_LAYER_HPP +#define OPENCV_DNN_LAYER_HPP +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN +//! @addtogroup dnn +//! @{ +//! +//! @defgroup dnnLayerFactory Utilities for New Layers Registration +//! @{ + +/** @brief %Layer factory allows to create instances of registered layers. */ +class CV_EXPORTS LayerFactory +{ +public: + + //! Each Layer class must provide this function to the factory + typedef Ptr(*Constructor)(LayerParams ¶ms); + + //! Registers the layer class with typename @p type and specified @p constructor. Thread-safe. + static void registerLayer(const String &type, Constructor constructor); + + //! Unregisters registered layer with specified type name. Thread-safe. + static void unregisterLayer(const String &type); + + /** @brief Creates instance of registered layer. + * @param type type name of creating layer. + * @param params parameters which will be used for layer initialization. + * @note Thread-safe. + */ + static Ptr createLayerInstance(const String &type, LayerParams& params); + +private: + LayerFactory(); +}; + +//! @} +//! @} +CV__DNN_INLINE_NS_END +} +} +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/shape_utils.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/shape_utils.hpp new file mode 100644 index 0000000..98adcc3 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/shape_utils.hpp @@ -0,0 +1,219 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_DNN_DNN_SHAPE_UTILS_HPP +#define OPENCV_DNN_DNN_SHAPE_UTILS_HPP + +#include +#include // CV_MAX_DIM +#include +#include +#include + +namespace cv { +namespace dnn { +CV__DNN_INLINE_NS_BEGIN + +//Slicing + +struct _Range : public cv::Range +{ + _Range(const Range &r) : cv::Range(r) {} + _Range(int start_, int size_ = 1) : cv::Range(start_, start_ + size_) {} +}; + +static inline Mat slice(const Mat &m, const _Range &r0) +{ + Range ranges[CV_MAX_DIM]; + for (int i = 1; i < m.dims; i++) + ranges[i] = Range::all(); + ranges[0] = r0; + return m(&ranges[0]); +} + +static inline Mat slice(const Mat &m, const _Range &r0, const _Range &r1) +{ + CV_Assert(m.dims >= 2); + Range ranges[CV_MAX_DIM]; + for (int i = 2; i < m.dims; i++) + ranges[i] = Range::all(); + ranges[0] = r0; + ranges[1] = r1; + return m(&ranges[0]); +} + +static inline Mat slice(const Mat &m, const _Range &r0, const _Range &r1, const _Range &r2) +{ + CV_Assert(m.dims >= 3); + Range ranges[CV_MAX_DIM]; + for (int i = 3; i < m.dims; i++) + ranges[i] = Range::all(); + ranges[0] = r0; + ranges[1] = r1; + ranges[2] = r2; + return m(&ranges[0]); +} + +static inline Mat slice(const Mat &m, const _Range &r0, const _Range &r1, const _Range &r2, const _Range &r3) +{ + CV_Assert(m.dims >= 4); + Range ranges[CV_MAX_DIM]; + for (int i = 4; i < m.dims; i++) + ranges[i] = Range::all(); + ranges[0] = r0; + ranges[1] = r1; + ranges[2] = r2; + ranges[3] = r3; + return m(&ranges[0]); +} + +static inline Mat getPlane(const Mat &m, int n, int cn) +{ + CV_Assert(m.dims > 2); + int sz[CV_MAX_DIM]; + for(int i = 2; i < m.dims; i++) + { + sz[i-2] = m.size.p[i]; + } + return Mat(m.dims - 2, sz, m.type(), (void*)m.ptr(n, cn)); +} + +static inline MatShape shape(const int* dims, const int n) +{ + MatShape shape; + shape.assign(dims, dims + n); + return shape; +} + +static inline MatShape shape(const Mat& mat) +{ + return shape(mat.size.p, mat.dims); +} + +static inline MatShape shape(const MatSize& sz) +{ + return shape(sz.p, sz.dims()); +} + +static inline MatShape shape(const UMat& mat) +{ + return shape(mat.size.p, mat.dims); +} + +namespace {inline bool is_neg(int i) { return i < 0; }} + +static inline MatShape shape(int a0, int a1=-1, int a2=-1, int a3=-1) +{ + int dims[] = {a0, a1, a2, a3}; + MatShape s = shape(dims, 4); + s.erase(std::remove_if(s.begin(), s.end(), is_neg), s.end()); + return s; +} + +static inline int total(const MatShape& shape, int start = -1, int end = -1) +{ + if (start == -1) start = 0; + if (end == -1) end = (int)shape.size(); + + if (shape.empty()) + return 0; + + int elems = 1; + CV_Assert(start <= (int)shape.size() && end <= (int)shape.size() && + start <= end); + for(int i = start; i < end; i++) + { + elems *= shape[i]; + } + return elems; +} + +static inline MatShape concat(const MatShape& a, const MatShape& b) +{ + MatShape c = a; + c.insert(c.end(), b.begin(), b.end()); + + return c; +} + +static inline std::string toString(const MatShape& shape, const String& name = "") +{ + std::ostringstream ss; + if (!name.empty()) + ss << name << ' '; + ss << '['; + for(size_t i = 0, n = shape.size(); i < n; ++i) + ss << ' ' << shape[i]; + ss << " ]"; + return ss.str(); +} +static inline void print(const MatShape& shape, const String& name = "") +{ + std::cout << toString(shape, name) << std::endl; +} +static inline std::ostream& operator<<(std::ostream &out, const MatShape& shape) +{ + out << toString(shape); + return out; +} + +inline int clamp(int ax, int dims) +{ + return ax < 0 ? ax + dims : ax; +} + +inline int clamp(int ax, const MatShape& shape) +{ + return clamp(ax, (int)shape.size()); +} + +inline Range clamp(const Range& r, int axisSize) +{ + Range clamped(std::max(r.start, 0), + r.end > 0 ? std::min(r.end, axisSize) : axisSize + r.end + 1); + CV_Assert_N(clamped.start < clamped.end, clamped.end <= axisSize); + return clamped; +} + +CV__DNN_INLINE_NS_END +} +} +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/utils/inference_engine.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/utils/inference_engine.hpp new file mode 100644 index 0000000..564e526 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/utils/inference_engine.hpp @@ -0,0 +1,43 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018-2019, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. + +#ifndef OPENCV_DNN_UTILS_INF_ENGINE_HPP +#define OPENCV_DNN_UTILS_INF_ENGINE_HPP + +#include "../dnn.hpp" + +namespace cv { namespace dnn { +CV__DNN_INLINE_NS_BEGIN + + +/** @brief Release a Myriad device (binded by OpenCV). + * + * Single Myriad device cannot be shared across multiple processes which uses + * Inference Engine's Myriad plugin. + */ +CV_EXPORTS_W void resetMyriadDevice(); + + +/* Values for 'OPENCV_DNN_IE_VPU_TYPE' parameter */ +#define CV_DNN_INFERENCE_ENGINE_VPU_TYPE_UNSPECIFIED "" +/// Intel(R) Movidius(TM) Neural Compute Stick, NCS (USB 03e7:2150), Myriad2 (https://software.intel.com/en-us/movidius-ncs) +#define CV_DNN_INFERENCE_ENGINE_VPU_TYPE_MYRIAD_2 "Myriad2" +/// Intel(R) Neural Compute Stick 2, NCS2 (USB 03e7:2485), MyriadX (https://software.intel.com/ru-ru/neural-compute-stick) +#define CV_DNN_INFERENCE_ENGINE_VPU_TYPE_MYRIAD_X "MyriadX" + + +/** @brief Returns Inference Engine VPU type. + * + * See values of `CV_DNN_INFERENCE_ENGINE_VPU_TYPE_*` macros. + */ +CV_EXPORTS_W cv::String getInferenceEngineVPUType(); + + +CV__DNN_INLINE_NS_END +}} // namespace + +#endif // OPENCV_DNN_UTILS_INF_ENGINE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/dnn/version.hpp b/LaiPuLaser/OpenCV/include/opencv2/dnn/version.hpp new file mode 100644 index 0000000..b14f4f6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/dnn/version.hpp @@ -0,0 +1,21 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_DNN_VERSION_HPP +#define OPENCV_DNN_VERSION_HPP + +/// Use with major OpenCV version only. +#define OPENCV_DNN_API_VERSION 20190122 + +#if !defined CV_DOXYGEN && !defined CV_DNN_DONT_ADD_INLINE_NS +#define CV__DNN_INLINE_NS __CV_CAT(dnn4_v, OPENCV_DNN_API_VERSION) +#define CV__DNN_INLINE_NS_BEGIN namespace CV__DNN_INLINE_NS { +#define CV__DNN_INLINE_NS_END } +namespace cv { namespace dnn { namespace CV__DNN_INLINE_NS { } using namespace CV__DNN_INLINE_NS; }} +#else +#define CV__DNN_INLINE_NS_BEGIN +#define CV__DNN_INLINE_NS_END +#endif + +#endif // OPENCV_DNN_VERSION_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/features2d.hpp b/LaiPuLaser/OpenCV/include/opencv2/features2d.hpp new file mode 100644 index 0000000..c995fbf --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/features2d.hpp @@ -0,0 +1,1451 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_FEATURES_2D_HPP +#define OPENCV_FEATURES_2D_HPP + +#include "opencv2/opencv_modules.hpp" +#include "opencv2/core.hpp" + +#ifdef HAVE_OPENCV_FLANN +#include "opencv2/flann/miniflann.hpp" +#endif + +/** + @defgroup features2d 2D Features Framework + @{ + @defgroup features2d_main Feature Detection and Description + @defgroup features2d_match Descriptor Matchers + +Matchers of keypoint descriptors in OpenCV have wrappers with a common interface that enables you to +easily switch between different algorithms solving the same problem. This section is devoted to +matching descriptors that are represented as vectors in a multidimensional space. All objects that +implement vector descriptor matchers inherit the DescriptorMatcher interface. + +@note + - An example explaining keypoint matching can be found at + opencv_source_code/samples/cpp/descriptor_extractor_matcher.cpp + - An example on descriptor matching evaluation can be found at + opencv_source_code/samples/cpp/detector_descriptor_matcher_evaluation.cpp + - An example on one to many image matching can be found at + opencv_source_code/samples/cpp/matching_to_many_images.cpp + + @defgroup features2d_draw Drawing Function of Keypoints and Matches + @defgroup features2d_category Object Categorization + +This section describes approaches based on local 2D features and used to categorize objects. + +@note + - A complete Bag-Of-Words sample can be found at + opencv_source_code/samples/cpp/bagofwords_classification.cpp + - (Python) An example using the features2D framework to perform object categorization can be + found at opencv_source_code/samples/python/find_obj.py + + @} + */ + +namespace cv +{ + +//! @addtogroup features2d +//! @{ + +// //! writes vector of keypoints to the file storage +// CV_EXPORTS void write(FileStorage& fs, const String& name, const std::vector& keypoints); +// //! reads vector of keypoints from the specified file storage node +// CV_EXPORTS void read(const FileNode& node, CV_OUT std::vector& keypoints); + +/** @brief A class filters a vector of keypoints. + + Because now it is difficult to provide a convenient interface for all usage scenarios of the + keypoints filter class, it has only several needed by now static methods. + */ +class CV_EXPORTS KeyPointsFilter +{ +public: + KeyPointsFilter(){} + + /* + * Remove keypoints within borderPixels of an image edge. + */ + static void runByImageBorder( std::vector& keypoints, Size imageSize, int borderSize ); + /* + * Remove keypoints of sizes out of range. + */ + static void runByKeypointSize( std::vector& keypoints, float minSize, + float maxSize=FLT_MAX ); + /* + * Remove keypoints from some image by mask for pixels of this image. + */ + static void runByPixelsMask( std::vector& keypoints, const Mat& mask ); + /* + * Remove duplicated keypoints. + */ + static void removeDuplicated( std::vector& keypoints ); + /* + * Remove duplicated keypoints and sort the remaining keypoints + */ + static void removeDuplicatedSorted( std::vector& keypoints ); + + /* + * Retain the specified number of the best keypoints (according to the response) + */ + static void retainBest( std::vector& keypoints, int npoints ); +}; + + +/************************************ Base Classes ************************************/ + +/** @brief Abstract base class for 2D image feature detectors and descriptor extractors +*/ +#ifdef __EMSCRIPTEN__ +class CV_EXPORTS_W Feature2D : public Algorithm +#else +class CV_EXPORTS_W Feature2D : public virtual Algorithm +#endif +{ +public: + virtual ~Feature2D(); + + /** @brief Detects keypoints in an image (first variant) or image set (second variant). + + @param image Image. + @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set + of keypoints detected in images[i] . + @param mask Mask specifying where to look for keypoints (optional). It must be a 8-bit integer + matrix with non-zero values in the region of interest. + */ + CV_WRAP virtual void detect( InputArray image, + CV_OUT std::vector& keypoints, + InputArray mask=noArray() ); + + /** @overload + @param images Image set. + @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set + of keypoints detected in images[i] . + @param masks Masks for each input image specifying where to look for keypoints (optional). + masks[i] is a mask for images[i]. + */ + CV_WRAP virtual void detect( InputArrayOfArrays images, + CV_OUT std::vector >& keypoints, + InputArrayOfArrays masks=noArray() ); + + /** @brief Computes the descriptors for a set of keypoints detected in an image (first variant) or image set + (second variant). + + @param image Image. + @param keypoints Input collection of keypoints. Keypoints for which a descriptor cannot be + computed are removed. Sometimes new keypoints can be added, for example: SIFT duplicates keypoint + with several dominant orientations (for each orientation). + @param descriptors Computed descriptors. In the second variant of the method descriptors[i] are + descriptors computed for a keypoints[i]. Row j is the keypoints (or keypoints[i]) is the + descriptor for keypoint j-th keypoint. + */ + CV_WRAP virtual void compute( InputArray image, + CV_OUT CV_IN_OUT std::vector& keypoints, + OutputArray descriptors ); + + /** @overload + + @param images Image set. + @param keypoints Input collection of keypoints. Keypoints for which a descriptor cannot be + computed are removed. Sometimes new keypoints can be added, for example: SIFT duplicates keypoint + with several dominant orientations (for each orientation). + @param descriptors Computed descriptors. In the second variant of the method descriptors[i] are + descriptors computed for a keypoints[i]. Row j is the keypoints (or keypoints[i]) is the + descriptor for keypoint j-th keypoint. + */ + CV_WRAP virtual void compute( InputArrayOfArrays images, + CV_OUT CV_IN_OUT std::vector >& keypoints, + OutputArrayOfArrays descriptors ); + + /** Detects keypoints and computes the descriptors */ + CV_WRAP virtual void detectAndCompute( InputArray image, InputArray mask, + CV_OUT std::vector& keypoints, + OutputArray descriptors, + bool useProvidedKeypoints=false ); + + CV_WRAP virtual int descriptorSize() const; + CV_WRAP virtual int descriptorType() const; + CV_WRAP virtual int defaultNorm() const; + + CV_WRAP void write( const String& fileName ) const; + + CV_WRAP void read( const String& fileName ); + + virtual void write( FileStorage&) const CV_OVERRIDE; + + // see corresponding cv::Algorithm method + CV_WRAP virtual void read( const FileNode&) CV_OVERRIDE; + + //! Return true if detector object is empty + CV_WRAP virtual bool empty() const CV_OVERRIDE; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; + + // see corresponding cv::Algorithm method + CV_WRAP inline void write(const Ptr& fs, const String& name = String()) const { Algorithm::write(fs, name); } +}; + +/** Feature detectors in OpenCV have wrappers with a common interface that enables you to easily switch +between different algorithms solving the same problem. All objects that implement keypoint detectors +inherit the FeatureDetector interface. */ +typedef Feature2D FeatureDetector; + +/** Extractors of keypoint descriptors in OpenCV have wrappers with a common interface that enables you +to easily switch between different algorithms solving the same problem. This section is devoted to +computing descriptors represented as vectors in a multidimensional space. All objects that implement +the vector descriptor extractors inherit the DescriptorExtractor interface. + */ +typedef Feature2D DescriptorExtractor; + +//! @addtogroup features2d_main +//! @{ + +/** @brief Class implementing the BRISK keypoint detector and descriptor extractor, described in @cite LCS11 . + */ +class CV_EXPORTS_W BRISK : public Feature2D +{ +public: + /** @brief The BRISK constructor + + @param thresh AGAST detection threshold score. + @param octaves detection octaves. Use 0 to do single scale. + @param patternScale apply this scale to the pattern used for sampling the neighbourhood of a + keypoint. + */ + CV_WRAP static Ptr create(int thresh=30, int octaves=3, float patternScale=1.0f); + + /** @brief The BRISK constructor for a custom pattern + + @param radiusList defines the radii (in pixels) where the samples around a keypoint are taken (for + keypoint scale 1). + @param numberList defines the number of sampling points on the sampling circle. Must be the same + size as radiusList.. + @param dMax threshold for the short pairings used for descriptor formation (in pixels for keypoint + scale 1). + @param dMin threshold for the long pairings used for orientation determination (in pixels for + keypoint scale 1). + @param indexChange index remapping of the bits. */ + CV_WRAP static Ptr create(const std::vector &radiusList, const std::vector &numberList, + float dMax=5.85f, float dMin=8.2f, const std::vector& indexChange=std::vector()); + + /** @brief The BRISK constructor for a custom pattern, detection threshold and octaves + + @param thresh AGAST detection threshold score. + @param octaves detection octaves. Use 0 to do single scale. + @param radiusList defines the radii (in pixels) where the samples around a keypoint are taken (for + keypoint scale 1). + @param numberList defines the number of sampling points on the sampling circle. Must be the same + size as radiusList.. + @param dMax threshold for the short pairings used for descriptor formation (in pixels for keypoint + scale 1). + @param dMin threshold for the long pairings used for orientation determination (in pixels for + keypoint scale 1). + @param indexChange index remapping of the bits. */ + CV_WRAP static Ptr create(int thresh, int octaves, const std::vector &radiusList, + const std::vector &numberList, float dMax=5.85f, float dMin=8.2f, + const std::vector& indexChange=std::vector()); + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; + + /** @brief Set detection threshold. + @param threshold AGAST detection threshold score. + */ + CV_WRAP virtual void setThreshold(int threshold) { CV_UNUSED(threshold); return; } + CV_WRAP virtual int getThreshold() const { return -1; } + + /** @brief Set detection octaves. + @param octaves detection octaves. Use 0 to do single scale. + */ + CV_WRAP virtual void setOctaves(int octaves) { CV_UNUSED(octaves); return; } + CV_WRAP virtual int getOctaves() const { return -1; } +}; + +/** @brief Class implementing the ORB (*oriented BRIEF*) keypoint detector and descriptor extractor + +described in @cite RRKB11 . The algorithm uses FAST in pyramids to detect stable keypoints, selects +the strongest features using FAST or Harris response, finds their orientation using first-order +moments and computes the descriptors using BRIEF (where the coordinates of random point pairs (or +k-tuples) are rotated according to the measured orientation). + */ +class CV_EXPORTS_W ORB : public Feature2D +{ +public: + enum ScoreType { HARRIS_SCORE=0, FAST_SCORE=1 }; + static const int kBytes = 32; + + /** @brief The ORB constructor + + @param nfeatures The maximum number of features to retain. + @param scaleFactor Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical + pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor + will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor + will mean that to cover certain scale range you will need more pyramid levels and so the speed + will suffer. + @param nlevels The number of pyramid levels. The smallest level will have linear size equal to + input_image_linear_size/pow(scaleFactor, nlevels - firstLevel). + @param edgeThreshold This is size of the border where the features are not detected. It should + roughly match the patchSize parameter. + @param firstLevel The level of pyramid to put source image to. Previous layers are filled + with upscaled source image. + @param WTA_K The number of points that produce each element of the oriented BRIEF descriptor. The + default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, + so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 + random points (of course, those point coordinates are random, but they are generated from the + pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel + rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such + output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, + denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each + bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3). + @param scoreType The default HARRIS_SCORE means that Harris algorithm is used to rank features + (the score is written to KeyPoint::score and is used to retain best nfeatures features); + FAST_SCORE is alternative value of the parameter that produces slightly less stable keypoints, + but it is a little faster to compute. + @param patchSize size of the patch used by the oriented BRIEF descriptor. Of course, on smaller + pyramid layers the perceived image area covered by a feature will be larger. + @param fastThreshold + */ + CV_WRAP static Ptr create(int nfeatures=500, float scaleFactor=1.2f, int nlevels=8, int edgeThreshold=31, + int firstLevel=0, int WTA_K=2, ORB::ScoreType scoreType=ORB::HARRIS_SCORE, int patchSize=31, int fastThreshold=20); + + CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0; + CV_WRAP virtual int getMaxFeatures() const = 0; + + CV_WRAP virtual void setScaleFactor(double scaleFactor) = 0; + CV_WRAP virtual double getScaleFactor() const = 0; + + CV_WRAP virtual void setNLevels(int nlevels) = 0; + CV_WRAP virtual int getNLevels() const = 0; + + CV_WRAP virtual void setEdgeThreshold(int edgeThreshold) = 0; + CV_WRAP virtual int getEdgeThreshold() const = 0; + + CV_WRAP virtual void setFirstLevel(int firstLevel) = 0; + CV_WRAP virtual int getFirstLevel() const = 0; + + CV_WRAP virtual void setWTA_K(int wta_k) = 0; + CV_WRAP virtual int getWTA_K() const = 0; + + CV_WRAP virtual void setScoreType(ORB::ScoreType scoreType) = 0; + CV_WRAP virtual ORB::ScoreType getScoreType() const = 0; + + CV_WRAP virtual void setPatchSize(int patchSize) = 0; + CV_WRAP virtual int getPatchSize() const = 0; + + CV_WRAP virtual void setFastThreshold(int fastThreshold) = 0; + CV_WRAP virtual int getFastThreshold() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +/** @brief Maximally stable extremal region extractor + +The class encapsulates all the parameters of the %MSER extraction algorithm (see [wiki +article](http://en.wikipedia.org/wiki/Maximally_stable_extremal_regions)). + +- there are two different implementation of %MSER: one for grey image, one for color image + +- the grey image algorithm is taken from: @cite nister2008linear ; the paper claims to be faster +than union-find method; it actually get 1.5~2m/s on my centrino L7200 1.2GHz laptop. + +- the color image algorithm is taken from: @cite forssen2007maximally ; it should be much slower +than grey image method ( 3~4 times ); the chi_table.h file is taken directly from paper's source +code which is distributed under GPL. + +- (Python) A complete example showing the use of the %MSER detector can be found at samples/python/mser.py +*/ +class CV_EXPORTS_W MSER : public Feature2D +{ +public: + /** @brief Full consturctor for %MSER detector + + @param _delta it compares \f$(size_{i}-size_{i-delta})/size_{i-delta}\f$ + @param _min_area prune the area which smaller than minArea + @param _max_area prune the area which bigger than maxArea + @param _max_variation prune the area have similar size to its children + @param _min_diversity for color image, trace back to cut off mser with diversity less than min_diversity + @param _max_evolution for color image, the evolution steps + @param _area_threshold for color image, the area threshold to cause re-initialize + @param _min_margin for color image, ignore too small margin + @param _edge_blur_size for color image, the aperture size for edge blur + */ + CV_WRAP static Ptr create( int _delta=5, int _min_area=60, int _max_area=14400, + double _max_variation=0.25, double _min_diversity=.2, + int _max_evolution=200, double _area_threshold=1.01, + double _min_margin=0.003, int _edge_blur_size=5 ); + + /** @brief Detect %MSER regions + + @param image input image (8UC1, 8UC3 or 8UC4, must be greater or equal than 3x3) + @param msers resulting list of point sets + @param bboxes resulting bounding boxes + */ + CV_WRAP virtual void detectRegions( InputArray image, + CV_OUT std::vector >& msers, + CV_OUT std::vector& bboxes ) = 0; + + CV_WRAP virtual void setDelta(int delta) = 0; + CV_WRAP virtual int getDelta() const = 0; + + CV_WRAP virtual void setMinArea(int minArea) = 0; + CV_WRAP virtual int getMinArea() const = 0; + + CV_WRAP virtual void setMaxArea(int maxArea) = 0; + CV_WRAP virtual int getMaxArea() const = 0; + + CV_WRAP virtual void setPass2Only(bool f) = 0; + CV_WRAP virtual bool getPass2Only() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +//! @} features2d_main + +//! @addtogroup features2d_main +//! @{ + +/** @brief Wrapping class for feature detection using the FAST method. : + */ +class CV_EXPORTS_W FastFeatureDetector : public Feature2D +{ +public: + enum DetectorType + { + TYPE_5_8 = 0, TYPE_7_12 = 1, TYPE_9_16 = 2 + }; + enum + { + THRESHOLD = 10000, NONMAX_SUPPRESSION=10001, FAST_N=10002 + }; + + + CV_WRAP static Ptr create( int threshold=10, + bool nonmaxSuppression=true, + FastFeatureDetector::DetectorType type=FastFeatureDetector::TYPE_9_16 ); + + CV_WRAP virtual void setThreshold(int threshold) = 0; + CV_WRAP virtual int getThreshold() const = 0; + + CV_WRAP virtual void setNonmaxSuppression(bool f) = 0; + CV_WRAP virtual bool getNonmaxSuppression() const = 0; + + CV_WRAP virtual void setType(FastFeatureDetector::DetectorType type) = 0; + CV_WRAP virtual FastFeatureDetector::DetectorType getType() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +/** @overload */ +CV_EXPORTS void FAST( InputArray image, CV_OUT std::vector& keypoints, + int threshold, bool nonmaxSuppression=true ); + +/** @brief Detects corners using the FAST algorithm + +@param image grayscale image where keypoints (corners) are detected. +@param keypoints keypoints detected on the image. +@param threshold threshold on difference between intensity of the central pixel and pixels of a +circle around this pixel. +@param nonmaxSuppression if true, non-maximum suppression is applied to detected corners +(keypoints). +@param type one of the three neighborhoods as defined in the paper: +FastFeatureDetector::TYPE_9_16, FastFeatureDetector::TYPE_7_12, +FastFeatureDetector::TYPE_5_8 + +Detects corners using the FAST algorithm by @cite Rosten06 . + +@note In Python API, types are given as cv.FAST_FEATURE_DETECTOR_TYPE_5_8, +cv.FAST_FEATURE_DETECTOR_TYPE_7_12 and cv.FAST_FEATURE_DETECTOR_TYPE_9_16. For corner +detection, use cv.FAST.detect() method. + */ +CV_EXPORTS void FAST( InputArray image, CV_OUT std::vector& keypoints, + int threshold, bool nonmaxSuppression, FastFeatureDetector::DetectorType type ); + +//! @} features2d_main + +//! @addtogroup features2d_main +//! @{ + +/** @brief Wrapping class for feature detection using the AGAST method. : + */ +class CV_EXPORTS_W AgastFeatureDetector : public Feature2D +{ +public: + enum DetectorType + { + AGAST_5_8 = 0, AGAST_7_12d = 1, AGAST_7_12s = 2, OAST_9_16 = 3, + }; + + enum + { + THRESHOLD = 10000, NONMAX_SUPPRESSION = 10001, + }; + + CV_WRAP static Ptr create( int threshold=10, + bool nonmaxSuppression=true, + AgastFeatureDetector::DetectorType type = AgastFeatureDetector::OAST_9_16); + + CV_WRAP virtual void setThreshold(int threshold) = 0; + CV_WRAP virtual int getThreshold() const = 0; + + CV_WRAP virtual void setNonmaxSuppression(bool f) = 0; + CV_WRAP virtual bool getNonmaxSuppression() const = 0; + + CV_WRAP virtual void setType(AgastFeatureDetector::DetectorType type) = 0; + CV_WRAP virtual AgastFeatureDetector::DetectorType getType() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +/** @overload */ +CV_EXPORTS void AGAST( InputArray image, CV_OUT std::vector& keypoints, + int threshold, bool nonmaxSuppression=true ); + +/** @brief Detects corners using the AGAST algorithm + +@param image grayscale image where keypoints (corners) are detected. +@param keypoints keypoints detected on the image. +@param threshold threshold on difference between intensity of the central pixel and pixels of a +circle around this pixel. +@param nonmaxSuppression if true, non-maximum suppression is applied to detected corners +(keypoints). +@param type one of the four neighborhoods as defined in the paper: +AgastFeatureDetector::AGAST_5_8, AgastFeatureDetector::AGAST_7_12d, +AgastFeatureDetector::AGAST_7_12s, AgastFeatureDetector::OAST_9_16 + +For non-Intel platforms, there is a tree optimised variant of AGAST with same numerical results. +The 32-bit binary tree tables were generated automatically from original code using perl script. +The perl script and examples of tree generation are placed in features2d/doc folder. +Detects corners using the AGAST algorithm by @cite mair2010_agast . + + */ +CV_EXPORTS void AGAST( InputArray image, CV_OUT std::vector& keypoints, + int threshold, bool nonmaxSuppression, AgastFeatureDetector::DetectorType type ); + +/** @brief Wrapping class for feature detection using the goodFeaturesToTrack function. : + */ +class CV_EXPORTS_W GFTTDetector : public Feature2D +{ +public: + CV_WRAP static Ptr create( int maxCorners=1000, double qualityLevel=0.01, double minDistance=1, + int blockSize=3, bool useHarrisDetector=false, double k=0.04 ); + CV_WRAP static Ptr create( int maxCorners, double qualityLevel, double minDistance, + int blockSize, int gradiantSize, bool useHarrisDetector=false, double k=0.04 ); + CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0; + CV_WRAP virtual int getMaxFeatures() const = 0; + + CV_WRAP virtual void setQualityLevel(double qlevel) = 0; + CV_WRAP virtual double getQualityLevel() const = 0; + + CV_WRAP virtual void setMinDistance(double minDistance) = 0; + CV_WRAP virtual double getMinDistance() const = 0; + + CV_WRAP virtual void setBlockSize(int blockSize) = 0; + CV_WRAP virtual int getBlockSize() const = 0; + + CV_WRAP virtual void setHarrisDetector(bool val) = 0; + CV_WRAP virtual bool getHarrisDetector() const = 0; + + CV_WRAP virtual void setK(double k) = 0; + CV_WRAP virtual double getK() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +/** @brief Class for extracting blobs from an image. : + +The class implements a simple algorithm for extracting blobs from an image: + +1. Convert the source image to binary images by applying thresholding with several thresholds from + minThreshold (inclusive) to maxThreshold (exclusive) with distance thresholdStep between + neighboring thresholds. +2. Extract connected components from every binary image by findContours and calculate their + centers. +3. Group centers from several binary images by their coordinates. Close centers form one group that + corresponds to one blob, which is controlled by the minDistBetweenBlobs parameter. +4. From the groups, estimate final centers of blobs and their radiuses and return as locations and + sizes of keypoints. + +This class performs several filtrations of returned blobs. You should set filterBy\* to true/false +to turn on/off corresponding filtration. Available filtrations: + +- **By color**. This filter compares the intensity of a binary image at the center of a blob to +blobColor. If they differ, the blob is filtered out. Use blobColor = 0 to extract dark blobs +and blobColor = 255 to extract light blobs. +- **By area**. Extracted blobs have an area between minArea (inclusive) and maxArea (exclusive). +- **By circularity**. Extracted blobs have circularity +(\f$\frac{4*\pi*Area}{perimeter * perimeter}\f$) between minCircularity (inclusive) and +maxCircularity (exclusive). +- **By ratio of the minimum inertia to maximum inertia**. Extracted blobs have this ratio +between minInertiaRatio (inclusive) and maxInertiaRatio (exclusive). +- **By convexity**. Extracted blobs have convexity (area / area of blob convex hull) between +minConvexity (inclusive) and maxConvexity (exclusive). + +Default values of parameters are tuned to extract dark circular blobs. + */ +class CV_EXPORTS_W SimpleBlobDetector : public Feature2D +{ +public: + struct CV_EXPORTS_W_SIMPLE Params + { + CV_WRAP Params(); + CV_PROP_RW float thresholdStep; + CV_PROP_RW float minThreshold; + CV_PROP_RW float maxThreshold; + CV_PROP_RW size_t minRepeatability; + CV_PROP_RW float minDistBetweenBlobs; + + CV_PROP_RW bool filterByColor; + CV_PROP_RW uchar blobColor; + + CV_PROP_RW bool filterByArea; + CV_PROP_RW float minArea, maxArea; + + CV_PROP_RW bool filterByCircularity; + CV_PROP_RW float minCircularity, maxCircularity; + + CV_PROP_RW bool filterByInertia; + CV_PROP_RW float minInertiaRatio, maxInertiaRatio; + + CV_PROP_RW bool filterByConvexity; + CV_PROP_RW float minConvexity, maxConvexity; + + void read( const FileNode& fn ); + void write( FileStorage& fs ) const; + }; + + CV_WRAP static Ptr + create(const SimpleBlobDetector::Params ¶meters = SimpleBlobDetector::Params()); + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +//! @} features2d_main + +//! @addtogroup features2d_main +//! @{ + +/** @brief Class implementing the KAZE keypoint detector and descriptor extractor, described in @cite ABD12 . + +@note AKAZE descriptor can only be used with KAZE or AKAZE keypoints .. [ABD12] KAZE Features. Pablo +F. Alcantarilla, Adrien Bartoli and Andrew J. Davison. In European Conference on Computer Vision +(ECCV), Fiorenze, Italy, October 2012. +*/ +class CV_EXPORTS_W KAZE : public Feature2D +{ +public: + enum DiffusivityType + { + DIFF_PM_G1 = 0, + DIFF_PM_G2 = 1, + DIFF_WEICKERT = 2, + DIFF_CHARBONNIER = 3 + }; + + /** @brief The KAZE constructor + + @param extended Set to enable extraction of extended (128-byte) descriptor. + @param upright Set to enable use of upright descriptors (non rotation-invariant). + @param threshold Detector response threshold to accept point + @param nOctaves Maximum octave evolution of the image + @param nOctaveLayers Default number of sublevels per scale level + @param diffusivity Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or + DIFF_CHARBONNIER + */ + CV_WRAP static Ptr create(bool extended=false, bool upright=false, + float threshold = 0.001f, + int nOctaves = 4, int nOctaveLayers = 4, + KAZE::DiffusivityType diffusivity = KAZE::DIFF_PM_G2); + + CV_WRAP virtual void setExtended(bool extended) = 0; + CV_WRAP virtual bool getExtended() const = 0; + + CV_WRAP virtual void setUpright(bool upright) = 0; + CV_WRAP virtual bool getUpright() const = 0; + + CV_WRAP virtual void setThreshold(double threshold) = 0; + CV_WRAP virtual double getThreshold() const = 0; + + CV_WRAP virtual void setNOctaves(int octaves) = 0; + CV_WRAP virtual int getNOctaves() const = 0; + + CV_WRAP virtual void setNOctaveLayers(int octaveLayers) = 0; + CV_WRAP virtual int getNOctaveLayers() const = 0; + + CV_WRAP virtual void setDiffusivity(KAZE::DiffusivityType diff) = 0; + CV_WRAP virtual KAZE::DiffusivityType getDiffusivity() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +/** @brief Class implementing the AKAZE keypoint detector and descriptor extractor, described in @cite ANB13. + +@details AKAZE descriptors can only be used with KAZE or AKAZE keypoints. This class is thread-safe. + +@note When you need descriptors use Feature2D::detectAndCompute, which +provides better performance. When using Feature2D::detect followed by +Feature2D::compute scale space pyramid is computed twice. + +@note AKAZE implements T-API. When image is passed as UMat some parts of the algorithm +will use OpenCL. + +@note [ANB13] Fast Explicit Diffusion for Accelerated Features in Nonlinear +Scale Spaces. Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli. In +British Machine Vision Conference (BMVC), Bristol, UK, September 2013. + +*/ +class CV_EXPORTS_W AKAZE : public Feature2D +{ +public: + // AKAZE descriptor type + enum DescriptorType + { + DESCRIPTOR_KAZE_UPRIGHT = 2, ///< Upright descriptors, not invariant to rotation + DESCRIPTOR_KAZE = 3, + DESCRIPTOR_MLDB_UPRIGHT = 4, ///< Upright descriptors, not invariant to rotation + DESCRIPTOR_MLDB = 5 + }; + + /** @brief The AKAZE constructor + + @param descriptor_type Type of the extracted descriptor: DESCRIPTOR_KAZE, + DESCRIPTOR_KAZE_UPRIGHT, DESCRIPTOR_MLDB or DESCRIPTOR_MLDB_UPRIGHT. + @param descriptor_size Size of the descriptor in bits. 0 -\> Full size + @param descriptor_channels Number of channels in the descriptor (1, 2, 3) + @param threshold Detector response threshold to accept point + @param nOctaves Maximum octave evolution of the image + @param nOctaveLayers Default number of sublevels per scale level + @param diffusivity Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or + DIFF_CHARBONNIER + */ + CV_WRAP static Ptr create(AKAZE::DescriptorType descriptor_type = AKAZE::DESCRIPTOR_MLDB, + int descriptor_size = 0, int descriptor_channels = 3, + float threshold = 0.001f, int nOctaves = 4, + int nOctaveLayers = 4, KAZE::DiffusivityType diffusivity = KAZE::DIFF_PM_G2); + + CV_WRAP virtual void setDescriptorType(AKAZE::DescriptorType dtype) = 0; + CV_WRAP virtual AKAZE::DescriptorType getDescriptorType() const = 0; + + CV_WRAP virtual void setDescriptorSize(int dsize) = 0; + CV_WRAP virtual int getDescriptorSize() const = 0; + + CV_WRAP virtual void setDescriptorChannels(int dch) = 0; + CV_WRAP virtual int getDescriptorChannels() const = 0; + + CV_WRAP virtual void setThreshold(double threshold) = 0; + CV_WRAP virtual double getThreshold() const = 0; + + CV_WRAP virtual void setNOctaves(int octaves) = 0; + CV_WRAP virtual int getNOctaves() const = 0; + + CV_WRAP virtual void setNOctaveLayers(int octaveLayers) = 0; + CV_WRAP virtual int getNOctaveLayers() const = 0; + + CV_WRAP virtual void setDiffusivity(KAZE::DiffusivityType diff) = 0; + CV_WRAP virtual KAZE::DiffusivityType getDiffusivity() const = 0; + CV_WRAP virtual String getDefaultName() const CV_OVERRIDE; +}; + +//! @} features2d_main + +/****************************************************************************************\ +* Distance * +\****************************************************************************************/ + +template +struct CV_EXPORTS Accumulator +{ + typedef T Type; +}; + +template<> struct Accumulator { typedef float Type; }; +template<> struct Accumulator { typedef float Type; }; +template<> struct Accumulator { typedef float Type; }; +template<> struct Accumulator { typedef float Type; }; + +/* + * Squared Euclidean distance functor + */ +template +struct CV_EXPORTS SL2 +{ + static const NormTypes normType = NORM_L2SQR; + typedef T ValueType; + typedef typename Accumulator::Type ResultType; + + ResultType operator()( const T* a, const T* b, int size ) const + { + return normL2Sqr(a, b, size); + } +}; + +/* + * Euclidean distance functor + */ +template +struct L2 +{ + static const NormTypes normType = NORM_L2; + typedef T ValueType; + typedef typename Accumulator::Type ResultType; + + ResultType operator()( const T* a, const T* b, int size ) const + { + return (ResultType)std::sqrt((double)normL2Sqr(a, b, size)); + } +}; + +/* + * Manhattan distance (city block distance) functor + */ +template +struct L1 +{ + static const NormTypes normType = NORM_L1; + typedef T ValueType; + typedef typename Accumulator::Type ResultType; + + ResultType operator()( const T* a, const T* b, int size ) const + { + return normL1(a, b, size); + } +}; + +/****************************************************************************************\ +* DescriptorMatcher * +\****************************************************************************************/ + +//! @addtogroup features2d_match +//! @{ + +/** @brief Abstract base class for matching keypoint descriptors. + +It has two groups of match methods: for matching descriptors of an image with another image or with +an image set. + */ +class CV_EXPORTS_W DescriptorMatcher : public Algorithm +{ +public: + enum MatcherType + { + FLANNBASED = 1, + BRUTEFORCE = 2, + BRUTEFORCE_L1 = 3, + BRUTEFORCE_HAMMING = 4, + BRUTEFORCE_HAMMINGLUT = 5, + BRUTEFORCE_SL2 = 6 + }; + + virtual ~DescriptorMatcher(); + + /** @brief Adds descriptors to train a CPU(trainDescCollectionis) or GPU(utrainDescCollectionis) descriptor + collection. + + If the collection is not empty, the new descriptors are added to existing train descriptors. + + @param descriptors Descriptors to add. Each descriptors[i] is a set of descriptors from the same + train image. + */ + CV_WRAP virtual void add( InputArrayOfArrays descriptors ); + + /** @brief Returns a constant link to the train descriptor collection trainDescCollection . + */ + CV_WRAP const std::vector& getTrainDescriptors() const; + + /** @brief Clears the train descriptor collections. + */ + CV_WRAP virtual void clear() CV_OVERRIDE; + + /** @brief Returns true if there are no train descriptors in the both collections. + */ + CV_WRAP virtual bool empty() const CV_OVERRIDE; + + /** @brief Returns true if the descriptor matcher supports masking permissible matches. + */ + CV_WRAP virtual bool isMaskSupported() const = 0; + + /** @brief Trains a descriptor matcher + + Trains a descriptor matcher (for example, the flann index). In all methods to match, the method + train() is run every time before matching. Some descriptor matchers (for example, BruteForceMatcher) + have an empty implementation of this method. Other matchers really train their inner structures (for + example, FlannBasedMatcher trains flann::Index ). + */ + CV_WRAP virtual void train(); + + /** @brief Finds the best match for each descriptor from a query set. + + @param queryDescriptors Query set of descriptors. + @param trainDescriptors Train set of descriptors. This set is not added to the train descriptors + collection stored in the class object. + @param matches Matches. If a query descriptor is masked out in mask , no match is added for this + descriptor. So, matches size may be smaller than the query descriptors count. + @param mask Mask specifying permissible matches between an input query and train matrices of + descriptors. + + In the first variant of this method, the train descriptors are passed as an input argument. In the + second variant of the method, train descriptors collection that was set by DescriptorMatcher::add is + used. Optional mask (or masks) can be passed to specify which query and training descriptors can be + matched. Namely, queryDescriptors[i] can be matched with trainDescriptors[j] only if + mask.at\(i,j) is non-zero. + */ + CV_WRAP void match( InputArray queryDescriptors, InputArray trainDescriptors, + CV_OUT std::vector& matches, InputArray mask=noArray() ) const; + + /** @brief Finds the k best matches for each descriptor from a query set. + + @param queryDescriptors Query set of descriptors. + @param trainDescriptors Train set of descriptors. This set is not added to the train descriptors + collection stored in the class object. + @param mask Mask specifying permissible matches between an input query and train matrices of + descriptors. + @param matches Matches. Each matches[i] is k or less matches for the same query descriptor. + @param k Count of best matches found per each query descriptor or less if a query descriptor has + less than k possible matches in total. + @param compactResult Parameter used when the mask (or masks) is not empty. If compactResult is + false, the matches vector has the same size as queryDescriptors rows. If compactResult is true, + the matches vector does not contain matches for fully masked-out query descriptors. + + These extended variants of DescriptorMatcher::match methods find several best matches for each query + descriptor. The matches are returned in the distance increasing order. See DescriptorMatcher::match + for the details about query and train descriptors. + */ + CV_WRAP void knnMatch( InputArray queryDescriptors, InputArray trainDescriptors, + CV_OUT std::vector >& matches, int k, + InputArray mask=noArray(), bool compactResult=false ) const; + + /** @brief For each query descriptor, finds the training descriptors not farther than the specified distance. + + @param queryDescriptors Query set of descriptors. + @param trainDescriptors Train set of descriptors. This set is not added to the train descriptors + collection stored in the class object. + @param matches Found matches. + @param compactResult Parameter used when the mask (or masks) is not empty. If compactResult is + false, the matches vector has the same size as queryDescriptors rows. If compactResult is true, + the matches vector does not contain matches for fully masked-out query descriptors. + @param maxDistance Threshold for the distance between matched descriptors. Distance means here + metric distance (e.g. Hamming distance), not the distance between coordinates (which is measured + in Pixels)! + @param mask Mask specifying permissible matches between an input query and train matrices of + descriptors. + + For each query descriptor, the methods find such training descriptors that the distance between the + query descriptor and the training descriptor is equal or smaller than maxDistance. Found matches are + returned in the distance increasing order. + */ + CV_WRAP void radiusMatch( InputArray queryDescriptors, InputArray trainDescriptors, + CV_OUT std::vector >& matches, float maxDistance, + InputArray mask=noArray(), bool compactResult=false ) const; + + /** @overload + @param queryDescriptors Query set of descriptors. + @param matches Matches. If a query descriptor is masked out in mask , no match is added for this + descriptor. So, matches size may be smaller than the query descriptors count. + @param masks Set of masks. Each masks[i] specifies permissible matches between the input query + descriptors and stored train descriptors from the i-th image trainDescCollection[i]. + */ + CV_WRAP void match( InputArray queryDescriptors, CV_OUT std::vector& matches, + InputArrayOfArrays masks=noArray() ); + /** @overload + @param queryDescriptors Query set of descriptors. + @param matches Matches. Each matches[i] is k or less matches for the same query descriptor. + @param k Count of best matches found per each query descriptor or less if a query descriptor has + less than k possible matches in total. + @param masks Set of masks. Each masks[i] specifies permissible matches between the input query + descriptors and stored train descriptors from the i-th image trainDescCollection[i]. + @param compactResult Parameter used when the mask (or masks) is not empty. If compactResult is + false, the matches vector has the same size as queryDescriptors rows. If compactResult is true, + the matches vector does not contain matches for fully masked-out query descriptors. + */ + CV_WRAP void knnMatch( InputArray queryDescriptors, CV_OUT std::vector >& matches, int k, + InputArrayOfArrays masks=noArray(), bool compactResult=false ); + /** @overload + @param queryDescriptors Query set of descriptors. + @param matches Found matches. + @param maxDistance Threshold for the distance between matched descriptors. Distance means here + metric distance (e.g. Hamming distance), not the distance between coordinates (which is measured + in Pixels)! + @param masks Set of masks. Each masks[i] specifies permissible matches between the input query + descriptors and stored train descriptors from the i-th image trainDescCollection[i]. + @param compactResult Parameter used when the mask (or masks) is not empty. If compactResult is + false, the matches vector has the same size as queryDescriptors rows. If compactResult is true, + the matches vector does not contain matches for fully masked-out query descriptors. + */ + CV_WRAP void radiusMatch( InputArray queryDescriptors, CV_OUT std::vector >& matches, float maxDistance, + InputArrayOfArrays masks=noArray(), bool compactResult=false ); + + + CV_WRAP void write( const String& fileName ) const + { + FileStorage fs(fileName, FileStorage::WRITE); + write(fs); + } + + CV_WRAP void read( const String& fileName ) + { + FileStorage fs(fileName, FileStorage::READ); + read(fs.root()); + } + // Reads matcher object from a file node + // see corresponding cv::Algorithm method + CV_WRAP virtual void read( const FileNode& ) CV_OVERRIDE; + // Writes matcher object to a file storage + virtual void write( FileStorage& ) const CV_OVERRIDE; + + /** @brief Clones the matcher. + + @param emptyTrainData If emptyTrainData is false, the method creates a deep copy of the object, + that is, copies both parameters and train data. If emptyTrainData is true, the method creates an + object copy with the current parameters but with empty train data. + */ + CV_WRAP virtual Ptr clone( bool emptyTrainData=false ) const = 0; + + /** @brief Creates a descriptor matcher of a given type with the default parameters (using default + constructor). + + @param descriptorMatcherType Descriptor matcher type. Now the following matcher types are + supported: + - `BruteForce` (it uses L2 ) + - `BruteForce-L1` + - `BruteForce-Hamming` + - `BruteForce-Hamming(2)` + - `FlannBased` + */ + CV_WRAP static Ptr create( const String& descriptorMatcherType ); + + CV_WRAP static Ptr create( const DescriptorMatcher::MatcherType& matcherType ); + + + // see corresponding cv::Algorithm method + CV_WRAP inline void write(const Ptr& fs, const String& name = String()) const { Algorithm::write(fs, name); } + +protected: + /** + * Class to work with descriptors from several images as with one merged matrix. + * It is used e.g. in FlannBasedMatcher. + */ + class CV_EXPORTS DescriptorCollection + { + public: + DescriptorCollection(); + DescriptorCollection( const DescriptorCollection& collection ); + virtual ~DescriptorCollection(); + + // Vector of matrices "descriptors" will be merged to one matrix "mergedDescriptors" here. + void set( const std::vector& descriptors ); + virtual void clear(); + + const Mat& getDescriptors() const; + const Mat getDescriptor( int imgIdx, int localDescIdx ) const; + const Mat getDescriptor( int globalDescIdx ) const; + void getLocalIdx( int globalDescIdx, int& imgIdx, int& localDescIdx ) const; + + int size() const; + + protected: + Mat mergedDescriptors; + std::vector startIdxs; + }; + + //! In fact the matching is implemented only by the following two methods. These methods suppose + //! that the class object has been trained already. Public match methods call these methods + //! after calling train(). + virtual void knnMatchImpl( InputArray queryDescriptors, std::vector >& matches, int k, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) = 0; + virtual void radiusMatchImpl( InputArray queryDescriptors, std::vector >& matches, float maxDistance, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) = 0; + + static bool isPossibleMatch( InputArray mask, int queryIdx, int trainIdx ); + static bool isMaskedOut( InputArrayOfArrays masks, int queryIdx ); + + static Mat clone_op( Mat m ) { return m.clone(); } + void checkMasks( InputArrayOfArrays masks, int queryDescriptorsCount ) const; + + //! Collection of descriptors from train images. + std::vector trainDescCollection; + std::vector utrainDescCollection; +}; + +/** @brief Brute-force descriptor matcher. + +For each descriptor in the first set, this matcher finds the closest descriptor in the second set +by trying each one. This descriptor matcher supports masking permissible matches of descriptor +sets. + */ +class CV_EXPORTS_W BFMatcher : public DescriptorMatcher +{ +public: + /** @brief Brute-force matcher constructor (obsolete). Please use BFMatcher.create() + * + * + */ + CV_WRAP BFMatcher( int normType=NORM_L2, bool crossCheck=false ); + + virtual ~BFMatcher() {} + + virtual bool isMaskSupported() const CV_OVERRIDE { return true; } + + /** @brief Brute-force matcher create method. + @param normType One of NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2. L1 and L2 norms are + preferable choices for SIFT and SURF descriptors, NORM_HAMMING should be used with ORB, BRISK and + BRIEF, NORM_HAMMING2 should be used with ORB when WTA_K==3 or 4 (see ORB::ORB constructor + description). + @param crossCheck If it is false, this is will be default BFMatcher behaviour when it finds the k + nearest neighbors for each query descriptor. If crossCheck==true, then the knnMatch() method with + k=1 will only return pairs (i,j) such that for i-th query descriptor the j-th descriptor in the + matcher's collection is the nearest and vice versa, i.e. the BFMatcher will only return consistent + pairs. Such technique usually produces best results with minimal number of outliers when there are + enough matches. This is alternative to the ratio test, used by D. Lowe in SIFT paper. + */ + CV_WRAP static Ptr create( int normType=NORM_L2, bool crossCheck=false ) ; + + virtual Ptr clone( bool emptyTrainData=false ) const CV_OVERRIDE; +protected: + virtual void knnMatchImpl( InputArray queryDescriptors, std::vector >& matches, int k, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) CV_OVERRIDE; + virtual void radiusMatchImpl( InputArray queryDescriptors, std::vector >& matches, float maxDistance, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) CV_OVERRIDE; + + int normType; + bool crossCheck; +}; + +#if defined(HAVE_OPENCV_FLANN) || defined(CV_DOXYGEN) + +/** @brief Flann-based descriptor matcher. + +This matcher trains cv::flann::Index on a train descriptor collection and calls its nearest search +methods to find the best matches. So, this matcher may be faster when matching a large train +collection than the brute force matcher. FlannBasedMatcher does not support masking permissible +matches of descriptor sets because flann::Index does not support this. : + */ +class CV_EXPORTS_W FlannBasedMatcher : public DescriptorMatcher +{ +public: + CV_WRAP FlannBasedMatcher( const Ptr& indexParams=makePtr(), + const Ptr& searchParams=makePtr() ); + + virtual void add( InputArrayOfArrays descriptors ) CV_OVERRIDE; + virtual void clear() CV_OVERRIDE; + + // Reads matcher object from a file node + virtual void read( const FileNode& ) CV_OVERRIDE; + // Writes matcher object to a file storage + virtual void write( FileStorage& ) const CV_OVERRIDE; + + virtual void train() CV_OVERRIDE; + virtual bool isMaskSupported() const CV_OVERRIDE; + + CV_WRAP static Ptr create(); + + virtual Ptr clone( bool emptyTrainData=false ) const CV_OVERRIDE; +protected: + static void convertToDMatches( const DescriptorCollection& descriptors, + const Mat& indices, const Mat& distances, + std::vector >& matches ); + + virtual void knnMatchImpl( InputArray queryDescriptors, std::vector >& matches, int k, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) CV_OVERRIDE; + virtual void radiusMatchImpl( InputArray queryDescriptors, std::vector >& matches, float maxDistance, + InputArrayOfArrays masks=noArray(), bool compactResult=false ) CV_OVERRIDE; + + Ptr indexParams; + Ptr searchParams; + Ptr flannIndex; + + DescriptorCollection mergedDescriptors; + int addedDescCount; +}; + +#endif + +//! @} features2d_match + +/****************************************************************************************\ +* Drawing functions * +\****************************************************************************************/ + +//! @addtogroup features2d_draw +//! @{ + +enum struct DrawMatchesFlags +{ + DEFAULT = 0, //!< Output image matrix will be created (Mat::create), + //!< i.e. existing memory of output image may be reused. + //!< Two source image, matches and single keypoints will be drawn. + //!< For each keypoint only the center point will be drawn (without + //!< the circle around keypoint with keypoint size and orientation). + DRAW_OVER_OUTIMG = 1, //!< Output image matrix will not be created (Mat::create). + //!< Matches will be drawn on existing content of output image. + NOT_DRAW_SINGLE_POINTS = 2, //!< Single keypoints will not be drawn. + DRAW_RICH_KEYPOINTS = 4 //!< For each keypoint the circle around keypoint with keypoint size and + //!< orientation will be drawn. +}; +CV_ENUM_FLAGS(DrawMatchesFlags) + +/** @brief Draws keypoints. + +@param image Source image. +@param keypoints Keypoints from the source image. +@param outImage Output image. Its content depends on the flags value defining what is drawn in the +output image. See possible flags bit values below. +@param color Color of keypoints. +@param flags Flags setting drawing features. Possible flags bit values are defined by +DrawMatchesFlags. See details above in drawMatches . + +@note +For Python API, flags are modified as cv.DRAW_MATCHES_FLAGS_DEFAULT, +cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, cv.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG, +cv.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS + */ +CV_EXPORTS_W void drawKeypoints( InputArray image, const std::vector& keypoints, InputOutputArray outImage, + const Scalar& color=Scalar::all(-1), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT ); + +/** @brief Draws the found matches of keypoints from two images. + +@param img1 First source image. +@param keypoints1 Keypoints from the first source image. +@param img2 Second source image. +@param keypoints2 Keypoints from the second source image. +@param matches1to2 Matches from the first image to the second one, which means that keypoints1[i] +has a corresponding point in keypoints2[matches[i]] . +@param outImg Output image. Its content depends on the flags value defining what is drawn in the +output image. See possible flags bit values below. +@param matchColor Color of matches (lines and connected keypoints). If matchColor==Scalar::all(-1) +, the color is generated randomly. +@param singlePointColor Color of single keypoints (circles), which means that keypoints do not +have the matches. If singlePointColor==Scalar::all(-1) , the color is generated randomly. +@param matchesMask Mask determining which matches are drawn. If the mask is empty, all matches are +drawn. +@param flags Flags setting drawing features. Possible flags bit values are defined by +DrawMatchesFlags. + +This function draws matches of keypoints from two images in the output image. Match is a line +connecting two keypoints (circles). See cv::DrawMatchesFlags. + */ +CV_EXPORTS_W void drawMatches( InputArray img1, const std::vector& keypoints1, + InputArray img2, const std::vector& keypoints2, + const std::vector& matches1to2, InputOutputArray outImg, + const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1), + const std::vector& matchesMask=std::vector(), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT ); + +/** @overload */ +CV_EXPORTS_AS(drawMatchesKnn) void drawMatches( InputArray img1, const std::vector& keypoints1, + InputArray img2, const std::vector& keypoints2, + const std::vector >& matches1to2, InputOutputArray outImg, + const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1), + const std::vector >& matchesMask=std::vector >(), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT ); + +//! @} features2d_draw + +/****************************************************************************************\ +* Functions to evaluate the feature detectors and [generic] descriptor extractors * +\****************************************************************************************/ + +CV_EXPORTS void evaluateFeatureDetector( const Mat& img1, const Mat& img2, const Mat& H1to2, + std::vector* keypoints1, std::vector* keypoints2, + float& repeatability, int& correspCount, + const Ptr& fdetector=Ptr() ); + +CV_EXPORTS void computeRecallPrecisionCurve( const std::vector >& matches1to2, + const std::vector >& correctMatches1to2Mask, + std::vector& recallPrecisionCurve ); + +CV_EXPORTS float getRecall( const std::vector& recallPrecisionCurve, float l_precision ); +CV_EXPORTS int getNearestPoint( const std::vector& recallPrecisionCurve, float l_precision ); + +/****************************************************************************************\ +* Bag of visual words * +\****************************************************************************************/ + +//! @addtogroup features2d_category +//! @{ + +/** @brief Abstract base class for training the *bag of visual words* vocabulary from a set of descriptors. + +For details, see, for example, *Visual Categorization with Bags of Keypoints* by Gabriella Csurka, +Christopher R. Dance, Lixin Fan, Jutta Willamowski, Cedric Bray, 2004. : + */ +class CV_EXPORTS_W BOWTrainer +{ +public: + BOWTrainer(); + virtual ~BOWTrainer(); + + /** @brief Adds descriptors to a training set. + + @param descriptors Descriptors to add to a training set. Each row of the descriptors matrix is a + descriptor. + + The training set is clustered using clustermethod to construct the vocabulary. + */ + CV_WRAP void add( const Mat& descriptors ); + + /** @brief Returns a training set of descriptors. + */ + CV_WRAP const std::vector& getDescriptors() const; + + /** @brief Returns the count of all descriptors stored in the training set. + */ + CV_WRAP int descriptorsCount() const; + + CV_WRAP virtual void clear(); + + /** @overload */ + CV_WRAP virtual Mat cluster() const = 0; + + /** @brief Clusters train descriptors. + + @param descriptors Descriptors to cluster. Each row of the descriptors matrix is a descriptor. + Descriptors are not added to the inner train descriptor set. + + The vocabulary consists of cluster centers. So, this method returns the vocabulary. In the first + variant of the method, train descriptors stored in the object are clustered. In the second variant, + input descriptors are clustered. + */ + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const = 0; + +protected: + std::vector descriptors; + int size; +}; + +/** @brief kmeans -based class to train visual vocabulary using the *bag of visual words* approach. : + */ +class CV_EXPORTS_W BOWKMeansTrainer : public BOWTrainer +{ +public: + /** @brief The constructor. + + @see cv::kmeans + */ + CV_WRAP BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), + int attempts=3, int flags=KMEANS_PP_CENTERS ); + virtual ~BOWKMeansTrainer(); + + // Returns trained vocabulary (i.e. cluster centers). + CV_WRAP virtual Mat cluster() const CV_OVERRIDE; + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const CV_OVERRIDE; + +protected: + + int clusterCount; + TermCriteria termcrit; + int attempts; + int flags; +}; + +/** @brief Class to compute an image descriptor using the *bag of visual words*. + +Such a computation consists of the following steps: + +1. Compute descriptors for a given image and its keypoints set. +2. Find the nearest visual words from the vocabulary for each keypoint descriptor. +3. Compute the bag-of-words image descriptor as is a normalized histogram of vocabulary words +encountered in the image. The i-th bin of the histogram is a frequency of i-th word of the +vocabulary in the given image. + */ +class CV_EXPORTS_W BOWImgDescriptorExtractor +{ +public: + /** @brief The constructor. + + @param dextractor Descriptor extractor that is used to compute descriptors for an input image and + its keypoints. + @param dmatcher Descriptor matcher that is used to find the nearest word of the trained vocabulary + for each keypoint descriptor of the image. + */ + CV_WRAP BOWImgDescriptorExtractor( const Ptr& dextractor, + const Ptr& dmatcher ); + /** @overload */ + BOWImgDescriptorExtractor( const Ptr& dmatcher ); + virtual ~BOWImgDescriptorExtractor(); + + /** @brief Sets a visual vocabulary. + + @param vocabulary Vocabulary (can be trained using the inheritor of BOWTrainer ). Each row of the + vocabulary is a visual word (cluster center). + */ + CV_WRAP void setVocabulary( const Mat& vocabulary ); + + /** @brief Returns the set vocabulary. + */ + CV_WRAP const Mat& getVocabulary() const; + + /** @brief Computes an image descriptor using the set visual vocabulary. + + @param image Image, for which the descriptor is computed. + @param keypoints Keypoints detected in the input image. + @param imgDescriptor Computed output image descriptor. + @param pointIdxsOfClusters Indices of keypoints that belong to the cluster. This means that + pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster (word of vocabulary) + returned if it is non-zero. + @param descriptors Descriptors of the image keypoints that are returned if they are non-zero. + */ + void compute( InputArray image, std::vector& keypoints, OutputArray imgDescriptor, + std::vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); + /** @overload + @param keypointDescriptors Computed descriptors to match with vocabulary. + @param imgDescriptor Computed output image descriptor. + @param pointIdxsOfClusters Indices of keypoints that belong to the cluster. This means that + pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster (word of vocabulary) + returned if it is non-zero. + */ + void compute( InputArray keypointDescriptors, OutputArray imgDescriptor, + std::vector >* pointIdxsOfClusters=0 ); + // compute() is not constant because DescriptorMatcher::match is not constant + + CV_WRAP_AS(compute) void compute2( const Mat& image, std::vector& keypoints, CV_OUT Mat& imgDescriptor ) + { compute(image,keypoints,imgDescriptor); } + + /** @brief Returns an image descriptor size if the vocabulary is set. Otherwise, it returns 0. + */ + CV_WRAP int descriptorSize() const; + + /** @brief Returns an image descriptor type. + */ + CV_WRAP int descriptorType() const; + +protected: + Mat vocabulary; + Ptr dextractor; + Ptr dmatcher; +}; + +//! @} features2d_category + +//! @} features2d + +} /* namespace cv */ + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/features2d/features2d.hpp b/LaiPuLaser/OpenCV/include/opencv2/features2d/features2d.hpp new file mode 100644 index 0000000..e81df0a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/features2d/features2d.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/features2d.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/features2d/hal/interface.h b/LaiPuLaser/OpenCV/include/opencv2/features2d/hal/interface.h new file mode 100644 index 0000000..bcc6577 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/features2d/hal/interface.h @@ -0,0 +1,33 @@ +#ifndef OPENCV_FEATURE2D_HAL_INTERFACE_H +#define OPENCV_FEATURE2D_HAL_INTERFACE_H + +#include "opencv2/core/cvdef.h" +//! @addtogroup featrure2d_hal_interface +//! @{ + +//! @name Fast feature detector types +//! @sa cv::FastFeatureDetector +//! @{ +#define CV_HAL_TYPE_5_8 0 +#define CV_HAL_TYPE_7_12 1 +#define CV_HAL_TYPE_9_16 2 +//! @} + +//! @name Key point +//! @sa cv::KeyPoint +//! @{ +struct CV_EXPORTS cvhalKeyPoint +{ + float x; + float y; + float size; + float angle; + float response; + int octave; + int class_id; +}; +//! @} + +//! @} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann.hpp b/LaiPuLaser/OpenCV/include/opencv2/flann.hpp new file mode 100644 index 0000000..fec3d06 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann.hpp @@ -0,0 +1,594 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_FLANN_HPP +#define OPENCV_FLANN_HPP + +#include "opencv2/core.hpp" +#include "opencv2/flann/miniflann.hpp" +#include "opencv2/flann/flann_base.hpp" + +/** +@defgroup flann Clustering and Search in Multi-Dimensional Spaces + +This section documents OpenCV's interface to the FLANN library. FLANN (Fast Library for Approximate +Nearest Neighbors) is a library that contains a collection of algorithms optimized for fast nearest +neighbor search in large datasets and for high dimensional features. More information about FLANN +can be found in @cite Muja2009 . +*/ + +namespace cvflann +{ + CV_EXPORTS flann_distance_t flann_distance_type(); + CV_DEPRECATED CV_EXPORTS void set_distance_type(flann_distance_t distance_type, int order); +} + + +namespace cv +{ +namespace flann +{ + + +//! @addtogroup flann +//! @{ + +template struct CvType {}; +template <> struct CvType { static int type() { return CV_8U; } }; +template <> struct CvType { static int type() { return CV_8S; } }; +template <> struct CvType { static int type() { return CV_16U; } }; +template <> struct CvType { static int type() { return CV_16S; } }; +template <> struct CvType { static int type() { return CV_32S; } }; +template <> struct CvType { static int type() { return CV_32F; } }; +template <> struct CvType { static int type() { return CV_64F; } }; + + +// bring the flann parameters into this namespace +using ::cvflann::get_param; +using ::cvflann::print_params; + +// bring the flann distances into this namespace +using ::cvflann::L2_Simple; +using ::cvflann::L2; +using ::cvflann::L1; +using ::cvflann::MinkowskiDistance; +using ::cvflann::MaxDistance; +using ::cvflann::HammingLUT; +using ::cvflann::Hamming; +using ::cvflann::Hamming2; +using ::cvflann::HistIntersectionDistance; +using ::cvflann::HellingerDistance; +using ::cvflann::ChiSquareDistance; +using ::cvflann::KL_Divergence; + + +/** @brief The FLANN nearest neighbor index class. This class is templated with the type of elements for which +the index is built. + +`Distance` functor specifies the metric to be used to calculate the distance between two points. +There are several `Distance` functors that are readily available: + +@link cvflann::L2_Simple cv::flann::L2_Simple @endlink- Squared Euclidean distance functor. +This is the simpler, unrolled version. This is preferable for very low dimensionality data (eg 3D points) + +@link cvflann::L2 cv::flann::L2 @endlink- Squared Euclidean distance functor, optimized version. + +@link cvflann::L1 cv::flann::L1 @endlink - Manhattan distance functor, optimized version. + +@link cvflann::MinkowskiDistance cv::flann::MinkowskiDistance @endlink - The Minkowsky distance functor. +This is highly optimised with loop unrolling. +The computation of squared root at the end is omitted for efficiency. + +@link cvflann::MaxDistance cv::flann::MaxDistance @endlink - The max distance functor. It computes the +maximum distance between two vectors. This distance is not a valid kdtree distance, it's not +dimensionwise additive. + +@link cvflann::HammingLUT cv::flann::HammingLUT @endlink - %Hamming distance functor. It counts the bit +differences between two strings using a lookup table implementation. + +@link cvflann::Hamming cv::flann::Hamming @endlink - %Hamming distance functor. Population count is +performed using library calls, if available. Lookup table implementation is used as a fallback. + +@link cvflann::Hamming2 cv::flann::Hamming2 @endlink- %Hamming distance functor. Population count is +implemented in 12 arithmetic operations (one of which is multiplication). + +@link cvflann::HistIntersectionDistance cv::flann::HistIntersectionDistance @endlink - The histogram +intersection distance functor. + +@link cvflann::HellingerDistance cv::flann::HellingerDistance @endlink - The Hellinger distance functor. + +@link cvflann::ChiSquareDistance cv::flann::ChiSquareDistance @endlink - The chi-square distance functor. + +@link cvflann::KL_Divergence cv::flann::KL_Divergence @endlink - The Kullback-Leibler divergence functor. + +Although the provided implementations cover a vast range of cases, it is also possible to use +a custom implementation. The distance functor is a class whose `operator()` computes the distance +between two features. If the distance is also a kd-tree compatible distance, it should also provide an +`accum_dist()` method that computes the distance between individual feature dimensions. + +In addition to `operator()` and `accum_dist()`, a distance functor should also define the +`ElementType` and the `ResultType` as the types of the elements it operates on and the type of the +result it computes. If a distance functor can be used as a kd-tree distance (meaning that the full +distance between a pair of features can be accumulated from the partial distances between the +individual dimensions) a typedef `is_kdtree_distance` should be present inside the distance functor. +If the distance is not a kd-tree distance, but it's a distance in a vector space (the individual +dimensions of the elements it operates on can be accessed independently) a typedef +`is_vector_space_distance` should be defined inside the functor. If neither typedef is defined, the +distance is assumed to be a metric distance and will only be used with indexes operating on +generic metric distances. + */ +template +class GenericIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + /** @brief Constructs a nearest neighbor search index for a given dataset. + + @param features Matrix of containing the features(points) to index. The size of the matrix is + num_features x feature_dimensionality and the data type of the elements in the matrix must + coincide with the type of the index. + @param params Structure containing the index parameters. The type of index that will be + constructed depends on the type of this parameter. See the description. + @param distance + + The method constructs a fast search structure from a set of features using the specified algorithm + with specified parameters, as defined by params. params is a reference to one of the following class + IndexParams descendants: + + - **LinearIndexParams** When passing an object of this type, the index will perform a linear, + brute-force search. : + @code + struct LinearIndexParams : public IndexParams + { + }; + @endcode + - **KDTreeIndexParams** When passing an object of this type the index constructed will consist of + a set of randomized kd-trees which will be searched in parallel. : + @code + struct KDTreeIndexParams : public IndexParams + { + KDTreeIndexParams( int trees = 4 ); + }; + @endcode + - **KMeansIndexParams** When passing an object of this type the index constructed will be a + hierarchical k-means tree. : + @code + struct KMeansIndexParams : public IndexParams + { + KMeansIndexParams( + int branching = 32, + int iterations = 11, + flann_centers_init_t centers_init = CENTERS_RANDOM, + float cb_index = 0.2 ); + }; + @endcode + - **CompositeIndexParams** When using a parameters object of this type the index created + combines the randomized kd-trees and the hierarchical k-means tree. : + @code + struct CompositeIndexParams : public IndexParams + { + CompositeIndexParams( + int trees = 4, + int branching = 32, + int iterations = 11, + flann_centers_init_t centers_init = CENTERS_RANDOM, + float cb_index = 0.2 ); + }; + @endcode + - **LshIndexParams** When using a parameters object of this type the index created uses + multi-probe LSH (by Multi-Probe LSH: Efficient Indexing for High-Dimensional Similarity Search + by Qin Lv, William Josephson, Zhe Wang, Moses Charikar, Kai Li., Proceedings of the 33rd + International Conference on Very Large Data Bases (VLDB). Vienna, Austria. September 2007) : + @code + struct LshIndexParams : public IndexParams + { + LshIndexParams( + unsigned int table_number, + unsigned int key_size, + unsigned int multi_probe_level ); + }; + @endcode + - **AutotunedIndexParams** When passing an object of this type the index created is + automatically tuned to offer the best performance, by choosing the optimal index type + (randomized kd-trees, hierarchical kmeans, linear) and parameters for the dataset provided. : + @code + struct AutotunedIndexParams : public IndexParams + { + AutotunedIndexParams( + float target_precision = 0.9, + float build_weight = 0.01, + float memory_weight = 0, + float sample_fraction = 0.1 ); + }; + @endcode + - **SavedIndexParams** This object type is used for loading a previously saved index from the + disk. : + @code + struct SavedIndexParams : public IndexParams + { + SavedIndexParams( String filename ); + }; + @endcode + */ + GenericIndex(const Mat& features, const ::cvflann::IndexParams& params, Distance distance = Distance()); + + ~GenericIndex(); + + /** @brief Performs a K-nearest neighbor search for a given query point using the index. + + @param query The query point + @param indices Vector that will contain the indices of the K-nearest neighbors found. It must have + at least knn size. + @param dists Vector that will contain the distances to the K-nearest neighbors found. It must have + at least knn size. + @param knn Number of nearest neighbors to search for. + @param params SearchParams + */ + void knnSearch(const std::vector& query, std::vector& indices, + std::vector& dists, int knn, const ::cvflann::SearchParams& params); + void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& params); + + /** @brief Performs a radius nearest neighbor search for a given query point using the index. + + @param query The query point. + @param indices Vector that will contain the indices of the nearest neighbors found. + @param dists Vector that will contain the distances to the nearest neighbors found. It has the same + number of elements as indices. + @param radius The search radius. + @param params SearchParams + + This function returns the number of nearest neighbors found. + */ + int radiusSearch(const std::vector& query, std::vector& indices, + std::vector& dists, DistanceType radius, const ::cvflann::SearchParams& params); + int radiusSearch(const Mat& query, Mat& indices, Mat& dists, + DistanceType radius, const ::cvflann::SearchParams& params); + + void save(String filename) { nnIndex->save(filename); } + + int veclen() const { return nnIndex->veclen(); } + + int size() const { return nnIndex->size(); } + + ::cvflann::IndexParams getParameters() { return nnIndex->getParameters(); } + + CV_DEPRECATED const ::cvflann::IndexParams* getIndexParameters() { return nnIndex->getIndexParameters(); } + +private: + ::cvflann::Index* nnIndex; +}; + +//! @cond IGNORED + +#define FLANN_DISTANCE_CHECK \ + if ( ::cvflann::flann_distance_type() != cvflann::FLANN_DIST_L2) { \ + printf("[WARNING] You are using cv::flann::Index (or cv::flann::GenericIndex) and have also changed "\ + "the distance using cvflann::set_distance_type. This is no longer working as expected "\ + "(cv::flann::Index always uses L2). You should create the index templated on the distance, "\ + "for example for L1 distance use: GenericIndex< L1 > \n"); \ + } + + +template +GenericIndex::GenericIndex(const Mat& dataset, const ::cvflann::IndexParams& params, Distance distance) +{ + CV_Assert(dataset.type() == CvType::type()); + CV_Assert(dataset.isContinuous()); + ::cvflann::Matrix m_dataset((ElementType*)dataset.ptr(0), dataset.rows, dataset.cols); + + nnIndex = new ::cvflann::Index(m_dataset, params, distance); + + FLANN_DISTANCE_CHECK + + nnIndex->buildIndex(); +} + +template +GenericIndex::~GenericIndex() +{ + delete nnIndex; +} + +template +void GenericIndex::knnSearch(const std::vector& query, std::vector& indices, std::vector& dists, int knn, const ::cvflann::SearchParams& searchParams) +{ + ::cvflann::Matrix m_query((ElementType*)&query[0], 1, query.size()); + ::cvflann::Matrix m_indices(&indices[0], 1, indices.size()); + ::cvflann::Matrix m_dists(&dists[0], 1, dists.size()); + + FLANN_DISTANCE_CHECK + + nnIndex->knnSearch(m_query,m_indices,m_dists,knn,searchParams); +} + + +template +void GenericIndex::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams) +{ + CV_Assert(queries.type() == CvType::type()); + CV_Assert(queries.isContinuous()); + ::cvflann::Matrix m_queries((ElementType*)queries.ptr(0), queries.rows, queries.cols); + + CV_Assert(indices.type() == CV_32S); + CV_Assert(indices.isContinuous()); + ::cvflann::Matrix m_indices((int*)indices.ptr(0), indices.rows, indices.cols); + + CV_Assert(dists.type() == CvType::type()); + CV_Assert(dists.isContinuous()); + ::cvflann::Matrix m_dists((DistanceType*)dists.ptr(0), dists.rows, dists.cols); + + FLANN_DISTANCE_CHECK + + nnIndex->knnSearch(m_queries,m_indices,m_dists,knn, searchParams); +} + +template +int GenericIndex::radiusSearch(const std::vector& query, std::vector& indices, std::vector& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams) +{ + ::cvflann::Matrix m_query((ElementType*)&query[0], 1, query.size()); + ::cvflann::Matrix m_indices(&indices[0], 1, indices.size()); + ::cvflann::Matrix m_dists(&dists[0], 1, dists.size()); + + FLANN_DISTANCE_CHECK + + return nnIndex->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); +} + +template +int GenericIndex::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams) +{ + CV_Assert(query.type() == CvType::type()); + CV_Assert(query.isContinuous()); + ::cvflann::Matrix m_query((ElementType*)query.ptr(0), query.rows, query.cols); + + CV_Assert(indices.type() == CV_32S); + CV_Assert(indices.isContinuous()); + ::cvflann::Matrix m_indices((int*)indices.ptr(0), indices.rows, indices.cols); + + CV_Assert(dists.type() == CvType::type()); + CV_Assert(dists.isContinuous()); + ::cvflann::Matrix m_dists((DistanceType*)dists.ptr(0), dists.rows, dists.cols); + + FLANN_DISTANCE_CHECK + + return nnIndex->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); +} + +//! @endcond + +/** + * @deprecated Use GenericIndex class instead + */ +template +class Index_ +{ +public: + typedef typename L2::ElementType ElementType; + typedef typename L2::ResultType DistanceType; + + CV_DEPRECATED Index_(const Mat& dataset, const ::cvflann::IndexParams& params) + { + printf("[WARNING] The cv::flann::Index_ class is deperecated, use cv::flann::GenericIndex instead\n"); + + CV_Assert(dataset.type() == CvType::type()); + CV_Assert(dataset.isContinuous()); + ::cvflann::Matrix m_dataset((ElementType*)dataset.ptr(0), dataset.rows, dataset.cols); + + if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L2 ) { + nnIndex_L1 = NULL; + nnIndex_L2 = new ::cvflann::Index< L2 >(m_dataset, params); + } + else if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L1 ) { + nnIndex_L1 = new ::cvflann::Index< L1 >(m_dataset, params); + nnIndex_L2 = NULL; + } + else { + printf("[ERROR] cv::flann::Index_ only provides backwards compatibility for the L1 and L2 distances. " + "For other distance types you must use cv::flann::GenericIndex\n"); + CV_Assert(0); + } + if (nnIndex_L1) nnIndex_L1->buildIndex(); + if (nnIndex_L2) nnIndex_L2->buildIndex(); + } + CV_DEPRECATED ~Index_() + { + if (nnIndex_L1) delete nnIndex_L1; + if (nnIndex_L2) delete nnIndex_L2; + } + + CV_DEPRECATED void knnSearch(const std::vector& query, std::vector& indices, std::vector& dists, int knn, const ::cvflann::SearchParams& searchParams) + { + ::cvflann::Matrix m_query((ElementType*)&query[0], 1, query.size()); + ::cvflann::Matrix m_indices(&indices[0], 1, indices.size()); + ::cvflann::Matrix m_dists(&dists[0], 1, dists.size()); + + if (nnIndex_L1) nnIndex_L1->knnSearch(m_query,m_indices,m_dists,knn,searchParams); + if (nnIndex_L2) nnIndex_L2->knnSearch(m_query,m_indices,m_dists,knn,searchParams); + } + CV_DEPRECATED void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams) + { + CV_Assert(queries.type() == CvType::type()); + CV_Assert(queries.isContinuous()); + ::cvflann::Matrix m_queries((ElementType*)queries.ptr(0), queries.rows, queries.cols); + + CV_Assert(indices.type() == CV_32S); + CV_Assert(indices.isContinuous()); + ::cvflann::Matrix m_indices((int*)indices.ptr(0), indices.rows, indices.cols); + + CV_Assert(dists.type() == CvType::type()); + CV_Assert(dists.isContinuous()); + ::cvflann::Matrix m_dists((DistanceType*)dists.ptr(0), dists.rows, dists.cols); + + if (nnIndex_L1) nnIndex_L1->knnSearch(m_queries,m_indices,m_dists,knn, searchParams); + if (nnIndex_L2) nnIndex_L2->knnSearch(m_queries,m_indices,m_dists,knn, searchParams); + } + + CV_DEPRECATED int radiusSearch(const std::vector& query, std::vector& indices, std::vector& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams) + { + ::cvflann::Matrix m_query((ElementType*)&query[0], 1, query.size()); + ::cvflann::Matrix m_indices(&indices[0], 1, indices.size()); + ::cvflann::Matrix m_dists(&dists[0], 1, dists.size()); + + if (nnIndex_L1) return nnIndex_L1->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); + if (nnIndex_L2) return nnIndex_L2->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); + } + + CV_DEPRECATED int radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams) + { + CV_Assert(query.type() == CvType::type()); + CV_Assert(query.isContinuous()); + ::cvflann::Matrix m_query((ElementType*)query.ptr(0), query.rows, query.cols); + + CV_Assert(indices.type() == CV_32S); + CV_Assert(indices.isContinuous()); + ::cvflann::Matrix m_indices((int*)indices.ptr(0), indices.rows, indices.cols); + + CV_Assert(dists.type() == CvType::type()); + CV_Assert(dists.isContinuous()); + ::cvflann::Matrix m_dists((DistanceType*)dists.ptr(0), dists.rows, dists.cols); + + if (nnIndex_L1) return nnIndex_L1->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); + if (nnIndex_L2) return nnIndex_L2->radiusSearch(m_query,m_indices,m_dists,radius,searchParams); + } + + CV_DEPRECATED void save(String filename) + { + if (nnIndex_L1) nnIndex_L1->save(filename); + if (nnIndex_L2) nnIndex_L2->save(filename); + } + + CV_DEPRECATED int veclen() const + { + if (nnIndex_L1) return nnIndex_L1->veclen(); + if (nnIndex_L2) return nnIndex_L2->veclen(); + } + + CV_DEPRECATED int size() const + { + if (nnIndex_L1) return nnIndex_L1->size(); + if (nnIndex_L2) return nnIndex_L2->size(); + } + + CV_DEPRECATED ::cvflann::IndexParams getParameters() + { + if (nnIndex_L1) return nnIndex_L1->getParameters(); + if (nnIndex_L2) return nnIndex_L2->getParameters(); + + } + + CV_DEPRECATED const ::cvflann::IndexParams* getIndexParameters() + { + if (nnIndex_L1) return nnIndex_L1->getIndexParameters(); + if (nnIndex_L2) return nnIndex_L2->getIndexParameters(); + } + +private: + // providing backwards compatibility for L2 and L1 distances (most common) + ::cvflann::Index< L2 >* nnIndex_L2; + ::cvflann::Index< L1 >* nnIndex_L1; +}; + + +/** @brief Clusters features using hierarchical k-means algorithm. + +@param features The points to be clustered. The matrix must have elements of type +Distance::ElementType. +@param centers The centers of the clusters obtained. The matrix must have type +Distance::ResultType. The number of rows in this matrix represents the number of clusters desired, +however, because of the way the cut in the hierarchical tree is chosen, the number of clusters +computed will be the highest number of the form (branching-1)\*k+1 that's lower than the number of +clusters desired, where branching is the tree's branching factor (see description of the +KMeansIndexParams). +@param params Parameters used in the construction of the hierarchical k-means tree. +@param d Distance to be used for clustering. + +The method clusters the given feature vectors by constructing a hierarchical k-means tree and +choosing a cut in the tree that minimizes the cluster's variance. It returns the number of clusters +found. + */ +template +int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::KMeansIndexParams& params, + Distance d = Distance()) +{ + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + CV_Assert(features.type() == CvType::type()); + CV_Assert(features.isContinuous()); + ::cvflann::Matrix m_features((ElementType*)features.ptr(0), features.rows, features.cols); + + CV_Assert(centers.type() == CvType::type()); + CV_Assert(centers.isContinuous()); + ::cvflann::Matrix m_centers((DistanceType*)centers.ptr(0), centers.rows, centers.cols); + + return ::cvflann::hierarchicalClustering(m_features, m_centers, params, d); +} + +/** @deprecated +*/ +template +CV_DEPRECATED int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::KMeansIndexParams& params) +{ + printf("[WARNING] cv::flann::hierarchicalClustering is deprecated, use " + "cv::flann::hierarchicalClustering instead\n"); + + if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L2 ) { + return hierarchicalClustering< L2 >(features, centers, params); + } + else if ( ::cvflann::flann_distance_type() == cvflann::FLANN_DIST_L1 ) { + return hierarchicalClustering< L1 >(features, centers, params); + } + else { + printf("[ERROR] cv::flann::hierarchicalClustering only provides backwards " + "compatibility for the L1 and L2 distances. " + "For other distance types you must use cv::flann::hierarchicalClustering\n"); + CV_Assert(0); + } +} + +//! @} flann + +} } // namespace cv::flann + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/all_indices.h b/LaiPuLaser/OpenCV/include/opencv2/flann/all_indices.h new file mode 100644 index 0000000..ff53fd8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/all_indices.h @@ -0,0 +1,155 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + + +#ifndef OPENCV_FLANN_ALL_INDICES_H_ +#define OPENCV_FLANN_ALL_INDICES_H_ + +#include "general.h" + +#include "nn_index.h" +#include "kdtree_index.h" +#include "kdtree_single_index.h" +#include "kmeans_index.h" +#include "composite_index.h" +#include "linear_index.h" +#include "hierarchical_clustering_index.h" +#include "lsh_index.h" +#include "autotuned_index.h" + + +namespace cvflann +{ + +template +struct index_creator +{ + static NNIndex* create(const Matrix& dataset, const IndexParams& params, const Distance& distance) + { + flann_algorithm_t index_type = get_param(params, "algorithm"); + + NNIndex* nnIndex; + switch (index_type) { + case FLANN_INDEX_LINEAR: + nnIndex = new LinearIndex(dataset, params, distance); + break; + case FLANN_INDEX_KDTREE_SINGLE: + nnIndex = new KDTreeSingleIndex(dataset, params, distance); + break; + case FLANN_INDEX_KDTREE: + nnIndex = new KDTreeIndex(dataset, params, distance); + break; + case FLANN_INDEX_KMEANS: + nnIndex = new KMeansIndex(dataset, params, distance); + break; + case FLANN_INDEX_COMPOSITE: + nnIndex = new CompositeIndex(dataset, params, distance); + break; + case FLANN_INDEX_AUTOTUNED: + nnIndex = new AutotunedIndex(dataset, params, distance); + break; + case FLANN_INDEX_HIERARCHICAL: + nnIndex = new HierarchicalClusteringIndex(dataset, params, distance); + break; + case FLANN_INDEX_LSH: + nnIndex = new LshIndex(dataset, params, distance); + break; + default: + throw FLANNException("Unknown index type"); + } + + return nnIndex; + } +}; + +template +struct index_creator +{ + static NNIndex* create(const Matrix& dataset, const IndexParams& params, const Distance& distance) + { + flann_algorithm_t index_type = get_param(params, "algorithm"); + + NNIndex* nnIndex; + switch (index_type) { + case FLANN_INDEX_LINEAR: + nnIndex = new LinearIndex(dataset, params, distance); + break; + case FLANN_INDEX_KMEANS: + nnIndex = new KMeansIndex(dataset, params, distance); + break; + case FLANN_INDEX_HIERARCHICAL: + nnIndex = new HierarchicalClusteringIndex(dataset, params, distance); + break; + case FLANN_INDEX_LSH: + nnIndex = new LshIndex(dataset, params, distance); + break; + default: + throw FLANNException("Unknown index type"); + } + + return nnIndex; + } +}; + +template +struct index_creator +{ + static NNIndex* create(const Matrix& dataset, const IndexParams& params, const Distance& distance) + { + flann_algorithm_t index_type = get_param(params, "algorithm"); + + NNIndex* nnIndex; + switch (index_type) { + case FLANN_INDEX_LINEAR: + nnIndex = new LinearIndex(dataset, params, distance); + break; + case FLANN_INDEX_HIERARCHICAL: + nnIndex = new HierarchicalClusteringIndex(dataset, params, distance); + break; + case FLANN_INDEX_LSH: + nnIndex = new LshIndex(dataset, params, distance); + break; + default: + throw FLANNException("Unknown index type"); + } + + return nnIndex; + } +}; + +template +NNIndex* create_index_by_type(const Matrix& dataset, const IndexParams& params, const Distance& distance) +{ + return index_creator::create(dataset, params,distance); +} + +} + +#endif /* OPENCV_FLANN_ALL_INDICES_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/allocator.h b/LaiPuLaser/OpenCV/include/opencv2/flann/allocator.h new file mode 100644 index 0000000..f347f88 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/allocator.h @@ -0,0 +1,192 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_ALLOCATOR_H_ +#define OPENCV_FLANN_ALLOCATOR_H_ + +#include +#include + + +namespace cvflann +{ + +/** + * Allocates (using C's malloc) a generic type T. + * + * Params: + * count = number of instances to allocate. + * Returns: pointer (of type T*) to memory buffer + */ +template +T* allocate(size_t count = 1) +{ + T* mem = (T*) ::malloc(sizeof(T)*count); + return mem; +} + + +/** + * Pooled storage allocator + * + * The following routines allow for the efficient allocation of storage in + * small chunks from a specified pool. Rather than allowing each structure + * to be freed individually, an entire pool of storage is freed at once. + * This method has two advantages over just using malloc() and free(). First, + * it is far more efficient for allocating small objects, as there is + * no overhead for remembering all the information needed to free each + * object or consolidating fragmented memory. Second, the decision about + * how long to keep an object is made at the time of allocation, and there + * is no need to track down all the objects to free them. + * + */ + +const size_t WORDSIZE=16; +const size_t BLOCKSIZE=8192; + +class PooledAllocator +{ + /* We maintain memory alignment to word boundaries by requiring that all + allocations be in multiples of the machine wordsize. */ + /* Size of machine word in bytes. Must be power of 2. */ + /* Minimum number of bytes requested at a time from the system. Must be multiple of WORDSIZE. */ + + + int remaining; /* Number of bytes left in current block of storage. */ + void* base; /* Pointer to base of current block of storage. */ + void* loc; /* Current location in block to next allocate memory. */ + int blocksize; + + +public: + int usedMemory; + int wastedMemory; + + /** + Default constructor. Initializes a new pool. + */ + PooledAllocator(int blockSize = BLOCKSIZE) + { + blocksize = blockSize; + remaining = 0; + base = NULL; + loc = NULL; + + usedMemory = 0; + wastedMemory = 0; + } + + /** + * Destructor. Frees all the memory allocated in this pool. + */ + ~PooledAllocator() + { + void* prev; + + while (base != NULL) { + prev = *((void**) base); /* Get pointer to prev block. */ + ::free(base); + base = prev; + } + } + + /** + * Returns a pointer to a piece of new memory of the given size in bytes + * allocated from the pool. + */ + void* allocateMemory(int size) + { + int blockSize; + + /* Round size up to a multiple of wordsize. The following expression + only works for WORDSIZE that is a power of 2, by masking last bits of + incremented size to zero. + */ + size = (size + (WORDSIZE - 1)) & ~(WORDSIZE - 1); + + /* Check whether a new block must be allocated. Note that the first word + of a block is reserved for a pointer to the previous block. + */ + if (size > remaining) { + + wastedMemory += remaining; + + /* Allocate new storage. */ + blockSize = (size + sizeof(void*) + (WORDSIZE-1) > BLOCKSIZE) ? + size + sizeof(void*) + (WORDSIZE-1) : BLOCKSIZE; + + // use the standard C malloc to allocate memory + void* m = ::malloc(blockSize); + if (!m) { + fprintf(stderr,"Failed to allocate memory.\n"); + return NULL; + } + + /* Fill first word of new block with pointer to previous block. */ + ((void**) m)[0] = base; + base = m; + + int shift = 0; + //int shift = (WORDSIZE - ( (((size_t)m) + sizeof(void*)) & (WORDSIZE-1))) & (WORDSIZE-1); + + remaining = blockSize - sizeof(void*) - shift; + loc = ((char*)m + sizeof(void*) + shift); + } + void* rloc = loc; + loc = (char*)loc + size; + remaining -= size; + + usedMemory += size; + + return rloc; + } + + /** + * Allocates (using this pool) a generic type T. + * + * Params: + * count = number of instances to allocate. + * Returns: pointer (of type T*) to memory buffer + */ + template + T* allocate(size_t count = 1) + { + T* mem = (T*) this->allocateMemory((int)(sizeof(T)*count)); + return mem; + } + +private: + PooledAllocator(const PooledAllocator &); // copy disabled + PooledAllocator& operator=(const PooledAllocator &); // assign disabled +}; + +} + +#endif //OPENCV_FLANN_ALLOCATOR_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/any.h b/LaiPuLaser/OpenCV/include/opencv2/flann/any.h new file mode 100644 index 0000000..5b57aa3 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/any.h @@ -0,0 +1,330 @@ +#ifndef OPENCV_FLANN_ANY_H_ +#define OPENCV_FLANN_ANY_H_ +/* + * (C) Copyright Christopher Diggins 2005-2011 + * (C) Copyright Pablo Aguilar 2005 + * (C) Copyright Kevlin Henney 2001 + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt + * + * Adapted for FLANN by Marius Muja + */ + +#include "defines.h" +#include +#include +#include + +namespace cvflann +{ + +namespace anyimpl +{ + +struct bad_any_cast +{ +}; + +struct empty_any +{ +}; + +inline std::ostream& operator <<(std::ostream& out, const empty_any&) +{ + out << "[empty_any]"; + return out; +} + +struct base_any_policy +{ + virtual void static_delete(void** x) = 0; + virtual void copy_from_value(void const* src, void** dest) = 0; + virtual void clone(void* const* src, void** dest) = 0; + virtual void move(void* const* src, void** dest) = 0; + virtual void* get_value(void** src) = 0; + virtual const void* get_value(void* const * src) = 0; + virtual ::size_t get_size() = 0; + virtual const std::type_info& type() = 0; + virtual void print(std::ostream& out, void* const* src) = 0; + virtual ~base_any_policy() {} +}; + +template +struct typed_base_any_policy : base_any_policy +{ + virtual ::size_t get_size() CV_OVERRIDE { return sizeof(T); } + virtual const std::type_info& type() CV_OVERRIDE { return typeid(T); } + +}; + +template +struct small_any_policy CV_FINAL : typed_base_any_policy +{ + virtual void static_delete(void**) CV_OVERRIDE { } + virtual void copy_from_value(void const* src, void** dest) CV_OVERRIDE + { + new (dest) T(* reinterpret_cast(src)); + } + virtual void clone(void* const* src, void** dest) CV_OVERRIDE { *dest = *src; } + virtual void move(void* const* src, void** dest) CV_OVERRIDE { *dest = *src; } + virtual void* get_value(void** src) CV_OVERRIDE { return reinterpret_cast(src); } + virtual const void* get_value(void* const * src) CV_OVERRIDE { return reinterpret_cast(src); } + virtual void print(std::ostream& out, void* const* src) CV_OVERRIDE { out << *reinterpret_cast(src); } +}; + +template +struct big_any_policy CV_FINAL : typed_base_any_policy +{ + virtual void static_delete(void** x) CV_OVERRIDE + { + if (* x) delete (* reinterpret_cast(x)); + *x = NULL; + } + virtual void copy_from_value(void const* src, void** dest) CV_OVERRIDE + { + *dest = new T(*reinterpret_cast(src)); + } + virtual void clone(void* const* src, void** dest) CV_OVERRIDE + { + *dest = new T(**reinterpret_cast(src)); + } + virtual void move(void* const* src, void** dest) CV_OVERRIDE + { + (*reinterpret_cast(dest))->~T(); + **reinterpret_cast(dest) = **reinterpret_cast(src); + } + virtual void* get_value(void** src) CV_OVERRIDE { return *src; } + virtual const void* get_value(void* const * src) CV_OVERRIDE { return *src; } + virtual void print(std::ostream& out, void* const* src) CV_OVERRIDE { out << *reinterpret_cast(*src); } +}; + +template<> inline void big_any_policy::print(std::ostream& out, void* const* src) +{ + out << int(*reinterpret_cast(*src)); +} + +template<> inline void big_any_policy::print(std::ostream& out, void* const* src) +{ + out << int(*reinterpret_cast(*src)); +} + +template<> inline void big_any_policy::print(std::ostream& out, void* const* src) +{ + out << (*reinterpret_cast(*src)).c_str(); +} + +template +struct choose_policy +{ + typedef big_any_policy type; +}; + +template +struct choose_policy +{ + typedef small_any_policy type; +}; + +struct any; + +/// Choosing the policy for an any type is illegal, but should never happen. +/// This is designed to throw a compiler error. +template<> +struct choose_policy +{ + typedef void type; +}; + +/// Specializations for small types. +#define SMALL_POLICY(TYPE) \ + template<> \ + struct choose_policy { typedef small_any_policy type; \ + } + +SMALL_POLICY(signed char); +SMALL_POLICY(unsigned char); +SMALL_POLICY(signed short); +SMALL_POLICY(unsigned short); +SMALL_POLICY(signed int); +SMALL_POLICY(unsigned int); +SMALL_POLICY(signed long); +SMALL_POLICY(unsigned long); +SMALL_POLICY(float); +SMALL_POLICY(bool); + +#undef SMALL_POLICY + +template +class SinglePolicy +{ + SinglePolicy(); + SinglePolicy(const SinglePolicy& other); + SinglePolicy& operator=(const SinglePolicy& other); + +public: + static base_any_policy* get_policy(); + +private: + static typename choose_policy::type policy; +}; + +template +typename choose_policy::type SinglePolicy::policy; + +/// This function will return a different policy for each type. +template +inline base_any_policy* SinglePolicy::get_policy() { return &policy; } + +} // namespace anyimpl + +struct any +{ +private: + // fields + anyimpl::base_any_policy* policy; + void* object; + +public: + /// Initializing constructor. + template + any(const T& x) + : policy(anyimpl::SinglePolicy::get_policy()), object(NULL) + { + assign(x); + } + + /// Empty constructor. + any() + : policy(anyimpl::SinglePolicy::get_policy()), object(NULL) + { } + + /// Special initializing constructor for string literals. + any(const char* x) + : policy(anyimpl::SinglePolicy::get_policy()), object(NULL) + { + assign(x); + } + + /// Copy constructor. + any(const any& x) + : policy(anyimpl::SinglePolicy::get_policy()), object(NULL) + { + assign(x); + } + + /// Destructor. + ~any() + { + policy->static_delete(&object); + } + + /// Assignment function from another any. + any& assign(const any& x) + { + reset(); + policy = x.policy; + policy->clone(&x.object, &object); + return *this; + } + + /// Assignment function. + template + any& assign(const T& x) + { + reset(); + policy = anyimpl::SinglePolicy::get_policy(); + policy->copy_from_value(&x, &object); + return *this; + } + + /// Assignment operator. + template + any& operator=(const T& x) + { + return assign(x); + } + + /// Assignment operator. Template-based version above doesn't work as expected. We need regular assignment operator here. + any& operator=(const any& x) + { + return assign(x); + } + + /// Assignment operator, specialed for literal strings. + /// They have types like const char [6] which don't work as expected. + any& operator=(const char* x) + { + return assign(x); + } + + /// Utility functions + any& swap(any& x) + { + std::swap(policy, x.policy); + std::swap(object, x.object); + return *this; + } + + /// Cast operator. You can only cast to the original type. + template + T& cast() + { + if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); + T* r = reinterpret_cast(policy->get_value(&object)); + return *r; + } + + /// Cast operator. You can only cast to the original type. + template + const T& cast() const + { + if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); + const T* r = reinterpret_cast(policy->get_value(&object)); + return *r; + } + + /// Returns true if the any contains no value. + bool empty() const + { + return policy->type() == typeid(anyimpl::empty_any); + } + + /// Frees any allocated memory, and sets the value to NULL. + void reset() + { + policy->static_delete(&object); + policy = anyimpl::SinglePolicy::get_policy(); + } + + /// Returns true if the two types are the same. + bool compatible(const any& x) const + { + return policy->type() == x.policy->type(); + } + + /// Returns if the type is compatible with the policy + template + bool has_type() + { + return policy->type() == typeid(T); + } + + const std::type_info& type() const + { + return policy->type(); + } + + friend std::ostream& operator <<(std::ostream& out, const any& any_val); +}; + +inline std::ostream& operator <<(std::ostream& out, const any& any_val) +{ + any_val.policy->print(out,&any_val.object); + return out; +} + +} + +#endif // OPENCV_FLANN_ANY_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/autotuned_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/autotuned_index.h new file mode 100644 index 0000000..2fbc6c9 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/autotuned_index.h @@ -0,0 +1,591 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ +#ifndef OPENCV_FLANN_AUTOTUNED_INDEX_H_ +#define OPENCV_FLANN_AUTOTUNED_INDEX_H_ + +#include + +#include "general.h" +#include "nn_index.h" +#include "ground_truth.h" +#include "index_testing.h" +#include "sampling.h" +#include "kdtree_index.h" +#include "kdtree_single_index.h" +#include "kmeans_index.h" +#include "composite_index.h" +#include "linear_index.h" +#include "logger.h" + +namespace cvflann +{ + +template +NNIndex* create_index_by_type(const Matrix& dataset, const IndexParams& params, const Distance& distance); + + +struct AutotunedIndexParams : public IndexParams +{ + AutotunedIndexParams(float target_precision = 0.8, float build_weight = 0.01, float memory_weight = 0, float sample_fraction = 0.1) + { + (*this)["algorithm"] = FLANN_INDEX_AUTOTUNED; + // precision desired (used for autotuning, -1 otherwise) + (*this)["target_precision"] = target_precision; + // build tree time weighting factor + (*this)["build_weight"] = build_weight; + // index memory weighting factor + (*this)["memory_weight"] = memory_weight; + // what fraction of the dataset to use for autotuning + (*this)["sample_fraction"] = sample_fraction; + } +}; + + +template +class AutotunedIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + AutotunedIndex(const Matrix& inputData, const IndexParams& params = AutotunedIndexParams(), Distance d = Distance()) : + dataset_(inputData), distance_(d) + { + target_precision_ = get_param(params, "target_precision",0.8f); + build_weight_ = get_param(params,"build_weight", 0.01f); + memory_weight_ = get_param(params, "memory_weight", 0.0f); + sample_fraction_ = get_param(params,"sample_fraction", 0.1f); + bestIndex_ = NULL; + speedup_ = 0; + } + + AutotunedIndex(const AutotunedIndex&); + AutotunedIndex& operator=(const AutotunedIndex&); + + virtual ~AutotunedIndex() + { + if (bestIndex_ != NULL) { + delete bestIndex_; + bestIndex_ = NULL; + } + } + + /** + * Method responsible with building the index. + */ + virtual void buildIndex() CV_OVERRIDE + { + std::ostringstream stream; + bestParams_ = estimateBuildParams(); + print_params(bestParams_, stream); + Logger::info("----------------------------------------------------\n"); + Logger::info("Autotuned parameters:\n"); + Logger::info("%s", stream.str().c_str()); + Logger::info("----------------------------------------------------\n"); + + bestIndex_ = create_index_by_type(dataset_, bestParams_, distance_); + bestIndex_->buildIndex(); + speedup_ = estimateSearchParams(bestSearchParams_); + stream.str(std::string()); + print_params(bestSearchParams_, stream); + Logger::info("----------------------------------------------------\n"); + Logger::info("Search parameters:\n"); + Logger::info("%s", stream.str().c_str()); + Logger::info("----------------------------------------------------\n"); + } + + /** + * Saves the index to a stream + */ + virtual void saveIndex(FILE* stream) CV_OVERRIDE + { + save_value(stream, (int)bestIndex_->getType()); + bestIndex_->saveIndex(stream); + save_value(stream, get_param(bestSearchParams_, "checks")); + } + + /** + * Loads the index from a stream + */ + virtual void loadIndex(FILE* stream) CV_OVERRIDE + { + int index_type; + + load_value(stream, index_type); + IndexParams params; + params["algorithm"] = (flann_algorithm_t)index_type; + bestIndex_ = create_index_by_type(dataset_, params, distance_); + bestIndex_->loadIndex(stream); + int checks; + load_value(stream, checks); + bestSearchParams_["checks"] = checks; + } + + /** + * Method that searches for nearest-neighbors + */ + virtual void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + int checks = get_param(searchParams,"checks",FLANN_CHECKS_AUTOTUNED); + if (checks == FLANN_CHECKS_AUTOTUNED) { + bestIndex_->findNeighbors(result, vec, bestSearchParams_); + } + else { + bestIndex_->findNeighbors(result, vec, searchParams); + } + } + + + IndexParams getParameters() const CV_OVERRIDE + { + return bestIndex_->getParameters(); + } + + SearchParams getSearchParameters() const + { + return bestSearchParams_; + } + + float getSpeedup() const + { + return speedup_; + } + + + /** + * Number of features in this index. + */ + virtual size_t size() const CV_OVERRIDE + { + return bestIndex_->size(); + } + + /** + * The length of each vector in this index. + */ + virtual size_t veclen() const CV_OVERRIDE + { + return bestIndex_->veclen(); + } + + /** + * The amount of memory (in bytes) this index uses. + */ + virtual int usedMemory() const CV_OVERRIDE + { + return bestIndex_->usedMemory(); + } + + /** + * Algorithm name + */ + virtual flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_AUTOTUNED; + } + +private: + + struct CostData + { + float searchTimeCost; + float buildTimeCost; + float memoryCost; + float totalCost; + IndexParams params; + }; + + void evaluate_kmeans(CostData& cost) + { + StartStopTimer t; + int checks; + const int nn = 1; + + Logger::info("KMeansTree using params: max_iterations=%d, branching=%d\n", + get_param(cost.params,"iterations"), + get_param(cost.params,"branching")); + KMeansIndex kmeans(sampledDataset_, cost.params, distance_); + // measure index build time + t.start(); + kmeans.buildIndex(); + t.stop(); + float buildTime = (float)t.value; + + // measure search time + float searchTime = test_index_precision(kmeans, sampledDataset_, testDataset_, gt_matches_, target_precision_, checks, distance_, nn); + + float datasetMemory = float(sampledDataset_.rows * sampledDataset_.cols * sizeof(float)); + cost.memoryCost = (kmeans.usedMemory() + datasetMemory) / datasetMemory; + cost.searchTimeCost = searchTime; + cost.buildTimeCost = buildTime; + Logger::info("KMeansTree buildTime=%g, searchTime=%g, build_weight=%g\n", buildTime, searchTime, build_weight_); + } + + + void evaluate_kdtree(CostData& cost) + { + StartStopTimer t; + int checks; + const int nn = 1; + + Logger::info("KDTree using params: trees=%d\n", get_param(cost.params,"trees")); + KDTreeIndex kdtree(sampledDataset_, cost.params, distance_); + + t.start(); + kdtree.buildIndex(); + t.stop(); + float buildTime = (float)t.value; + + //measure search time + float searchTime = test_index_precision(kdtree, sampledDataset_, testDataset_, gt_matches_, target_precision_, checks, distance_, nn); + + float datasetMemory = float(sampledDataset_.rows * sampledDataset_.cols * sizeof(float)); + cost.memoryCost = (kdtree.usedMemory() + datasetMemory) / datasetMemory; + cost.searchTimeCost = searchTime; + cost.buildTimeCost = buildTime; + Logger::info("KDTree buildTime=%g, searchTime=%g\n", buildTime, searchTime); + } + + + // struct KMeansSimpleDownhillFunctor { + // + // Autotune& autotuner; + // KMeansSimpleDownhillFunctor(Autotune& autotuner_) : autotuner(autotuner_) {} + // + // float operator()(int* params) { + // + // float maxFloat = numeric_limits::max(); + // + // if (params[0]<2) return maxFloat; + // if (params[1]<0) return maxFloat; + // + // CostData c; + // c.params["algorithm"] = KMEANS; + // c.params["centers-init"] = CENTERS_RANDOM; + // c.params["branching"] = params[0]; + // c.params["max-iterations"] = params[1]; + // + // autotuner.evaluate_kmeans(c); + // + // return c.timeCost; + // + // } + // }; + // + // struct KDTreeSimpleDownhillFunctor { + // + // Autotune& autotuner; + // KDTreeSimpleDownhillFunctor(Autotune& autotuner_) : autotuner(autotuner_) {} + // + // float operator()(int* params) { + // float maxFloat = numeric_limits::max(); + // + // if (params[0]<1) return maxFloat; + // + // CostData c; + // c.params["algorithm"] = KDTREE; + // c.params["trees"] = params[0]; + // + // autotuner.evaluate_kdtree(c); + // + // return c.timeCost; + // + // } + // }; + + + + void optimizeKMeans(std::vector& costs) + { + Logger::info("KMEANS, Step 1: Exploring parameter space\n"); + + // explore kmeans parameters space using combinations of the parameters below + int maxIterations[] = { 1, 5, 10, 15 }; + int branchingFactors[] = { 16, 32, 64, 128, 256 }; + + int kmeansParamSpaceSize = FLANN_ARRAY_LEN(maxIterations) * FLANN_ARRAY_LEN(branchingFactors); + costs.reserve(costs.size() + kmeansParamSpaceSize); + + // evaluate kmeans for all parameter combinations + for (size_t i = 0; i < FLANN_ARRAY_LEN(maxIterations); ++i) { + for (size_t j = 0; j < FLANN_ARRAY_LEN(branchingFactors); ++j) { + CostData cost; + cost.params["algorithm"] = FLANN_INDEX_KMEANS; + cost.params["centers_init"] = FLANN_CENTERS_RANDOM; + cost.params["iterations"] = maxIterations[i]; + cost.params["branching"] = branchingFactors[j]; + + evaluate_kmeans(cost); + costs.push_back(cost); + } + } + + // Logger::info("KMEANS, Step 2: simplex-downhill optimization\n"); + // + // const int n = 2; + // // choose initial simplex points as the best parameters so far + // int kmeansNMPoints[n*(n+1)]; + // float kmeansVals[n+1]; + // for (int i=0;i& costs) + { + Logger::info("KD-TREE, Step 1: Exploring parameter space\n"); + + // explore kd-tree parameters space using the parameters below + int testTrees[] = { 1, 4, 8, 16, 32 }; + + // evaluate kdtree for all parameter combinations + for (size_t i = 0; i < FLANN_ARRAY_LEN(testTrees); ++i) { + CostData cost; + cost.params["algorithm"] = FLANN_INDEX_KDTREE; + cost.params["trees"] = testTrees[i]; + + evaluate_kdtree(cost); + costs.push_back(cost); + } + + // Logger::info("KD-TREE, Step 2: simplex-downhill optimization\n"); + // + // const int n = 1; + // // choose initial simplex points as the best parameters so far + // int kdtreeNMPoints[n*(n+1)]; + // float kdtreeVals[n+1]; + // for (int i=0;i costs; + + int sampleSize = int(sample_fraction_ * dataset_.rows); + int testSampleSize = std::min(sampleSize / 10, 1000); + + Logger::info("Entering autotuning, dataset size: %d, sampleSize: %d, testSampleSize: %d, target precision: %g\n", dataset_.rows, sampleSize, testSampleSize, target_precision_); + + // For a very small dataset, it makes no sense to build any fancy index, just + // use linear search + if (testSampleSize < 10) { + Logger::info("Choosing linear, dataset too small\n"); + return LinearIndexParams(); + } + + // We use a fraction of the original dataset to speedup the autotune algorithm + sampledDataset_ = random_sample(dataset_, sampleSize); + // We use a cross-validation approach, first we sample a testset from the dataset + testDataset_ = random_sample(sampledDataset_, testSampleSize, true); + + // We compute the ground truth using linear search + Logger::info("Computing ground truth... \n"); + gt_matches_ = Matrix(new int[testDataset_.rows], testDataset_.rows, 1); + StartStopTimer t; + t.start(); + compute_ground_truth(sampledDataset_, testDataset_, gt_matches_, 0, distance_); + t.stop(); + + CostData linear_cost; + linear_cost.searchTimeCost = (float)t.value; + linear_cost.buildTimeCost = 0; + linear_cost.memoryCost = 0; + linear_cost.params["algorithm"] = FLANN_INDEX_LINEAR; + + costs.push_back(linear_cost); + + // Start parameter autotune process + Logger::info("Autotuning parameters...\n"); + + optimizeKMeans(costs); + optimizeKDTree(costs); + + float bestTimeCost = costs[0].searchTimeCost; + for (size_t i = 0; i < costs.size(); ++i) { + float timeCost = costs[i].buildTimeCost * build_weight_ + costs[i].searchTimeCost; + if (timeCost < bestTimeCost) { + bestTimeCost = timeCost; + } + } + + float bestCost = costs[0].searchTimeCost / bestTimeCost; + IndexParams bestParams = costs[0].params; + if (bestTimeCost > 0) { + for (size_t i = 0; i < costs.size(); ++i) { + float crtCost = (costs[i].buildTimeCost * build_weight_ + costs[i].searchTimeCost) / bestTimeCost + + memory_weight_ * costs[i].memoryCost; + if (crtCost < bestCost) { + bestCost = crtCost; + bestParams = costs[i].params; + } + } + } + + delete[] gt_matches_.data; + delete[] testDataset_.data; + delete[] sampledDataset_.data; + + return bestParams; + } + + + + /** + * Estimates the search time parameters needed to get the desired precision. + * Precondition: the index is built + * Postcondition: the searchParams will have the optimum params set, also the speedup obtained over linear search. + */ + float estimateSearchParams(SearchParams& searchParams) + { + const int nn = 1; + const size_t SAMPLE_COUNT = 1000; + + assert(bestIndex_ != NULL); // must have a valid index + + float speedup = 0; + + int samples = (int)std::min(dataset_.rows / 10, SAMPLE_COUNT); + if (samples > 0) { + Matrix testDataset = random_sample(dataset_, samples); + + Logger::info("Computing ground truth\n"); + + // we need to compute the ground truth first + Matrix gt_matches(new int[testDataset.rows], testDataset.rows, 1); + StartStopTimer t; + t.start(); + compute_ground_truth(dataset_, testDataset, gt_matches, 1, distance_); + t.stop(); + float linear = (float)t.value; + + int checks; + Logger::info("Estimating number of checks\n"); + + float searchTime; + float cb_index; + if (bestIndex_->getType() == FLANN_INDEX_KMEANS) { + Logger::info("KMeans algorithm, estimating cluster border factor\n"); + KMeansIndex* kmeans = (KMeansIndex*)bestIndex_; + float bestSearchTime = -1; + float best_cb_index = -1; + int best_checks = -1; + for (cb_index = 0; cb_index < 1.1f; cb_index += 0.2f) { + kmeans->set_cb_index(cb_index); + searchTime = test_index_precision(*kmeans, dataset_, testDataset, gt_matches, target_precision_, checks, distance_, nn, 1); + if ((searchTime < bestSearchTime) || (bestSearchTime == -1)) { + bestSearchTime = searchTime; + best_cb_index = cb_index; + best_checks = checks; + } + } + searchTime = bestSearchTime; + cb_index = best_cb_index; + checks = best_checks; + + kmeans->set_cb_index(best_cb_index); + Logger::info("Optimum cb_index: %g\n", cb_index); + bestParams_["cb_index"] = cb_index; + } + else { + searchTime = test_index_precision(*bestIndex_, dataset_, testDataset, gt_matches, target_precision_, checks, distance_, nn, 1); + } + + Logger::info("Required number of checks: %d \n", checks); + searchParams["checks"] = checks; + + speedup = linear / searchTime; + + delete[] gt_matches.data; + delete[] testDataset.data; + } + + return speedup; + } + +private: + NNIndex* bestIndex_; + + IndexParams bestParams_; + SearchParams bestSearchParams_; + + Matrix sampledDataset_; + Matrix testDataset_; + Matrix gt_matches_; + + float speedup_; + + /** + * The dataset used by this index + */ + const Matrix dataset_; + + /** + * Index parameters + */ + float target_precision_; + float build_weight_; + float memory_weight_; + float sample_fraction_; + + Distance distance_; + + +}; +} + +#endif /* OPENCV_FLANN_AUTOTUNED_INDEX_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/composite_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/composite_index.h new file mode 100644 index 0000000..5e12a17 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/composite_index.h @@ -0,0 +1,194 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_COMPOSITE_INDEX_H_ +#define OPENCV_FLANN_COMPOSITE_INDEX_H_ + +#include "general.h" +#include "nn_index.h" +#include "kdtree_index.h" +#include "kmeans_index.h" + +namespace cvflann +{ + +/** + * Index parameters for the CompositeIndex. + */ +struct CompositeIndexParams : public IndexParams +{ + CompositeIndexParams(int trees = 4, int branching = 32, int iterations = 11, + flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM, float cb_index = 0.2 ) + { + (*this)["algorithm"] = FLANN_INDEX_KMEANS; + // number of randomized trees to use (for kdtree) + (*this)["trees"] = trees; + // branching factor + (*this)["branching"] = branching; + // max iterations to perform in one kmeans clustering (kmeans tree) + (*this)["iterations"] = iterations; + // algorithm used for picking the initial cluster centers for kmeans tree + (*this)["centers_init"] = centers_init; + // cluster boundary index. Used when searching the kmeans tree + (*this)["cb_index"] = cb_index; + } +}; + + +/** + * This index builds a kd-tree index and a k-means index and performs nearest + * neighbour search both indexes. This gives a slight boost in search performance + * as some of the neighbours that are missed by one index are found by the other. + */ +template +class CompositeIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + /** + * Index constructor + * @param inputData dataset containing the points to index + * @param params Index parameters + * @param d Distance functor + * @return + */ + CompositeIndex(const Matrix& inputData, const IndexParams& params = CompositeIndexParams(), + Distance d = Distance()) : index_params_(params) + { + kdtree_index_ = new KDTreeIndex(inputData, params, d); + kmeans_index_ = new KMeansIndex(inputData, params, d); + + } + + CompositeIndex(const CompositeIndex&); + CompositeIndex& operator=(const CompositeIndex&); + + virtual ~CompositeIndex() + { + delete kdtree_index_; + delete kmeans_index_; + } + + /** + * @return The index type + */ + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_COMPOSITE; + } + + /** + * @return Size of the index + */ + size_t size() const CV_OVERRIDE + { + return kdtree_index_->size(); + } + + /** + * \returns The dimensionality of the features in this index. + */ + size_t veclen() const CV_OVERRIDE + { + return kdtree_index_->veclen(); + } + + /** + * \returns The amount of memory (in bytes) used by the index. + */ + int usedMemory() const CV_OVERRIDE + { + return kmeans_index_->usedMemory() + kdtree_index_->usedMemory(); + } + + /** + * \brief Builds the index + */ + void buildIndex() CV_OVERRIDE + { + Logger::info("Building kmeans tree...\n"); + kmeans_index_->buildIndex(); + Logger::info("Building kdtree tree...\n"); + kdtree_index_->buildIndex(); + } + + /** + * \brief Saves the index to a stream + * \param stream The stream to save the index to + */ + void saveIndex(FILE* stream) CV_OVERRIDE + { + kmeans_index_->saveIndex(stream); + kdtree_index_->saveIndex(stream); + } + + /** + * \brief Loads the index from a stream + * \param stream The stream from which the index is loaded + */ + void loadIndex(FILE* stream) CV_OVERRIDE + { + kmeans_index_->loadIndex(stream); + kdtree_index_->loadIndex(stream); + } + + /** + * \returns The index parameters + */ + IndexParams getParameters() const CV_OVERRIDE + { + return index_params_; + } + + /** + * \brief Method that searches for nearest-neighbours + */ + void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + kmeans_index_->findNeighbors(result, vec, searchParams); + kdtree_index_->findNeighbors(result, vec, searchParams); + } + +private: + /** The k-means index */ + KMeansIndex* kmeans_index_; + + /** The kd-tree index */ + KDTreeIndex* kdtree_index_; + + /** The index parameters */ + const IndexParams index_params_; +}; + +} + +#endif //OPENCV_FLANN_COMPOSITE_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/config.h b/LaiPuLaser/OpenCV/include/opencv2/flann/config.h new file mode 100644 index 0000000..56832fd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/config.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + + +#ifndef OPENCV_FLANN_CONFIG_H_ +#define OPENCV_FLANN_CONFIG_H_ + +#ifdef FLANN_VERSION_ +#undef FLANN_VERSION_ +#endif +#define FLANN_VERSION_ "1.6.10" + +#endif /* OPENCV_FLANN_CONFIG_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/defines.h b/LaiPuLaser/OpenCV/include/opencv2/flann/defines.h new file mode 100644 index 0000000..6fd53c2 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/defines.h @@ -0,0 +1,164 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + + +#ifndef OPENCV_FLANN_DEFINES_H_ +#define OPENCV_FLANN_DEFINES_H_ + +#include "config.h" + +#ifdef FLANN_EXPORT +#undef FLANN_EXPORT +#endif +#ifdef _WIN32 +/* win32 dll export/import directives */ + #ifdef FLANN_EXPORTS + #define FLANN_EXPORT __declspec(dllexport) + #elif defined(FLANN_STATIC) + #define FLANN_EXPORT + #else + #define FLANN_EXPORT __declspec(dllimport) + #endif +#else +/* unix needs nothing */ + #define FLANN_EXPORT +#endif + + +#undef FLANN_PLATFORM_32_BIT +#undef FLANN_PLATFORM_64_BIT +#if defined __amd64__ || defined __x86_64__ || defined _WIN64 || defined _M_X64 +#define FLANN_PLATFORM_64_BIT +#else +#define FLANN_PLATFORM_32_BIT +#endif + + +#undef FLANN_ARRAY_LEN +#define FLANN_ARRAY_LEN(a) (sizeof(a)/sizeof(a[0])) + +namespace cvflann { + +/* Nearest neighbour index algorithms */ +enum flann_algorithm_t +{ + FLANN_INDEX_LINEAR = 0, + FLANN_INDEX_KDTREE = 1, + FLANN_INDEX_KMEANS = 2, + FLANN_INDEX_COMPOSITE = 3, + FLANN_INDEX_KDTREE_SINGLE = 4, + FLANN_INDEX_HIERARCHICAL = 5, + FLANN_INDEX_LSH = 6, + FLANN_INDEX_SAVED = 254, + FLANN_INDEX_AUTOTUNED = 255, + + // deprecated constants, should use the FLANN_INDEX_* ones instead + LINEAR = 0, + KDTREE = 1, + KMEANS = 2, + COMPOSITE = 3, + KDTREE_SINGLE = 4, + SAVED = 254, + AUTOTUNED = 255 +}; + + + +enum flann_centers_init_t +{ + FLANN_CENTERS_RANDOM = 0, + FLANN_CENTERS_GONZALES = 1, + FLANN_CENTERS_KMEANSPP = 2, + FLANN_CENTERS_GROUPWISE = 3, + + // deprecated constants, should use the FLANN_CENTERS_* ones instead + CENTERS_RANDOM = 0, + CENTERS_GONZALES = 1, + CENTERS_KMEANSPP = 2 +}; + +enum flann_log_level_t +{ + FLANN_LOG_NONE = 0, + FLANN_LOG_FATAL = 1, + FLANN_LOG_ERROR = 2, + FLANN_LOG_WARN = 3, + FLANN_LOG_INFO = 4 +}; + +enum flann_distance_t +{ + FLANN_DIST_EUCLIDEAN = 1, + FLANN_DIST_L2 = 1, + FLANN_DIST_MANHATTAN = 2, + FLANN_DIST_L1 = 2, + FLANN_DIST_MINKOWSKI = 3, + FLANN_DIST_MAX = 4, + FLANN_DIST_HIST_INTERSECT = 5, + FLANN_DIST_HELLINGER = 6, + FLANN_DIST_CHI_SQUARE = 7, + FLANN_DIST_CS = 7, + FLANN_DIST_KULLBACK_LEIBLER = 8, + FLANN_DIST_KL = 8, + FLANN_DIST_HAMMING = 9, + + // deprecated constants, should use the FLANN_DIST_* ones instead + EUCLIDEAN = 1, + MANHATTAN = 2, + MINKOWSKI = 3, + MAX_DIST = 4, + HIST_INTERSECT = 5, + HELLINGER = 6, + CS = 7, + KL = 8, + KULLBACK_LEIBLER = 8 +}; + +enum flann_datatype_t +{ + FLANN_INT8 = 0, + FLANN_INT16 = 1, + FLANN_INT32 = 2, + FLANN_INT64 = 3, + FLANN_UINT8 = 4, + FLANN_UINT16 = 5, + FLANN_UINT32 = 6, + FLANN_UINT64 = 7, + FLANN_FLOAT32 = 8, + FLANN_FLOAT64 = 9 +}; + +enum +{ + FLANN_CHECKS_UNLIMITED = -1, + FLANN_CHECKS_AUTOTUNED = -2 +}; + +} + +#endif /* OPENCV_FLANN_DEFINES_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/dist.h b/LaiPuLaser/OpenCV/include/opencv2/flann/dist.h new file mode 100644 index 0000000..2bb4fc9 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/dist.h @@ -0,0 +1,904 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_DIST_H_ +#define OPENCV_FLANN_DIST_H_ + +#include +#include +#include +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +#else +#include +#endif + +#include "defines.h" + +#if defined _WIN32 && defined(_M_ARM) +# include +#endif + +#if defined(__ARM_NEON__) && !defined(__CUDACC__) +# include "arm_neon.h" +#endif + +namespace cvflann +{ + +template +inline T abs(T x) { return (x<0) ? -x : x; } + +template<> +inline int abs(int x) { return ::abs(x); } + +template<> +inline float abs(float x) { return fabsf(x); } + +template<> +inline double abs(double x) { return fabs(x); } + +template +struct Accumulator { typedef T Type; }; +template<> +struct Accumulator { typedef float Type; }; +template<> +struct Accumulator { typedef float Type; }; +template<> +struct Accumulator { typedef float Type; }; +template<> +struct Accumulator { typedef float Type; }; +template<> +struct Accumulator { typedef float Type; }; +template<> +struct Accumulator { typedef float Type; }; + +#undef True +#undef False + +class True +{ +}; + +class False +{ +}; + + +/** + * Squared Euclidean distance functor. + * + * This is the simpler, unrolled version. This is preferable for + * very low dimensionality data (eg 3D points) + */ +template +struct L2_Simple +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const + { + ResultType result = ResultType(); + ResultType diff; + for(size_t i = 0; i < size; ++i ) { + diff = *a++ - *b++; + result += diff*diff; + } + return result; + } + + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + return (a-b)*(a-b); + } +}; + + + +/** + * Squared Euclidean distance functor, optimized version + */ +template +struct L2 +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the squared Euclidean distance between two vectors. + * + * This is highly optimised, with loop unrolling, as it is one + * of the most expensive inner loops. + * + * The computation of squared root at the end is omitted for + * efficiency. + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType diff0, diff1, diff2, diff3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + diff0 = (ResultType)(a[0] - b[0]); + diff1 = (ResultType)(a[1] - b[1]); + diff2 = (ResultType)(a[2] - b[2]); + diff3 = (ResultType)(a[3] - b[3]); + result += diff0 * diff0 + diff1 * diff1 + diff2 * diff2 + diff3 * diff3; + a += 4; + b += 4; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + /* Process last 0-3 pixels. Not needed for standard vector lengths. */ + while (a < last) { + diff0 = (ResultType)(*a++ - *b++); + result += diff0 * diff0; + } + return result; + } + + /** + * Partial euclidean distance, using just one dimension. This is used by the + * kd-tree when computing partial distances while traversing the tree. + * + * Squared root is omitted for efficiency. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + return (a-b)*(a-b); + } +}; + + +/* + * Manhattan distance functor, optimized version + */ +template +struct L1 +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the Manhattan (L_1) distance between two vectors. + * + * This is highly optimised, with loop unrolling, as it is one + * of the most expensive inner loops. + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType diff0, diff1, diff2, diff3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + diff0 = (ResultType)abs(a[0] - b[0]); + diff1 = (ResultType)abs(a[1] - b[1]); + diff2 = (ResultType)abs(a[2] - b[2]); + diff3 = (ResultType)abs(a[3] - b[3]); + result += diff0 + diff1 + diff2 + diff3; + a += 4; + b += 4; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + /* Process last 0-3 pixels. Not needed for standard vector lengths. */ + while (a < last) { + diff0 = (ResultType)abs(*a++ - *b++); + result += diff0; + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + return abs(a-b); + } +}; + + + +template +struct MinkowskiDistance +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + int order; + + MinkowskiDistance(int order_) : order(order_) {} + + /** + * Compute the Minkowsky (L_p) distance between two vectors. + * + * This is highly optimised, with loop unrolling, as it is one + * of the most expensive inner loops. + * + * The computation of squared root at the end is omitted for + * efficiency. + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType diff0, diff1, diff2, diff3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + diff0 = (ResultType)abs(a[0] - b[0]); + diff1 = (ResultType)abs(a[1] - b[1]); + diff2 = (ResultType)abs(a[2] - b[2]); + diff3 = (ResultType)abs(a[3] - b[3]); + result += pow(diff0,order) + pow(diff1,order) + pow(diff2,order) + pow(diff3,order); + a += 4; + b += 4; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + /* Process last 0-3 pixels. Not needed for standard vector lengths. */ + while (a < last) { + diff0 = (ResultType)abs(*a++ - *b++); + result += pow(diff0,order); + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + return pow(static_cast(abs(a-b)),order); + } +}; + + + +template +struct MaxDistance +{ + typedef False is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the max distance (L_infinity) between two vectors. + * + * This distance is not a valid kdtree distance, it's not dimensionwise additive. + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType diff0, diff1, diff2, diff3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + diff0 = abs(a[0] - b[0]); + diff1 = abs(a[1] - b[1]); + diff2 = abs(a[2] - b[2]); + diff3 = abs(a[3] - b[3]); + if (diff0>result) {result = diff0; } + if (diff1>result) {result = diff1; } + if (diff2>result) {result = diff2; } + if (diff3>result) {result = diff3; } + a += 4; + b += 4; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + /* Process last 0-3 pixels. Not needed for standard vector lengths. */ + while (a < last) { + diff0 = abs(*a++ - *b++); + result = (diff0>result) ? diff0 : result; + } + return result; + } + + /* This distance functor is not dimension-wise additive, which + * makes it an invalid kd-tree distance, not implementing the accum_dist method */ + +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor + * bit count of A exclusive XOR'ed with B + */ +struct HammingLUT +{ + typedef False is_kdtree_distance; + typedef False is_vector_space_distance; + + typedef unsigned char ElementType; + typedef int ResultType; + + /** this will count the bits in a ^ b + */ + ResultType operator()(const unsigned char* a, const unsigned char* b, size_t size) const + { + static const uchar popCountTable[] = + { + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 + }; + ResultType result = 0; + for (size_t i = 0; i < size; i++) { + result += popCountTable[a[i] ^ b[i]]; + } + return result; + } +}; + +/** + * Hamming distance functor (pop count between two binary vectors, i.e. xor them and count the number of bits set) + * That code was taken from brief.cpp in OpenCV + */ +template +struct Hamming +{ + typedef False is_kdtree_distance; + typedef False is_vector_space_distance; + + + typedef T ElementType; + typedef int ResultType; + + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const + { + ResultType result = 0; +#if defined(__ARM_NEON__) && !defined(__CUDACC__) + { + uint32x4_t bits = vmovq_n_u32(0); + for (size_t i = 0; i < size; i += 16) { + uint8x16_t A_vec = vld1q_u8 (a + i); + uint8x16_t B_vec = vld1q_u8 (b + i); + uint8x16_t AxorB = veorq_u8 (A_vec, B_vec); + uint8x16_t bitsSet = vcntq_u8 (AxorB); + uint16x8_t bitSet8 = vpaddlq_u8 (bitsSet); + uint32x4_t bitSet4 = vpaddlq_u16 (bitSet8); + bits = vaddq_u32(bits, bitSet4); + } + uint64x2_t bitSet2 = vpaddlq_u32 (bits); + result = vgetq_lane_s32 (vreinterpretq_s32_u64(bitSet2),0); + result += vgetq_lane_s32 (vreinterpretq_s32_u64(bitSet2),2); + } +#elif __GNUC__ + { + //for portability just use unsigned long -- and use the __builtin_popcountll (see docs for __builtin_popcountll) + typedef unsigned long long pop_t; + const size_t modulo = size % sizeof(pop_t); + const pop_t* a2 = reinterpret_cast (a); + const pop_t* b2 = reinterpret_cast (b); + const pop_t* a2_end = a2 + (size / sizeof(pop_t)); + + for (; a2 != a2_end; ++a2, ++b2) result += __builtin_popcountll((*a2) ^ (*b2)); + + if (modulo) { + //in the case where size is not dividable by sizeof(size_t) + //need to mask off the bits at the end + pop_t a_final = 0, b_final = 0; + memcpy(&a_final, a2, modulo); + memcpy(&b_final, b2, modulo); + result += __builtin_popcountll(a_final ^ b_final); + } + } +#else // NO NEON and NOT GNUC + HammingLUT lut; + result = lut(reinterpret_cast (a), + reinterpret_cast (b), size); +#endif + return result; + } +}; + +template +struct Hamming2 +{ + typedef False is_kdtree_distance; + typedef False is_vector_space_distance; + + typedef T ElementType; + typedef int ResultType; + + /** This is popcount_3() from: + * http://en.wikipedia.org/wiki/Hamming_weight */ + unsigned int popcnt32(uint32_t n) const + { + n -= ((n >> 1) & 0x55555555); + n = (n & 0x33333333) + ((n >> 2) & 0x33333333); + return (((n + (n >> 4))& 0xF0F0F0F)* 0x1010101) >> 24; + } + +#ifdef FLANN_PLATFORM_64_BIT + unsigned int popcnt64(uint64_t n) const + { + n -= ((n >> 1) & 0x5555555555555555); + n = (n & 0x3333333333333333) + ((n >> 2) & 0x3333333333333333); + return (((n + (n >> 4))& 0x0f0f0f0f0f0f0f0f)* 0x0101010101010101) >> 56; + } +#endif + + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const + { +#ifdef FLANN_PLATFORM_64_BIT + const uint64_t* pa = reinterpret_cast(a); + const uint64_t* pb = reinterpret_cast(b); + ResultType result = 0; + size /= (sizeof(uint64_t)/sizeof(unsigned char)); + for(size_t i = 0; i < size; ++i ) { + result += popcnt64(*pa ^ *pb); + ++pa; + ++pb; + } +#else + const uint32_t* pa = reinterpret_cast(a); + const uint32_t* pb = reinterpret_cast(b); + ResultType result = 0; + size /= (sizeof(uint32_t)/sizeof(unsigned char)); + for(size_t i = 0; i < size; ++i ) { + result += popcnt32(*pa ^ *pb); + ++pa; + ++pb; + } +#endif + return result; + } +}; + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +template +struct HistIntersectionDistance +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the histogram intersection distance + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType min0, min1, min2, min3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + min0 = (ResultType)(a[0] < b[0] ? a[0] : b[0]); + min1 = (ResultType)(a[1] < b[1] ? a[1] : b[1]); + min2 = (ResultType)(a[2] < b[2] ? a[2] : b[2]); + min3 = (ResultType)(a[3] < b[3] ? a[3] : b[3]); + result += min0 + min1 + min2 + min3; + a += 4; + b += 4; + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + /* Process last 0-3 pixels. Not needed for standard vector lengths. */ + while (a < last) { + min0 = (ResultType)(*a < *b ? *a : *b); + result += min0; + ++a; + ++b; + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + return a +struct HellingerDistance +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the Hellinger distance + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const + { + ResultType result = ResultType(); + ResultType diff0, diff1, diff2, diff3; + Iterator1 last = a + size; + Iterator1 lastgroup = last - 3; + + /* Process 4 items with each loop for efficiency. */ + while (a < lastgroup) { + diff0 = sqrt(static_cast(a[0])) - sqrt(static_cast(b[0])); + diff1 = sqrt(static_cast(a[1])) - sqrt(static_cast(b[1])); + diff2 = sqrt(static_cast(a[2])) - sqrt(static_cast(b[2])); + diff3 = sqrt(static_cast(a[3])) - sqrt(static_cast(b[3])); + result += diff0 * diff0 + diff1 * diff1 + diff2 * diff2 + diff3 * diff3; + a += 4; + b += 4; + } + while (a < last) { + diff0 = sqrt(static_cast(*a++)) - sqrt(static_cast(*b++)); + result += diff0 * diff0; + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + ResultType diff = sqrt(static_cast(a)) - sqrt(static_cast(b)); + return diff * diff; + } +}; + + +template +struct ChiSquareDistance +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the chi-square distance + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + ResultType sum, diff; + Iterator1 last = a + size; + + while (a < last) { + sum = (ResultType)(*a + *b); + if (sum>0) { + diff = (ResultType)(*a - *b); + result += diff*diff/sum; + } + ++a; + ++b; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + ResultType result = ResultType(); + ResultType sum, diff; + + sum = (ResultType)(a+b); + if (sum>0) { + diff = (ResultType)(a-b); + result = diff*diff/sum; + } + return result; + } +}; + + +template +struct KL_Divergence +{ + typedef True is_kdtree_distance; + typedef True is_vector_space_distance; + + typedef T ElementType; + typedef typename Accumulator::Type ResultType; + + /** + * Compute the Kullback-Leibler divergence + */ + template + ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const + { + ResultType result = ResultType(); + Iterator1 last = a + size; + + while (a < last) { + if (* b != 0) { + ResultType ratio = (ResultType)(*a / *b); + if (ratio>0) { + result += *a * log(ratio); + } + } + ++a; + ++b; + + if ((worst_dist>0)&&(result>worst_dist)) { + return result; + } + } + return result; + } + + /** + * Partial distance, used by the kd-tree. + */ + template + inline ResultType accum_dist(const U& a, const V& b, int) const + { + ResultType result = ResultType(); + if( *b != 0 ) { + ResultType ratio = (ResultType)(a / b); + if (ratio>0) { + result = a * log(ratio); + } + } + return result; + } +}; + + + +/* + * This is a "zero iterator". It basically behaves like a zero filled + * array to all algorithms that use arrays as iterators (STL style). + * It's useful when there's a need to compute the distance between feature + * and origin it and allows for better compiler optimisation than using a + * zero-filled array. + */ +template +struct ZeroIterator +{ + + T operator*() + { + return 0; + } + + T operator[](int) + { + return 0; + } + + const ZeroIterator& operator ++() + { + return *this; + } + + ZeroIterator operator ++(int) + { + return *this; + } + + ZeroIterator& operator+=(int) + { + return *this; + } + +}; + + +/* + * Depending on processed distances, some of them are already squared (e.g. L2) + * and some are not (e.g.Hamming). In KMeans++ for instance we want to be sure + * we are working on ^2 distances, thus following templates to ensure that. + */ +template +struct squareDistance +{ + typedef typename Distance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist*dist; } +}; + + +template +struct squareDistance, ElementType> +{ + typedef typename L2_Simple::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + +template +struct squareDistance, ElementType> +{ + typedef typename L2::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + + +template +struct squareDistance, ElementType> +{ + typedef typename MinkowskiDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + +template +struct squareDistance, ElementType> +{ + typedef typename HellingerDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + +template +struct squareDistance, ElementType> +{ + typedef typename ChiSquareDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + + +template +typename Distance::ResultType ensureSquareDistance( typename Distance::ResultType dist ) +{ + typedef typename Distance::ElementType ElementType; + + squareDistance dummy; + return dummy( dist ); +} + + +/* + * ...and a template to ensure the user that he will process the normal distance, + * and not squared distance, without losing processing time calling sqrt(ensureSquareDistance) + * that will result in doing actually sqrt(dist*dist) for L1 distance for instance. + */ +template +struct simpleDistance +{ + typedef typename Distance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename L2_Simple::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename L2::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename MinkowskiDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename HellingerDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename ChiSquareDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +typename Distance::ResultType ensureSimpleDistance( typename Distance::ResultType dist ) +{ + typedef typename Distance::ElementType ElementType; + + simpleDistance dummy; + return dummy( dist ); +} + +} + +#endif //OPENCV_FLANN_DIST_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/dummy.h b/LaiPuLaser/OpenCV/include/opencv2/flann/dummy.h new file mode 100644 index 0000000..d6837e5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/dummy.h @@ -0,0 +1,13 @@ + +#ifndef OPENCV_FLANN_DUMMY_H_ +#define OPENCV_FLANN_DUMMY_H_ + +namespace cvflann +{ + +CV_DEPRECATED inline void dummyfunc() {} + +} + + +#endif /* OPENCV_FLANN_DUMMY_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/dynamic_bitset.h b/LaiPuLaser/OpenCV/include/opencv2/flann/dynamic_bitset.h new file mode 100644 index 0000000..923b658 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/dynamic_bitset.h @@ -0,0 +1,159 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +/*********************************************************************** + * Author: Vincent Rabaud + *************************************************************************/ + +#ifndef OPENCV_FLANN_DYNAMIC_BITSET_H_ +#define OPENCV_FLANN_DYNAMIC_BITSET_H_ + +#ifndef FLANN_USE_BOOST +# define FLANN_USE_BOOST 0 +#endif +//#define FLANN_USE_BOOST 1 +#if FLANN_USE_BOOST +#include +typedef boost::dynamic_bitset<> DynamicBitset; +#else + +#include + +#include "dist.h" + +namespace cvflann { + +/** Class re-implementing the boost version of it + * This helps not depending on boost, it also does not do the bound checks + * and has a way to reset a block for speed + */ +class DynamicBitset +{ +public: + /** default constructor + */ + DynamicBitset() : size_(0) + { + } + + /** only constructor we use in our code + * @param sz the size of the bitset (in bits) + */ + DynamicBitset(size_t sz) + { + resize(sz); + reset(); + } + + /** Sets all the bits to 0 + */ + void clear() + { + std::fill(bitset_.begin(), bitset_.end(), 0); + } + + /** @brief checks if the bitset is empty + * @return true if the bitset is empty + */ + bool empty() const + { + return bitset_.empty(); + } + + /** set all the bits to 0 + */ + void reset() + { + std::fill(bitset_.begin(), bitset_.end(), 0); + } + + /** @brief set one bit to 0 + * @param index + */ + void reset(size_t index) + { + bitset_[index / cell_bit_size_] &= ~(size_t(1) << (index % cell_bit_size_)); + } + + /** @brief sets a specific bit to 0, and more bits too + * This function is useful when resetting a given set of bits so that the + * whole bitset ends up being 0: if that's the case, we don't care about setting + * other bits to 0 + * @param index + */ + void reset_block(size_t index) + { + bitset_[index / cell_bit_size_] = 0; + } + + /** resize the bitset so that it contains at least sz bits + * @param sz + */ + void resize(size_t sz) + { + size_ = sz; + bitset_.resize(sz / cell_bit_size_ + 1); + } + + /** set a bit to true + * @param index the index of the bit to set to 1 + */ + void set(size_t index) + { + bitset_[index / cell_bit_size_] |= size_t(1) << (index % cell_bit_size_); + } + + /** gives the number of contained bits + */ + size_t size() const + { + return size_; + } + + /** check if a bit is set + * @param index the index of the bit to check + * @return true if the bit is set + */ + bool test(size_t index) const + { + return (bitset_[index / cell_bit_size_] & (size_t(1) << (index % cell_bit_size_))) != 0; + } + +private: + std::vector bitset_; + size_t size_; + static const unsigned int cell_bit_size_ = CHAR_BIT * sizeof(size_t); +}; + +} // namespace cvflann + +#endif + +#endif // OPENCV_FLANN_DYNAMIC_BITSET_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/flann.hpp b/LaiPuLaser/OpenCV/include/opencv2/flann/flann.hpp new file mode 100644 index 0000000..227683f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/flann.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/flann.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/flann_base.hpp b/LaiPuLaser/OpenCV/include/opencv2/flann/flann_base.hpp new file mode 100644 index 0000000..0ffb857 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/flann_base.hpp @@ -0,0 +1,295 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_BASE_HPP_ +#define OPENCV_FLANN_BASE_HPP_ + +#include +#include +#include + +#include "general.h" +#include "matrix.h" +#include "params.h" +#include "saving.h" + +#include "all_indices.h" + +namespace cvflann +{ + +/** + * Sets the log level used for all flann functions + * @param level Verbosity level + */ +inline void log_verbosity(int level) +{ + if (level >= 0) { + Logger::setLevel(level); + } +} + +/** + * (Deprecated) Index parameters for creating a saved index. + */ +struct SavedIndexParams : public IndexParams +{ + SavedIndexParams(cv::String filename) + { + (* this)["algorithm"] = FLANN_INDEX_SAVED; + (*this)["filename"] = filename; + } +}; + + +template +NNIndex* load_saved_index(const Matrix& dataset, const cv::String& filename, Distance distance) +{ + typedef typename Distance::ElementType ElementType; + + FILE* fin = fopen(filename.c_str(), "rb"); + if (fin == NULL) { + return NULL; + } + IndexHeader header = load_header(fin); + if (header.data_type != Datatype::type()) { + fclose(fin); + throw FLANNException("Datatype of saved index is different than of the one to be created."); + } + if ((size_t(header.rows) != dataset.rows)||(size_t(header.cols) != dataset.cols)) { + fclose(fin); + throw FLANNException("The index saved belongs to a different dataset"); + } + + IndexParams params; + params["algorithm"] = header.index_type; + NNIndex* nnIndex = create_index_by_type(dataset, params, distance); + nnIndex->loadIndex(fin); + fclose(fin); + + return nnIndex; +} + + +template +class Index : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + Index(const Matrix& features, const IndexParams& params, Distance distance = Distance() ) + : index_params_(params) + { + flann_algorithm_t index_type = get_param(params,"algorithm"); + loaded_ = false; + + if (index_type == FLANN_INDEX_SAVED) { + nnIndex_ = load_saved_index(features, get_param(params,"filename"), distance); + loaded_ = true; + } + else { + nnIndex_ = create_index_by_type(features, params, distance); + } + } + + ~Index() + { + delete nnIndex_; + } + + /** + * Builds the index. + */ + void buildIndex() CV_OVERRIDE + { + if (!loaded_) { + nnIndex_->buildIndex(); + } + } + + void save(cv::String filename) + { + FILE* fout = fopen(filename.c_str(), "wb"); + if (fout == NULL) { + throw FLANNException("Cannot open file"); + } + save_header(fout, *nnIndex_); + saveIndex(fout); + fclose(fout); + } + + /** + * \brief Saves the index to a stream + * \param stream The stream to save the index to + */ + virtual void saveIndex(FILE* stream) CV_OVERRIDE + { + nnIndex_->saveIndex(stream); + } + + /** + * \brief Loads the index from a stream + * \param stream The stream from which the index is loaded + */ + virtual void loadIndex(FILE* stream) CV_OVERRIDE + { + nnIndex_->loadIndex(stream); + } + + /** + * \returns number of features in this index. + */ + size_t veclen() const CV_OVERRIDE + { + return nnIndex_->veclen(); + } + + /** + * \returns The dimensionality of the features in this index. + */ + size_t size() const CV_OVERRIDE + { + return nnIndex_->size(); + } + + /** + * \returns The index type (kdtree, kmeans,...) + */ + flann_algorithm_t getType() const CV_OVERRIDE + { + return nnIndex_->getType(); + } + + /** + * \returns The amount of memory (in bytes) used by the index. + */ + virtual int usedMemory() const CV_OVERRIDE + { + return nnIndex_->usedMemory(); + } + + + /** + * \returns The index parameters + */ + IndexParams getParameters() const CV_OVERRIDE + { + return nnIndex_->getParameters(); + } + + /** + * \brief Perform k-nearest neighbor search + * \param[in] queries The query points for which to find the nearest neighbors + * \param[out] indices The indices of the nearest neighbors found + * \param[out] dists Distances to the nearest neighbors found + * \param[in] knn Number of nearest neighbors to return + * \param[in] params Search parameters + */ + void knnSearch(const Matrix& queries, Matrix& indices, Matrix& dists, int knn, const SearchParams& params) CV_OVERRIDE + { + nnIndex_->knnSearch(queries, indices, dists, knn, params); + } + + /** + * \brief Perform radius search + * \param[in] query The query point + * \param[out] indices The indinces of the neighbors found within the given radius + * \param[out] dists The distances to the nearest neighbors found + * \param[in] radius The radius used for search + * \param[in] params Search parameters + * \returns Number of neighbors found + */ + int radiusSearch(const Matrix& query, Matrix& indices, Matrix& dists, float radius, const SearchParams& params) CV_OVERRIDE + { + return nnIndex_->radiusSearch(query, indices, dists, radius, params); + } + + /** + * \brief Method that searches for nearest-neighbours + */ + void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + nnIndex_->findNeighbors(result, vec, searchParams); + } + + /** + * \brief Returns actual index + */ + CV_DEPRECATED NNIndex* getIndex() + { + return nnIndex_; + } + + /** + * \brief Returns index parameters. + * \deprecated use getParameters() instead. + */ + CV_DEPRECATED const IndexParams* getIndexParameters() + { + return &index_params_; + } + +private: + /** Pointer to actual index class */ + NNIndex* nnIndex_; + /** Indices if the index was loaded from a file */ + bool loaded_; + /** Parameters passed to the index */ + IndexParams index_params_; + + Index(const Index &); // copy disabled + Index& operator=(const Index &); // assign disabled +}; + +/** + * Performs a hierarchical clustering of the points passed as argument and then takes a cut in the + * the clustering tree to return a flat clustering. + * @param[in] points Points to be clustered + * @param centers The computed cluster centres. Matrix should be preallocated and centers.rows is the + * number of clusters requested. + * @param params Clustering parameters (The same as for cvflann::KMeansIndex) + * @param d Distance to be used for clustering (eg: cvflann::L2) + * @return number of clusters computed (can be different than clusters.rows and is the highest number + * of the form (branching-1)*K+1 smaller than clusters.rows). + */ +template +int hierarchicalClustering(const Matrix& points, Matrix& centers, + const KMeansIndexParams& params, Distance d = Distance()) +{ + KMeansIndex kmeans(points, params, d); + kmeans.buildIndex(); + + int clusterNum = kmeans.getClusterCenters(centers); + return clusterNum; +} + +} +#endif /* OPENCV_FLANN_BASE_HPP_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/general.h b/LaiPuLaser/OpenCV/include/opencv2/flann/general.h new file mode 100644 index 0000000..9d5402a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/general.h @@ -0,0 +1,50 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_GENERAL_H_ +#define OPENCV_FLANN_GENERAL_H_ + +#include "opencv2/core.hpp" + +namespace cvflann +{ + +class FLANNException : public cv::Exception +{ +public: + FLANNException(const char* message) : cv::Exception(0, message, "", __FILE__, __LINE__) { } + + FLANNException(const cv::String& message) : cv::Exception(0, message, "", __FILE__, __LINE__) { } +}; + +} + + +#endif /* OPENCV_FLANN_GENERAL_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/ground_truth.h b/LaiPuLaser/OpenCV/include/opencv2/flann/ground_truth.h new file mode 100644 index 0000000..fd8f3ae --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/ground_truth.h @@ -0,0 +1,94 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_GROUND_TRUTH_H_ +#define OPENCV_FLANN_GROUND_TRUTH_H_ + +#include "dist.h" +#include "matrix.h" + + +namespace cvflann +{ + +template +void find_nearest(const Matrix& dataset, typename Distance::ElementType* query, int* matches, int nn, + int skip = 0, Distance distance = Distance()) +{ + typedef typename Distance::ResultType DistanceType; + int n = nn + skip; + + std::vector match(n); + std::vector dists(n); + + dists[0] = distance(dataset[0], query, dataset.cols); + match[0] = 0; + int dcnt = 1; + + for (size_t i=1; i=1 && dists[j] +void compute_ground_truth(const Matrix& dataset, const Matrix& testset, Matrix& matches, + int skip=0, Distance d = Distance()) +{ + for (size_t i=0; i(dataset, testset[i], matches[i], (int)matches.cols, skip, d); + } +} + + +} + +#endif //OPENCV_FLANN_GROUND_TRUTH_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/heap.h b/LaiPuLaser/OpenCV/include/opencv2/flann/heap.h new file mode 100644 index 0000000..92a6ea6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/heap.h @@ -0,0 +1,165 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_HEAP_H_ +#define OPENCV_FLANN_HEAP_H_ + +#include +#include + +namespace cvflann +{ + +/** + * Priority Queue Implementation + * + * The priority queue is implemented with a heap. A heap is a complete + * (full) binary tree in which each parent is less than both of its + * children, but the order of the children is unspecified. + */ +template +class Heap +{ + + /** + * Storage array for the heap. + * Type T must be comparable. + */ + std::vector heap; + int length; + + /** + * Number of element in the heap + */ + int count; + + + +public: + /** + * Constructor. + * + * Params: + * sz = heap size + */ + + Heap(int sz) + { + length = sz; + heap.reserve(length); + count = 0; + } + + /** + * + * Returns: heap size + */ + int size() + { + return count; + } + + /** + * Tests if the heap is empty + * + * Returns: true is heap empty, false otherwise + */ + bool empty() + { + return size()==0; + } + + /** + * Clears the heap. + */ + void clear() + { + heap.clear(); + count = 0; + } + + struct CompareT + { + bool operator()(const T& t_1, const T& t_2) const + { + return t_2 < t_1; + } + }; + + /** + * Insert a new element in the heap. + * + * We select the next empty leaf node, and then keep moving any larger + * parents down until the right location is found to store this element. + * + * Params: + * value = the new element to be inserted in the heap + */ + void insert(T value) + { + /* If heap is full, then return without adding this element. */ + if (count == length) { + return; + } + + heap.push_back(value); + static CompareT compareT; + std::push_heap(heap.begin(), heap.end(), compareT); + ++count; + } + + + + /** + * Returns the node of minimum value from the heap (top of the heap). + * + * Params: + * value = out parameter used to return the min element + * Returns: false if heap empty + */ + bool popMin(T& value) + { + if (count == 0) { + return false; + } + + value = heap[0]; + static CompareT compareT; + std::pop_heap(heap.begin(), heap.end(), compareT); + heap.pop_back(); + --count; + + return true; /* Return old last node. */ + } +}; + +} + +#endif //OPENCV_FLANN_HEAP_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/hierarchical_clustering_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/hierarchical_clustering_index.h new file mode 100644 index 0000000..2a947da --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/hierarchical_clustering_index.h @@ -0,0 +1,848 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_ +#define OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_ + +#include +#include +#include +#include +#include + +#include "general.h" +#include "nn_index.h" +#include "dist.h" +#include "matrix.h" +#include "result_set.h" +#include "heap.h" +#include "allocator.h" +#include "random.h" +#include "saving.h" + + +namespace cvflann +{ + +struct HierarchicalClusteringIndexParams : public IndexParams +{ + HierarchicalClusteringIndexParams(int branching = 32, + flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM, + int trees = 4, int leaf_size = 100) + { + (*this)["algorithm"] = FLANN_INDEX_HIERARCHICAL; + // The branching factor used in the hierarchical clustering + (*this)["branching"] = branching; + // Algorithm used for picking the initial cluster centers + (*this)["centers_init"] = centers_init; + // number of parallel trees to build + (*this)["trees"] = trees; + // maximum leaf size + (*this)["leaf_size"] = leaf_size; + } +}; + + +/** + * Hierarchical index + * + * Contains a tree constructed through a hierarchical clustering + * and other information for indexing a set of points for nearest-neighbour matching. + */ +template +class HierarchicalClusteringIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + +private: + + + typedef void (HierarchicalClusteringIndex::* centersAlgFunction)(int, int*, int, int*, int&); + + /** + * The function used for choosing the cluster centers. + */ + centersAlgFunction chooseCenters; + + + + /** + * Chooses the initial centers in the k-means clustering in a random manner. + * + * Params: + * k = number of centers + * vecs = the dataset of points + * indices = indices in the dataset + * indices_length = length of indices vector + * + */ + void chooseCentersRandom(int k, int* dsindices, int indices_length, int* centers, int& centers_length) + { + UniqueRandom r(indices_length); + + int index; + for (index=0; index=0 && rnd < n); + + centers[0] = dsindices[rnd]; + + int index; + for (index=1; indexbest_val) { + best_val = dist; + best_index = j; + } + } + if (best_index!=-1) { + centers[index] = dsindices[best_index]; + } + else { + break; + } + } + centers_length = index; + } + + + /** + * Chooses the initial centers in the k-means using the algorithm + * proposed in the KMeans++ paper: + * Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding + * + * Implementation of this function was converted from the one provided in Arthur's code. + * + * Params: + * k = number of centers + * vecs = the dataset of points + * indices = indices in the dataset + * Returns: + */ + void chooseCentersKMeanspp(int k, int* dsindices, int indices_length, int* centers, int& centers_length) + { + int n = indices_length; + + double currentPot = 0; + DistanceType* closestDistSq = new DistanceType[n]; + + // Choose one random center and set the closestDistSq values + int index = rand_int(n); + assert(index >=0 && index < n); + centers[0] = dsindices[index]; + + // Computing distance^2 will have the advantage of even higher probability further to pick new centers + // far from previous centers (and this complies to "k-means++: the advantages of careful seeding" article) + for (int i = 0; i < n; i++) { + closestDistSq[i] = distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols); + closestDistSq[i] = ensureSquareDistance( closestDistSq[i] ); + currentPot += closestDistSq[i]; + } + + + const int numLocalTries = 1; + + // Choose each center + int centerCount; + for (centerCount = 1; centerCount < k; centerCount++) { + + // Repeat several trials + double bestNewPot = -1; + int bestNewIndex = 0; + for (int localTrial = 0; localTrial < numLocalTries; localTrial++) { + + // Choose our center - have to be slightly careful to return a valid answer even accounting + // for possible rounding errors + double randVal = rand_double(currentPot); + for (index = 0; index < n-1; index++) { + if (randVal <= closestDistSq[index]) break; + else randVal -= closestDistSq[index]; + } + + // Compute the new potential + double newPot = 0; + for (int i = 0; i < n; i++) { + DistanceType dist = distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols); + newPot += std::min( ensureSquareDistance(dist), closestDistSq[i] ); + } + + // Store the best result + if ((bestNewPot < 0)||(newPot < bestNewPot)) { + bestNewPot = newPot; + bestNewIndex = index; + } + } + + // Add the appropriate center + centers[centerCount] = dsindices[bestNewIndex]; + currentPot = bestNewPot; + for (int i = 0; i < n; i++) { + DistanceType dist = distance(dataset[dsindices[i]], dataset[dsindices[bestNewIndex]], dataset.cols); + closestDistSq[i] = std::min( ensureSquareDistance(dist), closestDistSq[i] ); + } + } + + centers_length = centerCount; + + delete[] closestDistSq; + } + + + /** + * Chooses the initial centers in a way inspired by Gonzales (by Pierre-Emmanuel Viel): + * select the first point of the list as a candidate, then parse the points list. If another + * point is further than current candidate from the other centers, test if it is a good center + * of a local aggregation. If it is, replace current candidate by this point. And so on... + * + * Used with KMeansIndex that computes centers coordinates by averaging positions of clusters points, + * this doesn't make a real difference with previous methods. But used with HierarchicalClusteringIndex + * class that pick centers among existing points instead of computing the barycenters, there is a real + * improvement. + * + * Params: + * k = number of centers + * vecs = the dataset of points + * indices = indices in the dataset + * Returns: + */ + void GroupWiseCenterChooser(int k, int* dsindices, int indices_length, int* centers, int& centers_length) + { + const float kSpeedUpFactor = 1.3f; + + int n = indices_length; + + DistanceType* closestDistSq = new DistanceType[n]; + + // Choose one random center and set the closestDistSq values + int index = rand_int(n); + assert(index >=0 && index < n); + centers[0] = dsindices[index]; + + for (int i = 0; i < n; i++) { + closestDistSq[i] = distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols); + } + + + // Choose each center + int centerCount; + for (centerCount = 1; centerCount < k; centerCount++) { + + // Repeat several trials + double bestNewPot = -1; + int bestNewIndex = 0; + DistanceType furthest = 0; + for (index = 0; index < n; index++) { + + // We will test only the potential of the points further than current candidate + if( closestDistSq[index] > kSpeedUpFactor * (float)furthest ) { + + // Compute the new potential + double newPot = 0; + for (int i = 0; i < n; i++) { + newPot += std::min( distance(dataset[dsindices[i]], dataset[dsindices[index]], dataset.cols) + , closestDistSq[i] ); + } + + // Store the best result + if ((bestNewPot < 0)||(newPot <= bestNewPot)) { + bestNewPot = newPot; + bestNewIndex = index; + furthest = closestDistSq[index]; + } + } + } + + // Add the appropriate center + centers[centerCount] = dsindices[bestNewIndex]; + for (int i = 0; i < n; i++) { + closestDistSq[i] = std::min( distance(dataset[dsindices[i]], dataset[dsindices[bestNewIndex]], dataset.cols) + , closestDistSq[i] ); + } + } + + centers_length = centerCount; + + delete[] closestDistSq; + } + + +public: + + + /** + * Index constructor + * + * Params: + * inputData = dataset with the input features + * params = parameters passed to the hierarchical k-means algorithm + */ + HierarchicalClusteringIndex(const Matrix& inputData, const IndexParams& index_params = HierarchicalClusteringIndexParams(), + Distance d = Distance()) + : dataset(inputData), params(index_params), root(NULL), indices(NULL), distance(d) + { + memoryCounter = 0; + + size_ = dataset.rows; + veclen_ = dataset.cols; + + branching_ = get_param(params,"branching",32); + centers_init_ = get_param(params,"centers_init", FLANN_CENTERS_RANDOM); + trees_ = get_param(params,"trees",4); + leaf_size_ = get_param(params,"leaf_size",100); + + if (centers_init_==FLANN_CENTERS_RANDOM) { + chooseCenters = &HierarchicalClusteringIndex::chooseCentersRandom; + } + else if (centers_init_==FLANN_CENTERS_GONZALES) { + chooseCenters = &HierarchicalClusteringIndex::chooseCentersGonzales; + } + else if (centers_init_==FLANN_CENTERS_KMEANSPP) { + chooseCenters = &HierarchicalClusteringIndex::chooseCentersKMeanspp; + } + else if (centers_init_==FLANN_CENTERS_GROUPWISE) { + chooseCenters = &HierarchicalClusteringIndex::GroupWiseCenterChooser; + } + else { + throw FLANNException("Unknown algorithm for choosing initial centers."); + } + + trees_ = get_param(params,"trees",4); + root = new NodePtr[trees_]; + indices = new int*[trees_]; + + for (int i=0; i(); + computeClustering(root[i], indices[i], (int)size_, branching_,0); + } + } + + + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_HIERARCHICAL; + } + + + void saveIndex(FILE* stream) CV_OVERRIDE + { + save_value(stream, branching_); + save_value(stream, trees_); + save_value(stream, centers_init_); + save_value(stream, leaf_size_); + save_value(stream, memoryCounter); + for (int i=0; i& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + + int maxChecks = get_param(searchParams,"checks",32); + + // Priority queue storing intermediate branches in the best-bin-first search + Heap* heap = new Heap((int)size_); + + std::vector checked(size_,false); + int checks = 0; + for (int i=0; ipopMin(branch) && (checks BranchSt; + + + + void save_tree(FILE* stream, NodePtr node, int num) + { + save_value(stream, *node); + if (node->childs==NULL) { + int indices_offset = (int)(node->indices - indices[num]); + save_value(stream, indices_offset); + } + else { + for(int i=0; ichilds[i], num); + } + } + } + + + void load_tree(FILE* stream, NodePtr& node, int num) + { + node = pool.allocate(); + load_value(stream, *node); + if (node->childs==NULL) { + int indices_offset; + load_value(stream, indices_offset); + node->indices = indices[num] + indices_offset; + } + else { + node->childs = pool.allocate(branching_); + for(int i=0; ichilds[i], num); + } + } + } + + + + + void computeLabels(int* dsindices, int indices_length, int* centers, int centers_length, int* labels, DistanceType& cost) + { + cost = 0; + for (int i=0; inew_dist) { + labels[i] = j; + dist = new_dist; + } + } + cost += dist; + } + } + + /** + * The method responsible with actually doing the recursive hierarchical + * clustering + * + * Params: + * node = the node to cluster + * indices = indices of the points belonging to the current node + * branching = the branching factor to use in the clustering + * + * TODO: for 1-sized clusters don't store a cluster center (it's the same as the single cluster point) + */ + void computeClustering(NodePtr node, int* dsindices, int indices_length, int branching, int level) + { + node->size = indices_length; + node->level = level; + + if (indices_length < leaf_size_) { // leaf node + node->indices = dsindices; + std::sort(node->indices,node->indices+indices_length); + node->childs = NULL; + return; + } + + std::vector centers(branching); + std::vector labels(indices_length); + + int centers_length; + (this->*chooseCenters)(branching, dsindices, indices_length, ¢ers[0], centers_length); + + if (centers_lengthindices = dsindices; + std::sort(node->indices,node->indices+indices_length); + node->childs = NULL; + return; + } + + + // assign points to clusters + DistanceType cost; + computeLabels(dsindices, indices_length, ¢ers[0], centers_length, &labels[0], cost); + + node->childs = pool.allocate(branching); + int start = 0; + int end = start; + for (int i=0; ichilds[i] = pool.allocate(); + node->childs[i]->pivot = centers[i]; + node->childs[i]->indices = NULL; + computeClustering(node->childs[i],dsindices+start, end-start, branching, level+1); + start=end; + } + } + + + + /** + * Performs one descent in the hierarchical k-means tree. The branches not + * visited are stored in a priority queue. + * + * Params: + * node = node to explore + * result = container for the k-nearest neighbors found + * vec = query points + * checks = how many points in the dataset have been checked so far + * maxChecks = maximum dataset points to checks + */ + + + void findNN(NodePtr node, ResultSet& result, const ElementType* vec, int& checks, int maxChecks, + Heap* heap, std::vector& checked) + { + if (node->childs==NULL) { + if (checks>=maxChecks) { + if (result.full()) return; + } + for (int i=0; isize; ++i) { + int index = node->indices[i]; + if (!checked[index]) { + DistanceType dist = distance(dataset[index], vec, veclen_); + result.addPoint(dist, index); + checked[index] = true; + ++checks; + } + } + } + else { + DistanceType* domain_distances = new DistanceType[branching_]; + int best_index = 0; + domain_distances[best_index] = distance(vec, dataset[node->childs[best_index]->pivot], veclen_); + for (int i=1; ichilds[i]->pivot], veclen_); + if (domain_distances[i]insert(BranchSt(node->childs[i],domain_distances[i])); + } + } + delete[] domain_distances; + findNN(node->childs[best_index],result,vec, checks, maxChecks, heap, checked); + } + } + +private: + + + /** + * The dataset used by this index + */ + const Matrix dataset; + + /** + * Parameters used by this index + */ + IndexParams params; + + + /** + * Number of features in the dataset. + */ + size_t size_; + + /** + * Length of each feature. + */ + size_t veclen_; + + /** + * The root node in the tree. + */ + NodePtr* root; + + /** + * Array of indices to vectors in the dataset. + */ + int** indices; + + + /** + * The distance + */ + Distance distance; + + /** + * Pooled memory allocator. + * + * Using a pooled memory allocator is more efficient + * than allocating memory directly when there is a large + * number small of memory allocations. + */ + PooledAllocator pool; + + /** + * Memory occupied by the index. + */ + int memoryCounter; + + /** index parameters */ + int branching_; + int trees_; + flann_centers_init_t centers_init_; + int leaf_size_; + + +}; + +} + +#endif /* OPENCV_FLANN_HIERARCHICAL_CLUSTERING_INDEX_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/index_testing.h b/LaiPuLaser/OpenCV/include/opencv2/flann/index_testing.h new file mode 100644 index 0000000..d764004 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/index_testing.h @@ -0,0 +1,318 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_INDEX_TESTING_H_ +#define OPENCV_FLANN_INDEX_TESTING_H_ + +#include +#include +#include + +#include "matrix.h" +#include "nn_index.h" +#include "result_set.h" +#include "logger.h" +#include "timer.h" + + +namespace cvflann +{ + +inline int countCorrectMatches(int* neighbors, int* groundTruth, int n) +{ + int count = 0; + for (int i=0; i +typename Distance::ResultType computeDistanceRaport(const Matrix& inputData, typename Distance::ElementType* target, + int* neighbors, int* groundTruth, int veclen, int n, const Distance& distance) +{ + typedef typename Distance::ResultType DistanceType; + + DistanceType ret = 0; + for (int i=0; i +float search_with_ground_truth(NNIndex& index, const Matrix& inputData, + const Matrix& testData, const Matrix& matches, int nn, int checks, + float& time, typename Distance::ResultType& dist, const Distance& distance, int skipMatches) +{ + typedef typename Distance::ResultType DistanceType; + + if (matches.cols resultSet(nn+skipMatches); + SearchParams searchParams(checks); + + std::vector indices(nn+skipMatches); + std::vector dists(nn+skipMatches); + int* neighbors = &indices[skipMatches]; + + int correct = 0; + DistanceType distR = 0; + StartStopTimer t; + int repeats = 0; + while (t.value<0.2) { + repeats++; + t.start(); + correct = 0; + distR = 0; + for (size_t i = 0; i < testData.rows; i++) { + resultSet.init(&indices[0], &dists[0]); + index.findNeighbors(resultSet, testData[i], searchParams); + + correct += countCorrectMatches(neighbors,matches[i], nn); + distR += computeDistanceRaport(inputData, testData[i], neighbors, matches[i], (int)testData.cols, nn, distance); + } + t.stop(); + } + time = float(t.value/repeats); + + float precicion = (float)correct/(nn*testData.rows); + + dist = distR/(testData.rows*nn); + + Logger::info("%8d %10.4g %10.5g %10.5g %10.5g\n", + checks, precicion, time, 1000.0 * time / testData.rows, dist); + + return precicion; +} + + +template +float test_index_checks(NNIndex& index, const Matrix& inputData, + const Matrix& testData, const Matrix& matches, + int checks, float& precision, const Distance& distance, int nn = 1, int skipMatches = 0) +{ + typedef typename Distance::ResultType DistanceType; + + Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n"); + Logger::info("---------------------------------------------------------\n"); + + float time = 0; + DistanceType dist = 0; + precision = search_with_ground_truth(index, inputData, testData, matches, nn, checks, time, dist, distance, skipMatches); + + return time; +} + +template +float test_index_precision(NNIndex& index, const Matrix& inputData, + const Matrix& testData, const Matrix& matches, + float precision, int& checks, const Distance& distance, int nn = 1, int skipMatches = 0) +{ + typedef typename Distance::ResultType DistanceType; + const float SEARCH_EPS = 0.001f; + + Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n"); + Logger::info("---------------------------------------------------------\n"); + + int c2 = 1; + float p2; + int c1 = 1; + //float p1; + float time; + DistanceType dist; + + p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches); + + if (p2>precision) { + Logger::info("Got as close as I can\n"); + checks = c2; + return time; + } + + while (p2SEARCH_EPS) { + Logger::info("Start linear estimation\n"); + // after we got to values in the vecinity of the desired precision + // use linear approximation get a better estimation + + cx = (c1+c2)/2; + realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches); + while (fabs(realPrecision-precision)>SEARCH_EPS) { + + if (realPrecision +void test_index_precisions(NNIndex& index, const Matrix& inputData, + const Matrix& testData, const Matrix& matches, + float* precisions, int precisions_length, const Distance& distance, int nn = 1, int skipMatches = 0, float maxTime = 0) +{ + typedef typename Distance::ResultType DistanceType; + + const float SEARCH_EPS = 0.001; + + // make sure precisions array is sorted + std::sort(precisions, precisions+precisions_length); + + int pindex = 0; + float precision = precisions[pindex]; + + Logger::info(" Nodes Precision(%) Time(s) Time/vec(ms) Mean dist\n"); + Logger::info("---------------------------------------------------------\n"); + + int c2 = 1; + float p2; + + int c1 = 1; + float p1; + + float time; + DistanceType dist; + + p2 = search_with_ground_truth(index, inputData, testData, matches, nn, c2, time, dist, distance, skipMatches); + + // if precision for 1 run down the tree is already + // better then some of the requested precisions, then + // skip those + while (precisions[pindex] 0)&&(time > maxTime)&&(p2SEARCH_EPS) { + Logger::info("Start linear estimation\n"); + // after we got to values in the vecinity of the desired precision + // use linear approximation get a better estimation + + cx = (c1+c2)/2; + realPrecision = search_with_ground_truth(index, inputData, testData, matches, nn, cx, time, dist, distance, skipMatches); + while (fabs(realPrecision-precision)>SEARCH_EPS) { + + if (realPrecision +#include +#include +#include + +#include "general.h" +#include "nn_index.h" +#include "dynamic_bitset.h" +#include "matrix.h" +#include "result_set.h" +#include "heap.h" +#include "allocator.h" +#include "random.h" +#include "saving.h" + + +namespace cvflann +{ + +struct KDTreeIndexParams : public IndexParams +{ + KDTreeIndexParams(int trees = 4) + { + (*this)["algorithm"] = FLANN_INDEX_KDTREE; + (*this)["trees"] = trees; + } +}; + + +/** + * Randomized kd-tree index + * + * Contains the k-d trees and other information for indexing a set of points + * for nearest-neighbor matching. + */ +template +class KDTreeIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + + /** + * KDTree constructor + * + * Params: + * inputData = dataset with the input features + * params = parameters passed to the kdtree algorithm + */ + KDTreeIndex(const Matrix& inputData, const IndexParams& params = KDTreeIndexParams(), + Distance d = Distance() ) : + dataset_(inputData), index_params_(params), distance_(d) + { + size_ = dataset_.rows; + veclen_ = dataset_.cols; + + trees_ = get_param(index_params_,"trees",4); + tree_roots_ = new NodePtr[trees_]; + + // Create a permutable array of indices to the input vectors. + vind_.resize(size_); + for (size_t i = 0; i < size_; ++i) { + vind_[i] = int(i); + } + + mean_ = new DistanceType[veclen_]; + var_ = new DistanceType[veclen_]; + } + + + KDTreeIndex(const KDTreeIndex&); + KDTreeIndex& operator=(const KDTreeIndex&); + + /** + * Standard destructor + */ + ~KDTreeIndex() + { + if (tree_roots_!=NULL) { + delete[] tree_roots_; + } + delete[] mean_; + delete[] var_; + } + + /** + * Builds the index + */ + void buildIndex() CV_OVERRIDE + { + /* Construct the randomized trees. */ + for (int i = 0; i < trees_; i++) { + /* Randomize the order of vectors to allow for unbiased sampling. */ +#ifndef OPENCV_FLANN_USE_STD_RAND + cv::randShuffle(vind_); +#else + std::random_shuffle(vind_.begin(), vind_.end()); +#endif + + tree_roots_[i] = divideTree(&vind_[0], int(size_) ); + } + } + + + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_KDTREE; + } + + + void saveIndex(FILE* stream) CV_OVERRIDE + { + save_value(stream, trees_); + for (int i=0; i& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + int maxChecks = get_param(searchParams,"checks", 32); + float epsError = 1+get_param(searchParams,"eps",0.0f); + + if (maxChecks==FLANN_CHECKS_UNLIMITED) { + getExactNeighbors(result, vec, epsError); + } + else { + getNeighbors(result, vec, maxChecks, epsError); + } + } + + IndexParams getParameters() const CV_OVERRIDE + { + return index_params_; + } + +private: + + + /*--------------------- Internal Data Structures --------------------------*/ + struct Node + { + /** + * Dimension used for subdivision. + */ + int divfeat; + /** + * The values used for subdivision. + */ + DistanceType divval; + /** + * The child nodes. + */ + Node* child1, * child2; + }; + typedef Node* NodePtr; + typedef BranchStruct BranchSt; + typedef BranchSt* Branch; + + + + void save_tree(FILE* stream, NodePtr tree) + { + save_value(stream, *tree); + if (tree->child1!=NULL) { + save_tree(stream, tree->child1); + } + if (tree->child2!=NULL) { + save_tree(stream, tree->child2); + } + } + + + void load_tree(FILE* stream, NodePtr& tree) + { + tree = pool_.allocate(); + load_value(stream, *tree); + if (tree->child1!=NULL) { + load_tree(stream, tree->child1); + } + if (tree->child2!=NULL) { + load_tree(stream, tree->child2); + } + } + + + /** + * Create a tree node that subdivides the list of vecs from vind[first] + * to vind[last]. The routine is called recursively on each sublist. + * Place a pointer to this new tree node in the location pTree. + * + * Params: pTree = the new node to create + * first = index of the first vector + * last = index of the last vector + */ + NodePtr divideTree(int* ind, int count) + { + NodePtr node = pool_.allocate(); // allocate memory + + /* If too few exemplars remain, then make this a leaf node. */ + if ( count == 1) { + node->child1 = node->child2 = NULL; /* Mark as leaf node. */ + node->divfeat = *ind; /* Store index of this vec. */ + } + else { + int idx; + int cutfeat; + DistanceType cutval; + meanSplit(ind, count, idx, cutfeat, cutval); + + node->divfeat = cutfeat; + node->divval = cutval; + node->child1 = divideTree(ind, idx); + node->child2 = divideTree(ind+idx, count-idx); + } + + return node; + } + + + /** + * Choose which feature to use in order to subdivide this set of vectors. + * Make a random choice among those with the highest variance, and use + * its variance as the threshold value. + */ + void meanSplit(int* ind, int count, int& index, int& cutfeat, DistanceType& cutval) + { + memset(mean_,0,veclen_*sizeof(DistanceType)); + memset(var_,0,veclen_*sizeof(DistanceType)); + + /* Compute mean values. Only the first SAMPLE_MEAN values need to be + sampled to get a good estimate. + */ + int cnt = std::min((int)SAMPLE_MEAN+1, count); + for (int j = 0; j < cnt; ++j) { + ElementType* v = dataset_[ind[j]]; + for (size_t k=0; kcount/2) index = lim1; + else if (lim2 v[topind[num-1]])) { + /* Put this element at end of topind. */ + if (num < RAND_DIM) { + topind[num++] = i; /* Add to list. */ + } + else { + topind[num-1] = i; /* Replace last element. */ + } + /* Bubble end value down to right location by repeated swapping. */ + int j = num - 1; + while (j > 0 && v[topind[j]] > v[topind[j-1]]) { + std::swap(topind[j], topind[j-1]); + --j; + } + } + } + /* Select a random integer in range [0,num-1], and return that index. */ + int rnd = rand_int(num); + return (int)topind[rnd]; + } + + + /** + * Subdivide the list of points by a plane perpendicular on axe corresponding + * to the 'cutfeat' dimension at 'cutval' position. + * + * On return: + * dataset[ind[0..lim1-1]][cutfeat]cutval + */ + void planeSplit(int* ind, int count, int cutfeat, DistanceType cutval, int& lim1, int& lim2) + { + /* Move vector indices for left subtree to front of list. */ + int left = 0; + int right = count-1; + for (;; ) { + while (left<=right && dataset_[ind[left]][cutfeat]=cutval) --right; + if (left>right) break; + std::swap(ind[left], ind[right]); ++left; --right; + } + lim1 = left; + right = count-1; + for (;; ) { + while (left<=right && dataset_[ind[left]][cutfeat]<=cutval) ++left; + while (left<=right && dataset_[ind[right]][cutfeat]>cutval) --right; + if (left>right) break; + std::swap(ind[left], ind[right]); ++left; --right; + } + lim2 = left; + } + + /** + * Performs an exact nearest neighbor search. The exact search performs a full + * traversal of the tree. + */ + void getExactNeighbors(ResultSet& result, const ElementType* vec, float epsError) + { + // checkID -= 1; /* Set a different unique ID for each search. */ + + if (trees_ > 1) { + fprintf(stderr,"It doesn't make any sense to use more than one tree for exact search"); + } + if (trees_>0) { + searchLevelExact(result, vec, tree_roots_[0], 0.0, epsError); + } + assert(result.full()); + } + + /** + * Performs the approximate nearest-neighbor search. The search is approximate + * because the tree traversal is abandoned after a given number of descends in + * the tree. + */ + void getNeighbors(ResultSet& result, const ElementType* vec, int maxCheck, float epsError) + { + int i; + BranchSt branch; + + int checkCount = 0; + Heap* heap = new Heap((int)size_); + DynamicBitset checked(size_); + + /* Search once through each tree down to root. */ + for (i = 0; i < trees_; ++i) { + searchLevel(result, vec, tree_roots_[i], 0, checkCount, maxCheck, epsError, heap, checked); + } + + /* Keep searching other branches from heap until finished. */ + while ( heap->popMin(branch) && (checkCount < maxCheck || !result.full() )) { + searchLevel(result, vec, branch.node, branch.mindist, checkCount, maxCheck, epsError, heap, checked); + } + + delete heap; + + assert(result.full()); + } + + + /** + * Search starting from a given node of the tree. Based on any mismatches at + * higher levels, all exemplars below this level must have a distance of + * at least "mindistsq". + */ + void searchLevel(ResultSet& result_set, const ElementType* vec, NodePtr node, DistanceType mindist, int& checkCount, int maxCheck, + float epsError, Heap* heap, DynamicBitset& checked) + { + if (result_set.worstDist()child1 == NULL)&&(node->child2 == NULL)) { + /* Do not check same node more than once when searching multiple trees. + Once a vector is checked, we set its location in vind to the + current checkID. + */ + int index = node->divfeat; + if ( checked.test(index) || ((checkCount>=maxCheck)&& result_set.full()) ) return; + checked.set(index); + checkCount++; + + DistanceType dist = distance_(dataset_[index], vec, veclen_); + result_set.addPoint(dist,index); + + return; + } + + /* Which child branch should be taken first? */ + ElementType val = vec[node->divfeat]; + DistanceType diff = val - node->divval; + NodePtr bestChild = (diff < 0) ? node->child1 : node->child2; + NodePtr otherChild = (diff < 0) ? node->child2 : node->child1; + + /* Create a branch record for the branch not taken. Add distance + of this feature boundary (we don't attempt to correct for any + use of this feature in a parent node, which is unlikely to + happen and would have only a small effect). Don't bother + adding more branches to heap after halfway point, as cost of + adding exceeds their value. + */ + + DistanceType new_distsq = mindist + distance_.accum_dist(val, node->divval, node->divfeat); + // if (2 * checkCount < maxCheck || !result.full()) { + if ((new_distsq*epsError < result_set.worstDist())|| !result_set.full()) { + heap->insert( BranchSt(otherChild, new_distsq) ); + } + + /* Call recursively to search next level down. */ + searchLevel(result_set, vec, bestChild, mindist, checkCount, maxCheck, epsError, heap, checked); + } + + /** + * Performs an exact search in the tree starting from a node. + */ + void searchLevelExact(ResultSet& result_set, const ElementType* vec, const NodePtr node, DistanceType mindist, const float epsError) + { + /* If this is a leaf node, then do check and return. */ + if ((node->child1 == NULL)&&(node->child2 == NULL)) { + int index = node->divfeat; + DistanceType dist = distance_(dataset_[index], vec, veclen_); + result_set.addPoint(dist,index); + return; + } + + /* Which child branch should be taken first? */ + ElementType val = vec[node->divfeat]; + DistanceType diff = val - node->divval; + NodePtr bestChild = (diff < 0) ? node->child1 : node->child2; + NodePtr otherChild = (diff < 0) ? node->child2 : node->child1; + + /* Create a branch record for the branch not taken. Add distance + of this feature boundary (we don't attempt to correct for any + use of this feature in a parent node, which is unlikely to + happen and would have only a small effect). Don't bother + adding more branches to heap after halfway point, as cost of + adding exceeds their value. + */ + + DistanceType new_distsq = mindist + distance_.accum_dist(val, node->divval, node->divfeat); + + /* Call recursively to search next level down. */ + searchLevelExact(result_set, vec, bestChild, mindist, epsError); + + if (new_distsq*epsError<=result_set.worstDist()) { + searchLevelExact(result_set, vec, otherChild, new_distsq, epsError); + } + } + + +private: + + enum + { + /** + * To improve efficiency, only SAMPLE_MEAN random values are used to + * compute the mean and variance at each level when building a tree. + * A value of 100 seems to perform as well as using all values. + */ + SAMPLE_MEAN = 100, + /** + * Top random dimensions to consider + * + * When creating random trees, the dimension on which to subdivide is + * selected at random from among the top RAND_DIM dimensions with the + * highest variance. A value of 5 works well. + */ + RAND_DIM=5 + }; + + + /** + * Number of randomized trees that are used + */ + int trees_; + + /** + * Array of indices to vectors in the dataset. + */ + std::vector vind_; + + /** + * The dataset used by this index + */ + const Matrix dataset_; + + IndexParams index_params_; + + size_t size_; + size_t veclen_; + + + DistanceType* mean_; + DistanceType* var_; + + + /** + * Array of k-d trees used to find neighbours. + */ + NodePtr* tree_roots_; + + /** + * Pooled memory allocator. + * + * Using a pooled memory allocator is more efficient + * than allocating memory directly when there is a large + * number small of memory allocations. + */ + PooledAllocator pool_; + + Distance distance_; + + +}; // class KDTreeForest + +} + +#endif //OPENCV_FLANN_KDTREE_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/kdtree_single_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/kdtree_single_index.h new file mode 100644 index 0000000..22a28d0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/kdtree_single_index.h @@ -0,0 +1,635 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_ +#define OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_ + +#include +#include +#include +#include + +#include "general.h" +#include "nn_index.h" +#include "matrix.h" +#include "result_set.h" +#include "heap.h" +#include "allocator.h" +#include "random.h" +#include "saving.h" + +namespace cvflann +{ + +struct KDTreeSingleIndexParams : public IndexParams +{ + KDTreeSingleIndexParams(int leaf_max_size = 10, bool reorder = true, int dim = -1) + { + (*this)["algorithm"] = FLANN_INDEX_KDTREE_SINGLE; + (*this)["leaf_max_size"] = leaf_max_size; + (*this)["reorder"] = reorder; + (*this)["dim"] = dim; + } +}; + + +/** + * Randomized kd-tree index + * + * Contains the k-d trees and other information for indexing a set of points + * for nearest-neighbor matching. + */ +template +class KDTreeSingleIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + + /** + * KDTree constructor + * + * Params: + * inputData = dataset with the input features + * params = parameters passed to the kdtree algorithm + */ + KDTreeSingleIndex(const Matrix& inputData, const IndexParams& params = KDTreeSingleIndexParams(), + Distance d = Distance() ) : + dataset_(inputData), index_params_(params), distance_(d) + { + size_ = dataset_.rows; + dim_ = dataset_.cols; + root_node_ = 0; + int dim_param = get_param(params,"dim",-1); + if (dim_param>0) dim_ = dim_param; + leaf_max_size_ = get_param(params,"leaf_max_size",10); + reorder_ = get_param(params,"reorder",true); + + // Create a permutable array of indices to the input vectors. + vind_.resize(size_); + for (size_t i = 0; i < size_; i++) { + vind_[i] = (int)i; + } + } + + KDTreeSingleIndex(const KDTreeSingleIndex&); + KDTreeSingleIndex& operator=(const KDTreeSingleIndex&); + + /** + * Standard destructor + */ + ~KDTreeSingleIndex() + { + if (reorder_) delete[] data_.data; + } + + /** + * Builds the index + */ + void buildIndex() CV_OVERRIDE + { + computeBoundingBox(root_bbox_); + root_node_ = divideTree(0, (int)size_, root_bbox_ ); // construct the tree + + if (reorder_) { + delete[] data_.data; + data_ = cvflann::Matrix(new ElementType[size_*dim_], size_, dim_); + for (size_t i=0; i& queries, Matrix& indices, Matrix& dists, int knn, const SearchParams& params) CV_OVERRIDE + { + assert(queries.cols == veclen()); + assert(indices.rows >= queries.rows); + assert(dists.rows >= queries.rows); + assert(int(indices.cols) >= knn); + assert(int(dists.cols) >= knn); + + KNNSimpleResultSet resultSet(knn); + for (size_t i = 0; i < queries.rows; i++) { + resultSet.init(indices[i], dists[i]); + findNeighbors(resultSet, queries[i], params); + } + } + + IndexParams getParameters() const CV_OVERRIDE + { + return index_params_; + } + + /** + * Find set of nearest neighbors to vec. Their indices are stored inside + * the result object. + * + * Params: + * result = the result object in which the indices of the nearest-neighbors are stored + * vec = the vector for which to search the nearest neighbors + * maxCheck = the maximum number of restarts (in a best-bin-first manner) + */ + void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + float epsError = 1+get_param(searchParams,"eps",0.0f); + + std::vector dists(dim_,0); + DistanceType distsq = computeInitialDistances(vec, dists); + searchLevel(result, vec, root_node_, distsq, dists, epsError); + } + +private: + + + /*--------------------- Internal Data Structures --------------------------*/ + struct Node + { + /** + * Indices of points in leaf node + */ + int left, right; + /** + * Dimension used for subdivision. + */ + int divfeat; + /** + * The values used for subdivision. + */ + DistanceType divlow, divhigh; + /** + * The child nodes. + */ + Node* child1, * child2; + }; + typedef Node* NodePtr; + + + struct Interval + { + DistanceType low, high; + }; + + typedef std::vector BoundingBox; + + typedef BranchStruct BranchSt; + typedef BranchSt* Branch; + + + + + void save_tree(FILE* stream, NodePtr tree) + { + save_value(stream, *tree); + if (tree->child1!=NULL) { + save_tree(stream, tree->child1); + } + if (tree->child2!=NULL) { + save_tree(stream, tree->child2); + } + } + + + void load_tree(FILE* stream, NodePtr& tree) + { + tree = pool_.allocate(); + load_value(stream, *tree); + if (tree->child1!=NULL) { + load_tree(stream, tree->child1); + } + if (tree->child2!=NULL) { + load_tree(stream, tree->child2); + } + } + + + void computeBoundingBox(BoundingBox& bbox) + { + bbox.resize(dim_); + for (size_t i=0; ibbox[i].high) bbox[i].high = (DistanceType)dataset_[k][i]; + } + } + } + + + /** + * Create a tree node that subdivides the list of vecs from vind[first] + * to vind[last]. The routine is called recursively on each sublist. + * Place a pointer to this new tree node in the location pTree. + * + * Params: pTree = the new node to create + * first = index of the first vector + * last = index of the last vector + */ + NodePtr divideTree(int left, int right, BoundingBox& bbox) + { + NodePtr node = pool_.allocate(); // allocate memory + + /* If too few exemplars remain, then make this a leaf node. */ + if ( (right-left) <= leaf_max_size_) { + node->child1 = node->child2 = NULL; /* Mark as leaf node. */ + node->left = left; + node->right = right; + + // compute bounding-box of leaf points + for (size_t i=0; idataset_[vind_[k]][i]) bbox[i].low=(DistanceType)dataset_[vind_[k]][i]; + if (bbox[i].highdivfeat = cutfeat; + + BoundingBox left_bbox(bbox); + left_bbox[cutfeat].high = cutval; + node->child1 = divideTree(left, left+idx, left_bbox); + + BoundingBox right_bbox(bbox); + right_bbox[cutfeat].low = cutval; + node->child2 = divideTree(left+idx, right, right_bbox); + + node->divlow = left_bbox[cutfeat].high; + node->divhigh = right_bbox[cutfeat].low; + + for (size_t i=0; imax_elem) max_elem = val; + } + } + + void middleSplit(int* ind, int count, int& index, int& cutfeat, DistanceType& cutval, const BoundingBox& bbox) + { + // find the largest span from the approximate bounding box + ElementType max_span = bbox[0].high-bbox[0].low; + cutfeat = 0; + cutval = (bbox[0].high+bbox[0].low)/2; + for (size_t i=1; imax_span) { + max_span = span; + cutfeat = i; + cutval = (bbox[i].high+bbox[i].low)/2; + } + } + + // compute exact span on the found dimension + ElementType min_elem, max_elem; + computeMinMax(ind, count, cutfeat, min_elem, max_elem); + cutval = (min_elem+max_elem)/2; + max_span = max_elem - min_elem; + + // check if a dimension of a largest span exists + size_t k = cutfeat; + for (size_t i=0; imax_span) { + computeMinMax(ind, count, i, min_elem, max_elem); + span = max_elem - min_elem; + if (span>max_span) { + max_span = span; + cutfeat = i; + cutval = (min_elem+max_elem)/2; + } + } + } + int lim1, lim2; + planeSplit(ind, count, cutfeat, cutval, lim1, lim2); + + if (lim1>count/2) index = lim1; + else if (lim2max_span) { + max_span = span; + } + } + DistanceType max_spread = -1; + cutfeat = 0; + for (size_t i=0; i(DistanceType)((1-EPS)*max_span)) { + ElementType min_elem, max_elem; + computeMinMax(ind, count, cutfeat, min_elem, max_elem); + DistanceType spread = (DistanceType)(max_elem-min_elem); + if (spread>max_spread) { + cutfeat = (int)i; + max_spread = spread; + } + } + } + // split in the middle + DistanceType split_val = (bbox[cutfeat].low+bbox[cutfeat].high)/2; + ElementType min_elem, max_elem; + computeMinMax(ind, count, cutfeat, min_elem, max_elem); + + if (split_valmax_elem) cutval = (DistanceType)max_elem; + else cutval = split_val; + + int lim1, lim2; + planeSplit(ind, count, cutfeat, cutval, lim1, lim2); + + if (lim1>count/2) index = lim1; + else if (lim2cutval + */ + void planeSplit(int* ind, int count, int cutfeat, DistanceType cutval, int& lim1, int& lim2) + { + /* Move vector indices for left subtree to front of list. */ + int left = 0; + int right = count-1; + for (;; ) { + while (left<=right && dataset_[ind[left]][cutfeat]=cutval) --right; + if (left>right) break; + std::swap(ind[left], ind[right]); ++left; --right; + } + /* If either list is empty, it means that all remaining features + * are identical. Split in the middle to maintain a balanced tree. + */ + lim1 = left; + right = count-1; + for (;; ) { + while (left<=right && dataset_[ind[left]][cutfeat]<=cutval) ++left; + while (left<=right && dataset_[ind[right]][cutfeat]>cutval) --right; + if (left>right) break; + std::swap(ind[left], ind[right]); ++left; --right; + } + lim2 = left; + } + + DistanceType computeInitialDistances(const ElementType* vec, std::vector& dists) + { + DistanceType distsq = 0.0; + + for (size_t i = 0; i < dim_; ++i) { + if (vec[i] < root_bbox_[i].low) { + dists[i] = distance_.accum_dist(vec[i], root_bbox_[i].low, (int)i); + distsq += dists[i]; + } + if (vec[i] > root_bbox_[i].high) { + dists[i] = distance_.accum_dist(vec[i], root_bbox_[i].high, (int)i); + distsq += dists[i]; + } + } + + return distsq; + } + + /** + * Performs an exact search in the tree starting from a node. + */ + void searchLevel(ResultSet& result_set, const ElementType* vec, const NodePtr node, DistanceType mindistsq, + std::vector& dists, const float epsError) + { + /* If this is a leaf node, then do check and return. */ + if ((node->child1 == NULL)&&(node->child2 == NULL)) { + DistanceType worst_dist = result_set.worstDist(); + for (int i=node->left; iright; ++i) { + int index = reorder_ ? i : vind_[i]; + DistanceType dist = distance_(vec, data_[index], dim_, worst_dist); + if (distdivfeat; + ElementType val = vec[idx]; + DistanceType diff1 = val - node->divlow; + DistanceType diff2 = val - node->divhigh; + + NodePtr bestChild; + NodePtr otherChild; + DistanceType cut_dist; + if ((diff1+diff2)<0) { + bestChild = node->child1; + otherChild = node->child2; + cut_dist = distance_.accum_dist(val, node->divhigh, idx); + } + else { + bestChild = node->child2; + otherChild = node->child1; + cut_dist = distance_.accum_dist( val, node->divlow, idx); + } + + /* Call recursively to search next level down. */ + searchLevel(result_set, vec, bestChild, mindistsq, dists, epsError); + + DistanceType dst = dists[idx]; + mindistsq = mindistsq + cut_dist - dst; + dists[idx] = cut_dist; + if (mindistsq*epsError<=result_set.worstDist()) { + searchLevel(result_set, vec, otherChild, mindistsq, dists, epsError); + } + dists[idx] = dst; + } + +private: + + /** + * The dataset used by this index + */ + const Matrix dataset_; + + IndexParams index_params_; + + int leaf_max_size_; + bool reorder_; + + + /** + * Array of indices to vectors in the dataset. + */ + std::vector vind_; + + Matrix data_; + + size_t size_; + size_t dim_; + + /** + * Array of k-d trees used to find neighbours. + */ + NodePtr root_node_; + + BoundingBox root_bbox_; + + /** + * Pooled memory allocator. + * + * Using a pooled memory allocator is more efficient + * than allocating memory directly when there is a large + * number small of memory allocations. + */ + PooledAllocator pool_; + + Distance distance_; +}; // class KDTree + +} + +#endif //OPENCV_FLANN_KDTREE_SINGLE_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/kmeans_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/kmeans_index.h new file mode 100644 index 0000000..fe91ddd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/kmeans_index.h @@ -0,0 +1,1172 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_KMEANS_INDEX_H_ +#define OPENCV_FLANN_KMEANS_INDEX_H_ + +#include +#include +#include +#include +#include + +#include "general.h" +#include "nn_index.h" +#include "dist.h" +#include "matrix.h" +#include "result_set.h" +#include "heap.h" +#include "allocator.h" +#include "random.h" +#include "saving.h" +#include "logger.h" + + +namespace cvflann +{ + +struct KMeansIndexParams : public IndexParams +{ + KMeansIndexParams(int branching = 32, int iterations = 11, + flann_centers_init_t centers_init = FLANN_CENTERS_RANDOM, float cb_index = 0.2 ) + { + (*this)["algorithm"] = FLANN_INDEX_KMEANS; + // branching factor + (*this)["branching"] = branching; + // max iterations to perform in one kmeans clustering (kmeans tree) + (*this)["iterations"] = iterations; + // algorithm used for picking the initial cluster centers for kmeans tree + (*this)["centers_init"] = centers_init; + // cluster boundary index. Used when searching the kmeans tree + (*this)["cb_index"] = cb_index; + } +}; + + +/** + * Hierarchical kmeans index + * + * Contains a tree constructed through a hierarchical kmeans clustering + * and other information for indexing a set of points for nearest-neighbour matching. + */ +template +class KMeansIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + + + typedef void (KMeansIndex::* centersAlgFunction)(int, int*, int, int*, int&); + + /** + * The function used for choosing the cluster centers. + */ + centersAlgFunction chooseCenters; + + + + /** + * Chooses the initial centers in the k-means clustering in a random manner. + * + * Params: + * k = number of centers + * vecs = the dataset of points + * indices = indices in the dataset + * indices_length = length of indices vector + * + */ + void chooseCentersRandom(int k, int* indices, int indices_length, int* centers, int& centers_length) + { + UniqueRandom r(indices_length); + + int index; + for (index=0; index=0 && rnd < n); + + centers[0] = indices[rnd]; + + int index; + for (index=1; indexbest_val) { + best_val = dist; + best_index = j; + } + } + if (best_index!=-1) { + centers[index] = indices[best_index]; + } + else { + break; + } + } + centers_length = index; + } + + + /** + * Chooses the initial centers in the k-means using the algorithm + * proposed in the KMeans++ paper: + * Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding + * + * Implementation of this function was converted from the one provided in Arthur's code. + * + * Params: + * k = number of centers + * vecs = the dataset of points + * indices = indices in the dataset + * Returns: + */ + void chooseCentersKMeanspp(int k, int* indices, int indices_length, int* centers, int& centers_length) + { + int n = indices_length; + + double currentPot = 0; + DistanceType* closestDistSq = new DistanceType[n]; + + // Choose one random center and set the closestDistSq values + int index = rand_int(n); + assert(index >=0 && index < n); + centers[0] = indices[index]; + + for (int i = 0; i < n; i++) { + closestDistSq[i] = distance_(dataset_[indices[i]], dataset_[indices[index]], dataset_.cols); + closestDistSq[i] = ensureSquareDistance( closestDistSq[i] ); + currentPot += closestDistSq[i]; + } + + + const int numLocalTries = 1; + + // Choose each center + int centerCount; + for (centerCount = 1; centerCount < k; centerCount++) { + + // Repeat several trials + double bestNewPot = -1; + int bestNewIndex = -1; + for (int localTrial = 0; localTrial < numLocalTries; localTrial++) { + + // Choose our center - have to be slightly careful to return a valid answer even accounting + // for possible rounding errors + double randVal = rand_double(currentPot); + for (index = 0; index < n-1; index++) { + if (randVal <= closestDistSq[index]) break; + else randVal -= closestDistSq[index]; + } + + // Compute the new potential + double newPot = 0; + for (int i = 0; i < n; i++) { + DistanceType dist = distance_(dataset_[indices[i]], dataset_[indices[index]], dataset_.cols); + newPot += std::min( ensureSquareDistance(dist), closestDistSq[i] ); + } + + // Store the best result + if ((bestNewPot < 0)||(newPot < bestNewPot)) { + bestNewPot = newPot; + bestNewIndex = index; + } + } + + // Add the appropriate center + centers[centerCount] = indices[bestNewIndex]; + currentPot = bestNewPot; + for (int i = 0; i < n; i++) { + DistanceType dist = distance_(dataset_[indices[i]], dataset_[indices[bestNewIndex]], dataset_.cols); + closestDistSq[i] = std::min( ensureSquareDistance(dist), closestDistSq[i] ); + } + } + + centers_length = centerCount; + + delete[] closestDistSq; + } + + + +public: + + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_KMEANS; + } + + class KMeansDistanceComputer : public cv::ParallelLoopBody + { + public: + KMeansDistanceComputer(Distance _distance, const Matrix& _dataset, + const int _branching, const int* _indices, const Matrix& _dcenters, const size_t _veclen, + std::vector &_new_centroids, std::vector &_sq_dists) + : distance(_distance) + , dataset(_dataset) + , branching(_branching) + , indices(_indices) + , dcenters(_dcenters) + , veclen(_veclen) + , new_centroids(_new_centroids) + , sq_dists(_sq_dists) + { + } + + void operator()(const cv::Range& range) const CV_OVERRIDE + { + const int begin = range.start; + const int end = range.end; + + for( int i = begin; inew_sq_dist) { + new_centroid = j; + sq_dist = new_sq_dist; + } + } + sq_dists[i] = sq_dist; + new_centroids[i] = new_centroid; + } + } + + private: + Distance distance; + const Matrix& dataset; + const int branching; + const int* indices; + const Matrix& dcenters; + const size_t veclen; + std::vector &new_centroids; + std::vector &sq_dists; + KMeansDistanceComputer& operator=( const KMeansDistanceComputer & ) { return *this; } + }; + + /** + * Index constructor + * + * Params: + * inputData = dataset with the input features + * params = parameters passed to the hierarchical k-means algorithm + */ + KMeansIndex(const Matrix& inputData, const IndexParams& params = KMeansIndexParams(), + Distance d = Distance()) + : dataset_(inputData), index_params_(params), root_(NULL), indices_(NULL), distance_(d) + { + memoryCounter_ = 0; + + size_ = dataset_.rows; + veclen_ = dataset_.cols; + + branching_ = get_param(params,"branching",32); + iterations_ = get_param(params,"iterations",11); + if (iterations_<0) { + iterations_ = (std::numeric_limits::max)(); + } + centers_init_ = get_param(params,"centers_init",FLANN_CENTERS_RANDOM); + + if (centers_init_==FLANN_CENTERS_RANDOM) { + chooseCenters = &KMeansIndex::chooseCentersRandom; + } + else if (centers_init_==FLANN_CENTERS_GONZALES) { + chooseCenters = &KMeansIndex::chooseCentersGonzales; + } + else if (centers_init_==FLANN_CENTERS_KMEANSPP) { + chooseCenters = &KMeansIndex::chooseCentersKMeanspp; + } + else { + throw FLANNException("Unknown algorithm for choosing initial centers."); + } + cb_index_ = 0.4f; + + } + + + KMeansIndex(const KMeansIndex&); + KMeansIndex& operator=(const KMeansIndex&); + + + /** + * Index destructor. + * + * Release the memory used by the index. + */ + virtual ~KMeansIndex() + { + if (root_ != NULL) { + free_centers(root_); + } + if (indices_!=NULL) { + delete[] indices_; + } + } + + /** + * Returns size of index. + */ + size_t size() const CV_OVERRIDE + { + return size_; + } + + /** + * Returns the length of an index feature. + */ + size_t veclen() const CV_OVERRIDE + { + return veclen_; + } + + + void set_cb_index( float index) + { + cb_index_ = index; + } + + /** + * Computes the inde memory usage + * Returns: memory used by the index + */ + int usedMemory() const CV_OVERRIDE + { + return pool_.usedMemory+pool_.wastedMemory+memoryCounter_; + } + + /** + * Builds the index + */ + void buildIndex() CV_OVERRIDE + { + if (branching_<2) { + throw FLANNException("Branching factor must be at least 2"); + } + + indices_ = new int[size_]; + for (size_t i=0; i(); + std::memset(root_, 0, sizeof(KMeansNode)); + + computeNodeStatistics(root_, indices_, (int)size_); + computeClustering(root_, indices_, (int)size_, branching_,0); + } + + + void saveIndex(FILE* stream) CV_OVERRIDE + { + save_value(stream, branching_); + save_value(stream, iterations_); + save_value(stream, memoryCounter_); + save_value(stream, cb_index_); + save_value(stream, *indices_, (int)size_); + + save_tree(stream, root_); + } + + + void loadIndex(FILE* stream) CV_OVERRIDE + { + load_value(stream, branching_); + load_value(stream, iterations_); + load_value(stream, memoryCounter_); + load_value(stream, cb_index_); + if (indices_!=NULL) { + delete[] indices_; + } + indices_ = new int[size_]; + load_value(stream, *indices_, size_); + + if (root_!=NULL) { + free_centers(root_); + } + load_tree(stream, root_); + + index_params_["algorithm"] = getType(); + index_params_["branching"] = branching_; + index_params_["iterations"] = iterations_; + index_params_["centers_init"] = centers_init_; + index_params_["cb_index"] = cb_index_; + + } + + + /** + * Find set of nearest neighbors to vec. Their indices are stored inside + * the result object. + * + * Params: + * result = the result object in which the indices of the nearest-neighbors are stored + * vec = the vector for which to search the nearest neighbors + * searchParams = parameters that influence the search algorithm (checks, cb_index) + */ + void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE + { + + int maxChecks = get_param(searchParams,"checks",32); + + if (maxChecks==FLANN_CHECKS_UNLIMITED) { + findExactNN(root_, result, vec); + } + else { + // Priority queue storing intermediate branches in the best-bin-first search + Heap* heap = new Heap((int)size_); + + int checks = 0; + findNN(root_, result, vec, checks, maxChecks, heap); + + BranchSt branch; + while (heap->popMin(branch) && (checks& centers) + { + int numClusters = centers.rows; + if (numClusters<1) { + throw FLANNException("Number of clusters must be at least 1"); + } + + DistanceType variance; + KMeansNodePtr* clusters = new KMeansNodePtr[numClusters]; + + int clusterCount = getMinVarianceClusters(root_, clusters, numClusters, variance); + + Logger::info("Clusters requested: %d, returning %d\n",numClusters, clusterCount); + + for (int i=0; ipivot; + for (size_t j=0; j BranchSt; + + + + + void save_tree(FILE* stream, KMeansNodePtr node) + { + save_value(stream, *node); + save_value(stream, *(node->pivot), (int)veclen_); + if (node->childs==NULL) { + int indices_offset = (int)(node->indices - indices_); + save_value(stream, indices_offset); + } + else { + for(int i=0; ichilds[i]); + } + } + } + + + void load_tree(FILE* stream, KMeansNodePtr& node) + { + node = pool_.allocate(); + load_value(stream, *node); + node->pivot = new DistanceType[veclen_]; + load_value(stream, *(node->pivot), (int)veclen_); + if (node->childs==NULL) { + int indices_offset; + load_value(stream, indices_offset); + node->indices = indices_ + indices_offset; + } + else { + node->childs = pool_.allocate(branching_); + for(int i=0; ichilds[i]); + } + } + } + + + /** + * Helper function + */ + void free_centers(KMeansNodePtr node) + { + delete[] node->pivot; + if (node->childs!=NULL) { + for (int k=0; kchilds[k]); + } + } + } + + /** + * Computes the statistics of a node (mean, radius, variance). + * + * Params: + * node = the node to use + * indices = the indices of the points belonging to the node + */ + void computeNodeStatistics(KMeansNodePtr node, int* indices, int indices_length) + { + + DistanceType radius = 0; + DistanceType variance = 0; + DistanceType* mean = new DistanceType[veclen_]; + memoryCounter_ += int(veclen_*sizeof(DistanceType)); + + memset(mean,0,veclen_*sizeof(DistanceType)); + + for (size_t i=0; i(), veclen_); + } + for (size_t j=0; j(), veclen_); + + DistanceType tmp = 0; + for (int i=0; iradius) { + radius = tmp; + } + } + + node->variance = variance; + node->radius = radius; + node->pivot = mean; + } + + + /** + * The method responsible with actually doing the recursive hierarchical + * clustering + * + * Params: + * node = the node to cluster + * indices = indices of the points belonging to the current node + * branching = the branching factor to use in the clustering + * + * TODO: for 1-sized clusters don't store a cluster center (it's the same as the single cluster point) + */ + void computeClustering(KMeansNodePtr node, int* indices, int indices_length, int branching, int level) + { + node->size = indices_length; + node->level = level; + + if (indices_length < branching) { + node->indices = indices; + std::sort(node->indices,node->indices+indices_length); + node->childs = NULL; + return; + } + + cv::AutoBuffer centers_idx_buf(branching); + int* centers_idx = centers_idx_buf.data(); + int centers_length; + (this->*chooseCenters)(branching, indices, indices_length, centers_idx, centers_length); + + if (centers_lengthindices = indices; + std::sort(node->indices,node->indices+indices_length); + node->childs = NULL; + return; + } + + + cv::AutoBuffer dcenters_buf(branching*veclen_); + Matrix dcenters(dcenters_buf.data(), branching, veclen_); + for (int i=0; i radiuses(branching); + cv::AutoBuffer count_buf(branching); + int* count = count_buf.data(); + for (int i=0; i belongs_to_buf(indices_length); + int* belongs_to = belongs_to_buf.data(); + for (int i=0; inew_sq_dist) { + belongs_to[i] = j; + sq_dist = new_sq_dist; + } + } + if (sq_dist>radiuses[belongs_to[i]]) { + radiuses[belongs_to[i]] = sq_dist; + } + count[belongs_to[i]]++; + } + + bool converged = false; + int iteration = 0; + while (!converged && iteration new_centroids(indices_length); + std::vector sq_dists(indices_length); + + // reassign points to clusters + KMeansDistanceComputer invoker(distance_, dataset_, branching, indices, dcenters, veclen_, new_centroids, sq_dists); + parallel_for_(cv::Range(0, (int)indices_length), invoker); + + for (int i=0; i < (int)indices_length; ++i) { + DistanceType sq_dist(sq_dists[i]); + int new_centroid(new_centroids[i]); + if (sq_dist > radiuses[new_centroid]) { + radiuses[new_centroid] = sq_dist; + } + if (new_centroid != belongs_to[i]) { + count[belongs_to[i]]--; + count[new_centroid]++; + belongs_to[i] = new_centroid; + converged = false; + } + } + + for (int i=0; ichilds = pool_.allocate(branching); + int start = 0; + int end = start; + for (int c=0; c(), veclen_); + variance += d; + mean_radius += sqrt(d); + std::swap(indices[i],indices[end]); + std::swap(belongs_to[i],belongs_to[end]); + end++; + } + } + variance /= s; + mean_radius /= s; + variance -= distance_(centers[c], ZeroIterator(), veclen_); + + node->childs[c] = pool_.allocate(); + std::memset(node->childs[c], 0, sizeof(KMeansNode)); + node->childs[c]->radius = radiuses[c]; + node->childs[c]->pivot = centers[c]; + node->childs[c]->variance = variance; + node->childs[c]->mean_radius = mean_radius; + computeClustering(node->childs[c],indices+start, end-start, branching, level+1); + start=end; + } + + delete[] centers; + } + + + + /** + * Performs one descent in the hierarchical k-means tree. The branches not + * visited are stored in a priority queue. + * + * Params: + * node = node to explore + * result = container for the k-nearest neighbors found + * vec = query points + * checks = how many points in the dataset have been checked so far + * maxChecks = maximum dataset points to checks + */ + + + void findNN(KMeansNodePtr node, ResultSet& result, const ElementType* vec, int& checks, int maxChecks, + Heap* heap) + { + // Ignore those clusters that are too far away + { + DistanceType bsq = distance_(vec, node->pivot, veclen_); + DistanceType rsq = node->radius; + DistanceType wsq = result.worstDist(); + + DistanceType val = bsq-rsq-wsq; + DistanceType val2 = val*val-4*rsq*wsq; + + //if (val>0) { + if ((val>0)&&(val2>0)) { + return; + } + } + + if (node->childs==NULL) { + if (checks>=maxChecks) { + if (result.full()) return; + } + checks += node->size; + for (int i=0; isize; ++i) { + int index = node->indices[i]; + DistanceType dist = distance_(dataset_[index], vec, veclen_); + result.addPoint(dist, index); + } + } + else { + DistanceType* domain_distances = new DistanceType[branching_]; + int closest_center = exploreNodeBranches(node, vec, domain_distances, heap); + delete[] domain_distances; + findNN(node->childs[closest_center],result,vec, checks, maxChecks, heap); + } + } + + /** + * Helper function that computes the nearest childs of a node to a given query point. + * Params: + * node = the node + * q = the query point + * distances = array with the distances to each child node. + * Returns: + */ + int exploreNodeBranches(KMeansNodePtr node, const ElementType* q, DistanceType* domain_distances, Heap* heap) + { + + int best_index = 0; + domain_distances[best_index] = distance_(q, node->childs[best_index]->pivot, veclen_); + for (int i=1; ichilds[i]->pivot, veclen_); + if (domain_distances[i]childs[best_index]->pivot; + for (int i=0; ichilds[i]->variance; + + // float dist_to_border = getDistanceToBorder(node.childs[i].pivot,best_center,q); + // if (domain_distances[i]insert(BranchSt(node->childs[i],domain_distances[i])); + } + } + + return best_index; + } + + + /** + * Function the performs exact nearest neighbor search by traversing the entire tree. + */ + void findExactNN(KMeansNodePtr node, ResultSet& result, const ElementType* vec) + { + // Ignore those clusters that are too far away + { + DistanceType bsq = distance_(vec, node->pivot, veclen_); + DistanceType rsq = node->radius; + DistanceType wsq = result.worstDist(); + + DistanceType val = bsq-rsq-wsq; + DistanceType val2 = val*val-4*rsq*wsq; + + // if (val>0) { + if ((val>0)&&(val2>0)) { + return; + } + } + + + if (node->childs==NULL) { + for (int i=0; isize; ++i) { + int index = node->indices[i]; + DistanceType dist = distance_(dataset_[index], vec, veclen_); + result.addPoint(dist, index); + } + } + else { + int* sort_indices = new int[branching_]; + + getCenterOrdering(node, vec, sort_indices); + + for (int i=0; ichilds[sort_indices[i]],result,vec); + } + + delete[] sort_indices; + } + } + + + /** + * Helper function. + * + * I computes the order in which to traverse the child nodes of a particular node. + */ + void getCenterOrdering(KMeansNodePtr node, const ElementType* q, int* sort_indices) + { + DistanceType* domain_distances = new DistanceType[branching_]; + for (int i=0; ichilds[i]->pivot, veclen_); + + int j=0; + while (domain_distances[j]j; --k) { + domain_distances[k] = domain_distances[k-1]; + sort_indices[k] = sort_indices[k-1]; + } + domain_distances[j] = dist; + sort_indices[j] = i; + } + delete[] domain_distances; + } + + /** + * Method that computes the squared distance from the query point q + * from inside region with center c to the border between this + * region and the region with center p + */ + DistanceType getDistanceToBorder(DistanceType* p, DistanceType* c, DistanceType* q) + { + DistanceType sum = 0; + DistanceType sum2 = 0; + + for (int i=0; ivariance*root->size; + + while (clusterCount::max)(); + int splitIndex = -1; + + for (int i=0; ichilds != NULL) { + + DistanceType variance = meanVariance - clusters[i]->variance*clusters[i]->size; + + for (int j=0; jchilds[j]->variance*clusters[i]->childs[j]->size; + } + if (variance clusters_length) break; + + meanVariance = minVariance; + + // split node + KMeansNodePtr toSplit = clusters[splitIndex]; + clusters[splitIndex] = toSplit->childs[0]; + for (int i=1; ichilds[i]; + } + } + + varianceValue = meanVariance/root->size; + return clusterCount; + } + +private: + /** The branching factor used in the hierarchical k-means clustering */ + int branching_; + + /** Maximum number of iterations to use when performing k-means clustering */ + int iterations_; + + /** Algorithm for choosing the cluster centers */ + flann_centers_init_t centers_init_; + + /** + * Cluster border index. This is used in the tree search phase when determining + * the closest cluster to explore next. A zero value takes into account only + * the cluster centres, a value greater then zero also take into account the size + * of the cluster. + */ + float cb_index_; + + /** + * The dataset used by this index + */ + const Matrix dataset_; + + /** Index parameters */ + IndexParams index_params_; + + /** + * Number of features in the dataset. + */ + size_t size_; + + /** + * Length of each feature. + */ + size_t veclen_; + + /** + * The root node in the tree. + */ + KMeansNodePtr root_; + + /** + * Array of indices to vectors in the dataset. + */ + int* indices_; + + /** + * The distance + */ + Distance distance_; + + /** + * Pooled memory allocator. + */ + PooledAllocator pool_; + + /** + * Memory occupied by the index. + */ + int memoryCounter_; +}; + +} + +#endif //OPENCV_FLANN_KMEANS_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/linear_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/linear_index.h new file mode 100644 index 0000000..ca3f44d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/linear_index.h @@ -0,0 +1,132 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_LINEAR_INDEX_H_ +#define OPENCV_FLANN_LINEAR_INDEX_H_ + +#include "general.h" +#include "nn_index.h" + +namespace cvflann +{ + +struct LinearIndexParams : public IndexParams +{ + LinearIndexParams() + { + (* this)["algorithm"] = FLANN_INDEX_LINEAR; + } +}; + +template +class LinearIndex : public NNIndex +{ +public: + + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + + LinearIndex(const Matrix& inputData, const IndexParams& params = LinearIndexParams(), + Distance d = Distance()) : + dataset_(inputData), index_params_(params), distance_(d) + { + } + + LinearIndex(const LinearIndex&); + LinearIndex& operator=(const LinearIndex&); + + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_LINEAR; + } + + + size_t size() const CV_OVERRIDE + { + return dataset_.rows; + } + + size_t veclen() const CV_OVERRIDE + { + return dataset_.cols; + } + + + int usedMemory() const CV_OVERRIDE + { + return 0; + } + + void buildIndex() CV_OVERRIDE + { + /* nothing to do here for linear search */ + } + + void saveIndex(FILE*) CV_OVERRIDE + { + /* nothing to do here for linear search */ + } + + + void loadIndex(FILE*) CV_OVERRIDE + { + /* nothing to do here for linear search */ + + index_params_["algorithm"] = getType(); + } + + void findNeighbors(ResultSet& resultSet, const ElementType* vec, const SearchParams& /*searchParams*/) CV_OVERRIDE + { + ElementType* data = dataset_.data; + for (size_t i = 0; i < dataset_.rows; ++i, data += dataset_.cols) { + DistanceType dist = distance_(data, vec, dataset_.cols); + resultSet.addPoint(dist, (int)i); + } + } + + IndexParams getParameters() const CV_OVERRIDE + { + return index_params_; + } + +private: + /** The dataset */ + const Matrix dataset_; + /** Index parameters */ + IndexParams index_params_; + /** Index distance */ + Distance distance_; + +}; + +} + +#endif // OPENCV_FLANN_LINEAR_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/logger.h b/LaiPuLaser/OpenCV/include/opencv2/flann/logger.h new file mode 100644 index 0000000..32618db --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/logger.h @@ -0,0 +1,135 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_LOGGER_H +#define OPENCV_FLANN_LOGGER_H + +#include +#include + +#include "defines.h" + + +namespace cvflann +{ + +class Logger +{ + Logger() : stream(stdout), logLevel(FLANN_LOG_WARN) {} + + ~Logger() + { + if ((stream!=NULL)&&(stream!=stdout)) { + fclose(stream); + } + } + + static Logger& instance() + { + static Logger logger; + return logger; + } + + void _setDestination(const char* name) + { + if (name==NULL) { + stream = stdout; + } + else { +#ifdef _MSC_VER + if (fopen_s(&stream, name, "w") != 0) + stream = NULL; +#else + stream = fopen(name,"w"); +#endif + if (stream == NULL) { + stream = stdout; + } + } + } + + int _log(int level, const char* fmt, va_list arglist) + { + if (level > logLevel ) return -1; + int ret = vfprintf(stream, fmt, arglist); + return ret; + } + +public: + /** + * Sets the logging level. All messages with lower priority will be ignored. + * @param level Logging level + */ + static void setLevel(int level) { instance().logLevel = level; } + + /** + * Sets the logging destination + * @param name Filename or NULL for console + */ + static void setDestination(const char* name) { instance()._setDestination(name); } + + /** + * Print log message + * @param level Log level + * @param fmt Message format + * @return + */ + static int log(int level, const char* fmt, ...) + { + va_list arglist; + va_start(arglist, fmt); + int ret = instance()._log(level,fmt,arglist); + va_end(arglist); + return ret; + } + +#define LOG_METHOD(NAME,LEVEL) \ + static int NAME(const char* fmt, ...) \ + { \ + va_list ap; \ + va_start(ap, fmt); \ + int ret = instance()._log(LEVEL, fmt, ap); \ + va_end(ap); \ + return ret; \ + } + + LOG_METHOD(fatal, FLANN_LOG_FATAL) + LOG_METHOD(error, FLANN_LOG_ERROR) + LOG_METHOD(warn, FLANN_LOG_WARN) + LOG_METHOD(info, FLANN_LOG_INFO) + +private: + FILE* stream; + int logLevel; +}; + +} + +#endif //OPENCV_FLANN_LOGGER_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_index.h new file mode 100644 index 0000000..42afe89 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_index.h @@ -0,0 +1,392 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +/*********************************************************************** + * Author: Vincent Rabaud + *************************************************************************/ + +#ifndef OPENCV_FLANN_LSH_INDEX_H_ +#define OPENCV_FLANN_LSH_INDEX_H_ + +#include +#include +#include +#include +#include + +#include "general.h" +#include "nn_index.h" +#include "matrix.h" +#include "result_set.h" +#include "heap.h" +#include "lsh_table.h" +#include "allocator.h" +#include "random.h" +#include "saving.h" + +namespace cvflann +{ + +struct LshIndexParams : public IndexParams +{ + LshIndexParams(unsigned int table_number = 12, unsigned int key_size = 20, unsigned int multi_probe_level = 2) + { + (* this)["algorithm"] = FLANN_INDEX_LSH; + // The number of hash tables to use + (*this)["table_number"] = table_number; + // The length of the key in the hash tables + (*this)["key_size"] = key_size; + // Number of levels to use in multi-probe (0 for standard LSH) + (*this)["multi_probe_level"] = multi_probe_level; + } +}; + +/** + * Randomized kd-tree index + * + * Contains the k-d trees and other information for indexing a set of points + * for nearest-neighbor matching. + */ +template +class LshIndex : public NNIndex +{ +public: + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + + /** Constructor + * @param input_data dataset with the input features + * @param params parameters passed to the LSH algorithm + * @param d the distance used + */ + LshIndex(const Matrix& input_data, const IndexParams& params = LshIndexParams(), + Distance d = Distance()) : + dataset_(input_data), index_params_(params), distance_(d) + { + // cv::flann::IndexParams sets integer params as 'int', so it is used with get_param + // in place of 'unsigned int' + table_number_ = (unsigned int)get_param(index_params_,"table_number",12); + key_size_ = (unsigned int)get_param(index_params_,"key_size",20); + multi_probe_level_ = (unsigned int)get_param(index_params_,"multi_probe_level",2); + + feature_size_ = (unsigned)dataset_.cols; + fill_xor_mask(0, key_size_, multi_probe_level_, xor_masks_); + } + + + LshIndex(const LshIndex&); + LshIndex& operator=(const LshIndex&); + + /** + * Builds the index + */ + void buildIndex() CV_OVERRIDE + { + tables_.resize(table_number_); + for (unsigned int i = 0; i < table_number_; ++i) { + lsh::LshTable& table = tables_[i]; + table = lsh::LshTable(feature_size_, key_size_); + + // Add the features to the table + table.add(dataset_); + } + } + + flann_algorithm_t getType() const CV_OVERRIDE + { + return FLANN_INDEX_LSH; + } + + + void saveIndex(FILE* stream) CV_OVERRIDE + { + save_value(stream,table_number_); + save_value(stream,key_size_); + save_value(stream,multi_probe_level_); + save_value(stream, dataset_); + } + + void loadIndex(FILE* stream) CV_OVERRIDE + { + load_value(stream, table_number_); + load_value(stream, key_size_); + load_value(stream, multi_probe_level_); + load_value(stream, dataset_); + // Building the index is so fast we can afford not storing it + buildIndex(); + + index_params_["algorithm"] = getType(); + index_params_["table_number"] = table_number_; + index_params_["key_size"] = key_size_; + index_params_["multi_probe_level"] = multi_probe_level_; + } + + /** + * Returns size of index. + */ + size_t size() const CV_OVERRIDE + { + return dataset_.rows; + } + + /** + * Returns the length of an index feature. + */ + size_t veclen() const CV_OVERRIDE + { + return feature_size_; + } + + /** + * Computes the index memory usage + * Returns: memory used by the index + */ + int usedMemory() const CV_OVERRIDE + { + return (int)(dataset_.rows * sizeof(int)); + } + + + IndexParams getParameters() const CV_OVERRIDE + { + return index_params_; + } + + /** + * \brief Perform k-nearest neighbor search + * \param[in] queries The query points for which to find the nearest neighbors + * \param[out] indices The indices of the nearest neighbors found + * \param[out] dists Distances to the nearest neighbors found + * \param[in] knn Number of nearest neighbors to return + * \param[in] params Search parameters + */ + virtual void knnSearch(const Matrix& queries, Matrix& indices, Matrix& dists, int knn, const SearchParams& params) CV_OVERRIDE + { + assert(queries.cols == veclen()); + assert(indices.rows >= queries.rows); + assert(dists.rows >= queries.rows); + assert(int(indices.cols) >= knn); + assert(int(dists.cols) >= knn); + + + KNNUniqueResultSet resultSet(knn); + for (size_t i = 0; i < queries.rows; i++) { + resultSet.clear(); + std::fill_n(indices[i], knn, -1); + std::fill_n(dists[i], knn, std::numeric_limits::max()); + findNeighbors(resultSet, queries[i], params); + if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices[i], dists[i], knn); + else resultSet.copy(indices[i], dists[i], knn); + } + } + + + /** + * Find set of nearest neighbors to vec. Their indices are stored inside + * the result object. + * + * Params: + * result = the result object in which the indices of the nearest-neighbors are stored + * vec = the vector for which to search the nearest neighbors + * maxCheck = the maximum number of restarts (in a best-bin-first manner) + */ + void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& /*searchParams*/) CV_OVERRIDE + { + getNeighbors(vec, result); + } + +private: + /** Defines the comparator on score and index + */ + typedef std::pair ScoreIndexPair; + struct SortScoreIndexPairOnSecond + { + bool operator()(const ScoreIndexPair& left, const ScoreIndexPair& right) const + { + return left.second < right.second; + } + }; + + /** Fills the different xor masks to use when getting the neighbors in multi-probe LSH + * @param key the key we build neighbors from + * @param lowest_index the lowest index of the bit set + * @param level the multi-probe level we are at + * @param xor_masks all the xor mask + */ + void fill_xor_mask(lsh::BucketKey key, int lowest_index, unsigned int level, + std::vector& xor_masks) + { + xor_masks.push_back(key); + if (level == 0) return; + for (int index = lowest_index - 1; index >= 0; --index) { + // Create a new key + lsh::BucketKey new_key = key | (1 << index); + fill_xor_mask(new_key, index, level - 1, xor_masks); + } + } + + /** Performs the approximate nearest-neighbor search. + * @param vec the feature to analyze + * @param do_radius flag indicating if we check the radius too + * @param radius the radius if it is a radius search + * @param do_k flag indicating if we limit the number of nn + * @param k_nn the number of nearest neighbors + * @param checked_average used for debugging + */ + void getNeighbors(const ElementType* vec, bool /*do_radius*/, float radius, bool do_k, unsigned int k_nn, + float& /*checked_average*/) + { + static std::vector score_index_heap; + + if (do_k) { + unsigned int worst_score = std::numeric_limits::max(); + typename std::vector >::const_iterator table = tables_.begin(); + typename std::vector >::const_iterator table_end = tables_.end(); + for (; table != table_end; ++table) { + size_t key = table->getKey(vec); + std::vector::const_iterator xor_mask = xor_masks_.begin(); + std::vector::const_iterator xor_mask_end = xor_masks_.end(); + for (; xor_mask != xor_mask_end; ++xor_mask) { + size_t sub_key = key ^ (*xor_mask); + const lsh::Bucket* bucket = table->getBucketFromKey(sub_key); + if (bucket == 0) continue; + + // Go over each descriptor index + std::vector::const_iterator training_index = bucket->begin(); + std::vector::const_iterator last_training_index = bucket->end(); + DistanceType hamming_distance; + + // Process the rest of the candidates + for (; training_index < last_training_index; ++training_index) { + hamming_distance = distance_(vec, dataset_[*training_index], dataset_.cols); + + if (hamming_distance < worst_score) { + // Insert the new element + score_index_heap.push_back(ScoreIndexPair(hamming_distance, training_index)); + std::push_heap(score_index_heap.begin(), score_index_heap.end()); + + if (score_index_heap.size() > (unsigned int)k_nn) { + // Remove the highest distance value as we have too many elements + std::pop_heap(score_index_heap.begin(), score_index_heap.end()); + score_index_heap.pop_back(); + // Keep track of the worst score + worst_score = score_index_heap.front().first; + } + } + } + } + } + } + else { + typename std::vector >::const_iterator table = tables_.begin(); + typename std::vector >::const_iterator table_end = tables_.end(); + for (; table != table_end; ++table) { + size_t key = table->getKey(vec); + std::vector::const_iterator xor_mask = xor_masks_.begin(); + std::vector::const_iterator xor_mask_end = xor_masks_.end(); + for (; xor_mask != xor_mask_end; ++xor_mask) { + size_t sub_key = key ^ (*xor_mask); + const lsh::Bucket* bucket = table->getBucketFromKey(sub_key); + if (bucket == 0) continue; + + // Go over each descriptor index + std::vector::const_iterator training_index = bucket->begin(); + std::vector::const_iterator last_training_index = bucket->end(); + DistanceType hamming_distance; + + // Process the rest of the candidates + for (; training_index < last_training_index; ++training_index) { + // Compute the Hamming distance + hamming_distance = distance_(vec, dataset_[*training_index], dataset_.cols); + if (hamming_distance < radius) score_index_heap.push_back(ScoreIndexPair(hamming_distance, training_index)); + } + } + } + } + } + + /** Performs the approximate nearest-neighbor search. + * This is a slower version than the above as it uses the ResultSet + * @param vec the feature to analyze + */ + void getNeighbors(const ElementType* vec, ResultSet& result) + { + typename std::vector >::const_iterator table = tables_.begin(); + typename std::vector >::const_iterator table_end = tables_.end(); + for (; table != table_end; ++table) { + size_t key = table->getKey(vec); + std::vector::const_iterator xor_mask = xor_masks_.begin(); + std::vector::const_iterator xor_mask_end = xor_masks_.end(); + for (; xor_mask != xor_mask_end; ++xor_mask) { + size_t sub_key = key ^ (*xor_mask); + const lsh::Bucket* bucket = table->getBucketFromKey((lsh::BucketKey)sub_key); + if (bucket == 0) continue; + + // Go over each descriptor index + std::vector::const_iterator training_index = bucket->begin(); + std::vector::const_iterator last_training_index = bucket->end(); + DistanceType hamming_distance; + + // Process the rest of the candidates + for (; training_index < last_training_index; ++training_index) { + // Compute the Hamming distance + hamming_distance = distance_(vec, dataset_[*training_index], (int)dataset_.cols); + result.addPoint(hamming_distance, *training_index); + } + } + } + } + + /** The different hash tables */ + std::vector > tables_; + + /** The data the LSH tables where built from */ + Matrix dataset_; + + /** The size of the features (as ElementType[]) */ + unsigned int feature_size_; + + IndexParams index_params_; + + /** table number */ + unsigned int table_number_; + /** key size */ + unsigned int key_size_; + /** How far should we look for neighbors in multi-probe LSH */ + unsigned int multi_probe_level_; + + /** The XOR masks to apply to a key to get the neighboring buckets */ + std::vector xor_masks_; + + Distance distance_; +}; +} + +#endif //OPENCV_FLANN_LSH_INDEX_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_table.h b/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_table.h new file mode 100644 index 0000000..b07a9d5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/lsh_table.h @@ -0,0 +1,513 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +/*********************************************************************** + * Author: Vincent Rabaud + *************************************************************************/ + +#ifndef OPENCV_FLANN_LSH_TABLE_H_ +#define OPENCV_FLANN_LSH_TABLE_H_ + +#include +#include +#include +#include +// TODO as soon as we use C++0x, use the code in USE_UNORDERED_MAP +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +# define USE_UNORDERED_MAP 1 +#else +# define USE_UNORDERED_MAP 0 +#endif +#if USE_UNORDERED_MAP +#include +#else +#include +#endif +#include +#include + +#include "dynamic_bitset.h" +#include "matrix.h" + +namespace cvflann +{ + +namespace lsh +{ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** What is stored in an LSH bucket + */ +typedef uint32_t FeatureIndex; +/** The id from which we can get a bucket back in an LSH table + */ +typedef unsigned int BucketKey; + +/** A bucket in an LSH table + */ +typedef std::vector Bucket; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** POD for stats about an LSH table + */ +struct LshStats +{ + std::vector bucket_sizes_; + size_t n_buckets_; + size_t bucket_size_mean_; + size_t bucket_size_median_; + size_t bucket_size_min_; + size_t bucket_size_max_; + size_t bucket_size_std_dev; + /** Each contained vector contains three value: beginning/end for interval, number of elements in the bin + */ + std::vector > size_histogram_; +}; + +/** Overload the << operator for LshStats + * @param out the streams + * @param stats the stats to display + * @return the streams + */ +inline std::ostream& operator <<(std::ostream& out, const LshStats& stats) +{ + int w = 20; + out << "Lsh Table Stats:\n" << std::setw(w) << std::setiosflags(std::ios::right) << "N buckets : " + << stats.n_buckets_ << "\n" << std::setw(w) << std::setiosflags(std::ios::right) << "mean size : " + << std::setiosflags(std::ios::left) << stats.bucket_size_mean_ << "\n" << std::setw(w) + << std::setiosflags(std::ios::right) << "median size : " << stats.bucket_size_median_ << "\n" << std::setw(w) + << std::setiosflags(std::ios::right) << "min size : " << std::setiosflags(std::ios::left) + << stats.bucket_size_min_ << "\n" << std::setw(w) << std::setiosflags(std::ios::right) << "max size : " + << std::setiosflags(std::ios::left) << stats.bucket_size_max_; + + // Display the histogram + out << std::endl << std::setw(w) << std::setiosflags(std::ios::right) << "histogram : " + << std::setiosflags(std::ios::left); + for (std::vector >::const_iterator iterator = stats.size_histogram_.begin(), end = + stats.size_histogram_.end(); iterator != end; ++iterator) out << (*iterator)[0] << "-" << (*iterator)[1] << ": " << (*iterator)[2] << ", "; + + return out; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Lsh hash table. As its key is a sub-feature, and as usually + * the size of it is pretty small, we keep it as a continuous memory array. + * The value is an index in the corpus of features (we keep it as an unsigned + * int for pure memory reasons, it could be a size_t) + */ +template +class LshTable +{ +public: + /** A container of all the feature indices. Optimized for space + */ +#if USE_UNORDERED_MAP + typedef std::unordered_map BucketsSpace; +#else + typedef std::map BucketsSpace; +#endif + + /** A container of all the feature indices. Optimized for speed + */ + typedef std::vector BucketsSpeed; + + /** Default constructor + */ + LshTable() + { + key_size_ = 0; + feature_size_ = 0; + speed_level_ = kArray; + } + + /** Default constructor + * Create the mask and allocate the memory + * @param feature_size is the size of the feature (considered as a ElementType[]) + * @param key_size is the number of bits that are turned on in the feature + */ + LshTable(unsigned int feature_size, unsigned int key_size) + { + feature_size_ = feature_size; + CV_UNUSED(key_size); + std::cerr << "LSH is not implemented for that type" << std::endl; + assert(0); + } + + /** Add a feature to the table + * @param value the value to store for that feature + * @param feature the feature itself + */ + void add(unsigned int value, const ElementType* feature) + { + // Add the value to the corresponding bucket + BucketKey key = (lsh::BucketKey)getKey(feature); + + switch (speed_level_) { + case kArray: + // That means we get the buckets from an array + buckets_speed_[key].push_back(value); + break; + case kBitsetHash: + // That means we can check the bitset for the presence of a key + key_bitset_.set(key); + buckets_space_[key].push_back(value); + break; + case kHash: + { + // That means we have to check for the hash table for the presence of a key + buckets_space_[key].push_back(value); + break; + } + } + } + + /** Add a set of features to the table + * @param dataset the values to store + */ + void add(Matrix dataset) + { +#if USE_UNORDERED_MAP + buckets_space_.rehash((buckets_space_.size() + dataset.rows) * 1.2); +#endif + // Add the features to the table + for (unsigned int i = 0; i < dataset.rows; ++i) add(i, dataset[i]); + // Now that the table is full, optimize it for speed/space + optimize(); + } + + /** Get a bucket given the key + * @param key + * @return + */ + inline const Bucket* getBucketFromKey(BucketKey key) const + { + // Generate other buckets + switch (speed_level_) { + case kArray: + // That means we get the buckets from an array + return &buckets_speed_[key]; + break; + case kBitsetHash: + // That means we can check the bitset for the presence of a key + if (key_bitset_.test(key)) return &buckets_space_.find(key)->second; + else return 0; + break; + case kHash: + { + // That means we have to check for the hash table for the presence of a key + BucketsSpace::const_iterator bucket_it, bucket_end = buckets_space_.end(); + bucket_it = buckets_space_.find(key); + // Stop here if that bucket does not exist + if (bucket_it == bucket_end) return 0; + else return &bucket_it->second; + break; + } + } + return 0; + } + + /** Compute the sub-signature of a feature + */ + size_t getKey(const ElementType* /*feature*/) const + { + std::cerr << "LSH is not implemented for that type" << std::endl; + assert(0); + return 1; + } + + /** Get statistics about the table + * @return + */ + LshStats getStats() const; + +private: + /** defines the speed fo the implementation + * kArray uses a vector for storing data + * kBitsetHash uses a hash map but checks for the validity of a key with a bitset + * kHash uses a hash map only + */ + enum SpeedLevel + { + kArray, kBitsetHash, kHash + }; + + /** Initialize some variables + */ + void initialize(size_t key_size) + { + const size_t key_size_lower_bound = 1; + //a value (size_t(1) << key_size) must fit the size_t type so key_size has to be strictly less than size of size_t + const size_t key_size_upper_bound = (std::min)(sizeof(BucketKey) * CHAR_BIT + 1, sizeof(size_t) * CHAR_BIT); + if (key_size < key_size_lower_bound || key_size >= key_size_upper_bound) + { + CV_Error(cv::Error::StsBadArg, cv::format("Invalid key_size (=%d). Valid values for your system are %d <= key_size < %d.", (int)key_size, (int)key_size_lower_bound, (int)key_size_upper_bound)); + } + + speed_level_ = kHash; + key_size_ = (unsigned)key_size; + } + + /** Optimize the table for speed/space + */ + void optimize() + { + // If we are already using the fast storage, no need to do anything + if (speed_level_ == kArray) return; + + // Use an array if it will be more than half full + if (buckets_space_.size() > ((size_t(1) << key_size_) / 2)) { + speed_level_ = kArray; + // Fill the array version of it + buckets_speed_.resize(size_t(1) << key_size_); + for (BucketsSpace::const_iterator key_bucket = buckets_space_.begin(); key_bucket != buckets_space_.end(); ++key_bucket) buckets_speed_[key_bucket->first] = key_bucket->second; + + // Empty the hash table + buckets_space_.clear(); + return; + } + + // If the bitset is going to use less than 10% of the RAM of the hash map (at least 1 size_t for the key and two + // for the vector) or less than 512MB (key_size_ <= 30) + if (((std::max(buckets_space_.size(), buckets_speed_.size()) * CHAR_BIT * 3 * sizeof(BucketKey)) / 10 + >= (size_t(1) << key_size_)) || (key_size_ <= 32)) { + speed_level_ = kBitsetHash; + key_bitset_.resize(size_t(1) << key_size_); + key_bitset_.reset(); + // Try with the BucketsSpace + for (BucketsSpace::const_iterator key_bucket = buckets_space_.begin(); key_bucket != buckets_space_.end(); ++key_bucket) key_bitset_.set(key_bucket->first); + } + else { + speed_level_ = kHash; + key_bitset_.clear(); + } + } + + /** The vector of all the buckets if they are held for speed + */ + BucketsSpeed buckets_speed_; + + /** The hash table of all the buckets in case we cannot use the speed version + */ + BucketsSpace buckets_space_; + + /** What is used to store the data */ + SpeedLevel speed_level_; + + /** If the subkey is small enough, it will keep track of which subkeys are set through that bitset + * That is just a speedup so that we don't look in the hash table (which can be mush slower that checking a bitset) + */ + DynamicBitset key_bitset_; + + /** The size of the sub-signature in bits + */ + unsigned int key_size_; + + unsigned int feature_size_; + + // Members only used for the unsigned char specialization + /** The mask to apply to a feature to get the hash key + * Only used in the unsigned char case + */ + std::vector mask_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Specialization for unsigned char + +template<> +inline LshTable::LshTable(unsigned int feature_size, unsigned int subsignature_size) +{ + feature_size_ = feature_size; + initialize(subsignature_size); + // Allocate the mask + mask_ = std::vector((feature_size * sizeof(char) + sizeof(size_t) - 1) / sizeof(size_t), 0); + + // A bit brutal but fast to code + std::vector indices(feature_size * CHAR_BIT); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = (int)i; +#ifndef OPENCV_FLANN_USE_STD_RAND + cv::randShuffle(indices); +#else + std::random_shuffle(indices.begin(), indices.end()); +#endif + + // Generate a random set of order of subsignature_size_ bits + for (unsigned int i = 0; i < key_size_; ++i) { + size_t index = indices[i]; + + // Set that bit in the mask + size_t divisor = CHAR_BIT * sizeof(size_t); + size_t idx = index / divisor; //pick the right size_t index + mask_[idx] |= size_t(1) << (index % divisor); //use modulo to find the bit offset + } + + // Set to 1 if you want to display the mask for debug +#if 0 + { + size_t bcount = 0; + BOOST_FOREACH(size_t mask_block, mask_){ + out << std::setw(sizeof(size_t) * CHAR_BIT / 4) << std::setfill('0') << std::hex << mask_block + << std::endl; + bcount += __builtin_popcountll(mask_block); + } + out << "bit count : " << std::dec << bcount << std::endl; + out << "mask size : " << mask_.size() << std::endl; + return out; + } +#endif +} + +/** Return the Subsignature of a feature + * @param feature the feature to analyze + */ +template<> +inline size_t LshTable::getKey(const unsigned char* feature) const +{ + // no need to check if T is dividable by sizeof(size_t) like in the Hamming + // distance computation as we have a mask + // FIXIT: This is bad assumption, because we reading tail bytes after of the allocated features buffer + const size_t* feature_block_ptr = reinterpret_cast ((const void*)feature); + + // Figure out the subsignature of the feature + // Given the feature ABCDEF, and the mask 001011, the output will be + // 000CEF + size_t subsignature = 0; + size_t bit_index = 1; + + for (unsigned i = 0; i < feature_size_; i += sizeof(size_t)) { + // get the mask and signature blocks + size_t feature_block; + if (i <= feature_size_ - sizeof(size_t)) + { + feature_block = *feature_block_ptr; + } + else + { + size_t tmp = 0; + memcpy(&tmp, feature_block_ptr, feature_size_ - i); // preserve bytes order + feature_block = tmp; + } + size_t mask_block = mask_[i / sizeof(size_t)]; + while (mask_block) { + // Get the lowest set bit in the mask block + size_t lowest_bit = mask_block & (-(ptrdiff_t)mask_block); + // Add it to the current subsignature if necessary + subsignature += (feature_block & lowest_bit) ? bit_index : 0; + // Reset the bit in the mask block + mask_block ^= lowest_bit; + // increment the bit index for the subsignature + bit_index <<= 1; + } + // Check the next feature block + ++feature_block_ptr; + } + return subsignature; +} + +template<> +inline LshStats LshTable::getStats() const +{ + LshStats stats; + stats.bucket_size_mean_ = 0; + if ((buckets_speed_.empty()) && (buckets_space_.empty())) { + stats.n_buckets_ = 0; + stats.bucket_size_median_ = 0; + stats.bucket_size_min_ = 0; + stats.bucket_size_max_ = 0; + return stats; + } + + if (!buckets_speed_.empty()) { + for (BucketsSpeed::const_iterator pbucket = buckets_speed_.begin(); pbucket != buckets_speed_.end(); ++pbucket) { + stats.bucket_sizes_.push_back((lsh::FeatureIndex)pbucket->size()); + stats.bucket_size_mean_ += pbucket->size(); + } + stats.bucket_size_mean_ /= buckets_speed_.size(); + stats.n_buckets_ = buckets_speed_.size(); + } + else { + for (BucketsSpace::const_iterator x = buckets_space_.begin(); x != buckets_space_.end(); ++x) { + stats.bucket_sizes_.push_back((lsh::FeatureIndex)x->second.size()); + stats.bucket_size_mean_ += x->second.size(); + } + stats.bucket_size_mean_ /= buckets_space_.size(); + stats.n_buckets_ = buckets_space_.size(); + } + + std::sort(stats.bucket_sizes_.begin(), stats.bucket_sizes_.end()); + + // BOOST_FOREACH(int size, stats.bucket_sizes_) + // std::cout << size << " "; + // std::cout << std::endl; + stats.bucket_size_median_ = stats.bucket_sizes_[stats.bucket_sizes_.size() / 2]; + stats.bucket_size_min_ = stats.bucket_sizes_.front(); + stats.bucket_size_max_ = stats.bucket_sizes_.back(); + + // TODO compute mean and std + /*float mean, stddev; + stats.bucket_size_mean_ = mean; + stats.bucket_size_std_dev = stddev;*/ + + // Include a histogram of the buckets + unsigned int bin_start = 0; + unsigned int bin_end = 20; + bool is_new_bin = true; + for (std::vector::iterator iterator = stats.bucket_sizes_.begin(), end = stats.bucket_sizes_.end(); iterator + != end; ) + if (*iterator < bin_end) { + if (is_new_bin) { + stats.size_histogram_.push_back(std::vector(3, 0)); + stats.size_histogram_.back()[0] = bin_start; + stats.size_histogram_.back()[1] = bin_end - 1; + is_new_bin = false; + } + ++stats.size_histogram_.back()[2]; + ++iterator; + } + else { + bin_start += 20; + bin_end += 20; + is_new_bin = true; + } + + return stats; +} + +// End the two namespaces +} +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#endif /* OPENCV_FLANN_LSH_TABLE_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/matrix.h b/LaiPuLaser/OpenCV/include/opencv2/flann/matrix.h new file mode 100644 index 0000000..f6092d1 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/matrix.h @@ -0,0 +1,116 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_DATASET_H_ +#define OPENCV_FLANN_DATASET_H_ + +#include + +#include "general.h" + +namespace cvflann +{ + +/** + * Class that implements a simple rectangular matrix stored in a memory buffer and + * provides convenient matrix-like access using the [] operators. + */ +template +class Matrix +{ +public: + typedef T type; + + size_t rows; + size_t cols; + size_t stride; + T* data; + + Matrix() : rows(0), cols(0), stride(0), data(NULL) + { + } + + Matrix(T* data_, size_t rows_, size_t cols_, size_t stride_ = 0) : + rows(rows_), cols(cols_), stride(stride_), data(data_) + { + if (stride==0) stride = cols; + } + + /** + * Convenience function for deallocating the storage data. + */ + CV_DEPRECATED void free() + { + fprintf(stderr, "The cvflann::Matrix::free() method is deprecated " + "and it does not do any memory deallocation any more. You are" + "responsible for deallocating the matrix memory (by doing" + "'delete[] matrix.data' for example)"); + } + + /** + * Operator that return a (pointer to a) row of the data. + */ + T* operator[](size_t index) const + { + return data+index*stride; + } +}; + + +class UntypedMatrix +{ +public: + size_t rows; + size_t cols; + void* data; + flann_datatype_t type; + + UntypedMatrix(void* data_, long rows_, long cols_) : + rows(rows_), cols(cols_), data(data_) + { + } + + ~UntypedMatrix() + { + } + + + template + Matrix as() + { + return Matrix((T*)data, rows, cols); + } +}; + + + +} + +#endif //OPENCV_FLANN_DATASET_H_ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/miniflann.hpp b/LaiPuLaser/OpenCV/include/opencv2/flann/miniflann.hpp new file mode 100644 index 0000000..2590ad7 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/miniflann.hpp @@ -0,0 +1,177 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_MINIFLANN_HPP +#define OPENCV_MINIFLANN_HPP + +#include "opencv2/core.hpp" +#include "opencv2/flann/defines.h" + +namespace cv +{ + +namespace flann +{ + +enum FlannIndexType { + FLANN_INDEX_TYPE_8U = CV_8U, + FLANN_INDEX_TYPE_8S = CV_8S, + FLANN_INDEX_TYPE_16U = CV_16U, + FLANN_INDEX_TYPE_16S = CV_16S, + FLANN_INDEX_TYPE_32S = CV_32S, + FLANN_INDEX_TYPE_32F = CV_32F, + FLANN_INDEX_TYPE_64F = CV_64F, + FLANN_INDEX_TYPE_STRING, + FLANN_INDEX_TYPE_BOOL, + FLANN_INDEX_TYPE_ALGORITHM, + LAST_VALUE_FLANN_INDEX_TYPE = FLANN_INDEX_TYPE_ALGORITHM +}; + +struct CV_EXPORTS IndexParams +{ + IndexParams(); + ~IndexParams(); + + String getString(const String& key, const String& defaultVal=String()) const; + int getInt(const String& key, int defaultVal=-1) const; + double getDouble(const String& key, double defaultVal=-1) const; + + void setString(const String& key, const String& value); + void setInt(const String& key, int value); + void setDouble(const String& key, double value); + void setFloat(const String& key, float value); + void setBool(const String& key, bool value); + void setAlgorithm(int value); + + // FIXIT: replace by void write(FileStorage& fs) const + read() + void getAll(std::vector& names, + std::vector& types, + std::vector& strValues, + std::vector& numValues) const; + + void* params; + +private: + IndexParams(const IndexParams &); // copy disabled + IndexParams& operator=(const IndexParams &); // assign disabled +}; + +struct CV_EXPORTS KDTreeIndexParams : public IndexParams +{ + KDTreeIndexParams(int trees=4); +}; + +struct CV_EXPORTS LinearIndexParams : public IndexParams +{ + LinearIndexParams(); +}; + +struct CV_EXPORTS CompositeIndexParams : public IndexParams +{ + CompositeIndexParams(int trees = 4, int branching = 32, int iterations = 11, + cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, float cb_index = 0.2f ); +}; + +struct CV_EXPORTS AutotunedIndexParams : public IndexParams +{ + AutotunedIndexParams(float target_precision = 0.8f, float build_weight = 0.01f, + float memory_weight = 0, float sample_fraction = 0.1f); +}; + +struct CV_EXPORTS HierarchicalClusteringIndexParams : public IndexParams +{ + HierarchicalClusteringIndexParams(int branching = 32, + cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, int trees = 4, int leaf_size = 100 ); +}; + +struct CV_EXPORTS KMeansIndexParams : public IndexParams +{ + KMeansIndexParams(int branching = 32, int iterations = 11, + cvflann::flann_centers_init_t centers_init = cvflann::FLANN_CENTERS_RANDOM, float cb_index = 0.2f ); +}; + +struct CV_EXPORTS LshIndexParams : public IndexParams +{ + LshIndexParams(int table_number, int key_size, int multi_probe_level); +}; + +struct CV_EXPORTS SavedIndexParams : public IndexParams +{ + SavedIndexParams(const String& filename); +}; + +struct CV_EXPORTS SearchParams : public IndexParams +{ + SearchParams( int checks = 32, float eps = 0, bool sorted = true ); +}; + +class CV_EXPORTS_W Index +{ +public: + CV_WRAP Index(); + CV_WRAP Index(InputArray features, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2); + virtual ~Index(); + + CV_WRAP virtual void build(InputArray features, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2); + CV_WRAP virtual void knnSearch(InputArray query, OutputArray indices, + OutputArray dists, int knn, const SearchParams& params=SearchParams()); + + CV_WRAP virtual int radiusSearch(InputArray query, OutputArray indices, + OutputArray dists, double radius, int maxResults, + const SearchParams& params=SearchParams()); + + CV_WRAP virtual void save(const String& filename) const; + CV_WRAP virtual bool load(InputArray features, const String& filename); + CV_WRAP virtual void release(); + CV_WRAP cvflann::flann_distance_t getDistance() const; + CV_WRAP cvflann::flann_algorithm_t getAlgorithm() const; + +protected: + cvflann::flann_distance_t distType; + cvflann::flann_algorithm_t algo; + int featureType; + void* index; +}; + +} } // namespace cv::flann + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/nn_index.h b/LaiPuLaser/OpenCV/include/opencv2/flann/nn_index.h new file mode 100644 index 0000000..381d4bc --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/nn_index.h @@ -0,0 +1,177 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_NNINDEX_H +#define OPENCV_FLANN_NNINDEX_H + +#include "general.h" +#include "matrix.h" +#include "result_set.h" +#include "params.h" + +namespace cvflann +{ + +/** + * Nearest-neighbour index base class + */ +template +class NNIndex +{ + typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; + +public: + + virtual ~NNIndex() {} + + /** + * \brief Builds the index + */ + virtual void buildIndex() = 0; + + /** + * \brief Perform k-nearest neighbor search + * \param[in] queries The query points for which to find the nearest neighbors + * \param[out] indices The indices of the nearest neighbors found + * \param[out] dists Distances to the nearest neighbors found + * \param[in] knn Number of nearest neighbors to return + * \param[in] params Search parameters + */ + virtual void knnSearch(const Matrix& queries, Matrix& indices, Matrix& dists, int knn, const SearchParams& params) + { + assert(queries.cols == veclen()); + assert(indices.rows >= queries.rows); + assert(dists.rows >= queries.rows); + assert(int(indices.cols) >= knn); + assert(int(dists.cols) >= knn); + +#if 0 + KNNResultSet resultSet(knn); + for (size_t i = 0; i < queries.rows; i++) { + resultSet.init(indices[i], dists[i]); + findNeighbors(resultSet, queries[i], params); + } +#else + KNNUniqueResultSet resultSet(knn); + for (size_t i = 0; i < queries.rows; i++) { + resultSet.clear(); + findNeighbors(resultSet, queries[i], params); + if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices[i], dists[i], knn); + else resultSet.copy(indices[i], dists[i], knn); + } +#endif + } + + /** + * \brief Perform radius search + * \param[in] query The query point + * \param[out] indices The indinces of the neighbors found within the given radius + * \param[out] dists The distances to the nearest neighbors found + * \param[in] radius The radius used for search + * \param[in] params Search parameters + * \returns Number of neighbors found + */ + virtual int radiusSearch(const Matrix& query, Matrix& indices, Matrix& dists, float radius, const SearchParams& params) + { + if (query.rows != 1) { + fprintf(stderr, "I can only search one feature at a time for range search\n"); + return -1; + } + assert(query.cols == veclen()); + assert(indices.cols == dists.cols); + + int n = 0; + int* indices_ptr = NULL; + DistanceType* dists_ptr = NULL; + if (indices.cols > 0) { + n = (int)indices.cols; + indices_ptr = indices[0]; + dists_ptr = dists[0]; + } + + RadiusUniqueResultSet resultSet((DistanceType)radius); + resultSet.clear(); + findNeighbors(resultSet, query[0], params); + if (n>0) { + if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices_ptr, dists_ptr, n); + else resultSet.copy(indices_ptr, dists_ptr, n); + } + + return (int)resultSet.size(); + } + + /** + * \brief Saves the index to a stream + * \param stream The stream to save the index to + */ + virtual void saveIndex(FILE* stream) = 0; + + /** + * \brief Loads the index from a stream + * \param stream The stream from which the index is loaded + */ + virtual void loadIndex(FILE* stream) = 0; + + /** + * \returns number of features in this index. + */ + virtual size_t size() const = 0; + + /** + * \returns The dimensionality of the features in this index. + */ + virtual size_t veclen() const = 0; + + /** + * \returns The amount of memory (in bytes) used by the index. + */ + virtual int usedMemory() const = 0; + + /** + * \returns The index type (kdtree, kmeans,...) + */ + virtual flann_algorithm_t getType() const = 0; + + /** + * \returns The index parameters + */ + virtual IndexParams getParameters() const = 0; + + + /** + * \brief Method that searches for nearest-neighbours + */ + virtual void findNeighbors(ResultSet& result, const ElementType* vec, const SearchParams& searchParams) = 0; +}; + +} + +#endif //OPENCV_FLANN_NNINDEX_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/object_factory.h b/LaiPuLaser/OpenCV/include/opencv2/flann/object_factory.h new file mode 100644 index 0000000..7f971c5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/object_factory.h @@ -0,0 +1,91 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_OBJECT_FACTORY_H_ +#define OPENCV_FLANN_OBJECT_FACTORY_H_ + +#include + +namespace cvflann +{ + +class CreatorNotFound +{ +}; + +template +class ObjectFactory +{ + typedef ObjectFactory ThisClass; + typedef std::map ObjectRegistry; + + // singleton class, private constructor + ObjectFactory() {} + +public: + + bool subscribe(UniqueIdType id, ObjectCreator creator) + { + if (object_registry.find(id) != object_registry.end()) return false; + + object_registry[id] = creator; + return true; + } + + bool unregister(UniqueIdType id) + { + return object_registry.erase(id) == 1; + } + + ObjectCreator create(UniqueIdType id) + { + typename ObjectRegistry::const_iterator iter = object_registry.find(id); + + if (iter == object_registry.end()) { + throw CreatorNotFound(); + } + + return iter->second; + } + + static ThisClass& instance() + { + static ThisClass the_factory; + return the_factory; + } +private: + ObjectRegistry object_registry; +}; + +} + +#endif /* OPENCV_FLANN_OBJECT_FACTORY_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/params.h b/LaiPuLaser/OpenCV/include/opencv2/flann/params.h new file mode 100644 index 0000000..95ef4cd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/params.h @@ -0,0 +1,99 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + + +#ifndef OPENCV_FLANN_PARAMS_H_ +#define OPENCV_FLANN_PARAMS_H_ + +#include "any.h" +#include "general.h" +#include +#include + + +namespace cvflann +{ + +typedef std::map IndexParams; + +struct SearchParams : public IndexParams +{ + SearchParams(int checks = 32, float eps = 0, bool sorted = true ) + { + // how many leafs to visit when searching for neighbours (-1 for unlimited) + (*this)["checks"] = checks; + // search for eps-approximate neighbours (default: 0) + (*this)["eps"] = eps; + // only for radius search, require neighbours sorted by distance (default: true) + (*this)["sorted"] = sorted; + } +}; + + +template +T get_param(const IndexParams& params, cv::String name, const T& default_value) +{ + IndexParams::const_iterator it = params.find(name); + if (it != params.end()) { + return it->second.cast(); + } + else { + return default_value; + } +} + +template +T get_param(const IndexParams& params, cv::String name) +{ + IndexParams::const_iterator it = params.find(name); + if (it != params.end()) { + return it->second.cast(); + } + else { + throw FLANNException(cv::String("Missing parameter '")+name+cv::String("' in the parameters given")); + } +} + +inline void print_params(const IndexParams& params, std::ostream& stream) +{ + IndexParams::const_iterator it; + + for(it=params.begin(); it!=params.end(); ++it) { + stream << it->first << " : " << it->second << std::endl; + } +} + +inline void print_params(const IndexParams& params) +{ + print_params(params, std::cout); +} + +} + + +#endif /* OPENCV_FLANN_PARAMS_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/random.h b/LaiPuLaser/OpenCV/include/opencv2/flann/random.h new file mode 100644 index 0000000..d678474 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/random.h @@ -0,0 +1,155 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_RANDOM_H +#define OPENCV_FLANN_RANDOM_H + +#include +#include +#include + +#include "general.h" + +namespace cvflann +{ + +inline int rand() +{ +#ifndef OPENCV_FLANN_USE_STD_RAND +# if INT_MAX == RAND_MAX + int v = cv::theRNG().next() & INT_MAX; +# else + int v = cv::theRNG().uniform(0, RAND_MAX + 1); +# endif +#else + int v = std::rand(); +#endif // OPENCV_FLANN_USE_STD_RAND + return v; +} + +/** + * Seeds the random number generator + * @param seed Random seed + */ +inline void seed_random(unsigned int seed) +{ +#ifndef OPENCV_FLANN_USE_STD_RAND + cv::theRNG() = cv::RNG(seed); +#else + std::srand(seed); +#endif +} + +/* + * Generates a random double value. + */ +/** + * Generates a random double value. + * @param high Upper limit + * @param low Lower limit + * @return Random double value + */ +inline double rand_double(double high = 1.0, double low = 0) +{ + return low + ((high-low) * (rand() / (RAND_MAX + 1.0))); +} + +/** + * Generates a random integer value. + * @param high Upper limit + * @param low Lower limit + * @return Random integer value + */ +inline int rand_int(int high = RAND_MAX, int low = 0) +{ + return low + (int) ( double(high-low) * (rand() / (RAND_MAX + 1.0))); +} + +/** + * Random number generator that returns a distinct number from + * the [0,n) interval each time. + */ +class UniqueRandom +{ + std::vector vals_; + int size_; + int counter_; + +public: + /** + * Constructor. + * @param n Size of the interval from which to generate + * @return + */ + UniqueRandom(int n) + { + init(n); + } + + /** + * Initializes the number generator. + * @param n the size of the interval from which to generate random numbers. + */ + void init(int n) + { + // create and initialize an array of size n + vals_.resize(n); + size_ = n; + for (int i = 0; i < size_; ++i) vals_[i] = i; + + // shuffle the elements in the array +#ifndef OPENCV_FLANN_USE_STD_RAND + cv::randShuffle(vals_); +#else + std::random_shuffle(vals_.begin(), vals_.end()); +#endif + + counter_ = 0; + } + + /** + * Return a distinct random integer in greater or equal to 0 and less + * than 'n' on each call. It should be called maximum 'n' times. + * Returns: a random integer + */ + int next() + { + if (counter_ == size_) { + return -1; + } + else { + return vals_[counter_++]; + } + } +}; + +} + +#endif //OPENCV_FLANN_RANDOM_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/result_set.h b/LaiPuLaser/OpenCV/include/opencv2/flann/result_set.h new file mode 100644 index 0000000..5c69ac2 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/result_set.h @@ -0,0 +1,543 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_RESULTSET_H +#define OPENCV_FLANN_RESULTSET_H + +#include +#include +#include +#include +#include +#include + +namespace cvflann +{ + +/* This record represents a branch point when finding neighbors in + the tree. It contains a record of the minimum distance to the query + point, as well as the node at which the search resumes. + */ + +template +struct BranchStruct +{ + T node; /* Tree node at which search resumes */ + DistanceType mindist; /* Minimum distance to query for all nodes below. */ + + BranchStruct() {} + BranchStruct(const T& aNode, DistanceType dist) : node(aNode), mindist(dist) {} + + bool operator<(const BranchStruct& rhs) const + { + return mindist +class ResultSet +{ +public: + virtual ~ResultSet() {} + + virtual bool full() const = 0; + + virtual void addPoint(DistanceType dist, int index) = 0; + + virtual DistanceType worstDist() const = 0; + +}; + +/** + * KNNSimpleResultSet does not ensure that the element it holds are unique. + * Is used in those cases where the nearest neighbour algorithm used does not + * attempt to insert the same element multiple times. + */ +template +class KNNSimpleResultSet : public ResultSet +{ + int* indices; + DistanceType* dists; + int capacity; + int count; + DistanceType worst_distance_; + +public: + KNNSimpleResultSet(int capacity_) : capacity(capacity_), count(0) + { + } + + void init(int* indices_, DistanceType* dists_) + { + indices = indices_; + dists = dists_; + count = 0; + worst_distance_ = (std::numeric_limits::max)(); + dists[capacity-1] = worst_distance_; + } + + size_t size() const + { + return count; + } + + bool full() const CV_OVERRIDE + { + return count == capacity; + } + + + void addPoint(DistanceType dist, int index) CV_OVERRIDE + { + if (dist >= worst_distance_) return; + int i; + for (i=count; i>0; --i) { +#ifdef FLANN_FIRST_MATCH + if ( (dists[i-1]>dist) || ((dist==dists[i-1])&&(indices[i-1]>index)) ) +#else + if (dists[i-1]>dist) +#endif + { + if (i +class KNNResultSet : public ResultSet +{ + int* indices; + DistanceType* dists; + int capacity; + int count; + DistanceType worst_distance_; + +public: + KNNResultSet(int capacity_) : capacity(capacity_), count(0) + { + } + + void init(int* indices_, DistanceType* dists_) + { + indices = indices_; + dists = dists_; + count = 0; + worst_distance_ = (std::numeric_limits::max)(); + dists[capacity-1] = worst_distance_; + } + + size_t size() const + { + return count; + } + + bool full() const CV_OVERRIDE + { + return count == capacity; + } + + + void addPoint(DistanceType dist, int index) CV_OVERRIDE + { + if (dist >= worst_distance_) return; + int i; + for (i = count; i > 0; --i) { +#ifdef FLANN_FIRST_MATCH + if ( (dists[i-1]<=dist) && ((dist!=dists[i-1])||(indices[i-1]<=index)) ) +#else + if (dists[i-1]<=dist) +#endif + { + // Check for duplicate indices + int j = i - 1; + while ((j >= 0) && (dists[j] == dist)) { + if (indices[j] == index) { + return; + } + --j; + } + break; + } + } + + if (count < capacity) ++count; + for (int j = count-1; j > i; --j) { + dists[j] = dists[j-1]; + indices[j] = indices[j-1]; + } + dists[i] = dist; + indices[i] = index; + worst_distance_ = dists[capacity-1]; + } + + DistanceType worstDist() const CV_OVERRIDE + { + return worst_distance_; + } +}; + + +/** + * A result-set class used when performing a radius based search. + */ +template +class RadiusResultSet : public ResultSet +{ + DistanceType radius; + int* indices; + DistanceType* dists; + size_t capacity; + size_t count; + +public: + RadiusResultSet(DistanceType radius_, int* indices_, DistanceType* dists_, int capacity_) : + radius(radius_), indices(indices_), dists(dists_), capacity(capacity_) + { + init(); + } + + ~RadiusResultSet() + { + } + + void init() + { + count = 0; + } + + size_t size() const + { + return count; + } + + bool full() const + { + return true; + } + + void addPoint(DistanceType dist, int index) + { + if (dist0)&&(count < capacity)) { + dists[count] = dist; + indices[count] = index; + } + count++; + } + } + + DistanceType worstDist() const + { + return radius; + } + +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Class that holds the k NN neighbors + * Faster than KNNResultSet as it uses a binary heap and does not maintain two arrays + */ +template +class UniqueResultSet : public ResultSet +{ +public: + struct DistIndex + { + DistIndex(DistanceType dist, unsigned int index) : + dist_(dist), index_(index) + { + } + bool operator<(const DistIndex dist_index) const + { + return (dist_ < dist_index.dist_) || ((dist_ == dist_index.dist_) && index_ < dist_index.index_); + } + DistanceType dist_; + unsigned int index_; + }; + + /** Default cosntructor */ + UniqueResultSet() : + is_full_(false), worst_distance_(std::numeric_limits::max()) + { + } + + /** Check the status of the set + * @return true if we have k NN + */ + inline bool full() const CV_OVERRIDE + { + return is_full_; + } + + /** Remove all elements in the set + */ + virtual void clear() = 0; + + /** Copy the set to two C arrays + * @param indices pointer to a C array of indices + * @param dist pointer to a C array of distances + * @param n_neighbors the number of neighbors to copy + */ + virtual void copy(int* indices, DistanceType* dist, int n_neighbors = -1) const + { + if (n_neighbors < 0) { + for (typename std::set::const_iterator dist_index = dist_indices_.begin(), dist_index_end = + dist_indices_.end(); dist_index != dist_index_end; ++dist_index, ++indices, ++dist) { + *indices = dist_index->index_; + *dist = dist_index->dist_; + } + } + else { + int i = 0; + for (typename std::set::const_iterator dist_index = dist_indices_.begin(), dist_index_end = + dist_indices_.end(); (dist_index != dist_index_end) && (i < n_neighbors); ++dist_index, ++indices, ++dist, ++i) { + *indices = dist_index->index_; + *dist = dist_index->dist_; + } + } + } + + /** Copy the set to two C arrays but sort it according to the distance first + * @param indices pointer to a C array of indices + * @param dist pointer to a C array of distances + * @param n_neighbors the number of neighbors to copy + */ + virtual void sortAndCopy(int* indices, DistanceType* dist, int n_neighbors = -1) const + { + copy(indices, dist, n_neighbors); + } + + /** The number of neighbors in the set + * @return + */ + size_t size() const + { + return dist_indices_.size(); + } + + /** The distance of the furthest neighbor + * If we don't have enough neighbors, it returns the max possible value + * @return + */ + inline DistanceType worstDist() const CV_OVERRIDE + { + return worst_distance_; + } +protected: + /** Flag to say if the set is full */ + bool is_full_; + + /** The worst distance found so far */ + DistanceType worst_distance_; + + /** The best candidates so far */ + std::set dist_indices_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Class that holds the k NN neighbors + * Faster than KNNResultSet as it uses a binary heap and does not maintain two arrays + */ +template +class KNNUniqueResultSet : public UniqueResultSet +{ +public: + /** Constructor + * @param capacity the number of neighbors to store at max + */ + KNNUniqueResultSet(unsigned int capacity) : capacity_(capacity) + { + this->is_full_ = false; + this->clear(); + } + + /** Add a possible candidate to the best neighbors + * @param dist distance for that neighbor + * @param index index of that neighbor + */ + inline void addPoint(DistanceType dist, int index) CV_OVERRIDE + { + // Don't do anything if we are worse than the worst + if (dist >= worst_distance_) return; + dist_indices_.insert(DistIndex(dist, index)); + + if (is_full_) { + if (dist_indices_.size() > capacity_) { + dist_indices_.erase(*dist_indices_.rbegin()); + worst_distance_ = dist_indices_.rbegin()->dist_; + } + } + else if (dist_indices_.size() == capacity_) { + is_full_ = true; + worst_distance_ = dist_indices_.rbegin()->dist_; + } + } + + /** Remove all elements in the set + */ + void clear() CV_OVERRIDE + { + dist_indices_.clear(); + worst_distance_ = std::numeric_limits::max(); + is_full_ = false; + } + +protected: + typedef typename UniqueResultSet::DistIndex DistIndex; + using UniqueResultSet::is_full_; + using UniqueResultSet::worst_distance_; + using UniqueResultSet::dist_indices_; + + /** The number of neighbors to keep */ + unsigned int capacity_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Class that holds the radius nearest neighbors + * It is more accurate than RadiusResult as it is not limited in the number of neighbors + */ +template +class RadiusUniqueResultSet : public UniqueResultSet +{ +public: + /** Constructor + * @param radius the maximum distance of a neighbor + */ + RadiusUniqueResultSet(DistanceType radius) : + radius_(radius) + { + is_full_ = true; + } + + /** Add a possible candidate to the best neighbors + * @param dist distance for that neighbor + * @param index index of that neighbor + */ + void addPoint(DistanceType dist, int index) CV_OVERRIDE + { + if (dist <= radius_) dist_indices_.insert(DistIndex(dist, index)); + } + + /** Remove all elements in the set + */ + inline void clear() CV_OVERRIDE + { + dist_indices_.clear(); + } + + + /** Check the status of the set + * @return alwys false + */ + inline bool full() const CV_OVERRIDE + { + return true; + } + + /** The distance of the furthest neighbor + * If we don't have enough neighbors, it returns the max possible value + * @return + */ + inline DistanceType worstDist() const CV_OVERRIDE + { + return radius_; + } +private: + typedef typename UniqueResultSet::DistIndex DistIndex; + using UniqueResultSet::dist_indices_; + using UniqueResultSet::is_full_; + + /** The furthest distance a neighbor can be */ + DistanceType radius_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Class that holds the k NN neighbors within a radius distance + */ +template +class KNNRadiusUniqueResultSet : public KNNUniqueResultSet +{ +public: + /** Constructor + * @param capacity the number of neighbors to store at max + * @param radius the maximum distance of a neighbor + */ + KNNRadiusUniqueResultSet(unsigned int capacity, DistanceType radius) + { + this->capacity_ = capacity; + this->radius_ = radius; + this->dist_indices_.reserve(capacity_); + this->clear(); + } + + /** Remove all elements in the set + */ + void clear() + { + dist_indices_.clear(); + worst_distance_ = radius_; + is_full_ = false; + } +private: + using KNNUniqueResultSet::dist_indices_; + using KNNUniqueResultSet::is_full_; + using KNNUniqueResultSet::worst_distance_; + + /** The maximum number of neighbors to consider */ + unsigned int capacity_; + + /** The maximum distance of a neighbor */ + DistanceType radius_; +}; +} + +#endif //OPENCV_FLANN_RESULTSET_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/sampling.h b/LaiPuLaser/OpenCV/include/opencv2/flann/sampling.h new file mode 100644 index 0000000..396f177 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/sampling.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + + +#ifndef OPENCV_FLANN_SAMPLING_H_ +#define OPENCV_FLANN_SAMPLING_H_ + +#include "matrix.h" +#include "random.h" + +namespace cvflann +{ + +template +Matrix random_sample(Matrix& srcMatrix, long size, bool remove = false) +{ + Matrix newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols); + + T* src,* dest; + for (long i=0; i +Matrix random_sample(const Matrix& srcMatrix, size_t size) +{ + UniqueRandom rand((int)srcMatrix.rows); + Matrix newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols); + + T* src,* dest; + for (size_t i=0; i +#include + +#include "general.h" +#include "nn_index.h" + +#ifdef FLANN_SIGNATURE_ +#undef FLANN_SIGNATURE_ +#endif +#define FLANN_SIGNATURE_ "FLANN_INDEX" + +namespace cvflann +{ + +template +struct Datatype {}; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_INT8; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_INT16; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_INT32; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_UINT8; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_UINT16; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_UINT32; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_FLOAT32; } }; +template<> +struct Datatype { static flann_datatype_t type() { return FLANN_FLOAT64; } }; + + +/** + * Structure representing the index header. + */ +struct IndexHeader +{ + char signature[16]; + char version[16]; + flann_datatype_t data_type; + flann_algorithm_t index_type; + size_t rows; + size_t cols; +}; + +/** + * Saves index header to stream + * + * @param stream - Stream to save to + * @param index - The index to save + */ +template +void save_header(FILE* stream, const NNIndex& index) +{ + IndexHeader header; + memset(header.signature, 0, sizeof(header.signature)); + strcpy(header.signature, FLANN_SIGNATURE_); + memset(header.version, 0, sizeof(header.version)); + strcpy(header.version, FLANN_VERSION_); + header.data_type = Datatype::type(); + header.index_type = index.getType(); + header.rows = index.size(); + header.cols = index.veclen(); + + std::fwrite(&header, sizeof(header),1,stream); +} + + +/** + * + * @param stream - Stream to load from + * @return Index header + */ +inline IndexHeader load_header(FILE* stream) +{ + IndexHeader header; + size_t read_size = fread(&header,sizeof(header),1,stream); + + if (read_size!=(size_t)1) { + throw FLANNException("Invalid index file, cannot read"); + } + + if (strcmp(header.signature,FLANN_SIGNATURE_)!=0) { + throw FLANNException("Invalid index file, wrong signature"); + } + + return header; + +} + + +template +void save_value(FILE* stream, const T& value, size_t count = 1) +{ + fwrite(&value, sizeof(value),count, stream); +} + +template +void save_value(FILE* stream, const cvflann::Matrix& value) +{ + fwrite(&value, sizeof(value),1, stream); + fwrite(value.data, sizeof(T),value.rows*value.cols, stream); +} + +template +void save_value(FILE* stream, const std::vector& value) +{ + size_t size = value.size(); + fwrite(&size, sizeof(size_t), 1, stream); + fwrite(&value[0], sizeof(T), size, stream); +} + +template +void load_value(FILE* stream, T& value, size_t count = 1) +{ + size_t read_cnt = fread(&value, sizeof(value), count, stream); + if (read_cnt != count) { + throw FLANNException("Cannot read from file"); + } +} + +template +void load_value(FILE* stream, cvflann::Matrix& value) +{ + size_t read_cnt = fread(&value, sizeof(value), 1, stream); + if (read_cnt != 1) { + throw FLANNException("Cannot read from file"); + } + value.data = new T[value.rows*value.cols]; + read_cnt = fread(value.data, sizeof(T), value.rows*value.cols, stream); + if (read_cnt != (size_t)(value.rows*value.cols)) { + throw FLANNException("Cannot read from file"); + } +} + + +template +void load_value(FILE* stream, std::vector& value) +{ + size_t size; + size_t read_cnt = fread(&size, sizeof(size_t), 1, stream); + if (read_cnt!=1) { + throw FLANNException("Cannot read from file"); + } + value.resize(size); + read_cnt = fread(&value[0], sizeof(T), size, stream); + if (read_cnt != size) { + throw FLANNException("Cannot read from file"); + } +} + +} + +#endif /* OPENCV_FLANN_SAVING_H_ */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/flann/simplex_downhill.h b/LaiPuLaser/OpenCV/include/opencv2/flann/simplex_downhill.h new file mode 100644 index 0000000..145901a --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/flann/simplex_downhill.h @@ -0,0 +1,186 @@ +/*********************************************************************** + * Software License Agreement (BSD License) + * + * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. + * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. + * + * THE BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *************************************************************************/ + +#ifndef OPENCV_FLANN_SIMPLEX_DOWNHILL_H_ +#define OPENCV_FLANN_SIMPLEX_DOWNHILL_H_ + +namespace cvflann +{ + +/** + Adds val to array vals (and point to array points) and keeping the arrays sorted by vals. + */ +template +void addValue(int pos, float val, float* vals, T* point, T* points, int n) +{ + vals[pos] = val; + for (int i=0; i0 && vals[j] +float optimizeSimplexDownhill(T* points, int n, F func, float* vals = NULL ) +{ + const int MAX_ITERATIONS = 10; + + assert(n>0); + + T* p_o = new T[n]; + T* p_r = new T[n]; + T* p_e = new T[n]; + + int alpha = 1; + + int iterations = 0; + + bool ownVals = false; + if (vals == NULL) { + ownVals = true; + vals = new float[n+1]; + for (int i=0; i MAX_ITERATIONS) break; + + // compute average of simplex points (except the highest point) + for (int j=0; j=vals[0])&&(val_r=vals[n]) { + for (int i=0; i +#include "opencv2/core.hpp" +#include "opencv2/core/utility.hpp" + +namespace cvflann +{ + +/** + * A start-stop timer class. + * + * Can be used to time portions of code. + */ +class StartStopTimer +{ + int64 startTime; + +public: + /** + * Value of the timer. + */ + double value; + + + /** + * Constructor. + */ + StartStopTimer() + { + reset(); + } + + /** + * Starts the timer. + */ + void start() + { + startTime = cv::getTickCount(); + } + + /** + * Stops the timer and updates timer value. + */ + void stop() + { + int64 stopTime = cv::getTickCount(); + value += ( (double)stopTime - startTime) / cv::getTickFrequency(); + } + + /** + * Resets the timer value to 0. + */ + void reset() + { + value = 0; + } + +}; + +} + +#endif // FLANN_TIMER_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi.hpp new file mode 100644 index 0000000..a043a83 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi.hpp @@ -0,0 +1,33 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_HPP +#define OPENCV_GAPI_HPP + +#include + +/** \defgroup gapi G-API framework +@{ + @defgroup gapi_main_classes G-API Main Classes + @defgroup gapi_data_objects G-API Data Objects + @{ + @defgroup gapi_meta_args G-API Metadata Descriptors + @} + @defgroup gapi_std_backends G-API Standard backends + @defgroup gapi_compile_args G-API Graph Compilation Arguments +@} + */ + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/garray.hpp" +#include "opencv2/gapi/gcomputation.hpp" +#include "opencv2/gapi/gcompiled.hpp" +#include "opencv2/gapi/gtyped.hpp" +#include "opencv2/gapi/gkernel.hpp" +#include "opencv2/gapi/operators.hpp" + +#endif // OPENCV_GAPI_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/core.hpp new file mode 100644 index 0000000..6455429 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/core.hpp @@ -0,0 +1,1630 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_CORE_HPP +#define OPENCV_GAPI_CORE_HPP + +#include // std::tuple + +#include + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" +#include "opencv2/gapi/gkernel.hpp" + +/** \defgroup gapi_core G-API core (basic) functionality +@{ + @defgroup gapi_math Graph API: Math operations + @defgroup gapi_pixelwise Graph API: Pixelwise operations + @defgroup gapi_matrixop Graph API: Operations on matrices + @defgroup gapi_transform Graph API: Geometric, depth and LUT-like image transformations +@} + */ +namespace cv { namespace gapi { +namespace core { + using GMat2 = std::tuple; + using GMat3 = std::tuple; // FIXME: how to avoid this? + using GMat4 = std::tuple; + using GMatScalar = std::tuple; + + G_TYPED_KERNEL(GAdd, , "org.opencv.core.math.add") { + static GMatDesc outMeta(GMatDesc a, GMatDesc b, int ddepth) { + if (ddepth == -1) + { + // OpenCV: When the input arrays in add/subtract/multiply/divide + // functions have different depths, the output array depth must be + // explicitly specified! + // See artim_op() @ arithm.cpp + GAPI_Assert(a.chan == b.chan); + GAPI_Assert(a.depth == b.depth); + return a; + } + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GAddC, , "org.opencv.core.math.addC") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GSub, , "org.opencv.core.math.sub") { + static GMatDesc outMeta(GMatDesc a, GMatDesc b, int ddepth) { + if (ddepth == -1) + { + // This macro should select a larger data depth from a and b + // considering the number of channels in the same + // FIXME!!! Clarify if it is valid for sub() + GAPI_Assert(a.chan == b.chan); + ddepth = std::max(a.depth, b.depth); + } + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GSubC, , "org.opencv.core.math.subC") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GSubRC,, "org.opencv.core.math.subRC") { + static GMatDesc outMeta(GScalarDesc, GMatDesc b, int ddepth) { + return b.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GMul, , "org.opencv.core.math.mul") { + static GMatDesc outMeta(GMatDesc a, GMatDesc, double, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GMulCOld, , "org.opencv.core.math.mulCOld") { + static GMatDesc outMeta(GMatDesc a, double, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GMulC, , "org.opencv.core.math.mulC"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GMulS, , "org.opencv.core.math.muls") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a; + } + }; // FIXME: Merge with MulC + + G_TYPED_KERNEL(GDiv, , "org.opencv.core.math.div") { + static GMatDesc outMeta(GMatDesc a, GMatDesc b, double, int ddepth) { + if (ddepth == -1) + { + GAPI_Assert(a.depth == b.depth); + return b; + } + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GDivC, , "org.opencv.core.math.divC") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc, double, int ddepth) { + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GDivRC, , "org.opencv.core.math.divRC") { + static GMatDesc outMeta(GScalarDesc, GMatDesc b, double, int ddepth) { + return b.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GMean, , "org.opencv.core.math.mean") { + static GScalarDesc outMeta(GMatDesc) { + return empty_scalar_desc(); + } + }; + + G_TYPED_KERNEL_M(GPolarToCart, , "org.opencv.core.math.polarToCart") { + static std::tuple outMeta(GMatDesc, GMatDesc a, bool) { + return std::make_tuple(a, a); + } + }; + + G_TYPED_KERNEL_M(GCartToPolar, , "org.opencv.core.math.cartToPolar") { + static std::tuple outMeta(GMatDesc x, GMatDesc, bool) { + return std::make_tuple(x, x); + } + }; + + G_TYPED_KERNEL(GPhase, , "org.opencv.core.math.phase") { + static GMatDesc outMeta(const GMatDesc &inx, const GMatDesc &, bool) { + return inx; + } + }; + + G_TYPED_KERNEL(GMask, , "org.opencv.core.pixelwise.mask") { + static GMatDesc outMeta(GMatDesc in, GMatDesc) { + return in; + } + }; + + G_TYPED_KERNEL(GCmpGT, , "org.opencv.core.pixelwise.compare.cmpGT") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpGE, , "org.opencv.core.pixelwise.compare.cmpGE") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpLE, , "org.opencv.core.pixelwise.compare.cmpLE") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpLT, , "org.opencv.core.pixelwise.compare.cmpLT") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpEQ, , "org.opencv.core.pixelwise.compare.cmpEQ") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpNE, , "org.opencv.core.pixelwise.compare.cmpNE") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpGTScalar, , "org.opencv.core.pixelwise.compare.cmpGTScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpGEScalar, , "org.opencv.core.pixelwise.compare.cmpGEScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpLEScalar, , "org.opencv.core.pixelwise.compare.cmpLEScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpLTScalar, , "org.opencv.core.pixelwise.compare.cmpLTScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpEQScalar, , "org.opencv.core.pixelwise.compare.cmpEQScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GCmpNEScalar, , "org.opencv.core.pixelwise.compare.cmpNEScalar"){ + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a.withDepth(CV_8U); + } + }; + + G_TYPED_KERNEL(GAnd, , "org.opencv.core.pixelwise.bitwise_and") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GAndS, , "org.opencv.core.pixelwise.bitwise_andS") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GOr, , "org.opencv.core.pixelwise.bitwise_or") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GOrS, , "org.opencv.core.pixelwise.bitwise_orS") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GXor, , "org.opencv.core.pixelwise.bitwise_xor") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GXorS, , "org.opencv.core.pixelwise.bitwise_xorS") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GNot, , "org.opencv.core.pixelwise.bitwise_not") { + static GMatDesc outMeta(GMatDesc a) { + return a; + } + }; + + G_TYPED_KERNEL(GSelect, , "org.opencv.core.pixelwise.select") { + static GMatDesc outMeta(GMatDesc a, GMatDesc, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GMin, , "org.opencv.core.matrixop.min") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GMax, , "org.opencv.core.matrixop.max") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GAbsDiff, , "org.opencv.core.matrixop.absdiff") { + static GMatDesc outMeta(GMatDesc a, GMatDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GAbsDiffC, , "org.opencv.core.matrixop.absdiffC") { + static GMatDesc outMeta(GMatDesc a, GScalarDesc) { + return a; + } + }; + + G_TYPED_KERNEL(GSum, , "org.opencv.core.matrixop.sum") { + static GScalarDesc outMeta(GMatDesc) { + return empty_scalar_desc(); + } + }; + + G_TYPED_KERNEL(GAddW, , "org.opencv.core.matrixop.addweighted") { + static GMatDesc outMeta(GMatDesc a, double, GMatDesc b, double, double, int ddepth) { + if (ddepth == -1) + { + // OpenCV: When the input arrays in add/subtract/multiply/divide + // functions have different depths, the output array depth must be + // explicitly specified! + // See artim_op() @ arithm.cpp + GAPI_Assert(a.chan == b.chan); + GAPI_Assert(a.depth == b.depth); + return a; + } + return a.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GNormL1, , "org.opencv.core.matrixop.norml1") { + static GScalarDesc outMeta(GMatDesc) { + return empty_scalar_desc(); + } + }; + + G_TYPED_KERNEL(GNormL2, , "org.opencv.core.matrixop.norml2") { + static GScalarDesc outMeta(GMatDesc) { + return empty_scalar_desc(); + } + }; + + G_TYPED_KERNEL(GNormInf, , "org.opencv.core.matrixop.norminf") { + static GScalarDesc outMeta(GMatDesc) { + return empty_scalar_desc(); + } + }; + + G_TYPED_KERNEL_M(GIntegral, , "org.opencv.core.matrixop.integral") { + static std::tuple outMeta(GMatDesc in, int sd, int sqd) { + return std::make_tuple(in.withSizeDelta(1,1).withDepth(sd), + in.withSizeDelta(1,1).withDepth(sqd)); + } + }; + + G_TYPED_KERNEL(GThreshold, , "org.opencv.core.matrixop.threshold") { + static GMatDesc outMeta(GMatDesc in, GScalarDesc, GScalarDesc, int) { + return in; + } + }; + + + G_TYPED_KERNEL_M(GThresholdOT, , "org.opencv.core.matrixop.thresholdOT") { + static std::tuple outMeta(GMatDesc in, GScalarDesc, int) { + return std::make_tuple(in, empty_scalar_desc()); + } + }; + + G_TYPED_KERNEL(GInRange, , "org.opencv.core.matrixop.inrange") { + static GMatDesc outMeta(GMatDesc in, GScalarDesc, GScalarDesc) { + return in.withType(CV_8U, 1); + } + }; + + G_TYPED_KERNEL_M(GSplit3, , "org.opencv.core.transform.split3") { + static std::tuple outMeta(GMatDesc in) { + const auto out_depth = in.depth; + const auto out_desc = in.withType(out_depth, 1); + return std::make_tuple(out_desc, out_desc, out_desc); + } + }; + + G_TYPED_KERNEL_M(GSplit4, ,"org.opencv.core.transform.split4") { + static std::tuple outMeta(GMatDesc in) { + const auto out_depth = in.depth; + const auto out_desc = in.withType(out_depth, 1); + return std::make_tuple(out_desc, out_desc, out_desc, out_desc); + } + }; + + G_TYPED_KERNEL(GResize, , "org.opencv.core.transform.resize") { + static GMatDesc outMeta(GMatDesc in, Size sz, double fx, double fy, int) { + if (sz.width != 0 && sz.height != 0) + { + return in.withSize(sz); + } + else + { + GAPI_Assert(fx != 0. && fy != 0.); + return in.withSize + (Size(static_cast(std::round(in.size.width * fx)), + static_cast(std::round(in.size.height * fy)))); + } + } + }; + + G_TYPED_KERNEL(GMerge3, , "org.opencv.core.transform.merge3") { + static GMatDesc outMeta(GMatDesc in, GMatDesc, GMatDesc) { + // Preserve depth and add channel component + return in.withType(in.depth, 3); + } + }; + + G_TYPED_KERNEL(GMerge4, , "org.opencv.core.transform.merge4") { + static GMatDesc outMeta(GMatDesc in, GMatDesc, GMatDesc, GMatDesc) { + // Preserve depth and add channel component + return in.withType(in.depth, 4); + } + }; + + G_TYPED_KERNEL(GRemap, , "org.opencv.core.transform.remap") { + static GMatDesc outMeta(GMatDesc in, Mat m1, Mat, int, int, Scalar) { + return in.withSize(m1.size()); + } + }; + + G_TYPED_KERNEL(GFlip, , "org.opencv.core.transform.flip") { + static GMatDesc outMeta(GMatDesc in, int) { + return in; + } + }; + + G_TYPED_KERNEL(GCrop, , "org.opencv.core.transform.crop") { + static GMatDesc outMeta(GMatDesc in, Rect rc) { + return in.withSize(Size(rc.width, rc.height)); + } + }; + + G_TYPED_KERNEL(GConcatHor, , "org.opencv.imgproc.transform.concatHor") { + static GMatDesc outMeta(GMatDesc l, GMatDesc r) { + return l.withSizeDelta(+r.size.width, 0); + } + }; + + G_TYPED_KERNEL(GConcatVert, , "org.opencv.imgproc.transform.concatVert") { + static GMatDesc outMeta(GMatDesc t, GMatDesc b) { + return t.withSizeDelta(0, +b.size.height); + } + }; + + G_TYPED_KERNEL(GLUT, , "org.opencv.core.transform.LUT") { + static GMatDesc outMeta(GMatDesc in, Mat) { + return in; + } + }; + + G_TYPED_KERNEL(GConvertTo, , "org.opencv.core.transform.convertTo") { + static GMatDesc outMeta(GMatDesc in, int rdepth, double, double) { + return rdepth < 0 ? in : in.withDepth(rdepth); + } + }; + + G_TYPED_KERNEL(GSqrt, , "org.opencv.core.math.sqrt") { + static GMatDesc outMeta(GMatDesc in) { + return in; + } + }; + + G_TYPED_KERNEL(GNormalize, , "org.opencv.core.normalize") { + static GMatDesc outMeta(GMatDesc in, double, double, int, int ddepth) { + // unlike opencv doesn't have a mask as a parameter + return (ddepth < 0 ? in : in.withDepth(ddepth)); + } + }; +} + +//! @addtogroup gapi_math +//! @{ + +/** @brief Calculates the per-element sum of two matrices. + +The function add calculates sum of two matrices of the same size and the same number of channels: +\f[\texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) + \texttt{src2}(I)) \quad \texttt{if mask}(I) \ne0\f] + +The function can be replaced with matrix expressions: + \f[\texttt{dst} = \texttt{src1} + \texttt{src2}\f] + +The input matrices and the output matrix can all have the same or different depths. For example, you +can add a 16-bit unsigned matrix to a 8-bit signed matrix and store the sum as a 32-bit +floating-point matrix. Depth of the output matrix is determined by the ddepth parameter. +If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have +the same depth as the input matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.add" +@param src1 first input matrix. +@param src2 second input matrix. +@param ddepth optional depth of the output matrix. +@sa sub, addWeighted +*/ +GAPI_EXPORTS GMat add(const GMat& src1, const GMat& src2, int ddepth = -1); + +/** @brief Calculates the per-element sum of matrix and given scalar. + +The function addC adds a given scalar value to each element of given matrix. +The function can be replaced with matrix expressions: + + \f[\texttt{dst} = \texttt{src1} + \texttt{c}\f] + +Depth of the output matrix is determined by the ddepth parameter. +If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix. +The matrices can be single or multi channel. Output matrix must have the same size and number of channels as the input matrix. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.addC" +@param src1 first input matrix. +@param c scalar value to be added. +@param ddepth optional depth of the output matrix. +@sa sub, addWeighted +*/ +GAPI_EXPORTS GMat addC(const GMat& src1, const GScalar& c, int ddepth = -1); +//! @overload +GAPI_EXPORTS GMat addC(const GScalar& c, const GMat& src1, int ddepth = -1); + +/** @brief Calculates the per-element difference between two matrices. + +The function sub calculates difference between two matrices, when both matrices have the same size and the same number of +channels: + \f[\texttt{dst}(I) = \texttt{src1}(I) - \texttt{src2}(I)\f] + +The function can be replaced with matrix expressions: +\f[\texttt{dst} = \texttt{src1} - \texttt{src2}\f] + +The input matrices and the output matrix can all have the same or different depths. For example, you +can subtract two 8-bit unsigned matrices store the result as a 16-bit signed matrix. +Depth of the output matrix is determined by the ddepth parameter. +If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have +the same depth as the input matrices. The matrices can be single or multi channel. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.sub" +@param src1 first input matrix. +@param src2 second input matrix. +@param ddepth optional depth of the output matrix. +@sa add, addC + */ +GAPI_EXPORTS GMat sub(const GMat& src1, const GMat& src2, int ddepth = -1); + +/** @brief Calculates the per-element difference between matrix and given scalar. + +The function can be replaced with matrix expressions: + \f[\texttt{dst} = \texttt{src} - \texttt{c}\f] + +Depth of the output matrix is determined by the ddepth parameter. +If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix. +The matrices can be single or multi channel. Output matrix must have the same size as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.subC" +@param src first input matrix. +@param c scalar value to subtracted. +@param ddepth optional depth of the output matrix. +@sa add, addC, subRC + */ +GAPI_EXPORTS GMat subC(const GMat& src, const GScalar& c, int ddepth = -1); + +/** @brief Calculates the per-element difference between given scalar and the matrix. + +The function can be replaced with matrix expressions: + \f[\texttt{dst} = \texttt{val} - \texttt{src}\f] + +Depth of the output matrix is determined by the ddepth parameter. +If ddepth is set to default -1, the depth of output matrix will be the same as the depth of input matrix. +The matrices can be single or multi channel. Output matrix must have the same size as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.subRC" +@param c scalar value to subtract from. +@param src input matrix to be subtracted. +@param ddepth optional depth of the output matrix. +@sa add, addC, subC + */ +GAPI_EXPORTS GMat subRC(const GScalar& c, const GMat& src, int ddepth = -1); + +/** @brief Calculates the per-element scaled product of two matrices. + +The function mul calculates the per-element product of two matrices: + +\f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{scale} \cdot \texttt{src1} (I) \cdot \texttt{src2} (I))\f] + +If src1.depth() == src2.depth(), ddepth can be set to the default -1. In this case, the output matrix will have +the same depth as the input matrices. The matrices can be single or multi channel. +Output matrix must have the same size as input matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.mul" +@param src1 first input matrix. +@param src2 second input matrix of the same size and the same depth as src1. +@param scale optional scale factor. +@param ddepth optional depth of the output matrix. +@sa add, sub, div, addWeighted +*/ +GAPI_EXPORTS GMat mul(const GMat& src1, const GMat& src2, double scale = 1.0, int ddepth = -1); + +/** @brief Multiplies matrix by scalar. + +The function mulC multiplies each element of matrix src by given scalar value: + +\f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{src1} (I) \cdot \texttt{multiplier} )\f] + +The matrices can be single or multi channel. Output matrix must have the same size as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.mulC" +@param src input matrix. +@param multiplier factor to be multiplied. +@param ddepth optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth. +@sa add, sub, div, addWeighted +*/ +GAPI_EXPORTS GMat mulC(const GMat& src, double multiplier, int ddepth = -1); +//! @overload +GAPI_EXPORTS GMat mulC(const GMat& src, const GScalar& multiplier, int ddepth = -1); // FIXME: merge with mulc +//! @overload +GAPI_EXPORTS GMat mulC(const GScalar& multiplier, const GMat& src, int ddepth = -1); // FIXME: merge with mulc + +/** @brief Performs per-element division of two matrices. + +The function divides one matrix by another: +\f[\texttt{dst(I) = saturate(src1(I)*scale/src2(I))}\f] + +When src2(I) is zero, dst(I) will also be zero. Different channels of +multi-channel matrices are processed independently. +The matrices can be single or multi channel. Output matrix must have the same size and depth as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.div" +@param src1 first input matrix. +@param src2 second input matrix of the same size and depth as src1. +@param scale scalar factor. +@param ddepth optional depth of the output matrix; you can only pass -1 when src1.depth() == src2.depth(). +@sa mul, add, sub +*/ +GAPI_EXPORTS GMat div(const GMat& src1, const GMat& src2, double scale, int ddepth = -1); + +/** @brief Divides matrix by scalar. + +The function divC divides each element of matrix src by given scalar value: + +\f[\texttt{dst(I) = saturate(src(I)*scale/divisor)}\f] + +When divisor is zero, dst(I) will also be zero. Different channels of +multi-channel matrices are processed independently. +The matrices can be single or multi channel. Output matrix must have the same size and depth as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.divC" +@param src input matrix. +@param divisor number to be divided by. +@param ddepth optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth. +@param scale scale factor. +@sa add, sub, div, addWeighted +*/ +GAPI_EXPORTS GMat divC(const GMat& src, const GScalar& divisor, double scale, int ddepth = -1); + +/** @brief Divides scalar by matrix. + +The function divRC divides given scalar by each element of matrix src and keep the division result in new matrix of the same size and type as src: + +\f[\texttt{dst(I) = saturate(divident*scale/src(I))}\f] + +When src(I) is zero, dst(I) will also be zero. Different channels of +multi-channel matrices are processed independently. +The matrices can be single or multi channel. Output matrix must have the same size and depth as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.divRC" +@param src input matrix. +@param divident number to be divided. +@param ddepth optional depth of the output matrix. If -1, the depth of output matrix will be the same as input matrix depth. +@param scale scale factor +@sa add, sub, div, addWeighted +*/ +GAPI_EXPORTS GMat divRC(const GScalar& divident, const GMat& src, double scale, int ddepth = -1); + +/** @brief Applies a mask to a matrix. + +The function mask set value from given matrix if the corresponding pixel value in mask matrix set to true, +and set the matrix value to 0 overwise. + +Supported src matrix data types are @ref CV_8UC1, @ref CV_16SC1, @ref CV_16UC1. Supported mask data type is @ref CV_8UC1. + +@note Function textual ID is "org.opencv.core.math.mask" +@param src input matrix. +@param mask input mask matrix. +*/ +GAPI_EXPORTS GMat mask(const GMat& src, const GMat& mask); + +/** @brief Calculates an average (mean) of matrix elements. + +The function mean calculates the mean value M of matrix elements, +independently for each channel, and return it. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.math.mean" +@param src input matrix. +*/ +GAPI_EXPORTS GScalar mean(const GMat& src); + +/** @brief Calculates x and y coordinates of 2D vectors from their magnitude and angle. + +The function polarToCart calculates the Cartesian coordinates of each 2D +vector represented by the corresponding elements of magnitude and angle: +\f[\begin{array}{l} \texttt{x} (I) = \texttt{magnitude} (I) \cos ( \texttt{angle} (I)) \\ \texttt{y} (I) = \texttt{magnitude} (I) \sin ( \texttt{angle} (I)) \\ \end{array}\f] + +The relative accuracy of the estimated coordinates is about 1e-6. + +First output is a matrix of x-coordinates of 2D vectors. +Second output is a matrix of y-coordinates of 2D vectors. +Both output must have the same size and depth as input matrices. + +@note Function textual ID is "org.opencv.core.math.polarToCart" + +@param magnitude input floating-point @ref CV_32FC1 matrix (1xN) of magnitudes of 2D vectors; +@param angle input floating-point @ref CV_32FC1 matrix (1xN) of angles of 2D vectors. +@param angleInDegrees when true, the input angles are measured in +degrees, otherwise, they are measured in radians. +@sa cartToPolar, exp, log, pow, sqrt +*/ +GAPI_EXPORTS std::tuple polarToCart(const GMat& magnitude, const GMat& angle, + bool angleInDegrees = false); + +/** @brief Calculates the magnitude and angle of 2D vectors. + +The function cartToPolar calculates either the magnitude, angle, or both +for every 2D vector (x(I),y(I)): +\f[\begin{array}{l} \texttt{magnitude} (I)= \sqrt{\texttt{x}(I)^2+\texttt{y}(I)^2} , \\ \texttt{angle} (I)= \texttt{atan2} ( \texttt{y} (I), \texttt{x} (I))[ \cdot180 / \pi ] \end{array}\f] + +The angles are calculated with accuracy about 0.3 degrees. For the point +(0,0), the angle is set to 0. + +First output is a matrix of magnitudes of the same size and depth as input x. +Second output is a matrix of angles that has the same size and depth as +x; the angles are measured in radians (from 0 to 2\*Pi) or in degrees (0 to 360 degrees). + +@note Function textual ID is "org.opencv.core.math.cartToPolar" + +@param x matrix of @ref CV_32FC1 x-coordinates. +@param y array of @ref CV_32FC1 y-coordinates. +@param angleInDegrees a flag, indicating whether the angles are measured +in radians (which is by default), or in degrees. +@sa polarToCart +*/ +GAPI_EXPORTS std::tuple cartToPolar(const GMat& x, const GMat& y, + bool angleInDegrees = false); + +/** @brief Calculates the rotation angle of 2D vectors. + +The function cv::phase calculates the rotation angle of each 2D vector that +is formed from the corresponding elements of x and y : +\f[\texttt{angle} (I) = \texttt{atan2} ( \texttt{y} (I), \texttt{x} (I))\f] + +The angle estimation accuracy is about 0.3 degrees. When x(I)=y(I)=0 , +the corresponding angle(I) is set to 0. +@param x input floating-point array of x-coordinates of 2D vectors. +@param y input array of y-coordinates of 2D vectors; it must have the +same size and the same type as x. +@param angleInDegrees when true, the function calculates the angle in +degrees, otherwise, they are measured in radians. +@return array of vector angles; it has the same size and same type as x. +*/ +GAPI_EXPORTS GMat phase(const GMat& x, const GMat &y, bool angleInDegrees = false); + +/** @brief Calculates a square root of array elements. + +The function cv::gapi::sqrt calculates a square root of each input array element. +In case of multi-channel arrays, each channel is processed +independently. The accuracy is approximately the same as of the built-in +std::sqrt . +@param src input floating-point array. +@return output array of the same size and type as src. +*/ +GAPI_EXPORTS GMat sqrt(const GMat &src); + +//! @} gapi_math +//! +//! @addtogroup gapi_pixelwise +//! @{ + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are greater compare to elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) > \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: +\f[\texttt{dst} = \texttt{src1} > \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices/matrix. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpGT" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpLE, cmpGE, cmpLS +*/ +GAPI_EXPORTS GMat cmpGT(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpGTScalar" +*/ +GAPI_EXPORTS GMat cmpGT(const GMat& src1, const GScalar& src2); + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are less than elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) < \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: + \f[\texttt{dst} = \texttt{src1} < \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices/matrix. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpLT" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpLE, cmpGE, cmpGT +*/ +GAPI_EXPORTS GMat cmpLT(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpLTScalar" +*/ +GAPI_EXPORTS GMat cmpLT(const GMat& src1, const GScalar& src2); + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are greater or equal compare to elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) >= \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: + \f[\texttt{dst} = \texttt{src1} >= \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpGE" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpLE, cmpGT, cmpLS +*/ +GAPI_EXPORTS GMat cmpGE(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpLGEcalar" +*/ +GAPI_EXPORTS GMat cmpGE(const GMat& src1, const GScalar& src2); + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are less or equal compare to elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) <= \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: + \f[\texttt{dst} = \texttt{src1} <= \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpLE" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpGT, cmpGE, cmpLS +*/ +GAPI_EXPORTS GMat cmpLE(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpLEScalar" +*/ +GAPI_EXPORTS GMat cmpLE(const GMat& src1, const GScalar& src2); + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are equal to elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) == \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: + \f[\texttt{dst} = \texttt{src1} == \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpEQ" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpNE +*/ +GAPI_EXPORTS GMat cmpEQ(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpEQScalar" +*/ +GAPI_EXPORTS GMat cmpEQ(const GMat& src1, const GScalar& src2); + +/** @brief Performs the per-element comparison of two matrices checking if elements from first matrix are not equal to elements in second. + +The function compares elements of two matrices src1 and src2 of the same size: + \f[\texttt{dst} (I) = \texttt{src1} (I) != \texttt{src2} (I)\f] + +When the comparison result is true, the corresponding element of output +array is set to 255. The comparison operations can be replaced with the +equivalent matrix expressions: + \f[\texttt{dst} = \texttt{src1} != \texttt{src2}\f] + +Output matrix of depth @ref CV_8U must have the same size and the same number of channels as + the input matrices. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpNE" +@param src1 first input matrix. +@param src2 second input matrix/scalar of the same depth as first input matrix. +@sa min, max, threshold, cmpEQ +*/ +GAPI_EXPORTS GMat cmpNE(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.cmpNEScalar" +*/ +GAPI_EXPORTS GMat cmpNE(const GMat& src1, const GScalar& src2); + +/** @brief computes bitwise conjunction of the two matrixes (src1 & src2) +Calculates the per-element bit-wise logical conjunction of two matrices of the same size. + +In case of floating-point matrices, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel matrices, each channel is processed +independently. Output matrix must have the same size and depth as the input +matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.bitwise_and" + +@param src1 first input matrix. +@param src2 second input matrix. +*/ +GAPI_EXPORTS GMat bitwise_and(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.bitwise_andS" +@param src1 first input matrix. +@param src2 scalar, which will be per-lemenetly conjuncted with elements of src1. +*/ +GAPI_EXPORTS GMat bitwise_and(const GMat& src1, const GScalar& src2); + +/** @brief computes bitwise disjunction of the two matrixes (src1 | src2) +Calculates the per-element bit-wise logical disjunction of two matrices of the same size. + +In case of floating-point matrices, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel matrices, each channel is processed +independently. Output matrix must have the same size and depth as the input +matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.bitwise_or" + +@param src1 first input matrix. +@param src2 second input matrix. +*/ +GAPI_EXPORTS GMat bitwise_or(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.bitwise_orS" +@param src1 first input matrix. +@param src2 scalar, which will be per-lemenetly disjuncted with elements of src1. +*/ +GAPI_EXPORTS GMat bitwise_or(const GMat& src1, const GScalar& src2); + + +/** @brief computes bitwise logical "exclusive or" of the two matrixes (src1 ^ src2) +Calculates the per-element bit-wise logical "exclusive or" of two matrices of the same size. + +In case of floating-point matrices, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel matrices, each channel is processed +independently. Output matrix must have the same size and depth as the input +matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.bitwise_xor" + +@param src1 first input matrix. +@param src2 second input matrix. +*/ +GAPI_EXPORTS GMat bitwise_xor(const GMat& src1, const GMat& src2); +/** @overload +@note Function textual ID is "org.opencv.core.pixelwise.compare.bitwise_xorS" +@param src1 first input matrix. +@param src2 scalar, for which per-lemenet "logical or" operation on elements of src1 will be performed. +*/ +GAPI_EXPORTS GMat bitwise_xor(const GMat& src1, const GScalar& src2); + + +/** @brief Inverts every bit of an array. +The function bitwise_not calculates per-element bit-wise inversion of the input +matrix: +\f[\texttt{dst} (I) = \neg \texttt{src} (I)\f] + +In case of floating-point matrices, their machine-specific bit +representations (usually IEEE754-compliant) are used for the operation. +In case of multi-channel matrices, each channel is processed +independently. Output matrix must have the same size and depth as the input +matrix. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.bitwise_not" + +@param src input matrix. +*/ +GAPI_EXPORTS GMat bitwise_not(const GMat& src); + +/** @brief Select values from either first or second of input matrices by given mask. +The function set to the output matrix either the value from the first input matrix if corresponding value of mask matrix is 255, + or value from the second input matrix (if value of mask matrix set to 0). + +Input mask matrix must be of @ref CV_8UC1 type, two other inout matrices and output matrix should be of the same type. The size should +be the same for all input and output matrices. +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.pixelwise.select" + +@param src1 first input matrix. +@param src2 second input matrix. +@param mask mask input matrix. +*/ +GAPI_EXPORTS GMat select(const GMat& src1, const GMat& src2, const GMat& mask); + +//! @} gapi_pixelwise + + +//! @addtogroup gapi_matrixop +//! @{ +/** @brief Calculates per-element minimum of two matrices. + +The function min calculates the per-element minimum of two matrices of the same size, number of channels and depth: +\f[\texttt{dst} (I)= \min ( \texttt{src1} (I), \texttt{src2} (I))\f] + where I is a multi-dimensional index of matrix elements. In case of + multi-channel matrices, each channel is processed independently. +Output matrix must be of the same size and depth as src1. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.min" +@param src1 first input matrix. +@param src2 second input matrix of the same size and depth as src1. +@sa max, compareEqual, compareLess, compareLessEqual +*/ +GAPI_EXPORTS GMat min(const GMat& src1, const GMat& src2); + +/** @brief Calculates per-element maximum of two matrices. + +The function max calculates the per-element maximum of two matrices of the same size, number of channels and depth: +\f[\texttt{dst} (I)= \max ( \texttt{src1} (I), \texttt{src2} (I))\f] + where I is a multi-dimensional index of matrix elements. In case of + multi-channel matrices, each channel is processed independently. +Output matrix must be of the same size and depth as src1. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.max" +@param src1 first input matrix. +@param src2 second input matrix of the same size and depth as src1. +@sa min, compare, compareEqual, compareGreater, compareGreaterEqual +*/ +GAPI_EXPORTS GMat max(const GMat& src1, const GMat& src2); + +/** @brief Calculates the per-element absolute difference between two matrices. + +The function absDiff calculates absolute difference between two matrices of the same size and depth: + \f[\texttt{dst}(I) = \texttt{saturate} (| \texttt{src1}(I) - \texttt{src2}(I)|)\f] + where I is a multi-dimensional index of matrix elements. In case of + multi-channel matrices, each channel is processed independently. +Output matrix must have the same size and depth as input matrices. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.absdiff" +@param src1 first input matrix. +@param src2 second input matrix. +@sa abs +*/ +GAPI_EXPORTS GMat absDiff(const GMat& src1, const GMat& src2); + +/** @brief Calculates absolute value of matrix elements. + +The function abs calculates absolute difference between matrix elements and given scalar value: + \f[\texttt{dst}(I) = \texttt{saturate} (| \texttt{src1}(I) - \texttt{matC}(I)|)\f] + where matC is constructed from given scalar c and has the same sizes and depth as input matrix src. + +Output matrix must be of the same size and depth as src. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.absdiffC" +@param src input matrix. +@param c scalar to be subtracted. +@sa min, max +*/ +GAPI_EXPORTS GMat absDiffC(const GMat& src, const GScalar& c); + +/** @brief Calculates sum of all matrix elements. + +The function sum calculates sum of all matrix elements, independently for each channel. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.sum" +@param src input matrix. +@sa min, max +*/ +GAPI_EXPORTS GScalar sum(const GMat& src); + +/** @brief Calculates the weighted sum of two matrices. + +The function addWeighted calculates the weighted sum of two matrices as follows: +\f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{src1} (I)* \texttt{alpha} + \texttt{src2} (I)* \texttt{beta} + \texttt{gamma} )\f] +where I is a multi-dimensional index of array elements. In case of multi-channel matrices, each +channel is processed independently. + +The function can be replaced with a matrix expression: + \f[\texttt{dst}(I) = \texttt{alpha} * \texttt{src1}(I) - \texttt{beta} * \texttt{src2}(I) + \texttt{gamma} \f] + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.addweighted" +@param src1 first input matrix. +@param alpha weight of the first matrix elements. +@param src2 second input matrix of the same size and channel number as src1. +@param beta weight of the second matrix elements. +@param gamma scalar added to each sum. +@param ddepth optional depth of the output matrix. +@sa add, sub +*/ +GAPI_EXPORTS GMat addWeighted(const GMat& src1, double alpha, const GMat& src2, double beta, double gamma, int ddepth = -1); + +/** @brief Calculates the absolute L1 norm of a matrix. + +This version of normL1 calculates the absolute L1 norm of src. + +As example for one array consider the function \f$r(x)= \begin{pmatrix} x \\ 1-x \end{pmatrix}, x \in [-1;1]\f$. +The \f$ L_{1} \f$ norm for the sample value \f$r(-1) = \begin{pmatrix} -1 \\ 2 \end{pmatrix}\f$ +is calculated as follows +\f{align*} + \| r(-1) \|_{L_1} &= |-1| + |2| = 3 \\ +\f} +and for \f$r(0.5) = \begin{pmatrix} 0.5 \\ 0.5 \end{pmatrix}\f$ the calculation is +\f{align*} + \| r(0.5) \|_{L_1} &= |0.5| + |0.5| = 1 \\ +\f} + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.norml1" +@param src input matrix. +@sa normL2, normInf +*/ +GAPI_EXPORTS GScalar normL1(const GMat& src); + +/** @brief Calculates the absolute L2 norm of a matrix. + +This version of normL2 calculates the absolute L2 norm of src. + +As example for one array consider the function \f$r(x)= \begin{pmatrix} x \\ 1-x \end{pmatrix}, x \in [-1;1]\f$. +The \f$ L_{2} \f$ norm for the sample value \f$r(-1) = \begin{pmatrix} -1 \\ 2 \end{pmatrix}\f$ +is calculated as follows +\f{align*} + \| r(-1) \|_{L_2} &= \sqrt{(-1)^{2} + (2)^{2}} = \sqrt{5} \\ +\f} +and for \f$r(0.5) = \begin{pmatrix} 0.5 \\ 0.5 \end{pmatrix}\f$ the calculation is +\f{align*} + \| r(0.5) \|_{L_2} &= \sqrt{(0.5)^{2} + (0.5)^{2}} = \sqrt{0.5} \\ +\f} + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +@note Function textual ID is "org.opencv.core.matrixop.norml2" +@param src input matrix. +@sa normL1, normInf +*/ +GAPI_EXPORTS GScalar normL2(const GMat& src); + +/** @brief Calculates the absolute infinite norm of a matrix. + +This version of normInf calculates the absolute infinite norm of src. + +As example for one array consider the function \f$r(x)= \begin{pmatrix} x \\ 1-x \end{pmatrix}, x \in [-1;1]\f$. +The \f$ L_{\infty} \f$ norm for the sample value \f$r(-1) = \begin{pmatrix} -1 \\ 2 \end{pmatrix}\f$ +is calculated as follows +\f{align*} + \| r(-1) \|_{L_\infty} &= \max(|-1|,|2|) = 2 +\f} +and for \f$r(0.5) = \begin{pmatrix} 0.5 \\ 0.5 \end{pmatrix}\f$ the calculation is +\f{align*} + \| r(0.5) \|_{L_\infty} &= \max(|0.5|,|0.5|) = 0.5. +\f} + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.core.matrixop.norminf" +@param src input matrix. +@sa normL1, normL2 +*/ +GAPI_EXPORTS GScalar normInf(const GMat& src); + +/** @brief Calculates the integral of an image. + +The function calculates one or more integral images for the source image as follows: + +\f[\texttt{sum} (X,Y) = \sum _{x integral(const GMat& src, int sdepth = -1, int sqdepth = -1); + +/** @brief Applies a fixed-level threshold to each matrix element. + +The function applies fixed-level thresholding to a single- or multiple-channel matrix. +The function is typically used to get a bi-level (binary) image out of a grayscale image ( cmp functions could be also used for +this purpose) or for removing a noise, that is, filtering out pixels with too small or too large +values. There are several depths of thresholding supported by the function. They are determined by +depth parameter. + +Also, the special values cv::THRESH_OTSU or cv::THRESH_TRIANGLE may be combined with one of the +above values. In these cases, the function determines the optimal threshold value using the Otsu's +or Triangle algorithm and uses it instead of the specified thresh . The function returns the +computed threshold value in addititon to thresholded matrix. +The Otsu's and Triangle methods are implemented only for 8-bit matrices. + +Input image should be single channel only in case of cv::THRESH_OTSU or cv::THRESH_TRIANGLE flags. +Output matrix must be of the same size and depth as src. + +@note Function textual ID is "org.opencv.core.matrixop.threshold" + +@param src input matrix (@ref CV_8UC1, @ref CV_8UC3, or @ref CV_32FC1). +@param thresh threshold value. +@param maxval maximum value to use with the cv::THRESH_BINARY and cv::THRESH_BINARY_INV thresholding +depths. +@param depth thresholding depth (see the cv::ThresholdTypes). + +@sa min, max, cmpGT, cmpLE, cmpGE, cmpLS + */ +GAPI_EXPORTS GMat threshold(const GMat& src, const GScalar& thresh, const GScalar& maxval, int depth); +/** @overload +This function appicable for all threshold depths except CV_THRESH_OTSU and CV_THRESH_TRIANGLE +@note Function textual ID is "org.opencv.core.matrixop.thresholdOT" +*/ +GAPI_EXPORTS std::tuple threshold(const GMat& src, const GScalar& maxval, int depth); + +/** @brief Applies a range-level threshold to each matrix element. + +The function applies range-level thresholding to a single- or multiple-channel matrix. +It sets output pixel value to OxFF if the corresponding pixel value of input matrix is in specified range,or 0 otherwise. + +Input and output matrices must be CV_8UC1. + +@note Function textual ID is "org.opencv.core.matrixop.inRange" + +@param src input matrix (CV_8UC1). +@param threshLow lower boundary value. +@param threshUp upper boundary value. + +@sa threshold + */ +GAPI_EXPORTS GMat inRange(const GMat& src, const GScalar& threshLow, const GScalar& threshUp); + +//! @} gapi_matrixop + +//! @addtogroup gapi_transform +//! @{ +/** @brief Resizes an image. + +The function resizes the image src down to or up to the specified size. + +Output image size will have the size dsize (when dsize is non-zero) or the size computed from +src.size(), fx, and fy; the depth of output is the same as of src. + +If you want to resize src so that it fits the pre-created dst, +you may call the function as follows: +@code + // explicitly specify dsize=dst.size(); fx and fy will be computed from that. + resize(src, dst, dst.size(), 0, 0, interpolation); +@endcode +If you want to decimate the image by factor of 2 in each direction, you can call the function this +way: +@code + // specify fx and fy and let the function compute the destination image size. + resize(src, dst, Size(), 0.5, 0.5, interpolation); +@endcode +To shrink an image, it will generally look best with cv::INTER_AREA interpolation, whereas to +enlarge an image, it will generally look best with cv::INTER_CUBIC (slow) or cv::INTER_LINEAR +(faster but still looks OK). + +@note Function textual ID is "org.opencv.core.transform.resize" + +@param src input image. +@param dsize output image size; if it equals zero, it is computed as: + \f[\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\f] + Either dsize or both fx and fy must be non-zero. +@param fx scale factor along the horizontal axis; when it equals 0, it is computed as +\f[\texttt{(double)dsize.width/src.cols}\f] +@param fy scale factor along the vertical axis; when it equals 0, it is computed as +\f[\texttt{(double)dsize.height/src.rows}\f] +@param interpolation interpolation method, see cv::InterpolationFlags + +@sa warpAffine, warpPerspective, remap + */ +GAPI_EXPORTS GMat resize(const GMat& src, const Size& dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR); + +/** @brief Creates one 3-channel (4-channel) matrix out of 3(4) single-channel ones. + +The function merges several matrices to make a single multi-channel matrix. That is, each +element of the output matrix will be a concatenation of the elements of the input matrices, where +elements of i-th input matrix are treated as mv[i].channels()-element vectors. +Input matrix must be of @ref CV_8UC3 (@ref CV_8UC4) type. + +The function split3/split4 does the reverse operation. + +@note Function textual ID for merge3 is "org.opencv.core.transform.merge3" +@note Function textual ID for merge4 is "org.opencv.core.transform.merge4" + +@param src1 first input matrix to be merged +@param src2 second input matrix to be merged +@param src3 third input matrix to be merged +@param src4 fourth input matrix to be merged +@sa split4, split3 +*/ +GAPI_EXPORTS GMat merge4(const GMat& src1, const GMat& src2, const GMat& src3, const GMat& src4); +GAPI_EXPORTS GMat merge3(const GMat& src1, const GMat& src2, const GMat& src3); + +/** @brief Divides a 3-channel (4-channel) matrix into 3(4) single-channel matrices. + +The function splits a 3-channel (4-channel) matrix into 3(4) single-channel matrices: +\f[\texttt{mv} [c](I) = \texttt{src} (I)_c\f] + +All output matrices must be in @ref CV_8UC1. + +@note Function textual for split3 ID is "org.opencv.core.transform.split3" +@note Function textual for split4 ID is "org.opencv.core.transform.split4" + +@param src input @ref CV_8UC4 (@ref CV_8UC3) matrix. +@sa merge3, merge4 +*/ +GAPI_EXPORTS std::tuple split4(const GMat& src); +GAPI_EXPORTS std::tuple split3(const GMat& src); + +/** @brief Applies a generic geometrical transformation to an image. + +The function remap transforms the source image using the specified map: + +\f[\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\f] + +where values of pixels with non-integer coordinates are computed using one of available +interpolation methods. \f$map_x\f$ and \f$map_y\f$ can be encoded as separate floating-point maps +in \f$map_1\f$ and \f$map_2\f$ respectively, or interleaved floating-point maps of \f$(x,y)\f$ in +\f$map_1\f$, or fixed-point maps created by using convertMaps. The reason you might want to +convert from floating to fixed-point representations of a map is that they can yield much faster +(\~2x) remapping operations. In the converted case, \f$map_1\f$ contains pairs (cvFloor(x), +cvFloor(y)) and \f$map_2\f$ contains indices in a table of interpolation coefficients. +Output image must be of the same size and depth as input one. + +@note Function textual ID is "org.opencv.core.transform.remap" + +@param src Source image. +@param map1 The first map of either (x,y) points or just x values having the type CV_16SC2, +CV_32FC1, or CV_32FC2. +@param map2 The second map of y values having the type CV_16UC1, CV_32FC1, or none (empty map +if map1 is (x,y) points), respectively. +@param interpolation Interpolation method (see cv::InterpolationFlags). The method INTER_AREA is +not supported by this function. +@param borderMode Pixel extrapolation method (see cv::BorderTypes). When +borderMode=BORDER_TRANSPARENT, it means that the pixels in the destination image that +corresponds to the "outliers" in the source image are not modified by the function. +@param borderValue Value used in case of a constant border. By default, it is 0. +@note +Due to current implementation limitations the size of an input and output images should be less than 32767x32767. + */ +GAPI_EXPORTS GMat remap(const GMat& src, const Mat& map1, const Mat& map2, + int interpolation, int borderMode = BORDER_CONSTANT, + const Scalar& borderValue = Scalar()); + +/** @brief Flips a 2D matrix around vertical, horizontal, or both axes. + +The function flips the matrix in one of three different ways (row +and column indices are 0-based): +\f[\texttt{dst} _{ij} = +\left\{ +\begin{array}{l l} +\texttt{src} _{\texttt{src.rows}-i-1,j} & if\; \texttt{flipCode} = 0 \\ +\texttt{src} _{i, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} > 0 \\ +\texttt{src} _{ \texttt{src.rows} -i-1, \texttt{src.cols} -j-1} & if\; \texttt{flipCode} < 0 \\ +\end{array} +\right.\f] +The example scenarios of using the function are the following: +* Vertical flipping of the image (flipCode == 0) to switch between + top-left and bottom-left image origin. This is a typical operation + in video processing on Microsoft Windows\* OS. +* Horizontal flipping of the image with the subsequent horizontal + shift and absolute difference calculation to check for a + vertical-axis symmetry (flipCode \> 0). +* Simultaneous horizontal and vertical flipping of the image with + the subsequent shift and absolute difference calculation to check + for a central symmetry (flipCode \< 0). +* Reversing the order of point arrays (flipCode \> 0 or + flipCode == 0). +Output image must be of the same depth as input one, size should be correct for given flipCode. + +@note Function textual ID is "org.opencv.core.transform.flip" + +@param src input matrix. +@param flipCode a flag to specify how to flip the array; 0 means +flipping around the x-axis and positive value (for example, 1) means +flipping around y-axis. Negative value (for example, -1) means flipping +around both axes. +@sa remap +*/ +GAPI_EXPORTS GMat flip(const GMat& src, int flipCode); + +/** @brief Crops a 2D matrix. + +The function crops the matrix by given cv::Rect. + +Output matrix must be of the same depth as input one, size is specified by given rect size. + +@note Function textual ID is "org.opencv.core.transform.crop" + +@param src input matrix. +@param rect a rect to crop a matrix to +@sa resize +*/ +GAPI_EXPORTS GMat crop(const GMat& src, const Rect& rect); + +/** @brief Applies horizontal concatenation to given matrices. + +The function horizontally concatenates two GMat matrices (with the same number of rows). +@code{.cpp} + GMat A = { 1, 4, + 2, 5, + 3, 6 }; + GMat B = { 7, 10, + 8, 11, + 9, 12 }; + + GMat C = gapi::concatHor(A, B); + //C: + //[1, 4, 7, 10; + // 2, 5, 8, 11; + // 3, 6, 9, 12] +@endcode +Output matrix must the same number of rows and depth as the src1 and src2, and the sum of cols of the src1 and src2. +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.imgproc.transform.concatHor" + +@param src1 first input matrix to be considered for horizontal concatenation. +@param src2 second input matrix to be considered for horizontal concatenation. +@sa concatVert +*/ +GAPI_EXPORTS GMat concatHor(const GMat& src1, const GMat& src2); + +/** @overload +The function horizontally concatenates given number of GMat matrices (with the same number of columns). +Output matrix must the same number of columns and depth as the input matrices, and the sum of rows of input matrices. + +@param v vector of input matrices to be concatenated horizontally. +*/ +GAPI_EXPORTS GMat concatHor(const std::vector &v); + +/** @brief Applies vertical concatenation to given matrices. + +The function vertically concatenates two GMat matrices (with the same number of cols). + @code{.cpp} + GMat A = { 1, 7, + 2, 8, + 3, 9 }; + GMat B = { 4, 10, + 5, 11, + 6, 12 }; + + GMat C = gapi::concatVert(A, B); + //C: + //[1, 7; + // 2, 8; + // 3, 9; + // 4, 10; + // 5, 11; + // 6, 12] + @endcode + +Output matrix must the same number of cols and depth as the src1 and src2, and the sum of rows of the src1 and src2. +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. + +@note Function textual ID is "org.opencv.imgproc.transform.concatVert" + +@param src1 first input matrix to be considered for vertical concatenation. +@param src2 second input matrix to be considered for vertical concatenation. +@sa concatHor +*/ +GAPI_EXPORTS GMat concatVert(const GMat& src1, const GMat& src2); + +/** @overload +The function vertically concatenates given number of GMat matrices (with the same number of columns). +Output matrix must the same number of columns and depth as the input matrices, and the sum of rows of input matrices. + +@param v vector of input matrices to be concatenated vertically. +*/ +GAPI_EXPORTS GMat concatVert(const std::vector &v); + + +/** @brief Performs a look-up table transform of a matrix. + +The function LUT fills the output matrix with values from the look-up table. Indices of the entries +are taken from the input matrix. That is, the function processes each element of src as follows: +\f[\texttt{dst} (I) \leftarrow \texttt{lut(src(I))}\f] + +Supported matrix data types are @ref CV_8UC1. +Output is a matrix of the same size and number of channels as src, and the same depth as lut. + +@note Function textual ID is "org.opencv.core.transform.LUT" + +@param src input matrix of 8-bit elements. +@param lut look-up table of 256 elements; in case of multi-channel input array, the table should +either have a single channel (in this case the same table is used for all channels) or the same +number of channels as in the input matrix. +*/ +GAPI_EXPORTS GMat LUT(const GMat& src, const Mat& lut); + +/** @brief Performs a 3D look-up table transform of a multi-channel matrix. + +The function LUT3D fills the output matrix with values from the look-up table. Indices of the entries +are taken from the input matrix. Interpolation is applied for mapping 0-255 range values to 0-16 range of 3DLUT table. +The function processes each element of src as follows: +@code{.cpp} + dst[i][j][k] = lut3D[~src_r][~src_g][~src_b]; +@endcode +where ~ means approximation. +Output is a matrix of of @ref CV_8UC3. + +@note Function textual ID is "org.opencv.core.transform.LUT3D" + +@param src input matrix of @ref CV_8UC3. +@param lut3D look-up table 17x17x17 3-channel elements. +@param interpolation The depth of interpoolation to be used. +*/ +GAPI_EXPORTS GMat LUT3D(const GMat& src, const GMat& lut3D, int interpolation = INTER_NEAREST); + +/** @brief Converts a matrix to another data depth with optional scaling. + +The method converts source pixel values to the target data depth. saturate_cast\<\> is applied at +the end to avoid possible overflows: + +\f[m(x,y) = saturate \_ cast( \alpha (*this)(x,y) + \beta )\f] +Output matrix must be of the same size as input one. + +@note Function textual ID is "org.opencv.core.transform.convertTo" +@param src input matrix to be converted from. +@param rdepth desired output matrix depth or, rather, the depth since the number of channels are the +same as the input has; if rdepth is negative, the output matrix will have the same depth as the input. +@param alpha optional scale factor. +@param beta optional delta added to the scaled values. + */ +GAPI_EXPORTS GMat convertTo(const GMat& src, int rdepth, double alpha=1, double beta=0); + +/** @brief Normalizes the norm or value range of an array. + +The function normalizes scale and shift the input array elements so that +\f[\| \texttt{dst} \| _{L_p}= \texttt{alpha}\f] +(where p=Inf, 1 or 2) when normType=NORM_INF, NORM_L1, or NORM_L2, respectively; or so that +\f[\min _I \texttt{dst} (I)= \texttt{alpha} , \, \, \max _I \texttt{dst} (I)= \texttt{beta}\f] +when normType=NORM_MINMAX (for dense arrays only). + +@note Function textual ID is "org.opencv.core.normalize" + +@param src input array. +@param alpha norm value to normalize to or the lower range boundary in case of the range +normalization. +@param beta upper range boundary in case of the range normalization; it is not used for the norm +normalization. +@param norm_type normalization type (see cv::NormTypes). +@param ddepth when negative, the output array has the same type as src; otherwise, it has the same +number of channels as src and the depth =ddepth. +@sa norm, Mat::convertTo +*/ +GAPI_EXPORTS GMat normalize(const GMat& src, double alpha, double beta, + int norm_type, int ddepth = -1); +//! @} gapi_transform + +} //namespace gapi +} //namespace cv + +#endif //OPENCV_GAPI_CORE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/core.hpp new file mode 100644 index 0000000..ec76fe5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/core.hpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_CPU_CORE_API_HPP +#define OPENCV_GAPI_CPU_CORE_API_HPP + +#include // GKernelPackage +#include "opencv2/gapi/own/exports.hpp" // GAPI_EXPORTS + +namespace cv { +namespace gapi { +namespace core { +namespace cpu { + +GAPI_EXPORTS GKernelPackage kernels(); + +} // namespace cpu +} // namespace core +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_CPU_CORE_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/gcpukernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/gcpukernel.hpp new file mode 100644 index 0000000..facaab6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/gcpukernel.hpp @@ -0,0 +1,266 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCPUKERNEL_HPP +#define OPENCV_GAPI_GCPUKERNEL_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include +#include //to_ocv +#include //suppress_unused_warning + +// FIXME: namespace scheme for backends? +namespace cv { + +namespace gimpl +{ + // Forward-declare an internal class + class GCPUExecutable; +} // namespace gimpl + +namespace gapi +{ +namespace cpu +{ + /** + * \addtogroup gapi_std_backends + * @{ + * + * @brief G-API backends available in this OpenCV version + * + * G-API backends play a corner stone role in G-API execution + * stack. Every backend is hardware-oriented and thus can run its + * kernels efficiently on the target platform. + * + * Backends are usually "back boxes" for G-API users -- on the API + * side, all backends are represented as different objects of the + * same class cv::gapi::GBackend. User can manipulate with backends + * mainly by specifying which kernels to use or where to look up + * for kernels first. + * + * @sa @ref gapi_hld, cv::gapi::lookup_order() + */ + + /** + * @brief Get a reference to CPU (OpenCV) backend. + * + * This is the default backend in G-API at the moment, providing + * broader functional coverage but losing some graph model + * advantages. Provided mostly for reference and prototyping + * purposes. + * + * @sa gapi_std_backends + */ + GAPI_EXPORTS cv::gapi::GBackend backend(); + /** @} */ +} // namespace cpu +} // namespace gapi + +// Represents arguments which are passed to a wrapped CPU function +// FIXME: put into detail? +class GAPI_EXPORTS GCPUContext +{ +public: + // Generic accessor API + template + const T& inArg(int input) { return m_args.at(input).get(); } + + // Syntax sugar + const cv::gapi::own::Mat& inMat(int input); + cv::gapi::own::Mat& outMatR(int output); // FIXME: Avoid cv::gapi::own::Mat m = ctx.outMatR() + + const cv::gapi::own::Scalar& inVal(int input); + cv::gapi::own::Scalar& outValR(int output); // FIXME: Avoid cv::gapi::own::Scalar s = ctx.outValR() + template std::vector& outVecR(int output) // FIXME: the same issue + { + return outVecRef(output).wref(); + } + +protected: + detail::VectorRef& outVecRef(int output); + + std::vector m_args; + + //FIXME: avoid conversion of arguments from internal representaion to OpenCV one on each call + //to OCV kernel. (This can be achieved by a two single time conversions in GCPUExecutable::run, + //once on enter for input and output arguments, and once before return for output arguments only + std::unordered_map m_results; + + friend class gimpl::GCPUExecutable; +}; + +class GAPI_EXPORTS GCPUKernel +{ +public: + // This function is kernel's execution entry point (does the processing work) + using F = std::function; + + GCPUKernel(); + explicit GCPUKernel(const F& f); + + void apply(GCPUContext &ctx); + +protected: + F m_f; +}; + +// FIXME: This is an ugly ad-hoc imlpementation. TODO: refactor + +namespace detail +{ +template struct get_in; +template<> struct get_in +{ + static cv::Mat get(GCPUContext &ctx, int idx) { return to_ocv(ctx.inMat(idx)); } +}; +template<> struct get_in +{ + static cv::Scalar get(GCPUContext &ctx, int idx) { return to_ocv(ctx.inVal(idx)); } +}; +template struct get_in > +{ + static const std::vector& get(GCPUContext &ctx, int idx) { return ctx.inArg(idx).rref(); } +}; +template struct get_in +{ + static T get(GCPUContext &ctx, int idx) { return ctx.inArg(idx); } +}; + +struct tracked_cv_mat{ + tracked_cv_mat(cv::gapi::own::Mat& m) : r{to_ocv(m)}, original_data{m.data} {} + cv::Mat r; + uchar* original_data; + + operator cv::Mat& (){ return r;} + void validate() const{ + if (r.data != original_data) + { + util::throw_error + (std::logic_error + ("OpenCV kernel output parameter was reallocated. \n" + "Incorrect meta data was provided ?")); + } + } +}; + +struct scalar_wrapper +{ + scalar_wrapper(cv::gapi::own::Scalar& s) : m_s{cv::gapi::own::to_ocv(s)}, m_org_s(s) {}; + operator cv::Scalar& () { return m_s; } + void writeBack() const { m_org_s = to_own(m_s); } + + cv::Scalar m_s; + cv::gapi::own::Scalar& m_org_s; +}; + +template +void postprocess(Outputs&... outs) +{ + struct + { + void operator()(tracked_cv_mat* bm) { bm->validate(); } + void operator()(scalar_wrapper* sw) { sw->writeBack(); } + void operator()(...) { } + + } validate; + //dummy array to unfold parameter pack + int dummy[] = { 0, (validate(&outs), 0)... }; + cv::util::suppress_unused_warning(dummy); +} + +template struct get_out; +template<> struct get_out +{ + static tracked_cv_mat get(GCPUContext &ctx, int idx) + { + auto& r = ctx.outMatR(idx); + return {r}; + } +}; +template<> struct get_out +{ + static scalar_wrapper get(GCPUContext &ctx, int idx) + { + auto& s = ctx.outValR(idx); + return {s}; + } +}; +template struct get_out> +{ + static std::vector& get(GCPUContext &ctx, int idx) + { + return ctx.outVecR(idx); + } +}; + +template +struct OCVCallHelper; + +// FIXME: probably can be simplified with std::apply or analogue. +template +struct OCVCallHelper, std::tuple > +{ + template + struct call_and_postprocess + { + template + static void call(Inputs&&... ins, Outputs&&... outs) + { + //not using a std::forward on outs is deliberate in order to + //cause compilation error, by tring to bind rvalue references to lvalue references + Impl::run(std::forward(ins)..., outs...); + + postprocess(outs...); + } + }; + + template + static void call_impl(GCPUContext &ctx, detail::Seq, detail::Seq) + { + //Make sure that OpenCV kernels do not reallocate memory for output parameters + //by comparing it's state (data ptr) before and after the call. + //This is done by converting each output Mat into tracked_cv_mat object, and binding + //them to parameters of ad-hoc function + //Convert own::Scalar to cv::Scalar before call kernel and run kernel + //convert cv::Scalar to own::Scalar after call kernel and write back results + call_and_postprocess::get(ctx, IIs))...>::call(get_in::get(ctx, IIs)..., get_out::get(ctx, OIs)...); + } + + static void call(GCPUContext &ctx) + { + call_impl(ctx, + typename detail::MkSeq::type(), + typename detail::MkSeq::type()); + } +}; + +} // namespace detail + +template +class GCPUKernelImpl: public detail::OCVCallHelper +{ + using P = detail::OCVCallHelper; + +public: + using API = K; + + static cv::gapi::GBackend backend() { return cv::gapi::cpu::backend(); } + static cv::GCPUKernel kernel() { return GCPUKernel(&P::call); } +}; + +#define GAPI_OCV_KERNEL(Name, API) struct Name: public cv::GCPUKernelImpl + +} // namespace cv + +#endif // OPENCV_GAPI_GCPUKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/imgproc.hpp new file mode 100644 index 0000000..0b96db0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/cpu/imgproc.hpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_CPU_IMGPROC_API_HPP +#define OPENCV_GAPI_CPU_IMGPROC_API_HPP + +#include // GAPI_EXPORTS +#include // GKernelPackage + +namespace cv { +namespace gapi { +namespace imgproc { +namespace cpu { + +GAPI_EXPORTS GKernelPackage kernels(); + +} // namespace cpu +} // namespace imgproc +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_CPU_IMGPROC_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/core.hpp new file mode 100644 index 0000000..8c21f57 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/core.hpp @@ -0,0 +1,20 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_FLUID_CORE_HPP +#define OPENCV_GAPI_FLUID_CORE_HPP + +#include // GKernelPackage +#include // GAPI_EXPORTS + +namespace cv { namespace gapi { namespace core { namespace fluid { + +GAPI_EXPORTS GKernelPackage kernels(); + +}}}} + +#endif // OPENCV_GAPI_FLUID_CORE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidbuffer.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidbuffer.hpp new file mode 100644 index 0000000..8a72312 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidbuffer.hpp @@ -0,0 +1,154 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_FLUID_BUFFER_HPP +#define OPENCV_GAPI_FLUID_BUFFER_HPP + +#include +#include // accumulate +#include // ostream +#include // uint8_t + +#include +#include +#include + +#include "opencv2/gapi/util/optional.hpp" +#include "opencv2/gapi/own/scalar.hpp" +#include "opencv2/gapi/own/mat.hpp" + +namespace cv { +namespace gapi { +namespace fluid { + +struct Border +{ +#if !defined(GAPI_STANDALONE) + // This constructor is required to support existing kernels which are part of G-API + Border(int _type, cv::Scalar _val) : type(_type), value(to_own(_val)) {}; +#endif // !defined(GAPI_STANDALONE) + Border(int _type, cv::gapi::own::Scalar _val) : type(_type), value(_val) {}; + int type; + cv::gapi::own::Scalar value; +}; + +using BorderOpt = util::optional; + +bool operator == (const Border& b1, const Border& b2); + +class GAPI_EXPORTS Buffer; + +class GAPI_EXPORTS View +{ +public: + struct Cache + { + std::vector m_linePtrs; + GMatDesc m_desc; + int m_border_size = 0; + + inline const uint8_t* linePtr(int index) const + { + // "out_of_window" check: + // user must not request the lines which are outside of specified kernel window + GAPI_DbgAssert(index >= -m_border_size + && index < -m_border_size + static_cast(m_linePtrs.size())); + return m_linePtrs[index + m_border_size]; + } + }; + + View() = default; + + const inline uint8_t* InLineB(int index) const // -(w-1)/2...0...+(w-1)/2 for Filters + { + return m_cache->linePtr(index); + } + + template const inline T* InLine(int i) const + { + const uint8_t* ptr = this->InLineB(i); + return reinterpret_cast(ptr); + } + + inline operator bool() const { return m_priv != nullptr; } + bool ready() const; + inline int length() const { return m_cache->m_desc.size.width; } + int y() const; + + inline const GMatDesc& meta() const { return m_cache->m_desc; } + + class GAPI_EXPORTS Priv; // internal use only + Priv& priv(); // internal use only + const Priv& priv() const; // internal use only + + View(Priv* p); + +private: + std::shared_ptr m_priv; + const Cache* m_cache; +}; + +class GAPI_EXPORTS Buffer +{ +public: + struct Cache + { + std::vector m_linePtrs; + GMatDesc m_desc; + }; + + // Default constructor (executable creation stage, + // all following initialization performed in Priv::init()) + Buffer(); + // Scratch constructor (user kernels) + Buffer(const cv::GMatDesc &desc); + + // Constructor for intermediate buffers (for tests) + Buffer(const cv::GMatDesc &desc, + int max_line_consumption, int border_size, + int skew, + int wlpi, + BorderOpt border); + // Constructor for in/out buffers (for tests) + Buffer(const cv::gapi::own::Mat &data, bool is_input); + + inline uint8_t* OutLineB(int index = 0) + { + return m_cache->m_linePtrs[index]; + } + + template inline T* OutLine(int index = 0) + { + uint8_t* ptr = this->OutLineB(index); + return reinterpret_cast(ptr); + } + + int y() const; + + int linesReady() const; + void debug(std::ostream &os) const; + inline int length() const { return m_cache->m_desc.size.width; } + int lpi() const; // LPI for WRITER + + inline const GMatDesc& meta() const { return m_cache->m_desc; } + + View mkView(int borderSize, bool ownStorage); + + class GAPI_EXPORTS Priv; // internal use only + Priv& priv(); // internal use only + const Priv& priv() const; // internal use only + +private: + std::shared_ptr m_priv; + const Cache* m_cache; +}; + +} // namespace cv::gapi::fluid +} // namespace cv::gapi +} // namespace cv + +#endif // OPENCV_GAPI_FLUID_BUFFER_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidkernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidkernel.hpp new file mode 100644 index 0000000..b6adf9e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/gfluidkernel.hpp @@ -0,0 +1,303 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_FLUID_KERNEL_HPP +#define OPENCV_GAPI_FLUID_KERNEL_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +// FIXME: namespace scheme for backends? +namespace cv { + +namespace gapi +{ +namespace fluid +{ + /** + * \addtogroup gapi_std_backends G-API Standard backends + * @{ + */ + /** + * @brief Get a reference to Fluid backend. + * + * @sa gapi_std_backends + */ + GAPI_EXPORTS cv::gapi::GBackend backend(); + /** @} */ +} // namespace flud +} // namespace gapi + + +class GAPI_EXPORTS GFluidKernel +{ +public: + enum class Kind + { + Filter, + Resize, + NV12toRGB + }; + + // This function is a generic "doWork" callback + using F = std::function &)>; + + // This function is a generic "initScratch" callback + using IS = std::function; + + // This function is a generic "resetScratch" callback + using RS = std::function; + + // This function describes kernel metadata inference rule. + using M = std::function; + + // This function is a generic "getBorder" callback (extracts border-related data from kernel's input parameters) + using B = std::function; + + // FIXME: move implementations out of header file + GFluidKernel() {} + GFluidKernel(int w, Kind k, int l, bool scratch, const F& f, const IS &is, const RS &rs, const B& b) + : m_window(w) + , m_kind(k) + , m_lpi(l) + , m_scratch(scratch) + , m_f(f) + , m_is(is) + , m_rs(rs) + , m_b(b) {} + + int m_window = -1; + Kind m_kind; + const int m_lpi = -1; + const bool m_scratch = false; + + const F m_f; + const IS m_is; + const RS m_rs; + const B m_b; +}; + +// FIXME!!! +// This is the temporary and experimental API +// which should be replaced by runtime roi-based scheduling +struct GFluidOutputRois +{ + std::vector rois; +}; + +namespace detail +{ +template<> struct CompileArgTag +{ + static const char* tag() { return "gapi.fluid.outputRois"; } +}; +} // namespace detail + +namespace detail +{ +template struct fluid_get_in; +template<> struct fluid_get_in +{ + static const cv::gapi::fluid::View& get(const cv::GArgs &in_args, int idx) + { + return in_args[idx].unsafe_get(); + } +}; + +template<> struct fluid_get_in +{ + // FIXME: change to return by reference when moved to own::Scalar +#if !defined(GAPI_STANDALONE) + static const cv::Scalar get(const cv::GArgs &in_args, int idx) + { + return cv::gapi::own::to_ocv(in_args[idx].unsafe_get()); + } +#else + static const cv::gapi::own::Scalar get(const cv::GArgs &in_args, int idx) + { + return in_args[idx].get(); + } +#endif // !defined(GAPI_STANDALONE) +}; +template struct fluid_get_in +{ + static const T& get(const cv::GArgs &in_args, int idx) + { + return in_args[idx].unsafe_get(); + } +}; + +template +struct scratch_helper; + +template +struct scratch_helper +{ + // Init + template + static void help_init_impl(const cv::GMetaArgs &metas, + const cv::GArgs &in_args, + gapi::fluid::Buffer &scratch_buf, + detail::Seq) + { + Impl::initScratch(get_in_meta(metas, in_args, IIs)..., scratch_buf); + } + + static void help_init(const cv::GMetaArgs &metas, + const cv::GArgs &in_args, + gapi::fluid::Buffer &b) + { + help_init_impl(metas, in_args, b, typename detail::MkSeq::type()); + } + + // Reset + static void help_reset(gapi::fluid::Buffer &b) + { + Impl::resetScratch(b); + } +}; + +template +struct scratch_helper +{ + static void help_init(const cv::GMetaArgs &, + const cv::GArgs &, + gapi::fluid::Buffer &) + { + GAPI_Assert(false); + } + static void help_reset(gapi::fluid::Buffer &) + { + GAPI_Assert(false); + } +}; + +template struct is_gmat_type +{ + static const constexpr bool value = std::is_same::value; +}; + +template +struct get_border_helper; + +template +struct get_border_helper +{ + template + static gapi::fluid::BorderOpt get_border_impl(const GMetaArgs &metas, + const cv::GArgs &in_args, + cv::detail::Seq) + { + return util::make_optional(Impl::getBorder(cv::detail::get_in_meta(metas, in_args, IIs)...)); + } + + static gapi::fluid::BorderOpt help(const GMetaArgs &metas, + const cv::GArgs &in_args) + { + return get_border_impl(metas, in_args, typename detail::MkSeq::type()); + } +}; + +template +struct get_border_helper +{ + static gapi::fluid::BorderOpt help(const cv::GMetaArgs &, + const cv::GArgs &) + { + return {}; + } +}; + +template +struct FluidCallHelper; + +template +struct FluidCallHelper, std::tuple, UseScratch> +{ + static_assert(all_satisfy::value, "return type must be GMat"); + + // Execution dispatcher //////////////////////////////////////////////////// + template + static void call_impl(const cv::GArgs &in_args, + const std::vector &out_bufs, + detail::Seq, + detail::Seq) + { + Impl::run(fluid_get_in::get(in_args, IIs)..., *out_bufs[OIs]...); + } + + static void call(const cv::GArgs &in_args, + const std::vector &out_bufs) + { + constexpr int numOuts = (sizeof...(Outs)) + (UseScratch ? 1 : 0); + call_impl(in_args, out_bufs, + typename detail::MkSeq::type(), + typename detail::MkSeq::type()); + } + + // Scratch buffer initialization dispatcher //////////////////////////////// + static void init_scratch(const GMetaArgs &metas, + const cv::GArgs &in_args, + gapi::fluid::Buffer &b) + { + scratch_helper::help_init(metas, in_args, b); + } + + // Scratch buffer reset dispatcher ///////////////////////////////////////// + static void reset_scratch(gapi::fluid::Buffer &scratch_buf) + { + scratch_helper::help_reset(scratch_buf); + } + + static gapi::fluid::BorderOpt getBorder(const GMetaArgs &metas, const cv::GArgs &in_args) + { + // User must provide "init" callback if Window != 1 + // TODO: move to constexpr if when we enable C++17 + constexpr bool callCustomGetBorder = (Impl::Window != 1); + return get_border_helper::help(metas, in_args); + } +}; +} // namespace detail + + +template +class GFluidKernelImpl +{ + static const int LPI = 1; + static const auto Kind = GFluidKernel::Kind::Filter; + using P = detail::FluidCallHelper; + +public: + using API = K; + + static GFluidKernel kernel() + { + // FIXME: call() and getOutMeta() needs to be renamed so it is clear these + // functions are internal wrappers, not user API + return GFluidKernel(Impl::Window, Impl::Kind, Impl::LPI, + UseScratch, + &P::call, &P::init_scratch, &P::reset_scratch, &P::getBorder); + } + + static cv::gapi::GBackend backend() { return cv::gapi::fluid::backend(); } +}; + +#define GAPI_FLUID_KERNEL(Name, API, Scratch) struct Name: public cv::GFluidKernelImpl + +} // namespace cv + +#endif // OPENCV_GAPI_GCPUKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/imgproc.hpp new file mode 100644 index 0000000..dedfa9d --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/fluid/imgproc.hpp @@ -0,0 +1,20 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_FLUID_IMGPROC_HPP +#define OPENCV_GAPI_FLUID_IMGPROC_HPP + +#include // GKernelPackage +#include // GAPI_EXPORTS + +namespace cv { namespace gapi { namespace imgproc { namespace fluid { + +GAPI_EXPORTS GKernelPackage kernels(); + +}}}} + +#endif // OPENCV_GAPI_FLUID_IMGPROC_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/garg.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/garg.hpp new file mode 100644 index 0000000..f8a3170 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/garg.hpp @@ -0,0 +1,126 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GARG_HPP +#define OPENCV_GAPI_GARG_HPP + +#include +#include + +#include +#include "opencv2/gapi/own/mat.hpp" + +#include "opencv2/gapi/util/any.hpp" +#include "opencv2/gapi/util/variant.hpp" + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" +#include "opencv2/gapi/garray.hpp" +#include "opencv2/gapi/gtype_traits.hpp" +#include "opencv2/gapi/gmetaarg.hpp" +#include "opencv2/gapi/own/scalar.hpp" + +namespace cv { + +class GArg; + +namespace detail { + template + using is_garg = std::is_same::type>; +} + +// Parameter holder class for a node +// Depending on platform capabilities, can either support arbitrary types +// (as `boost::any`) or a limited number of types (as `boot::variant`). +// FIXME: put into "details" as a user shouldn't use it in his code +class GAPI_EXPORTS GArg +{ +public: + GArg() {} + + template::value, int>::type = 0> + explicit GArg(const T &t) + : kind(detail::GTypeTraits::kind) + , value(detail::wrap_gapi_helper::wrap(t)) + { + } + + template::value, int>::type = 0> + explicit GArg(T &&t) + : kind(detail::GTypeTraits::type>::kind) + , value(detail::wrap_gapi_helper::wrap(t)) + { + } + + template inline T& get() + { + return util::any_cast::type>(value); + } + + template inline const T& get() const + { + return util::any_cast::type>(value); + } + + template inline T& unsafe_get() + { + return util::unsafe_any_cast::type>(value); + } + + template inline const T& unsafe_get() const + { + return util::unsafe_any_cast::type>(value); + } + + detail::ArgKind kind = detail::ArgKind::OPAQUE; + +protected: + util::any value; +}; + +using GArgs = std::vector; + +// FIXME: Express as M::type +// FIXME: Move to a separate file! +using GRunArg = util::variant< +#if !defined(GAPI_STANDALONE) + cv::Mat, + cv::Scalar, + cv::UMat, +#endif // !defined(GAPI_STANDALONE) + cv::gapi::own::Mat, + cv::gapi::own::Scalar, + cv::detail::VectorRef + >; +using GRunArgs = std::vector; + +using GRunArgP = util::variant< +#if !defined(GAPI_STANDALONE) + cv::Mat*, + cv::Scalar*, + cv::UMat*, +#endif // !defined(GAPI_STANDALONE) + cv::gapi::own::Mat*, + cv::gapi::own::Scalar*, + cv::detail::VectorRef + >; +using GRunArgsP = std::vector; + + +template inline GRunArgs gin(const Ts&... args) +{ + return GRunArgs{ GRunArg(detail::wrap_host_helper::wrap_in(args))... }; +} + +template inline GRunArgsP gout(Ts&... args) +{ + return GRunArgsP{ GRunArgP(detail::wrap_host_helper::wrap_out(args))... }; +} + +} // namespace cv + +#endif // OPENCV_GAPI_GARG_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/garray.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/garray.hpp new file mode 100644 index 0000000..87d0015 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/garray.hpp @@ -0,0 +1,251 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GARRAY_HPP +#define OPENCV_GAPI_GARRAY_HPP + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include "opencv2/gapi/own/assert.hpp" + +namespace cv +{ +// Forward declaration; GNode and GOrigin are an internal +// (user-inaccessible) classes. +class GNode; +struct GOrigin; + +template class GArray; + +/** + * \addtogroup gapi_meta_args + * @{ + */ +struct GArrayDesc +{ + // FIXME: Body + // FIXME: Also implement proper operator== then + bool operator== (const GArrayDesc&) const { return true; } +}; +template GArrayDesc descr_of(const std::vector &) { return {};} +static inline GArrayDesc empty_array_desc() {return {}; } +/** @} */ + +std::ostream& operator<<(std::ostream& os, const cv::GArrayDesc &desc); + +namespace detail +{ + // ConstructVec is a callback which stores information about T and is used by + // G-API runtime to construct arrays in host memory (T remains opaque for G-API). + // ConstructVec is carried into G-API internals by GArrayU. + // Currently it is suitable for Host (CPU) plugins only, real offload may require + // more information for manual memory allocation on-device. + class VectorRef; + using ConstructVec = std::function; + + + // This class strips type information from GArray and makes it usable + // in the G-API graph compiler (expression unrolling, graph generation, etc). + // Part of GProtoArg. + class GAPI_EXPORTS GArrayU + { + public: + GArrayU(const GNode &n, std::size_t out); // Operation result constructor + + GOrigin& priv(); // Internal use only + const GOrigin& priv() const; // Internal use only + + protected: + GArrayU(); // Default constructor + template friend class cv::GArray; // (avialable to GArray only) + + void setConstructFcn(ConstructVec &&cv); // Store T-aware constructor + + std::shared_ptr m_priv; + }; + + // This class represents a typed STL vector reference. + // Depending on origins, this reference may be either "just a" reference to + // an object created externally, OR actually own the underlying object + // (be value holder). + class BasicVectorRef + { + public: + std::size_t m_elemSize = 0ul; + cv::GArrayDesc m_desc; + virtual ~BasicVectorRef() {} + }; + + template class VectorRefT: public BasicVectorRef + { + using empty_t = util::monostate; + using ro_ext_t = const std::vector *; + using rw_ext_t = std::vector *; + using rw_own_t = std::vector ; + util::variant m_ref; + + inline bool isEmpty() const { return util::holds_alternative(m_ref); } + inline bool isROExt() const { return util::holds_alternative(m_ref); } + inline bool isRWExt() const { return util::holds_alternative(m_ref); } + inline bool isRWOwn() const { return util::holds_alternative(m_ref); } + + void init(const std::vector* vec = nullptr) + { + m_elemSize = sizeof(T); + if (vec) m_desc = cv::descr_of(*vec); + } + + public: + VectorRefT() { init(); } + virtual ~VectorRefT() {} + + explicit VectorRefT(const std::vector& vec) : m_ref(&vec) { init(&vec); } + explicit VectorRefT(std::vector& vec) : m_ref(&vec) { init(&vec); } + explicit VectorRefT(std::vector&& vec) : m_ref(std::move(vec)) { init(&vec); } + + // Reset a VectorRefT. Called only for objects instantiated + // internally in G-API (e.g. temporary GArray's within a + // computation). Reset here means both initialization + // (creating an object) and reset (discarding its existing + // content before the next execution). Must never be called + // for external VectorRefTs. + void reset() + { + if (isEmpty()) + { + std::vector empty_vector; + m_desc = cv::descr_of(empty_vector); + m_ref = std::move(empty_vector); + GAPI_Assert(isRWOwn()); + } + else if (isRWOwn()) + { + util::get(m_ref).clear(); + } + else GAPI_Assert(false); // shouldn't be called in *EXT modes + } + + // Obtain a WRITE reference to underlying object + // Used by CPU kernel API wrappers when a kernel execution frame + // is created + std::vector& wref() + { + GAPI_Assert(isRWExt() || isRWOwn()); + if (isRWExt()) return *util::get(m_ref); + if (isRWOwn()) return util::get(m_ref); + util::throw_error(std::logic_error("Impossible happened")); + } + + // Obtain a READ reference to underlying object + // Used by CPU kernel API wrappers when a kernel execution frame + // is created + const std::vector& rref() const + { + // ANY vector can be accessed for reading, even if it declared for + // output. Example -- a GComputation from [in] to [out1,out2] + // where [out2] is a result of operation applied to [out1]: + // + // GComputation boundary + // . . . . . . . + // . . + // [in] ----> foo() ----> [out1] + // . . : + // . . . .:. . . + // . V . + // . bar() ---> [out2] + // . . . . . . . . . . . . + // + if (isROExt()) return *util::get(m_ref); + if (isRWExt()) return *util::get(m_ref); + if (isRWOwn()) return util::get(m_ref); + util::throw_error(std::logic_error("Impossible happened")); + } + }; + + // This class strips type information from VectorRefT<> and makes it usable + // in the G-API executables (carrying run-time data/information to kernels). + // Part of GRunArg. + // Its methods are typed proxies to VectorRefT. + // VectorRef maintains "reference" semantics so two copies of VectoRef refer + // to the same underlying object. + // FIXME: Put a good explanation on why cv::OutputArray doesn't fit this role + class VectorRef + { + std::shared_ptr m_ref; + + template inline void check() const + { + GAPI_DbgAssert(dynamic_cast*>(m_ref.get()) != nullptr); + GAPI_Assert(sizeof(T) == m_ref->m_elemSize); + } + + public: + VectorRef() = default; + template explicit VectorRef(const std::vector& vec) : m_ref(new VectorRefT(vec)) {} + template explicit VectorRef(std::vector& vec) : m_ref(new VectorRefT(vec)) {} + template explicit VectorRef(std::vector&& vec) : m_ref(new VectorRefT(vec)) {} + + template void reset() + { + if (!m_ref) m_ref.reset(new VectorRefT()); + + check(); + static_cast&>(*m_ref).reset(); + } + + template std::vector& wref() + { + check(); + return static_cast&>(*m_ref).wref(); + } + + template const std::vector& rref() const + { + check(); + return static_cast&>(*m_ref).rref(); + } + + cv::GArrayDesc descr_of() const + { + return m_ref->m_desc; + } + }; +} // namespace detail + +/** \addtogroup gapi_data_objects + * @{ + */ + +template class GArray +{ +public: + GArray() { putDetails(); } // Empty constructor + explicit GArray(detail::GArrayU &&ref) // GArrayU-based constructor + : m_ref(ref) { putDetails(); } // (used by GCall, not for users) + + detail::GArrayU strip() const { return m_ref; } + +private: + static void VCTor(detail::VectorRef& vref) { vref.reset(); } + void putDetails() {m_ref.setConstructFcn(&VCTor); } + + detail::GArrayU m_ref; +}; + +/** @} */ + +} // namespace cv + +#endif // OPENCV_GAPI_GARRAY_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gcall.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcall.hpp new file mode 100644 index 0000000..baf4f44 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcall.hpp @@ -0,0 +1,63 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCALL_HPP +#define OPENCV_GAPI_GCALL_HPP + +#include "opencv2/gapi/garg.hpp" // GArg +#include "opencv2/gapi/gmat.hpp" // GMat +#include "opencv2/gapi/gscalar.hpp" // GScalar +#include "opencv2/gapi/garray.hpp" // GArray + +namespace cv { + +struct GKernel; + +// The whole idea of this class is to represent an operation +// which is applied to arguments. This is part of public API, +// since it is what users should use to define kernel interfaces. + +class GAPI_EXPORTS GCall final +{ +public: + class Priv; + + explicit GCall(const GKernel &k); + ~GCall(); + + template + GCall& pass(Ts&&... args) + { + setArgs({cv::GArg(std::move(args))...}); + return *this; + } + + // A generic yield method - obtain a link to operator's particular GMat output + GMat yield (int output = 0); + GScalar yieldScalar(int output = 0); + + template GArray yieldArray(int output = 0) + { + return GArray(yieldArray(output)); + } + + // Internal use only + Priv& priv(); + const Priv& priv() const; + +protected: + std::shared_ptr m_priv; + + void setArgs(std::vector &&args); + + // Public version returns a typed array, this one is implementation detail + detail::GArrayU yieldArray(int output = 0); +}; + +} // namespace cv + +#endif // OPENCV_GAPI_GCALL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gcommon.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcommon.hpp new file mode 100644 index 0000000..6a3f51f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcommon.hpp @@ -0,0 +1,166 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCOMMON_HPP +#define OPENCV_GAPI_GCOMMON_HPP + +#include // std::hash +#include // std::vector +#include // decay + +#include + +#include "opencv2/gapi/util/any.hpp" +#include "opencv2/gapi/own/exports.hpp" +#include "opencv2/gapi/own/assert.hpp" + +namespace cv { + +namespace detail +{ + // This is a trait-like structure to mark backend-specific compile arguments + // with tags + template struct CompileArgTag; + template struct CompileArgTag + { + static const char* tag() { return ""; }; + }; +} + +// This definition is here because it is reused by both public(?) and internal +// modules. Keeping it here wouldn't expose public details (e.g., API-level) +// to components which are internal and operate on a lower-level entities +// (e.g., compiler, backends). +// FIXME: merge with ArgKind? +// FIXME: replace with variant[format desc]? +enum class GShape: int +{ + GMAT, + GSCALAR, + GARRAY, +}; + +struct GCompileArg; + +namespace detail { + template + using is_compile_arg = std::is_same::type>; +} +// CompileArg is an unified interface over backend-specific compilation +// information +// FIXME: Move to a separate file? +/** \addtogroup gapi_compile_args + * @{ + * + * @brief Compilation arguments: a set of data structures which can be + * passed to control compilation process + * + * G-API comes with a number of graph compilation options which can be + * passed to cv::GComputation::apply() or + * cv::GComputation::compile(). Known compilation options are listed + * in this page, while extra backends may introduce their own + * compilation options (G-API transparently accepts _everything_ which + * can be passed to cv::compile_args(), it depends on underlying + * backends if an option would be interpreted or not). + * + * For example, if an example computation is executed like this: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp graph_decl_apply + * + * Extra parameter specifying which kernels to compile with can be + * passed like this: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp apply_with_param + */ + +/** + * @brief Represents an arbitrary compilation argument. + * + * Any value can be wrapped into cv::GCompileArg, but only known ones + * (to G-API or its backends) can be interpreted correctly. + * + * Normally objects of this class shouldn't be created manually, use + * cv::compile_args() function which automatically wraps everything + * passed in (a variadic template parameter pack) into a vector of + * cv::GCompileArg objects. + */ +struct GAPI_EXPORTS GCompileArg +{ +public: + std::string tag; + + // FIXME: use decay in GArg/other trait-based wrapper before leg is shot! + template::value, int>::type = 0> + explicit GCompileArg(T &&t) + : tag(detail::CompileArgTag::type>::tag()) + , arg(t) + { + } + + template T& get() + { + return util::any_cast(arg); + } + + template const T& get() const + { + return util::any_cast(arg); + } + +private: + util::any arg; +}; + +using GCompileArgs = std::vector; + +/** + * Wraps a list of arguments (a parameter pack) into a vector of + * compilation arguments (cv::GCompileArg). + */ +template GCompileArgs compile_args(Ts&&... args) +{ + return GCompileArgs{ GCompileArg(args)... }; +} + +/** + * @brief Ask G-API to dump compiled graph in Graphviz format under + * the given file name. + * + * Specifies a graph dump path (path to .dot file to be generated). + * G-API will dump a .dot file under specified path during a + * compilation process if this flag is passed. + */ +struct graph_dump_path +{ + std::string m_dump_path; +}; +/** @} */ + +namespace detail +{ + template<> struct CompileArgTag + { + static const char* tag() { return "gapi.graph_dump_path"; } + }; +} + +} // namespace cv + +// std::hash overload for GShape +namespace std +{ +template<> struct hash +{ + size_t operator() (cv::GShape sh) const + { + return std::hash()(static_cast(sh)); + } +}; +} // namespace std + + +#endif // OPENCV_GAPI_GCOMMON_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompiled.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompiled.hpp new file mode 100644 index 0000000..ad491b7 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompiled.hpp @@ -0,0 +1,217 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCOMPILED_HPP +#define OPENCV_GAPI_GCOMPILED_HPP + +#include + +#include "opencv2/gapi/opencv_includes.hpp" +#include "opencv2/gapi/own/assert.hpp" +#include "opencv2/gapi/garg.hpp" + +namespace cv { + +// This class represents a compiled computation. +// In theory (and ideally), it can be used w/o the rest of APIs. +// In theory (and ideally), it can be serialized/deserialized. +// It can enable scenarious like deployment to an autonomous devince, FuSa, etc. +// +// Currently GCompiled assumes all GMats you used to pass data to G-API +// are valid and not destroyed while you use a GCompiled object. +// +// FIXME: In future, there should be a way to name I/O objects and specify it +// to GCompiled externally (for example, when it is loaded on the target system). + +/** + * \addtogroup gapi_main_classes + * @{ + */ +/** + * @brief Represents a compiled computation (graph). Can only be used + * with image / data formats & resolutions it was compiled for, with + * some exceptions. + * + * This class represents a product of graph compilation (calling + * cv::GComputation::compile()). Objects of this class actually do + * data processing, and graph execution is incapsulated into objects + * of this class. Execution model itself depends on kernels and + * backends which were using during the compilation, see @ref + * gapi_compile_args for details. + * + * In a general case, GCompiled objects can be applied to data only in + * that formats/resolutions they were compiled for (see @ref + * gapi_meta_args). However, if the underlying backends allow, a + * compiled object can be _reshaped_ to handle data (images) of + * different resolution, though formats and types must remain the same. + * + * GCompiled is very similar to `std::function<>` in its semantics -- + * running it looks like a function call in the user code. + * + * At the moment, GCompiled objects are not reentrant -- generally, + * the objects are stateful since graph execution itself is a stateful + * process and this state is now maintained in GCompiled's own memory + * (not on the process stack). + * + * At the same time, two different GCompiled objects produced from the + * single cv::GComputation are completely independent and can be used + * concurrently. + */ +class GAPI_EXPORTS GCompiled +{ +public: + /// @private + class GAPI_EXPORTS Priv; + + /** + * @brief Constructs an empty object + */ + GCompiled(); + + /** + * @brief Run the compiled computation, a generic version. + * + * @param ins vector of inputs to process. + * @param outs vector of outputs to produce. + * + * Input/output vectors must have the same number of elements as + * defined in the cv::GComputation protocol (at the moment of its + * construction). Shapes of elements also must conform to protocol + * (e.g. cv::Mat needs to be passed where cv::GMat has been + * declared as input, and so on). Run-time exception is generated + * otherwise. + * + * Objects in output vector may remain empty (like cv::Mat) -- + * G-API will automatically initialize output objects to proper formats. + * + * @note Don't construct GRunArgs/GRunArgsP objects manually, use + * cv::gin()/cv::gout() wrappers instead. + */ + void operator() (GRunArgs &&ins, GRunArgsP &&outs); // Generic arg-to-arg +#if !defined(GAPI_STANDALONE) + + /** + * @brief Execute an unary computation + * + * @overload + * @param in input cv::Mat for unary computation + * @param out output cv::Mat for unary computation + * process. + */ + void operator() (cv::Mat in, cv::Mat &out); // Unary overload + + /** + * @brief Execute an unary computation + * + * @overload + * @param in input cv::Mat for unary computation + * @param out output cv::Scalar for unary computation + * process. + */ + void operator() (cv::Mat in, cv::Scalar &out); // Unary overload (scalar) + + /** + * @brief Execute a binary computation + * + * @overload + * @param in1 first input cv::Mat for binary computation + * @param in2 second input cv::Mat for binary computation + * @param out output cv::Mat for binary computation + * process. + */ + void operator() (cv::Mat in1, cv::Mat in2, cv::Mat &out); // Binary overload + + /** + * @brief Execute an binary computation + * + * @overload + * @param in1 first input cv::Mat for binary computation + * @param in2 second input cv::Mat for binary computation + * @param out output cv::Scalar for binary computation + * process. + */ + void operator() (cv::Mat in1, cv::Mat in2, cv::Scalar &out); // Binary overload (scalar) + + /** + * @brief Execute a computation with arbitrary number of + * inputs/outputs. + * + * @overload + * @param ins vector of input cv::Mat objects to process by the + * computation. + * @param outs vector of output cv::Mat objects to produce by the + * computation. + * + * Numbers of elements in ins/outs vectos must match numbers of + * inputs/outputs which were used to define the source GComputation. + */ + void operator() (const std::vector &ins, // Compatibility overload + const std::vector &outs); +#endif // !defined(GAPI_STANDALONE) + /// @private + Priv& priv(); + + /** + * @brief Check if compiled object is valid (non-empty) + * + * @return true if the object is runnable (valid), false otherwise + */ + explicit operator bool () const; + + /** + * @brief Vector of metadata this graph was compiled for. + * + * @return Unless _reshape_ is not supported, return value is the + * same vector which was passed to cv::GComputation::compile() to + * produce this compiled object. Otherwise, it is the latest + * metadata vector passed to reshape() (if that call was + * successful). + */ + const GMetaArgs& metas() const; // Meta passed to compile() + + /** + * @brief Vector of metadata descriptions of graph outputs + * + * @return vector with formats/resolutions of graph's output + * objects, auto-inferred from input metadata vector by + * operations which form this computation. + * + * @note GCompiled objects produced from the same + * cv::GComputiation graph with different input metas may return + * different values in this vector. + */ + const GMetaArgs& outMetas() const; + + /** + * @brief Check if the underlying backends support reshape or not. + * + * @return true if supported, false otherwise. + */ + bool canReshape() const; + + /** + * @brief Reshape a compiled graph to support new image + * resolutions. + * + * Throws an exception if an error occurs. + * + * @param inMetas new metadata to reshape on. Vector size and + * metadata shapes must match the computation's protocol. + * @param args compilation arguments to use. + */ + // FIXME: Why it requires compile args? + void reshape(const GMetaArgs& inMetas, const GCompileArgs& args); + +protected: + /// @private + std::shared_ptr m_priv; +}; +/** @} */ + +} + +#endif // OPENCV_GAPI_GCOMPILED_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompoundkernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompoundkernel.hpp new file mode 100644 index 0000000..f4c0234 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcompoundkernel.hpp @@ -0,0 +1,123 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCOMPOUNDKERNEL_HPP +#define OPENCV_GAPI_GCOMPOUNDKERNEL_HPP + +#include +#include +#include +#include + +namespace cv { +namespace gapi +{ +namespace compound +{ + // FIXME User does not need to know about this function + // Needs that user may define compound kernels(as cpu kernels) + GAPI_EXPORTS cv::gapi::GBackend backend(); +} // namespace compound +} // namespace gapi + +namespace detail +{ + +struct GCompoundContext +{ + explicit GCompoundContext(const GArgs& in_args); + template + const T& inArg(int input) { return m_args.at(input).get(); } + + GArgs m_args; + GArgs m_results; +}; + +class GAPI_EXPORTS GCompoundKernel +{ +// Compound kernel must use all of it's inputs +public: + using F = std::function; + + explicit GCompoundKernel(const F& f); + void apply(GCompoundContext& ctx); + +protected: + F m_f; +}; + +template struct get_compound_in +{ + static T get(GCompoundContext &ctx, int idx) { return ctx.inArg(idx); } +}; + +template struct get_compound_in> +{ + static cv::GArray get(GCompoundContext &ctx, int idx) + { + auto array = cv::GArray(); + ctx.m_args[idx] = GArg(array); + return array; + } +}; + +// Kernel may return one object(GMat, GScalar) or a tuple of objects. +// This helper is needed to cast return value to the same form(tuple) +template +struct tuple_wrap_helper; + +template struct tuple_wrap_helper +{ + static std::tuple get(T&& obj) { return std::make_tuple(std::move(obj)); } +}; + +template +struct tuple_wrap_helper> +{ + static std::tuple get(std::tuple&& objs) { return std::forward>(objs); } +}; + +template +struct GCompoundCallHelper; + +template +struct GCompoundCallHelper, std::tuple > +{ + template + static void expand_impl(GCompoundContext &ctx, detail::Seq, detail::Seq) + { + auto result = Impl::expand(get_compound_in::get(ctx, IIs)...); + auto tuple_return = tuple_wrap_helper::get(std::move(result)); + ctx.m_results = { cv::GArg(std::get(tuple_return))... }; + } + + static void expand(GCompoundContext &ctx) + { + expand_impl(ctx, + typename detail::MkSeq::type(), + typename detail::MkSeq::type()); + } +}; + +template +class GCompoundKernelImpl: public cv::detail::GCompoundCallHelper +{ + using P = cv::detail::GCompoundCallHelper; + +public: + using API = K; + + static cv::gapi::GBackend backend() { return cv::gapi::compound::backend(); } + static GCompoundKernel kernel() { return GCompoundKernel(&P::expand); } +}; + +} // namespace detail +#define GAPI_COMPOUND_KERNEL(Name, API) struct Name: public cv::detail::GCompoundKernelImpl + +} // namespace cv + +#endif // OPENCV_GAPI_GCOMPOUNDKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gcomputation.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcomputation.hpp new file mode 100644 index 0000000..439b349 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gcomputation.hpp @@ -0,0 +1,456 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GCOMPUTATION_HPP +#define OPENCV_GAPI_GCOMPUTATION_HPP + +#include + +#include "opencv2/gapi/util/util.hpp" +#include "opencv2/gapi/gcommon.hpp" +#include "opencv2/gapi/gproto.hpp" +#include "opencv2/gapi/garg.hpp" +#include "opencv2/gapi/gcompiled.hpp" + +namespace cv { + +namespace detail +{ + // FIXME: move to algorithm, cover with separate tests + // FIXME: replace with O(1) version (both memory and compilation time) + template + struct last_type; + + template + struct last_type { using type = T;}; + + template + struct last_type { using type = typename last_type::type; }; + + template + using last_type_t = typename last_type::type; +} + +/** + * \addtogroup gapi_main_classes + * @{ + */ +/** + * @brief GComputation class represents a captured computation + * graph. GComputation objects form boundaries for expression code + * user writes with G-API, allowing to compile and execute it. + * + * G-API computations are defined with input/output data + * objects. G-API will track automatically which operations connect + * specified outputs to the inputs, forming up a call graph to be + * executed. The below example expresses calculation of Sobel operator + * for edge detection (\f$G = \sqrt{G_x^2 + G_y^2}\f$): + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp graph_def + * + * Full pipeline can be now captured with this object declaration: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp graph_cap_full + * + * Input/output data objects on which a call graph should be + * reconstructed are passed using special wrappers cv::GIn and + * cv::GOut. G-API will track automatically which operations form a + * path from inputs to outputs and build the execution graph appropriately. + * + * Note that cv::GComputation doesn't take ownership on data objects + * it is defined. Moreover, multiple GComputation objects may be + * defined on the same expressions, e.g. a smaller pipeline which + * expects that image gradients are already pre-calculated may be + * defined like this: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp graph_cap_sub + * + * The resulting graph would expect two inputs and produce one + * output. In this case, it doesn't matter if gx/gy data objects are + * results of cv::gapi::Sobel operators -- G-API will stop unrolling + * expressions and building the underlying graph one reaching this + * data objects. + * + * The way how GComputation is defined is important as its definition + * specifies graph _protocol_ -- the way how the graph should be + * used. Protocol is defined by number of inputs, number of outputs, + * and shapes of inputs and outputs. + * + * In the above example, sobelEdge expects one Mat on input and + * produces one Mat; while sobelEdgeSub expects two Mats on input and + * produces one Mat. GComputation's protocol defines how other + * computaion methods should be used -- cv::GComputation::compile() and + * cv::GComputation::apply(). For example, if a graph is defined on + * two GMat inputs, two cv::Mat objects have to be passed to apply() + * for execution. GComputation checks protocol correctness in runtime + * so passing a different number of objects in apply() or passing + * cv::Scalar instead of cv::Mat there would compile well as a C++ + * source but raise an exception in run-time. G-API also comes with a + * typed wrapper cv::GComputationT<> which introduces this type-checking in + * compile-time. + * + * cv::GComputation itself is a thin object which just captures what + * the graph is. The compiled graph (which actually process data) is + * represented by class GCompiled. Use compile() method to generate a + * compiled graph with given compile options. cv::GComputation can + * also be used to process data with implicit graph compilation + * on-the-fly, see apply() for details. + * + * GComputation is a reference-counted object -- once defined, all its + * copies will refer to the same instance. + * + * @sa GCompiled + */ +class GAPI_EXPORTS GComputation +{ +public: + class Priv; + typedef std::function Generator; + + // Various constructors enable different ways to define a computation: ///// + // 1. Generic constructors + /** + * @brief Define a computation using a generator function. + * + * Graph can be defined in-place directly at the moment of its + * construction with a lambda: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp graph_gen + * + * This may be useful since all temporary objects (cv::GMats) and + * namespaces can be localized to scope of lambda, without + * contaminating the parent scope with probably unnecessary objects + * and information. + * + * @param gen generator function which returns a cv::GComputation, + * see Generator. + */ + GComputation(const Generator& gen); // Generator + // overload + + /** + * @brief Generic GComputation constructor. + * + * Constructs a new graph with a given protocol, specified as a + * flow of operations connecting input/output objects. Throws if + * the passed boundaries are invalid, e.g. if there's no + * functional dependency (path) between given outputs and inputs. + * + * @param ins Input data vector. + * @param outs Output data vector. + * + * @note Don't construct GProtoInputArgs/GProtoOutputArgs objects + * directly, use cv::GIn()/cv::GOut() wrapper functions instead. + * + * @sa @ref gapi_data_objects + */ + GComputation(GProtoInputArgs &&ins, + GProtoOutputArgs &&outs); // Arg-to-arg overload + + // 2. Syntax sugar and compatibility overloads + /** + * @brief Defines an unary (one input -- one output) computation + * + * @overload + * @param in input GMat of the defined unary computation + * @param out output GMat of the defined unary computation + */ + GComputation(GMat in, GMat out); // Unary overload + + /** + * @brief Defines an unary (one input -- one output) computation + * + * @overload + * @param in input GMat of the defined unary computation + * @param out output GScalar of the defined unary computation + */ + GComputation(GMat in, GScalar out); // Unary overload (scalar) + + /** + * @brief Defines a binary (two inputs -- one output) computation + * + * @overload + * @param in1 first input GMat of the defined binary computation + * @param in2 second input GMat of the defined binary computation + * @param out output GMat of the defined binary computation + */ + GComputation(GMat in1, GMat in2, GMat out); // Binary overload + + /** + * @brief Defines a binary (two inputs -- one output) computation + * + * @overload + * @param in1 first input GMat of the defined binary computation + * @param in2 second input GMat of the defined binary computation + * @param out output GScalar of the defined binary computation + */ + GComputation(GMat in1, GMat in2, GScalar out); // Binary + // overload + // (scalar) + + /** + * @brief Defines a computation with arbitrary input/output number. + * + * @overload + * @param ins vector of inputs GMats for this computation + * @param outs vector of outputs GMats for this computation + * + * Use this overload for cases when number of computation + * inputs/outputs is not known in compile-time -- e.g. when graph + * is programmatically generated to build an image pyramid with + * the given number of levels, etc. + */ + GComputation(const std::vector &ins, // Compatibility overload + const std::vector &outs); + + // Various versions of apply(): //////////////////////////////////////////// + // 1. Generic apply() + /** + * @brief Compile graph on-the-fly and immediately execute it on + * the inputs data vectors. + * + * Number of input/output data objects must match GComputation's + * protocol, also types of host data objects (cv::Mat, cv::Scalar) + * must match the shapes of data objects from protocol (cv::GMat, + * cv::GScalar). If there's a mismatch, a run-time exception will + * be generated. + * + * Internally, a cv::GCompiled object is created for the given + * input format configuration, which then is executed on the input + * data immediately. cv::GComputation caches compiled objects + * produced within apply() -- if this method would be called next + * time with the same input parameters (image formats, image + * resolution, etc), the underlying compiled graph will be reused + * without recompilation. If new metadata doesn't match the cached + * one, the underlying compiled graph is regenerated. + * + * @note compile() always triggers a compilation process and + * produces a new GCompiled object regardless if a similar one has + * been cached via apply() or not. + * + * @param ins vector of input data to process. Don't create + * GRunArgs object manually, use cv::gin() wrapper instead. + * @param outs vector of output data to fill results in. cv::Mat + * objects may be empty in this vector, G-API will automatically + * initialize it with the required format & dimensions. Don't + * create GRunArgsP object manually, use cv::gout() wrapper instead. + * @param args a list of compilation arguments to pass to the + * underlying compilation process. Don't create GCompileArgs + * object manually, use cv::compile_args() wrapper instead. + * + * @sa @ref gapi_data_objects, @ref gapi_compile_args + */ + void apply(GRunArgs &&ins, GRunArgsP &&outs, GCompileArgs &&args = {}); // Arg-to-arg overload + + /// @private -- Exclude this function from OpenCV documentation + void apply(const std::vector& ins, // Compatibility overload + const std::vector& outs, + GCompileArgs &&args = {}); + + // 2. Syntax sugar and compatibility overloads +#if !defined(GAPI_STANDALONE) + /** + * @brief Execute an unary computation (with compilation on the fly) + * + * @overload + * @param in input cv::Mat for unary computation + * @param out output cv::Mat for unary computation + * @param args compilation arguments for underlying compilation + * process. + */ + void apply(cv::Mat in, cv::Mat &out, GCompileArgs &&args = {}); // Unary overload + + /** + * @brief Execute an unary computation (with compilation on the fly) + * + * @overload + * @param in input cv::Mat for unary computation + * @param out output cv::Scalar for unary computation + * @param args compilation arguments for underlying compilation + * process. + */ + void apply(cv::Mat in, cv::Scalar &out, GCompileArgs &&args = {}); // Unary overload (scalar) + + /** + * @brief Execute a binary computation (with compilation on the fly) + * + * @overload + * @param in1 first input cv::Mat for binary computation + * @param in2 second input cv::Mat for binary computation + * @param out output cv::Mat for binary computation + * @param args compilation arguments for underlying compilation + * process. + */ + void apply(cv::Mat in1, cv::Mat in2, cv::Mat &out, GCompileArgs &&args = {}); // Binary overload + + /** + * @brief Execute an binary computation (with compilation on the fly) + * + * @overload + * @param in1 first input cv::Mat for binary computation + * @param in2 second input cv::Mat for binary computation + * @param out output cv::Scalar for binary computation + * @param args compilation arguments for underlying compilation + * process. + */ + void apply(cv::Mat in1, cv::Mat in2, cv::Scalar &out, GCompileArgs &&args = {}); // Binary overload (scalar) + + /** + * @brief Execute a computation with arbitrary number of + * inputs/outputs (with compilation on-the-fly). + * + * @overload + * @param ins vector of input cv::Mat objects to process by the + * computation. + * @param outs vector of output cv::Mat objects to produce by the + * computation. + * @param args compilation arguments for underlying compilation + * process. + * + * Numbers of elements in ins/outs vectos must match numbers of + * inputs/outputs which were used to define this GComputation. + */ + void apply(const std::vector& ins, // Compatibility overload + const std::vector& outs, + GCompileArgs &&args = {}); +#endif // !defined(GAPI_STANDALONE) + // Various versions of compile(): ////////////////////////////////////////// + // 1. Generic compile() - requires metas to be passed as vector + /** + * @brief Compile the computation for specific input format(s). + * + * This method triggers compilation process and produces a new + * GCompiled object which then can process data of the given + * format. Passing data with different format to the compiled + * computation will generate a run-time exception. + * + * @param in_metas vector of input metadata configuration. Grab + * metadata from real data objects (like cv::Mat or cv::Scalar) + * using cv::descr_of(), or create it on your own. + * @param args compilation arguments for this compilation + * process. Compilation arguments directly affect what kind of + * executable object would be produced, e.g. which kernels (and + * thus, devices) would be used to execute computation. + * + * @return GCompiled, an executable computation compiled + * specifically for the given input parameters. + * + * @sa @ref gapi_compile_args + */ + GCompiled compile(GMetaArgs &&in_metas, GCompileArgs &&args = {}); + + // 2. Syntax sugar - variadic list of metas, no extra compile args + // FIXME: SFINAE looks ugly in the generated documentation + /** + * @overload + * + * Takes a variadic parameter pack with metadata + * descriptors for which a compiled object needs to be produced. + * + * @return GCompiled, an executable computation compiled + * specifically for the given input parameters. + */ + template + auto compile(const Ts&... metas) -> + typename std::enable_if::value, GCompiled>::type + { + return compile(GMetaArgs{GMetaArg(metas)...}, GCompileArgs()); + } + + // 3. Syntax sugar - variadic list of metas, extra compile args + // (seems optional parameters don't work well when there's an variadic template + // comes first) + // + // Ideally it should look like: + // + // template + // GCompiled compile(const Ts&... metas, GCompileArgs &&args) + // + // But not all compilers can hande this (and seems they shouldn't be able to). + // FIXME: SFINAE looks ugly in the generated documentation + /** + * @overload + * + * Takes a variadic parameter pack with metadata + * descriptors for which a compiled object needs to be produced, + * followed by GCompileArgs object representing compilation + * arguments for this process. + * + * @return GCompiled, an executable computation compiled + * specifically for the given input parameters. + */ + template + auto compile(const Ts&... meta_and_compile_args) -> + typename std::enable_if::value + && std::is_same >::value, + GCompiled>::type + { + //FIXME: wrapping meta_and_compile_args into a tuple to unwrap them inside a helper function is the overkill + return compile(std::make_tuple(meta_and_compile_args...), + typename detail::MkSeq::type()); + } + + // Internal use only + /// @private + Priv& priv(); + /// @private + const Priv& priv() const; + +protected: + + // 4. Helper method for (3) + /// @private + template + GCompiled compile(const std::tuple &meta_and_compile_args, detail::Seq) + { + GMetaArgs meta_args = {GMetaArg(std::get(meta_and_compile_args))...}; + GCompileArgs comp_args = std::get(meta_and_compile_args); + return compile(std::move(meta_args), std::move(comp_args)); + } + /// @private + std::shared_ptr m_priv; +}; +/** @} */ + +namespace gapi +{ + // FIXME: all these standalone functions need to be added to some + // common documentation section + /** + * @brief Define an tagged island (subgraph) within a computation. + * + * Declare an Island tagged with `name` and defined from `ins` to `outs` + * (exclusively, as ins/outs are data objects, and regioning is done on + * operations level). + * Throws if any operation between `ins` and `outs` are already assigned + * to another island. + * + * Islands allow to partition graph into subgraphs, fine-tuning + * the way it is scheduled by the underlying executor. + * + * @param name name of the Island to create + * @param ins vector of input data objects where the subgraph + * begins + * @param outs vector of output data objects where the subgraph + * ends. + * + * The way how an island is defined is similar to how + * cv::GComputation is defined on input/output data objects. + * Same rules apply here as well -- if there's no functional + * dependency between inputs and outputs or there's not enough + * input data objects were specified to properly calculate all + * outputs, an exception is thrown. + * + * Use cv::GIn() / cv::GOut() to specify input/output vectors. + */ + void GAPI_EXPORTS island(const std::string &name, + GProtoInputArgs &&ins, + GProtoOutputArgs &&outs); +} // namespace gapi + +} // namespace cv +#endif // OPENCV_GAPI_GCOMPUTATION_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gkernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gkernel.hpp new file mode 100644 index 0000000..40a9cbb --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gkernel.hpp @@ -0,0 +1,563 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GKERNEL_HPP +#define OPENCV_GAPI_GKERNEL_HPP + +#include +#include +#include // string +#include // false_type, true_type +#include // map (for GKernelPackage) +#include // tuple +#include // lookup order + +#include // CompileArgTag +#include // Seq +#include +#include // GArg +#include // GMetaArg +#include // GTypeTraits +#include //suppress_unused_warning + + +namespace cv { + +using GShapes = std::vector; + +// GKernel describes kernel API to the system +// FIXME: add attributes of a kernel, (e.g. number and types +// of inputs, etc) +struct GAPI_EXPORTS GKernel +{ + using M = std::function; + + const std::string name; // kernel ID, defined by its API (signature) + const M outMeta; // generic adaptor to API::outMeta(...) + const GShapes outShapes; // types (shapes) kernel's outputs +}; + +// GKernelImpl describes particular kernel implementation to the system +struct GAPI_EXPORTS GKernelImpl +{ + util::any opaque; // backend-specific opaque info +}; + +template class GKernelTypeM; + +namespace detail +{ + //////////////////////////////////////////////////////////////////////////// + // yield() is used in graph construction time as a generic method to obtain + // lazy "return value" of G-API operations + // + namespace + { + + template struct Yield; + template<> struct Yield + { + static inline cv::GMat yield(cv::GCall &call, int i) { return call.yield(i); } + }; + template<> struct Yield + { + static inline cv::GScalar yield(cv::GCall &call, int i) { return call.yieldScalar(i); } + }; + template struct Yield > + { + static inline cv::GArray yield(cv::GCall &call, int i) { return call.yieldArray(i); } + }; + } // anonymous namespace + + //////////////////////////////////////////////////////////////////////////// + // Helper classes which brings outputMeta() marshalling to kernel + // implementations + // + // 1. MetaType establishes G#Type -> G#Meta mapping between G-API dynamic + // types and its metadata descriptor types. + // This mapping is used to transform types to call outMeta() callback. + template struct MetaType; + template<> struct MetaType { using type = GMatDesc; }; + template<> struct MetaType { using type = GScalarDesc; }; + template struct MetaType > { using type = GArrayDesc; }; + template struct MetaType { using type = T; }; // opaque args passed as-is + + // 2. Hacky test based on MetaType to check if we operate on G-* type or not + template using is_nongapi_type = std::is_same::type>; + + // 3. Two ways to transform input arguments to its meta - for G-* and non-G* types: + template + typename std::enable_if::value, typename MetaType::type> + ::type get_in_meta(const GMetaArgs &in_meta, const GArgs &, int idx) + { + return util::get::type>(in_meta.at(idx)); + } + + template + typename std::enable_if::value, T> + ::type get_in_meta(const GMetaArgs &, const GArgs &in_args, int idx) + { + return in_args.at(idx).template get(); + } + + // 4. The MetaHelper itself: an entity which generates outMeta() call + // based on kernel signature, with arguments properly substituted. + // 4.1 - case for multiple return values + // FIXME: probably can be simplified with std::apply or analogue. + template + struct MetaHelper; + + template + struct MetaHelper, std::tuple > + { + template + static GMetaArgs getOutMeta_impl(const GMetaArgs &in_meta, + const GArgs &in_args, + detail::Seq, + detail::Seq) + { + // FIXME: decay? + using R = std::tuple::type...>; + const R r = K::outMeta( get_in_meta(in_meta, in_args, IIs)... ); + return GMetaArgs{ GMetaArg(std::get(r))... }; + } + // FIXME: help users identify how outMeta must look like (via default impl w/static_assert?) + + static GMetaArgs getOutMeta(const GMetaArgs &in_meta, + const GArgs &in_args) + { + return getOutMeta_impl(in_meta, + in_args, + typename detail::MkSeq::type(), + typename detail::MkSeq::type()); + } + }; + + // 4.1 - case for a single return value + // FIXME: How to avoid duplication here? + template + struct MetaHelper, Out > + { + template + static GMetaArgs getOutMeta_impl(const GMetaArgs &in_meta, + const GArgs &in_args, + detail::Seq) + { + // FIXME: decay? + using R = typename MetaType::type; + const R r = K::outMeta( get_in_meta(in_meta, in_args, IIs)... ); + return GMetaArgs{ GMetaArg(r) }; + } + // FIXME: help users identify how outMeta must look like (via default impl w/static_assert?) + + static GMetaArgs getOutMeta(const GMetaArgs &in_meta, + const GArgs &in_args) + { + return getOutMeta_impl(in_meta, + in_args, + typename detail::MkSeq::type()); + } + }; + +} // namespace detail + +// GKernelType and GKernelTypeM are base classes which implement typed ::on() +// method based on kernel signature. GKernelTypeM stands for multiple-return-value kernels +// +// G_TYPED_KERNEL and G_TYPED_KERNEK_M macros inherit user classes from GKernelType and +// GKernelTypeM respectively. + +template +class GKernelTypeM(Args...)> >: + public detail::MetaHelper, std::tuple > +{ + template + static std::tuple yield(cv::GCall &call, detail::Seq) + { + return std::make_tuple(detail::Yield::yield(call, IIs)...); + } + +public: + using InArgs = std::tuple; + using OutArgs = std::tuple; + + static std::tuple on(Args... args) + { + cv::GCall call(GKernel{K::id(), &K::getOutMeta, {detail::GTypeTraits::shape...}}); + call.pass(args...); + return yield(call, typename detail::MkSeq::type()); + } +}; + +template class GKernelType; + +template +class GKernelType >: + public detail::MetaHelper, R > +{ +public: + using InArgs = std::tuple; + using OutArgs = std::tuple; + + static R on(Args... args) + { + cv::GCall call(GKernel{K::id(), &K::getOutMeta, {detail::GTypeTraits::shape}}); + call.pass(args...); + return detail::Yield::yield(call, 0); + } +}; + +} // namespace cv + + +// FIXME: I don't know a better way so far. Feel free to suggest one +// The problem is that every typed kernel should have ::id() but body +// of the class is defined by user (with outMeta, other stuff) + +#define G_ID_HELPER_CLASS(Class) Class##IdHelper + +#define G_ID_HELPER_BODY(Class, Id) \ + namespace detail \ + { \ + struct G_ID_HELPER_CLASS(Class) \ + { \ + static constexpr const char * id() {return Id;}; \ + }; \ + } + +#define G_TYPED_KERNEL(Class, API, Id) \ + G_ID_HELPER_BODY(Class, Id) \ + struct Class final: public cv::GKernelType, \ + public detail::G_ID_HELPER_CLASS(Class) +// {body} is to be defined by user + +#define G_TYPED_KERNEL_M(Class, API, Id) \ + G_ID_HELPER_BODY(Class, Id) \ + struct Class final: public cv::GKernelTypeM, \ + public detail::G_ID_HELPER_CLASS(Class) \ +// {body} is to be defined by user + +namespace cv +{ +// Declare in cv:: namespace +enum class unite_policy +{ + REPLACE, + KEEP +}; + +namespace gapi +{ + // Prework: model "Device" API before it gets to G-API headers. + // FIXME: Don't mix with internal Backends class! + class GAPI_EXPORTS GBackend + { + public: + class Priv; + + // TODO: make it template (call `new` within??) + GBackend(); + explicit GBackend(std::shared_ptr &&p); + + Priv& priv(); + const Priv& priv() const; + std::size_t hash() const; + + bool operator== (const GBackend &rhs) const; + + private: + std::shared_ptr m_priv; + }; + + inline bool operator != (const GBackend &lhs, const GBackend &rhs) + { + return !(lhs == rhs); + } +} // namespace gapi +} // namespace cv + +namespace std +{ + template<> struct hash + { + std::size_t operator() (const cv::gapi::GBackend &b) const + { + return b.hash(); + } + }; +} // namespace std + + +namespace cv { +namespace gapi { + /** \addtogroup gapi_compile_args + * @{ + */ + + // Lookup order is in fact a vector of Backends to traverse during look-up + /** + * @brief Priority list of backends to use during kernel + * resolution process. + * + * Priority is descending -- the first backend in the list has the + * top priority, and the last one has the lowest priority. + * + * If there's multiple implementations available for a kernel at + * the moment of graph compilation, a kernel (and thus a backend) + * will be selected according to this order (if the parameter is passed). + * + * Default order is not specified (and by default, only + * CPU(OpenCV) backend is involved in graph compilation). + */ + using GLookupOrder = std::vector; + /** + * @brief Create a backend lookup order -- priority list of + * backends to use during graph compilation process. + * + * @sa GLookupOrder, @ref gapi_std_backends + */ + inline GLookupOrder lookup_order(std::initializer_list &&list) + { + return GLookupOrder(std::move(list)); + } + + // FIXME: Hide implementation + /** + * @brief A container class for heterogeneous kernel + * implementation collections. + * + * GKernelPackage is a special container class which stores kernel + * _implementations_. Objects of this class are created and passed + * to cv::GComputation::compile() to specify which kernels to use + * in the compiled graph. GKernelPackage may contain kernels of + * different backends, e.g. be heterogeneous. + * + * The most easy way to create a kernel package is to use function + * cv::gapi::kernels(). This template functions takes kernel + * implementations in form of type list (variadic template) and + * generates a kernel package atop of that. + * + * Kernel packages can be also generated programatically, starting + * with an empty package (created with the default constructor) + * and then by populating it with kernels via call to + * GKernelPackage::include(). Note this method is also a template + * one since G-API kernel implementations are _types_, not objects. + * + * Finally, two kernel packages can be combined into a new one + * with function cv::gapi::combine(). There are different rules + * apply to this process, see also cv::gapi::unite_policy for + * details. + */ + class GAPI_EXPORTS GKernelPackage + { + /// @private + using S = std::unordered_map; + + /// @private + using M = std::unordered_map; + + /// @private + M m_backend_kernels; + + protected: + /// @private + // Check if package contains ANY implementation of a kernel API + // by API textual id. + bool includesAPI(const std::string &id) const; + + /// @private + // Remove ALL implementations of the given API (identified by ID) + void removeAPI(const std::string &id); + + public: + /** + * @brief Returns total number of kernels in the package + * (across all backends included) + * + * @return a number of kernels in the package + */ + std::size_t size() const; + + /** + * @brief Test if a particular kernel _implementation_ KImpl is + * included in this kernel package. + * + * @sa includesAPI() + * + * @return true if there is such kernel, false otherwise. + */ + template + bool includes() const + { + const auto set_iter = m_backend_kernels.find(KImpl::backend()); + return (set_iter != m_backend_kernels.end()) + ? (set_iter->second.count(KImpl::API::id()) > 0) + : false; + } + + /** + * @brief Remove all kernels associated with the given backend + * from the package. + * + * Does nothing if there's no kernels of this backend in the package. + * + * @param backend backend which kernels to remove + */ + void remove(const GBackend& backend); + + /** + * @brief Remove all kernels implementing the given API from + * the package. + * + * Does nothing if there's no kernels implementing the given interface. + */ + template + void remove() + { + removeAPI(KAPI::id()); + } + + // FIXME: Rename to includes() and distinguish API/impl case by + // statically? + /** + * Check if package contains ANY implementation of a kernel API + * by API type. + */ + template + bool includesAPI() const + { + return includesAPI(KAPI::id()); + } + + /** + * @brief Find a kernel (by its API), given the look-up order. + * + * If order is empty, returns first suitable implementation. + * Throws if nothing found. + * + * @return Backend which hosts matching kernel implementation. + * + * @sa cv::gapi::lookup_order + */ + template + GBackend lookup(const GLookupOrder &order = {}) const + { + return lookup(KAPI::id(), order).first; + } + + /// @private + std::pair + lookup(const std::string &id, const GLookupOrder &order = {}) const; + + // FIXME: No overwrites allowed? + /** + * @brief Put a new kernel implementation KImpl into package. + * + * @param up unite policy to use. If the package has already + * implementation for this kernel (probably from another + * backend), and cv::unite_policy::KEEP is passed, the + * existing implementation remains in package; on + * cv::unite_policy::REPLACE all other existing + * implementations are first dropped from the package. + */ + template + void include(const cv::unite_policy up = cv::unite_policy::KEEP) + { + auto backend = KImpl::backend(); + auto kernel_id = KImpl::API::id(); + auto kernel_impl = GKernelImpl{KImpl::kernel()}; + if (up == cv::unite_policy::REPLACE) removeAPI(kernel_id); + else GAPI_Assert(up == cv::unite_policy::KEEP); + + // Regardless of the policy, store new impl in its storage slot. + m_backend_kernels[backend][kernel_id] = std::move(kernel_impl); + } + + /** + * @brief Lists all backends which are included into package + * + * @return vector of backends + */ + std::vector backends() const; + + // TODO: Doxygen bug -- it wants me to place this comment + // here, not below. + /** + * @brief Create a new package based on `lhs` and `rhs`, + * with unity policy defined by `policy`. + * + * @param lhs "Left-hand-side" package in the process + * @param rhs "Right-hand-side" package in the process + * @param policy Unite policy which is used in case of conflicts + * -- when the same kernel API is implemented in both packages by + * different backends; cv::unite_policy::KEEP keeps both + * implementation in the resulting package, while + * cv::unite_policy::REPLACE gives precedence two kernels from + * "Right-hand-side". + * + * @return a new kernel package. + */ + friend GAPI_EXPORTS GKernelPackage combine(const GKernelPackage &lhs, + const GKernelPackage &rhs, + const cv::unite_policy policy); + }; + + /** + * @brief Create a kernel package object containing kernels + * specified in variadic template argument. + * + * In G-API, kernel implementations are _types_. Every backend has + * its own kernel API (like GAPI_OCV_KERNEL() and + * GAPI_FLUID_KERNEL()) but all of that APIs define a new type for + * each kernel implementation. + * + * Use this function to pass kernel implementations (defined in + * either way) to the system. Example: + * + * @snippet modules/gapi/samples/api_ref_snippets.cpp kernels_snippet + * + * Note that kernels() itself is a function returning object, not + * a type, so having `()` at the end is important -- it must be a + * function call. + */ + template GKernelPackage kernels() + { + GKernelPackage pkg; + + // For those who wonder - below is a trick to call a number of + // methods based on parameter pack (zeroes just help hiding these + // calls into a sequence which helps to expand this parameter pack). + // Just note that `f(),a` always equals to `a` (with f() called!) + // and parentheses are used to hide function call in the expanded sequence. + // Leading 0 helps to handle case when KK is an empty list (kernels<>()). + + int unused[] = { 0, (pkg.include(), 0)... }; + cv::util::suppress_unused_warning(unused); + return pkg; + }; + + /** @} */ + + GAPI_EXPORTS GKernelPackage combine(const GKernelPackage &lhs, + const GKernelPackage &rhs, + const cv::unite_policy policy); +} // namespace gapi + +namespace detail +{ + template<> struct CompileArgTag + { + static const char* tag() { return "gapi.kernel_package"; } + }; + template<> struct CompileArgTag + { + static const char* tag() { return "gapi.lookup_order"; } + }; +} // namespace detail +} // namespace cv + +#endif // OPENCV_GAPI_GKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gmat.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gmat.hpp new file mode 100644 index 0000000..b6dbf4f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gmat.hpp @@ -0,0 +1,149 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GMAT_HPP +#define OPENCV_GAPI_GMAT_HPP + +#include +#include // std::shared_ptr + +#include +#include // GShape + +#include "opencv2/gapi/own/types.hpp" // cv::gapi::own::Size +#include "opencv2/gapi/own/convert.hpp" // to_own +#include "opencv2/gapi/own/assert.hpp" + +// TODO GAPI_EXPORTS or so +namespace cv +{ +// Forward declaration; GNode and GOrigin are an internal +// (user-inaccessible) classes. +class GNode; +struct GOrigin; + +/** \addtogroup gapi_data_objects + * @{ + * + * @brief Data-representing objects which can be used to build G-API + * expressions. + */ + +class GAPI_EXPORTS GMat +{ +public: + GMat(); // Empty constructor + GMat(const GNode &n, std::size_t out); // Operation result constructor + + GOrigin& priv(); // Internal use only + const GOrigin& priv() const; // Internal use only + +private: + std::shared_ptr m_priv; +}; + +/** @} */ + +/** + * \addtogroup gapi_meta_args + * @{ + */ +struct GAPI_EXPORTS GMatDesc +{ + // FIXME: Default initializers in C++14 + int depth; + int chan; + cv::gapi::own::Size size; // NB.: no multi-dimensional cases covered yet + + inline bool operator== (const GMatDesc &rhs) const + { + return depth == rhs.depth && chan == rhs.chan && size == rhs.size; + } + + inline bool operator!= (const GMatDesc &rhs) const + { + return !(*this == rhs); + } + + // Meta combinator: return a new GMatDesc which differs in size by delta + // (all other fields are taken unchanged from this GMatDesc) + // FIXME: a better name? + GMatDesc withSizeDelta(cv::gapi::own::Size delta) const + { + GMatDesc desc(*this); + desc.size += delta; + return desc; + } +#if !defined(GAPI_STANDALONE) + GMatDesc withSizeDelta(cv::Size delta) const + { + return withSizeDelta(to_own(delta)); + } + + GMatDesc withSize(cv::Size sz) const + { + return withSize(to_own(sz)); + } +#endif // !defined(GAPI_STANDALONE) + // Meta combinator: return a new GMatDesc which differs in size by delta + // (all other fields are taken unchanged from this GMatDesc) + // + // This is an overload. + GMatDesc withSizeDelta(int dx, int dy) const + { + return withSizeDelta(cv::gapi::own::Size{dx,dy}); + } + + GMatDesc withSize(cv::gapi::own::Size sz) const + { + GMatDesc desc(*this); + desc.size = sz; + return desc; + } + + // Meta combinator: return a new GMatDesc with specified data depth. + // (all other fields are taken unchanged from this GMatDesc) + GMatDesc withDepth(int ddepth) const + { + GAPI_Assert(CV_MAT_CN(ddepth) == 1 || ddepth == -1); + GMatDesc desc(*this); + if (ddepth != -1) desc.depth = ddepth; + return desc; + } + + // Meta combinator: return a new GMatDesc with specified data depth + // and number of channels. + // (all other fields are taken unchanged from this GMatDesc) + GMatDesc withType(int ddepth, int dchan) const + { + GAPI_Assert(CV_MAT_CN(ddepth) == 1 || ddepth == -1); + GMatDesc desc = withDepth(ddepth); + desc.chan = dchan; + return desc; + } +}; + +static inline GMatDesc empty_gmat_desc() { return GMatDesc{-1,-1,{-1,-1}}; } + +#if !defined(GAPI_STANDALONE) +class Mat; +GAPI_EXPORTS GMatDesc descr_of(const cv::Mat &mat); +GAPI_EXPORTS GMatDesc descr_of(const cv::UMat &mat); +#endif // !defined(GAPI_STANDALONE) + +/** @} */ + +namespace gapi { namespace own { + class Mat; + GAPI_EXPORTS GMatDesc descr_of(const Mat &mat); +}}//gapi::own + +GAPI_EXPORTS std::ostream& operator<<(std::ostream& os, const cv::GMatDesc &desc); + +} // namespace cv + +#endif // OPENCV_GAPI_GMAT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gmetaarg.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gmetaarg.hpp new file mode 100644 index 0000000..abdea75 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gmetaarg.hpp @@ -0,0 +1,75 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GMETAARG_HPP +#define OPENCV_GAPI_GMETAARG_HPP + +#include +#include + +#include "opencv2/gapi/util/util.hpp" +#include "opencv2/gapi/util/variant.hpp" + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" +#include "opencv2/gapi/garray.hpp" + +namespace cv +{ +// FIXME: Rename to GMeta? +// FIXME: user shouldn't deal with it - put to detail? +// GMetaArg is an union type over descriptions of G-types which can serve as +// GComputation's in/output slots. +// +// GMetaArg objects are passed as arguments to GComputation::compile() +// to specify which data a compiled computation should be specialized on. +// For manual compile(), user must supply this metadata, in case of apply() +// this metadata is taken from arguments computation should operate on. +// +// The first type (monostate) is equal to "uninitialized"/"unresolved" meta. +using GMetaArg = util::variant + < util::monostate + , GMatDesc + , GScalarDesc + , GArrayDesc + >; +GAPI_EXPORTS std::ostream& operator<<(std::ostream& os, const GMetaArg &); + +using GMetaArgs = std::vector; + +namespace detail +{ + // These traits are used by GComputation::compile() + + // FIXME: is_constructible doesn't work as variant doesn't do any SFINAE + // in its current template constructor + + template struct is_meta_descr : std::false_type {}; + template<> struct is_meta_descr : std::true_type {}; + template<> struct is_meta_descr : std::true_type {}; + template<> struct is_meta_descr : std::true_type {}; + + template + using are_meta_descrs = all_satisfy; + + template + using are_meta_descrs_but_last = all_satisfy::type>; + +} // namespace detail + +class Mat; +class UMat; +GAPI_EXPORTS cv::GMetaArgs descr_of(const std::vector &vec); +GAPI_EXPORTS cv::GMetaArgs descr_of(const std::vector &vec); +namespace gapi { namespace own { + class Mat; + GAPI_EXPORTS cv::GMetaArgs descr_of(const std::vector &vec); +}} // namespace gapi::own + +} // namespace cv + +#endif // OPENCV_GAPI_GMETAARG_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gproto.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gproto.hpp new file mode 100644 index 0000000..7f50623 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gproto.hpp @@ -0,0 +1,120 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GPROTO_HPP +#define OPENCV_GAPI_GPROTO_HPP + +#include +#include +#include + +#include "opencv2/gapi/util/variant.hpp" + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" +#include "opencv2/gapi/garray.hpp" +#include "opencv2/gapi/garg.hpp" +#include "opencv2/gapi/gmetaarg.hpp" + +namespace cv { + +// FIXME: user shouldn't deal with it - put to detail? +// GProtoArg is an union type over G-types which can serve as +// GComputation's in/output slots. In other words, GProtoArg +// wraps any type which can serve as G-API exchange type. +// +// In Runtime, GProtoArgs are substituted with appropriate GRunArgs. +// +// GProtoArg objects are constructed in-place when user describes +// (captures) computations, user doesn't interact with these types +// directly. +using GProtoArg = util::variant + < GMat + , GScalar + , detail::GArrayU // instead of GArray + >; + +using GProtoArgs = std::vector; + +namespace detail +{ +template inline GProtoArgs packArgs(Ts... args) +{ + return GProtoArgs{ GProtoArg(wrap_gapi_helper::wrap(args))... }; +} + +} + +template +struct GIOProtoArgs +{ +public: + explicit GIOProtoArgs(const GProtoArgs& args) : m_args(args) {} + explicit GIOProtoArgs(GProtoArgs &&args) : m_args(std::move(args)) {} + + GProtoArgs m_args; +}; + +struct In_Tag{}; +struct Out_Tag{}; + +using GProtoInputArgs = GIOProtoArgs; +using GProtoOutputArgs = GIOProtoArgs; + +// Perfect forwarding +template inline GProtoInputArgs GIn(Ts&&... ts) +{ + return GProtoInputArgs(detail::packArgs(std::forward(ts)...)); +} + +template inline GProtoOutputArgs GOut(Ts&&... ts) +{ + return GProtoOutputArgs(detail::packArgs(std::forward(ts)...)); +} + +namespace detail +{ + // Extract elements form tuple + // FIXME: Someday utilize a generic tuple_to_vec<> routine + template + static GProtoOutputArgs getGOut_impl(const std::tuple& ts, detail::Seq) + { + return GProtoOutputArgs{ detail::packArgs(std::get(ts)...)}; + } +} + +template inline GProtoOutputArgs GOut(const std::tuple& ts) +{ + // TODO: think of std::forward(ts) + return detail::getGOut_impl(ts, typename detail::MkSeq::type()); +} + +// Takes rvalue as input arg +template inline GProtoOutputArgs GOut(std::tuple&& ts) +{ + // TODO: think of std::forward(ts) + return detail::getGOut_impl(ts, typename detail::MkSeq::type()); +} + +// Extract run-time arguments from node origin +// Can be used to extract constant values associated with G-objects +// (like GScalar) at graph construction time +GRunArg value_of(const GOrigin &origin); + +// Transform run-time computation arguments into a collection of metadata +// extracted from that arguments +GMetaArg GAPI_EXPORTS descr_of(const GRunArg &arg ); +GMetaArgs GAPI_EXPORTS descr_of(const GRunArgs &args); + +// Transform run-time operation result argument into metadata extracted from that argument +// Used to compare the metadata, which generated at compile time with the metadata result operation in run time +GMetaArg GAPI_EXPORTS descr_of(const GRunArgP& argp); + + +} // namespace cv + +#endif // OPENCV_GAPI_GPROTO_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/core.hpp new file mode 100644 index 0000000..f780545 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/core.hpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GPU_CORE_API_HPP +#define OPENCV_GAPI_GPU_CORE_API_HPP +/** @file +* @deprecated Use "opencv2/gapi/ocl/core.hpp" instead. +*/ + +#include "opencv2/gapi/ocl/core.hpp" + +namespace cv { +namespace gapi { +namespace core { +namespace gpu { + using namespace ocl; +} // namespace gpu +} // namespace core +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_GPU_CORE_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/ggpukernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/ggpukernel.hpp new file mode 100644 index 0000000..f41cf13 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/ggpukernel.hpp @@ -0,0 +1,18 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GGPUKERNEL_HPP +#define OPENCV_GAPI_GGPUKERNEL_HPP +/** @file +* @deprecated Use "opencv2/gapi/ocl/goclkernel.hpp" instead. +*/ + +#include "opencv2/gapi/ocl/goclkernel.hpp" +#define GAPI_GPU_KERNEL GAPI_OCL_KERNEL + + +#endif // OPENCV_GAPI_GGPUKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/imgproc.hpp new file mode 100644 index 0000000..81ae0cb --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gpu/imgproc.hpp @@ -0,0 +1,28 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GPU_IMGPROC_API_HPP +#define OPENCV_GAPI_GPU_IMGPROC_API_HPP +/** @file +* @deprecated Use "opencv2/gapi/ocl/imgproc.hpp" instead. +*/ + +#include "opencv2/gapi/ocl/imgproc.hpp" + + +namespace cv { +namespace gapi { +namespace imgproc { +namespace gpu { + using namespace ocl; +} // namespace gpu +} // namespace imgproc +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_GPU_IMGPROC_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gscalar.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gscalar.hpp new file mode 100644 index 0000000..dd1205b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gscalar.hpp @@ -0,0 +1,83 @@ +// This file is part of OpenCV project. + +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GSCALAR_HPP +#define OPENCV_GAPI_GSCALAR_HPP + +#include + +#include +#include // GShape +#include +#include "opencv2/gapi/own/scalar.hpp" + +namespace cv +{ +// Forward declaration; GNode and GOrigin are an internal +// (user-inaccessible) classes. +class GNode; +struct GOrigin; + +/** \addtogroup gapi_data_objects + * @{ + */ + +class GAPI_EXPORTS GScalar +{ +public: + GScalar(); // Empty constructor + explicit GScalar(const cv::gapi::own::Scalar& s); // Constant value constructor from cv::gapi::own::Scalar + explicit GScalar(cv::gapi::own::Scalar&& s); // Constant value move-constructor from cv::gapi::own::Scalar +#if !defined(GAPI_STANDALONE) + explicit GScalar(const cv::Scalar& s); // Constant value constructor from cv::Scalar +#endif // !defined(GAPI_STANDALONE) + GScalar(double v0); // Constant value constructor from double + GScalar(const GNode &n, std::size_t out); // Operation result constructor + + GOrigin& priv(); // Internal use only + const GOrigin& priv() const; // Internal use only + +private: + std::shared_ptr m_priv; +}; + +/** @} */ + +/** + * \addtogroup gapi_meta_args + * @{ + */ +struct GScalarDesc +{ + // NB.: right now it is empty + + inline bool operator== (const GScalarDesc &) const + { + return true; // NB: implement this method if GScalar meta appears + } + + inline bool operator!= (const GScalarDesc &rhs) const + { + return !(*this == rhs); + } +}; + +static inline GScalarDesc empty_scalar_desc() { return GScalarDesc(); } + +#if !defined(GAPI_STANDALONE) +GAPI_EXPORTS GScalarDesc descr_of(const cv::Scalar &scalar); +#endif // !defined(GAPI_STANDALONE) +/** @} */ + +GAPI_EXPORTS GScalarDesc descr_of(const cv::gapi::own::Scalar &scalar); + +std::ostream& operator<<(std::ostream& os, const cv::GScalarDesc &desc); + +} // namespace cv + +#endif // OPENCV_GAPI_GSCALAR_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gtype_traits.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gtype_traits.hpp new file mode 100644 index 0000000..d05e02e --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gtype_traits.hpp @@ -0,0 +1,152 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GTYPE_TRAITS_HPP +#define OPENCV_GAPI_GTYPE_TRAITS_HPP + +#include +#include + +#include +#include +#include +#include +#include + +namespace cv +{ +namespace detail +{ + // FIXME: These traits and enum and possible numerous switch(kind) + // block may be replaced with a special Handler object or with + // a double dispatch + enum class ArgKind: int + { + OPAQUE, // Unknown, generic, opaque-to-GAPI data type - STATIC + GOBJREF, // reference to object + GMAT, // a cv::GMat + GSCALAR, // a cv::GScalar + GARRAY, // a cv::GArrayU (note - exactly GArrayU, not GArray!) + }; + + // Describe G-API types (G-types) with traits. Mostly used by + // cv::GArg to store meta information about types passed into + // operation arguments. Please note that cv::GComputation is + // defined on GProtoArgs, not GArgs! + template struct GTypeTraits; + template struct GTypeTraits + { + static constexpr const ArgKind kind = ArgKind::OPAQUE; + }; + template<> struct GTypeTraits + { + static constexpr const ArgKind kind = ArgKind::GMAT; + static constexpr const GShape shape = GShape::GMAT; + }; + template<> struct GTypeTraits + { + static constexpr const ArgKind kind = ArgKind::GSCALAR; + static constexpr const GShape shape = GShape::GSCALAR; + }; + template struct GTypeTraits > + { + static constexpr const ArgKind kind = ArgKind::GARRAY; + static constexpr const GShape shape = GShape::GARRAY; + using host_type = std::vector; + using strip_type = cv::detail::VectorRef; + static cv::detail::GArrayU wrap_value(const cv::GArray &t) { return t.strip();} + static cv::detail::VectorRef wrap_in (const std::vector &t) { return detail::VectorRef(t); } + static cv::detail::VectorRef wrap_out ( std::vector &t) { return detail::VectorRef(t); } + }; + + // Tests if Trait for type T requires extra marshalling ("custom wrap") or not. + // If Traits has wrap_value() defined, it does. + template struct has_custom_wrap + { + template class check; + template static std::true_type test(check::wrap_value)> *); + template static std::false_type test(...); + using type = decltype(test(nullptr)); + static const constexpr bool value = std::is_same(nullptr))>::value; + }; + + // Resolve a Host type back to its associated G-Type. + // FIXME: Probably it can be avoided + template struct GTypeOf; +#if !defined(GAPI_STANDALONE) + template<> struct GTypeOf { using type = cv::GMat; }; + template<> struct GTypeOf { using type = cv::GScalar; }; +#endif // !defined(GAPI_STANDALONE) + template<> struct GTypeOf { using type = cv::GMat; }; + template<> struct GTypeOf { using type = cv::GScalar; }; + template struct GTypeOf > { using type = cv::GArray; }; + template using g_type_of_t = typename GTypeOf::type; + + // Marshalling helper for G-types and its Host types. Helps G-API + // to store G types in internal generic containers for further + // processing. Implements the following callbacks: + // + // * wrap() - converts user-facing G-type into an internal one + // for internal storage. + // Used when G-API operation is instantiated (G::on(), + // etc) during expressing a pipeline. Mostly returns input + // value "as is" except the case when G-type is a template. For + // template G-classes, calls custom wrap() from Traits. + // The value returned by wrap() is then wrapped into GArg() and + // stored in G-API metadata. + // + // Example: + // - cv::GMat arguments are passed as-is. + // - integers, pointers, STL containers, user types are passed as-is. + // - cv::GArray is converted to cv::GArrayU. + // + // * wrap_in() / wrap_out() - convert Host type associated with + // G-type to internal representation type. + // + // - For "simple" (non-template) G-types, returns value as-is. + // Example: cv::GMat has host type cv::Mat, when user passes a + // cv::Mat, system stores it internally as cv::Mat. + // + // - For "complex" (template) G-types, utilizes custom + // wrap_in()/wrap_out() as described in Traits. + // Example: cv::GArray has host type std::vector, when + // user passes a std::vector, system stores it + // internally as VectorRef (with stripped away). + template struct WrapValue + { + static auto wrap(const T& t) -> + typename std::remove_reference::type + { + return static_cast::type>(t); + } + + template static U wrap_in (const U &u) { return u; } + template static U* wrap_out(U &u) { return &u; } + }; + template struct WrapValue::value>::type> + { + static auto wrap(const T& t) -> decltype(GTypeTraits::wrap_value(t)) + { + return GTypeTraits::wrap_value(t); + } + template static auto wrap_in (const U &u) -> typename GTypeTraits::strip_type + { + return GTypeTraits::wrap_in(u); + } + template static auto wrap_out(U &u) -> typename GTypeTraits::strip_type + { + return GTypeTraits::wrap_out(u); + } + }; + + template using wrap_gapi_helper = WrapValue::type>; + template using wrap_host_helper = WrapValue >::type>; + +} // namespace detail +} // namespace cv + +#endif // OPENCV_GAPI_GTYPE_TRAITS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/gtyped.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/gtyped.hpp new file mode 100644 index 0000000..a966f26 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/gtyped.hpp @@ -0,0 +1,187 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GTYPED_HPP +#define OPENCV_GAPI_GTYPED_HPP +#if !defined(GAPI_STANDALONE) + +#include + +#include "opencv2/gapi/gcomputation.hpp" +#include "opencv2/gapi/gcompiled.hpp" +#include "opencv2/gapi/gproto.hpp" +#include "opencv2/gapi/gcommon.hpp" + +namespace cv { + +namespace detail +{ + // FIXME: How to prevent coolhackers from extending it by their own types? + // FIXME: ...Should we care? + template struct ProtoToParam; + template<> struct ProtoToParam { using type = cv::Mat; }; + template<> struct ProtoToParam { using type = cv::Scalar; }; + template struct ProtoToParam > { using type = std::vector; }; + template using ProtoToParamT = typename ProtoToParam::type; + + template struct ProtoToMeta; + template<> struct ProtoToMeta { using type = cv::GMatDesc; }; + template<> struct ProtoToMeta { using type = cv::GScalarDesc; }; + template struct ProtoToMeta > { using type = cv::GArrayDesc; }; + template using ProtoToMetaT = typename ProtoToMeta::type; + + //workaround for MSVC 19.0 bug + template + auto make_default()->decltype(T{}) {return {};} +}; // detail + +template class GComputationT; + +// Single return value implementation +template class GComputationT +{ +public: + typedef std::function Gen; + + class GCompiledT + { + private: + friend class GComputationT; + + cv::GCompiled m_comp; + + explicit GCompiledT(const cv::GCompiled &comp) : m_comp(comp) {} + + public: + GCompiledT() {} + + void operator()(detail::ProtoToParamT... inArgs, + detail::ProtoToParamT &outArg) + { + m_comp(cv::gin(inArgs...), cv::gout(outArg)); + } + + explicit operator bool() const + { + return static_cast(m_comp); + } + }; + +private: + typedef std::pair Captured; + + Captured capture(const Gen& g, Args... args) + { + return Captured(g(args...), cv::GIn(args...)); + } + + Captured m_capture; + cv::GComputation m_comp; + +public: + GComputationT(const Gen &generator) + : m_capture(capture(generator, detail::make_default()...)) + , m_comp(cv::GProtoInputArgs(std::move(m_capture.second)), + cv::GOut(m_capture.first)) + { + } + + void apply(detail::ProtoToParamT... inArgs, + detail::ProtoToParamT &outArg) + { + m_comp.apply(cv::gin(inArgs...), cv::gout(outArg)); + } + + GCompiledT compile(detail::ProtoToMetaT... inDescs) + { + GMetaArgs inMetas = { GMetaArg(inDescs)... }; + return GCompiledT(m_comp.compile(std::move(inMetas), GCompileArgs())); + } + + GCompiledT compile(detail::ProtoToMetaT... inDescs, GCompileArgs &&args) + { + GMetaArgs inMetas = { GMetaArg(inDescs)... }; + return GCompiledT(m_comp.compile(std::move(inMetas), std::move(args))); + } +}; + +// Multiple (fixed) return value implementation. FIXME: How to avoid copy-paste? +template class GComputationT(Args...)> +{ +public: + typedef std::function(Args...)> Gen; + + class GCompiledT + { + private: + friend class GComputationT(Args...)>; + + cv::GCompiled m_comp; + explicit GCompiledT(const cv::GCompiled &comp) : m_comp(comp) {} + + public: + GCompiledT() {} + + void operator()(detail::ProtoToParamT... inArgs, + detail::ProtoToParamT&... outArgs) + { + m_comp(cv::gin(inArgs...), cv::gout(outArgs...)); + } + + explicit operator bool() const + { + return static_cast(m_comp); + } + }; + +private: + typedef std::pair Captured; + + template + Captured capture(GProtoArgs &&args, const std::tuple &rr, detail::Seq) + { + return Captured(cv::GOut(std::get(rr)...).m_args, args); + } + + Captured capture(const Gen& g, Args... args) + { + return capture(cv::GIn(args...).m_args, g(args...), typename detail::MkSeq::type()); + } + + Captured m_capture; + cv::GComputation m_comp; + +public: + GComputationT(const Gen &generator) + : m_capture(capture(generator, detail::make_default()...)) + , m_comp(cv::GProtoInputArgs(std::move(m_capture.second)), + cv::GProtoOutputArgs(std::move(m_capture.first))) + { + } + + void apply(detail::ProtoToParamT... inArgs, + detail::ProtoToParamT&... outArgs) + { + m_comp.apply(cv::gin(inArgs...), cv::gout(outArgs...)); + } + + GCompiledT compile(detail::ProtoToMetaT... inDescs) + { + GMetaArgs inMetas = { GMetaArg(inDescs)... }; + return GCompiledT(m_comp.compile(std::move(inMetas), GCompileArgs())); + } + + GCompiledT compile(detail::ProtoToMetaT... inDescs, GCompileArgs &&args) + { + GMetaArgs inMetas = { GMetaArg(inDescs)... }; + return GCompiledT(m_comp.compile(std::move(inMetas), std::move(args))); + } +}; + +} // namespace cv +#endif // !defined(GAPI_STANDALONE) +#endif // OPENCV_GAPI_GTYPED_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/imgproc.hpp new file mode 100644 index 0000000..db9ac46 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/imgproc.hpp @@ -0,0 +1,791 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_IMGPROC_HPP +#define OPENCV_GAPI_IMGPROC_HPP + +#include "opencv2/imgproc.hpp" + +#include // std::tuple + +#include "opencv2/gapi/gkernel.hpp" +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" + + +/** \defgroup gapi_imgproc G-API image processing functionality +@{ + @defgroup gapi_filters Graph API: Image filters + @defgroup gapi_colorconvert Graph API: Converting image from one color space to another +@} + */ + +namespace cv { namespace gapi { + +namespace imgproc { + using GMat2 = std::tuple; + using GMat3 = std::tuple; // FIXME: how to avoid this? + + G_TYPED_KERNEL(GFilter2D, ,"org.opencv.imgproc.filters.filter2D") { + static GMatDesc outMeta(GMatDesc in, int ddepth, Mat, Point, Scalar, int, Scalar) { + return in.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GSepFilter, , "org.opencv.imgproc.filters.sepfilter") { + static GMatDesc outMeta(GMatDesc in, int ddepth, Mat, Mat, Point, Scalar, int, Scalar) { + return in.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GBoxFilter, , "org.opencv.imgproc.filters.boxfilter") { + static GMatDesc outMeta(GMatDesc in, int ddepth, Size, Point, bool, int, Scalar) { + return in.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL(GBlur, , "org.opencv.imgproc.filters.blur"){ + static GMatDesc outMeta(GMatDesc in, Size, Point, int, Scalar) { + return in; + } + }; + + G_TYPED_KERNEL(GGaussBlur, , "org.opencv.imgproc.filters.gaussianBlur") { + static GMatDesc outMeta(GMatDesc in, Size, double, double, int, Scalar) { + return in; + } + }; + + G_TYPED_KERNEL(GMedianBlur, , "org.opencv.imgproc.filters.medianBlur") { + static GMatDesc outMeta(GMatDesc in, int) { + return in; + } + }; + + G_TYPED_KERNEL(GErode, , "org.opencv.imgproc.filters.erode") { + static GMatDesc outMeta(GMatDesc in, Mat, Point, int, int, Scalar) { + return in; + } + }; + + G_TYPED_KERNEL(GDilate, , "org.opencv.imgproc.filters.dilate") { + static GMatDesc outMeta(GMatDesc in, Mat, Point, int, int, Scalar) { + return in; + } + }; + + G_TYPED_KERNEL(GSobel, , "org.opencv.imgproc.filters.sobel") { + static GMatDesc outMeta(GMatDesc in, int ddepth, int, int, int, double, double, int, Scalar) { + return in.withDepth(ddepth); + } + }; + + G_TYPED_KERNEL_M(GSobelXY, , "org.opencv.imgproc.filters.sobelxy") { + static std::tuple outMeta(GMatDesc in, int ddepth, int, int, double, double, int, Scalar) { + return std::make_tuple(in.withDepth(ddepth), in.withDepth(ddepth)); + } + }; + + G_TYPED_KERNEL(GEqHist, , "org.opencv.imgproc.equalizeHist"){ + static GMatDesc outMeta(GMatDesc in) { + return in.withType(CV_8U, 1); + } + }; + + G_TYPED_KERNEL(GCanny, , "org.opencv.imgproc.canny"){ + static GMatDesc outMeta(GMatDesc in, double, double, int, bool) { + return in.withType(CV_8U, 1); + } + }; + + G_TYPED_KERNEL(GRGB2YUV, , "org.opencv.imgproc.colorconvert.rgb2yuv") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GYUV2RGB, , "org.opencv.imgproc.colorconvert.yuv2rgb") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GNV12toRGB, , "org.opencv.imgproc.colorconvert.nv12torgb") { + static GMatDesc outMeta(GMatDesc in_y, GMatDesc in_uv) { + GAPI_Assert(in_y.chan == 1); + GAPI_Assert(in_uv.chan == 2); + GAPI_Assert(in_y.depth == CV_8U); + GAPI_Assert(in_uv.depth == CV_8U); + // UV size should be aligned with Y + GAPI_Assert(in_y.size.width == 2 * in_uv.size.width); + GAPI_Assert(in_y.size.height == 2 * in_uv.size.height); + return in_y.withType(CV_8U, 3); // type will be CV_8UC3; + } + }; + + G_TYPED_KERNEL(GNV12toBGR, , "org.opencv.imgproc.colorconvert.nv12tobgr") { + static GMatDesc outMeta(GMatDesc in_y, GMatDesc in_uv) { + GAPI_Assert(in_y.chan == 1); + GAPI_Assert(in_uv.chan == 2); + GAPI_Assert(in_y.depth == CV_8U); + GAPI_Assert(in_uv.depth == CV_8U); + // UV size should be aligned with Y + GAPI_Assert(in_y.size.width == 2 * in_uv.size.width); + GAPI_Assert(in_y.size.height == 2 * in_uv.size.height); + return in_y.withType(CV_8U, 3); // type will be CV_8UC3; + } + }; + + G_TYPED_KERNEL(GRGB2Lab, , "org.opencv.imgproc.colorconvert.rgb2lab") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GBGR2LUV, , "org.opencv.imgproc.colorconvert.bgr2luv") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GLUV2BGR, , "org.opencv.imgproc.colorconvert.luv2bgr") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GYUV2BGR, , "org.opencv.imgproc.colorconvert.yuv2bgr") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GBGR2YUV, , "org.opencv.imgproc.colorconvert.bgr2yuv") { + static GMatDesc outMeta(GMatDesc in) { + return in; // type still remains CV_8UC3; + } + }; + + G_TYPED_KERNEL(GRGB2Gray, , "org.opencv.imgproc.colorconvert.rgb2gray") { + static GMatDesc outMeta(GMatDesc in) { + return in.withType(CV_8U, 1); + } + }; + + G_TYPED_KERNEL(GRGB2GrayCustom, , "org.opencv.imgproc.colorconvert.rgb2graycustom") { + static GMatDesc outMeta(GMatDesc in, float, float, float) { + return in.withType(CV_8U, 1); + } + }; + + G_TYPED_KERNEL(GBGR2Gray, , "org.opencv.imgproc.colorconvert.bgr2gray") { + static GMatDesc outMeta(GMatDesc in) { + return in.withType(CV_8U, 1); + } + }; +} + + +//! @addtogroup gapi_filters +//! @{ +/** @brief Applies a separable linear filter to a matrix(image). + +The function applies a separable linear filter to the matrix. That is, first, every row of src is +filtered with the 1D kernel kernelX. Then, every column of the result is filtered with the 1D +kernel kernelY. The final result is returned. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note In case of floating-point computation, rounding to nearest even is procedeed +if hardware supports it (if not - to nearest value). + +@note Function textual ID is "org.opencv.imgproc.filters.sepfilter" +@param src Source image. +@param ddepth desired depth of the destination image (the following combinations of src.depth() and ddepth are supported: + + src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64F + src.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64F + src.depth() = CV_32F, ddepth = -1/CV_32F/CV_64F + src.depth() = CV_64F, ddepth = -1/CV_64F + +when ddepth=-1, the output image will have the same depth as the source) +@param kernelX Coefficients for filtering each row. +@param kernelY Coefficients for filtering each column. +@param anchor Anchor position within the kernel. The default value \f$(-1,-1)\f$ means that the anchor +is at the kernel center. +@param delta Value added to the filtered results before storing them. +@param borderType Pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa boxFilter, gaussianBlur, medianBlur + */ +GAPI_EXPORTS GMat sepFilter(const GMat& src, int ddepth, const Mat& kernelX, const Mat& kernelY, const Point& anchor /*FIXME: = Point(-1,-1)*/, + const Scalar& delta /*FIXME = GScalar(0)*/, int borderType = BORDER_DEFAULT, + const Scalar& borderValue = Scalar(0)); + +/** @brief Convolves an image with the kernel. + +The function applies an arbitrary linear filter to an image. When +the aperture is partially outside the image, the function interpolates outlier pixel values +according to the specified border mode. + +The function does actually compute correlation, not the convolution: + +\f[\texttt{dst} (x,y) = \sum _{ \stackrel{0\leq x' < \texttt{kernel.cols},}{0\leq y' < \texttt{kernel.rows}} } \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\f] + +That is, the kernel is not mirrored around the anchor point. If you need a real convolution, flip +the kernel using flip and set the new anchor to `(kernel.cols - anchor.x - 1, kernel.rows - +anchor.y - 1)`. + +Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +Output image must have the same size and number of channels an input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.filter2D" + +@param src input image. +@param ddepth desired depth of the destination image +@param kernel convolution kernel (or rather a correlation kernel), a single-channel floating point +matrix; if you want to apply different kernels to different channels, split the image into +separate color planes using split and process them individually. +@param anchor anchor of the kernel that indicates the relative position of a filtered point within +the kernel; the anchor should lie within the kernel; default value (-1,-1) means that the anchor +is at the kernel center. +@param delta optional value added to the filtered pixels before storing them in dst. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa sepFilter + */ +GAPI_EXPORTS GMat filter2D(const GMat& src, int ddepth, const Mat& kernel, const Point& anchor = Point(-1,-1), const Scalar& delta = Scalar(0), + int borderType = BORDER_DEFAULT, const Scalar& borderValue = Scalar(0)); + + +/** @brief Blurs an image using the box filter. + +The function smooths an image using the kernel: + +\f[\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\f] + +where + +\f[\alpha = \fork{\frac{1}{\texttt{ksize.width*ksize.height}}}{when \texttt{normalize=true}}{1}{otherwise}\f] + +Unnormalized box filter is useful for computing various integral characteristics over each pixel +neighborhood, such as covariance matrices of image derivatives (used in dense optical flow +algorithms, and so on). If you need to compute pixel sums over variable-size windows, use cv::integral. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.boxfilter" + +@param src Source image. +@param dtype the output image depth (-1 to set the input image data type). +@param ksize blurring kernel size. +@param anchor Anchor position within the kernel. The default value \f$(-1,-1)\f$ means that the anchor +is at the kernel center. +@param normalize flag, specifying whether the kernel is normalized by its area or not. +@param borderType Pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa sepFilter, gaussianBlur, medianBlur, integral + */ +GAPI_EXPORTS GMat boxFilter(const GMat& src, int dtype, const Size& ksize, const Point& anchor = Point(-1,-1), + bool normalize = true, int borderType = BORDER_DEFAULT, + const Scalar& borderValue = Scalar(0)); + +/** @brief Blurs an image using the normalized box filter. + +The function smooths an image using the kernel: + +\f[\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\f] + +The call `blur(src, dst, ksize, anchor, borderType)` is equivalent to `boxFilter(src, dst, src.type(), +anchor, true, borderType)`. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.blur" + +@param src Source image. +@param ksize blurring kernel size. +@param anchor anchor point; default value Point(-1,-1) means that the anchor is at the kernel +center. +@param borderType border mode used to extrapolate pixels outside of the image, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa boxFilter, bilateralFilter, GaussianBlur, medianBlur + */ +GAPI_EXPORTS GMat blur(const GMat& src, const Size& ksize, const Point& anchor = Point(-1,-1), + int borderType = BORDER_DEFAULT, const Scalar& borderValue = Scalar(0)); + + +//GAPI_EXPORTS_W void blur( InputArray src, OutputArray dst, + // Size ksize, Point anchor = Point(-1,-1), + // int borderType = BORDER_DEFAULT ); + + +/** @brief Blurs an image using a Gaussian filter. + +The function filter2Ds the source image with the specified Gaussian kernel. +Output image must have the same type and number of channels an input image. + +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.gaussianBlur" + +@param src input image; +@param ksize Gaussian kernel size. ksize.width and ksize.height can differ but they both must be +positive and odd. Or, they can be zero's and then they are computed from sigma. +@param sigmaX Gaussian kernel standard deviation in X direction. +@param sigmaY Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be +equal to sigmaX, if both sigmas are zeros, they are computed from ksize.width and ksize.height, +respectively (see cv::getGaussianKernel for details); to fully control the result regardless of +possible future modifications of all this semantics, it is recommended to specify all of ksize, +sigmaX, and sigmaY. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa sepFilter, boxFilter, medianBlur + */ +GAPI_EXPORTS GMat gaussianBlur(const GMat& src, const Size& ksize, double sigmaX, double sigmaY = 0, + int borderType = BORDER_DEFAULT, const Scalar& borderValue = Scalar(0)); + +/** @brief Blurs an image using the median filter. + +The function smoothes an image using the median filter with the \f$\texttt{ksize} \times +\texttt{ksize}\f$ aperture. Each channel of a multi-channel image is processed independently. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. +The median filter uses cv::BORDER_REPLICATE internally to cope with border pixels, see cv::BorderTypes + +@note Function textual ID is "org.opencv.imgproc.filters.medianBlur" + +@param src input matrix (image) +@param ksize aperture linear size; it must be odd and greater than 1, for example: 3, 5, 7 ... +@sa boxFilter, gaussianBlur + */ +GAPI_EXPORTS GMat medianBlur(const GMat& src, int ksize); + +/** @brief Erodes an image by using a specific structuring element. + +The function erodes the source image using the specified structuring element that determines the +shape of a pixel neighborhood over which the minimum is taken: + +\f[\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f] + +Erosion can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently. +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, and @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.erode" + +@param src input image +@param kernel structuring element used for erosion; if `element=Mat()`, a `3 x 3` rectangular +structuring element is used. Kernel can be created using getStructuringElement. +@param anchor position of the anchor within the element; default value (-1, -1) means that the +anchor is at the element center. +@param iterations number of times erosion is applied. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of a constant border +@sa dilate + */ +GAPI_EXPORTS GMat erode(const GMat& src, const Mat& kernel, const Point& anchor = Point(-1,-1), int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue()); + +/** @brief Erodes an image by using 3 by 3 rectangular structuring element. + +The function erodes the source image using the rectangular structuring element with rectangle center as an anchor. +Erosion can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently. +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, and @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@param src input image +@param iterations number of times erosion is applied. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of a constant border +@sa erode, dilate3x3 + */ +GAPI_EXPORTS GMat erode3x3(const GMat& src, int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue()); + +/** @brief Dilates an image by using a specific structuring element. + +The function dilates the source image using the specified structuring element that determines the +shape of a pixel neighborhood over which the maximum is taken: +\f[\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f] + +Dilation can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently. +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, and @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.dilate" + +@param src input image. +@param kernel structuring element used for dilation; if elemenat=Mat(), a 3 x 3 rectangular +structuring element is used. Kernel can be created using getStructuringElement +@param anchor position of the anchor within the element; default value (-1, -1) means that the +anchor is at the element center. +@param iterations number of times dilation is applied. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of a constant border +@sa erode, morphologyEx, getStructuringElement + */ +GAPI_EXPORTS GMat dilate(const GMat& src, const Mat& kernel, const Point& anchor = Point(-1,-1), int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue()); + +/** @brief Dilates an image by using 3 by 3 rectangular structuring element. + +The function dilates the source image using the specified structuring element that determines the +shape of a pixel neighborhood over which the maximum is taken: +\f[\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f] + +Dilation can be applied several (iterations) times. In case of multi-channel images, each channel is processed independently. +Supported input matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref CV_16SC1, and @ref CV_32FC1. +Output image must have the same type, size, and number of channels as the input image. +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.dilate" + +@param src input image. +@param iterations number of times dilation is applied. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of a constant border +@sa dilate, erode3x3 + */ + +GAPI_EXPORTS GMat dilate3x3(const GMat& src, int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue()); + +/** @brief Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. + +In all cases except one, the \f$\texttt{ksize} \times \texttt{ksize}\f$ separable kernel is used to +calculate the derivative. When \f$\texttt{ksize = 1}\f$, the \f$3 \times 1\f$ or \f$1 \times 3\f$ +kernel is used (that is, no Gaussian smoothing is done). `ksize = 1` can only be used for the first +or the second x- or y- derivatives. + +There is also the special value `ksize = FILTER_SCHARR (-1)` that corresponds to the \f$3\times3\f$ Scharr +filter that may give more accurate results than the \f$3\times3\f$ Sobel. The Scharr aperture is + +\f[\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\f] + +for the x-derivative, or transposed for the y-derivative. + +The function calculates an image derivative by convolving the image with the appropriate kernel: + +\f[\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\f] + +The Sobel operators combine Gaussian smoothing and differentiation, so the result is more or less +resistant to the noise. Most often, the function is called with ( xorder = 1, yorder = 0, ksize = 3) +or ( xorder = 0, yorder = 1, ksize = 3) to calculate the first x- or y- image derivative. The first +case corresponds to a kernel of: + +\f[\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\f] + +The second case corresponds to a kernel of: + +\f[\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\f] + +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.sobel" + +@param src input image. +@param ddepth output image depth, see @ref filter_depths "combinations"; in the case of + 8-bit input images it will result in truncated derivatives. +@param dx order of the derivative x. +@param dy order of the derivative y. +@param ksize size of the extended Sobel kernel; it must be odd. +@param scale optional scale factor for the computed derivative values; by default, no scaling is +applied (see cv::getDerivKernels for details). +@param delta optional delta value that is added to the results prior to storing them in dst. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa filter2D, gaussianBlur, cartToPolar + */ +GAPI_EXPORTS GMat Sobel(const GMat& src, int ddepth, int dx, int dy, int ksize = 3, + double scale = 1, double delta = 0, + int borderType = BORDER_DEFAULT, + const Scalar& borderValue = Scalar(0)); + +/** @brief Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. + +In all cases except one, the \f$\texttt{ksize} \times \texttt{ksize}\f$ separable kernel is used to +calculate the derivative. When \f$\texttt{ksize = 1}\f$, the \f$3 \times 1\f$ or \f$1 \times 3\f$ +kernel is used (that is, no Gaussian smoothing is done). `ksize = 1` can only be used for the first +or the second x- or y- derivatives. + +There is also the special value `ksize = FILTER_SCHARR (-1)` that corresponds to the \f$3\times3\f$ Scharr +filter that may give more accurate results than the \f$3\times3\f$ Sobel. The Scharr aperture is + +\f[\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\f] + +for the x-derivative, or transposed for the y-derivative. + +The function calculates an image derivative by convolving the image with the appropriate kernel: + +\f[\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\f] + +The Sobel operators combine Gaussian smoothing and differentiation, so the result is more or less +resistant to the noise. Most often, the function is called with ( xorder = 1, yorder = 0, ksize = 3) +or ( xorder = 0, yorder = 1, ksize = 3) to calculate the first x- or y- image derivative. The first +case corresponds to a kernel of: + +\f[\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\f] + +The second case corresponds to a kernel of: + +\f[\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\f] + +@note First returned matrix correspons to dx derivative while the second one to dy. + +@note Rounding to nearest even is procedeed if hardware supports it, if not - to nearest. + +@note Function textual ID is "org.opencv.imgproc.filters.sobelxy" + +@param src input image. +@param ddepth output image depth, see @ref filter_depths "combinations"; in the case of + 8-bit input images it will result in truncated derivatives. +@param order order of the derivatives. +@param ksize size of the extended Sobel kernel; it must be odd. +@param scale optional scale factor for the computed derivative values; by default, no scaling is +applied (see cv::getDerivKernels for details). +@param delta optional delta value that is added to the results prior to storing them in dst. +@param borderType pixel extrapolation method, see cv::BorderTypes +@param borderValue border value in case of constant border type +@sa filter2D, gaussianBlur, cartToPolar + */ +GAPI_EXPORTS std::tuple SobelXY(const GMat& src, int ddepth, int order, int ksize = 3, + double scale = 1, double delta = 0, + int borderType = BORDER_DEFAULT, + const Scalar& borderValue = Scalar(0)); + +/** @brief Finds edges in an image using the Canny algorithm. + +The function finds edges in the input image and marks them in the output map edges using the +Canny algorithm. The smallest value between threshold1 and threshold2 is used for edge linking. The +largest value is used to find initial segments of strong edges. See + + +@note Function textual ID is "org.opencv.imgproc.filters.canny" + +@param image 8-bit input image. +@param threshold1 first threshold for the hysteresis procedure. +@param threshold2 second threshold for the hysteresis procedure. +@param apertureSize aperture size for the Sobel operator. +@param L2gradient a flag, indicating whether a more accurate \f$L_2\f$ norm +\f$=\sqrt{(dI/dx)^2 + (dI/dy)^2}\f$ should be used to calculate the image gradient magnitude ( +L2gradient=true ), or whether the default \f$L_1\f$ norm \f$=|dI/dx|+|dI/dy|\f$ is enough ( +L2gradient=false ). + */ +GAPI_EXPORTS GMat Canny(const GMat& image, double threshold1, double threshold2, + int apertureSize = 3, bool L2gradient = false); + +/** @brief Equalizes the histogram of a grayscale image. + +The function equalizes the histogram of the input image using the following algorithm: + +- Calculate the histogram \f$H\f$ for src . +- Normalize the histogram so that the sum of histogram bins is 255. +- Compute the integral of the histogram: +\f[H'_i = \sum _{0 \le j < i} H(j)\f] +- Transform the image using \f$H'\f$ as a look-up table: \f$\texttt{dst}(x,y) = H'(\texttt{src}(x,y))\f$ + +The algorithm normalizes the brightness and increases the contrast of the image. +@note The returned image is of the same size and type as input. + +@note Function textual ID is "org.opencv.imgproc.equalizeHist" + +@param src Source 8-bit single channel image. + */ +GAPI_EXPORTS GMat equalizeHist(const GMat& src); + +//! @} gapi_filters + +//! @addtogroup gapi_colorconvert +//! @{ +/** @brief Converts an image from RGB color space to gray-scaled. +The conventional ranges for R, G, and B channel values are 0 to 255. +Resulting gray color value computed as +\f[\texttt{dst} (I)= \texttt{0.299} * \texttt{src}(I).R + \texttt{0.587} * \texttt{src}(I).G + \texttt{0.114} * \texttt{src}(I).B \f] + +@note Function textual ID is "org.opencv.imgproc.colorconvert.rgb2gray" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC1. +@sa RGB2YUV + */ +GAPI_EXPORTS GMat RGB2Gray(const GMat& src); + +/** @overload +Resulting gray color value computed as +\f[\texttt{dst} (I)= \texttt{rY} * \texttt{src}(I).R + \texttt{gY} * \texttt{src}(I).G + \texttt{bY} * \texttt{src}(I).B \f] + +@note Function textual ID is "org.opencv.imgproc.colorconvert.rgb2graycustom" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC1. +@param rY float multiplier for R channel. +@param gY float multiplier for G channel. +@param bY float multiplier for B channel. +@sa RGB2YUV + */ +GAPI_EXPORTS GMat RGB2Gray(const GMat& src, float rY, float gY, float bY); + +/** @brief Converts an image from BGR color space to gray-scaled. +The conventional ranges for B, G, and R channel values are 0 to 255. +Resulting gray color value computed as +\f[\texttt{dst} (I)= \texttt{0.114} * \texttt{src}(I).B + \texttt{0.587} * \texttt{src}(I).G + \texttt{0.299} * \texttt{src}(I).R \f] + +@note Function textual ID is "org.opencv.imgproc.colorconvert.bgr2gray" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC1. +@sa BGR2LUV + */ +GAPI_EXPORTS GMat BGR2Gray(const GMat& src); + +/** @brief Converts an image from RGB color space to YUV color space. + +The function converts an input image from RGB color space to YUV. +The conventional ranges for R, G, and B channel values are 0 to 255. + +In case of linear transformations, the range does not matter. But in case of a non-linear +transformation, an input RGB image should be normalized to the proper value range to get the correct +results, like here, at RGB \f$\rightarrow\f$ Y\*u\*v\* transformation. +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.rgb2yuv" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. +@sa YUV2RGB, RGB2Lab +*/ +GAPI_EXPORTS GMat RGB2YUV(const GMat& src); + +/** @brief Converts an image from BGR color space to LUV color space. + +The function converts an input image from BGR color space to LUV. +The conventional ranges for B, G, and R channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.bgr2luv" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. +@sa RGB2Lab, RGB2LUV +*/ +GAPI_EXPORTS GMat BGR2LUV(const GMat& src); + +/** @brief Converts an image from LUV color space to BGR color space. + +The function converts an input image from LUV color space to BGR. +The conventional ranges for B, G, and R channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.luv2bgr" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. +@sa BGR2LUV +*/ +GAPI_EXPORTS GMat LUV2BGR(const GMat& src); + +/** @brief Converts an image from YUV color space to BGR color space. + +The function converts an input image from YUV color space to BGR. +The conventional ranges for B, G, and R channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.yuv2bgr" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. +@sa BGR2YUV +*/ +GAPI_EXPORTS GMat YUV2BGR(const GMat& src); + +/** @brief Converts an image from BGR color space to YUV color space. + +The function converts an input image from BGR color space to YUV. +The conventional ranges for B, G, and R channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.bgr2yuv" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. +@sa YUV2BGR +*/ +GAPI_EXPORTS GMat BGR2YUV(const GMat& src); + +/** @brief Converts an image from RGB color space to Lab color space. + +The function converts an input image from BGR color space to Lab. +The conventional ranges for R, G, and B channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC1. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.rgb2lab" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC1. +@sa RGB2YUV, RGB2LUV +*/ +GAPI_EXPORTS GMat RGB2Lab(const GMat& src); + +/** @brief Converts an image from YUV color space to RGB. +The function converts an input image from YUV color space to RGB. +The conventional ranges for Y, U, and V channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.yuv2rgb" + +@param src input image: 8-bit unsigned 3-channel image @ref CV_8UC3. + +@sa RGB2Lab, RGB2YUV +*/ +GAPI_EXPORTS GMat YUV2RGB(const GMat& src); + +/** @brief Converts an image from NV12 (YUV420p) color space to RGB. +The function converts an input image from NV12 color space to RGB. +The conventional ranges for Y, U, and V channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.nv12torgb" + +@param src_y input image: 8-bit unsigned 1-channel image @ref CV_8UC1. +@param src_uv input image: 8-bit unsigned 2-channel image @ref CV_8UC2. + +@sa YUV2RGB, NV12toBGR +*/ +GAPI_EXPORTS GMat NV12toRGB(const GMat& src_y, const GMat& src_uv); + +/** @brief Converts an image from NV12 (YUV420p) color space to BGR. +The function converts an input image from NV12 color space to RGB. +The conventional ranges for Y, U, and V channel values are 0 to 255. + +Output image must be 8-bit unsigned 3-channel image @ref CV_8UC3. + +@note Function textual ID is "org.opencv.imgproc.colorconvert.nv12tobgr" + +@param src_y input image: 8-bit unsigned 1-channel image @ref CV_8UC1. +@param src_uv input image: 8-bit unsigned 2-channel image @ref CV_8UC2. + +@sa YUV2BGR, NV12toRGB +*/ +GAPI_EXPORTS GMat NV12toBGR(const GMat& src_y, const GMat& src_uv); +//! @} gapi_colorconvert +} //namespace gapi +} //namespace cv + +#endif // OPENCV_GAPI_IMGPROC_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/core.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/core.hpp new file mode 100644 index 0000000..4ab85e2 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/core.hpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OCL_CORE_API_HPP +#define OPENCV_GAPI_OCL_CORE_API_HPP + +#include // GAPI_EXPORTS +#include // GKernelPackage + +namespace cv { +namespace gapi { +namespace core { +namespace ocl { + + GAPI_EXPORTS GKernelPackage kernels(); + +} // namespace ocl +} // namespace core +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_OCL_CORE_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/goclkernel.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/goclkernel.hpp new file mode 100644 index 0000000..ea2cda0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/goclkernel.hpp @@ -0,0 +1,244 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GOCLKERNEL_HPP +#define OPENCV_GAPI_GOCLKERNEL_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include + +// FIXME: namespace scheme for backends? +namespace cv { + +namespace gimpl +{ + // Forward-declare an internal class + class GOCLExecutable; +} // namespace gimpl + +namespace gapi +{ +namespace ocl +{ + /** + * \addtogroup gapi_std_backends G-API Standard backends + * @{ + */ + /** + * @brief Get a reference to OCL backend. + * + * At the moment, the OCL backend is built atop of OpenCV + * "Transparent API" (T-API), see cv::UMat for details. + * + * @sa gapi_std_backends + */ + GAPI_EXPORTS cv::gapi::GBackend backend(); + /** @} */ +} // namespace ocl +} // namespace gapi + + +// Represents arguments which are passed to a wrapped OCL function +// FIXME: put into detail? +class GAPI_EXPORTS GOCLContext +{ +public: + // Generic accessor API + template + const T& inArg(int input) { return m_args.at(input).get(); } + + // Syntax sugar + const cv::UMat& inMat(int input); + cv::UMat& outMatR(int output); // FIXME: Avoid cv::Mat m = ctx.outMatR() + + const cv::gapi::own::Scalar& inVal(int input); + cv::gapi::own::Scalar& outValR(int output); // FIXME: Avoid cv::gapi::own::Scalar s = ctx.outValR() + template std::vector& outVecR(int output) // FIXME: the same issue + { + return outVecRef(output).wref(); + } + +protected: + detail::VectorRef& outVecRef(int output); + + std::vector m_args; + std::unordered_map m_results; + + + friend class gimpl::GOCLExecutable; +}; + +class GAPI_EXPORTS GOCLKernel +{ +public: + // This function is kernel's execution entry point (does the processing work) + using F = std::function; + + GOCLKernel(); + explicit GOCLKernel(const F& f); + + void apply(GOCLContext &ctx); + +protected: + F m_f; +}; + +// FIXME: This is an ugly ad-hoc imlpementation. TODO: refactor + +namespace detail +{ +template struct ocl_get_in; +template<> struct ocl_get_in +{ + static cv::UMat get(GOCLContext &ctx, int idx) { return ctx.inMat(idx); } +}; +template<> struct ocl_get_in +{ + static cv::Scalar get(GOCLContext &ctx, int idx) { return to_ocv(ctx.inVal(idx)); } +}; +template struct ocl_get_in > +{ + static const std::vector& get(GOCLContext &ctx, int idx) { return ctx.inArg(idx).rref(); } +}; +template struct ocl_get_in +{ + static T get(GOCLContext &ctx, int idx) { return ctx.inArg(idx); } +}; + +struct tracked_cv_umat{ + //TODO Think if T - API could reallocate UMat to a proper size - how do we handle this ? + //tracked_cv_umat(cv::UMat& m) : r{(m)}, original_data{m.getMat(ACCESS_RW).data} {} + tracked_cv_umat(cv::UMat& m) : r{ (m) }, original_data{ nullptr } {} + cv::UMat r; + uchar* original_data; + + operator cv::UMat& (){ return r;} + void validate() const{ + //if (r.getMat(ACCESS_RW).data != original_data) + //{ + // util::throw_error + // (std::logic_error + // ("OpenCV kernel output parameter was reallocated. \n" + // "Incorrect meta data was provided ?")); + //} + + } +}; + +struct scalar_wrapper_ocl +{ + //FIXME reuse CPU (OpenCV) plugin code + scalar_wrapper_ocl(cv::gapi::own::Scalar& s) : m_s{cv::gapi::own::to_ocv(s)}, m_org_s(s) {}; + operator cv::Scalar& () { return m_s; } + void writeBack() const { m_org_s = to_own(m_s); } + + cv::Scalar m_s; + cv::gapi::own::Scalar& m_org_s; +}; + +template +void postprocess_ocl(Outputs&... outs) +{ + struct + { + void operator()(tracked_cv_umat* bm) { bm->validate(); } + void operator()(scalar_wrapper_ocl* sw) { sw->writeBack(); } + void operator()(...) { } + + } validate; + //dummy array to unfold parameter pack + int dummy[] = { 0, (validate(&outs), 0)... }; + cv::util::suppress_unused_warning(dummy); +} + +template struct ocl_get_out; +template<> struct ocl_get_out +{ + static tracked_cv_umat get(GOCLContext &ctx, int idx) + { + auto& r = ctx.outMatR(idx); + return{ r }; + } +}; +template<> struct ocl_get_out +{ + static scalar_wrapper_ocl get(GOCLContext &ctx, int idx) + { + auto& s = ctx.outValR(idx); + return{ s }; + } +}; +template struct ocl_get_out > +{ + static std::vector& get(GOCLContext &ctx, int idx) { return ctx.outVecR(idx); } +}; + +template +struct OCLCallHelper; + +// FIXME: probably can be simplified with std::apply or analogue. +template +struct OCLCallHelper, std::tuple > +{ + template + struct call_and_postprocess + { + template + static void call(Inputs&&... ins, Outputs&&... outs) + { + //not using a std::forward on outs is deliberate in order to + //cause compilation error, by tring to bind rvalue references to lvalue references + Impl::run(std::forward(ins)..., outs...); + + postprocess_ocl(outs...); + } + }; + + template + static void call_impl(GOCLContext &ctx, detail::Seq, detail::Seq) + { + //TODO: Make sure that OpenCV kernels do not reallocate memory for output parameters + //by comparing it's state (data ptr) before and after the call. + //Convert own::Scalar to cv::Scalar before call kernel and run kernel + //convert cv::Scalar to own::Scalar after call kernel and write back results + call_and_postprocess::get(ctx, IIs))...>::call(ocl_get_in::get(ctx, IIs)..., ocl_get_out::get(ctx, OIs)...); + } + + static void call(GOCLContext &ctx) + { + call_impl(ctx, + typename detail::MkSeq::type(), + typename detail::MkSeq::type()); + } +}; + +} // namespace detail + +template +class GOCLKernelImpl: public detail::OCLCallHelper +{ + using P = detail::OCLCallHelper; + +public: + using API = K; + + static cv::gapi::GBackend backend() { return cv::gapi::ocl::backend(); } + static cv::GOCLKernel kernel() { return GOCLKernel(&P::call); } +}; + +#define GAPI_OCL_KERNEL(Name, API) struct Name: public cv::GOCLKernelImpl + +} // namespace cv + +#endif // OPENCV_GAPI_GOCLKERNEL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/imgproc.hpp new file mode 100644 index 0000000..1bb5911 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/ocl/imgproc.hpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OCL_IMGPROC_API_HPP +#define OPENCV_GAPI_OCL_IMGPROC_API_HPP + +#include // GAPI_EXPORTS +#include // GKernelPackage + +namespace cv { +namespace gapi { +namespace imgproc { +namespace ocl { + + GAPI_EXPORTS GKernelPackage kernels(); + +} // namespace ocl +} // namespace imgproc +} // namespace gapi +} // namespace cv + + +#endif // OPENCV_GAPI_OCL_IMGPROC_API_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/opencv_includes.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/opencv_includes.hpp new file mode 100644 index 0000000..5acf280 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/opencv_includes.hpp @@ -0,0 +1,21 @@ +// This file is part of OpenCV project. + +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OPENCV_INCLUDES_HPP +#define OPENCV_GAPI_OPENCV_INCLUDES_HPP + +#if !defined(GAPI_STANDALONE) +# include +# include +# include +# include +#else // Without OpenCV +# include +#endif // !defined(GAPI_STANDALONE) + +#endif // OPENCV_GAPI_OPENCV_INCLUDES_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/operators.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/operators.hpp new file mode 100644 index 0000000..27a1d80 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/operators.hpp @@ -0,0 +1,69 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OPERATORS_HPP +#define OPENCV_GAPI_OPERATORS_HPP + +#include "opencv2/gapi/gmat.hpp" +#include "opencv2/gapi/gscalar.hpp" + +GAPI_EXPORTS cv::GMat operator+(const cv::GMat& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator+(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator+(const cv::GScalar& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator-(const cv::GMat& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator-(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator-(const cv::GScalar& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator*(const cv::GMat& lhs, float rhs); +GAPI_EXPORTS cv::GMat operator*(float lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator*(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator*(const cv::GScalar& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator/(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator/(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator/(const cv::GMat& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator&(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator|(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator^(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator~(const cv::GMat& lhs); + +GAPI_EXPORTS cv::GMat operator&(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator|(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator^(const cv::GScalar& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator&(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator|(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator^(const cv::GMat& lhs, const cv::GScalar& rhs); + +GAPI_EXPORTS cv::GMat operator>(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator>=(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator<(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator<=(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator==(const cv::GMat& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator!=(const cv::GMat& lhs, const cv::GMat& rhs); + +GAPI_EXPORTS cv::GMat operator>(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator>=(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator<(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator<=(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator==(const cv::GMat& lhs, const cv::GScalar& rhs); +GAPI_EXPORTS cv::GMat operator!=(const cv::GMat& lhs, const cv::GScalar& rhs); + +GAPI_EXPORTS cv::GMat operator>(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator>=(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator<(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator<=(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator==(const cv::GScalar& lhs, const cv::GMat& rhs); +GAPI_EXPORTS cv::GMat operator!=(const cv::GScalar& lhs, const cv::GMat& rhs); + + + +#endif // OPENCV_GAPI_OPERATORS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/assert.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/assert.hpp new file mode 100644 index 0000000..10ec240 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/assert.hpp @@ -0,0 +1,43 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OWN_ASSERT_HPP +#define OPENCV_GAPI_OWN_ASSERT_HPP + +#if !defined(GAPI_STANDALONE) +#include +#define GAPI_Assert CV_Assert +#define GAPI_DbgAssert CV_DbgAssert + +#else +#include +#include +#include "opencv2/gapi/util/throw.hpp" + +namespace detail +{ + inline void assert_abort(const char* str, int line, const char* file, const char* func) + { + std::stringstream ss; + ss << file << ":" << line << ": Assertion " << str << " in function " << func << " failed\n"; + cv::util::throw_error(std::logic_error(ss.str())); + } +} + +#define GAPI_Assert(expr) \ +{ if (!(expr)) ::detail::assert_abort(#expr, __LINE__, __FILE__, __func__); } + + +#ifdef NDEBUG +# define GAPI_DbgAssert(expr) +#else +# define GAPI_DbgAssert(expr) GAPI_Assert(expr) +#endif + +#endif // GAPI_STANDALONE + +#endif // OPENCV_GAPI_OWN_ASSERT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/convert.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/convert.hpp new file mode 100644 index 0000000..8c1feb4 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/convert.hpp @@ -0,0 +1,50 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OWN_CONVERT_HPP +#define OPENCV_GAPI_OWN_CONVERT_HPP + +#if !defined(GAPI_STANDALONE) + +#include +#include +#include +#include "opencv2/gapi/own/scalar.hpp" + +namespace cv +{ + inline cv::gapi::own::Mat to_own(Mat const& m) { return {m.rows, m.cols, m.type(), m.data, m.step};}; + cv::gapi::own::Mat to_own(Mat&&) = delete; + + inline cv::gapi::own::Scalar to_own(const cv::Scalar& s) { return {s[0], s[1], s[2], s[3]}; }; + + inline cv::gapi::own::Size to_own (const Size& s) { return {s.width, s.height}; }; + + inline cv::gapi::own::Rect to_own (const Rect& r) { return {r.x, r.y, r.width, r.height}; }; + + + +namespace gapi +{ +namespace own +{ + inline cv::Mat to_ocv(Mat const& m) { return {m.rows, m.cols, m.type(), m.data, m.step};}; + cv::Mat to_ocv(Mat&&) = delete; + + inline cv::Scalar to_ocv(const Scalar& s) { return {s[0], s[1], s[2], s[3]}; }; + + inline cv::Size to_ocv (const Size& s) { return cv::Size(s.width, s.height); }; + + inline cv::Rect to_ocv (const Rect& r) { return cv::Rect(r.x, r.y, r.width, r.height); }; + +} // namespace own +} // namespace gapi +} // namespace cv + +#endif // !defined(GAPI_STANDALONE) + +#endif // OPENCV_GAPI_OWN_CONVERT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/cvdefs.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/cvdefs.hpp new file mode 100644 index 0000000..e110536 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/cvdefs.hpp @@ -0,0 +1,146 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_CV_DEFS_HPP +#define OPENCV_GAPI_CV_DEFS_HPP + +#if defined(GAPI_STANDALONE) + +// Simulate OpenCV definitions taken from various +// OpenCV interface headers if G-API is built in a +// standalone mode. + +// interface.h: + +typedef unsigned char uchar; +typedef char schar; + +typedef unsigned short ushort; + +#define CV_CN_MAX 512 +#define CV_CN_SHIFT 3 +#define CV_DEPTH_MAX (1 << CV_CN_SHIFT) + + +#define CV_8U 0 +#define CV_8S 1 +#define CV_16U 2 +#define CV_16S 3 +#define CV_32S 4 +#define CV_32F 5 +#define CV_64F 6 +#define CV_USRTYPE1 7 + +#define CV_MAT_DEPTH_MASK (CV_DEPTH_MAX - 1) +#define CV_MAT_DEPTH(flags) ((flags) & CV_MAT_DEPTH_MASK) + +#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT)) +#define CV_MAKE_TYPE CV_MAKETYPE + +#define CV_8UC1 CV_MAKETYPE(CV_8U,1) +#define CV_8UC2 CV_MAKETYPE(CV_8U,2) +#define CV_8UC3 CV_MAKETYPE(CV_8U,3) +#define CV_8UC4 CV_MAKETYPE(CV_8U,4) +#define CV_8UC(n) CV_MAKETYPE(CV_8U,(n)) + +#define CV_8SC1 CV_MAKETYPE(CV_8S,1) +#define CV_8SC2 CV_MAKETYPE(CV_8S,2) +#define CV_8SC3 CV_MAKETYPE(CV_8S,3) +#define CV_8SC4 CV_MAKETYPE(CV_8S,4) +#define CV_8SC(n) CV_MAKETYPE(CV_8S,(n)) + +#define CV_16UC1 CV_MAKETYPE(CV_16U,1) +#define CV_16UC2 CV_MAKETYPE(CV_16U,2) +#define CV_16UC3 CV_MAKETYPE(CV_16U,3) +#define CV_16UC4 CV_MAKETYPE(CV_16U,4) +#define CV_16UC(n) CV_MAKETYPE(CV_16U,(n)) + +#define CV_16SC1 CV_MAKETYPE(CV_16S,1) +#define CV_16SC2 CV_MAKETYPE(CV_16S,2) +#define CV_16SC3 CV_MAKETYPE(CV_16S,3) +#define CV_16SC4 CV_MAKETYPE(CV_16S,4) +#define CV_16SC(n) CV_MAKETYPE(CV_16S,(n)) + +#define CV_32SC1 CV_MAKETYPE(CV_32S,1) +#define CV_32SC2 CV_MAKETYPE(CV_32S,2) +#define CV_32SC3 CV_MAKETYPE(CV_32S,3) +#define CV_32SC4 CV_MAKETYPE(CV_32S,4) +#define CV_32SC(n) CV_MAKETYPE(CV_32S,(n)) + +#define CV_32FC1 CV_MAKETYPE(CV_32F,1) +#define CV_32FC2 CV_MAKETYPE(CV_32F,2) +#define CV_32FC3 CV_MAKETYPE(CV_32F,3) +#define CV_32FC4 CV_MAKETYPE(CV_32F,4) +#define CV_32FC(n) CV_MAKETYPE(CV_32F,(n)) + +#define CV_64FC1 CV_MAKETYPE(CV_64F,1) +#define CV_64FC2 CV_MAKETYPE(CV_64F,2) +#define CV_64FC3 CV_MAKETYPE(CV_64F,3) +#define CV_64FC4 CV_MAKETYPE(CV_64F,4) +#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n)) + +// cvdef.h: + +#define CV_MAT_CN_MASK ((CV_CN_MAX - 1) << CV_CN_SHIFT) +#define CV_MAT_CN(flags) ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1) +#define CV_MAT_TYPE_MASK (CV_DEPTH_MAX*CV_CN_MAX - 1) +#define CV_MAT_TYPE(flags) ((flags) & CV_MAT_TYPE_MASK) +#define CV_MAT_CONT_FLAG_SHIFT 14 +#define CV_MAT_CONT_FLAG (1 << CV_MAT_CONT_FLAG_SHIFT) +#define CV_IS_MAT_CONT(flags) ((flags) & CV_MAT_CONT_FLAG) +#define CV_IS_CONT_MAT CV_IS_MAT_CONT +#define CV_SUBMAT_FLAG_SHIFT 15 +#define CV_SUBMAT_FLAG (1 << CV_SUBMAT_FLAG_SHIFT) +#define CV_IS_SUBMAT(flags) ((flags) & CV_MAT_SUBMAT_FLAG) + +///** Size of each channel item, +// 0x8442211 = 1000 0100 0100 0010 0010 0001 0001 ~ array of sizeof(arr_type_elem) */ +//#define CV_ELEM_SIZE1(type) \ +// ((((sizeof(size_t)<<28)|0x8442211) >> CV_MAT_DEPTH(type)*4) & 15) + +#define CV_MAT_TYPE(flags) ((flags) & CV_MAT_TYPE_MASK) + +/** 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */ +#define CV_ELEM_SIZE(type) \ + (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3)) + +// base.h: +namespace cv +{ +enum BorderTypes { + BORDER_CONSTANT = 0, //!< `iiiiii|abcdefgh|iiiiiii` with some specified `i` + BORDER_REPLICATE = 1, //!< `aaaaaa|abcdefgh|hhhhhhh` + BORDER_REFLECT = 2, //!< `fedcba|abcdefgh|hgfedcb` + BORDER_WRAP = 3, //!< `cdefgh|abcdefgh|abcdefg` + BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba` + BORDER_TRANSPARENT = 5, //!< `uvwxyz|abcdefgh|ijklmno` + + BORDER_REFLECT101 = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 + BORDER_DEFAULT = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 + BORDER_ISOLATED = 16 //!< do not look outside of ROI +}; +// imgproc.hpp: +enum InterpolationFlags{ + INTER_NEAREST = 0, + INTER_LINEAR = 1, + INTER_CUBIC = 2, + INTER_AREA = 3, + INTER_LANCZOS4 = 4, + INTER_LINEAR_EXACT = 5, + INTER_MAX = 7, +}; +} // namespace cv + +static inline int cvFloor( double value ) +{ + int i = (int)value; + return i - (i > value); +} + +#endif // defined(GAPI_STANDALONE) + +#endif // OPENCV_GAPI_CV_DEFS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/exports.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/exports.hpp new file mode 100644 index 0000000..0d955d0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/exports.hpp @@ -0,0 +1,28 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OWN_TYPES_HPP +#define OPENCV_GAPI_OWN_TYPES_HPP + +# if 0 +# include +# define GAPI_EXPORTS CV_EXPORTS + +# else +# if defined _WIN32 +# define GAPI_EXPORTS __declspec(dllexport) +# elif defined __GNUC__ && __GNUC__ >= 4 +# define GAPI_EXPORTS __attribute__ ((visibility ("default"))) +# endif + +# ifndef GAPI_EXPORTS +# define GAPI_EXPORTS +# endif + +# endif + +#endif // OPENCV_GAPI_OWN_TYPES_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/mat.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/mat.hpp new file mode 100644 index 0000000..73f3afc --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/mat.hpp @@ -0,0 +1,291 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OWN_MAT_HPP +#define OPENCV_GAPI_OWN_MAT_HPP + +#include "opencv2/gapi/opencv_includes.hpp" +#include "opencv2/gapi/own/types.hpp" +#include "opencv2/gapi/own/scalar.hpp" +#include "opencv2/gapi/own/saturate.hpp" +#include "opencv2/gapi/own/assert.hpp" + +#include //std::shared_ptr +#include //std::memcpy +#include "opencv2/gapi/util/throw.hpp" + +namespace cv { namespace gapi { namespace own { + namespace detail { + template + void assign_row(void* ptr, int cols, Scalar const& s) + { + auto p = static_cast(ptr); + for (int c = 0; c < cols; c++) + { + for (int ch = 0; ch < channels; ch++) + { + p[c * channels + ch] = saturate(s[ch], roundd); + } + } + } + + inline size_t default_step(int type, int cols) + { + return CV_ELEM_SIZE(type) * cols; + } + //Matrix header, i.e. fields that are unique to each Mat object. + //Devoted class is needed to implement custom behavior on move (erasing state of moved from object) + struct MatHeader{ + enum { AUTO_STEP = 0}; + enum { TYPE_MASK = 0x00000FFF }; + + MatHeader() = default; + + MatHeader(int _rows, int _cols, int type, void* _data, size_t _step) + : flags((type & TYPE_MASK)), rows(_rows), cols(_cols), data((uchar*)_data), step(_step == AUTO_STEP ? detail::default_step(type, _cols) : _step) + {} + + MatHeader(const MatHeader& ) = default; + MatHeader(MatHeader&& src) : MatHeader(src) // reuse copy constructor here + { + MatHeader empty; //give it a name to call copy(not move) assignment below + src = empty; + } + MatHeader& operator=(const MatHeader& ) = default; + MatHeader& operator=(MatHeader&& src) + { + *this = src; //calling a copy assignment here, not move one + MatHeader empty; //give it a name to call copy(not move) assignment below + src = empty; + return *this; + } + /*! includes several bit-fields: + - depth + - number of channels + */ + int flags = 0; + + //! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions + int rows = 0, cols = 0; + //! pointer to the data + uchar* data = nullptr; + size_t step = 0; + }; + } + //concise version of cv::Mat suitable for GAPI needs (used when no dependence on OpenCV is required) + class Mat : public detail::MatHeader{ + public: + + Mat() = default; + + /** @overload + @param _rows Number of rows in a 2D array. + @param _cols Number of columns in a 2D array. + @param _type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or + CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. + @param _data Pointer to the user data. Matrix constructors that take data and step parameters do not + allocate matrix data. Instead, they just initialize the matrix header that points to the specified + data, which means that no data is copied. This operation is very efficient and can be used to + process external data using OpenCV functions. The external data is not automatically deallocated, so + you should take care of it. + @param _step Number of bytes each matrix row occupies. The value should include the padding bytes at + the end of each row, if any. If the parameter is missing (set to AUTO_STEP ), no padding is assumed + and the actual step is calculated as cols*elemSize(). See Mat::elemSize. + */ + Mat(int _rows, int _cols, int _type, void* _data, size_t _step = AUTO_STEP) + : MatHeader (_rows, _cols, _type, _data, _step) + {} + + Mat(Mat const& src, const Rect& roi ) + : Mat(src) + { + rows = roi.height; + cols = roi.width; + data = ptr(roi.y, roi.x); + } + + Mat(Mat const& src) = default; + Mat(Mat&& src) = default; + + Mat& operator=(Mat const& src) = default; + Mat& operator=(Mat&& src) = default; + + /** @brief Sets all or some of the array elements to the specified value. + @param s Assigned scalar converted to the actual array type. + */ + Mat& operator = (const Scalar& s) + { + constexpr unsigned max_channels = 4; //Scalar can't fit more than 4 + const auto channels = static_cast(this->channels()); + GAPI_Assert(channels <= max_channels); + + using func_p_t = void (*)(void*, int, Scalar const&); + using detail::assign_row; + #define TABLE_ENTRY(type) {assign_row, assign_row, assign_row, assign_row} + static constexpr func_p_t func_tbl[][max_channels] = { + TABLE_ENTRY(uchar), + TABLE_ENTRY(schar), + TABLE_ENTRY(ushort), + TABLE_ENTRY(short), + TABLE_ENTRY(int), + TABLE_ENTRY(float), + TABLE_ENTRY(double) + }; + #undef TABLE_ENTRY + + static_assert(CV_8U == 0 && CV_8S == 1 && CV_16U == 2 && CV_16S == 3 + && CV_32S == 4 && CV_32F == 5 && CV_64F == 6, + "OCV type ids used as indexes to array, thus exact numbers are important!" + ); + + const auto depth = static_cast(this->depth()); + GAPI_Assert(depth < sizeof(func_tbl)/sizeof(func_tbl[0])); + + for (int r = 0; r < rows; ++r) + { + auto* f = func_tbl[depth][channels -1]; + (*f)(static_cast(ptr(r)), cols, s ); + } + return *this; + } + + /** @brief Returns the matrix element size in bytes. + + The method returns the matrix element size in bytes. For example, if the matrix type is CV_16SC3 , + the method returns 3\*sizeof(short) or 6. + */ + size_t elemSize() const + { + return CV_ELEM_SIZE(type()); + } + /** @brief Returns the type of a matrix element. + + The method returns a matrix element type. This is an identifier compatible with the CvMat type + system, like CV_16SC3 or 16-bit signed 3-channel array, and so on. + */ + int type() const {return CV_MAT_TYPE(flags);} + + /** @brief Returns the depth of a matrix element. + + The method returns the identifier of the matrix element depth (the type of each individual channel). + For example, for a 16-bit signed element array, the method returns CV_16S . A complete list of + matrix types contains the following values: + - CV_8U - 8-bit unsigned integers ( 0..255 ) + - CV_8S - 8-bit signed integers ( -128..127 ) + - CV_16U - 16-bit unsigned integers ( 0..65535 ) + - CV_16S - 16-bit signed integers ( -32768..32767 ) + - CV_32S - 32-bit signed integers ( -2147483648..2147483647 ) + - CV_32F - 32-bit floating-point numbers ( -FLT_MAX..FLT_MAX, INF, NAN ) + - CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN ) + */ + int depth() const {return CV_MAT_DEPTH(flags);} + + /** @brief Returns the number of matrix channels. + + The method returns the number of matrix channels. + */ + int channels() const {return CV_MAT_CN(flags);} + + /** + @param _rows New number of rows. + @param _cols New number of columns. + @param _type New matrix type. + */ + void create(int _rows, int _cols, int _type) + { + create({_cols, _rows}, _type); + } + /** @overload + @param _size Alternative new matrix size specification: Size(cols, rows) + @param _type New matrix type. + */ + void create(Size _size, int _type) + { + if (_size != Size{cols, rows} ) + { + Mat tmp{_size.height, _size.width, _type, nullptr}; + tmp.memory.reset(new uchar[ tmp.step * tmp.rows], [](uchar * p){delete[] p;}); + tmp.data = tmp.memory.get(); + + *this = std::move(tmp); + } + } + + /** @brief Copies the matrix to another one. + + The method copies the matrix data to another matrix. Before copying the data, the method invokes : + @code + m.create(this->size(), this->type()); + @endcode + so that the destination matrix is reallocated if needed. While m.copyTo(m); works flawlessly, the + function does not handle the case of a partial overlap between the source and the destination + matrices. + */ + void copyTo(Mat& dst) const + { + dst.create(rows, cols, type()); + for (int r = 0; r < rows; ++r) + { + std::copy_n(ptr(r), detail::default_step(type(),cols), dst.ptr(r)); + } + } + + /** @brief Returns true if the array has no elements. + + The method returns true if Mat::total() is 0 or if Mat::data is NULL. Because of pop_back() and + resize() methods `M.total() == 0` does not imply that `M.data == NULL`. + */ + bool empty() const; + + /** @brief Returns the total number of array elements. + + The method returns the number of array elements (a number of pixels if the array represents an + image). + */ + size_t total() const + { + return static_cast(rows * cols); + } + + + /** @overload + @param roi Extracted submatrix specified as a rectangle. + */ + Mat operator()( const Rect& roi ) const + { + return Mat{*this, roi}; + } + + + /** @brief Returns a pointer to the specified matrix row. + + The methods return `uchar*` or typed pointer to the specified matrix row. See the sample in + Mat::isContinuous to know how to use these methods. + @param row Index along the dimension 0 + @param col Index along the dimension 1 + */ + uchar* ptr(int row, int col = 0) + { + return const_cast(const_cast(this)->ptr(row,col)); + } + /** @overload */ + const uchar* ptr(int row, int col = 0) const + { + return data + step * row + CV_ELEM_SIZE(type()) * col; + } + + + private: + //actual memory allocated for storage, or nullptr if object is non owning view to over memory + std::shared_ptr memory; + }; + +} //namespace own +} //namespace gapi +} //namespace cv + +#endif /* OPENCV_GAPI_OWN_MAT_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/saturate.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/saturate.hpp new file mode 100644 index 0000000..207dcde --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/saturate.hpp @@ -0,0 +1,90 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_OWN_SATURATE_HPP +#define OPENCV_GAPI_OWN_SATURATE_HPP + +#include + +#include +#include + +#include + +namespace cv { namespace gapi { namespace own { +//----------------------------- +// +// Numeric cast with saturation +// +//----------------------------- + +template +static inline DST saturate(SRC x) +{ + // only integral types please! + GAPI_DbgAssert(std::is_integral::value && + std::is_integral::value); + + if (std::is_same::value) + return static_cast(x); + + if (sizeof(DST) > sizeof(SRC)) + return static_cast(x); + + // compiler must recognize this saturation, + // so compile saturate(a + b) with adds + // instruction (e.g.: _mm_adds_epi16 if x86) + return x < std::numeric_limits::min()? + std::numeric_limits::min(): + x > std::numeric_limits::max()? + std::numeric_limits::max(): + static_cast(x); +} + +// Note, that OpenCV rounds differently: +// - like std::round() for add, subtract +// - like std::rint() for multiply, divide +template +static inline DST saturate(SRC x, R round) +{ + if (std::is_floating_point::value) + { + return static_cast(x); + } + else if (std::is_integral::value) + { + GAPI_DbgAssert(std::is_integral::value && + std::is_integral::value); + return saturate(x); + } + else + { + GAPI_DbgAssert(std::is_integral::value && + std::is_floating_point::value); +#ifdef _WIN32 +// Suppress warning about convering x to floating-point +// Note that x is already floating-point at this point +#pragma warning(disable: 4244) +#endif + int ix = static_cast(round(x)); +#ifdef _WIN32 +#pragma warning(default: 4244) +#endif + return saturate(ix); + } +} + +// explicit suffix 'd' for double type +inline double ceild(double x) { return std::ceil(x); } +inline double floord(double x) { return std::floor(x); } +inline double roundd(double x) { return std::round(x); } +inline double rintd(double x) { return std::rint(x); } + +} //namespace own +} //namespace gapi +} //namespace cv +#endif /* OPENCV_GAPI_OWN_SATURATE_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/scalar.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/scalar.hpp new file mode 100644 index 0000000..bda91c8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/scalar.hpp @@ -0,0 +1,47 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_GAPI_OWN_SCALAR_HPP +#define OPENCV_GAPI_GAPI_OWN_SCALAR_HPP + +#include + +namespace cv +{ +namespace gapi +{ +namespace own +{ + +class GAPI_EXPORTS Scalar +{ +public: + Scalar() = default; + explicit Scalar(double v0) { val[0] = v0; }; + Scalar(double v0, double v1, double v2 = 0, double v3 = 0) + : val{v0, v1, v2, v3} + { + } + + const double& operator[](int i) const { return val[i]; } + double& operator[](int i) { return val[i]; } + + static Scalar all(double v0) { return Scalar(v0, v0, v0, v0); } + + double val[4] = {0}; +}; + +inline bool operator==(const Scalar& lhs, const Scalar& rhs) +{ + return std::equal(std::begin(lhs.val), std::end(lhs.val), std::begin(rhs.val)); +} + +} // namespace own +} // namespace gapi +} // namespace cv + +#endif // OPENCV_GAPI_GAPI_OWN_SCALAR_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/own/types.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/types.hpp new file mode 100644 index 0000000..20445ee --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/own/types.hpp @@ -0,0 +1,135 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_TYPES_HPP +#define OPENCV_GAPI_TYPES_HPP + +#include // std::max, std::min +#include + +namespace cv +{ +namespace gapi +{ +namespace own +{ + +class Point +{ +public: + Point() = default; + Point(int _x, int _y) : x(_x), y(_y) {}; + + int x = 0; + int y = 0; +}; + +class Rect +{ +public: + Rect() = default; + Rect(int _x, int _y, int _width, int _height) : x(_x), y(_y), width(_width), height(_height) {}; +#if !defined(GAPI_STANDALONE) + Rect(const cv::Rect& other) : x(other.x), y(other.y), width(other.width), height(other.height) {}; + inline Rect& operator=(const cv::Rect& other) + { + x = other.x; + y = other.x; + width = other.width; + height = other.height; + return *this; + } +#endif // !defined(GAPI_STANDALONE) + + int x = 0; //!< x coordinate of the top-left corner + int y = 0; //!< y coordinate of the top-left corner + int width = 0; //!< width of the rectangle + int height = 0; //!< height of the rectangle +}; + +inline bool operator==(const Rect& lhs, const Rect& rhs) +{ + return lhs.x == rhs.x && lhs.y == rhs.y && lhs.width == rhs.width && lhs.height == rhs.height; +} + +inline bool operator!=(const Rect& lhs, const Rect& rhs) +{ + return !(lhs == rhs); +} + +inline Rect& operator&=(Rect& lhs, const Rect& rhs) +{ + int x1 = std::max(lhs.x, rhs.x); + int y1 = std::max(lhs.y, rhs.y); + lhs.width = std::min(lhs.x + lhs.width, rhs.x + rhs.width) - x1; + lhs.height = std::min(lhs.y + lhs.height, rhs.y + rhs.height) - y1; + lhs.x = x1; + lhs.y = y1; + if( lhs.width <= 0 || lhs.height <= 0 ) + lhs = Rect(); + return lhs; +} + +inline const Rect operator&(const Rect& lhs, const Rect& rhs) +{ + Rect result = lhs; + return result &= rhs; +} + +inline std::ostream& operator<<(std::ostream& o, const Rect& rect) +{ + return o << "[" << rect.width << " x " << rect.height << " from (" << rect.x << ", " << rect.y << ")]"; +} + +class Size +{ +public: + Size() = default; + Size(int _width, int _height) : width(_width), height(_height) {}; +#if !defined(GAPI_STANDALONE) + Size(const cv::Size& other) : width(other.width), height(other.height) {}; + inline Size& operator=(const cv::Size& rhs) + { + width = rhs.width; + height = rhs.height; + return *this; + } +#endif // !defined(GAPI_STANDALONE) + + int width = 0; + int height = 0; +}; + +inline Size& operator+=(Size& lhs, const Size& rhs) +{ + lhs.width += rhs.width; + lhs.height += rhs.height; + return lhs; +} + +inline bool operator==(const Size& lhs, const Size& rhs) +{ + return lhs.width == rhs.width && lhs.height == rhs.height; +} + +inline bool operator!=(const Size& lhs, const Size& rhs) +{ + return !(lhs == rhs); +} + + +inline std::ostream& operator<<(std::ostream& o, const Size& s) +{ + o << "[" << s.width << " x " << s.height << "]"; + return o; +} + +} // namespace own +} // namespace gapi +} // namespace cv + +#endif // OPENCV_GAPI_TYPES_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/any.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/any.hpp new file mode 100644 index 0000000..3146cb6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/any.hpp @@ -0,0 +1,186 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_UTIL_ANY_HPP +#define OPENCV_GAPI_UTIL_ANY_HPP + +#include +#include +#include +#include + +#include "opencv2/gapi/util/throw.hpp" + +#if defined(_MSC_VER) + // disable MSVC warning on "multiple copy constructors specified" +# pragma warning(disable: 4521) +#endif + +namespace cv +{ + +namespace internal +{ + template + T down_cast(Source operand) + { +#if defined(__GXX_RTTI) || defined(_CPPRTTI) + return dynamic_cast(operand); +#else + #warning used static cast instead of dynamic because RTTI is disabled + return static_cast(operand); +#endif + } +} + +namespace util +{ + class bad_any_cast : public std::bad_cast + { + public: + virtual const char* what() const noexcept override + { + return "Bad any cast"; + } + }; + + //modeled against C++17 std::any + + class any + { + private: + struct holder; + using holder_ptr = std::unique_ptr; + struct holder + { + virtual holder_ptr clone() = 0; + virtual ~holder() = default; + }; + + template + struct holder_impl : holder + { + value_t v; + template + holder_impl(arg_t&& a) : v(std::forward(a)) {} + holder_ptr clone() override { return holder_ptr(new holder_impl (v));} + }; + + holder_ptr hldr; + public: + template + any(value_t&& arg) : hldr(new holder_impl::type>( std::forward(arg))) {} + + any(any const& src) : hldr( src.hldr ? src.hldr->clone() : nullptr) {} + //simple hack in order not to write enable_if for the template constructor + any(any & src) : any (const_cast(src)) {} + + any() = default; + any(any&& ) = default; + + any& operator=(any&&) = default; + + any& operator=(any const& src) + { + any copy(src); + swap(*this, copy); + return *this; + } + + template + friend value_t* any_cast(any* operand); + + template + friend const value_t* any_cast(const any* operand); + + template + friend value_t& unsafe_any_cast(any& operand); + + template + friend const value_t& unsafe_any_cast(const any& operand); + + friend void swap(any & lhs, any& rhs) + { + swap(lhs.hldr, rhs.hldr); + } + + }; + + template + value_t* any_cast(any* operand) + { + auto casted = internal::down_cast::type> *>(operand->hldr.get()); + if (casted){ + return & (casted->v); + } + return nullptr; + } + + template + const value_t* any_cast(const any* operand) + { + auto casted = internal::down_cast::type> *>(operand->hldr.get()); + if (casted){ + return & (casted->v); + } + return nullptr; + } + + template + value_t& any_cast(any& operand) + { + auto ptr = any_cast(&operand); + if (ptr) + { + return *ptr; + } + + throw_error(bad_any_cast()); + } + + + template + const value_t& any_cast(const any& operand) + { + auto ptr = any_cast(&operand); + if (ptr) + { + return *ptr; + } + + throw_error(bad_any_cast()); + } + + template + inline value_t& unsafe_any_cast(any& operand) + { +#ifdef DEBUG + return any_cast(operand); +#else + return static_cast::type> *>(operand.hldr.get())->v; +#endif + } + + template + inline const value_t& unsafe_any_cast(const any& operand) + { +#ifdef DEBUG + return any_cast(operand); +#else + return static_cast::type> *>(operand.hldr.get())->v; +#endif + } + +} // namespace util +} // namespace cv + +#if defined(_MSC_VER) + // Enable "multiple copy constructors specified" back +# pragma warning(default: 4521) +#endif + +#endif // OPENCV_GAPI_UTIL_ANY_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/compiler_hints.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/compiler_hints.hpp new file mode 100644 index 0000000..a41a971 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/compiler_hints.hpp @@ -0,0 +1,19 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + +#ifndef OPENCV_GAPI_UTIL_COMPILER_HINTS_HPP +#define OPENCV_GAPI_UTIL_COMPILER_HINTS_HPP + +namespace cv +{ +namespace util +{ + //! Utility template function to prevent "unused" warnings by various compilers. + template void suppress_unused_warning( const T& ) {} +} // namespace util +} // namespace cv + +#endif /* OPENCV_GAPI_UTIL_COMPILER_HINTS_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/optional.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/optional.hpp new file mode 100644 index 0000000..54126d6 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/optional.hpp @@ -0,0 +1,178 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_UTIL_OPTIONAL_HPP +#define OPENCV_GAPI_UTIL_OPTIONAL_HPP + +#include "opencv2/gapi/util/variant.hpp" + +// A poor man's `optional` implementation, incompletely modeled against C++17 spec. +namespace cv +{ +namespace util +{ + class bad_optional_access: public std::exception + { + public: + virtual const char *what() const noexcept override + { + return "Bad optional access"; + } + }; + + // TODO: nullopt_t + + // Interface /////////////////////////////////////////////////////////////// + template class optional + { + public: + // Constructors + // NB.: there were issues with Clang 3.8 when =default() was used + // instead {} + optional() {}; + optional(const optional&) = default; + explicit optional(T &&value) noexcept; + explicit optional(const T &value) noexcept; + optional(optional &&) noexcept; + // TODO: optional(nullopt_t) noexcept; + // TODO: optional(const optional &) + // TODO: optional(optional &&) + // TODO: optional(Args&&...) + // TODO: optional(initializer_list) + // TODO: optional(U&& value); + + // Assignment + optional& operator=(const optional& rhs) = default; + optional& operator=(optional&& rhs); + + // Observers + T* operator-> (); + const T* operator-> () const; + T& operator* (); + const T& operator* () const; + // TODO: && versions + + operator bool() const noexcept; + bool has_value() const noexcept; + + T& value(); + const T& value() const; + // TODO: && versions + + template + T value_or(U &&default_value) const; + + void swap(optional &other) noexcept; + void reset() noexcept; + // TODO: emplace + + // TODO: operator==, !=, <, <=, >, >= + + private: + struct nothing {}; + util::variant m_holder; + }; + + template + optional::type> make_optional(T&& value); + + // TODO: Args... and initializer_list versions + + // Implementation ////////////////////////////////////////////////////////// + template optional::optional(T &&v) noexcept + : m_holder(v) + { + } + + template optional::optional(const T &v) noexcept + : m_holder(v) + { + } + + template optional::optional(optional&& rhs) noexcept + : m_holder(std::move(rhs.m_holder)) + { + rhs.reset(); + } + + template optional& optional::operator=(optional&& rhs) + { + m_holder = std::move(rhs.m_holder); + rhs.reset(); + return *this; + } + + template T* optional::operator-> () + { + return & *(*this); + } + + template const T* optional::operator-> () const + { + return & *(*this); + } + + template T& optional::operator* () + { + return this->value(); + } + + template const T& optional::operator* () const + { + return this->value(); + } + + template optional::operator bool() const noexcept + { + return this->has_value(); + } + + template bool optional::has_value() const noexcept + { + return util::holds_alternative(m_holder); + } + + template T& optional::value() + { + if (!this->has_value()) + throw_error(bad_optional_access()); + return util::get(m_holder); + } + + template const T& optional::value() const + { + if (!this->has_value()) + throw_error(bad_optional_access()); + return util::get(m_holder); + } + + template + template T optional::value_or(U &&default_value) const + { + return (this->has_value() ? this->value() : T(default_value)); + } + + template void optional::swap(optional &other) noexcept + { + m_holder.swap(other.m_holder); + } + + template void optional::reset() noexcept + { + if (this->has_value()) + m_holder = nothing{}; + } + + template + optional::type> make_optional(T&& value) + { + return optional::type>(std::forward(value)); + } +} // namespace util +} // namespace cv + +#endif // OPENCV_GAPI_UTIL_OPTIONAL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/throw.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/throw.hpp new file mode 100644 index 0000000..689bf58 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/throw.hpp @@ -0,0 +1,36 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_UTIL_THROW_HPP +#define OPENCV_GAPI_UTIL_THROW_HPP + +#include // std::forward + +#if !defined(__EXCEPTIONS) +#include +#include +#endif + +namespace cv +{ +namespace util +{ +template +[[noreturn]] void throw_error(ExceptionType &&e) +{ +#if defined(__EXCEPTIONS) || defined(_CPPUNWIND) + throw std::forward(e); +#else + fprintf(stderr, "An exception thrown! %s\n" , e.what()); + fflush(stderr); + abort(); +#endif +} +} // namespace util +} // namespace cv + +#endif // OPENCV_GAPI_UTIL_THROW_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/util.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/util.hpp new file mode 100644 index 0000000..d0378e0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/util.hpp @@ -0,0 +1,92 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_UTIL_HPP +#define OPENCV_GAPI_UTIL_HPP + +#include // std::tuple + +// \cond HIDDEN_SYMBOLS +// This header file contains some generic utility functions which are +// used in other G-API Public API headers. +// +// PLEASE don't put any stuff here if it is NOT used in public API headers! + +namespace cv +{ +namespace detail +{ + // Recursive integer sequence type, useful for enumerating elements of + // template parameter packs. + template struct Seq { using next = Seq; }; + template struct MkSeq { using type = typename MkSeq::type::next; }; + template<> struct MkSeq<0>{ using type = Seq<>; }; + + // Checks if elements of variadic template satisfy the given Predicate. + // Implemented via tuple, with an interface to accept plain type lists + template class, typename, typename...> struct all_satisfy; + + template class F, typename T, typename... Ts> + struct all_satisfy > + { + static const constexpr bool value = F::value + && all_satisfy >::value; + }; + template class F, typename T> + struct all_satisfy > + { + static const constexpr bool value = F::value; + }; + + template class F, typename T, typename... Ts> + struct all_satisfy: public all_satisfy > {}; + + // Permute given tuple type C with given integer sequence II + // Sequence may be less than tuple C size. + template struct permute_tuple; + + template + struct permute_tuple > + { + using type = std::tuple< typename std::tuple_element::type... >; + }; + + // Given T..., generates a type sequence of sizeof...(T)-1 elements + // which is T... without its last element + // Implemented via tuple, with an interface to accept plain type lists + template struct all_but_last; + + template + struct all_but_last > + { + using C = std::tuple; + using S = typename MkSeq::value - 1>::type; + using type = typename permute_tuple::type; + }; + + template + struct all_but_last: public all_but_last > {}; + + template + using all_but_last_t = typename all_but_last::type; + + // NB.: This is here because there's no constexpr std::max in C++11 + template struct max_of_t + { + static constexpr const std::size_t rest = max_of_t::value; + static constexpr const std::size_t value = rest > S0 ? rest : S0; + }; + template struct max_of_t + { + static constexpr const std::size_t value = S; + }; +} // namespace detail +} // namespace cv + +// \endcond + +#endif // OPENCV_GAPI_UTIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/gapi/util/variant.hpp b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/variant.hpp new file mode 100644 index 0000000..a7e43c5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/gapi/util/variant.hpp @@ -0,0 +1,379 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +// +// Copyright (C) 2018 Intel Corporation + + +#ifndef OPENCV_GAPI_UTIL_VARIANT_HPP +#define OPENCV_GAPI_UTIL_VARIANT_HPP + +#include +#include + +#include "opencv2/gapi/util/throw.hpp" +#include "opencv2/gapi/util/util.hpp" // max_of_t + +// A poor man's `variant` implementation, incompletely modeled against C++17 spec. +namespace cv +{ +namespace util +{ + namespace detail + { + template + struct type_list_index_helper + { + static const constexpr bool is_same = std::is_same::value; + static const constexpr std::size_t value = + std::conditional, type_list_index_helper>::type::value; + }; + + template + struct type_list_index_helper + { + static_assert(std::is_same::value, "Type not found"); + static const constexpr std::size_t value = I; + }; + + + template using are_different = + std::enable_if::type, + typename std::decay::type>::value, + V>; + } + + template + struct type_list_index + { + static const constexpr std::size_t value = detail::type_list_index_helper<0, Target, Types...>::value; + }; + + class bad_variant_access: public std::exception + { + public: + virtual const char *what() const noexcept override + { + return "Bad variant access"; + } + }; + + // Interface /////////////////////////////////////////////////////////////// + struct monostate {}; + inline bool operator==(const util::monostate&, const util::monostate&) + { + return true; + } + + template // FIXME: no references, arrays, and void + class variant + { + // FIXME: Replace with std::aligned_union after gcc4.8 support is dropped + static constexpr const std::size_t S = cv::detail::max_of_t::value; + static constexpr const std::size_t A = cv::detail::max_of_t::value; + using Memory = typename std::aligned_storage::type[1]; + + template struct cctr_h { + static void help(Memory memory, const Memory from) { + new (memory) T(*reinterpret_cast(from)); + } + }; + + template struct vctr_h { + static void help(Memory memory, const void* pval) { + new (memory) T(*reinterpret_cast(pval)); + } + }; + + template struct mctr_h { + static void help(Memory memory, void *pval) { + new (memory) T(std::move(*reinterpret_cast(pval))); + } + }; + + template struct copy_h { + static void help(Memory to, const Memory from) { + *reinterpret_cast(to) = *reinterpret_cast(from); + } + }; + + template struct move_h { + static void help(Memory to, const Memory from) { + *reinterpret_cast(to) = std::move(*reinterpret_cast(from)); + } + }; + + template struct swap_h { + static void help(Memory to, Memory from) { + std::swap(*reinterpret_cast(to), *reinterpret_cast(from)); + } + }; + + template struct dtor_h { + static void help(Memory memory) { + (void) memory; // MSCV warning + reinterpret_cast(memory)->~T(); + } + }; + + template struct equal_h { + static bool help(const Memory lhs, const Memory rhs) { + const T& t_lhs = *reinterpret_cast(lhs); + const T& t_rhs = *reinterpret_cast(rhs); + return t_lhs == t_rhs; + } + }; + + typedef void (*CCtr) (Memory, const Memory); // Copy c-tor (variant) + typedef void (*VCtr) (Memory, const void*); // Copy c-tor (value) + typedef void (*MCtr) (Memory, void*); // Generic move c-tor + typedef void (*Copy) (Memory, const Memory); // Copy assignment + typedef void (*Move) (Memory, const Memory); // Move assignment + typedef void (*Swap) (Memory, Memory); // Swap + typedef void (*Dtor) (Memory); // Destructor + + typedef bool (*Equal)(const Memory, const Memory); // Equality test (external) + + static constexpr std::array cctrs(){ return {{(&cctr_h::help)...}};} + static constexpr std::array vctrs(){ return {{(&vctr_h::help)...}};} + static constexpr std::array mctrs(){ return {{(&mctr_h::help)...}};} + static constexpr std::array cpyrs(){ return {{(©_h::help)...}};} + static constexpr std::array mvers(){ return {{(&move_h::help)...}};} + static constexpr std::array swprs(){ return {{(&swap_h::help)...}};} + static constexpr std::array dtors(){ return {{(&dtor_h::help)...}};} + + std::size_t m_index = 0; + + protected: + template friend T& get(variant &v); + template friend const T& get(const variant &v); + template friend bool operator==(const variant &lhs, + const variant &rhs); + Memory memory; + + public: + // Constructors + variant() noexcept; + variant(const variant& other); + variant(variant&& other) noexcept; + template explicit variant(const T& t); + // are_different is a SFINAE trick to avoid variant(T &&t) with T=variant + // for some reason, this version is called instead of variant(variant&& o) when + // variant is used in STL containers (examples: vector assignment) + template explicit variant(T&& t, typename detail::are_different::type = 0); + // template explicit variant(Args&&... args); + // FIXME: other constructors + + // Destructor + ~variant(); + + // Assignment + variant& operator=(const variant& rhs); + variant& operator=(variant &&rhs) noexcept; + + // SFINAE trick to avoid operator=(T&&) with T=variant<>, see comment above + template + typename detail::are_different + ::type operator=(T&& t) noexcept; + + // Observers + std::size_t index() const noexcept; + // FIXME: valueless_by_exception() + + // Modifiers + // FIXME: emplace() + void swap(variant &rhs) noexcept; + + // Non-C++17x! + template static constexpr std::size_t index_of(); + }; + + // FIMXE: visit + + template + T& get(util::variant &v); + + template + const T& get(const util::variant &v); + + template + bool holds_alternative(const util::variant &v) noexcept; + + // FIXME: T&&, const TT&& versions. + + // Implementation ////////////////////////////////////////////////////////// + template + variant::variant() noexcept + { + typedef typename std::tuple_element<0, std::tuple >::type TFirst; + new (memory) TFirst(); + } + + template + variant::variant(const variant &other) + : m_index(other.m_index) + { + (cctrs()[m_index])(memory, other.memory); + } + + template + variant::variant(variant &&other) noexcept + : m_index(other.m_index) + { + (mctrs()[m_index])(memory, other.memory); + } + + template + template + variant::variant(const T& t) + : m_index(util::type_list_index::value) + { + (vctrs()[m_index])(memory, &t); + } + + template + template + variant::variant(T&& t, typename detail::are_different::type) + : m_index(util::type_list_index::type, Ts...>::value) + { + (mctrs()[m_index])(memory, &t); + } + + template + variant::~variant() + { + (dtors()[m_index])(memory); + } + + template + variant& variant::operator=(const variant &rhs) + { + if (m_index != rhs.m_index) + { + (dtors()[ m_index])(memory); + (cctrs()[rhs.m_index])(memory, rhs.memory); + m_index = rhs.m_index; + } + else + { + (cpyrs()[rhs.m_index])(memory, rhs.memory); + } + return *this; + } + + template + variant& variant::operator=(variant &&rhs) noexcept + { + if (m_index != rhs.m_index) + { + (dtors()[ m_index])(memory); + (mctrs()[rhs.m_index])(memory, rhs.memory); + m_index = rhs.m_index; + } + else + { + (mvers()[rhs.m_index])(memory, rhs.memory); + } + return *this; + } + + template + template typename detail::are_different, T, variant&> + ::type variant::operator=(T&& t) noexcept + { + // FIXME: No version with implicit type conversion available! + static const constexpr std::size_t t_index = + util::type_list_index::value; + + if (t_index == m_index) + { + util::get(*this) = std::move(t); + return *this; + } + else return (*this = variant(std::move(t))); + } + + template + std::size_t util::variant::index() const noexcept + { + return m_index; + } + + template + void variant::swap(variant &rhs) noexcept + { + if (m_index == rhs.index()) + { + (swprs()[m_index](memory, rhs.memory)); + } + else + { + variant tmp(std::move(*this)); + *this = std::move(rhs); + rhs = std::move(tmp); + } + } + + template + template + constexpr std::size_t variant::index_of() + { + return util::type_list_index::value; // FIXME: tests! + } + + template + T& get(util::variant &v) + { + const constexpr std::size_t t_index = + util::type_list_index::value; + + if (v.index() == t_index) + return *(T*)(&v.memory); // workaround for ICC 2019 + // original code: return reinterpret_cast(v.memory); + else + throw_error(bad_variant_access()); + } + + template + const T& get(const util::variant &v) + { + const constexpr std::size_t t_index = + util::type_list_index::value; + + if (v.index() == t_index) + return *(const T*)(&v.memory); // workaround for ICC 2019 + // original code: return reinterpret_cast(v.memory); + else + throw_error(bad_variant_access()); + } + + template + bool holds_alternative(const util::variant &v) noexcept + { + return v.index() == util::variant::template index_of(); + } + + template bool operator==(const variant &lhs, + const variant &rhs) + { + using V = variant; + + // Instantiate table only here since it requires operator== for + // should have operator== only if this one is used, not in general + static const std::array eqs = { + {(&V::template equal_h::help)...} + }; + if (lhs.index() != rhs.index()) + return false; + return (eqs[lhs.index()])(lhs.memory, rhs.memory); + } + + template bool operator!=(const variant &lhs, + const variant &rhs) + { + return !(lhs == rhs); + } +} // namespace cv +} // namespace util + +#endif // OPENCV_GAPI_UTIL_VARIANT_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/highgui.hpp b/LaiPuLaser/OpenCV/include/opencv2/highgui.hpp new file mode 100644 index 0000000..dfd946c --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/highgui.hpp @@ -0,0 +1,841 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HIGHGUI_HPP +#define OPENCV_HIGHGUI_HPP + +#include "opencv2/core.hpp" +#ifdef HAVE_OPENCV_IMGCODECS +#include "opencv2/imgcodecs.hpp" +#endif +#ifdef HAVE_OPENCV_VIDEOIO +#include "opencv2/videoio.hpp" +#endif + +/** +@defgroup highgui High-level GUI + +While OpenCV was designed for use in full-scale applications and can be used within functionally +rich UI frameworks (such as Qt\*, WinForms\*, or Cocoa\*) or without any UI at all, sometimes there +it is required to try functionality quickly and visualize the results. This is what the HighGUI +module has been designed for. + +It provides easy interface to: + +- Create and manipulate windows that can display images and "remember" their content (no need to + handle repaint events from OS). +- Add trackbars to the windows, handle simple mouse events as well as keyboard commands. + +@{ + @defgroup highgui_opengl OpenGL support + @defgroup highgui_qt Qt New Functions + + ![image](pics/qtgui.png) + + This figure explains new functionality implemented with Qt\* GUI. The new GUI provides a statusbar, + a toolbar, and a control panel. The control panel can have trackbars and buttonbars attached to it. + If you cannot see the control panel, press Ctrl+P or right-click any Qt window and select **Display + properties window**. + + - To attach a trackbar, the window name parameter must be NULL. + + - To attach a buttonbar, a button must be created. If the last bar attached to the control panel + is a buttonbar, the new button is added to the right of the last button. If the last bar + attached to the control panel is a trackbar, or the control panel is empty, a new buttonbar is + created. Then, a new button is attached to it. + + See below the example used to generate the figure: + @code + int main(int argc, char *argv[]) + { + + int value = 50; + int value2 = 0; + + + namedWindow("main1",WINDOW_NORMAL); + namedWindow("main2",WINDOW_AUTOSIZE | CV_GUI_NORMAL); + createTrackbar( "track1", "main1", &value, 255, NULL); + + String nameb1 = "button1"; + String nameb2 = "button2"; + + createButton(nameb1,callbackButton,&nameb1,QT_CHECKBOX,1); + createButton(nameb2,callbackButton,NULL,QT_CHECKBOX,0); + createTrackbar( "track2", NULL, &value2, 255, NULL); + createButton("button5",callbackButton1,NULL,QT_RADIOBOX,0); + createButton("button6",callbackButton2,NULL,QT_RADIOBOX,1); + + setMouseCallback( "main2",on_mouse,NULL ); + + Mat img1 = imread("files/flower.jpg"); + VideoCapture video; + video.open("files/hockey.avi"); + + Mat img2,img3; + + while( waitKey(33) != 27 ) + { + img1.convertTo(img2,-1,1,value); + video >> img3; + + imshow("main1",img2); + imshow("main2",img3); + } + + destroyAllWindows(); + + return 0; + } + @endcode + + + @defgroup highgui_winrt WinRT support + + This figure explains new functionality implemented with WinRT GUI. The new GUI provides an Image control, + and a slider panel. Slider panel holds trackbars attached to it. + + Sliders are attached below the image control. Every new slider is added below the previous one. + + See below the example used to generate the figure: + @code + void sample_app::MainPage::ShowWindow() + { + static cv::String windowName("sample"); + cv::winrt_initContainer(this->cvContainer); + cv::namedWindow(windowName); // not required + + cv::Mat image = cv::imread("Assets/sample.jpg"); + cv::Mat converted = cv::Mat(image.rows, image.cols, CV_8UC4); + cv::cvtColor(image, converted, COLOR_BGR2BGRA); + cv::imshow(windowName, converted); // this will create window if it hasn't been created before + + int state = 42; + cv::TrackbarCallback callback = [](int pos, void* userdata) + { + if (pos == 0) { + cv::destroyWindow(windowName); + } + }; + cv::TrackbarCallback callbackTwin = [](int pos, void* userdata) + { + if (pos >= 70) { + cv::destroyAllWindows(); + } + }; + cv::createTrackbar("Sample trackbar", windowName, &state, 100, callback); + cv::createTrackbar("Twin brother", windowName, &state, 100, callbackTwin); + } + @endcode + + @defgroup highgui_c C API +@} +*/ + +///////////////////////// graphical user interface ////////////////////////// +namespace cv +{ + +//! @addtogroup highgui +//! @{ + +//! Flags for cv::namedWindow +enum WindowFlags { + WINDOW_NORMAL = 0x00000000, //!< the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size. + WINDOW_AUTOSIZE = 0x00000001, //!< the user cannot resize the window, the size is constrainted by the image displayed. + WINDOW_OPENGL = 0x00001000, //!< window with opengl support. + + WINDOW_FULLSCREEN = 1, //!< change the window to fullscreen. + WINDOW_FREERATIO = 0x00000100, //!< the image expends as much as it can (no ratio constraint). + WINDOW_KEEPRATIO = 0x00000000, //!< the ratio of the image is respected. + WINDOW_GUI_EXPANDED=0x00000000, //!< status bar and tool bar + WINDOW_GUI_NORMAL = 0x00000010, //!< old fashious way + }; + +//! Flags for cv::setWindowProperty / cv::getWindowProperty +enum WindowPropertyFlags { + WND_PROP_FULLSCREEN = 0, //!< fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN). + WND_PROP_AUTOSIZE = 1, //!< autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE). + WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO). + WND_PROP_OPENGL = 3, //!< opengl support. + WND_PROP_VISIBLE = 4 //!< checks whether the window exists and is visible + }; + +//! Mouse Events see cv::MouseCallback +enum MouseEventTypes { + EVENT_MOUSEMOVE = 0, //!< indicates that the mouse pointer has moved over the window. + EVENT_LBUTTONDOWN = 1, //!< indicates that the left mouse button is pressed. + EVENT_RBUTTONDOWN = 2, //!< indicates that the right mouse button is pressed. + EVENT_MBUTTONDOWN = 3, //!< indicates that the middle mouse button is pressed. + EVENT_LBUTTONUP = 4, //!< indicates that left mouse button is released. + EVENT_RBUTTONUP = 5, //!< indicates that right mouse button is released. + EVENT_MBUTTONUP = 6, //!< indicates that middle mouse button is released. + EVENT_LBUTTONDBLCLK = 7, //!< indicates that left mouse button is double clicked. + EVENT_RBUTTONDBLCLK = 8, //!< indicates that right mouse button is double clicked. + EVENT_MBUTTONDBLCLK = 9, //!< indicates that middle mouse button is double clicked. + EVENT_MOUSEWHEEL = 10,//!< positive and negative values mean forward and backward scrolling, respectively. + EVENT_MOUSEHWHEEL = 11 //!< positive and negative values mean right and left scrolling, respectively. + }; + +//! Mouse Event Flags see cv::MouseCallback +enum MouseEventFlags { + EVENT_FLAG_LBUTTON = 1, //!< indicates that the left mouse button is down. + EVENT_FLAG_RBUTTON = 2, //!< indicates that the right mouse button is down. + EVENT_FLAG_MBUTTON = 4, //!< indicates that the middle mouse button is down. + EVENT_FLAG_CTRLKEY = 8, //!< indicates that CTRL Key is pressed. + EVENT_FLAG_SHIFTKEY = 16,//!< indicates that SHIFT Key is pressed. + EVENT_FLAG_ALTKEY = 32 //!< indicates that ALT Key is pressed. + }; + +//! Qt font weight +enum QtFontWeights { + QT_FONT_LIGHT = 25, //!< Weight of 25 + QT_FONT_NORMAL = 50, //!< Weight of 50 + QT_FONT_DEMIBOLD = 63, //!< Weight of 63 + QT_FONT_BOLD = 75, //!< Weight of 75 + QT_FONT_BLACK = 87 //!< Weight of 87 + }; + +//! Qt font style +enum QtFontStyles { + QT_STYLE_NORMAL = 0, //!< Normal font. + QT_STYLE_ITALIC = 1, //!< Italic font. + QT_STYLE_OBLIQUE = 2 //!< Oblique font. + }; + +//! Qt "button" type +enum QtButtonTypes { + QT_PUSH_BUTTON = 0, //!< Push button. + QT_CHECKBOX = 1, //!< Checkbox button. + QT_RADIOBOX = 2, //!< Radiobox button. + QT_NEW_BUTTONBAR = 1024 //!< Button should create a new buttonbar + }; + +/** @brief Callback function for mouse events. see cv::setMouseCallback +@param event one of the cv::MouseEventTypes constants. +@param x The x-coordinate of the mouse event. +@param y The y-coordinate of the mouse event. +@param flags one of the cv::MouseEventFlags constants. +@param userdata The optional parameter. + */ +typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata); + +/** @brief Callback function for Trackbar see cv::createTrackbar +@param pos current position of the specified trackbar. +@param userdata The optional parameter. + */ +typedef void (*TrackbarCallback)(int pos, void* userdata); + +/** @brief Callback function defined to be called every frame. See cv::setOpenGlDrawCallback +@param userdata The optional parameter. + */ +typedef void (*OpenGlDrawCallback)(void* userdata); + +/** @brief Callback function for a button created by cv::createButton +@param state current state of the button. It could be -1 for a push button, 0 or 1 for a check/radio box button. +@param userdata The optional parameter. + */ +typedef void (*ButtonCallback)(int state, void* userdata); + +/** @brief Creates a window. + +The function namedWindow creates a window that can be used as a placeholder for images and +trackbars. Created windows are referred to by their names. + +If a window with the same name already exists, the function does nothing. + +You can call cv::destroyWindow or cv::destroyAllWindows to close the window and de-allocate any associated +memory usage. For a simple program, you do not really have to call these functions because all the +resources and windows of the application are closed automatically by the operating system upon exit. + +@note + +Qt backend supports additional flags: + - **WINDOW_NORMAL or WINDOW_AUTOSIZE:** WINDOW_NORMAL enables you to resize the + window, whereas WINDOW_AUTOSIZE adjusts automatically the window size to fit the + displayed image (see imshow ), and you cannot change the window size manually. + - **WINDOW_FREERATIO or WINDOW_KEEPRATIO:** WINDOW_FREERATIO adjusts the image + with no respect to its ratio, whereas WINDOW_KEEPRATIO keeps the image ratio. + - **WINDOW_GUI_NORMAL or WINDOW_GUI_EXPANDED:** WINDOW_GUI_NORMAL is the old way to draw the window + without statusbar and toolbar, whereas WINDOW_GUI_EXPANDED is a new enhanced GUI. +By default, flags == WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED + +@param winname Name of the window in the window caption that may be used as a window identifier. +@param flags Flags of the window. The supported flags are: (cv::WindowFlags) + */ +CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE); + +/** @brief Destroys the specified window. + +The function destroyWindow destroys the window with the given name. + +@param winname Name of the window to be destroyed. + */ +CV_EXPORTS_W void destroyWindow(const String& winname); + +/** @brief Destroys all of the HighGUI windows. + +The function destroyAllWindows destroys all of the opened HighGUI windows. + */ +CV_EXPORTS_W void destroyAllWindows(); + +CV_EXPORTS_W int startWindowThread(); + +/** @brief Similar to #waitKey, but returns full key code. + +@note + +Key code is implementation specific and depends on used backend: QT/GTK/Win32/etc + +*/ +CV_EXPORTS_W int waitKeyEx(int delay = 0); + +/** @brief Waits for a pressed key. + +The function waitKey waits for a key event infinitely (when \f$\texttt{delay}\leq 0\f$ ) or for delay +milliseconds, when it is positive. Since the OS has a minimum time between switching threads, the +function will not wait exactly delay ms, it will wait at least delay ms, depending on what else is +running on your computer at that time. It returns the code of the pressed key or -1 if no key was +pressed before the specified time had elapsed. + +@note + +This function is the only method in HighGUI that can fetch and handle events, so it needs to be +called periodically for normal event processing unless HighGUI is used within an environment that +takes care of event processing. + +@note + +The function only works if there is at least one HighGUI window created and the window is active. +If there are several HighGUI windows, any of them can be active. + +@param delay Delay in milliseconds. 0 is the special value that means "forever". + */ +CV_EXPORTS_W int waitKey(int delay = 0); + +/** @brief Displays an image in the specified window. + +The function imshow displays an image in the specified window. If the window was created with the +cv::WINDOW_AUTOSIZE flag, the image is shown with its original size, however it is still limited by the screen resolution. +Otherwise, the image is scaled to fit the window. The function may scale the image, depending on its depth: + +- If the image is 8-bit unsigned, it is displayed as is. +- If the image is 16-bit unsigned or 32-bit integer, the pixels are divided by 256. That is, the + value range [0,255\*256] is mapped to [0,255]. +- If the image is 32-bit or 64-bit floating-point, the pixel values are multiplied by 255. That is, the + value range [0,1] is mapped to [0,255]. + +If window was created with OpenGL support, cv::imshow also support ogl::Buffer , ogl::Texture2D and +cuda::GpuMat as input. + +If the window was not created before this function, it is assumed creating a window with cv::WINDOW_AUTOSIZE. + +If you need to show an image that is bigger than the screen resolution, you will need to call namedWindow("", WINDOW_NORMAL) before the imshow. + +@note This function should be followed by cv::waitKey function which displays the image for specified +milliseconds. Otherwise, it won't display the image. For example, **waitKey(0)** will display the window +infinitely until any keypress (it is suitable for image display). **waitKey(25)** will display a frame +for 25 ms, after which display will be automatically closed. (If you put it in a loop to read +videos, it will display the video frame-by-frame) + +@note + +[__Windows Backend Only__] Pressing Ctrl+C will copy the image to the clipboard. + +[__Windows Backend Only__] Pressing Ctrl+S will show a dialog to save the image. + +@param winname Name of the window. +@param mat Image to be shown. + */ +CV_EXPORTS_W void imshow(const String& winname, InputArray mat); + +/** @brief Resizes window to the specified size + +@note + +- The specified window size is for the image area. Toolbars are not counted. +- Only windows created without cv::WINDOW_AUTOSIZE flag can be resized. + +@param winname Window name. +@param width The new window width. +@param height The new window height. + */ +CV_EXPORTS_W void resizeWindow(const String& winname, int width, int height); + +/** @overload +@param winname Window name. +@param size The new window size. +*/ +CV_EXPORTS_W void resizeWindow(const String& winname, const cv::Size& size); + +/** @brief Moves window to the specified position + +@param winname Name of the window. +@param x The new x-coordinate of the window. +@param y The new y-coordinate of the window. + */ +CV_EXPORTS_W void moveWindow(const String& winname, int x, int y); + +/** @brief Changes parameters of a window dynamically. + +The function setWindowProperty enables changing properties of a window. + +@param winname Name of the window. +@param prop_id Window property to edit. The supported operation flags are: (cv::WindowPropertyFlags) +@param prop_value New value of the window property. The supported flags are: (cv::WindowFlags) + */ +CV_EXPORTS_W void setWindowProperty(const String& winname, int prop_id, double prop_value); + +/** @brief Updates window title +@param winname Name of the window. +@param title New title. +*/ +CV_EXPORTS_W void setWindowTitle(const String& winname, const String& title); + +/** @brief Provides parameters of a window. + +The function getWindowProperty returns properties of a window. + +@param winname Name of the window. +@param prop_id Window property to retrieve. The following operation flags are available: (cv::WindowPropertyFlags) + +@sa setWindowProperty + */ +CV_EXPORTS_W double getWindowProperty(const String& winname, int prop_id); + +/** @brief Provides rectangle of image in the window. + +The function getWindowImageRect returns the client screen coordinates, width and height of the image rendering area. + +@param winname Name of the window. + +@sa resizeWindow moveWindow + */ +CV_EXPORTS_W Rect getWindowImageRect(const String& winname); + +/** @example samples/cpp/create_mask.cpp +This program demonstrates using mouse events and how to make and use a mask image (black and white) . +*/ +/** @brief Sets mouse handler for the specified window + +@param winname Name of the window. +@param onMouse Callback function for mouse events. See OpenCV samples on how to specify and use the callback. +@param userdata The optional parameter passed to the callback. + */ +CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0); + +/** @brief Gets the mouse-wheel motion delta, when handling mouse-wheel events cv::EVENT_MOUSEWHEEL and +cv::EVENT_MOUSEHWHEEL. + +For regular mice with a scroll-wheel, delta will be a multiple of 120. The value 120 corresponds to +a one notch rotation of the wheel or the threshold for action to be taken and one such action should +occur for each delta. Some high-precision mice with higher-resolution freely-rotating wheels may +generate smaller values. + +For cv::EVENT_MOUSEWHEEL positive and negative values mean forward and backward scrolling, +respectively. For cv::EVENT_MOUSEHWHEEL, where available, positive and negative values mean right and +left scrolling, respectively. + +With the C API, the macro CV_GET_WHEEL_DELTA(flags) can be used alternatively. + +@note + +Mouse-wheel events are currently supported only on Windows. + +@param flags The mouse callback flags parameter. + */ +CV_EXPORTS int getMouseWheelDelta(int flags); + +/** @brief Selects ROI on the given image. +Function creates a window and allows user to select a ROI using mouse. +Controls: use `space` or `enter` to finish selection, use key `c` to cancel selection (function will return the zero cv::Rect). + +@param windowName name of the window where selection process will be shown. +@param img image to select a ROI. +@param showCrosshair if true crosshair of selection rectangle will be shown. +@param fromCenter if true center of selection will match initial mouse position. In opposite case a corner of +selection rectangle will correspont to the initial mouse position. +@return selected ROI or empty rect if selection canceled. + +@note The function sets it's own mouse callback for specified window using cv::setMouseCallback(windowName, ...). +After finish of work an empty callback will be set for the used window. + */ +CV_EXPORTS_W Rect selectROI(const String& windowName, InputArray img, bool showCrosshair = true, bool fromCenter = false); + +/** @overload + */ +CV_EXPORTS_W Rect selectROI(InputArray img, bool showCrosshair = true, bool fromCenter = false); + +/** @brief Selects ROIs on the given image. +Function creates a window and allows user to select a ROIs using mouse. +Controls: use `space` or `enter` to finish current selection and start a new one, +use `esc` to terminate multiple ROI selection process. + +@param windowName name of the window where selection process will be shown. +@param img image to select a ROI. +@param boundingBoxes selected ROIs. +@param showCrosshair if true crosshair of selection rectangle will be shown. +@param fromCenter if true center of selection will match initial mouse position. In opposite case a corner of +selection rectangle will correspont to the initial mouse position. + +@note The function sets it's own mouse callback for specified window using cv::setMouseCallback(windowName, ...). +After finish of work an empty callback will be set for the used window. + */ +CV_EXPORTS_W void selectROIs(const String& windowName, InputArray img, + CV_OUT std::vector& boundingBoxes, bool showCrosshair = true, bool fromCenter = false); + +/** @brief Creates a trackbar and attaches it to the specified window. + +The function createTrackbar creates a trackbar (a slider or range control) with the specified name +and range, assigns a variable value to be a position synchronized with the trackbar and specifies +the callback function onChange to be called on the trackbar position change. The created trackbar is +displayed in the specified window winname. + +@note + +[__Qt Backend Only__] winname can be empty if the trackbar should be attached to the +control panel. + +Clicking the label of each trackbar enables editing the trackbar values manually. + +@param trackbarname Name of the created trackbar. +@param winname Name of the window that will be used as a parent of the created trackbar. +@param value Optional pointer to an integer variable whose value reflects the position of the +slider. Upon creation, the slider position is defined by this variable. +@param count Maximal position of the slider. The minimal position is always 0. +@param onChange Pointer to the function to be called every time the slider changes position. This +function should be prototyped as void Foo(int,void\*); , where the first parameter is the trackbar +position and the second parameter is the user data (see the next parameter). If the callback is +the NULL pointer, no callbacks are called, but only value is updated. +@param userdata User data that is passed as is to the callback. It can be used to handle trackbar +events without using global variables. + */ +CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, + int* value, int count, + TrackbarCallback onChange = 0, + void* userdata = 0); + +/** @brief Returns the trackbar position. + +The function returns the current position of the specified trackbar. + +@note + +[__Qt Backend Only__] winname can be empty if the trackbar is attached to the control +panel. + +@param trackbarname Name of the trackbar. +@param winname Name of the window that is the parent of the trackbar. + */ +CV_EXPORTS_W int getTrackbarPos(const String& trackbarname, const String& winname); + +/** @brief Sets the trackbar position. + +The function sets the position of the specified trackbar in the specified window. + +@note + +[__Qt Backend Only__] winname can be empty if the trackbar is attached to the control +panel. + +@param trackbarname Name of the trackbar. +@param winname Name of the window that is the parent of trackbar. +@param pos New position. + */ +CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos); + +/** @brief Sets the trackbar maximum position. + +The function sets the maximum position of the specified trackbar in the specified window. + +@note + +[__Qt Backend Only__] winname can be empty if the trackbar is attached to the control +panel. + +@param trackbarname Name of the trackbar. +@param winname Name of the window that is the parent of trackbar. +@param maxval New maximum position. + */ +CV_EXPORTS_W void setTrackbarMax(const String& trackbarname, const String& winname, int maxval); + +/** @brief Sets the trackbar minimum position. + +The function sets the minimum position of the specified trackbar in the specified window. + +@note + +[__Qt Backend Only__] winname can be empty if the trackbar is attached to the control +panel. + +@param trackbarname Name of the trackbar. +@param winname Name of the window that is the parent of trackbar. +@param minval New minimum position. + */ +CV_EXPORTS_W void setTrackbarMin(const String& trackbarname, const String& winname, int minval); + +//! @addtogroup highgui_opengl OpenGL support +//! @{ + +/** @brief Displays OpenGL 2D texture in the specified window. + +@param winname Name of the window. +@param tex OpenGL 2D texture data. + */ +CV_EXPORTS void imshow(const String& winname, const ogl::Texture2D& tex); + +/** @brief Sets a callback function to be called to draw on top of displayed image. + +The function setOpenGlDrawCallback can be used to draw 3D data on the window. See the example of +callback function below: +@code + void on_opengl(void* param) + { + glLoadIdentity(); + + glTranslated(0.0, 0.0, -1.0); + + glRotatef( 55, 1, 0, 0 ); + glRotatef( 45, 0, 1, 0 ); + glRotatef( 0, 0, 0, 1 ); + + static const int coords[6][4][3] = { + { { +1, -1, -1 }, { -1, -1, -1 }, { -1, +1, -1 }, { +1, +1, -1 } }, + { { +1, +1, -1 }, { -1, +1, -1 }, { -1, +1, +1 }, { +1, +1, +1 } }, + { { +1, -1, +1 }, { +1, -1, -1 }, { +1, +1, -1 }, { +1, +1, +1 } }, + { { -1, -1, -1 }, { -1, -1, +1 }, { -1, +1, +1 }, { -1, +1, -1 } }, + { { +1, -1, +1 }, { -1, -1, +1 }, { -1, -1, -1 }, { +1, -1, -1 } }, + { { -1, -1, +1 }, { +1, -1, +1 }, { +1, +1, +1 }, { -1, +1, +1 } } + }; + + for (int i = 0; i < 6; ++i) { + glColor3ub( i*20, 100+i*10, i*42 ); + glBegin(GL_QUADS); + for (int j = 0; j < 4; ++j) { + glVertex3d(0.2 * coords[i][j][0], 0.2 * coords[i][j][1], 0.2 * coords[i][j][2]); + } + glEnd(); + } + } +@endcode + +@param winname Name of the window. +@param onOpenGlDraw Pointer to the function to be called every frame. This function should be +prototyped as void Foo(void\*) . +@param userdata Pointer passed to the callback function.(__Optional__) + */ +CV_EXPORTS void setOpenGlDrawCallback(const String& winname, OpenGlDrawCallback onOpenGlDraw, void* userdata = 0); + +/** @brief Sets the specified window as current OpenGL context. + +@param winname Name of the window. + */ +CV_EXPORTS void setOpenGlContext(const String& winname); + +/** @brief Force window to redraw its context and call draw callback ( See cv::setOpenGlDrawCallback ). + +@param winname Name of the window. + */ +CV_EXPORTS void updateWindow(const String& winname); + +//! @} highgui_opengl + +//! @addtogroup highgui_qt +//! @{ + +/** @brief QtFont available only for Qt. See cv::fontQt + */ +struct QtFont +{ + const char* nameFont; //!< Name of the font + Scalar color; //!< Color of the font. Scalar(blue_component, green_component, red_component[, alpha_component]) + int font_face; //!< See cv::QtFontStyles + const int* ascii; //!< font data and metrics + const int* greek; + const int* cyrillic; + float hscale, vscale; + float shear; //!< slope coefficient: 0 - normal, >0 - italic + int thickness; //!< See cv::QtFontWeights + float dx; //!< horizontal interval between letters + int line_type; //!< PointSize +}; + +/** @brief Creates the font to draw a text on an image. + +The function fontQt creates a cv::QtFont object. This cv::QtFont is not compatible with putText . + +A basic usage of this function is the following: : +@code + QtFont font = fontQt("Times"); + addText( img1, "Hello World !", Point(50,50), font); +@endcode + +@param nameFont Name of the font. The name should match the name of a system font (such as +*Times*). If the font is not found, a default one is used. +@param pointSize Size of the font. If not specified, equal zero or negative, the point size of the +font is set to a system-dependent default value. Generally, this is 12 points. +@param color Color of the font in BGRA where A = 255 is fully transparent. Use the macro CV_RGB +for simplicity. +@param weight Font weight. Available operation flags are : cv::QtFontWeights You can also specify a positive integer for better control. +@param style Font style. Available operation flags are : cv::QtFontStyles +@param spacing Spacing between characters. It can be negative or positive. + */ +CV_EXPORTS QtFont fontQt(const String& nameFont, int pointSize = -1, + Scalar color = Scalar::all(0), int weight = QT_FONT_NORMAL, + int style = QT_STYLE_NORMAL, int spacing = 0); + +/** @brief Draws a text on the image. + +The function addText draws *text* on the image *img* using a specific font *font* (see example cv::fontQt +) + +@param img 8-bit 3-channel image where the text should be drawn. +@param text Text to write on an image. +@param org Point(x,y) where the text should start on an image. +@param font Font to use to draw a text. + */ +CV_EXPORTS void addText( const Mat& img, const String& text, Point org, const QtFont& font); + +/** @brief Draws a text on the image. + +@param img 8-bit 3-channel image where the text should be drawn. +@param text Text to write on an image. +@param org Point(x,y) where the text should start on an image. +@param nameFont Name of the font. The name should match the name of a system font (such as +*Times*). If the font is not found, a default one is used. +@param pointSize Size of the font. If not specified, equal zero or negative, the point size of the +font is set to a system-dependent default value. Generally, this is 12 points. +@param color Color of the font in BGRA where A = 255 is fully transparent. +@param weight Font weight. Available operation flags are : cv::QtFontWeights You can also specify a positive integer for better control. +@param style Font style. Available operation flags are : cv::QtFontStyles +@param spacing Spacing between characters. It can be negative or positive. + */ +CV_EXPORTS_W void addText(const Mat& img, const String& text, Point org, const String& nameFont, int pointSize = -1, Scalar color = Scalar::all(0), + int weight = QT_FONT_NORMAL, int style = QT_STYLE_NORMAL, int spacing = 0); + +/** @brief Displays a text on a window image as an overlay for a specified duration. + +The function displayOverlay displays useful information/tips on top of the window for a certain +amount of time *delayms*. The function does not modify the image, displayed in the window, that is, +after the specified delay the original content of the window is restored. + +@param winname Name of the window. +@param text Overlay text to write on a window image. +@param delayms The period (in milliseconds), during which the overlay text is displayed. If this +function is called before the previous overlay text timed out, the timer is restarted and the text +is updated. If this value is zero, the text never disappears. + */ +CV_EXPORTS_W void displayOverlay(const String& winname, const String& text, int delayms = 0); + +/** @brief Displays a text on the window statusbar during the specified period of time. + +The function displayStatusBar displays useful information/tips on top of the window for a certain +amount of time *delayms* . This information is displayed on the window statusbar (the window must be +created with the CV_GUI_EXPANDED flags). + +@param winname Name of the window. +@param text Text to write on the window statusbar. +@param delayms Duration (in milliseconds) to display the text. If this function is called before +the previous text timed out, the timer is restarted and the text is updated. If this value is +zero, the text never disappears. + */ +CV_EXPORTS_W void displayStatusBar(const String& winname, const String& text, int delayms = 0); + +/** @brief Saves parameters of the specified window. + +The function saveWindowParameters saves size, location, flags, trackbars value, zoom and panning +location of the window windowName. + +@param windowName Name of the window. + */ +CV_EXPORTS void saveWindowParameters(const String& windowName); + +/** @brief Loads parameters of the specified window. + +The function loadWindowParameters loads size, location, flags, trackbars value, zoom and panning +location of the window windowName. + +@param windowName Name of the window. + */ +CV_EXPORTS void loadWindowParameters(const String& windowName); + +CV_EXPORTS int startLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]); + +CV_EXPORTS void stopLoop(); + +/** @brief Attaches a button to the control panel. + +The function createButton attaches a button to the control panel. Each button is added to a +buttonbar to the right of the last button. A new buttonbar is created if nothing was attached to the +control panel before, or if the last element attached to the control panel was a trackbar or if the +QT_NEW_BUTTONBAR flag is added to the type. + +See below various examples of the cv::createButton function call: : +@code + createButton("",callbackButton);//create a push button "button 0", that will call callbackButton. + createButton("button2",callbackButton,NULL,QT_CHECKBOX,0); + createButton("button3",callbackButton,&value); + createButton("button5",callbackButton1,NULL,QT_RADIOBOX); + createButton("button6",callbackButton2,NULL,QT_PUSH_BUTTON,1); + createButton("button6",callbackButton2,NULL,QT_PUSH_BUTTON|QT_NEW_BUTTONBAR);// create a push button in a new row +@endcode + +@param bar_name Name of the button. +@param on_change Pointer to the function to be called every time the button changes its state. +This function should be prototyped as void Foo(int state,\*void); . *state* is the current state +of the button. It could be -1 for a push button, 0 or 1 for a check/radio box button. +@param userdata Pointer passed to the callback function. +@param type Optional type of the button. Available types are: (cv::QtButtonTypes) +@param initial_button_state Default state of the button. Use for checkbox and radiobox. Its +value could be 0 or 1. (__Optional__) +*/ +CV_EXPORTS int createButton( const String& bar_name, ButtonCallback on_change, + void* userdata = 0, int type = QT_PUSH_BUTTON, + bool initial_button_state = false); + +//! @} highgui_qt + +//! @} highgui + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui.hpp b/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui.hpp new file mode 100644 index 0000000..160c9cf --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/highgui.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui_c.h b/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui_c.h new file mode 100644 index 0000000..5d20b95 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/highgui/highgui_c.h @@ -0,0 +1,256 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_HIGHGUI_H +#define OPENCV_HIGHGUI_H + +#include "opencv2/core/core_c.h" +#include "opencv2/imgproc/imgproc_c.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup highgui_c + @{ + */ + +/****************************************************************************************\ +* Basic GUI functions * +\****************************************************************************************/ +//YV +//-----------New for Qt +/* For font */ +enum { CV_FONT_LIGHT = 25,//QFont::Light, + CV_FONT_NORMAL = 50,//QFont::Normal, + CV_FONT_DEMIBOLD = 63,//QFont::DemiBold, + CV_FONT_BOLD = 75,//QFont::Bold, + CV_FONT_BLACK = 87 //QFont::Black +}; + +enum { CV_STYLE_NORMAL = 0,//QFont::StyleNormal, + CV_STYLE_ITALIC = 1,//QFont::StyleItalic, + CV_STYLE_OBLIQUE = 2 //QFont::StyleOblique +}; +/* ---------*/ + +//for color cvScalar(blue_component, green_component, red_component[, alpha_component]) +//and alpha= 0 <-> 0xFF (not transparent <-> transparent) +CVAPI(CvFont) cvFontQt(const char* nameFont, int pointSize CV_DEFAULT(-1), CvScalar color CV_DEFAULT(cvScalarAll(0)), int weight CV_DEFAULT(CV_FONT_NORMAL), int style CV_DEFAULT(CV_STYLE_NORMAL), int spacing CV_DEFAULT(0)); + +CVAPI(void) cvAddText(const CvArr* img, const char* text, CvPoint org, CvFont *arg2); + +CVAPI(void) cvDisplayOverlay(const char* name, const char* text, int delayms CV_DEFAULT(0)); +CVAPI(void) cvDisplayStatusBar(const char* name, const char* text, int delayms CV_DEFAULT(0)); + +CVAPI(void) cvSaveWindowParameters(const char* name); +CVAPI(void) cvLoadWindowParameters(const char* name); +CVAPI(int) cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]); +CVAPI(void) cvStopLoop( void ); + +typedef void (CV_CDECL *CvButtonCallback)(int state, void* userdata); +enum {CV_PUSH_BUTTON = 0, CV_CHECKBOX = 1, CV_RADIOBOX = 2}; +CVAPI(int) cvCreateButton( const char* button_name CV_DEFAULT(NULL),CvButtonCallback on_change CV_DEFAULT(NULL), void* userdata CV_DEFAULT(NULL) , int button_type CV_DEFAULT(CV_PUSH_BUTTON), int initial_button_state CV_DEFAULT(0)); +//---------------------- + + +/* this function is used to set some external parameters in case of X Window */ +CVAPI(int) cvInitSystem( int argc, char** argv ); + +CVAPI(int) cvStartWindowThread( void ); + +// --------- YV --------- +enum +{ + //These 3 flags are used by cvSet/GetWindowProperty + CV_WND_PROP_FULLSCREEN = 0, //to change/get window's fullscreen property + CV_WND_PROP_AUTOSIZE = 1, //to change/get window's autosize property + CV_WND_PROP_ASPECTRATIO= 2, //to change/get window's aspectratio property + CV_WND_PROP_OPENGL = 3, //to change/get window's opengl support + CV_WND_PROP_VISIBLE = 4, + + //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty + CV_WINDOW_NORMAL = 0x00000000, //the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size + CV_WINDOW_AUTOSIZE = 0x00000001, //the user cannot resize the window, the size is constrainted by the image displayed + CV_WINDOW_OPENGL = 0x00001000, //window with opengl support + + //Those flags are only for Qt + CV_GUI_EXPANDED = 0x00000000, //status bar and tool bar + CV_GUI_NORMAL = 0x00000010, //old fashious way + + //These 3 flags are used by cvNamedWindow and cvSet/GetWindowProperty + CV_WINDOW_FULLSCREEN = 1,//change the window to fullscreen + CV_WINDOW_FREERATIO = 0x00000100,//the image expends as much as it can (no ratio constraint) + CV_WINDOW_KEEPRATIO = 0x00000000//the ration image is respected. +}; + +/* create window */ +CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) ); + +/* Set and Get Property of the window */ +CVAPI(void) cvSetWindowProperty(const char* name, int prop_id, double prop_value); +CVAPI(double) cvGetWindowProperty(const char* name, int prop_id); + +#ifdef __cplusplus // FIXIT remove in OpenCV 4.0 +/* Get window image rectangle coordinates, width and height */ +CVAPI(cv::Rect)cvGetWindowImageRect(const char* name); +#endif + +/* display image within window (highgui windows remember their content) */ +CVAPI(void) cvShowImage( const char* name, const CvArr* image ); + +/* resize/move window */ +CVAPI(void) cvResizeWindow( const char* name, int width, int height ); +CVAPI(void) cvMoveWindow( const char* name, int x, int y ); + + +/* destroy window and all the trackers associated with it */ +CVAPI(void) cvDestroyWindow( const char* name ); + +CVAPI(void) cvDestroyAllWindows(void); + +/* get native window handle (HWND in case of Win32 and Widget in case of X Window) */ +CVAPI(void*) cvGetWindowHandle( const char* name ); + +/* get name of highgui window given its native handle */ +CVAPI(const char*) cvGetWindowName( void* window_handle ); + + +typedef void (CV_CDECL *CvTrackbarCallback)(int pos); + +/* create trackbar and display it on top of given window, set callback */ +CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name, + int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL)); + +typedef void (CV_CDECL *CvTrackbarCallback2)(int pos, void* userdata); + +CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name, + int* value, int count, CvTrackbarCallback2 on_change, + void* userdata CV_DEFAULT(0)); + +/* retrieve or set trackbar position */ +CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name ); +CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos ); +CVAPI(void) cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval); +CVAPI(void) cvSetTrackbarMin(const char* trackbar_name, const char* window_name, int minval); + +enum +{ + CV_EVENT_MOUSEMOVE =0, + CV_EVENT_LBUTTONDOWN =1, + CV_EVENT_RBUTTONDOWN =2, + CV_EVENT_MBUTTONDOWN =3, + CV_EVENT_LBUTTONUP =4, + CV_EVENT_RBUTTONUP =5, + CV_EVENT_MBUTTONUP =6, + CV_EVENT_LBUTTONDBLCLK =7, + CV_EVENT_RBUTTONDBLCLK =8, + CV_EVENT_MBUTTONDBLCLK =9, + CV_EVENT_MOUSEWHEEL =10, + CV_EVENT_MOUSEHWHEEL =11 +}; + +enum +{ + CV_EVENT_FLAG_LBUTTON =1, + CV_EVENT_FLAG_RBUTTON =2, + CV_EVENT_FLAG_MBUTTON =4, + CV_EVENT_FLAG_CTRLKEY =8, + CV_EVENT_FLAG_SHIFTKEY =16, + CV_EVENT_FLAG_ALTKEY =32 +}; + + +#define CV_GET_WHEEL_DELTA(flags) ((short)((flags >> 16) & 0xffff)) // upper 16 bits + +typedef void (CV_CDECL *CvMouseCallback )(int event, int x, int y, int flags, void* param); + +/* assign callback for mouse events */ +CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, + void* param CV_DEFAULT(NULL)); + +/* wait for key event infinitely (delay<=0) or for "delay" milliseconds */ +CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0)); + +// OpenGL support + +typedef void (CV_CDECL *CvOpenGlDrawCallback)(void* userdata); +CVAPI(void) cvSetOpenGlDrawCallback(const char* window_name, CvOpenGlDrawCallback callback, void* userdata CV_DEFAULT(NULL)); + +CVAPI(void) cvSetOpenGlContext(const char* window_name); +CVAPI(void) cvUpdateWindow(const char* window_name); + + +/****************************************************************************************\ + +* Obsolete functions/synonyms * +\****************************************************************************************/ + +#define cvAddSearchPath(path) +#define cvvInitSystem cvInitSystem +#define cvvNamedWindow cvNamedWindow +#define cvvShowImage cvShowImage +#define cvvResizeWindow cvResizeWindow +#define cvvDestroyWindow cvDestroyWindow +#define cvvCreateTrackbar cvCreateTrackbar +#define cvvAddSearchPath cvAddSearchPath +#define cvvWaitKey(name) cvWaitKey(0) +#define cvvWaitKeyEx(name,delay) cvWaitKey(delay) +#define HG_AUTOSIZE CV_WINDOW_AUTOSIZE +#define set_preprocess_func cvSetPreprocessFuncWin32 +#define set_postprocess_func cvSetPostprocessFuncWin32 + +#if defined _WIN32 + +CVAPI(void) cvSetPreprocessFuncWin32_(const void* callback); +CVAPI(void) cvSetPostprocessFuncWin32_(const void* callback); +#define cvSetPreprocessFuncWin32(callback) cvSetPreprocessFuncWin32_((const void*)(callback)) +#define cvSetPostprocessFuncWin32(callback) cvSetPostprocessFuncWin32_((const void*)(callback)) + +#endif + +/** @} highgui_c */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgcodecs.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs.hpp new file mode 100644 index 0000000..143926b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs.hpp @@ -0,0 +1,277 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_IMGCODECS_HPP +#define OPENCV_IMGCODECS_HPP + +#include "opencv2/core.hpp" + +/** + @defgroup imgcodecs Image file reading and writing + @{ + @defgroup imgcodecs_c C API + @defgroup imgcodecs_ios iOS glue + @} +*/ + +//////////////////////////////// image codec //////////////////////////////// +namespace cv +{ + +//! @addtogroup imgcodecs +//! @{ + +//! Imread flags +enum ImreadModes { + IMREAD_UNCHANGED = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). + IMREAD_GRAYSCALE = 0, //!< If set, always convert image to the single channel grayscale image (codec internal conversion). + IMREAD_COLOR = 1, //!< If set, always convert image to the 3 channel BGR color image. + IMREAD_ANYDEPTH = 2, //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. + IMREAD_ANYCOLOR = 4, //!< If set, the image is read in any possible color format. + IMREAD_LOAD_GDAL = 8, //!< If set, use the gdal driver for loading the image. + IMREAD_REDUCED_GRAYSCALE_2 = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2. + IMREAD_REDUCED_COLOR_2 = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2. + IMREAD_REDUCED_GRAYSCALE_4 = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4. + IMREAD_REDUCED_COLOR_4 = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4. + IMREAD_REDUCED_GRAYSCALE_8 = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8. + IMREAD_REDUCED_COLOR_8 = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8. + IMREAD_IGNORE_ORIENTATION = 128 //!< If set, do not rotate the image according to EXIF's orientation flag. + }; + +//! Imwrite flags +enum ImwriteFlags { + IMWRITE_JPEG_QUALITY = 1, //!< For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. + IMWRITE_JPEG_PROGRESSIVE = 2, //!< Enable JPEG features, 0 or 1, default is False. + IMWRITE_JPEG_OPTIMIZE = 3, //!< Enable JPEG features, 0 or 1, default is False. + IMWRITE_JPEG_RST_INTERVAL = 4, //!< JPEG restart interval, 0 - 65535, default is 0 - no restart. + IMWRITE_JPEG_LUMA_QUALITY = 5, //!< Separate luma quality level, 0 - 100, default is 0 - don't use. + IMWRITE_JPEG_CHROMA_QUALITY = 6, //!< Separate chroma quality level, 0 - 100, default is 0 - don't use. + IMWRITE_PNG_COMPRESSION = 16, //!< For PNG, it can be the compression level from 0 to 9. A higher value means a smaller size and longer compression time. If specified, strategy is changed to IMWRITE_PNG_STRATEGY_DEFAULT (Z_DEFAULT_STRATEGY). Default value is 1 (best speed setting). + IMWRITE_PNG_STRATEGY = 17, //!< One of cv::ImwritePNGFlags, default is IMWRITE_PNG_STRATEGY_RLE. + IMWRITE_PNG_BILEVEL = 18, //!< Binary level PNG, 0 or 1, default is 0. + IMWRITE_PXM_BINARY = 32, //!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1. + IMWRITE_EXR_TYPE = (3 << 4) + 0, /* 48 */ //!< override EXR storage type (FLOAT (FP32) is default) + IMWRITE_WEBP_QUALITY = 64, //!< For WEBP, it can be a quality from 1 to 100 (the higher is the better). By default (without any parameter) and for quality above 100 the lossless compression is used. + IMWRITE_PAM_TUPLETYPE = 128,//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format + IMWRITE_TIFF_RESUNIT = 256,//!< For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values + IMWRITE_TIFF_XDPI = 257,//!< For TIFF, use to specify the X direction DPI + IMWRITE_TIFF_YDPI = 258, //!< For TIFF, use to specify the Y direction DPI + IMWRITE_TIFF_COMPRESSION = 259, //!< For TIFF, use to specify the image compression scheme. See libtiff for integer constants corresponding to compression formats. Note, for images whose depth is CV_32F, only libtiff's SGILOG compression scheme is used. For other supported depths, the compression scheme can be specified by this flag; LZW compression is the default. + IMWRITE_JPEG2000_COMPRESSION_X1000 = 272 //!< For JPEG2000, use to specify the target compression rate (multiplied by 1000). The value can be from 0 to 1000. Default is 1000. + }; + +enum ImwriteEXRTypeFlags { + /*IMWRITE_EXR_TYPE_UNIT = 0, //!< not supported */ + IMWRITE_EXR_TYPE_HALF = 1, //!< store as HALF (FP16) + IMWRITE_EXR_TYPE_FLOAT = 2 //!< store as FP32 (default) + }; + +//! Imwrite PNG specific flags used to tune the compression algorithm. +/** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage. + +- The effect of IMWRITE_PNG_STRATEGY_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between IMWRITE_PNG_STRATEGY_DEFAULT and IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY. +- IMWRITE_PNG_STRATEGY_RLE is designed to be almost as fast as IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY, but give better compression for PNG image data. +- The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. +- IMWRITE_PNG_STRATEGY_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. +*/ +enum ImwritePNGFlags { + IMWRITE_PNG_STRATEGY_DEFAULT = 0, //!< Use this value for normal data. + IMWRITE_PNG_STRATEGY_FILTERED = 1, //!< Use this value for data produced by a filter (or predictor).Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. + IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, //!< Use this value to force Huffman encoding only (no string match). + IMWRITE_PNG_STRATEGY_RLE = 3, //!< Use this value to limit match distances to one (run-length encoding). + IMWRITE_PNG_STRATEGY_FIXED = 4 //!< Using this value prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. + }; + +//! Imwrite PAM specific tupletype flags used to define the 'TUPETYPE' field of a PAM file. +enum ImwritePAMFlags { + IMWRITE_PAM_FORMAT_NULL = 0, + IMWRITE_PAM_FORMAT_BLACKANDWHITE = 1, + IMWRITE_PAM_FORMAT_GRAYSCALE = 2, + IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = 3, + IMWRITE_PAM_FORMAT_RGB = 4, + IMWRITE_PAM_FORMAT_RGB_ALPHA = 5, + }; + +/** @brief Loads an image from a file. + +@anchor imread + +The function imread loads an image from the specified file and returns it. If the image cannot be +read (because of missing file, improper permissions, unsupported or invalid format), the function +returns an empty matrix ( Mat::data==NULL ). + +Currently, the following file formats are supported: + +- Windows bitmaps - \*.bmp, \*.dib (always supported) +- JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section) +- JPEG 2000 files - \*.jp2 (see the *Note* section) +- Portable Network Graphics - \*.png (see the *Note* section) +- WebP - \*.webp (see the *Note* section) +- Portable image format - \*.pbm, \*.pgm, \*.ppm \*.pxm, \*.pnm (always supported) +- PFM files - \*.pfm (see the *Note* section) +- Sun rasters - \*.sr, \*.ras (always supported) +- TIFF files - \*.tiff, \*.tif (see the *Note* section) +- OpenEXR Image files - \*.exr (see the *Note* section) +- Radiance HDR - \*.hdr, \*.pic (always supported) +- Raster and Vector geospatial data supported by GDAL (see the *Note* section) + +@note +- The function determines the type of an image by the content, not by the file extension. +- In the case of color images, the decoded images will have the channels stored in **B G R** order. +- When using IMREAD_GRAYSCALE, the codec's internal grayscale conversion will be used, if available. + Results may differ to the output of cvtColor() +- On Microsoft Windows\* OS and MacOSX\*, the codecs shipped with an OpenCV image (libjpeg, + libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs, + and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware + that currently these native image loaders give images with different pixel values because of + the color management embedded into MacOSX. +- On Linux\*, BSD flavors and other Unix-like open-source operating systems, OpenCV looks for + codecs supplied with an OS image. Install the relevant packages (do not forget the development + files, for example, "libjpeg-dev", in Debian\* and Ubuntu\*) to get the codec support or turn + on the OPENCV_BUILD_3RDPARTY_LIBS flag in CMake. +- In the case you set *WITH_GDAL* flag to true in CMake and @ref IMREAD_LOAD_GDAL to load the image, + then the [GDAL](http://www.gdal.org) driver will be used in order to decode the image, supporting + the following formats: [Raster](http://www.gdal.org/formats_list.html), + [Vector](http://www.gdal.org/ogr_formats.html). +- If EXIF information are embedded in the image file, the EXIF orientation will be taken into account + and thus the image will be rotated accordingly except if the flag @ref IMREAD_IGNORE_ORIENTATION is passed. +- Use the IMREAD_UNCHANGED flag to keep the floating point values from PFM image. +- By default number of pixels must be less than 2^30. Limit can be set using system + variable OPENCV_IO_MAX_IMAGE_PIXELS + +@param filename Name of file to be loaded. +@param flags Flag that can take values of cv::ImreadModes +*/ +CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); + +/** @brief Loads a multi-page image from a file. + +The function imreadmulti loads a multi-page image from the specified file into a vector of Mat objects. +@param filename Name of file to be loaded. +@param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. +@param mats A vector of Mat objects holding each page, if more than one. +@sa cv::imread +*/ +CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector& mats, int flags = IMREAD_ANYCOLOR); + +/** @brief Saves an image to a specified file. + +The function imwrite saves the image to the specified file. The image format is chosen based on the +filename extension (see cv::imread for the list of extensions). In general, only 8-bit +single-channel or 3-channel (with 'BGR' channel order) images +can be saved using this function, with these exceptions: + +- 16-bit unsigned (CV_16U) images can be saved in the case of PNG, JPEG 2000, and TIFF formats +- 32-bit float (CV_32F) images can be saved in PFM, TIFF, OpenEXR, and Radiance HDR formats; + 3-channel (CV_32FC3) TIFF images will be saved using the LogLuv high dynamic range encoding + (4 bytes per pixel) +- PNG images with an alpha channel can be saved using this function. To do this, create +8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels +should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535 (see the code sample below). + +If the format, depth or channel order is different, use +Mat::convertTo and cv::cvtColor to convert it before saving. Or, use the universal FileStorage I/O +functions to save the image to XML or YAML format. + +The sample below shows how to create a BGRA image and save it to a PNG file. It also demonstrates how to set custom +compression parameters: +@include snippets/imgcodecs_imwrite.cpp +@param filename Name of the file. +@param img Image to be saved. +@param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags +*/ +CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, + const std::vector& params = std::vector()); + +/** @brief Reads an image from a buffer in memory. + +The function imdecode reads an image from the specified buffer in the memory. If the buffer is too short or +contains invalid data, the function returns an empty matrix ( Mat::data==NULL ). + +See cv::imread for the list of supported formats and flags description. + +@note In the case of color images, the decoded images will have the channels stored in **B G R** order. +@param buf Input array or vector of bytes. +@param flags The same flags as in cv::imread, see cv::ImreadModes. +*/ +CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); + +/** @overload +@param buf +@param flags +@param dst The optional output placeholder for the decoded matrix. It can save the image +reallocations when the function is called repeatedly for images of the same size. +*/ +CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); + +/** @brief Encodes an image into a memory buffer. + +The function imencode compresses the image and stores it in the memory buffer that is resized to fit the +result. See cv::imwrite for the list of supported formats and flags description. + +@param ext File extension that defines the output format. +@param img Image to be written. +@param buf Output buffer resized to fit the compressed image. +@param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. +*/ +CV_EXPORTS_W bool imencode( const String& ext, InputArray img, + CV_OUT std::vector& buf, + const std::vector& params = std::vector()); + +/** @brief Returns true if the specified image can be decoded by OpenCV + +@param filename File name of the image +*/ +CV_EXPORTS_W bool haveImageReader( const String& filename ); + +/** @brief Returns true if an image with the specified filename can be encoded by OpenCV + + @param filename File name of the image + */ +CV_EXPORTS_W bool haveImageWriter( const String& filename ); + + +//! @} imgcodecs + +} // cv + +#endif //OPENCV_IMGCODECS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs.hpp new file mode 100644 index 0000000..a3cd232 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/imgcodecs.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs_c.h b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs_c.h new file mode 100644 index 0000000..5c13e55 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/imgcodecs_c.h @@ -0,0 +1 @@ +#error "This header with legacy C API declarations has been removed from OpenCV. Legacy contants are available from legacy/constants_c.h file." diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/ios.h b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/ios.h new file mode 100644 index 0000000..a90c6d3 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/ios.h @@ -0,0 +1,57 @@ + +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#import +#import +#import +#import +#include "opencv2/core/core.hpp" + +//! @addtogroup imgcodecs_ios +//! @{ + +CV_EXPORTS UIImage* MatToUIImage(const cv::Mat& image); +CV_EXPORTS void UIImageToMat(const UIImage* image, + cv::Mat& m, bool alphaExist = false); + +//! @} diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/legacy/constants_c.h b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/legacy/constants_c.h new file mode 100644 index 0000000..de7be4f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgcodecs/legacy/constants_c.h @@ -0,0 +1,54 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_IMGCODECS_LEGACY_CONSTANTS_H +#define OPENCV_IMGCODECS_LEGACY_CONSTANTS_H + +/* duplicate of "ImreadModes" enumeration for better compatibility with OpenCV 3.x */ +enum +{ +/* 8bit, color or not */ + CV_LOAD_IMAGE_UNCHANGED =-1, +/* 8bit, gray */ + CV_LOAD_IMAGE_GRAYSCALE =0, +/* ?, color */ + CV_LOAD_IMAGE_COLOR =1, +/* any depth, ? */ + CV_LOAD_IMAGE_ANYDEPTH =2, +/* ?, any color */ + CV_LOAD_IMAGE_ANYCOLOR =4, +/* ?, no rotate */ + CV_LOAD_IMAGE_IGNORE_ORIENTATION =128 +}; + +/* duplicate of "ImwriteFlags" enumeration for better compatibility with OpenCV 3.x */ +enum +{ + CV_IMWRITE_JPEG_QUALITY =1, + CV_IMWRITE_JPEG_PROGRESSIVE =2, + CV_IMWRITE_JPEG_OPTIMIZE =3, + CV_IMWRITE_JPEG_RST_INTERVAL =4, + CV_IMWRITE_JPEG_LUMA_QUALITY =5, + CV_IMWRITE_JPEG_CHROMA_QUALITY =6, + CV_IMWRITE_PNG_COMPRESSION =16, + CV_IMWRITE_PNG_STRATEGY =17, + CV_IMWRITE_PNG_BILEVEL =18, + CV_IMWRITE_PNG_STRATEGY_DEFAULT =0, + CV_IMWRITE_PNG_STRATEGY_FILTERED =1, + CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY =2, + CV_IMWRITE_PNG_STRATEGY_RLE =3, + CV_IMWRITE_PNG_STRATEGY_FIXED =4, + CV_IMWRITE_PXM_BINARY =32, + CV_IMWRITE_EXR_TYPE = 48, + CV_IMWRITE_WEBP_QUALITY =64, + CV_IMWRITE_PAM_TUPLETYPE = 128, + CV_IMWRITE_PAM_FORMAT_NULL = 0, + CV_IMWRITE_PAM_FORMAT_BLACKANDWHITE = 1, + CV_IMWRITE_PAM_FORMAT_GRAYSCALE = 2, + CV_IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = 3, + CV_IMWRITE_PAM_FORMAT_RGB = 4, + CV_IMWRITE_PAM_FORMAT_RGB_ALPHA = 5, +}; + +#endif // OPENCV_IMGCODECS_LEGACY_CONSTANTS_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgproc.hpp new file mode 100644 index 0000000..26fbbbd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc.hpp @@ -0,0 +1,4758 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_IMGPROC_HPP +#define OPENCV_IMGPROC_HPP + +#include "opencv2/core.hpp" + +/** + @defgroup imgproc Image Processing + +This module includes image-processing functions. + + @{ + @defgroup imgproc_filter Image Filtering + +Functions and classes described in this section are used to perform various linear or non-linear +filtering operations on 2D images (represented as Mat's). It means that for each pixel location +\f$(x,y)\f$ in the source image (normally, rectangular), its neighborhood is considered and used to +compute the response. In case of a linear filter, it is a weighted sum of pixel values. In case of +morphological operations, it is the minimum or maximum values, and so on. The computed response is +stored in the destination image at the same location \f$(x,y)\f$. It means that the output image +will be of the same size as the input image. Normally, the functions support multi-channel arrays, +in which case every channel is processed independently. Therefore, the output image will also have +the same number of channels as the input one. + +Another common feature of the functions and classes described in this section is that, unlike +simple arithmetic functions, they need to extrapolate values of some non-existing pixels. For +example, if you want to smooth an image using a Gaussian \f$3 \times 3\f$ filter, then, when +processing the left-most pixels in each row, you need pixels to the left of them, that is, outside +of the image. You can let these pixels be the same as the left-most image pixels ("replicated +border" extrapolation method), or assume that all the non-existing pixels are zeros ("constant +border" extrapolation method), and so on. OpenCV enables you to specify the extrapolation method. +For details, see #BorderTypes + +@anchor filter_depths +### Depth combinations +Input depth (src.depth()) | Output depth (ddepth) +--------------------------|---------------------- +CV_8U | -1/CV_16S/CV_32F/CV_64F +CV_16U/CV_16S | -1/CV_32F/CV_64F +CV_32F | -1/CV_32F/CV_64F +CV_64F | -1/CV_64F + +@note when ddepth=-1, the output image will have the same depth as the source. + + @defgroup imgproc_transform Geometric Image Transformations + +The functions in this section perform various geometrical transformations of 2D images. They do not +change the image content but deform the pixel grid and map this deformed grid to the destination +image. In fact, to avoid sampling artifacts, the mapping is done in the reverse order, from +destination to the source. That is, for each pixel \f$(x, y)\f$ of the destination image, the +functions compute coordinates of the corresponding "donor" pixel in the source image and copy the +pixel value: + +\f[\texttt{dst} (x,y)= \texttt{src} (f_x(x,y), f_y(x,y))\f] + +In case when you specify the forward mapping \f$\left: \texttt{src} \rightarrow +\texttt{dst}\f$, the OpenCV functions first compute the corresponding inverse mapping +\f$\left: \texttt{dst} \rightarrow \texttt{src}\f$ and then use the above formula. + +The actual implementations of the geometrical transformations, from the most generic remap and to +the simplest and the fastest resize, need to solve two main problems with the above formula: + +- Extrapolation of non-existing pixels. Similarly to the filtering functions described in the +previous section, for some \f$(x,y)\f$, either one of \f$f_x(x,y)\f$, or \f$f_y(x,y)\f$, or both +of them may fall outside of the image. In this case, an extrapolation method needs to be used. +OpenCV provides the same selection of extrapolation methods as in the filtering functions. In +addition, it provides the method #BORDER_TRANSPARENT. This means that the corresponding pixels in +the destination image will not be modified at all. + +- Interpolation of pixel values. Usually \f$f_x(x,y)\f$ and \f$f_y(x,y)\f$ are floating-point +numbers. This means that \f$\left\f$ can be either an affine or perspective +transformation, or radial lens distortion correction, and so on. So, a pixel value at fractional +coordinates needs to be retrieved. In the simplest case, the coordinates can be just rounded to the +nearest integer coordinates and the corresponding pixel can be used. This is called a +nearest-neighbor interpolation. However, a better result can be achieved by using more +sophisticated [interpolation methods](http://en.wikipedia.org/wiki/Multivariate_interpolation) , +where a polynomial function is fit into some neighborhood of the computed pixel \f$(f_x(x,y), +f_y(x,y))\f$, and then the value of the polynomial at \f$(f_x(x,y), f_y(x,y))\f$ is taken as the +interpolated pixel value. In OpenCV, you can choose between several interpolation methods. See +resize for details. + +@note The geometrical transformations do not work with `CV_8S` or `CV_32S` images. + + @defgroup imgproc_misc Miscellaneous Image Transformations + @defgroup imgproc_draw Drawing Functions + +Drawing functions work with matrices/images of arbitrary depth. The boundaries of the shapes can be +rendered with antialiasing (implemented only for 8-bit images for now). All the functions include +the parameter color that uses an RGB value (that may be constructed with the Scalar constructor ) +for color images and brightness for grayscale images. For color images, the channel ordering is +normally *Blue, Green, Red*. This is what imshow, imread, and imwrite expect. So, if you form a +color using the Scalar constructor, it should look like: + +\f[\texttt{Scalar} (blue \_ component, green \_ component, red \_ component[, alpha \_ component])\f] + +If you are using your own image rendering and I/O functions, you can use any channel ordering. The +drawing functions process each channel independently and do not depend on the channel order or even +on the used color space. The whole image can be converted from BGR to RGB or to a different color +space using cvtColor . + +If a drawn figure is partially or completely outside the image, the drawing functions clip it. Also, +many drawing functions can handle pixel coordinates specified with sub-pixel accuracy. This means +that the coordinates can be passed as fixed-point numbers encoded as integers. The number of +fractional bits is specified by the shift parameter and the real point coordinates are calculated as +\f$\texttt{Point}(x,y)\rightarrow\texttt{Point2f}(x*2^{-shift},y*2^{-shift})\f$ . This feature is +especially effective when rendering antialiased shapes. + +@note The functions do not support alpha-transparency when the target image is 4-channel. In this +case, the color[3] is simply copied to the repainted pixels. Thus, if you want to paint +semi-transparent shapes, you can paint them in a separate buffer and then blend it with the main +image. + + @defgroup imgproc_color_conversions Color Space Conversions + @defgroup imgproc_colormap ColorMaps in OpenCV + +The human perception isn't built for observing fine changes in grayscale images. Human eyes are more +sensitive to observing changes between colors, so you often need to recolor your grayscale images to +get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your +computer vision application. + +In OpenCV you only need applyColorMap to apply a colormap on a given image. The following sample +code reads the path to an image from command line, applies a Jet colormap on it and shows the +result: + +@include snippets/imgproc_applyColorMap.cpp + +@see #ColormapTypes + + @defgroup imgproc_subdiv2d Planar Subdivision + +The Subdiv2D class described in this section is used to perform various planar subdivision on +a set of 2D points (represented as vector of Point2f). OpenCV subdivides a plane into triangles +using the Delaunay's algorithm, which corresponds to the dual graph of the Voronoi diagram. +In the figure below, the Delaunay's triangulation is marked with black lines and the Voronoi +diagram with red lines. + +![Delaunay triangulation (black) and Voronoi (red)](pics/delaunay_voronoi.png) + +The subdivisions can be used for the 3D piece-wise transformation of a plane, morphing, fast +location of points on the plane, building special graphs (such as NNG,RNG), and so forth. + + @defgroup imgproc_hist Histograms + @defgroup imgproc_shape Structural Analysis and Shape Descriptors + @defgroup imgproc_motion Motion Analysis and Object Tracking + @defgroup imgproc_feature Feature Detection + @defgroup imgproc_object Object Detection + @defgroup imgproc_c C API + @defgroup imgproc_hal Hardware Acceleration Layer + @{ + @defgroup imgproc_hal_functions Functions + @defgroup imgproc_hal_interface Interface + @} + @} +*/ + +namespace cv +{ + +/** @addtogroup imgproc +@{ +*/ + +//! @addtogroup imgproc_filter +//! @{ + +enum SpecialFilter { + FILTER_SCHARR = -1 +}; + +//! type of morphological operation +enum MorphTypes{ + MORPH_ERODE = 0, //!< see #erode + MORPH_DILATE = 1, //!< see #dilate + MORPH_OPEN = 2, //!< an opening operation + //!< \f[\texttt{dst} = \mathrm{open} ( \texttt{src} , \texttt{element} )= \mathrm{dilate} ( \mathrm{erode} ( \texttt{src} , \texttt{element} ))\f] + MORPH_CLOSE = 3, //!< a closing operation + //!< \f[\texttt{dst} = \mathrm{close} ( \texttt{src} , \texttt{element} )= \mathrm{erode} ( \mathrm{dilate} ( \texttt{src} , \texttt{element} ))\f] + MORPH_GRADIENT = 4, //!< a morphological gradient + //!< \f[\texttt{dst} = \mathrm{morph\_grad} ( \texttt{src} , \texttt{element} )= \mathrm{dilate} ( \texttt{src} , \texttt{element} )- \mathrm{erode} ( \texttt{src} , \texttt{element} )\f] + MORPH_TOPHAT = 5, //!< "top hat" + //!< \f[\texttt{dst} = \mathrm{tophat} ( \texttt{src} , \texttt{element} )= \texttt{src} - \mathrm{open} ( \texttt{src} , \texttt{element} )\f] + MORPH_BLACKHAT = 6, //!< "black hat" + //!< \f[\texttt{dst} = \mathrm{blackhat} ( \texttt{src} , \texttt{element} )= \mathrm{close} ( \texttt{src} , \texttt{element} )- \texttt{src}\f] + MORPH_HITMISS = 7 //!< "hit or miss" + //!< .- Only supported for CV_8UC1 binary images. A tutorial can be found in the documentation +}; + +//! shape of the structuring element +enum MorphShapes { + MORPH_RECT = 0, //!< a rectangular structuring element: \f[E_{ij}=1\f] + MORPH_CROSS = 1, //!< a cross-shaped structuring element: + //!< \f[E_{ij} = \fork{1}{if i=\texttt{anchor.y} or j=\texttt{anchor.x}}{0}{otherwise}\f] + MORPH_ELLIPSE = 2 //!< an elliptic structuring element, that is, a filled ellipse inscribed + //!< into the rectangle Rect(0, 0, esize.width, 0.esize.height) +}; + +//! @} imgproc_filter + +//! @addtogroup imgproc_transform +//! @{ + +//! interpolation algorithm +enum InterpolationFlags{ + /** nearest neighbor interpolation */ + INTER_NEAREST = 0, + /** bilinear interpolation */ + INTER_LINEAR = 1, + /** bicubic interpolation */ + INTER_CUBIC = 2, + /** resampling using pixel area relation. It may be a preferred method for image decimation, as + it gives moire'-free results. But when the image is zoomed, it is similar to the INTER_NEAREST + method. */ + INTER_AREA = 3, + /** Lanczos interpolation over 8x8 neighborhood */ + INTER_LANCZOS4 = 4, + /** Bit exact bilinear interpolation */ + INTER_LINEAR_EXACT = 5, + /** mask for interpolation codes */ + INTER_MAX = 7, + /** flag, fills all of the destination image pixels. If some of them correspond to outliers in the + source image, they are set to zero */ + WARP_FILL_OUTLIERS = 8, + /** flag, inverse transformation + + For example, #linearPolar or #logPolar transforms: + - flag is __not__ set: \f$dst( \rho , \phi ) = src(x,y)\f$ + - flag is set: \f$dst(x,y) = src( \rho , \phi )\f$ + */ + WARP_INVERSE_MAP = 16 +}; + +/** \brief Specify the polar mapping mode +@sa warpPolar +*/ +enum WarpPolarMode +{ + WARP_POLAR_LINEAR = 0, ///< Remaps an image to/from polar space. + WARP_POLAR_LOG = 256 ///< Remaps an image to/from semilog-polar space. +}; + +enum InterpolationMasks { + INTER_BITS = 5, + INTER_BITS2 = INTER_BITS * 2, + INTER_TAB_SIZE = 1 << INTER_BITS, + INTER_TAB_SIZE2 = INTER_TAB_SIZE * INTER_TAB_SIZE + }; + +//! @} imgproc_transform + +//! @addtogroup imgproc_misc +//! @{ + +//! Distance types for Distance Transform and M-estimators +//! @see distanceTransform, fitLine +enum DistanceTypes { + DIST_USER = -1, //!< User defined distance + DIST_L1 = 1, //!< distance = |x1-x2| + |y1-y2| + DIST_L2 = 2, //!< the simple euclidean distance + DIST_C = 3, //!< distance = max(|x1-x2|,|y1-y2|) + DIST_L12 = 4, //!< L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) + DIST_FAIR = 5, //!< distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 + DIST_WELSCH = 6, //!< distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 + DIST_HUBER = 7 //!< distance = |x| \texttt{thresh}\)}{0}{otherwise}\f] + THRESH_BINARY_INV = 1, //!< \f[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{maxval}}{otherwise}\f] + THRESH_TRUNC = 2, //!< \f[\texttt{dst} (x,y) = \fork{\texttt{threshold}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\f] + THRESH_TOZERO = 3, //!< \f[\texttt{dst} (x,y) = \fork{\texttt{src}(x,y)}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\f] + THRESH_TOZERO_INV = 4, //!< \f[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\f] + THRESH_MASK = 7, + THRESH_OTSU = 8, //!< flag, use Otsu algorithm to choose the optimal threshold value + THRESH_TRIANGLE = 16 //!< flag, use Triangle algorithm to choose the optimal threshold value +}; + +//! adaptive threshold algorithm +//! @see adaptiveThreshold +enum AdaptiveThresholdTypes { + /** the threshold value \f$T(x,y)\f$ is a mean of the \f$\texttt{blockSize} \times + \texttt{blockSize}\f$ neighborhood of \f$(x, y)\f$ minus C */ + ADAPTIVE_THRESH_MEAN_C = 0, + /** the threshold value \f$T(x, y)\f$ is a weighted sum (cross-correlation with a Gaussian + window) of the \f$\texttt{blockSize} \times \texttt{blockSize}\f$ neighborhood of \f$(x, y)\f$ + minus C . The default sigma (standard deviation) is used for the specified blockSize . See + #getGaussianKernel*/ + ADAPTIVE_THRESH_GAUSSIAN_C = 1 +}; + +//! class of the pixel in GrabCut algorithm +enum GrabCutClasses { + GC_BGD = 0, //!< an obvious background pixels + GC_FGD = 1, //!< an obvious foreground (object) pixel + GC_PR_BGD = 2, //!< a possible background pixel + GC_PR_FGD = 3 //!< a possible foreground pixel +}; + +//! GrabCut algorithm flags +enum GrabCutModes { + /** The function initializes the state and the mask using the provided rectangle. After that it + runs iterCount iterations of the algorithm. */ + GC_INIT_WITH_RECT = 0, + /** The function initializes the state using the provided mask. Note that GC_INIT_WITH_RECT + and GC_INIT_WITH_MASK can be combined. Then, all the pixels outside of the ROI are + automatically initialized with GC_BGD .*/ + GC_INIT_WITH_MASK = 1, + /** The value means that the algorithm should just resume. */ + GC_EVAL = 2, + /** The value means that the algorithm should just run the grabCut algorithm (a single iteration) with the fixed model */ + GC_EVAL_FREEZE_MODEL = 3 +}; + +//! distanceTransform algorithm flags +enum DistanceTransformLabelTypes { + /** each connected component of zeros in src (as well as all the non-zero pixels closest to the + connected component) will be assigned the same label */ + DIST_LABEL_CCOMP = 0, + /** each zero pixel (and all the non-zero pixels closest to it) gets its own label. */ + DIST_LABEL_PIXEL = 1 +}; + +//! floodfill algorithm flags +enum FloodFillFlags { + /** If set, the difference between the current pixel and seed pixel is considered. Otherwise, + the difference between neighbor pixels is considered (that is, the range is floating). */ + FLOODFILL_FIXED_RANGE = 1 << 16, + /** If set, the function does not change the image ( newVal is ignored), and only fills the + mask with the value specified in bits 8-16 of flags as described above. This option only make + sense in function variants that have the mask parameter. */ + FLOODFILL_MASK_ONLY = 1 << 17 +}; + +//! @} imgproc_misc + +//! @addtogroup imgproc_shape +//! @{ + +//! connected components algorithm output formats +enum ConnectedComponentsTypes { + CC_STAT_LEFT = 0, //!< The leftmost (x) coordinate which is the inclusive start of the bounding + //!< box in the horizontal direction. + CC_STAT_TOP = 1, //!< The topmost (y) coordinate which is the inclusive start of the bounding + //!< box in the vertical direction. + CC_STAT_WIDTH = 2, //!< The horizontal size of the bounding box + CC_STAT_HEIGHT = 3, //!< The vertical size of the bounding box + CC_STAT_AREA = 4, //!< The total area (in pixels) of the connected component + CC_STAT_MAX = 5 +}; + +//! connected components algorithm +enum ConnectedComponentsAlgorithmsTypes { + CCL_WU = 0, //!< SAUF algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity + CCL_DEFAULT = -1, //!< BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity + CCL_GRANA = 1 //!< BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity +}; + +//! mode of the contour retrieval algorithm +enum RetrievalModes { + /** retrieves only the extreme outer contours. It sets `hierarchy[i][2]=hierarchy[i][3]=-1` for + all the contours. */ + RETR_EXTERNAL = 0, + /** retrieves all of the contours without establishing any hierarchical relationships. */ + RETR_LIST = 1, + /** retrieves all of the contours and organizes them into a two-level hierarchy. At the top + level, there are external boundaries of the components. At the second level, there are + boundaries of the holes. If there is another contour inside a hole of a connected component, it + is still put at the top level. */ + RETR_CCOMP = 2, + /** retrieves all of the contours and reconstructs a full hierarchy of nested contours.*/ + RETR_TREE = 3, + RETR_FLOODFILL = 4 //!< +}; + +//! the contour approximation algorithm +enum ContourApproximationModes { + /** stores absolutely all the contour points. That is, any 2 subsequent points (x1,y1) and + (x2,y2) of the contour will be either horizontal, vertical or diagonal neighbors, that is, + max(abs(x1-x2),abs(y2-y1))==1. */ + CHAIN_APPROX_NONE = 1, + /** compresses horizontal, vertical, and diagonal segments and leaves only their end points. + For example, an up-right rectangular contour is encoded with 4 points. */ + CHAIN_APPROX_SIMPLE = 2, + /** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */ + CHAIN_APPROX_TC89_L1 = 3, + /** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */ + CHAIN_APPROX_TC89_KCOS = 4 +}; + +/** @brief Shape matching methods + +\f$A\f$ denotes object1,\f$B\f$ denotes object2 + +\f$\begin{array}{l} m^A_i = \mathrm{sign} (h^A_i) \cdot \log{h^A_i} \\ m^B_i = \mathrm{sign} (h^B_i) \cdot \log{h^B_i} \end{array}\f$ + +and \f$h^A_i, h^B_i\f$ are the Hu moments of \f$A\f$ and \f$B\f$ , respectively. +*/ +enum ShapeMatchModes { + CONTOURS_MATCH_I1 =1, //!< \f[I_1(A,B) = \sum _{i=1...7} \left | \frac{1}{m^A_i} - \frac{1}{m^B_i} \right |\f] + CONTOURS_MATCH_I2 =2, //!< \f[I_2(A,B) = \sum _{i=1...7} \left | m^A_i - m^B_i \right |\f] + CONTOURS_MATCH_I3 =3 //!< \f[I_3(A,B) = \max _{i=1...7} \frac{ \left| m^A_i - m^B_i \right| }{ \left| m^A_i \right| }\f] +}; + +//! @} imgproc_shape + +//! @addtogroup imgproc_feature +//! @{ + +//! Variants of a Hough transform +enum HoughModes { + + /** classical or standard Hough transform. Every line is represented by two floating-point + numbers \f$(\rho, \theta)\f$ , where \f$\rho\f$ is a distance between (0,0) point and the line, + and \f$\theta\f$ is the angle between x-axis and the normal to the line. Thus, the matrix must + be (the created sequence will be) of CV_32FC2 type */ + HOUGH_STANDARD = 0, + /** probabilistic Hough transform (more efficient in case if the picture contains a few long + linear segments). It returns line segments rather than the whole line. Each segment is + represented by starting and ending points, and the matrix must be (the created sequence will + be) of the CV_32SC4 type. */ + HOUGH_PROBABILISTIC = 1, + /** multi-scale variant of the classical Hough transform. The lines are encoded the same way as + HOUGH_STANDARD. */ + HOUGH_MULTI_SCALE = 2, + HOUGH_GRADIENT = 3 //!< basically *21HT*, described in @cite Yuen90 +}; + +//! Variants of Line Segment %Detector +enum LineSegmentDetectorModes { + LSD_REFINE_NONE = 0, //!< No refinement applied + LSD_REFINE_STD = 1, //!< Standard refinement is applied. E.g. breaking arches into smaller straighter line approximations. + LSD_REFINE_ADV = 2 //!< Advanced refinement. Number of false alarms is calculated, lines are + //!< refined through increase of precision, decrement in size, etc. +}; + +//! @} imgproc_feature + +/** Histogram comparison methods + @ingroup imgproc_hist +*/ +enum HistCompMethods { + /** Correlation + \f[d(H_1,H_2) = \frac{\sum_I (H_1(I) - \bar{H_1}) (H_2(I) - \bar{H_2})}{\sqrt{\sum_I(H_1(I) - \bar{H_1})^2 \sum_I(H_2(I) - \bar{H_2})^2}}\f] + where + \f[\bar{H_k} = \frac{1}{N} \sum _J H_k(J)\f] + and \f$N\f$ is a total number of histogram bins. */ + HISTCMP_CORREL = 0, + /** Chi-Square + \f[d(H_1,H_2) = \sum _I \frac{\left(H_1(I)-H_2(I)\right)^2}{H_1(I)}\f] */ + HISTCMP_CHISQR = 1, + /** Intersection + \f[d(H_1,H_2) = \sum _I \min (H_1(I), H_2(I))\f] */ + HISTCMP_INTERSECT = 2, + /** Bhattacharyya distance + (In fact, OpenCV computes Hellinger distance, which is related to Bhattacharyya coefficient.) + \f[d(H_1,H_2) = \sqrt{1 - \frac{1}{\sqrt{\bar{H_1} \bar{H_2} N^2}} \sum_I \sqrt{H_1(I) \cdot H_2(I)}}\f] */ + HISTCMP_BHATTACHARYYA = 3, + HISTCMP_HELLINGER = HISTCMP_BHATTACHARYYA, //!< Synonym for HISTCMP_BHATTACHARYYA + /** Alternative Chi-Square + \f[d(H_1,H_2) = 2 * \sum _I \frac{\left(H_1(I)-H_2(I)\right)^2}{H_1(I)+H_2(I)}\f] + This alternative formula is regularly used for texture comparison. See e.g. @cite Puzicha1997 */ + HISTCMP_CHISQR_ALT = 4, + /** Kullback-Leibler divergence + \f[d(H_1,H_2) = \sum _I H_1(I) \log \left(\frac{H_1(I)}{H_2(I)}\right)\f] */ + HISTCMP_KL_DIV = 5 +}; + +/** the color conversion codes +@see @ref imgproc_color_conversions +@ingroup imgproc_color_conversions + */ +enum ColorConversionCodes { + COLOR_BGR2BGRA = 0, //!< add alpha channel to RGB or BGR image + COLOR_RGB2RGBA = COLOR_BGR2BGRA, + + COLOR_BGRA2BGR = 1, //!< remove alpha channel from RGB or BGR image + COLOR_RGBA2RGB = COLOR_BGRA2BGR, + + COLOR_BGR2RGBA = 2, //!< convert between RGB and BGR color spaces (with or without alpha channel) + COLOR_RGB2BGRA = COLOR_BGR2RGBA, + + COLOR_RGBA2BGR = 3, + COLOR_BGRA2RGB = COLOR_RGBA2BGR, + + COLOR_BGR2RGB = 4, + COLOR_RGB2BGR = COLOR_BGR2RGB, + + COLOR_BGRA2RGBA = 5, + COLOR_RGBA2BGRA = COLOR_BGRA2RGBA, + + COLOR_BGR2GRAY = 6, //!< convert between RGB/BGR and grayscale, @ref color_convert_rgb_gray "color conversions" + COLOR_RGB2GRAY = 7, + COLOR_GRAY2BGR = 8, + COLOR_GRAY2RGB = COLOR_GRAY2BGR, + COLOR_GRAY2BGRA = 9, + COLOR_GRAY2RGBA = COLOR_GRAY2BGRA, + COLOR_BGRA2GRAY = 10, + COLOR_RGBA2GRAY = 11, + + COLOR_BGR2BGR565 = 12, //!< convert between RGB/BGR and BGR565 (16-bit images) + COLOR_RGB2BGR565 = 13, + COLOR_BGR5652BGR = 14, + COLOR_BGR5652RGB = 15, + COLOR_BGRA2BGR565 = 16, + COLOR_RGBA2BGR565 = 17, + COLOR_BGR5652BGRA = 18, + COLOR_BGR5652RGBA = 19, + + COLOR_GRAY2BGR565 = 20, //!< convert between grayscale to BGR565 (16-bit images) + COLOR_BGR5652GRAY = 21, + + COLOR_BGR2BGR555 = 22, //!< convert between RGB/BGR and BGR555 (16-bit images) + COLOR_RGB2BGR555 = 23, + COLOR_BGR5552BGR = 24, + COLOR_BGR5552RGB = 25, + COLOR_BGRA2BGR555 = 26, + COLOR_RGBA2BGR555 = 27, + COLOR_BGR5552BGRA = 28, + COLOR_BGR5552RGBA = 29, + + COLOR_GRAY2BGR555 = 30, //!< convert between grayscale and BGR555 (16-bit images) + COLOR_BGR5552GRAY = 31, + + COLOR_BGR2XYZ = 32, //!< convert RGB/BGR to CIE XYZ, @ref color_convert_rgb_xyz "color conversions" + COLOR_RGB2XYZ = 33, + COLOR_XYZ2BGR = 34, + COLOR_XYZ2RGB = 35, + + COLOR_BGR2YCrCb = 36, //!< convert RGB/BGR to luma-chroma (aka YCC), @ref color_convert_rgb_ycrcb "color conversions" + COLOR_RGB2YCrCb = 37, + COLOR_YCrCb2BGR = 38, + COLOR_YCrCb2RGB = 39, + + COLOR_BGR2HSV = 40, //!< convert RGB/BGR to HSV (hue saturation value), @ref color_convert_rgb_hsv "color conversions" + COLOR_RGB2HSV = 41, + + COLOR_BGR2Lab = 44, //!< convert RGB/BGR to CIE Lab, @ref color_convert_rgb_lab "color conversions" + COLOR_RGB2Lab = 45, + + COLOR_BGR2Luv = 50, //!< convert RGB/BGR to CIE Luv, @ref color_convert_rgb_luv "color conversions" + COLOR_RGB2Luv = 51, + COLOR_BGR2HLS = 52, //!< convert RGB/BGR to HLS (hue lightness saturation), @ref color_convert_rgb_hls "color conversions" + COLOR_RGB2HLS = 53, + + COLOR_HSV2BGR = 54, //!< backward conversions to RGB/BGR + COLOR_HSV2RGB = 55, + + COLOR_Lab2BGR = 56, + COLOR_Lab2RGB = 57, + COLOR_Luv2BGR = 58, + COLOR_Luv2RGB = 59, + COLOR_HLS2BGR = 60, + COLOR_HLS2RGB = 61, + + COLOR_BGR2HSV_FULL = 66, + COLOR_RGB2HSV_FULL = 67, + COLOR_BGR2HLS_FULL = 68, + COLOR_RGB2HLS_FULL = 69, + + COLOR_HSV2BGR_FULL = 70, + COLOR_HSV2RGB_FULL = 71, + COLOR_HLS2BGR_FULL = 72, + COLOR_HLS2RGB_FULL = 73, + + COLOR_LBGR2Lab = 74, + COLOR_LRGB2Lab = 75, + COLOR_LBGR2Luv = 76, + COLOR_LRGB2Luv = 77, + + COLOR_Lab2LBGR = 78, + COLOR_Lab2LRGB = 79, + COLOR_Luv2LBGR = 80, + COLOR_Luv2LRGB = 81, + + COLOR_BGR2YUV = 82, //!< convert between RGB/BGR and YUV + COLOR_RGB2YUV = 83, + COLOR_YUV2BGR = 84, + COLOR_YUV2RGB = 85, + + //! YUV 4:2:0 family to RGB + COLOR_YUV2RGB_NV12 = 90, + COLOR_YUV2BGR_NV12 = 91, + COLOR_YUV2RGB_NV21 = 92, + COLOR_YUV2BGR_NV21 = 93, + COLOR_YUV420sp2RGB = COLOR_YUV2RGB_NV21, + COLOR_YUV420sp2BGR = COLOR_YUV2BGR_NV21, + + COLOR_YUV2RGBA_NV12 = 94, + COLOR_YUV2BGRA_NV12 = 95, + COLOR_YUV2RGBA_NV21 = 96, + COLOR_YUV2BGRA_NV21 = 97, + COLOR_YUV420sp2RGBA = COLOR_YUV2RGBA_NV21, + COLOR_YUV420sp2BGRA = COLOR_YUV2BGRA_NV21, + + COLOR_YUV2RGB_YV12 = 98, + COLOR_YUV2BGR_YV12 = 99, + COLOR_YUV2RGB_IYUV = 100, + COLOR_YUV2BGR_IYUV = 101, + COLOR_YUV2RGB_I420 = COLOR_YUV2RGB_IYUV, + COLOR_YUV2BGR_I420 = COLOR_YUV2BGR_IYUV, + COLOR_YUV420p2RGB = COLOR_YUV2RGB_YV12, + COLOR_YUV420p2BGR = COLOR_YUV2BGR_YV12, + + COLOR_YUV2RGBA_YV12 = 102, + COLOR_YUV2BGRA_YV12 = 103, + COLOR_YUV2RGBA_IYUV = 104, + COLOR_YUV2BGRA_IYUV = 105, + COLOR_YUV2RGBA_I420 = COLOR_YUV2RGBA_IYUV, + COLOR_YUV2BGRA_I420 = COLOR_YUV2BGRA_IYUV, + COLOR_YUV420p2RGBA = COLOR_YUV2RGBA_YV12, + COLOR_YUV420p2BGRA = COLOR_YUV2BGRA_YV12, + + COLOR_YUV2GRAY_420 = 106, + COLOR_YUV2GRAY_NV21 = COLOR_YUV2GRAY_420, + COLOR_YUV2GRAY_NV12 = COLOR_YUV2GRAY_420, + COLOR_YUV2GRAY_YV12 = COLOR_YUV2GRAY_420, + COLOR_YUV2GRAY_IYUV = COLOR_YUV2GRAY_420, + COLOR_YUV2GRAY_I420 = COLOR_YUV2GRAY_420, + COLOR_YUV420sp2GRAY = COLOR_YUV2GRAY_420, + COLOR_YUV420p2GRAY = COLOR_YUV2GRAY_420, + + //! YUV 4:2:2 family to RGB + COLOR_YUV2RGB_UYVY = 107, + COLOR_YUV2BGR_UYVY = 108, + //COLOR_YUV2RGB_VYUY = 109, + //COLOR_YUV2BGR_VYUY = 110, + COLOR_YUV2RGB_Y422 = COLOR_YUV2RGB_UYVY, + COLOR_YUV2BGR_Y422 = COLOR_YUV2BGR_UYVY, + COLOR_YUV2RGB_UYNV = COLOR_YUV2RGB_UYVY, + COLOR_YUV2BGR_UYNV = COLOR_YUV2BGR_UYVY, + + COLOR_YUV2RGBA_UYVY = 111, + COLOR_YUV2BGRA_UYVY = 112, + //COLOR_YUV2RGBA_VYUY = 113, + //COLOR_YUV2BGRA_VYUY = 114, + COLOR_YUV2RGBA_Y422 = COLOR_YUV2RGBA_UYVY, + COLOR_YUV2BGRA_Y422 = COLOR_YUV2BGRA_UYVY, + COLOR_YUV2RGBA_UYNV = COLOR_YUV2RGBA_UYVY, + COLOR_YUV2BGRA_UYNV = COLOR_YUV2BGRA_UYVY, + + COLOR_YUV2RGB_YUY2 = 115, + COLOR_YUV2BGR_YUY2 = 116, + COLOR_YUV2RGB_YVYU = 117, + COLOR_YUV2BGR_YVYU = 118, + COLOR_YUV2RGB_YUYV = COLOR_YUV2RGB_YUY2, + COLOR_YUV2BGR_YUYV = COLOR_YUV2BGR_YUY2, + COLOR_YUV2RGB_YUNV = COLOR_YUV2RGB_YUY2, + COLOR_YUV2BGR_YUNV = COLOR_YUV2BGR_YUY2, + + COLOR_YUV2RGBA_YUY2 = 119, + COLOR_YUV2BGRA_YUY2 = 120, + COLOR_YUV2RGBA_YVYU = 121, + COLOR_YUV2BGRA_YVYU = 122, + COLOR_YUV2RGBA_YUYV = COLOR_YUV2RGBA_YUY2, + COLOR_YUV2BGRA_YUYV = COLOR_YUV2BGRA_YUY2, + COLOR_YUV2RGBA_YUNV = COLOR_YUV2RGBA_YUY2, + COLOR_YUV2BGRA_YUNV = COLOR_YUV2BGRA_YUY2, + + COLOR_YUV2GRAY_UYVY = 123, + COLOR_YUV2GRAY_YUY2 = 124, + //CV_YUV2GRAY_VYUY = CV_YUV2GRAY_UYVY, + COLOR_YUV2GRAY_Y422 = COLOR_YUV2GRAY_UYVY, + COLOR_YUV2GRAY_UYNV = COLOR_YUV2GRAY_UYVY, + COLOR_YUV2GRAY_YVYU = COLOR_YUV2GRAY_YUY2, + COLOR_YUV2GRAY_YUYV = COLOR_YUV2GRAY_YUY2, + COLOR_YUV2GRAY_YUNV = COLOR_YUV2GRAY_YUY2, + + //! alpha premultiplication + COLOR_RGBA2mRGBA = 125, + COLOR_mRGBA2RGBA = 126, + + //! RGB to YUV 4:2:0 family + COLOR_RGB2YUV_I420 = 127, + COLOR_BGR2YUV_I420 = 128, + COLOR_RGB2YUV_IYUV = COLOR_RGB2YUV_I420, + COLOR_BGR2YUV_IYUV = COLOR_BGR2YUV_I420, + + COLOR_RGBA2YUV_I420 = 129, + COLOR_BGRA2YUV_I420 = 130, + COLOR_RGBA2YUV_IYUV = COLOR_RGBA2YUV_I420, + COLOR_BGRA2YUV_IYUV = COLOR_BGRA2YUV_I420, + COLOR_RGB2YUV_YV12 = 131, + COLOR_BGR2YUV_YV12 = 132, + COLOR_RGBA2YUV_YV12 = 133, + COLOR_BGRA2YUV_YV12 = 134, + + //! Demosaicing + COLOR_BayerBG2BGR = 46, + COLOR_BayerGB2BGR = 47, + COLOR_BayerRG2BGR = 48, + COLOR_BayerGR2BGR = 49, + + COLOR_BayerBG2RGB = COLOR_BayerRG2BGR, + COLOR_BayerGB2RGB = COLOR_BayerGR2BGR, + COLOR_BayerRG2RGB = COLOR_BayerBG2BGR, + COLOR_BayerGR2RGB = COLOR_BayerGB2BGR, + + COLOR_BayerBG2GRAY = 86, + COLOR_BayerGB2GRAY = 87, + COLOR_BayerRG2GRAY = 88, + COLOR_BayerGR2GRAY = 89, + + //! Demosaicing using Variable Number of Gradients + COLOR_BayerBG2BGR_VNG = 62, + COLOR_BayerGB2BGR_VNG = 63, + COLOR_BayerRG2BGR_VNG = 64, + COLOR_BayerGR2BGR_VNG = 65, + + COLOR_BayerBG2RGB_VNG = COLOR_BayerRG2BGR_VNG, + COLOR_BayerGB2RGB_VNG = COLOR_BayerGR2BGR_VNG, + COLOR_BayerRG2RGB_VNG = COLOR_BayerBG2BGR_VNG, + COLOR_BayerGR2RGB_VNG = COLOR_BayerGB2BGR_VNG, + + //! Edge-Aware Demosaicing + COLOR_BayerBG2BGR_EA = 135, + COLOR_BayerGB2BGR_EA = 136, + COLOR_BayerRG2BGR_EA = 137, + COLOR_BayerGR2BGR_EA = 138, + + COLOR_BayerBG2RGB_EA = COLOR_BayerRG2BGR_EA, + COLOR_BayerGB2RGB_EA = COLOR_BayerGR2BGR_EA, + COLOR_BayerRG2RGB_EA = COLOR_BayerBG2BGR_EA, + COLOR_BayerGR2RGB_EA = COLOR_BayerGB2BGR_EA, + + //! Demosaicing with alpha channel + COLOR_BayerBG2BGRA = 139, + COLOR_BayerGB2BGRA = 140, + COLOR_BayerRG2BGRA = 141, + COLOR_BayerGR2BGRA = 142, + + COLOR_BayerBG2RGBA = COLOR_BayerRG2BGRA, + COLOR_BayerGB2RGBA = COLOR_BayerGR2BGRA, + COLOR_BayerRG2RGBA = COLOR_BayerBG2BGRA, + COLOR_BayerGR2RGBA = COLOR_BayerGB2BGRA, + + COLOR_COLORCVT_MAX = 143 +}; + +//! @addtogroup imgproc_shape +//! @{ + +//! types of intersection between rectangles +enum RectanglesIntersectTypes { + INTERSECT_NONE = 0, //!< No intersection + INTERSECT_PARTIAL = 1, //!< There is a partial intersection + INTERSECT_FULL = 2 //!< One of the rectangle is fully enclosed in the other +}; + +/** types of line +@ingroup imgproc_draw +*/ +enum LineTypes { + FILLED = -1, + LINE_4 = 4, //!< 4-connected line + LINE_8 = 8, //!< 8-connected line + LINE_AA = 16 //!< antialiased line +}; + +/** Only a subset of Hershey fonts are supported +@ingroup imgproc_draw +*/ +enum HersheyFonts { + FONT_HERSHEY_SIMPLEX = 0, //!< normal size sans-serif font + FONT_HERSHEY_PLAIN = 1, //!< small size sans-serif font + FONT_HERSHEY_DUPLEX = 2, //!< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX) + FONT_HERSHEY_COMPLEX = 3, //!< normal size serif font + FONT_HERSHEY_TRIPLEX = 4, //!< normal size serif font (more complex than FONT_HERSHEY_COMPLEX) + FONT_HERSHEY_COMPLEX_SMALL = 5, //!< smaller version of FONT_HERSHEY_COMPLEX + FONT_HERSHEY_SCRIPT_SIMPLEX = 6, //!< hand-writing style font + FONT_HERSHEY_SCRIPT_COMPLEX = 7, //!< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX + FONT_ITALIC = 16 //!< flag for italic font +}; + +/** Possible set of marker types used for the cv::drawMarker function +@ingroup imgproc_draw +*/ +enum MarkerTypes +{ + MARKER_CROSS = 0, //!< A crosshair marker shape + MARKER_TILTED_CROSS = 1, //!< A 45 degree tilted crosshair marker shape + MARKER_STAR = 2, //!< A star marker shape, combination of cross and tilted cross + MARKER_DIAMOND = 3, //!< A diamond marker shape + MARKER_SQUARE = 4, //!< A square marker shape + MARKER_TRIANGLE_UP = 5, //!< An upwards pointing triangle marker shape + MARKER_TRIANGLE_DOWN = 6 //!< A downwards pointing triangle marker shape +}; + +/** @brief finds arbitrary template in the grayscale image using Generalized Hough Transform +*/ +class CV_EXPORTS_W GeneralizedHough : public Algorithm +{ +public: + //! set template to search + CV_WRAP virtual void setTemplate(InputArray templ, Point templCenter = Point(-1, -1)) = 0; + CV_WRAP virtual void setTemplate(InputArray edges, InputArray dx, InputArray dy, Point templCenter = Point(-1, -1)) = 0; + + //! find template on image + CV_WRAP virtual void detect(InputArray image, OutputArray positions, OutputArray votes = noArray()) = 0; + CV_WRAP virtual void detect(InputArray edges, InputArray dx, InputArray dy, OutputArray positions, OutputArray votes = noArray()) = 0; + + //! Canny low threshold. + CV_WRAP virtual void setCannyLowThresh(int cannyLowThresh) = 0; + CV_WRAP virtual int getCannyLowThresh() const = 0; + + //! Canny high threshold. + CV_WRAP virtual void setCannyHighThresh(int cannyHighThresh) = 0; + CV_WRAP virtual int getCannyHighThresh() const = 0; + + //! Minimum distance between the centers of the detected objects. + CV_WRAP virtual void setMinDist(double minDist) = 0; + CV_WRAP virtual double getMinDist() const = 0; + + //! Inverse ratio of the accumulator resolution to the image resolution. + CV_WRAP virtual void setDp(double dp) = 0; + CV_WRAP virtual double getDp() const = 0; + + //! Maximal size of inner buffers. + CV_WRAP virtual void setMaxBufferSize(int maxBufferSize) = 0; + CV_WRAP virtual int getMaxBufferSize() const = 0; +}; + +/** @brief finds arbitrary template in the grayscale image using Generalized Hough Transform + +Detects position only without translation and rotation @cite Ballard1981 . +*/ +class CV_EXPORTS_W GeneralizedHoughBallard : public GeneralizedHough +{ +public: + //! R-Table levels. + CV_WRAP virtual void setLevels(int levels) = 0; + CV_WRAP virtual int getLevels() const = 0; + + //! The accumulator threshold for the template centers at the detection stage. The smaller it is, the more false positions may be detected. + CV_WRAP virtual void setVotesThreshold(int votesThreshold) = 0; + CV_WRAP virtual int getVotesThreshold() const = 0; +}; + +/** @brief finds arbitrary template in the grayscale image using Generalized Hough Transform + +Detects position, translation and rotation @cite Guil1999 . +*/ +class CV_EXPORTS_W GeneralizedHoughGuil : public GeneralizedHough +{ +public: + //! Angle difference in degrees between two points in feature. + virtual void setXi(double xi) = 0; + virtual double getXi() const = 0; + + //! Feature table levels. + virtual void setLevels(int levels) = 0; + virtual int getLevels() const = 0; + + //! Maximal difference between angles that treated as equal. + virtual void setAngleEpsilon(double angleEpsilon) = 0; + virtual double getAngleEpsilon() const = 0; + + //! Minimal rotation angle to detect in degrees. + virtual void setMinAngle(double minAngle) = 0; + virtual double getMinAngle() const = 0; + + //! Maximal rotation angle to detect in degrees. + virtual void setMaxAngle(double maxAngle) = 0; + virtual double getMaxAngle() const = 0; + + //! Angle step in degrees. + virtual void setAngleStep(double angleStep) = 0; + virtual double getAngleStep() const = 0; + + //! Angle votes threshold. + virtual void setAngleThresh(int angleThresh) = 0; + virtual int getAngleThresh() const = 0; + + //! Minimal scale to detect. + virtual void setMinScale(double minScale) = 0; + virtual double getMinScale() const = 0; + + //! Maximal scale to detect. + virtual void setMaxScale(double maxScale) = 0; + virtual double getMaxScale() const = 0; + + //! Scale step. + virtual void setScaleStep(double scaleStep) = 0; + virtual double getScaleStep() const = 0; + + //! Scale votes threshold. + virtual void setScaleThresh(int scaleThresh) = 0; + virtual int getScaleThresh() const = 0; + + //! Position votes threshold. + virtual void setPosThresh(int posThresh) = 0; + virtual int getPosThresh() const = 0; +}; + +//! @} imgproc_shape + +//! @addtogroup imgproc_hist +//! @{ + +/** @brief Base class for Contrast Limited Adaptive Histogram Equalization. +*/ +class CV_EXPORTS_W CLAHE : public Algorithm +{ +public: + /** @brief Equalizes the histogram of a grayscale image using Contrast Limited Adaptive Histogram Equalization. + + @param src Source image of type CV_8UC1 or CV_16UC1. + @param dst Destination image. + */ + CV_WRAP virtual void apply(InputArray src, OutputArray dst) = 0; + + /** @brief Sets threshold for contrast limiting. + + @param clipLimit threshold value. + */ + CV_WRAP virtual void setClipLimit(double clipLimit) = 0; + + //! Returns threshold value for contrast limiting. + CV_WRAP virtual double getClipLimit() const = 0; + + /** @brief Sets size of grid for histogram equalization. Input image will be divided into + equally sized rectangular tiles. + + @param tileGridSize defines the number of tiles in row and column. + */ + CV_WRAP virtual void setTilesGridSize(Size tileGridSize) = 0; + + //!@brief Returns Size defines the number of tiles in row and column. + CV_WRAP virtual Size getTilesGridSize() const = 0; + + CV_WRAP virtual void collectGarbage() = 0; +}; + +//! @} imgproc_hist + +//! @addtogroup imgproc_subdiv2d +//! @{ + +class CV_EXPORTS_W Subdiv2D +{ +public: + /** Subdiv2D point location cases */ + enum { PTLOC_ERROR = -2, //!< Point location error + PTLOC_OUTSIDE_RECT = -1, //!< Point outside the subdivision bounding rect + PTLOC_INSIDE = 0, //!< Point inside some facet + PTLOC_VERTEX = 1, //!< Point coincides with one of the subdivision vertices + PTLOC_ON_EDGE = 2 //!< Point on some edge + }; + + /** Subdiv2D edge type navigation (see: getEdge()) */ + enum { NEXT_AROUND_ORG = 0x00, + NEXT_AROUND_DST = 0x22, + PREV_AROUND_ORG = 0x11, + PREV_AROUND_DST = 0x33, + NEXT_AROUND_LEFT = 0x13, + NEXT_AROUND_RIGHT = 0x31, + PREV_AROUND_LEFT = 0x20, + PREV_AROUND_RIGHT = 0x02 + }; + + /** creates an empty Subdiv2D object. + To create a new empty Delaunay subdivision you need to use the #initDelaunay function. + */ + CV_WRAP Subdiv2D(); + + /** @overload + + @param rect Rectangle that includes all of the 2D points that are to be added to the subdivision. + + The function creates an empty Delaunay subdivision where 2D points can be added using the function + insert() . All of the points to be added must be within the specified rectangle, otherwise a runtime + error is raised. + */ + CV_WRAP Subdiv2D(Rect rect); + + /** @brief Creates a new empty Delaunay subdivision + + @param rect Rectangle that includes all of the 2D points that are to be added to the subdivision. + + */ + CV_WRAP void initDelaunay(Rect rect); + + /** @brief Insert a single point into a Delaunay triangulation. + + @param pt Point to insert. + + The function inserts a single point into a subdivision and modifies the subdivision topology + appropriately. If a point with the same coordinates exists already, no new point is added. + @returns the ID of the point. + + @note If the point is outside of the triangulation specified rect a runtime error is raised. + */ + CV_WRAP int insert(Point2f pt); + + /** @brief Insert multiple points into a Delaunay triangulation. + + @param ptvec Points to insert. + + The function inserts a vector of points into a subdivision and modifies the subdivision topology + appropriately. + */ + CV_WRAP void insert(const std::vector& ptvec); + + /** @brief Returns the location of a point within a Delaunay triangulation. + + @param pt Point to locate. + @param edge Output edge that the point belongs to or is located to the right of it. + @param vertex Optional output vertex the input point coincides with. + + The function locates the input point within the subdivision and gives one of the triangle edges + or vertices. + + @returns an integer which specify one of the following five cases for point location: + - The point falls into some facet. The function returns #PTLOC_INSIDE and edge will contain one of + edges of the facet. + - The point falls onto the edge. The function returns #PTLOC_ON_EDGE and edge will contain this edge. + - The point coincides with one of the subdivision vertices. The function returns #PTLOC_VERTEX and + vertex will contain a pointer to the vertex. + - The point is outside the subdivision reference rectangle. The function returns #PTLOC_OUTSIDE_RECT + and no pointers are filled. + - One of input arguments is invalid. A runtime error is raised or, if silent or "parent" error + processing mode is selected, #PTLOC_ERROR is returned. + */ + CV_WRAP int locate(Point2f pt, CV_OUT int& edge, CV_OUT int& vertex); + + /** @brief Finds the subdivision vertex closest to the given point. + + @param pt Input point. + @param nearestPt Output subdivision vertex point. + + The function is another function that locates the input point within the subdivision. It finds the + subdivision vertex that is the closest to the input point. It is not necessarily one of vertices + of the facet containing the input point, though the facet (located using locate() ) is used as a + starting point. + + @returns vertex ID. + */ + CV_WRAP int findNearest(Point2f pt, CV_OUT Point2f* nearestPt = 0); + + /** @brief Returns a list of all edges. + + @param edgeList Output vector. + + The function gives each edge as a 4 numbers vector, where each two are one of the edge + vertices. i.e. org_x = v[0], org_y = v[1], dst_x = v[2], dst_y = v[3]. + */ + CV_WRAP void getEdgeList(CV_OUT std::vector& edgeList) const; + + /** @brief Returns a list of the leading edge ID connected to each triangle. + + @param leadingEdgeList Output vector. + + The function gives one edge ID for each triangle. + */ + CV_WRAP void getLeadingEdgeList(CV_OUT std::vector& leadingEdgeList) const; + + /** @brief Returns a list of all triangles. + + @param triangleList Output vector. + + The function gives each triangle as a 6 numbers vector, where each two are one of the triangle + vertices. i.e. p1_x = v[0], p1_y = v[1], p2_x = v[2], p2_y = v[3], p3_x = v[4], p3_y = v[5]. + */ + CV_WRAP void getTriangleList(CV_OUT std::vector& triangleList) const; + + /** @brief Returns a list of all Voroni facets. + + @param idx Vector of vertices IDs to consider. For all vertices you can pass empty vector. + @param facetList Output vector of the Voroni facets. + @param facetCenters Output vector of the Voroni facets center points. + + */ + CV_WRAP void getVoronoiFacetList(const std::vector& idx, CV_OUT std::vector >& facetList, + CV_OUT std::vector& facetCenters); + + /** @brief Returns vertex location from vertex ID. + + @param vertex vertex ID. + @param firstEdge Optional. The first edge ID which is connected to the vertex. + @returns vertex (x,y) + + */ + CV_WRAP Point2f getVertex(int vertex, CV_OUT int* firstEdge = 0) const; + + /** @brief Returns one of the edges related to the given edge. + + @param edge Subdivision edge ID. + @param nextEdgeType Parameter specifying which of the related edges to return. + The following values are possible: + - NEXT_AROUND_ORG next around the edge origin ( eOnext on the picture below if e is the input edge) + - NEXT_AROUND_DST next around the edge vertex ( eDnext ) + - PREV_AROUND_ORG previous around the edge origin (reversed eRnext ) + - PREV_AROUND_DST previous around the edge destination (reversed eLnext ) + - NEXT_AROUND_LEFT next around the left facet ( eLnext ) + - NEXT_AROUND_RIGHT next around the right facet ( eRnext ) + - PREV_AROUND_LEFT previous around the left facet (reversed eOnext ) + - PREV_AROUND_RIGHT previous around the right facet (reversed eDnext ) + + ![sample output](pics/quadedge.png) + + @returns edge ID related to the input edge. + */ + CV_WRAP int getEdge( int edge, int nextEdgeType ) const; + + /** @brief Returns next edge around the edge origin. + + @param edge Subdivision edge ID. + + @returns an integer which is next edge ID around the edge origin: eOnext on the + picture above if e is the input edge). + */ + CV_WRAP int nextEdge(int edge) const; + + /** @brief Returns another edge of the same quad-edge. + + @param edge Subdivision edge ID. + @param rotate Parameter specifying which of the edges of the same quad-edge as the input + one to return. The following values are possible: + - 0 - the input edge ( e on the picture below if e is the input edge) + - 1 - the rotated edge ( eRot ) + - 2 - the reversed edge (reversed e (in green)) + - 3 - the reversed rotated edge (reversed eRot (in green)) + + @returns one of the edges ID of the same quad-edge as the input edge. + */ + CV_WRAP int rotateEdge(int edge, int rotate) const; + CV_WRAP int symEdge(int edge) const; + + /** @brief Returns the edge origin. + + @param edge Subdivision edge ID. + @param orgpt Output vertex location. + + @returns vertex ID. + */ + CV_WRAP int edgeOrg(int edge, CV_OUT Point2f* orgpt = 0) const; + + /** @brief Returns the edge destination. + + @param edge Subdivision edge ID. + @param dstpt Output vertex location. + + @returns vertex ID. + */ + CV_WRAP int edgeDst(int edge, CV_OUT Point2f* dstpt = 0) const; + +protected: + int newEdge(); + void deleteEdge(int edge); + int newPoint(Point2f pt, bool isvirtual, int firstEdge = 0); + void deletePoint(int vtx); + void setEdgePoints( int edge, int orgPt, int dstPt ); + void splice( int edgeA, int edgeB ); + int connectEdges( int edgeA, int edgeB ); + void swapEdges( int edge ); + int isRightOf(Point2f pt, int edge) const; + void calcVoronoi(); + void clearVoronoi(); + void checkSubdiv() const; + + struct CV_EXPORTS Vertex + { + Vertex(); + Vertex(Point2f pt, bool _isvirtual, int _firstEdge=0); + bool isvirtual() const; + bool isfree() const; + + int firstEdge; + int type; + Point2f pt; + }; + + struct CV_EXPORTS QuadEdge + { + QuadEdge(); + QuadEdge(int edgeidx); + bool isfree() const; + + int next[4]; + int pt[4]; + }; + + //! All of the vertices + std::vector vtx; + //! All of the edges + std::vector qedges; + int freeQEdge; + int freePoint; + bool validGeometry; + + int recentEdge; + //! Top left corner of the bounding rect + Point2f topLeft; + //! Bottom right corner of the bounding rect + Point2f bottomRight; +}; + +//! @} imgproc_subdiv2d + +//! @addtogroup imgproc_feature +//! @{ + +/** @brief Line segment detector class + +following the algorithm described at @cite Rafael12 . + +@note Implementation has been removed due original code license conflict + +*/ +class CV_EXPORTS_W LineSegmentDetector : public Algorithm +{ +public: + + /** @brief Finds lines in the input image. + + This is the output of the default parameters of the algorithm on the above shown image. + + ![image](pics/building_lsd.png) + + @param _image A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use: + `lsd_ptr-\>detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);` + @param _lines A vector of Vec4i or Vec4f elements specifying the beginning and ending point of a line. Where + Vec4i/Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly + oriented depending on the gradient. + @param width Vector of widths of the regions, where the lines are found. E.g. Width of line. + @param prec Vector of precisions with which the lines are found. + @param nfa Vector containing number of false alarms in the line region, with precision of 10%. The + bigger the value, logarithmically better the detection. + - -1 corresponds to 10 mean false alarms + - 0 corresponds to 1 mean false alarm + - 1 corresponds to 0.1 mean false alarms + This vector will be calculated only when the objects type is #LSD_REFINE_ADV. + */ + CV_WRAP virtual void detect(InputArray _image, OutputArray _lines, + OutputArray width = noArray(), OutputArray prec = noArray(), + OutputArray nfa = noArray()) = 0; + + /** @brief Draws the line segments on a given image. + @param _image The image, where the lines will be drawn. Should be bigger or equal to the image, + where the lines were found. + @param lines A vector of the lines that needed to be drawn. + */ + CV_WRAP virtual void drawSegments(InputOutputArray _image, InputArray lines) = 0; + + /** @brief Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels. + + @param size The size of the image, where lines1 and lines2 were found. + @param lines1 The first group of lines that needs to be drawn. It is visualized in blue color. + @param lines2 The second group of lines. They visualized in red color. + @param _image Optional image, where the lines will be drawn. The image should be color(3-channel) + in order for lines1 and lines2 to be drawn in the above mentioned colors. + */ + CV_WRAP virtual int compareSegments(const Size& size, InputArray lines1, InputArray lines2, InputOutputArray _image = noArray()) = 0; + + virtual ~LineSegmentDetector() { } +}; + +/** @brief Creates a smart pointer to a LineSegmentDetector object and initializes it. + +The LineSegmentDetector algorithm is defined using the standard values. Only advanced users may want +to edit those, as to tailor it for their own application. + +@param _refine The way found lines will be refined, see #LineSegmentDetectorModes +@param _scale The scale of the image that will be used to find the lines. Range (0..1]. +@param _sigma_scale Sigma for Gaussian filter. It is computed as sigma = _sigma_scale/_scale. +@param _quant Bound to the quantization error on the gradient norm. +@param _ang_th Gradient angle tolerance in degrees. +@param _log_eps Detection threshold: -log10(NFA) \> log_eps. Used only when advance refinement +is chosen. +@param _density_th Minimal density of aligned region points in the enclosing rectangle. +@param _n_bins Number of bins in pseudo-ordering of gradient modulus. + +@note Implementation has been removed due original code license conflict + */ +CV_EXPORTS_W Ptr createLineSegmentDetector( + int _refine = LSD_REFINE_STD, double _scale = 0.8, + double _sigma_scale = 0.6, double _quant = 2.0, double _ang_th = 22.5, + double _log_eps = 0, double _density_th = 0.7, int _n_bins = 1024); + +//! @} imgproc_feature + +//! @addtogroup imgproc_filter +//! @{ + +/** @brief Returns Gaussian filter coefficients. + +The function computes and returns the \f$\texttt{ksize} \times 1\f$ matrix of Gaussian filter +coefficients: + +\f[G_i= \alpha *e^{-(i-( \texttt{ksize} -1)/2)^2/(2* \texttt{sigma}^2)},\f] + +where \f$i=0..\texttt{ksize}-1\f$ and \f$\alpha\f$ is the scale factor chosen so that \f$\sum_i G_i=1\f$. + +Two of such generated kernels can be passed to sepFilter2D. Those functions automatically recognize +smoothing kernels (a symmetrical kernel with sum of weights equal to 1) and handle them accordingly. +You may also use the higher-level GaussianBlur. +@param ksize Aperture size. It should be odd ( \f$\texttt{ksize} \mod 2 = 1\f$ ) and positive. +@param sigma Gaussian standard deviation. If it is non-positive, it is computed from ksize as +`sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8`. +@param ktype Type of filter coefficients. It can be CV_32F or CV_64F . +@sa sepFilter2D, getDerivKernels, getStructuringElement, GaussianBlur + */ +CV_EXPORTS_W Mat getGaussianKernel( int ksize, double sigma, int ktype = CV_64F ); + +/** @brief Returns filter coefficients for computing spatial image derivatives. + +The function computes and returns the filter coefficients for spatial image derivatives. When +`ksize=FILTER_SCHARR`, the Scharr \f$3 \times 3\f$ kernels are generated (see #Scharr). Otherwise, Sobel +kernels are generated (see #Sobel). The filters are normally passed to #sepFilter2D or to + +@param kx Output matrix of row filter coefficients. It has the type ktype . +@param ky Output matrix of column filter coefficients. It has the type ktype . +@param dx Derivative order in respect of x. +@param dy Derivative order in respect of y. +@param ksize Aperture size. It can be FILTER_SCHARR, 1, 3, 5, or 7. +@param normalize Flag indicating whether to normalize (scale down) the filter coefficients or not. +Theoretically, the coefficients should have the denominator \f$=2^{ksize*2-dx-dy-2}\f$. If you are +going to filter floating-point images, you are likely to use the normalized kernels. But if you +compute derivatives of an 8-bit image, store the results in a 16-bit image, and wish to preserve +all the fractional bits, you may want to set normalize=false . +@param ktype Type of filter coefficients. It can be CV_32f or CV_64F . + */ +CV_EXPORTS_W void getDerivKernels( OutputArray kx, OutputArray ky, + int dx, int dy, int ksize, + bool normalize = false, int ktype = CV_32F ); + +/** @brief Returns Gabor filter coefficients. + +For more details about gabor filter equations and parameters, see: [Gabor +Filter](http://en.wikipedia.org/wiki/Gabor_filter). + +@param ksize Size of the filter returned. +@param sigma Standard deviation of the gaussian envelope. +@param theta Orientation of the normal to the parallel stripes of a Gabor function. +@param lambd Wavelength of the sinusoidal factor. +@param gamma Spatial aspect ratio. +@param psi Phase offset. +@param ktype Type of filter coefficients. It can be CV_32F or CV_64F . + */ +CV_EXPORTS_W Mat getGaborKernel( Size ksize, double sigma, double theta, double lambd, + double gamma, double psi = CV_PI*0.5, int ktype = CV_64F ); + +//! returns "magic" border value for erosion and dilation. It is automatically transformed to Scalar::all(-DBL_MAX) for dilation. +static inline Scalar morphologyDefaultBorderValue() { return Scalar::all(DBL_MAX); } + +/** @brief Returns a structuring element of the specified size and shape for morphological operations. + +The function constructs and returns the structuring element that can be further passed to #erode, +#dilate or #morphologyEx. But you can also construct an arbitrary binary mask yourself and use it as +the structuring element. + +@param shape Element shape that could be one of #MorphShapes +@param ksize Size of the structuring element. +@param anchor Anchor position within the element. The default value \f$(-1, -1)\f$ means that the +anchor is at the center. Note that only the shape of a cross-shaped element depends on the anchor +position. In other cases the anchor just regulates how much the result of the morphological +operation is shifted. + */ +CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1)); + +/** @example samples/cpp/tutorial_code/ImgProc/Smoothing/Smoothing.cpp +Sample code for simple filters +![Sample screenshot](Smoothing_Tutorial_Result_Median_Filter.jpg) +Check @ref tutorial_gausian_median_blur_bilateral_filter "the corresponding tutorial" for more details + */ + +/** @brief Blurs an image using the median filter. + +The function smoothes an image using the median filter with the \f$\texttt{ksize} \times +\texttt{ksize}\f$ aperture. Each channel of a multi-channel image is processed independently. +In-place operation is supported. + +@note The median filter uses #BORDER_REPLICATE internally to cope with border pixels, see #BorderTypes + +@param src input 1-, 3-, or 4-channel image; when ksize is 3 or 5, the image depth should be +CV_8U, CV_16U, or CV_32F, for larger aperture sizes, it can only be CV_8U. +@param dst destination array of the same size and type as src. +@param ksize aperture linear size; it must be odd and greater than 1, for example: 3, 5, 7 ... +@sa bilateralFilter, blur, boxFilter, GaussianBlur + */ +CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize ); + +/** @brief Blurs an image using a Gaussian filter. + +The function convolves the source image with the specified Gaussian kernel. In-place filtering is +supported. + +@param src input image; the image can have any number of channels, which are processed +independently, but the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. +@param dst output image of the same size and type as src. +@param ksize Gaussian kernel size. ksize.width and ksize.height can differ but they both must be +positive and odd. Or, they can be zero's and then they are computed from sigma. +@param sigmaX Gaussian kernel standard deviation in X direction. +@param sigmaY Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be +equal to sigmaX, if both sigmas are zeros, they are computed from ksize.width and ksize.height, +respectively (see #getGaussianKernel for details); to fully control the result regardless of +possible future modifications of all this semantics, it is recommended to specify all of ksize, +sigmaX, and sigmaY. +@param borderType pixel extrapolation method, see #BorderTypes + +@sa sepFilter2D, filter2D, blur, boxFilter, bilateralFilter, medianBlur + */ +CV_EXPORTS_W void GaussianBlur( InputArray src, OutputArray dst, Size ksize, + double sigmaX, double sigmaY = 0, + int borderType = BORDER_DEFAULT ); + +/** @brief Applies the bilateral filter to an image. + +The function applies bilateral filtering to the input image, as described in +http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html +bilateralFilter can reduce unwanted noise very well while keeping edges fairly sharp. However, it is +very slow compared to most filters. + +_Sigma values_: For simplicity, you can set the 2 sigma values to be the same. If they are small (\< +10), the filter will not have much effect, whereas if they are large (\> 150), they will have a very +strong effect, making the image look "cartoonish". + +_Filter size_: Large filters (d \> 5) are very slow, so it is recommended to use d=5 for real-time +applications, and perhaps d=9 for offline applications that need heavy noise filtering. + +This filter does not work inplace. +@param src Source 8-bit or floating-point, 1-channel or 3-channel image. +@param dst Destination image of the same size and type as src . +@param d Diameter of each pixel neighborhood that is used during filtering. If it is non-positive, +it is computed from sigmaSpace. +@param sigmaColor Filter sigma in the color space. A larger value of the parameter means that +farther colors within the pixel neighborhood (see sigmaSpace) will be mixed together, resulting +in larger areas of semi-equal color. +@param sigmaSpace Filter sigma in the coordinate space. A larger value of the parameter means that +farther pixels will influence each other as long as their colors are close enough (see sigmaColor +). When d\>0, it specifies the neighborhood size regardless of sigmaSpace. Otherwise, d is +proportional to sigmaSpace. +@param borderType border mode used to extrapolate pixels outside of the image, see #BorderTypes + */ +CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d, + double sigmaColor, double sigmaSpace, + int borderType = BORDER_DEFAULT ); + +/** @brief Blurs an image using the box filter. + +The function smooths an image using the kernel: + +\f[\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\f] + +where + +\f[\alpha = \fork{\frac{1}{\texttt{ksize.width*ksize.height}}}{when \texttt{normalize=true}}{1}{otherwise}\f] + +Unnormalized box filter is useful for computing various integral characteristics over each pixel +neighborhood, such as covariance matrices of image derivatives (used in dense optical flow +algorithms, and so on). If you need to compute pixel sums over variable-size windows, use #integral. + +@param src input image. +@param dst output image of the same size and type as src. +@param ddepth the output image depth (-1 to use src.depth()). +@param ksize blurring kernel size. +@param anchor anchor point; default value Point(-1,-1) means that the anchor is at the kernel +center. +@param normalize flag, specifying whether the kernel is normalized by its area or not. +@param borderType border mode used to extrapolate pixels outside of the image, see #BorderTypes +@sa blur, bilateralFilter, GaussianBlur, medianBlur, integral + */ +CV_EXPORTS_W void boxFilter( InputArray src, OutputArray dst, int ddepth, + Size ksize, Point anchor = Point(-1,-1), + bool normalize = true, + int borderType = BORDER_DEFAULT ); + +/** @brief Calculates the normalized sum of squares of the pixel values overlapping the filter. + +For every pixel \f$ (x, y) \f$ in the source image, the function calculates the sum of squares of those neighboring +pixel values which overlap the filter placed over the pixel \f$ (x, y) \f$. + +The unnormalized square box filter can be useful in computing local image statistics such as the the local +variance and standard deviation around the neighborhood of a pixel. + +@param src input image +@param dst output image of the same size and type as _src +@param ddepth the output image depth (-1 to use src.depth()) +@param ksize kernel size +@param anchor kernel anchor point. The default value of Point(-1, -1) denotes that the anchor is at the kernel +center. +@param normalize flag, specifying whether the kernel is to be normalized by it's area or not. +@param borderType border mode used to extrapolate pixels outside of the image, see #BorderTypes +@sa boxFilter +*/ +CV_EXPORTS_W void sqrBoxFilter( InputArray src, OutputArray dst, int ddepth, + Size ksize, Point anchor = Point(-1, -1), + bool normalize = true, + int borderType = BORDER_DEFAULT ); + +/** @brief Blurs an image using the normalized box filter. + +The function smooths an image using the kernel: + +\f[\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\f] + +The call `blur(src, dst, ksize, anchor, borderType)` is equivalent to `boxFilter(src, dst, src.type(), +anchor, true, borderType)`. + +@param src input image; it can have any number of channels, which are processed independently, but +the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. +@param dst output image of the same size and type as src. +@param ksize blurring kernel size. +@param anchor anchor point; default value Point(-1,-1) means that the anchor is at the kernel +center. +@param borderType border mode used to extrapolate pixels outside of the image, see #BorderTypes +@sa boxFilter, bilateralFilter, GaussianBlur, medianBlur + */ +CV_EXPORTS_W void blur( InputArray src, OutputArray dst, + Size ksize, Point anchor = Point(-1,-1), + int borderType = BORDER_DEFAULT ); + +/** @brief Convolves an image with the kernel. + +The function applies an arbitrary linear filter to an image. In-place operation is supported. When +the aperture is partially outside the image, the function interpolates outlier pixel values +according to the specified border mode. + +The function does actually compute correlation, not the convolution: + +\f[\texttt{dst} (x,y) = \sum _{ \stackrel{0\leq x' < \texttt{kernel.cols},}{0\leq y' < \texttt{kernel.rows}} } \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\f] + +That is, the kernel is not mirrored around the anchor point. If you need a real convolution, flip +the kernel using #flip and set the new anchor to `(kernel.cols - anchor.x - 1, kernel.rows - +anchor.y - 1)`. + +The function uses the DFT-based algorithm in case of sufficiently large kernels (~`11 x 11` or +larger) and the direct algorithm for small kernels. + +@param src input image. +@param dst output image of the same size and the same number of channels as src. +@param ddepth desired depth of the destination image, see @ref filter_depths "combinations" +@param kernel convolution kernel (or rather a correlation kernel), a single-channel floating point +matrix; if you want to apply different kernels to different channels, split the image into +separate color planes using split and process them individually. +@param anchor anchor of the kernel that indicates the relative position of a filtered point within +the kernel; the anchor should lie within the kernel; default value (-1,-1) means that the anchor +is at the kernel center. +@param delta optional value added to the filtered pixels before storing them in dst. +@param borderType pixel extrapolation method, see #BorderTypes +@sa sepFilter2D, dft, matchTemplate + */ +CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth, + InputArray kernel, Point anchor = Point(-1,-1), + double delta = 0, int borderType = BORDER_DEFAULT ); + +/** @brief Applies a separable linear filter to an image. + +The function applies a separable linear filter to the image. That is, first, every row of src is +filtered with the 1D kernel kernelX. Then, every column of the result is filtered with the 1D +kernel kernelY. The final result shifted by delta is stored in dst . + +@param src Source image. +@param dst Destination image of the same size and the same number of channels as src . +@param ddepth Destination image depth, see @ref filter_depths "combinations" +@param kernelX Coefficients for filtering each row. +@param kernelY Coefficients for filtering each column. +@param anchor Anchor position within the kernel. The default value \f$(-1,-1)\f$ means that the anchor +is at the kernel center. +@param delta Value added to the filtered results before storing them. +@param borderType Pixel extrapolation method, see #BorderTypes +@sa filter2D, Sobel, GaussianBlur, boxFilter, blur + */ +CV_EXPORTS_W void sepFilter2D( InputArray src, OutputArray dst, int ddepth, + InputArray kernelX, InputArray kernelY, + Point anchor = Point(-1,-1), + double delta = 0, int borderType = BORDER_DEFAULT ); + +/** @example samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp +Sample code using Sobel and/or Scharr OpenCV functions to make a simple Edge Detector +![Sample screenshot](Sobel_Derivatives_Tutorial_Result.jpg) +Check @ref tutorial_sobel_derivatives "the corresponding tutorial" for more details +*/ + +/** @brief Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. + +In all cases except one, the \f$\texttt{ksize} \times \texttt{ksize}\f$ separable kernel is used to +calculate the derivative. When \f$\texttt{ksize = 1}\f$, the \f$3 \times 1\f$ or \f$1 \times 3\f$ +kernel is used (that is, no Gaussian smoothing is done). `ksize = 1` can only be used for the first +or the second x- or y- derivatives. + +There is also the special value `ksize = #FILTER_SCHARR (-1)` that corresponds to the \f$3\times3\f$ Scharr +filter that may give more accurate results than the \f$3\times3\f$ Sobel. The Scharr aperture is + +\f[\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\f] + +for the x-derivative, or transposed for the y-derivative. + +The function calculates an image derivative by convolving the image with the appropriate kernel: + +\f[\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\f] + +The Sobel operators combine Gaussian smoothing and differentiation, so the result is more or less +resistant to the noise. Most often, the function is called with ( xorder = 1, yorder = 0, ksize = 3) +or ( xorder = 0, yorder = 1, ksize = 3) to calculate the first x- or y- image derivative. The first +case corresponds to a kernel of: + +\f[\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\f] + +The second case corresponds to a kernel of: + +\f[\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\f] + +@param src input image. +@param dst output image of the same size and the same number of channels as src . +@param ddepth output image depth, see @ref filter_depths "combinations"; in the case of + 8-bit input images it will result in truncated derivatives. +@param dx order of the derivative x. +@param dy order of the derivative y. +@param ksize size of the extended Sobel kernel; it must be 1, 3, 5, or 7. +@param scale optional scale factor for the computed derivative values; by default, no scaling is +applied (see #getDerivKernels for details). +@param delta optional delta value that is added to the results prior to storing them in dst. +@param borderType pixel extrapolation method, see #BorderTypes +@sa Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar + */ +CV_EXPORTS_W void Sobel( InputArray src, OutputArray dst, int ddepth, + int dx, int dy, int ksize = 3, + double scale = 1, double delta = 0, + int borderType = BORDER_DEFAULT ); + +/** @brief Calculates the first order image derivative in both x and y using a Sobel operator + +Equivalent to calling: + +@code +Sobel( src, dx, CV_16SC1, 1, 0, 3 ); +Sobel( src, dy, CV_16SC1, 0, 1, 3 ); +@endcode + +@param src input image. +@param dx output image with first-order derivative in x. +@param dy output image with first-order derivative in y. +@param ksize size of Sobel kernel. It must be 3. +@param borderType pixel extrapolation method, see #BorderTypes + +@sa Sobel + */ + +CV_EXPORTS_W void spatialGradient( InputArray src, OutputArray dx, + OutputArray dy, int ksize = 3, + int borderType = BORDER_DEFAULT ); + +/** @brief Calculates the first x- or y- image derivative using Scharr operator. + +The function computes the first x- or y- spatial image derivative using the Scharr operator. The +call + +\f[\texttt{Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType)}\f] + +is equivalent to + +\f[\texttt{Sobel(src, dst, ddepth, dx, dy, FILTER_SCHARR, scale, delta, borderType)} .\f] + +@param src input image. +@param dst output image of the same size and the same number of channels as src. +@param ddepth output image depth, see @ref filter_depths "combinations" +@param dx order of the derivative x. +@param dy order of the derivative y. +@param scale optional scale factor for the computed derivative values; by default, no scaling is +applied (see #getDerivKernels for details). +@param delta optional delta value that is added to the results prior to storing them in dst. +@param borderType pixel extrapolation method, see #BorderTypes +@sa cartToPolar + */ +CV_EXPORTS_W void Scharr( InputArray src, OutputArray dst, int ddepth, + int dx, int dy, double scale = 1, double delta = 0, + int borderType = BORDER_DEFAULT ); + +/** @example samples/cpp/laplace.cpp +An example using Laplace transformations for edge detection +*/ + +/** @brief Calculates the Laplacian of an image. + +The function calculates the Laplacian of the source image by adding up the second x and y +derivatives calculated using the Sobel operator: + +\f[\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\f] + +This is done when `ksize > 1`. When `ksize == 1`, the Laplacian is computed by filtering the image +with the following \f$3 \times 3\f$ aperture: + +\f[\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\f] + +@param src Source image. +@param dst Destination image of the same size and the same number of channels as src . +@param ddepth Desired depth of the destination image. +@param ksize Aperture size used to compute the second-derivative filters. See #getDerivKernels for +details. The size must be positive and odd. +@param scale Optional scale factor for the computed Laplacian values. By default, no scaling is +applied. See #getDerivKernels for details. +@param delta Optional delta value that is added to the results prior to storing them in dst . +@param borderType Pixel extrapolation method, see #BorderTypes +@sa Sobel, Scharr + */ +CV_EXPORTS_W void Laplacian( InputArray src, OutputArray dst, int ddepth, + int ksize = 1, double scale = 1, double delta = 0, + int borderType = BORDER_DEFAULT ); + +//! @} imgproc_filter + +//! @addtogroup imgproc_feature +//! @{ + +/** @example samples/cpp/edge.cpp +This program demonstrates usage of the Canny edge detector + +Check @ref tutorial_canny_detector "the corresponding tutorial" for more details +*/ + +/** @brief Finds edges in an image using the Canny algorithm @cite Canny86 . + +The function finds edges in the input image and marks them in the output map edges using the +Canny algorithm. The smallest value between threshold1 and threshold2 is used for edge linking. The +largest value is used to find initial segments of strong edges. See + + +@param image 8-bit input image. +@param edges output edge map; single channels 8-bit image, which has the same size as image . +@param threshold1 first threshold for the hysteresis procedure. +@param threshold2 second threshold for the hysteresis procedure. +@param apertureSize aperture size for the Sobel operator. +@param L2gradient a flag, indicating whether a more accurate \f$L_2\f$ norm +\f$=\sqrt{(dI/dx)^2 + (dI/dy)^2}\f$ should be used to calculate the image gradient magnitude ( +L2gradient=true ), or whether the default \f$L_1\f$ norm \f$=|dI/dx|+|dI/dy|\f$ is enough ( +L2gradient=false ). + */ +CV_EXPORTS_W void Canny( InputArray image, OutputArray edges, + double threshold1, double threshold2, + int apertureSize = 3, bool L2gradient = false ); + +/** \overload + +Finds edges in an image using the Canny algorithm with custom image gradient. + +@param dx 16-bit x derivative of input image (CV_16SC1 or CV_16SC3). +@param dy 16-bit y derivative of input image (same type as dx). +@param edges output edge map; single channels 8-bit image, which has the same size as image . +@param threshold1 first threshold for the hysteresis procedure. +@param threshold2 second threshold for the hysteresis procedure. +@param L2gradient a flag, indicating whether a more accurate \f$L_2\f$ norm +\f$=\sqrt{(dI/dx)^2 + (dI/dy)^2}\f$ should be used to calculate the image gradient magnitude ( +L2gradient=true ), or whether the default \f$L_1\f$ norm \f$=|dI/dx|+|dI/dy|\f$ is enough ( +L2gradient=false ). + */ +CV_EXPORTS_W void Canny( InputArray dx, InputArray dy, + OutputArray edges, + double threshold1, double threshold2, + bool L2gradient = false ); + +/** @brief Calculates the minimal eigenvalue of gradient matrices for corner detection. + +The function is similar to cornerEigenValsAndVecs but it calculates and stores only the minimal +eigenvalue of the covariance matrix of derivatives, that is, \f$\min(\lambda_1, \lambda_2)\f$ in terms +of the formulae in the cornerEigenValsAndVecs description. + +@param src Input single-channel 8-bit or floating-point image. +@param dst Image to store the minimal eigenvalues. It has the type CV_32FC1 and the same size as +src . +@param blockSize Neighborhood size (see the details on #cornerEigenValsAndVecs ). +@param ksize Aperture parameter for the Sobel operator. +@param borderType Pixel extrapolation method. See #BorderTypes. + */ +CV_EXPORTS_W void cornerMinEigenVal( InputArray src, OutputArray dst, + int blockSize, int ksize = 3, + int borderType = BORDER_DEFAULT ); + +/** @brief Harris corner detector. + +The function runs the Harris corner detector on the image. Similarly to cornerMinEigenVal and +cornerEigenValsAndVecs , for each pixel \f$(x, y)\f$ it calculates a \f$2\times2\f$ gradient covariance +matrix \f$M^{(x,y)}\f$ over a \f$\texttt{blockSize} \times \texttt{blockSize}\f$ neighborhood. Then, it +computes the following characteristic: + +\f[\texttt{dst} (x,y) = \mathrm{det} M^{(x,y)} - k \cdot \left ( \mathrm{tr} M^{(x,y)} \right )^2\f] + +Corners in the image can be found as the local maxima of this response map. + +@param src Input single-channel 8-bit or floating-point image. +@param dst Image to store the Harris detector responses. It has the type CV_32FC1 and the same +size as src . +@param blockSize Neighborhood size (see the details on #cornerEigenValsAndVecs ). +@param ksize Aperture parameter for the Sobel operator. +@param k Harris detector free parameter. See the formula above. +@param borderType Pixel extrapolation method. See #BorderTypes. + */ +CV_EXPORTS_W void cornerHarris( InputArray src, OutputArray dst, int blockSize, + int ksize, double k, + int borderType = BORDER_DEFAULT ); + +/** @brief Calculates eigenvalues and eigenvectors of image blocks for corner detection. + +For every pixel \f$p\f$ , the function cornerEigenValsAndVecs considers a blockSize \f$\times\f$ blockSize +neighborhood \f$S(p)\f$ . It calculates the covariation matrix of derivatives over the neighborhood as: + +\f[M = \begin{bmatrix} \sum _{S(p)}(dI/dx)^2 & \sum _{S(p)}dI/dx dI/dy \\ \sum _{S(p)}dI/dx dI/dy & \sum _{S(p)}(dI/dy)^2 \end{bmatrix}\f] + +where the derivatives are computed using the Sobel operator. + +After that, it finds eigenvectors and eigenvalues of \f$M\f$ and stores them in the destination image as +\f$(\lambda_1, \lambda_2, x_1, y_1, x_2, y_2)\f$ where + +- \f$\lambda_1, \lambda_2\f$ are the non-sorted eigenvalues of \f$M\f$ +- \f$x_1, y_1\f$ are the eigenvectors corresponding to \f$\lambda_1\f$ +- \f$x_2, y_2\f$ are the eigenvectors corresponding to \f$\lambda_2\f$ + +The output of the function can be used for robust edge or corner detection. + +@param src Input single-channel 8-bit or floating-point image. +@param dst Image to store the results. It has the same size as src and the type CV_32FC(6) . +@param blockSize Neighborhood size (see details below). +@param ksize Aperture parameter for the Sobel operator. +@param borderType Pixel extrapolation method. See #BorderTypes. + +@sa cornerMinEigenVal, cornerHarris, preCornerDetect + */ +CV_EXPORTS_W void cornerEigenValsAndVecs( InputArray src, OutputArray dst, + int blockSize, int ksize, + int borderType = BORDER_DEFAULT ); + +/** @brief Calculates a feature map for corner detection. + +The function calculates the complex spatial derivative-based function of the source image + +\f[\texttt{dst} = (D_x \texttt{src} )^2 \cdot D_{yy} \texttt{src} + (D_y \texttt{src} )^2 \cdot D_{xx} \texttt{src} - 2 D_x \texttt{src} \cdot D_y \texttt{src} \cdot D_{xy} \texttt{src}\f] + +where \f$D_x\f$,\f$D_y\f$ are the first image derivatives, \f$D_{xx}\f$,\f$D_{yy}\f$ are the second image +derivatives, and \f$D_{xy}\f$ is the mixed derivative. + +The corners can be found as local maximums of the functions, as shown below: +@code + Mat corners, dilated_corners; + preCornerDetect(image, corners, 3); + // dilation with 3x3 rectangular structuring element + dilate(corners, dilated_corners, Mat(), 1); + Mat corner_mask = corners == dilated_corners; +@endcode + +@param src Source single-channel 8-bit of floating-point image. +@param dst Output image that has the type CV_32F and the same size as src . +@param ksize %Aperture size of the Sobel . +@param borderType Pixel extrapolation method. See #BorderTypes. + */ +CV_EXPORTS_W void preCornerDetect( InputArray src, OutputArray dst, int ksize, + int borderType = BORDER_DEFAULT ); + +/** @brief Refines the corner locations. + +The function iterates to find the sub-pixel accurate location of corners or radial saddle points, as +shown on the figure below. + +![image](pics/cornersubpix.png) + +Sub-pixel accurate corner locator is based on the observation that every vector from the center \f$q\f$ +to a point \f$p\f$ located within a neighborhood of \f$q\f$ is orthogonal to the image gradient at \f$p\f$ +subject to image and measurement noise. Consider the expression: + +\f[\epsilon _i = {DI_{p_i}}^T \cdot (q - p_i)\f] + +where \f${DI_{p_i}}\f$ is an image gradient at one of the points \f$p_i\f$ in a neighborhood of \f$q\f$ . The +value of \f$q\f$ is to be found so that \f$\epsilon_i\f$ is minimized. A system of equations may be set up +with \f$\epsilon_i\f$ set to zero: + +\f[\sum _i(DI_{p_i} \cdot {DI_{p_i}}^T) \cdot q - \sum _i(DI_{p_i} \cdot {DI_{p_i}}^T \cdot p_i)\f] + +where the gradients are summed within a neighborhood ("search window") of \f$q\f$ . Calling the first +gradient term \f$G\f$ and the second gradient term \f$b\f$ gives: + +\f[q = G^{-1} \cdot b\f] + +The algorithm sets the center of the neighborhood window at this new center \f$q\f$ and then iterates +until the center stays within a set threshold. + +@param image Input single-channel, 8-bit or float image. +@param corners Initial coordinates of the input corners and refined coordinates provided for +output. +@param winSize Half of the side length of the search window. For example, if winSize=Size(5,5) , +then a \f$(5*2+1) \times (5*2+1) = 11 \times 11\f$ search window is used. +@param zeroZone Half of the size of the dead region in the middle of the search zone over which +the summation in the formula below is not done. It is used sometimes to avoid possible +singularities of the autocorrelation matrix. The value of (-1,-1) indicates that there is no such +a size. +@param criteria Criteria for termination of the iterative process of corner refinement. That is, +the process of corner position refinement stops either after criteria.maxCount iterations or when +the corner position moves by less than criteria.epsilon on some iteration. + */ +CV_EXPORTS_W void cornerSubPix( InputArray image, InputOutputArray corners, + Size winSize, Size zeroZone, + TermCriteria criteria ); + +/** @brief Determines strong corners on an image. + +The function finds the most prominent corners in the image or in the specified image region, as +described in @cite Shi94 + +- Function calculates the corner quality measure at every source image pixel using the + #cornerMinEigenVal or #cornerHarris . +- Function performs a non-maximum suppression (the local maximums in *3 x 3* neighborhood are + retained). +- The corners with the minimal eigenvalue less than + \f$\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\f$ are rejected. +- The remaining corners are sorted by the quality measure in the descending order. +- Function throws away each corner for which there is a stronger corner at a distance less than + maxDistance. + +The function can be used to initialize a point-based tracker of an object. + +@note If the function is called with different values A and B of the parameter qualityLevel , and +A \> B, the vector of returned corners with qualityLevel=A will be the prefix of the output vector +with qualityLevel=B . + +@param image Input 8-bit or floating-point 32-bit, single-channel image. +@param corners Output vector of detected corners. +@param maxCorners Maximum number of corners to return. If there are more corners than are found, +the strongest of them is returned. `maxCorners <= 0` implies that no limit on the maximum is set +and all detected corners are returned. +@param qualityLevel Parameter characterizing the minimal accepted quality of image corners. The +parameter value is multiplied by the best corner quality measure, which is the minimal eigenvalue +(see #cornerMinEigenVal ) or the Harris function response (see #cornerHarris ). The corners with the +quality measure less than the product are rejected. For example, if the best corner has the +quality measure = 1500, and the qualityLevel=0.01 , then all the corners with the quality measure +less than 15 are rejected. +@param minDistance Minimum possible Euclidean distance between the returned corners. +@param mask Optional region of interest. If the image is not empty (it needs to have the type +CV_8UC1 and the same size as image ), it specifies the region in which the corners are detected. +@param blockSize Size of an average block for computing a derivative covariation matrix over each +pixel neighborhood. See cornerEigenValsAndVecs . +@param useHarrisDetector Parameter indicating whether to use a Harris detector (see #cornerHarris) +or #cornerMinEigenVal. +@param k Free parameter of the Harris detector. + +@sa cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform, + */ + +CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners, + int maxCorners, double qualityLevel, double minDistance, + InputArray mask = noArray(), int blockSize = 3, + bool useHarrisDetector = false, double k = 0.04 ); + +CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners, + int maxCorners, double qualityLevel, double minDistance, + InputArray mask, int blockSize, + int gradientSize, bool useHarrisDetector = false, + double k = 0.04 ); +/** @example samples/cpp/tutorial_code/ImgTrans/houghlines.cpp +An example using the Hough line detector +![Sample input image](Hough_Lines_Tutorial_Original_Image.jpg) ![Output image](Hough_Lines_Tutorial_Result.jpg) +*/ + +/** @brief Finds lines in a binary image using the standard Hough transform. + +The function implements the standard or standard multi-scale Hough transform algorithm for line +detection. See for a good explanation of Hough +transform. + +@param image 8-bit, single-channel binary source image. The image may be modified by the function. +@param lines Output vector of lines. Each line is represented by a 2 or 3 element vector +\f$(\rho, \theta)\f$ or \f$(\rho, \theta, \textrm{votes})\f$ . \f$\rho\f$ is the distance from the coordinate origin \f$(0,0)\f$ (top-left corner of +the image). \f$\theta\f$ is the line rotation angle in radians ( +\f$0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\f$ ). +\f$\textrm{votes}\f$ is the value of accumulator. +@param rho Distance resolution of the accumulator in pixels. +@param theta Angle resolution of the accumulator in radians. +@param threshold Accumulator threshold parameter. Only those lines are returned that get enough +votes ( \f$>\texttt{threshold}\f$ ). +@param srn For the multi-scale Hough transform, it is a divisor for the distance resolution rho . +The coarse accumulator distance resolution is rho and the accurate accumulator resolution is +rho/srn . If both srn=0 and stn=0 , the classical Hough transform is used. Otherwise, both these +parameters should be positive. +@param stn For the multi-scale Hough transform, it is a divisor for the distance resolution theta. +@param min_theta For standard and multi-scale Hough transform, minimum angle to check for lines. +Must fall between 0 and max_theta. +@param max_theta For standard and multi-scale Hough transform, maximum angle to check for lines. +Must fall between min_theta and CV_PI. + */ +CV_EXPORTS_W void HoughLines( InputArray image, OutputArray lines, + double rho, double theta, int threshold, + double srn = 0, double stn = 0, + double min_theta = 0, double max_theta = CV_PI ); + +/** @brief Finds line segments in a binary image using the probabilistic Hough transform. + +The function implements the probabilistic Hough transform algorithm for line detection, described +in @cite Matas00 + +See the line detection example below: +@include snippets/imgproc_HoughLinesP.cpp +This is a sample picture the function parameters have been tuned for: + +![image](pics/building.jpg) + +And this is the output of the above program in case of the probabilistic Hough transform: + +![image](pics/houghp.png) + +@param image 8-bit, single-channel binary source image. The image may be modified by the function. +@param lines Output vector of lines. Each line is represented by a 4-element vector +\f$(x_1, y_1, x_2, y_2)\f$ , where \f$(x_1,y_1)\f$ and \f$(x_2, y_2)\f$ are the ending points of each detected +line segment. +@param rho Distance resolution of the accumulator in pixels. +@param theta Angle resolution of the accumulator in radians. +@param threshold Accumulator threshold parameter. Only those lines are returned that get enough +votes ( \f$>\texttt{threshold}\f$ ). +@param minLineLength Minimum line length. Line segments shorter than that are rejected. +@param maxLineGap Maximum allowed gap between points on the same line to link them. + +@sa LineSegmentDetector + */ +CV_EXPORTS_W void HoughLinesP( InputArray image, OutputArray lines, + double rho, double theta, int threshold, + double minLineLength = 0, double maxLineGap = 0 ); + +/** @brief Finds lines in a set of points using the standard Hough transform. + +The function finds lines in a set of points using a modification of the Hough transform. +@include snippets/imgproc_HoughLinesPointSet.cpp +@param _point Input vector of points. Each vector must be encoded as a Point vector \f$(x,y)\f$. Type must be CV_32FC2 or CV_32SC2. +@param _lines Output vector of found lines. Each vector is encoded as a vector \f$(votes, rho, theta)\f$. +The larger the value of 'votes', the higher the reliability of the Hough line. +@param lines_max Max count of hough lines. +@param threshold Accumulator threshold parameter. Only those lines are returned that get enough +votes ( \f$>\texttt{threshold}\f$ ) +@param min_rho Minimum Distance value of the accumulator in pixels. +@param max_rho Maximum Distance value of the accumulator in pixels. +@param rho_step Distance resolution of the accumulator in pixels. +@param min_theta Minimum angle value of the accumulator in radians. +@param max_theta Maximum angle value of the accumulator in radians. +@param theta_step Angle resolution of the accumulator in radians. + */ +CV_EXPORTS_W void HoughLinesPointSet( InputArray _point, OutputArray _lines, int lines_max, int threshold, + double min_rho, double max_rho, double rho_step, + double min_theta, double max_theta, double theta_step ); + +/** @example samples/cpp/tutorial_code/ImgTrans/houghcircles.cpp +An example using the Hough circle detector +*/ + +/** @brief Finds circles in a grayscale image using the Hough transform. + +The function finds circles in a grayscale image using a modification of the Hough transform. + +Example: : +@include snippets/imgproc_HoughLinesCircles.cpp + +@note Usually the function detects the centers of circles well. However, it may fail to find correct +radii. You can assist to the function by specifying the radius range ( minRadius and maxRadius ) if +you know it. Or, you may set maxRadius to a negative number to return centers only without radius +search, and find the correct radius using an additional procedure. + +@param image 8-bit, single-channel, grayscale input image. +@param circles Output vector of found circles. Each vector is encoded as 3 or 4 element +floating-point vector \f$(x, y, radius)\f$ or \f$(x, y, radius, votes)\f$ . +@param method Detection method, see #HoughModes. Currently, the only implemented method is #HOUGH_GRADIENT +@param dp Inverse ratio of the accumulator resolution to the image resolution. For example, if +dp=1 , the accumulator has the same resolution as the input image. If dp=2 , the accumulator has +half as big width and height. +@param minDist Minimum distance between the centers of the detected circles. If the parameter is +too small, multiple neighbor circles may be falsely detected in addition to a true one. If it is +too large, some circles may be missed. +@param param1 First method-specific parameter. In case of #HOUGH_GRADIENT , it is the higher +threshold of the two passed to the Canny edge detector (the lower one is twice smaller). +@param param2 Second method-specific parameter. In case of #HOUGH_GRADIENT , it is the +accumulator threshold for the circle centers at the detection stage. The smaller it is, the more +false circles may be detected. Circles, corresponding to the larger accumulator values, will be +returned first. +@param minRadius Minimum circle radius. +@param maxRadius Maximum circle radius. If <= 0, uses the maximum image dimension. If < 0, returns +centers without finding the radius. + +@sa fitEllipse, minEnclosingCircle + */ +CV_EXPORTS_W void HoughCircles( InputArray image, OutputArray circles, + int method, double dp, double minDist, + double param1 = 100, double param2 = 100, + int minRadius = 0, int maxRadius = 0 ); + +//! @} imgproc_feature + +//! @addtogroup imgproc_filter +//! @{ + +/** @example samples/cpp/tutorial_code/ImgProc/Morphology_2.cpp +Advanced morphology Transformations sample code +![Sample screenshot](Morphology_2_Tutorial_Result.jpg) +Check @ref tutorial_opening_closing_hats "the corresponding tutorial" for more details +*/ + +/** @brief Erodes an image by using a specific structuring element. + +The function erodes the source image using the specified structuring element that determines the +shape of a pixel neighborhood over which the minimum is taken: + +\f[\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f] + +The function supports the in-place mode. Erosion can be applied several ( iterations ) times. In +case of multi-channel images, each channel is processed independently. + +@param src input image; the number of channels can be arbitrary, but the depth should be one of +CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. +@param dst output image of the same size and type as src. +@param kernel structuring element used for erosion; if `element=Mat()`, a `3 x 3` rectangular +structuring element is used. Kernel can be created using #getStructuringElement. +@param anchor position of the anchor within the element; default value (-1, -1) means that the +anchor is at the element center. +@param iterations number of times erosion is applied. +@param borderType pixel extrapolation method, see #BorderTypes +@param borderValue border value in case of a constant border +@sa dilate, morphologyEx, getStructuringElement + */ +CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel, + Point anchor = Point(-1,-1), int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue() ); + +/** @example samples/cpp/tutorial_code/ImgProc/Morphology_1.cpp +Erosion and Dilation sample code +![Sample Screenshot-Erosion](Morphology_1_Tutorial_Erosion_Result.jpg)![Sample Screenshot-Dilation](Morphology_1_Tutorial_Dilation_Result.jpg) +Check @ref tutorial_erosion_dilatation "the corresponding tutorial" for more details +*/ + +/** @brief Dilates an image by using a specific structuring element. + +The function dilates the source image using the specified structuring element that determines the +shape of a pixel neighborhood over which the maximum is taken: +\f[\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f] + +The function supports the in-place mode. Dilation can be applied several ( iterations ) times. In +case of multi-channel images, each channel is processed independently. + +@param src input image; the number of channels can be arbitrary, but the depth should be one of +CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. +@param dst output image of the same size and type as src. +@param kernel structuring element used for dilation; if elemenat=Mat(), a 3 x 3 rectangular +structuring element is used. Kernel can be created using #getStructuringElement +@param anchor position of the anchor within the element; default value (-1, -1) means that the +anchor is at the element center. +@param iterations number of times dilation is applied. +@param borderType pixel extrapolation method, see #BorderTypes +@param borderValue border value in case of a constant border +@sa erode, morphologyEx, getStructuringElement + */ +CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel, + Point anchor = Point(-1,-1), int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue() ); + +/** @brief Performs advanced morphological transformations. + +The function cv::morphologyEx can perform advanced morphological transformations using an erosion and dilation as +basic operations. + +Any of the operations can be done in-place. In case of multi-channel images, each channel is +processed independently. + +@param src Source image. The number of channels can be arbitrary. The depth should be one of +CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. +@param dst Destination image of the same size and type as source image. +@param op Type of a morphological operation, see #MorphTypes +@param kernel Structuring element. It can be created using #getStructuringElement. +@param anchor Anchor position with the kernel. Negative values mean that the anchor is at the +kernel center. +@param iterations Number of times erosion and dilation are applied. +@param borderType Pixel extrapolation method, see #BorderTypes +@param borderValue Border value in case of a constant border. The default value has a special +meaning. +@sa dilate, erode, getStructuringElement +@note The number of iterations is the number of times erosion or dilatation operation will be applied. +For instance, an opening operation (#MORPH_OPEN) with two iterations is equivalent to apply +successively: erode -> erode -> dilate -> dilate (and not erode -> dilate -> erode -> dilate). + */ +CV_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst, + int op, InputArray kernel, + Point anchor = Point(-1,-1), int iterations = 1, + int borderType = BORDER_CONSTANT, + const Scalar& borderValue = morphologyDefaultBorderValue() ); + +//! @} imgproc_filter + +//! @addtogroup imgproc_transform +//! @{ + +/** @brief Resizes an image. + +The function resize resizes the image src down to or up to the specified size. Note that the +initial dst type or size are not taken into account. Instead, the size and type are derived from +the `src`,`dsize`,`fx`, and `fy`. If you want to resize src so that it fits the pre-created dst, +you may call the function as follows: +@code + // explicitly specify dsize=dst.size(); fx and fy will be computed from that. + resize(src, dst, dst.size(), 0, 0, interpolation); +@endcode +If you want to decimate the image by factor of 2 in each direction, you can call the function this +way: +@code + // specify fx and fy and let the function compute the destination image size. + resize(src, dst, Size(), 0.5, 0.5, interpolation); +@endcode +To shrink an image, it will generally look best with #INTER_AREA interpolation, whereas to +enlarge an image, it will generally look best with c#INTER_CUBIC (slow) or #INTER_LINEAR +(faster but still looks OK). + +@param src input image. +@param dst output image; it has the size dsize (when it is non-zero) or the size computed from +src.size(), fx, and fy; the type of dst is the same as of src. +@param dsize output image size; if it equals zero, it is computed as: + \f[\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\f] + Either dsize or both fx and fy must be non-zero. +@param fx scale factor along the horizontal axis; when it equals 0, it is computed as +\f[\texttt{(double)dsize.width/src.cols}\f] +@param fy scale factor along the vertical axis; when it equals 0, it is computed as +\f[\texttt{(double)dsize.height/src.rows}\f] +@param interpolation interpolation method, see #InterpolationFlags + +@sa warpAffine, warpPerspective, remap + */ +CV_EXPORTS_W void resize( InputArray src, OutputArray dst, + Size dsize, double fx = 0, double fy = 0, + int interpolation = INTER_LINEAR ); + +/** @brief Applies an affine transformation to an image. + +The function warpAffine transforms the source image using the specified matrix: + +\f[\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\f] + +when the flag #WARP_INVERSE_MAP is set. Otherwise, the transformation is first inverted +with #invertAffineTransform and then put in the formula above instead of M. The function cannot +operate in-place. + +@param src input image. +@param dst output image that has the size dsize and the same type as src . +@param M \f$2\times 3\f$ transformation matrix. +@param dsize size of the output image. +@param flags combination of interpolation methods (see #InterpolationFlags) and the optional +flag #WARP_INVERSE_MAP that means that M is the inverse transformation ( +\f$\texttt{dst}\rightarrow\texttt{src}\f$ ). +@param borderMode pixel extrapolation method (see #BorderTypes); when +borderMode=#BORDER_TRANSPARENT, it means that the pixels in the destination image corresponding to +the "outliers" in the source image are not modified by the function. +@param borderValue value used in case of a constant border; by default, it is 0. + +@sa warpPerspective, resize, remap, getRectSubPix, transform + */ +CV_EXPORTS_W void warpAffine( InputArray src, OutputArray dst, + InputArray M, Size dsize, + int flags = INTER_LINEAR, + int borderMode = BORDER_CONSTANT, + const Scalar& borderValue = Scalar()); + +/** @example samples/cpp/warpPerspective_demo.cpp +An example program shows using cv::findHomography and cv::warpPerspective for image warping +*/ + +/** @brief Applies a perspective transformation to an image. + +The function warpPerspective transforms the source image using the specified matrix: + +\f[\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , + \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\f] + +when the flag #WARP_INVERSE_MAP is set. Otherwise, the transformation is first inverted with invert +and then put in the formula above instead of M. The function cannot operate in-place. + +@param src input image. +@param dst output image that has the size dsize and the same type as src . +@param M \f$3\times 3\f$ transformation matrix. +@param dsize size of the output image. +@param flags combination of interpolation methods (#INTER_LINEAR or #INTER_NEAREST) and the +optional flag #WARP_INVERSE_MAP, that sets M as the inverse transformation ( +\f$\texttt{dst}\rightarrow\texttt{src}\f$ ). +@param borderMode pixel extrapolation method (#BORDER_CONSTANT or #BORDER_REPLICATE). +@param borderValue value used in case of a constant border; by default, it equals 0. + +@sa warpAffine, resize, remap, getRectSubPix, perspectiveTransform + */ +CV_EXPORTS_W void warpPerspective( InputArray src, OutputArray dst, + InputArray M, Size dsize, + int flags = INTER_LINEAR, + int borderMode = BORDER_CONSTANT, + const Scalar& borderValue = Scalar()); + +/** @brief Applies a generic geometrical transformation to an image. + +The function remap transforms the source image using the specified map: + +\f[\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\f] + +where values of pixels with non-integer coordinates are computed using one of available +interpolation methods. \f$map_x\f$ and \f$map_y\f$ can be encoded as separate floating-point maps +in \f$map_1\f$ and \f$map_2\f$ respectively, or interleaved floating-point maps of \f$(x,y)\f$ in +\f$map_1\f$, or fixed-point maps created by using convertMaps. The reason you might want to +convert from floating to fixed-point representations of a map is that they can yield much faster +(\~2x) remapping operations. In the converted case, \f$map_1\f$ contains pairs (cvFloor(x), +cvFloor(y)) and \f$map_2\f$ contains indices in a table of interpolation coefficients. + +This function cannot operate in-place. + +@param src Source image. +@param dst Destination image. It has the same size as map1 and the same type as src . +@param map1 The first map of either (x,y) points or just x values having the type CV_16SC2 , +CV_32FC1, or CV_32FC2. See convertMaps for details on converting a floating point +representation to fixed-point for speed. +@param map2 The second map of y values having the type CV_16UC1, CV_32FC1, or none (empty map +if map1 is (x,y) points), respectively. +@param interpolation Interpolation method (see #InterpolationFlags). The method #INTER_AREA is +not supported by this function. +@param borderMode Pixel extrapolation method (see #BorderTypes). When +borderMode=#BORDER_TRANSPARENT, it means that the pixels in the destination image that +corresponds to the "outliers" in the source image are not modified by the function. +@param borderValue Value used in case of a constant border. By default, it is 0. +@note +Due to current implementation limitations the size of an input and output images should be less than 32767x32767. + */ +CV_EXPORTS_W void remap( InputArray src, OutputArray dst, + InputArray map1, InputArray map2, + int interpolation, int borderMode = BORDER_CONSTANT, + const Scalar& borderValue = Scalar()); + +/** @brief Converts image transformation maps from one representation to another. + +The function converts a pair of maps for remap from one representation to another. The following +options ( (map1.type(), map2.type()) \f$\rightarrow\f$ (dstmap1.type(), dstmap2.type()) ) are +supported: + +- \f$\texttt{(CV_32FC1, CV_32FC1)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\f$. This is the +most frequently used conversion operation, in which the original floating-point maps (see remap ) +are converted to a more compact and much faster fixed-point representation. The first output array +contains the rounded coordinates and the second array (created only when nninterpolation=false ) +contains indices in the interpolation tables. + +- \f$\texttt{(CV_32FC2)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\f$. The same as above but +the original maps are stored in one 2-channel matrix. + +- Reverse conversion. Obviously, the reconstructed floating-point maps will not be exactly the same +as the originals. + +@param map1 The first input map of type CV_16SC2, CV_32FC1, or CV_32FC2 . +@param map2 The second input map of type CV_16UC1, CV_32FC1, or none (empty matrix), +respectively. +@param dstmap1 The first output map that has the type dstmap1type and the same size as src . +@param dstmap2 The second output map. +@param dstmap1type Type of the first output map that should be CV_16SC2, CV_32FC1, or +CV_32FC2 . +@param nninterpolation Flag indicating whether the fixed-point maps are used for the +nearest-neighbor or for a more complex interpolation. + +@sa remap, undistort, initUndistortRectifyMap + */ +CV_EXPORTS_W void convertMaps( InputArray map1, InputArray map2, + OutputArray dstmap1, OutputArray dstmap2, + int dstmap1type, bool nninterpolation = false ); + +/** @brief Calculates an affine matrix of 2D rotation. + +The function calculates the following matrix: + +\f[\begin{bmatrix} \alpha & \beta & (1- \alpha ) \cdot \texttt{center.x} - \beta \cdot \texttt{center.y} \\ - \beta & \alpha & \beta \cdot \texttt{center.x} + (1- \alpha ) \cdot \texttt{center.y} \end{bmatrix}\f] + +where + +\f[\begin{array}{l} \alpha = \texttt{scale} \cdot \cos \texttt{angle} , \\ \beta = \texttt{scale} \cdot \sin \texttt{angle} \end{array}\f] + +The transformation maps the rotation center to itself. If this is not the target, adjust the shift. + +@param center Center of the rotation in the source image. +@param angle Rotation angle in degrees. Positive values mean counter-clockwise rotation (the +coordinate origin is assumed to be the top-left corner). +@param scale Isotropic scale factor. + +@sa getAffineTransform, warpAffine, transform + */ +CV_EXPORTS_W Mat getRotationMatrix2D( Point2f center, double angle, double scale ); + +/** @brief Calculates an affine transform from three pairs of the corresponding points. + +The function calculates the \f$2 \times 3\f$ matrix of an affine transform so that: + +\f[\begin{bmatrix} x'_i \\ y'_i \end{bmatrix} = \texttt{map_matrix} \cdot \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix}\f] + +where + +\f[dst(i)=(x'_i,y'_i), src(i)=(x_i, y_i), i=0,1,2\f] + +@param src Coordinates of triangle vertices in the source image. +@param dst Coordinates of the corresponding triangle vertices in the destination image. + +@sa warpAffine, transform + */ +CV_EXPORTS Mat getAffineTransform( const Point2f src[], const Point2f dst[] ); + +/** @brief Inverts an affine transformation. + +The function computes an inverse affine transformation represented by \f$2 \times 3\f$ matrix M: + +\f[\begin{bmatrix} a_{11} & a_{12} & b_1 \\ a_{21} & a_{22} & b_2 \end{bmatrix}\f] + +The result is also a \f$2 \times 3\f$ matrix of the same type as M. + +@param M Original affine transformation. +@param iM Output reverse affine transformation. + */ +CV_EXPORTS_W void invertAffineTransform( InputArray M, OutputArray iM ); + +/** @brief Calculates a perspective transform from four pairs of the corresponding points. + +The function calculates the \f$3 \times 3\f$ matrix of a perspective transform so that: + +\f[\begin{bmatrix} t_i x'_i \\ t_i y'_i \\ t_i \end{bmatrix} = \texttt{map_matrix} \cdot \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix}\f] + +where + +\f[dst(i)=(x'_i,y'_i), src(i)=(x_i, y_i), i=0,1,2,3\f] + +@param src Coordinates of quadrangle vertices in the source image. +@param dst Coordinates of the corresponding quadrangle vertices in the destination image. +@param solveMethod method passed to cv::solve (#DecompTypes) + +@sa findHomography, warpPerspective, perspectiveTransform + */ +CV_EXPORTS_W Mat getPerspectiveTransform(InputArray src, InputArray dst, int solveMethod = DECOMP_LU); + +/** @overload */ +CV_EXPORTS Mat getPerspectiveTransform(const Point2f src[], const Point2f dst[], int solveMethod = DECOMP_LU); + + +CV_EXPORTS_W Mat getAffineTransform( InputArray src, InputArray dst ); + +/** @brief Retrieves a pixel rectangle from an image with sub-pixel accuracy. + +The function getRectSubPix extracts pixels from src: + +\f[patch(x, y) = src(x + \texttt{center.x} - ( \texttt{dst.cols} -1)*0.5, y + \texttt{center.y} - ( \texttt{dst.rows} -1)*0.5)\f] + +where the values of the pixels at non-integer coordinates are retrieved using bilinear +interpolation. Every channel of multi-channel images is processed independently. Also +the image should be a single channel or three channel image. While the center of the +rectangle must be inside the image, parts of the rectangle may be outside. + +@param image Source image. +@param patchSize Size of the extracted patch. +@param center Floating point coordinates of the center of the extracted rectangle within the +source image. The center must be inside the image. +@param patch Extracted patch that has the size patchSize and the same number of channels as src . +@param patchType Depth of the extracted pixels. By default, they have the same depth as src . + +@sa warpAffine, warpPerspective + */ +CV_EXPORTS_W void getRectSubPix( InputArray image, Size patchSize, + Point2f center, OutputArray patch, int patchType = -1 ); + +/** @example samples/cpp/polar_transforms.cpp +An example using the cv::linearPolar and cv::logPolar operations +*/ + +/** @brief Remaps an image to semilog-polar coordinates space. + +@deprecated This function produces same result as cv::warpPolar(src, dst, src.size(), center, maxRadius, flags+WARP_POLAR_LOG); + +@internal +Transform the source image using the following transformation (See @ref polar_remaps_reference_image "Polar remaps reference image d)"): +\f[\begin{array}{l} + dst( \rho , \phi ) = src(x,y) \\ + dst.size() \leftarrow src.size() +\end{array}\f] + +where +\f[\begin{array}{l} + I = (dx,dy) = (x - center.x,y - center.y) \\ + \rho = M \cdot log_e(\texttt{magnitude} (I)) ,\\ + \phi = Kangle \cdot \texttt{angle} (I) \\ +\end{array}\f] + +and +\f[\begin{array}{l} + M = src.cols / log_e(maxRadius) \\ + Kangle = src.rows / 2\Pi \\ +\end{array}\f] + +The function emulates the human "foveal" vision and can be used for fast scale and +rotation-invariant template matching, for object tracking and so forth. +@param src Source image +@param dst Destination image. It will have same size and type as src. +@param center The transformation center; where the output precision is maximal +@param M Magnitude scale parameter. It determines the radius of the bounding circle to transform too. +@param flags A combination of interpolation methods, see #InterpolationFlags + +@note +- The function can not operate in-place. +- To calculate magnitude and angle in degrees #cartToPolar is used internally thus angles are measured from 0 to 360 with accuracy about 0.3 degrees. + +@sa cv::linearPolar +@endinternal +*/ +CV_EXPORTS_W void logPolar( InputArray src, OutputArray dst, + Point2f center, double M, int flags ); + +/** @brief Remaps an image to polar coordinates space. + +@deprecated This function produces same result as cv::warpPolar(src, dst, src.size(), center, maxRadius, flags) + +@internal +Transform the source image using the following transformation (See @ref polar_remaps_reference_image "Polar remaps reference image c)"): +\f[\begin{array}{l} + dst( \rho , \phi ) = src(x,y) \\ + dst.size() \leftarrow src.size() +\end{array}\f] + +where +\f[\begin{array}{l} + I = (dx,dy) = (x - center.x,y - center.y) \\ + \rho = Kmag \cdot \texttt{magnitude} (I) ,\\ + \phi = angle \cdot \texttt{angle} (I) +\end{array}\f] + +and +\f[\begin{array}{l} + Kx = src.cols / maxRadius \\ + Ky = src.rows / 2\Pi +\end{array}\f] + + +@param src Source image +@param dst Destination image. It will have same size and type as src. +@param center The transformation center; +@param maxRadius The radius of the bounding circle to transform. It determines the inverse magnitude scale parameter too. +@param flags A combination of interpolation methods, see #InterpolationFlags + +@note +- The function can not operate in-place. +- To calculate magnitude and angle in degrees #cartToPolar is used internally thus angles are measured from 0 to 360 with accuracy about 0.3 degrees. + +@sa cv::logPolar +@endinternal +*/ +CV_EXPORTS_W void linearPolar( InputArray src, OutputArray dst, + Point2f center, double maxRadius, int flags ); + + +/** \brief Remaps an image to polar or semilog-polar coordinates space + +@anchor polar_remaps_reference_image +![Polar remaps reference](pics/polar_remap_doc.png) + +Transform the source image using the following transformation: +\f[ +dst(\rho , \phi ) = src(x,y) +\f] + +where +\f[ +\begin{array}{l} +\vec{I} = (x - center.x, \;y - center.y) \\ +\phi = Kangle \cdot \texttt{angle} (\vec{I}) \\ +\rho = \left\{\begin{matrix} +Klin \cdot \texttt{magnitude} (\vec{I}) & default \\ +Klog \cdot log_e(\texttt{magnitude} (\vec{I})) & if \; semilog \\ +\end{matrix}\right. +\end{array} +\f] + +and +\f[ +\begin{array}{l} +Kangle = dsize.height / 2\Pi \\ +Klin = dsize.width / maxRadius \\ +Klog = dsize.width / log_e(maxRadius) \\ +\end{array} +\f] + + +\par Linear vs semilog mapping + +Polar mapping can be linear or semi-log. Add one of #WarpPolarMode to `flags` to specify the polar mapping mode. + +Linear is the default mode. + +The semilog mapping emulates the human "foveal" vision that permit very high acuity on the line of sight (central vision) +in contrast to peripheral vision where acuity is minor. + +\par Option on `dsize`: + +- if both values in `dsize <=0 ` (default), +the destination image will have (almost) same area of source bounding circle: +\f[\begin{array}{l} +dsize.area \leftarrow (maxRadius^2 \cdot \Pi) \\ +dsize.width = \texttt{cvRound}(maxRadius) \\ +dsize.height = \texttt{cvRound}(maxRadius \cdot \Pi) \\ +\end{array}\f] + + +- if only `dsize.height <= 0`, +the destination image area will be proportional to the bounding circle area but scaled by `Kx * Kx`: +\f[\begin{array}{l} +dsize.height = \texttt{cvRound}(dsize.width \cdot \Pi) \\ +\end{array} +\f] + +- if both values in `dsize > 0 `, +the destination image will have the given size therefore the area of the bounding circle will be scaled to `dsize`. + + +\par Reverse mapping + +You can get reverse mapping adding #WARP_INVERSE_MAP to `flags` +\snippet polar_transforms.cpp InverseMap + +In addiction, to calculate the original coordinate from a polar mapped coordinate \f$(rho, phi)->(x, y)\f$: +\snippet polar_transforms.cpp InverseCoordinate + +@param src Source image. +@param dst Destination image. It will have same type as src. +@param dsize The destination image size (see description for valid options). +@param center The transformation center. +@param maxRadius The radius of the bounding circle to transform. It determines the inverse magnitude scale parameter too. +@param flags A combination of interpolation methods, #InterpolationFlags + #WarpPolarMode. + - Add #WARP_POLAR_LINEAR to select linear polar mapping (default) + - Add #WARP_POLAR_LOG to select semilog polar mapping + - Add #WARP_INVERSE_MAP for reverse mapping. +@note +- The function can not operate in-place. +- To calculate magnitude and angle in degrees #cartToPolar is used internally thus angles are measured from 0 to 360 with accuracy about 0.3 degrees. +- This function uses #remap. Due to current implementation limitations the size of an input and output images should be less than 32767x32767. + +@sa cv::remap +*/ +CV_EXPORTS_W void warpPolar(InputArray src, OutputArray dst, Size dsize, + Point2f center, double maxRadius, int flags); + + +//! @} imgproc_transform + +//! @addtogroup imgproc_misc +//! @{ + +/** @overload */ +CV_EXPORTS_W void integral( InputArray src, OutputArray sum, int sdepth = -1 ); + +/** @overload */ +CV_EXPORTS_AS(integral2) void integral( InputArray src, OutputArray sum, + OutputArray sqsum, int sdepth = -1, int sqdepth = -1 ); + +/** @brief Calculates the integral of an image. + +The function calculates one or more integral images for the source image as follows: + +\f[\texttt{sum} (X,Y) = \sum _{x + +Calculates the cross-power spectrum of two supplied source arrays. The arrays are padded if needed +with getOptimalDFTSize. + +The function performs the following equations: +- First it applies a Hanning window (see ) to each +image to remove possible edge effects. This window is cached until the array size changes to speed +up processing time. +- Next it computes the forward DFTs of each source array: +\f[\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\f] +where \f$\mathcal{F}\f$ is the forward DFT. +- It then computes the cross-power spectrum of each frequency domain array: +\f[R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\f] +- Next the cross-correlation is converted back into the time domain via the inverse DFT: +\f[r = \mathcal{F}^{-1}\{R\}\f] +- Finally, it computes the peak location and computes a 5x5 weighted centroid around the peak to +achieve sub-pixel accuracy. +\f[(\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\f] +- If non-zero, the response parameter is computed as the sum of the elements of r within the 5x5 +centroid around the peak location. It is normalized to a maximum of 1 (meaning there is a single +peak) and will be smaller when there are multiple peaks. + +@param src1 Source floating point array (CV_32FC1 or CV_64FC1) +@param src2 Source floating point array (CV_32FC1 or CV_64FC1) +@param window Floating point array with windowing coefficients to reduce edge effects (optional). +@param response Signal power within the 5x5 centroid around the peak, between 0 and 1 (optional). +@returns detected phase shift (sub-pixel) between the two arrays. + +@sa dft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow + */ +CV_EXPORTS_W Point2d phaseCorrelate(InputArray src1, InputArray src2, + InputArray window = noArray(), CV_OUT double* response = 0); + +/** @brief This function computes a Hanning window coefficients in two dimensions. + +See (http://en.wikipedia.org/wiki/Hann_function) and (http://en.wikipedia.org/wiki/Window_function) +for more information. + +An example is shown below: +@code + // create hanning window of size 100x100 and type CV_32F + Mat hann; + createHanningWindow(hann, Size(100, 100), CV_32F); +@endcode +@param dst Destination array to place Hann coefficients in +@param winSize The window size specifications (both width and height must be > 1) +@param type Created array type + */ +CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type); + +//! @} imgproc_motion + +//! @addtogroup imgproc_misc +//! @{ + +/** @brief Applies a fixed-level threshold to each array element. + +The function applies fixed-level thresholding to a multiple-channel array. The function is typically +used to get a bi-level (binary) image out of a grayscale image ( #compare could be also used for +this purpose) or for removing a noise, that is, filtering out pixels with too small or too large +values. There are several types of thresholding supported by the function. They are determined by +type parameter. + +Also, the special values #THRESH_OTSU or #THRESH_TRIANGLE may be combined with one of the +above values. In these cases, the function determines the optimal threshold value using the Otsu's +or Triangle algorithm and uses it instead of the specified thresh. + +@note Currently, the Otsu's and Triangle methods are implemented only for 8-bit single-channel images. + +@param src input array (multiple-channel, 8-bit or 32-bit floating point). +@param dst output array of the same size and type and the same number of channels as src. +@param thresh threshold value. +@param maxval maximum value to use with the #THRESH_BINARY and #THRESH_BINARY_INV thresholding +types. +@param type thresholding type (see #ThresholdTypes). +@return the computed threshold value if Otsu's or Triangle methods used. + +@sa adaptiveThreshold, findContours, compare, min, max + */ +CV_EXPORTS_W double threshold( InputArray src, OutputArray dst, + double thresh, double maxval, int type ); + + +/** @brief Applies an adaptive threshold to an array. + +The function transforms a grayscale image to a binary image according to the formulae: +- **THRESH_BINARY** + \f[dst(x,y) = \fork{\texttt{maxValue}}{if \(src(x,y) > T(x,y)\)}{0}{otherwise}\f] +- **THRESH_BINARY_INV** + \f[dst(x,y) = \fork{0}{if \(src(x,y) > T(x,y)\)}{\texttt{maxValue}}{otherwise}\f] +where \f$T(x,y)\f$ is a threshold calculated individually for each pixel (see adaptiveMethod parameter). + +The function can process the image in-place. + +@param src Source 8-bit single-channel image. +@param dst Destination image of the same size and the same type as src. +@param maxValue Non-zero value assigned to the pixels for which the condition is satisfied +@param adaptiveMethod Adaptive thresholding algorithm to use, see #AdaptiveThresholdTypes. +The #BORDER_REPLICATE | #BORDER_ISOLATED is used to process boundaries. +@param thresholdType Thresholding type that must be either #THRESH_BINARY or #THRESH_BINARY_INV, +see #ThresholdTypes. +@param blockSize Size of a pixel neighborhood that is used to calculate a threshold value for the +pixel: 3, 5, 7, and so on. +@param C Constant subtracted from the mean or weighted mean (see the details below). Normally, it +is positive but may be zero or negative as well. + +@sa threshold, blur, GaussianBlur + */ +CV_EXPORTS_W void adaptiveThreshold( InputArray src, OutputArray dst, + double maxValue, int adaptiveMethod, + int thresholdType, int blockSize, double C ); + +//! @} imgproc_misc + +//! @addtogroup imgproc_filter +//! @{ + +/** @example samples/cpp/tutorial_code/ImgProc/Pyramids/Pyramids.cpp +An example using pyrDown and pyrUp functions +*/ + +/** @brief Blurs an image and downsamples it. + +By default, size of the output image is computed as `Size((src.cols+1)/2, (src.rows+1)/2)`, but in +any case, the following conditions should be satisfied: + +\f[\begin{array}{l} | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array}\f] + +The function performs the downsampling step of the Gaussian pyramid construction. First, it +convolves the source image with the kernel: + +\f[\frac{1}{256} \begin{bmatrix} 1 & 4 & 6 & 4 & 1 \\ 4 & 16 & 24 & 16 & 4 \\ 6 & 24 & 36 & 24 & 6 \\ 4 & 16 & 24 & 16 & 4 \\ 1 & 4 & 6 & 4 & 1 \end{bmatrix}\f] + +Then, it downsamples the image by rejecting even rows and columns. + +@param src input image. +@param dst output image; it has the specified size and the same type as src. +@param dstsize size of the output image. +@param borderType Pixel extrapolation method, see #BorderTypes (#BORDER_CONSTANT isn't supported) + */ +CV_EXPORTS_W void pyrDown( InputArray src, OutputArray dst, + const Size& dstsize = Size(), int borderType = BORDER_DEFAULT ); + +/** @brief Upsamples an image and then blurs it. + +By default, size of the output image is computed as `Size(src.cols\*2, (src.rows\*2)`, but in any +case, the following conditions should be satisfied: + +\f[\begin{array}{l} | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array}\f] + +The function performs the upsampling step of the Gaussian pyramid construction, though it can +actually be used to construct the Laplacian pyramid. First, it upsamples the source image by +injecting even zero rows and columns and then convolves the result with the same kernel as in +pyrDown multiplied by 4. + +@param src input image. +@param dst output image. It has the specified size and the same type as src . +@param dstsize size of the output image. +@param borderType Pixel extrapolation method, see #BorderTypes (only #BORDER_DEFAULT is supported) + */ +CV_EXPORTS_W void pyrUp( InputArray src, OutputArray dst, + const Size& dstsize = Size(), int borderType = BORDER_DEFAULT ); + +/** @brief Constructs the Gaussian pyramid for an image. + +The function constructs a vector of images and builds the Gaussian pyramid by recursively applying +pyrDown to the previously built pyramid layers, starting from `dst[0]==src`. + +@param src Source image. Check pyrDown for the list of supported types. +@param dst Destination vector of maxlevel+1 images of the same type as src. dst[0] will be the +same as src. dst[1] is the next pyramid layer, a smoothed and down-sized src, and so on. +@param maxlevel 0-based index of the last (the smallest) pyramid layer. It must be non-negative. +@param borderType Pixel extrapolation method, see #BorderTypes (#BORDER_CONSTANT isn't supported) + */ +CV_EXPORTS void buildPyramid( InputArray src, OutputArrayOfArrays dst, + int maxlevel, int borderType = BORDER_DEFAULT ); + +//! @} imgproc_filter + +//! @addtogroup imgproc_hist +//! @{ + +/** @example samples/cpp/demhist.cpp +An example for creating histograms of an image +*/ + +/** @brief Calculates a histogram of a set of arrays. + +The function cv::calcHist calculates the histogram of one or more arrays. The elements of a tuple used +to increment a histogram bin are taken from the corresponding input arrays at the same location. The +sample below shows how to compute a 2D Hue-Saturation histogram for a color image. : +@include snippets/imgproc_calcHist.cpp + +@param images Source arrays. They all should have the same depth, CV_8U, CV_16U or CV_32F , and the same +size. Each of them can have an arbitrary number of channels. +@param nimages Number of source images. +@param channels List of the dims channels used to compute the histogram. The first array channels +are numerated from 0 to images[0].channels()-1 , the second array channels are counted from +images[0].channels() to images[0].channels() + images[1].channels()-1, and so on. +@param mask Optional mask. If the matrix is not empty, it must be an 8-bit array of the same size +as images[i] . The non-zero mask elements mark the array elements counted in the histogram. +@param hist Output histogram, which is a dense or sparse dims -dimensional array. +@param dims Histogram dimensionality that must be positive and not greater than CV_MAX_DIMS +(equal to 32 in the current OpenCV version). +@param histSize Array of histogram sizes in each dimension. +@param ranges Array of the dims arrays of the histogram bin boundaries in each dimension. When the +histogram is uniform ( uniform =true), then for each dimension i it is enough to specify the lower +(inclusive) boundary \f$L_0\f$ of the 0-th histogram bin and the upper (exclusive) boundary +\f$U_{\texttt{histSize}[i]-1}\f$ for the last histogram bin histSize[i]-1 . That is, in case of a +uniform histogram each of ranges[i] is an array of 2 elements. When the histogram is not uniform ( +uniform=false ), then each of ranges[i] contains histSize[i]+1 elements: +\f$L_0, U_0=L_1, U_1=L_2, ..., U_{\texttt{histSize[i]}-2}=L_{\texttt{histSize[i]}-1}, U_{\texttt{histSize[i]}-1}\f$ +. The array elements, that are not between \f$L_0\f$ and \f$U_{\texttt{histSize[i]}-1}\f$ , are not +counted in the histogram. +@param uniform Flag indicating whether the histogram is uniform or not (see above). +@param accumulate Accumulation flag. If it is set, the histogram is not cleared in the beginning +when it is allocated. This feature enables you to compute a single histogram from several sets of +arrays, or to update the histogram in time. +*/ +CV_EXPORTS void calcHist( const Mat* images, int nimages, + const int* channels, InputArray mask, + OutputArray hist, int dims, const int* histSize, + const float** ranges, bool uniform = true, bool accumulate = false ); + +/** @overload + +this variant uses %SparseMat for output +*/ +CV_EXPORTS void calcHist( const Mat* images, int nimages, + const int* channels, InputArray mask, + SparseMat& hist, int dims, + const int* histSize, const float** ranges, + bool uniform = true, bool accumulate = false ); + +/** @overload */ +CV_EXPORTS_W void calcHist( InputArrayOfArrays images, + const std::vector& channels, + InputArray mask, OutputArray hist, + const std::vector& histSize, + const std::vector& ranges, + bool accumulate = false ); + +/** @brief Calculates the back projection of a histogram. + +The function cv::calcBackProject calculates the back project of the histogram. That is, similarly to +#calcHist , at each location (x, y) the function collects the values from the selected channels +in the input images and finds the corresponding histogram bin. But instead of incrementing it, the +function reads the bin value, scales it by scale , and stores in backProject(x,y) . In terms of +statistics, the function computes probability of each element value in respect with the empirical +probability distribution represented by the histogram. See how, for example, you can find and track +a bright-colored object in a scene: + +- Before tracking, show the object to the camera so that it covers almost the whole frame. +Calculate a hue histogram. The histogram may have strong maximums, corresponding to the dominant +colors in the object. + +- When tracking, calculate a back projection of a hue plane of each input video frame using that +pre-computed histogram. Threshold the back projection to suppress weak colors. It may also make +sense to suppress pixels with non-sufficient color saturation and too dark or too bright pixels. + +- Find connected components in the resulting picture and choose, for example, the largest +component. + +This is an approximate algorithm of the CamShift color object tracker. + +@param images Source arrays. They all should have the same depth, CV_8U, CV_16U or CV_32F , and the same +size. Each of them can have an arbitrary number of channels. +@param nimages Number of source images. +@param channels The list of channels used to compute the back projection. The number of channels +must match the histogram dimensionality. The first array channels are numerated from 0 to +images[0].channels()-1 , the second array channels are counted from images[0].channels() to +images[0].channels() + images[1].channels()-1, and so on. +@param hist Input histogram that can be dense or sparse. +@param backProject Destination back projection array that is a single-channel array of the same +size and depth as images[0] . +@param ranges Array of arrays of the histogram bin boundaries in each dimension. See #calcHist . +@param scale Optional scale factor for the output back projection. +@param uniform Flag indicating whether the histogram is uniform or not (see above). + +@sa calcHist, compareHist + */ +CV_EXPORTS void calcBackProject( const Mat* images, int nimages, + const int* channels, InputArray hist, + OutputArray backProject, const float** ranges, + double scale = 1, bool uniform = true ); + +/** @overload */ +CV_EXPORTS void calcBackProject( const Mat* images, int nimages, + const int* channels, const SparseMat& hist, + OutputArray backProject, const float** ranges, + double scale = 1, bool uniform = true ); + +/** @overload */ +CV_EXPORTS_W void calcBackProject( InputArrayOfArrays images, const std::vector& channels, + InputArray hist, OutputArray dst, + const std::vector& ranges, + double scale ); + +/** @brief Compares two histograms. + +The function cv::compareHist compares two dense or two sparse histograms using the specified method. + +The function returns \f$d(H_1, H_2)\f$ . + +While the function works well with 1-, 2-, 3-dimensional dense histograms, it may not be suitable +for high-dimensional sparse histograms. In such histograms, because of aliasing and sampling +problems, the coordinates of non-zero histogram bins can slightly shift. To compare such histograms +or more general sparse configurations of weighted points, consider using the #EMD function. + +@param H1 First compared histogram. +@param H2 Second compared histogram of the same size as H1 . +@param method Comparison method, see #HistCompMethods + */ +CV_EXPORTS_W double compareHist( InputArray H1, InputArray H2, int method ); + +/** @overload */ +CV_EXPORTS double compareHist( const SparseMat& H1, const SparseMat& H2, int method ); + +/** @brief Equalizes the histogram of a grayscale image. + +The function equalizes the histogram of the input image using the following algorithm: + +- Calculate the histogram \f$H\f$ for src . +- Normalize the histogram so that the sum of histogram bins is 255. +- Compute the integral of the histogram: +\f[H'_i = \sum _{0 \le j < i} H(j)\f] +- Transform the image using \f$H'\f$ as a look-up table: \f$\texttt{dst}(x,y) = H'(\texttt{src}(x,y))\f$ + +The algorithm normalizes the brightness and increases the contrast of the image. + +@param src Source 8-bit single channel image. +@param dst Destination image of the same size and type as src . + */ +CV_EXPORTS_W void equalizeHist( InputArray src, OutputArray dst ); + +/** @brief Creates a smart pointer to a cv::CLAHE class and initializes it. + +@param clipLimit Threshold for contrast limiting. +@param tileGridSize Size of grid for histogram equalization. Input image will be divided into +equally sized rectangular tiles. tileGridSize defines the number of tiles in row and column. + */ +CV_EXPORTS_W Ptr createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8)); + +/** @brief Computes the "minimal work" distance between two weighted point configurations. + +The function computes the earth mover distance and/or a lower boundary of the distance between the +two weighted point configurations. One of the applications described in @cite RubnerSept98, +@cite Rubner2000 is multi-dimensional histogram comparison for image retrieval. EMD is a transportation +problem that is solved using some modification of a simplex algorithm, thus the complexity is +exponential in the worst case, though, on average it is much faster. In the case of a real metric +the lower boundary can be calculated even faster (using linear-time algorithm) and it can be used +to determine roughly whether the two signatures are far enough so that they cannot relate to the +same object. + +@param signature1 First signature, a \f$\texttt{size1}\times \texttt{dims}+1\f$ floating-point matrix. +Each row stores the point weight followed by the point coordinates. The matrix is allowed to have +a single column (weights only) if the user-defined cost matrix is used. The weights must be +non-negative and have at least one non-zero value. +@param signature2 Second signature of the same format as signature1 , though the number of rows +may be different. The total weights may be different. In this case an extra "dummy" point is added +to either signature1 or signature2. The weights must be non-negative and have at least one non-zero +value. +@param distType Used metric. See #DistanceTypes. +@param cost User-defined \f$\texttt{size1}\times \texttt{size2}\f$ cost matrix. Also, if a cost matrix +is used, lower boundary lowerBound cannot be calculated because it needs a metric function. +@param lowerBound Optional input/output parameter: lower boundary of a distance between the two +signatures that is a distance between mass centers. The lower boundary may not be calculated if +the user-defined cost matrix is used, the total weights of point configurations are not equal, or +if the signatures consist of weights only (the signature matrices have a single column). You +**must** initialize \*lowerBound . If the calculated distance between mass centers is greater or +equal to \*lowerBound (it means that the signatures are far enough), the function does not +calculate EMD. In any case \*lowerBound is set to the calculated distance between mass centers on +return. Thus, if you want to calculate both distance between mass centers and EMD, \*lowerBound +should be set to 0. +@param flow Resultant \f$\texttt{size1} \times \texttt{size2}\f$ flow matrix: \f$\texttt{flow}_{i,j}\f$ is +a flow from \f$i\f$ -th point of signature1 to \f$j\f$ -th point of signature2 . + */ +CV_EXPORTS float EMD( InputArray signature1, InputArray signature2, + int distType, InputArray cost=noArray(), + float* lowerBound = 0, OutputArray flow = noArray() ); + +CV_EXPORTS_AS(EMD) float wrapperEMD( InputArray signature1, InputArray signature2, + int distType, InputArray cost=noArray(), + CV_IN_OUT Ptr lowerBound = Ptr(), OutputArray flow = noArray() ); + +//! @} imgproc_hist + +/** @example samples/cpp/watershed.cpp +An example using the watershed algorithm +*/ + +/** @brief Performs a marker-based image segmentation using the watershed algorithm. + +The function implements one of the variants of watershed, non-parametric marker-based segmentation +algorithm, described in @cite Meyer92 . + +Before passing the image to the function, you have to roughly outline the desired regions in the +image markers with positive (\>0) indices. So, every region is represented as one or more connected +components with the pixel values 1, 2, 3, and so on. Such markers can be retrieved from a binary +mask using #findContours and #drawContours (see the watershed.cpp demo). The markers are "seeds" of +the future image regions. All the other pixels in markers , whose relation to the outlined regions +is not known and should be defined by the algorithm, should be set to 0's. In the function output, +each pixel in markers is set to a value of the "seed" components or to -1 at boundaries between the +regions. + +@note Any two neighbor connected components are not necessarily separated by a watershed boundary +(-1's pixels); for example, they can touch each other in the initial marker image passed to the +function. + +@param image Input 8-bit 3-channel image. +@param markers Input/output 32-bit single-channel image (map) of markers. It should have the same +size as image . + +@sa findContours + +@ingroup imgproc_misc + */ +CV_EXPORTS_W void watershed( InputArray image, InputOutputArray markers ); + +//! @addtogroup imgproc_filter +//! @{ + +/** @brief Performs initial step of meanshift segmentation of an image. + +The function implements the filtering stage of meanshift segmentation, that is, the output of the +function is the filtered "posterized" image with color gradients and fine-grain texture flattened. +At every pixel (X,Y) of the input image (or down-sized input image, see below) the function executes +meanshift iterations, that is, the pixel (X,Y) neighborhood in the joint space-color hyperspace is +considered: + +\f[(x,y): X- \texttt{sp} \le x \le X+ \texttt{sp} , Y- \texttt{sp} \le y \le Y+ \texttt{sp} , ||(R,G,B)-(r,g,b)|| \le \texttt{sr}\f] + +where (R,G,B) and (r,g,b) are the vectors of color components at (X,Y) and (x,y), respectively +(though, the algorithm does not depend on the color space used, so any 3-component color space can +be used instead). Over the neighborhood the average spatial value (X',Y') and average color vector +(R',G',B') are found and they act as the neighborhood center on the next iteration: + +\f[(X,Y)~(X',Y'), (R,G,B)~(R',G',B').\f] + +After the iterations over, the color components of the initial pixel (that is, the pixel from where +the iterations started) are set to the final value (average color at the last iteration): + +\f[I(X,Y) <- (R*,G*,B*)\f] + +When maxLevel \> 0, the gaussian pyramid of maxLevel+1 levels is built, and the above procedure is +run on the smallest layer first. After that, the results are propagated to the larger layer and the +iterations are run again only on those pixels where the layer colors differ by more than sr from the +lower-resolution layer of the pyramid. That makes boundaries of color regions sharper. Note that the +results will be actually different from the ones obtained by running the meanshift procedure on the +whole original image (i.e. when maxLevel==0). + +@param src The source 8-bit, 3-channel image. +@param dst The destination image of the same format and the same size as the source. +@param sp The spatial window radius. +@param sr The color window radius. +@param maxLevel Maximum level of the pyramid for the segmentation. +@param termcrit Termination criteria: when to stop meanshift iterations. + */ +CV_EXPORTS_W void pyrMeanShiftFiltering( InputArray src, OutputArray dst, + double sp, double sr, int maxLevel = 1, + TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5,1) ); + +//! @} + +//! @addtogroup imgproc_misc +//! @{ + +/** @example samples/cpp/grabcut.cpp +An example using the GrabCut algorithm +![Sample Screenshot](grabcut_output1.jpg) +*/ + +/** @brief Runs the GrabCut algorithm. + +The function implements the [GrabCut image segmentation algorithm](http://en.wikipedia.org/wiki/GrabCut). + +@param img Input 8-bit 3-channel image. +@param mask Input/output 8-bit single-channel mask. The mask is initialized by the function when +mode is set to #GC_INIT_WITH_RECT. Its elements may have one of the #GrabCutClasses. +@param rect ROI containing a segmented object. The pixels outside of the ROI are marked as +"obvious background". The parameter is only used when mode==#GC_INIT_WITH_RECT . +@param bgdModel Temporary array for the background model. Do not modify it while you are +processing the same image. +@param fgdModel Temporary arrays for the foreground model. Do not modify it while you are +processing the same image. +@param iterCount Number of iterations the algorithm should make before returning the result. Note +that the result can be refined with further calls with mode==#GC_INIT_WITH_MASK or +mode==GC_EVAL . +@param mode Operation mode that could be one of the #GrabCutModes + */ +CV_EXPORTS_W void grabCut( InputArray img, InputOutputArray mask, Rect rect, + InputOutputArray bgdModel, InputOutputArray fgdModel, + int iterCount, int mode = GC_EVAL ); + +/** @example samples/cpp/distrans.cpp +An example on using the distance transform +*/ + +/** @brief Calculates the distance to the closest zero pixel for each pixel of the source image. + +The function cv::distanceTransform calculates the approximate or precise distance from every binary +image pixel to the nearest zero pixel. For zero image pixels, the distance will obviously be zero. + +When maskSize == #DIST_MASK_PRECISE and distanceType == #DIST_L2 , the function runs the +algorithm described in @cite Felzenszwalb04 . This algorithm is parallelized with the TBB library. + +In other cases, the algorithm @cite Borgefors86 is used. This means that for a pixel the function +finds the shortest path to the nearest zero pixel consisting of basic shifts: horizontal, vertical, +diagonal, or knight's move (the latest is available for a \f$5\times 5\f$ mask). The overall +distance is calculated as a sum of these basic distances. Since the distance function should be +symmetric, all of the horizontal and vertical shifts must have the same cost (denoted as a ), all +the diagonal shifts must have the same cost (denoted as `b`), and all knight's moves must have the +same cost (denoted as `c`). For the #DIST_C and #DIST_L1 types, the distance is calculated +precisely, whereas for #DIST_L2 (Euclidean distance) the distance can be calculated only with a +relative error (a \f$5\times 5\f$ mask gives more accurate results). For `a`,`b`, and `c`, OpenCV +uses the values suggested in the original paper: +- DIST_L1: `a = 1, b = 2` +- DIST_L2: + - `3 x 3`: `a=0.955, b=1.3693` + - `5 x 5`: `a=1, b=1.4, c=2.1969` +- DIST_C: `a = 1, b = 1` + +Typically, for a fast, coarse distance estimation #DIST_L2, a \f$3\times 3\f$ mask is used. For a +more accurate distance estimation #DIST_L2, a \f$5\times 5\f$ mask or the precise algorithm is used. +Note that both the precise and the approximate algorithms are linear on the number of pixels. + +This variant of the function does not only compute the minimum distance for each pixel \f$(x, y)\f$ +but also identifies the nearest connected component consisting of zero pixels +(labelType==#DIST_LABEL_CCOMP) or the nearest zero pixel (labelType==#DIST_LABEL_PIXEL). Index of the +component/pixel is stored in `labels(x, y)`. When labelType==#DIST_LABEL_CCOMP, the function +automatically finds connected components of zero pixels in the input image and marks them with +distinct labels. When labelType==#DIST_LABEL_CCOMP, the function scans through the input image and +marks all the zero pixels with distinct labels. + +In this mode, the complexity is still linear. That is, the function provides a very fast way to +compute the Voronoi diagram for a binary image. Currently, the second variant can use only the +approximate distance transform algorithm, i.e. maskSize=#DIST_MASK_PRECISE is not supported +yet. + +@param src 8-bit, single-channel (binary) source image. +@param dst Output image with calculated distances. It is a 8-bit or 32-bit floating-point, +single-channel image of the same size as src. +@param labels Output 2D array of labels (the discrete Voronoi diagram). It has the type +CV_32SC1 and the same size as src. +@param distanceType Type of distance, see #DistanceTypes +@param maskSize Size of the distance transform mask, see #DistanceTransformMasks. +#DIST_MASK_PRECISE is not supported by this variant. In case of the #DIST_L1 or #DIST_C distance type, +the parameter is forced to 3 because a \f$3\times 3\f$ mask gives the same result as \f$5\times +5\f$ or any larger aperture. +@param labelType Type of the label array to build, see #DistanceTransformLabelTypes. + */ +CV_EXPORTS_AS(distanceTransformWithLabels) void distanceTransform( InputArray src, OutputArray dst, + OutputArray labels, int distanceType, int maskSize, + int labelType = DIST_LABEL_CCOMP ); + +/** @overload +@param src 8-bit, single-channel (binary) source image. +@param dst Output image with calculated distances. It is a 8-bit or 32-bit floating-point, +single-channel image of the same size as src . +@param distanceType Type of distance, see #DistanceTypes +@param maskSize Size of the distance transform mask, see #DistanceTransformMasks. In case of the +#DIST_L1 or #DIST_C distance type, the parameter is forced to 3 because a \f$3\times 3\f$ mask gives +the same result as \f$5\times 5\f$ or any larger aperture. +@param dstType Type of output image. It can be CV_8U or CV_32F. Type CV_8U can be used only for +the first variant of the function and distanceType == #DIST_L1. +*/ +CV_EXPORTS_W void distanceTransform( InputArray src, OutputArray dst, + int distanceType, int maskSize, int dstType=CV_32F); + +/** @example samples/cpp/ffilldemo.cpp +An example using the FloodFill technique +*/ + +/** @overload + +variant without `mask` parameter +*/ +CV_EXPORTS int floodFill( InputOutputArray image, + Point seedPoint, Scalar newVal, CV_OUT Rect* rect = 0, + Scalar loDiff = Scalar(), Scalar upDiff = Scalar(), + int flags = 4 ); + +/** @brief Fills a connected component with the given color. + +The function cv::floodFill fills a connected component starting from the seed point with the specified +color. The connectivity is determined by the color/brightness closeness of the neighbor pixels. The +pixel at \f$(x,y)\f$ is considered to belong to the repainted domain if: + +- in case of a grayscale image and floating range +\f[\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\f] + + +- in case of a grayscale image and fixed range +\f[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\f] + + +- in case of a color image and floating range +\f[\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\f] +\f[\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\f] +and +\f[\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\f] + + +- in case of a color image and fixed range +\f[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\f] +\f[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\f] +and +\f[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\f] + + +where \f$src(x',y')\f$ is the value of one of pixel neighbors that is already known to belong to the +component. That is, to be added to the connected component, a color/brightness of the pixel should +be close enough to: +- Color/brightness of one of its neighbors that already belong to the connected component in case +of a floating range. +- Color/brightness of the seed point in case of a fixed range. + +Use these functions to either mark a connected component with the specified color in-place, or build +a mask and then extract the contour, or copy the region to another image, and so on. + +@param image Input/output 1- or 3-channel, 8-bit, or floating-point image. It is modified by the +function unless the #FLOODFILL_MASK_ONLY flag is set in the second variant of the function. See +the details below. +@param mask Operation mask that should be a single-channel 8-bit image, 2 pixels wider and 2 pixels +taller than image. Since this is both an input and output parameter, you must take responsibility +of initializing it. Flood-filling cannot go across non-zero pixels in the input mask. For example, +an edge detector output can be used as a mask to stop filling at edges. On output, pixels in the +mask corresponding to filled pixels in the image are set to 1 or to the a value specified in flags +as described below. Additionally, the function fills the border of the mask with ones to simplify +internal processing. It is therefore possible to use the same mask in multiple calls to the function +to make sure the filled areas do not overlap. +@param seedPoint Starting point. +@param newVal New value of the repainted domain pixels. +@param loDiff Maximal lower brightness/color difference between the currently observed pixel and +one of its neighbors belonging to the component, or a seed pixel being added to the component. +@param upDiff Maximal upper brightness/color difference between the currently observed pixel and +one of its neighbors belonging to the component, or a seed pixel being added to the component. +@param rect Optional output parameter set by the function to the minimum bounding rectangle of the +repainted domain. +@param flags Operation flags. The first 8 bits contain a connectivity value. The default value of +4 means that only the four nearest neighbor pixels (those that share an edge) are considered. A +connectivity value of 8 means that the eight nearest neighbor pixels (those that share a corner) +will be considered. The next 8 bits (8-16) contain a value between 1 and 255 with which to fill +the mask (the default value is 1). For example, 4 | ( 255 \<\< 8 ) will consider 4 nearest +neighbours and fill the mask with a value of 255. The following additional options occupy higher +bits and therefore may be further combined with the connectivity and mask fill values using +bit-wise or (|), see #FloodFillFlags. + +@note Since the mask is larger than the filled image, a pixel \f$(x, y)\f$ in image corresponds to the +pixel \f$(x+1, y+1)\f$ in the mask . + +@sa findContours + */ +CV_EXPORTS_W int floodFill( InputOutputArray image, InputOutputArray mask, + Point seedPoint, Scalar newVal, CV_OUT Rect* rect=0, + Scalar loDiff = Scalar(), Scalar upDiff = Scalar(), + int flags = 4 ); + +//! Performs linear blending of two images: +//! \f[ \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) \f] +//! @param src1 It has a type of CV_8UC(n) or CV_32FC(n), where n is a positive integer. +//! @param src2 It has the same type and size as src1. +//! @param weights1 It has a type of CV_32FC1 and the same size with src1. +//! @param weights2 It has a type of CV_32FC1 and the same size with src1. +//! @param dst It is created if it does not have the same size and type with src1. +CV_EXPORTS void blendLinear(InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst); + +//! @} imgproc_misc + +//! @addtogroup imgproc_color_conversions +//! @{ + +/** @brief Converts an image from one color space to another. + +The function converts an input image from one color space to another. In case of a transformation +to-from RGB color space, the order of the channels should be specified explicitly (RGB or BGR). Note +that the default color format in OpenCV is often referred to as RGB but it is actually BGR (the +bytes are reversed). So the first byte in a standard (24-bit) color image will be an 8-bit Blue +component, the second byte will be Green, and the third byte will be Red. The fourth, fifth, and +sixth bytes would then be the second pixel (Blue, then Green, then Red), and so on. + +The conventional ranges for R, G, and B channel values are: +- 0 to 255 for CV_8U images +- 0 to 65535 for CV_16U images +- 0 to 1 for CV_32F images + +In case of linear transformations, the range does not matter. But in case of a non-linear +transformation, an input RGB image should be normalized to the proper value range to get the correct +results, for example, for RGB \f$\rightarrow\f$ L\*u\*v\* transformation. For example, if you have a +32-bit floating-point image directly converted from an 8-bit image without any scaling, then it will +have the 0..255 value range instead of 0..1 assumed by the function. So, before calling #cvtColor , +you need first to scale the image down: +@code + img *= 1./255; + cvtColor(img, img, COLOR_BGR2Luv); +@endcode +If you use #cvtColor with 8-bit images, the conversion will have some information lost. For many +applications, this will not be noticeable but it is recommended to use 32-bit images in applications +that need the full range of colors or that convert an image before an operation and then convert +back. + +If conversion adds the alpha channel, its value will set to the maximum of corresponding channel +range: 255 for CV_8U, 65535 for CV_16U, 1 for CV_32F. + +@param src input image: 8-bit unsigned, 16-bit unsigned ( CV_16UC... ), or single-precision +floating-point. +@param dst output image of the same size and depth as src. +@param code color space conversion code (see #ColorConversionCodes). +@param dstCn number of channels in the destination image; if the parameter is 0, the number of the +channels is derived automatically from src and code. + +@see @ref imgproc_color_conversions + */ +CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 ); + +/** @brief Converts an image from one color space to another where the source image is +stored in two planes. + +This function only supports YUV420 to RGB conversion as of now. + +@param src1: 8-bit image (#CV_8U) of the Y plane. +@param src2: image containing interleaved U/V plane. +@param dst: output image. +@param code: Specifies the type of conversion. It can take any of the following values: +- #COLOR_YUV2BGR_NV12 +- #COLOR_YUV2RGB_NV12 +- #COLOR_YUV2BGRA_NV12 +- #COLOR_YUV2RGBA_NV12 +- #COLOR_YUV2BGR_NV21 +- #COLOR_YUV2RGB_NV21 +- #COLOR_YUV2BGRA_NV21 +- #COLOR_YUV2RGBA_NV21 +*/ +CV_EXPORTS_W void cvtColorTwoPlane( InputArray src1, InputArray src2, OutputArray dst, int code ); + +/** @brief main function for all demosaicing processes + +@param src input image: 8-bit unsigned or 16-bit unsigned. +@param dst output image of the same size and depth as src. +@param code Color space conversion code (see the description below). +@param dstCn number of channels in the destination image; if the parameter is 0, the number of the +channels is derived automatically from src and code. + +The function can do the following transformations: + +- Demosaicing using bilinear interpolation + + #COLOR_BayerBG2BGR , #COLOR_BayerGB2BGR , #COLOR_BayerRG2BGR , #COLOR_BayerGR2BGR + + #COLOR_BayerBG2GRAY , #COLOR_BayerGB2GRAY , #COLOR_BayerRG2GRAY , #COLOR_BayerGR2GRAY + +- Demosaicing using Variable Number of Gradients. + + #COLOR_BayerBG2BGR_VNG , #COLOR_BayerGB2BGR_VNG , #COLOR_BayerRG2BGR_VNG , #COLOR_BayerGR2BGR_VNG + +- Edge-Aware Demosaicing. + + #COLOR_BayerBG2BGR_EA , #COLOR_BayerGB2BGR_EA , #COLOR_BayerRG2BGR_EA , #COLOR_BayerGR2BGR_EA + +- Demosaicing with alpha channel + + #COLOR_BayerBG2BGRA , #COLOR_BayerGB2BGRA , #COLOR_BayerRG2BGRA , #COLOR_BayerGR2BGRA + +@sa cvtColor +*/ +CV_EXPORTS_W void demosaicing(InputArray src, OutputArray dst, int code, int dstCn = 0); + +//! @} imgproc_color_conversions + +//! @addtogroup imgproc_shape +//! @{ + +/** @brief Calculates all of the moments up to the third order of a polygon or rasterized shape. + +The function computes moments, up to the 3rd order, of a vector shape or a rasterized shape. The +results are returned in the structure cv::Moments. + +@param array Raster image (single-channel, 8-bit or floating-point 2D array) or an array ( +\f$1 \times N\f$ or \f$N \times 1\f$ ) of 2D points (Point or Point2f ). +@param binaryImage If it is true, all non-zero image pixels are treated as 1's. The parameter is +used for images only. +@returns moments. + +@note Only applicable to contour moments calculations from Python bindings: Note that the numpy +type for the input array should be either np.int32 or np.float32. + +@sa contourArea, arcLength + */ +CV_EXPORTS_W Moments moments( InputArray array, bool binaryImage = false ); + +/** @brief Calculates seven Hu invariants. + +The function calculates seven Hu invariants (introduced in @cite Hu62; see also +) defined as: + +\f[\begin{array}{l} hu[0]= \eta _{20}+ \eta _{02} \\ hu[1]=( \eta _{20}- \eta _{02})^{2}+4 \eta _{11}^{2} \\ hu[2]=( \eta _{30}-3 \eta _{12})^{2}+ (3 \eta _{21}- \eta _{03})^{2} \\ hu[3]=( \eta _{30}+ \eta _{12})^{2}+ ( \eta _{21}+ \eta _{03})^{2} \\ hu[4]=( \eta _{30}-3 \eta _{12})( \eta _{30}+ \eta _{12})[( \eta _{30}+ \eta _{12})^{2}-3( \eta _{21}+ \eta _{03})^{2}]+(3 \eta _{21}- \eta _{03})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}] \\ hu[5]=( \eta _{20}- \eta _{02})[( \eta _{30}+ \eta _{12})^{2}- ( \eta _{21}+ \eta _{03})^{2}]+4 \eta _{11}( \eta _{30}+ \eta _{12})( \eta _{21}+ \eta _{03}) \\ hu[6]=(3 \eta _{21}- \eta _{03})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}]-( \eta _{30}-3 \eta _{12})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}] \\ \end{array}\f] + +where \f$\eta_{ji}\f$ stands for \f$\texttt{Moments::nu}_{ji}\f$ . + +These values are proved to be invariants to the image scale, rotation, and reflection except the +seventh one, whose sign is changed by reflection. This invariance is proved with the assumption of +infinite image resolution. In case of raster images, the computed Hu invariants for the original and +transformed images are a bit different. + +@param moments Input moments computed with moments . +@param hu Output Hu invariants. + +@sa matchShapes + */ +CV_EXPORTS void HuMoments( const Moments& moments, double hu[7] ); + +/** @overload */ +CV_EXPORTS_W void HuMoments( const Moments& m, OutputArray hu ); + +//! @} imgproc_shape + +//! @addtogroup imgproc_object +//! @{ + +//! type of the template matching operation +enum TemplateMatchModes { + TM_SQDIFF = 0, //!< \f[R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2\f] + TM_SQDIFF_NORMED = 1, //!< \f[R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\f] + TM_CCORR = 2, //!< \f[R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y'))\f] + TM_CCORR_NORMED = 3, //!< \f[R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\f] + TM_CCOEFF = 4, //!< \f[R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I'(x+x',y+y'))\f] + //!< where + //!< \f[\begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}\f] + TM_CCOEFF_NORMED = 5 //!< \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f] +}; + +/** @example samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp +An example using Template Matching algorithm +*/ + +/** @brief Compares a template against overlapped image regions. + +The function slides through image , compares the overlapped patches of size \f$w \times h\f$ against +templ using the specified method and stores the comparison results in result . Here are the formulae +for the available comparison methods ( \f$I\f$ denotes image, \f$T\f$ template, \f$R\f$ result ). The summation +is done over template and/or the image patch: \f$x' = 0...w-1, y' = 0...h-1\f$ + +After the function finishes the comparison, the best matches can be found as global minimums (when +#TM_SQDIFF was used) or maximums (when #TM_CCORR or #TM_CCOEFF was used) using the +#minMaxLoc function. In case of a color image, template summation in the numerator and each sum in +the denominator is done over all of the channels and separate mean values are used for each channel. +That is, the function can take a color template and a color image. The result will still be a +single-channel image, which is easier to analyze. + +@param image Image where the search is running. It must be 8-bit or 32-bit floating-point. +@param templ Searched template. It must be not greater than the source image and have the same +data type. +@param result Map of comparison results. It must be single-channel 32-bit floating-point. If image +is \f$W \times H\f$ and templ is \f$w \times h\f$ , then result is \f$(W-w+1) \times (H-h+1)\f$ . +@param method Parameter specifying the comparison method, see #TemplateMatchModes +@param mask Mask of searched template. It must have the same datatype and size with templ. It is +not set by default. Currently, only the #TM_SQDIFF and #TM_CCORR_NORMED methods are supported. + */ +CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ, + OutputArray result, int method, InputArray mask = noArray() ); + +//! @} + +//! @addtogroup imgproc_shape +//! @{ + +/** @example samples/cpp/connected_components.cpp +This program demonstrates connected components and use of the trackbar +*/ + +/** @brief computes the connected components labeled image of boolean image + +image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 +represents the background label. ltype specifies the output label image type, an important +consideration based on the total number of labels or alternatively the total number of pixels in +the source image. ccltype specifies the connected components labeling algorithm to use, currently +Grana (BBDT) and Wu's (SAUF) algorithms are supported, see the #ConnectedComponentsAlgorithmsTypes +for details. Note that SAUF algorithm forces a row major ordering of labels while BBDT does not. +This function uses parallel version of both Grana and Wu's algorithms if at least one allowed +parallel framework is enabled and if the rows of the image are at least twice the number returned by #getNumberOfCPUs. + +@param image the 8-bit single-channel image to be labeled +@param labels destination labeled image +@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively +@param ltype output image label type. Currently CV_32S and CV_16U are supported. +@param ccltype connected components algorithm type (see the #ConnectedComponentsAlgorithmsTypes). +*/ +CV_EXPORTS_AS(connectedComponentsWithAlgorithm) int connectedComponents(InputArray image, OutputArray labels, + int connectivity, int ltype, int ccltype); + + +/** @overload + +@param image the 8-bit single-channel image to be labeled +@param labels destination labeled image +@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively +@param ltype output image label type. Currently CV_32S and CV_16U are supported. +*/ +CV_EXPORTS_W int connectedComponents(InputArray image, OutputArray labels, + int connectivity = 8, int ltype = CV_32S); + + +/** @brief computes the connected components labeled image of boolean image and also produces a statistics output for each label + +image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 +represents the background label. ltype specifies the output label image type, an important +consideration based on the total number of labels or alternatively the total number of pixels in +the source image. ccltype specifies the connected components labeling algorithm to use, currently +Grana's (BBDT) and Wu's (SAUF) algorithms are supported, see the #ConnectedComponentsAlgorithmsTypes +for details. Note that SAUF algorithm forces a row major ordering of labels while BBDT does not. +This function uses parallel version of both Grana and Wu's algorithms (statistics included) if at least one allowed +parallel framework is enabled and if the rows of the image are at least twice the number returned by #getNumberOfCPUs. + +@param image the 8-bit single-channel image to be labeled +@param labels destination labeled image +@param stats statistics output for each label, including the background label, see below for +available statistics. Statistics are accessed via stats(label, COLUMN) where COLUMN is one of +#ConnectedComponentsTypes. The data type is CV_32S. +@param centroids centroid output for each label, including the background label. Centroids are +accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F. +@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively +@param ltype output image label type. Currently CV_32S and CV_16U are supported. +@param ccltype connected components algorithm type (see #ConnectedComponentsAlgorithmsTypes). +*/ +CV_EXPORTS_AS(connectedComponentsWithStatsWithAlgorithm) int connectedComponentsWithStats(InputArray image, OutputArray labels, + OutputArray stats, OutputArray centroids, + int connectivity, int ltype, int ccltype); + +/** @overload +@param image the 8-bit single-channel image to be labeled +@param labels destination labeled image +@param stats statistics output for each label, including the background label, see below for +available statistics. Statistics are accessed via stats(label, COLUMN) where COLUMN is one of +#ConnectedComponentsTypes. The data type is CV_32S. +@param centroids centroid output for each label, including the background label. Centroids are +accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F. +@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively +@param ltype output image label type. Currently CV_32S and CV_16U are supported. +*/ +CV_EXPORTS_W int connectedComponentsWithStats(InputArray image, OutputArray labels, + OutputArray stats, OutputArray centroids, + int connectivity = 8, int ltype = CV_32S); + + +/** @brief Finds contours in a binary image. + +The function retrieves contours from the binary image using the algorithm @cite Suzuki85 . The contours +are a useful tool for shape analysis and object detection and recognition. See squares.cpp in the +OpenCV sample directory. +@note Since opencv 3.2 source image is not modified by this function. + +@param image Source, an 8-bit single-channel image. Non-zero pixels are treated as 1's. Zero +pixels remain 0's, so the image is treated as binary . You can use #compare, #inRange, #threshold , +#adaptiveThreshold, #Canny, and others to create a binary image out of a grayscale or color one. +If mode equals to #RETR_CCOMP or #RETR_FLOODFILL, the input can also be a 32-bit integer image of labels (CV_32SC1). +@param contours Detected contours. Each contour is stored as a vector of points (e.g. +std::vector >). +@param hierarchy Optional output vector (e.g. std::vector), containing information about the image topology. It has +as many elements as the number of contours. For each i-th contour contours[i], the elements +hierarchy[i][0] , hierarchy[i][1] , hierarchy[i][2] , and hierarchy[i][3] are set to 0-based indices +in contours of the next and previous contours at the same hierarchical level, the first child +contour and the parent contour, respectively. If for the contour i there are no next, previous, +parent, or nested contours, the corresponding elements of hierarchy[i] will be negative. +@param mode Contour retrieval mode, see #RetrievalModes +@param method Contour approximation method, see #ContourApproximationModes +@param offset Optional offset by which every contour point is shifted. This is useful if the +contours are extracted from the image ROI and then they should be analyzed in the whole image +context. + */ +CV_EXPORTS_W void findContours( InputArray image, OutputArrayOfArrays contours, + OutputArray hierarchy, int mode, + int method, Point offset = Point()); + +/** @overload */ +CV_EXPORTS void findContours( InputArray image, OutputArrayOfArrays contours, + int mode, int method, Point offset = Point()); + +/** @example samples/cpp/squares.cpp +A program using pyramid scaling, Canny, contours and contour simplification to find +squares in a list of images (pic1-6.png). Returns sequence of squares detected on the image. +*/ + +/** @example samples/tapi/squares.cpp +A program using pyramid scaling, Canny, contours and contour simplification to find +squares in the input image. +*/ + +/** @brief Approximates a polygonal curve(s) with the specified precision. + +The function cv::approxPolyDP approximates a curve or a polygon with another curve/polygon with less +vertices so that the distance between them is less or equal to the specified precision. It uses the +Douglas-Peucker algorithm + +@param curve Input vector of a 2D point stored in std::vector or Mat +@param approxCurve Result of the approximation. The type should match the type of the input curve. +@param epsilon Parameter specifying the approximation accuracy. This is the maximum distance +between the original curve and its approximation. +@param closed If true, the approximated curve is closed (its first and last vertices are +connected). Otherwise, it is not closed. + */ +CV_EXPORTS_W void approxPolyDP( InputArray curve, + OutputArray approxCurve, + double epsilon, bool closed ); + +/** @brief Calculates a contour perimeter or a curve length. + +The function computes a curve length or a closed contour perimeter. + +@param curve Input vector of 2D points, stored in std::vector or Mat. +@param closed Flag indicating whether the curve is closed or not. + */ +CV_EXPORTS_W double arcLength( InputArray curve, bool closed ); + +/** @brief Calculates the up-right bounding rectangle of a point set or non-zero pixels of gray-scale image. + +The function calculates and returns the minimal up-right bounding rectangle for the specified point set or +non-zero pixels of gray-scale image. + +@param array Input gray-scale image or 2D point set, stored in std::vector or Mat. + */ +CV_EXPORTS_W Rect boundingRect( InputArray array ); + +/** @brief Calculates a contour area. + +The function computes a contour area. Similarly to moments , the area is computed using the Green +formula. Thus, the returned area and the number of non-zero pixels, if you draw the contour using +#drawContours or #fillPoly , can be different. Also, the function will most certainly give a wrong +results for contours with self-intersections. + +Example: +@code + vector contour; + contour.push_back(Point2f(0, 0)); + contour.push_back(Point2f(10, 0)); + contour.push_back(Point2f(10, 10)); + contour.push_back(Point2f(5, 4)); + + double area0 = contourArea(contour); + vector approx; + approxPolyDP(contour, approx, 5, true); + double area1 = contourArea(approx); + + cout << "area0 =" << area0 << endl << + "area1 =" << area1 << endl << + "approx poly vertices" << approx.size() << endl; +@endcode +@param contour Input vector of 2D points (contour vertices), stored in std::vector or Mat. +@param oriented Oriented area flag. If it is true, the function returns a signed area value, +depending on the contour orientation (clockwise or counter-clockwise). Using this feature you can +determine orientation of a contour by taking the sign of an area. By default, the parameter is +false, which means that the absolute value is returned. + */ +CV_EXPORTS_W double contourArea( InputArray contour, bool oriented = false ); + +/** @brief Finds a rotated rectangle of the minimum area enclosing the input 2D point set. + +The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a +specified point set. Developer should keep in mind that the returned RotatedRect can contain negative +indices when data is close to the containing Mat element boundary. + +@param points Input vector of 2D points, stored in std::vector\<\> or Mat + */ +CV_EXPORTS_W RotatedRect minAreaRect( InputArray points ); + +/** @brief Finds the four vertices of a rotated rect. Useful to draw the rotated rectangle. + +The function finds the four vertices of a rotated rectangle. This function is useful to draw the +rectangle. In C++, instead of using this function, you can directly use RotatedRect::points method. Please +visit the @ref tutorial_bounding_rotated_ellipses "tutorial on Creating Bounding rotated boxes and ellipses for contours" for more information. + +@param box The input rotated rectangle. It may be the output of +@param points The output array of four vertices of rectangles. + */ +CV_EXPORTS_W void boxPoints(RotatedRect box, OutputArray points); + +/** @brief Finds a circle of the minimum area enclosing a 2D point set. + +The function finds the minimal enclosing circle of a 2D point set using an iterative algorithm. + +@param points Input vector of 2D points, stored in std::vector\<\> or Mat +@param center Output center of the circle. +@param radius Output radius of the circle. + */ +CV_EXPORTS_W void minEnclosingCircle( InputArray points, + CV_OUT Point2f& center, CV_OUT float& radius ); + +/** @example samples/cpp/minarea.cpp +*/ + +/** @brief Finds a triangle of minimum area enclosing a 2D point set and returns its area. + +The function finds a triangle of minimum area enclosing the given set of 2D points and returns its +area. The output for a given 2D point set is shown in the image below. 2D points are depicted in +*red* and the enclosing triangle in *yellow*. + +![Sample output of the minimum enclosing triangle function](pics/minenclosingtriangle.png) + +The implementation of the algorithm is based on O'Rourke's @cite ORourke86 and Klee and Laskowski's +@cite KleeLaskowski85 papers. O'Rourke provides a \f$\theta(n)\f$ algorithm for finding the minimal +enclosing triangle of a 2D convex polygon with n vertices. Since the #minEnclosingTriangle function +takes a 2D point set as input an additional preprocessing step of computing the convex hull of the +2D point set is required. The complexity of the #convexHull function is \f$O(n log(n))\f$ which is higher +than \f$\theta(n)\f$. Thus the overall complexity of the function is \f$O(n log(n))\f$. + +@param points Input vector of 2D points with depth CV_32S or CV_32F, stored in std::vector\<\> or Mat +@param triangle Output vector of three 2D points defining the vertices of the triangle. The depth +of the OutputArray must be CV_32F. + */ +CV_EXPORTS_W double minEnclosingTriangle( InputArray points, CV_OUT OutputArray triangle ); + +/** @brief Compares two shapes. + +The function compares two shapes. All three implemented methods use the Hu invariants (see #HuMoments) + +@param contour1 First contour or grayscale image. +@param contour2 Second contour or grayscale image. +@param method Comparison method, see #ShapeMatchModes +@param parameter Method-specific parameter (not supported now). + */ +CV_EXPORTS_W double matchShapes( InputArray contour1, InputArray contour2, + int method, double parameter ); + +/** @example samples/cpp/convexhull.cpp +An example using the convexHull functionality +*/ + +/** @brief Finds the convex hull of a point set. + +The function cv::convexHull finds the convex hull of a 2D point set using the Sklansky's algorithm @cite Sklansky82 +that has *O(N logN)* complexity in the current implementation. + +@param points Input 2D point set, stored in std::vector or Mat. +@param hull Output convex hull. It is either an integer vector of indices or vector of points. In +the first case, the hull elements are 0-based indices of the convex hull points in the original +array (since the set of convex hull points is a subset of the original point set). In the second +case, hull elements are the convex hull points themselves. +@param clockwise Orientation flag. If it is true, the output convex hull is oriented clockwise. +Otherwise, it is oriented counter-clockwise. The assumed coordinate system has its X axis pointing +to the right, and its Y axis pointing upwards. +@param returnPoints Operation flag. In case of a matrix, when the flag is true, the function +returns convex hull points. Otherwise, it returns indices of the convex hull points. When the +output array is std::vector, the flag is ignored, and the output depends on the type of the +vector: std::vector\ implies returnPoints=false, std::vector\ implies +returnPoints=true. + +@note `points` and `hull` should be different arrays, inplace processing isn't supported. + +Check @ref tutorial_hull "the corresponding tutorial" for more details. + +useful links: + +https://www.learnopencv.com/convex-hull-using-opencv-in-python-and-c/ + */ +CV_EXPORTS_W void convexHull( InputArray points, OutputArray hull, + bool clockwise = false, bool returnPoints = true ); + +/** @brief Finds the convexity defects of a contour. + +The figure below displays convexity defects of a hand contour: + +![image](pics/defects.png) + +@param contour Input contour. +@param convexhull Convex hull obtained using convexHull that should contain indices of the contour +points that make the hull. +@param convexityDefects The output vector of convexity defects. In C++ and the new Python/Java +interface each convexity defect is represented as 4-element integer vector (a.k.a. #Vec4i): +(start_index, end_index, farthest_pt_index, fixpt_depth), where indices are 0-based indices +in the original contour of the convexity defect beginning, end and the farthest point, and +fixpt_depth is fixed-point approximation (with 8 fractional bits) of the distance between the +farthest contour point and the hull. That is, to get the floating-point value of the depth will be +fixpt_depth/256.0. + */ +CV_EXPORTS_W void convexityDefects( InputArray contour, InputArray convexhull, OutputArray convexityDefects ); + +/** @brief Tests a contour convexity. + +The function tests whether the input contour is convex or not. The contour must be simple, that is, +without self-intersections. Otherwise, the function output is undefined. + +@param contour Input vector of 2D points, stored in std::vector\<\> or Mat + */ +CV_EXPORTS_W bool isContourConvex( InputArray contour ); + +//! finds intersection of two convex polygons +CV_EXPORTS_W float intersectConvexConvex( InputArray _p1, InputArray _p2, + OutputArray _p12, bool handleNested = true ); + +/** @example samples/cpp/fitellipse.cpp +An example using the fitEllipse technique +*/ + +/** @brief Fits an ellipse around a set of 2D points. + +The function calculates the ellipse that fits (in a least-squares sense) a set of 2D points best of +all. It returns the rotated rectangle in which the ellipse is inscribed. The first algorithm described by @cite Fitzgibbon95 +is used. Developer should keep in mind that it is possible that the returned +ellipse/rotatedRect data contains negative indices, due to the data points being close to the +border of the containing Mat element. + +@param points Input 2D point set, stored in std::vector\<\> or Mat + */ +CV_EXPORTS_W RotatedRect fitEllipse( InputArray points ); + +/** @brief Fits an ellipse around a set of 2D points. + + The function calculates the ellipse that fits a set of 2D points. + It returns the rotated rectangle in which the ellipse is inscribed. + The Approximate Mean Square (AMS) proposed by @cite Taubin1991 is used. + + For an ellipse, this basis set is \f$ \chi= \left(x^2, x y, y^2, x, y, 1\right) \f$, + which is a set of six free coefficients \f$ A^T=\left\{A_{\text{xx}},A_{\text{xy}},A_{\text{yy}},A_x,A_y,A_0\right\} \f$. + However, to specify an ellipse, all that is needed is five numbers; the major and minor axes lengths \f$ (a,b) \f$, + the position \f$ (x_0,y_0) \f$, and the orientation \f$ \theta \f$. This is because the basis set includes lines, + quadratics, parabolic and hyperbolic functions as well as elliptical functions as possible fits. + If the fit is found to be a parabolic or hyperbolic function then the standard #fitEllipse method is used. + The AMS method restricts the fit to parabolic, hyperbolic and elliptical curves + by imposing the condition that \f$ A^T ( D_x^T D_x + D_y^T D_y) A = 1 \f$ where + the matrices \f$ Dx \f$ and \f$ Dy \f$ are the partial derivatives of the design matrix \f$ D \f$ with + respect to x and y. The matrices are formed row by row applying the following to + each of the points in the set: + \f{align*}{ + D(i,:)&=\left\{x_i^2, x_i y_i, y_i^2, x_i, y_i, 1\right\} & + D_x(i,:)&=\left\{2 x_i,y_i,0,1,0,0\right\} & + D_y(i,:)&=\left\{0,x_i,2 y_i,0,1,0\right\} + \f} + The AMS method minimizes the cost function + \f{equation*}{ + \epsilon ^2=\frac{ A^T D^T D A }{ A^T (D_x^T D_x + D_y^T D_y) A^T } + \f} + + The minimum cost is found by solving the generalized eigenvalue problem. + + \f{equation*}{ + D^T D A = \lambda \left( D_x^T D_x + D_y^T D_y\right) A + \f} + + @param points Input 2D point set, stored in std::vector\<\> or Mat + */ +CV_EXPORTS_W RotatedRect fitEllipseAMS( InputArray points ); + + +/** @brief Fits an ellipse around a set of 2D points. + + The function calculates the ellipse that fits a set of 2D points. + It returns the rotated rectangle in which the ellipse is inscribed. + The Direct least square (Direct) method by @cite Fitzgibbon1999 is used. + + For an ellipse, this basis set is \f$ \chi= \left(x^2, x y, y^2, x, y, 1\right) \f$, + which is a set of six free coefficients \f$ A^T=\left\{A_{\text{xx}},A_{\text{xy}},A_{\text{yy}},A_x,A_y,A_0\right\} \f$. + However, to specify an ellipse, all that is needed is five numbers; the major and minor axes lengths \f$ (a,b) \f$, + the position \f$ (x_0,y_0) \f$, and the orientation \f$ \theta \f$. This is because the basis set includes lines, + quadratics, parabolic and hyperbolic functions as well as elliptical functions as possible fits. + The Direct method confines the fit to ellipses by ensuring that \f$ 4 A_{xx} A_{yy}- A_{xy}^2 > 0 \f$. + The condition imposed is that \f$ 4 A_{xx} A_{yy}- A_{xy}^2=1 \f$ which satisfies the inequality + and as the coefficients can be arbitrarily scaled is not overly restrictive. + + \f{equation*}{ + \epsilon ^2= A^T D^T D A \quad \text{with} \quad A^T C A =1 \quad \text{and} \quad C=\left(\begin{matrix} + 0 & 0 & 2 & 0 & 0 & 0 \\ + 0 & -1 & 0 & 0 & 0 & 0 \\ + 2 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 + \end{matrix} \right) + \f} + + The minimum cost is found by solving the generalized eigenvalue problem. + + \f{equation*}{ + D^T D A = \lambda \left( C\right) A + \f} + + The system produces only one positive eigenvalue \f$ \lambda\f$ which is chosen as the solution + with its eigenvector \f$\mathbf{u}\f$. These are used to find the coefficients + + \f{equation*}{ + A = \sqrt{\frac{1}{\mathbf{u}^T C \mathbf{u}}} \mathbf{u} + \f} + The scaling factor guarantees that \f$A^T C A =1\f$. + + @param points Input 2D point set, stored in std::vector\<\> or Mat + */ +CV_EXPORTS_W RotatedRect fitEllipseDirect( InputArray points ); + +/** @brief Fits a line to a 2D or 3D point set. + +The function fitLine fits a line to a 2D or 3D point set by minimizing \f$\sum_i \rho(r_i)\f$ where +\f$r_i\f$ is a distance between the \f$i^{th}\f$ point, the line and \f$\rho(r)\f$ is a distance function, one +of the following: +- DIST_L2 +\f[\rho (r) = r^2/2 \quad \text{(the simplest and the fastest least-squares method)}\f] +- DIST_L1 +\f[\rho (r) = r\f] +- DIST_L12 +\f[\rho (r) = 2 \cdot ( \sqrt{1 + \frac{r^2}{2}} - 1)\f] +- DIST_FAIR +\f[\rho \left (r \right ) = C^2 \cdot \left ( \frac{r}{C} - \log{\left(1 + \frac{r}{C}\right)} \right ) \quad \text{where} \quad C=1.3998\f] +- DIST_WELSCH +\f[\rho \left (r \right ) = \frac{C^2}{2} \cdot \left ( 1 - \exp{\left(-\left(\frac{r}{C}\right)^2\right)} \right ) \quad \text{where} \quad C=2.9846\f] +- DIST_HUBER +\f[\rho (r) = \fork{r^2/2}{if \(r < C\)}{C \cdot (r-C/2)}{otherwise} \quad \text{where} \quad C=1.345\f] + +The algorithm is based on the M-estimator ( ) technique +that iteratively fits the line using the weighted least-squares algorithm. After each iteration the +weights \f$w_i\f$ are adjusted to be inversely proportional to \f$\rho(r_i)\f$ . + +@param points Input vector of 2D or 3D points, stored in std::vector\<\> or Mat. +@param line Output line parameters. In case of 2D fitting, it should be a vector of 4 elements +(like Vec4f) - (vx, vy, x0, y0), where (vx, vy) is a normalized vector collinear to the line and +(x0, y0) is a point on the line. In case of 3D fitting, it should be a vector of 6 elements (like +Vec6f) - (vx, vy, vz, x0, y0, z0), where (vx, vy, vz) is a normalized vector collinear to the line +and (x0, y0, z0) is a point on the line. +@param distType Distance used by the M-estimator, see #DistanceTypes +@param param Numerical parameter ( C ) for some types of distances. If it is 0, an optimal value +is chosen. +@param reps Sufficient accuracy for the radius (distance between the coordinate origin and the line). +@param aeps Sufficient accuracy for the angle. 0.01 would be a good default value for reps and aeps. + */ +CV_EXPORTS_W void fitLine( InputArray points, OutputArray line, int distType, + double param, double reps, double aeps ); + +/** @brief Performs a point-in-contour test. + +The function determines whether the point is inside a contour, outside, or lies on an edge (or +coincides with a vertex). It returns positive (inside), negative (outside), or zero (on an edge) +value, correspondingly. When measureDist=false , the return value is +1, -1, and 0, respectively. +Otherwise, the return value is a signed distance between the point and the nearest contour edge. + +See below a sample output of the function where each image pixel is tested against the contour: + +![sample output](pics/pointpolygon.png) + +@param contour Input contour. +@param pt Point tested against the contour. +@param measureDist If true, the function estimates the signed distance from the point to the +nearest contour edge. Otherwise, the function only checks if the point is inside a contour or not. + */ +CV_EXPORTS_W double pointPolygonTest( InputArray contour, Point2f pt, bool measureDist ); + +/** @brief Finds out if there is any intersection between two rotated rectangles. + +If there is then the vertices of the intersecting region are returned as well. + +Below are some examples of intersection configurations. The hatched pattern indicates the +intersecting region and the red vertices are returned by the function. + +![intersection examples](pics/intersection.png) + +@param rect1 First rectangle +@param rect2 Second rectangle +@param intersectingRegion The output array of the vertices of the intersecting region. It returns +at most 8 vertices. Stored as std::vector\ or cv::Mat as Mx1 of type CV_32FC2. +@returns One of #RectanglesIntersectTypes + */ +CV_EXPORTS_W int rotatedRectangleIntersection( const RotatedRect& rect1, const RotatedRect& rect2, OutputArray intersectingRegion ); + +/** @brief Creates a smart pointer to a cv::GeneralizedHoughBallard class and initializes it. +*/ +CV_EXPORTS Ptr createGeneralizedHoughBallard(); + +/** @brief Creates a smart pointer to a cv::GeneralizedHoughGuil class and initializes it. +*/ +CV_EXPORTS Ptr createGeneralizedHoughGuil(); + +//! @} imgproc_shape + +//! @addtogroup imgproc_colormap +//! @{ + +//! GNU Octave/MATLAB equivalent colormaps +enum ColormapTypes +{ + COLORMAP_AUTUMN = 0, //!< ![autumn](pics/colormaps/colorscale_autumn.jpg) + COLORMAP_BONE = 1, //!< ![bone](pics/colormaps/colorscale_bone.jpg) + COLORMAP_JET = 2, //!< ![jet](pics/colormaps/colorscale_jet.jpg) + COLORMAP_WINTER = 3, //!< ![winter](pics/colormaps/colorscale_winter.jpg) + COLORMAP_RAINBOW = 4, //!< ![rainbow](pics/colormaps/colorscale_rainbow.jpg) + COLORMAP_OCEAN = 5, //!< ![ocean](pics/colormaps/colorscale_ocean.jpg) + COLORMAP_SUMMER = 6, //!< ![summer](pics/colormaps/colorscale_summer.jpg) + COLORMAP_SPRING = 7, //!< ![spring](pics/colormaps/colorscale_spring.jpg) + COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg) + COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg) + COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg) + COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg) + COLORMAP_PARULA = 12, //!< ![parula](pics/colormaps/colorscale_parula.jpg) + COLORMAP_MAGMA = 13, //!< ![magma](pics/colormaps/colorscale_magma.jpg) + COLORMAP_INFERNO = 14, //!< ![inferno](pics/colormaps/colorscale_inferno.jpg) + COLORMAP_PLASMA = 15, //!< ![plasma](pics/colormaps/colorscale_plasma.jpg) + COLORMAP_VIRIDIS = 16, //!< ![viridis](pics/colormaps/colorscale_viridis.jpg) + COLORMAP_CIVIDIS = 17, //!< ![cividis](pics/colormaps/colorscale_cividis.jpg) + COLORMAP_TWILIGHT = 18, //!< ![twilight](pics/colormaps/colorscale_twilight.jpg) + COLORMAP_TWILIGHT_SHIFTED = 19 //!< ![twilight shifted](pics/colormaps/colorscale_twilight_shifted.jpg) +}; + +/** @example samples/cpp/falsecolor.cpp +An example using applyColorMap function +*/ + +/** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image. + +@param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. +@param dst The result is the colormapped source image. Note: Mat::create is called on dst. +@param colormap The colormap to apply, see #ColormapTypes +*/ +CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap); + +/** @brief Applies a user colormap on a given image. + +@param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. +@param dst The result is the colormapped source image. Note: Mat::create is called on dst. +@param userColor The colormap to apply of type CV_8UC1 or CV_8UC3 and size 256 +*/ +CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, InputArray userColor); + +//! @} imgproc_colormap + +//! @addtogroup imgproc_draw +//! @{ + + +/** OpenCV color channel order is BGR[A] */ +#define CV_RGB(r, g, b) cv::Scalar((b), (g), (r), 0) + +/** @brief Draws a line segment connecting two points. + +The function line draws the line segment between pt1 and pt2 points in the image. The line is +clipped by the image boundaries. For non-antialiased lines with integer coordinates, the 8-connected +or 4-connected Bresenham algorithm is used. Thick lines are drawn with rounding endings. Antialiased +lines are drawn using Gaussian filtering. + +@param img Image. +@param pt1 First point of the line segment. +@param pt2 Second point of the line segment. +@param color Line color. +@param thickness Line thickness. +@param lineType Type of the line. See #LineTypes. +@param shift Number of fractional bits in the point coordinates. + */ +CV_EXPORTS_W void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, + int thickness = 1, int lineType = LINE_8, int shift = 0); + +/** @brief Draws a arrow segment pointing from the first point to the second one. + +The function cv::arrowedLine draws an arrow between pt1 and pt2 points in the image. See also #line. + +@param img Image. +@param pt1 The point the arrow starts from. +@param pt2 The point the arrow points to. +@param color Line color. +@param thickness Line thickness. +@param line_type Type of the line. See #LineTypes +@param shift Number of fractional bits in the point coordinates. +@param tipLength The length of the arrow tip in relation to the arrow length + */ +CV_EXPORTS_W void arrowedLine(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, + int thickness=1, int line_type=8, int shift=0, double tipLength=0.1); + +/** @brief Draws a simple, thick, or filled up-right rectangle. + +The function cv::rectangle draws a rectangle outline or a filled rectangle whose two opposite corners +are pt1 and pt2. + +@param img Image. +@param pt1 Vertex of the rectangle. +@param pt2 Vertex of the rectangle opposite to pt1 . +@param color Rectangle color or brightness (grayscale image). +@param thickness Thickness of lines that make up the rectangle. Negative values, like #FILLED, +mean that the function has to draw a filled rectangle. +@param lineType Type of the line. See #LineTypes +@param shift Number of fractional bits in the point coordinates. + */ +CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2, + const Scalar& color, int thickness = 1, + int lineType = LINE_8, int shift = 0); + +/** @overload + +use `rec` parameter as alternative specification of the drawn rectangle: `r.tl() and +r.br()-Point(1,1)` are opposite corners +*/ +CV_EXPORTS_W void rectangle(InputOutputArray img, Rect rec, + const Scalar& color, int thickness = 1, + int lineType = LINE_8, int shift = 0); + +/** @example samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_2.cpp +An example using drawing functions +*/ + +/** @brief Draws a circle. + +The function cv::circle draws a simple or filled circle with a given center and radius. +@param img Image where the circle is drawn. +@param center Center of the circle. +@param radius Radius of the circle. +@param color Circle color. +@param thickness Thickness of the circle outline, if positive. Negative values, like #FILLED, +mean that a filled circle is to be drawn. +@param lineType Type of the circle boundary. See #LineTypes +@param shift Number of fractional bits in the coordinates of the center and in the radius value. + */ +CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius, + const Scalar& color, int thickness = 1, + int lineType = LINE_8, int shift = 0); + +/** @brief Draws a simple or thick elliptic arc or fills an ellipse sector. + +The function cv::ellipse with more parameters draws an ellipse outline, a filled ellipse, an elliptic +arc, or a filled ellipse sector. The drawing code uses general parametric form. +A piecewise-linear curve is used to approximate the elliptic arc +boundary. If you need more control of the ellipse rendering, you can retrieve the curve using +#ellipse2Poly and then render it with #polylines or fill it with #fillPoly. If you use the first +variant of the function and want to draw the whole ellipse, not an arc, pass `startAngle=0` and +`endAngle=360`. If `startAngle` is greater than `endAngle`, they are swapped. The figure below explains +the meaning of the parameters to draw the blue arc. + +![Parameters of Elliptic Arc](pics/ellipse.svg) + +@param img Image. +@param center Center of the ellipse. +@param axes Half of the size of the ellipse main axes. +@param angle Ellipse rotation angle in degrees. +@param startAngle Starting angle of the elliptic arc in degrees. +@param endAngle Ending angle of the elliptic arc in degrees. +@param color Ellipse color. +@param thickness Thickness of the ellipse arc outline, if positive. Otherwise, this indicates that +a filled ellipse sector is to be drawn. +@param lineType Type of the ellipse boundary. See #LineTypes +@param shift Number of fractional bits in the coordinates of the center and values of axes. + */ +CV_EXPORTS_W void ellipse(InputOutputArray img, Point center, Size axes, + double angle, double startAngle, double endAngle, + const Scalar& color, int thickness = 1, + int lineType = LINE_8, int shift = 0); + +/** @overload +@param img Image. +@param box Alternative ellipse representation via RotatedRect. This means that the function draws +an ellipse inscribed in the rotated rectangle. +@param color Ellipse color. +@param thickness Thickness of the ellipse arc outline, if positive. Otherwise, this indicates that +a filled ellipse sector is to be drawn. +@param lineType Type of the ellipse boundary. See #LineTypes +*/ +CV_EXPORTS_W void ellipse(InputOutputArray img, const RotatedRect& box, const Scalar& color, + int thickness = 1, int lineType = LINE_8); + +/* ----------------------------------------------------------------------------------------- */ +/* ADDING A SET OF PREDEFINED MARKERS WHICH COULD BE USED TO HIGHLIGHT POSITIONS IN AN IMAGE */ +/* ----------------------------------------------------------------------------------------- */ + +/** @brief Draws a marker on a predefined position in an image. + +The function cv::drawMarker draws a marker on a given position in the image. For the moment several +marker types are supported, see #MarkerTypes for more information. + +@param img Image. +@param position The point where the crosshair is positioned. +@param color Line color. +@param markerType The specific type of marker you want to use, see #MarkerTypes +@param thickness Line thickness. +@param line_type Type of the line, See #LineTypes +@param markerSize The length of the marker axis [default = 20 pixels] + */ +CV_EXPORTS_W void drawMarker(InputOutputArray img, Point position, const Scalar& color, + int markerType = MARKER_CROSS, int markerSize=20, int thickness=1, + int line_type=8); + +/* ----------------------------------------------------------------------------------------- */ +/* END OF MARKER SECTION */ +/* ----------------------------------------------------------------------------------------- */ + +/** @overload */ +CV_EXPORTS void fillConvexPoly(InputOutputArray img, const Point* pts, int npts, + const Scalar& color, int lineType = LINE_8, + int shift = 0); + +/** @brief Fills a convex polygon. + +The function cv::fillConvexPoly draws a filled convex polygon. This function is much faster than the +function #fillPoly . It can fill not only convex polygons but any monotonic polygon without +self-intersections, that is, a polygon whose contour intersects every horizontal line (scan line) +twice at the most (though, its top-most and/or the bottom edge could be horizontal). + +@param img Image. +@param points Polygon vertices. +@param color Polygon color. +@param lineType Type of the polygon boundaries. See #LineTypes +@param shift Number of fractional bits in the vertex coordinates. + */ +CV_EXPORTS_W void fillConvexPoly(InputOutputArray img, InputArray points, + const Scalar& color, int lineType = LINE_8, + int shift = 0); + +/** @overload */ +CV_EXPORTS void fillPoly(InputOutputArray img, const Point** pts, + const int* npts, int ncontours, + const Scalar& color, int lineType = LINE_8, int shift = 0, + Point offset = Point() ); + +/** @example samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp +An example using drawing functions +Check @ref tutorial_random_generator_and_text "the corresponding tutorial" for more details +*/ + +/** @brief Fills the area bounded by one or more polygons. + +The function cv::fillPoly fills an area bounded by several polygonal contours. The function can fill +complex areas, for example, areas with holes, contours with self-intersections (some of their +parts), and so forth. + +@param img Image. +@param pts Array of polygons where each polygon is represented as an array of points. +@param color Polygon color. +@param lineType Type of the polygon boundaries. See #LineTypes +@param shift Number of fractional bits in the vertex coordinates. +@param offset Optional offset of all points of the contours. + */ +CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts, + const Scalar& color, int lineType = LINE_8, int shift = 0, + Point offset = Point() ); + +/** @overload */ +CV_EXPORTS void polylines(InputOutputArray img, const Point* const* pts, const int* npts, + int ncontours, bool isClosed, const Scalar& color, + int thickness = 1, int lineType = LINE_8, int shift = 0 ); + +/** @brief Draws several polygonal curves. + +@param img Image. +@param pts Array of polygonal curves. +@param isClosed Flag indicating whether the drawn polylines are closed or not. If they are closed, +the function draws a line from the last vertex of each curve to its first vertex. +@param color Polyline color. +@param thickness Thickness of the polyline edges. +@param lineType Type of the line segments. See #LineTypes +@param shift Number of fractional bits in the vertex coordinates. + +The function cv::polylines draws one or more polygonal curves. + */ +CV_EXPORTS_W void polylines(InputOutputArray img, InputArrayOfArrays pts, + bool isClosed, const Scalar& color, + int thickness = 1, int lineType = LINE_8, int shift = 0 ); + +/** @example samples/cpp/contours2.cpp +An example program illustrates the use of cv::findContours and cv::drawContours +\image html WindowsQtContoursOutput.png "Screenshot of the program" +*/ + +/** @example samples/cpp/segment_objects.cpp +An example using drawContours to clean up a background segmentation result +*/ + +/** @brief Draws contours outlines or filled contours. + +The function draws contour outlines in the image if \f$\texttt{thickness} \ge 0\f$ or fills the area +bounded by the contours if \f$\texttt{thickness}<0\f$ . The example below shows how to retrieve +connected components from the binary image and label them: : +@include snippets/imgproc_drawContours.cpp + +@param image Destination image. +@param contours All the input contours. Each contour is stored as a point vector. +@param contourIdx Parameter indicating a contour to draw. If it is negative, all the contours are drawn. +@param color Color of the contours. +@param thickness Thickness of lines the contours are drawn with. If it is negative (for example, +thickness=#FILLED ), the contour interiors are drawn. +@param lineType Line connectivity. See #LineTypes +@param hierarchy Optional information about hierarchy. It is only needed if you want to draw only +some of the contours (see maxLevel ). +@param maxLevel Maximal level for drawn contours. If it is 0, only the specified contour is drawn. +If it is 1, the function draws the contour(s) and all the nested contours. If it is 2, the function +draws the contours, all the nested contours, all the nested-to-nested contours, and so on. This +parameter is only taken into account when there is hierarchy available. +@param offset Optional contour shift parameter. Shift all the drawn contours by the specified +\f$\texttt{offset}=(dx,dy)\f$ . +@note When thickness=#FILLED, the function is designed to handle connected components with holes correctly +even when no hierarchy date is provided. This is done by analyzing all the outlines together +using even-odd rule. This may give incorrect results if you have a joint collection of separately retrieved +contours. In order to solve this problem, you need to call #drawContours separately for each sub-group +of contours, or iterate over the collection using contourIdx parameter. + */ +CV_EXPORTS_W void drawContours( InputOutputArray image, InputArrayOfArrays contours, + int contourIdx, const Scalar& color, + int thickness = 1, int lineType = LINE_8, + InputArray hierarchy = noArray(), + int maxLevel = INT_MAX, Point offset = Point() ); + +/** @brief Clips the line against the image rectangle. + +The function cv::clipLine calculates a part of the line segment that is entirely within the specified +rectangle. it returns false if the line segment is completely outside the rectangle. Otherwise, +it returns true . +@param imgSize Image size. The image rectangle is Rect(0, 0, imgSize.width, imgSize.height) . +@param pt1 First line point. +@param pt2 Second line point. + */ +CV_EXPORTS bool clipLine(Size imgSize, CV_IN_OUT Point& pt1, CV_IN_OUT Point& pt2); + +/** @overload +@param imgSize Image size. The image rectangle is Rect(0, 0, imgSize.width, imgSize.height) . +@param pt1 First line point. +@param pt2 Second line point. +*/ +CV_EXPORTS bool clipLine(Size2l imgSize, CV_IN_OUT Point2l& pt1, CV_IN_OUT Point2l& pt2); + +/** @overload +@param imgRect Image rectangle. +@param pt1 First line point. +@param pt2 Second line point. +*/ +CV_EXPORTS_W bool clipLine(Rect imgRect, CV_OUT CV_IN_OUT Point& pt1, CV_OUT CV_IN_OUT Point& pt2); + +/** @brief Approximates an elliptic arc with a polyline. + +The function ellipse2Poly computes the vertices of a polyline that approximates the specified +elliptic arc. It is used by #ellipse. If `arcStart` is greater than `arcEnd`, they are swapped. + +@param center Center of the arc. +@param axes Half of the size of the ellipse main axes. See #ellipse for details. +@param angle Rotation angle of the ellipse in degrees. See #ellipse for details. +@param arcStart Starting angle of the elliptic arc in degrees. +@param arcEnd Ending angle of the elliptic arc in degrees. +@param delta Angle between the subsequent polyline vertices. It defines the approximation +accuracy. +@param pts Output vector of polyline vertices. + */ +CV_EXPORTS_W void ellipse2Poly( Point center, Size axes, int angle, + int arcStart, int arcEnd, int delta, + CV_OUT std::vector& pts ); + +/** @overload +@param center Center of the arc. +@param axes Half of the size of the ellipse main axes. See #ellipse for details. +@param angle Rotation angle of the ellipse in degrees. See #ellipse for details. +@param arcStart Starting angle of the elliptic arc in degrees. +@param arcEnd Ending angle of the elliptic arc in degrees. +@param delta Angle between the subsequent polyline vertices. It defines the approximation accuracy. +@param pts Output vector of polyline vertices. +*/ +CV_EXPORTS void ellipse2Poly(Point2d center, Size2d axes, int angle, + int arcStart, int arcEnd, int delta, + CV_OUT std::vector& pts); + +/** @brief Draws a text string. + +The function cv::putText renders the specified text string in the image. Symbols that cannot be rendered +using the specified font are replaced by question marks. See #getTextSize for a text rendering code +example. + +@param img Image. +@param text Text string to be drawn. +@param org Bottom-left corner of the text string in the image. +@param fontFace Font type, see #HersheyFonts. +@param fontScale Font scale factor that is multiplied by the font-specific base size. +@param color Text color. +@param thickness Thickness of the lines used to draw a text. +@param lineType Line type. See #LineTypes +@param bottomLeftOrigin When true, the image data origin is at the bottom-left corner. Otherwise, +it is at the top-left corner. + */ +CV_EXPORTS_W void putText( InputOutputArray img, const String& text, Point org, + int fontFace, double fontScale, Scalar color, + int thickness = 1, int lineType = LINE_8, + bool bottomLeftOrigin = false ); + +/** @brief Calculates the width and height of a text string. + +The function cv::getTextSize calculates and returns the size of a box that contains the specified text. +That is, the following code renders some text, the tight box surrounding it, and the baseline: : +@code + String text = "Funny text inside the box"; + int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX; + double fontScale = 2; + int thickness = 3; + + Mat img(600, 800, CV_8UC3, Scalar::all(0)); + + int baseline=0; + Size textSize = getTextSize(text, fontFace, + fontScale, thickness, &baseline); + baseline += thickness; + + // center the text + Point textOrg((img.cols - textSize.width)/2, + (img.rows + textSize.height)/2); + + // draw the box + rectangle(img, textOrg + Point(0, baseline), + textOrg + Point(textSize.width, -textSize.height), + Scalar(0,0,255)); + // ... and the baseline first + line(img, textOrg + Point(0, thickness), + textOrg + Point(textSize.width, thickness), + Scalar(0, 0, 255)); + + // then put the text itself + putText(img, text, textOrg, fontFace, fontScale, + Scalar::all(255), thickness, 8); +@endcode + +@param text Input text string. +@param fontFace Font to use, see #HersheyFonts. +@param fontScale Font scale factor that is multiplied by the font-specific base size. +@param thickness Thickness of lines used to render the text. See #putText for details. +@param[out] baseLine y-coordinate of the baseline relative to the bottom-most text +point. +@return The size of a box that contains the specified text. + +@see putText + */ +CV_EXPORTS_W Size getTextSize(const String& text, int fontFace, + double fontScale, int thickness, + CV_OUT int* baseLine); + + +/** @brief Calculates the font-specific size to use to achieve a given height in pixels. + +@param fontFace Font to use, see cv::HersheyFonts. +@param pixelHeight Pixel height to compute the fontScale for +@param thickness Thickness of lines used to render the text.See putText for details. +@return The fontSize to use for cv::putText + +@see cv::putText +*/ +CV_EXPORTS_W double getFontScaleFromHeight(const int fontFace, + const int pixelHeight, + const int thickness = 1); + +/** @brief Line iterator + +The class is used to iterate over all the pixels on the raster line +segment connecting two specified points. + +The class LineIterator is used to get each pixel of a raster line. It +can be treated as versatile implementation of the Bresenham algorithm +where you can stop at each pixel and do some extra processing, for +example, grab pixel values along the line or draw a line with an effect +(for example, with XOR operation). + +The number of pixels along the line is stored in LineIterator::count. +The method LineIterator::pos returns the current position in the image: + +@code{.cpp} +// grabs pixels along the line (pt1, pt2) +// from 8-bit 3-channel image to the buffer +LineIterator it(img, pt1, pt2, 8); +LineIterator it2 = it; +vector buf(it.count); + +for(int i = 0; i < it.count; i++, ++it) + buf[i] = *(const Vec3b*)*it; + +// alternative way of iterating through the line +for(int i = 0; i < it2.count; i++, ++it2) +{ + Vec3b val = img.at(it2.pos()); + CV_Assert(buf[i] == val); +} +@endcode +*/ +class CV_EXPORTS LineIterator +{ +public: + /** @brief initializes the iterator + + creates iterators for the line connecting pt1 and pt2 + the line will be clipped on the image boundaries + the line is 8-connected or 4-connected + If leftToRight=true, then the iteration is always done + from the left-most point to the right most, + not to depend on the ordering of pt1 and pt2 parameters + */ + LineIterator( const Mat& img, Point pt1, Point pt2, + int connectivity = 8, bool leftToRight = false ); + /** @brief returns pointer to the current pixel + */ + uchar* operator *(); + /** @brief prefix increment operator (++it). shifts iterator to the next pixel + */ + LineIterator& operator ++(); + /** @brief postfix increment operator (it++). shifts iterator to the next pixel + */ + LineIterator operator ++(int); + /** @brief returns coordinates of the current pixel + */ + Point pos() const; + + uchar* ptr; + const uchar* ptr0; + int step, elemSize; + int err, count; + int minusDelta, plusDelta; + int minusStep, plusStep; +}; + +//! @cond IGNORED + +// === LineIterator implementation === + +inline +uchar* LineIterator::operator *() +{ + return ptr; +} + +inline +LineIterator& LineIterator::operator ++() +{ + int mask = err < 0 ? -1 : 0; + err += minusDelta + (plusDelta & mask); + ptr += minusStep + (plusStep & mask); + return *this; +} + +inline +LineIterator LineIterator::operator ++(int) +{ + LineIterator it = *this; + ++(*this); + return it; +} + +inline +Point LineIterator::pos() const +{ + Point p; + p.y = (int)((ptr - ptr0)/step); + p.x = (int)(((ptr - ptr0) - p.y*step)/elemSize); + return p; +} + +//! @endcond + +//! @} imgproc_draw + +//! @} imgproc + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/detail/gcgraph.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgproc/detail/gcgraph.hpp new file mode 100644 index 0000000..db2ea0f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/detail/gcgraph.hpp @@ -0,0 +1,393 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_IMGPROC_DETAIL_GCGRAPH_HPP +#define OPENCV_IMGPROC_DETAIL_GCGRAPH_HPP + +//! @cond IGNORED + +namespace cv { namespace detail { +template class GCGraph +{ +public: + GCGraph(); + GCGraph( unsigned int vtxCount, unsigned int edgeCount ); + ~GCGraph(); + void create( unsigned int vtxCount, unsigned int edgeCount ); + int addVtx(); + void addEdges( int i, int j, TWeight w, TWeight revw ); + void addTermWeights( int i, TWeight sourceW, TWeight sinkW ); + TWeight maxFlow(); + bool inSourceSegment( int i ); +private: + class Vtx + { + public: + Vtx *next; // initialized and used in maxFlow() only + int parent; + int first; + int ts; + int dist; + TWeight weight; + uchar t; + }; + class Edge + { + public: + int dst; + int next; + TWeight weight; + }; + + std::vector vtcs; + std::vector edges; + TWeight flow; +}; + +template +GCGraph::GCGraph() +{ + flow = 0; +} +template +GCGraph::GCGraph( unsigned int vtxCount, unsigned int edgeCount ) +{ + create( vtxCount, edgeCount ); +} +template +GCGraph::~GCGraph() +{ +} +template +void GCGraph::create( unsigned int vtxCount, unsigned int edgeCount ) +{ + vtcs.reserve( vtxCount ); + edges.reserve( edgeCount + 2 ); + flow = 0; +} + +template +int GCGraph::addVtx() +{ + Vtx v; + memset( &v, 0, sizeof(Vtx)); + vtcs.push_back(v); + return (int)vtcs.size() - 1; +} + +template +void GCGraph::addEdges( int i, int j, TWeight w, TWeight revw ) +{ + CV_Assert( i>=0 && i<(int)vtcs.size() ); + CV_Assert( j>=0 && j<(int)vtcs.size() ); + CV_Assert( w>=0 && revw>=0 ); + CV_Assert( i != j ); + + if( !edges.size() ) + edges.resize( 2 ); + + Edge fromI, toI; + fromI.dst = j; + fromI.next = vtcs[i].first; + fromI.weight = w; + vtcs[i].first = (int)edges.size(); + edges.push_back( fromI ); + + toI.dst = i; + toI.next = vtcs[j].first; + toI.weight = revw; + vtcs[j].first = (int)edges.size(); + edges.push_back( toI ); +} + +template +void GCGraph::addTermWeights( int i, TWeight sourceW, TWeight sinkW ) +{ + CV_Assert( i>=0 && i<(int)vtcs.size() ); + + TWeight dw = vtcs[i].weight; + if( dw > 0 ) + sourceW += dw; + else + sinkW -= dw; + flow += (sourceW < sinkW) ? sourceW : sinkW; + vtcs[i].weight = sourceW - sinkW; +} + +template +TWeight GCGraph::maxFlow() +{ + const int TERMINAL = -1, ORPHAN = -2; + Vtx stub, *nilNode = &stub, *first = nilNode, *last = nilNode; + int curr_ts = 0; + stub.next = nilNode; + Vtx *vtxPtr = &vtcs[0]; + Edge *edgePtr = &edges[0]; + + std::vector orphans; + + // initialize the active queue and the graph vertices + for( int i = 0; i < (int)vtcs.size(); i++ ) + { + Vtx* v = vtxPtr + i; + v->ts = 0; + if( v->weight != 0 ) + { + last = last->next = v; + v->dist = 1; + v->parent = TERMINAL; + v->t = v->weight < 0; + } + else + v->parent = 0; + } + first = first->next; + last->next = nilNode; + nilNode->next = 0; + + // run the search-path -> augment-graph -> restore-trees loop + for(;;) + { + Vtx* v, *u; + int e0 = -1, ei = 0, ej = 0; + TWeight minWeight, weight; + uchar vt; + + // grow S & T search trees, find an edge connecting them + while( first != nilNode ) + { + v = first; + if( v->parent ) + { + vt = v->t; + for( ei = v->first; ei != 0; ei = edgePtr[ei].next ) + { + if( edgePtr[ei^vt].weight == 0 ) + continue; + u = vtxPtr+edgePtr[ei].dst; + if( !u->parent ) + { + u->t = vt; + u->parent = ei ^ 1; + u->ts = v->ts; + u->dist = v->dist + 1; + if( !u->next ) + { + u->next = nilNode; + last = last->next = u; + } + continue; + } + + if( u->t != vt ) + { + e0 = ei ^ vt; + break; + } + + if( u->dist > v->dist+1 && u->ts <= v->ts ) + { + // reassign the parent + u->parent = ei ^ 1; + u->ts = v->ts; + u->dist = v->dist + 1; + } + } + if( e0 > 0 ) + break; + } + // exclude the vertex from the active list + first = first->next; + v->next = 0; + } + + if( e0 <= 0 ) + break; + + // find the minimum edge weight along the path + minWeight = edgePtr[e0].weight; + CV_Assert( minWeight > 0 ); + // k = 1: source tree, k = 0: destination tree + for( int k = 1; k >= 0; k-- ) + { + for( v = vtxPtr+edgePtr[e0^k].dst;; v = vtxPtr+edgePtr[ei].dst ) + { + if( (ei = v->parent) < 0 ) + break; + weight = edgePtr[ei^k].weight; + minWeight = MIN(minWeight, weight); + CV_Assert( minWeight > 0 ); + } + weight = fabs(v->weight); + minWeight = MIN(minWeight, weight); + CV_Assert( minWeight > 0 ); + } + + // modify weights of the edges along the path and collect orphans + edgePtr[e0].weight -= minWeight; + edgePtr[e0^1].weight += minWeight; + flow += minWeight; + + // k = 1: source tree, k = 0: destination tree + for( int k = 1; k >= 0; k-- ) + { + for( v = vtxPtr+edgePtr[e0^k].dst;; v = vtxPtr+edgePtr[ei].dst ) + { + if( (ei = v->parent) < 0 ) + break; + edgePtr[ei^(k^1)].weight += minWeight; + if( (edgePtr[ei^k].weight -= minWeight) == 0 ) + { + orphans.push_back(v); + v->parent = ORPHAN; + } + } + + v->weight = v->weight + minWeight*(1-k*2); + if( v->weight == 0 ) + { + orphans.push_back(v); + v->parent = ORPHAN; + } + } + + // restore the search trees by finding new parents for the orphans + curr_ts++; + while( !orphans.empty() ) + { + Vtx* v2 = orphans.back(); + orphans.pop_back(); + + int d, minDist = INT_MAX; + e0 = 0; + vt = v2->t; + + for( ei = v2->first; ei != 0; ei = edgePtr[ei].next ) + { + if( edgePtr[ei^(vt^1)].weight == 0 ) + continue; + u = vtxPtr+edgePtr[ei].dst; + if( u->t != vt || u->parent == 0 ) + continue; + // compute the distance to the tree root + for( d = 0;; ) + { + if( u->ts == curr_ts ) + { + d += u->dist; + break; + } + ej = u->parent; + d++; + if( ej < 0 ) + { + if( ej == ORPHAN ) + d = INT_MAX-1; + else + { + u->ts = curr_ts; + u->dist = 1; + } + break; + } + u = vtxPtr+edgePtr[ej].dst; + } + + // update the distance + if( ++d < INT_MAX ) + { + if( d < minDist ) + { + minDist = d; + e0 = ei; + } + for( u = vtxPtr+edgePtr[ei].dst; u->ts != curr_ts; u = vtxPtr+edgePtr[u->parent].dst ) + { + u->ts = curr_ts; + u->dist = --d; + } + } + } + + if( (v2->parent = e0) > 0 ) + { + v2->ts = curr_ts; + v2->dist = minDist; + continue; + } + + /* no parent is found */ + v2->ts = 0; + for( ei = v2->first; ei != 0; ei = edgePtr[ei].next ) + { + u = vtxPtr+edgePtr[ei].dst; + ej = u->parent; + if( u->t != vt || !ej ) + continue; + if( edgePtr[ei^(vt^1)].weight && !u->next ) + { + u->next = nilNode; + last = last->next = u; + } + if( ej > 0 && vtxPtr+edgePtr[ej].dst == v2 ) + { + orphans.push_back(u); + u->parent = ORPHAN; + } + } + } + } + return flow; +} + +template +bool GCGraph::inSourceSegment( int i ) +{ + CV_Assert( i>=0 && i<(int)vtcs.size() ); + return vtcs[i].t == 0; +} + +}} // namespace detail, cv + + +//! @endcond + +#endif // OPENCV_IMGPROC_DETAIL_GCGRAPH_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/hal.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/hal.hpp new file mode 100644 index 0000000..ac20725 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/hal.hpp @@ -0,0 +1,241 @@ +#ifndef CV_IMGPROC_HAL_HPP +#define CV_IMGPROC_HAL_HPP + +#include "opencv2/core/cvdef.h" +#include "opencv2/core/cvstd.hpp" +#include "opencv2/core/hal/interface.h" + +namespace cv { namespace hal { + +//! @addtogroup imgproc_hal_functions +//! @{ + +//--------------------------- +//! @cond IGNORED + +struct CV_EXPORTS Filter2D +{ + CV_DEPRECATED static Ptr create(uchar * , size_t , int , + int , int , + int , int , + int , int , + int , double , + int , int , + bool , bool ); + virtual void apply(uchar * , size_t , + uchar * , size_t , + int , int , + int , int , + int , int ) = 0; + virtual ~Filter2D() {} +}; + +struct CV_EXPORTS SepFilter2D +{ + CV_DEPRECATED static Ptr create(int , int , int , + uchar * , int , + uchar * , int , + int , int , + double , int ); + virtual void apply(uchar * , size_t , + uchar * , size_t , + int , int , + int , int , + int , int ) = 0; + virtual ~SepFilter2D() {} +}; + + +struct CV_EXPORTS Morph +{ + CV_DEPRECATED static Ptr create(int , int , int , int , int , + int , uchar * , size_t , + int , int , + int , int , + int , const double *, + int , bool , bool ); + virtual void apply(uchar * , size_t , uchar * , size_t , int , int , + int , int , int , int , + int , int , int , int ) = 0; + virtual ~Morph() {} +}; + +//! @endcond +//--------------------------- + +CV_EXPORTS void filter2D(int stype, int dtype, int kernel_type, + uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int full_width, int full_height, + int offset_x, int offset_y, + uchar * kernel_data, size_t kernel_step, + int kernel_width, int kernel_height, + int anchor_x, int anchor_y, + double delta, int borderType, + bool isSubmatrix); + +CV_EXPORTS void sepFilter2D(int stype, int dtype, int ktype, + uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int full_width, int full_height, + int offset_x, int offset_y, + uchar * kernelx_data, int kernelx_len, + uchar * kernely_data, int kernely_len, + int anchor_x, int anchor_y, + double delta, int borderType); + +CV_EXPORTS void morph(int op, int src_type, int dst_type, + uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int roi_width, int roi_height, int roi_x, int roi_y, + int roi_width2, int roi_height2, int roi_x2, int roi_y2, + int kernel_type, uchar * kernel_data, size_t kernel_step, + int kernel_width, int kernel_height, int anchor_x, int anchor_y, + int borderType, const double borderValue[4], + int iterations, bool isSubmatrix); + + +CV_EXPORTS void resize(int src_type, + const uchar * src_data, size_t src_step, int src_width, int src_height, + uchar * dst_data, size_t dst_step, int dst_width, int dst_height, + double inv_scale_x, double inv_scale_y, int interpolation); + +CV_EXPORTS void warpAffine(int src_type, + const uchar * src_data, size_t src_step, int src_width, int src_height, + uchar * dst_data, size_t dst_step, int dst_width, int dst_height, + const double M[6], int interpolation, int borderType, const double borderValue[4]); + +CV_EXPORTS void warpPerspective(int src_type, + const uchar * src_data, size_t src_step, int src_width, int src_height, + uchar * dst_data, size_t dst_step, int dst_width, int dst_height, + const double M[9], int interpolation, int borderType, const double borderValue[4]); + +CV_EXPORTS void cvtBGRtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, int dcn, bool swapBlue); + +CV_EXPORTS void cvtBGRtoBGR5x5(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int scn, bool swapBlue, int greenBits); + +CV_EXPORTS void cvtBGR5x5toBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int dcn, bool swapBlue, int greenBits); + +CV_EXPORTS void cvtBGRtoGray(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, bool swapBlue); + +CV_EXPORTS void cvtGraytoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int dcn); + +CV_EXPORTS void cvtBGR5x5toGray(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int greenBits); + +CV_EXPORTS void cvtGraytoBGR5x5(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int greenBits); +CV_EXPORTS void cvtBGRtoYUV(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, bool swapBlue, bool isCbCr); + +CV_EXPORTS void cvtYUVtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int dcn, bool swapBlue, bool isCbCr); + +CV_EXPORTS void cvtBGRtoXYZ(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, bool swapBlue); + +CV_EXPORTS void cvtXYZtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int dcn, bool swapBlue); + +CV_EXPORTS void cvtBGRtoHSV(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, bool swapBlue, bool isFullRange, bool isHSV); + +CV_EXPORTS void cvtHSVtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int dcn, bool swapBlue, bool isFullRange, bool isHSV); + +CV_EXPORTS void cvtBGRtoLab(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int scn, bool swapBlue, bool isLab, bool srgb); + +CV_EXPORTS void cvtLabtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int depth, int dcn, bool swapBlue, bool isLab, bool srgb); + +CV_EXPORTS void cvtTwoPlaneYUVtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int dst_width, int dst_height, + int dcn, bool swapBlue, int uIdx); + +//! Separate Y and UV planes +CV_EXPORTS void cvtTwoPlaneYUVtoBGR(const uchar * y_data, const uchar * uv_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int dst_width, int dst_height, + int dcn, bool swapBlue, int uIdx); + +CV_EXPORTS void cvtThreePlaneYUVtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int dst_width, int dst_height, + int dcn, bool swapBlue, int uIdx); + +CV_EXPORTS void cvtBGRtoThreePlaneYUV(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int scn, bool swapBlue, int uIdx); + +//! Separate Y and UV planes +CV_EXPORTS void cvtBGRtoTwoPlaneYUV(const uchar * src_data, size_t src_step, + uchar * y_data, uchar * uv_data, size_t dst_step, + int width, int height, + int scn, bool swapBlue, int uIdx); + +CV_EXPORTS void cvtOnePlaneYUVtoBGR(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height, + int dcn, bool swapBlue, int uIdx, int ycn); + +CV_EXPORTS void cvtRGBAtoMultipliedRGBA(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height); + +CV_EXPORTS void cvtMultipliedRGBAtoRGBA(const uchar * src_data, size_t src_step, + uchar * dst_data, size_t dst_step, + int width, int height); + +CV_EXPORTS void integral(int depth, int sdepth, int sqdepth, + const uchar* src, size_t srcstep, + uchar* sum, size_t sumstep, + uchar* sqsum, size_t sqsumstep, + uchar* tilted, size_t tstep, + int width, int height, int cn); + +//! @} + +}} + +#endif // CV_IMGPROC_HAL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/interface.h b/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/interface.h new file mode 100644 index 0000000..f8dbcfe --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/hal/interface.h @@ -0,0 +1,46 @@ +#ifndef OPENCV_IMGPROC_HAL_INTERFACE_H +#define OPENCV_IMGPROC_HAL_INTERFACE_H + +//! @addtogroup imgproc_hal_interface +//! @{ + +//! @name Interpolation modes +//! @sa cv::InterpolationFlags +//! @{ +#define CV_HAL_INTER_NEAREST 0 +#define CV_HAL_INTER_LINEAR 1 +#define CV_HAL_INTER_CUBIC 2 +#define CV_HAL_INTER_AREA 3 +#define CV_HAL_INTER_LANCZOS4 4 +//! @} + +//! @name Morphology operations +//! @sa cv::MorphTypes +//! @{ +#define CV_HAL_MORPH_ERODE 0 +#define CV_HAL_MORPH_DILATE 1 +//! @} + +//! @name Threshold types +//! @sa cv::ThresholdTypes +//! @{ +#define CV_HAL_THRESH_BINARY 0 +#define CV_HAL_THRESH_BINARY_INV 1 +#define CV_HAL_THRESH_TRUNC 2 +#define CV_HAL_THRESH_TOZERO 3 +#define CV_HAL_THRESH_TOZERO_INV 4 +#define CV_HAL_THRESH_MASK 7 +#define CV_HAL_THRESH_OTSU 8 +#define CV_HAL_THRESH_TRIANGLE 16 +//! @} + +//! @name Adaptive threshold algorithm +//! @sa cv::AdaptiveThresholdTypes +//! @{ +#define CV_HAL_ADAPTIVE_THRESH_MEAN_C 0 +#define CV_HAL_ADAPTIVE_THRESH_GAUSSIAN_C 1 +//! @} + +//! @} + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc.hpp b/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc.hpp new file mode 100644 index 0000000..4175bd0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/imgproc.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc_c.h b/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc_c.h new file mode 100644 index 0000000..9f7131f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/imgproc_c.h @@ -0,0 +1,1177 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_IMGPROC_IMGPROC_C_H +#define OPENCV_IMGPROC_IMGPROC_C_H + +#include "opencv2/imgproc/types_c.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup imgproc_c +@{ +*/ + +/*********************** Background statistics accumulation *****************************/ + +/** @brief Adds image to accumulator +@see cv::accumulate +*/ +CVAPI(void) cvAcc( const CvArr* image, CvArr* sum, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @brief Adds squared image to accumulator +@see cv::accumulateSquare +*/ +CVAPI(void) cvSquareAcc( const CvArr* image, CvArr* sqsum, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @brief Adds a product of two images to accumulator +@see cv::accumulateProduct +*/ +CVAPI(void) cvMultiplyAcc( const CvArr* image1, const CvArr* image2, CvArr* acc, + const CvArr* mask CV_DEFAULT(NULL) ); + +/** @brief Adds image to accumulator with weights: acc = acc*(1-alpha) + image*alpha +@see cv::accumulateWeighted +*/ +CVAPI(void) cvRunningAvg( const CvArr* image, CvArr* acc, double alpha, + const CvArr* mask CV_DEFAULT(NULL) ); + +/****************************************************************************************\ +* Image Processing * +\****************************************************************************************/ + +/** Copies source 2D array inside of the larger destination array and + makes a border of the specified type (IPL_BORDER_*) around the copied area. */ +CVAPI(void) cvCopyMakeBorder( const CvArr* src, CvArr* dst, CvPoint offset, + int bordertype, CvScalar value CV_DEFAULT(cvScalarAll(0))); + +/** @brief Smooths the image in one of several ways. + +@param src The source image +@param dst The destination image +@param smoothtype Type of the smoothing, see SmoothMethod_c +@param size1 The first parameter of the smoothing operation, the aperture width. Must be a +positive odd number (1, 3, 5, ...) +@param size2 The second parameter of the smoothing operation, the aperture height. Ignored by +CV_MEDIAN and CV_BILATERAL methods. In the case of simple scaled/non-scaled and Gaussian blur if +size2 is zero, it is set to size1. Otherwise it must be a positive odd number. +@param sigma1 In the case of a Gaussian parameter this parameter may specify Gaussian \f$\sigma\f$ +(standard deviation). If it is zero, it is calculated from the kernel size: +\f[\sigma = 0.3 (n/2 - 1) + 0.8 \quad \text{where} \quad n= \begin{array}{l l} \mbox{\texttt{size1} for horizontal kernel} \\ \mbox{\texttt{size2} for vertical kernel} \end{array}\f] +Using standard sigma for small kernels ( \f$3\times 3\f$ to \f$7\times 7\f$ ) gives better speed. If +sigma1 is not zero, while size1 and size2 are zeros, the kernel size is calculated from the +sigma (to provide accurate enough operation). +@param sigma2 additional parameter for bilateral filtering + +@see cv::GaussianBlur, cv::blur, cv::medianBlur, cv::bilateralFilter. + */ +CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst, + int smoothtype CV_DEFAULT(CV_GAUSSIAN), + int size1 CV_DEFAULT(3), + int size2 CV_DEFAULT(0), + double sigma1 CV_DEFAULT(0), + double sigma2 CV_DEFAULT(0)); + +/** @brief Convolves an image with the kernel. + +@param src input image. +@param dst output image of the same size and the same number of channels as src. +@param kernel convolution kernel (or rather a correlation kernel), a single-channel floating point +matrix; if you want to apply different kernels to different channels, split the image into +separate color planes using split and process them individually. +@param anchor anchor of the kernel that indicates the relative position of a filtered point within +the kernel; the anchor should lie within the kernel; default value (-1,-1) means that the anchor +is at the kernel center. + +@see cv::filter2D + */ +CVAPI(void) cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel, + CvPoint anchor CV_DEFAULT(cvPoint(-1,-1))); + +/** @brief Finds integral image: SUM(X,Y) = sum(x \texttt{hist1}(I)\)}{\frac{\texttt{hist2}(I) \cdot \texttt{scale}}{\texttt{hist1}(I)}}{if \(\texttt{hist1}(I) \ne 0\) and \(\texttt{hist2}(I) \le \texttt{hist1}(I)\)}\f] + +@param hist1 First histogram (the divisor). +@param hist2 Second histogram. +@param dst_hist Destination histogram. +@param scale Scale factor for the destination histogram. + */ +CVAPI(void) cvCalcProbDensity( const CvHistogram* hist1, const CvHistogram* hist2, + CvHistogram* dst_hist, double scale CV_DEFAULT(255) ); + +/** @brief equalizes histogram of 8-bit single-channel image +@see cv::equalizeHist +*/ +CVAPI(void) cvEqualizeHist( const CvArr* src, CvArr* dst ); + + +/** @brief Applies distance transform to binary image +@see cv::distanceTransform +*/ +CVAPI(void) cvDistTransform( const CvArr* src, CvArr* dst, + int distance_type CV_DEFAULT(CV_DIST_L2), + int mask_size CV_DEFAULT(3), + const float* mask CV_DEFAULT(NULL), + CvArr* labels CV_DEFAULT(NULL), + int labelType CV_DEFAULT(CV_DIST_LABEL_CCOMP)); + + +/** @brief Applies fixed-level threshold to grayscale image. + + This is a basic operation applied before retrieving contours +@see cv::threshold +*/ +CVAPI(double) cvThreshold( const CvArr* src, CvArr* dst, + double threshold, double max_value, + int threshold_type ); + +/** @brief Applies adaptive threshold to grayscale image. + + The two parameters for methods CV_ADAPTIVE_THRESH_MEAN_C and + CV_ADAPTIVE_THRESH_GAUSSIAN_C are: + neighborhood size (3, 5, 7 etc.), + and a constant subtracted from mean (...,-3,-2,-1,0,1,2,3,...) +@see cv::adaptiveThreshold +*/ +CVAPI(void) cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, + int adaptive_method CV_DEFAULT(CV_ADAPTIVE_THRESH_MEAN_C), + int threshold_type CV_DEFAULT(CV_THRESH_BINARY), + int block_size CV_DEFAULT(3), + double param1 CV_DEFAULT(5)); + +/** @brief Fills the connected component until the color difference gets large enough +@see cv::floodFill +*/ +CVAPI(void) cvFloodFill( CvArr* image, CvPoint seed_point, + CvScalar new_val, CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)), + CvScalar up_diff CV_DEFAULT(cvScalarAll(0)), + CvConnectedComp* comp CV_DEFAULT(NULL), + int flags CV_DEFAULT(4), + CvArr* mask CV_DEFAULT(NULL)); + +/****************************************************************************************\ +* Feature detection * +\****************************************************************************************/ + +/** @brief Runs canny edge detector +@see cv::Canny +*/ +CVAPI(void) cvCanny( const CvArr* image, CvArr* edges, double threshold1, + double threshold2, int aperture_size CV_DEFAULT(3) ); + +/** @brief Calculates constraint image for corner detection + + Dx^2 * Dyy + Dxx * Dy^2 - 2 * Dx * Dy * Dxy. + Applying threshold to the result gives coordinates of corners +@see cv::preCornerDetect +*/ +CVAPI(void) cvPreCornerDetect( const CvArr* image, CvArr* corners, + int aperture_size CV_DEFAULT(3) ); + +/** @brief Calculates eigen values and vectors of 2x2 + gradient covariation matrix at every image pixel +@see cv::cornerEigenValsAndVecs +*/ +CVAPI(void) cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv, + int block_size, int aperture_size CV_DEFAULT(3) ); + +/** @brief Calculates minimal eigenvalue for 2x2 gradient covariation matrix at + every image pixel +@see cv::cornerMinEigenVal +*/ +CVAPI(void) cvCornerMinEigenVal( const CvArr* image, CvArr* eigenval, + int block_size, int aperture_size CV_DEFAULT(3) ); + +/** @brief Harris corner detector: + + Calculates det(M) - k*(trace(M)^2), where M is 2x2 gradient covariation matrix for each pixel +@see cv::cornerHarris +*/ +CVAPI(void) cvCornerHarris( const CvArr* image, CvArr* harris_response, + int block_size, int aperture_size CV_DEFAULT(3), + double k CV_DEFAULT(0.04) ); + +/** @brief Adjust corner position using some sort of gradient search +@see cv::cornerSubPix +*/ +CVAPI(void) cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners, + int count, CvSize win, CvSize zero_zone, + CvTermCriteria criteria ); + +/** @brief Finds a sparse set of points within the selected region + that seem to be easy to track +@see cv::goodFeaturesToTrack +*/ +CVAPI(void) cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image, + CvArr* temp_image, CvPoint2D32f* corners, + int* corner_count, double quality_level, + double min_distance, + const CvArr* mask CV_DEFAULT(NULL), + int block_size CV_DEFAULT(3), + int use_harris CV_DEFAULT(0), + double k CV_DEFAULT(0.04) ); + +/** @brief Finds lines on binary image using one of several methods. + + line_storage is either memory storage or 1 x _max number of lines_ CvMat, its + number of columns is changed by the function. + method is one of CV_HOUGH_*; + rho, theta and threshold are used for each of those methods; + param1 ~ line length, param2 ~ line gap - for probabilistic, + param1 ~ srn, param2 ~ stn - for multi-scale +@see cv::HoughLines +*/ +CVAPI(CvSeq*) cvHoughLines2( CvArr* image, void* line_storage, int method, + double rho, double theta, int threshold, + double param1 CV_DEFAULT(0), double param2 CV_DEFAULT(0), + double min_theta CV_DEFAULT(0), double max_theta CV_DEFAULT(CV_PI)); + +/** @brief Finds circles in the image +@see cv::HoughCircles +*/ +CVAPI(CvSeq*) cvHoughCircles( CvArr* image, void* circle_storage, + int method, double dp, double min_dist, + double param1 CV_DEFAULT(100), + double param2 CV_DEFAULT(100), + int min_radius CV_DEFAULT(0), + int max_radius CV_DEFAULT(0)); + +/** @brief Fits a line into set of 2d or 3d points in a robust way (M-estimator technique) +@see cv::fitLine +*/ +CVAPI(void) cvFitLine( const CvArr* points, int dist_type, double param, + double reps, double aeps, float* line ); + +/****************************************************************************************\ +* Drawing * +\****************************************************************************************/ + +/****************************************************************************************\ +* Drawing functions work with images/matrices of arbitrary type. * +* For color images the channel order is BGR[A] * +* Antialiasing is supported only for 8-bit image now. * +* All the functions include parameter color that means rgb value (that may be * +* constructed with CV_RGB macro) for color images and brightness * +* for grayscale images. * +* If a drawn figure is partially or completely outside of the image, it is clipped.* +\****************************************************************************************/ + +#define CV_FILLED -1 + +#define CV_AA 16 + +/** @brief Draws 4-connected, 8-connected or antialiased line segment connecting two points +@see cv::line +*/ +CVAPI(void) cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, + CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) ); + +/** @brief Draws a rectangle given two opposite corners of the rectangle (pt1 & pt2) + + if thickness<0 (e.g. thickness == CV_FILLED), the filled box is drawn +@see cv::rectangle +*/ +CVAPI(void) cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, + CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), + int shift CV_DEFAULT(0)); + +/** @brief Draws a rectangle specified by a CvRect structure +@see cv::rectangle +*/ +CVAPI(void) cvRectangleR( CvArr* img, CvRect r, + CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), + int shift CV_DEFAULT(0)); + + +/** @brief Draws a circle with specified center and radius. + + Thickness works in the same way as with cvRectangle +@see cv::circle +*/ +CVAPI(void) cvCircle( CvArr* img, CvPoint center, int radius, + CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0)); + +/** @brief Draws ellipse outline, filled ellipse, elliptic arc or filled elliptic sector + + depending on _thickness_, _start_angle_ and _end_angle_ parameters. The resultant figure + is rotated by _angle_. All the angles are in degrees +@see cv::ellipse +*/ +CVAPI(void) cvEllipse( CvArr* img, CvPoint center, CvSize axes, + double angle, double start_angle, double end_angle, + CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0)); + +CV_INLINE void cvEllipseBox( CvArr* img, CvBox2D box, CvScalar color, + int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) ) +{ + CvSize axes = cvSize( + cvRound(box.size.width*0.5), + cvRound(box.size.height*0.5) + ); + + cvEllipse( img, cvPointFrom32f( box.center ), axes, box.angle, + 0, 360, color, thickness, line_type, shift ); +} + +/** @brief Fills convex or monotonous polygon. +@see cv::fillConvexPoly +*/ +CVAPI(void) cvFillConvexPoly( CvArr* img, const CvPoint* pts, int npts, CvScalar color, + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0)); + +/** @brief Fills an area bounded by one or more arbitrary polygons +@see cv::fillPoly +*/ +CVAPI(void) cvFillPoly( CvArr* img, CvPoint** pts, const int* npts, + int contours, CvScalar color, + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) ); + +/** @brief Draws one or more polygonal curves +@see cv::polylines +*/ +CVAPI(void) cvPolyLine( CvArr* img, CvPoint** pts, const int* npts, int contours, + int is_closed, CvScalar color, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) ); + +#define cvDrawRect cvRectangle +#define cvDrawLine cvLine +#define cvDrawCircle cvCircle +#define cvDrawEllipse cvEllipse +#define cvDrawPolyLine cvPolyLine + +/** @brief Clips the line segment connecting *pt1 and *pt2 + by the rectangular window + + (0<=xptr will point to pt1 (or pt2, see left_to_right description) location in +the image. Returns the number of pixels on the line between the ending points. +@see cv::LineIterator +*/ +CVAPI(int) cvInitLineIterator( const CvArr* image, CvPoint pt1, CvPoint pt2, + CvLineIterator* line_iterator, + int connectivity CV_DEFAULT(8), + int left_to_right CV_DEFAULT(0)); + +#define CV_NEXT_LINE_POINT( line_iterator ) \ +{ \ + int _line_iterator_mask = (line_iterator).err < 0 ? -1 : 0; \ + (line_iterator).err += (line_iterator).minus_delta + \ + ((line_iterator).plus_delta & _line_iterator_mask); \ + (line_iterator).ptr += (line_iterator).minus_step + \ + ((line_iterator).plus_step & _line_iterator_mask); \ +} + + +#define CV_FONT_HERSHEY_SIMPLEX 0 +#define CV_FONT_HERSHEY_PLAIN 1 +#define CV_FONT_HERSHEY_DUPLEX 2 +#define CV_FONT_HERSHEY_COMPLEX 3 +#define CV_FONT_HERSHEY_TRIPLEX 4 +#define CV_FONT_HERSHEY_COMPLEX_SMALL 5 +#define CV_FONT_HERSHEY_SCRIPT_SIMPLEX 6 +#define CV_FONT_HERSHEY_SCRIPT_COMPLEX 7 + +#define CV_FONT_ITALIC 16 + +#define CV_FONT_VECTOR0 CV_FONT_HERSHEY_SIMPLEX + + +/** Font structure */ +typedef struct CvFont +{ + const char* nameFont; //Qt:nameFont + CvScalar color; //Qt:ColorFont -> cvScalar(blue_component, green_component, red_component[, alpha_component]) + int font_face; //Qt: bool italic /** =CV_FONT_* */ + const int* ascii; //!< font data and metrics + const int* greek; + const int* cyrillic; + float hscale, vscale; + float shear; //!< slope coefficient: 0 - normal, >0 - italic + int thickness; //!< Qt: weight /** letters thickness */ + float dx; //!< horizontal interval between letters + int line_type; //!< Qt: PointSize +} +CvFont; + +/** @brief Initializes font structure (OpenCV 1.x API). + +The function initializes the font structure that can be passed to text rendering functions. + +@param font Pointer to the font structure initialized by the function +@param font_face Font name identifier. See cv::HersheyFonts and corresponding old CV_* identifiers. +@param hscale Horizontal scale. If equal to 1.0f , the characters have the original width +depending on the font type. If equal to 0.5f , the characters are of half the original width. +@param vscale Vertical scale. If equal to 1.0f , the characters have the original height depending +on the font type. If equal to 0.5f , the characters are of half the original height. +@param shear Approximate tangent of the character slope relative to the vertical line. A zero +value means a non-italic font, 1.0f means about a 45 degree slope, etc. +@param thickness Thickness of the text strokes +@param line_type Type of the strokes, see line description + +@sa cvPutText + */ +CVAPI(void) cvInitFont( CvFont* font, int font_face, + double hscale, double vscale, + double shear CV_DEFAULT(0), + int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8)); + +CV_INLINE CvFont cvFont( double scale, int thickness CV_DEFAULT(1) ) +{ + CvFont font; + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, scale, scale, 0, thickness, CV_AA ); + return font; +} + +/** @brief Renders text stroke with specified font and color at specified location. + CvFont should be initialized with cvInitFont +@see cvInitFont, cvGetTextSize, cvFont, cv::putText +*/ +CVAPI(void) cvPutText( CvArr* img, const char* text, CvPoint org, + const CvFont* font, CvScalar color ); + +/** @brief Calculates bounding box of text stroke (useful for alignment) +@see cv::getTextSize +*/ +CVAPI(void) cvGetTextSize( const char* text_string, const CvFont* font, + CvSize* text_size, int* baseline ); + +/** @brief Unpacks color value + +if arrtype is CV_8UC?, _color_ is treated as packed color value, otherwise the first channels +(depending on arrtype) of destination scalar are set to the same value = _color_ +*/ +CVAPI(CvScalar) cvColorToScalar( double packed_color, int arrtype ); + +/** @brief Returns the polygon points which make up the given ellipse. + +The ellipse is define by the box of size 'axes' rotated 'angle' around the 'center'. A partial +sweep of the ellipse arc can be done by spcifying arc_start and arc_end to be something other than +0 and 360, respectively. The input array 'pts' must be large enough to hold the result. The total +number of points stored into 'pts' is returned by this function. +@see cv::ellipse2Poly +*/ +CVAPI(int) cvEllipse2Poly( CvPoint center, CvSize axes, + int angle, int arc_start, int arc_end, CvPoint * pts, int delta ); + +/** @brief Draws contour outlines or filled interiors on the image +@see cv::drawContours +*/ +CVAPI(void) cvDrawContours( CvArr *img, CvSeq* contour, + CvScalar external_color, CvScalar hole_color, + int max_level, int thickness CV_DEFAULT(1), + int line_type CV_DEFAULT(8), + CvPoint offset CV_DEFAULT(cvPoint(0,0))); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/imgproc/types_c.h b/LaiPuLaser/OpenCV/include/opencv2/imgproc/types_c.h new file mode 100644 index 0000000..d3e55f5 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/imgproc/types_c.h @@ -0,0 +1,659 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_IMGPROC_TYPES_C_H +#define OPENCV_IMGPROC_TYPES_C_H + +#include "opencv2/core/core_c.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup imgproc_c + @{ +*/ + +/** Connected component structure */ +typedef struct CvConnectedComp +{ + double area; /** DBL_EPSILON ? 1./std::sqrt(am00) : 0; + } + operator cv::Moments() const + { + return cv::Moments(m00, m10, m01, m20, m11, m02, m30, m21, m12, m03); + } +#endif +} +CvMoments; + +#ifdef __cplusplus +} // extern "C" + +CV_INLINE CvMoments cvMoments() +{ +#if !defined(CV__ENABLE_C_API_CTORS) + CvMoments self = CV_STRUCT_INITIALIZER; return self; +#else + return CvMoments(); +#endif +} + +CV_INLINE CvMoments cvMoments(const cv::Moments& m) +{ +#if !defined(CV__ENABLE_C_API_CTORS) + double am00 = std::abs(m.m00); + CvMoments self = { + m.m00, m.m10, m.m01, m.m20, m.m11, m.m02, m.m30, m.m21, m.m12, m.m03, + m.mu20, m.mu11, m.mu02, m.mu30, m.mu21, m.mu12, m.mu03, + am00 > DBL_EPSILON ? 1./std::sqrt(am00) : 0 + }; + return self; +#else + return CvMoments(m); +#endif +} + +extern "C" { +#endif // __cplusplus + +/** Hu invariants */ +typedef struct CvHuMoments +{ + double hu1, hu2, hu3, hu4, hu5, hu6, hu7; /**< Hu invariants */ +} +CvHuMoments; + +/** Template matching methods */ +enum +{ + CV_TM_SQDIFF =0, + CV_TM_SQDIFF_NORMED =1, + CV_TM_CCORR =2, + CV_TM_CCORR_NORMED =3, + CV_TM_CCOEFF =4, + CV_TM_CCOEFF_NORMED =5 +}; + +typedef float (CV_CDECL * CvDistanceFunction)( const float* a, const float* b, void* user_param ); + +/** Contour retrieval modes */ +enum +{ + CV_RETR_EXTERNAL=0, + CV_RETR_LIST=1, + CV_RETR_CCOMP=2, + CV_RETR_TREE=3, + CV_RETR_FLOODFILL=4 +}; + +/** Contour approximation methods */ +enum +{ + CV_CHAIN_CODE=0, + CV_CHAIN_APPROX_NONE=1, + CV_CHAIN_APPROX_SIMPLE=2, + CV_CHAIN_APPROX_TC89_L1=3, + CV_CHAIN_APPROX_TC89_KCOS=4, + CV_LINK_RUNS=5 +}; + +/* +Internal structure that is used for sequential retrieving contours from the image. +It supports both hierarchical and plane variants of Suzuki algorithm. +*/ +typedef struct _CvContourScanner* CvContourScanner; + +/** Freeman chain reader state */ +typedef struct CvChainPtReader +{ + CV_SEQ_READER_FIELDS() + char code; + CvPoint pt; + schar deltas[8][2]; +} +CvChainPtReader; + +/** initializes 8-element array for fast access to 3x3 neighborhood of a pixel */ +#define CV_INIT_3X3_DELTAS( deltas, step, nch ) \ + ((deltas)[0] = (nch), (deltas)[1] = -(step) + (nch), \ + (deltas)[2] = -(step), (deltas)[3] = -(step) - (nch), \ + (deltas)[4] = -(nch), (deltas)[5] = (step) - (nch), \ + (deltas)[6] = (step), (deltas)[7] = (step) + (nch)) + + +/** Contour approximation algorithms */ +enum +{ + CV_POLY_APPROX_DP = 0 +}; + +/** Shape matching methods */ +enum +{ + CV_CONTOURS_MATCH_I1 =1, //!< \f[I_1(A,B) = \sum _{i=1...7} \left | \frac{1}{m^A_i} - \frac{1}{m^B_i} \right |\f] + CV_CONTOURS_MATCH_I2 =2, //!< \f[I_2(A,B) = \sum _{i=1...7} \left | m^A_i - m^B_i \right |\f] + CV_CONTOURS_MATCH_I3 =3 //!< \f[I_3(A,B) = \max _{i=1...7} \frac{ \left| m^A_i - m^B_i \right| }{ \left| m^A_i \right| }\f] +}; + +/** Shape orientation */ +enum +{ + CV_CLOCKWISE =1, + CV_COUNTER_CLOCKWISE =2 +}; + + +/** Convexity defect */ +typedef struct CvConvexityDefect +{ + CvPoint* start; /**< point of the contour where the defect begins */ + CvPoint* end; /**< point of the contour where the defect ends */ + CvPoint* depth_point; /**< the farthest from the convex hull point within the defect */ + float depth; /**< distance between the farthest point and the convex hull */ +} CvConvexityDefect; + + +/** Histogram comparison methods */ +enum +{ + CV_COMP_CORREL =0, + CV_COMP_CHISQR =1, + CV_COMP_INTERSECT =2, + CV_COMP_BHATTACHARYYA =3, + CV_COMP_HELLINGER =CV_COMP_BHATTACHARYYA, + CV_COMP_CHISQR_ALT =4, + CV_COMP_KL_DIV =5 +}; + +/** Mask size for distance transform */ +enum +{ + CV_DIST_MASK_3 =3, + CV_DIST_MASK_5 =5, + CV_DIST_MASK_PRECISE =0 +}; + +/** Content of output label array: connected components or pixels */ +enum +{ + CV_DIST_LABEL_CCOMP = 0, + CV_DIST_LABEL_PIXEL = 1 +}; + +/** Distance types for Distance Transform and M-estimators */ +enum +{ + CV_DIST_USER =-1, /**< User defined distance */ + CV_DIST_L1 =1, /**< distance = |x1-x2| + |y1-y2| */ + CV_DIST_L2 =2, /**< the simple euclidean distance */ + CV_DIST_C =3, /**< distance = max(|x1-x2|,|y1-y2|) */ + CV_DIST_L12 =4, /**< L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) */ + CV_DIST_FAIR =5, /**< distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 */ + CV_DIST_WELSCH =6, /**< distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 */ + CV_DIST_HUBER =7 /**< distance = |x| threshold ? max_value : 0 */ + CV_THRESH_BINARY_INV =1, /**< value = value > threshold ? 0 : max_value */ + CV_THRESH_TRUNC =2, /**< value = value > threshold ? threshold : value */ + CV_THRESH_TOZERO =3, /**< value = value > threshold ? value : 0 */ + CV_THRESH_TOZERO_INV =4, /**< value = value > threshold ? 0 : value */ + CV_THRESH_MASK =7, + CV_THRESH_OTSU =8, /**< use Otsu algorithm to choose the optimal threshold value; + combine the flag with one of the above CV_THRESH_* values */ + CV_THRESH_TRIANGLE =16 /**< use Triangle algorithm to choose the optimal threshold value; + combine the flag with one of the above CV_THRESH_* values, but not + with CV_THRESH_OTSU */ +}; + +/** Adaptive threshold methods */ +enum +{ + CV_ADAPTIVE_THRESH_MEAN_C =0, + CV_ADAPTIVE_THRESH_GAUSSIAN_C =1 +}; + +/** FloodFill flags */ +enum +{ + CV_FLOODFILL_FIXED_RANGE =(1 << 16), + CV_FLOODFILL_MASK_ONLY =(1 << 17) +}; + + +/** Canny edge detector flags */ +enum +{ + CV_CANNY_L2_GRADIENT =(1 << 31) +}; + +/** Variants of a Hough transform */ +enum +{ + CV_HOUGH_STANDARD =0, + CV_HOUGH_PROBABILISTIC =1, + CV_HOUGH_MULTI_SCALE =2, + CV_HOUGH_GRADIENT =3 +}; + + +/* Fast search data structures */ +struct CvFeatureTree; +struct CvLSH; +struct CvLSHOperations; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/ml.hpp b/LaiPuLaser/OpenCV/include/opencv2/ml.hpp new file mode 100644 index 0000000..f1258fd --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/ml.hpp @@ -0,0 +1,1939 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_ML_HPP +#define OPENCV_ML_HPP + +#ifdef __cplusplus +# include "opencv2/core.hpp" +#endif + +#ifdef __cplusplus + +#include +#include +#include + +/** + @defgroup ml Machine Learning + + The Machine Learning Library (MLL) is a set of classes and functions for statistical + classification, regression, and clustering of data. + + Most of the classification and regression algorithms are implemented as C++ classes. As the + algorithms have different sets of features (like an ability to handle missing measurements or + categorical input variables), there is a little common ground between the classes. This common + ground is defined by the class cv::ml::StatModel that all the other ML classes are derived from. + + See detailed overview here: @ref ml_intro. + */ + +namespace cv +{ + +namespace ml +{ + +//! @addtogroup ml +//! @{ + +/** @brief Variable types */ +enum VariableTypes +{ + VAR_NUMERICAL =0, //!< same as VAR_ORDERED + VAR_ORDERED =0, //!< ordered variables + VAR_CATEGORICAL =1 //!< categorical variables +}; + +/** @brief %Error types */ +enum ErrorTypes +{ + TEST_ERROR = 0, + TRAIN_ERROR = 1 +}; + +/** @brief Sample types */ +enum SampleTypes +{ + ROW_SAMPLE = 0, //!< each training sample is a row of samples + COL_SAMPLE = 1 //!< each training sample occupies a column of samples +}; + +/** @brief The structure represents the logarithmic grid range of statmodel parameters. + +It is used for optimizing statmodel accuracy by varying model parameters, the accuracy estimate +being computed by cross-validation. + */ +class CV_EXPORTS_W ParamGrid +{ +public: + /** @brief Default constructor */ + ParamGrid(); + /** @brief Constructor with parameters */ + ParamGrid(double _minVal, double _maxVal, double _logStep); + + CV_PROP_RW double minVal; //!< Minimum value of the statmodel parameter. Default value is 0. + CV_PROP_RW double maxVal; //!< Maximum value of the statmodel parameter. Default value is 0. + /** @brief Logarithmic step for iterating the statmodel parameter. + + The grid determines the following iteration sequence of the statmodel parameter values: + \f[(minVal, minVal*step, minVal*{step}^2, \dots, minVal*{logStep}^n),\f] + where \f$n\f$ is the maximal index satisfying + \f[\texttt{minVal} * \texttt{logStep} ^n < \texttt{maxVal}\f] + The grid is logarithmic, so logStep must always be greater than 1. Default value is 1. + */ + CV_PROP_RW double logStep; + + /** @brief Creates a ParamGrid Ptr that can be given to the %SVM::trainAuto method + + @param minVal minimum value of the parameter grid + @param maxVal maximum value of the parameter grid + @param logstep Logarithmic step for iterating the statmodel parameter + */ + CV_WRAP static Ptr create(double minVal=0., double maxVal=0., double logstep=1.); +}; + +/** @brief Class encapsulating training data. + +Please note that the class only specifies the interface of training data, but not implementation. +All the statistical model classes in _ml_ module accepts Ptr\ as parameter. In other +words, you can create your own class derived from TrainData and pass smart pointer to the instance +of this class into StatModel::train. + +@sa @ref ml_intro_data + */ +class CV_EXPORTS_W TrainData +{ +public: + static inline float missingValue() { return FLT_MAX; } + virtual ~TrainData(); + + CV_WRAP virtual int getLayout() const = 0; + CV_WRAP virtual int getNTrainSamples() const = 0; + CV_WRAP virtual int getNTestSamples() const = 0; + CV_WRAP virtual int getNSamples() const = 0; + CV_WRAP virtual int getNVars() const = 0; + CV_WRAP virtual int getNAllVars() const = 0; + + CV_WRAP virtual void getSample(InputArray varIdx, int sidx, float* buf) const = 0; + CV_WRAP virtual Mat getSamples() const = 0; + CV_WRAP virtual Mat getMissing() const = 0; + + /** @brief Returns matrix of train samples + + @param layout The requested layout. If it's different from the initial one, the matrix is + transposed. See ml::SampleTypes. + @param compressSamples if true, the function returns only the training samples (specified by + sampleIdx) + @param compressVars if true, the function returns the shorter training samples, containing only + the active variables. + + In current implementation the function tries to avoid physical data copying and returns the + matrix stored inside TrainData (unless the transposition or compression is needed). + */ + CV_WRAP virtual Mat getTrainSamples(int layout=ROW_SAMPLE, + bool compressSamples=true, + bool compressVars=true) const = 0; + + /** @brief Returns the vector of responses + + The function returns ordered or the original categorical responses. Usually it's used in + regression algorithms. + */ + CV_WRAP virtual Mat getTrainResponses() const = 0; + + /** @brief Returns the vector of normalized categorical responses + + The function returns vector of responses. Each response is integer from `0` to `-1`. The actual label value can be retrieved then from the class label vector, see + TrainData::getClassLabels. + */ + CV_WRAP virtual Mat getTrainNormCatResponses() const = 0; + CV_WRAP virtual Mat getTestResponses() const = 0; + CV_WRAP virtual Mat getTestNormCatResponses() const = 0; + CV_WRAP virtual Mat getResponses() const = 0; + CV_WRAP virtual Mat getNormCatResponses() const = 0; + CV_WRAP virtual Mat getSampleWeights() const = 0; + CV_WRAP virtual Mat getTrainSampleWeights() const = 0; + CV_WRAP virtual Mat getTestSampleWeights() const = 0; + CV_WRAP virtual Mat getVarIdx() const = 0; + CV_WRAP virtual Mat getVarType() const = 0; + CV_WRAP virtual Mat getVarSymbolFlags() const = 0; + CV_WRAP virtual int getResponseType() const = 0; + CV_WRAP virtual Mat getTrainSampleIdx() const = 0; + CV_WRAP virtual Mat getTestSampleIdx() const = 0; + CV_WRAP virtual void getValues(int vi, InputArray sidx, float* values) const = 0; + virtual void getNormCatValues(int vi, InputArray sidx, int* values) const = 0; + CV_WRAP virtual Mat getDefaultSubstValues() const = 0; + + CV_WRAP virtual int getCatCount(int vi) const = 0; + + /** @brief Returns the vector of class labels + + The function returns vector of unique labels occurred in the responses. + */ + CV_WRAP virtual Mat getClassLabels() const = 0; + + CV_WRAP virtual Mat getCatOfs() const = 0; + CV_WRAP virtual Mat getCatMap() const = 0; + + /** @brief Splits the training data into the training and test parts + @sa TrainData::setTrainTestSplitRatio + */ + CV_WRAP virtual void setTrainTestSplit(int count, bool shuffle=true) = 0; + + /** @brief Splits the training data into the training and test parts + + The function selects a subset of specified relative size and then returns it as the training + set. If the function is not called, all the data is used for training. Please, note that for + each of TrainData::getTrain\* there is corresponding TrainData::getTest\*, so that the test + subset can be retrieved and processed as well. + @sa TrainData::setTrainTestSplit + */ + CV_WRAP virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0; + CV_WRAP virtual void shuffleTrainTest() = 0; + + /** @brief Returns matrix of test samples */ + CV_WRAP virtual Mat getTestSamples() const = 0; + + /** @brief Returns vector of symbolic names captured in loadFromCSV() */ + CV_WRAP virtual void getNames(std::vector& names) const = 0; + + /** @brief Extract from 1D vector elements specified by passed indexes. + @param vec input vector (supported types: CV_32S, CV_32F, CV_64F) + @param idx 1D index vector + */ + static CV_WRAP Mat getSubVector(const Mat& vec, const Mat& idx); + + /** @brief Extract from matrix rows/cols specified by passed indexes. + @param matrix input matrix (supported types: CV_32S, CV_32F, CV_64F) + @param idx 1D index vector + @param layout specifies to extract rows (cv::ml::ROW_SAMPLES) or to extract columns (cv::ml::COL_SAMPLES) + */ + static CV_WRAP Mat getSubMatrix(const Mat& matrix, const Mat& idx, int layout); + + /** @brief Reads the dataset from a .csv file and returns the ready-to-use training data. + + @param filename The input file name + @param headerLineCount The number of lines in the beginning to skip; besides the header, the + function also skips empty lines and lines staring with `#` + @param responseStartIdx Index of the first output variable. If -1, the function considers the + last variable as the response + @param responseEndIdx Index of the last output variable + 1. If -1, then there is single + response variable at responseStartIdx. + @param varTypeSpec The optional text string that specifies the variables' types. It has the + format `ord[n1-n2,n3,n4-n5,...]cat[n6,n7-n8,...]`. That is, variables from `n1 to n2` + (inclusive range), `n3`, `n4 to n5` ... are considered ordered and `n6`, `n7 to n8` ... are + considered as categorical. The range `[n1..n2] + [n3] + [n4..n5] + ... + [n6] + [n7..n8]` + should cover all the variables. If varTypeSpec is not specified, then algorithm uses the + following rules: + - all input variables are considered ordered by default. If some column contains has non- + numerical values, e.g. 'apple', 'pear', 'apple', 'apple', 'mango', the corresponding + variable is considered categorical. + - if there are several output variables, they are all considered as ordered. Error is + reported when non-numerical values are used. + - if there is a single output variable, then if its values are non-numerical or are all + integers, then it's considered categorical. Otherwise, it's considered ordered. + @param delimiter The character used to separate values in each line. + @param missch The character used to specify missing measurements. It should not be a digit. + Although it's a non-numerical value, it surely does not affect the decision of whether the + variable ordered or categorical. + @note If the dataset only contains input variables and no responses, use responseStartIdx = -2 + and responseEndIdx = 0. The output variables vector will just contain zeros. + */ + static Ptr loadFromCSV(const String& filename, + int headerLineCount, + int responseStartIdx=-1, + int responseEndIdx=-1, + const String& varTypeSpec=String(), + char delimiter=',', + char missch='?'); + + /** @brief Creates training data from in-memory arrays. + + @param samples matrix of samples. It should have CV_32F type. + @param layout see ml::SampleTypes. + @param responses matrix of responses. If the responses are scalar, they should be stored as a + single row or as a single column. The matrix should have type CV_32F or CV_32S (in the + former case the responses are considered as ordered by default; in the latter case - as + categorical) + @param varIdx vector specifying which variables to use for training. It can be an integer vector + (CV_32S) containing 0-based variable indices or byte vector (CV_8U) containing a mask of + active variables. + @param sampleIdx vector specifying which samples to use for training. It can be an integer + vector (CV_32S) containing 0-based sample indices or byte vector (CV_8U) containing a mask + of training samples. + @param sampleWeights optional vector with weights for each sample. It should have CV_32F type. + @param varType optional vector of type CV_8U and size ` + + `, containing types of each input and output variable. See + ml::VariableTypes. + */ + CV_WRAP static Ptr create(InputArray samples, int layout, InputArray responses, + InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), + InputArray sampleWeights=noArray(), InputArray varType=noArray()); +}; + +/** @brief Base class for statistical models in OpenCV ML. + */ +class CV_EXPORTS_W StatModel : public Algorithm +{ +public: + /** Predict options */ + enum Flags { + UPDATE_MODEL = 1, + RAW_OUTPUT=1, //!< makes the method return the raw results (the sum), not the class label + COMPRESSED_INPUT=2, + PREPROCESSED_INPUT=4 + }; + + /** @brief Returns the number of variables in training samples */ + CV_WRAP virtual int getVarCount() const = 0; + + CV_WRAP virtual bool empty() const CV_OVERRIDE; + + /** @brief Returns true if the model is trained */ + CV_WRAP virtual bool isTrained() const = 0; + /** @brief Returns true if the model is classifier */ + CV_WRAP virtual bool isClassifier() const = 0; + + /** @brief Trains the statistical model + + @param trainData training data that can be loaded from file using TrainData::loadFromCSV or + created with TrainData::create. + @param flags optional flags, depending on the model. Some of the models can be updated with the + new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP). + */ + CV_WRAP virtual bool train( const Ptr& trainData, int flags=0 ); + + /** @brief Trains the statistical model + + @param samples training samples + @param layout See ml::SampleTypes. + @param responses vector of responses associated with the training samples. + */ + CV_WRAP virtual bool train( InputArray samples, int layout, InputArray responses ); + + /** @brief Computes error on the training or test dataset + + @param data the training data + @param test if true, the error is computed over the test subset of the data, otherwise it's + computed over the training subset of the data. Please note that if you loaded a completely + different dataset to evaluate already trained classifier, you will probably want not to set + the test subset at all with TrainData::setTrainTestSplitRatio and specify test=false, so + that the error is computed for the whole new set. Yes, this sounds a bit confusing. + @param resp the optional output responses. + + The method uses StatModel::predict to compute the error. For regression models the error is + computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%). + */ + CV_WRAP virtual float calcError( const Ptr& data, bool test, OutputArray resp ) const; + + /** @brief Predicts response(s) for the provided sample(s) + + @param samples The input samples, floating-point matrix + @param results The optional output matrix of results. + @param flags The optional flags, model-dependent. See cv::ml::StatModel::Flags. + */ + CV_WRAP virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const = 0; + + /** @brief Create and train model with default parameters + + The class must implement static `create()` method with no parameters or with all default parameter values + */ + template static Ptr<_Tp> train(const Ptr& data, int flags=0) + { + Ptr<_Tp> model = _Tp::create(); + return !model.empty() && model->train(data, flags) ? model : Ptr<_Tp>(); + } +}; + +/****************************************************************************************\ +* Normal Bayes Classifier * +\****************************************************************************************/ + +/** @brief Bayes classifier for normally distributed data. + +@sa @ref ml_intro_bayes + */ +class CV_EXPORTS_W NormalBayesClassifier : public StatModel +{ +public: + /** @brief Predicts the response for sample(s). + + The method estimates the most probable classes for input vectors. Input vectors (one or more) + are stored as rows of the matrix inputs. In case of multiple input vectors, there should be one + output vector outputs. The predicted class for a single input vector is returned by the method. + The vector outputProbs contains the output probabilities corresponding to each element of + result. + */ + CV_WRAP virtual float predictProb( InputArray inputs, OutputArray outputs, + OutputArray outputProbs, int flags=0 ) const = 0; + + /** Creates empty model + Use StatModel::train to train the model after creation. */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized NormalBayesClassifier from a file + * + * Use NormalBayesClassifier::save to serialize and store an NormalBayesClassifier to disk. + * Load the NormalBayesClassifier from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized NormalBayesClassifier + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + +/****************************************************************************************\ +* K-Nearest Neighbour Classifier * +\****************************************************************************************/ + +/** @brief The class implements K-Nearest Neighbors model + +@sa @ref ml_intro_knn + */ +class CV_EXPORTS_W KNearest : public StatModel +{ +public: + + /** Default number of neighbors to use in predict method. */ + /** @see setDefaultK */ + CV_WRAP virtual int getDefaultK() const = 0; + /** @copybrief getDefaultK @see getDefaultK */ + CV_WRAP virtual void setDefaultK(int val) = 0; + + /** Whether classification or regression model should be trained. */ + /** @see setIsClassifier */ + CV_WRAP virtual bool getIsClassifier() const = 0; + /** @copybrief getIsClassifier @see getIsClassifier */ + CV_WRAP virtual void setIsClassifier(bool val) = 0; + + /** Parameter for KDTree implementation. */ + /** @see setEmax */ + CV_WRAP virtual int getEmax() const = 0; + /** @copybrief getEmax @see getEmax */ + CV_WRAP virtual void setEmax(int val) = 0; + + /** %Algorithm type, one of KNearest::Types. */ + /** @see setAlgorithmType */ + CV_WRAP virtual int getAlgorithmType() const = 0; + /** @copybrief getAlgorithmType @see getAlgorithmType */ + CV_WRAP virtual void setAlgorithmType(int val) = 0; + + /** @brief Finds the neighbors and predicts responses for input vectors. + + @param samples Input samples stored by rows. It is a single-precision floating-point matrix of + ` * k` size. + @param k Number of used nearest neighbors. Should be greater than 1. + @param results Vector with results of prediction (regression or classification) for each input + sample. It is a single-precision floating-point vector with `` elements. + @param neighborResponses Optional output values for corresponding neighbors. It is a single- + precision floating-point matrix of ` * k` size. + @param dist Optional output distances from the input vectors to the corresponding neighbors. It + is a single-precision floating-point matrix of ` * k` size. + + For each input vector (a row of the matrix samples), the method finds the k nearest neighbors. + In case of regression, the predicted result is a mean value of the particular vector's neighbor + responses. In case of classification, the class is determined by voting. + + For each input vector, the neighbors are sorted by their distances to the vector. + + In case of C++ interface you can use output pointers to empty matrices and the function will + allocate memory itself. + + If only a single input vector is passed, all output matrices are optional and the predicted + value is returned by the method. + + The function is parallelized with the TBB library. + */ + CV_WRAP virtual float findNearest( InputArray samples, int k, + OutputArray results, + OutputArray neighborResponses=noArray(), + OutputArray dist=noArray() ) const = 0; + + /** @brief Implementations of KNearest algorithm + */ + enum Types + { + BRUTE_FORCE=1, + KDTREE=2 + }; + + /** @brief Creates the empty model + + The static method creates empty %KNearest classifier. It should be then trained using StatModel::train method. + */ + CV_WRAP static Ptr create(); +}; + +/****************************************************************************************\ +* Support Vector Machines * +\****************************************************************************************/ + +/** @brief Support Vector Machines. + +@sa @ref ml_intro_svm + */ +class CV_EXPORTS_W SVM : public StatModel +{ +public: + + class CV_EXPORTS Kernel : public Algorithm + { + public: + virtual int getType() const = 0; + virtual void calc( int vcount, int n, const float* vecs, const float* another, float* results ) = 0; + }; + + /** Type of a %SVM formulation. + See SVM::Types. Default value is SVM::C_SVC. */ + /** @see setType */ + CV_WRAP virtual int getType() const = 0; + /** @copybrief getType @see getType */ + CV_WRAP virtual void setType(int val) = 0; + + /** Parameter \f$\gamma\f$ of a kernel function. + For SVM::POLY, SVM::RBF, SVM::SIGMOID or SVM::CHI2. Default value is 1. */ + /** @see setGamma */ + CV_WRAP virtual double getGamma() const = 0; + /** @copybrief getGamma @see getGamma */ + CV_WRAP virtual void setGamma(double val) = 0; + + /** Parameter _coef0_ of a kernel function. + For SVM::POLY or SVM::SIGMOID. Default value is 0.*/ + /** @see setCoef0 */ + CV_WRAP virtual double getCoef0() const = 0; + /** @copybrief getCoef0 @see getCoef0 */ + CV_WRAP virtual void setCoef0(double val) = 0; + + /** Parameter _degree_ of a kernel function. + For SVM::POLY. Default value is 0. */ + /** @see setDegree */ + CV_WRAP virtual double getDegree() const = 0; + /** @copybrief getDegree @see getDegree */ + CV_WRAP virtual void setDegree(double val) = 0; + + /** Parameter _C_ of a %SVM optimization problem. + For SVM::C_SVC, SVM::EPS_SVR or SVM::NU_SVR. Default value is 0. */ + /** @see setC */ + CV_WRAP virtual double getC() const = 0; + /** @copybrief getC @see getC */ + CV_WRAP virtual void setC(double val) = 0; + + /** Parameter \f$\nu\f$ of a %SVM optimization problem. + For SVM::NU_SVC, SVM::ONE_CLASS or SVM::NU_SVR. Default value is 0. */ + /** @see setNu */ + CV_WRAP virtual double getNu() const = 0; + /** @copybrief getNu @see getNu */ + CV_WRAP virtual void setNu(double val) = 0; + + /** Parameter \f$\epsilon\f$ of a %SVM optimization problem. + For SVM::EPS_SVR. Default value is 0. */ + /** @see setP */ + CV_WRAP virtual double getP() const = 0; + /** @copybrief getP @see getP */ + CV_WRAP virtual void setP(double val) = 0; + + /** Optional weights in the SVM::C_SVC problem, assigned to particular classes. + They are multiplied by _C_ so the parameter _C_ of class _i_ becomes `classWeights(i) * C`. Thus + these weights affect the misclassification penalty for different classes. The larger weight, + the larger penalty on misclassification of data from the corresponding class. Default value is + empty Mat. */ + /** @see setClassWeights */ + CV_WRAP virtual cv::Mat getClassWeights() const = 0; + /** @copybrief getClassWeights @see getClassWeights */ + CV_WRAP virtual void setClassWeights(const cv::Mat &val) = 0; + + /** Termination criteria of the iterative %SVM training procedure which solves a partial + case of constrained quadratic optimization problem. + You can specify tolerance and/or the maximum number of iterations. Default value is + `TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, FLT_EPSILON )`; */ + /** @see setTermCriteria */ + CV_WRAP virtual cv::TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(const cv::TermCriteria &val) = 0; + + /** Type of a %SVM kernel. + See SVM::KernelTypes. Default value is SVM::RBF. */ + CV_WRAP virtual int getKernelType() const = 0; + + /** Initialize with one of predefined kernels. + See SVM::KernelTypes. */ + CV_WRAP virtual void setKernel(int kernelType) = 0; + + /** Initialize with custom kernel. + See SVM::Kernel class for implementation details */ + virtual void setCustomKernel(const Ptr &_kernel) = 0; + + //! %SVM type + enum Types { + /** C-Support Vector Classification. n-class classification (n \f$\geq\f$ 2), allows + imperfect separation of classes with penalty multiplier C for outliers. */ + C_SVC=100, + /** \f$\nu\f$-Support Vector Classification. n-class classification with possible + imperfect separation. Parameter \f$\nu\f$ (in the range 0..1, the larger the value, the smoother + the decision boundary) is used instead of C. */ + NU_SVC=101, + /** Distribution Estimation (One-class %SVM). All the training data are from + the same class, %SVM builds a boundary that separates the class from the rest of the feature + space. */ + ONE_CLASS=102, + /** \f$\epsilon\f$-Support Vector Regression. The distance between feature vectors + from the training set and the fitting hyper-plane must be less than p. For outliers the + penalty multiplier C is used. */ + EPS_SVR=103, + /** \f$\nu\f$-Support Vector Regression. \f$\nu\f$ is used instead of p. + See @cite LibSVM for details. */ + NU_SVR=104 + }; + + /** @brief %SVM kernel type + + A comparison of different kernels on the following 2D test case with four classes. Four + SVM::C_SVC SVMs have been trained (one against rest) with auto_train. Evaluation on three + different kernels (SVM::CHI2, SVM::INTER, SVM::RBF). The color depicts the class with max score. + Bright means max-score \> 0, dark means max-score \< 0. + ![image](pics/SVM_Comparison.png) + */ + enum KernelTypes { + /** Returned by SVM::getKernelType in case when custom kernel has been set */ + CUSTOM=-1, + /** Linear kernel. No mapping is done, linear discrimination (or regression) is + done in the original feature space. It is the fastest option. \f$K(x_i, x_j) = x_i^T x_j\f$. */ + LINEAR=0, + /** Polynomial kernel: + \f$K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0\f$. */ + POLY=1, + /** Radial basis function (RBF), a good choice in most cases. + \f$K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0\f$. */ + RBF=2, + /** Sigmoid kernel: \f$K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)\f$. */ + SIGMOID=3, + /** Exponential Chi2 kernel, similar to the RBF kernel: + \f$K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0\f$. */ + CHI2=4, + /** Histogram intersection kernel. A fast kernel. \f$K(x_i, x_j) = min(x_i,x_j)\f$. */ + INTER=5 + }; + + //! %SVM params type + enum ParamTypes { + C=0, + GAMMA=1, + P=2, + NU=3, + COEF=4, + DEGREE=5 + }; + + /** @brief Trains an %SVM with optimal parameters. + + @param data the training data that can be constructed using TrainData::create or + TrainData::loadFromCSV. + @param kFold Cross-validation parameter. The training set is divided into kFold subsets. One + subset is used to test the model, the others form the train set. So, the %SVM algorithm is + executed kFold times. + @param Cgrid grid for C + @param gammaGrid grid for gamma + @param pGrid grid for p + @param nuGrid grid for nu + @param coeffGrid grid for coeff + @param degreeGrid grid for degree + @param balanced If true and the problem is 2-class classification then the method creates more + balanced cross-validation subsets that is proportions between classes in subsets are close + to such proportion in the whole train dataset. + + The method trains the %SVM model automatically by choosing the optimal parameters C, gamma, p, + nu, coef0, degree. Parameters are considered optimal when the cross-validation + estimate of the test set error is minimal. + + If there is no need to optimize a parameter, the corresponding grid step should be set to any + value less than or equal to 1. For example, to avoid optimization in gamma, set `gammaGrid.step + = 0`, `gammaGrid.minVal`, `gamma_grid.maxVal` as arbitrary numbers. In this case, the value + `Gamma` is taken for gamma. + + And, finally, if the optimization in a parameter is required but the corresponding grid is + unknown, you may call the function SVM::getDefaultGrid. To generate a grid, for example, for + gamma, call `SVM::getDefaultGrid(SVM::GAMMA)`. + + This function works for the classification (SVM::C_SVC or SVM::NU_SVC) as well as for the + regression (SVM::EPS_SVR or SVM::NU_SVR). If it is SVM::ONE_CLASS, no optimization is made and + the usual %SVM with parameters specified in params is executed. + */ + virtual bool trainAuto( const Ptr& data, int kFold = 10, + ParamGrid Cgrid = getDefaultGrid(C), + ParamGrid gammaGrid = getDefaultGrid(GAMMA), + ParamGrid pGrid = getDefaultGrid(P), + ParamGrid nuGrid = getDefaultGrid(NU), + ParamGrid coeffGrid = getDefaultGrid(COEF), + ParamGrid degreeGrid = getDefaultGrid(DEGREE), + bool balanced=false) = 0; + + /** @brief Trains an %SVM with optimal parameters + + @param samples training samples + @param layout See ml::SampleTypes. + @param responses vector of responses associated with the training samples. + @param kFold Cross-validation parameter. The training set is divided into kFold subsets. One + subset is used to test the model, the others form the train set. So, the %SVM algorithm is + @param Cgrid grid for C + @param gammaGrid grid for gamma + @param pGrid grid for p + @param nuGrid grid for nu + @param coeffGrid grid for coeff + @param degreeGrid grid for degree + @param balanced If true and the problem is 2-class classification then the method creates more + balanced cross-validation subsets that is proportions between classes in subsets are close + to such proportion in the whole train dataset. + + The method trains the %SVM model automatically by choosing the optimal parameters C, gamma, p, + nu, coef0, degree. Parameters are considered optimal when the cross-validation + estimate of the test set error is minimal. + + This function only makes use of SVM::getDefaultGrid for parameter optimization and thus only + offers rudimentary parameter options. + + This function works for the classification (SVM::C_SVC or SVM::NU_SVC) as well as for the + regression (SVM::EPS_SVR or SVM::NU_SVR). If it is SVM::ONE_CLASS, no optimization is made and + the usual %SVM with parameters specified in params is executed. + */ + CV_WRAP virtual bool trainAuto(InputArray samples, + int layout, + InputArray responses, + int kFold = 10, + Ptr Cgrid = SVM::getDefaultGridPtr(SVM::C), + Ptr gammaGrid = SVM::getDefaultGridPtr(SVM::GAMMA), + Ptr pGrid = SVM::getDefaultGridPtr(SVM::P), + Ptr nuGrid = SVM::getDefaultGridPtr(SVM::NU), + Ptr coeffGrid = SVM::getDefaultGridPtr(SVM::COEF), + Ptr degreeGrid = SVM::getDefaultGridPtr(SVM::DEGREE), + bool balanced=false) = 0; + + /** @brief Retrieves all the support vectors + + The method returns all the support vectors as a floating-point matrix, where support vectors are + stored as matrix rows. + */ + CV_WRAP virtual Mat getSupportVectors() const = 0; + + /** @brief Retrieves all the uncompressed support vectors of a linear %SVM + + The method returns all the uncompressed support vectors of a linear %SVM that the compressed + support vector, used for prediction, was derived from. They are returned in a floating-point + matrix, where the support vectors are stored as matrix rows. + */ + CV_WRAP virtual Mat getUncompressedSupportVectors() const = 0; + + /** @brief Retrieves the decision function + + @param i the index of the decision function. If the problem solved is regression, 1-class or + 2-class classification, then there will be just one decision function and the index should + always be 0. Otherwise, in the case of N-class classification, there will be \f$N(N-1)/2\f$ + decision functions. + @param alpha the optional output vector for weights, corresponding to different support vectors. + In the case of linear %SVM all the alpha's will be 1's. + @param svidx the optional output vector of indices of support vectors within the matrix of + support vectors (which can be retrieved by SVM::getSupportVectors). In the case of linear + %SVM each decision function consists of a single "compressed" support vector. + + The method returns rho parameter of the decision function, a scalar subtracted from the weighted + sum of kernel responses. + */ + CV_WRAP virtual double getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const = 0; + + /** @brief Generates a grid for %SVM parameters. + + @param param_id %SVM parameters IDs that must be one of the SVM::ParamTypes. The grid is + generated for the parameter with this ID. + + The function generates a grid for the specified parameter of the %SVM algorithm. The grid may be + passed to the function SVM::trainAuto. + */ + static ParamGrid getDefaultGrid( int param_id ); + + /** @brief Generates a grid for %SVM parameters. + + @param param_id %SVM parameters IDs that must be one of the SVM::ParamTypes. The grid is + generated for the parameter with this ID. + + The function generates a grid pointer for the specified parameter of the %SVM algorithm. + The grid may be passed to the function SVM::trainAuto. + */ + CV_WRAP static Ptr getDefaultGridPtr( int param_id ); + + /** Creates empty model. + Use StatModel::train to train the model. Since %SVM has several parameters, you may want to + find the best parameters for your problem, it can be done with SVM::trainAuto. */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized svm from a file + * + * Use SVM::save to serialize and store an SVM to disk. + * Load the SVM from this file again, by calling this function with the path to the file. + * + * @param filepath path to serialized svm + */ + CV_WRAP static Ptr load(const String& filepath); +}; + +/****************************************************************************************\ +* Expectation - Maximization * +\****************************************************************************************/ + +/** @brief The class implements the Expectation Maximization algorithm. + +@sa @ref ml_intro_em + */ +class CV_EXPORTS_W EM : public StatModel +{ +public: + //! Type of covariation matrices + enum Types { + /** A scaled identity matrix \f$\mu_k * I\f$. There is the only + parameter \f$\mu_k\f$ to be estimated for each matrix. The option may be used in special cases, + when the constraint is relevant, or as a first step in the optimization (for example in case + when the data is preprocessed with PCA). The results of such preliminary estimation may be + passed again to the optimization procedure, this time with + covMatType=EM::COV_MAT_DIAGONAL. */ + COV_MAT_SPHERICAL=0, + /** A diagonal matrix with positive diagonal elements. The number of + free parameters is d for each matrix. This is most commonly used option yielding good + estimation results. */ + COV_MAT_DIAGONAL=1, + /** A symmetric positively defined matrix. The number of free + parameters in each matrix is about \f$d^2/2\f$. It is not recommended to use this option, unless + there is pretty accurate initial estimation of the parameters and/or a huge number of + training samples. */ + COV_MAT_GENERIC=2, + COV_MAT_DEFAULT=COV_MAT_DIAGONAL + }; + + //! Default parameters + enum {DEFAULT_NCLUSTERS=5, DEFAULT_MAX_ITERS=100}; + + //! The initial step + enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0}; + + /** The number of mixture components in the Gaussian mixture model. + Default value of the parameter is EM::DEFAULT_NCLUSTERS=5. Some of %EM implementation could + determine the optimal number of mixtures within a specified value range, but that is not the + case in ML yet. */ + /** @see setClustersNumber */ + CV_WRAP virtual int getClustersNumber() const = 0; + /** @copybrief getClustersNumber @see getClustersNumber */ + CV_WRAP virtual void setClustersNumber(int val) = 0; + + /** Constraint on covariance matrices which defines type of matrices. + See EM::Types. */ + /** @see setCovarianceMatrixType */ + CV_WRAP virtual int getCovarianceMatrixType() const = 0; + /** @copybrief getCovarianceMatrixType @see getCovarianceMatrixType */ + CV_WRAP virtual void setCovarianceMatrixType(int val) = 0; + + /** The termination criteria of the %EM algorithm. + The %EM algorithm can be terminated by the number of iterations termCrit.maxCount (number of + M-steps) or when relative change of likelihood logarithm is less than termCrit.epsilon. Default + maximum number of iterations is EM::DEFAULT_MAX_ITERS=100. */ + /** @see setTermCriteria */ + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(const TermCriteria &val) = 0; + + /** @brief Returns weights of the mixtures + + Returns vector with the number of elements equal to the number of mixtures. + */ + CV_WRAP virtual Mat getWeights() const = 0; + /** @brief Returns the cluster centers (means of the Gaussian mixture) + + Returns matrix with the number of rows equal to the number of mixtures and number of columns + equal to the space dimensionality. + */ + CV_WRAP virtual Mat getMeans() const = 0; + /** @brief Returns covariation matrices + + Returns vector of covariation matrices. Number of matrices is the number of gaussian mixtures, + each matrix is a square floating-point matrix NxN, where N is the space dimensionality. + */ + CV_WRAP virtual void getCovs(CV_OUT std::vector& covs) const = 0; + + /** @brief Returns posterior probabilities for the provided samples + + @param samples The input samples, floating-point matrix + @param results The optional output \f$ nSamples \times nClusters\f$ matrix of results. It contains + posterior probabilities for each sample from the input + @param flags This parameter will be ignored + */ + CV_WRAP virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const CV_OVERRIDE = 0; + + /** @brief Returns a likelihood logarithm value and an index of the most probable mixture component + for the given sample. + + @param sample A sample for classification. It should be a one-channel matrix of + \f$1 \times dims\f$ or \f$dims \times 1\f$ size. + @param probs Optional output matrix that contains posterior probabilities of each component + given the sample. It has \f$1 \times nclusters\f$ size and CV_64FC1 type. + + The method returns a two-element double vector. Zero element is a likelihood logarithm value for + the sample. First element is an index of the most probable mixture component for the given + sample. + */ + CV_WRAP virtual Vec2d predict2(InputArray sample, OutputArray probs) const = 0; + + /** @brief Estimate the Gaussian mixture parameters from a samples set. + + This variation starts with Expectation step. Initial values of the model parameters will be + estimated by the k-means algorithm. + + Unlike many of the ML models, %EM is an unsupervised learning algorithm and it does not take + responses (class labels or function values) as input. Instead, it computes the *Maximum + Likelihood Estimate* of the Gaussian mixture parameters from an input sample set, stores all the + parameters inside the structure: \f$p_{i,k}\f$ in probs, \f$a_k\f$ in means , \f$S_k\f$ in + covs[k], \f$\pi_k\f$ in weights , and optionally computes the output "class label" for each + sample: \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most + probable mixture component for each sample). + + The trained model can be used further for prediction, just like any other classifier. The + trained model is similar to the NormalBayesClassifier. + + @param samples Samples from which the Gaussian mixture model will be estimated. It should be a + one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type + it will be converted to the inner matrix of such type for the further computing. + @param logLikelihoods The optional output matrix that contains a likelihood logarithm value for + each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. + @param labels The optional output "class label" for each sample: + \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable + mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. + @param probs The optional output matrix that contains posterior probabilities of each Gaussian + mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and + CV_64FC1 type. + */ + CV_WRAP virtual bool trainEM(InputArray samples, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()) = 0; + + /** @brief Estimate the Gaussian mixture parameters from a samples set. + + This variation starts with Expectation step. You need to provide initial means \f$a_k\f$ of + mixture components. Optionally you can pass initial weights \f$\pi_k\f$ and covariance matrices + \f$S_k\f$ of mixture components. + + @param samples Samples from which the Gaussian mixture model will be estimated. It should be a + one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type + it will be converted to the inner matrix of such type for the further computing. + @param means0 Initial means \f$a_k\f$ of mixture components. It is a one-channel matrix of + \f$nclusters \times dims\f$ size. If the matrix does not have CV_64F type it will be + converted to the inner matrix of such type for the further computing. + @param covs0 The vector of initial covariance matrices \f$S_k\f$ of mixture components. Each of + covariance matrices is a one-channel matrix of \f$dims \times dims\f$ size. If the matrices + do not have CV_64F type they will be converted to the inner matrices of such type for the + further computing. + @param weights0 Initial weights \f$\pi_k\f$ of mixture components. It should be a one-channel + floating-point matrix with \f$1 \times nclusters\f$ or \f$nclusters \times 1\f$ size. + @param logLikelihoods The optional output matrix that contains a likelihood logarithm value for + each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. + @param labels The optional output "class label" for each sample: + \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable + mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. + @param probs The optional output matrix that contains posterior probabilities of each Gaussian + mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and + CV_64FC1 type. + */ + CV_WRAP virtual bool trainE(InputArray samples, InputArray means0, + InputArray covs0=noArray(), + InputArray weights0=noArray(), + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()) = 0; + + /** @brief Estimate the Gaussian mixture parameters from a samples set. + + This variation starts with Maximization step. You need to provide initial probabilities + \f$p_{i,k}\f$ to use this option. + + @param samples Samples from which the Gaussian mixture model will be estimated. It should be a + one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type + it will be converted to the inner matrix of such type for the further computing. + @param probs0 + @param logLikelihoods The optional output matrix that contains a likelihood logarithm value for + each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. + @param labels The optional output "class label" for each sample: + \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable + mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. + @param probs The optional output matrix that contains posterior probabilities of each Gaussian + mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and + CV_64FC1 type. + */ + CV_WRAP virtual bool trainM(InputArray samples, InputArray probs0, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()) = 0; + + /** Creates empty %EM model. + The model should be trained then using StatModel::train(traindata, flags) method. Alternatively, you + can use one of the EM::train\* methods or load it from file using Algorithm::load\(filename). + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized EM from a file + * + * Use EM::save to serialize and store an EM to disk. + * Load the EM from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized EM + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + +/****************************************************************************************\ +* Decision Tree * +\****************************************************************************************/ + +/** @brief The class represents a single decision tree or a collection of decision trees. + +The current public interface of the class allows user to train only a single decision tree, however +the class is capable of storing multiple decision trees and using them for prediction (by summing +responses or using a voting schemes), and the derived from DTrees classes (such as RTrees and Boost) +use this capability to implement decision tree ensembles. + +@sa @ref ml_intro_trees +*/ +class CV_EXPORTS_W DTrees : public StatModel +{ +public: + /** Predict options */ + enum Flags { PREDICT_AUTO=0, PREDICT_SUM=(1<<8), PREDICT_MAX_VOTE=(2<<8), PREDICT_MASK=(3<<8) }; + + /** Cluster possible values of a categorical variable into K\<=maxCategories clusters to + find a suboptimal split. + If a discrete variable, on which the training procedure tries to make a split, takes more than + maxCategories values, the precise best subset estimation may take a very long time because the + algorithm is exponential. Instead, many decision trees engines (including our implementation) + try to find sub-optimal split in this case by clustering all the samples into maxCategories + clusters that is some categories are merged together. The clustering is applied only in n \> + 2-class classification problems for categorical variables with N \> max_categories possible + values. In case of regression and 2-class classification the optimal split can be found + efficiently without employing clustering, thus the parameter is not used in these cases. + Default value is 10.*/ + /** @see setMaxCategories */ + CV_WRAP virtual int getMaxCategories() const = 0; + /** @copybrief getMaxCategories @see getMaxCategories */ + CV_WRAP virtual void setMaxCategories(int val) = 0; + + /** The maximum possible depth of the tree. + That is the training algorithms attempts to split a node while its depth is less than maxDepth. + The root node has zero depth. The actual depth may be smaller if the other termination criteria + are met (see the outline of the training procedure @ref ml_intro_trees "here"), and/or if the + tree is pruned. Default value is INT_MAX.*/ + /** @see setMaxDepth */ + CV_WRAP virtual int getMaxDepth() const = 0; + /** @copybrief getMaxDepth @see getMaxDepth */ + CV_WRAP virtual void setMaxDepth(int val) = 0; + + /** If the number of samples in a node is less than this parameter then the node will not be split. + + Default value is 10.*/ + /** @see setMinSampleCount */ + CV_WRAP virtual int getMinSampleCount() const = 0; + /** @copybrief getMinSampleCount @see getMinSampleCount */ + CV_WRAP virtual void setMinSampleCount(int val) = 0; + + /** If CVFolds \> 1 then algorithms prunes the built decision tree using K-fold + cross-validation procedure where K is equal to CVFolds. + Default value is 10.*/ + /** @see setCVFolds */ + CV_WRAP virtual int getCVFolds() const = 0; + /** @copybrief getCVFolds @see getCVFolds */ + CV_WRAP virtual void setCVFolds(int val) = 0; + + /** If true then surrogate splits will be built. + These splits allow to work with missing data and compute variable importance correctly. + Default value is false. + @note currently it's not implemented.*/ + /** @see setUseSurrogates */ + CV_WRAP virtual bool getUseSurrogates() const = 0; + /** @copybrief getUseSurrogates @see getUseSurrogates */ + CV_WRAP virtual void setUseSurrogates(bool val) = 0; + + /** If true then a pruning will be harsher. + This will make a tree more compact and more resistant to the training data noise but a bit less + accurate. Default value is true.*/ + /** @see setUse1SERule */ + CV_WRAP virtual bool getUse1SERule() const = 0; + /** @copybrief getUse1SERule @see getUse1SERule */ + CV_WRAP virtual void setUse1SERule(bool val) = 0; + + /** If true then pruned branches are physically removed from the tree. + Otherwise they are retained and it is possible to get results from the original unpruned (or + pruned less aggressively) tree. Default value is true.*/ + /** @see setTruncatePrunedTree */ + CV_WRAP virtual bool getTruncatePrunedTree() const = 0; + /** @copybrief getTruncatePrunedTree @see getTruncatePrunedTree */ + CV_WRAP virtual void setTruncatePrunedTree(bool val) = 0; + + /** Termination criteria for regression trees. + If all absolute differences between an estimated value in a node and values of train samples + in this node are less than this parameter then the node will not be split further. Default + value is 0.01f*/ + /** @see setRegressionAccuracy */ + CV_WRAP virtual float getRegressionAccuracy() const = 0; + /** @copybrief getRegressionAccuracy @see getRegressionAccuracy */ + CV_WRAP virtual void setRegressionAccuracy(float val) = 0; + + /** @brief The array of a priori class probabilities, sorted by the class label value. + + The parameter can be used to tune the decision tree preferences toward a certain class. For + example, if you want to detect some rare anomaly occurrence, the training base will likely + contain much more normal cases than anomalies, so a very good classification performance + will be achieved just by considering every case as normal. To avoid this, the priors can be + specified, where the anomaly probability is artificially increased (up to 0.5 or even + greater), so the weight of the misclassified anomalies becomes much bigger, and the tree is + adjusted properly. + + You can also think about this parameter as weights of prediction categories which determine + relative weights that you give to misclassification. That is, if the weight of the first + category is 1 and the weight of the second category is 10, then each mistake in predicting + the second category is equivalent to making 10 mistakes in predicting the first category. + Default value is empty Mat.*/ + /** @see setPriors */ + CV_WRAP virtual cv::Mat getPriors() const = 0; + /** @copybrief getPriors @see getPriors */ + CV_WRAP virtual void setPriors(const cv::Mat &val) = 0; + + /** @brief The class represents a decision tree node. + */ + class CV_EXPORTS Node + { + public: + Node(); + double value; //!< Value at the node: a class label in case of classification or estimated + //!< function value in case of regression. + int classIdx; //!< Class index normalized to 0..class_count-1 range and assigned to the + //!< node. It is used internally in classification trees and tree ensembles. + int parent; //!< Index of the parent node + int left; //!< Index of the left child node + int right; //!< Index of right child node + int defaultDir; //!< Default direction where to go (-1: left or +1: right). It helps in the + //!< case of missing values. + int split; //!< Index of the first split + }; + + /** @brief The class represents split in a decision tree. + */ + class CV_EXPORTS Split + { + public: + Split(); + int varIdx; //!< Index of variable on which the split is created. + bool inversed; //!< If true, then the inverse split rule is used (i.e. left and right + //!< branches are exchanged in the rule expressions below). + float quality; //!< The split quality, a positive number. It is used to choose the best split. + int next; //!< Index of the next split in the list of splits for the node + float c; /**< The threshold value in case of split on an ordered variable. + The rule is: + @code{.none} + if var_value < c + then next_node <- left + else next_node <- right + @endcode */ + int subsetOfs; /**< Offset of the bitset used by the split on a categorical variable. + The rule is: + @code{.none} + if bitset[var_value] == 1 + then next_node <- left + else next_node <- right + @endcode */ + }; + + /** @brief Returns indices of root nodes + */ + virtual const std::vector& getRoots() const = 0; + /** @brief Returns all the nodes + + all the node indices are indices in the returned vector + */ + virtual const std::vector& getNodes() const = 0; + /** @brief Returns all the splits + + all the split indices are indices in the returned vector + */ + virtual const std::vector& getSplits() const = 0; + /** @brief Returns all the bitsets for categorical splits + + Split::subsetOfs is an offset in the returned vector + */ + virtual const std::vector& getSubsets() const = 0; + + /** @brief Creates the empty model + + The static method creates empty decision tree with the specified parameters. It should be then + trained using train method (see StatModel::train). Alternatively, you can load the model from + file using Algorithm::load\(filename). + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized DTrees from a file + * + * Use DTree::save to serialize and store an DTree to disk. + * Load the DTree from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized DTree + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + +/****************************************************************************************\ +* Random Trees Classifier * +\****************************************************************************************/ + +/** @brief The class implements the random forest predictor. + +@sa @ref ml_intro_rtrees + */ +class CV_EXPORTS_W RTrees : public DTrees +{ +public: + + /** If true then variable importance will be calculated and then it can be retrieved by RTrees::getVarImportance. + Default value is false.*/ + /** @see setCalculateVarImportance */ + CV_WRAP virtual bool getCalculateVarImportance() const = 0; + /** @copybrief getCalculateVarImportance @see getCalculateVarImportance */ + CV_WRAP virtual void setCalculateVarImportance(bool val) = 0; + + /** The size of the randomly selected subset of features at each tree node and that are used + to find the best split(s). + If you set it to 0 then the size will be set to the square root of the total number of + features. Default value is 0.*/ + /** @see setActiveVarCount */ + CV_WRAP virtual int getActiveVarCount() const = 0; + /** @copybrief getActiveVarCount @see getActiveVarCount */ + CV_WRAP virtual void setActiveVarCount(int val) = 0; + + /** The termination criteria that specifies when the training algorithm stops. + Either when the specified number of trees is trained and added to the ensemble or when + sufficient accuracy (measured as OOB error) is achieved. Typically the more trees you have the + better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes + pass a certain number of trees. Also to keep in mind, the number of tree increases the + prediction time linearly. Default value is TermCriteria(TermCriteria::MAX_ITERS + + TermCriteria::EPS, 50, 0.1)*/ + /** @see setTermCriteria */ + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(const TermCriteria &val) = 0; + + /** Returns the variable importance array. + The method returns the variable importance vector, computed at the training stage when + CalculateVarImportance is set to true. If this flag was set to false, the empty matrix is + returned. + */ + CV_WRAP virtual Mat getVarImportance() const = 0; + + /** Returns the result of each individual tree in the forest. + In case the model is a regression problem, the method will return each of the trees' + results for each of the sample cases. If the model is a classifier, it will return + a Mat with samples + 1 rows, where the first row gives the class number and the + following rows return the votes each class had for each sample. + @param samples Array containing the samples for which votes will be calculated. + @param results Array where the result of the calculation will be written. + @param flags Flags for defining the type of RTrees. + */ + CV_WRAP virtual void getVotes(InputArray samples, OutputArray results, int flags) const = 0; + + /** Creates the empty model. + Use StatModel::train to train the model, StatModel::train to create and train the model, + Algorithm::load to load the pre-trained model. + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized RTree from a file + * + * Use RTree::save to serialize and store an RTree to disk. + * Load the RTree from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized RTree + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + +/****************************************************************************************\ +* Boosted tree classifier * +\****************************************************************************************/ + +/** @brief Boosted tree classifier derived from DTrees + +@sa @ref ml_intro_boost + */ +class CV_EXPORTS_W Boost : public DTrees +{ +public: + /** Type of the boosting algorithm. + See Boost::Types. Default value is Boost::REAL. */ + /** @see setBoostType */ + CV_WRAP virtual int getBoostType() const = 0; + /** @copybrief getBoostType @see getBoostType */ + CV_WRAP virtual void setBoostType(int val) = 0; + + /** The number of weak classifiers. + Default value is 100. */ + /** @see setWeakCount */ + CV_WRAP virtual int getWeakCount() const = 0; + /** @copybrief getWeakCount @see getWeakCount */ + CV_WRAP virtual void setWeakCount(int val) = 0; + + /** A threshold between 0 and 1 used to save computational time. + Samples with summary weight \f$\leq 1 - weight_trim_rate\f$ do not participate in the *next* + iteration of training. Set this parameter to 0 to turn off this functionality. Default value is 0.95.*/ + /** @see setWeightTrimRate */ + CV_WRAP virtual double getWeightTrimRate() const = 0; + /** @copybrief getWeightTrimRate @see getWeightTrimRate */ + CV_WRAP virtual void setWeightTrimRate(double val) = 0; + + /** Boosting type. + Gentle AdaBoost and Real AdaBoost are often the preferable choices. */ + enum Types { + DISCRETE=0, //!< Discrete AdaBoost. + REAL=1, //!< Real AdaBoost. It is a technique that utilizes confidence-rated predictions + //!< and works well with categorical data. + LOGIT=2, //!< LogitBoost. It can produce good regression fits. + GENTLE=3 //!< Gentle AdaBoost. It puts less weight on outlier data points and for that + //!(filename) to load the pre-trained model. */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized Boost from a file + * + * Use Boost::save to serialize and store an RTree to disk. + * Load the Boost from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized Boost + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + +/****************************************************************************************\ +* Gradient Boosted Trees * +\****************************************************************************************/ + +/*class CV_EXPORTS_W GBTrees : public DTrees +{ +public: + struct CV_EXPORTS_W_MAP Params : public DTrees::Params + { + CV_PROP_RW int weakCount; + CV_PROP_RW int lossFunctionType; + CV_PROP_RW float subsamplePortion; + CV_PROP_RW float shrinkage; + + Params(); + Params( int lossFunctionType, int weakCount, float shrinkage, + float subsamplePortion, int maxDepth, bool useSurrogates ); + }; + + enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; + + virtual void setK(int k) = 0; + + virtual float predictSerial( InputArray samples, + OutputArray weakResponses, int flags) const = 0; + + static Ptr create(const Params& p); +};*/ + +/****************************************************************************************\ +* Artificial Neural Networks (ANN) * +\****************************************************************************************/ + +/////////////////////////////////// Multi-Layer Perceptrons ////////////////////////////// + +/** @brief Artificial Neural Networks - Multi-Layer Perceptrons. + +Unlike many other models in ML that are constructed and trained at once, in the MLP model these +steps are separated. First, a network with the specified topology is created using the non-default +constructor or the method ANN_MLP::create. All the weights are set to zeros. Then, the network is +trained using a set of input and output vectors. The training procedure can be repeated more than +once, that is, the weights can be adjusted based on the new training data. + +Additional flags for StatModel::train are available: ANN_MLP::TrainFlags. + +@sa @ref ml_intro_ann + */ +class CV_EXPORTS_W ANN_MLP : public StatModel +{ +public: + /** Available training methods */ + enum TrainingMethods { + BACKPROP=0, //!< The back-propagation algorithm. + RPROP = 1, //!< The RPROP algorithm. See @cite RPROP93 for details. + ANNEAL = 2 //!< The simulated annealing algorithm. See @cite Kirkpatrick83 for details. + }; + + /** Sets training method and common parameters. + @param method Default value is ANN_MLP::RPROP. See ANN_MLP::TrainingMethods. + @param param1 passed to setRpropDW0 for ANN_MLP::RPROP and to setBackpropWeightScale for ANN_MLP::BACKPROP and to initialT for ANN_MLP::ANNEAL. + @param param2 passed to setRpropDWMin for ANN_MLP::RPROP and to setBackpropMomentumScale for ANN_MLP::BACKPROP and to finalT for ANN_MLP::ANNEAL. + */ + CV_WRAP virtual void setTrainMethod(int method, double param1 = 0, double param2 = 0) = 0; + + /** Returns current training method */ + CV_WRAP virtual int getTrainMethod() const = 0; + + /** Initialize the activation function for each neuron. + Currently the default and the only fully supported activation function is ANN_MLP::SIGMOID_SYM. + @param type The type of activation function. See ANN_MLP::ActivationFunctions. + @param param1 The first parameter of the activation function, \f$\alpha\f$. Default value is 0. + @param param2 The second parameter of the activation function, \f$\beta\f$. Default value is 0. + */ + CV_WRAP virtual void setActivationFunction(int type, double param1 = 0, double param2 = 0) = 0; + + /** Integer vector specifying the number of neurons in each layer including the input and output layers. + The very first element specifies the number of elements in the input layer. + The last element - number of elements in the output layer. Default value is empty Mat. + @sa getLayerSizes */ + CV_WRAP virtual void setLayerSizes(InputArray _layer_sizes) = 0; + + /** Integer vector specifying the number of neurons in each layer including the input and output layers. + The very first element specifies the number of elements in the input layer. + The last element - number of elements in the output layer. + @sa setLayerSizes */ + CV_WRAP virtual cv::Mat getLayerSizes() const = 0; + + /** Termination criteria of the training algorithm. + You can specify the maximum number of iterations (maxCount) and/or how much the error could + change between the iterations to make the algorithm continue (epsilon). Default value is + TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01).*/ + /** @see setTermCriteria */ + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(TermCriteria val) = 0; + + /** BPROP: Strength of the weight gradient term. + The recommended value is about 0.1. Default value is 0.1.*/ + /** @see setBackpropWeightScale */ + CV_WRAP virtual double getBackpropWeightScale() const = 0; + /** @copybrief getBackpropWeightScale @see getBackpropWeightScale */ + CV_WRAP virtual void setBackpropWeightScale(double val) = 0; + + /** BPROP: Strength of the momentum term (the difference between weights on the 2 previous iterations). + This parameter provides some inertia to smooth the random fluctuations of the weights. It can + vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough. + Default value is 0.1.*/ + /** @see setBackpropMomentumScale */ + CV_WRAP virtual double getBackpropMomentumScale() const = 0; + /** @copybrief getBackpropMomentumScale @see getBackpropMomentumScale */ + CV_WRAP virtual void setBackpropMomentumScale(double val) = 0; + + /** RPROP: Initial value \f$\Delta_0\f$ of update-values \f$\Delta_{ij}\f$. + Default value is 0.1.*/ + /** @see setRpropDW0 */ + CV_WRAP virtual double getRpropDW0() const = 0; + /** @copybrief getRpropDW0 @see getRpropDW0 */ + CV_WRAP virtual void setRpropDW0(double val) = 0; + + /** RPROP: Increase factor \f$\eta^+\f$. + It must be \>1. Default value is 1.2.*/ + /** @see setRpropDWPlus */ + CV_WRAP virtual double getRpropDWPlus() const = 0; + /** @copybrief getRpropDWPlus @see getRpropDWPlus */ + CV_WRAP virtual void setRpropDWPlus(double val) = 0; + + /** RPROP: Decrease factor \f$\eta^-\f$. + It must be \<1. Default value is 0.5.*/ + /** @see setRpropDWMinus */ + CV_WRAP virtual double getRpropDWMinus() const = 0; + /** @copybrief getRpropDWMinus @see getRpropDWMinus */ + CV_WRAP virtual void setRpropDWMinus(double val) = 0; + + /** RPROP: Update-values lower limit \f$\Delta_{min}\f$. + It must be positive. Default value is FLT_EPSILON.*/ + /** @see setRpropDWMin */ + CV_WRAP virtual double getRpropDWMin() const = 0; + /** @copybrief getRpropDWMin @see getRpropDWMin */ + CV_WRAP virtual void setRpropDWMin(double val) = 0; + + /** RPROP: Update-values upper limit \f$\Delta_{max}\f$. + It must be \>1. Default value is 50.*/ + /** @see setRpropDWMax */ + CV_WRAP virtual double getRpropDWMax() const = 0; + /** @copybrief getRpropDWMax @see getRpropDWMax */ + CV_WRAP virtual void setRpropDWMax(double val) = 0; + + /** ANNEAL: Update initial temperature. + It must be \>=0. Default value is 10.*/ + /** @see setAnnealInitialT */ + CV_WRAP virtual double getAnnealInitialT() const = 0; + /** @copybrief getAnnealInitialT @see getAnnealInitialT */ + CV_WRAP virtual void setAnnealInitialT(double val) = 0; + + /** ANNEAL: Update final temperature. + It must be \>=0 and less than initialT. Default value is 0.1.*/ + /** @see setAnnealFinalT */ + CV_WRAP virtual double getAnnealFinalT() const = 0; + /** @copybrief getAnnealFinalT @see getAnnealFinalT */ + CV_WRAP virtual void setAnnealFinalT(double val) = 0; + + /** ANNEAL: Update cooling ratio. + It must be \>0 and less than 1. Default value is 0.95.*/ + /** @see setAnnealCoolingRatio */ + CV_WRAP virtual double getAnnealCoolingRatio() const = 0; + /** @copybrief getAnnealCoolingRatio @see getAnnealCoolingRatio */ + CV_WRAP virtual void setAnnealCoolingRatio(double val) = 0; + + /** ANNEAL: Update iteration per step. + It must be \>0 . Default value is 10.*/ + /** @see setAnnealItePerStep */ + CV_WRAP virtual int getAnnealItePerStep() const = 0; + /** @copybrief getAnnealItePerStep @see getAnnealItePerStep */ + CV_WRAP virtual void setAnnealItePerStep(int val) = 0; + + /** @brief Set/initialize anneal RNG */ + virtual void setAnnealEnergyRNG(const RNG& rng) = 0; + + /** possible activation functions */ + enum ActivationFunctions { + /** Identity function: \f$f(x)=x\f$ */ + IDENTITY = 0, + /** Symmetrical sigmoid: \f$f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x})\f$ + @note + If you are using the default sigmoid activation function with the default parameter values + fparam1=0 and fparam2=0 then the function used is y = 1.7159\*tanh(2/3 \* x), so the output + will range from [-1.7159, 1.7159], instead of [0,1].*/ + SIGMOID_SYM = 1, + /** Gaussian function: \f$f(x)=\beta e^{-\alpha x*x}\f$ */ + GAUSSIAN = 2, + /** ReLU function: \f$f(x)=max(0,x)\f$ */ + RELU = 3, + /** Leaky ReLU function: for x>0 \f$f(x)=x \f$ and x<=0 \f$f(x)=\alpha x \f$*/ + LEAKYRELU= 4 + }; + + /** Train options */ + enum TrainFlags { + /** Update the network weights, rather than compute them from scratch. In the latter case + the weights are initialized using the Nguyen-Widrow algorithm. */ + UPDATE_WEIGHTS = 1, + /** Do not normalize the input vectors. If this flag is not set, the training algorithm + normalizes each input feature independently, shifting its mean value to 0 and making the + standard deviation equal to 1. If the network is assumed to be updated frequently, the new + training data could be much different from original one. In this case, you should take care + of proper normalization. */ + NO_INPUT_SCALE = 2, + /** Do not normalize the output vectors. If the flag is not set, the training algorithm + normalizes each output feature independently, by transforming it to the certain range + depending on the used activation function. */ + NO_OUTPUT_SCALE = 4 + }; + + CV_WRAP virtual Mat getWeights(int layerIdx) const = 0; + + /** @brief Creates empty model + + Use StatModel::train to train the model, Algorithm::load\(filename) to load the pre-trained model. + Note that the train method has optional flags: ANN_MLP::TrainFlags. + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized ANN from a file + * + * Use ANN::save to serialize and store an ANN to disk. + * Load the ANN from this file again, by calling this function with the path to the file. + * + * @param filepath path to serialized ANN + */ + CV_WRAP static Ptr load(const String& filepath); + +}; + +#ifndef DISABLE_OPENCV_3_COMPATIBILITY +typedef ANN_MLP ANN_MLP_ANNEAL; +#endif + +/****************************************************************************************\ +* Logistic Regression * +\****************************************************************************************/ + +/** @brief Implements Logistic Regression classifier. + +@sa @ref ml_intro_lr + */ +class CV_EXPORTS_W LogisticRegression : public StatModel +{ +public: + + /** Learning rate. */ + /** @see setLearningRate */ + CV_WRAP virtual double getLearningRate() const = 0; + /** @copybrief getLearningRate @see getLearningRate */ + CV_WRAP virtual void setLearningRate(double val) = 0; + + /** Number of iterations. */ + /** @see setIterations */ + CV_WRAP virtual int getIterations() const = 0; + /** @copybrief getIterations @see getIterations */ + CV_WRAP virtual void setIterations(int val) = 0; + + /** Kind of regularization to be applied. See LogisticRegression::RegKinds. */ + /** @see setRegularization */ + CV_WRAP virtual int getRegularization() const = 0; + /** @copybrief getRegularization @see getRegularization */ + CV_WRAP virtual void setRegularization(int val) = 0; + + /** Kind of training method used. See LogisticRegression::Methods. */ + /** @see setTrainMethod */ + CV_WRAP virtual int getTrainMethod() const = 0; + /** @copybrief getTrainMethod @see getTrainMethod */ + CV_WRAP virtual void setTrainMethod(int val) = 0; + + /** Specifies the number of training samples taken in each step of Mini-Batch Gradient + Descent. Will only be used if using LogisticRegression::MINI_BATCH training algorithm. It + has to take values less than the total number of training samples. */ + /** @see setMiniBatchSize */ + CV_WRAP virtual int getMiniBatchSize() const = 0; + /** @copybrief getMiniBatchSize @see getMiniBatchSize */ + CV_WRAP virtual void setMiniBatchSize(int val) = 0; + + /** Termination criteria of the algorithm. */ + /** @see setTermCriteria */ + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(TermCriteria val) = 0; + + //! Regularization kinds + enum RegKinds { + REG_DISABLE = -1, //!< Regularization disabled + REG_L1 = 0, //!< %L1 norm + REG_L2 = 1 //!< %L2 norm + }; + + //! Training methods + enum Methods { + BATCH = 0, + MINI_BATCH = 1 //!< Set MiniBatchSize to a positive integer when using this method. + }; + + /** @brief Predicts responses for input samples and returns a float type. + + @param samples The input data for the prediction algorithm. Matrix [m x n], where each row + contains variables (features) of one object being classified. Should have data type CV_32F. + @param results Predicted labels as a column matrix of type CV_32S. + @param flags Not used. + */ + CV_WRAP virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const CV_OVERRIDE = 0; + + /** @brief This function returns the trained parameters arranged across rows. + + For a two class classifcation problem, it returns a row matrix. It returns learnt parameters of + the Logistic Regression as a matrix of type CV_32F. + */ + CV_WRAP virtual Mat get_learnt_thetas() const = 0; + + /** @brief Creates empty model. + + Creates Logistic Regression model with parameters given. + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized LogisticRegression from a file + * + * Use LogisticRegression::save to serialize and store an LogisticRegression to disk. + * Load the LogisticRegression from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized LogisticRegression + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); +}; + + +/****************************************************************************************\ +* Stochastic Gradient Descent SVM Classifier * +\****************************************************************************************/ + +/*! +@brief Stochastic Gradient Descent SVM classifier + +SVMSGD provides a fast and easy-to-use implementation of the SVM classifier using the Stochastic Gradient Descent approach, +as presented in @cite bottou2010large. + +The classifier has following parameters: +- model type, +- margin type, +- margin regularization (\f$\lambda\f$), +- initial step size (\f$\gamma_0\f$), +- step decreasing power (\f$c\f$), +- and termination criteria. + +The model type may have one of the following values: \ref SGD and \ref ASGD. + +- \ref SGD is the classic version of SVMSGD classifier: every next step is calculated by the formula + \f[w_{t+1} = w_t - \gamma(t) \frac{dQ_i}{dw} |_{w = w_t}\f] + where + - \f$w_t\f$ is the weights vector for decision function at step \f$t\f$, + - \f$\gamma(t)\f$ is the step size of model parameters at the iteration \f$t\f$, it is decreased on each step by the formula + \f$\gamma(t) = \gamma_0 (1 + \lambda \gamma_0 t) ^ {-c}\f$ + - \f$Q_i\f$ is the target functional from SVM task for sample with number \f$i\f$, this sample is chosen stochastically on each step of the algorithm. + +- \ref ASGD is Average Stochastic Gradient Descent SVM Classifier. ASGD classifier averages weights vector on each step of algorithm by the formula +\f$\widehat{w}_{t+1} = \frac{t}{1+t}\widehat{w}_{t} + \frac{1}{1+t}w_{t+1}\f$ + +The recommended model type is ASGD (following @cite bottou2010large). + +The margin type may have one of the following values: \ref SOFT_MARGIN or \ref HARD_MARGIN. + +- You should use \ref HARD_MARGIN type, if you have linearly separable sets. +- You should use \ref SOFT_MARGIN type, if you have non-linearly separable sets or sets with outliers. +- In the general case (if you know nothing about linear separability of your sets), use SOFT_MARGIN. + +The other parameters may be described as follows: +- Margin regularization parameter is responsible for weights decreasing at each step and for the strength of restrictions on outliers + (the less the parameter, the less probability that an outlier will be ignored). + Recommended value for SGD model is 0.0001, for ASGD model is 0.00001. + +- Initial step size parameter is the initial value for the step size \f$\gamma(t)\f$. + You will have to find the best initial step for your problem. + +- Step decreasing power is the power parameter for \f$\gamma(t)\f$ decreasing by the formula, mentioned above. + Recommended value for SGD model is 1, for ASGD model is 0.75. + +- Termination criteria can be TermCriteria::COUNT, TermCriteria::EPS or TermCriteria::COUNT + TermCriteria::EPS. + You will have to find the best termination criteria for your problem. + +Note that the parameters margin regularization, initial step size, and step decreasing power should be positive. + +To use SVMSGD algorithm do as follows: + +- first, create the SVMSGD object. The algoorithm will set optimal parameters by default, but you can set your own parameters via functions setSvmsgdType(), + setMarginType(), setMarginRegularization(), setInitialStepSize(), and setStepDecreasingPower(). + +- then the SVM model can be trained using the train features and the correspondent labels by the method train(). + +- after that, the label of a new feature vector can be predicted using the method predict(). + +@code +// Create empty object +cv::Ptr svmsgd = SVMSGD::create(); + +// Train the Stochastic Gradient Descent SVM +svmsgd->train(trainData); + +// Predict labels for the new samples +svmsgd->predict(samples, responses); +@endcode + +*/ + +class CV_EXPORTS_W SVMSGD : public cv::ml::StatModel +{ +public: + + /** SVMSGD type. + ASGD is often the preferable choice. */ + enum SvmsgdType + { + SGD, //!< Stochastic Gradient Descent + ASGD //!< Average Stochastic Gradient Descent + }; + + /** Margin type.*/ + enum MarginType + { + SOFT_MARGIN, //!< General case, suits to the case of non-linearly separable sets, allows outliers. + HARD_MARGIN //!< More accurate for the case of linearly separable sets. + }; + + /** + * @return the weights of the trained model (decision function f(x) = weights * x + shift). + */ + CV_WRAP virtual Mat getWeights() = 0; + + /** + * @return the shift of the trained model (decision function f(x) = weights * x + shift). + */ + CV_WRAP virtual float getShift() = 0; + + /** @brief Creates empty model. + * Use StatModel::train to train the model. Since %SVMSGD has several parameters, you may want to + * find the best parameters for your problem or use setOptimalParameters() to set some default parameters. + */ + CV_WRAP static Ptr create(); + + /** @brief Loads and creates a serialized SVMSGD from a file + * + * Use SVMSGD::save to serialize and store an SVMSGD to disk. + * Load the SVMSGD from this file again, by calling this function with the path to the file. + * Optionally specify the node for the file containing the classifier + * + * @param filepath path to serialized SVMSGD + * @param nodeName name of node containing the classifier + */ + CV_WRAP static Ptr load(const String& filepath , const String& nodeName = String()); + + /** @brief Function sets optimal parameters values for chosen SVM SGD model. + * @param svmsgdType is the type of SVMSGD classifier. + * @param marginType is the type of margin constraint. + */ + CV_WRAP virtual void setOptimalParameters(int svmsgdType = SVMSGD::ASGD, int marginType = SVMSGD::SOFT_MARGIN) = 0; + + /** @brief %Algorithm type, one of SVMSGD::SvmsgdType. */ + /** @see setSvmsgdType */ + CV_WRAP virtual int getSvmsgdType() const = 0; + /** @copybrief getSvmsgdType @see getSvmsgdType */ + CV_WRAP virtual void setSvmsgdType(int svmsgdType) = 0; + + /** @brief %Margin type, one of SVMSGD::MarginType. */ + /** @see setMarginType */ + CV_WRAP virtual int getMarginType() const = 0; + /** @copybrief getMarginType @see getMarginType */ + CV_WRAP virtual void setMarginType(int marginType) = 0; + + /** @brief Parameter marginRegularization of a %SVMSGD optimization problem. */ + /** @see setMarginRegularization */ + CV_WRAP virtual float getMarginRegularization() const = 0; + /** @copybrief getMarginRegularization @see getMarginRegularization */ + CV_WRAP virtual void setMarginRegularization(float marginRegularization) = 0; + + /** @brief Parameter initialStepSize of a %SVMSGD optimization problem. */ + /** @see setInitialStepSize */ + CV_WRAP virtual float getInitialStepSize() const = 0; + /** @copybrief getInitialStepSize @see getInitialStepSize */ + CV_WRAP virtual void setInitialStepSize(float InitialStepSize) = 0; + + /** @brief Parameter stepDecreasingPower of a %SVMSGD optimization problem. */ + /** @see setStepDecreasingPower */ + CV_WRAP virtual float getStepDecreasingPower() const = 0; + /** @copybrief getStepDecreasingPower @see getStepDecreasingPower */ + CV_WRAP virtual void setStepDecreasingPower(float stepDecreasingPower) = 0; + + /** @brief Termination criteria of the training algorithm. + You can specify the maximum number of iterations (maxCount) and/or how much the error could + change between the iterations to make the algorithm continue (epsilon).*/ + /** @see setTermCriteria */ + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + /** @copybrief getTermCriteria @see getTermCriteria */ + CV_WRAP virtual void setTermCriteria(const cv::TermCriteria &val) = 0; +}; + + +/****************************************************************************************\ +* Auxiliary functions declarations * +\****************************************************************************************/ + +/** @brief Generates _sample_ from multivariate normal distribution + +@param mean an average row vector +@param cov symmetric covariation matrix +@param nsamples returned samples count +@param samples returned samples array +*/ +CV_EXPORTS void randMVNormal( InputArray mean, InputArray cov, int nsamples, OutputArray samples); + +/** @brief Creates test set */ +CV_EXPORTS void createConcentricSpheresTestSet( int nsamples, int nfeatures, int nclasses, + OutputArray samples, OutputArray responses); + + +/****************************************************************************************\ +* Simulated annealing solver * +\****************************************************************************************/ + +#ifdef CV_DOXYGEN +/** @brief This class declares example interface for system state used in simulated annealing optimization algorithm. + +@note This class is not defined in C++ code and can't be use directly - you need your own implementation with the same methods. +*/ +struct SimulatedAnnealingSolverSystem +{ + /** Give energy value for a state of system.*/ + double energy() const; + /** Function which change the state of system (random perturbation).*/ + void changeState(); + /** Function to reverse to the previous state. Can be called once only after changeState(). */ + void reverseState(); +}; +#endif // CV_DOXYGEN + +/** @brief The class implements simulated annealing for optimization. + +@cite Kirkpatrick83 for details + +@param solverSystem optimization system (see SimulatedAnnealingSolverSystem) +@param initialTemperature initial temperature +@param finalTemperature final temperature +@param coolingRatio temperature step multiplies +@param iterationsPerStep number of iterations per temperature changing step +@param lastTemperature optional output for last used temperature +@param rngEnergy specify custom random numbers generator (cv::theRNG() by default) +*/ +template +int simulatedAnnealingSolver(SimulatedAnnealingSolverSystem& solverSystem, + double initialTemperature, double finalTemperature, double coolingRatio, + size_t iterationsPerStep, + CV_OUT double* lastTemperature = NULL, + cv::RNG& rngEnergy = cv::theRNG() +); + +//! @} ml + +} +} + +#include + +#endif // __cplusplus +#endif // OPENCV_ML_HPP + +/* End of file. */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/ml/ml.hpp b/LaiPuLaser/OpenCV/include/opencv2/ml/ml.hpp new file mode 100644 index 0000000..f6f9cd8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/ml/ml.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/ml.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/ml/ml.inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/ml/ml.inl.hpp new file mode 100644 index 0000000..dc9c783 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/ml/ml.inl.hpp @@ -0,0 +1,60 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_ML_INL_HPP +#define OPENCV_ML_INL_HPP + +namespace cv { namespace ml { + +// declared in ml.hpp +template +int simulatedAnnealingSolver(SimulatedAnnealingSolverSystem& solverSystem, + double initialTemperature, double finalTemperature, double coolingRatio, + size_t iterationsPerStep, + CV_OUT double* lastTemperature, + cv::RNG& rngEnergy +) +{ + CV_Assert(finalTemperature > 0); + CV_Assert(initialTemperature > finalTemperature); + CV_Assert(iterationsPerStep > 0); + CV_Assert(coolingRatio < 1.0f); + double Ti = initialTemperature; + double previousEnergy = solverSystem.energy(); + int exchange = 0; + while (Ti > finalTemperature) + { + for (size_t i = 0; i < iterationsPerStep; i++) + { + solverSystem.changeState(); + double newEnergy = solverSystem.energy(); + if (newEnergy < previousEnergy) + { + previousEnergy = newEnergy; + exchange++; + } + else + { + double r = rngEnergy.uniform(0.0, 1.0); + if (r < std::exp(-(newEnergy - previousEnergy) / Ti)) + { + previousEnergy = newEnergy; + exchange++; + } + else + { + solverSystem.reverseState(); + } + } + } + Ti *= coolingRatio; + } + if (lastTemperature) + *lastTemperature = Ti; + return exchange; +} + +}} //namespace + +#endif // OPENCV_ML_INL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/objdetect.hpp b/LaiPuLaser/OpenCV/include/opencv2/objdetect.hpp new file mode 100644 index 0000000..1cbbf84 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/objdetect.hpp @@ -0,0 +1,720 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_OBJDETECT_HPP +#define OPENCV_OBJDETECT_HPP + +#include "opencv2/core.hpp" + +/** +@defgroup objdetect Object Detection + +Haar Feature-based Cascade Classifier for Object Detection +---------------------------------------------------------- + +The object detector described below has been initially proposed by Paul Viola @cite Viola01 and +improved by Rainer Lienhart @cite Lienhart02 . + +First, a classifier (namely a *cascade of boosted classifiers working with haar-like features*) is +trained with a few hundred sample views of a particular object (i.e., a face or a car), called +positive examples, that are scaled to the same size (say, 20x20), and negative examples - arbitrary +images of the same size. + +After a classifier is trained, it can be applied to a region of interest (of the same size as used +during the training) in an input image. The classifier outputs a "1" if the region is likely to show +the object (i.e., face/car), and "0" otherwise. To search for the object in the whole image one can +move the search window across the image and check every location using the classifier. The +classifier is designed so that it can be easily "resized" in order to be able to find the objects of +interest at different sizes, which is more efficient than resizing the image itself. So, to find an +object of an unknown size in the image the scan procedure should be done several times at different +scales. + +The word "cascade" in the classifier name means that the resultant classifier consists of several +simpler classifiers (*stages*) that are applied subsequently to a region of interest until at some +stage the candidate is rejected or all the stages are passed. The word "boosted" means that the +classifiers at every stage of the cascade are complex themselves and they are built out of basic +classifiers using one of four different boosting techniques (weighted voting). Currently Discrete +Adaboost, Real Adaboost, Gentle Adaboost and Logitboost are supported. The basic classifiers are +decision-tree classifiers with at least 2 leaves. Haar-like features are the input to the basic +classifiers, and are calculated as described below. The current algorithm uses the following +Haar-like features: + +![image](pics/haarfeatures.png) + +The feature used in a particular classifier is specified by its shape (1a, 2b etc.), position within +the region of interest and the scale (this scale is not the same as the scale used at the detection +stage, though these two scales are multiplied). For example, in the case of the third line feature +(2c) the response is calculated as the difference between the sum of image pixels under the +rectangle covering the whole feature (including the two white stripes and the black stripe in the +middle) and the sum of the image pixels under the black stripe multiplied by 3 in order to +compensate for the differences in the size of areas. The sums of pixel values over a rectangular +regions are calculated rapidly using integral images (see below and the integral description). + +To see the object detector at work, have a look at the facedetect demo: + + +The following reference is for the detection part only. There is a separate application called +opencv_traincascade that can train a cascade of boosted classifiers from a set of samples. + +@note In the new C++ interface it is also possible to use LBP (local binary pattern) features in +addition to Haar-like features. .. [Viola01] Paul Viola and Michael J. Jones. Rapid Object Detection +using a Boosted Cascade of Simple Features. IEEE CVPR, 2001. The paper is available online at + + +@{ + @defgroup objdetect_c C API +@} + */ + +typedef struct CvHaarClassifierCascade CvHaarClassifierCascade; + +namespace cv +{ + +//! @addtogroup objdetect +//! @{ + +///////////////////////////// Object Detection //////////////////////////// + +//! class for grouping object candidates, detected by Cascade Classifier, HOG etc. +//! instance of the class is to be passed to cv::partition (see cxoperations.hpp) +class CV_EXPORTS SimilarRects +{ +public: + SimilarRects(double _eps) : eps(_eps) {} + inline bool operator()(const Rect& r1, const Rect& r2) const + { + double delta = eps * ((std::min)(r1.width, r2.width) + (std::min)(r1.height, r2.height)) * 0.5; + return std::abs(r1.x - r2.x) <= delta && + std::abs(r1.y - r2.y) <= delta && + std::abs(r1.x + r1.width - r2.x - r2.width) <= delta && + std::abs(r1.y + r1.height - r2.y - r2.height) <= delta; + } + double eps; +}; + +/** @brief Groups the object candidate rectangles. + +@param rectList Input/output vector of rectangles. Output vector includes retained and grouped +rectangles. (The Python list is not modified in place.) +@param groupThreshold Minimum possible number of rectangles minus 1. The threshold is used in a +group of rectangles to retain it. +@param eps Relative difference between sides of the rectangles to merge them into a group. + +The function is a wrapper for the generic function partition . It clusters all the input rectangles +using the rectangle equivalence criteria that combines rectangles with similar sizes and similar +locations. The similarity is defined by eps. When eps=0 , no clustering is done at all. If +\f$\texttt{eps}\rightarrow +\inf\f$ , all the rectangles are put in one cluster. Then, the small +clusters containing less than or equal to groupThreshold rectangles are rejected. In each other +cluster, the average rectangle is computed and put into the output rectangle list. + */ +CV_EXPORTS void groupRectangles(std::vector& rectList, int groupThreshold, double eps = 0.2); +/** @overload */ +CV_EXPORTS_W void groupRectangles(CV_IN_OUT std::vector& rectList, CV_OUT std::vector& weights, + int groupThreshold, double eps = 0.2); +/** @overload */ +CV_EXPORTS void groupRectangles(std::vector& rectList, int groupThreshold, + double eps, std::vector* weights, std::vector* levelWeights ); +/** @overload */ +CV_EXPORTS void groupRectangles(std::vector& rectList, std::vector& rejectLevels, + std::vector& levelWeights, int groupThreshold, double eps = 0.2); +/** @overload */ +CV_EXPORTS void groupRectangles_meanshift(std::vector& rectList, std::vector& foundWeights, + std::vector& foundScales, + double detectThreshold = 0.0, Size winDetSize = Size(64, 128)); + +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvHaarClassifierCascade* obj) const; }; + +enum { CASCADE_DO_CANNY_PRUNING = 1, + CASCADE_SCALE_IMAGE = 2, + CASCADE_FIND_BIGGEST_OBJECT = 4, + CASCADE_DO_ROUGH_SEARCH = 8 + }; + +class CV_EXPORTS_W BaseCascadeClassifier : public Algorithm +{ +public: + virtual ~BaseCascadeClassifier(); + virtual bool empty() const CV_OVERRIDE = 0; + virtual bool load( const String& filename ) = 0; + virtual void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + double scaleFactor, + int minNeighbors, int flags, + Size minSize, Size maxSize ) = 0; + + virtual void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + CV_OUT std::vector& numDetections, + double scaleFactor, + int minNeighbors, int flags, + Size minSize, Size maxSize ) = 0; + + virtual void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + CV_OUT std::vector& rejectLevels, + CV_OUT std::vector& levelWeights, + double scaleFactor, + int minNeighbors, int flags, + Size minSize, Size maxSize, + bool outputRejectLevels ) = 0; + + virtual bool isOldFormatCascade() const = 0; + virtual Size getOriginalWindowSize() const = 0; + virtual int getFeatureType() const = 0; + virtual void* getOldCascade() = 0; + + class CV_EXPORTS MaskGenerator + { + public: + virtual ~MaskGenerator() {} + virtual Mat generateMask(const Mat& src)=0; + virtual void initializeMask(const Mat& /*src*/) { } + }; + virtual void setMaskGenerator(const Ptr& maskGenerator) = 0; + virtual Ptr getMaskGenerator() = 0; +}; + +/** @example samples/cpp/facedetect.cpp +This program demonstrates usage of the Cascade classifier class +\image html Cascade_Classifier_Tutorial_Result_Haar.jpg "Sample screenshot" width=321 height=254 +*/ +/** @brief Cascade classifier class for object detection. + */ +class CV_EXPORTS_W CascadeClassifier +{ +public: + CV_WRAP CascadeClassifier(); + /** @brief Loads a classifier from a file. + + @param filename Name of the file from which the classifier is loaded. + */ + CV_WRAP CascadeClassifier(const String& filename); + ~CascadeClassifier(); + /** @brief Checks whether the classifier has been loaded. + */ + CV_WRAP bool empty() const; + /** @brief Loads a classifier from a file. + + @param filename Name of the file from which the classifier is loaded. The file may contain an old + HAAR classifier trained by the haartraining application or a new cascade classifier trained by the + traincascade application. + */ + CV_WRAP bool load( const String& filename ); + /** @brief Reads a classifier from a FileStorage node. + + @note The file may contain a new cascade classifier (trained traincascade application) only. + */ + CV_WRAP bool read( const FileNode& node ); + + /** @brief Detects objects of different sizes in the input image. The detected objects are returned as a list + of rectangles. + + @param image Matrix of the type CV_8U containing an image where objects are detected. + @param objects Vector of rectangles where each rectangle contains the detected object, the + rectangles may be partially outside the original image. + @param scaleFactor Parameter specifying how much the image size is reduced at each image scale. + @param minNeighbors Parameter specifying how many neighbors each candidate rectangle should have + to retain it. + @param flags Parameter with the same meaning for an old cascade as in the function + cvHaarDetectObjects. It is not used for a new cascade. + @param minSize Minimum possible object size. Objects smaller than that are ignored. + @param maxSize Maximum possible object size. Objects larger than that are ignored. If `maxSize == minSize` model is evaluated on single scale. + + The function is parallelized with the TBB library. + + @note + - (Python) A face detection example using cascade classifiers can be found at + opencv_source_code/samples/python/facedetect.py + */ + CV_WRAP void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + double scaleFactor = 1.1, + int minNeighbors = 3, int flags = 0, + Size minSize = Size(), + Size maxSize = Size() ); + + /** @overload + @param image Matrix of the type CV_8U containing an image where objects are detected. + @param objects Vector of rectangles where each rectangle contains the detected object, the + rectangles may be partially outside the original image. + @param numDetections Vector of detection numbers for the corresponding objects. An object's number + of detections is the number of neighboring positively classified rectangles that were joined + together to form the object. + @param scaleFactor Parameter specifying how much the image size is reduced at each image scale. + @param minNeighbors Parameter specifying how many neighbors each candidate rectangle should have + to retain it. + @param flags Parameter with the same meaning for an old cascade as in the function + cvHaarDetectObjects. It is not used for a new cascade. + @param minSize Minimum possible object size. Objects smaller than that are ignored. + @param maxSize Maximum possible object size. Objects larger than that are ignored. If `maxSize == minSize` model is evaluated on single scale. + */ + CV_WRAP_AS(detectMultiScale2) void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + CV_OUT std::vector& numDetections, + double scaleFactor=1.1, + int minNeighbors=3, int flags=0, + Size minSize=Size(), + Size maxSize=Size() ); + + /** @overload + This function allows you to retrieve the final stage decision certainty of classification. + For this, one needs to set `outputRejectLevels` on true and provide the `rejectLevels` and `levelWeights` parameter. + For each resulting detection, `levelWeights` will then contain the certainty of classification at the final stage. + This value can then be used to separate strong from weaker classifications. + + A code sample on how to use it efficiently can be found below: + @code + Mat img; + vector weights; + vector levels; + vector detections; + CascadeClassifier model("/path/to/your/model.xml"); + model.detectMultiScale(img, detections, levels, weights, 1.1, 3, 0, Size(), Size(), true); + cerr << "Detection " << detections[0] << " with weight " << weights[0] << endl; + @endcode + */ + CV_WRAP_AS(detectMultiScale3) void detectMultiScale( InputArray image, + CV_OUT std::vector& objects, + CV_OUT std::vector& rejectLevels, + CV_OUT std::vector& levelWeights, + double scaleFactor = 1.1, + int minNeighbors = 3, int flags = 0, + Size minSize = Size(), + Size maxSize = Size(), + bool outputRejectLevels = false ); + + CV_WRAP bool isOldFormatCascade() const; + CV_WRAP Size getOriginalWindowSize() const; + CV_WRAP int getFeatureType() const; + void* getOldCascade(); + + CV_WRAP static bool convert(const String& oldcascade, const String& newcascade); + + void setMaskGenerator(const Ptr& maskGenerator); + Ptr getMaskGenerator(); + + Ptr cc; +}; + +CV_EXPORTS Ptr createFaceDetectionMaskGenerator(); + +//////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector ////////////// + +//! struct for detection region of interest (ROI) +struct DetectionROI +{ + //! scale(size) of the bounding box + double scale; + //! set of requested locations to be evaluated + std::vector locations; + //! vector that will contain confidence values for each location + std::vector confidences; +}; + +/**@brief Implementation of HOG (Histogram of Oriented Gradients) descriptor and object detector. + +the HOG descriptor algorithm introduced by Navneet Dalal and Bill Triggs @cite Dalal2005 . + +useful links: + +https://hal.inria.fr/inria-00548512/document/ + +https://en.wikipedia.org/wiki/Histogram_of_oriented_gradients + +https://software.intel.com/en-us/ipp-dev-reference-histogram-of-oriented-gradients-hog-descriptor + +http://www.learnopencv.com/histogram-of-oriented-gradients + +http://www.learnopencv.com/handwritten-digits-classification-an-opencv-c-python-tutorial + + */ +struct CV_EXPORTS_W HOGDescriptor +{ +public: + enum HistogramNormType { L2Hys = 0 //!< Default histogramNormType + }; + enum { DEFAULT_NLEVELS = 64 //!< Default nlevels value. + }; + enum DescriptorStorageFormat { DESCR_FORMAT_COL_BY_COL, DESCR_FORMAT_ROW_BY_ROW }; + + /**@brief Creates the HOG descriptor and detector with default params. + + aqual to HOGDescriptor(Size(64,128), Size(16,16), Size(8,8), Size(8,8), 9 ) + */ + CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8), + cellSize(8,8), nbins(9), derivAperture(1), winSigma(-1), + histogramNormType(HOGDescriptor::L2Hys), L2HysThreshold(0.2), gammaCorrection(true), + free_coef(-1.f), nlevels(HOGDescriptor::DEFAULT_NLEVELS), signedGradient(false) + {} + + /** @overload + @param _winSize sets winSize with given value. + @param _blockSize sets blockSize with given value. + @param _blockStride sets blockStride with given value. + @param _cellSize sets cellSize with given value. + @param _nbins sets nbins with given value. + @param _derivAperture sets derivAperture with given value. + @param _winSigma sets winSigma with given value. + @param _histogramNormType sets histogramNormType with given value. + @param _L2HysThreshold sets L2HysThreshold with given value. + @param _gammaCorrection sets gammaCorrection with given value. + @param _nlevels sets nlevels with given value. + @param _signedGradient sets signedGradient with given value. + */ + CV_WRAP HOGDescriptor(Size _winSize, Size _blockSize, Size _blockStride, + Size _cellSize, int _nbins, int _derivAperture=1, double _winSigma=-1, + HOGDescriptor::HistogramNormType _histogramNormType=HOGDescriptor::L2Hys, + double _L2HysThreshold=0.2, bool _gammaCorrection=false, + int _nlevels=HOGDescriptor::DEFAULT_NLEVELS, bool _signedGradient=false) + : winSize(_winSize), blockSize(_blockSize), blockStride(_blockStride), cellSize(_cellSize), + nbins(_nbins), derivAperture(_derivAperture), winSigma(_winSigma), + histogramNormType(_histogramNormType), L2HysThreshold(_L2HysThreshold), + gammaCorrection(_gammaCorrection), free_coef(-1.f), nlevels(_nlevels), signedGradient(_signedGradient) + {} + + /** @overload + @param filename The file name containing HOGDescriptor properties and coefficients for the linear SVM classifier. + */ + CV_WRAP HOGDescriptor(const String& filename) + { + load(filename); + } + + /** @overload + @param d the HOGDescriptor which cloned to create a new one. + */ + HOGDescriptor(const HOGDescriptor& d) + { + d.copyTo(*this); + } + + /**@brief Default destructor. + */ + virtual ~HOGDescriptor() {} + + /**@brief Returns the number of coefficients required for the classification. + */ + CV_WRAP size_t getDescriptorSize() const; + + /** @brief Checks if detector size equal to descriptor size. + */ + CV_WRAP bool checkDetectorSize() const; + + /** @brief Returns winSigma value + */ + CV_WRAP double getWinSigma() const; + + /**@example samples/cpp/peopledetect.cpp + */ + /**@brief Sets coefficients for the linear SVM classifier. + @param svmdetector coefficients for the linear SVM classifier. + */ + CV_WRAP virtual void setSVMDetector(InputArray svmdetector); + + /** @brief Reads HOGDescriptor parameters from a cv::FileNode. + @param fn File node + */ + virtual bool read(FileNode& fn); + + /** @brief Stores HOGDescriptor parameters in a cv::FileStorage. + @param fs File storage + @param objname Object name + */ + virtual void write(FileStorage& fs, const String& objname) const; + + /** @brief loads HOGDescriptor parameters and coefficients for the linear SVM classifier from a file. + @param filename Path of the file to read. + @param objname The optional name of the node to read (if empty, the first top-level node will be used). + */ + CV_WRAP virtual bool load(const String& filename, const String& objname = String()); + + /** @brief saves HOGDescriptor parameters and coefficients for the linear SVM classifier to a file + @param filename File name + @param objname Object name + */ + CV_WRAP virtual void save(const String& filename, const String& objname = String()) const; + + /** @brief clones the HOGDescriptor + @param c cloned HOGDescriptor + */ + virtual void copyTo(HOGDescriptor& c) const; + + /**@example samples/cpp/train_HOG.cpp + */ + /** @brief Computes HOG descriptors of given image. + @param img Matrix of the type CV_8U containing an image where HOG features will be calculated. + @param descriptors Matrix of the type CV_32F + @param winStride Window stride. It must be a multiple of block stride. + @param padding Padding + @param locations Vector of Point + */ + CV_WRAP virtual void compute(InputArray img, + CV_OUT std::vector& descriptors, + Size winStride = Size(), Size padding = Size(), + const std::vector& locations = std::vector()) const; + + /** @brief Performs object detection without a multi-scale window. + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param foundLocations Vector of point where each point contains left-top corner point of detected object boundaries. + @param weights Vector that will contain confidence values for each detected object. + @param hitThreshold Threshold for the distance between features and SVM classifying plane. + Usually it is 0 and should be specified in the detector coefficients (as the last free coefficient). + But if the free coefficient is omitted (which is allowed), you can specify it manually here. + @param winStride Window stride. It must be a multiple of block stride. + @param padding Padding + @param searchLocations Vector of Point includes set of requested locations to be evaluated. + */ + CV_WRAP virtual void detect(InputArray img, CV_OUT std::vector& foundLocations, + CV_OUT std::vector& weights, + double hitThreshold = 0, Size winStride = Size(), + Size padding = Size(), + const std::vector& searchLocations = std::vector()) const; + + /** @brief Performs object detection without a multi-scale window. + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param foundLocations Vector of point where each point contains left-top corner point of detected object boundaries. + @param hitThreshold Threshold for the distance between features and SVM classifying plane. + Usually it is 0 and should be specified in the detector coefficients (as the last free coefficient). + But if the free coefficient is omitted (which is allowed), you can specify it manually here. + @param winStride Window stride. It must be a multiple of block stride. + @param padding Padding + @param searchLocations Vector of Point includes locations to search. + */ + virtual void detect(InputArray img, CV_OUT std::vector& foundLocations, + double hitThreshold = 0, Size winStride = Size(), + Size padding = Size(), + const std::vector& searchLocations=std::vector()) const; + + /** @brief Detects objects of different sizes in the input image. The detected objects are returned as a list + of rectangles. + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param foundLocations Vector of rectangles where each rectangle contains the detected object. + @param foundWeights Vector that will contain confidence values for each detected object. + @param hitThreshold Threshold for the distance between features and SVM classifying plane. + Usually it is 0 and should be specified in the detector coefficients (as the last free coefficient). + But if the free coefficient is omitted (which is allowed), you can specify it manually here. + @param winStride Window stride. It must be a multiple of block stride. + @param padding Padding + @param scale Coefficient of the detection window increase. + @param finalThreshold Final threshold + @param useMeanshiftGrouping indicates grouping algorithm + */ + CV_WRAP virtual void detectMultiScale(InputArray img, CV_OUT std::vector& foundLocations, + CV_OUT std::vector& foundWeights, double hitThreshold = 0, + Size winStride = Size(), Size padding = Size(), double scale = 1.05, + double finalThreshold = 2.0,bool useMeanshiftGrouping = false) const; + + /** @brief Detects objects of different sizes in the input image. The detected objects are returned as a list + of rectangles. + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param foundLocations Vector of rectangles where each rectangle contains the detected object. + @param hitThreshold Threshold for the distance between features and SVM classifying plane. + Usually it is 0 and should be specified in the detector coefficients (as the last free coefficient). + But if the free coefficient is omitted (which is allowed), you can specify it manually here. + @param winStride Window stride. It must be a multiple of block stride. + @param padding Padding + @param scale Coefficient of the detection window increase. + @param finalThreshold Final threshold + @param useMeanshiftGrouping indicates grouping algorithm + */ + virtual void detectMultiScale(InputArray img, CV_OUT std::vector& foundLocations, + double hitThreshold = 0, Size winStride = Size(), + Size padding = Size(), double scale = 1.05, + double finalThreshold = 2.0, bool useMeanshiftGrouping = false) const; + + /** @brief Computes gradients and quantized gradient orientations. + @param img Matrix contains the image to be computed + @param grad Matrix of type CV_32FC2 contains computed gradients + @param angleOfs Matrix of type CV_8UC2 contains quantized gradient orientations + @param paddingTL Padding from top-left + @param paddingBR Padding from bottom-right + */ + CV_WRAP virtual void computeGradient(InputArray img, InputOutputArray grad, InputOutputArray angleOfs, + Size paddingTL = Size(), Size paddingBR = Size()) const; + + /** @brief Returns coefficients of the classifier trained for people detection (for 64x128 windows). + */ + CV_WRAP static std::vector getDefaultPeopleDetector(); + + /**@example samples/tapi/hog.cpp + */ + /** @brief Returns coefficients of the classifier trained for people detection (for 48x96 windows). + */ + CV_WRAP static std::vector getDaimlerPeopleDetector(); + + //! Detection window size. Align to block size and block stride. Default value is Size(64,128). + CV_PROP Size winSize; + + //! Block size in pixels. Align to cell size. Default value is Size(16,16). + CV_PROP Size blockSize; + + //! Block stride. It must be a multiple of cell size. Default value is Size(8,8). + CV_PROP Size blockStride; + + //! Cell size. Default value is Size(8,8). + CV_PROP Size cellSize; + + //! Number of bins used in the calculation of histogram of gradients. Default value is 9. + CV_PROP int nbins; + + //! not documented + CV_PROP int derivAperture; + + //! Gaussian smoothing window parameter. + CV_PROP double winSigma; + + //! histogramNormType + CV_PROP HOGDescriptor::HistogramNormType histogramNormType; + + //! L2-Hys normalization method shrinkage. + CV_PROP double L2HysThreshold; + + //! Flag to specify whether the gamma correction preprocessing is required or not. + CV_PROP bool gammaCorrection; + + //! coefficients for the linear SVM classifier. + CV_PROP std::vector svmDetector; + + //! coefficients for the linear SVM classifier used when OpenCL is enabled + UMat oclSvmDetector; + + //! not documented + float free_coef; + + //! Maximum number of detection window increases. Default value is 64 + CV_PROP int nlevels; + + //! Indicates signed gradient will be used or not + CV_PROP bool signedGradient; + + /** @brief evaluate specified ROI and return confidence value for each location + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param locations Vector of Point + @param foundLocations Vector of Point where each Point is detected object's top-left point. + @param confidences confidences + @param hitThreshold Threshold for the distance between features and SVM classifying plane. Usually + it is 0 and should be specified in the detector coefficients (as the last free coefficient). But if + the free coefficient is omitted (which is allowed), you can specify it manually here + @param winStride winStride + @param padding padding + */ + virtual void detectROI(InputArray img, const std::vector &locations, + CV_OUT std::vector& foundLocations, CV_OUT std::vector& confidences, + double hitThreshold = 0, cv::Size winStride = Size(), + cv::Size padding = Size()) const; + + /** @brief evaluate specified ROI and return confidence value for each location in multiple scales + @param img Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. + @param foundLocations Vector of rectangles where each rectangle contains the detected object. + @param locations Vector of DetectionROI + @param hitThreshold Threshold for the distance between features and SVM classifying plane. Usually it is 0 and should be specified + in the detector coefficients (as the last free coefficient). But if the free coefficient is omitted (which is allowed), you can specify it manually here. + @param groupThreshold Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. + */ + virtual void detectMultiScaleROI(InputArray img, + CV_OUT std::vector& foundLocations, + std::vector& locations, + double hitThreshold = 0, + int groupThreshold = 0) const; + + /** @brief Groups the object candidate rectangles. + @param rectList Input/output vector of rectangles. Output vector includes retained and grouped rectangles. (The Python list is not modified in place.) + @param weights Input/output vector of weights of rectangles. Output vector includes weights of retained and grouped rectangles. (The Python list is not modified in place.) + @param groupThreshold Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. + @param eps Relative difference between sides of the rectangles to merge them into a group. + */ + void groupRectangles(std::vector& rectList, std::vector& weights, int groupThreshold, double eps) const; +}; + +class CV_EXPORTS_W QRCodeDetector +{ +public: + CV_WRAP QRCodeDetector(); + ~QRCodeDetector(); + + /** @brief sets the epsilon used during the horizontal scan of QR code stop marker detection. + @param epsX Epsilon neighborhood, which allows you to determine the horizontal pattern + of the scheme 1:1:3:1:1 according to QR code standard. + */ + CV_WRAP void setEpsX(double epsX); + /** @brief sets the epsilon used during the vertical scan of QR code stop marker detection. + @param epsY Epsilon neighborhood, which allows you to determine the vertical pattern + of the scheme 1:1:3:1:1 according to QR code standard. + */ + CV_WRAP void setEpsY(double epsY); + + /** @brief Detects QR code in image and returns the quadrangle containing the code. + @param img grayscale or color (BGR) image containing (or not) QR code. + @param points Output vector of vertices of the minimum-area quadrangle containing the code. + */ + CV_WRAP bool detect(InputArray img, OutputArray points) const; + + /** @brief Decodes QR code in image once it's found by the detect() method. + Returns UTF8-encoded output string or empty string if the code cannot be decoded. + + @param img grayscale or color (BGR) image containing QR code. + @param points Quadrangle vertices found by detect() method (or some other algorithm). + @param straight_qrcode The optional output image containing rectified and binarized QR code + */ + CV_WRAP std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode = noArray()); + + /** @brief Both detects and decodes QR code + + @param img grayscale or color (BGR) image containing QR code. + @param points opiotnal output array of vertices of the found QR code quadrangle. Will be empty if not found. + @param straight_qrcode The optional output image containing rectified and binarized QR code + */ + CV_WRAP std::string detectAndDecode(InputArray img, OutputArray points=noArray(), + OutputArray straight_qrcode = noArray()); +protected: + struct Impl; + Ptr p; +}; + +//! @} objdetect +} + +#include "opencv2/objdetect/detection_based_tracker.hpp" + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/objdetect/detection_based_tracker.hpp b/LaiPuLaser/OpenCV/include/opencv2/objdetect/detection_based_tracker.hpp new file mode 100644 index 0000000..18cde13 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/objdetect/detection_based_tracker.hpp @@ -0,0 +1,222 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_OBJDETECT_DBT_HPP +#define OPENCV_OBJDETECT_DBT_HPP + +#include + +#include + +namespace cv +{ + +//! @addtogroup objdetect +//! @{ + +class CV_EXPORTS DetectionBasedTracker +{ + public: + struct CV_EXPORTS Parameters + { + int maxTrackLifetime; + int minDetectionPeriod; //the minimal time between run of the big object detector (on the whole frame) in ms (1000 mean 1 sec), default=0 + + Parameters(); + }; + + class IDetector + { + public: + IDetector(): + minObjSize(96, 96), + maxObjSize(INT_MAX, INT_MAX), + minNeighbours(2), + scaleFactor(1.1f) + {} + + virtual void detect(const cv::Mat& image, std::vector& objects) = 0; + + void setMinObjectSize(const cv::Size& min) + { + minObjSize = min; + } + void setMaxObjectSize(const cv::Size& max) + { + maxObjSize = max; + } + cv::Size getMinObjectSize() const + { + return minObjSize; + } + cv::Size getMaxObjectSize() const + { + return maxObjSize; + } + float getScaleFactor() + { + return scaleFactor; + } + void setScaleFactor(float value) + { + scaleFactor = value; + } + int getMinNeighbours() + { + return minNeighbours; + } + void setMinNeighbours(int value) + { + minNeighbours = value; + } + virtual ~IDetector() {} + + protected: + cv::Size minObjSize; + cv::Size maxObjSize; + int minNeighbours; + float scaleFactor; + }; + + DetectionBasedTracker(cv::Ptr mainDetector, cv::Ptr trackingDetector, const Parameters& params); + virtual ~DetectionBasedTracker(); + + virtual bool run(); + virtual void stop(); + virtual void resetTracking(); + + virtual void process(const cv::Mat& imageGray); + + bool setParameters(const Parameters& params); + const Parameters& getParameters() const; + + + typedef std::pair Object; + virtual void getObjects(std::vector& result) const; + virtual void getObjects(std::vector& result) const; + + enum ObjectStatus + { + DETECTED_NOT_SHOWN_YET, + DETECTED, + DETECTED_TEMPORARY_LOST, + WRONG_OBJECT + }; + struct ExtObject + { + int id; + cv::Rect location; + ObjectStatus status; + ExtObject(int _id, cv::Rect _location, ObjectStatus _status) + :id(_id), location(_location), status(_status) + { + } + }; + virtual void getObjects(std::vector& result) const; + + + virtual int addObject(const cv::Rect& location); //returns id of the new object + + protected: + class SeparateDetectionWork; + cv::Ptr separateDetectionWork; + friend void* workcycleObjectDetectorFunction(void* p); + + struct InnerParameters + { + int numLastPositionsToTrack; + int numStepsToWaitBeforeFirstShow; + int numStepsToTrackWithoutDetectingIfObjectHasNotBeenShown; + int numStepsToShowWithoutDetecting; + + float coeffTrackingWindowSize; + float coeffObjectSizeToTrack; + float coeffObjectSpeedUsingInPrediction; + + InnerParameters(); + }; + Parameters parameters; + InnerParameters innerParameters; + + struct TrackedObject + { + typedef std::vector PositionsVector; + + PositionsVector lastPositions; + + int numDetectedFrames; + int numFramesNotDetected; + int id; + + TrackedObject(const cv::Rect& rect):numDetectedFrames(1), numFramesNotDetected(0) + { + lastPositions.push_back(rect); + id=getNextId(); + }; + + static int getNextId() + { + static int _id=0; + return _id++; + } + }; + + int numTrackedSteps; + std::vector trackedObjects; + + std::vector weightsPositionsSmoothing; + std::vector weightsSizesSmoothing; + + cv::Ptr cascadeForTracking; + + void updateTrackedObjects(const std::vector& detectedObjects); + cv::Rect calcTrackedObjectPositionToShow(int i) const; + cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const; + void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector& detectedObjectsInRegions); +}; + +//! @} objdetect + +} //end of cv namespace + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/objdetect/objdetect.hpp b/LaiPuLaser/OpenCV/include/opencv2/objdetect/objdetect.hpp new file mode 100644 index 0000000..3ee284f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/objdetect/objdetect.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/objdetect.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/opencv.hpp b/LaiPuLaser/OpenCV/include/opencv2/opencv.hpp new file mode 100644 index 0000000..4048158 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/opencv.hpp @@ -0,0 +1,139 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_ALL_HPP +#define OPENCV_ALL_HPP + +// File that defines what modules where included during the build of OpenCV +// These are purely the defines of the correct HAVE_OPENCV_modulename values +#include "opencv2/opencv_modules.hpp" + +// Then the list of defines is checked to include the correct headers +// Core library is always included --> without no OpenCV functionality available +#include "opencv2/core.hpp" + +// Then the optional modules are checked +#ifdef HAVE_OPENCV_CALIB3D +#include "opencv2/calib3d.hpp" +#endif +#ifdef HAVE_OPENCV_FEATURES2D +#include "opencv2/features2d.hpp" +#endif +#ifdef HAVE_OPENCV_DNN +#include "opencv2/dnn.hpp" +#endif +#ifdef HAVE_OPENCV_FLANN +#include "opencv2/flann.hpp" +#endif +#ifdef HAVE_OPENCV_HIGHGUI +#include "opencv2/highgui.hpp" +#endif +#ifdef HAVE_OPENCV_IMGCODECS +#include "opencv2/imgcodecs.hpp" +#endif +#ifdef HAVE_OPENCV_IMGPROC +#include "opencv2/imgproc.hpp" +#endif +#ifdef HAVE_OPENCV_ML +#include "opencv2/ml.hpp" +#endif +#ifdef HAVE_OPENCV_OBJDETECT +#include "opencv2/objdetect.hpp" +#endif +#ifdef HAVE_OPENCV_PHOTO +#include "opencv2/photo.hpp" +#endif +#ifdef HAVE_OPENCV_SHAPE +#include "opencv2/shape.hpp" +#endif +#ifdef HAVE_OPENCV_STITCHING +#include "opencv2/stitching.hpp" +#endif +#ifdef HAVE_OPENCV_SUPERRES +#include "opencv2/superres.hpp" +#endif +#ifdef HAVE_OPENCV_VIDEO +#include "opencv2/video.hpp" +#endif +#ifdef HAVE_OPENCV_VIDEOIO +#include "opencv2/videoio.hpp" +#endif +#ifdef HAVE_OPENCV_VIDEOSTAB +#include "opencv2/videostab.hpp" +#endif +#ifdef HAVE_OPENCV_VIZ +#include "opencv2/viz.hpp" +#endif + +// Finally CUDA specific entries are checked and added +#ifdef HAVE_OPENCV_CUDAARITHM +#include "opencv2/cudaarithm.hpp" +#endif +#ifdef HAVE_OPENCV_CUDABGSEGM +#include "opencv2/cudabgsegm.hpp" +#endif +#ifdef HAVE_OPENCV_CUDACODEC +#include "opencv2/cudacodec.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAFEATURES2D +#include "opencv2/cudafeatures2d.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAFILTERS +#include "opencv2/cudafilters.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAIMGPROC +#include "opencv2/cudaimgproc.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAOBJDETECT +#include "opencv2/cudaobjdetect.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAOPTFLOW +#include "opencv2/cudaoptflow.hpp" +#endif +#ifdef HAVE_OPENCV_CUDASTEREO +#include "opencv2/cudastereo.hpp" +#endif +#ifdef HAVE_OPENCV_CUDAWARPING +#include "opencv2/cudawarping.hpp" +#endif + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/opencv_modules.hpp b/LaiPuLaser/OpenCV/include/opencv2/opencv_modules.hpp new file mode 100644 index 0000000..c9e24d8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/opencv_modules.hpp @@ -0,0 +1,30 @@ +/* + * ** File generated automatically, do not modify ** + * + * This file defines the list of modules available in current build configuration + * + * +*/ + +// This definition means that OpenCV is built with enabled non-free code. +// For example, patented algorithms for non-profit/non-commercial use only. +/* #undef OPENCV_ENABLE_NONFREE */ + +#define HAVE_OPENCV_CALIB3D +#define HAVE_OPENCV_CORE +#define HAVE_OPENCV_DNN +#define HAVE_OPENCV_FEATURES2D +#define HAVE_OPENCV_FLANN +#define HAVE_OPENCV_GAPI +#define HAVE_OPENCV_HIGHGUI +#define HAVE_OPENCV_IMGCODECS +#define HAVE_OPENCV_IMGPROC +#define HAVE_OPENCV_ML +#define HAVE_OPENCV_OBJDETECT +#define HAVE_OPENCV_PHOTO +#define HAVE_OPENCV_STITCHING +#define HAVE_OPENCV_VIDEO +#define HAVE_OPENCV_VIDEOIO +#define HAVE_OPENCV_WORLD + + diff --git a/LaiPuLaser/OpenCV/include/opencv2/photo.hpp b/LaiPuLaser/OpenCV/include/opencv2/photo.hpp new file mode 100644 index 0000000..9ef1c0f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/photo.hpp @@ -0,0 +1,856 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_PHOTO_HPP +#define OPENCV_PHOTO_HPP + +#include "opencv2/core.hpp" +#include "opencv2/imgproc.hpp" + +/** +@defgroup photo Computational Photography + +This module includes photo processing algorithms +@{ + @defgroup photo_inpaint Inpainting + @defgroup photo_denoise Denoising + @defgroup photo_hdr HDR imaging + +This section describes high dynamic range imaging algorithms namely tonemapping, exposure alignment, +camera calibration with multiple exposures and exposure fusion. + + @defgroup photo_decolor Contrast Preserving Decolorization + +Useful links: + +http://www.cse.cuhk.edu.hk/leojia/projects/color2gray/index.html + + @defgroup photo_clone Seamless Cloning + +Useful links: + +https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp + + @defgroup photo_render Non-Photorealistic Rendering + +Useful links: + +http://www.inf.ufrgs.br/~eslgastal/DomainTransform + +https://www.learnopencv.com/non-photorealistic-rendering-using-opencv-python-c/ +@} + */ + +namespace cv +{ + +//! @addtogroup photo +//! @{ + +//! @addtogroup photo_inpaint +//! @{ +//! the inpainting algorithm +enum +{ + INPAINT_NS = 0, //!< Use Navier-Stokes based method + INPAINT_TELEA = 1 //!< Use the algorithm proposed by Alexandru Telea @cite Telea04 +}; + +/** @brief Restores the selected region in an image using the region neighborhood. + +@param src Input 8-bit, 16-bit unsigned or 32-bit float 1-channel or 8-bit 3-channel image. +@param inpaintMask Inpainting mask, 8-bit 1-channel image. Non-zero pixels indicate the area that +needs to be inpainted. +@param dst Output image with the same size and type as src . +@param inpaintRadius Radius of a circular neighborhood of each point inpainted that is considered +by the algorithm. +@param flags Inpainting method that could be cv::INPAINT_NS or cv::INPAINT_TELEA + +The function reconstructs the selected image area from the pixel near the area boundary. The +function may be used to remove dust and scratches from a scanned photo, or to remove undesirable +objects from still images or video. See for more details. + +@note + - An example using the inpainting technique can be found at + opencv_source_code/samples/cpp/inpaint.cpp + - (Python) An example using the inpainting technique can be found at + opencv_source_code/samples/python/inpaint.py + */ +CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask, + OutputArray dst, double inpaintRadius, int flags ); + +//! @} photo_inpaint + +//! @addtogroup photo_denoise +//! @{ + +/** @brief Perform image denoising using Non-local Means Denoising algorithm + with several computational +optimizations. Noise expected to be a gaussian white noise + +@param src Input 8-bit 1-channel, 2-channel, 3-channel or 4-channel image. +@param dst Output image with the same size and type as src . +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Parameter regulating filter strength. Big h value perfectly removes noise but also +removes image details, smaller h value preserves details but also preserves some noise + +This function expected to be applied to grayscale images. For colored images look at +fastNlMeansDenoisingColored. Advanced usage of this functions can be manual denoising of colored +image in different colorspaces. Such approach is used in fastNlMeansDenoisingColored by converting +image to CIELAB colorspace and then separately denoise L and AB components with different h +parameter. + */ +CV_EXPORTS_W void fastNlMeansDenoising( InputArray src, OutputArray dst, float h = 3, + int templateWindowSize = 7, int searchWindowSize = 21); + +/** @brief Perform image denoising using Non-local Means Denoising algorithm + with several computational +optimizations. Noise expected to be a gaussian white noise + +@param src Input 8-bit or 16-bit (only with NORM_L1) 1-channel, +2-channel, 3-channel or 4-channel image. +@param dst Output image with the same size and type as src . +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Array of parameters regulating filter strength, either one +parameter applied to all channels or one per channel in dst. Big h value +perfectly removes noise but also removes image details, smaller h +value preserves details but also preserves some noise +@param normType Type of norm used for weight calculation. Can be either NORM_L2 or NORM_L1 + +This function expected to be applied to grayscale images. For colored images look at +fastNlMeansDenoisingColored. Advanced usage of this functions can be manual denoising of colored +image in different colorspaces. Such approach is used in fastNlMeansDenoisingColored by converting +image to CIELAB colorspace and then separately denoise L and AB components with different h +parameter. + */ +CV_EXPORTS_W void fastNlMeansDenoising( InputArray src, OutputArray dst, + const std::vector& h, + int templateWindowSize = 7, int searchWindowSize = 21, + int normType = NORM_L2); + +/** @brief Modification of fastNlMeansDenoising function for colored images + +@param src Input 8-bit 3-channel image. +@param dst Output image with the same size and type as src . +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Parameter regulating filter strength for luminance component. Bigger h value perfectly +removes noise but also removes image details, smaller h value preserves details but also preserves +some noise +@param hColor The same as h but for color components. For most images value equals 10 +will be enough to remove colored noise and do not distort colors + +The function converts image to CIELAB colorspace and then separately denoise L and AB components +with given h parameters using fastNlMeansDenoising function. + */ +CV_EXPORTS_W void fastNlMeansDenoisingColored( InputArray src, OutputArray dst, + float h = 3, float hColor = 3, + int templateWindowSize = 7, int searchWindowSize = 21); + +/** @brief Modification of fastNlMeansDenoising function for images sequence where consecutive images have been +captured in small period of time. For example video. This version of the function is for grayscale +images or for manual manipulation with colorspaces. For more details see + + +@param srcImgs Input 8-bit 1-channel, 2-channel, 3-channel or +4-channel images sequence. All images should have the same type and +size. +@param imgToDenoiseIndex Target image to denoise index in srcImgs sequence +@param temporalWindowSize Number of surrounding images to use for target image denoising. Should +be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to +imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise +srcImgs[imgToDenoiseIndex] image. +@param dst Output image with the same size and type as srcImgs images. +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Parameter regulating filter strength. Bigger h value +perfectly removes noise but also removes image details, smaller h +value preserves details but also preserves some noise + */ +CV_EXPORTS_W void fastNlMeansDenoisingMulti( InputArrayOfArrays srcImgs, OutputArray dst, + int imgToDenoiseIndex, int temporalWindowSize, + float h = 3, int templateWindowSize = 7, int searchWindowSize = 21); + +/** @brief Modification of fastNlMeansDenoising function for images sequence where consecutive images have been +captured in small period of time. For example video. This version of the function is for grayscale +images or for manual manipulation with colorspaces. For more details see + + +@param srcImgs Input 8-bit or 16-bit (only with NORM_L1) 1-channel, +2-channel, 3-channel or 4-channel images sequence. All images should +have the same type and size. +@param imgToDenoiseIndex Target image to denoise index in srcImgs sequence +@param temporalWindowSize Number of surrounding images to use for target image denoising. Should +be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to +imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise +srcImgs[imgToDenoiseIndex] image. +@param dst Output image with the same size and type as srcImgs images. +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Array of parameters regulating filter strength, either one +parameter applied to all channels or one per channel in dst. Big h value +perfectly removes noise but also removes image details, smaller h +value preserves details but also preserves some noise +@param normType Type of norm used for weight calculation. Can be either NORM_L2 or NORM_L1 + */ +CV_EXPORTS_W void fastNlMeansDenoisingMulti( InputArrayOfArrays srcImgs, OutputArray dst, + int imgToDenoiseIndex, int temporalWindowSize, + const std::vector& h, + int templateWindowSize = 7, int searchWindowSize = 21, + int normType = NORM_L2); + +/** @brief Modification of fastNlMeansDenoisingMulti function for colored images sequences + +@param srcImgs Input 8-bit 3-channel images sequence. All images should have the same type and +size. +@param imgToDenoiseIndex Target image to denoise index in srcImgs sequence +@param temporalWindowSize Number of surrounding images to use for target image denoising. Should +be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to +imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise +srcImgs[imgToDenoiseIndex] image. +@param dst Output image with the same size and type as srcImgs images. +@param templateWindowSize Size in pixels of the template patch that is used to compute weights. +Should be odd. Recommended value 7 pixels +@param searchWindowSize Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater +denoising time. Recommended value 21 pixels +@param h Parameter regulating filter strength for luminance component. Bigger h value perfectly +removes noise but also removes image details, smaller h value preserves details but also preserves +some noise. +@param hColor The same as h but for color components. + +The function converts images to CIELAB colorspace and then separately denoise L and AB components +with given h parameters using fastNlMeansDenoisingMulti function. + */ +CV_EXPORTS_W void fastNlMeansDenoisingColoredMulti( InputArrayOfArrays srcImgs, OutputArray dst, + int imgToDenoiseIndex, int temporalWindowSize, + float h = 3, float hColor = 3, + int templateWindowSize = 7, int searchWindowSize = 21); + +/** @brief Primal-dual algorithm is an algorithm for solving special types of variational problems (that is, +finding a function to minimize some functional). As the image denoising, in particular, may be seen +as the variational problem, primal-dual algorithm then can be used to perform denoising and this is +exactly what is implemented. + +It should be noted, that this implementation was taken from the July 2013 blog entry +@cite MA13 , which also contained (slightly more general) ready-to-use source code on Python. +Subsequently, that code was rewritten on C++ with the usage of openCV by Vadim Pisarevsky at the end +of July 2013 and finally it was slightly adapted by later authors. + +Although the thorough discussion and justification of the algorithm involved may be found in +@cite ChambolleEtAl, it might make sense to skim over it here, following @cite MA13 . To begin +with, we consider the 1-byte gray-level images as the functions from the rectangular domain of +pixels (it may be seen as set +\f$\left\{(x,y)\in\mathbb{N}\times\mathbb{N}\mid 1\leq x\leq n,\;1\leq y\leq m\right\}\f$ for some +\f$m,\;n\in\mathbb{N}\f$) into \f$\{0,1,\dots,255\}\f$. We shall denote the noised images as \f$f_i\f$ and with +this view, given some image \f$x\f$ of the same size, we may measure how bad it is by the formula + +\f[\left\|\left\|\nabla x\right\|\right\| + \lambda\sum_i\left\|\left\|x-f_i\right\|\right\|\f] + +\f$\|\|\cdot\|\|\f$ here denotes \f$L_2\f$-norm and as you see, the first addend states that we want our +image to be smooth (ideally, having zero gradient, thus being constant) and the second states that +we want our result to be close to the observations we've got. If we treat \f$x\f$ as a function, this is +exactly the functional what we seek to minimize and here the Primal-Dual algorithm comes into play. + +@param observations This array should contain one or more noised versions of the image that is to +be restored. +@param result Here the denoised image will be stored. There is no need to do pre-allocation of +storage space, as it will be automatically allocated, if necessary. +@param lambda Corresponds to \f$\lambda\f$ in the formulas above. As it is enlarged, the smooth +(blurred) images are treated more favorably than detailed (but maybe more noised) ones. Roughly +speaking, as it becomes smaller, the result will be more blur but more sever outliers will be +removed. +@param niters Number of iterations that the algorithm will run. Of course, as more iterations as +better, but it is hard to quantitatively refine this statement, so just use the default and +increase it if the results are poor. + */ +CV_EXPORTS_W void denoise_TVL1(const std::vector& observations,Mat& result, double lambda=1.0, int niters=30); + +//! @} photo_denoise + +//! @addtogroup photo_hdr +//! @{ + +enum { LDR_SIZE = 256 }; + +/** @brief Base class for tonemapping algorithms - tools that are used to map HDR image to 8-bit range. + */ +class CV_EXPORTS_W Tonemap : public Algorithm +{ +public: + /** @brief Tonemaps image + + @param src source image - CV_32FC3 Mat (float 32 bits 3 channels) + @param dst destination image - CV_32FC3 Mat with values in [0, 1] range + */ + CV_WRAP virtual void process(InputArray src, OutputArray dst) = 0; + + CV_WRAP virtual float getGamma() const = 0; + CV_WRAP virtual void setGamma(float gamma) = 0; +}; + +/** @brief Creates simple linear mapper with gamma correction + +@param gamma positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma +equal to 2.2f is suitable for most displays. +Generally gamma \> 1 brightens the image and gamma \< 1 darkens it. + */ +CV_EXPORTS_W Ptr createTonemap(float gamma = 1.0f); + +/** @brief Adaptive logarithmic mapping is a fast global tonemapping algorithm that scales the image in +logarithmic domain. + +Since it's a global operator the same function is applied to all the pixels, it is controlled by the +bias parameter. + +Optional saturation enhancement is possible as described in @cite FL02 . + +For more information see @cite DM03 . + */ +class CV_EXPORTS_W TonemapDrago : public Tonemap +{ +public: + + CV_WRAP virtual float getSaturation() const = 0; + CV_WRAP virtual void setSaturation(float saturation) = 0; + + CV_WRAP virtual float getBias() const = 0; + CV_WRAP virtual void setBias(float bias) = 0; +}; + +/** @brief Creates TonemapDrago object + +@param gamma gamma value for gamma correction. See createTonemap +@param saturation positive saturation enhancement value. 1.0 preserves saturation, values greater +than 1 increase saturation and values less than 1 decrease it. +@param bias value for bias function in [0, 1] range. Values from 0.7 to 0.9 usually give best +results, default value is 0.85. + */ +CV_EXPORTS_W Ptr createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f, float bias = 0.85f); + + +/** @brief This is a global tonemapping operator that models human visual system. + +Mapping function is controlled by adaptation parameter, that is computed using light adaptation and +color adaptation. + +For more information see @cite RD05 . + */ +class CV_EXPORTS_W TonemapReinhard : public Tonemap +{ +public: + CV_WRAP virtual float getIntensity() const = 0; + CV_WRAP virtual void setIntensity(float intensity) = 0; + + CV_WRAP virtual float getLightAdaptation() const = 0; + CV_WRAP virtual void setLightAdaptation(float light_adapt) = 0; + + CV_WRAP virtual float getColorAdaptation() const = 0; + CV_WRAP virtual void setColorAdaptation(float color_adapt) = 0; +}; + +/** @brief Creates TonemapReinhard object + +@param gamma gamma value for gamma correction. See createTonemap +@param intensity result intensity in [-8, 8] range. Greater intensity produces brighter results. +@param light_adapt light adaptation in [0, 1] range. If 1 adaptation is based only on pixel +value, if 0 it's global, otherwise it's a weighted mean of this two cases. +@param color_adapt chromatic adaptation in [0, 1] range. If 1 channels are treated independently, +if 0 adaptation level is the same for each channel. + */ +CV_EXPORTS_W Ptr +createTonemapReinhard(float gamma = 1.0f, float intensity = 0.0f, float light_adapt = 1.0f, float color_adapt = 0.0f); + +/** @brief This algorithm transforms image to contrast using gradients on all levels of gaussian pyramid, +transforms contrast values to HVS response and scales the response. After this the image is +reconstructed from new contrast values. + +For more information see @cite MM06 . + */ +class CV_EXPORTS_W TonemapMantiuk : public Tonemap +{ +public: + CV_WRAP virtual float getScale() const = 0; + CV_WRAP virtual void setScale(float scale) = 0; + + CV_WRAP virtual float getSaturation() const = 0; + CV_WRAP virtual void setSaturation(float saturation) = 0; +}; + +/** @brief Creates TonemapMantiuk object + +@param gamma gamma value for gamma correction. See createTonemap +@param scale contrast scale factor. HVS response is multiplied by this parameter, thus compressing +dynamic range. Values from 0.6 to 0.9 produce best results. +@param saturation saturation enhancement value. See createTonemapDrago + */ +CV_EXPORTS_W Ptr +createTonemapMantiuk(float gamma = 1.0f, float scale = 0.7f, float saturation = 1.0f); + +/** @brief The base class for algorithms that align images of the same scene with different exposures + */ +class CV_EXPORTS_W AlignExposures : public Algorithm +{ +public: + /** @brief Aligns images + + @param src vector of input images + @param dst vector of aligned images + @param times vector of exposure time values for each image + @param response 256x1 matrix with inverse camera response function for each pixel value, it should + have the same number of channels as images. + */ + CV_WRAP virtual void process(InputArrayOfArrays src, std::vector& dst, + InputArray times, InputArray response) = 0; +}; + +/** @brief This algorithm converts images to median threshold bitmaps (1 for pixels brighter than median +luminance and 0 otherwise) and than aligns the resulting bitmaps using bit operations. + +It is invariant to exposure, so exposure values and camera response are not necessary. + +In this implementation new image regions are filled with zeros. + +For more information see @cite GW03 . + */ +class CV_EXPORTS_W AlignMTB : public AlignExposures +{ +public: + CV_WRAP virtual void process(InputArrayOfArrays src, std::vector& dst, + InputArray times, InputArray response) CV_OVERRIDE = 0; + + /** @brief Short version of process, that doesn't take extra arguments. + + @param src vector of input images + @param dst vector of aligned images + */ + CV_WRAP virtual void process(InputArrayOfArrays src, std::vector& dst) = 0; + + /** @brief Calculates shift between two images, i. e. how to shift the second image to correspond it with the + first. + + @param img0 first image + @param img1 second image + */ + CV_WRAP virtual Point calculateShift(InputArray img0, InputArray img1) = 0; + /** @brief Helper function, that shift Mat filling new regions with zeros. + + @param src input image + @param dst result image + @param shift shift value + */ + CV_WRAP virtual void shiftMat(InputArray src, OutputArray dst, const Point shift) = 0; + /** @brief Computes median threshold and exclude bitmaps of given image. + + @param img input image + @param tb median threshold bitmap + @param eb exclude bitmap + */ + CV_WRAP virtual void computeBitmaps(InputArray img, OutputArray tb, OutputArray eb) = 0; + + CV_WRAP virtual int getMaxBits() const = 0; + CV_WRAP virtual void setMaxBits(int max_bits) = 0; + + CV_WRAP virtual int getExcludeRange() const = 0; + CV_WRAP virtual void setExcludeRange(int exclude_range) = 0; + + CV_WRAP virtual bool getCut() const = 0; + CV_WRAP virtual void setCut(bool value) = 0; +}; + +/** @brief Creates AlignMTB object + +@param max_bits logarithm to the base 2 of maximal shift in each dimension. Values of 5 and 6 are +usually good enough (31 and 63 pixels shift respectively). +@param exclude_range range for exclusion bitmap that is constructed to suppress noise around the +median value. +@param cut if true cuts images, otherwise fills the new regions with zeros. + */ +CV_EXPORTS_W Ptr createAlignMTB(int max_bits = 6, int exclude_range = 4, bool cut = true); + +/** @brief The base class for camera response calibration algorithms. + */ +class CV_EXPORTS_W CalibrateCRF : public Algorithm +{ +public: + /** @brief Recovers inverse camera response. + + @param src vector of input images + @param dst 256x1 matrix with inverse camera response function + @param times vector of exposure time values for each image + */ + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; +}; + +/** @brief Inverse camera response function is extracted for each brightness value by minimizing an objective +function as linear system. Objective function is constructed using pixel values on the same position +in all images, extra term is added to make the result smoother. + +For more information see @cite DM97 . + */ +class CV_EXPORTS_W CalibrateDebevec : public CalibrateCRF +{ +public: + CV_WRAP virtual float getLambda() const = 0; + CV_WRAP virtual void setLambda(float lambda) = 0; + + CV_WRAP virtual int getSamples() const = 0; + CV_WRAP virtual void setSamples(int samples) = 0; + + CV_WRAP virtual bool getRandom() const = 0; + CV_WRAP virtual void setRandom(bool random) = 0; +}; + +/** @brief Creates CalibrateDebevec object + +@param samples number of pixel locations to use +@param lambda smoothness term weight. Greater values produce smoother results, but can alter the +response. +@param random if true sample pixel locations are chosen at random, otherwise they form a +rectangular grid. + */ +CV_EXPORTS_W Ptr createCalibrateDebevec(int samples = 70, float lambda = 10.0f, bool random = false); + +/** @brief Inverse camera response function is extracted for each brightness value by minimizing an objective +function as linear system. This algorithm uses all image pixels. + +For more information see @cite RB99 . + */ +class CV_EXPORTS_W CalibrateRobertson : public CalibrateCRF +{ +public: + CV_WRAP virtual int getMaxIter() const = 0; + CV_WRAP virtual void setMaxIter(int max_iter) = 0; + + CV_WRAP virtual float getThreshold() const = 0; + CV_WRAP virtual void setThreshold(float threshold) = 0; + + CV_WRAP virtual Mat getRadiance() const = 0; +}; + +/** @brief Creates CalibrateRobertson object + +@param max_iter maximal number of Gauss-Seidel solver iterations. +@param threshold target difference between results of two successive steps of the minimization. + */ +CV_EXPORTS_W Ptr createCalibrateRobertson(int max_iter = 30, float threshold = 0.01f); + +/** @brief The base class algorithms that can merge exposure sequence to a single image. + */ +class CV_EXPORTS_W MergeExposures : public Algorithm +{ +public: + /** @brief Merges images. + + @param src vector of input images + @param dst result image + @param times vector of exposure time values for each image + @param response 256x1 matrix with inverse camera response function for each pixel value, it should + have the same number of channels as images. + */ + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, + InputArray times, InputArray response) = 0; +}; + +/** @brief The resulting HDR image is calculated as weighted average of the exposures considering exposure +values and camera response. + +For more information see @cite DM97 . + */ +class CV_EXPORTS_W MergeDebevec : public MergeExposures +{ +public: + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, + InputArray times, InputArray response) CV_OVERRIDE = 0; + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; +}; + +/** @brief Creates MergeDebevec object + */ +CV_EXPORTS_W Ptr createMergeDebevec(); + +/** @brief Pixels are weighted using contrast, saturation and well-exposedness measures, than images are +combined using laplacian pyramids. + +The resulting image weight is constructed as weighted average of contrast, saturation and +well-exposedness measures. + +The resulting image doesn't require tonemapping and can be converted to 8-bit image by multiplying +by 255, but it's recommended to apply gamma correction and/or linear tonemapping. + +For more information see @cite MK07 . + */ +class CV_EXPORTS_W MergeMertens : public MergeExposures +{ +public: + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, + InputArray times, InputArray response) CV_OVERRIDE = 0; + /** @brief Short version of process, that doesn't take extra arguments. + + @param src vector of input images + @param dst result image + */ + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst) = 0; + + CV_WRAP virtual float getContrastWeight() const = 0; + CV_WRAP virtual void setContrastWeight(float contrast_weiht) = 0; + + CV_WRAP virtual float getSaturationWeight() const = 0; + CV_WRAP virtual void setSaturationWeight(float saturation_weight) = 0; + + CV_WRAP virtual float getExposureWeight() const = 0; + CV_WRAP virtual void setExposureWeight(float exposure_weight) = 0; +}; + +/** @brief Creates MergeMertens object + +@param contrast_weight contrast measure weight. See MergeMertens. +@param saturation_weight saturation measure weight +@param exposure_weight well-exposedness measure weight + */ +CV_EXPORTS_W Ptr +createMergeMertens(float contrast_weight = 1.0f, float saturation_weight = 1.0f, float exposure_weight = 0.0f); + +/** @brief The resulting HDR image is calculated as weighted average of the exposures considering exposure +values and camera response. + +For more information see @cite RB99 . + */ +class CV_EXPORTS_W MergeRobertson : public MergeExposures +{ +public: + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, + InputArray times, InputArray response) CV_OVERRIDE = 0; + CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0; +}; + +/** @brief Creates MergeRobertson object + */ +CV_EXPORTS_W Ptr createMergeRobertson(); + +//! @} photo_hdr + +//! @addtogroup photo_decolor +//! @{ + +/** @brief Transforms a color image to a grayscale image. It is a basic tool in digital printing, stylized +black-and-white photograph rendering, and in many single channel image processing applications +@cite CL12 . + +@param src Input 8-bit 3-channel image. +@param grayscale Output 8-bit 1-channel image. +@param color_boost Output 8-bit 3-channel image. + +This function is to be applied on color images. + */ +CV_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray color_boost); + +//! @} photo_decolor + +//! @addtogroup photo_clone +//! @{ + + +//! seamlessClone algorithm flags +enum +{ + /** The power of the method is fully expressed when inserting objects with complex outlines into a new background*/ + NORMAL_CLONE = 1, + /** The classic method, color-based selection and alpha masking might be time consuming and often leaves an undesirable + halo. Seamless cloning, even averaged with the original image, is not effective. Mixed seamless cloning based on a loose selection proves effective.*/ + MIXED_CLONE = 2, + /** Monochrome transfer allows the user to easily replace certain features of one object by alternative features.*/ + MONOCHROME_TRANSFER = 3}; + + +/** @example samples/cpp/tutorial_code/photo/seamless_cloning/cloning_demo.cpp +An example using seamlessClone function +*/ +/** @brief Image editing tasks concern either global changes (color/intensity corrections, filters, +deformations) or local changes concerned to a selection. Here we are interested in achieving local +changes, ones that are restricted to a region manually selected (ROI), in a seamless and effortless +manner. The extent of the changes ranges from slight distortions to complete replacement by novel +content @cite PM03 . + +@param src Input 8-bit 3-channel image. +@param dst Input 8-bit 3-channel image. +@param mask Input 8-bit 1 or 3-channel image. +@param p Point in dst image where object is placed. +@param blend Output image with the same size and type as dst. +@param flags Cloning method that could be cv::NORMAL_CLONE, cv::MIXED_CLONE or cv::MONOCHROME_TRANSFER + */ +CV_EXPORTS_W void seamlessClone( InputArray src, InputArray dst, InputArray mask, Point p, + OutputArray blend, int flags); + +/** @brief Given an original color image, two differently colored versions of this image can be mixed +seamlessly. + +@param src Input 8-bit 3-channel image. +@param mask Input 8-bit 1 or 3-channel image. +@param dst Output image with the same size and type as src . +@param red_mul R-channel multiply factor. +@param green_mul G-channel multiply factor. +@param blue_mul B-channel multiply factor. + +Multiplication factor is between .5 to 2.5. + */ +CV_EXPORTS_W void colorChange(InputArray src, InputArray mask, OutputArray dst, float red_mul = 1.0f, + float green_mul = 1.0f, float blue_mul = 1.0f); + +/** @brief Applying an appropriate non-linear transformation to the gradient field inside the selection and +then integrating back with a Poisson solver, modifies locally the apparent illumination of an image. + +@param src Input 8-bit 3-channel image. +@param mask Input 8-bit 1 or 3-channel image. +@param dst Output image with the same size and type as src. +@param alpha Value ranges between 0-2. +@param beta Value ranges between 0-2. + +This is useful to highlight under-exposed foreground objects or to reduce specular reflections. + */ +CV_EXPORTS_W void illuminationChange(InputArray src, InputArray mask, OutputArray dst, + float alpha = 0.2f, float beta = 0.4f); + +/** @brief By retaining only the gradients at edge locations, before integrating with the Poisson solver, one +washes out the texture of the selected region, giving its contents a flat aspect. Here Canny Edge %Detector is used. + +@param src Input 8-bit 3-channel image. +@param mask Input 8-bit 1 or 3-channel image. +@param dst Output image with the same size and type as src. +@param low_threshold %Range from 0 to 100. +@param high_threshold Value \> 100. +@param kernel_size The size of the Sobel kernel to be used. + +@note +The algorithm assumes that the color of the source image is close to that of the destination. This +assumption means that when the colors don't match, the source image color gets tinted toward the +color of the destination image. + */ +CV_EXPORTS_W void textureFlattening(InputArray src, InputArray mask, OutputArray dst, + float low_threshold = 30, float high_threshold = 45, + int kernel_size = 3); + +//! @} photo_clone + +//! @addtogroup photo_render +//! @{ + +//! Edge preserving filters +enum +{ + RECURS_FILTER = 1, //!< Recursive Filtering + NORMCONV_FILTER = 2 //!< Normalized Convolution Filtering +}; + +/** @brief Filtering is the fundamental operation in image and video processing. Edge-preserving smoothing +filters are used in many different applications @cite EM11 . + +@param src Input 8-bit 3-channel image. +@param dst Output 8-bit 3-channel image. +@param flags Edge preserving filters: cv::RECURS_FILTER or cv::NORMCONV_FILTER +@param sigma_s %Range between 0 to 200. +@param sigma_r %Range between 0 to 1. + */ +CV_EXPORTS_W void edgePreservingFilter(InputArray src, OutputArray dst, int flags = 1, + float sigma_s = 60, float sigma_r = 0.4f); + +/** @brief This filter enhances the details of a particular image. + +@param src Input 8-bit 3-channel image. +@param dst Output image with the same size and type as src. +@param sigma_s %Range between 0 to 200. +@param sigma_r %Range between 0 to 1. + */ +CV_EXPORTS_W void detailEnhance(InputArray src, OutputArray dst, float sigma_s = 10, + float sigma_r = 0.15f); + +/** @example samples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cpp +An example using non-photorealistic line drawing functions +*/ +/** @brief Pencil-like non-photorealistic line drawing + +@param src Input 8-bit 3-channel image. +@param dst1 Output 8-bit 1-channel image. +@param dst2 Output image with the same size and type as src. +@param sigma_s %Range between 0 to 200. +@param sigma_r %Range between 0 to 1. +@param shade_factor %Range between 0 to 0.1. + */ +CV_EXPORTS_W void pencilSketch(InputArray src, OutputArray dst1, OutputArray dst2, + float sigma_s = 60, float sigma_r = 0.07f, float shade_factor = 0.02f); + +/** @brief Stylization aims to produce digital imagery with a wide variety of effects not focused on +photorealism. Edge-aware filters are ideal for stylization, as they can abstract regions of low +contrast while preserving, or enhancing, high-contrast features. + +@param src Input 8-bit 3-channel image. +@param dst Output image with the same size and type as src. +@param sigma_s %Range between 0 to 200. +@param sigma_r %Range between 0 to 1. + */ +CV_EXPORTS_W void stylization(InputArray src, OutputArray dst, float sigma_s = 60, + float sigma_r = 0.45f); + +//! @} photo_render + +//! @} photo + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/photo/cuda.hpp b/LaiPuLaser/OpenCV/include/opencv2/photo/cuda.hpp new file mode 100644 index 0000000..a2f3816 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/photo/cuda.hpp @@ -0,0 +1,132 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_PHOTO_CUDA_HPP +#define OPENCV_PHOTO_CUDA_HPP + +#include "opencv2/core/cuda.hpp" + +namespace cv { namespace cuda { + +//! @addtogroup photo_denoise +//! @{ + +/** @brief Performs pure non local means denoising without any simplification, and thus it is not fast. + +@param src Source image. Supports only CV_8UC1, CV_8UC2 and CV_8UC3. +@param dst Destination image. +@param h Filter sigma regulating filter strength for color. +@param search_window Size of search window. +@param block_size Size of block used for computing weights. +@param borderMode Border type. See borderInterpolate for details. BORDER_REFLECT101 , +BORDER_REPLICATE , BORDER_CONSTANT , BORDER_REFLECT and BORDER_WRAP are supported for now. +@param stream Stream for the asynchronous version. + +@sa + fastNlMeansDenoising + */ +CV_EXPORTS void nonLocalMeans(InputArray src, OutputArray dst, + float h, + int search_window = 21, + int block_size = 7, + int borderMode = BORDER_DEFAULT, + Stream& stream = Stream::Null()); + +/** @brief Perform image denoising using Non-local Means Denoising algorithm + with several computational +optimizations. Noise expected to be a gaussian white noise + +@param src Input 8-bit 1-channel, 2-channel or 3-channel image. +@param dst Output image with the same size and type as src . +@param h Parameter regulating filter strength. Big h value perfectly removes noise but also +removes image details, smaller h value preserves details but also preserves some noise +@param search_window Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater search_window - greater +denoising time. Recommended value 21 pixels +@param block_size Size in pixels of the template patch that is used to compute weights. Should be +odd. Recommended value 7 pixels +@param stream Stream for the asynchronous invocations. + +This function expected to be applied to grayscale images. For colored images look at +FastNonLocalMeansDenoising::labMethod. + +@sa + fastNlMeansDenoising + */ +CV_EXPORTS void fastNlMeansDenoising(InputArray src, OutputArray dst, + float h, + int search_window = 21, + int block_size = 7, + Stream& stream = Stream::Null()); + +/** @brief Modification of fastNlMeansDenoising function for colored images + +@param src Input 8-bit 3-channel image. +@param dst Output image with the same size and type as src . +@param h_luminance Parameter regulating filter strength. Big h value perfectly removes noise but +also removes image details, smaller h value preserves details but also preserves some noise +@param photo_render float The same as h but for color components. For most images value equals 10 will be +enough to remove colored noise and do not distort colors +@param search_window Size in pixels of the window that is used to compute weighted average for +given pixel. Should be odd. Affect performance linearly: greater search_window - greater +denoising time. Recommended value 21 pixels +@param block_size Size in pixels of the template patch that is used to compute weights. Should be +odd. Recommended value 7 pixels +@param stream Stream for the asynchronous invocations. + +The function converts image to CIELAB colorspace and then separately denoise L and AB components +with given h parameters using FastNonLocalMeansDenoising::simpleMethod function. + +@sa + fastNlMeansDenoisingColored + */ +CV_EXPORTS void fastNlMeansDenoisingColored(InputArray src, OutputArray dst, + float h_luminance, float photo_render, + int search_window = 21, + int block_size = 7, + Stream& stream = Stream::Null()); + +//! @} photo + +}} // namespace cv { namespace cuda { + +#endif /* OPENCV_PHOTO_CUDA_HPP */ diff --git a/LaiPuLaser/OpenCV/include/opencv2/photo/legacy/constants_c.h b/LaiPuLaser/OpenCV/include/opencv2/photo/legacy/constants_c.h new file mode 100644 index 0000000..ec1d440 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/photo/legacy/constants_c.h @@ -0,0 +1,14 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_PHOTO_LEGACY_CONSTANTS_H +#define OPENCV_PHOTO_LEGACY_CONSTANTS_H + +enum InpaintingModes +{ + CV_INPAINT_NS =0, + CV_INPAINT_TELEA =1 +}; + +#endif // OPENCV_PHOTO_LEGACY_CONSTANTS_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/photo/photo.hpp b/LaiPuLaser/OpenCV/include/opencv2/photo/photo.hpp new file mode 100644 index 0000000..8af5e9f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/photo/photo.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/photo.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching.hpp new file mode 100644 index 0000000..016e7d8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching.hpp @@ -0,0 +1,343 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_STITCHER_HPP +#define OPENCV_STITCHING_STITCHER_HPP + +#include "opencv2/core.hpp" +#include "opencv2/features2d.hpp" +#include "opencv2/stitching/warpers.hpp" +#include "opencv2/stitching/detail/matchers.hpp" +#include "opencv2/stitching/detail/motion_estimators.hpp" +#include "opencv2/stitching/detail/exposure_compensate.hpp" +#include "opencv2/stitching/detail/seam_finders.hpp" +#include "opencv2/stitching/detail/blenders.hpp" +#include "opencv2/stitching/detail/camera.hpp" + + +#if defined(Status) +# warning Detected X11 'Status' macro definition, it can cause build conflicts. Please, include this header before any X11 headers. +#endif + + +/** +@defgroup stitching Images stitching + +This figure illustrates the stitching module pipeline implemented in the Stitcher class. Using that +class it's possible to configure/remove some steps, i.e. adjust the stitching pipeline according to +the particular needs. All building blocks from the pipeline are available in the detail namespace, +one can combine and use them separately. + +The implemented stitching pipeline is very similar to the one proposed in @cite BL07 . + +![stitching pipeline](StitchingPipeline.jpg) + +Camera models +------------- + +There are currently 2 camera models implemented in stitching pipeline. + +- _Homography model_ expecting perspective transformations between images + implemented in @ref cv::detail::BestOf2NearestMatcher cv::detail::HomographyBasedEstimator + cv::detail::BundleAdjusterReproj cv::detail::BundleAdjusterRay +- _Affine model_ expecting affine transformation with 6 DOF or 4 DOF implemented in + @ref cv::detail::AffineBestOf2NearestMatcher cv::detail::AffineBasedEstimator + cv::detail::BundleAdjusterAffine cv::detail::BundleAdjusterAffinePartial cv::AffineWarper + +Homography model is useful for creating photo panoramas captured by camera, +while affine-based model can be used to stitch scans and object captured by +specialized devices. Use @ref cv::Stitcher::create to get preconfigured pipeline for one +of those models. + +@note +Certain detailed settings of @ref cv::Stitcher might not make sense. Especially +you should not mix classes implementing affine model and classes implementing +Homography model, as they work with different transformations. + +@{ + @defgroup stitching_match Features Finding and Images Matching + @defgroup stitching_rotation Rotation Estimation + @defgroup stitching_autocalib Autocalibration + @defgroup stitching_warp Images Warping + @defgroup stitching_seam Seam Estimation + @defgroup stitching_exposure Exposure Compensation + @defgroup stitching_blend Image Blenders +@} + */ + +namespace cv { + +//! @addtogroup stitching +//! @{ + +/** @example samples/cpp/stitching.cpp +A basic example on image stitching +*/ + +/** @example samples/python/stitching.py +A basic example on image stitching in Python. +*/ + +/** @example samples/cpp/stitching_detailed.cpp +A detailed example on image stitching +*/ + +/** @brief High level image stitcher. + +It's possible to use this class without being aware of the entire stitching pipeline. However, to +be able to achieve higher stitching stability and quality of the final images at least being +familiar with the theory is recommended. + +@note +- A basic example on image stitching can be found at + opencv_source_code/samples/cpp/stitching.cpp +- A basic example on image stitching in Python can be found at + opencv_source_code/samples/python/stitching.py +- A detailed example on image stitching can be found at + opencv_source_code/samples/cpp/stitching_detailed.cpp + */ +class CV_EXPORTS_W Stitcher +{ +public: + /** + * When setting a resolution for stitching, this values is a placeholder + * for preserving the original resolution. + */ +#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900/*MSVS 2015*/) + static constexpr double ORIG_RESOL = -1.0; +#else + // support MSVS 2013 + static const double ORIG_RESOL; // Initialized in stitcher.cpp +#endif + + enum Status + { + OK = 0, + ERR_NEED_MORE_IMGS = 1, + ERR_HOMOGRAPHY_EST_FAIL = 2, + ERR_CAMERA_PARAMS_ADJUST_FAIL = 3 + }; + + enum Mode + { + /** Mode for creating photo panoramas. Expects images under perspective + transformation and projects resulting pano to sphere. + + @sa detail::BestOf2NearestMatcher SphericalWarper + */ + PANORAMA = 0, + /** Mode for composing scans. Expects images under affine transformation does + not compensate exposure by default. + + @sa detail::AffineBestOf2NearestMatcher AffineWarper + */ + SCANS = 1, + + }; + + /** @brief Creates a Stitcher configured in one of the stitching modes. + + @param mode Scenario for stitcher operation. This is usually determined by source of images + to stitch and their transformation. Default parameters will be chosen for operation in given + scenario. + @return Stitcher class instance. + */ + CV_WRAP static Ptr create(Mode mode = Stitcher::PANORAMA); + + CV_WRAP double registrationResol() const { return registr_resol_; } + CV_WRAP void setRegistrationResol(double resol_mpx) { registr_resol_ = resol_mpx; } + + CV_WRAP double seamEstimationResol() const { return seam_est_resol_; } + CV_WRAP void setSeamEstimationResol(double resol_mpx) { seam_est_resol_ = resol_mpx; } + + CV_WRAP double compositingResol() const { return compose_resol_; } + CV_WRAP void setCompositingResol(double resol_mpx) { compose_resol_ = resol_mpx; } + + CV_WRAP double panoConfidenceThresh() const { return conf_thresh_; } + CV_WRAP void setPanoConfidenceThresh(double conf_thresh) { conf_thresh_ = conf_thresh; } + + CV_WRAP bool waveCorrection() const { return do_wave_correct_; } + CV_WRAP void setWaveCorrection(bool flag) { do_wave_correct_ = flag; } + + CV_WRAP InterpolationFlags interpolationFlags() const { return interp_flags_; } + CV_WRAP void setInterpolationFlags(InterpolationFlags interp_flags) { interp_flags_ = interp_flags; } + + detail::WaveCorrectKind waveCorrectKind() const { return wave_correct_kind_; } + void setWaveCorrectKind(detail::WaveCorrectKind kind) { wave_correct_kind_ = kind; } + + Ptr featuresFinder() { return features_finder_; } + const Ptr featuresFinder() const { return features_finder_; } + void setFeaturesFinder(Ptr features_finder) + { features_finder_ = features_finder; } + + Ptr featuresMatcher() { return features_matcher_; } + const Ptr featuresMatcher() const { return features_matcher_; } + void setFeaturesMatcher(Ptr features_matcher) + { features_matcher_ = features_matcher; } + + const cv::UMat& matchingMask() const { return matching_mask_; } + void setMatchingMask(const cv::UMat &mask) + { + CV_Assert(mask.type() == CV_8U && mask.cols == mask.rows); + matching_mask_ = mask.clone(); + } + + Ptr bundleAdjuster() { return bundle_adjuster_; } + const Ptr bundleAdjuster() const { return bundle_adjuster_; } + void setBundleAdjuster(Ptr bundle_adjuster) + { bundle_adjuster_ = bundle_adjuster; } + + Ptr estimator() { return estimator_; } + const Ptr estimator() const { return estimator_; } + void setEstimator(Ptr estimator) + { estimator_ = estimator; } + + Ptr warper() { return warper_; } + const Ptr warper() const { return warper_; } + void setWarper(Ptr creator) { warper_ = creator; } + + Ptr exposureCompensator() { return exposure_comp_; } + const Ptr exposureCompensator() const { return exposure_comp_; } + void setExposureCompensator(Ptr exposure_comp) + { exposure_comp_ = exposure_comp; } + + Ptr seamFinder() { return seam_finder_; } + const Ptr seamFinder() const { return seam_finder_; } + void setSeamFinder(Ptr seam_finder) { seam_finder_ = seam_finder; } + + Ptr blender() { return blender_; } + const Ptr blender() const { return blender_; } + void setBlender(Ptr b) { blender_ = b; } + + /** @brief These functions try to match the given images and to estimate rotations of each camera. + + @note Use the functions only if you're aware of the stitching pipeline, otherwise use + Stitcher::stitch. + + @param images Input images. + @param masks Masks for each input image specifying where to look for keypoints (optional). + @return Status code. + */ + CV_WRAP Status estimateTransform(InputArrayOfArrays images, InputArrayOfArrays masks = noArray()); + + /** @overload */ + CV_WRAP Status composePanorama(OutputArray pano); + /** @brief These functions try to compose the given images (or images stored internally from the other function + calls) into the final pano under the assumption that the image transformations were estimated + before. + + @note Use the functions only if you're aware of the stitching pipeline, otherwise use + Stitcher::stitch. + + @param images Input images. + @param pano Final pano. + @return Status code. + */ + Status composePanorama(InputArrayOfArrays images, OutputArray pano); + + /** @overload */ + CV_WRAP Status stitch(InputArrayOfArrays images, OutputArray pano); + /** @brief These functions try to stitch the given images. + + @param images Input images. + @param masks Masks for each input image specifying where to look for keypoints (optional). + @param pano Final pano. + @return Status code. + */ + CV_WRAP Status stitch(InputArrayOfArrays images, InputArrayOfArrays masks, OutputArray pano); + + std::vector component() const { return indices_; } + std::vector cameras() const { return cameras_; } + CV_WRAP double workScale() const { return work_scale_; } + UMat resultMask() const { return result_mask_; } + +private: + Status matchImages(); + Status estimateCameraParams(); + + double registr_resol_; + double seam_est_resol_; + double compose_resol_; + double conf_thresh_; + InterpolationFlags interp_flags_; + Ptr features_finder_; + Ptr features_matcher_; + cv::UMat matching_mask_; + Ptr bundle_adjuster_; + Ptr estimator_; + bool do_wave_correct_; + detail::WaveCorrectKind wave_correct_kind_; + Ptr warper_; + Ptr exposure_comp_; + Ptr seam_finder_; + Ptr blender_; + + std::vector imgs_; + std::vector masks_; + std::vector full_img_sizes_; + std::vector features_; + std::vector pairwise_matches_; + std::vector seam_est_imgs_; + std::vector indices_; + std::vector cameras_; + UMat result_mask_; + double work_scale_; + double seam_scale_; + double seam_work_aspect_; + double warped_image_scale_; +}; + +/** + * @deprecated use Stitcher::create + */ +CV_DEPRECATED Ptr createStitcher(bool try_use_gpu = false); + +/** + * @deprecated use Stitcher::create + */ +CV_DEPRECATED Ptr createStitcherScans(bool try_use_gpu = false); + +//! @} stitching + +} // namespace cv + +#endif // OPENCV_STITCHING_STITCHER_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/autocalib.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/autocalib.hpp new file mode 100644 index 0000000..8eb6212 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/autocalib.hpp @@ -0,0 +1,86 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_AUTOCALIB_HPP +#define OPENCV_STITCHING_AUTOCALIB_HPP + +#include "opencv2/core.hpp" +#include "matchers.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_autocalib +//! @{ + +/** @brief Tries to estimate focal lengths from the given homography under the assumption that the camera +undergoes rotations around its centre only. + +@param H Homography. +@param f0 Estimated focal length along X axis. +@param f1 Estimated focal length along Y axis. +@param f0_ok True, if f0 was estimated successfully, false otherwise. +@param f1_ok True, if f1 was estimated successfully, false otherwise. + +See "Construction of Panoramic Image Mosaics with Global and Local Alignment" +by Heung-Yeung Shum and Richard Szeliski. + */ +void CV_EXPORTS_W focalsFromHomography(const Mat &H, double &f0, double &f1, bool &f0_ok, bool &f1_ok); + +/** @brief Estimates focal lengths for each given camera. + +@param features Features of images. +@param pairwise_matches Matches between all image pairs. +@param focals Estimated focal lengths for each camera. + */ +void CV_EXPORTS estimateFocal(const std::vector &features, + const std::vector &pairwise_matches, + std::vector &focals); + +bool CV_EXPORTS_W calibrateRotatingCamera(const std::vector &Hs,CV_OUT Mat &K); + +//! @} stitching_autocalib + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_AUTOCALIB_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/blenders.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/blenders.hpp new file mode 100644 index 0000000..ec35aa7 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/blenders.hpp @@ -0,0 +1,184 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_BLENDERS_HPP +#define OPENCV_STITCHING_BLENDERS_HPP + +#if defined(NO) +# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. +#endif + +#include "opencv2/core.hpp" +#include "opencv2/core/cuda.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_blend +//! @{ + +/** @brief Base class for all blenders. + +Simple blender which puts one image over another +*/ +class CV_EXPORTS_W Blender +{ +public: + virtual ~Blender() {} + + enum { NO, FEATHER, MULTI_BAND }; + CV_WRAP static Ptr createDefault(int type, bool try_gpu = false); + + /** @brief Prepares the blender for blending. + + @param corners Source images top-left corners + @param sizes Source image sizes + */ + CV_WRAP virtual void prepare(const std::vector &corners, const std::vector &sizes); + /** @overload */ + CV_WRAP virtual void prepare(Rect dst_roi); + /** @brief Processes the image. + + @param img Source image + @param mask Source image mask + @param tl Source image top-left corners + */ + CV_WRAP virtual void feed(InputArray img, InputArray mask, Point tl); + /** @brief Blends and returns the final pano. + + @param dst Final pano + @param dst_mask Final pano mask + */ + CV_WRAP virtual void blend(CV_IN_OUT InputOutputArray dst,CV_IN_OUT InputOutputArray dst_mask); + +protected: + UMat dst_, dst_mask_; + Rect dst_roi_; +}; + +/** @brief Simple blender which mixes images at its borders. + */ +class CV_EXPORTS_W FeatherBlender : public Blender +{ +public: + CV_WRAP FeatherBlender(float sharpness = 0.02f); + + CV_WRAP float sharpness() const { return sharpness_; } + CV_WRAP void setSharpness(float val) { sharpness_ = val; } + + CV_WRAP void prepare(Rect dst_roi) CV_OVERRIDE; + CV_WRAP void feed(InputArray img, InputArray mask, Point tl) CV_OVERRIDE; + CV_WRAP void blend(InputOutputArray dst, InputOutputArray dst_mask) CV_OVERRIDE; + + //! Creates weight maps for fixed set of source images by their masks and top-left corners. + //! Final image can be obtained by simple weighting of the source images. + CV_WRAP Rect createWeightMaps(const std::vector &masks, const std::vector &corners, + CV_IN_OUT std::vector &weight_maps); + +private: + float sharpness_; + UMat weight_map_; + UMat dst_weight_map_; +}; + +inline FeatherBlender::FeatherBlender(float _sharpness) { setSharpness(_sharpness); } + +/** @brief Blender which uses multi-band blending algorithm (see @cite BA83). + */ +class CV_EXPORTS_W MultiBandBlender : public Blender +{ +public: + CV_WRAP MultiBandBlender(int try_gpu = false, int num_bands = 5, int weight_type = CV_32F); + + CV_WRAP int numBands() const { return actual_num_bands_; } + CV_WRAP void setNumBands(int val) { actual_num_bands_ = val; } + + CV_WRAP void prepare(Rect dst_roi) CV_OVERRIDE; + CV_WRAP void feed(InputArray img, InputArray mask, Point tl) CV_OVERRIDE; + CV_WRAP void blend(CV_IN_OUT InputOutputArray dst, CV_IN_OUT InputOutputArray dst_mask) CV_OVERRIDE; + +private: + int actual_num_bands_, num_bands_; + std::vector dst_pyr_laplace_; + std::vector dst_band_weights_; + Rect dst_roi_final_; + bool can_use_gpu_; + int weight_type_; //CV_32F or CV_16S +#if defined(HAVE_OPENCV_CUDAARITHM) && defined(HAVE_OPENCV_CUDAWARPING) + std::vector gpu_dst_pyr_laplace_; + std::vector gpu_dst_band_weights_; + std::vector gpu_tl_points_; + std::vector gpu_imgs_with_border_; + std::vector > gpu_weight_pyr_gauss_vec_; + std::vector > gpu_src_pyr_laplace_vec_; + std::vector > gpu_ups_; + cuda::GpuMat gpu_dst_mask_; + cuda::GpuMat gpu_mask_; + cuda::GpuMat gpu_img_; + cuda::GpuMat gpu_weight_map_; + cuda::GpuMat gpu_add_mask_; + int gpu_feed_idx_; + bool gpu_initialized_; +#endif +}; + + +////////////////////////////////////////////////////////////////////////////// +// Auxiliary functions + +void CV_EXPORTS_W normalizeUsingWeightMap(InputArray weight, CV_IN_OUT InputOutputArray src); + +void CV_EXPORTS_W createWeightMap(InputArray mask, float sharpness, CV_IN_OUT InputOutputArray weight); + +void CV_EXPORTS_W createLaplacePyr(InputArray img, int num_levels, CV_IN_OUT std::vector& pyr); +void CV_EXPORTS_W createLaplacePyrGpu(InputArray img, int num_levels, CV_IN_OUT std::vector& pyr); + +// Restores source image +void CV_EXPORTS_W restoreImageFromLaplacePyr(CV_IN_OUT std::vector& pyr); +void CV_EXPORTS_W restoreImageFromLaplacePyrGpu(CV_IN_OUT std::vector& pyr); + +//! @} + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_BLENDERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/camera.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/camera.hpp new file mode 100644 index 0000000..14ecf60 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/camera.hpp @@ -0,0 +1,78 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_CAMERA_HPP +#define OPENCV_STITCHING_CAMERA_HPP + +#include "opencv2/core.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching +//! @{ + +/** @brief Describes camera parameters. + +@note Translation is assumed to be zero during the whole stitching pipeline. : + */ +struct CV_EXPORTS_W_SIMPLE CameraParams +{ + CameraParams(); + CameraParams(const CameraParams& other); + CameraParams& operator =(const CameraParams& other); + CV_WRAP Mat K() const; + + CV_PROP_RW double focal; // Focal length + CV_PROP_RW double aspect; // Aspect ratio + CV_PROP_RW double ppx; // Principal point X + CV_PROP_RW double ppy; // Principal point Y + CV_PROP_RW Mat R; // Rotation + CV_PROP_RW Mat t; // Translation +}; + +//! @} + +} // namespace detail +} // namespace cv + +#endif // #ifndef OPENCV_STITCHING_CAMERA_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/exposure_compensate.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/exposure_compensate.hpp new file mode 100644 index 0000000..2b76d09 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/exposure_compensate.hpp @@ -0,0 +1,230 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP +#define OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP + +#if defined(NO) +# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. +#endif + +#include "opencv2/core.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_exposure +//! @{ + +/** @brief Base class for all exposure compensators. + */ +class CV_EXPORTS_W ExposureCompensator +{ +public: + ExposureCompensator(): updateGain(true) {} + virtual ~ExposureCompensator() {} + + enum { NO, GAIN, GAIN_BLOCKS, CHANNELS, CHANNELS_BLOCKS }; + CV_WRAP static Ptr createDefault(int type); + + /** + @param corners Source image top-left corners + @param images Source images + @param masks Image masks to update (second value in pair specifies the value which should be used + to detect where image is) + */ + CV_WRAP void feed(const std::vector &corners, const std::vector &images, + const std::vector &masks); + /** @overload */ + virtual void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks) = 0; + /** @brief Compensate exposure in the specified image. + + @param index Image index + @param corner Image top-left corner + @param image Image to process + @param mask Image mask + */ + CV_WRAP virtual void apply(int index, Point corner, InputOutputArray image, InputArray mask) = 0; + CV_WRAP virtual void getMatGains(CV_OUT std::vector& ) {CV_Error(Error::StsInternal, "");}; + CV_WRAP virtual void setMatGains(std::vector& ) { CV_Error(Error::StsInternal, ""); }; + CV_WRAP void setUpdateGain(bool b) { updateGain = b; }; + CV_WRAP bool getUpdateGain() { return updateGain; }; +protected : + bool updateGain; +}; + +/** @brief Stub exposure compensator which does nothing. + */ +class CV_EXPORTS_W NoExposureCompensator : public ExposureCompensator +{ +public: + void feed(const std::vector &/*corners*/, const std::vector &/*images*/, + const std::vector > &/*masks*/) CV_OVERRIDE { } + CV_WRAP void apply(int /*index*/, Point /*corner*/, InputOutputArray /*image*/, InputArray /*mask*/) CV_OVERRIDE { } + CV_WRAP void getMatGains(CV_OUT std::vector& umv) CV_OVERRIDE { umv.clear(); return; }; + CV_WRAP void setMatGains(std::vector& umv) CV_OVERRIDE { umv.clear(); return; }; +}; + +/** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image +intensities, see @cite BL07 and @cite WJ10 for details. + */ +class CV_EXPORTS_W GainCompensator : public ExposureCompensator +{ +public: + // This Constructor only exists to make source level compatibility detector happy + CV_WRAP GainCompensator() + : GainCompensator(1) {} + CV_WRAP GainCompensator(int nr_feeds) + : nr_feeds_(nr_feeds) {} + void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks) CV_OVERRIDE; + void singleFeed(const std::vector &corners, const std::vector &images, + const std::vector > &masks); + CV_WRAP void apply(int index, Point corner, InputOutputArray image, InputArray mask) CV_OVERRIDE; + CV_WRAP void getMatGains(CV_OUT std::vector& umv) CV_OVERRIDE ; + CV_WRAP void setMatGains(std::vector& umv) CV_OVERRIDE ; + CV_WRAP void setNrFeeds(int nr_feeds) { nr_feeds_ = nr_feeds; } + CV_WRAP int getNrFeeds() { return nr_feeds_; } + std::vector gains() const; + +private: + Mat_ gains_; + int nr_feeds_; +}; + +/** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image +intensities on each channel independently. + */ +class CV_EXPORTS_W ChannelsCompensator : public ExposureCompensator +{ +public: + CV_WRAP ChannelsCompensator(int nr_feeds=1) : nr_feeds_(nr_feeds) {} + void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks) CV_OVERRIDE; + CV_WRAP void apply(int index, Point corner, InputOutputArray image, InputArray mask) CV_OVERRIDE; + CV_WRAP void getMatGains(CV_OUT std::vector& umv) CV_OVERRIDE; + CV_WRAP void setMatGains(std::vector& umv) CV_OVERRIDE; + CV_WRAP void setNrFeeds(int nr_feeds) { nr_feeds_ = nr_feeds; } + CV_WRAP int getNrFeeds() { return nr_feeds_; } + std::vector gains() const { return gains_; } + +private: + std::vector gains_; + int nr_feeds_; +}; + +/** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image blocks. + */ +class CV_EXPORTS_W BlocksCompensator : public ExposureCompensator +{ +public: + BlocksCompensator(int bl_width=32, int bl_height=32, int nr_feeds=1) + : bl_width_(bl_width), bl_height_(bl_height), nr_feeds_(nr_feeds), nr_gain_filtering_iterations_(2) {} + CV_WRAP void apply(int index, Point corner, InputOutputArray image, InputArray mask) CV_OVERRIDE; + CV_WRAP void getMatGains(CV_OUT std::vector& umv) CV_OVERRIDE; + CV_WRAP void setMatGains(std::vector& umv) CV_OVERRIDE; + CV_WRAP void setNrFeeds(int nr_feeds) { nr_feeds_ = nr_feeds; } + CV_WRAP int getNrFeeds() { return nr_feeds_; } + CV_WRAP void setBlockSize(int width, int height) { bl_width_ = width; bl_height_ = height; } + CV_WRAP void setBlockSize(Size size) { setBlockSize(size.width, size.height); } + CV_WRAP Size getBlockSize() const { return Size(bl_width_, bl_height_); } + CV_WRAP void setNrGainsFilteringIterations(int nr_iterations) { nr_gain_filtering_iterations_ = nr_iterations; } + CV_WRAP int getNrGainsFilteringIterations() const { return nr_gain_filtering_iterations_; } + +protected: + template + void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks); + +private: + UMat getGainMap(const GainCompensator& compensator, int bl_idx, Size bl_per_img); + UMat getGainMap(const ChannelsCompensator& compensator, int bl_idx, Size bl_per_img); + + int bl_width_, bl_height_; + std::vector gain_maps_; + int nr_feeds_; + int nr_gain_filtering_iterations_; +}; + +/** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image block +intensities, see @cite UES01 for details. + */ +class CV_EXPORTS_W BlocksGainCompensator : public BlocksCompensator +{ +public: + // This Constructor only exists to make source level compatibility detector happy + CV_WRAP BlocksGainCompensator(int bl_width = 32, int bl_height = 32) + : BlocksGainCompensator(bl_width, bl_height, 1) {} + CV_WRAP BlocksGainCompensator(int bl_width, int bl_height, int nr_feeds) + : BlocksCompensator(bl_width, bl_height, nr_feeds) {} + + void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks) CV_OVERRIDE; + + // This function only exists to make source level compatibility detector happy + CV_WRAP void apply(int index, Point corner, InputOutputArray image, InputArray mask) CV_OVERRIDE { + BlocksCompensator::apply(index, corner, image, mask); } + // This function only exists to make source level compatibility detector happy + CV_WRAP void getMatGains(CV_OUT std::vector& umv) CV_OVERRIDE { BlocksCompensator::getMatGains(umv); } + // This function only exists to make source level compatibility detector happy + CV_WRAP void setMatGains(std::vector& umv) CV_OVERRIDE { BlocksCompensator::setMatGains(umv); } +}; + +/** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image block +on each channel. + */ +class CV_EXPORTS_W BlocksChannelsCompensator : public BlocksCompensator +{ +public: + CV_WRAP BlocksChannelsCompensator(int bl_width=32, int bl_height=32, int nr_feeds=1) + : BlocksCompensator(bl_width, bl_height, nr_feeds) {} + + void feed(const std::vector &corners, const std::vector &images, + const std::vector > &masks) CV_OVERRIDE; +}; +//! @} + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/matchers.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/matchers.hpp new file mode 100644 index 0000000..c933a36 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/matchers.hpp @@ -0,0 +1,253 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_MATCHERS_HPP +#define OPENCV_STITCHING_MATCHERS_HPP + +#include "opencv2/core.hpp" +#include "opencv2/features2d.hpp" + +#include "opencv2/opencv_modules.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_match +//! @{ + +/** @brief Structure containing image keypoints and descriptors. */ +struct CV_EXPORTS_W_SIMPLE ImageFeatures +{ + CV_PROP_RW int img_idx; + CV_PROP_RW Size img_size; + std::vector keypoints; + CV_PROP_RW UMat descriptors; + CV_WRAP std::vector getKeypoints() { return keypoints; }; +}; +/** @brief + +@param featuresFinder +@param images +@param features +@param masks +*/ +CV_EXPORTS_W void computeImageFeatures( + const Ptr &featuresFinder, + InputArrayOfArrays images, + CV_OUT std::vector &features, + InputArrayOfArrays masks = noArray()); + +/** @brief + +@param featuresFinder +@param image +@param features +@param mask +*/ +CV_EXPORTS_AS(computeImageFeatures2) void computeImageFeatures( + const Ptr &featuresFinder, + InputArray image, + CV_OUT ImageFeatures &features, + InputArray mask = noArray()); + +/** @brief Structure containing information about matches between two images. + +It's assumed that there is a transformation between those images. Transformation may be +homography or affine transformation based on selected matcher. + +@sa detail::FeaturesMatcher +*/ +struct CV_EXPORTS_W_SIMPLE MatchesInfo +{ + MatchesInfo(); + MatchesInfo(const MatchesInfo &other); + MatchesInfo& operator =(const MatchesInfo &other); + + CV_PROP_RW int src_img_idx; + CV_PROP_RW int dst_img_idx; //!< Images indices (optional) + std::vector matches; + std::vector inliers_mask; //!< Geometrically consistent matches mask + CV_PROP_RW int num_inliers; //!< Number of geometrically consistent matches + CV_PROP_RW Mat H; //!< Estimated transformation + CV_PROP_RW double confidence; //!< Confidence two images are from the same panorama + CV_WRAP std::vector getMatches() { return matches; }; + CV_WRAP std::vector getInliers() { return inliers_mask; }; +}; + +/** @brief Feature matchers base class. */ +class CV_EXPORTS_W FeaturesMatcher +{ +public: + CV_WRAP virtual ~FeaturesMatcher() {} + + /** @overload + @param features1 First image features + @param features2 Second image features + @param matches_info Found matches + */ + CV_WRAP_AS(apply) void operator ()(const ImageFeatures &features1, const ImageFeatures &features2, + CV_OUT MatchesInfo& matches_info) { match(features1, features2, matches_info); } + + /** @brief Performs images matching. + + @param features Features of the source images + @param pairwise_matches Found pairwise matches + @param mask Mask indicating which image pairs must be matched + + The function is parallelized with the TBB library. + + @sa detail::MatchesInfo + */ + CV_WRAP_AS(apply2) void operator ()(const std::vector &features, CV_OUT std::vector &pairwise_matches, + const cv::UMat &mask = cv::UMat()); + + /** @return True, if it's possible to use the same matcher instance in parallel, false otherwise + */ + CV_WRAP bool isThreadSafe() const { return is_thread_safe_; } + + /** @brief Frees unused memory allocated before if there is any. + */ + CV_WRAP virtual void collectGarbage() {} + +protected: + FeaturesMatcher(bool is_thread_safe = false) : is_thread_safe_(is_thread_safe) {} + + /** @brief This method must implement matching logic in order to make the wrappers + detail::FeaturesMatcher::operator()_ work. + + @param features1 first image features + @param features2 second image features + @param matches_info found matches + */ + virtual void match(const ImageFeatures &features1, const ImageFeatures &features2, + MatchesInfo& matches_info) = 0; + + bool is_thread_safe_; +}; + +/** @brief Features matcher which finds two best matches for each feature and leaves the best one only if the +ratio between descriptor distances is greater than the threshold match_conf + +@sa detail::FeaturesMatcher + */ +class CV_EXPORTS_W BestOf2NearestMatcher : public FeaturesMatcher +{ +public: + /** @brief Constructs a "best of 2 nearest" matcher. + + @param try_use_gpu Should try to use GPU or not + @param match_conf Match distances ration threshold + @param num_matches_thresh1 Minimum number of matches required for the 2D projective transform + estimation used in the inliers classification step + @param num_matches_thresh2 Minimum number of matches required for the 2D projective transform + re-estimation on inliers + */ + CV_WRAP BestOf2NearestMatcher(bool try_use_gpu = false, float match_conf = 0.3f, int num_matches_thresh1 = 6, + int num_matches_thresh2 = 6); + + CV_WRAP void collectGarbage() CV_OVERRIDE; + CV_WRAP static Ptr create(bool try_use_gpu = false, float match_conf = 0.3f, int num_matches_thresh1 = 6, + int num_matches_thresh2 = 6); + +protected: + + void match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo &matches_info) CV_OVERRIDE; + int num_matches_thresh1_; + int num_matches_thresh2_; + Ptr impl_; +}; + +class CV_EXPORTS_W BestOf2NearestRangeMatcher : public BestOf2NearestMatcher +{ +public: + CV_WRAP BestOf2NearestRangeMatcher(int range_width = 5, bool try_use_gpu = false, float match_conf = 0.3f, + int num_matches_thresh1 = 6, int num_matches_thresh2 = 6); + + void operator ()(const std::vector &features, std::vector &pairwise_matches, + const cv::UMat &mask = cv::UMat()); + + +protected: + int range_width_; +}; + +/** @brief Features matcher similar to cv::detail::BestOf2NearestMatcher which +finds two best matches for each feature and leaves the best one only if the +ratio between descriptor distances is greater than the threshold match_conf. + +Unlike cv::detail::BestOf2NearestMatcher this matcher uses affine +transformation (affine trasformation estimate will be placed in matches_info). + +@sa cv::detail::FeaturesMatcher cv::detail::BestOf2NearestMatcher + */ +class CV_EXPORTS_W AffineBestOf2NearestMatcher : public BestOf2NearestMatcher +{ +public: + /** @brief Constructs a "best of 2 nearest" matcher that expects affine trasformation + between images + + @param full_affine whether to use full affine transformation with 6 degress of freedom or reduced + transformation with 4 degrees of freedom using only rotation, translation and uniform scaling + @param try_use_gpu Should try to use GPU or not + @param match_conf Match distances ration threshold + @param num_matches_thresh1 Minimum number of matches required for the 2D affine transform + estimation used in the inliers classification step + + @sa cv::estimateAffine2D cv::estimateAffinePartial2D + */ + CV_WRAP AffineBestOf2NearestMatcher(bool full_affine = false, bool try_use_gpu = false, + float match_conf = 0.3f, int num_matches_thresh1 = 6) : + BestOf2NearestMatcher(try_use_gpu, match_conf, num_matches_thresh1, num_matches_thresh1), + full_affine_(full_affine) {} + +protected: + void match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo &matches_info) CV_OVERRIDE; + + bool full_affine_; +}; + +//! @} stitching_match + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_MATCHERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/motion_estimators.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/motion_estimators.hpp new file mode 100644 index 0000000..ff05af1 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/motion_estimators.hpp @@ -0,0 +1,363 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_MOTION_ESTIMATORS_HPP +#define OPENCV_STITCHING_MOTION_ESTIMATORS_HPP + +#include "opencv2/core.hpp" +#include "matchers.hpp" +#include "util.hpp" +#include "camera.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_rotation +//! @{ + +/** @brief Rotation estimator base class. + +It takes features of all images, pairwise matches between all images and estimates rotations of all +cameras. + +@note The coordinate system origin is implementation-dependent, but you can always normalize the +rotations in respect to the first camera, for instance. : + */ +class CV_EXPORTS_W Estimator +{ +public: + virtual ~Estimator() {} + + /** @brief Estimates camera parameters. + + @param features Features of images + @param pairwise_matches Pairwise matches of images + @param cameras Estimated camera parameters + @return True in case of success, false otherwise + */ + CV_WRAP_AS(apply) bool operator ()(const std::vector &features, + const std::vector &pairwise_matches, + CV_OUT CV_IN_OUT std::vector &cameras) + { + return estimate(features, pairwise_matches, cameras); + } + +protected: + /** @brief This method must implement camera parameters estimation logic in order to make the wrapper + detail::Estimator::operator()_ work. + + @param features Features of images + @param pairwise_matches Pairwise matches of images + @param cameras Estimated camera parameters + @return True in case of success, false otherwise + */ + virtual bool estimate(const std::vector &features, + const std::vector &pairwise_matches, + CV_OUT std::vector &cameras) = 0; +}; + +/** @brief Homography based rotation estimator. + */ +class CV_EXPORTS_W HomographyBasedEstimator : public Estimator +{ +public: + CV_WRAP HomographyBasedEstimator(bool is_focals_estimated = false) + : is_focals_estimated_(is_focals_estimated) {} + +private: + virtual bool estimate(const std::vector &features, + const std::vector &pairwise_matches, + std::vector &cameras) CV_OVERRIDE; + + bool is_focals_estimated_; +}; + +/** @brief Affine transformation based estimator. + +This estimator uses pairwise transformations estimated by matcher to estimate +final transformation for each camera. + +@sa cv::detail::HomographyBasedEstimator + */ +class CV_EXPORTS_W AffineBasedEstimator : public Estimator +{ +public: + CV_WRAP AffineBasedEstimator(){} +private: + virtual bool estimate(const std::vector &features, + const std::vector &pairwise_matches, + std::vector &cameras) CV_OVERRIDE; +}; + +/** @brief Base class for all camera parameters refinement methods. + */ +class CV_EXPORTS_W BundleAdjusterBase : public Estimator +{ +public: + CV_WRAP const Mat refinementMask() const { return refinement_mask_.clone(); } + CV_WRAP void setRefinementMask(const Mat &mask) + { + CV_Assert(mask.type() == CV_8U && mask.size() == Size(3, 3)); + refinement_mask_ = mask.clone(); + } + + CV_WRAP double confThresh() const { return conf_thresh_; } + CV_WRAP void setConfThresh(double conf_thresh) { conf_thresh_ = conf_thresh; } + + CV_WRAP TermCriteria termCriteria() { return term_criteria_; } + CV_WRAP void setTermCriteria(const TermCriteria& term_criteria) { term_criteria_ = term_criteria; } + +protected: + /** @brief Construct a bundle adjuster base instance. + + @param num_params_per_cam Number of parameters per camera + @param num_errs_per_measurement Number of error terms (components) per match + */ + BundleAdjusterBase(int num_params_per_cam, int num_errs_per_measurement) + : num_images_(0), total_num_matches_(0), + num_params_per_cam_(num_params_per_cam), + num_errs_per_measurement_(num_errs_per_measurement), + features_(0), pairwise_matches_(0), conf_thresh_(0) + { + setRefinementMask(Mat::ones(3, 3, CV_8U)); + setConfThresh(1.); + setTermCriteria(TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 1000, DBL_EPSILON)); + } + + // Runs bundle adjustment + virtual bool estimate(const std::vector &features, + const std::vector &pairwise_matches, + std::vector &cameras) CV_OVERRIDE; + + /** @brief Sets initial camera parameter to refine. + + @param cameras Camera parameters + */ + virtual void setUpInitialCameraParams(const std::vector &cameras) = 0; + /** @brief Gets the refined camera parameters. + + @param cameras Refined camera parameters + */ + virtual void obtainRefinedCameraParams(std::vector &cameras) const = 0; + /** @brief Calculates error vector. + + @param err Error column-vector of length total_num_matches \* num_errs_per_measurement + */ + virtual void calcError(Mat &err) = 0; + /** @brief Calculates the cost function jacobian. + + @param jac Jacobian matrix of dimensions + (total_num_matches \* num_errs_per_measurement) x (num_images \* num_params_per_cam) + */ + virtual void calcJacobian(Mat &jac) = 0; + + // 3x3 8U mask, where 0 means don't refine respective parameter, != 0 means refine + Mat refinement_mask_; + + int num_images_; + int total_num_matches_; + + int num_params_per_cam_; + int num_errs_per_measurement_; + + const ImageFeatures *features_; + const MatchesInfo *pairwise_matches_; + + // Threshold to filter out poorly matched image pairs + double conf_thresh_; + + //Levenberg-Marquardt algorithm termination criteria + TermCriteria term_criteria_; + + // Camera parameters matrix (CV_64F) + Mat cam_params_; + + // Connected images pairs + std::vector > edges_; +}; + + +/** @brief Stub bundle adjuster that does nothing. + */ +class CV_EXPORTS_W NoBundleAdjuster : public BundleAdjusterBase +{ +public: + CV_WRAP NoBundleAdjuster() : BundleAdjusterBase(0, 0) {} + +private: + bool estimate(const std::vector &, const std::vector &, + std::vector &) CV_OVERRIDE + { + return true; + } + void setUpInitialCameraParams(const std::vector &) CV_OVERRIDE {} + void obtainRefinedCameraParams(std::vector &) const CV_OVERRIDE {} + void calcError(Mat &) CV_OVERRIDE {} + void calcJacobian(Mat &) CV_OVERRIDE {} +}; + + +/** @brief Implementation of the camera parameters refinement algorithm which minimizes sum of the reprojection +error squares + +It can estimate focal length, aspect ratio, principal point. +You can affect only on them via the refinement mask. + */ +class CV_EXPORTS_W BundleAdjusterReproj : public BundleAdjusterBase +{ +public: + CV_WRAP BundleAdjusterReproj() : BundleAdjusterBase(7, 2) {} + +private: + void setUpInitialCameraParams(const std::vector &cameras) CV_OVERRIDE; + void obtainRefinedCameraParams(std::vector &cameras) const CV_OVERRIDE; + void calcError(Mat &err) CV_OVERRIDE; + void calcJacobian(Mat &jac) CV_OVERRIDE; + + Mat err1_, err2_; +}; + + +/** @brief Implementation of the camera parameters refinement algorithm which minimizes sum of the distances +between the rays passing through the camera center and a feature. : + +It can estimate focal length. It ignores the refinement mask for now. + */ +class CV_EXPORTS_W BundleAdjusterRay : public BundleAdjusterBase +{ +public: + CV_WRAP BundleAdjusterRay() : BundleAdjusterBase(4, 3) {} + +private: + void setUpInitialCameraParams(const std::vector &cameras) CV_OVERRIDE; + void obtainRefinedCameraParams(std::vector &cameras) const CV_OVERRIDE; + void calcError(Mat &err) CV_OVERRIDE; + void calcJacobian(Mat &jac) CV_OVERRIDE; + + Mat err1_, err2_; +}; + + +/** @brief Bundle adjuster that expects affine transformation +represented in homogeneous coordinates in R for each camera param. Implements +camera parameters refinement algorithm which minimizes sum of the reprojection +error squares + +It estimates all transformation parameters. Refinement mask is ignored. + +@sa AffineBasedEstimator AffineBestOf2NearestMatcher BundleAdjusterAffinePartial + */ +class CV_EXPORTS_W BundleAdjusterAffine : public BundleAdjusterBase +{ +public: + CV_WRAP BundleAdjusterAffine() : BundleAdjusterBase(6, 2) {} + +private: + void setUpInitialCameraParams(const std::vector &cameras) CV_OVERRIDE; + void obtainRefinedCameraParams(std::vector &cameras) const CV_OVERRIDE; + void calcError(Mat &err) CV_OVERRIDE; + void calcJacobian(Mat &jac) CV_OVERRIDE; + + Mat err1_, err2_; +}; + + +/** @brief Bundle adjuster that expects affine transformation with 4 DOF +represented in homogeneous coordinates in R for each camera param. Implements +camera parameters refinement algorithm which minimizes sum of the reprojection +error squares + +It estimates all transformation parameters. Refinement mask is ignored. + +@sa AffineBasedEstimator AffineBestOf2NearestMatcher BundleAdjusterAffine + */ +class CV_EXPORTS_W BundleAdjusterAffinePartial : public BundleAdjusterBase +{ +public: + CV_WRAP BundleAdjusterAffinePartial() : BundleAdjusterBase(4, 2) {} + +private: + void setUpInitialCameraParams(const std::vector &cameras) CV_OVERRIDE; + void obtainRefinedCameraParams(std::vector &cameras) const CV_OVERRIDE; + void calcError(Mat &err) CV_OVERRIDE; + void calcJacobian(Mat &jac) CV_OVERRIDE; + + Mat err1_, err2_; +}; + + +enum WaveCorrectKind +{ + WAVE_CORRECT_HORIZ, + WAVE_CORRECT_VERT +}; + +/** @brief Tries to make panorama more horizontal (or vertical). + +@param rmats Camera rotation matrices. +@param kind Correction kind, see detail::WaveCorrectKind. + */ +void CV_EXPORTS_W waveCorrect(CV_IN_OUT std::vector &rmats, WaveCorrectKind kind); + + +////////////////////////////////////////////////////////////////////////////// +// Auxiliary functions + +// Returns matches graph representation in DOT language +String CV_EXPORTS_W matchesGraphAsString(std::vector &pathes, std::vector &pairwise_matches, + float conf_threshold); + +CV_EXPORTS_W std::vector leaveBiggestComponent( + std::vector &features, + std::vector &pairwise_matches, + float conf_threshold); + +void CV_EXPORTS findMaxSpanningTree( + int num_images, const std::vector &pairwise_matches, + Graph &span_tree, std::vector ¢ers); + +//! @} stitching_rotation + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_MOTION_ESTIMATORS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/seam_finders.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/seam_finders.hpp new file mode 100644 index 0000000..71dae7f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/seam_finders.hpp @@ -0,0 +1,291 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_SEAM_FINDERS_HPP +#define OPENCV_STITCHING_SEAM_FINDERS_HPP + +#include +#include "opencv2/core.hpp" +#include "opencv2/opencv_modules.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_seam +//! @{ + +/** @brief Base class for a seam estimator. + */ +class CV_EXPORTS_W SeamFinder +{ +public: + CV_WRAP virtual ~SeamFinder() {} + enum { NO, VORONOI_SEAM, DP_SEAM }; + /** @brief Estimates seams. + + @param src Source images + @param corners Source image top-left corners + @param masks Source image masks to update + */ + CV_WRAP virtual void find(const std::vector &src, const std::vector &corners, + CV_IN_OUT std::vector &masks) = 0; + CV_WRAP static Ptr createDefault(int type); +}; + +/** @brief Stub seam estimator which does nothing. + */ +class CV_EXPORTS_W NoSeamFinder : public SeamFinder +{ +public: + CV_WRAP void find(const std::vector&, const std::vector&, CV_IN_OUT std::vector&) CV_OVERRIDE {} +}; + +/** @brief Base class for all pairwise seam estimators. + */ +class CV_EXPORTS_W PairwiseSeamFinder : public SeamFinder +{ +public: + CV_WRAP virtual void find(const std::vector &src, const std::vector &corners, + CV_IN_OUT std::vector &masks) CV_OVERRIDE; + +protected: + void run(); + /** @brief Resolves masks intersection of two specified images in the given ROI. + + @param first First image index + @param second Second image index + @param roi Region of interest + */ + virtual void findInPair(size_t first, size_t second, Rect roi) = 0; + + std::vector images_; + std::vector sizes_; + std::vector corners_; + std::vector masks_; +}; + +/** @brief Voronoi diagram-based seam estimator. + */ +class CV_EXPORTS_W VoronoiSeamFinder : public PairwiseSeamFinder +{ +public: + CV_WRAP virtual void find(const std::vector &src, const std::vector &corners, + CV_IN_OUT std::vector &masks) CV_OVERRIDE; + virtual void find(const std::vector &size, const std::vector &corners, + std::vector &masks); +private: + void findInPair(size_t first, size_t second, Rect roi) CV_OVERRIDE; +}; + + +class CV_EXPORTS_W DpSeamFinder : public SeamFinder +{ +public: + enum CostFunction { COLOR, COLOR_GRAD }; + + DpSeamFinder(CostFunction costFunc = COLOR); + CV_WRAP DpSeamFinder(String costFunc ); + + CostFunction costFunction() const { return costFunc_; } + void setCostFunction(CostFunction val) { costFunc_ = val; } + CV_WRAP void setCostFunction(String val); + + virtual void find(const std::vector &src, const std::vector &corners, + std::vector &masks) CV_OVERRIDE; + +private: + enum ComponentState + { + FIRST = 1, SECOND = 2, INTERS = 4, + INTERS_FIRST = INTERS | FIRST, + INTERS_SECOND = INTERS | SECOND + }; + + class ImagePairLess + { + public: + ImagePairLess(const std::vector &images, const std::vector &corners) + : src_(&images[0]), corners_(&corners[0]) {} + + bool operator() (const std::pair &l, const std::pair &r) const + { + Point c1 = corners_[l.first] + Point(src_[l.first].cols / 2, src_[l.first].rows / 2); + Point c2 = corners_[l.second] + Point(src_[l.second].cols / 2, src_[l.second].rows / 2); + int d1 = (c1 - c2).dot(c1 - c2); + + c1 = corners_[r.first] + Point(src_[r.first].cols / 2, src_[r.first].rows / 2); + c2 = corners_[r.second] + Point(src_[r.second].cols / 2, src_[r.second].rows / 2); + int d2 = (c1 - c2).dot(c1 - c2); + + return d1 < d2; + } + + private: + const Mat *src_; + const Point *corners_; + }; + + class ClosePoints + { + public: + ClosePoints(int minDist) : minDist_(minDist) {} + + bool operator() (const Point &p1, const Point &p2) const + { + int dist2 = (p1.x-p2.x) * (p1.x-p2.x) + (p1.y-p2.y) * (p1.y-p2.y); + return dist2 < minDist_ * minDist_; + } + + private: + int minDist_; + }; + + void process( + const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2); + + void findComponents(); + + void findEdges(); + + void resolveConflicts( + const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2); + + void computeGradients(const Mat &image1, const Mat &image2); + + bool hasOnlyOneNeighbor(int comp); + + bool closeToContour(int y, int x, const Mat_ &contourMask); + + bool getSeamTips(int comp1, int comp2, Point &p1, Point &p2); + + void computeCosts( + const Mat &image1, const Mat &image2, Point tl1, Point tl2, + int comp, Mat_ &costV, Mat_ &costH); + + bool estimateSeam( + const Mat &image1, const Mat &image2, Point tl1, Point tl2, int comp, + Point p1, Point p2, std::vector &seam, bool &isHorizontal); + + void updateLabelsUsingSeam( + int comp1, int comp2, const std::vector &seam, bool isHorizontalSeam); + + CostFunction costFunc_; + + // processing images pair data + Point unionTl_, unionBr_; + Size unionSize_; + Mat_ mask1_, mask2_; + Mat_ contour1mask_, contour2mask_; + Mat_ gradx1_, grady1_; + Mat_ gradx2_, grady2_; + + // components data + int ncomps_; + Mat_ labels_; + std::vector states_; + std::vector tls_, brs_; + std::vector > contours_; + std::set > edges_; +}; + +/** @brief Base class for all minimum graph-cut-based seam estimators. + */ +class CV_EXPORTS GraphCutSeamFinderBase +{ +public: + enum CostType { COST_COLOR, COST_COLOR_GRAD }; +}; + +/** @brief Minimum graph cut-based seam estimator. See details in @cite V03 . + */ +class CV_EXPORTS_W GraphCutSeamFinder : public GraphCutSeamFinderBase, public SeamFinder +{ +public: + GraphCutSeamFinder(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f, + float bad_region_penalty = 1000.f); + CV_WRAP GraphCutSeamFinder(String cost_type,float terminal_cost = 10000.f, + float bad_region_penalty = 1000.f); + + ~GraphCutSeamFinder(); + + CV_WRAP void find(const std::vector &src, const std::vector &corners, + std::vector &masks) CV_OVERRIDE; + +private: + // To avoid GCGraph dependency + class Impl; + Ptr impl_; +}; + + +#ifdef HAVE_OPENCV_CUDALEGACY +class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder +{ +public: + GraphCutSeamFinderGpu(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f, + float bad_region_penalty = 1000.f) + : cost_type_(cost_type), terminal_cost_(terminal_cost), + bad_region_penalty_(bad_region_penalty) {} + + void find(const std::vector &src, const std::vector &corners, + std::vector &masks) CV_OVERRIDE; + void findInPair(size_t first, size_t second, Rect roi) CV_OVERRIDE; + +private: + void setGraphWeightsColor(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &mask1, const cv::Mat &mask2, + cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom); + void setGraphWeightsColorGrad(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &dx1, const cv::Mat &dx2, + const cv::Mat &dy1, const cv::Mat &dy2, const cv::Mat &mask1, const cv::Mat &mask2, + cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom); + std::vector dx_, dy_; + int cost_type_; + float terminal_cost_; + float bad_region_penalty_; +}; +#endif + +//! @} + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_SEAM_FINDERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/timelapsers.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/timelapsers.hpp new file mode 100644 index 0000000..f6f3da8 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/timelapsers.hpp @@ -0,0 +1,91 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + + +#ifndef OPENCV_STITCHING_TIMELAPSERS_HPP +#define OPENCV_STITCHING_TIMELAPSERS_HPP + +#include "opencv2/core.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching +//! @{ + +// Base Timelapser class, takes a sequence of images, applies appropriate shift, stores result in dst_. + +class CV_EXPORTS_W Timelapser +{ +public: + + enum {AS_IS, CROP}; + + virtual ~Timelapser() {} + + CV_WRAP static Ptr createDefault(int type); + + CV_WRAP virtual void initialize(const std::vector &corners, const std::vector &sizes); + CV_WRAP virtual void process(InputArray img, InputArray mask, Point tl); + CV_WRAP virtual const UMat& getDst() {return dst_;} + +protected: + + virtual bool test_point(Point pt); + + UMat dst_; + Rect dst_roi_; +}; + + +class CV_EXPORTS_W TimelapserCrop : public Timelapser +{ +public: + virtual void initialize(const std::vector &corners, const std::vector &sizes) CV_OVERRIDE; +}; + +//! @} + +} // namespace detail +} // namespace cv + +#endif // OPENCV_STITCHING_TIMELAPSERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util.hpp new file mode 100644 index 0000000..bf7a390 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util.hpp @@ -0,0 +1,121 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_UTIL_HPP +#define OPENCV_STITCHING_UTIL_HPP + +#include +#include "opencv2/core.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching +//! @{ + +class CV_EXPORTS DisjointSets +{ +public: + DisjointSets(int elem_count = 0) { createOneElemSets(elem_count); } + + void createOneElemSets(int elem_count); + int findSetByElem(int elem); + int mergeSets(int set1, int set2); + + std::vector parent; + std::vector size; + +private: + std::vector rank_; +}; + + +struct CV_EXPORTS GraphEdge +{ + GraphEdge(int from, int to, float weight); + bool operator <(const GraphEdge& other) const { return weight < other.weight; } + bool operator >(const GraphEdge& other) const { return weight > other.weight; } + + int from, to; + float weight; +}; + +inline GraphEdge::GraphEdge(int _from, int _to, float _weight) : from(_from), to(_to), weight(_weight) {} + + +class CV_EXPORTS Graph +{ +public: + Graph(int num_vertices = 0) { create(num_vertices); } + void create(int num_vertices) { edges_.assign(num_vertices, std::list()); } + int numVertices() const { return static_cast(edges_.size()); } + void addEdge(int from, int to, float weight); + template B forEach(B body) const; + template B walkBreadthFirst(int from, B body) const; + +private: + std::vector< std::list > edges_; +}; + + +////////////////////////////////////////////////////////////////////////////// +// Auxiliary functions + +CV_EXPORTS_W bool overlapRoi(Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi); +CV_EXPORTS_W Rect resultRoi(const std::vector &corners, const std::vector &images); +CV_EXPORTS_W Rect resultRoi(const std::vector &corners, const std::vector &sizes); +CV_EXPORTS_W Rect resultRoiIntersection(const std::vector &corners, const std::vector &sizes); +CV_EXPORTS_W Point resultTl(const std::vector &corners); + +// Returns random 'count' element subset of the {0,1,...,size-1} set +CV_EXPORTS_W void selectRandomSubset(int count, int size, std::vector &subset); + +CV_EXPORTS_W int& stitchingLogLevel(); + +//! @} + +} // namespace detail +} // namespace cv + +#include "util_inl.hpp" + +#endif // OPENCV_STITCHING_UTIL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util_inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util_inl.hpp new file mode 100644 index 0000000..dafab8b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/util_inl.hpp @@ -0,0 +1,131 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_UTIL_INL_HPP +#define OPENCV_STITCHING_UTIL_INL_HPP + +#include +#include "opencv2/core.hpp" +#include "util.hpp" // Make your IDE see declarations + +//! @cond IGNORED + +namespace cv { +namespace detail { + +template +B Graph::forEach(B body) const +{ + for (int i = 0; i < numVertices(); ++i) + { + std::list::const_iterator edge = edges_[i].begin(); + for (; edge != edges_[i].end(); ++edge) + body(*edge); + } + return body; +} + + +template +B Graph::walkBreadthFirst(int from, B body) const +{ + std::vector was(numVertices(), false); + std::queue vertices; + + was[from] = true; + vertices.push(from); + + while (!vertices.empty()) + { + int vertex = vertices.front(); + vertices.pop(); + + std::list::const_iterator edge = edges_[vertex].begin(); + for (; edge != edges_[vertex].end(); ++edge) + { + if (!was[edge->to]) + { + body(*edge); + was[edge->to] = true; + vertices.push(edge->to); + } + } + } + + return body; +} + + +////////////////////////////////////////////////////////////////////////////// +// Some auxiliary math functions + +static inline +float normL2(const Point3f& a) +{ + return a.x * a.x + a.y * a.y + a.z * a.z; +} + + +static inline +float normL2(const Point3f& a, const Point3f& b) +{ + return normL2(a - b); +} + + +static inline +double normL2sq(const Mat &r) +{ + return r.dot(r); +} + + +static inline int sqr(int x) { return x * x; } +static inline float sqr(float x) { return x * x; } +static inline double sqr(double x) { return x * x; } + +} // namespace detail +} // namespace cv + +//! @endcond + +#endif // OPENCV_STITCHING_UTIL_INL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers.hpp new file mode 100644 index 0000000..47d1701 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers.hpp @@ -0,0 +1,616 @@ + /*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_WARPERS_HPP +#define OPENCV_STITCHING_WARPERS_HPP + +#include "opencv2/core.hpp" +#include "opencv2/core/cuda.hpp" +#include "opencv2/imgproc.hpp" +#include "opencv2/opencv_modules.hpp" + +namespace cv { +namespace detail { + +//! @addtogroup stitching_warp +//! @{ + +/** @brief Rotation-only model image warper interface. + */ +class CV_EXPORTS RotationWarper +{ +public: + virtual ~RotationWarper() {} + + /** @brief Projects the image point. + + @param pt Source point + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @return Projected point + */ + virtual Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R) = 0; + + /** @brief Builds the projection maps according to the given camera data. + + @param src_size Source image size + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param xmap Projection map for the x axis + @param ymap Projection map for the y axis + @return Projected image minimum bounding box + */ + virtual Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) = 0; + + /** @brief Projects the image. + + @param src Source image + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param interp_mode Interpolation mode + @param border_mode Border extrapolation mode + @param dst Projected image + @return Project image top-left corner + */ + virtual Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + CV_OUT OutputArray dst) = 0; + + /** @brief Projects the image backward. + + @param src Projected image + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param interp_mode Interpolation mode + @param border_mode Border extrapolation mode + @param dst_size Backward-projected image size + @param dst Backward-projected image + */ + virtual void warpBackward(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + Size dst_size, CV_OUT OutputArray dst) = 0; + + /** + @param src_size Source image bounding box + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @return Projected image minimum bounding box + */ + virtual Rect warpRoi(Size src_size, InputArray K, InputArray R) = 0; + + virtual float getScale() const { return 1.f; } + virtual void setScale(float) {} +}; + +/** @brief Base class for warping logic implementation. + */ +struct CV_EXPORTS_W_SIMPLE ProjectorBase +{ + void setCameraParams(InputArray K = Mat::eye(3, 3, CV_32F), + InputArray R = Mat::eye(3, 3, CV_32F), + InputArray T = Mat::zeros(3, 1, CV_32F)); + + float scale; + float k[9]; + float rinv[9]; + float r_kinv[9]; + float k_rinv[9]; + float t[3]; +}; + +/** @brief Base class for rotation-based warper using a detail::ProjectorBase_ derived class. + */ +template +class CV_EXPORTS_TEMPLATE RotationWarperBase : public RotationWarper +{ +public: + Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R) CV_OVERRIDE; + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE; + + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + OutputArray dst) CV_OVERRIDE; + + void warpBackward(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + Size dst_size, OutputArray dst) CV_OVERRIDE; + + Rect warpRoi(Size src_size, InputArray K, InputArray R) CV_OVERRIDE; + + float getScale() const CV_OVERRIDE{ return projector_.scale; } + void setScale(float val) CV_OVERRIDE { projector_.scale = val; } + +protected: + + // Detects ROI of the destination image. It's correct for any projection. + virtual void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br); + + // Detects ROI of the destination image by walking over image border. + // Correctness for any projection isn't guaranteed. + void detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br); + + P projector_; +}; + + +struct CV_EXPORTS PlaneProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + +/** @brief Warper that maps an image onto the z = 1 plane. + */ +class CV_EXPORTS PlaneWarper : public RotationWarperBase +{ +public: + /** @brief Construct an instance of the plane warper class. + + @param scale Projected image scale multiplier + */ + PlaneWarper(float scale = 1.f) { projector_.scale = scale; } + + Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R) CV_OVERRIDE; + Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R, InputArray T); + + virtual Rect buildMaps(Size src_size, InputArray K, InputArray R, InputArray T, CV_OUT OutputArray xmap, CV_OUT OutputArray ymap); + Rect buildMaps(Size src_size, InputArray K, InputArray R, CV_OUT OutputArray xmap, CV_OUT OutputArray ymap) CV_OVERRIDE; + + Point warp(InputArray src, InputArray K, InputArray R, + int interp_mode, int border_mode, CV_OUT OutputArray dst) CV_OVERRIDE; + virtual Point warp(InputArray src, InputArray K, InputArray R, InputArray T, int interp_mode, int border_mode, + CV_OUT OutputArray dst); + + Rect warpRoi(Size src_size, InputArray K, InputArray R) CV_OVERRIDE; + Rect warpRoi(Size src_size, InputArray K, InputArray R, InputArray T); + +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE; +}; + + +/** @brief Affine warper that uses rotations and translations + + Uses affine transformation in homogeneous coordinates to represent both rotation and + translation in camera rotation matrix. + */ +class CV_EXPORTS AffineWarper : public PlaneWarper +{ +public: + /** @brief Construct an instance of the affine warper class. + + @param scale Projected image scale multiplier + */ + AffineWarper(float scale = 1.f) : PlaneWarper(scale) {} + + Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R) CV_OVERRIDE; + Rect buildMaps(Size src_size, InputArray K, InputArray R, CV_OUT OutputArray xmap, CV_OUT OutputArray ymap) CV_OVERRIDE; + Point warp(InputArray src, InputArray K, InputArray R, + int interp_mode, int border_mode, CV_OUT OutputArray dst) CV_OVERRIDE; + Rect warpRoi(Size src_size, InputArray K, InputArray R) CV_OVERRIDE; + +protected: + /** @brief Extracts rotation and translation matrices from matrix H representing + affine transformation in homogeneous coordinates + */ + void getRTfromHomogeneous(InputArray H, Mat &R, Mat &T); +}; + + +struct CV_EXPORTS_W_SIMPLE SphericalProjector : ProjectorBase +{ + CV_WRAP void mapForward(float x, float y, float &u, float &v); + CV_WRAP void mapBackward(float u, float v, float &x, float &y); +}; + + +/** @brief Warper that maps an image onto the unit sphere located at the origin. + + Projects image onto unit sphere with origin at (0, 0, 0) and radius scale, measured in pixels. + A 360 panorama would therefore have a resulting width of 2 * scale * PI pixels. + Poles are located at (0, -1, 0) and (0, 1, 0) points. +*/ +class CV_EXPORTS SphericalWarper : public RotationWarperBase +{ +public: + /** @brief Construct an instance of the spherical warper class. + + @param scale Radius of the projected sphere, in pixels. An image spanning the + whole sphere will have a width of 2 * scale * PI pixels. + */ + SphericalWarper(float scale) { projector_.scale = scale; } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE; + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, OutputArray dst) CV_OVERRIDE; +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE; +}; + + +struct CV_EXPORTS CylindricalProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +/** @brief Warper that maps an image onto the x\*x + z\*z = 1 cylinder. + */ +class CV_EXPORTS CylindricalWarper : public RotationWarperBase +{ +public: + /** @brief Construct an instance of the cylindrical warper class. + + @param scale Projected image scale multiplier + */ + CylindricalWarper(float scale) { projector_.scale = scale; } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE; + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, OutputArray dst) CV_OVERRIDE; +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE + { + RotationWarperBase::detectResultRoiByBorder(src_size, dst_tl, dst_br); + } +}; + + +struct CV_EXPORTS FisheyeProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS FisheyeWarper : public RotationWarperBase +{ +public: + FisheyeWarper(float scale) { projector_.scale = scale; } +}; + + +struct CV_EXPORTS StereographicProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS StereographicWarper : public RotationWarperBase +{ +public: + StereographicWarper(float scale) { projector_.scale = scale; } +}; + + +struct CV_EXPORTS CompressedRectilinearProjector : ProjectorBase +{ + float a, b; + + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS CompressedRectilinearWarper : public RotationWarperBase +{ +public: + CompressedRectilinearWarper(float scale, float A = 1, float B = 1) + { + projector_.a = A; + projector_.b = B; + projector_.scale = scale; + } +}; + + +struct CV_EXPORTS CompressedRectilinearPortraitProjector : ProjectorBase +{ + float a, b; + + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS CompressedRectilinearPortraitWarper : public RotationWarperBase +{ +public: + CompressedRectilinearPortraitWarper(float scale, float A = 1, float B = 1) + { + projector_.a = A; + projector_.b = B; + projector_.scale = scale; + } +}; + + +struct CV_EXPORTS PaniniProjector : ProjectorBase +{ + float a, b; + + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS PaniniWarper : public RotationWarperBase +{ +public: + PaniniWarper(float scale, float A = 1, float B = 1) + { + projector_.a = A; + projector_.b = B; + projector_.scale = scale; + } +}; + + +struct CV_EXPORTS PaniniPortraitProjector : ProjectorBase +{ + float a, b; + + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS PaniniPortraitWarper : public RotationWarperBase +{ +public: + PaniniPortraitWarper(float scale, float A = 1, float B = 1) + { + projector_.a = A; + projector_.b = B; + projector_.scale = scale; + } + +}; + + +struct CV_EXPORTS MercatorProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS MercatorWarper : public RotationWarperBase +{ +public: + MercatorWarper(float scale) { projector_.scale = scale; } +}; + + +struct CV_EXPORTS TransverseMercatorProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS TransverseMercatorWarper : public RotationWarperBase +{ +public: + TransverseMercatorWarper(float scale) { projector_.scale = scale; } +}; + + +class CV_EXPORTS PlaneWarperGpu : public PlaneWarper +{ +public: + PlaneWarperGpu(float scale = 1.f) : PlaneWarper(scale) {} + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE + { + Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); + d_xmap_.download(xmap); + d_ymap_.download(ymap); + return result; + } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, InputArray T, OutputArray xmap, OutputArray ymap) CV_OVERRIDE + { + Rect result = buildMaps(src_size, K, R, T, d_xmap_, d_ymap_); + d_xmap_.download(xmap); + d_ymap_.download(ymap); + return result; + } + + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + OutputArray dst) CV_OVERRIDE + { + d_src_.upload(src); + Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); + d_dst_.download(dst); + return result; + } + + Point warp(InputArray src, InputArray K, InputArray R, InputArray T, int interp_mode, int border_mode, + OutputArray dst) CV_OVERRIDE + { + d_src_.upload(src); + Point result = warp(d_src_, K, R, T, interp_mode, border_mode, d_dst_); + d_dst_.download(dst); + return result; + } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, cuda::GpuMat & xmap, cuda::GpuMat & ymap); + + Rect buildMaps(Size src_size, InputArray K, InputArray R, InputArray T, cuda::GpuMat & xmap, cuda::GpuMat & ymap); + + Point warp(const cuda::GpuMat & src, InputArray K, InputArray R, int interp_mode, int border_mode, + cuda::GpuMat & dst); + + Point warp(const cuda::GpuMat & src, InputArray K, InputArray R, InputArray T, int interp_mode, int border_mode, + cuda::GpuMat & dst); + +private: + cuda::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; +}; + + +class CV_EXPORTS SphericalWarperGpu : public SphericalWarper +{ +public: + SphericalWarperGpu(float scale) : SphericalWarper(scale) {} + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE + { + Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); + d_xmap_.download(xmap); + d_ymap_.download(ymap); + return result; + } + + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + OutputArray dst) CV_OVERRIDE + { + d_src_.upload(src); + Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); + d_dst_.download(dst); + return result; + } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, cuda::GpuMat & xmap, cuda::GpuMat & ymap); + + Point warp(const cuda::GpuMat & src, InputArray K, InputArray R, int interp_mode, int border_mode, + cuda::GpuMat & dst); + +private: + cuda::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; +}; + + +class CV_EXPORTS CylindricalWarperGpu : public CylindricalWarper +{ +public: + CylindricalWarperGpu(float scale) : CylindricalWarper(scale) {} + + Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap) CV_OVERRIDE + { + Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); + d_xmap_.download(xmap); + d_ymap_.download(ymap); + return result; + } + + Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + OutputArray dst) CV_OVERRIDE + { + d_src_.upload(src); + Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); + d_dst_.download(dst); + return result; + } + + Rect buildMaps(Size src_size, InputArray K, InputArray R, cuda::GpuMat & xmap, cuda::GpuMat & ymap); + + Point warp(const cuda::GpuMat & src, InputArray K, InputArray R, int interp_mode, int border_mode, + cuda::GpuMat & dst); + +private: + cuda::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; +}; + + +struct CV_EXPORTS SphericalPortraitProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +// Projects image onto unit sphere with origin at (0, 0, 0). +// Poles are located NOT at (0, -1, 0) and (0, 1, 0) points, BUT at (1, 0, 0) and (-1, 0, 0) points. +class CV_EXPORTS SphericalPortraitWarper : public RotationWarperBase +{ +public: + SphericalPortraitWarper(float scale) { projector_.scale = scale; } + +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE; +}; + +struct CV_EXPORTS CylindricalPortraitProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS CylindricalPortraitWarper : public RotationWarperBase +{ +public: + CylindricalPortraitWarper(float scale) { projector_.scale = scale; } + +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE + { + RotationWarperBase::detectResultRoiByBorder(src_size, dst_tl, dst_br); + } +}; + +struct CV_EXPORTS PlanePortraitProjector : ProjectorBase +{ + void mapForward(float x, float y, float &u, float &v); + void mapBackward(float u, float v, float &x, float &y); +}; + + +class CV_EXPORTS PlanePortraitWarper : public RotationWarperBase +{ +public: + PlanePortraitWarper(float scale) { projector_.scale = scale; } + +protected: + void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) CV_OVERRIDE + { + RotationWarperBase::detectResultRoiByBorder(src_size, dst_tl, dst_br); + } +}; + +//! @} stitching_warp + +} // namespace detail +} // namespace cv + +#include "warpers_inl.hpp" + +#endif // OPENCV_STITCHING_WARPERS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers_inl.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers_inl.hpp new file mode 100644 index 0000000..f4a19d9 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/detail/warpers_inl.hpp @@ -0,0 +1,774 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_WARPERS_INL_HPP +#define OPENCV_STITCHING_WARPERS_INL_HPP + +#include "opencv2/core.hpp" +#include "warpers.hpp" // Make your IDE see declarations +#include + +//! @cond IGNORED + +namespace cv { +namespace detail { + +template +Point2f RotationWarperBase

::warpPoint(const Point2f &pt, InputArray K, InputArray R) +{ + projector_.setCameraParams(K, R); + Point2f uv; + projector_.mapForward(pt.x, pt.y, uv.x, uv.y); + return uv; +} + + +template +Rect RotationWarperBase

::buildMaps(Size src_size, InputArray K, InputArray R, OutputArray _xmap, OutputArray _ymap) +{ + projector_.setCameraParams(K, R); + + Point dst_tl, dst_br; + detectResultRoi(src_size, dst_tl, dst_br); + + _xmap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F); + _ymap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F); + + Mat xmap = _xmap.getMat(), ymap = _ymap.getMat(); + + float x, y; + for (int v = dst_tl.y; v <= dst_br.y; ++v) + { + for (int u = dst_tl.x; u <= dst_br.x; ++u) + { + projector_.mapBackward(static_cast(u), static_cast(v), x, y); + xmap.at(v - dst_tl.y, u - dst_tl.x) = x; + ymap.at(v - dst_tl.y, u - dst_tl.x) = y; + } + } + + return Rect(dst_tl, dst_br); +} + + +template +Point RotationWarperBase

::warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + OutputArray dst) +{ + UMat xmap, ymap; + Rect dst_roi = buildMaps(src.size(), K, R, xmap, ymap); + + dst.create(dst_roi.height + 1, dst_roi.width + 1, src.type()); + remap(src, dst, xmap, ymap, interp_mode, border_mode); + + return dst_roi.tl(); +} + + +template +void RotationWarperBase

::warpBackward(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + Size dst_size, OutputArray dst) +{ + projector_.setCameraParams(K, R); + + Point src_tl, src_br; + detectResultRoi(dst_size, src_tl, src_br); + + Size size = src.size(); + CV_Assert(src_br.x - src_tl.x + 1 == size.width && src_br.y - src_tl.y + 1 == size.height); + + Mat xmap(dst_size, CV_32F); + Mat ymap(dst_size, CV_32F); + + float u, v; + for (int y = 0; y < dst_size.height; ++y) + { + for (int x = 0; x < dst_size.width; ++x) + { + projector_.mapForward(static_cast(x), static_cast(y), u, v); + xmap.at(y, x) = u - src_tl.x; + ymap.at(y, x) = v - src_tl.y; + } + } + + dst.create(dst_size, src.type()); + remap(src, dst, xmap, ymap, interp_mode, border_mode); +} + + +template +Rect RotationWarperBase

::warpRoi(Size src_size, InputArray K, InputArray R) +{ + projector_.setCameraParams(K, R); + + Point dst_tl, dst_br; + detectResultRoi(src_size, dst_tl, dst_br); + + return Rect(dst_tl, Point(dst_br.x + 1, dst_br.y + 1)); +} + + +template +void RotationWarperBase

::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) +{ + float tl_uf = (std::numeric_limits::max)(); + float tl_vf = (std::numeric_limits::max)(); + float br_uf = -(std::numeric_limits::max)(); + float br_vf = -(std::numeric_limits::max)(); + + float u, v; + for (int y = 0; y < src_size.height; ++y) + { + for (int x = 0; x < src_size.width; ++x) + { + projector_.mapForward(static_cast(x), static_cast(y), u, v); + tl_uf = (std::min)(tl_uf, u); tl_vf = (std::min)(tl_vf, v); + br_uf = (std::max)(br_uf, u); br_vf = (std::max)(br_vf, v); + } + } + + dst_tl.x = static_cast(tl_uf); + dst_tl.y = static_cast(tl_vf); + dst_br.x = static_cast(br_uf); + dst_br.y = static_cast(br_vf); +} + + +template +void RotationWarperBase

::detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br) +{ + float tl_uf = (std::numeric_limits::max)(); + float tl_vf = (std::numeric_limits::max)(); + float br_uf = -(std::numeric_limits::max)(); + float br_vf = -(std::numeric_limits::max)(); + + float u, v; + for (float x = 0; x < src_size.width; ++x) + { + projector_.mapForward(static_cast(x), 0, u, v); + tl_uf = (std::min)(tl_uf, u); tl_vf = (std::min)(tl_vf, v); + br_uf = (std::max)(br_uf, u); br_vf = (std::max)(br_vf, v); + + projector_.mapForward(static_cast(x), static_cast(src_size.height - 1), u, v); + tl_uf = (std::min)(tl_uf, u); tl_vf = (std::min)(tl_vf, v); + br_uf = (std::max)(br_uf, u); br_vf = (std::max)(br_vf, v); + } + for (int y = 0; y < src_size.height; ++y) + { + projector_.mapForward(0, static_cast(y), u, v); + tl_uf = (std::min)(tl_uf, u); tl_vf = (std::min)(tl_vf, v); + br_uf = (std::max)(br_uf, u); br_vf = (std::max)(br_vf, v); + + projector_.mapForward(static_cast(src_size.width - 1), static_cast(y), u, v); + tl_uf = (std::min)(tl_uf, u); tl_vf = (std::min)(tl_vf, v); + br_uf = (std::max)(br_uf, u); br_vf = (std::max)(br_vf, v); + } + + dst_tl.x = static_cast(tl_uf); + dst_tl.y = static_cast(tl_vf); + dst_br.x = static_cast(br_uf); + dst_br.y = static_cast(br_vf); +} + + +inline +void PlaneProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + x_ = t[0] + x_ / z_ * (1 - t[2]); + y_ = t[1] + y_ / z_ * (1 - t[2]); + + u = scale * x_; + v = scale * y_; +} + + +inline +void PlaneProjector::mapBackward(float u, float v, float &x, float &y) +{ + u = u / scale - t[0]; + v = v / scale - t[1]; + + float z; + x = k_rinv[0] * u + k_rinv[1] * v + k_rinv[2] * (1 - t[2]); + y = k_rinv[3] * u + k_rinv[4] * v + k_rinv[5] * (1 - t[2]); + z = k_rinv[6] * u + k_rinv[7] * v + k_rinv[8] * (1 - t[2]); + + x /= z; + y /= z; +} + + +inline +void SphericalProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + u = scale * atan2f(x_, z_); + float w = y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_); + v = scale * (static_cast(CV_PI) - acosf(w == w ? w : 0)); +} + + +inline +void SphericalProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float sinv = sinf(static_cast(CV_PI) - v); + float x_ = sinv * sinf(u); + float y_ = cosf(static_cast(CV_PI) - v); + float z_ = sinv * cosf(u); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + + +inline +void CylindricalProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + u = scale * atan2f(x_, z_); + v = scale * y_ / sqrtf(x_ * x_ + z_ * z_); +} + + +inline +void CylindricalProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float x_ = sinf(u); + float y_ = v; + float z_ = cosf(u); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void FisheyeProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + u = scale * v_ * cosf(u_); + v = scale * v_ * sinf(u_); +} + +inline +void FisheyeProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float u_ = atan2f(v, u); + float v_ = sqrtf(u*u + v*v); + + float sinv = sinf((float)CV_PI - v_); + float x_ = sinv * sinf(u_); + float y_ = cosf((float)CV_PI - v_); + float z_ = sinv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void StereographicProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + float r = sinf(v_) / (1 - cosf(v_)); + + u = scale * r * cos(u_); + v = scale * r * sin(u_); +} + +inline +void StereographicProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float u_ = atan2f(v, u); + float r = sqrtf(u*u + v*v); + float v_ = 2 * atanf(1.f / r); + + float sinv = sinf((float)CV_PI - v_); + float x_ = sinv * sinf(u_); + float y_ = cosf((float)CV_PI - v_); + float z_ = sinv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void CompressedRectilinearProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + u = scale * a * tanf(u_ / a); + v = scale * b * tanf(v_) / cosf(u_); +} + +inline +void CompressedRectilinearProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float aatg = a * atanf(u / a); + float u_ = aatg; + float v_ = atanf(v * cosf(aatg) / b); + + float cosv = cosf(v_); + float x_ = cosv * sinf(u_); + float y_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void CompressedRectilinearPortraitProjector::mapForward(float x, float y, float &u, float &v) +{ + float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + u = - scale * a * tanf(u_ / a); + v = scale * b * tanf(v_) / cosf(u_); +} + +inline +void CompressedRectilinearPortraitProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= - scale; + v /= scale; + + float aatg = a * atanf(u / a); + float u_ = aatg; + float v_ = atanf(v * cosf( aatg ) / b); + + float cosv = cosf(v_); + float y_ = cosv * sinf(u_); + float x_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void PaniniProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + float tg = a * tanf(u_ / a); + u = scale * tg; + + float sinu = sinf(u_); + if ( fabs(sinu) < 1E-7 ) + v = scale * b * tanf(v_); + else + v = scale * b * tg * tanf(v_) / sinu; +} + +inline +void PaniniProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float lamda = a * atanf(u / a); + float u_ = lamda; + + float v_; + if ( fabs(lamda) > 1E-7) + v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda / a))); + else + v_ = atanf(v / b); + + float cosv = cosf(v_); + float x_ = cosv * sinf(u_); + float y_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void PaniniPortraitProjector::mapForward(float x, float y, float &u, float &v) +{ + float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + float tg = a * tanf(u_ / a); + u = - scale * tg; + + float sinu = sinf( u_ ); + if ( fabs(sinu) < 1E-7 ) + v = scale * b * tanf(v_); + else + v = scale * b * tg * tanf(v_) / sinu; +} + +inline +void PaniniPortraitProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= - scale; + v /= scale; + + float lamda = a * atanf(u / a); + float u_ = lamda; + + float v_; + if ( fabs(lamda) > 1E-7) + v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda/a))); + else + v_ = atanf(v / b); + + float cosv = cosf(v_); + float y_ = cosv * sinf(u_); + float x_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void MercatorProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + u = scale * u_; + v = scale * logf( tanf( (float)(CV_PI/4) + v_/2 ) ); +} + +inline +void MercatorProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float v_ = atanf( sinhf(v) ); + float u_ = u; + + float cosv = cosf(v_); + float x_ = cosv * sinf(u_); + float y_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void TransverseMercatorProjector::mapForward(float x, float y, float &u, float &v) +{ + float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float u_ = atan2f(x_, z_); + float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); + + float B = cosf(v_) * sinf(u_); + + u = scale / 2 * logf( (1+B) / (1-B) ); + v = scale * atan2f(tanf(v_), cosf(u_)); +} + +inline +void TransverseMercatorProjector::mapBackward(float u, float v, float &x, float &y) +{ + u /= scale; + v /= scale; + + float v_ = asinf( sinf(v) / coshf(u) ); + float u_ = atan2f( sinhf(u), cos(v) ); + + float cosv = cosf(v_); + float x_ = cosv * sinf(u_); + float y_ = sinf(v_); + float z_ = cosv * cosf(u_); + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void SphericalPortraitProjector::mapForward(float x, float y, float &u0, float &v0) +{ + float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float x_ = y0_; + float y_ = x0_; + float u, v; + + u = scale * atan2f(x_, z_); + v = scale * (static_cast(CV_PI) - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_))); + + u0 = -u;//v; + v0 = v;//u; +} + + +inline +void SphericalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y) +{ + float u, v; + u = -u0;//v0; + v = v0;//u0; + + u /= scale; + v /= scale; + + float sinv = sinf(static_cast(CV_PI) - v); + float x0_ = sinv * sinf(u); + float y0_ = cosf(static_cast(CV_PI) - v); + float z_ = sinv * cosf(u); + + float x_ = y0_; + float y_ = x0_; + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void CylindricalPortraitProjector::mapForward(float x, float y, float &u0, float &v0) +{ + float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float x_ = y0_; + float y_ = x0_; + float u, v; + + u = scale * atan2f(x_, z_); + v = scale * y_ / sqrtf(x_ * x_ + z_ * z_); + + u0 = -u;//v; + v0 = v;//u; +} + + +inline +void CylindricalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y) +{ + float u, v; + u = -u0;//v0; + v = v0;//u0; + + u /= scale; + v /= scale; + + float x0_ = sinf(u); + float y0_ = v; + float z_ = cosf(u); + + float x_ = y0_; + float y_ = x0_; + + float z; + x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; + y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; + z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; + + if (z > 0) { x /= z; y /= z; } + else x = y = -1; +} + +inline +void PlanePortraitProjector::mapForward(float x, float y, float &u0, float &v0) +{ + float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; + float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; + float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; + + float x_ = y0_; + float y_ = x0_; + + x_ = t[0] + x_ / z_ * (1 - t[2]); + y_ = t[1] + y_ / z_ * (1 - t[2]); + + float u,v; + u = scale * x_; + v = scale * y_; + + u0 = -u; + v0 = v; +} + + +inline +void PlanePortraitProjector::mapBackward(float u0, float v0, float &x, float &y) +{ + float u, v; + u = -u0; + v = v0; + + u = u / scale - t[0]; + v = v / scale - t[1]; + + float z; + x = k_rinv[0] * v + k_rinv[1] * u + k_rinv[2] * (1 - t[2]); + y = k_rinv[3] * v + k_rinv[4] * u + k_rinv[5] * (1 - t[2]); + z = k_rinv[6] * v + k_rinv[7] * u + k_rinv[8] * (1 - t[2]); + + x /= z; + y /= z; +} + + +} // namespace detail +} // namespace cv + +//! @endcond + +#endif // OPENCV_STITCHING_WARPERS_INL_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/stitching/warpers.hpp b/LaiPuLaser/OpenCV/include/opencv2/stitching/warpers.hpp new file mode 100644 index 0000000..ff43386 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/stitching/warpers.hpp @@ -0,0 +1,261 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_STITCHING_WARPER_CREATORS_HPP +#define OPENCV_STITCHING_WARPER_CREATORS_HPP + +#include "opencv2/stitching/detail/warpers.hpp" +#include + +namespace cv { + class CV_EXPORTS_W PyRotationWarper + { + Ptr rw; + + public: + CV_WRAP PyRotationWarper(String type, float scale); + CV_WRAP PyRotationWarper() {}; + ~PyRotationWarper() {} + + /** @brief Projects the image point. + + @param pt Source point + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @return Projected point + */ + CV_WRAP Point2f warpPoint(const Point2f &pt, InputArray K, InputArray R); + + /** @brief Builds the projection maps according to the given camera data. + + @param src_size Source image size + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param xmap Projection map for the x axis + @param ymap Projection map for the y axis + @return Projected image minimum bounding box + */ + CV_WRAP Rect buildMaps(Size src_size, InputArray K, InputArray R, OutputArray xmap, OutputArray ymap); + + /** @brief Projects the image. + + @param src Source image + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param interp_mode Interpolation mode + @param border_mode Border extrapolation mode + @param dst Projected image + @return Project image top-left corner + */ + CV_WRAP Point warp(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + CV_OUT OutputArray dst); + + /** @brief Projects the image backward. + + @param src Projected image + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @param interp_mode Interpolation mode + @param border_mode Border extrapolation mode + @param dst_size Backward-projected image size + @param dst Backward-projected image + */ + CV_WRAP void warpBackward(InputArray src, InputArray K, InputArray R, int interp_mode, int border_mode, + Size dst_size, CV_OUT OutputArray dst); + + /** + @param src_size Source image bounding box + @param K Camera intrinsic parameters + @param R Camera rotation matrix + @return Projected image minimum bounding box + */ + CV_WRAP Rect warpRoi(Size src_size, InputArray K, InputArray R); + + CV_WRAP float getScale() const { return 1.f; } + CV_WRAP void setScale(float) {} + }; + +//! @addtogroup stitching_warp +//! @{ + +/** @brief Image warper factories base class. + */ + +class CV_EXPORTS_W WarperCreator +{ +public: + CV_WRAP virtual ~WarperCreator() {} + virtual Ptr create(float scale) const = 0; +}; + + +/** @brief Plane warper factory class. + @sa detail::PlaneWarper + */ +class CV_EXPORTS PlaneWarper : public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +/** @brief Affine warper factory class. + @sa detail::AffineWarper + */ +class CV_EXPORTS AffineWarper : public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +/** @brief Cylindrical warper factory class. +@sa detail::CylindricalWarper +*/ +class CV_EXPORTS CylindricalWarper: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +/** @brief Spherical warper factory class */ +class CV_EXPORTS SphericalWarper: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +class CV_EXPORTS FisheyeWarper : public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +class CV_EXPORTS StereographicWarper: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +class CV_EXPORTS CompressedRectilinearWarper: public WarperCreator +{ + float a, b; +public: + CompressedRectilinearWarper(float A = 1, float B = 1) + { + a = A; b = B; + } + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale, a, b); } +}; + +class CV_EXPORTS CompressedRectilinearPortraitWarper: public WarperCreator +{ + float a, b; +public: + CompressedRectilinearPortraitWarper(float A = 1, float B = 1) + { + a = A; b = B; + } + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale, a, b); } +}; + +class CV_EXPORTS PaniniWarper: public WarperCreator +{ + float a, b; +public: + PaniniWarper(float A = 1, float B = 1) + { + a = A; b = B; + } + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale, a, b); } +}; + +class CV_EXPORTS PaniniPortraitWarper: public WarperCreator +{ + float a, b; +public: + PaniniPortraitWarper(float A = 1, float B = 1) + { + a = A; b = B; + } + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale, a, b); } +}; + +class CV_EXPORTS MercatorWarper: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + +class CV_EXPORTS TransverseMercatorWarper: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + + + +#ifdef HAVE_OPENCV_CUDAWARPING +class PlaneWarperGpu: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + + +class CylindricalWarperGpu: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; + + +class SphericalWarperGpu: public WarperCreator +{ +public: + Ptr create(float scale) const CV_OVERRIDE { return makePtr(scale); } +}; +#endif + +//! @} stitching_warp + +} // namespace cv + +#endif // OPENCV_STITCHING_WARPER_CREATORS_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/video.hpp b/LaiPuLaser/OpenCV/include/opencv2/video.hpp new file mode 100644 index 0000000..a3dde60 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/video.hpp @@ -0,0 +1,59 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_VIDEO_HPP +#define OPENCV_VIDEO_HPP + +/** + @defgroup video Video Analysis + @{ + @defgroup video_motion Motion Analysis + @defgroup video_track Object Tracking + @defgroup video_c C API + @} +*/ + +#include "opencv2/video/tracking.hpp" +#include "opencv2/video/background_segm.hpp" + +#endif //OPENCV_VIDEO_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/video/background_segm.hpp b/LaiPuLaser/OpenCV/include/opencv2/video/background_segm.hpp new file mode 100644 index 0000000..e1dfa15 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/video/background_segm.hpp @@ -0,0 +1,317 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_BACKGROUND_SEGM_HPP +#define OPENCV_BACKGROUND_SEGM_HPP + +#include "opencv2/core.hpp" + +namespace cv +{ + +//! @addtogroup video_motion +//! @{ + +/** @brief Base class for background/foreground segmentation. : + +The class is only used to define the common interface for the whole family of background/foreground +segmentation algorithms. + */ +class CV_EXPORTS_W BackgroundSubtractor : public Algorithm +{ +public: + /** @brief Computes a foreground mask. + + @param image Next video frame. + @param fgmask The output foreground mask as an 8-bit binary image. + @param learningRate The value between 0 and 1 that indicates how fast the background model is + learnt. Negative parameter value makes the algorithm to use some automatically chosen learning + rate. 0 means that the background model is not updated at all, 1 means that the background model + is completely reinitialized from the last frame. + */ + CV_WRAP virtual void apply(InputArray image, OutputArray fgmask, double learningRate=-1) = 0; + + /** @brief Computes a background image. + + @param backgroundImage The output background image. + + @note Sometimes the background image can be very blurry, as it contain the average background + statistics. + */ + CV_WRAP virtual void getBackgroundImage(OutputArray backgroundImage) const = 0; +}; + + +/** @brief Gaussian Mixture-based Background/Foreground Segmentation Algorithm. + +The class implements the Gaussian mixture model background subtraction described in @cite Zivkovic2004 +and @cite Zivkovic2006 . + */ +class CV_EXPORTS_W BackgroundSubtractorMOG2 : public BackgroundSubtractor +{ +public: + /** @brief Returns the number of last frames that affect the background model + */ + CV_WRAP virtual int getHistory() const = 0; + /** @brief Sets the number of last frames that affect the background model + */ + CV_WRAP virtual void setHistory(int history) = 0; + + /** @brief Returns the number of gaussian components in the background model + */ + CV_WRAP virtual int getNMixtures() const = 0; + /** @brief Sets the number of gaussian components in the background model. + + The model needs to be reinitalized to reserve memory. + */ + CV_WRAP virtual void setNMixtures(int nmixtures) = 0;//needs reinitialization! + + /** @brief Returns the "background ratio" parameter of the algorithm + + If a foreground pixel keeps semi-constant value for about backgroundRatio\*history frames, it's + considered background and added to the model as a center of a new component. It corresponds to TB + parameter in the paper. + */ + CV_WRAP virtual double getBackgroundRatio() const = 0; + /** @brief Sets the "background ratio" parameter of the algorithm + */ + CV_WRAP virtual void setBackgroundRatio(double ratio) = 0; + + /** @brief Returns the variance threshold for the pixel-model match + + The main threshold on the squared Mahalanobis distance to decide if the sample is well described by + the background model or not. Related to Cthr from the paper. + */ + CV_WRAP virtual double getVarThreshold() const = 0; + /** @brief Sets the variance threshold for the pixel-model match + */ + CV_WRAP virtual void setVarThreshold(double varThreshold) = 0; + + /** @brief Returns the variance threshold for the pixel-model match used for new mixture component generation + + Threshold for the squared Mahalanobis distance that helps decide when a sample is close to the + existing components (corresponds to Tg in the paper). If a pixel is not close to any component, it + is considered foreground or added as a new component. 3 sigma =\> Tg=3\*3=9 is default. A smaller Tg + value generates more components. A higher Tg value may result in a small number of components but + they can grow too large. + */ + CV_WRAP virtual double getVarThresholdGen() const = 0; + /** @brief Sets the variance threshold for the pixel-model match used for new mixture component generation + */ + CV_WRAP virtual void setVarThresholdGen(double varThresholdGen) = 0; + + /** @brief Returns the initial variance of each gaussian component + */ + CV_WRAP virtual double getVarInit() const = 0; + /** @brief Sets the initial variance of each gaussian component + */ + CV_WRAP virtual void setVarInit(double varInit) = 0; + + CV_WRAP virtual double getVarMin() const = 0; + CV_WRAP virtual void setVarMin(double varMin) = 0; + + CV_WRAP virtual double getVarMax() const = 0; + CV_WRAP virtual void setVarMax(double varMax) = 0; + + /** @brief Returns the complexity reduction threshold + + This parameter defines the number of samples needed to accept to prove the component exists. CT=0.05 + is a default value for all the samples. By setting CT=0 you get an algorithm very similar to the + standard Stauffer&Grimson algorithm. + */ + CV_WRAP virtual double getComplexityReductionThreshold() const = 0; + /** @brief Sets the complexity reduction threshold + */ + CV_WRAP virtual void setComplexityReductionThreshold(double ct) = 0; + + /** @brief Returns the shadow detection flag + + If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorMOG2 for + details. + */ + CV_WRAP virtual bool getDetectShadows() const = 0; + /** @brief Enables or disables shadow detection + */ + CV_WRAP virtual void setDetectShadows(bool detectShadows) = 0; + + /** @brief Returns the shadow value + + Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. Value 0 + in the mask always means background, 255 means foreground. + */ + CV_WRAP virtual int getShadowValue() const = 0; + /** @brief Sets the shadow value + */ + CV_WRAP virtual void setShadowValue(int value) = 0; + + /** @brief Returns the shadow threshold + + A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in + the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel + is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiara, + *Detecting Moving Shadows...*, IEEE PAMI,2003. + */ + CV_WRAP virtual double getShadowThreshold() const = 0; + /** @brief Sets the shadow threshold + */ + CV_WRAP virtual void setShadowThreshold(double threshold) = 0; + + /** @brief Computes a foreground mask. + + @param image Next video frame. Floating point frame will be used without scaling and should be in range \f$[0,255]\f$. + @param fgmask The output foreground mask as an 8-bit binary image. + @param learningRate The value between 0 and 1 that indicates how fast the background model is + learnt. Negative parameter value makes the algorithm to use some automatically chosen learning + rate. 0 means that the background model is not updated at all, 1 means that the background model + is completely reinitialized from the last frame. + */ + CV_WRAP virtual void apply(InputArray image, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0; +}; + +/** @brief Creates MOG2 Background Subtractor + +@param history Length of the history. +@param varThreshold Threshold on the squared Mahalanobis distance between the pixel and the model +to decide whether a pixel is well described by the background model. This parameter does not +affect the background update. +@param detectShadows If true, the algorithm will detect shadows and mark them. It decreases the +speed a bit, so if you do not need this feature, set the parameter to false. + */ +CV_EXPORTS_W Ptr + createBackgroundSubtractorMOG2(int history=500, double varThreshold=16, + bool detectShadows=true); + +/** @brief K-nearest neighbours - based Background/Foreground Segmentation Algorithm. + +The class implements the K-nearest neighbours background subtraction described in @cite Zivkovic2006 . +Very efficient if number of foreground pixels is low. + */ +class CV_EXPORTS_W BackgroundSubtractorKNN : public BackgroundSubtractor +{ +public: + /** @brief Returns the number of last frames that affect the background model + */ + CV_WRAP virtual int getHistory() const = 0; + /** @brief Sets the number of last frames that affect the background model + */ + CV_WRAP virtual void setHistory(int history) = 0; + + /** @brief Returns the number of data samples in the background model + */ + CV_WRAP virtual int getNSamples() const = 0; + /** @brief Sets the number of data samples in the background model. + + The model needs to be reinitalized to reserve memory. + */ + CV_WRAP virtual void setNSamples(int _nN) = 0;//needs reinitialization! + + /** @brief Returns the threshold on the squared distance between the pixel and the sample + + The threshold on the squared distance between the pixel and the sample to decide whether a pixel is + close to a data sample. + */ + CV_WRAP virtual double getDist2Threshold() const = 0; + /** @brief Sets the threshold on the squared distance + */ + CV_WRAP virtual void setDist2Threshold(double _dist2Threshold) = 0; + + /** @brief Returns the number of neighbours, the k in the kNN. + + K is the number of samples that need to be within dist2Threshold in order to decide that that + pixel is matching the kNN background model. + */ + CV_WRAP virtual int getkNNSamples() const = 0; + /** @brief Sets the k in the kNN. How many nearest neighbours need to match. + */ + CV_WRAP virtual void setkNNSamples(int _nkNN) = 0; + + /** @brief Returns the shadow detection flag + + If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorKNN for + details. + */ + CV_WRAP virtual bool getDetectShadows() const = 0; + /** @brief Enables or disables shadow detection + */ + CV_WRAP virtual void setDetectShadows(bool detectShadows) = 0; + + /** @brief Returns the shadow value + + Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. Value 0 + in the mask always means background, 255 means foreground. + */ + CV_WRAP virtual int getShadowValue() const = 0; + /** @brief Sets the shadow value + */ + CV_WRAP virtual void setShadowValue(int value) = 0; + + /** @brief Returns the shadow threshold + + A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in + the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel + is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiara, + *Detecting Moving Shadows...*, IEEE PAMI,2003. + */ + CV_WRAP virtual double getShadowThreshold() const = 0; + /** @brief Sets the shadow threshold + */ + CV_WRAP virtual void setShadowThreshold(double threshold) = 0; +}; + +/** @brief Creates KNN Background Subtractor + +@param history Length of the history. +@param dist2Threshold Threshold on the squared distance between the pixel and the sample to decide +whether a pixel is close to that sample. This parameter does not affect the background update. +@param detectShadows If true, the algorithm will detect shadows and mark them. It decreases the +speed a bit, so if you do not need this feature, set the parameter to false. + */ +CV_EXPORTS_W Ptr + createBackgroundSubtractorKNN(int history=500, double dist2Threshold=400.0, + bool detectShadows=true); + +//! @} video_motion + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/video/legacy/constants_c.h b/LaiPuLaser/OpenCV/include/opencv2/video/legacy/constants_c.h new file mode 100644 index 0000000..1a98f52 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/video/legacy/constants_c.h @@ -0,0 +1,16 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_VIDEO_LEGACY_CONSTANTS_H +#define OPENCV_VIDEO_LEGACY_CONSTANTS_H + +enum +{ + CV_LKFLOW_PYR_A_READY = 1, + CV_LKFLOW_PYR_B_READY = 2, + CV_LKFLOW_INITIAL_GUESSES = 4, + CV_LKFLOW_GET_MIN_EIGENVALS = 8 +}; + +#endif // OPENCV_VIDEO_LEGACY_CONSTANTS_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/video/tracking.hpp b/LaiPuLaser/OpenCV/include/opencv2/video/tracking.hpp new file mode 100644 index 0000000..e978886 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/video/tracking.hpp @@ -0,0 +1,712 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_TRACKING_HPP +#define OPENCV_TRACKING_HPP + +#include "opencv2/core.hpp" +#include "opencv2/imgproc.hpp" + +namespace cv +{ + +//! @addtogroup video_track +//! @{ + +enum { OPTFLOW_USE_INITIAL_FLOW = 4, + OPTFLOW_LK_GET_MIN_EIGENVALS = 8, + OPTFLOW_FARNEBACK_GAUSSIAN = 256 + }; + +/** @brief Finds an object center, size, and orientation. + +@param probImage Back projection of the object histogram. See calcBackProject. +@param window Initial search window. +@param criteria Stop criteria for the underlying meanShift. +returns +(in old interfaces) Number of iterations CAMSHIFT took to converge +The function implements the CAMSHIFT object tracking algorithm @cite Bradski98 . First, it finds an +object center using meanShift and then adjusts the window size and finds the optimal rotation. The +function returns the rotated rectangle structure that includes the object position, size, and +orientation. The next position of the search window can be obtained with RotatedRect::boundingRect() + +See the OpenCV sample camshiftdemo.c that tracks colored objects. + +@note +- (Python) A sample explaining the camshift tracking algorithm can be found at + opencv_source_code/samples/python/camshift.py + */ +CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window, + TermCriteria criteria ); +/** @example samples/cpp/camshiftdemo.cpp +An example using the mean-shift tracking algorithm +*/ + +/** @brief Finds an object on a back projection image. + +@param probImage Back projection of the object histogram. See calcBackProject for details. +@param window Initial search window. +@param criteria Stop criteria for the iterative search algorithm. +returns +: Number of iterations CAMSHIFT took to converge. +The function implements the iterative object search algorithm. It takes the input back projection of +an object and the initial position. The mass center in window of the back projection image is +computed and the search window center shifts to the mass center. The procedure is repeated until the +specified number of iterations criteria.maxCount is done or until the window center shifts by less +than criteria.epsilon. The algorithm is used inside CamShift and, unlike CamShift , the search +window size or orientation do not change during the search. You can simply pass the output of +calcBackProject to this function. But better results can be obtained if you pre-filter the back +projection and remove the noise. For example, you can do this by retrieving connected components +with findContours , throwing away contours with small area ( contourArea ), and rendering the +remaining contours with drawContours. + + */ +CV_EXPORTS_W int meanShift( InputArray probImage, CV_IN_OUT Rect& window, TermCriteria criteria ); + +/** @brief Constructs the image pyramid which can be passed to calcOpticalFlowPyrLK. + +@param img 8-bit input image. +@param pyramid output pyramid. +@param winSize window size of optical flow algorithm. Must be not less than winSize argument of +calcOpticalFlowPyrLK. It is needed to calculate required padding for pyramid levels. +@param maxLevel 0-based maximal pyramid level number. +@param withDerivatives set to precompute gradients for the every pyramid level. If pyramid is +constructed without the gradients then calcOpticalFlowPyrLK will calculate them internally. +@param pyrBorder the border mode for pyramid layers. +@param derivBorder the border mode for gradients. +@param tryReuseInputImage put ROI of input image into the pyramid if possible. You can pass false +to force data copying. +@return number of levels in constructed pyramid. Can be less than maxLevel. + */ +CV_EXPORTS_W int buildOpticalFlowPyramid( InputArray img, OutputArrayOfArrays pyramid, + Size winSize, int maxLevel, bool withDerivatives = true, + int pyrBorder = BORDER_REFLECT_101, + int derivBorder = BORDER_CONSTANT, + bool tryReuseInputImage = true ); + +/** @example samples/cpp/lkdemo.cpp +An example using the Lucas-Kanade optical flow algorithm +*/ + +/** @brief Calculates an optical flow for a sparse feature set using the iterative Lucas-Kanade method with +pyramids. + +@param prevImg first 8-bit input image or pyramid constructed by buildOpticalFlowPyramid. +@param nextImg second input image or pyramid of the same size and the same type as prevImg. +@param prevPts vector of 2D points for which the flow needs to be found; point coordinates must be +single-precision floating-point numbers. +@param nextPts output vector of 2D points (with single-precision floating-point coordinates) +containing the calculated new positions of input features in the second image; when +OPTFLOW_USE_INITIAL_FLOW flag is passed, the vector must have the same size as in the input. +@param status output status vector (of unsigned chars); each element of the vector is set to 1 if +the flow for the corresponding features has been found, otherwise, it is set to 0. +@param err output vector of errors; each element of the vector is set to an error for the +corresponding feature, type of the error measure can be set in flags parameter; if the flow wasn't +found then the error is not defined (use the status parameter to find such cases). +@param winSize size of the search window at each pyramid level. +@param maxLevel 0-based maximal pyramid level number; if set to 0, pyramids are not used (single +level), if set to 1, two levels are used, and so on; if pyramids are passed to input then +algorithm will use as many levels as pyramids have but no more than maxLevel. +@param criteria parameter, specifying the termination criteria of the iterative search algorithm +(after the specified maximum number of iterations criteria.maxCount or when the search window +moves by less than criteria.epsilon. +@param flags operation flags: + - **OPTFLOW_USE_INITIAL_FLOW** uses initial estimations, stored in nextPts; if the flag is + not set, then prevPts is copied to nextPts and is considered the initial estimate. + - **OPTFLOW_LK_GET_MIN_EIGENVALS** use minimum eigen values as an error measure (see + minEigThreshold description); if the flag is not set, then L1 distance between patches + around the original and a moved point, divided by number of pixels in a window, is used as a + error measure. +@param minEigThreshold the algorithm calculates the minimum eigen value of a 2x2 normal matrix of +optical flow equations (this matrix is called a spatial gradient matrix in @cite Bouguet00), divided +by number of pixels in a window; if this value is less than minEigThreshold, then a corresponding +feature is filtered out and its flow is not processed, so it allows to remove bad points and get a +performance boost. + +The function implements a sparse iterative version of the Lucas-Kanade optical flow in pyramids. See +@cite Bouguet00 . The function is parallelized with the TBB library. + +@note + +- An example using the Lucas-Kanade optical flow algorithm can be found at + opencv_source_code/samples/cpp/lkdemo.cpp +- (Python) An example using the Lucas-Kanade optical flow algorithm can be found at + opencv_source_code/samples/python/lk_track.py +- (Python) An example using the Lucas-Kanade tracker for homography matching can be found at + opencv_source_code/samples/python/lk_homography.py + */ +CV_EXPORTS_W void calcOpticalFlowPyrLK( InputArray prevImg, InputArray nextImg, + InputArray prevPts, InputOutputArray nextPts, + OutputArray status, OutputArray err, + Size winSize = Size(21,21), int maxLevel = 3, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01), + int flags = 0, double minEigThreshold = 1e-4 ); + +/** @brief Computes a dense optical flow using the Gunnar Farneback's algorithm. + +@param prev first 8-bit single-channel input image. +@param next second input image of the same size and the same type as prev. +@param flow computed flow image that has the same size as prev and type CV_32FC2. +@param pyr_scale parameter, specifying the image scale (\<1) to build pyramids for each image; +pyr_scale=0.5 means a classical pyramid, where each next layer is twice smaller than the previous +one. +@param levels number of pyramid layers including the initial image; levels=1 means that no extra +layers are created and only the original images are used. +@param winsize averaging window size; larger values increase the algorithm robustness to image +noise and give more chances for fast motion detection, but yield more blurred motion field. +@param iterations number of iterations the algorithm does at each pyramid level. +@param poly_n size of the pixel neighborhood used to find polynomial expansion in each pixel; +larger values mean that the image will be approximated with smoother surfaces, yielding more +robust algorithm and more blurred motion field, typically poly_n =5 or 7. +@param poly_sigma standard deviation of the Gaussian that is used to smooth derivatives used as a +basis for the polynomial expansion; for poly_n=5, you can set poly_sigma=1.1, for poly_n=7, a +good value would be poly_sigma=1.5. +@param flags operation flags that can be a combination of the following: + - **OPTFLOW_USE_INITIAL_FLOW** uses the input flow as an initial flow approximation. + - **OPTFLOW_FARNEBACK_GAUSSIAN** uses the Gaussian \f$\texttt{winsize}\times\texttt{winsize}\f$ + filter instead of a box filter of the same size for optical flow estimation; usually, this + option gives z more accurate flow than with a box filter, at the cost of lower speed; + normally, winsize for a Gaussian window should be set to a larger value to achieve the same + level of robustness. + +The function finds an optical flow for each prev pixel using the @cite Farneback2003 algorithm so that + +\f[\texttt{prev} (y,x) \sim \texttt{next} ( y + \texttt{flow} (y,x)[1], x + \texttt{flow} (y,x)[0])\f] + +@note + +- An example using the optical flow algorithm described by Gunnar Farneback can be found at + opencv_source_code/samples/cpp/fback.cpp +- (Python) An example using the optical flow algorithm described by Gunnar Farneback can be + found at opencv_source_code/samples/python/opt_flow.py + */ +CV_EXPORTS_W void calcOpticalFlowFarneback( InputArray prev, InputArray next, InputOutputArray flow, + double pyr_scale, int levels, int winsize, + int iterations, int poly_n, double poly_sigma, + int flags ); + +/** @brief Computes an optimal affine transformation between two 2D point sets. + +@param src First input 2D point set stored in std::vector or Mat, or an image stored in Mat. +@param dst Second input 2D point set of the same size and the same type as A, or another image. +@param fullAffine If true, the function finds an optimal affine transformation with no additional +restrictions (6 degrees of freedom). Otherwise, the class of transformations to choose from is +limited to combinations of translation, rotation, and uniform scaling (4 degrees of freedom). + +The function finds an optimal affine transform *[A|b]* (a 2 x 3 floating-point matrix) that +approximates best the affine transformation between: + +* Two point sets +* Two raster images. In this case, the function first finds some features in the src image and + finds the corresponding features in dst image. After that, the problem is reduced to the first + case. +In case of point sets, the problem is formulated as follows: you need to find a 2x2 matrix *A* and +2x1 vector *b* so that: + +\f[[A^*|b^*] = arg \min _{[A|b]} \sum _i \| \texttt{dst}[i] - A { \texttt{src}[i]}^T - b \| ^2\f] +where src[i] and dst[i] are the i-th points in src and dst, respectively +\f$[A|b]\f$ can be either arbitrary (when fullAffine=true ) or have a form of +\f[\begin{bmatrix} a_{11} & a_{12} & b_1 \\ -a_{12} & a_{11} & b_2 \end{bmatrix}\f] +when fullAffine=false. + +@deprecated Use cv::estimateAffine2D, cv::estimateAffinePartial2D instead. If you are using this function +with images, extract points using cv::calcOpticalFlowPyrLK and then use the estimation functions. + +@sa +estimateAffine2D, estimateAffinePartial2D, getAffineTransform, getPerspectiveTransform, findHomography + */ +CV_DEPRECATED CV_EXPORTS Mat estimateRigidTransform( InputArray src, InputArray dst, bool fullAffine ); + +enum +{ + MOTION_TRANSLATION = 0, + MOTION_EUCLIDEAN = 1, + MOTION_AFFINE = 2, + MOTION_HOMOGRAPHY = 3 +}; + +/** @brief Computes the Enhanced Correlation Coefficient value between two images @cite EP08 . + +@param templateImage single-channel template image; CV_8U or CV_32F array. +@param inputImage single-channel input image to be warped to provide an image similar to + templateImage, same type as templateImage. +@param inputMask An optional mask to indicate valid values of inputImage. + +@sa +findTransformECC + */ + +CV_EXPORTS_W double computeECC(InputArray templateImage, InputArray inputImage, InputArray inputMask = noArray()); + +/** @example samples/cpp/image_alignment.cpp +An example using the image alignment ECC algorithm +*/ + +/** @brief Finds the geometric transform (warp) between two images in terms of the ECC criterion @cite EP08 . + +@param templateImage single-channel template image; CV_8U or CV_32F array. +@param inputImage single-channel input image which should be warped with the final warpMatrix in +order to provide an image similar to templateImage, same type as templateImage. +@param warpMatrix floating-point \f$2\times 3\f$ or \f$3\times 3\f$ mapping matrix (warp). +@param motionType parameter, specifying the type of motion: + - **MOTION_TRANSLATION** sets a translational motion model; warpMatrix is \f$2\times 3\f$ with + the first \f$2\times 2\f$ part being the unity matrix and the rest two parameters being + estimated. + - **MOTION_EUCLIDEAN** sets a Euclidean (rigid) transformation as motion model; three + parameters are estimated; warpMatrix is \f$2\times 3\f$. + - **MOTION_AFFINE** sets an affine motion model (DEFAULT); six parameters are estimated; + warpMatrix is \f$2\times 3\f$. + - **MOTION_HOMOGRAPHY** sets a homography as a motion model; eight parameters are + estimated;\`warpMatrix\` is \f$3\times 3\f$. +@param criteria parameter, specifying the termination criteria of the ECC algorithm; +criteria.epsilon defines the threshold of the increment in the correlation coefficient between two +iterations (a negative criteria.epsilon makes criteria.maxcount the only termination criterion). +Default values are shown in the declaration above. +@param inputMask An optional mask to indicate valid values of inputImage. +@param gaussFiltSize An optional value indicating size of gaussian blur filter; (DEFAULT: 5) + +The function estimates the optimum transformation (warpMatrix) with respect to ECC criterion +(@cite EP08), that is + +\f[\texttt{warpMatrix} = \texttt{warpMatrix} = \arg\max_{W} \texttt{ECC}(\texttt{templateImage}(x,y),\texttt{inputImage}(x',y'))\f] + +where + +\f[\begin{bmatrix} x' \\ y' \end{bmatrix} = W \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\f] + +(the equation holds with homogeneous coordinates for homography). It returns the final enhanced +correlation coefficient, that is the correlation coefficient between the template image and the +final warped input image. When a \f$3\times 3\f$ matrix is given with motionType =0, 1 or 2, the third +row is ignored. + +Unlike findHomography and estimateRigidTransform, the function findTransformECC implements an +area-based alignment that builds on intensity similarities. In essence, the function updates the +initial transformation that roughly aligns the images. If this information is missing, the identity +warp (unity matrix) is used as an initialization. Note that if images undergo strong +displacements/rotations, an initial transformation that roughly aligns the images is necessary +(e.g., a simple euclidean/similarity transform that allows for the images showing the same image +content approximately). Use inverse warping in the second image to take an image close to the first +one, i.e. use the flag WARP_INVERSE_MAP with warpAffine or warpPerspective. See also the OpenCV +sample image_alignment.cpp that demonstrates the use of the function. Note that the function throws +an exception if algorithm does not converges. + +@sa +computeECC, estimateAffine2D, estimateAffinePartial2D, findHomography + */ +CV_EXPORTS_W double findTransformECC( InputArray templateImage, InputArray inputImage, + InputOutputArray warpMatrix, int motionType, + TermCriteria criteria, + InputArray inputMask, int gaussFiltSize); + +/** @overload */ +CV_EXPORTS +double findTransformECC(InputArray templateImage, InputArray inputImage, + InputOutputArray warpMatrix, int motionType = MOTION_AFFINE, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001), + InputArray inputMask = noArray()); + +/** @example samples/cpp/kalman.cpp +An example using the standard Kalman filter +*/ + +/** @brief Kalman filter class. + +The class implements a standard Kalman filter , +@cite Welch95 . However, you can modify transitionMatrix, controlMatrix, and measurementMatrix to get +an extended Kalman filter functionality. +@note In C API when CvKalman\* kalmanFilter structure is not needed anymore, it should be released +with cvReleaseKalman(&kalmanFilter) + */ +class CV_EXPORTS_W KalmanFilter +{ +public: + CV_WRAP KalmanFilter(); + /** @overload + @param dynamParams Dimensionality of the state. + @param measureParams Dimensionality of the measurement. + @param controlParams Dimensionality of the control vector. + @param type Type of the created matrices that should be CV_32F or CV_64F. + */ + CV_WRAP KalmanFilter( int dynamParams, int measureParams, int controlParams = 0, int type = CV_32F ); + + /** @brief Re-initializes Kalman filter. The previous content is destroyed. + + @param dynamParams Dimensionality of the state. + @param measureParams Dimensionality of the measurement. + @param controlParams Dimensionality of the control vector. + @param type Type of the created matrices that should be CV_32F or CV_64F. + */ + void init( int dynamParams, int measureParams, int controlParams = 0, int type = CV_32F ); + + /** @brief Computes a predicted state. + + @param control The optional input control + */ + CV_WRAP const Mat& predict( const Mat& control = Mat() ); + + /** @brief Updates the predicted state from the measurement. + + @param measurement The measured system parameters + */ + CV_WRAP const Mat& correct( const Mat& measurement ); + + CV_PROP_RW Mat statePre; //!< predicted state (x'(k)): x(k)=A*x(k-1)+B*u(k) + CV_PROP_RW Mat statePost; //!< corrected state (x(k)): x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) + CV_PROP_RW Mat transitionMatrix; //!< state transition matrix (A) + CV_PROP_RW Mat controlMatrix; //!< control matrix (B) (not used if there is no control) + CV_PROP_RW Mat measurementMatrix; //!< measurement matrix (H) + CV_PROP_RW Mat processNoiseCov; //!< process noise covariance matrix (Q) + CV_PROP_RW Mat measurementNoiseCov;//!< measurement noise covariance matrix (R) + CV_PROP_RW Mat errorCovPre; //!< priori error estimate covariance matrix (P'(k)): P'(k)=A*P(k-1)*At + Q)*/ + CV_PROP_RW Mat gain; //!< Kalman gain matrix (K(k)): K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R) + CV_PROP_RW Mat errorCovPost; //!< posteriori error estimate covariance matrix (P(k)): P(k)=(I-K(k)*H)*P'(k) + + // temporary matrices + Mat temp1; + Mat temp2; + Mat temp3; + Mat temp4; + Mat temp5; +}; + + +/** @brief Read a .flo file + + @param path Path to the file to be loaded + + The function readOpticalFlow loads a flow field from a file and returns it as a single matrix. + Resulting Mat has a type CV_32FC2 - floating-point, 2-channel. First channel corresponds to the + flow in the horizontal direction (u), second - vertical (v). + */ +CV_EXPORTS_W Mat readOpticalFlow( const String& path ); +/** @brief Write a .flo to disk + + @param path Path to the file to be written + @param flow Flow field to be stored + + The function stores a flow field in a file, returns true on success, false otherwise. + The flow field must be a 2-channel, floating-point matrix (CV_32FC2). First channel corresponds + to the flow in the horizontal direction (u), second - vertical (v). + */ +CV_EXPORTS_W bool writeOpticalFlow( const String& path, InputArray flow ); + +/** + Base class for dense optical flow algorithms +*/ +class CV_EXPORTS_W DenseOpticalFlow : public Algorithm +{ +public: + /** @brief Calculates an optical flow. + + @param I0 first 8-bit single-channel input image. + @param I1 second input image of the same size and the same type as prev. + @param flow computed flow image that has the same size as prev and type CV_32FC2. + */ + CV_WRAP virtual void calc( InputArray I0, InputArray I1, InputOutputArray flow ) = 0; + /** @brief Releases all inner buffers. + */ + CV_WRAP virtual void collectGarbage() = 0; +}; + +/** @brief Base interface for sparse optical flow algorithms. + */ +class CV_EXPORTS_W SparseOpticalFlow : public Algorithm +{ +public: + /** @brief Calculates a sparse optical flow. + + @param prevImg First input image. + @param nextImg Second input image of the same size and the same type as prevImg. + @param prevPts Vector of 2D points for which the flow needs to be found. + @param nextPts Output vector of 2D points containing the calculated new positions of input features in the second image. + @param status Output status vector. Each element of the vector is set to 1 if the + flow for the corresponding features has been found. Otherwise, it is set to 0. + @param err Optional output vector that contains error response for each point (inverse confidence). + */ + CV_WRAP virtual void calc(InputArray prevImg, InputArray nextImg, + InputArray prevPts, InputOutputArray nextPts, + OutputArray status, + OutputArray err = cv::noArray()) = 0; +}; + + +/** @brief Class computing a dense optical flow using the Gunnar Farneback's algorithm. + */ +class CV_EXPORTS_W FarnebackOpticalFlow : public DenseOpticalFlow +{ +public: + CV_WRAP virtual int getNumLevels() const = 0; + CV_WRAP virtual void setNumLevels(int numLevels) = 0; + + CV_WRAP virtual double getPyrScale() const = 0; + CV_WRAP virtual void setPyrScale(double pyrScale) = 0; + + CV_WRAP virtual bool getFastPyramids() const = 0; + CV_WRAP virtual void setFastPyramids(bool fastPyramids) = 0; + + CV_WRAP virtual int getWinSize() const = 0; + CV_WRAP virtual void setWinSize(int winSize) = 0; + + CV_WRAP virtual int getNumIters() const = 0; + CV_WRAP virtual void setNumIters(int numIters) = 0; + + CV_WRAP virtual int getPolyN() const = 0; + CV_WRAP virtual void setPolyN(int polyN) = 0; + + CV_WRAP virtual double getPolySigma() const = 0; + CV_WRAP virtual void setPolySigma(double polySigma) = 0; + + CV_WRAP virtual int getFlags() const = 0; + CV_WRAP virtual void setFlags(int flags) = 0; + + CV_WRAP static Ptr create( + int numLevels = 5, + double pyrScale = 0.5, + bool fastPyramids = false, + int winSize = 13, + int numIters = 10, + int polyN = 5, + double polySigma = 1.1, + int flags = 0); +}; + +/** @brief Variational optical flow refinement + +This class implements variational refinement of the input flow field, i.e. +it uses input flow to initialize the minimization of the following functional: +\f$E(U) = \int_{\Omega} \delta \Psi(E_I) + \gamma \Psi(E_G) + \alpha \Psi(E_S) \f$, +where \f$E_I,E_G,E_S\f$ are color constancy, gradient constancy and smoothness terms +respectively. \f$\Psi(s^2)=\sqrt{s^2+\epsilon^2}\f$ is a robust penalizer to limit the +influence of outliers. A complete formulation and a description of the minimization +procedure can be found in @cite Brox2004 +*/ +class CV_EXPORTS_W VariationalRefinement : public DenseOpticalFlow +{ +public: + /** @brief @ref calc function overload to handle separate horizontal (u) and vertical (v) flow components + (to avoid extra splits/merges) */ + CV_WRAP virtual void calcUV(InputArray I0, InputArray I1, InputOutputArray flow_u, InputOutputArray flow_v) = 0; + + /** @brief Number of outer (fixed-point) iterations in the minimization procedure. + @see setFixedPointIterations */ + CV_WRAP virtual int getFixedPointIterations() const = 0; + /** @copybrief getFixedPointIterations @see getFixedPointIterations */ + CV_WRAP virtual void setFixedPointIterations(int val) = 0; + + /** @brief Number of inner successive over-relaxation (SOR) iterations + in the minimization procedure to solve the respective linear system. + @see setSorIterations */ + CV_WRAP virtual int getSorIterations() const = 0; + /** @copybrief getSorIterations @see getSorIterations */ + CV_WRAP virtual void setSorIterations(int val) = 0; + + /** @brief Relaxation factor in SOR + @see setOmega */ + CV_WRAP virtual float getOmega() const = 0; + /** @copybrief getOmega @see getOmega */ + CV_WRAP virtual void setOmega(float val) = 0; + + /** @brief Weight of the smoothness term + @see setAlpha */ + CV_WRAP virtual float getAlpha() const = 0; + /** @copybrief getAlpha @see getAlpha */ + CV_WRAP virtual void setAlpha(float val) = 0; + + /** @brief Weight of the color constancy term + @see setDelta */ + CV_WRAP virtual float getDelta() const = 0; + /** @copybrief getDelta @see getDelta */ + CV_WRAP virtual void setDelta(float val) = 0; + + /** @brief Weight of the gradient constancy term + @see setGamma */ + CV_WRAP virtual float getGamma() const = 0; + /** @copybrief getGamma @see getGamma */ + CV_WRAP virtual void setGamma(float val) = 0; + + /** @brief Creates an instance of VariationalRefinement + */ + CV_WRAP static Ptr create(); +}; + +/** @brief DIS optical flow algorithm. + +This class implements the Dense Inverse Search (DIS) optical flow algorithm. More +details about the algorithm can be found at @cite Kroeger2016 . Includes three presets with preselected +parameters to provide reasonable trade-off between speed and quality. However, even the slowest preset is +still relatively fast, use DeepFlow if you need better quality and don't care about speed. + +This implementation includes several additional features compared to the algorithm described in the paper, +including spatial propagation of flow vectors (@ref getUseSpatialPropagation), as well as an option to +utilize an initial flow approximation passed to @ref calc (which is, essentially, temporal propagation, +if the previous frame's flow field is passed). +*/ +class CV_EXPORTS_W DISOpticalFlow : public DenseOpticalFlow +{ +public: + enum + { + PRESET_ULTRAFAST = 0, + PRESET_FAST = 1, + PRESET_MEDIUM = 2 + }; + + /** @brief Finest level of the Gaussian pyramid on which the flow is computed (zero level + corresponds to the original image resolution). The final flow is obtained by bilinear upscaling. + @see setFinestScale */ + CV_WRAP virtual int getFinestScale() const = 0; + /** @copybrief getFinestScale @see getFinestScale */ + CV_WRAP virtual void setFinestScale(int val) = 0; + + /** @brief Size of an image patch for matching (in pixels). Normally, default 8x8 patches work well + enough in most cases. + @see setPatchSize */ + CV_WRAP virtual int getPatchSize() const = 0; + /** @copybrief getPatchSize @see getPatchSize */ + CV_WRAP virtual void setPatchSize(int val) = 0; + + /** @brief Stride between neighbor patches. Must be less than patch size. Lower values correspond + to higher flow quality. + @see setPatchStride */ + CV_WRAP virtual int getPatchStride() const = 0; + /** @copybrief getPatchStride @see getPatchStride */ + CV_WRAP virtual void setPatchStride(int val) = 0; + + /** @brief Maximum number of gradient descent iterations in the patch inverse search stage. Higher values + may improve quality in some cases. + @see setGradientDescentIterations */ + CV_WRAP virtual int getGradientDescentIterations() const = 0; + /** @copybrief getGradientDescentIterations @see getGradientDescentIterations */ + CV_WRAP virtual void setGradientDescentIterations(int val) = 0; + + /** @brief Number of fixed point iterations of variational refinement per scale. Set to zero to + disable variational refinement completely. Higher values will typically result in more smooth and + high-quality flow. + @see setGradientDescentIterations */ + CV_WRAP virtual int getVariationalRefinementIterations() const = 0; + /** @copybrief getGradientDescentIterations @see getGradientDescentIterations */ + CV_WRAP virtual void setVariationalRefinementIterations(int val) = 0; + + /** @brief Weight of the smoothness term + @see setVariationalRefinementAlpha */ + CV_WRAP virtual float getVariationalRefinementAlpha() const = 0; + /** @copybrief getVariationalRefinementAlpha @see getVariationalRefinementAlpha */ + CV_WRAP virtual void setVariationalRefinementAlpha(float val) = 0; + + /** @brief Weight of the color constancy term + @see setVariationalRefinementDelta */ + CV_WRAP virtual float getVariationalRefinementDelta() const = 0; + /** @copybrief getVariationalRefinementDelta @see getVariationalRefinementDelta */ + CV_WRAP virtual void setVariationalRefinementDelta(float val) = 0; + + /** @brief Weight of the gradient constancy term + @see setVariationalRefinementGamma */ + CV_WRAP virtual float getVariationalRefinementGamma() const = 0; + /** @copybrief getVariationalRefinementGamma @see getVariationalRefinementGamma */ + CV_WRAP virtual void setVariationalRefinementGamma(float val) = 0; + + + /** @brief Whether to use mean-normalization of patches when computing patch distance. It is turned on + by default as it typically provides a noticeable quality boost because of increased robustness to + illumination variations. Turn it off if you are certain that your sequence doesn't contain any changes + in illumination. + @see setUseMeanNormalization */ + CV_WRAP virtual bool getUseMeanNormalization() const = 0; + /** @copybrief getUseMeanNormalization @see getUseMeanNormalization */ + CV_WRAP virtual void setUseMeanNormalization(bool val) = 0; + + /** @brief Whether to use spatial propagation of good optical flow vectors. This option is turned on by + default, as it tends to work better on average and can sometimes help recover from major errors + introduced by the coarse-to-fine scheme employed by the DIS optical flow algorithm. Turning this + option off can make the output flow field a bit smoother, however. + @see setUseSpatialPropagation */ + CV_WRAP virtual bool getUseSpatialPropagation() const = 0; + /** @copybrief getUseSpatialPropagation @see getUseSpatialPropagation */ + CV_WRAP virtual void setUseSpatialPropagation(bool val) = 0; + + /** @brief Creates an instance of DISOpticalFlow + + @param preset one of PRESET_ULTRAFAST, PRESET_FAST and PRESET_MEDIUM + */ + CV_WRAP static Ptr create(int preset = DISOpticalFlow::PRESET_FAST); +}; + +/** @brief Class used for calculating a sparse optical flow. + +The class can calculate an optical flow for a sparse feature set using the +iterative Lucas-Kanade method with pyramids. + +@sa calcOpticalFlowPyrLK + +*/ +class CV_EXPORTS_W SparsePyrLKOpticalFlow : public SparseOpticalFlow +{ +public: + CV_WRAP virtual Size getWinSize() const = 0; + CV_WRAP virtual void setWinSize(Size winSize) = 0; + + CV_WRAP virtual int getMaxLevel() const = 0; + CV_WRAP virtual void setMaxLevel(int maxLevel) = 0; + + CV_WRAP virtual TermCriteria getTermCriteria() const = 0; + CV_WRAP virtual void setTermCriteria(TermCriteria& crit) = 0; + + CV_WRAP virtual int getFlags() const = 0; + CV_WRAP virtual void setFlags(int flags) = 0; + + CV_WRAP virtual double getMinEigThreshold() const = 0; + CV_WRAP virtual void setMinEigThreshold(double minEigThreshold) = 0; + + CV_WRAP static Ptr create( + Size winSize = Size(21, 21), + int maxLevel = 3, TermCriteria crit = + TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01), + int flags = 0, + double minEigThreshold = 1e-4); +}; + +//! @} video_track + +} // cv + +#endif diff --git a/LaiPuLaser/OpenCV/include/opencv2/video/video.hpp b/LaiPuLaser/OpenCV/include/opencv2/video/video.hpp new file mode 100644 index 0000000..8267b85 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/video/video.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/video.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio.hpp b/LaiPuLaser/OpenCV/include/opencv2/videoio.hpp new file mode 100644 index 0000000..d31985b --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio.hpp @@ -0,0 +1,949 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_VIDEOIO_HPP +#define OPENCV_VIDEOIO_HPP + +#include "opencv2/core.hpp" + +/** + @defgroup videoio Video I/O + + @brief Read and write video or images sequence with OpenCV + + ### See also: + - @ref videoio_overview + - Tutorials: @ref tutorial_table_of_content_videoio + @{ + @defgroup videoio_flags_base Flags for video I/O + @defgroup videoio_flags_others Additional flags for video I/O API backends + @defgroup videoio_c C API for video I/O + @defgroup videoio_ios iOS glue for video I/O + @defgroup videoio_winrt WinRT glue for video I/O + @defgroup videoio_registry Query I/O API backends registry + @} +*/ + +////////////////////////////////// video io ///////////////////////////////// + +typedef struct CvCapture CvCapture; +typedef struct CvVideoWriter CvVideoWriter; + +namespace cv +{ + +//! @addtogroup videoio +//! @{ + +//! @addtogroup videoio_flags_base +//! @{ + + +/** @brief %VideoCapture API backends identifier. + +Select preferred API for a capture object. +To be used in the VideoCapture::VideoCapture() constructor or VideoCapture::open() + +@note Backends are available only if they have been built with your OpenCV binaries. +See @ref videoio_overview for more information. +*/ +enum VideoCaptureAPIs { + CAP_ANY = 0, //!< Auto detect == 0 + CAP_VFW = 200, //!< Video For Windows (obsolete, removed) + CAP_V4L = 200, //!< V4L/V4L2 capturing support + CAP_V4L2 = CAP_V4L, //!< Same as CAP_V4L + CAP_FIREWIRE = 300, //!< IEEE 1394 drivers + CAP_FIREWARE = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE + CAP_IEEE1394 = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE + CAP_DC1394 = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE + CAP_CMU1394 = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE + CAP_QT = 500, //!< QuickTime (obsolete, removed) + CAP_UNICAP = 600, //!< Unicap drivers (obsolete, removed) + CAP_DSHOW = 700, //!< DirectShow (via videoInput) + CAP_PVAPI = 800, //!< PvAPI, Prosilica GigE SDK + CAP_OPENNI = 900, //!< OpenNI (for Kinect) + CAP_OPENNI_ASUS = 910, //!< OpenNI (for Asus Xtion) + CAP_ANDROID = 1000, //!< Android - not used + CAP_XIAPI = 1100, //!< XIMEA Camera API + CAP_AVFOUNDATION = 1200, //!< AVFoundation framework for iOS (OS X Lion will have the same API) + CAP_GIGANETIX = 1300, //!< Smartek Giganetix GigEVisionSDK + CAP_MSMF = 1400, //!< Microsoft Media Foundation (via videoInput) + CAP_WINRT = 1410, //!< Microsoft Windows Runtime using Media Foundation + CAP_INTELPERC = 1500, //!< RealSense (former Intel Perceptual Computing SDK) + CAP_REALSENSE = 1500, //!< Synonym for CAP_INTELPERC + CAP_OPENNI2 = 1600, //!< OpenNI2 (for Kinect) + CAP_OPENNI2_ASUS = 1610, //!< OpenNI2 (for Asus Xtion and Occipital Structure sensors) + CAP_GPHOTO2 = 1700, //!< gPhoto2 connection + CAP_GSTREAMER = 1800, //!< GStreamer + CAP_FFMPEG = 1900, //!< Open and record video file or stream using the FFMPEG library + CAP_IMAGES = 2000, //!< OpenCV Image Sequence (e.g. img_%02d.jpg) + CAP_ARAVIS = 2100, //!< Aravis SDK + CAP_OPENCV_MJPEG = 2200, //!< Built-in OpenCV MotionJPEG codec + CAP_INTEL_MFX = 2300, //!< Intel MediaSDK + CAP_XINE = 2400, //!< XINE engine (Linux) + }; + +/** @brief %VideoCapture generic properties identifier. + + Reading / writing properties involves many layers. Some unexpected result might happens along this chain. + Effective behaviour depends from device hardware, driver and API Backend. + @sa videoio_flags_others, VideoCapture::get(), VideoCapture::set() +*/ +enum VideoCaptureProperties { + CAP_PROP_POS_MSEC =0, //!< Current position of the video file in milliseconds. + CAP_PROP_POS_FRAMES =1, //!< 0-based index of the frame to be decoded/captured next. + CAP_PROP_POS_AVI_RATIO =2, //!< Relative position of the video file: 0=start of the film, 1=end of the film. + CAP_PROP_FRAME_WIDTH =3, //!< Width of the frames in the video stream. + CAP_PROP_FRAME_HEIGHT =4, //!< Height of the frames in the video stream. + CAP_PROP_FPS =5, //!< Frame rate. + CAP_PROP_FOURCC =6, //!< 4-character code of codec. see VideoWriter::fourcc . + CAP_PROP_FRAME_COUNT =7, //!< Number of frames in the video file. + CAP_PROP_FORMAT =8, //!< Format of the %Mat objects returned by VideoCapture::retrieve(). + CAP_PROP_MODE =9, //!< Backend-specific value indicating the current capture mode. + CAP_PROP_BRIGHTNESS =10, //!< Brightness of the image (only for those cameras that support). + CAP_PROP_CONTRAST =11, //!< Contrast of the image (only for cameras). + CAP_PROP_SATURATION =12, //!< Saturation of the image (only for cameras). + CAP_PROP_HUE =13, //!< Hue of the image (only for cameras). + CAP_PROP_GAIN =14, //!< Gain of the image (only for those cameras that support). + CAP_PROP_EXPOSURE =15, //!< Exposure (only for those cameras that support). + CAP_PROP_CONVERT_RGB =16, //!< Boolean flags indicating whether images should be converted to RGB. + CAP_PROP_WHITE_BALANCE_BLUE_U =17, //!< Currently unsupported. + CAP_PROP_RECTIFICATION =18, //!< Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently). + CAP_PROP_MONOCHROME =19, + CAP_PROP_SHARPNESS =20, + CAP_PROP_AUTO_EXPOSURE =21, //!< DC1394: exposure control done by camera, user can adjust reference level using this feature. + CAP_PROP_GAMMA =22, + CAP_PROP_TEMPERATURE =23, + CAP_PROP_TRIGGER =24, + CAP_PROP_TRIGGER_DELAY =25, + CAP_PROP_WHITE_BALANCE_RED_V =26, + CAP_PROP_ZOOM =27, + CAP_PROP_FOCUS =28, + CAP_PROP_GUID =29, + CAP_PROP_ISO_SPEED =30, + CAP_PROP_BACKLIGHT =32, + CAP_PROP_PAN =33, + CAP_PROP_TILT =34, + CAP_PROP_ROLL =35, + CAP_PROP_IRIS =36, + CAP_PROP_SETTINGS =37, //!< Pop up video/camera filter dialog (note: only supported by DSHOW backend currently. The property value is ignored) + CAP_PROP_BUFFERSIZE =38, + CAP_PROP_AUTOFOCUS =39, + CAP_PROP_SAR_NUM =40, //!< Sample aspect ratio: num/den (num) + CAP_PROP_SAR_DEN =41, //!< Sample aspect ratio: num/den (den) + CAP_PROP_BACKEND =42, //!< Current backend (enum VideoCaptureAPIs). Read-only property + CAP_PROP_CHANNEL =43, //!< Video input or Channel Number (only for those cameras that support) + CAP_PROP_AUTO_WB =44, //!< enable/ disable auto white-balance + CAP_PROP_WB_TEMPERATURE=45, //!< white-balance color temperature +#ifndef CV_DOXYGEN + CV__CAP_PROP_LATEST +#endif + }; + +/** @brief %VideoWriter generic properties identifier. + @sa VideoWriter::get(), VideoWriter::set() +*/ +enum VideoWriterProperties { + VIDEOWRITER_PROP_QUALITY = 1, //!< Current quality (0..100%) of the encoded videostream. Can be adjusted dynamically in some codecs. + VIDEOWRITER_PROP_FRAMEBYTES = 2, //!< (Read-only): Size of just encoded video frame. Note that the encoding order may be different from representation order. + VIDEOWRITER_PROP_NSTRIPES = 3 //!< Number of stripes for parallel encoding. -1 for auto detection. +}; + +//! @} videoio_flags_base + +//! @addtogroup videoio_flags_others +//! @{ + +/** @name IEEE 1394 drivers + @{ +*/ + +/** @brief Modes of the IEEE 1394 controlling registers +(can be: auto, manual, auto single push, absolute Latter allowed with any other mode) +every feature can have only one mode turned on at a time +*/ +enum { CAP_PROP_DC1394_OFF = -4, //!< turn the feature off (not controlled manually nor automatically). + CAP_PROP_DC1394_MODE_MANUAL = -3, //!< set automatically when a value of the feature is set by the user. + CAP_PROP_DC1394_MODE_AUTO = -2, + CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1, + CAP_PROP_DC1394_MAX = 31 + }; + +//! @} IEEE 1394 drivers + +/** @name OpenNI (for Kinect) + @{ +*/ + +//! OpenNI map generators +enum { CAP_OPENNI_DEPTH_GENERATOR = 1 << 31, + CAP_OPENNI_IMAGE_GENERATOR = 1 << 30, + CAP_OPENNI_IR_GENERATOR = 1 << 29, + CAP_OPENNI_GENERATORS_MASK = CAP_OPENNI_DEPTH_GENERATOR + CAP_OPENNI_IMAGE_GENERATOR + CAP_OPENNI_IR_GENERATOR + }; + +//! Properties of cameras available through OpenNI backend +enum { CAP_PROP_OPENNI_OUTPUT_MODE = 100, + CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, //!< In mm + CAP_PROP_OPENNI_BASELINE = 102, //!< In mm + CAP_PROP_OPENNI_FOCAL_LENGTH = 103, //!< In pixels + CAP_PROP_OPENNI_REGISTRATION = 104, //!< Flag that synchronizes the remapping depth map to image map + //!< by changing depth generator's view point (if the flag is "on") or + //!< sets this view point to its normal one (if the flag is "off"). + CAP_PROP_OPENNI_REGISTRATION_ON = CAP_PROP_OPENNI_REGISTRATION, + CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105, + CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106, + CAP_PROP_OPENNI_CIRCLE_BUFFER = 107, + CAP_PROP_OPENNI_MAX_TIME_DURATION = 108, + CAP_PROP_OPENNI_GENERATOR_PRESENT = 109, + CAP_PROP_OPENNI2_SYNC = 110, + CAP_PROP_OPENNI2_MIRROR = 111 + }; + +//! OpenNI shortcuts +enum { CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT, + CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_OUTPUT_MODE, + CAP_OPENNI_DEPTH_GENERATOR_PRESENT = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT, + CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_BASELINE, + CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_FOCAL_LENGTH, + CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_REGISTRATION, + CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION, + CAP_OPENNI_IR_GENERATOR_PRESENT = CAP_OPENNI_IR_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT, + }; + +//! OpenNI data given from depth generator +enum { CAP_OPENNI_DEPTH_MAP = 0, //!< Depth values in mm (CV_16UC1) + CAP_OPENNI_POINT_CLOUD_MAP = 1, //!< XYZ in meters (CV_32FC3) + CAP_OPENNI_DISPARITY_MAP = 2, //!< Disparity in pixels (CV_8UC1) + CAP_OPENNI_DISPARITY_MAP_32F = 3, //!< Disparity in pixels (CV_32FC1) + CAP_OPENNI_VALID_DEPTH_MASK = 4, //!< CV_8UC1 + + CAP_OPENNI_BGR_IMAGE = 5, //!< Data given from RGB image generator + CAP_OPENNI_GRAY_IMAGE = 6, //!< Data given from RGB image generator + + CAP_OPENNI_IR_IMAGE = 7 //!< Data given from IR image generator + }; + +//! Supported output modes of OpenNI image generator +enum { CAP_OPENNI_VGA_30HZ = 0, + CAP_OPENNI_SXGA_15HZ = 1, + CAP_OPENNI_SXGA_30HZ = 2, + CAP_OPENNI_QVGA_30HZ = 3, + CAP_OPENNI_QVGA_60HZ = 4 + }; + +//! @} OpenNI + +/** @name GStreamer + @{ +*/ + +enum { CAP_PROP_GSTREAMER_QUEUE_LENGTH = 200 //!< Default is 1 + }; + +//! @} GStreamer + +/** @name PvAPI, Prosilica GigE SDK + @{ +*/ + +//! PVAPI +enum { CAP_PROP_PVAPI_MULTICASTIP = 300, //!< IP for enable multicast master mode. 0 for disable multicast. + CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, //!< FrameStartTriggerMode: Determines how a frame is initiated. + CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, //!< Horizontal sub-sampling of the image. + CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, //!< Vertical sub-sampling of the image. + CAP_PROP_PVAPI_BINNINGX = 304, //!< Horizontal binning factor. + CAP_PROP_PVAPI_BINNINGY = 305, //!< Vertical binning factor. + CAP_PROP_PVAPI_PIXELFORMAT = 306 //!< Pixel format. + }; + +//! PVAPI: FrameStartTriggerMode +enum { CAP_PVAPI_FSTRIGMODE_FREERUN = 0, //!< Freerun + CAP_PVAPI_FSTRIGMODE_SYNCIN1 = 1, //!< SyncIn1 + CAP_PVAPI_FSTRIGMODE_SYNCIN2 = 2, //!< SyncIn2 + CAP_PVAPI_FSTRIGMODE_FIXEDRATE = 3, //!< FixedRate + CAP_PVAPI_FSTRIGMODE_SOFTWARE = 4 //!< Software + }; + +//! PVAPI: DecimationHorizontal, DecimationVertical +enum { CAP_PVAPI_DECIMATION_OFF = 1, //!< Off + CAP_PVAPI_DECIMATION_2OUTOF4 = 2, //!< 2 out of 4 decimation + CAP_PVAPI_DECIMATION_2OUTOF8 = 4, //!< 2 out of 8 decimation + CAP_PVAPI_DECIMATION_2OUTOF16 = 8 //!< 2 out of 16 decimation + }; + +//! PVAPI: PixelFormat +enum { CAP_PVAPI_PIXELFORMAT_MONO8 = 1, //!< Mono8 + CAP_PVAPI_PIXELFORMAT_MONO16 = 2, //!< Mono16 + CAP_PVAPI_PIXELFORMAT_BAYER8 = 3, //!< Bayer8 + CAP_PVAPI_PIXELFORMAT_BAYER16 = 4, //!< Bayer16 + CAP_PVAPI_PIXELFORMAT_RGB24 = 5, //!< Rgb24 + CAP_PVAPI_PIXELFORMAT_BGR24 = 6, //!< Bgr24 + CAP_PVAPI_PIXELFORMAT_RGBA32 = 7, //!< Rgba32 + CAP_PVAPI_PIXELFORMAT_BGRA32 = 8, //!< Bgra32 + }; + +//! @} PvAPI + +/** @name XIMEA Camera API + @{ +*/ + +//! Properties of cameras available through XIMEA SDK backend +enum { CAP_PROP_XI_DOWNSAMPLING = 400, //!< Change image resolution by binning or skipping. + CAP_PROP_XI_DATA_FORMAT = 401, //!< Output data format. + CAP_PROP_XI_OFFSET_X = 402, //!< Horizontal offset from the origin to the area of interest (in pixels). + CAP_PROP_XI_OFFSET_Y = 403, //!< Vertical offset from the origin to the area of interest (in pixels). + CAP_PROP_XI_TRG_SOURCE = 404, //!< Defines source of trigger. + CAP_PROP_XI_TRG_SOFTWARE = 405, //!< Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. + CAP_PROP_XI_GPI_SELECTOR = 406, //!< Selects general purpose input. + CAP_PROP_XI_GPI_MODE = 407, //!< Set general purpose input mode. + CAP_PROP_XI_GPI_LEVEL = 408, //!< Get general purpose level. + CAP_PROP_XI_GPO_SELECTOR = 409, //!< Selects general purpose output. + CAP_PROP_XI_GPO_MODE = 410, //!< Set general purpose output mode. + CAP_PROP_XI_LED_SELECTOR = 411, //!< Selects camera signalling LED. + CAP_PROP_XI_LED_MODE = 412, //!< Define camera signalling LED functionality. + CAP_PROP_XI_MANUAL_WB = 413, //!< Calculates White Balance(must be called during acquisition). + CAP_PROP_XI_AUTO_WB = 414, //!< Automatic white balance. + CAP_PROP_XI_AEAG = 415, //!< Automatic exposure/gain. + CAP_PROP_XI_EXP_PRIORITY = 416, //!< Exposure priority (0.5 - exposure 50%, gain 50%). + CAP_PROP_XI_AE_MAX_LIMIT = 417, //!< Maximum limit of exposure in AEAG procedure. + CAP_PROP_XI_AG_MAX_LIMIT = 418, //!< Maximum limit of gain in AEAG procedure. + CAP_PROP_XI_AEAG_LEVEL = 419, //!< Average intensity of output signal AEAG should achieve(in %). + CAP_PROP_XI_TIMEOUT = 420, //!< Image capture timeout in milliseconds. + CAP_PROP_XI_EXPOSURE = 421, //!< Exposure time in microseconds. + CAP_PROP_XI_EXPOSURE_BURST_COUNT = 422, //!< Sets the number of times of exposure in one frame. + CAP_PROP_XI_GAIN_SELECTOR = 423, //!< Gain selector for parameter Gain allows to select different type of gains. + CAP_PROP_XI_GAIN = 424, //!< Gain in dB. + CAP_PROP_XI_DOWNSAMPLING_TYPE = 426, //!< Change image downsampling type. + CAP_PROP_XI_BINNING_SELECTOR = 427, //!< Binning engine selector. + CAP_PROP_XI_BINNING_VERTICAL = 428, //!< Vertical Binning - number of vertical photo-sensitive cells to combine together. + CAP_PROP_XI_BINNING_HORIZONTAL = 429, //!< Horizontal Binning - number of horizontal photo-sensitive cells to combine together. + CAP_PROP_XI_BINNING_PATTERN = 430, //!< Binning pattern type. + CAP_PROP_XI_DECIMATION_SELECTOR = 431, //!< Decimation engine selector. + CAP_PROP_XI_DECIMATION_VERTICAL = 432, //!< Vertical Decimation - vertical sub-sampling of the image - reduces the vertical resolution of the image by the specified vertical decimation factor. + CAP_PROP_XI_DECIMATION_HORIZONTAL = 433, //!< Horizontal Decimation - horizontal sub-sampling of the image - reduces the horizontal resolution of the image by the specified vertical decimation factor. + CAP_PROP_XI_DECIMATION_PATTERN = 434, //!< Decimation pattern type. + CAP_PROP_XI_TEST_PATTERN_GENERATOR_SELECTOR = 587, //!< Selects which test pattern generator is controlled by the TestPattern feature. + CAP_PROP_XI_TEST_PATTERN = 588, //!< Selects which test pattern type is generated by the selected generator. + CAP_PROP_XI_IMAGE_DATA_FORMAT = 435, //!< Output data format. + CAP_PROP_XI_SHUTTER_TYPE = 436, //!< Change sensor shutter type(CMOS sensor). + CAP_PROP_XI_SENSOR_TAPS = 437, //!< Number of taps. + CAP_PROP_XI_AEAG_ROI_OFFSET_X = 439, //!< Automatic exposure/gain ROI offset X. + CAP_PROP_XI_AEAG_ROI_OFFSET_Y = 440, //!< Automatic exposure/gain ROI offset Y. + CAP_PROP_XI_AEAG_ROI_WIDTH = 441, //!< Automatic exposure/gain ROI Width. + CAP_PROP_XI_AEAG_ROI_HEIGHT = 442, //!< Automatic exposure/gain ROI Height. + CAP_PROP_XI_BPC = 445, //!< Correction of bad pixels. + CAP_PROP_XI_WB_KR = 448, //!< White balance red coefficient. + CAP_PROP_XI_WB_KG = 449, //!< White balance green coefficient. + CAP_PROP_XI_WB_KB = 450, //!< White balance blue coefficient. + CAP_PROP_XI_WIDTH = 451, //!< Width of the Image provided by the device (in pixels). + CAP_PROP_XI_HEIGHT = 452, //!< Height of the Image provided by the device (in pixels). + CAP_PROP_XI_REGION_SELECTOR = 589, //!< Selects Region in Multiple ROI which parameters are set by width, height, ... ,region mode. + CAP_PROP_XI_REGION_MODE = 595, //!< Activates/deactivates Region selected by Region Selector. + CAP_PROP_XI_LIMIT_BANDWIDTH = 459, //!< Set/get bandwidth(datarate)(in Megabits). + CAP_PROP_XI_SENSOR_DATA_BIT_DEPTH = 460, //!< Sensor output data bit depth. + CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH = 461, //!< Device output data bit depth. + CAP_PROP_XI_IMAGE_DATA_BIT_DEPTH = 462, //!< bitdepth of data returned by function xiGetImage. + CAP_PROP_XI_OUTPUT_DATA_PACKING = 463, //!< Device output data packing (or grouping) enabled. Packing could be enabled if output_data_bit_depth > 8 and packing capability is available. + CAP_PROP_XI_OUTPUT_DATA_PACKING_TYPE = 464, //!< Data packing type. Some cameras supports only specific packing type. + CAP_PROP_XI_IS_COOLED = 465, //!< Returns 1 for cameras that support cooling. + CAP_PROP_XI_COOLING = 466, //!< Start camera cooling. + CAP_PROP_XI_TARGET_TEMP = 467, //!< Set sensor target temperature for cooling. + CAP_PROP_XI_CHIP_TEMP = 468, //!< Camera sensor temperature. + CAP_PROP_XI_HOUS_TEMP = 469, //!< Camera housing temperature. + CAP_PROP_XI_HOUS_BACK_SIDE_TEMP = 590, //!< Camera housing back side temperature. + CAP_PROP_XI_SENSOR_BOARD_TEMP = 596, //!< Camera sensor board temperature. + CAP_PROP_XI_CMS = 470, //!< Mode of color management system. + CAP_PROP_XI_APPLY_CMS = 471, //!< Enable applying of CMS profiles to xiGetImage (see XI_PRM_INPUT_CMS_PROFILE, XI_PRM_OUTPUT_CMS_PROFILE). + CAP_PROP_XI_IMAGE_IS_COLOR = 474, //!< Returns 1 for color cameras. + CAP_PROP_XI_COLOR_FILTER_ARRAY = 475, //!< Returns color filter array type of RAW data. + CAP_PROP_XI_GAMMAY = 476, //!< Luminosity gamma. + CAP_PROP_XI_GAMMAC = 477, //!< Chromaticity gamma. + CAP_PROP_XI_SHARPNESS = 478, //!< Sharpness Strength. + CAP_PROP_XI_CC_MATRIX_00 = 479, //!< Color Correction Matrix element [0][0]. + CAP_PROP_XI_CC_MATRIX_01 = 480, //!< Color Correction Matrix element [0][1]. + CAP_PROP_XI_CC_MATRIX_02 = 481, //!< Color Correction Matrix element [0][2]. + CAP_PROP_XI_CC_MATRIX_03 = 482, //!< Color Correction Matrix element [0][3]. + CAP_PROP_XI_CC_MATRIX_10 = 483, //!< Color Correction Matrix element [1][0]. + CAP_PROP_XI_CC_MATRIX_11 = 484, //!< Color Correction Matrix element [1][1]. + CAP_PROP_XI_CC_MATRIX_12 = 485, //!< Color Correction Matrix element [1][2]. + CAP_PROP_XI_CC_MATRIX_13 = 486, //!< Color Correction Matrix element [1][3]. + CAP_PROP_XI_CC_MATRIX_20 = 487, //!< Color Correction Matrix element [2][0]. + CAP_PROP_XI_CC_MATRIX_21 = 488, //!< Color Correction Matrix element [2][1]. + CAP_PROP_XI_CC_MATRIX_22 = 489, //!< Color Correction Matrix element [2][2]. + CAP_PROP_XI_CC_MATRIX_23 = 490, //!< Color Correction Matrix element [2][3]. + CAP_PROP_XI_CC_MATRIX_30 = 491, //!< Color Correction Matrix element [3][0]. + CAP_PROP_XI_CC_MATRIX_31 = 492, //!< Color Correction Matrix element [3][1]. + CAP_PROP_XI_CC_MATRIX_32 = 493, //!< Color Correction Matrix element [3][2]. + CAP_PROP_XI_CC_MATRIX_33 = 494, //!< Color Correction Matrix element [3][3]. + CAP_PROP_XI_DEFAULT_CC_MATRIX = 495, //!< Set default Color Correction Matrix. + CAP_PROP_XI_TRG_SELECTOR = 498, //!< Selects the type of trigger. + CAP_PROP_XI_ACQ_FRAME_BURST_COUNT = 499, //!< Sets number of frames acquired by burst. This burst is used only if trigger is set to FrameBurstStart. + CAP_PROP_XI_DEBOUNCE_EN = 507, //!< Enable/Disable debounce to selected GPI. + CAP_PROP_XI_DEBOUNCE_T0 = 508, //!< Debounce time (x * 10us). + CAP_PROP_XI_DEBOUNCE_T1 = 509, //!< Debounce time (x * 10us). + CAP_PROP_XI_DEBOUNCE_POL = 510, //!< Debounce polarity (pol = 1 t0 - falling edge, t1 - rising edge). + CAP_PROP_XI_LENS_MODE = 511, //!< Status of lens control interface. This shall be set to XI_ON before any Lens operations. + CAP_PROP_XI_LENS_APERTURE_VALUE = 512, //!< Current lens aperture value in stops. Examples: 2.8, 4, 5.6, 8, 11. + CAP_PROP_XI_LENS_FOCUS_MOVEMENT_VALUE = 513, //!< Lens current focus movement value to be used by XI_PRM_LENS_FOCUS_MOVE in motor steps. + CAP_PROP_XI_LENS_FOCUS_MOVE = 514, //!< Moves lens focus motor by steps set in XI_PRM_LENS_FOCUS_MOVEMENT_VALUE. + CAP_PROP_XI_LENS_FOCUS_DISTANCE = 515, //!< Lens focus distance in cm. + CAP_PROP_XI_LENS_FOCAL_LENGTH = 516, //!< Lens focal distance in mm. + CAP_PROP_XI_LENS_FEATURE_SELECTOR = 517, //!< Selects the current feature which is accessible by XI_PRM_LENS_FEATURE. + CAP_PROP_XI_LENS_FEATURE = 518, //!< Allows access to lens feature value currently selected by XI_PRM_LENS_FEATURE_SELECTOR. + CAP_PROP_XI_DEVICE_MODEL_ID = 521, //!< Returns device model id. + CAP_PROP_XI_DEVICE_SN = 522, //!< Returns device serial number. + CAP_PROP_XI_IMAGE_DATA_FORMAT_RGB32_ALPHA = 529, //!< The alpha channel of RGB32 output image format. + CAP_PROP_XI_IMAGE_PAYLOAD_SIZE = 530, //!< Buffer size in bytes sufficient for output image returned by xiGetImage. + CAP_PROP_XI_TRANSPORT_PIXEL_FORMAT = 531, //!< Current format of pixels on transport layer. + CAP_PROP_XI_SENSOR_CLOCK_FREQ_HZ = 532, //!< Sensor clock frequency in Hz. + CAP_PROP_XI_SENSOR_CLOCK_FREQ_INDEX = 533, //!< Sensor clock frequency index. Sensor with selected frequencies have possibility to set the frequency only by this index. + CAP_PROP_XI_SENSOR_OUTPUT_CHANNEL_COUNT = 534, //!< Number of output channels from sensor used for data transfer. + CAP_PROP_XI_FRAMERATE = 535, //!< Define framerate in Hz. + CAP_PROP_XI_COUNTER_SELECTOR = 536, //!< Select counter. + CAP_PROP_XI_COUNTER_VALUE = 537, //!< Counter status. + CAP_PROP_XI_ACQ_TIMING_MODE = 538, //!< Type of sensor frames timing. + CAP_PROP_XI_AVAILABLE_BANDWIDTH = 539, //!< Calculate and returns available interface bandwidth(int Megabits). + CAP_PROP_XI_BUFFER_POLICY = 540, //!< Data move policy. + CAP_PROP_XI_LUT_EN = 541, //!< Activates LUT. + CAP_PROP_XI_LUT_INDEX = 542, //!< Control the index (offset) of the coefficient to access in the LUT. + CAP_PROP_XI_LUT_VALUE = 543, //!< Value at entry LUTIndex of the LUT. + CAP_PROP_XI_TRG_DELAY = 544, //!< Specifies the delay in microseconds (us) to apply after the trigger reception before activating it. + CAP_PROP_XI_TS_RST_MODE = 545, //!< Defines how time stamp reset engine will be armed. + CAP_PROP_XI_TS_RST_SOURCE = 546, //!< Defines which source will be used for timestamp reset. Writing this parameter will trigger settings of engine (arming). + CAP_PROP_XI_IS_DEVICE_EXIST = 547, //!< Returns 1 if camera connected and works properly. + CAP_PROP_XI_ACQ_BUFFER_SIZE = 548, //!< Acquisition buffer size in buffer_size_unit. Default bytes. + CAP_PROP_XI_ACQ_BUFFER_SIZE_UNIT = 549, //!< Acquisition buffer size unit in bytes. Default 1. E.g. Value 1024 means that buffer_size is in KiBytes. + CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_SIZE = 550, //!< Acquisition transport buffer size in bytes. + CAP_PROP_XI_BUFFERS_QUEUE_SIZE = 551, //!< Queue of field/frame buffers. + CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_COMMIT = 552, //!< Number of buffers to commit to low level. + CAP_PROP_XI_RECENT_FRAME = 553, //!< GetImage returns most recent frame. + CAP_PROP_XI_DEVICE_RESET = 554, //!< Resets the camera to default state. + CAP_PROP_XI_COLUMN_FPN_CORRECTION = 555, //!< Correction of column FPN. + CAP_PROP_XI_ROW_FPN_CORRECTION = 591, //!< Correction of row FPN. + CAP_PROP_XI_SENSOR_MODE = 558, //!< Current sensor mode. Allows to select sensor mode by one integer. Setting of this parameter affects: image dimensions and downsampling. + CAP_PROP_XI_HDR = 559, //!< Enable High Dynamic Range feature. + CAP_PROP_XI_HDR_KNEEPOINT_COUNT = 560, //!< The number of kneepoints in the PWLR. + CAP_PROP_XI_HDR_T1 = 561, //!< Position of first kneepoint(in % of XI_PRM_EXPOSURE). + CAP_PROP_XI_HDR_T2 = 562, //!< Position of second kneepoint (in % of XI_PRM_EXPOSURE). + CAP_PROP_XI_KNEEPOINT1 = 563, //!< Value of first kneepoint (% of sensor saturation). + CAP_PROP_XI_KNEEPOINT2 = 564, //!< Value of second kneepoint (% of sensor saturation). + CAP_PROP_XI_IMAGE_BLACK_LEVEL = 565, //!< Last image black level counts. Can be used for Offline processing to recall it. + CAP_PROP_XI_HW_REVISION = 571, //!< Returns hardware revision number. + CAP_PROP_XI_DEBUG_LEVEL = 572, //!< Set debug level. + CAP_PROP_XI_AUTO_BANDWIDTH_CALCULATION = 573, //!< Automatic bandwidth calculation. + CAP_PROP_XI_FFS_FILE_ID = 594, //!< File number. + CAP_PROP_XI_FFS_FILE_SIZE = 580, //!< Size of file. + CAP_PROP_XI_FREE_FFS_SIZE = 581, //!< Size of free camera FFS. + CAP_PROP_XI_USED_FFS_SIZE = 582, //!< Size of used camera FFS. + CAP_PROP_XI_FFS_ACCESS_KEY = 583, //!< Setting of key enables file operations on some cameras. + CAP_PROP_XI_SENSOR_FEATURE_SELECTOR = 585, //!< Selects the current feature which is accessible by XI_PRM_SENSOR_FEATURE_VALUE. + CAP_PROP_XI_SENSOR_FEATURE_VALUE = 586, //!< Allows access to sensor feature value currently selected by XI_PRM_SENSOR_FEATURE_SELECTOR. + }; + +//! @} XIMEA + +/** @name AVFoundation framework for iOS + OS X Lion will have the same API + @{ +*/ + +//! Properties of cameras available through AVFOUNDATION backend +enum { CAP_PROP_IOS_DEVICE_FOCUS = 9001, + CAP_PROP_IOS_DEVICE_EXPOSURE = 9002, + CAP_PROP_IOS_DEVICE_FLASH = 9003, + CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004, + CAP_PROP_IOS_DEVICE_TORCH = 9005 + }; + +/** @name Smartek Giganetix GigEVisionSDK + @{ +*/ + +//! Properties of cameras available through Smartek Giganetix Ethernet Vision backend +/* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */ +enum { CAP_PROP_GIGA_FRAME_OFFSET_X = 10001, + CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002, + CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003, + CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004, + CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005, + CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006 + }; + +//! @} Smartek + +/** @name Intel Perceptual Computing SDK + @{ +*/ +enum { CAP_PROP_INTELPERC_PROFILE_COUNT = 11001, + CAP_PROP_INTELPERC_PROFILE_IDX = 11002, + CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003, + CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004, + CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005, + CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006, + CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007 + }; + +//! Intel Perceptual Streams +enum { CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29, + CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28, + CAP_INTELPERC_IR_GENERATOR = 1 << 27, + CAP_INTELPERC_GENERATORS_MASK = CAP_INTELPERC_DEPTH_GENERATOR + CAP_INTELPERC_IMAGE_GENERATOR + CAP_INTELPERC_IR_GENERATOR + }; + +enum { CAP_INTELPERC_DEPTH_MAP = 0, //!< Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth. + CAP_INTELPERC_UVDEPTH_MAP = 1, //!< Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates. + CAP_INTELPERC_IR_MAP = 2, //!< Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam. + CAP_INTELPERC_IMAGE = 3 + }; + +//! @} Intel Perceptual + +/** @name gPhoto2 connection + @{ +*/ + +/** @brief gPhoto2 properties + +If `propertyId` is less than 0 then work on widget with that __additive inversed__ camera setting ID +Get IDs by using CAP_PROP_GPHOTO2_WIDGET_ENUMERATE. +@see CvCaptureCAM_GPHOTO2 for more info +*/ +enum { CAP_PROP_GPHOTO2_PREVIEW = 17001, //!< Capture only preview from liveview mode. + CAP_PROP_GPHOTO2_WIDGET_ENUMERATE = 17002, //!< Readonly, returns (const char *). + CAP_PROP_GPHOTO2_RELOAD_CONFIG = 17003, //!< Trigger, only by set. Reload camera settings. + CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE = 17004, //!< Reload all settings on set. + CAP_PROP_GPHOTO2_COLLECT_MSGS = 17005, //!< Collect messages with details. + CAP_PROP_GPHOTO2_FLUSH_MSGS = 17006, //!< Readonly, returns (const char *). + CAP_PROP_SPEED = 17007, //!< Exposure speed. Can be readonly, depends on camera program. + CAP_PROP_APERTURE = 17008, //!< Aperture. Can be readonly, depends on camera program. + CAP_PROP_EXPOSUREPROGRAM = 17009, //!< Camera exposure program. + CAP_PROP_VIEWFINDER = 17010 //!< Enter liveview mode. + }; + +//! @} gPhoto2 + + +/** @name Images backend + @{ +*/ + +/** @brief Images backend properties + +*/ +enum { CAP_PROP_IMAGES_BASE = 18000, + CAP_PROP_IMAGES_LAST = 19000 // excluding + }; + +//! @} Images + +//! @} videoio_flags_others + + +class IVideoCapture; + +/** @brief Class for video capturing from video files, image sequences or cameras. + +The class provides C++ API for capturing video from cameras or for reading video files and image sequences. + +Here is how the class can be used: +@include samples/cpp/videocapture_basic.cpp + +@note In @ref videoio_c "C API" the black-box structure `CvCapture` is used instead of %VideoCapture. +@note +- (C++) A basic sample on using the %VideoCapture interface can be found at + `OPENCV_SOURCE_CODE/samples/cpp/videocapture_starter.cpp` +- (Python) A basic sample on using the %VideoCapture interface can be found at + `OPENCV_SOURCE_CODE/samples/python/video.py` +- (Python) A multi threaded video processing sample can be found at + `OPENCV_SOURCE_CODE/samples/python/video_threaded.py` +- (Python) %VideoCapture sample showcasing some features of the Video4Linux2 backend + `OPENCV_SOURCE_CODE/samples/python/video_v4l2.py` + */ +class CV_EXPORTS_W VideoCapture +{ +public: + /** @brief Default constructor + @note In @ref videoio_c "C API", when you finished working with video, release CvCapture structure with + cvReleaseCapture(), or use Ptr\ that calls cvReleaseCapture() automatically in the + destructor. + */ + CV_WRAP VideoCapture(); + + /** @overload + @brief Opens a video file or a capturing device or an IP video stream for video capturing with API Preference + + @param filename it can be: + - name of video file (eg. `video.avi`) + - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) + - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). + Note that each video stream or IP camera feed has its own URL scheme. Please refer to the + documentation of source stream to know the right URL. + @param apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader + implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. + @sa The list of supported API backends cv::VideoCaptureAPIs + */ + CV_WRAP VideoCapture(const String& filename, int apiPreference = CAP_ANY); + + /** @overload + @brief Opens a camera for video capturing + + @param index id of the video capturing device to open. To open default camera using default backend just pass 0. + (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) + @param apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader + implementation if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. + + @sa The list of supported API backends cv::VideoCaptureAPIs + */ + CV_WRAP VideoCapture(int index, int apiPreference = CAP_ANY); + + /** @brief Default destructor + + The method first calls VideoCapture::release to close the already opened file or camera. + */ + virtual ~VideoCapture(); + + /** @brief Opens a video file or a capturing device or an IP video stream for video capturing. + + @overload + + Parameters are same as the constructor VideoCapture(const String& filename, int apiPreference = CAP_ANY) + @return `true` if the file has been successfully opened + + The method first calls VideoCapture::release to close the already opened file or camera. + */ + CV_WRAP virtual bool open(const String& filename, int apiPreference = CAP_ANY); + + /** @brief Opens a camera for video capturing + + @overload + + Parameters are same as the constructor VideoCapture(int index, int apiPreference = CAP_ANY) + @return `true` if the camera has been successfully opened. + + The method first calls VideoCapture::release to close the already opened file or camera. + */ + CV_WRAP virtual bool open(int index, int apiPreference = CAP_ANY); + + /** @brief Returns true if video capturing has been initialized already. + + If the previous call to VideoCapture constructor or VideoCapture::open() succeeded, the method returns + true. + */ + CV_WRAP virtual bool isOpened() const; + + /** @brief Closes video file or capturing device. + + The method is automatically called by subsequent VideoCapture::open and by VideoCapture + destructor. + + The C function also deallocates memory and clears \*capture pointer. + */ + CV_WRAP virtual void release(); + + /** @brief Grabs the next frame from video file or capturing device. + + @return `true` (non-zero) in the case of success. + + The method/function grabs the next frame from video file or camera and returns true (non-zero) in + the case of success. + + The primary use of the function is in multi-camera environments, especially when the cameras do not + have hardware synchronization. That is, you call VideoCapture::grab() for each camera and after that + call the slower method VideoCapture::retrieve() to decode and get frame from each camera. This way + the overhead on demosaicing or motion jpeg decompression etc. is eliminated and the retrieved frames + from different cameras will be closer in time. + + Also, when a connected camera is multi-head (for example, a stereo camera or a Kinect device), the + correct way of retrieving data from it is to call VideoCapture::grab() first and then call + VideoCapture::retrieve() one or more times with different values of the channel parameter. + + @ref tutorial_kinect_openni + */ + CV_WRAP virtual bool grab(); + + /** @brief Decodes and returns the grabbed video frame. + + @param [out] image the video frame is returned here. If no frames has been grabbed the image will be empty. + @param flag it could be a frame index or a driver specific flag + @return `false` if no frames has been grabbed + + The method decodes and returns the just grabbed frame. If no frames has been grabbed + (camera has been disconnected, or there are no more frames in video file), the method returns false + and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). + + @sa read() + + @note In @ref videoio_c "C API", functions cvRetrieveFrame() and cv.RetrieveFrame() return image stored inside the video + capturing structure. It is not allowed to modify or release the image! You can copy the frame using + cvCloneImage and then do whatever you want with the copy. + */ + CV_WRAP virtual bool retrieve(OutputArray image, int flag = 0); + + /** @brief Stream operator to read the next video frame. + @sa read() + */ + virtual VideoCapture& operator >> (CV_OUT Mat& image); + + /** @overload + @sa read() + */ + virtual VideoCapture& operator >> (CV_OUT UMat& image); + + /** @brief Grabs, decodes and returns the next video frame. + + @param [out] image the video frame is returned here. If no frames has been grabbed the image will be empty. + @return `false` if no frames has been grabbed + + The method/function combines VideoCapture::grab() and VideoCapture::retrieve() in one call. This is the + most convenient method for reading video files or capturing data from decode and returns the just + grabbed frame. If no frames has been grabbed (camera has been disconnected, or there are no more + frames in video file), the method returns false and the function returns empty image (with %cv::Mat, test it with Mat::empty()). + + @note In @ref videoio_c "C API", functions cvRetrieveFrame() and cv.RetrieveFrame() return image stored inside the video + capturing structure. It is not allowed to modify or release the image! You can copy the frame using + cvCloneImage and then do whatever you want with the copy. + */ + CV_WRAP virtual bool read(OutputArray image); + + /** @brief Sets a property in the VideoCapture. + + @param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) + or one from @ref videoio_flags_others + @param value Value of the property. + @return `true` if the property is supported by backend used by the VideoCapture instance. + @note Even if it returns `true` this doesn't ensure that the property + value has been accepted by the capture device. See note in VideoCapture::get() + */ + CV_WRAP virtual bool set(int propId, double value); + + /** @brief Returns the specified VideoCapture property + + @param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) + or one from @ref videoio_flags_others + @return Value for the specified property. Value 0 is returned when querying a property that is + not supported by the backend used by the VideoCapture instance. + + @note Reading / writing properties involves many layers. Some unexpected result might happens + along this chain. + @code {.txt} + `VideoCapture -> API Backend -> Operating System -> Device Driver -> Device Hardware` + @endcode + The returned value might be different from what really used by the device or it could be encoded + using device dependent rules (eg. steps or percentage). Effective behaviour depends from device + driver and API Backend + + */ + CV_WRAP virtual double get(int propId) const; + + /** @brief Returns used backend API name + + @note Stream should be opened. + */ + CV_WRAP String getBackendName() const; + +protected: + Ptr cap; + Ptr icap; +}; + +class IVideoWriter; + +/** @example samples/cpp/tutorial_code/videoio/video-write/video-write.cpp +Check @ref tutorial_video_write "the corresponding tutorial" for more details +*/ + +/** @example samples/cpp/videowriter_basic.cpp +An example using VideoCapture and VideoWriter class +*/ + +/** @brief Video writer class. + +The class provides C++ API for writing video files or image sequences. +*/ +class CV_EXPORTS_W VideoWriter +{ +public: + /** @brief Default constructors + + The constructors/functions initialize video writers. + - On Linux FFMPEG is used to write videos; + - On Windows FFMPEG or MSWF or DSHOW is used; + - On MacOSX AVFoundation is used. + */ + CV_WRAP VideoWriter(); + + /** @overload + @param filename Name of the output video file. + @param fourcc 4-character code of codec used to compress the frames. For example, + VideoWriter::fourcc('P','I','M','1') is a MPEG-1 codec, VideoWriter::fourcc('M','J','P','G') is a + motion-jpeg codec etc. List of codes can be obtained at [Video Codecs by + FOURCC](http://www.fourcc.org/codecs.php) page. FFMPEG backend with MP4 container natively uses + other values as fourcc code: see [ObjectType](http://www.mp4ra.org/codecs.html), + so you may receive a warning message from OpenCV about fourcc code conversion. + @param fps Framerate of the created video stream. + @param frameSize Size of the video frames. + @param isColor If it is not zero, the encoder will expect and encode color frames, otherwise it + will work with grayscale frames (the flag is currently supported on Windows only). + + @b Tips: + - With some backends `fourcc=-1` pops up the codec selection dialog from the system. + - To save image sequence use a proper filename (eg. `img_%02d.jpg`) and `fourcc=0` + OR `fps=0`. Use uncompressed image format (eg. `img_%02d.BMP`) to save raw frames. + - Most codecs are lossy. If you want lossless video file you need to use a lossless codecs + (eg. FFMPEG FFV1, Huffman HFYU, Lagarith LAGS, etc...) + - If FFMPEG is enabled, using `codec=0; fps=0;` you can create an uncompressed (raw) video file. + */ + CV_WRAP VideoWriter(const String& filename, int fourcc, double fps, + Size frameSize, bool isColor = true); + + /** @overload + The `apiPreference` parameter allows to specify API backends to use. Can be used to enforce a specific reader implementation + if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. + */ + CV_WRAP VideoWriter(const String& filename, int apiPreference, int fourcc, double fps, + Size frameSize, bool isColor = true); + + /** @brief Default destructor + + The method first calls VideoWriter::release to close the already opened file. + */ + virtual ~VideoWriter(); + + /** @brief Initializes or reinitializes video writer. + + The method opens video writer. Parameters are the same as in the constructor + VideoWriter::VideoWriter. + @return `true` if video writer has been successfully initialized + + The method first calls VideoWriter::release to close the already opened file. + */ + CV_WRAP virtual bool open(const String& filename, int fourcc, double fps, + Size frameSize, bool isColor = true); + + /** @overload + */ + CV_WRAP bool open(const String& filename, int apiPreference, int fourcc, double fps, + Size frameSize, bool isColor = true); + + /** @brief Returns true if video writer has been successfully initialized. + */ + CV_WRAP virtual bool isOpened() const; + + /** @brief Closes the video writer. + + The method is automatically called by subsequent VideoWriter::open and by the VideoWriter + destructor. + */ + CV_WRAP virtual void release(); + + /** @brief Stream operator to write the next video frame. + @sa write + */ + virtual VideoWriter& operator << (const Mat& image); + + /** @overload + @sa write + */ + virtual VideoWriter& operator << (const UMat& image); + + /** @brief Writes the next video frame + + @param image The written frame. In general, color images are expected in BGR format. + + The function/method writes the specified image to video file. It must have the same size as has + been specified when opening the video writer. + */ + CV_WRAP virtual void write(InputArray image); + + /** @brief Sets a property in the VideoWriter. + + @param propId Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY) + or one of @ref videoio_flags_others + + @param value Value of the property. + @return `true` if the property is supported by the backend used by the VideoWriter instance. + */ + CV_WRAP virtual bool set(int propId, double value); + + /** @brief Returns the specified VideoWriter property + + @param propId Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY) + or one of @ref videoio_flags_others + + @return Value for the specified property. Value 0 is returned when querying a property that is + not supported by the backend used by the VideoWriter instance. + */ + CV_WRAP virtual double get(int propId) const; + + /** @brief Concatenates 4 chars to a fourcc code + + @return a fourcc code + + This static method constructs the fourcc code of the codec to be used in the constructor + VideoWriter::VideoWriter or VideoWriter::open. + */ + CV_WRAP static int fourcc(char c1, char c2, char c3, char c4); + + /** @brief Returns used backend API name + + @note Stream should be opened. + */ + CV_WRAP String getBackendName() const; + +protected: + Ptr writer; + Ptr iwriter; + + static Ptr create(const String& filename, int fourcc, double fps, + Size frameSize, bool isColor = true); +}; + +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvCapture* obj) const; }; +template<> struct DefaultDeleter{ CV_EXPORTS void operator ()(CvVideoWriter* obj) const; }; + +//! @} videoio + +} // cv + +#endif //OPENCV_VIDEOIO_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio/cap_ios.h b/LaiPuLaser/OpenCV/include/opencv2/videoio/cap_ios.h new file mode 100644 index 0000000..207ad46 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio/cap_ios.h @@ -0,0 +1,150 @@ +/* For iOS video I/O + * by Eduard Feicho on 29/07/12 + * Copyright 2012. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#import +#import +#import +#import +#include "opencv2/core.hpp" + +//! @addtogroup videoio_ios +//! @{ + +/////////////////////////////////////// CvAbstractCamera ///////////////////////////////////// + +@class CvAbstractCamera; + +CV_EXPORTS @interface CvAbstractCamera : NSObject +{ + UIDeviceOrientation currentDeviceOrientation; + + BOOL cameraAvailable; +} + +@property (nonatomic, strong) AVCaptureSession* captureSession; +@property (nonatomic, strong) AVCaptureConnection* videoCaptureConnection; + +@property (nonatomic, readonly) BOOL running; +@property (nonatomic, readonly) BOOL captureSessionLoaded; + +@property (nonatomic, assign) int defaultFPS; +@property (nonatomic, readonly) AVCaptureVideoPreviewLayer *captureVideoPreviewLayer; +@property (nonatomic, assign) AVCaptureDevicePosition defaultAVCaptureDevicePosition; +@property (nonatomic, assign) AVCaptureVideoOrientation defaultAVCaptureVideoOrientation; +@property (nonatomic, assign) BOOL useAVCaptureVideoPreviewLayer; +@property (nonatomic, strong) NSString *const defaultAVCaptureSessionPreset; + +@property (nonatomic, assign) int imageWidth; +@property (nonatomic, assign) int imageHeight; + +@property (nonatomic, strong) UIView* parentView; + +- CV_UNUSED(start); +- CV_UNUSED(stop); +- CV_UNUSED(switchCameras); + +- (id)initWithParentView:(UIView*)parent; + +- CV_UNUSED(createCaptureOutput); +- CV_UNUSED(createVideoPreviewLayer); +- CV_UNUSED(updateOrientation); + +- CV_UNUSED(lockFocus); +- CV_UNUSED(unlockFocus); +- CV_UNUSED(lockExposure); +- CV_UNUSED(unlockExposure); +- CV_UNUSED(lockBalance); +- CV_UNUSED(unlockBalance); + +@end + +///////////////////////////////// CvVideoCamera /////////////////////////////////////////// + +@class CvVideoCamera; + +CV_EXPORTS @protocol CvVideoCameraDelegate + +#ifdef __cplusplus +// delegate method for processing image frames +- (void)processImage:(cv::Mat&)image; +#endif + +@end + +CV_EXPORTS @interface CvVideoCamera : CvAbstractCamera +{ + AVCaptureVideoDataOutput *videoDataOutput; + + dispatch_queue_t videoDataOutputQueue; + CALayer *customPreviewLayer; + + CMTime lastSampleTime; + +} + +@property (nonatomic, weak) id delegate; +@property (nonatomic, assign) BOOL grayscaleMode; + +@property (nonatomic, assign) BOOL recordVideo; +@property (nonatomic, assign) BOOL rotateVideo; +@property (nonatomic, strong) AVAssetWriterInput* recordAssetWriterInput; +@property (nonatomic, strong) AVAssetWriterInputPixelBufferAdaptor* recordPixelBufferAdaptor; +@property (nonatomic, strong) AVAssetWriter* recordAssetWriter; + +- (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation; +- CV_UNUSED(layoutPreviewLayer); +- CV_UNUSED(saveVideo); +- (NSURL *)videoFileURL; +- (NSString *)videoFileString; + + +@end + +///////////////////////////////// CvPhotoCamera /////////////////////////////////////////// + +@class CvPhotoCamera; + +CV_EXPORTS @protocol CvPhotoCameraDelegate + +- (void)photoCamera:(CvPhotoCamera*)photoCamera capturedImage:(UIImage *)image; +- (void)photoCameraCancel:(CvPhotoCamera*)photoCamera; + +@end + +CV_EXPORTS @interface CvPhotoCamera : CvAbstractCamera +{ + AVCaptureStillImageOutput *stillImageOutput; +} + +@property (nonatomic, weak) id delegate; + +- CV_UNUSED(takePicture); + +@end + +//! @} videoio_ios diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio/legacy/constants_c.h b/LaiPuLaser/OpenCV/include/opencv2/videoio/legacy/constants_c.h new file mode 100644 index 0000000..4445002 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio/legacy/constants_c.h @@ -0,0 +1,434 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_VIDEOIO_LEGACY_CONSTANTS_H +#define OPENCV_VIDEOIO_LEGACY_CONSTANTS_H + +enum +{ + CV_CAP_ANY =0, // autodetect + + CV_CAP_MIL =100, // MIL proprietary drivers + + CV_CAP_VFW =200, // platform native + CV_CAP_V4L =200, + CV_CAP_V4L2 =200, + + CV_CAP_FIREWARE =300, // IEEE 1394 drivers + CV_CAP_FIREWIRE =300, + CV_CAP_IEEE1394 =300, + CV_CAP_DC1394 =300, + CV_CAP_CMU1394 =300, + + CV_CAP_STEREO =400, // TYZX proprietary drivers + CV_CAP_TYZX =400, + CV_TYZX_LEFT =400, + CV_TYZX_RIGHT =401, + CV_TYZX_COLOR =402, + CV_TYZX_Z =403, + + CV_CAP_QT =500, // QuickTime + + CV_CAP_UNICAP =600, // Unicap drivers + + CV_CAP_DSHOW =700, // DirectShow (via videoInput) + CV_CAP_MSMF =1400, // Microsoft Media Foundation (via videoInput) + + CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK + + CV_CAP_OPENNI =900, // OpenNI (for Kinect) + CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion) + + CV_CAP_ANDROID =1000, // Android - not used + CV_CAP_ANDROID_BACK =CV_CAP_ANDROID+99, // Android back camera - not used + CV_CAP_ANDROID_FRONT =CV_CAP_ANDROID+98, // Android front camera - not used + + CV_CAP_XIAPI =1100, // XIMEA Camera API + + CV_CAP_AVFOUNDATION = 1200, // AVFoundation framework for iOS (OS X Lion will have the same API) + + CV_CAP_GIGANETIX = 1300, // Smartek Giganetix GigEVisionSDK + + CV_CAP_INTELPERC = 1500, // Intel Perceptual Computing + + CV_CAP_OPENNI2 = 1600, // OpenNI2 (for Kinect) + CV_CAP_GPHOTO2 = 1700, + CV_CAP_GSTREAMER = 1800, // GStreamer + CV_CAP_FFMPEG = 1900, // FFMPEG + CV_CAP_IMAGES = 2000, // OpenCV Image Sequence (e.g. img_%02d.jpg) + + CV_CAP_ARAVIS = 2100 // Aravis GigE SDK +}; + +enum +{ + // modes of the controlling registers (can be: auto, manual, auto single push, absolute Latter allowed with any other mode) + // every feature can have only one mode turned on at a time + CV_CAP_PROP_DC1394_OFF = -4, //turn the feature off (not controlled manually nor automatically) + CV_CAP_PROP_DC1394_MODE_MANUAL = -3, //set automatically when a value of the feature is set by the user + CV_CAP_PROP_DC1394_MODE_AUTO = -2, + CV_CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1, + CV_CAP_PROP_POS_MSEC =0, + CV_CAP_PROP_POS_FRAMES =1, + CV_CAP_PROP_POS_AVI_RATIO =2, + CV_CAP_PROP_FRAME_WIDTH =3, + CV_CAP_PROP_FRAME_HEIGHT =4, + CV_CAP_PROP_FPS =5, + CV_CAP_PROP_FOURCC =6, + CV_CAP_PROP_FRAME_COUNT =7, + CV_CAP_PROP_FORMAT =8, + CV_CAP_PROP_MODE =9, + CV_CAP_PROP_BRIGHTNESS =10, + CV_CAP_PROP_CONTRAST =11, + CV_CAP_PROP_SATURATION =12, + CV_CAP_PROP_HUE =13, + CV_CAP_PROP_GAIN =14, + CV_CAP_PROP_EXPOSURE =15, + CV_CAP_PROP_CONVERT_RGB =16, + CV_CAP_PROP_WHITE_BALANCE_BLUE_U =17, + CV_CAP_PROP_RECTIFICATION =18, + CV_CAP_PROP_MONOCHROME =19, + CV_CAP_PROP_SHARPNESS =20, + CV_CAP_PROP_AUTO_EXPOSURE =21, // exposure control done by camera, + // user can adjust reference level + // using this feature + CV_CAP_PROP_GAMMA =22, + CV_CAP_PROP_TEMPERATURE =23, + CV_CAP_PROP_TRIGGER =24, + CV_CAP_PROP_TRIGGER_DELAY =25, + CV_CAP_PROP_WHITE_BALANCE_RED_V =26, + CV_CAP_PROP_ZOOM =27, + CV_CAP_PROP_FOCUS =28, + CV_CAP_PROP_GUID =29, + CV_CAP_PROP_ISO_SPEED =30, + CV_CAP_PROP_MAX_DC1394 =31, + CV_CAP_PROP_BACKLIGHT =32, + CV_CAP_PROP_PAN =33, + CV_CAP_PROP_TILT =34, + CV_CAP_PROP_ROLL =35, + CV_CAP_PROP_IRIS =36, + CV_CAP_PROP_SETTINGS =37, + CV_CAP_PROP_BUFFERSIZE =38, + CV_CAP_PROP_AUTOFOCUS =39, + CV_CAP_PROP_SAR_NUM =40, + CV_CAP_PROP_SAR_DEN =41, + + CV_CAP_PROP_AUTOGRAB =1024, // property for videoio class CvCapture_Android only + CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING=1025, // readonly, tricky property, returns cpnst char* indeed + CV_CAP_PROP_PREVIEW_FORMAT=1026, // readonly, tricky property, returns cpnst char* indeed + + // OpenNI map generators + CV_CAP_OPENNI_DEPTH_GENERATOR = 1 << 31, + CV_CAP_OPENNI_IMAGE_GENERATOR = 1 << 30, + CV_CAP_OPENNI_IR_GENERATOR = 1 << 29, + CV_CAP_OPENNI_GENERATORS_MASK = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_OPENNI_IR_GENERATOR, + + // Properties of cameras available through OpenNI interfaces + CV_CAP_PROP_OPENNI_OUTPUT_MODE = 100, + CV_CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, // in mm + CV_CAP_PROP_OPENNI_BASELINE = 102, // in mm + CV_CAP_PROP_OPENNI_FOCAL_LENGTH = 103, // in pixels + CV_CAP_PROP_OPENNI_REGISTRATION = 104, // flag + CV_CAP_PROP_OPENNI_REGISTRATION_ON = CV_CAP_PROP_OPENNI_REGISTRATION, // flag that synchronizes the remapping depth map to image map + // by changing depth generator's view point (if the flag is "on") or + // sets this view point to its normal one (if the flag is "off"). + CV_CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105, + CV_CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106, + CV_CAP_PROP_OPENNI_CIRCLE_BUFFER = 107, + CV_CAP_PROP_OPENNI_MAX_TIME_DURATION = 108, + + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT = 109, + CV_CAP_PROP_OPENNI2_SYNC = 110, + CV_CAP_PROP_OPENNI2_MIRROR = 111, + + CV_CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT, + CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_OUTPUT_MODE, + CV_CAP_OPENNI_DEPTH_GENERATOR_PRESENT = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT, + CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_BASELINE, + CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_FOCAL_LENGTH, + CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_REGISTRATION, + CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION, + CV_CAP_OPENNI_IR_GENERATOR_PRESENT = CV_CAP_OPENNI_IR_GENERATOR + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT, + + // Properties of cameras available through GStreamer interface + CV_CAP_GSTREAMER_QUEUE_LENGTH = 200, // default is 1 + + // PVAPI + CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast + CV_CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, // FrameStartTriggerMode: Determines how a frame is initiated + CV_CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, // Horizontal sub-sampling of the image + CV_CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, // Vertical sub-sampling of the image + CV_CAP_PROP_PVAPI_BINNINGX = 304, // Horizontal binning factor + CV_CAP_PROP_PVAPI_BINNINGY = 305, // Vertical binning factor + CV_CAP_PROP_PVAPI_PIXELFORMAT = 306, // Pixel format + + // Properties of cameras available through XIMEA SDK interface + CV_CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. + CV_CAP_PROP_XI_DATA_FORMAT = 401, // Output data format. + CV_CAP_PROP_XI_OFFSET_X = 402, // Horizontal offset from the origin to the area of interest (in pixels). + CV_CAP_PROP_XI_OFFSET_Y = 403, // Vertical offset from the origin to the area of interest (in pixels). + CV_CAP_PROP_XI_TRG_SOURCE = 404, // Defines source of trigger. + CV_CAP_PROP_XI_TRG_SOFTWARE = 405, // Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. + CV_CAP_PROP_XI_GPI_SELECTOR = 406, // Selects general purpose input + CV_CAP_PROP_XI_GPI_MODE = 407, // Set general purpose input mode + CV_CAP_PROP_XI_GPI_LEVEL = 408, // Get general purpose level + CV_CAP_PROP_XI_GPO_SELECTOR = 409, // Selects general purpose output + CV_CAP_PROP_XI_GPO_MODE = 410, // Set general purpose output mode + CV_CAP_PROP_XI_LED_SELECTOR = 411, // Selects camera signalling LED + CV_CAP_PROP_XI_LED_MODE = 412, // Define camera signalling LED functionality + CV_CAP_PROP_XI_MANUAL_WB = 413, // Calculates White Balance(must be called during acquisition) + CV_CAP_PROP_XI_AUTO_WB = 414, // Automatic white balance + CV_CAP_PROP_XI_AEAG = 415, // Automatic exposure/gain + CV_CAP_PROP_XI_EXP_PRIORITY = 416, // Exposure priority (0.5 - exposure 50%, gain 50%). + CV_CAP_PROP_XI_AE_MAX_LIMIT = 417, // Maximum limit of exposure in AEAG procedure + CV_CAP_PROP_XI_AG_MAX_LIMIT = 418, // Maximum limit of gain in AEAG procedure + CV_CAP_PROP_XI_AEAG_LEVEL = 419, // Average intensity of output signal AEAG should achieve(in %) + CV_CAP_PROP_XI_TIMEOUT = 420, // Image capture timeout in milliseconds + CV_CAP_PROP_XI_EXPOSURE = 421, // Exposure time in microseconds + CV_CAP_PROP_XI_EXPOSURE_BURST_COUNT = 422, // Sets the number of times of exposure in one frame. + CV_CAP_PROP_XI_GAIN_SELECTOR = 423, // Gain selector for parameter Gain allows to select different type of gains. + CV_CAP_PROP_XI_GAIN = 424, // Gain in dB + CV_CAP_PROP_XI_DOWNSAMPLING_TYPE = 426, // Change image downsampling type. + CV_CAP_PROP_XI_BINNING_SELECTOR = 427, // Binning engine selector. + CV_CAP_PROP_XI_BINNING_VERTICAL = 428, // Vertical Binning - number of vertical photo-sensitive cells to combine together. + CV_CAP_PROP_XI_BINNING_HORIZONTAL = 429, // Horizontal Binning - number of horizontal photo-sensitive cells to combine together. + CV_CAP_PROP_XI_BINNING_PATTERN = 430, // Binning pattern type. + CV_CAP_PROP_XI_DECIMATION_SELECTOR = 431, // Decimation engine selector. + CV_CAP_PROP_XI_DECIMATION_VERTICAL = 432, // Vertical Decimation - vertical sub-sampling of the image - reduces the vertical resolution of the image by the specified vertical decimation factor. + CV_CAP_PROP_XI_DECIMATION_HORIZONTAL = 433, // Horizontal Decimation - horizontal sub-sampling of the image - reduces the horizontal resolution of the image by the specified vertical decimation factor. + CV_CAP_PROP_XI_DECIMATION_PATTERN = 434, // Decimation pattern type. + CV_CAP_PROP_XI_TEST_PATTERN_GENERATOR_SELECTOR = 587, // Selects which test pattern generator is controlled by the TestPattern feature. + CV_CAP_PROP_XI_TEST_PATTERN = 588, // Selects which test pattern type is generated by the selected generator. + CV_CAP_PROP_XI_IMAGE_DATA_FORMAT = 435, // Output data format. + CV_CAP_PROP_XI_SHUTTER_TYPE = 436, // Change sensor shutter type(CMOS sensor). + CV_CAP_PROP_XI_SENSOR_TAPS = 437, // Number of taps + CV_CAP_PROP_XI_AEAG_ROI_OFFSET_X = 439, // Automatic exposure/gain ROI offset X + CV_CAP_PROP_XI_AEAG_ROI_OFFSET_Y = 440, // Automatic exposure/gain ROI offset Y + CV_CAP_PROP_XI_AEAG_ROI_WIDTH = 441, // Automatic exposure/gain ROI Width + CV_CAP_PROP_XI_AEAG_ROI_HEIGHT = 442, // Automatic exposure/gain ROI Height + CV_CAP_PROP_XI_BPC = 445, // Correction of bad pixels + CV_CAP_PROP_XI_WB_KR = 448, // White balance red coefficient + CV_CAP_PROP_XI_WB_KG = 449, // White balance green coefficient + CV_CAP_PROP_XI_WB_KB = 450, // White balance blue coefficient + CV_CAP_PROP_XI_WIDTH = 451, // Width of the Image provided by the device (in pixels). + CV_CAP_PROP_XI_HEIGHT = 452, // Height of the Image provided by the device (in pixels). + CV_CAP_PROP_XI_REGION_SELECTOR = 589, // Selects Region in Multiple ROI which parameters are set by width, height, ... ,region mode + CV_CAP_PROP_XI_REGION_MODE = 595, // Activates/deactivates Region selected by Region Selector + CV_CAP_PROP_XI_LIMIT_BANDWIDTH = 459, // Set/get bandwidth(datarate)(in Megabits) + CV_CAP_PROP_XI_SENSOR_DATA_BIT_DEPTH = 460, // Sensor output data bit depth. + CV_CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH = 461, // Device output data bit depth. + CV_CAP_PROP_XI_IMAGE_DATA_BIT_DEPTH = 462, // bitdepth of data returned by function xiGetImage + CV_CAP_PROP_XI_OUTPUT_DATA_PACKING = 463, // Device output data packing (or grouping) enabled. Packing could be enabled if output_data_bit_depth > 8 and packing capability is available. + CV_CAP_PROP_XI_OUTPUT_DATA_PACKING_TYPE = 464, // Data packing type. Some cameras supports only specific packing type. + CV_CAP_PROP_XI_IS_COOLED = 465, // Returns 1 for cameras that support cooling. + CV_CAP_PROP_XI_COOLING = 466, // Start camera cooling. + CV_CAP_PROP_XI_TARGET_TEMP = 467, // Set sensor target temperature for cooling. + CV_CAP_PROP_XI_CHIP_TEMP = 468, // Camera sensor temperature + CV_CAP_PROP_XI_HOUS_TEMP = 469, // Camera housing tepmerature + CV_CAP_PROP_XI_HOUS_BACK_SIDE_TEMP = 590, // Camera housing back side tepmerature + CV_CAP_PROP_XI_SENSOR_BOARD_TEMP = 596, // Camera sensor board temperature + CV_CAP_PROP_XI_CMS = 470, // Mode of color management system. + CV_CAP_PROP_XI_APPLY_CMS = 471, // Enable applying of CMS profiles to xiGetImage (see XI_PRM_INPUT_CMS_PROFILE, XI_PRM_OUTPUT_CMS_PROFILE). + CV_CAP_PROP_XI_IMAGE_IS_COLOR = 474, // Returns 1 for color cameras. + CV_CAP_PROP_XI_COLOR_FILTER_ARRAY = 475, // Returns color filter array type of RAW data. + CV_CAP_PROP_XI_GAMMAY = 476, // Luminosity gamma + CV_CAP_PROP_XI_GAMMAC = 477, // Chromaticity gamma + CV_CAP_PROP_XI_SHARPNESS = 478, // Sharpness Strength + CV_CAP_PROP_XI_CC_MATRIX_00 = 479, // Color Correction Matrix element [0][0] + CV_CAP_PROP_XI_CC_MATRIX_01 = 480, // Color Correction Matrix element [0][1] + CV_CAP_PROP_XI_CC_MATRIX_02 = 481, // Color Correction Matrix element [0][2] + CV_CAP_PROP_XI_CC_MATRIX_03 = 482, // Color Correction Matrix element [0][3] + CV_CAP_PROP_XI_CC_MATRIX_10 = 483, // Color Correction Matrix element [1][0] + CV_CAP_PROP_XI_CC_MATRIX_11 = 484, // Color Correction Matrix element [1][1] + CV_CAP_PROP_XI_CC_MATRIX_12 = 485, // Color Correction Matrix element [1][2] + CV_CAP_PROP_XI_CC_MATRIX_13 = 486, // Color Correction Matrix element [1][3] + CV_CAP_PROP_XI_CC_MATRIX_20 = 487, // Color Correction Matrix element [2][0] + CV_CAP_PROP_XI_CC_MATRIX_21 = 488, // Color Correction Matrix element [2][1] + CV_CAP_PROP_XI_CC_MATRIX_22 = 489, // Color Correction Matrix element [2][2] + CV_CAP_PROP_XI_CC_MATRIX_23 = 490, // Color Correction Matrix element [2][3] + CV_CAP_PROP_XI_CC_MATRIX_30 = 491, // Color Correction Matrix element [3][0] + CV_CAP_PROP_XI_CC_MATRIX_31 = 492, // Color Correction Matrix element [3][1] + CV_CAP_PROP_XI_CC_MATRIX_32 = 493, // Color Correction Matrix element [3][2] + CV_CAP_PROP_XI_CC_MATRIX_33 = 494, // Color Correction Matrix element [3][3] + CV_CAP_PROP_XI_DEFAULT_CC_MATRIX = 495, // Set default Color Correction Matrix + CV_CAP_PROP_XI_TRG_SELECTOR = 498, // Selects the type of trigger. + CV_CAP_PROP_XI_ACQ_FRAME_BURST_COUNT = 499, // Sets number of frames acquired by burst. This burst is used only if trigger is set to FrameBurstStart + CV_CAP_PROP_XI_DEBOUNCE_EN = 507, // Enable/Disable debounce to selected GPI + CV_CAP_PROP_XI_DEBOUNCE_T0 = 508, // Debounce time (x * 10us) + CV_CAP_PROP_XI_DEBOUNCE_T1 = 509, // Debounce time (x * 10us) + CV_CAP_PROP_XI_DEBOUNCE_POL = 510, // Debounce polarity (pol = 1 t0 - falling edge, t1 - rising edge) + CV_CAP_PROP_XI_LENS_MODE = 511, // Status of lens control interface. This shall be set to XI_ON before any Lens operations. + CV_CAP_PROP_XI_LENS_APERTURE_VALUE = 512, // Current lens aperture value in stops. Examples: 2.8, 4, 5.6, 8, 11 + CV_CAP_PROP_XI_LENS_FOCUS_MOVEMENT_VALUE = 513, // Lens current focus movement value to be used by XI_PRM_LENS_FOCUS_MOVE in motor steps. + CV_CAP_PROP_XI_LENS_FOCUS_MOVE = 514, // Moves lens focus motor by steps set in XI_PRM_LENS_FOCUS_MOVEMENT_VALUE. + CV_CAP_PROP_XI_LENS_FOCUS_DISTANCE = 515, // Lens focus distance in cm. + CV_CAP_PROP_XI_LENS_FOCAL_LENGTH = 516, // Lens focal distance in mm. + CV_CAP_PROP_XI_LENS_FEATURE_SELECTOR = 517, // Selects the current feature which is accessible by XI_PRM_LENS_FEATURE. + CV_CAP_PROP_XI_LENS_FEATURE = 518, // Allows access to lens feature value currently selected by XI_PRM_LENS_FEATURE_SELECTOR. + CV_CAP_PROP_XI_DEVICE_MODEL_ID = 521, // Return device model id + CV_CAP_PROP_XI_DEVICE_SN = 522, // Return device serial number + CV_CAP_PROP_XI_IMAGE_DATA_FORMAT_RGB32_ALPHA = 529, // The alpha channel of RGB32 output image format. + CV_CAP_PROP_XI_IMAGE_PAYLOAD_SIZE = 530, // Buffer size in bytes sufficient for output image returned by xiGetImage + CV_CAP_PROP_XI_TRANSPORT_PIXEL_FORMAT = 531, // Current format of pixels on transport layer. + CV_CAP_PROP_XI_SENSOR_CLOCK_FREQ_HZ = 532, // Sensor clock frequency in Hz. + CV_CAP_PROP_XI_SENSOR_CLOCK_FREQ_INDEX = 533, // Sensor clock frequency index. Sensor with selected frequencies have possibility to set the frequency only by this index. + CV_CAP_PROP_XI_SENSOR_OUTPUT_CHANNEL_COUNT = 534, // Number of output channels from sensor used for data transfer. + CV_CAP_PROP_XI_FRAMERATE = 535, // Define framerate in Hz + CV_CAP_PROP_XI_COUNTER_SELECTOR = 536, // Select counter + CV_CAP_PROP_XI_COUNTER_VALUE = 537, // Counter status + CV_CAP_PROP_XI_ACQ_TIMING_MODE = 538, // Type of sensor frames timing. + CV_CAP_PROP_XI_AVAILABLE_BANDWIDTH = 539, // Calculate and return available interface bandwidth(int Megabits) + CV_CAP_PROP_XI_BUFFER_POLICY = 540, // Data move policy + CV_CAP_PROP_XI_LUT_EN = 541, // Activates LUT. + CV_CAP_PROP_XI_LUT_INDEX = 542, // Control the index (offset) of the coefficient to access in the LUT. + CV_CAP_PROP_XI_LUT_VALUE = 543, // Value at entry LUTIndex of the LUT + CV_CAP_PROP_XI_TRG_DELAY = 544, // Specifies the delay in microseconds (us) to apply after the trigger reception before activating it. + CV_CAP_PROP_XI_TS_RST_MODE = 545, // Defines how time stamp reset engine will be armed + CV_CAP_PROP_XI_TS_RST_SOURCE = 546, // Defines which source will be used for timestamp reset. Writing this parameter will trigger settings of engine (arming) + CV_CAP_PROP_XI_IS_DEVICE_EXIST = 547, // Returns 1 if camera connected and works properly. + CV_CAP_PROP_XI_ACQ_BUFFER_SIZE = 548, // Acquisition buffer size in buffer_size_unit. Default bytes. + CV_CAP_PROP_XI_ACQ_BUFFER_SIZE_UNIT = 549, // Acquisition buffer size unit in bytes. Default 1. E.g. Value 1024 means that buffer_size is in KiBytes + CV_CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_SIZE = 550, // Acquisition transport buffer size in bytes + CV_CAP_PROP_XI_BUFFERS_QUEUE_SIZE = 551, // Queue of field/frame buffers + CV_CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_COMMIT = 552, // Number of buffers to commit to low level + CV_CAP_PROP_XI_RECENT_FRAME = 553, // GetImage returns most recent frame + CV_CAP_PROP_XI_DEVICE_RESET = 554, // Resets the camera to default state. + CV_CAP_PROP_XI_COLUMN_FPN_CORRECTION = 555, // Correction of column FPN + CV_CAP_PROP_XI_ROW_FPN_CORRECTION = 591, // Correction of row FPN + CV_CAP_PROP_XI_SENSOR_MODE = 558, // Current sensor mode. Allows to select sensor mode by one integer. Setting of this parameter affects: image dimensions and downsampling. + CV_CAP_PROP_XI_HDR = 559, // Enable High Dynamic Range feature. + CV_CAP_PROP_XI_HDR_KNEEPOINT_COUNT = 560, // The number of kneepoints in the PWLR. + CV_CAP_PROP_XI_HDR_T1 = 561, // position of first kneepoint(in % of XI_PRM_EXPOSURE) + CV_CAP_PROP_XI_HDR_T2 = 562, // position of second kneepoint (in % of XI_PRM_EXPOSURE) + CV_CAP_PROP_XI_KNEEPOINT1 = 563, // value of first kneepoint (% of sensor saturation) + CV_CAP_PROP_XI_KNEEPOINT2 = 564, // value of second kneepoint (% of sensor saturation) + CV_CAP_PROP_XI_IMAGE_BLACK_LEVEL = 565, // Last image black level counts. Can be used for Offline processing to recall it. + CV_CAP_PROP_XI_HW_REVISION = 571, // Returns hardware revision number. + CV_CAP_PROP_XI_DEBUG_LEVEL = 572, // Set debug level + CV_CAP_PROP_XI_AUTO_BANDWIDTH_CALCULATION = 573, // Automatic bandwidth calculation, + CV_CAP_PROP_XI_FFS_FILE_ID = 594, // File number. + CV_CAP_PROP_XI_FFS_FILE_SIZE = 580, // Size of file. + CV_CAP_PROP_XI_FREE_FFS_SIZE = 581, // Size of free camera FFS. + CV_CAP_PROP_XI_USED_FFS_SIZE = 582, // Size of used camera FFS. + CV_CAP_PROP_XI_FFS_ACCESS_KEY = 583, // Setting of key enables file operations on some cameras. + CV_CAP_PROP_XI_SENSOR_FEATURE_SELECTOR = 585, // Selects the current feature which is accessible by XI_PRM_SENSOR_FEATURE_VALUE. + CV_CAP_PROP_XI_SENSOR_FEATURE_VALUE = 586, // Allows access to sensor feature value currently selected by XI_PRM_SENSOR_FEATURE_SELECTOR. + + + // Properties for Android cameras + CV_CAP_PROP_ANDROID_FLASH_MODE = 8001, + CV_CAP_PROP_ANDROID_FOCUS_MODE = 8002, + CV_CAP_PROP_ANDROID_WHITE_BALANCE = 8003, + CV_CAP_PROP_ANDROID_ANTIBANDING = 8004, + CV_CAP_PROP_ANDROID_FOCAL_LENGTH = 8005, + CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_NEAR = 8006, + CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_OPTIMAL = 8007, + CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_FAR = 8008, + CV_CAP_PROP_ANDROID_EXPOSE_LOCK = 8009, + CV_CAP_PROP_ANDROID_WHITEBALANCE_LOCK = 8010, + + // Properties of cameras available through AVFOUNDATION interface + CV_CAP_PROP_IOS_DEVICE_FOCUS = 9001, + CV_CAP_PROP_IOS_DEVICE_EXPOSURE = 9002, + CV_CAP_PROP_IOS_DEVICE_FLASH = 9003, + CV_CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004, + CV_CAP_PROP_IOS_DEVICE_TORCH = 9005, + + // Properties of cameras available through Smartek Giganetix Ethernet Vision interface + /* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */ + CV_CAP_PROP_GIGA_FRAME_OFFSET_X = 10001, + CV_CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002, + CV_CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003, + CV_CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004, + CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005, + CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006, + + CV_CAP_PROP_INTELPERC_PROFILE_COUNT = 11001, + CV_CAP_PROP_INTELPERC_PROFILE_IDX = 11002, + CV_CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003, + CV_CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004, + CV_CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005, + CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006, + CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007, + + // Intel PerC streams + CV_CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29, + CV_CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28, + CV_CAP_INTELPERC_GENERATORS_MASK = CV_CAP_INTELPERC_DEPTH_GENERATOR + CV_CAP_INTELPERC_IMAGE_GENERATOR +}; + +enum +{ + // Data given from depth generator. + CV_CAP_OPENNI_DEPTH_MAP = 0, // Depth values in mm (CV_16UC1) + CV_CAP_OPENNI_POINT_CLOUD_MAP = 1, // XYZ in meters (CV_32FC3) + CV_CAP_OPENNI_DISPARITY_MAP = 2, // Disparity in pixels (CV_8UC1) + CV_CAP_OPENNI_DISPARITY_MAP_32F = 3, // Disparity in pixels (CV_32FC1) + CV_CAP_OPENNI_VALID_DEPTH_MASK = 4, // CV_8UC1 + + // Data given from RGB image generator. + CV_CAP_OPENNI_BGR_IMAGE = 5, + CV_CAP_OPENNI_GRAY_IMAGE = 6, + + // Data given from IR image generator. + CV_CAP_OPENNI_IR_IMAGE = 7 +}; + +// Supported output modes of OpenNI image generator +enum +{ + CV_CAP_OPENNI_VGA_30HZ = 0, + CV_CAP_OPENNI_SXGA_15HZ = 1, + CV_CAP_OPENNI_SXGA_30HZ = 2, + CV_CAP_OPENNI_QVGA_30HZ = 3, + CV_CAP_OPENNI_QVGA_60HZ = 4 +}; + +enum +{ + CV_CAP_INTELPERC_DEPTH_MAP = 0, // Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth. + CV_CAP_INTELPERC_UVDEPTH_MAP = 1, // Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates. + CV_CAP_INTELPERC_IR_MAP = 2, // Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam. + CV_CAP_INTELPERC_IMAGE = 3 +}; + +// gPhoto2 properties, if propertyId is less than 0 then work on widget with that __additive inversed__ camera setting ID +// Get IDs by using CAP_PROP_GPHOTO2_WIDGET_ENUMERATE. +// @see CvCaptureCAM_GPHOTO2 for more info +enum +{ + CV_CAP_PROP_GPHOTO2_PREVIEW = 17001, // Capture only preview from liveview mode. + CV_CAP_PROP_GPHOTO2_WIDGET_ENUMERATE = 17002, // Readonly, returns (const char *). + CV_CAP_PROP_GPHOTO2_RELOAD_CONFIG = 17003, // Trigger, only by set. Reload camera settings. + CV_CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE = 17004, // Reload all settings on set. + CV_CAP_PROP_GPHOTO2_COLLECT_MSGS = 17005, // Collect messages with details. + CV_CAP_PROP_GPHOTO2_FLUSH_MSGS = 17006, // Readonly, returns (const char *). + CV_CAP_PROP_SPEED = 17007, // Exposure speed. Can be readonly, depends on camera program. + CV_CAP_PROP_APERTURE = 17008, // Aperture. Can be readonly, depends on camera program. + CV_CAP_PROP_EXPOSUREPROGRAM = 17009, // Camera exposure program. + CV_CAP_PROP_VIEWFINDER = 17010 // Enter liveview mode. +}; + +//! Macro to construct the fourcc code of the codec. Same as CV_FOURCC() +#define CV_FOURCC_MACRO(c1, c2, c3, c4) (((c1) & 255) + (((c2) & 255) << 8) + (((c3) & 255) << 16) + (((c4) & 255) << 24)) + +/** @brief Constructs the fourcc code of the codec function + +Simply call it with 4 chars fourcc code like `CV_FOURCC('I', 'Y', 'U', 'V')` + +List of codes can be obtained at [Video Codecs by FOURCC](http://www.fourcc.org/codecs.php) page. +FFMPEG backend with MP4 container natively uses other values as fourcc code: +see [ObjectType](http://www.mp4ra.org/codecs.html). +*/ +CV_INLINE int CV_FOURCC(char c1, char c2, char c3, char c4) +{ + return CV_FOURCC_MACRO(c1, c2, c3, c4); +} + +//! (Windows only) Open Codec Selection Dialog +#define CV_FOURCC_PROMPT -1 +//! (Linux only) Use default codec for specified filename +#define CV_FOURCC_DEFAULT CV_FOURCC('I', 'Y', 'U', 'V') + +#endif // OPENCV_VIDEOIO_LEGACY_CONSTANTS_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio/registry.hpp b/LaiPuLaser/OpenCV/include/opencv2/videoio/registry.hpp new file mode 100644 index 0000000..19a9100 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio/registry.hpp @@ -0,0 +1,47 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_VIDEOIO_REGISTRY_HPP +#define OPENCV_VIDEOIO_REGISTRY_HPP + +#include + +namespace cv { namespace videoio_registry { +/** @addtogroup videoio_registry +This section contains API description how to query/configure available Video I/O backends. + +Runtime configuration options: +- enable debug mode: `OPENCV_VIDEOIO_DEBUG=1` +- change backend priority: `OPENCV_VIDEOIO_PRIORITY_=9999` +- disable backend: `OPENCV_VIDEOIO_PRIORITY_=0` +- specify list of backends with high priority (>100000): `OPENCV_VIDEOIO_PRIORITY_LIST=FFMPEG,GSTREAMER` + +@{ + */ + + +/** @brief Returns backend API name or "unknown" +@param api backend ID (#VideoCaptureAPIs) +*/ +CV_EXPORTS_W cv::String getBackendName(VideoCaptureAPIs api); + +/** @brief Returns list of all builtin backends */ +CV_EXPORTS_W std::vector getBackends(); + +/** @brief Returns list of available backends which works via `cv::VideoCapture(int index)` */ +CV_EXPORTS_W std::vector getCameraBackends(); + +/** @brief Returns list of available backends which works via `cv::VideoCapture(filename)` */ +CV_EXPORTS_W std::vector getStreamBackends(); + +/** @brief Returns list of available backends which works via `cv::VideoWriter()` */ +CV_EXPORTS_W std::vector getWriterBackends(); + +/** @brief Returns true if backend is available */ +CV_EXPORTS bool hasBackend(VideoCaptureAPIs api); + +//! @} +}} // namespace + +#endif // OPENCV_VIDEOIO_REGISTRY_HPP diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio.hpp b/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio.hpp new file mode 100644 index 0000000..ec84cf7 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio.hpp @@ -0,0 +1,48 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/videoio.hpp" diff --git a/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio_c.h b/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio_c.h new file mode 100644 index 0000000..cf1a6d0 --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/videoio/videoio_c.h @@ -0,0 +1,153 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_VIDEOIO_H +#define OPENCV_VIDEOIO_H + +#include "opencv2/core/core_c.h" + +#include "opencv2/videoio/legacy/constants_c.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + @addtogroup videoio_c + @{ +*/ + +/****************************************************************************************\ +* Working with Video Files and Cameras * +\****************************************************************************************/ + +/** @brief "black box" capture structure + +In C++ use cv::VideoCapture +*/ +typedef struct CvCapture CvCapture; + +/** @brief start capturing frames from video file +*/ +CVAPI(CvCapture*) cvCreateFileCapture( const char* filename ); + +/** @brief start capturing frames from video file. allows specifying a preferred API to use +*/ +CVAPI(CvCapture*) cvCreateFileCaptureWithPreference( const char* filename , int apiPreference); + +/** @brief start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) +*/ +CVAPI(CvCapture*) cvCreateCameraCapture( int index ); + +/** @brief grab a frame, return 1 on success, 0 on fail. + + this function is thought to be fast +*/ +CVAPI(int) cvGrabFrame( CvCapture* capture ); + +/** @brief get the frame grabbed with cvGrabFrame(..) + + This function may apply some frame processing like + frame decompression, flipping etc. + @warning !!!DO NOT RELEASE or MODIFY the retrieved frame!!! +*/ +CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) ); + +/** @brief Just a combination of cvGrabFrame and cvRetrieveFrame + + @warning !!!DO NOT RELEASE or MODIFY the retrieved frame!!! +*/ +CVAPI(IplImage*) cvQueryFrame( CvCapture* capture ); + +/** @brief stop capturing/reading and free resources +*/ +CVAPI(void) cvReleaseCapture( CvCapture** capture ); + +/** @brief retrieve capture properties +*/ +CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id ); +/** @brief set capture properties +*/ +CVAPI(int) cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); + +/** @brief Return the type of the capturer (eg, ::CV_CAP_VFW, ::CV_CAP_UNICAP) + +It is unknown if created with ::CV_CAP_ANY +*/ +CVAPI(int) cvGetCaptureDomain( CvCapture* capture); + +/** @brief "black box" video file writer structure + +In C++ use cv::VideoWriter +*/ +typedef struct CvVideoWriter CvVideoWriter; + +/** @brief initialize video file writer +*/ +CVAPI(CvVideoWriter*) cvCreateVideoWriter( const char* filename, int fourcc, + double fps, CvSize frame_size, + int is_color CV_DEFAULT(1)); + +/** @brief write frame to video file +*/ +CVAPI(int) cvWriteFrame( CvVideoWriter* writer, const IplImage* image ); + +/** @brief close video file writer +*/ +CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer ); + +// *************************************************************************************** +//! @name Obsolete functions/synonyms +//! @{ +#define cvCaptureFromCAM cvCreateCameraCapture //!< @deprecated use cvCreateCameraCapture() instead +#define cvCaptureFromFile cvCreateFileCapture //!< @deprecated use cvCreateFileCapture() instead +#define cvCaptureFromAVI cvCaptureFromFile //!< @deprecated use cvCreateFileCapture() instead +#define cvCreateAVIWriter cvCreateVideoWriter //!< @deprecated use cvCreateVideoWriter() instead +#define cvWriteToAVI cvWriteFrame //!< @deprecated use cvWriteFrame() instead +//! @} Obsolete... + +//! @} videoio_c + +#ifdef __cplusplus +} +#endif + +#endif //OPENCV_VIDEOIO_H diff --git a/LaiPuLaser/OpenCV/include/opencv2/world.hpp b/LaiPuLaser/OpenCV/include/opencv2/world.hpp new file mode 100644 index 0000000..4902c2f --- /dev/null +++ b/LaiPuLaser/OpenCV/include/opencv2/world.hpp @@ -0,0 +1,58 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef OPENCV_WORLD_HPP +#define OPENCV_WORLD_HPP + +#include "opencv2/core.hpp" + +#ifdef __cplusplus +namespace cv +{ + +CV_EXPORTS_W bool initAll(); + +} + +#endif + +#endif diff --git a/LaiPuLaser/OptoWaveLaserMgr.cpp b/LaiPuLaser/OptoWaveLaserMgr.cpp new file mode 100644 index 0000000..21858c5 --- /dev/null +++ b/LaiPuLaser/OptoWaveLaserMgr.cpp @@ -0,0 +1,487 @@ +#include "StdAfx.h" +#include "OptoWaveLaserMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" + +#include "CStringFuc.h" +#include "ExceptionMsg.h" +#include "LogMgr.h" +#include "MsgBox.h" +#include "GlobalFunction.h" +#include "FileMgr.h" + + +//͹ʵУ׼ļ +#define LASER_POWER_FILE _T("\\Parameter\\OptoWaveLaserMgr\\OptoWavePower.txt") + + +COptoWaveLaserMgr *gOptoWaveLaserMgr = new COptoWaveLaserMgr; +COptoWaveLaserMgr::COptoWaveLaserMgr(void) +{ + m_Com = 2;//ͨcom ڱ + m_PowerCurr = 20;// + m_Fre = 30;//Ƶkhz + m_SendDelay = 200;//ָʱ + m_CurrUpTime = 5;//ȴʱ() +} +COptoWaveLaserMgr::~COptoWaveLaserMgr(void) +{ +} +#if 1// +CMFCPropertyGridProperty *COptoWaveLaserMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("OptoWaveLaserMgr");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("OptoWave "); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_Com");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Com); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ͨŴ"); + Description = _T("PC ͨʹõĴڱ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Com, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_PowerCurr");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_PowerCurr); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("ֵ(λ:A)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_PowerCurr, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Fre");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Fre); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƶ"); + Description = _T("Ƶ(λ:kHz)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Fre, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_SendDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_SendDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ָʱ"); + Description = _T("͸ָʱ(λ:ms)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_SendDelay, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_CurrUpTime");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CurrUpTime); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʱ"); + Description = _T("ʼʱȴʱ()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CurrUpTime, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void COptoWaveLaserMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CLaserDeviceMgr]------------------------------------------------"< &LabVec) +{ + //ȡҲҪ˳ + LabVec.push_back(CLab(LAB_NULL,m_PowerCurr));// + LabVec.push_back(CLab(LAB_NULL,m_Fre));//Ƶ +} +void COptoWaveLaserMgr::ReadWorkFile(CLabVecRang &LabVecRang) +{ + int idx = LabVecRang.GetStart()+1; + m_PowerCurr = LabVecRang.GetDouble(idx++); + m_Fre = LabVecRang.GetInt(idx++); +} +#endif +#if 1 +//ȡ״̬ +CString COptoWaveLaserMgr::GetDeviceStateStr(OPTO_LASER_STATE state) +{ + CString str; + switch(state) + { + case _STATE_COM_ERR: + str = _T("δ"); + break; + case _STATE_NOT_CONNECT: + str = _T("δ"); + break; + case _STATE_NOT_INI: + str = _T("δʼ"); + break; + case _STATE_WAITING: + str = _T(""); + break; + case _STATE_STARTING: + str = _T(""); + break; + case _STATE_WORK: + str = _T(""); + break; + default: + break; + } + return str; +} +COLORREF COptoWaveLaserMgr::GetColor(OPTO_LASER_STATE state) +{ + COLORREF c; + switch(state) + { + case _STATE_COM_ERR: + c = RGB_RED; + break; + case _STATE_NOT_CONNECT: + c = RGB_RED; + break; + case _STATE_NOT_INI: + c = RGB_YELLOW; + break; + case _STATE_WAITING: + c = RGB_YELLOW; + break; + case _STATE_STARTING: + c = RGB_YELLOW; + break; + case _STATE_WORK: + c = RGB_GREEN; + break; + default: + break; + } + return c; +} + +//ȡ״̬0:δʼ1:2: +OPTO_LASER_STATE COptoWaveLaserMgr::ReadDeviceState() +{ + //򿪴----------------------------- + if(!m_ComMgr.IsOpen()) + { + return _STATE_COM_ERR; + } + //ʵʵֵ + float IDI = 0; + { + //Ͳѯ + CString str1 = "?IDI"; + CString strSend = str1+char(13)+char(10); + m_ComMgr.Write(strSend); + Sleep(m_SendDelay); + + //ȡ + CString str2 = m_ComMgr.ReadStr(); + if(str2 == "") + { + return _STATE_NOT_CONNECT; + } + if(str2[0]=='L' && str2[1]=='O'&&str2[2]=='C') + { + return _STATE_NOT_INI; + } + IDI = atof(str2)/10; + + if(IsDbEqualZero(IDI)) + { + return _STATE_WAITING; + } + } + //õֵ + float IDS = 0; + { + //Ͳѯ + CString str1 = "?IDS"; + CString strSend = str1+char(13)+char(10); + m_ComMgr.Write(strSend); + Sleep(m_SendDelay); + + //ȡ + CString str2 = m_ComMgr.ReadStr(); + IDS = atof(str2)/10; + } + + if(abs(IDS-IDI)<2) + { + return _STATE_WORK; + } + return _STATE_STARTING; +} + +//ʼ +bool COptoWaveLaserMgr::IniLaserDevice() +{ + gLogMgr->WriteDebugLog("532 ʼStart"); + + //״̬޸ + CtrlIni(); + + OPTO_LASER_STATE state = ReadDeviceState(); + if(state==_STATE_COM_ERR) + { + CMsgBox MsgBox; + MsgBox.Show(_T("ڴʧ!")); + return false; + } + else if(state==_STATE_NOT_CONNECT) + { + CMsgBox MsgBox; + MsgBox.Show(_T("ʧ!")); + return false; + } + //δʼߴ״̬ + else if(state==_STATE_NOT_INI || state==_STATE_WAITING) + { + //ùʺƵ + SetFrequencyCurrent(); + //򿪶 + SwitchDiode(true); + //ȴ + Sleep(m_CurrUpTime*1000); + } + else//_STATE_STARTING _STATE_WORK ״̬õƵʼ + { + //ùʺƵ + SetFrequencyCurrent(); + } + return true; +} +//رռ +void COptoWaveLaserMgr::CloseLaserDevice() +{ + gLogMgr->WriteDebugLog("532 ر"); + if(!m_ComMgr.IsOpen()) + { + return; + } + //״̬Ϊ-------------- + { + CString str1 = "MCH"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + //QSW + { + CString str1 = "QSW=0"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + //SHT + { + CString str1 = "SHT=0"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + { + CString str1 = "DIO=0"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } +} +//Ƴʼ +void COptoWaveLaserMgr::CtrlIni() +{ + if(!m_ComMgr.IsOpen()) + { + return; + } + //״̬Ϊ-------------- + { + CString str1 = "MCH"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + //QSW + { + CString str1 = "QSW=1"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + //SHT + { + CString str1 = "SHT=1"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + //عդ© + { + CString str1 = "EXT=1"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + { + CString str1 = "EXT=0"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } +} +//Ƶʺ͵f λkhz +void COptoWaveLaserMgr::SetFrequencyCurrent() +{ + int f = m_Fre; + double c = m_PowerCurr; + + //򿪴----------------------------- + if(!m_ComMgr.IsOpen()) + { + return; + } + { + CString str1 = "PRF=";//ƵʣkHZ + CString str2; + str2.Format("%ld",(f*1000)); + CString str = str1+str2+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + { + CString str1 = "IDI=";//õ,A + long Current = c*10; + CString str2; + str2.Format("%ld",Current); + CString str = str1+str2+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } +} +//򿪹رն +void COptoWaveLaserMgr::SwitchDiode(bool b) +{ + //򿪴----------------------------- + if(!m_ComMgr.IsOpen()) + { + return; + } + if(b) + { + CString str1 = "DIO=1"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } + else + { + CString str1 = "DIO=0"; + CString str = str1+char(13)+char(10); + m_ComMgr.Write(str); + Sleep(m_SendDelay); + } +} +//ȡǰļ() +double COptoWaveLaserMgr::GetLaserPower() +{ + //ݵ͹ʵĶձӦĹֵ + CFileMgr FileMgr; + CString FullPath;//· + FileMgr.GetFullFilePath(FullPath,LASER_POWER_FILE); + //ȡУ׼ + vector> Vec;//,Ƶ, + FileMgr.ReadFileToDoubleVec(FullPath,Vec); + double p = 1; + //ѯĹ + double MinDiff = 0;//С + double FindVal = m_PowerCurr;//ѯֵ + vector>::iterator iter = Vec.begin(); + vector>::iterator iter_end = Vec.end(); + for(;iter!=iter_end;iter++) + { + vector &Arr = (*iter); + if(Arr.size()==3) + { + double CurVal = Arr[0];//ǰֵ + double Diff = FindVal-CurVal; + if(iter == Vec.begin()) + { + MinDiff = Diff; + p = Arr[2]; + } + else if(abs(Diff) &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + virtual void Ini(); + + + bool IniLaserDevice(); + void SwitchDiode(bool b); + void CloseLaserDevice(); + void SetPowerCurr(double p){m_PowerCurr = p;}; + void SetFre(int n){m_Fre = n;}; + double GetPowerCurr(){return m_PowerCurr;}; + double GetLaserPower(); + int GetFre(){return m_Fre;}; + void SetFrequencyCurrent(); + CString GetDeviceStateStr(OPTO_LASER_STATE state); + OPTO_LASER_STATE ReadDeviceState(); + COLORREF GetColor(OPTO_LASER_STATE state); +private: + void CtrlIni(); +private: + int m_Com;//ͨcom ڱ + CCommPortMgr m_ComMgr;//ڹ + double m_PowerCurr;//A + int m_Fre;//Ƶkhz + int m_SendDelay;//ָʱ + int m_CurrUpTime;//ʼʱȴʱ() + +}; +extern COptoWaveLaserMgr *gOptoWaveLaserMgr; diff --git a/LaiPuLaser/OutputWnd.cpp b/LaiPuLaser/OutputWnd.cpp new file mode 100644 index 0000000..764e889 --- /dev/null +++ b/LaiPuLaser/OutputWnd.cpp @@ -0,0 +1,169 @@ + +#include "stdafx.h" + +#include "OutputWnd.h" +#include "Resource.h" +#include "MainFrm.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// COutputBar + +COutputWnd::COutputWnd() +{ + m_CurLineCnt = 0;//ǰ +} +COutputWnd::~COutputWnd() +{ +} + +BEGIN_MESSAGE_MAP(COutputWnd, CDockablePane) + ON_WM_CREATE() + ON_WM_SIZE() +END_MESSAGE_MAP() + +int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CDockablePane::OnCreate(lpCreateStruct) == -1) + return -1; + + CRect rectDummy; + rectDummy.SetRectEmpty(); + + // ѡ: + if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, 1)) + { + TRACE0("δܴѡ\n"); + return -1; // δܴ + } + + // : + const DWORD dwStyle = LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL; + + if (!m_List.Create(dwStyle, rectDummy, &m_wndTabs, 2)) + { + TRACE0("δܴ\n"); + return -1; // δܴ + } + + UpdateFonts(); + + CString strTabName; + + // бڸӵѡ: + strTabName = _T(""); + m_wndTabs.AddTab(&m_List, strTabName, (UINT)0); + return 0; +} + +void COutputWnd::OnSize(UINT nType, int cx, int cy) +{ + CDockablePane::OnSize(nType, cx, cy); + // ѡؼӦ: + m_wndTabs.SetWindowPos (NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); +} + +void COutputWnd::AdjustHorzScroll(CListBox& wndListBox) +{ + CClientDC dc(this); + CFont* pOldFont = dc.SelectObject(&afxGlobalData.fontRegular); + + int cxExtentMax = 0; + + for (int i = 0; i < wndListBox.GetCount(); i ++) + { + CString strItem; + wndListBox.GetText(i, strItem); + + cxExtentMax = max(cxExtentMax, dc.GetTextExtent(strItem).cx); + } + + wndListBox.SetHorizontalExtent(cxExtentMax); + dc.SelectObject(pOldFont); +} + +void COutputWnd::UpdateFonts() +{ + m_List.SetFont(&afxGlobalData.fontRegular); +} +void COutputWnd::AddToList(CString str,int MaxLine) +{ + if(m_CurLineCnt>MaxLine) + { + m_List.ResetContent(); + m_CurLineCnt = 0; + } + m_List.AddString(str); + //ʾһ + m_List.SetTopIndex(m_List.GetCount()-1); + m_CurLineCnt++; +} + +///////////////////////////////////////////////////////////////////////////// +// COutputList1 + +COutputList::COutputList() +{ +} + +COutputList::~COutputList() +{ +} + +BEGIN_MESSAGE_MAP(COutputList, CListBox) + ON_WM_CONTEXTMENU() + ON_COMMAND(ID_EDIT_COPY, OnEditCopy) + ON_COMMAND(ID_EDIT_CLEAR, OnEditClear) + ON_COMMAND(ID_OUTPUT_CMD, OnViewOutput) + ON_COMMAND(ID_OUTPUT_LOG, OnViewOutput) + ON_WM_WINDOWPOSCHANGING() +END_MESSAGE_MAP() +///////////////////////////////////////////////////////////////////////////// +// COutputList Ϣ + +void COutputList::OnContextMenu(CWnd* /*pWnd*/, CPoint point) +{ + CMenu menu; + menu.LoadMenu(IDR_OUTPUT_POPUP); + + CMenu* pSumMenu = menu.GetSubMenu(0); + + if (AfxGetMainWnd()->IsKindOf(RUNTIME_CLASS(CMDIFrameWndEx))) + { + CMFCPopupMenu* pPopupMenu = new CMFCPopupMenu; + + if (!pPopupMenu->Create(this, point.x, point.y, (HMENU)pSumMenu->m_hMenu, FALSE, TRUE)) + return; + + ((CMDIFrameWndEx*)AfxGetMainWnd())->OnShowPopupMenu(pPopupMenu); + UpdateDialogControls(this, FALSE); + } + + SetFocus(); +} + +void COutputList::OnEditCopy() +{ + +} +void COutputList::OnEditClear() +{ + ResetContent(); +} +void COutputList::OnViewOutput() +{ + CDockablePane* pParentBar = DYNAMIC_DOWNCAST(CDockablePane, GetOwner()); + CMDIFrameWndEx* pMainFrame = DYNAMIC_DOWNCAST(CMDIFrameWndEx, GetTopLevelFrame()); + + if (pMainFrame != NULL && pParentBar != NULL) + { + pMainFrame->SetFocus(); + pMainFrame->ShowPane(pParentBar, FALSE, FALSE, FALSE); + pMainFrame->RecalcLayout(); + } +} diff --git a/LaiPuLaser/OutputWnd.h b/LaiPuLaser/OutputWnd.h new file mode 100644 index 0000000..00e9725 --- /dev/null +++ b/LaiPuLaser/OutputWnd.h @@ -0,0 +1,50 @@ + +#pragma once + +///////////////////////////////////////////////////////////////////////////// +// COutputList + +class COutputList : public CListBox +{ +// +public: + COutputList(); + +// ʵ +public: + virtual ~COutputList(); + +protected: + afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); + afx_msg void OnEditCopy(); + afx_msg void OnEditClear(); + afx_msg void OnViewOutput(); + + DECLARE_MESSAGE_MAP() +}; + +class COutputWnd : public CDockablePane +{ +// +public: + COutputWnd(); + void UpdateFonts(); + void AddToList(CString str,int MaxLine); +// +protected: + CMFCTabCtrl m_wndTabs; + COutputList m_List; + int m_CurLineCnt;//ǰ +protected: + void AdjustHorzScroll(CListBox& wndListBox); + +// ʵ +public: + virtual ~COutputWnd(); + +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + DECLARE_MESSAGE_MAP() +}; + diff --git a/LaiPuLaser/PaneDevicePar.cpp b/LaiPuLaser/PaneDevicePar.cpp new file mode 100644 index 0000000..ab70284 --- /dev/null +++ b/LaiPuLaser/PaneDevicePar.cpp @@ -0,0 +1,57 @@ +#include "StdAfx.h" +#include "PaneDevicePar.h" +#include "ModuleDeviceMgr.h" +#include "PropertieMgr.h" + +BEGIN_MESSAGE_MAP(CPaneDevicePar, CPanePropertiesWnd) + ON_CBN_SELCHANGE(ID_PROPERTY_COMB,OnCbnSelPropertyChange) + ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED,OnPropertyChanged) +END_MESSAGE_MAP() + +CPaneDevicePar::CPaneDevicePar(void) +{ +} +CPaneDevicePar::~CPaneDevicePar(void) +{ +} +void CPaneDevicePar::IniObjectCombo() +{ + m_wndObjectCombo.AddString(_T("")); + m_wndObjectCombo.AddString(_T("PCI ƿ")); + m_wndObjectCombo.AddString(_T("PCI1245˶ ƿ")); + m_wndObjectCombo.AddString(_T("")); + m_wndObjectCombo.AddString(_T("XY ƽ̨")); + m_wndObjectCombo.AddString(_T("Ӳ")); + m_wndObjectCombo.AddString(_T("ӹ")); + m_wndObjectCombo.AddString(_T("")); + m_wndObjectCombo.AddString(_T("豸")); + m_wndObjectCombo.AddString(_T("̿")); + SetComboSelNull(); +} +//ѡNULL +void CPaneDevicePar::SetComboSelNull() +{ + m_wndObjectCombo.SetCurSel((int)_COMB_NULL_PROP); + OnCbnSelPropertyChange(); +} +//бıӦ +void CPaneDevicePar::OnCbnSelPropertyChange() +{ + // + RemoveAllProperty(); + //ѡ + gModuleDeviceMgr.InsertModuleGridProperty(m_wndObjectCombo.GetCurSel()); + //µ + m_wndPropList.AdjustLayout(); +} +//ԸıϢӦ +LRESULT CPaneDevicePar::OnPropertyChanged(WPARAM,LPARAM lParam) +{ + gDevicePropertieMgr.OnPropertyChanged(lParam); + return 0; +} +void CPaneDevicePar::RemoveAllProperty() +{ + m_wndPropList.RemoveAll(); + gDevicePropertieMgr.DelAllPropertie(); +} \ No newline at end of file diff --git a/LaiPuLaser/PaneDevicePar.h b/LaiPuLaser/PaneDevicePar.h new file mode 100644 index 0000000..3235dc2 --- /dev/null +++ b/LaiPuLaser/PaneDevicePar.h @@ -0,0 +1,17 @@ +#pragma once +#include "PropertiesWnd.h" + +class CPaneDevicePar:public CPanePropertiesWnd +{ +public: + CPaneDevicePar(void); + ~CPaneDevicePar(void); + void SetComboSelNull(); +protected: + virtual void IniObjectCombo(); + virtual void RemoveAllProperty(); + afx_msg LRESULT OnPropertyChanged(WPARAM,LPARAM); + afx_msg void OnCbnSelPropertyChange(); + DECLARE_MESSAGE_MAP() +}; + diff --git a/LaiPuLaser/PaneDialogTmp.cpp b/LaiPuLaser/PaneDialogTmp.cpp new file mode 100644 index 0000000..e616f2d --- /dev/null +++ b/LaiPuLaser/PaneDialogTmp.cpp @@ -0,0 +1,45 @@ + +#include "stdafx.h" +#include "LaiPuLaser.h" +#include "PaneDialogTmp.h" + +IMPLEMENT_DYNAMIC(CPaneDialogTmp, CDockablePane) +BEGIN_MESSAGE_MAP(CPaneDialogTmp, CDockablePane) + ON_WM_CREATE() + ON_WM_SIZE() +END_MESSAGE_MAP() + +CPaneDialogTmp::CPaneDialogTmp() +{ + +} + +CPaneDialogTmp::~CPaneDialogTmp() +{ +} +// CPaneStdMarkCtrl Ϣ +int CPaneDialogTmp::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CDockablePane::OnCreate(lpCreateStruct) == -1) + return -1; + + CRect rectDummy; + rectDummy.SetRectEmpty(); + // ѡ: + if(!m_Dlg->Create(m_Dlg->GetIDD(),this)) + { + return -1; // δܴ + } + m_Dlg->ShowWindow(SW_SHOW); + return 0; +} + +void CPaneDialogTmp::OnSize(UINT nType, int cx, int cy) +{ + CDockablePane::OnSize(nType, cx, cy); + + // ѡؼӦ + m_Dlg->SetWindowPos (this, -1, -1, cx, cy, SWP_NOACTIVATE | SWP_NOZORDER); + m_Dlg->ShowWindow(SW_SHOW); +} + diff --git a/LaiPuLaser/PaneDialogTmp.h b/LaiPuLaser/PaneDialogTmp.h new file mode 100644 index 0000000..096a8d7 --- /dev/null +++ b/LaiPuLaser/PaneDialogTmp.h @@ -0,0 +1,20 @@ +#pragma once +#include "DlgPane.h" +//ͣԻģ +class CPaneDialogTmp : public CDockablePane +{ + DECLARE_DYNAMIC(CPaneDialogTmp) + +public: + CPaneDialogTmp(); + virtual ~CPaneDialogTmp(); + void SetDlg(CDlgPane *p){m_Dlg = p;}; +private: + CDlgPane *m_Dlg; +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + DECLARE_MESSAGE_MAP() +}; + + diff --git a/LaiPuLaser/PaneDrawPar.cpp b/LaiPuLaser/PaneDrawPar.cpp new file mode 100644 index 0000000..460b000 --- /dev/null +++ b/LaiPuLaser/PaneDrawPar.cpp @@ -0,0 +1,53 @@ +#include "StdAfx.h" +#include "PaneDrawPar.h" +#include "ModuleDrawMgr.h" +#include "PropertieMgr.h" + + +BEGIN_MESSAGE_MAP(CPaneDrawPar, CPanePropertiesWnd) + ON_CBN_SELCHANGE(ID_PROPERTY_COMB,OnCbnSelPropertyChange) + ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED,OnPropertyChanged) +END_MESSAGE_MAP() + +CPaneDrawPar::CPaneDrawPar(void) +{ +} +CPaneDrawPar::~CPaneDrawPar(void) +{ +} +void CPaneDrawPar::IniObjectCombo() +{ + m_wndObjectCombo.AddString(_T("ͼ")); + m_wndObjectCombo.AddString(_T("ʾ")); + + m_wndObjectCombo.SetCurSel((int)_COMB_OBJ_PROP); +} +//бıӦ +void CPaneDrawPar::OnCbnSelPropertyChange() +{ + // + RemoveAllProperty(); + //ѡ + gModuleDrawMgr.InsertModuleGridProperty(m_wndObjectCombo.GetCurSel()); + //µ + m_wndPropList.AdjustLayout(); +} +//лֵ +void CPaneDrawPar::ChangePropCombType(DRAW_PROP_COMB_TYPE type) +{ + if(m_wndObjectCombo.GetCurSel()==(int)type) + { + OnCbnSelPropertyChange(); + } +} +//ԸıϢӦ +LRESULT CPaneDrawPar::OnPropertyChanged(WPARAM,LPARAM lParam) +{ + gDrawPropertieMgr.OnPropertyChanged(lParam); + return 0; +} +void CPaneDrawPar::RemoveAllProperty() +{ + m_wndPropList.RemoveAll(); + gDrawPropertieMgr.DelAllPropertie(); +} \ No newline at end of file diff --git a/LaiPuLaser/PaneDrawPar.h b/LaiPuLaser/PaneDrawPar.h new file mode 100644 index 0000000..6ae917d --- /dev/null +++ b/LaiPuLaser/PaneDrawPar.h @@ -0,0 +1,17 @@ +#pragma once +#include "PropertiesWnd.h" + +class CPaneDrawPar:public CPanePropertiesWnd +{ +public: + CPaneDrawPar(void); + ~CPaneDrawPar(void); + void ChangePropCombType(DRAW_PROP_COMB_TYPE type); +protected: + virtual void IniObjectCombo(); + virtual void RemoveAllProperty(); + afx_msg LRESULT OnPropertyChanged(WPARAM,LPARAM); + afx_msg void OnCbnSelPropertyChange(); + DECLARE_MESSAGE_MAP() +}; + diff --git a/LaiPuLaser/Parameter/.var b/LaiPuLaser/Parameter/.var new file mode 100644 index 0000000..e093c59 Binary files /dev/null and b/LaiPuLaser/Parameter/.var differ diff --git a/LaiPuLaser/Parameter/AppPriority/m_bGetHighestPriority.var b/LaiPuLaser/Parameter/AppPriority/m_bGetHighestPriority.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/AppPriority/m_bGetHighestPriority.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Authority/Authority.par b/LaiPuLaser/Parameter/Authority/Authority.par new file mode 100644 index 0000000..817c8e8 Binary files /dev/null and b/LaiPuLaser/Parameter/Authority/Authority.par differ diff --git a/LaiPuLaser/Parameter/AuthorityMgr/m_AutoFactory.var b/LaiPuLaser/Parameter/AuthorityMgr/m_AutoFactory.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/AuthorityMgr/m_AutoFactory.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/BaserCamera/m_GrabDelay.var b/LaiPuLaser/Parameter/BaserCamera/m_GrabDelay.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/BaserCamera/m_GrabDelay.var differ diff --git a/LaiPuLaser/Parameter/BaserCamera/m_GrabImgCnt.var b/LaiPuLaser/Parameter/BaserCamera/m_GrabImgCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/BaserCamera/m_GrabImgCnt.var differ diff --git a/LaiPuLaser/Parameter/BaserCamera/m_PasueDelay.var b/LaiPuLaser/Parameter/BaserCamera/m_PasueDelay.var new file mode 100644 index 0000000..f681c86 Binary files /dev/null and b/LaiPuLaser/Parameter/BaserCamera/m_PasueDelay.var differ diff --git a/LaiPuLaser/Parameter/BaserCamera/m_RestartDelay.var b/LaiPuLaser/Parameter/BaserCamera/m_RestartDelay.var new file mode 100644 index 0000000..4fb8f51 Binary files /dev/null and b/LaiPuLaser/Parameter/BaserCamera/m_RestartDelay.var differ diff --git a/LaiPuLaser/Parameter/BaserCamera/m_bGrabImg.var b/LaiPuLaser/Parameter/BaserCamera/m_bGrabImg.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/BaserCamera/m_bGrabImg.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_Angle.var b/LaiPuLaser/Parameter/Camera/m_Angle.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_Angle.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_CatchFrontDelay.var b/LaiPuLaser/Parameter/Camera/m_CatchFrontDelay.var new file mode 100644 index 0000000..7bcbf46 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_CatchFrontDelay.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_CatchWaitDelay.var b/LaiPuLaser/Parameter/Camera/m_CatchWaitDelay.var new file mode 100644 index 0000000..7bcbf46 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_CatchWaitDelay.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_Coord2_x.var b/LaiPuLaser/Parameter/Camera/m_Coord2_x.var new file mode 100644 index 0000000..f204a60 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_Coord2_x.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_Coord2_y.var b/LaiPuLaser/Parameter/Camera/m_Coord2_y.var new file mode 100644 index 0000000..c05169d --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_Coord2_y.var @@ -0,0 +1 @@ +fffffi@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_Coord_x.var b/LaiPuLaser/Parameter/Camera/m_Coord_x.var new file mode 100644 index 0000000..81f8caf --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_Coord_x.var @@ -0,0 +1 @@ + X@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_Coord_y.var b/LaiPuLaser/Parameter/Camera/m_Coord_y.var new file mode 100644 index 0000000..7b7a203 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_Coord_y.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_FocusAdjustDis.var b/LaiPuLaser/Parameter/Camera/m_FocusAdjustDis.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_FocusAdjustDis.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_OnePixDis.var b/LaiPuLaser/Parameter/Camera/m_OnePixDis.var new file mode 100644 index 0000000..e9c2a9b --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_OnePixDis.var @@ -0,0 +1 @@ +I +f? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_Size_h.var b/LaiPuLaser/Parameter/Camera/m_Size_h.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_Size_h.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_Size_w.var b/LaiPuLaser/Parameter/Camera/m_Size_w.var new file mode 100644 index 0000000..3eb9a52 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_Size_w.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_bCatch.var b/LaiPuLaser/Parameter/Camera/m_bCatch.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_bCatch.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_bLeftTop.var b/LaiPuLaser/Parameter/Camera/m_bLeftTop.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_bLeftTop.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_bPixCoord.var b/LaiPuLaser/Parameter/Camera/m_bPixCoord.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_bPixCoord.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Camera/m_bRotatoPtByAngle.var b/LaiPuLaser/Parameter/Camera/m_bRotatoPtByAngle.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Camera/m_bRotatoPtByAngle.var differ diff --git a/LaiPuLaser/Parameter/Camera/m_bUse.var b/LaiPuLaser/Parameter/Camera/m_bUse.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Camera/m_bUse.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_X.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_X.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_X.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_Y.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_Y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffsetAll_Y.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_X.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_X.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_X.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_Y.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_Y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AdjustOffset_Y.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AlamDelay.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AlamDelay.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AlamDelay.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AllWorkExecTimes.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AllWorkExecTimes.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AllWorkExecTimes.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_AreaCycleCnt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_AreaCycleCnt.var new file mode 100644 index 0000000..e5da38c Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_AreaCycleCnt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationPointGap.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationPointGap.var new file mode 100644 index 0000000..7773fe8 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationPointGap.var @@ -0,0 +1 @@ +@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationRange.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationRange.var new file mode 100644 index 0000000..81d4616 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_CalibrationRange.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricCnt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricCnt.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricCnt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricGap.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricGap.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_ConcentricGap.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FindOriginTimes.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FindOriginTimes.var new file mode 100644 index 0000000..fcd81c4 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_FindOriginTimes.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FirstGap.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FirstGap.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_FirstGap.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustCnt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustCnt.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustCnt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_X.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_X.var new file mode 100644 index 0000000..bb0e5a2 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_X.var @@ -0,0 +1 @@ +Q \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_Y.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_Y.var new file mode 100644 index 0000000..f2be5df --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_FocalAdjustDis_Y.var @@ -0,0 +1 @@ +{Gz \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_NoMarkCanWork.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_NoMarkCanWork.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_NoMarkCanWork.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_OneObjMarkCnt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_OneObjMarkCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_OneObjMarkCnt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_X.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_X.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_X.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_Y.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_Y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_SizeAdjust_Y.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bBackToProductPt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bBackToProductPt.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bBackToProductPt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bCalibrationCatch.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCalibrationCatch.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCalibrationCatch.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bCheckObjDataConsistency.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCheckObjDataConsistency.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCheckObjDataConsistency.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bCollectAreaCross.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCollectAreaCross.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bCollectAreaCross.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bConnectObj.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bConnectObj.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bConnectObj.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bFocalAdjust.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bFocalAdjust.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bFocalAdjust.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniConfirmMsgBox.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniConfirmMsgBox.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniConfirmMsgBox.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorX.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorX.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorX.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorY.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorY.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorY.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorZ.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorZ.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniMotorZ.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniPlatfrom.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniPlatfrom.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bIniPlatfrom.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bInitedToProductPt.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bInitedToProductPt.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bInitedToProductPt.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bSetLightState.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bSetLightState.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bSetLightState.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bStartWorkMsg.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bStartWorkMsg.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bStartWorkMsg.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bStretchDataToRealSize.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bStretchDataToRealSize.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/CommonFlowMgr/m_bStretchDataToRealSize.var differ diff --git a/LaiPuLaser/Parameter/CommonFlowMgr/m_bUseLaser.var b/LaiPuLaser/Parameter/CommonFlowMgr/m_bUseLaser.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/CommonFlowMgr/m_bUseLaser.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/CompensateArea/CompensateArea.par b/LaiPuLaser/Parameter/CompensateArea/CompensateArea.par new file mode 100644 index 0000000..064b507 Binary files /dev/null and b/LaiPuLaser/Parameter/CompensateArea/CompensateArea.par differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_x.var b/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_x.var new file mode 100644 index 0000000..508ced3 --- /dev/null +++ b/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_x.var @@ -0,0 +1 @@ +{Gz? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_y.var b/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_CatchCompensate_y.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_CatchTimes.var b/LaiPuLaser/Parameter/DaHenCCD/m_CatchTimes.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_CatchTimes.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_IPAddrStr.var b/LaiPuLaser/Parameter/DaHenCCD/m_IPAddrStr.var new file mode 100644 index 0000000..53885f4 --- /dev/null +++ b/LaiPuLaser/Parameter/DaHenCCD/m_IPAddrStr.var @@ -0,0 +1 @@ + 192.168.0.10 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_x.var b/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_x.var new file mode 100644 index 0000000..3f679d2 Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_x.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_y.var b/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_y.var new file mode 100644 index 0000000..7b51995 Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_LeftCrossCoord_y.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_x.var b/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_x.var new file mode 100644 index 0000000..3c7e392 Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_x.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_y.var b/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_y.var new file mode 100644 index 0000000..7b51995 Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_RightCrossCoord_y.var differ diff --git a/LaiPuLaser/Parameter/DaHenCCD/m_Thresh.var b/LaiPuLaser/Parameter/DaHenCCD/m_Thresh.var new file mode 100644 index 0000000..bc7c4a7 Binary files /dev/null and b/LaiPuLaser/Parameter/DaHenCCD/m_Thresh.var differ diff --git a/LaiPuLaser/Parameter/GratingRuler/m_CommPort.var b/LaiPuLaser/Parameter/GratingRuler/m_CommPort.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/GratingRuler/m_CommPort.var differ diff --git a/LaiPuLaser/Parameter/GratingRuler/m_MaxCalibrationTimes.var b/LaiPuLaser/Parameter/GratingRuler/m_MaxCalibrationTimes.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/GratingRuler/m_MaxCalibrationTimes.var differ diff --git a/LaiPuLaser/Parameter/GratingRuler/m_MeasureErrorGap.var b/LaiPuLaser/Parameter/GratingRuler/m_MeasureErrorGap.var new file mode 100644 index 0000000..aab6b4a Binary files /dev/null and b/LaiPuLaser/Parameter/GratingRuler/m_MeasureErrorGap.var differ diff --git a/LaiPuLaser/Parameter/GratingRuler/m_OriginCalibrationError.var b/LaiPuLaser/Parameter/GratingRuler/m_OriginCalibrationError.var new file mode 100644 index 0000000..deee41d --- /dev/null +++ b/LaiPuLaser/Parameter/GratingRuler/m_OriginCalibrationError.var @@ -0,0 +1 @@ +{Gz? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/GratingRuler/m_bUseGratingRuler.var b/LaiPuLaser/Parameter/GratingRuler/m_bUseGratingRuler.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/GratingRuler/m_bUseGratingRuler.var differ diff --git a/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorH.var b/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorH.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorH.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorV.var b/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorV.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/HawkvisCCD/m_bMirrorV.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/HawkvisCCD/m_bRotate180.var b/LaiPuLaser/Parameter/HawkvisCCD/m_bRotate180.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/HawkvisCCD/m_bRotate180.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/HawkvisCCD/m_nExpore.var b/LaiPuLaser/Parameter/HawkvisCCD/m_nExpore.var new file mode 100644 index 0000000..ac3f23e Binary files /dev/null and b/LaiPuLaser/Parameter/HawkvisCCD/m_nExpore.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/CutOffset.par b/LaiPuLaser/Parameter/IS3000LaserCutMgr/CutOffset.par new file mode 100644 index 0000000..e1f1763 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/CutOffset.par @@ -0,0 +1,20 @@ +[Rect.L]//ķΧ +-100 +[Rect.R] +100 +[Rect.T] +25 +[Rect.B] +-25 +[Offset X]//X +0 +[Offset Y]//Y +0 +[m_bLinear]//ǷԲ +TRUE +[m_bDirX]//Բķ true Ϊ X +TRUE +[Base Point Start X]//׼ start X +89 +[Base Point End X]//׼ end X +-89 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName0.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName0.var new file mode 100644 index 0000000..8b6b5e2 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName0.var @@ -0,0 +1,2 @@ + +Dia Mark 1 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName1.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName1.var new file mode 100644 index 0000000..b4dd8aa --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName1.var @@ -0,0 +1 @@ +Wrie 1 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName2.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName2.var new file mode 100644 index 0000000..d8fd6fc --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName2.var @@ -0,0 +1 @@ +Wrie 2 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName3.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName3.var new file mode 100644 index 0000000..d616ff5 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName3.var @@ -0,0 +1,2 @@ + +Dia Mark 2 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName4.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName4.var new file mode 100644 index 0000000..03f0c22 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName4.var @@ -0,0 +1 @@ +Wrie 3 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName5.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName5.var new file mode 100644 index 0000000..9b266b6 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_ButtomName5.var @@ -0,0 +1 @@ +Wrie 4 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompEndX.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompEndX.var new file mode 100644 index 0000000..668224f Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompEndX.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompStartX.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompStartX.var new file mode 100644 index 0000000..0f3a48e Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompStartX.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompX.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompX.var new file mode 100644 index 0000000..30fda4d --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompX.var @@ -0,0 +1 @@ +Q \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompY.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompY.var new file mode 100644 index 0000000..6cf4e1c --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CompY.var @@ -0,0 +1,2 @@ +p= +ף? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CurLaserFre.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CurLaserFre.var new file mode 100644 index 0000000..dbd975b Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_CurLaserFre.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower0.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower0.var new file mode 100644 index 0000000..e871f18 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower0.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower1.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower1.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower1.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower2.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower2.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower2.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower3.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower3.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower3.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower4.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower4.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower4.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower5.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower5.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_LaserPower5.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath.var new file mode 100644 index 0000000..f836bc2 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath.var @@ -0,0 +1 @@ + E:\mak_file\ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath0.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath0.var new file mode 100644 index 0000000..00abc3c --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath0.var @@ -0,0 +1 @@ +*F:\work\LPS-ISP3000\mak_file\MarkFile1.mak \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath1.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath1.var new file mode 100644 index 0000000..bb0ea6e --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath1.var @@ -0,0 +1 @@ +*F:\work\LPS-ISP3000\mak_file\MarkFile2.mak \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath2.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath2.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath2.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath3.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath3.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath3.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath4.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath4.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath4.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath5.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath5.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_TempPath5.var differ diff --git a/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_bUseComp.var b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_bUseComp.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000LaserCutMgr/m_bUseComp.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_BaseProductLen.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_BaseProductLen.var new file mode 100644 index 0000000..32f7751 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000PlcMgr/m_BaseProductLen.var @@ -0,0 +1 @@ +fffffvf@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_ChangeSlot.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ChangeSlot.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ChangeSlot.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_CheckSlotNum.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_CheckSlotNum.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_CheckSlotNum.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_ComPort.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ComPort.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ComPort.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_FristSlotDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_FristSlotDis.var new file mode 100644 index 0000000..510b45d Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_FristSlotDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomLoadDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomLoadDis.var new file mode 100644 index 0000000..5ce4de2 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomLoadDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomTowardDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomTowardDis.var new file mode 100644 index 0000000..4fb8f51 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomTowardDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomUnloadDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomUnloadDis.var new file mode 100644 index 0000000..66df2e0 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomUnloadDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomViewDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomViewDis.var new file mode 100644 index 0000000..d3c1447 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_PlatfomViewDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_ReadDelay.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ReadDelay.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_ReadDelay.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_SlotStdDis.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_SlotStdDis.var new file mode 100644 index 0000000..d3c1447 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_SlotStdDis.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bChangeSlot.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bChangeSlot.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bChangeSlot.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckEnd.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckEnd.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckEnd.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckPlcState.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckPlcState.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bCheckPlcState.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightBuzzer.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightBuzzer.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightBuzzer.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightGreen.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightGreen.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightGreen.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightRed.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightRed.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightRed.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightYellow.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightYellow.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLightYellow.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLoad.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLoad.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bLoad.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bN2Valve.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bN2Valve.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bN2Valve.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bOrigin.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bOrigin.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bOrigin.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bPrintPlcMsg.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bPrintPlcMsg.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bPrintPlcMsg.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReadByteRev.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReadByteRev.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReadByteRev.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReset.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReset.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bReset.var differ diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowPlcErrRT.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowPlcErrRT.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowPlcErrRT.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowRecvPlcBit.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowRecvPlcBit.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bShowRecvPlcBit.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/IS3000PlcMgr/m_bUnload.var b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bUnload.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/IS3000PlcMgr/m_bUnload.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_BaseThickness.var b/LaiPuLaser/Parameter/Laser/m_BaseThickness.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_BaseThickness.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_LaserCoord_x.var b/LaiPuLaser/Parameter/Laser/m_LaserCoord_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_LaserCoord_x.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_LaserCoord_y.var b/LaiPuLaser/Parameter/Laser/m_LaserCoord_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_LaserCoord_y.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_MaxThickness.var b/LaiPuLaser/Parameter/Laser/m_MaxThickness.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_MaxThickness.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_MinThickness.var b/LaiPuLaser/Parameter/Laser/m_MinThickness.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_MinThickness.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_OpenDelay.var b/LaiPuLaser/Parameter/Laser/m_OpenDelay.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_OpenDelay.var differ diff --git a/LaiPuLaser/Parameter/Laser/m_WorkThickness.var b/LaiPuLaser/Parameter/Laser/m_WorkThickness.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Laser/m_WorkThickness.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/bWriteDebugLog.var b/LaiPuLaser/Parameter/LogMgr/bWriteDebugLog.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/LogMgr/bWriteDebugLog.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/m_DebugCmdDelay.var b/LaiPuLaser/Parameter/LogMgr/m_DebugCmdDelay.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/LogMgr/m_DebugCmdDelay.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/m_LogListMaxLine.var b/LaiPuLaser/Parameter/LogMgr/m_LogListMaxLine.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/LogMgr/m_LogListMaxLine.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/m_bDebug.var b/LaiPuLaser/Parameter/LogMgr/m_bDebug.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/LogMgr/m_bDebug.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/m_bDrawRuler.var b/LaiPuLaser/Parameter/LogMgr/m_bDrawRuler.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/LogMgr/m_bDrawRuler.var differ diff --git a/LaiPuLaser/Parameter/LogMgr/m_bWriteToLogList.var b/LaiPuLaser/Parameter/LogMgr/m_bWriteToLogList.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/LogMgr/m_bWriteToLogList.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MarkArea/FixedMarkArea-无补偿.par b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea-无补偿.par new file mode 100644 index 0000000..2746910 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea-无补偿.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/FixedMarkArea.par b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea.par new file mode 100644 index 0000000..ffd6cd9 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_30范围3_8.par b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_30范围3_8.par new file mode 100644 index 0000000..099a4aa Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_30范围3_8.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_40范围2_6.par b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_40范围2_6.par new file mode 100644 index 0000000..cb7abc7 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/FixedMarkArea_40范围2_6.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/MarkArea.par b/LaiPuLaser/Parameter/MarkArea/MarkArea.par new file mode 100644 index 0000000..df8f29c Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/MarkArea.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/MarkArea_10_10_Size33.par b/LaiPuLaser/Parameter/MarkArea/MarkArea_10_10_Size33.par new file mode 100644 index 0000000..59c11a4 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/MarkArea_10_10_Size33.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/NewArea.par b/LaiPuLaser/Parameter/MarkArea/NewArea.par new file mode 100644 index 0000000..e1a7b8b Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/NewArea.par differ diff --git a/LaiPuLaser/Parameter/MarkArea/test.par b/LaiPuLaser/Parameter/MarkArea/test.par new file mode 100644 index 0000000..d8007e7 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkArea/test.par differ diff --git a/LaiPuLaser/Parameter/MarkDataMgr/m_MarkCnt.var b/LaiPuLaser/Parameter/MarkDataMgr/m_MarkCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/MarkDataMgr/m_MarkCnt.var differ diff --git a/LaiPuLaser/Parameter/MarkDataMgr/m_bConnectObj.var b/LaiPuLaser/Parameter/MarkDataMgr/m_bConnectObj.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkDataMgr/m_bConnectObj.var differ diff --git a/LaiPuLaser/Parameter/MarkDataMgr/m_bMarkHoleMode.var b/LaiPuLaser/Parameter/MarkDataMgr/m_bMarkHoleMode.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkDataMgr/m_bMarkHoleMode.var differ diff --git a/LaiPuLaser/Parameter/MarkPar/MarkPar.par b/LaiPuLaser/Parameter/MarkPar/MarkPar.par new file mode 100644 index 0000000..7e16a32 Binary files /dev/null and b/LaiPuLaser/Parameter/MarkPar/MarkPar.par differ diff --git a/LaiPuLaser/Parameter/Mirror/m_CheckDataArea.var b/LaiPuLaser/Parameter/Mirror/m_CheckDataArea.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Mirror/m_CheckDataArea.var differ diff --git a/LaiPuLaser/Parameter/Mirror/m_LaserSwitch.var b/LaiPuLaser/Parameter/Mirror/m_LaserSwitch.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Mirror/m_LaserSwitch.var differ diff --git a/LaiPuLaser/Parameter/Mirror/m_LaserType.var b/LaiPuLaser/Parameter/Mirror/m_LaserType.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/Mirror/m_LaserType.var differ diff --git a/LaiPuLaser/Parameter/Mirror/m_MirrorRange_h.var b/LaiPuLaser/Parameter/Mirror/m_MirrorRange_h.var new file mode 100644 index 0000000..bf65575 Binary files /dev/null and b/LaiPuLaser/Parameter/Mirror/m_MirrorRange_h.var differ diff --git a/LaiPuLaser/Parameter/Mirror/m_MirrorRange_w.var b/LaiPuLaser/Parameter/Mirror/m_MirrorRange_w.var new file mode 100644 index 0000000..bf65575 Binary files /dev/null and b/LaiPuLaser/Parameter/Mirror/m_MirrorRange_w.var differ diff --git a/LaiPuLaser/Parameter/Mirror/m_MirrorStep.var b/LaiPuLaser/Parameter/Mirror/m_MirrorStep.var new file mode 100644 index 0000000..30b581e --- /dev/null +++ b/LaiPuLaser/Parameter/Mirror/m_MirrorStep.var @@ -0,0 +1 @@ +UX@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Mirror/m_bUsePciCard.var b/LaiPuLaser/Parameter/Mirror/m_bUsePciCard.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Mirror/m_bUsePciCard.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/2d000000.cfg b/LaiPuLaser/Parameter/MotionCard_PCI1245/2d000000.cfg new file mode 100644 index 0000000..e2522ef --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/2d000000.cfg @@ -0,0 +1,491 @@ +[Device Config] +EmgLogic=0 +EmgFilterTime=0 +[AXIS 0 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=250000 +VelLow=20000 +Acc=1000000 +Dec=1000000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 1 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=250000 +VelLow=20000 +Acc=1000000 +Dec=1000000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 2 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=250000 +VelLow=2000 +Acc=1000000 +Dec=1000000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=4 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 3 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=8000 +VelLow=2000 +Acc=10000 +Dec=10000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/PCI_1245.cfg b/LaiPuLaser/Parameter/MotionCard_PCI1245/PCI_1245.cfg new file mode 100644 index 0000000..00fca89 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/PCI_1245.cfg @@ -0,0 +1,491 @@ +[Device Config] +EmgLogic=0 +EmgFilterTime=0 +[AXIS 0 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=50000 +VelLow=10000 +Acc=20000 +Dec=20000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 1 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=20000 +VelLow=20000 +Acc=20000 +Dec=20000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 2 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=20000 +VelLow=20000 +Acc=10000 +Dec=10000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=4 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 +[AXIS 3 Config] +PlsPerUnit=1 +MaxAcc=50000000 +MaxVel=1000000 +MaxDec=50000000 +MaxJerk=1 +VelHigh=8000 +VelLow=2000 +Acc=10000 +Dec=10000 +PlsInMde=2 +PlsInLogic=0 +PlsInSrc=2 +PlsOutMde=1 +AlmEnable=0 +AlmLogic=0 +AlmReact=1 +InpEnable=0 +InpLogic=1 +ErcLogic=1 +ErcOnTime=8 +ErcOffTime=4 +ErcEnMde=0 +SdEnable=2 +SdLogic=2 +SdReact=2 +SdLatch=2 +ElEnable=1 +ElLogic=1 +PelLogic=2 +MelLogic=2 +ElReact=0 +SwMelEnable=0 +SwPelEnable=0 +SwMelReact=1 +SwPelReact=1 +SwMelValue=-10000000 +SwPelValue=10000000 +OrgLogic=1 +EzLogic=0 +HomeCrossDis=10000 +HomeResetEnable=1 +CmpSrc=2 +CmpMethod=4 +CmpEnable=2 +GenDoEnable=1 +ExtMasterSrc=0 +ExtSelEnable=2 +ExtPulseNum=1 +PlsInMaxFreq=1 +HomeExSwitchMode=2 +HomeOffsetDistance=0 +HomeOffsetVel=8000 +OrgReact=1 +BacklashEnable=0 +BacklashPulses=10 +BacklashVel=1000 +CmpPulseMode=2 +CmpPulseLogic=2 +CmpPulseWidth=8 +CmpPulseWidthEx=0 +LatchEn=2 +LatchLogic=2 +LatchBufEnable=2 +LatchBufMinDist=0 +LatchBufEventNum=0 +LatchBufSource=2 +LatchBufAxisID=65535 +LatchBufEdge=65535 +ExtPulseInMode=2 +ExtPresetNum=1 +CamDoEnable=2 +CamDOLoLimit=10000 +CamDOHiLimit=20000 +CamDoCmpSrc=2 +CamDoLogic=2 +ModuleRange=0 +SimStartSource=0 +IN1StopEnable=0 +IN1StopLogic=0 +IN1StopReact=1 +IN2StopEnable=0 +IN2StopLogic=0 +IN2StopReact=1 +IN4StopEnable=0 +IN4StopLogic=0 +IN4StopReact=1 +IN5StopEnable=0 +IN5StopLogic=0 +IN5StopReact=1 +MelToleranceEnable=0 +MelToleranceValue=5000 +PelToleranceEnable=0 +PelToleranceValue=5000 +SwMelToleranceEnable=0 +SwMelToleranceValue=5000 +SwPelToleranceEnable=0 +SwPelToleranceValue=5000 +ALMFilterTime=0 +LMTPFilterTime=0 +LMTNFilterTime=0 +IN1FilterTime=0 +IN2FilterTime=0 +ORGFilterTime=0 +IN4FilterTime=0 +IN5FilterTime=0 +KillDec=100000 +PPUDenominator=1 +PulseOutReverse=0 +JogVLTime=5000 +JogVelLow=2000 +JogVelHigh=8000 +JogAcc=10000 +JogDec=10000 +JogJerk=0 +HomeVelLow=2000 +HomeVelHigh=8000 +HomeAcc=10000 +HomeDec=10000 +HomeJerk=0 +PosLagEn=0 +MaxPosLag=0 diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_AsixNum.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_AsixNum.var new file mode 100644 index 0000000..2cf9f20 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_AsixNum.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_CheckDelay.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_CheckDelay.var new file mode 100644 index 0000000..f681c86 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_CheckDelay.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_HomeMode.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_HomeMode.var new file mode 100644 index 0000000..f16a710 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_HomeMode.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev0.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev0.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev0.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev1.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev1.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev1.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev2.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev2.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev2.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev3.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev3.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev3.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev4.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev4.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPortVec_bRev4.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum0.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum0.var new file mode 100644 index 0000000..2cf9f20 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum0.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum1.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum1.var new file mode 100644 index 0000000..2cf9f20 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum1.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum2.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum2.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum2.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum3.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum3.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum3.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum4.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum4.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum4.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum6.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum6.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum6.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum7.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum7.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum7.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum8.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum8.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum8.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum9.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum9.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_AsixNum9.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum0.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum0.var new file mode 100644 index 0000000..86906d2 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum0.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum1.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum1.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum1.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum2.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum2.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum2.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum3.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum3.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum3.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum4.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum4.var new file mode 100644 index 0000000..7bde864 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum4.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum6.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum6.var new file mode 100644 index 0000000..86906d2 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum6.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum7.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum7.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum7.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum8.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum8.var new file mode 100644 index 0000000..f16a710 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum8.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum9.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum9.var new file mode 100644 index 0000000..ea2c20a Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_IOCtrlPort_PortNum9.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MaxActCoordErr.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MaxActCoordErr.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MaxActCoordErr.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Acc.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Dec.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelHigh.var new file mode 100644 index 0000000..7d897c2 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelLow.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorOriginSpeed_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorX2AsixIdx.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorX2AsixIdx.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorX2AsixIdx.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorXAsixIdx.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorXAsixIdx.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorXAsixIdx.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorYAsixIdx.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorYAsixIdx.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorYAsixIdx.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZAsixIdx.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZAsixIdx.var new file mode 100644 index 0000000..2cf9f20 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZAsixIdx.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Acc.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Dec.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelHigh.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelLow.var new file mode 100644 index 0000000..c59ae7f Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MotorZMoveSpeed_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Acc.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Dec.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelHigh.var new file mode 100644 index 0000000..3c27092 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelLow.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorX_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Acc.var new file mode 100644 index 0000000..1704d91 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Dec.var new file mode 100644 index 0000000..1704d91 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelHigh.var new file mode 100644 index 0000000..3c27092 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelLow.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorY_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Acc.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Dec.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelHigh.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelLow.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_MoveSpeedMotorZ_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Acc.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Dec.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelHigh.var new file mode 100644 index 0000000..b4e701d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelLow.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorXY_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Acc.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Dec.var new file mode 100644 index 0000000..3bb0f9d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelHigh.var new file mode 100644 index 0000000..2a5a827 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelLow.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_OrgSpeedMotorZ_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Acc.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Dec.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelHigh.var new file mode 100644 index 0000000..b4e701d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelLow.var new file mode 100644 index 0000000..dbd975b Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatMoveSpeed_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Acc.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Dec.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelHigh.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelLow.var new file mode 100644 index 0000000..dbd975b Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PlatWorkSpeed_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PortNum.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PortNum.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_PortNum.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Acc.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Dec.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelHigh.var new file mode 100644 index 0000000..3c27092 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelLow.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorX_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Acc.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Acc.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Acc.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Dec.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Dec.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_Dec.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelHigh.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelHigh.var new file mode 100644 index 0000000..3c27092 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelHigh.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelLow.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelLow.var new file mode 100644 index 0000000..a548260 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_WorkSpeedMotorY_VelLow.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_XYFindOriginByLimit.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_XYFindOriginByLimit.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_XYFindOriginByLimit.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bArcCut.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bArcCut.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bArcCut.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bAutoCloseSevon.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bAutoCloseSevon.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bAutoCloseSevon.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bCheckActCoord.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bCheckActCoord.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bCheckActCoord.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bGroupAisxRev.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bGroupAisxRev.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bGroupAisxRev.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bRev.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bRev.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bRev.var differ diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorX.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorX.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorX.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorY.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorY.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bReverseMotorY.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUseIOCtrl.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUseIOCtrl.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUseIOCtrl.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUsed.var b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUsed.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/MotionCard_PCI1245/m_bUsed.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ObjComponent/m_NoSelColor.var b/LaiPuLaser/Parameter/ObjComponent/m_NoSelColor.var new file mode 100644 index 0000000..aa47020 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_NoSelColor.var differ diff --git a/LaiPuLaser/Parameter/ObjComponent/m_SelColor.var b/LaiPuLaser/Parameter/ObjComponent/m_SelColor.var new file mode 100644 index 0000000..fc3ff07 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_SelColor.var differ diff --git a/LaiPuLaser/Parameter/ObjComponent/m_ViewObjColor.var b/LaiPuLaser/Parameter/ObjComponent/m_ViewObjColor.var new file mode 100644 index 0000000..7524c44 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_ViewObjColor.var differ diff --git a/LaiPuLaser/Parameter/ObjComponent/m_ViewedObjColor.var b/LaiPuLaser/Parameter/ObjComponent/m_ViewedObjColor.var new file mode 100644 index 0000000..378abf3 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_ViewedObjColor.var differ diff --git a/LaiPuLaser/Parameter/ObjComponent/m_bDrawBindingObj.var b/LaiPuLaser/Parameter/ObjComponent/m_bDrawBindingObj.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ObjComponent/m_bDrawBindingObj.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ObjComponent/m_bDrawFillColor.var b/LaiPuLaser/Parameter/ObjComponent/m_bDrawFillColor.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ObjComponent/m_bDrawFillColor.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ObjComponent/m_bShowRealObj.var b/LaiPuLaser/Parameter/ObjComponent/m_bShowRealObj.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_bShowRealObj.var differ diff --git a/LaiPuLaser/Parameter/ObjComponent/m_bUseArea.var b/LaiPuLaser/Parameter/ObjComponent/m_bUseArea.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ObjComponent/m_bUseArea.var differ diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower - 副本.txt b/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower - 副本.txt new file mode 100644 index 0000000..797afe3 --- /dev/null +++ b/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower - 副本.txt @@ -0,0 +1,6 @@ +//Ƶʣ +34,30,20.8 +33,30,20.3 +32,30,17.3 +31,30,12.1 +30,30,6.8 diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower.txt b/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower.txt new file mode 100644 index 0000000..2d21974 --- /dev/null +++ b/LaiPuLaser/Parameter/OptoWaveLaserMgr/OptoWavePower.txt @@ -0,0 +1,10 @@ +//Ƶʣ +30,30,5.32 +30.5,30,7.58 +31,30,9.93 +31.5,30,12.3 +32,30,15 +32.5,30,16.6 +33,30,17.3 +33.5,30,17.8 +34,30,17.9 diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Com.var b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Com.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Com.var differ diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_CurrUpTime.var b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_CurrUpTime.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_CurrUpTime.var differ diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Fre.var b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Fre.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_Fre.var differ diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_PowerCurr.var b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_PowerCurr.var new file mode 100644 index 0000000..0c33a60 Binary files /dev/null and b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_PowerCurr.var differ diff --git a/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_SendDelay.var b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_SendDelay.var new file mode 100644 index 0000000..0861a0a Binary files /dev/null and b/LaiPuLaser/Parameter/OptoWaveLaserMgr/m_SendDelay.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdDelay.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdDelay.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdRevDelay.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdRevDelay.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdRevDelay.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdSendTims.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdSendTims.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadCmdSendTims.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadComPort.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadComPort.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_LoadComPort.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadCoord.var new file mode 100644 index 0000000..cf2ec1f Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadZJCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadZJCoord.var new file mode 100644 index 0000000..3eeaf74 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2LoadZJCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2ThrowCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2ThrowCoord.var new file mode 100644 index 0000000..8db603e Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2ThrowCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2UnLoadCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2UnLoadCoord.var new file mode 100644 index 0000000..3eeaf74 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorX2UnLoadCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadCoord.var new file mode 100644 index 0000000..cf2ec1f Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadZJCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadZJCoord.var new file mode 100644 index 0000000..3eeaf74 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXLoadZJCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXThrowCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXThrowCoord.var new file mode 100644 index 0000000..8db603e Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXThrowCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXUnLoadCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXUnLoadCoord.var new file mode 100644 index 0000000..3eeaf74 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXUnLoadCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXWaitCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXWaitCoord.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_MotorXWaitCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_y.var new file mode 100644 index 0000000..4001d0e Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset1_y.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_y.var new file mode 100644 index 0000000..4001d0e Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_NPOffset2_y.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_PlcCmdSendDelay.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_PlcCmdSendDelay.var new file mode 100644 index 0000000..7bcbf46 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_PlcCmdSendDelay.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerIP.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerIP.var new file mode 100644 index 0000000..4c05a74 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerIP.var @@ -0,0 +1 @@ + 192.168.8.2 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerPort.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerPort.var new file mode 100644 index 0000000..acac3a9 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_ServerPort.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_StopStepUnloadTimes.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_StopStepUnloadTimes.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_StopStepUnloadTimes.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordEnd.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordEnd.var new file mode 100644 index 0000000..13aacb5 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordEnd.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordStart.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordStart.var new file mode 100644 index 0000000..f8834e8 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1DangerCoordStart.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkOffset_y.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1MarkPosOffset_y.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1SafeCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1SafeCoord.var new file mode 100644 index 0000000..01096ff Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track1SafeCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordEnd.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordEnd.var new file mode 100644 index 0000000..30b0411 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordEnd.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordStart.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordStart.var new file mode 100644 index 0000000..dbd975b Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2DangerCoordStart.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_x.var new file mode 100644 index 0000000..f0054d4 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_x.var @@ -0,0 +1 @@ +{Gz \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_y.var new file mode 100644 index 0000000..23e8560 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkOffset_y.var @@ -0,0 +1 @@ +Q \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_x.var new file mode 100644 index 0000000..30b8abe Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_y.var new file mode 100644 index 0000000..597e45c --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2MarkPosOffset_y.var @@ -0,0 +1 @@ +!@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_x.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_x.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_y.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_y.var new file mode 100644 index 0000000..d50493b Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2Offset_y.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2SafeCoord.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2SafeCoord.var new file mode 100644 index 0000000..d93b38a Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_Track2SafeCoord.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort1.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort1.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort1.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort2.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort2.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_TrackComPort2.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_bAutoWorkMode.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_bAutoWorkMode.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_bAutoWorkMode.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_bCheckUnloadState.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_bCheckUnloadState.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_bCheckUnloadState.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldLoad.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldLoad.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldLoad.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldMarking.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldMarking.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldMarking.var differ diff --git a/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldUnLoad.var b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldUnLoad.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PGM_SW_XL/m_bShieldUnLoad.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateH.var b/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateH.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateH.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateL.var b/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateL.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_OutPortDefaultStateL.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec0.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec0.var new file mode 100644 index 0000000..6daafd6 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec0.var @@ -0,0 +1 @@ +X \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec1.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec1.var new file mode 100644 index 0000000..cc24b93 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec1.var @@ -0,0 +1 @@ +X ᷽ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec2.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec2.var new file mode 100644 index 0000000..f0afe4f --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec2.var @@ -0,0 +1 @@ +Y \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec3.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec3.var new file mode 100644 index 0000000..643fa47 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec3.var @@ -0,0 +1 @@ +Y ᷽ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_bIniState15.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_bIniState15.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_bIniState15.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first0.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first0.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first0.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first1.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first1.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first1.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first10.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first10.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first10.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first11.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first11.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first11.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first12.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first12.var new file mode 100644 index 0000000..c4bd572 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first12.var @@ -0,0 +1 @@ +Z ᷽ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first13.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first13.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first13.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first14.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first14.var new file mode 100644 index 0000000..fd86657 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first14.var @@ -0,0 +1 @@ +̵ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first15.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first15.var new file mode 100644 index 0000000..8c7366b --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first15.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first16.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first16.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first16.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first17.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first17.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first17.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first18.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first18.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first18.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first19.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first19.var new file mode 100644 index 0000000..7d70906 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first19.var @@ -0,0 +1 @@ +X λ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first2.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first2.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first2.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first20.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first20.var new file mode 100644 index 0000000..b7c4038 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first20.var @@ -0,0 +1 @@ +Y λ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first21.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first21.var new file mode 100644 index 0000000..5b80901 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first21.var @@ -0,0 +1 @@ +Z λ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first22.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first22.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first22.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first23.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first23.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first23.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first24.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first24.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first24.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first25.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first25.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first25.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first26.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first26.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first26.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first27.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first27.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first27.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first28.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first28.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first28.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first29.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first29.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first29.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first3.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first3.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first3.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first30.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first30.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first30.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first31.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first31.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first31.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first4.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first4.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first4.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first5.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first5.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first5.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first6.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first6.var new file mode 100644 index 0000000..5e152a2 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first6.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first7.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first7.var new file mode 100644 index 0000000..830e1db --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first7.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first8.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first8.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first8.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first9.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first9.var new file mode 100644 index 0000000..607a862 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_first9.var @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second0.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second0.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second0.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second1.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second1.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second1.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second10.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second10.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second10.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second11.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second11.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second11.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second12.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second12.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second12.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second13.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second13.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second13.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second14.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second14.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second14.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second15.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second15.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second15.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second16.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second16.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second16.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second17.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second17.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second17.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second18.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second18.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second18.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second19.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second19.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second19.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second2.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second2.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second2.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second20.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second20.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second20.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second21.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second21.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second21.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second22.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second22.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second22.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second23.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second23.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second23.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second24.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second24.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second24.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second25.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second25.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second25.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second26.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second26.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second26.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second27.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second27.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second27.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second28.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second28.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second28.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second29.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second29.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second29.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second3.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second3.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second3.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second30.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second30.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second30.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second31.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second31.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second31.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second4.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second4.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second4.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second5.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second5.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second5.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second6.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second6.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second6.var differ diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second7.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second7.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second7.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second8.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second8.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second8.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second9.var b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second9.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PciPort/m_PciPortVec_second9.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/MotorSpeedX.txt b/LaiPuLaser/Parameter/PlatformXY/MotorSpeedX.txt new file mode 100644 index 0000000..6693429 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/MotorSpeedX.txt @@ -0,0 +1,30 @@ +/ʱus/ƶmm/ʱms +5,100,775 +10,100,880 +15,100,977 +20,100,1075 +25,100,1180 +30,100,1275 +35,100,1375 +40,100,1475 +45,100,1575 +50,100,1674 +55,100,1777 +60,100,1879 +65,100,1975 +70,100,2075 +75,100,2180 +80,100,2275 +85,100,2375 +90,100,2480 +95,100,2575 +100,100,2675 + + + + + + + + + diff --git a/LaiPuLaser/Parameter/PlatformXY/MotorSpeedY.txt b/LaiPuLaser/Parameter/PlatformXY/MotorSpeedY.txt new file mode 100644 index 0000000..6693429 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/MotorSpeedY.txt @@ -0,0 +1,30 @@ +/ʱus/ƶmm/ʱms +5,100,775 +10,100,880 +15,100,977 +20,100,1075 +25,100,1180 +30,100,1275 +35,100,1375 +40,100,1475 +45,100,1575 +50,100,1674 +55,100,1777 +60,100,1879 +65,100,1975 +70,100,2075 +75,100,2180 +80,100,2275 +85,100,2375 +90,100,2480 +95,100,2575 +100,100,2675 + + + + + + + + + diff --git a/LaiPuLaser/Parameter/PlatformXY/m_InitMotorX.var b/LaiPuLaser/Parameter/PlatformXY/m_InitMotorX.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/m_InitMotorX.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PlatformXY/m_InitMotorY.var b/LaiPuLaser/Parameter/PlatformXY/m_InitMotorY.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/m_InitMotorY.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxDisD.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisD.var new file mode 100644 index 0000000..069bca6 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisD.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxDisL.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisL.var new file mode 100644 index 0000000..8971133 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisL.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxDisR.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisR.var new file mode 100644 index 0000000..a548260 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisR.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxDisU.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisU.var new file mode 100644 index 0000000..13aacb5 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxDisU.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxManualMoveDis.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxManualMoveDis.var new file mode 100644 index 0000000..e55d655 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxManualMoveDis.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MaxMoveDis.var b/LaiPuLaser/Parameter/PlatformXY/m_MaxMoveDis.var new file mode 100644 index 0000000..e55d655 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MaxMoveDis.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MoveDelay.var b/LaiPuLaser/Parameter/PlatformXY/m_MoveDelay.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MoveDelay.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MoveNeedDeviceIni.var b/LaiPuLaser/Parameter/PlatformXY/m_MoveNeedDeviceIni.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MoveNeedDeviceIni.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_MoveSpeed.var b/LaiPuLaser/Parameter/PlatformXY/m_MoveSpeed.var new file mode 100644 index 0000000..ee5bfc6 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_MoveSpeed.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_x.var b/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_x.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_y.var b/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_y.var new file mode 100644 index 0000000..e727004 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_ProductPoint_y.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_UserMaxMoveDis.var b/LaiPuLaser/Parameter/PlatformXY/m_UserMaxMoveDis.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_UserMaxMoveDis.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_WorkSpeed.var b/LaiPuLaser/Parameter/PlatformXY/m_WorkSpeed.var new file mode 100644 index 0000000..1704d91 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_WorkSpeed.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_XY_Angle.var b/LaiPuLaser/Parameter/PlatformXY/m_XY_Angle.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_XY_Angle.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bBresenhamAlgorithm.var b/LaiPuLaser/Parameter/PlatformXY/m_bBresenhamAlgorithm.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/m_bBresenhamAlgorithm.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bMoveToRealCoord.var b/LaiPuLaser/Parameter/PlatformXY/m_bMoveToRealCoord.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_bMoveToRealCoord.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bSpeedCtrl.var b/LaiPuLaser/Parameter/PlatformXY/m_bSpeedCtrl.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_bSpeedCtrl.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bUseManualMoveDis.var b/LaiPuLaser/Parameter/PlatformXY/m_bUseManualMoveDis.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_bUseManualMoveDis.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bUseMoveRange.var b/LaiPuLaser/Parameter/PlatformXY/m_bUseMoveRange.var new file mode 100644 index 0000000..7b1059f Binary files /dev/null and b/LaiPuLaser/Parameter/PlatformXY/m_bUseMoveRange.var differ diff --git a/LaiPuLaser/Parameter/PlatformXY/m_bUsed.var b/LaiPuLaser/Parameter/PlatformXY/m_bUsed.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlatformXY/m_bUsed.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PlcIOMgr/PlcIO_In.txt b/LaiPuLaser/Parameter/PlcIOMgr/PlcIO_In.txt new file mode 100644 index 0000000..e69de29 diff --git a/LaiPuLaser/Parameter/PlcIOMgr/PlcIO_Out.txt b/LaiPuLaser/Parameter/PlcIOMgr/PlcIO_Out.txt new file mode 100644 index 0000000..731c101 --- /dev/null +++ b/LaiPuLaser/Parameter/PlcIOMgr/PlcIO_Out.txt @@ -0,0 +1,14 @@ + +1 +Ƶ +2 +̵ +3 + +4 + +5 + +6 + +7 diff --git a/LaiPuLaser/Parameter/PlcIOMgr/m_BaudRate.var b/LaiPuLaser/Parameter/PlcIOMgr/m_BaudRate.var new file mode 100644 index 0000000..9c0df29 Binary files /dev/null and b/LaiPuLaser/Parameter/PlcIOMgr/m_BaudRate.var differ diff --git a/LaiPuLaser/Parameter/PlcIOMgr/m_ComPort.var b/LaiPuLaser/Parameter/PlcIOMgr/m_ComPort.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/PlcIOMgr/m_ComPort.var differ diff --git a/LaiPuLaser/Parameter/PlcIOMgr/m_bShowLog.var b/LaiPuLaser/Parameter/PlcIOMgr/m_bShowLog.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlcIOMgr/m_bShowLog.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PlcIOMgr/m_bUse.var b/LaiPuLaser/Parameter/PlcIOMgr/m_bUse.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/PlcIOMgr/m_bUse.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PltSet/m_ScaleX.var b/LaiPuLaser/Parameter/PltSet/m_ScaleX.var new file mode 100644 index 0000000..62e1a74 --- /dev/null +++ b/LaiPuLaser/Parameter/PltSet/m_ScaleX.var @@ -0,0 +1 @@ +DJ? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/PltSet/m_ScaleY.var b/LaiPuLaser/Parameter/PltSet/m_ScaleY.var new file mode 100644 index 0000000..78d4525 --- /dev/null +++ b/LaiPuLaser/Parameter/PltSet/m_ScaleY.var @@ -0,0 +1 @@ +ٙB5v? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/bUsed1.var b/LaiPuLaser/Parameter/Product/bUsed1.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/bUsed1.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/bUsed2.var b/LaiPuLaser/Parameter/Product/bUsed2.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/bUsed2.var differ diff --git a/LaiPuLaser/Parameter/Product/m_AdjustOffset_X1.var b/LaiPuLaser/Parameter/Product/m_AdjustOffset_X1.var new file mode 100644 index 0000000..7f2763d --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_AdjustOffset_X1.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_AdjustOffset_Y1.var b/LaiPuLaser/Parameter/Product/m_AdjustOffset_Y1.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_AdjustOffset_Y1.var differ diff --git a/LaiPuLaser/Parameter/Product/m_AngleAdjust.var b/LaiPuLaser/Parameter/Product/m_AngleAdjust.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_AngleAdjust.var differ diff --git a/LaiPuLaser/Parameter/Product/m_AreaMarkCnt.var b/LaiPuLaser/Parameter/Product/m_AreaMarkCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_AreaMarkCnt.var differ diff --git a/LaiPuLaser/Parameter/Product/m_BaseFocAdjustDis.var b/LaiPuLaser/Parameter/Product/m_BaseFocAdjustDis.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_BaseFocAdjustDis.var differ diff --git a/LaiPuLaser/Parameter/Product/m_BaseThickness.var b/LaiPuLaser/Parameter/Product/m_BaseThickness.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_BaseThickness.var differ diff --git a/LaiPuLaser/Parameter/Product/m_FocalAdjustCnt.var b/LaiPuLaser/Parameter/Product/m_FocalAdjustCnt.var new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_FocalAdjustCnt.var differ diff --git a/LaiPuLaser/Parameter/Product/m_FocalAdjustDis.var b/LaiPuLaser/Parameter/Product/m_FocalAdjustDis.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_FocalAdjustDis.var differ diff --git a/LaiPuLaser/Parameter/Product/m_MaxMarkDisDiff.var b/LaiPuLaser/Parameter/Product/m_MaxMarkDisDiff.var new file mode 100644 index 0000000..3cf9de0 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_MaxMarkDisDiff.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ObjMarkCnt.var b/LaiPuLaser/Parameter/Product/m_ObjMarkCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_ObjMarkCnt.var differ diff --git a/LaiPuLaser/Parameter/Product/m_ProductSize_h.var b/LaiPuLaser/Parameter/Product/m_ProductSize_h.var new file mode 100644 index 0000000..a548260 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_ProductSize_h.var differ diff --git a/LaiPuLaser/Parameter/Product/m_ProductSize_w.var b/LaiPuLaser/Parameter/Product/m_ProductSize_w.var new file mode 100644 index 0000000..01096ff Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_ProductSize_w.var differ diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_X1.var b/LaiPuLaser/Parameter/Product/m_ProductVec_X1.var new file mode 100644 index 0000000..00fde99 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_X1.var @@ -0,0 +1 @@ + "N@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_X2.var b/LaiPuLaser/Parameter/Product/m_ProductVec_X2.var new file mode 100644 index 0000000..8cf1e83 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_X2.var @@ -0,0 +1 @@ +C ,@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_X3.var b/LaiPuLaser/Parameter/Product/m_ProductVec_X3.var new file mode 100644 index 0000000..ab9c7db --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_X3.var @@ -0,0 +1 @@ +镲,-@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_Y1.var b/LaiPuLaser/Parameter/Product/m_ProductVec_Y1.var new file mode 100644 index 0000000..ae83fd5 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_Y1.var @@ -0,0 +1 @@ + 9 @ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_Y2.var b/LaiPuLaser/Parameter/Product/m_ProductVec_Y2.var new file mode 100644 index 0000000..b63aaac Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_ProductVec_Y2.var differ diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_Y3.var b/LaiPuLaser/Parameter/Product/m_ProductVec_Y3.var new file mode 100644 index 0000000..419472c --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_Y3.var @@ -0,0 +1 @@ +OnN \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed1.var b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed1.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed1.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed2.var b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed2.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed2.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed3.var b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed3.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_ProductVec_bUsed3.var differ diff --git a/LaiPuLaser/Parameter/Product/m_TotalWorkTimes.var b/LaiPuLaser/Parameter/Product/m_TotalWorkTimes.var new file mode 100644 index 0000000..2cf9f20 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_TotalWorkTimes.var differ diff --git a/LaiPuLaser/Parameter/Product/m_UseProductCnt.var b/LaiPuLaser/Parameter/Product/m_UseProductCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_UseProductCnt.var differ diff --git a/LaiPuLaser/Parameter/Product/m_bConnectObj.var b/LaiPuLaser/Parameter/Product/m_bConnectObj.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Product/m_bConnectObj.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset1.par b/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset1.par new file mode 100644 index 0000000..b484cd6 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset1.par @@ -0,0 +1,20 @@ +[Rect.L]//ķΧ +-100 +[Rect.R] +100 +[Rect.T] +25 +[Rect.B] +-25 +[Offset X]//X +0 +[Offset Y]//Y +-0.2 +[m_bLinear]//ǷԲ +TRUE +[m_bDirX]//Բķ true Ϊ X +TRUE +[Base Point Start X]//׼ start X +89 +[Base Point End X]//׼ end X +-89 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset2.par b/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset2.par new file mode 100644 index 0000000..f20a120 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/DieMoveToCameraOffset2.par @@ -0,0 +1,20 @@ +[Rect.L]//ķΧ +-100 +[Rect.R] +100 +[Rect.T] +0 +[Rect.B] +-25 +[Offset X]//X +0 +[Offset Y]//Y +0 +[m_bLinear]//ǷԲ +TRUE +[m_bDirX]//Բķ true Ϊ X +TRUE +[Base Point Start X]//׼ start X +89 +[Base Point End X]//׼ end X +-89 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayXcnt.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayXcnt.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayXcnt.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayYcnt.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayYcnt.var new file mode 100644 index 0000000..86906d2 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ArrayYcnt.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LastLotTypeName.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LastLotTypeName.var new file mode 100644 index 0000000..d397e30 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LastLotTypeName.var @@ -0,0 +1 @@ + SOT723-4R \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LoadWaitTime.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LoadWaitTime.var new file mode 100644 index 0000000..4fb8f51 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LoadWaitTime.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LotTypeFilePath.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LotTypeFilePath.var new file mode 100644 index 0000000..ee8fe13 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_LotTypeFilePath.var @@ -0,0 +1 @@ + E:\lot_file \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MaxCheckLoadTime.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MaxCheckLoadTime.var new file mode 100644 index 0000000..5167362 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MaxCheckLoadTime.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_x.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_x.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_x.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_y.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_y.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_MoveGap_y.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetX.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetX.var new file mode 100644 index 0000000..9059d67 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetX.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetY.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetY.var new file mode 100644 index 0000000..329665d --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_OffsetY.var @@ -0,0 +1 @@ +@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_TwoDieSpacingDis.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_TwoDieSpacingDis.var new file mode 100644 index 0000000..c59ae7f Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_TwoDieSpacingDis.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectH.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectH.var new file mode 100644 index 0000000..c591808 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectH.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectW.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectW.var new file mode 100644 index 0000000..5af1f82 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_ViewRectW.var differ diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bIniPlat.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bIniPlat.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bIniPlat.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bMoveDir.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bMoveDir.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bMoveDir.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bUseAdjustDis.var b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bUseAdjustDis.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramIS3000Mgr/m_bUseAdjustDis.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x.var new file mode 100644 index 0000000..f350f94 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x_Coord_y.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x_Coord_y.var new file mode 100644 index 0000000..a548260 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/MovePt1_Coord_x_Coord_y.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CCDMovePtCnt.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CCDMovePtCnt.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CCDMovePtCnt.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CSVFilePath.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CSVFilePath.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CSVFilePath.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CollectObjMarkIdx.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CollectObjMarkIdx.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_CollectObjMarkIdx.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_DisError.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_DisError.var new file mode 100644 index 0000000..7f2763d --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_DisError.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_HoleOffset.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_HoleOffset.var new file mode 100644 index 0000000..2c0ffbc --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_HoleOffset.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_x.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_x.var new file mode 100644 index 0000000..27e26e4 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_x.var @@ -0,0 +1 @@ +Qd \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_y.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_y.var new file mode 100644 index 0000000..d4fffe9 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_LeftBottomPt_y.var @@ -0,0 +1 @@ +GzVd \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_MaxAngVariation.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_MaxAngVariation.var new file mode 100644 index 0000000..c59ae7f Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_MaxAngVariation.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ObjAddRadius.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ObjAddRadius.var new file mode 100644 index 0000000..8bf7a6a --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ObjAddRadius.var @@ -0,0 +1 @@ +333333? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductColor.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductColor.var new file mode 100644 index 0000000..ac4fe8e --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductColor.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDia.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDia.var new file mode 100644 index 0000000..cbeb8c3 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDia.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDiaEnlarge.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDiaEnlarge.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductDiaEnlarge.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductThickness.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductThickness.var new file mode 100644 index 0000000..65c44a1 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_ProductThickness.var @@ -0,0 +1 @@ +ffffffi@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_x.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_x.var new file mode 100644 index 0000000..332fb46 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_x.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_y.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_y.var new file mode 100644 index 0000000..4aa1a57 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_SafeFiberCoord_y.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoCalAng.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoCalAng.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoCalAng.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoFillObj.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoFillObj.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoFillObj.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoWorkByFiber.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoWorkByFiber.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bAutoWorkByFiber.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bDraw3DProduct.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bDraw3DProduct.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bDraw3DProduct.var differ diff --git a/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bUseNoSortData.var b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bUseNoSortData.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ProgramUpkCO2Mgr/m_bUseNoSortData.var differ diff --git a/LaiPuLaser/Parameter/RealData/m_MaxRotateAng.var b/LaiPuLaser/Parameter/RealData/m_MaxRotateAng.var new file mode 100644 index 0000000..7f7c3c9 Binary files /dev/null and b/LaiPuLaser/Parameter/RealData/m_MaxRotateAng.var differ diff --git a/LaiPuLaser/Parameter/RealData/m_ProbableOffset_x.var b/LaiPuLaser/Parameter/RealData/m_ProbableOffset_x.var new file mode 100644 index 0000000..b492c4d Binary files /dev/null and b/LaiPuLaser/Parameter/RealData/m_ProbableOffset_x.var differ diff --git a/LaiPuLaser/Parameter/RealData/m_ProbableOffset_y.var b/LaiPuLaser/Parameter/RealData/m_ProbableOffset_y.var new file mode 100644 index 0000000..9059d67 Binary files /dev/null and b/LaiPuLaser/Parameter/RealData/m_ProbableOffset_y.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_532LaserExtMode.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_532LaserExtMode.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_532LaserExtMode.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_808LaserV.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_808LaserV.var new file mode 100644 index 0000000..30b8abe Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_808LaserV.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_DiodeWaitTime.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_DiodeWaitTime.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_DiodeWaitTime.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_DoorCoordY.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_DoorCoordY.var new file mode 100644 index 0000000..ec5320d Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_DoorCoordY.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_EnergyDensity.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_EnergyDensity.var new file mode 100644 index 0000000..aab6b4a Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_EnergyDensity.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_LineEndDelay.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_LineEndDelay.var new file mode 100644 index 0000000..7bcbf46 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_LineEndDelay.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_MaxTempDiff.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_MaxTempDiff.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_MaxTempDiff.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasureFilePath.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasureFilePath.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasureFilePath.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasurePtDia.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasurePtDia.var new file mode 100644 index 0000000..417fe05 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_MeasurePtDia.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_MonitorDelay.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_MonitorDelay.var new file mode 100644 index 0000000..fcd1f24 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_MonitorDelay.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_Offset.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_Offset.var new file mode 100644 index 0000000..30b8abe Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_Offset.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_PowerMultiple.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_PowerMultiple.var new file mode 100644 index 0000000..3cb684a Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_PowerMultiple.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempCom.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempCom.var new file mode 100644 index 0000000..ea2c20a Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempCom.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempDelay.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempDelay.var new file mode 100644 index 0000000..0861a0a Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_ReadTempDelay.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanGap.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanGap.var new file mode 100644 index 0000000..0ce5c0f --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanGap.var @@ -0,0 +1 @@ +@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanLineColor.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanLineColor.var new file mode 100644 index 0000000..b43945d Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanLineColor.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanOverlap.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanOverlap.var new file mode 100644 index 0000000..a32ade1 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanOverlap.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanedLineColor.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanedLineColor.var new file mode 100644 index 0000000..fc3ff07 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_ScanedLineColor.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotDia.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotDia.var new file mode 100644 index 0000000..c59ae7f Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotDia.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotWidth.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotWidth.var new file mode 100644 index 0000000..f7abde9 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_SpotWidth.var @@ -0,0 +1 @@ +{Gz? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferColor.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferColor.var new file mode 100644 index 0000000..3695c78 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferColor.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferDia.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferDia.var new file mode 100644 index 0000000..568d3f5 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_WaferDia.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bCheckAir.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bCheckAir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_bCheckAir.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bDirH.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bDirH.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_bDirH.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniLaserDevice.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniLaserDevice.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniLaserDevice.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniZmotor.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniZmotor.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bIniZmotor.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadLaserPower.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadLaserPower.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadLaserPower.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadTemperature.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadTemperature.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bReadTemperature.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseAir.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseAir.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseAir.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseDoorMonitor.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseDoorMonitor.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseDoorMonitor.var differ diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseLaser.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseLaser.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUseLaser.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bUserStopBtn.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUserStopBtn.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bUserStopBtn.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ShilanTuihuo/m_bWorkOverToProductPt.var b/LaiPuLaser/Parameter/ShilanTuihuo/m_bWorkOverToProductPt.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ShilanTuihuo/m_bWorkOverToProductPt.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/Simulate/m_Delay.var b/LaiPuLaser/Parameter/Simulate/m_Delay.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/Simulate/m_Delay.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardCnt.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardCnt.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardCnt.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_1.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_1.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_1.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_2.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_2.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_2.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_3.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_3.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_3.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_4.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_4.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_4.var differ diff --git a/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_5.var b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_5.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/SinglechipCard/m_CardVec_Com_5.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Com.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Com.var new file mode 100644 index 0000000..ea2c20a Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Com.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_ComBaudrate.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_ComBaudrate.var new file mode 100644 index 0000000..1da7b74 Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_ComBaudrate.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Diode.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Diode.var new file mode 100644 index 0000000..fb40e45 Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Diode.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Fre.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Fre.var new file mode 100644 index 0000000..b4efa18 Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_Fre.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_LaserSleepTimeMinutes.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_LaserSleepTimeMinutes.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_LaserSleepTimeMinutes.var differ diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bExitAppCloseLaser.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bExitAppCloseLaser.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bExitAppCloseLaser.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bUse.var b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bUse.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/SpectraPhysicsLaser/m_bUse.var differ diff --git a/LaiPuLaser/Parameter/Template/m_bUseObjList.var b/LaiPuLaser/Parameter/Template/m_bUseObjList.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/Template/m_bUseObjList.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Angle.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Angle.var new file mode 100644 index 0000000..48b1bf3 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Angle.var @@ -0,0 +1 @@ +Q? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_x.var new file mode 100644 index 0000000..d049049 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_x.var @@ -0,0 +1 @@ +Qk` \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_y.var new file mode 100644 index 0000000..de67594 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_CenterPt_y.var @@ -0,0 +1 @@ +zGc \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_x.var new file mode 100644 index 0000000..d049049 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_x.var @@ -0,0 +1 @@ +Qk` \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_y.var new file mode 100644 index 0000000..de67594 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Coord_y.var @@ -0,0 +1 @@ +zGc \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_x.var new file mode 100644 index 0000000..5dedcb0 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_x.var @@ -0,0 +1 @@ +Q? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_y.var new file mode 100644 index 0000000..3a1d63c --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Offset_y.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_OnePixDis.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_OnePixDis.var new file mode 100644 index 0000000..1386fc5 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_OnePixDis.var @@ -0,0 +1 @@ +>? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_h.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_h.var new file mode 100644 index 0000000..754561d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_h.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_w.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_w.var new file mode 100644 index 0000000..a7d9aa0 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera1_Size_w.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Angle.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Angle.var new file mode 100644 index 0000000..be96114 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Angle.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_x.var new file mode 100644 index 0000000..24dc522 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_x.var @@ -0,0 +1 @@ +- \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_y.var new file mode 100644 index 0000000..ca154ba --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_CenterPt_y.var @@ -0,0 +1 @@ +33333b \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_x.var new file mode 100644 index 0000000..24dc522 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_x.var @@ -0,0 +1 @@ +- \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_y.var new file mode 100644 index 0000000..ca154ba --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Coord_y.var @@ -0,0 +1 @@ +33333b \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_x.var new file mode 100644 index 0000000..c3f01b2 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_x.var @@ -0,0 +1 @@ +y&1 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_y.var new file mode 100644 index 0000000..d6c2fe2 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Offset_y.var @@ -0,0 +1 @@ +ꕲ q \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_OnePixDis.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_OnePixDis.var new file mode 100644 index 0000000..39a351f --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_OnePixDis.var @@ -0,0 +1 @@ +ǘ? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_h.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_h.var new file mode 100644 index 0000000..754561d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_h.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_w.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_w.var new file mode 100644 index 0000000..4d3ebc3 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera2_Size_w.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Angle.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Angle.var new file mode 100644 index 0000000..65b4136 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Angle.var @@ -0,0 +1 @@ +^K=? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_x.var new file mode 100644 index 0000000..15d56a7 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_x.var @@ -0,0 +1 @@ +Q8[@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_y.var new file mode 100644 index 0000000..5e9c1a4 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_CenterPt_y.var @@ -0,0 +1 @@ +{Gc \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_x.var new file mode 100644 index 0000000..15d56a7 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_x.var @@ -0,0 +1 @@ +Q8[@ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_y.var new file mode 100644 index 0000000..5e9c1a4 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Coord_y.var @@ -0,0 +1 @@ +{Gc \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_x.var new file mode 100644 index 0000000..1304fe4 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_x.var @@ -0,0 +1 @@ +S㥛? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_y.var new file mode 100644 index 0000000..d5c3e75 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Offset_y.var @@ -0,0 +1,2 @@ +p= +ףп \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_OnePixDis.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_OnePixDis.var new file mode 100644 index 0000000..39a351f --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_OnePixDis.var @@ -0,0 +1 @@ +ǘ? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_h.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_h.var new file mode 100644 index 0000000..754561d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_h.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_w.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_w.var new file mode 100644 index 0000000..07d1ef5 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/Camera3_Size_w.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x.var new file mode 100644 index 0000000..7b837a2 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x.var @@ -0,0 +1 @@ +3333330 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x_Coord_y.var new file mode 100644 index 0000000..10ae55a Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt1_Coord_x_Coord_y.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x.var new file mode 100644 index 0000000..7b837a2 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x.var @@ -0,0 +1 @@ +3333330 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x_Coord_y.var new file mode 100644 index 0000000..9968167 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt2_Coord_x_Coord_y.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x.var new file mode 100644 index 0000000..7b837a2 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x.var @@ -0,0 +1 @@ +3333330 \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x_Coord_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x_Coord_y.var new file mode 100644 index 0000000..403a4e6 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/MovePt3_Coord_x_Coord_y.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_x.var new file mode 100644 index 0000000..24dc522 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_x.var @@ -0,0 +1 @@ +- \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_y.var new file mode 100644 index 0000000..ca154ba --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_AllCameraCenterPt_y.var @@ -0,0 +1 @@ +33333b \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupFileCnt.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupFileCnt.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupFileCnt.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupPath.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupPath.var new file mode 100644 index 0000000..c236d4e --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_BackupPath.var @@ -0,0 +1 @@ + E:\ӹ¼ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CCDMovePtCnt.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CCDMovePtCnt.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CCDMovePtCnt.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CSVFilePath.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CSVFilePath.var new file mode 100644 index 0000000..abf8e19 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CSVFilePath.var @@ -0,0 +1 @@ +E:\HawkLaapFilter\Result \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CameraCnt.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CameraCnt.var new file mode 100644 index 0000000..59c36c6 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_CameraCnt.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ComPort.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ComPort.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ComPort.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_x.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_ConnectArea1Pt_y.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_x.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_x.var new file mode 100644 index 0000000..24dc522 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_x.var @@ -0,0 +1 @@ +- \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_y.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_y.var new file mode 100644 index 0000000..f74b4d8 Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_FirstMovePt_y.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_MovePtOffset.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_MovePtOffset.var new file mode 100644 index 0000000..754561d Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_MovePtOffset.var differ diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bBackup.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bBackup.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bBackup.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bDrawCCDPos.var b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bDrawCCDPos.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/UpkCO2CameraMgr/m_bDrawCCDPos.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/UpkCO2PlcMgr/m_ComPort.var b/LaiPuLaser/Parameter/UpkCO2PlcMgr/m_ComPort.var new file mode 100644 index 0000000..38424fc Binary files /dev/null and b/LaiPuLaser/Parameter/UpkCO2PlcMgr/m_ComPort.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_AxisColor.var b/LaiPuLaser/Parameter/ViewDraw/m_AxisColor.var new file mode 100644 index 0000000..1af2638 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_AxisColor.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_BkgndColor.var b/LaiPuLaser/Parameter/ViewDraw/m_BkgndColor.var new file mode 100644 index 0000000..86abd10 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_BkgndColor.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_ButtomDefaultColor.var b/LaiPuLaser/Parameter/ViewDraw/m_ButtomDefaultColor.var new file mode 100644 index 0000000..0b1c853 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_ButtomDefaultColor.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_CircleOneMMptCnt.var b/LaiPuLaser/Parameter/ViewDraw/m_CircleOneMMptCnt.var new file mode 100644 index 0000000..a786e12 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_CircleOneMMptCnt.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_x.var b/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_x.var new file mode 100644 index 0000000..1ec7147 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_x.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_y.var b/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_y.var new file mode 100644 index 0000000..e2195ee Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_DlgLogicCenter_y.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_DlgViewScale.var b/LaiPuLaser/Parameter/ViewDraw/m_DlgViewScale.var new file mode 100644 index 0000000..8ccb807 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_DlgViewScale.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_KeyboardMoveDis.var b/LaiPuLaser/Parameter/ViewDraw/m_KeyboardMoveDis.var new file mode 100644 index 0000000..2058262 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_KeyboardMoveDis.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_MinCircleOneMMptCnt.var b/LaiPuLaser/Parameter/ViewDraw/m_MinCircleOneMMptCnt.var new file mode 100644 index 0000000..5997bc1 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_MinCircleOneMMptCnt.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_MouseWheelScale.var b/LaiPuLaser/Parameter/ViewDraw/m_MouseWheelScale.var new file mode 100644 index 0000000..4844c07 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_MouseWheelScale.var @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_x.var b/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_x.var new file mode 100644 index 0000000..7bcbf46 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_x.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_y.var b/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_y.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_ProgressDlgPos_y.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_WorkAreaViewScale.var b/LaiPuLaser/Parameter/ViewDraw/m_WorkAreaViewScale.var new file mode 100644 index 0000000..d5c60e6 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_WorkAreaViewScale.var @@ -0,0 +1 @@ +Mb0? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_WorkRectColor.var b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectColor.var new file mode 100644 index 0000000..fc3ff07 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectColor.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_h.var b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_h.var new file mode 100644 index 0000000..e55d655 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_h.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_w.var b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_w.var new file mode 100644 index 0000000..e55d655 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_WorkRectSize_w.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bCatchCrossPoint.var b/LaiPuLaser/Parameter/ViewDraw/m_bCatchCrossPoint.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_bCatchCrossPoint.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bCatchCutTrack.var b/LaiPuLaser/Parameter/ViewDraw/m_bCatchCutTrack.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_bCatchCutTrack.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjLine.var b/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjLine.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjLine.var differ diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjNode.var b/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjNode.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bCatchObjNode.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bCatchOrthoPoint.var b/LaiPuLaser/Parameter/ViewDraw/m_bCatchOrthoPoint.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bCatchOrthoPoint.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bDrawAxis.var b/LaiPuLaser/Parameter/ViewDraw/m_bDrawAxis.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bDrawAxis.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bDrawWorkRect.var b/LaiPuLaser/Parameter/ViewDraw/m_bDrawWorkRect.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bDrawWorkRect.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bEditLayerObj.var b/LaiPuLaser/Parameter/ViewDraw/m_bEditLayerObj.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bEditLayerObj.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bMouseWheel.var b/LaiPuLaser/Parameter/ViewDraw/m_bMouseWheel.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bMouseWheel.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bMultipleSel.var b/LaiPuLaser/Parameter/ViewDraw/m_bMultipleSel.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bMultipleSel.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bPointSel.var b/LaiPuLaser/Parameter/ViewDraw/m_bPointSel.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bPointSel.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/ViewDraw/m_bRectSel.var b/LaiPuLaser/Parameter/ViewDraw/m_bRectSel.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/ViewDraw/m_bRectSel.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkArea/m_CenterPt_x.var b/LaiPuLaser/Parameter/WorkArea/m_CenterPt_x.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_CenterPt_x.var differ diff --git a/LaiPuLaser/Parameter/WorkArea/m_CenterPt_y.var b/LaiPuLaser/Parameter/WorkArea/m_CenterPt_y.var new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_CenterPt_y.var differ diff --git a/LaiPuLaser/Parameter/WorkArea/m_WorkRectColor.var b/LaiPuLaser/Parameter/WorkArea/m_WorkRectColor.var new file mode 100644 index 0000000..378abf3 Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_WorkRectColor.var differ diff --git a/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_h.var b/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_h.var new file mode 100644 index 0000000..99f0fea Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_h.var differ diff --git a/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_w.var b/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_w.var new file mode 100644 index 0000000..99f0fea Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_WorkRectSize_w.var differ diff --git a/LaiPuLaser/Parameter/WorkArea/m_bDrawWorkArea.var b/LaiPuLaser/Parameter/WorkArea/m_bDrawWorkArea.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/WorkArea/m_bDrawWorkArea.var differ diff --git a/LaiPuLaser/Parameter/WorkFlow/6寸晶圆35.par b/LaiPuLaser/Parameter/WorkFlow/6寸晶圆35.par new file mode 100644 index 0000000..7d78cdb Binary files /dev/null and b/LaiPuLaser/Parameter/WorkFlow/6寸晶圆35.par differ diff --git a/LaiPuLaser/Parameter/WorkFlow/6寸晶圆45.par b/LaiPuLaser/Parameter/WorkFlow/6寸晶圆45.par new file mode 100644 index 0000000..54e3788 Binary files /dev/null and b/LaiPuLaser/Parameter/WorkFlow/6寸晶圆45.par differ diff --git a/LaiPuLaser/Parameter/WorkFlow/AirClose.flw b/LaiPuLaser/Parameter/WorkFlow/AirClose.flw new file mode 100644 index 0000000..fe9a5e0 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/AirClose.flw @@ -0,0 +1 @@ +CmdName[CMD_PCI_PORT_SWITCH] Par1[] Par2[FALSE] diff --git a/LaiPuLaser/Parameter/WorkFlow/AirOpen.flw b/LaiPuLaser/Parameter/WorkFlow/AirOpen.flw new file mode 100644 index 0000000..76038e9 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/AirOpen.flw @@ -0,0 +1 @@ +CmdName[CMD_PCI_PORT_SWITCH] Par1[] Par2[TRUE] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/AlarmThreeTimes.flw b/LaiPuLaser/Parameter/WorkFlow/AlarmThreeTimes.flw new file mode 100644 index 0000000..69443f2 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/AlarmThreeTimes.flw @@ -0,0 +1,6 @@ +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[FALSE] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/AutoCatchMark.flw b/LaiPuLaser/Parameter/WorkFlow/AutoCatchMark.flw new file mode 100644 index 0000000..9574257 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/AutoCatchMark.flw @@ -0,0 +1,4 @@ +//عԭ +//CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] +//ץȡλ +CmdName[CMD_AUTO_CATCH_MARK_FLOW] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/CatchMark.flw b/LaiPuLaser/Parameter/WorkFlow/CatchMark.flw new file mode 100644 index 0000000..2df133f --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/CatchMark.flw @@ -0,0 +1,2 @@ +//CCDץȡָ +CmdName[CMD_CATCH_MARK] diff --git a/LaiPuLaser/Parameter/WorkFlow/CutAll.flw b/LaiPuLaser/Parameter/WorkFlow/CutAll.flw new file mode 100644 index 0000000..29aa029 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/CutAll.flw @@ -0,0 +1,6 @@ +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] +//ȫи +CmdName[CMD_CUT_FLOW] Par1[ALL] +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/CutSel.flw b/LaiPuLaser/Parameter/WorkFlow/CutSel.flw new file mode 100644 index 0000000..5331c5c --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/CutSel.flw @@ -0,0 +1,6 @@ +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] +//ѡи +CmdName[CMD_CUT_FLOW] Par1[SEL] +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/IniDevice.flw b/LaiPuLaser/Parameter/WorkFlow/IniDevice.flw new file mode 100644 index 0000000..505748c --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/IniDevice.flw @@ -0,0 +1,22 @@ +//ʼ豸ָ---------------------------------------- +//Zԭ +CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[Z] +//Zָ᷵λ +CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[Z] +//Xԭ +CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[X] +//Xָ᷵λ +CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[X] +//Yԭ +CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[Y] +//Yָ᷵λ +CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[Y] +//豸״̬λ +CmdName[CMD_DEVICE_PAR_RESET] +//ƶȡϵ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_WORK_PT] +//ʾ +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[500] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[Ƶ] Par2[TRUE] +CmdName[CMD_MSG] Par1[豸ʼ] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/MarkAll.flw b/LaiPuLaser/Parameter/WorkFlow/MarkAll.flw new file mode 100644 index 0000000..24e8d98 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/MarkAll.flw @@ -0,0 +1,2 @@ +//ȫӹ +CmdName[CMD_MARK_FLOW] Par1[ALL] diff --git a/LaiPuLaser/Parameter/WorkFlow/MarkSel.flw b/LaiPuLaser/Parameter/WorkFlow/MarkSel.flw new file mode 100644 index 0000000..f13bbc6 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/MarkSel.flw @@ -0,0 +1,2 @@ +//ѡӹ +CmdName[CMD_MARK_FLOW] Par1[SEL] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/ParFile.par b/LaiPuLaser/Parameter/WorkFlow/ParFile.par new file mode 100644 index 0000000..9db787f Binary files /dev/null and b/LaiPuLaser/Parameter/WorkFlow/ParFile.par differ diff --git a/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToOrigin.flw b/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToOrigin.flw new file mode 100644 index 0000000..a10c690 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToOrigin.flw @@ -0,0 +1,2 @@ +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToProductPt.flw b/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToProductPt.flw new file mode 100644 index 0000000..12ba08e --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/PlatformMoveToProductPt.flw @@ -0,0 +1,2 @@ +//ƶȡϵ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_WORK_PT] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/PortTestClose.flw b/LaiPuLaser/Parameter/WorkFlow/PortTestClose.flw new file mode 100644 index 0000000..426df7c --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/PortTestClose.flw @@ -0,0 +1,6 @@ +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[Ƶ] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[̵] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[FALSE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[OUT1] Par2[FALSE] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/PortTestOpen.flw b/LaiPuLaser/Parameter/WorkFlow/PortTestOpen.flw new file mode 100644 index 0000000..b19439b --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/PortTestOpen.flw @@ -0,0 +1,6 @@ +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[Ƶ] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[̵] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[] Par2[TRUE] +CmdName[CMD_PCI_PORT_SWITCH] Par0[10] Par1[OUT1] Par2[TRUE] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/SetSpLaserPar.flw b/LaiPuLaser/Parameter/WorkFlow/SetSpLaserPar.flw new file mode 100644 index 0000000..8c4b881 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/SetSpLaserPar.flw @@ -0,0 +1,2 @@ +//ù +CmdName[CMD_SET_SP_LASER_PAR] diff --git a/LaiPuLaser/Parameter/WorkFlow/StartWork.flw b/LaiPuLaser/Parameter/WorkFlow/StartWork.flw new file mode 100644 index 0000000..14a14fd --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/StartWork.flw @@ -0,0 +1,10 @@ +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] +//ץȡλ +CmdName[CMD_AUTO_CATCH_MARK_FLOW] +//عԭ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN] +//ȫӹ +CmdName[CMD_MARK_FLOW] Par1[ALL] +//ƶȡϵ +CmdName[CMD_PLATFORM_MOVE] Par1[TO_WORK_PT] \ No newline at end of file diff --git a/LaiPuLaser/Parameter/WorkFlow/VacuumClose.flw b/LaiPuLaser/Parameter/WorkFlow/VacuumClose.flw new file mode 100644 index 0000000..72fd0b7 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/VacuumClose.flw @@ -0,0 +1,2 @@ +//1 +CmdName[CMD_PCI_PORT_SWITCH] Par1[OUT1] Par2[FALSE] diff --git a/LaiPuLaser/Parameter/WorkFlow/VacuumOpen.flw b/LaiPuLaser/Parameter/WorkFlow/VacuumOpen.flw new file mode 100644 index 0000000..4f4d400 --- /dev/null +++ b/LaiPuLaser/Parameter/WorkFlow/VacuumOpen.flw @@ -0,0 +1,2 @@ +//1 +CmdName[CMD_PCI_PORT_SWITCH] Par1[OUT1] Par2[TRUE] diff --git a/LaiPuLaser/Parameter/WorkFlow/zhenliequyu.par b/LaiPuLaser/Parameter/WorkFlow/zhenliequyu.par new file mode 100644 index 0000000..319b236 Binary files /dev/null and b/LaiPuLaser/Parameter/WorkFlow/zhenliequyu.par differ diff --git a/LaiPuLaser/Parameter/WorkFlow/区域200_200.par b/LaiPuLaser/Parameter/WorkFlow/区域200_200.par new file mode 100644 index 0000000..1145f66 Binary files /dev/null and b/LaiPuLaser/Parameter/WorkFlow/区域200_200.par differ diff --git a/LaiPuLaser/Parameter/WorkRecordMgr/m_RecordFilePath.var b/LaiPuLaser/Parameter/WorkRecordMgr/m_RecordFilePath.var new file mode 100644 index 0000000..8ab1b0e --- /dev/null +++ b/LaiPuLaser/Parameter/WorkRecordMgr/m_RecordFilePath.var @@ -0,0 +1 @@ + E:\ӹ־ \ No newline at end of file diff --git a/LaiPuLaser/Parameter/cut/m_DelayAfterOpenLaser.var b/LaiPuLaser/Parameter/cut/m_DelayAfterOpenLaser.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/cut/m_DelayAfterOpenLaser.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_FindOriginDelay.var b/LaiPuLaser/Parameter/motorX/m_FindOriginDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_FindOriginDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_FindOriginDir.var b/LaiPuLaser/Parameter/motorX/m_FindOriginDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_FindOriginDir.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_MaxOriginOffsetDis.var b/LaiPuLaser/Parameter/motorX/m_MaxOriginOffsetDis.var new file mode 100644 index 0000000..05a20d8 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_MaxOriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_MaxPulseCnt.var b/LaiPuLaser/Parameter/motorX/m_MaxPulseCnt.var new file mode 100644 index 0000000..98eeab3 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_MaxPulseCnt.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_MoveDelay.var b/LaiPuLaser/Parameter/motorX/m_MoveDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_MoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_OnePulseDis.var b/LaiPuLaser/Parameter/motorX/m_OnePulseDis.var new file mode 100644 index 0000000..83be20a --- /dev/null +++ b/LaiPuLaser/Parameter/motorX/m_OnePulseDis.var @@ -0,0 +1 @@ +MbP? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX/m_OriginOffsetDis.var b/LaiPuLaser/Parameter/motorX/m_OriginOffsetDis.var new file mode 100644 index 0000000..bcb29c6 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_OriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_OriginPulseDelay.var b/LaiPuLaser/Parameter/motorX/m_OriginPulseDelay.var new file mode 100644 index 0000000..ff10379 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_OriginPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_PerChangeDelay.var b/LaiPuLaser/Parameter/motorX/m_PerChangeDelay.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_PerChangeDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_ReverseMoveDelay.var b/LaiPuLaser/Parameter/motorX/m_ReverseMoveDelay.var new file mode 100644 index 0000000..0861a0a Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_ReverseMoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_StartDelay.var b/LaiPuLaser/Parameter/motorX/m_StartDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_StartDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_WorkDelay.var b/LaiPuLaser/Parameter/motorX/m_WorkDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_WorkDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_WorkPulseDelay.var b/LaiPuLaser/Parameter/motorX/m_WorkPulseDelay.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_WorkPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_bAccelerateCtrl.var b/LaiPuLaser/Parameter/motorX/m_bAccelerateCtrl.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorX/m_bAccelerateCtrl.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX/m_bNeedCheckLimit.var b/LaiPuLaser/Parameter/motorX/m_bNeedCheckLimit.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorX/m_bNeedCheckLimit.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX/m_bRevActCoordDir.var b/LaiPuLaser/Parameter/motorX/m_bRevActCoordDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_bRevActCoordDir.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_bReverseDir.var b/LaiPuLaser/Parameter/motorX/m_bReverseDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_bReverseDir.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_bReverseMoveDis.var b/LaiPuLaser/Parameter/motorX/m_bReverseMoveDis.var new file mode 100644 index 0000000..3f6b11b Binary files /dev/null and b/LaiPuLaser/Parameter/motorX/m_bReverseMoveDis.var differ diff --git a/LaiPuLaser/Parameter/motorX/m_bReverseMoveFirst.var b/LaiPuLaser/Parameter/motorX/m_bReverseMoveFirst.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorX/m_bReverseMoveFirst.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX2/m_FindOriginDelay.var b/LaiPuLaser/Parameter/motorX2/m_FindOriginDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_FindOriginDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_FindOriginDir.var b/LaiPuLaser/Parameter/motorX2/m_FindOriginDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_FindOriginDir.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_MaxOriginOffsetDis.var b/LaiPuLaser/Parameter/motorX2/m_MaxOriginOffsetDis.var new file mode 100644 index 0000000..05a20d8 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_MaxOriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_MaxPulseCnt.var b/LaiPuLaser/Parameter/motorX2/m_MaxPulseCnt.var new file mode 100644 index 0000000..98eeab3 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_MaxPulseCnt.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_MoveDelay.var b/LaiPuLaser/Parameter/motorX2/m_MoveDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_MoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_OnePulseDis.var b/LaiPuLaser/Parameter/motorX2/m_OnePulseDis.var new file mode 100644 index 0000000..83be20a --- /dev/null +++ b/LaiPuLaser/Parameter/motorX2/m_OnePulseDis.var @@ -0,0 +1 @@ +MbP? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX2/m_OriginOffsetDis.var b/LaiPuLaser/Parameter/motorX2/m_OriginOffsetDis.var new file mode 100644 index 0000000..bcb29c6 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_OriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_OriginPulseDelay.var b/LaiPuLaser/Parameter/motorX2/m_OriginPulseDelay.var new file mode 100644 index 0000000..ff10379 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_OriginPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_PerChangeDelay.var b/LaiPuLaser/Parameter/motorX2/m_PerChangeDelay.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_PerChangeDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_ReverseMoveDelay.var b/LaiPuLaser/Parameter/motorX2/m_ReverseMoveDelay.var new file mode 100644 index 0000000..0861a0a Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_ReverseMoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_StartDelay.var b/LaiPuLaser/Parameter/motorX2/m_StartDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_StartDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_WorkDelay.var b/LaiPuLaser/Parameter/motorX2/m_WorkDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_WorkDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_WorkPulseDelay.var b/LaiPuLaser/Parameter/motorX2/m_WorkPulseDelay.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_WorkPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_bAccelerateCtrl.var b/LaiPuLaser/Parameter/motorX2/m_bAccelerateCtrl.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorX2/m_bAccelerateCtrl.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX2/m_bNeedCheckLimit.var b/LaiPuLaser/Parameter/motorX2/m_bNeedCheckLimit.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorX2/m_bNeedCheckLimit.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorX2/m_bRevActCoordDir.var b/LaiPuLaser/Parameter/motorX2/m_bRevActCoordDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_bRevActCoordDir.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_bReverseDir.var b/LaiPuLaser/Parameter/motorX2/m_bReverseDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_bReverseDir.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_bReverseMoveDis.var b/LaiPuLaser/Parameter/motorX2/m_bReverseMoveDis.var new file mode 100644 index 0000000..3f6b11b Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_bReverseMoveDis.var differ diff --git a/LaiPuLaser/Parameter/motorX2/m_bReverseMoveFirst.var b/LaiPuLaser/Parameter/motorX2/m_bReverseMoveFirst.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorX2/m_bReverseMoveFirst.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_AccelerateDis.var b/LaiPuLaser/Parameter/motorY/m_AccelerateDis.var new file mode 100644 index 0000000..8ccb807 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_AccelerateDis.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_FindOriginDelay.var b/LaiPuLaser/Parameter/motorY/m_FindOriginDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_FindOriginDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_FindOriginDir.var b/LaiPuLaser/Parameter/motorY/m_FindOriginDir.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorY/m_FindOriginDir.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorY/m_MaxOriginOffsetDis.var b/LaiPuLaser/Parameter/motorY/m_MaxOriginOffsetDis.var new file mode 100644 index 0000000..05a20d8 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_MaxOriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_MaxPulseCnt.var b/LaiPuLaser/Parameter/motorY/m_MaxPulseCnt.var new file mode 100644 index 0000000..f7668c7 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_MaxPulseCnt.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_MoveDelay.var b/LaiPuLaser/Parameter/motorY/m_MoveDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_MoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_OnePulseDis.var b/LaiPuLaser/Parameter/motorY/m_OnePulseDis.var new file mode 100644 index 0000000..83be20a --- /dev/null +++ b/LaiPuLaser/Parameter/motorY/m_OnePulseDis.var @@ -0,0 +1 @@ +MbP? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorY/m_OriginOffsetDis.var b/LaiPuLaser/Parameter/motorY/m_OriginOffsetDis.var new file mode 100644 index 0000000..e55d655 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_OriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_OriginPulseDelay.var b/LaiPuLaser/Parameter/motorY/m_OriginPulseDelay.var new file mode 100644 index 0000000..ff10379 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_OriginPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_PerChangeDelay.var b/LaiPuLaser/Parameter/motorY/m_PerChangeDelay.var new file mode 100644 index 0000000..3e6fd1a Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_PerChangeDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_ReverseMoveDelay.var b/LaiPuLaser/Parameter/motorY/m_ReverseMoveDelay.var new file mode 100644 index 0000000..0861a0a Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_ReverseMoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_StartDelay.var b/LaiPuLaser/Parameter/motorY/m_StartDelay.var new file mode 100644 index 0000000..919ab6c Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_StartDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_WorkDelay.var b/LaiPuLaser/Parameter/motorY/m_WorkDelay.var new file mode 100644 index 0000000..a404194 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_WorkDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_WorkPulseDelay.var b/LaiPuLaser/Parameter/motorY/m_WorkPulseDelay.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_WorkPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_bAccelerateCtrl.var b/LaiPuLaser/Parameter/motorY/m_bAccelerateCtrl.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorY/m_bAccelerateCtrl.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorY/m_bNeedCheckLimit.var b/LaiPuLaser/Parameter/motorY/m_bNeedCheckLimit.var new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/LaiPuLaser/Parameter/motorY/m_bNeedCheckLimit.var @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorY/m_bRevActCoordDir.var b/LaiPuLaser/Parameter/motorY/m_bRevActCoordDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_bRevActCoordDir.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_bReverseDir.var b/LaiPuLaser/Parameter/motorY/m_bReverseDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_bReverseDir.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_bReverseMoveDis.var b/LaiPuLaser/Parameter/motorY/m_bReverseMoveDis.var new file mode 100644 index 0000000..3de7c4d Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_bReverseMoveDis.var differ diff --git a/LaiPuLaser/Parameter/motorY/m_bReverseMoveFirst.var b/LaiPuLaser/Parameter/motorY/m_bReverseMoveFirst.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorY/m_bReverseMoveFirst.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_FindOriginDelay.var b/LaiPuLaser/Parameter/motorZ/m_FindOriginDelay.var new file mode 100644 index 0000000..a1f469a Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_FindOriginDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_FindOriginDir.var b/LaiPuLaser/Parameter/motorZ/m_FindOriginDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_FindOriginDir.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_MaxOriginOffsetDis.var b/LaiPuLaser/Parameter/motorZ/m_MaxOriginOffsetDis.var new file mode 100644 index 0000000..0f9ecbe Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_MaxOriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_MaxPulseCnt.var b/LaiPuLaser/Parameter/motorZ/m_MaxPulseCnt.var new file mode 100644 index 0000000..315f8f9 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_MaxPulseCnt.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_MoveDelay.var b/LaiPuLaser/Parameter/motorZ/m_MoveDelay.var new file mode 100644 index 0000000..b4efa18 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_MoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_OnePulseDis.var b/LaiPuLaser/Parameter/motorZ/m_OnePulseDis.var new file mode 100644 index 0000000..04d2484 --- /dev/null +++ b/LaiPuLaser/Parameter/motorZ/m_OnePulseDis.var @@ -0,0 +1 @@ +Mb@? \ No newline at end of file diff --git a/LaiPuLaser/Parameter/motorZ/m_OriginOffsetDis.var b/LaiPuLaser/Parameter/motorZ/m_OriginOffsetDis.var new file mode 100644 index 0000000..9d30585 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_OriginOffsetDis.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_OriginPulseDelay.var b/LaiPuLaser/Parameter/motorZ/m_OriginPulseDelay.var new file mode 100644 index 0000000..f7cc484 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_OriginPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_PerChangeDelay.var b/LaiPuLaser/Parameter/motorZ/m_PerChangeDelay.var new file mode 100644 index 0000000..f66c9cf Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_PerChangeDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_ReverseMoveDelay.var b/LaiPuLaser/Parameter/motorZ/m_ReverseMoveDelay.var new file mode 100644 index 0000000..0155511 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_ReverseMoveDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_StartDelay.var b/LaiPuLaser/Parameter/motorZ/m_StartDelay.var new file mode 100644 index 0000000..0155511 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_StartDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_WorkDelay.var b/LaiPuLaser/Parameter/motorZ/m_WorkDelay.var new file mode 100644 index 0000000..b4efa18 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_WorkDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_WorkPulseDelay.var b/LaiPuLaser/Parameter/motorZ/m_WorkPulseDelay.var new file mode 100644 index 0000000..eb6bfb7 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_WorkPulseDelay.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bAccelerateCtrl.var b/LaiPuLaser/Parameter/motorZ/m_bAccelerateCtrl.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bAccelerateCtrl.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bNeedCheckLimit.var b/LaiPuLaser/Parameter/motorZ/m_bNeedCheckLimit.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bNeedCheckLimit.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bRevActCoordDir.var b/LaiPuLaser/Parameter/motorZ/m_bRevActCoordDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bRevActCoordDir.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bReverseDir.var b/LaiPuLaser/Parameter/motorZ/m_bReverseDir.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bReverseDir.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bReverseMoveDis.var b/LaiPuLaser/Parameter/motorZ/m_bReverseMoveDis.var new file mode 100644 index 0000000..27730a4 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bReverseMoveDis.var differ diff --git a/LaiPuLaser/Parameter/motorZ/m_bReverseMoveFirst.var b/LaiPuLaser/Parameter/motorZ/m_bReverseMoveFirst.var new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/LaiPuLaser/Parameter/motorZ/m_bReverseMoveFirst.var differ diff --git a/LaiPuLaser/PciCh365Mgr.cpp b/LaiPuLaser/PciCh365Mgr.cpp new file mode 100644 index 0000000..32c12df --- /dev/null +++ b/LaiPuLaser/PciCh365Mgr.cpp @@ -0,0 +1,284 @@ +#include "StdAfx.h" +#include "PciCh365Mgr.h" +#include "LogMgr.h" +#include "LaipuVbDllMgr.h" +#include "PciPortMgr.h" +#include "ExceptionMsg.h" +#include "Mirror.h" + +#define LASER_PORT 7//⿪ض˿ + +CPciCh365Mgr *gPciCh365Mgr = new CPciCh365Mgr; +CPciCh365Mgr::CPciCh365Mgr(void) +{ +} +CPciCh365Mgr::~CPciCh365Mgr(void) +{ +} +bool CPciCh365Mgr::ReadDll() +{ + m_PciCh365Handle = LoadLibrary( "CH365DLL.DLL" ); + if( !m_PciCh365Handle ) + { + gLogMgr->WriteDebugLog("pci ̬ӿCH365DLL.DLL ȡʧ",_LOG_ERROR); + return false; + } + //ȡҪĺַ + bool result = true; + result &= ((CH365mOpenDevice = (pCH365mOpenDevice)GetProcAddress( m_PciCh365Handle, "CH365mOpenDevice" )) != NULL); + result &= ((CH365mReadIoByte = (pCH365mReadIoByte)GetProcAddress( m_PciCh365Handle, "CH365mReadIoByte" )) != NULL); + result &= ((CH365mSetA15_A8 = (pCH365mSetA15_A8)GetProcAddress( m_PciCh365Handle, "CH365mSetA15_A8" )) != NULL); + result &= ((CH365mWriteIoByte = (pCH365mWriteIoByte)GetProcAddress( m_PciCh365Handle, "CH365mWriteIoByte" )) != NULL); + result &= ((CH365mCloseDevice = (pCH365mCloseDevice)GetProcAddress( m_PciCh365Handle, "CH365mCloseDevice" )) != NULL); + + if(!result) + { + gLogMgr->WriteDebugLog("CH365DLL.DLL ȡʧ",_LOG_ERROR); + return false; + } + return true; +} +#if 1 +//ʼpci +void CPciCh365Mgr::Ini() +{ + m_bIni = false;//pci Ƿʼɹ + m_OutPortStateLow = 0;//¼ǰ˿ڵ״̬--˿д + m_OutPortStateHigh = 0;//¼ǰ˿ڵ״̬--˿д + + //ȡӲֵ֧ĸ߾ȼƵ + IniClockFre(); + + if(ReadDll())//ȡdll + { + //Լʼpci + if(IniPciCard()) + { + #if 0 + gLaipuVbDllMgr->VbIniCard(m_OutPortStateLow,m_OutPortStateHigh); + //ʼ ˿ڵ״̬ + IniOutPortState(); + #endif + } + //رռ˿ + CloseLaserPort(); + } +} +//Լʼpci +bool CPciCh365Mgr::IniPciCard() +{ + //ʼpci + m_DeviceHandle = CH365mOpenDevice(0,true,true); + if((int)m_DeviceHandle==-1) + { + gLogMgr->WriteDebugLog("δch365 pci ",_LOG_ERROR); + return false; + } + + //ʼ˿(˿޷ȡ) + UCHAR ChByte = 0xFF; + CH365mSetA15_A8(0,ChByte);//ָ8λַ + + m_bIni = true; + gLogMgr->WriteDebugLog("ch 365 pci ʼɹ"); + return true; +} +//ʼ ˿ڵ״̬ +void CPciCh365Mgr::IniOutPortState() +{ + gLogMgr->WriteDebugLog("IniOutPortState",_LOG_FUNC); + + int OutPortDefaultStateL = gPciPortMgr->GetOutPortDefaultStateL(); + int OutPortDefaultStateH = gPciPortMgr->GetOutPortDefaultStateH(); + for(int i=0;i<8;i++)//Ͱλ + { + if(IsBitOn((BYTE)OutPortDefaultStateL,i)) + { + SPciPort PciPort; + PciPort.num = i; + WritePortState(PciPort,true); + } + } + for(int i=0;i<8;i++)//߰λ + { + if(IsBitOn((BYTE)OutPortDefaultStateH,i)) + { + SPciPort PciPort; + PciPort.num = i+8; + WritePortState(PciPort,true); + } + } +} +//pci Ƿʼˣû׳쳣Ҳ˵ʱPCI ʼ +void CPciCh365Mgr::CheckIniState() +{ + if(!m_bIni) + { + CString str(_T("PCI δʼ")); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } +} +#endif +#if 1//ʱ +//΢뼶ʱusΪ΢ +void CPciCh365Mgr::DelayTime(unsigned int us) +{ + if(m_bHasSmartClock && us>0) + { + LARGE_INTEGER start, end; + LONGLONG count = (us*m_ClockFre.QuadPart)/(1000*1000); + QueryPerformanceCounter(&start); + count = count + start.QuadPart ; + do + { + QueryPerformanceCounter(&end); + }while(end.QuadPartWriteDebugLog("ȡ߾ȼʱƵʧ",_LOG_ERROR); + } + else + { + gLogMgr->WriteDebugLog("ȡ߾ȼʱƵʳɹ"); + } +} +#endif + +#if 1 +//ָ˿ڶһֽ +BOOL CPciCh365Mgr::ReadIoPortByte(int PortAddr,long &PortVal) +{ + BOOL result = FALSE; + UCHAR ChByte; + USHORT mAddr=(USHORT)PortAddr; + UINT mIndex= 0 ; + if(PortAddr<255) + { + if(CH365mReadIoByte(mIndex,(PVOID)mAddr,&ChByte)) + { + PortVal = (long)ChByte; + result = TRUE; + } + } + else + { + ChByte = PortAddr/256; + CH365mSetA15_A8(0,ChByte);//趨8λַ + + PortAddr = PortAddr%256; + if(CH365mReadIoByte(mIndex,(PVOID)&PortAddr,&ChByte)) + { + PortVal = (long)ChByte; + result = TRUE; + } + ChByte = 0xFF; + CH365mSetA15_A8(0,ChByte);//ָ8λַ + } + return result; +} +//ָ˿дһֽ +void CPciCh365Mgr::WriteIoPortByte(int PortAddr,long PortVal) +{ + UCHAR ChByte; + if(PortAddr<255) + { + USHORT mAddr=(USHORT)PortAddr; + ChByte = (UCHAR)PortVal; + CH365mWriteIoByte(0,(PVOID)mAddr,ChByte);//˿дһʱԼҪ4us + } + else + { + ChByte = PortAddr>>8; + CH365mSetA15_A8(0,ChByte);//趨8λַ + + USHORT mAddr=(USHORT)(PortAddr%256); + ChByte = (UCHAR)PortVal; + CH365mWriteIoByte(0,(PVOID)mAddr,ChByte); + ChByte = 0xFF; + CH365mSetA15_A8(0,ChByte);//ָ8λַ + } +} +//ö˿״̬ +void CPciCh365Mgr::WritePortState(SPciPort PciPort,bool bOpen) +{ + //pci ʼ״̬ + CheckIniState(); + + if(PciPort.num == -1) + return; + //߰λǵͰλ + bool bLow = LowOrHight(PciPort.num); + //˿״̬ + long &OutPortState = GetOutPortState(bLow); + //ö˿ڵַ + int PortAddr = GetPortAddr(bLow,true); + // + if(PciPort.bReverse) + { + bOpen = !bOpen; + } + + if(bOpen) + { + OutPortState = SetBitOn(OutPortState,PciPort.num); + WriteIoPortByte(PortAddr,OutPortState); + } + else + { + OutPortState = SetBitOff(OutPortState,PciPort.num); + WriteIoPortByte(PortAddr,OutPortState); + } +} +//һ +//PortNum ˿ں0~15 +//Delay ʱus +void CPciCh365Mgr::SendOnePulse(SPciPort PciPort,unsigned int Delay) +{ + //pci ʼ״̬ + CheckIniState(); + + //߰λǵͰλ + bool bLow = LowOrHight(PciPort.num); + //ö˿ڵַ + int PortAddr = GetPortAddr(bLow,true); + //˿״̬ + long &OutPortState = GetOutPortState(bLow); + + //ȸߺ--------------------------------- + OutPortState = SetBitOn(OutPortState,PciPort.num); + WriteIoPortByte(PortAddr,OutPortState); + DelayTime(Delay); + OutPortState = SetBitOff(OutPortState,PciPort.num); + WriteIoPortByte(PortAddr,OutPortState); + DelayTime(Delay); +} +#endif +//رռ˿ +void CPciCh365Mgr::CloseLaserPort() +{ + SPciPort PciPort; + PciPort.num = LASER_PORT; + gLogMgr->WriteDebugLog("رն˿","PortNum", LASER_PORT); + bool b = false; + if(gMirror->IsLaserSwitch()) + b = !b; + + try + { + gPciCh365Mgr->WritePortState(PciPort,b); + } + catch(CExceptionMsg &Msg) + { + CString str("Func : CloseLaserPort---->"); + str += Msg.GetMsgStr(); + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + } +} diff --git a/LaiPuLaser/PciCh365Mgr.h b/LaiPuLaser/PciCh365Mgr.h new file mode 100644 index 0000000..dfc30e0 --- /dev/null +++ b/LaiPuLaser/PciCh365Mgr.h @@ -0,0 +1,145 @@ + +#pragma once +#include "Module.h" +#include "CH365DLL.H" +#include "GlobalFunction.h" +#include "PciPort.h" +#include "BitOperation.h" +#include "EnumPropertieType.h" + + +#define PORT_CNT 8 //λ˿ڵĸ +#define OUT_PORT_ADDR_L 0xDE //˿ڵĵַ--8 λ +#define OUT_PORT_ADDR_H 0xDD //˿ڵĵַ--8 λ +#define IN_PORT_ADDR_L 0x1F //˿ڵĵַ--8 λ 10 31 +#define IN_PORT_ADDR_H 0xDF //˿ڵĵַ--8 λ 10 223 + +typedef HANDLE (WINAPI*pCH365mOpenDevice)(ULONG iIndex,BOOL iEnableMemory,BOOL iEnableInterrupt); +typedef BOOL (WINAPI*pCH365mReadIoByte)(ULONG iIndex,PVOID iAddr,PUCHAR oByte); +typedef BOOL (WINAPI*pCH365mSetA15_A8)(ULONG iIndex,UCHAR iA15_A8); +typedef BOOL (WINAPI*pCH365mWriteIoByte)(ULONG iIndex,PVOID iAddr,UCHAR iByte); +typedef VOID (WINAPI*pCH365mCloseDevice)(ULONG iIndex); + +//ch365 pci: +class CPciCh365Mgr:public CModule +{ +public: + CPciCh365Mgr(void); + ~CPciCh365Mgr(void); + virtual void Ini(); + virtual MODULE GetModuleType(){return _MODULE_PCI365;}; + + bool IsInitialize(){return m_bIni;}; + bool ReadPortState(SPciPort PciPort,bool bCheckIniState = true); + void WritePortState(SPciPort PciPort,bool bOpen); + void SendOnePulse(SPciPort PciPort,unsigned int Delay); + long &GetOutPortState(bool bLow); + void DelayTime(unsigned int us); + LARGE_INTEGER GetClockFre(){return m_ClockFre;}; + void CloseLaserPort(); +private: + bool ReadDll(); + bool IniPciCard(); + void IniOutPortState(); + void CheckIniState(); + int GetPortAddr(bool bLow,bool bWirte); + + void IniClockFre(); + + BOOL ReadIoPortByte(int PortAddr,long &PortVal); + void WriteIoPortByte(int PortAddr,long PortVal); + bool LowOrHight(int &PortNum); +private: + bool m_bIni;//pci Ƿʼɹ + //dll ָ + pCH365mOpenDevice CH365mOpenDevice;// CH365豸,ؾ,Ч + pCH365mReadIoByte CH365mReadIoByte;//I/O˿ڶȡһֽ + pCH365mSetA15_A8 CH365mSetA15_A8;//øߵַ,A15-A8 + pCH365mWriteIoByte CH365mWriteIoByte;// I/O˿дһֽ + pCH365mCloseDevice CH365mCloseDevice;// رCH365豸 + + HINSTANCE m_PciCh365Handle;//Ch365̬ӿľ + HANDLE m_DeviceHandle;//pci豸ľ + + long m_OutPortStateLow;//¼ǰ˿ڵ״̬(Ͱλ)--˿д + long m_OutPortStateHigh;//¼ǰ˿ڵ״̬(߰λ)--˿д + + bool m_bHasSmartClock;//Ƿڲʱ + LARGE_INTEGER m_ClockFre;//ڲʱʱƵ +}; + +extern CPciCh365Mgr *gPciCh365Mgr; + + +//߰λǵͰλ +inline bool CPciCh365Mgr::LowOrHight(int &PortNum) +{ + bool bLow = true;//Ͱλ + if(PortNum>=PORT_CNT)//߰λ + { + bLow = false; + PortNum -= PORT_CNT;//ͳһ8 λ + } + return bLow; +} +//˿״̬ +//bLow ǷΪ8 λ +inline long &CPciCh365Mgr::GetOutPortState(bool bLow) +{ + if(bLow) + return m_OutPortStateLow; + else + return m_OutPortStateHigh; +} + +//ȡ˿ڶӦĵַ +inline int CPciCh365Mgr::GetPortAddr(bool bLow,bool bWirte) +{ + int addr; + if(bLow)//Ͱλ + { + if(bWirte) + { + addr = OUT_PORT_ADDR_L; + } + else + { + addr = IN_PORT_ADDR_L; + } + } + else//߰λ + { + if(bWirte) + { + addr = OUT_PORT_ADDR_H; + } + else + { + addr = IN_PORT_ADDR_H; + } + } + return addr; +} +//ȡPortNum ˿״̬(1 0) +inline bool CPciCh365Mgr::ReadPortState(SPciPort PciPort,bool bCheckIniState) +{ + if(bCheckIniState) + CheckIniState(); + + //߰λǵͰλ + bool bLow = LowOrHight(PciPort.num); + //ö˿ڵַ + int PortAddr = GetPortAddr(bLow,false); + //ȡڵֵ + long InPortState; + ReadIoPortByte(PortAddr,InPortState); + + bool ret = IsBitOn(InPortState,PciPort.num); + // + if(PciPort.bReverse) + { + ret = !ret; + } + return ret; +} + diff --git a/LaiPuLaser/PciPort.h b/LaiPuLaser/PciPort.h new file mode 100644 index 0000000..a145712 --- /dev/null +++ b/LaiPuLaser/PciPort.h @@ -0,0 +1,13 @@ +#pragma once + +//pci ƵĶ˿ +struct SPciPort{ + SPciPort() + { + num = -1; + bReverse = false; + } +public: + int num;//˿ڵı + bool bReverse;//Ƿת(תԺȡд붼ᷴ) +}; diff --git a/LaiPuLaser/PciPortMgr.cpp b/LaiPuLaser/PciPortMgr.cpp new file mode 100644 index 0000000..210f355 --- /dev/null +++ b/LaiPuLaser/PciPortMgr.cpp @@ -0,0 +1,280 @@ +#include "StdAfx.h" +#include "PciPortMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "Motor.h" +#include "AuthorityMgr.h" + +#define PCI_PORT_CNT 16 //pci ˿ڵĸ + + +CPciPortMgr *gPciPortMgr = new CPciPortMgr; +CPciPortMgr::CPciPortMgr(void) +{ + //ʼpci Ķ˿ڿ + IniPciPortVec(); + m_OutPortDefaultStateL = 0;//˿ڵͰλĬ״̬ + m_OutPortDefaultStateH = 0;//˿ڸ߰λĬ״̬ +} +CPciPortMgr::~CPciPortMgr(void) +{ +} +void CPciPortMgr::Ini() +{ + //ʼ˿ڿ + IniPortCtrlType(); + //ʼ˿ڱ仯Ĺ۲ + IniObserver(); +} +//ʼpci Ķ˿ڿ +void CPciPortMgr::IniPciPortVec() +{ + m_PciPortCnt = PCI_PORT_CNT*2;//һ + for(int i=0;iSetPciPortType(PCI_PORT_DIR_X,PCI_PORT_PLUS_X,PCI_PORT_LIMIT_SWITCH_X_F,PCI_PORT_LIMIT_SWITCH_X_N); + pMotorY->SetPciPortType(PCI_PORT_DIR_Y,PCI_PORT_PLUS_Y,PCI_PORT_LIMIT_SWITCH_Y_F,PCI_PORT_LIMIT_SWITCH_Y_N); + pMotorZ->SetPciPortType(PCI_PORT_DIR_Z,PCI_PORT_PLUS_Z,PCI_PORT_LIMIT_SWITCH_Z_F,PCI_PORT_LIMIT_SWITCH_Z_N); + //Ϊ˿ڸıĹ۲ + Attach(pMotorX); + Attach(pMotorY); + Attach(pMotorZ); +} +#if 1// +CMFCPropertyGridProperty *CPciPortMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("PciPort");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("PCI ˿"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_OutPortDefaultStateL");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OutPortDefaultStateL); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ĭ"); + Description = _T("˿ڵͰλĬ״̬,Ƶÿһλһ˿"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OutPortDefaultStateL, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_OutPortDefaultStateH");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_OutPortDefaultStateH); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ĭ"); + Description = _T("˿ڸ߰λĬ״̬,Ƶÿһλһ˿"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OutPortDefaultStateH, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + for(int i=0;iSetpVal((void*)&(m_PciPortVec[i].first)); + pPropertie->SetType(_PROP_TYPE_STRING); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("˿ڿƵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_PciPortVec[i].first, Description); + //˿ڿԿƵ + if(iAllowEdit(FALSE);//޸ + + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_PciPortVec_second" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_PciPortVec[i].second); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƿ"); + Description = _T("˿ڷдͶȡȡ෴ֵ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_PciPortVec[i].second, Description); + pGroup1->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CPciPortMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CPciPortMgr]------------------------------------------------"<::iterator iter = m_OutPortCtrlType.begin(); + vector::iterator iter_end = m_OutPortCtrlType.end(); + for(;iter!=iter_end;iter++) + { + p->AddOption(*iter); + } +} +//in ˿ڿԿƵ͵ +void CPciPortMgr::InsertInCtrlType(CMFCPropertyGridProperty* p) +{ + vector::iterator iter = m_InPortCtrlType.begin(); + vector::iterator iter_end = m_InPortCtrlType.end(); + for(;iter!=iter_end;iter++) + { + p->AddOption(*iter); + } +} +//ѯͶӦĶ˿ں +SPciPort CPciPortMgr::GetCtrlPort(CString CtrlContent) +{ + SPciPort PciPort; + vector>::iterator iter = m_PciPortVec.begin(); + vector>::iterator iter_end = m_PciPortVec.end(); + for(int i=0;iter!=iter_end;iter++,i++) + { + if(CtrlContent == (*iter).first) + { + PciPort.num = i%16;//ע(8 ǵ0) + PciPort.bReverse = (*iter).second; + break; + } + } + return PciPort;//ûҵ +} \ No newline at end of file diff --git a/LaiPuLaser/PciPortMgr.h b/LaiPuLaser/PciPortMgr.h new file mode 100644 index 0000000..9c8fc5a --- /dev/null +++ b/LaiPuLaser/PciPortMgr.h @@ -0,0 +1,84 @@ +#pragma once +#include "module.h" +#include "GlobalDefine.h" +#include "Subject.h" +#include "PciPort.h" +#include "EnumPropertieType.h" + +#if 1//˿ڿƵ +#define PCI_PORT_NULL _T("NULL") +//˿ +#define PCI_PORT_PLUS_X _T("X ")//X +#define PCI_PORT_DIR_X _T("X ᷽")//X ᷽ +#define PCI_PORT_DIR_Y _T("Y ᷽")//Y ᷽ +#define PCI_PORT_PLUS_Y _T("Y ")//Y +#define PCI_PORT_DIR_Z _T("Z ᷽")//Y ᷽ +#define PCI_PORT_PLUS_Z _T("Z ")//Y +#define PCI_PORT_LASER _T("") +#define PCI_PORT_LASER_2 _T("") +#define PCI_PORT_EXHAUST_FAN _T("") +#define PCI_PORT_LIGHT_R _T("") +#define PCI_PORT_LIGHT_Y _T("Ƶ") +#define PCI_PORT_LIGHT_G _T("̵") +#define PCI_PORT_ALARM _T("") +#define PCI_PORT_AIR _T("") +#define PCI_PORT_VACUUM_OUT1 _T("OUT1") //տ +#define PCI_PORT_VACUUM_OUT2 _T("OUT2") +#define PCI_PORT_DOOR _T("") + +#define PCI_PORT_PLC_1 _T("PLCͨλ1") +#define PCI_PORT_PLC_2 _T("PLCͨλ2") +#define PCI_PORT_PLC_3 _T("PLCͨλ3") +#define PCI_PORT_PLC_4 _T("PLCͨλ4") +#define PCI_PORT_PLC_5 _T("PLCͨλ5") +#define PCI_PORT_PLC_6 _T("PLCͨλ6") +//˿---------------------------------------------- +#define PCI_PORT_LIMIT_SWITCH_X_F _T("X λ") +#define PCI_PORT_LIMIT_SWITCH_X_N _T("X λ") +#define PCI_PORT_LIMIT_SWITCH_Y_F _T("Y λ") +#define PCI_PORT_LIMIT_SWITCH_Y_N _T("Y λ") +#define PCI_PORT_LIMIT_SWITCH_Z_F _T("Z λ") +#define PCI_PORT_LIMIT_SWITCH_Z_N _T("Z λ") +#define PCI_PORT_VACUUM_IN1 _T("IN1") +#define PCI_PORT_VACUUM_IN2 _T("IN2") +#define PCI_PORT_FIBER1 _T("IN1") +#define PCI_PORT_FIBER2 _T("IN2") +#define PCI_PORT_AIR_CYLINDER_1 _T("ϵλ") +#define PCI_PORT_AIR_CYLINDER_2 _T("µλ") +#define PCI_PORT_DOOR_CHECK _T("Ž") +#define PCI_PORT_GRATING _T("դ") +#define PCI_PORT_STOP _T("ֹͣ") +#endif + + +//̳CModule Ϊ˻Դ洢Ĺ +//̳CSubject dzΪ۲ģʽһ +class CPciPortMgr :public CModule,public CSubject +{ +public: + CPciPortMgr(void); + ~CPciPortMgr(void); + virtual void Ini(); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _PCI_PORT_PROP;}; + virtual void OnPropertyChanged(); + SPciPort GetCtrlPort(CString); + int GetOutPortDefaultStateL(){return m_OutPortDefaultStateL;}; + int GetOutPortDefaultStateH(){return m_OutPortDefaultStateH;}; +private: + void InsertOutCtrlType(CMFCPropertyGridProperty* p); + void InsertInCtrlType(CMFCPropertyGridProperty* p); + void IniPciPortVec(); + void IniPortCtrlType(); + void IniObserver(); +private: + int m_PciPortCnt;//˿ڵĸ + vector m_OutPortCtrlType;//out ˿ڿԿƵȫ + vector m_InPortCtrlType;//in ˿ڿԿƵȫ + vector> m_PciPortVec;//洢pci ÿڿƵPCI_PORT_NULL Ϊʲô(bool ʾ˿Ƿת) + int m_OutPortDefaultStateL;//˿ڵͰλĬ״̬ + int m_OutPortDefaultStateH;//˿ڸ߰λĬ״̬ +}; + +extern CPciPortMgr *gPciPortMgr; \ No newline at end of file diff --git a/LaiPuLaser/PlatformXY.cpp b/LaiPuLaser/PlatformXY.cpp new file mode 100644 index 0000000..b1c891d --- /dev/null +++ b/LaiPuLaser/PlatformXY.cpp @@ -0,0 +1,1086 @@ +#include "StdAfx.h" +#include "PlatformXY.h" +#include "LogMgr.h" +#include "PciPortMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "ExceptionMsg.h" +#include "ObjComponentMgr.h" +#include "DeviceState.h" +#include "WorkCmdMovePlatformXY.h" +#include "MsgBox.h" +#include "WorkCmdInvoker.h" +#include "MotionCard_PCI1245.h" +#include "WorkCmdSetMotorSpeed.h" +#include "WorkCmdWaitMotorStop.h" +#include "WorkCmdMoveMotor.h" +#include "Program_SZ_XL.h" + + +//ٶУ׼ļ +#define MOTOR_SPEED_FILE_X _T("\\Parameter\\PlatformXY\\MotorSpeedX.txt") +#define MOTOR_SPEED_FILE_Y _T("\\Parameter\\PlatformXY\\MotorSpeedY.txt") + + +CPlatformXY *gPlatformXY = NULL; +CPlatformXY::CPlatformXY(CMotor &MotorX,CMotor &MotorY) +:m_MotorX(MotorX),m_MotorY(MotorY) +{ + m_bBresenhamAlgorithm = false;//Ƿʹֱ㷨ƶ + m_bUsed = false;//Ƿʹƽ̨ + m_MaxDisL = 0;//г + m_MaxDisR = 0;//ұг + m_MaxDisU = 0;//ϱг + m_MaxDisD = 0;//±г + m_MoveDelay = 200;//ƽ̨ƶʱus + m_MoveOrder = 0; + m_bSpeedCtrl = false;//Ƿʹƽ̨˶ٶȿ(mm/s) + m_WorkSpeed = 40;//ӹٶ(mm/s) + m_MoveSpeed = 40;//ٶ(mm/s) + m_MoveNeedDeviceIni = true;//ǷҪ豸ʼֶƶ + m_XY_Angle = 0;//XY ļн(360 Ƚ) + m_bMoveToRealCoord = false;//Ƿƶʵʵλ,Ӧƽ̨аװǶȵ + m_bUseMoveRange = true;//Ƿʹ÷Χ + + + m_MaxMoveDis = 10;//һƶ + m_bUseManualMoveDis = true;//Ƿʹֵ + m_MaxManualMoveDis =5;//ֶƶ(Χ֮) + + m_InitMotorX = true;//ǷʼX + m_InitMotorY = true;//ǷʼY + m_bLockManualMoveDis = false;//ֶ΢ֵ + m_UserMaxMoveDis = 5;//Աһƶmm +} +CPlatformXY::~CPlatformXY(void) +{ +} +#if 1 +CMFCPropertyGridProperty *CPlatformXY::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("PlatformXY");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ƽ̨"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUsed");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUsed); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʹƽ̨"); + Description = _T("Ƿʹõƽ̨"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUsed, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MoveNeedDeviceIni");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MoveNeedDeviceIni); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ҫʼ"); + Description = _T("ǷҪʼ豸ֶƶƽ̨"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveNeedDeviceIni, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_InitMotorX");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_InitMotorX); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʼX "); + Description = _T("ǷʼX "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_InitMotorX, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_InitMotorY");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_InitMotorY); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʼY "); + Description = _T("ǷʼY "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_InitMotorY, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MoveDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MoveDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ƽ̨ƶʱ"); + Description = _T("ƽ̨ƶλĵȴʱ,ζ(λ:us)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveDelay, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bBresenhamAlgorithm");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bBresenhamAlgorithm); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ֱ㷨"); + Description = _T("ƽ̨ƶǷʹֱ㷨"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bBresenhamAlgorithm, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_ProductPoint_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProductPoint.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȡϵX"); + Description = _T("ȡϵX "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductPoint.x, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_ProductPoint_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProductPoint.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȡϵY"); + Description = _T("ȡϵY "); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductPoint.y, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bMoveToRealCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bMoveToRealCoord); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʵ"); + Description = _T("ƶǷƽ̨Ƕ,У׼Ϊʵ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMoveToRealCoord, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_XY_Angle");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_XY_Angle); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("XY н"); + Description = _T("XY ļн(360 Ƚ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_XY_Angle, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bUseManualMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUseManualMoveDis); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʹ΢"); + Description = _T("Ƿʹõǰ΢ֵƶλ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseManualMoveDis, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_MaxManualMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxManualMoveDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("΢"); + Description = _T("ֶ΢"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxManualMoveDis, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ƽ̨Χ")); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxMoveDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ֶ"); + Description = _T("ֶƶƽ̨һƶ(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxMoveDis, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_UserMaxMoveDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_UserMaxMoveDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ƾ"); + Description = _T("dzȨһƶ(mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_UserMaxMoveDis, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bUseMoveRange");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUseMoveRange); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʹ÷Χ"); + Description = _T("Ƿƽ̨ƶΧ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseMoveRange, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxDisL");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxDisL); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("г"); + Description = _T("ԭλÿʼX г"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisL, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxDisR");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxDisR); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ұг"); + Description = _T("ԭλÿʼX ұг"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisR, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxDisU");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxDisU); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ϱг"); + Description = _T("ԭλÿʼY ϱг"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisU, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MaxDisD");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxDisD); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("±г"); + Description = _T("ԭλÿʼY ±г"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisD, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + { + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("˶ٶ")); + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_bSpeedCtrl");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bSpeedCtrl); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("mm/s ʽ"); + Description = _T("Ƿʹƽ̨˶ٶȿ(mm/s)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bSpeedCtrl, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_WorkSpeed");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkSpeed); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ӹٶ"); + Description = _T("ӹٶ(mm/s)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_WorkSpeed, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_MoveSpeed");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MoveSpeed); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ٶ"); + Description = _T("ٶ(mm/s)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveSpeed, Description); + pGroup1->AddSubItem(p); + gDevicePropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CPlatformXY::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CPlatformXY]------------------------------------------------"<=0) + { + bSendY = true; + error = error - 2*PulseCntX; + } + error = error +2*PulseCntY; + } + //x ϶׼ + //Y ڼܻһ + if(TallyYWriteDebugLog(str); + + if(MotorY.MoveOnePluse(MotorY.GetDelay(bWork))==false) + { + return false;//ײλ + } + } + return true; +} +//ƶָľ(dis ĵλǺ) +bool CPlatformXY::MoveDistance(double dis,DIRECTION dir,bool bSaveCoord) +{ + //ȡǰ + Dbxy MovePt = GetCoord(); + Dbxy TargetPt; + switch(dir) + { + case _DIR_L: + MovePt.x -= dis; + break; + case _DIR_R: + MovePt.x += dis; + break; + case _DIR_U: + MovePt.y += dis; + break; + case _DIR_D: + MovePt.y -= dis; + break; + default: + return true; + break; + } + return Move(false,TargetPt,MovePt,bSaveCoord); +} +//ƶָ(¼) +bool CPlatformXY::MovePulseCnt(int Cnt,DIRECTION dir) +{ + if(Cnt<=0) + return true; + + //÷ + SetMoveDir(dir); + + int PulseCntX = 0; + int PulseCntY = 0; + + switch(dir) + { + case _DIR_L: + PulseCntX = Cnt*(-1); + break; + case _DIR_R: + PulseCntX = Cnt; + break; + case _DIR_U: + PulseCntY = Cnt; + break; + case _DIR_D: + PulseCntY = Cnt*(-1); + break; + default: + break; + } + + if(PulseCntX<0) + { + PulseCntX *= -1; + } + if(PulseCntY<0) + { + PulseCntY *= -1; + } + + //ƽ̨ƶ + m_MotorX.MoveByPluse((double)PulseCntX,false); + m_MotorY.MoveByPluse((double)PulseCntY,false); + + return true; +} +void CPlatformXY::SetMoveDir(DIRECTION dir) +{ + switch(dir) + { + case _DIR_L: + m_MotorX.SetDir(false); + break; + case _DIR_R: + m_MotorX.SetDir(true); + break; + case _DIR_U: + m_MotorY.SetDir(true); + break; + case _DIR_D: + m_MotorY.SetDir(false); + break; + default: + return; + break; + } +} +//ƶƶķ +void CPlatformXY::SetMoveDir(Dbxy MovePt,Dbxy TargetPt) +{ + Dbxy Coord = GetCoord(); + + bool bDirX = false;// + bool bDirY = false;// + if((TargetPt.x - (MovePt.x+Coord.x))>0) + { + bDirX = true; + } + if((TargetPt.y - (MovePt.y+Coord.y))>0) + { + bDirY = true; + } + if(!gLogMgr->IsDebuging())//״̬ + { + m_MotorX.SetDir(bDirX); + m_MotorY.SetDir(bDirY); + } +} +//ϵpt תΪƽ̨ʵ +Dbxy CPlatformXY::TheoryCoor2RealCoord(Dbxy pt) +{ + double Angle = _360ToAngle(m_XY_Angle); + Dbxy CenterPt(0,0);//ƽ̨ԭ + Dbxy RealPt = RotatoPt(pt,Angle,CenterPt); + return RealPt; +} + +//ƶMovePt 㵽TargetPt (bSaveCoord ʾǷҪ¼ƶ(ĬҪ¼)) +//MovePt TargetPtƽ̨ԭֵ +//bWork ʾ߿ +bool CPlatformXY::Move(bool bWork,Dbxy MovePt,Dbxy TargetPt,bool bSaveCoord) +{ + if(!m_bUsed) + return true; + //ƶǰ + OnPlatformMoveStart(); + //ʵλƶ + if(m_bMoveToRealCoord) + { + //MovePt TargetPt ϵ + //ƽ̨нǶʱƽ̨ƶλûƫ + //ϵpt תΪƽ̨ʵ + MovePt = TheoryCoor2RealCoord(MovePt); + TargetPt = TheoryCoor2RealCoord(TargetPt); + } + //ʹл˶ƿƽ̨ + if(gMotionCard_PCI1245->IsbUsed()) + { + Dbxy Coord = GetTargetCoord(MovePt,TargetPt);//ƽ̨Ŀ + //İȫ(׳쳣) + CheckCoordRange(Coord); + Coord = gMotionCard_PCI1245->MovePlatformXY(Coord); + #if 0 + //µ + if(bSaveCoord)//Ϊƽ̨ǷҪ¼ֵ + { + m_Coord = Coord; + //֪ͨ۲ƽ̨仯 + NotifyObservers(); + } + #endif + } + + OnPlatformMoveEnd(); + return true; +} +//õǰλΪƽ̨ԭ +void CPlatformXY::SetCurPosOrigin() +{ + Dbxy pt(0,0); + + gMotionCard_PCI1245->SetCurGpIdx(0); + SetCoord(pt); + //лһ + gMotionCard_PCI1245->SetCurGpIdx(1); + SetCoord(pt); + + CString str1 = _T("[func][SetCurPosOrigin] [õǰλΪԭ]"); + gLogMgr->WriteDebugLog(str1); +} +Dbxy CPlatformXY::GetTargetCoord(Dbxy MovePt,Dbxy TargetPt) +{ + Dbxy Coord;//ƽ̨Ŀ + Coord.x = TargetPt.x - MovePt.x; + #ifdef __CUSTOM_SW_XL__ + Coord.y = MovePt.y -TargetPt.y; + #else + Coord.y = TargetPt.y - MovePt.y; + #endif + return Coord; +} +//İȫ(׳쳣) +void CPlatformXY::CheckCoordRange(Dbxy Coord) +{ + //İȫ------------------------------------------ + if(m_bUseMoveRange && IsPointInRect(Coord,GetRect())==false) + { + CString str = _T("ƶȫΧ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } +} +//µ +void CPlatformXY::SetCoord(Dbxy pt) +{ + m_Coord = pt; + + gMotionCard_PCI1245->SetCoord(pt); + + //֪ͨ۲ƽ̨仯 + NotifyObservers(); + +} +//ƶָ +void CPlatformXY::MoveToPt(Dbxy MovePt,Dbxy TargetPt) +{ + gLogMgr->WriteDebugLog("MovePt.x","",MovePt.x); + gLogMgr->WriteDebugLog("MovePt.y","",MovePt.y); + Move(false,MovePt,TargetPt); +} +//ֶƶƽ̨ +void CPlatformXY::ManualMovePlatForm(bool bMoveByDis,double MoveDis,DIRECTION MoveDir) +{ + //Զнֹƶ + if(gProgram_SZ_XL->IsbAutoWorking()) + return; + //dzȨƶ + if(gAuthorityMgr->CheckAuthority(_FACTORY,false)==false) + { + if(fabs(MoveDis)>m_UserMaxMoveDis) + { + CString s; + s.Format("һֻƶ%.3f",m_UserMaxMoveDis); + CMsgBox MsgBox; + MsgBox.Show(s); + return; + } + } + + CDeviceState &DeviceState = CDeviceState::GetInstance(); + bool IniState = DeviceState.IsDeviceIni(); + DeviceState.SetIniState(true);//ǿƳʼɹ + + //Ҫʼƶƽ̨ + if(IsMoveNeedDeviceIni()) + { + if(DeviceState.IsDeviceIni()==false) + { + CMsgBox MsgBox; + MsgBox.Show("豸δʼ"); + return; + } + } + if(bMoveByDis) + { + double Max = m_MaxMoveDis;//һƶ + if(MoveDis>Max) + { + CMsgBox MsgBox; + CString str; + str.Format(_T("ÿֻƶ%f (mm)"),Max); + MsgBox.Show(str); + return; + } + } + CWorkCmdContainer CmdContainer; + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorX(); + pCmd->SetbSetMotorX2(); + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //ƶ + { + CMotor *pMotor = CMotor::GetMotor(MOTOR_Y); + if(MoveDir == _DIR_L ||MoveDir == _DIR_R ) + { + if(gMotionCard_PCI1245->GetCurGpIdx()==0) + pMotor = CMotor::GetMotor(MOTOR_X); + else + pMotor = CMotor::GetMotor(MOTOR_X2); + } + if(MoveDir == _DIR_L || MoveDir == _DIR_D) + MoveDis *= (-1); + + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(*pMotor,MoveDis); + pCmd->SetMoveFlg(true);//ƶ + CmdContainer.AddCmd(pCmd); + } + //ȴƶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if(MoveDir == _DIR_L ||MoveDir == _DIR_R ) + { + if(gMotionCard_PCI1245->GetCurGpIdx()==0) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + } + else + { + pCmd->SetbWaitMotorY(); + } + CmdContainer.AddCmd(pCmd); + } + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.Excute(CmdContainer); + + + //֪ͨ۲ƽ̨仯 + NotifyObservers(); + + DeviceState.SetIniState(IniState);//ָʼ״̬ + + +} + +//ƽ̨Ƿȡϵ +bool CPlatformXY::IsAtProductPoint() +{ + return (m_ProductPoint==m_Coord); +} +//õǰΪȡϵ +void CPlatformXY::SetCurPosAsProductPt() +{ + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel("õǰΪȡϵ?")) + { + m_ProductPoint = m_Coord; + gLogMgr->WriteDebugLog("Fuc---->SetCurPosAsProductPt"); + } +} +//ƶȡϵ +void CPlatformXY::MoveToWorkPt() +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.CheckInitState()) + return; + vector CmdVec; + CmdVec.push_back(_T("CmdName[CMD_PLATFORM_MOVE] Par1[TO_WORK_PT]")); + CWorkCmdInvoker Invoker; + Invoker.ExcuteCmd(CmdVec); +} +void CPlatformXY::MoveToOriginPt() +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.CheckInitState()) + return; + vector CmdVec; + CmdVec.push_back(_T("CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN]")); + CWorkCmdInvoker Invoker; + Invoker.ExcuteCmd(CmdVec); +} +//ʼƽ̨(bConfirm ʾǷ񵯳ʾ) +void CPlatformXY::IniPlat(bool bConfirm) +{ + if(bConfirm) + { + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ʼƽ̨?"))==false) + return; + } + OnPlatformMoveStart(); + + vector CmdVec; + if(m_InitMotorX) + { + CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[X]")); + } + if(m_InitMotorY) + { + CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[Y]")); + CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[Y]")); + } + if(m_InitMotorX) + { + CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[X]")); + } + CmdVec.push_back(_T("CmdName[CMD_DEVICE_PAR_RESET]")); + CWorkCmdInvoker Invoker; + Invoker.ExcuteCmd(CmdVec); + + OnPlatformMoveEnd(); +} +//ƶƽ̨֮ǰIJ(ҪҪͣռcpu Ĺ) +void CPlatformXY::OnPlatformMoveStart() +{ +} +void CPlatformXY::OnPlatformMoveEnd() +{ +} +#if 1 +//ֶ΢ +void CPlatformXY::ResetManualMoveDis() +{ + m_ManualMoveDis.x = m_ManualMoveDis.y = 0; +} +//¼ֶƶ +void CPlatformXY::SaveManualMoveDis(double MoveDis,DIRECTION MoveDir) +{ + if(m_bLockManualMoveDis)//״̬ + return; + + switch(MoveDir) + { + case _DIR_L: + m_ManualMoveDis.x -= MoveDis; + break; + case _DIR_R: + m_ManualMoveDis.x += MoveDis; + break; + case _DIR_U: + m_ManualMoveDis.y += MoveDis; + break; + case _DIR_D: + m_ManualMoveDis.y -= MoveDis; + break; + default: + return; + break; + } + //֤޶Χ֮ + if(m_ManualMoveDis.x>m_MaxManualMoveDis) + m_ManualMoveDis.x = m_MaxManualMoveDis; + else if(m_ManualMoveDis.x < m_MaxManualMoveDis*(-1)) + m_ManualMoveDis.x = m_MaxManualMoveDis*(-1); + + if(m_ManualMoveDis.y>m_MaxManualMoveDis) + m_ManualMoveDis.y = m_MaxManualMoveDis; + else if(m_ManualMoveDis.y < m_MaxManualMoveDis*(-1)) + m_ManualMoveDis.y = m_MaxManualMoveDis*(-1); +} +#endif +//ȡXY һƶľ +Dbxy CPlatformXY::GetMotorXYOnePulseDis() +{ + Dbxy MotorXYOnePulseDis; + MotorXYOnePulseDis.x = m_MotorX.GetOnePulseDis(); + MotorXYOnePulseDis.y = m_MotorY.GetOnePulseDis(); + return MotorXYOnePulseDis; +} + diff --git a/LaiPuLaser/PlatformXY.h b/LaiPuLaser/PlatformXY.h new file mode 100644 index 0000000..2a7aec1 --- /dev/null +++ b/LaiPuLaser/PlatformXY.h @@ -0,0 +1,112 @@ +#pragma once +#include "Motor.h" +#include "EnumDirection.h" +#include "GlobalDefine.h" +#include "Module.h" +#include "Subject.h" + + +//񾵺ͼͷᶯIJֶƽ̨ +/*ӳ䵽ƽ̨ƽ̨ԭ +ƽ̨ƶʱӳ겻ı +Ҳ˵m_Coord ָƽ̨λã޹*/ + +/* +ƽ̨DZ׼ĵѿ꣬X ΪY Ϊ +*/ + +//xy ƽ̨ +class CPlatformXY : public CModule,public CSubject +{ +public: + CPlatformXY(CMotor &MotorX,CMotor &MotorY); + ~CPlatformXY(void); + virtual MODULE GetModuleType(){return _PLATFORM_XY_PROP;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + virtual void Draw(CDC* pDC); + virtual void ExportPar(ofstream *pFile); + virtual bool Move(bool bWork,Dbxy MovePt,Dbxy TargetPt,bool bSaveCoord = true);//ƶָ(bSaveCoord ʾǷҪ¼ƶ) +public: + void SetCurPosOrigin();//õǰλΪƽ̨ԭ + Dbxy GetCoord();//ȡǰֵ(ƽ̨ʵ,XY нǶ,һݵ) + Dbxy GetProductPoint(){return m_ProductPoint;}; + bool MoveDistance(double dis,DIRECTION dir,bool bSaveCoord = true);//ƶָľ(bSaveCoord ʾǷҪ¼ƶ) + bool MovePulseCnt(int Cnt,DIRECTION dir); + int GetMoveDelay(){return m_MoveDelay;}; + bool IsAtProductPoint(); + void SetMoveOrder(int n){m_MoveOrder = n;}; + void AdjustPlatformSpeed(); + double GetWorkSpeed(){return m_WorkSpeed;}; + void SetWorkSpeed(double s){m_WorkSpeed = s;} + double GetMoveSpeed(){return m_MoveSpeed;}; + void SetMoveSpeed(double s){m_MoveSpeed = s;} + Dbxy GetMotorXYOnePulseDis(); + bool IsMoveNeedDeviceIni(){return m_MoveNeedDeviceIni;}; + void MoveToPt(Dbxy MovePt,Dbxy TargetPt); + void ManualMovePlatForm(bool bMoveByDis,double MoveDis,DIRECTION MoveDir); + void SetCurPosAsProductPt(); + void MoveToWorkPt(); + void MoveToOriginPt(); + void IniPlat(bool bConfirm = true); + Dbxy GetManualMoveDis(){return m_ManualMoveDis;}; + void ResetManualMoveDis(); + bool IsUseManualMoveDis(){return m_bUseManualMoveDis;}; + void SetbLockManualMoveDis(bool b){m_bLockManualMoveDis = b;}; + bool IsbBresenhamAlgorithm(){return m_bBresenhamAlgorithm;}; + bool GetbUseMoveRange(){return m_bUseMoveRange;}; + void SetbUseMoveRange(bool b){m_bUseMoveRange = b;}; + void SetCoord(Dbxy pt); +private: + void CalPulseCntAndSaveCoord(Dbxy MovePt,Dbxy TargetPt,double &PulseCntX,double &PulseCntY,bool bSaveCoord); + bool MoveBresenhamAlgorithm(bool bWork,CMotor &MotorX,double PulseCntX,CMotor &MotorY,double PulseCntY); + void SetMoveDir(Dbxy MovePt,Dbxy TargetPt); + void SetMoveDir(DIRECTION dir); + void SaveCoord(int PulseCntX,int PulseCntY); + + DbRect GetRect(); + Dbxy TheoryCoor2RealCoord(Dbxy pt); + void OnPlatformMoveStart(); + void OnPlatformMoveEnd(); + void SaveManualMoveDis(double MoveDis,DIRECTION MoveDir); + Dbxy GetTargetCoord(Dbxy MovePt,Dbxy TargetPt); + void CheckCoordRange(Dbxy Coord); +private: + CMotor &m_MotorX;//X + CMotor &m_MotorY;//Y + Dbxy m_Coord;//ƽ̨ǰ(λǺ) + Dbxy m_ProductPoint;//ȡϵ + + bool m_bBresenhamAlgorithm;//Ƿʹֱ㷨ƶ + bool m_bUsed;//Ƿʹƽ̨ + bool m_MoveNeedDeviceIni;//ǷҪ豸ʼֶƶ + double m_MaxMoveDis;//һƶmm + double m_UserMaxMoveDis;//Աһƶmm + bool m_bUseMoveRange;//Ƿʹ÷Χ + double m_MaxDisL;//г + double m_MaxDisR;//ұг + double m_MaxDisU;//ϱг + double m_MaxDisD;//±г + + int m_MoveDelay;//ƽ̨ƶʱus + int m_MoveOrder;//ƶ˳ 0:Ⱦ(Ĭ) 1:X ƶ 2:Y ƶ (ҪΪ˱е豸ײƽ̨) + + bool m_bSpeedCtrl;//Ƿʹƽ̨˶ٶȿ(mm/s) + + double m_WorkSpeed;//ӹٶ(mm/s) + double m_MoveSpeed;//ٶ(mm/s) + + double m_XY_Angle;//XY ļн(360 Ƚ) + bool m_bMoveToRealCoord;//Ƿƶʵʵλ,Ӧƽ̨аװǶȵ + + bool m_bUseManualMoveDis;//Ƿʹֵ(ֵ) + bool m_bLockManualMoveDis;//ֶ΢ֵ + Dbxy m_ManualMoveDis;//¼ǰֶ΢ + double m_MaxManualMoveDis;//ֶƶ(Χ֮) + + bool m_InitMotorX;//ǷʼX + bool m_InitMotorY;//ǷʼY +}; + +extern CPlatformXY *gPlatformXY; \ No newline at end of file diff --git a/LaiPuLaser/PlcIOMgr.cpp b/LaiPuLaser/PlcIOMgr.cpp new file mode 100644 index 0000000..c1f6647 --- /dev/null +++ b/LaiPuLaser/PlcIOMgr.cpp @@ -0,0 +1,261 @@ +#include "StdAfx.h" +#include "PlcIOMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "FileMgr.h" +#include "CStringFuc.h" +#include "CommPortMgr.h" +#include "LogMgr.h" + + +#define OUT_PORT_FILE_PATH _T("\\Parameter\\PlcIOMgr\\PlcIO_Out.txt")//˿() +#define IN_PORT_FILE_PATH _T("\\Parameter\\PlcIOMgr\\PlcIO_In.txt")//˿(ѯ) +#define OPEN_STR "A000000" //ָǰ׺ +#define CLOSE_STR "B000000" //رָǰ׺ +#define OK_STR "OK" //OK + +#define QUERY_STR "C000000" //ѯָǰ׺ +#define QUERY_OK_STR "C100000" //ѯOK ǰ׺ + +CPlcIOMgr *gPlcIOMgr = new CPlcIOMgr; +CPlcIOMgr::CPlcIOMgr(void) +{ + m_ComPort = 6;//ͨŴں + m_BaudRate = 115200;//ͨŲ + m_bUse = false;//ǷʹPLC I/O + m_bShowLog = false;//Ƿʾ־ +} +CPlcIOMgr::~CPlcIOMgr(void) +{ +} +CMFCPropertyGridProperty *CPlcIOMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("PlcIOMgr");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("PLC I/O"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bUse");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUse); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Ƿʹ"); + Description = _T("ǷʹPLC I/Oƹ(Ч)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUse, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_bShowLog");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShowLog); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ʾ־"); + Description = _T("Ƿʾ־Ϣ"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShowLog, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_ComPort");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ComPort); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ͨŴ"); + Description = _T("ͨôں"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ComPort, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = _T("m_BaudRate");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_BaudRate); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("ͨò"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_BaudRate, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } + return pGroup; +} +void CPlcIOMgr::Ini() +{ + if(!m_bUse) + return; + + CFileMgr FileMgr; + CString FilePath; + FileMgr.GetFullFilePath(FilePath,OUT_PORT_FILE_PATH);//ȡ· + ReadCtrlContentFile(m_OutPortVec,FilePath); + FileMgr.GetFullFilePath(FilePath,IN_PORT_FILE_PATH);//ȡ· + ReadCtrlContentFile(m_InPortVec,FilePath); +} +void CPlcIOMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CPlcIOMgr]------------------------------------------------"<ReadCtrlContentFile : ")+FilePath); + gLogMgr->WriteDebugLog(LogStr); + + PortVec.clear(); + CFileMgr FileMgr; + CPlcIOPar PlcIOPar; + vector vec; + FileMgr.ReadFileToStringVec(FilePath,vec); + int size = vec.size(); + for(int i=0;iWriteDebugLog("Err---->not find plc port num of : " + CtrlContent); + } + return ""; +} +//л˿״̬(CtrlContent ǿ) +bool CPlcIOMgr::SwitchPort(CString CtrlContent,bool bOpen) +{ + //ѯ˿ں + CString PortNum = GetPortNum(CtrlContent,m_OutPortVec); + if(PortNum != "") + { + CCommPortMgr com; + if(com.Open(m_ComPort,m_BaudRate)==false) + { + return false; + } + m_ExcuteTimes = 200; + CString str1 = (bOpen?(OPEN_STR):(CLOSE_STR)); + str1 += PortNum; + CString str = str1+char(13)+char(10); + CString CommRev; + int Delay=50; + int Total = 50; + while(Total &PortVec); + void ReadCtrlContentFile(vector &PortVec,CString FilePath); +private: + bool m_bUse;//ǷʹPLC I/O + bool m_bShowLog;//Ƿʾ־ + int m_BaudRate;//ͨŲ + int m_ComPort;//ͨŴں + int m_ExcuteTimes;//ִʱ,ֱOK + vector m_OutPortVec;//ƶ˿ + vector m_InPortVec;//ƶ˿ +}; + +extern CPlcIOMgr *gPlcIOMgr; \ No newline at end of file diff --git a/LaiPuLaser/PltReader.cpp b/LaiPuLaser/PltReader.cpp new file mode 100644 index 0000000..4dc4ad5 --- /dev/null +++ b/LaiPuLaser/PltReader.cpp @@ -0,0 +1,246 @@ +#include "StdAfx.h" +#include "PltReader.h" +#include "ObjComposite.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "MarkObjPropertieMgr.h" +#include "Layer.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +CPltReader* gPltReader = new CPltReader;//plt ȡ + +CPltReader::CPltReader(void) +{ + m_ScaleX = 0.024888; + m_ScaleY = 0.024875; +} +CPltReader::~CPltReader(void) +{ +} +#if 1//ú +CMFCPropertyGridProperty *CPltReader::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("PltSet");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("plt ȡ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_ScaleX");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ScaleX); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("plt ȡX"); + Description = _T("ڽȡplt ļŵcad ӦСı"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_ScaleX, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_ScaleY");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ScaleY); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("plt ȡY"); + Description = _T("ڽȡplt ļŵcad ӦСı"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_ScaleY, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CPltReader::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CPltReader]------------------------------------------------"<RefreshView(); + //ͼ + gMarkObjPropertieMgr->UpdateSelMarkObjPropertie(); + gLogMgr->WriteDebugLog("func :Open Plt File---->"+FilePath); + } + gLogMgr->WriteDebugLog("func :AnalysePltFlie---->Error"); + } +} +//vec һϳɶ +void CPltReader::TranslatorToComposite(vector &vec,CObjContainer &ObjContainer) +{ + if(vec.empty()) + { + return; + } + //ϳɶ + CObjComposite *pObj = new CObjComposite; + + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy DbPt((*iter).first.x,(*iter).first.y); + CDataPoint pt(DbPt); + pObj->AddPt(pt,(*iter).second); + } + //ƶм + { + DbRect rect = pObj->GetRect(); + Dbxy pt = rect.GetCenterPt(); + + SObjOperatePar par; + par.OpType = _OP_MOVE; + par.MoveX = -pt.x; + par.MoveY = -pt.y; + pObj->Operate(par); + } + //ŵcad óߴX + { + SObjOperatePar par; + par.Scale = m_ScaleX; + + par.OpType = _OP_STRETCH; + DbRect rect = pObj->GetRect(); + Dbxy pt = rect.GetCenterPt(); + + par.OldSize = rect.R - rect.L; + par.NewSize = par.OldSize*par.Scale; + par.Diff = par.NewSize-par.OldSize; + par.xy = _X; + pObj->Operate(par); + } + //ŵcad óߴY + { + SObjOperatePar par; + par.Scale = m_ScaleY; + + par.OpType = _OP_STRETCH; + DbRect rect = pObj->GetRect(); + Dbxy pt = rect.GetCenterPt(); + + par.OldSize = rect.T - rect.B; + par.NewSize = par.OldSize*par.Scale; + par.Diff = par.NewSize-par.OldSize; + par.xy = _Y; + pObj->Operate(par); + } + + ObjContainer.AddObject(pObj); +} +#endif +#if 1 +//plt ļ +bool CPltReader::AnalysePltFlie(CString FilePath) +{ + m_PtVec.clear(); + + CStdioFile file; + if(file.Open(FilePath,CFile::modeRead,NULL)==0) + { + return false; + } + + CString str; + bool flg = true; + int pos = 0; + while(file.ReadString(str))//ȡһ + { + int len = str.GetLength(); + while(pos &vec,CObjContainer &ObjContainer); +private: + vector m_PtVec;//洢ȡݵ + //ڽȡplt ļŵcad ӦСı + double m_ScaleX; + double m_ScaleY; +}; + +extern CPltReader* gPltReader; \ No newline at end of file diff --git a/LaiPuLaser/Product.cpp b/LaiPuLaser/Product.cpp new file mode 100644 index 0000000..4e859dc --- /dev/null +++ b/LaiPuLaser/Product.cpp @@ -0,0 +1,714 @@ +#include "StdAfx.h" +#include "Product.h" +#include "GlobalFunction.h" +#include "LogMgr.h" +#include "ObjComponentMgr.h" +#include "ExceptionMsg.h" +#include "ProductMgr.h" +#include "CommonFlowMgr.h" +#include "DrawSimpleShape.h" + + //IMPLEMENT_SERIAL(CProduct,CObject,1) +CProduct::CProduct(void) +{ + m_bUsed = true;//Ƿʹ + m_MaxRotateAng = 0.3;//תǶ + m_RotateAng = 0; + m_bLastOne = true;//ǷΪһ + m_bHasMarkPt3 = false;//Ƿmark3 +} +CProduct::~CProduct(void) +{ +} +void CProduct::Draw(CDC* pDC) +{ + CPen Pen; + Pen.CreatePen(PS_INSIDEFRAME,0.5,RGB_GREEN1); + DbRect Rect(m_BasePt,3); + DrawCrossX(pDC,Pen,Rect); +} +#if 1 +//öλ +void CProduct::SetTheoryMarkPt(Dbxy pt1,Dbxy pt2) +{ + m_TheoryMarkPt1 = pt1; + m_TheoryMarkPt2 = pt2; + return; + if(pt1.x &LabVec) +{ + LabVec.push_back(CLab(LAB_NULL,m_BasePt.x)); + LabVec.push_back(CLab(LAB_NULL,m_BasePt.y)); + LabVec.push_back(CLab(LAB_NULL,m_bUsed)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.x)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.y)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.x)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.y)); +} +void CProduct::ReadWorkFile(CLabVecRang &LabVecRang) +{ + int idx = LabVecRang.GetStart(); + m_BasePt.x = LabVecRang.GetDouble(idx++); + m_BasePt.y = LabVecRang.GetDouble(idx++); + m_bUsed = LabVecRang.GetBool(idx++); + m_TheoryMarkPt1.x = LabVecRang.GetDouble(idx++); + m_TheoryMarkPt1.y = LabVecRang.GetDouble(idx++); + m_TheoryMarkPt2.x = LabVecRang.GetDouble(idx++); + m_TheoryMarkPt2.y = LabVecRang.GetDouble(idx++); +} +#endif +#if 1 +//ʵʶλ +void CProduct::ResetRealMarkPt() +{ + m_RealMarkPt1.x = 0; + m_RealMarkPt1.y = 0; + m_RealMarkPt2.x = 0; + m_RealMarkPt2.y = 0; + m_RealMarkPt3.x = 0; + m_RealMarkPt3.y = 0; + //ƫƺתҪ + m_Offset.x = 0;//ӳΪƽ̨ƫX + m_Offset.y = 0;//ӳΪƽ̨ƫY + m_RotateAng = 0;//ӳΪƽ̨תǶ +} +bool CProduct::IsSetRealMarkPt1() +{ + return (!IsDbxyZero(m_RealMarkPt1)); +} +bool CProduct::IsSetRealMarkPt2() +{ + return (!IsDbxyZero(m_RealMarkPt2)); +} +//λǷ׼ +bool CProduct::IsMarkReady() +{ + Dbxy MarkPt1; + Dbxy MarkPt2; + if(gObjComponentMgr->GetTwoMarkPt(MarkPt1,MarkPt2))//жλ + { + return IsSetRealMarkPt1() && IsSetRealMarkPt2(); + } + else//޶λ + { + return gCommonFlowMgr->IsNoMarkCanWork(); + } +} +//ʵʶλ(CCD ץȡ)ץһʱ,תƽơں +void CProduct::SetRealMarkPt(Dbxy pt) +{ + /*if(IsSetRealMarkPt1() && IsSetRealMarkPt2()) + { + //ʵʶλ + ResetRealMarkPt(); + }*/ + //ûöλ1öλ1 + if(!IsSetRealMarkPt1()) + { + gLogMgr->WriteDebugLog("SetRealMarkPt1"); + m_RealMarkPt1 = pt; + } + //˶λ1ûöλ2 ʱöλ2 + else if(!IsSetRealMarkPt2()) + { + gLogMgr->WriteDebugLog("SetRealMarkPt2"); + m_RealMarkPt2 = pt; + double RotatoAdjustX = gCommonFlowMgr->GetRotatoAdjust();//markֶ + m_RealMarkPt2.x += RotatoAdjustX; + } + + //ҪͬʱݺʵݵĶλܼ + if(!IsSetRealMarkPt1() || !IsSetRealMarkPt2()) + return; + + /*if (m_bNewAddProduct) + {*/ + CalAffinePars(); + return; + /*}*/ + + //ƫת + CalTheoryToRealPar(); + + //ץȡmark + if(gCommonFlowMgr->IsbStretchDataToRealSize()) + { + //ʵʳߴ + CalRealStretchPar(); + //۶λ + StretchPt(m_TheoryMarkPt1,m_StretchParX); + StretchPt(m_TheoryMarkPt1,m_StretchParY); + StretchPt(m_TheoryMarkPt2,m_StretchParX); + StretchPt(m_TheoryMarkPt2,m_StretchParY); + //¼תƫ + CalTheoryToRealPar(); + } +} +#include"CameraHawkvis.h" +#include +using namespace cv; + +void CProduct::CalAffinePars() +{ + //΢Ƕȵķϵ + /*{ + Point2f PRThroryCoords[3];//תǰֵ + Point2f ARRealCoords[3];//תʵֵ + PRThroryCoords[0] = Point2f(0, -1000); + PRThroryCoords[1] = Point2f(1000, 0); + PRThroryCoords[2] = Point2f(0, 1000); + auto angle = gProductMgr->GetAdjustAngle(); + auto SinAngle = sin(angle); + auto CosAngle = cos(angle); + ARRealCoords[0] = Point2f(1000*SinAngle, -1000*CosAngle); + ARRealCoords[1] = Point2f(1000*CosAngle, 1000*SinAngle); + ARRealCoords[2] = Point2f(-1000*SinAngle, 1000*CosAngle); + + Mat warp_mat(2, 3, CV_32FC1); + //÷任 + warp_mat = getAffineTransform(PRThroryCoords, ARRealCoords); + warp_mat.convertTo(warp_mat, CV_32FC1);//תʱ,ĬCV_64FC1 + + //ȡ6任 + m_rp00 = warp_mat.at(0, 0); + m_rp01 = warp_mat.at(0, 1); + m_p02 = warp_mat.at(0, 2); + + m_rp10 = warp_mat.at(1, 0); + m_rp11 = warp_mat.at(1, 1); + m_rp12 = warp_mat.at(1, 2); + }*/ + + CString logstr; + + Dbxy DataCenter = gObjComponentMgr->GetAllObjCenterPt(); + + /*Dbxy T2oft = Dbxy(0, 0); + if (gCameraHawkvis->GetCamIndex()==1&&(!m_bNewAddProduct))//2жƫ Ƭ + T2oft = gProgram_SZ_XL->GetTrack2Offset(); */ + + o_TheoryMarkPt1 = m_TheoryMarkPt1-DataCenter; + logstr.Format("TheoryMarkPt1 Coord(%f,%f)", o_TheoryMarkPt1.x, o_TheoryMarkPt1.y); + gLogMgr->WriteDebugLog(logstr); + + o_TheoryMarkPt2 = m_TheoryMarkPt2 - DataCenter; + logstr.Format("TheoryMarkPt2 Coord(%f,%f)", o_TheoryMarkPt2.x, o_TheoryMarkPt2.y); + gLogMgr->WriteDebugLog(logstr); + + o_TheoryMarkPt3 = m_TheoryMarkPt3 - DataCenter; + logstr.Format("TheoryMarkPt3 Coord(%f,%f)", o_TheoryMarkPt3.x, o_TheoryMarkPt3.y); + gLogMgr->WriteDebugLog(logstr); + + o_RealMarkPt1 = m_RealMarkPt1 - DataCenter; + logstr.Format("RealMarkPt1 Coord(%f,%f)", o_RealMarkPt1.x, o_RealMarkPt1.y); + gLogMgr->WriteDebugLog(logstr); + + o_RealMarkPt2 = m_RealMarkPt2 - DataCenter; + logstr.Format("RealMarkPt2 Coord(%f,%f)", o_RealMarkPt2.x, o_RealMarkPt2.y); + gLogMgr->WriteDebugLog(logstr); + + o_RealMarkPt3 = m_RealMarkPt3 - DataCenter; + logstr.Format("RealMarkPt3 Coord(%f,%f)", o_RealMarkPt3.x, o_RealMarkPt3.y); + gLogMgr->WriteDebugLog(logstr); + + double MaxDisDiff = 0; + + { + double TheoryDis = CalDistance(o_TheoryMarkPt1, o_TheoryMarkPt2); + logstr.Format("[Mark1&2ۼ]: [%f]", TheoryDis); + gLogMgr->WriteDebugLog(logstr); + + double RealDis = CalDistance(o_RealMarkPt1, o_RealMarkPt2); + logstr.Format("[Mark1&2ʵ]: [%f]", RealDis); + gLogMgr->WriteDebugLog(logstr); + + double DisDiff = abs(TheoryDis - RealDis); + logstr.Format(_T("[[[[Mark1&2]]]] = [%f]"), DisDiff); + gLogMgr->WriteDebugLog(logstr); + MaxDisDiff = DisDiff; + } + + { + double TheoryDis = CalDistance(o_TheoryMarkPt2, o_TheoryMarkPt3); + logstr.Format("[Mark2&3ۼ]: [%f]", TheoryDis); + gLogMgr->WriteDebugLog(logstr); + + double RealDis = CalDistance(o_RealMarkPt2, o_RealMarkPt3); + logstr.Format("[Mark2&3ʵ]: [%f]", RealDis); + gLogMgr->WriteDebugLog(logstr); + + double DisDiff = abs(TheoryDis - RealDis); + logstr.Format(_T("[[[[Mark2&3]]]] = [%f]"), DisDiff); + gLogMgr->WriteDebugLog(logstr); + MaxDisDiff = DisDiff > MaxDisDiff ? DisDiff : MaxDisDiff; + } + + if (MaxDisDiff > abs(gProductMgr->GetMaxMarkDisDiff())) + { + gTrackWorkFlow1.RadAlamOnOff(true);//ʾ + ResetRealMarkPt(); + CString LogStr("Mark Χ,λ!\r\n"); + logstr = LogStr + logstr; + AfxMessageBox(logstr); + gTrackWorkFlow1.RadAlamOnOff(false);//ʾ + CExceptionMsg Msg; + Msg.SetMsg(CString("")); + throw Msg;//׳쳣 + /* CExceptionMsg Msg; + Msg.SetMsg(LogStr); + throw Msg;*/ + } + + + + /*{ + Dbxy testCenter(0, 0); + Dbxy testStart(10, 0); + Dbxy testEnd(10 * 1.414213562373095 / 2, 10 * 1.414213562373095 / 2); + double testangle = CalAngle(testCenter, testStart, testEnd); + testangle = AngleTo360(testangle); + Mat warp_mat(2, 3, CV_32FC1); + Point2f center(0, 0); + warp_mat = getRotationMatrix2D(center, -testangle, 1); + warp_mat.convertTo(warp_mat, CV_32FC1);//תʱ,ĬCV_64FC1 + double retx = 10 * warp_mat.at(0, 0) + 0 * warp_mat.at(0, 1) + warp_mat.at(0, 2); + double rety = 10 * warp_mat.at(1, 0) + 0 * warp_mat.at(1, 1) + warp_mat.at(1, 2); + testangle *= -1; + }*/ + +/* + //ƫ + m_CatchMark1Oft = o_RealMarkPt1 - o_TheoryMarkPt1; + //Ƕ + double angle = CalAngle(o_RealMarkPt1, o_TheoryMarkPt2+ m_CatchMark1Oft, o_RealMarkPt2); + angle = AngleTo360(angle); + // + double scale = 1; + if (gCommonFlowMgr->IsbStretchDataToRealSize()) + { + double lenTheory = CalDistance(o_TheoryMarkPt1, o_TheoryMarkPt3); + double lenReal = CalDistance(o_RealMarkPt1, o_RealMarkPt3); + scale = lenReal / lenTheory; + } + + Mat warp_mat(2, 3, CV_32FC1); + Point2f center(o_RealMarkPt1.x, o_RealMarkPt1.y); + warp_mat = getRotationMatrix2D(center,-angle, scale); + warp_mat.convertTo(warp_mat, CV_32FC1);//תʱ,ĬCV_64FC1 +*/ + + + + + Point2f ThroryCoords[3]; + Point2f RealCoords[3]; + + Mat warp_mat(2, 3, CV_32FC1); + + ThroryCoords[1] = Point2f(o_TheoryMarkPt1.x, o_TheoryMarkPt1.y); + ThroryCoords[2] = Point2f(o_TheoryMarkPt2.x, o_TheoryMarkPt2.y); + ThroryCoords[0] = Point2f(o_TheoryMarkPt3.x, o_TheoryMarkPt3.y); + + RealCoords[1] = Point2f(o_RealMarkPt1.x, o_RealMarkPt1.y); + RealCoords[2] = Point2f(o_RealMarkPt2.x, o_RealMarkPt2.y); + RealCoords[0] = Point2f(o_RealMarkPt3.x, o_RealMarkPt3.y); + +/* + else + { + ThroryCoords[1] = Point2f(m_TheoryMarkPt1.x, m_TheoryMarkPt1.y); + ThroryCoords[2] = Point2f(m_TheoryMarkPt2.x, m_TheoryMarkPt2.y); + ThroryCoords[0] = Point2f(m_TheoryMarkPt3.x, m_TheoryMarkPt3.y); + + RealCoords[1] = Point2f(m_RealMarkPt1.x, m_RealMarkPt1.y); + RealCoords[2] = Point2f(m_RealMarkPt2.x, m_RealMarkPt2.y); + RealCoords[0] = Point2f(m_RealMarkPt3.x, m_RealMarkPt3.y); + }*/ + + + + //÷任 + warp_mat = getAffineTransform(ThroryCoords, RealCoords); + warp_mat.convertTo(warp_mat, CV_32FC1);//תʱ,ĬCV_64FC1 + + //ȡ6任 + m_p00 = warp_mat.at(0, 0); + m_p01 = warp_mat.at(0, 1); + m_p02 = warp_mat.at(0, 2);//m_CatchMark1Oft.x;// + + m_p10 = warp_mat.at(1, 0); + m_p11 = warp_mat.at(1, 1); + m_p12 = warp_mat.at(1, 2);//m_CatchMark1Oft.y;// + + +} +//ʵݵƫƺתֵ +void CProduct::CalTheoryToRealPar() +{ + gLogMgr->WriteDebugLog("func : CalTheoryToRealPar"); + + //ԵһԵƫ + m_Offset.x = m_RealMarkPt1.x - m_TheoryMarkPt1.x; + m_Offset.y = m_RealMarkPt1.y - m_TheoryMarkPt1.y; + //õƫƺĵڶ(ֵ) + Dbxy OffsetPt2 = m_TheoryMarkPt2; + OffsetPt2.x += m_Offset.x; + OffsetPt2.y += m_Offset.y; + + //⴦(mark һֱʱĽǶȼ) + if(IsTwoDbEqual(m_RealMarkPt1.x,OffsetPt2.x)) + { + OffsetPt2.x += 0.001; + } + if(IsTwoDbEqual(m_RealMarkPt1.y,OffsetPt2.y)) + { + OffsetPt2.y += 0.001; + } + //ԵڶתԵĽǶ + m_RotateAng = CalAngle(m_RealMarkPt1,OffsetPt2,m_RealMarkPt2); + m_RotateAng *= -1; + double RotateAng = AngleTo360(m_RotateAng); + + //gLogMgr->SetbWriteDebugLog(true); + CString LogStr; + LogStr.Format(_T("[m_Offset.x] = [%f] ,[m_Offset.y] = [%f]"),m_Offset.x,m_Offset.y); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[RotateAng] = [%f]"),m_RotateAng);//Ƚ + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[RotateAng360] = [%f]"),RotateAng); + gLogMgr->WriteDebugLog(LogStr); + //gLogMgr->SetbWriteDebugLog(false); + + //ͨжʵʲmark1 mark2 ľץȡ + double TheoryDis = CalDistance(m_TheoryMarkPt1,m_TheoryMarkPt2);//۾ + double RealDis = CalDistance(m_RealMarkPt1,m_RealMarkPt2);//ʵʾ + double DisDiff = abs(TheoryDis - RealDis); + LogStr.Format(_T("[Mark ] = [%f]"),DisDiff); + gLogMgr->WriteDebugLog(LogStr); + if(DisDiff > abs(gProductMgr->GetMaxMarkDisDiff())) + { + gTrackWorkFlow1.RadAlamOnOff(true);//ʾ + ResetRealMarkPt(); + CString LogStr("Mark Χ,λ!"); + CExceptionMsg Msg; + Msg.SetMsg(LogStr); + throw Msg; + } +} +//ʹĬƫ +void CProduct::UseDefualtOffset() +{ + m_Offset.x = m_Offset.y = 0; + m_RotateAng = 0; +} +#endif +#if 1 +//ȡתǶ(360 Ƚ) +double CProduct::GetRotateAng() +{ + return AngleTo360(m_RotateAng); +} +//ʵʳߴ +void CProduct::CalRealStretchPar() +{ + Dbxy ProductScale = CalRealProductScale();// + DbRect AllObjRect = gObjComponentMgr->GetAllObjRect2(); + SObjOperatePar &StretchParX = m_StretchParX; + SObjOperatePar &StretchParY = m_StretchParY; + //X + { + StretchParX.OpType = _OP_STRETCH; + StretchParX.BasePt = AllObjRect.GetCenterPt(); + StretchParX.OldSize = AllObjRect.Width(); + StretchParX.Diff = (ProductScale.x-1)*StretchParX.OldSize; + StretchParX.NewSize = StretchParX.OldSize + StretchParX.Diff; + StretchParX.xy = _X; + } + //Y + { + StretchParY.OpType = _OP_STRETCH; + StretchParY.BasePt = AllObjRect.GetCenterPt(); + StretchParY.OldSize = AllObjRect.Height(); + StretchParY.Diff = (ProductScale.y-1)*StretchParY.OldSize; + StretchParY.NewSize = StretchParY.OldSize + StretchParY.Diff; + StretchParY.xy = _Y; + } +} + +//תΪʵ +void CProduct::TheoryDataToRealData(vector &vec,Dbxy &Offset) +{ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + auto & it = (*iter); + it = TheoryPtToRealPt(it); + it = it - Offset; + } +} + +void CProduct::TheoryDataToRealData0(vector& vec, Dbxy & AreaCenter, Dbxy CutAdjust) +{ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for (;iter != iter_end;iter++) + { + auto & it = (*iter); + it = TheoryPtToRealPt(it); + it = it - AreaCenter; + // + Dbxy Scale = gProgram_SZ_XL->GetJig1Scale(); + if (gCameraHawkvis->GetCamIndex() == 1) + { + Scale = gProgram_SZ_XL->GetJig3Scale(); + } + it.x *= Scale.x; + it.y *= Scale.y; + it = it + CutAdjust; + } +} + +void CProduct::TheoryDataToRealData0(vector>& vec, Dbxy & AreaCenter, Dbxy CutAdjust) +{ + gLogMgr->WriteDebugLog("CProduct::TheoryDataToRealData"); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for (;iter != iter_end;iter++) + { + TheoryDataToRealData0(*iter, AreaCenter, CutAdjust); + } +} + + +//תΪʵ +void CProduct::TheoryDataToRealData(vector &vec, Dbxy &AreaCenter, Dbxy CutAdjust) +{ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + + Dbxy DataCenter = gObjComponentMgr->GetAllObjCenterPt(); + for (;iter != iter_end;iter++) + { + //(*iter) = (*iter) - DataCenter; //ƶ(0,0)Ϊԭ + + /* //ץȡƫ(ͼ) + auto x = (*iter).x+m_CatchMark1Oft.x; + auto y = (*iter).y + m_CatchMark1Oft.y;*/ + + auto x = (*iter).x; + auto y = (*iter).y; + //任 + double retx = m_p00*x + m_p01*y + m_p02; + double rety = m_p10*x + m_p11*y + m_p12; + + //ǿƵ΢ת + /*double retx2 = m_rp00*retx + m_rp01*rety + m_rp02; + double rety2 = m_rp10*retx + m_rp11*rety + m_rp12;*/ + + (*iter).x = retx;//2; + (*iter).y = rety;//2; + + auto temp = AreaCenter;//-DataCenter;//Ϊԭ + (*iter) = (*iter) - temp; + + //(*iter) = (*iter) - AreaCenter; + + // + Dbxy Scale = gProgram_SZ_XL->GetJig1Scale(); + if (gCameraHawkvis->GetCamIndex() == 1) + { + Scale = gProgram_SZ_XL->GetJig3Scale(); + } + (*iter).x *= Scale.x; + (*iter).y *= Scale.y; + //ƫƵ + (*iter).x +=CutAdjust.x; + (*iter).y += CutAdjust.y; + + } +} +void CProduct::ResetAffinePars() +{ + m_p00 = 1; + m_p01 = 0; + m_p02 = 0; + + m_p10 = 0; + m_p11 = 1; + m_p12 = 0; +} +//ȡʵʲƷijߴ +Dbxy CProduct::CalRealProductScale() +{ + Dbxy ProductScale; + //mark xy ֿ + if(m_bHasMarkPt3)//3 + { + ProductScale.x = CalRealProductScaleExt(m_TheoryMarkPt1,m_TheoryMarkPt2,m_RealMarkPt1,m_RealMarkPt2); + if(IsTwoDbEqual(m_TheoryMarkPt1.x,m_TheoryMarkPt3.x))//mark1 mark3 + { + ProductScale.y = CalRealProductScaleExt(m_TheoryMarkPt1,m_TheoryMarkPt3,m_RealMarkPt1,m_RealMarkPt3); + } + else + { + ProductScale.y = CalRealProductScaleExt(m_TheoryMarkPt2,m_TheoryMarkPt3,m_RealMarkPt2,m_RealMarkPt3); + } + } + else//mark + { + double Scale = CalRealProductScaleExt(m_TheoryMarkPt1,m_TheoryMarkPt2,m_RealMarkPt1,m_RealMarkPt2); + ProductScale.x = ProductScale.y = Scale; + } + CString LogStr; + LogStr.Format(_T("[x] = [%f]"),ProductScale.x); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[y] = [%f]"),ProductScale.y); + gLogMgr->WriteDebugLog(LogStr); + + return ProductScale; +} +double CProduct::CalRealProductScaleExt(Dbxy TheoryMarkPt1,Dbxy TheoryMarkPt2,Dbxy RealMarkPt1,Dbxy RealMarkPt2) +{ + double TheoryMarkDis = CalDistance(TheoryMarkPt1,TheoryMarkPt2); + double RealMarkDis = CalDistance(RealMarkPt1,RealMarkPt2); + double Diff = (RealMarkDis-TheoryMarkDis); + double ProductScale = RealMarkDis/TheoryMarkDis; + CString LogStr; + LogStr.Format(_T("[ֵ] = [%f]"),TheoryMarkDis); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[ʵֵ] = [%f]"),RealMarkDis); + gLogMgr->WriteDebugLog(LogStr); + LogStr.Format(_T("[ߴ] = [%f]"),Diff); + gLogMgr->WriteDebugLog(LogStr); + return ProductScale; +} +// +//BasePt ׼ +//Size ǰijߴ +//Diff Ǿɳߴ³ߴIJ +void CProduct::StretchPt(Dbxy &Pt,SObjOperatePar &Par) +{ + if(Par.Diff == 0) + return; + if(Par.xy == _X) + { + Pt.x = Pt.x+Par.Diff*((Pt.x-Par.BasePt.x)/Par.OldSize); + } + else + { + Pt.y = Pt.y+Par.Diff*((Pt.y-Par.BasePt.y)/Par.OldSize); + } +} + +//ץȡmark (CenterPtĵ) +void CProduct::StretchDataToRealSize(vector> &vec) +{ + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + int size = (*iter).size(); + for(int k=0;k> &SrcVec,vector> &DecVec,Dbxy &Offset) +{ + gLogMgr->WriteDebugLog("CProduct::TheoryDataToRealData"); + int size1 = SrcVec.size(); + int size2 = DecVec.size(); + if(size1!=size2) + { + gLogMgr->WriteDebugLog("SrcVec.size() != DecVec.size()"); + return; + } + for(int k=0;k &SrcVec,vector &DecVec,Dbxy &Offset) +{ + int size1 = SrcVec.size(); + int size2 = DecVec.size(); + if(size1!=size2) + { + gLogMgr->WriteDebugLog("SrcVec.size() != DecVec.size()"); + return; + } + for(int k=0;k> &vec,Dbxy &Offset) +{ + gLogMgr->WriteDebugLog("CProduct::TheoryDataToRealData"); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + TheoryDataToRealData(*iter,Offset); + } +} + + +//תΪʵ +void CProduct::TheoryDataToRealData(vector> &vec, Dbxy &AreaCenter, Dbxy CutAdjust) +{ + gLogMgr->WriteDebugLog("CProduct::TheoryDataToRealData"); + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for (;iter != iter_end;iter++) + { + TheoryDataToRealData(*iter, AreaCenter,CutAdjust); + } +} +#endif diff --git a/LaiPuLaser/Product.h b/LaiPuLaser/Product.h new file mode 100644 index 0000000..fb6300b --- /dev/null +++ b/LaiPuLaser/Product.h @@ -0,0 +1,114 @@ +#pragma once +#include "GlobalDefine.h" +#include "LabVecRang.h" + + +//Ʒ +class CProduct//:public CObject +{ + friend class CProductMgr; + // DECLARE_SERIAL(CProduct) +public: + CProduct(void); + ~CProduct(void); + void Draw(CDC* pDC); + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void SetBasePt(Dbxy pt){m_BasePt = pt;}; + Dbxy &GetProductBasePt(){return m_BasePt;}; + Dbxy &GetOffset(){return m_Offset;}; + double GetRotateAng(); + + bool &IsUsed(){return m_bUsed;}; + void SetUsed(bool b){m_bUsed = b;}; + void GetMarkCoord(Dbxy &mark1,Dbxy &mark2); + void SetRealMarkPt(Dbxy pt); + void ResetRealMarkPt(); + void SetTheoryMarkPt(Dbxy pt1,Dbxy pt2); + void SetbHasMarkPt3(bool b){m_bHasMarkPt3 = b;}; + void SetTheoryMark3Pt(Dbxy pt){m_TheoryMarkPt3 = pt;}; + void SetRealMark3Pt(Dbxy pt){m_RealMarkPt3 = pt;}; + Dbxy TheoryPtToRealPt(Dbxy TheoryMarkPt); + void StretchDataToRealSize(vector> &vec); + + void TheoryDataToRealData(vector> &vec, Dbxy &Offset); + void TheoryDataToRealData(vector &vec, Dbxy &Offset); + + void TheoryDataToRealData0(vector& vec, Dbxy & AreaCenter, Dbxy CutAdjust);//㷨,б仯 + void TheoryDataToRealData0(vector>& vec, Dbxy & AreaCenter, Dbxy CutAdjust);//㷨,б仯 + + + void TheoryDataToRealData(vector& vec, Dbxy & AreaCenter, Dbxy CutAdjust); + void TheoryDataToRealData(vector>& vec, Dbxy & AreaCenter, Dbxy CutAdjust); + void ResetAffinePars();//÷任 + + void TheoryDataToRealData(vector> &SrcVec,vector> &DecVec,Dbxy &Offset); + void TheoryDataToRealData(vector &SrcVec,vector &DecVec,Dbxy &Offset); + bool IsSetRealMarkPt1(); + bool IsSetRealMarkPt2(); + void UseDefualtOffset(); + bool IsMarkReady(); + bool IsbLastOne(){return m_bLastOne;}; + void SetbLastOne(bool b){m_bLastOne = b;}; + void SetbNewAddProduct(bool bNew) { m_bNewAddProduct = bNew; };//ǷǸIJƷ + bool IsbNewAddProduct() { return m_bNewAddProduct; };//ѯǷǸIJƷ +private: + void CalAffinePars(); + void CalTheoryToRealPar(); + Dbxy CalRealProductScale(); + void StretchPt(Dbxy &Pt,SObjOperatePar &Par); + void CalRealStretchPar(); + double CalRealProductScaleExt(Dbxy TheoryMarkPt1,Dbxy TheoryMarkPt2,Dbxy RealMarkPt1,Dbxy RealMarkPt2); +private: + + Dbxy m_BasePt;//Ļ׼ + bool m_bUsed;//Ƿʹ + bool m_bLastOne;//ǷΪһ + bool m_bHasMarkPt3;//Ƿmark3 + bool m_bNewAddProduct = false;//ǷǸǿƷ(201910) +public: + //ڶλλ--------------------------- + Dbxy m_TheoryMarkPt1;//(layer е) mm + Dbxy m_TheoryMarkPt2; + Dbxy m_TheoryMarkPt3; + //ccd ץȡʵֵ------------------------------------ + Dbxy m_RealMarkPt1;//ʵ(ڼĵ) mm + Dbxy m_RealMarkPt2; + Dbxy m_RealMarkPt3; +public: + Dbxy o_TheoryMarkPt1;//(ƶʱ) mm + Dbxy o_TheoryMarkPt2; + Dbxy o_TheoryMarkPt3; + //ccd ץȡʵֵ------------------------------------ + Dbxy o_RealMarkPt1;//ʵ(ƶʱ) mm + Dbxy o_RealMarkPt2; + Dbxy o_RealMarkPt3; + //ץȡõMark1ƫ + Dbxy m_CatchMark1Oft = Dbxy(0, 0); + //------------------------------------ + float m_p00=1; + float m_p01=0; + float m_p02=0; + + float m_p10=0; + float m_p11=1; + float m_p12=0; + //ǿƣ΢תǶȵķӦƽֱ̨------------------------------------ + float m_rp00 = 1; + float m_rp01 = 0; + float m_rp02 = 0; + + float m_rp10 = 0; + float m_rp11 = 1; + float m_rp12 = 0; +public: + //ʵƫת--------------------------------- + Dbxy m_Offset;//ӳΪƽ̨ƫ + double m_RotateAng;//ӳΪƽ̨תǶ(н) + double m_MaxRotateAng;//תǶ(360 Ƚ)תǶȳֵʱд,Ч + + SObjOperatePar m_StretchParX;//X + SObjOperatePar m_StretchParY;//Y + //virtual void Serialize(CArchive& ar); +}; + diff --git a/LaiPuLaser/ProductMgr.cpp b/LaiPuLaser/ProductMgr.cpp new file mode 100644 index 0000000..2df2910 --- /dev/null +++ b/LaiPuLaser/ProductMgr.cpp @@ -0,0 +1,794 @@ +#include "StdAfx.h" +#include "ProductMgr.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "GlobalFunction.h" +#include "CStringFuc.h" +#include "LogMgr.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "ObjComponentMgr.h" +#include "PlatformXY.h" +#include "WorkFileMgr.h" +#include "ObjComponentMgr.h" +#include "Motor.h" +#include "Layer.h" +#include "CommandMgr.h" +#include "CameraHawkvis.h" +#include "MsgBox.h" +#include "ProgramCutMgr.h" + +#define PRODUCT_STR _T("") + +CProductMgr *gProductMgr = new CProductMgr; +CProductMgr::CProductMgr(void) +{ + m_UseProductCnt = 1;//ʹù + m_CurProductIdx = -1;//ǰĹֵ + m_CurWorkTimes = 0;//ӹ + m_TotalWorkTimes = 0;//ܼӹ + m_FocalAdjustCnt = 0;//佹 + m_FocalAdjustDis = 0;//佹mm + m_BaseFocAdjustDis = 0;//׼mm + m_AngleAdjust = 0;//Ƕ΢ֵ + m_BasePtDir = _DIR_M;//Ʒ׼ķ + m_MaxMarkDisDiff = 0.3;//mark ֮ʵʾ۾֮(ʶ) +} +CProductMgr::~CProductMgr(void) +{ +} +#if 1//дmodule ĺ +void CProductMgr::Ini() +{ + ResetProductVec(m_UseProductCnt); + GetFrame()->m_DlgCutDeviceCtrl.Update(); +} +void CProductMgr::ResetProductVec(int cnt) +{ + m_ProductVec.clear(); + for(int i=0;iCheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_UseProductCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_UseProductCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("ǰоֹ֧,޸ĺЧ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_UseProductCnt, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_ProductSize_w");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProductSize.w); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("ǰо߹ijߴmm"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductSize.w, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_ProductSize_h");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ProductSize.h); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("߶"); + Description = _T("ǰо߹ijߴ߶mm"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductSize.h, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_TotalWorkTimes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_TotalWorkTimes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ܼӹ"); + Description = _T("ǰܹļӹ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_TotalWorkTimes, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_AngleAdjust");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_AngleAdjust); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ƕ΢"); + Description = _T("ƷƫƽǶȵ΢ֵ(ֵ)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AngleAdjust, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_MaxMarkDisDiff");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MaxMarkDisDiff); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("mark"); + Description = _T("mark ֮ʵʾ۾֮(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxMarkDisDiff, Description); + //p->AllowEdit(FALSE);//޸ + pGroup->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_BaseFocAdjustDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_BaseFocAdjustDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("׼"); + Description = _T("豸ʼ󽹵ĵ(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_BaseFocAdjustDis, Description); + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_FocalAdjustCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FocalAdjustCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("佹"); + Description = _T("ڱȽϺIJƷ,ӹһε࣬ٴμӹ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustCnt, Description); + p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_FocalAdjustDis");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_FocalAdjustDis); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("佹"); + Description = _T("Ӧ佹ÿνľ,Ϊ,Ϊ(λ:mm)"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustDis, Description); + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + pGroup->AddSubItem(pGroup1); + } + { + PropertyName = _T("۶λ"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = "m_TheoryMarkPt1_x";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_TheoryMarkPt1.x)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("mark1X"); + Description = _T("mark 1X(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt1.x, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_TheoryMarkPt1_y";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_TheoryMarkPt1.y)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("mark1Y"); + Description = _T("mark 1Y(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt1.y, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_TheoryMarkPt2_x";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_TheoryMarkPt2.x)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("mark2X"); + Description = _T("mark 2X(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt2.x, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_TheoryMarkPt2_y";// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(m_TheoryMarkPt2.y)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("mark2Y"); + Description = _T("mark 2Y(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt2.y, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + + int size = m_ProductVec.size(); + for(int i=0;iSetpVal((void*)&(m_ProductVec[i].m_bUsed)); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("׼X"); + Description = _T("ƽ̨ԭX (mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_ProductVec[i].m_bUsed, Description); + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + Dbxy &BasePt = m_ProductVec[i].GetProductBasePt(); + { + //Աӳ + Name = "m_ProductVec_X" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(BasePt.x)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("׼X"); + Description = _T("ƽ̨ԭX (mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)BasePt.x, Description); + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_ProductVec_Y" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(BasePt.y)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("׼Y"); + Description = _T("ƽ̨ԭY (mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)BasePt.y, Description); + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + Dbxy &Offset = m_ProductVec[i].GetOffset(); + { + //Աӳ + Name = "m_Offset_X" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(Offset.x)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("ƫX"); + Description = _T("ʵʵƫλX (mm)(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Offset.x, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + { + //Աӳ + Name = "m_Offset_Y" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(Offset.y)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("ƫY"); + Description = _T("ʵʵƫλY (mm)(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Offset.y, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + double Angle = m_ProductVec[i].GetRotateAng(); + { + //Աӳ + Name = "m_Angle_Y" + Idx;// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&(Angle)); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + //ʾ + PropertyName = _T("תǶ"); + Description = _T("ʵʵתǶ(Զ)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Angle, Description); + p1->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p1); + PropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } + return pGroup; +} +void CProductMgr::InsertProduct(CMFCPropertyGridProperty* p) +{ + for(int i=0;iAddOption(str); + } +} +void CProductMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CProductMgr]------------------------------------------------"< &LabVec) +{ + //ȡҲҪ˳ + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.x)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.y)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.x)); + LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.y)); + LabVec.push_back(CLab(LAB_NULL,m_BaseFocAdjustDis)); + LabVec.push_back(CLab(LAB_NULL,m_FocalAdjustCnt)); + LabVec.push_back(CLab(LAB_NULL,m_FocalAdjustDis)); + LabVec.push_back(CLab(LAB_NULL,m_UseProductCnt)); + for(int i=0;i LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_PRODUCT_START,LAB_PRODUCT_END); + //ÿģ + if(!LabVecRangVec.empty()) + { + size_t size = LabVecRangVec.size(); + for(size_t i=0;iGetCatchNodeSize()); + DrawCrossX(pDC,gDraw->GetMarkPointPen(),Rect); + gDraw->DrawTxt(pDC,str,pt); + } +} +void CProductMgr::Draw(CDC* pDC) +{ + +} +DbRect CProductMgr::GetRect(Dbxy pt) +{ + DbRect rect; + switch(m_BasePtDir) + { + case _DIR_M: + rect.L = pt.x - m_ProductSize.w/2; + rect.T = pt.y + m_ProductSize.h/2; + rect.R = pt.x + m_ProductSize.w/2; + rect.B = pt.y - m_ProductSize.h/2; + break; + case _DIR_LT: + rect.L = pt.x; + rect.T = pt.y; + rect.R = pt.x + m_ProductSize.w; + rect.B = pt.y - m_ProductSize.h; + break; + case _DIR_LB: + rect.L = pt.x; + rect.B = pt.y; + rect.R = pt.x + m_ProductSize.w; + rect.T = pt.y + m_ProductSize.h; + break; + case _DIR_RT: + rect.R = pt.x; + rect.T = pt.y; + rect.L = pt.x - m_ProductSize.w; + rect.B = pt.y - m_ProductSize.h; + break; + case _DIR_RB: + rect.R = pt.x; + rect.B = pt.y; + rect.L = pt.x - m_ProductSize.w; + rect.T = pt.y + m_ProductSize.h; + break; + default: + break; + } + return rect; +} +#endif +#if 1 +//۶λ +void CProductMgr::ReSetTheoryMarkPt() +{ + m_TheoryMarkPt1.x = 0; + m_TheoryMarkPt1.y = 0; + m_TheoryMarkPt2.x = 0; + m_TheoryMarkPt2.y = 0; + + for(int i=0;ipt2.x)//֤λ1 + { + SwapTwoPt(pt1,pt2); + } + + m_TheoryMarkPt1 = pt1; + m_TheoryMarkPt2 = pt2; + + for(int i=0;i> &vec,Dbxy &Offset) +{ + vector>::iterator iter = vec.begin(); + vector>::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + TheoryDataToRealData(*iter,Offset); + } +} +//תΪʵ +void CProductMgr::TheoryDataToRealData(vector &vec,Dbxy &Offset) +{ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + (*iter) = TheoryPtToRealPt((*iter)); + (*iter).x += Offset.x; + (*iter).y += Offset.y; + } +} +#endif +//ȡǰʹõproduct +int CProductMgr::GetUsedProductCnt() +{ + int cnt = 0; + for(int i=0;i::iterator iter = m_ProductVec.begin(); + vector::iterator iter_end = m_ProductVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).ResetRealMarkPt(); + } +} +//ӹ +void CProductMgr::WorkTimesInc() +{ + m_CurWorkTimes++;//ӹ + m_TotalWorkTimes++;//ܼӹ + +} +//ƶobj оߵĻ׼ +void CProductMgr::MoveObjToBasePt(Dbxy BasePt) +{ + int size = m_ProductVec.size(); + if(size<=0) + return; + + //ȡobj rect + CLayer &layer = GetLayerInstance(); + CObjContainer &ObjContainer = layer.GetObjContainer(); + ObjContainer.SelAllObj(); + DbRect rect = ObjContainer.GetSelObjRect(); + + //ƶҪַ + Dbxy MovePt; + switch(m_BasePtDir) + { + case _DIR_M: + MovePt.x = (rect.R+rect.L)/2; + MovePt.y = (rect.T+rect.B)/2; + break; + case _DIR_LT: + MovePt.x = rect.L; + MovePt.y = rect.T; + break; + case _DIR_LB: + MovePt.x = rect.L; + MovePt.y = rect.B; + break; + case _DIR_RT: + MovePt.x = rect.R; + MovePt.y = rect.T; + break; + case _DIR_RB: + MovePt.x = rect.R; + MovePt.y = rect.B; + break; + default: + break; + } + + Dbxy Offset; + Offset.x = BasePt.x - MovePt.x; + Offset.y = BasePt.y - MovePt.y; + //ƶ + layer.OnMove(Offset.x,Offset.y,true); + gObjComponentMgr->OnMove(Offset); + + CString s; + s.Format(_T("Move Obj [Offset_x]= %f,[Offset_y]= %f"),Offset.x,Offset.y); + gLogMgr->WriteDebugLog(s); + + gCommandMgr.DelAllCmd();//ɾָ +} +//ǰproduct ֵ +int CProductMgr::GetCurProductIdx() +{ + int size = m_ProductVec.size(); + if(m_CurProductIdx>=0 && m_CurProductIdxWriteDebugLog("CProductMgr::UpdateProductState"); + int size = m_ProductVec.size(); + int LastIdx = -1; + for(int k=0;k=0) + m_ProductVec[LastIdx].SetbLastOne(true); +} +//ȡĬϵĻλ +Dbxy CProductMgr::GetDefualtBasePt() +{ + Dbxy pt; + switch(m_BasePtDir) + { + case _DIR_M: + pt.x = (m_DefualtRect.R+m_DefualtRect.L)/2; + pt.y = (m_DefualtRect.T+m_DefualtRect.B)/2; + break; + case _DIR_LT: + pt.x = m_DefualtRect.L; + pt.y = m_DefualtRect.T; + break; + case _DIR_LB: + pt.x = m_DefualtRect.L; + pt.y = m_DefualtRect.B; + break; + case _DIR_RT: + pt.x = m_DefualtRect.R; + pt.y = m_DefualtRect.T; + break; + case _DIR_RB: + pt.x = m_DefualtRect.R; + pt.y = m_DefualtRect.B; + break; + default: + break; + } + return pt; +} +#if 1 +//ͨproductĵĬץȡƫ +//mark 1ƶCCD ,Ȼ +void CProductMgr::SetProductCenterPt() +{ + //ǰʵʵֵ + Dbxy CurPlatCoord = gPlatformXY->GetCoord(); + + CProduct &Product = m_ProductVec[0]; + bool bETrackType_Track_2 = (CurPlatCoord.y>200);//X2 ϵ + //ƶǰproduct Ļ׼ + Dbxy CurBasePt = Product.GetProductBasePt(); + if(bETrackType_Track_2) + { + Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset(); + CurBasePt.x += Track2Offset.x; + CurBasePt.y += Track2Offset.y; + } + gProgramCutMgr->MoveObjData(CurBasePt); + + Dbxy MarkPt1; + Dbxy MarkPt2; + if(gObjComponentMgr->GetTwoMarkPt(MarkPt1,MarkPt2)==false) + { + CMsgBox MsgBox; + MsgBox.Show("ûָλ!"); + return; + } + + CCamera &Camera = *gCameraHawkvis; + Dbxy CameraPt = Camera.GetCenterPt(); + + Dbxy PlatCoord;//MarkPt1 ƵCamera ֵ + PlatCoord.x = CameraPt.x - MarkPt1.x; + PlatCoord.y = MarkPt1.y - CameraPt.y; + + Dbxy Offset;//ƶƫ + Offset.x = PlatCoord.x - CurPlatCoord.x; + Offset.y = CurPlatCoord.y - PlatCoord.y; + + CurBasePt.x += Offset.x; + CurBasePt.y += Offset.y; + + if(bETrackType_Track_2)//1 + { + Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset(); + CurBasePt.x -= Track2Offset.x; + CurBasePt.y -= Track2Offset.y; + } + + Product.SetBasePt(CurBasePt); + + gDevicePropertieMgr.SaveAllPropertie(); + + CMsgBox MsgBox; + MsgBox.Show("λõ!"); +} + +#endif \ No newline at end of file diff --git a/LaiPuLaser/ProductMgr.h b/LaiPuLaser/ProductMgr.h new file mode 100644 index 0000000..e178197 --- /dev/null +++ b/LaiPuLaser/ProductMgr.h @@ -0,0 +1,80 @@ +#pragma once +#include "module.h" +#include "Product.h" +#include "Subject.h" +#include "EnumDirection.h" + + +//Ʒ(һָһԲ֮) +class CProductMgr :public CModule,public CSubject +{ +public: + CProductMgr(void); + ~CProductMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _PRODUCT_PROP;}; + virtual void Ini(); + virtual void Draw(CDC* pDC); + virtual void WriteWorkFileExt(vector &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + + vector &GetProductVec(){return m_ProductVec;}; + CProduct &GetProduct(int idx){return m_ProductVec[idx];}; + int GetProductCnt(){return m_ProductVec.size();}; + void ReSetTheoryMarkPt(); + void SetTheoryMarkPt(Dbxy pt1,Dbxy pt2); + Dbxy TheoryPtToRealPt(Dbxy TheoryMarkPt); + void TheoryDataToRealData(vector> &vec,Dbxy &Offset); + void TheoryDataToRealData(vector &vec,Dbxy &Offset); + int GetCurProductIdx(); + void CurProductIdxInc(){m_CurProductIdx++;}; + void SetCurProductIdx(int idx){m_CurProductIdx = idx;}; + int GetUsedProductCnt(); + void SetFocalAdjustCnt(int cnt){m_FocalAdjustCnt = cnt;}; + void SetBaseFocAdjustDis(double Dis){m_BaseFocAdjustDis = Dis;}; + void SetFocalAdjustDis(double Dis){m_FocalAdjustDis = Dis;}; + int GetFocalAdjustCnt(){return m_FocalAdjustCnt;}; + double GetBaseFocAdjustDis(){return m_BaseFocAdjustDis;}; + double GetFocalAdjustDis(){return m_FocalAdjustDis;}; + void ResetRealMarkPt(); + void WorkTimesInc(); + int GetCurWorkTimes(){return m_CurWorkTimes;}; + int GetTotalWorkTimes(){return m_TotalWorkTimes;}; + double GetAngleAdjust(){return m_AngleAdjust;}; + void MoveObjToBasePt(Dbxy BasePt); + void UpdateProductState(); + void SetDefualtRect(DbRect r){m_DefualtRect = r;}; + Dbxy GetDefualtBasePt(); + void SetProductCenterPt(); + double GetMaxMarkDisDiff(){return m_MaxMarkDisDiff;}; + double GetAdjustAngle() { return m_AngleAdjust; };//ȡǶ +private: + void InsertProduct(CMFCPropertyGridProperty* p); + void DrawMarkPoint(CDC* pDC,Dbxy pt,CString str); + void ResetProductVec(int cnt); + DbRect GetRect(Dbxy pt); +private: + int m_UseProductCnt;//ʹù + int m_CurProductIdx;//ǰĹֵ + vector m_ProductVec;// + DbSize m_ProductSize;//ÿijߴ(ʾ) + + DIRECTION m_BasePtDir;//Ʒ׼ķ + int m_CurWorkTimes;//ǰӹ + int m_TotalWorkTimes;//ܼӹ + double m_AngleAdjust;//Ƕ΢ֵ(Ƚ) + double m_MaxMarkDisDiff;//mark ֮ʵʾ۾֮(ʶ) + + double m_BaseFocAdjustDis;//׼mm (ͲƷĺ) + int m_FocalAdjustCnt;//佹 + double m_FocalAdjustDis;//佹mm + + DbRect m_DefualtRect;//Ĭλ + //ڶλλ--------------------------- + Dbxy m_TheoryMarkPt1;//(layer е) + Dbxy m_TheoryMarkPt2; +}; + +extern CProductMgr *gProductMgr; + diff --git a/LaiPuLaser/ProgramCutMgr.cpp b/LaiPuLaser/ProgramCutMgr.cpp new file mode 100644 index 0000000..1979ddd --- /dev/null +++ b/LaiPuLaser/ProgramCutMgr.cpp @@ -0,0 +1,286 @@ +#include "StdAfx.h" +#include "ProgramCutMgr.h" +#include "Layer.h" +#include "DxfReadMgr.h" +#include "GlobalFunction.h" +#include "ObjComponentMgr.h" +#include "ProductMgr.h" +#include "CommonFlowMgr.h" +#include "CameraHawkvis.h" +#include "MsgBox.h" +#include "PropertieMgr.h" +#include "WorkTime.h" +#include "WorkRecord.h" +#include "WorkFileMgr.h" +#include "CommandMgr.h" +#include "EasyOperationMgr.h" +#include "FileMgr.h" +#include "LaserDeviceMgr.h" +#include "MarkParMgr.h" +#include "CStringFuc.h" +#include "LogMgr.h" +#include "ProductMgr.h" +#include "ObjSortMgr.h" + + +#define PRODUCT_CNT 1 // + +CProgramCutMgr *gProgramCutMgr = new CProgramCutMgr; +CProgramCutMgr::CProgramCutMgr(void) +{ +} +CProgramCutMgr::~CProgramCutMgr(void) +{ +} +void CProgramCutMgr::Ini() +{ + GetFrame()->m_DlgCutDeviceCtrl.SetPar(); +} +#if 1 +//򿪼ӹļ(bOpenDxf Ϊfalse ʱԲ´dxf) +void CProgramCutMgr::OpenWorkFile(bool bDxf,bool bOpenDxf) +{ + //öλ + gProductMgr->ResetRealMarkPt(); + //ɾobj Ԫ + gObjComponentMgr->SetShapeLockState(false);//󶨵obj + gObjComponentMgr->DelAll(); + //ɾͼζ + CLayer &Layer = GetLayerInstance(); + if(bOpenDxf) + { + Layer.DelAllObj(); + } + CObjContainer &ObjContainer = Layer.GetObjContainer(); + if(bDxf) + { + //ȡdxf ļ,layer obj + if(bOpenDxf) + { + gDxfReadMgr->OpenDxfFileDlg(0); + } + } + else//mak ļ + { + OpenMarkFile(); + } + Layer.NotSelAllObj(); + gProductMgr->SetDefualtRect(ObjContainer.GetObjRect(false)); + + //obj + CObjSortMgr ObjSortMgr; + ObjSortMgr.SortObjByDir(_DIR_R); + + //ͨlayer 󴴽obj + gObjComponentMgr->CreatObjByLayerObj(); + //obj зλmark λ + gObjComponentMgr->AnalyseMarkPt(); + + gCommandMgr.DelAllCmd();//ɾָ +} +//ƶӹ +void CProgramCutMgr::MoveObjData(Dbxy BasePt) +{ + gLogMgr->WriteDebugLog("CProgramCutMgr::MoveObjData"); + //öλ + gProductMgr->ResetRealMarkPt(); + //Ƚobj ״̬ + gObjComponentMgr->SetShapeLockState(false); + //layer objƶǰproduct Ļ׼ + gProductMgr->MoveObjToBasePt(BasePt); + CLayer &Layer = GetLayerInstance(); + CObjContainer ObjContainer = Layer.GetObjContainer(); + ObjContainer.NotSelAllObj(); + gEasyOperationMgr->Refresh(); + //ɾָ + gCommandMgr.DelAllCmd(); + // + gObjComponentMgr->SetShapeLockState(true); + //GetCurViewPtr()->RefreshView(); +} +void CProgramCutMgr::OpenMarkFile() +{ + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnOpenFile(); + gDrawPropertieMgr.SaveAllPropertie(); + gDevicePropertieMgr.SaveAllPropertie(); +} +void CProgramCutMgr::SaveMarkFile() +{ + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnSaveFileAs(); +} +//ͨͼֱӱΪmak (ҪΪֱӵdxf ļ) +void CProgramCutMgr::SaveMarkFile2() +{ + OpenWorkFile(true,false); + CWorkFileMgr WorkFileMgr; + WorkFileMgr.OnSaveFileAs(); +} +#endif +#if 1 +//ʼ豸 +bool CProgramCutMgr::InitDevice() +{ + if(gCommonFlowMgr->InitDevice()) + { + + return true; + } + return false; +} +//ƶƽ̨֮ǰIJ(ҪҪͣռcpu Ĺ) +void CProgramCutMgr::OnPlatformMoveStart() +{ +} +void CProgramCutMgr::OnPlatformMoveEnd() +{ +} +void CProgramCutMgr::CameraCatchTwoMark() +{ + //ץһ֡,CCD ͣ + //gCommonFlowMgr->CameraCatch(); + gCommonFlowMgr->CameraCatchTwoMark(); +} +#include "ClientMgr.h" +//ӹ +bool CProgramCutMgr::StartWork(CProduct &Product,bool bSel) +{ + CMsgBox MsgBox; + if(Product.IsMarkReady()) + { + gWorkRecordMgr->SetStartWorkTime(gWorkTime.GetCurTime(":")); + if(gCommonFlowMgr->MultipleAreaMark(Product,bSel)) + { + gWorkRecordMgr->SetEndWorkTime(gWorkTime.GetCurTime(":")); + CString WorkTime = gWorkTime.GetTimeSpanStr();//ӹʱ + gWorkRecordMgr->SetWorkTime(WorkTime); + gWorkRecordMgr->WriteRecordToFile();//¼ӹļ + Product.ResetRealMarkPt(); + //¼ϴʱ + gWorkTime.SaveLastWorkTime(); + return true; + } + } + else + { + MsgBox.Show("Ƚжλ"); + } + return false; +} +#endif +#if 1 +//浱ǰ򿪵dxf ļӦIJ +void CProgramCutMgr::SaveWorkParFile() +{ + CString OpenFileName = GetCurOpenFileName(); + if(OpenFileName != "") + { + CString FileName = "\\WorkPar\\"+OpenFileName+".txt"; + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FileName); + + ofstream file; + file.open(filepath); + //λĻ׼ + vector &ProductVec = gProductMgr->GetProductVec(); + int ProductCnt = ProductVec.size(); + file<GetPower()<<"\n";// + file<GetLaserFre()<<"\n";//Ƶ + CMarkPar& MarkPar = gMarkParMgr->GetCurPen(); + file<GetOneObjMarkCnt()<<"\n";//и + file<GetAreaCycleCnt()<<"\n";//ѭ + } +} +//ȡǰ򿪵dxf ļӦIJ +void CProgramCutMgr::ReadWorkParFile() +{ + CString OpenFileName = GetCurOpenFileName(); + if(OpenFileName != "") + { + CString FileName = "\\WorkPar\\"+OpenFileName+".txt"; + CFileMgr FileMgr; + CString filepath; + FileMgr.GetFullFilePath(filepath,FileName); + + if(FileMgr.IsFileExist(filepath)) + { + vector vec; + FileMgr.ReadFileToStringVec(filepath,vec); + int size = vec.size(); + int k = 0; + int ParIdx = 1; + while(k &ProductVec = gProductMgr->GetProductVec(); + int ProductCnt2 = ProductVec.size(); + if(ProductCnt != ProductCnt2) + { + gLogMgr->WriteDebugLog("ReadWorkParFile product һ!"); + return; + } + for(int i=0;iSetPower(CStringToDouble(vec[k++])); + else if(ParIdx == 2) + gCLaserDeviceMgr->SetFre(CStringToInt(vec[k++])); + else if(ParIdx == 3) + { + CMarkPar& MarkPar = gMarkParMgr->GetCurPen(); + MarkPar.ms = CStringToDouble(vec[k++]);//иٶ + gMarkParMgr->SaveCurPen(MarkPar); + } + else if(ParIdx == 4) + gCommonFlowMgr->SetOneObjMarkCnt(CStringToInt(vec[k++])); + else if(ParIdx == 5) + gCommonFlowMgr->SetAreaCycleCnt(CStringToInt(vec[k++])); + + + ParIdx++; + } + } + } + } +} +#endif +#if 1 +//ѼԴ +void CProgramCutMgr::CollectSrcWorkData() +{ + //֮ǰ + gMarkAreaMgr->ClearSrcWorkData(); + int ProductCnt = PRODUCT_CNT; + for(int k=ProductCnt-1;k>=0;k--) + { + //ݶƶproduct k Ļ׼ + CProduct &Product = gProductMgr->GetProduct(k); + MoveObjData(Product.GetProductBasePt()); + //ѼԴ + //ԭѼ״̬ + gObjComponentMgr->ResetObjCollectState(false); + gMarkAreaMgr->CollectSrcWorkData(); + } +} +#endif diff --git a/LaiPuLaser/ProgramCutMgr.h b/LaiPuLaser/ProgramCutMgr.h new file mode 100644 index 0000000..57802d3 --- /dev/null +++ b/LaiPuLaser/ProgramCutMgr.h @@ -0,0 +1,36 @@ +#pragma once +#include "module.h" + +class CProduct; +class CProgramCutMgr :public CModule +{ +public: + CProgramCutMgr(void); + ~CProgramCutMgr(void); + virtual void Ini(); + + void OpenWorkFile(bool bDxf,bool bOpenDxf = true); + void SaveMarkFile2(); + void OnPlatformMoveStart(); + void OnPlatformMoveEnd(); + bool InitDevice(); + bool StartWork(CProduct &Product,bool bSel); + void CameraCatchTwoMark(); + void SaveMarkFile(); + void MoveObjData(Dbxy BasePt); + void SaveWorkParFile(); + void ReadWorkParFile(); + void OpenMarkFile(); + void CollectSrcWorkData(); + void SetCurOpenFileName(CString s){m_CurOpenFileName = s;} + CString GetCurOpenFileName(){return m_CurOpenFileName;}; + + void SetCurOpenFileFullName(CString s) { m_CurOpenFileFullName = s; } + CString GetCurOpenFileFullName() { return m_CurOpenFileFullName; }; + +private: + CString m_CurOpenFileName;//ǰ򿪵ļ + CString m_CurOpenFileFullName;//ǰ򿪵ļ +}; + +extern CProgramCutMgr *gProgramCutMgr; \ No newline at end of file diff --git a/LaiPuLaser/Program_SZ_XL.cpp b/LaiPuLaser/Program_SZ_XL.cpp new file mode 100644 index 0000000..c2de68b --- /dev/null +++ b/LaiPuLaser/Program_SZ_XL.cpp @@ -0,0 +1,1779 @@ +#include "StdAfx.h" +#include "Program_SZ_XL.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "DeviceState.h" +#include "MsgBox.h" +#include "CommonFlowMgr.h" +#include "AuthorityMgr.h" +#include "FileMgr.h" +#include "DxfReadMgr.h" +#include "WorkFileMgr.h" +#include "MarkAreaMgr.h" +#include "LogMgr.h" +#include "MotionCard_PCI1245.h" +#include "ProgramCutMgr.h" +#include "GlobalFunction.h" +//#include "SuperDogMgr.h" +#define CUT_PAR_DIR "\\CutPar\\" +#define PLC_READ_MSG_LEN 12 //PLC ݵij(ֽ) +#define BUF_LEN 100 + + +//ȡϻplc Ϣ߳(ѭ) +UINT ReadLoadPlcMsgThread(LPVOID pParam) +{ + CProgram_SZ_XL *WorkFlow = (CProgram_SZ_XL *)pParam; + WorkFlow->ReadLoadPlcMsg(); + return 0; +} + +CProgram_SZ_XL *gProgram_SZ_XL = new CProgram_SZ_XL; +CProgram_SZ_XL::CProgram_SZ_XL(void) +{ + m_TrackComPort1 = 1;//1 ں + m_TrackComPort2 = 2;//2 ں + m_LoadComPort = 3;//ϻں + m_ComBaudRate = 115200;//ͨŲ + + m_MotorXLoadCoord = 0;//X + m_MotorXUnLoadCoord = 0;//X + m_MotorX2LoadCoord = 0;//X2 + m_MotorX2UnLoadCoord = 0;//X2 + + m_MotorXWaitCoord = 0;//Xȴ + m_bLoadDeviceSuc = false; + m_bSelMarkMode = false;//ѡӹģʽ + m_bAutoWorkMode = true;//Զģʽ + m_bStopReadMsg = false;//Ƿͣȡplc Ϣ + m_bLoadCOMLockerFlg = false;//Ϣflg + + m_Track1DangerCoordStart = -1000;//1 ΣշΧstart + m_Track1DangerCoordEnd = 180;//1 ΣշΧend + m_Track1SafeCoord = 280;//1 İȫ + m_Track2DangerCoordStart = 30;//2 ΣշΧstart + m_Track2DangerCoordEnd = 1000;//2 ΣշΧend + m_Track2SafeCoord = -90;//2 İȫ + + m_bShieldLoad = false;// + m_bShieldMarking = false;//μӹ + m_bShieldUnLoad = false;// + + m_LoadCmdDelay = 1000;//صʱms + m_LoadCmdRevDelay = 100;//ͺʱȥȡms + m_StopStepUnloadTimes = 5;//ٴοǿֹͣunload + m_LoadCmdSendTims = 5;//͸plc cmdԵĴ + + m_PlcCmdSendDelay = 500;//plcָͺʱms + m_bCheckUnloadState = true;//Ƿϻ״̬ +} +CProgram_SZ_XL::~CProgram_SZ_XL(void) +{ +} +CMFCPropertyGridProperty *CProgram_SZ_XL::CreatGridProperty() +{ + CPropertieMgr &PropertieMgr = gDevicePropertieMgr; + + CString PropertyName;// + CString Description;// + CString Path = _T("PGM_SW_XL");//洢· + CString Name; + //-------------------------------------------------------------------------------// + PropertyName = _T("˫豸"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); + //-------------------------------------------------------------------------------// + + if (gAuthorityMgr->CheckAuthority(_ADMIN)) + { + PropertyName = _T("̶ű"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_Jig1Scale_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig1Scale.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ1X"); + Description = _T("ξ1X()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig1Scale.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Jig1Scale_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig1Scale.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ1Y"); + Description = _T("ξ1Y()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig1Scale.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Jig3Scale_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig3Scale.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ3X"); + Description = _T("ξ3X()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig3Scale.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Jig3Scale_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig3Scale.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ3Y"); + Description = _T("ξ3Y()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig3Scale.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + + { + //Աӳ + Name = _T("m_ServerIP");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ServerIP); + pPropertie->SetType(_PROP_TYPE_STRING); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("IP"); + Description = _T("IPַ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ServerIP, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_ServerPort");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_ServerPort); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("˿"); + Description = _T("Ķ˿ں"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ServerPort, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_bCheckUnloadState");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bCheckUnloadState); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ϻź"); + Description = _T("Ƿϻź"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCheckUnloadState, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_TrackComPort1");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_TrackComPort1); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("1 ں"); + Description = _T("1 ں"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_TrackComPort1, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_TrackComPort2");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_TrackComPort2); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("2 ں"); + Description = _T("2 ں"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_TrackComPort2, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_PlcCmdSendDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_PlcCmdSendDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ͺʱ"); + Description = _T("plcָͺʱms"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_PlcCmdSendDelay, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LoadComPort");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LoadComPort); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ϻں"); + Description = _T("ϻͨôں"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LoadComPort, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LoadCmdRevDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LoadCmdRevDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ϸʱ"); + Description = _T("ȴźŵʱms"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LoadCmdRevDelay, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LoadCmdDelay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LoadCmdDelay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("źʱ"); + Description = _T("صʱms"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LoadCmdDelay, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_LoadCmdSendTims");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_LoadCmdSendTims); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("źųԴ"); + Description = _T("󲻳ɹĻԴ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_LoadCmdSendTims, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_StopStepUnloadTimes");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_StopStepUnloadTimes); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Unload ֹͣ"); + Description = _T("ٴοǿֹͣunload"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_StopStepUnloadTimes, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = _T("Թ"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_bShieldLoad");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShieldLoad); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T(""); + Description = _T("ϲ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShieldLoad, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bShieldMarking");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShieldMarking); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("μӹ"); + Description = _T("ӹ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShieldMarking, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_bShieldUnLoad");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bShieldUnLoad); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Ϲ"); + Description = _T("ϲ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bShieldUnLoad, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = _T("λù"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + + { + //Աӳ + Name = _T("m_Track2Offset_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track2Offset.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("2ץȡƫX"); + Description = _T("2Թ1 ƫX"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track2Offset.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track2Offset_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track2Offset.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("2ץȡƫY"); + Description = _T("2Թ1 ƫY"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track2Offset.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + + { + //Աӳ + Name = _T("m_NPOffset1_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NPCatchOffset1.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ2ץȡƫX"); + Description = _T("1ξ2ξ1λƫX"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_NPCatchOffset1.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_NPOffset1_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NPCatchOffset1.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ2ץȡƫY"); + Description = _T("1ξ2ξ1λƫY"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_NPCatchOffset1.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + + { + //Աӳ + Name = _T("m_NPOffset2_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NPCatchOffset2.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ4ץȡƫX"); + Description = _T("2ξ4ξ3λƫX"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_NPCatchOffset2.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_NPOffset2_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_NPCatchOffset2.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ4ץȡƫY"); + Description = _T("2ξ4ξ3λƫY"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_NPCatchOffset2.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + + { + //Աӳ + Name = _T("m_MotorXWaitCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXWaitCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("Xȴ"); + Description = _T("Xȴ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXWaitCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorXLoadCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXLoadCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X1 "); + Description = _T("X1 "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXLoadCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorXUnLoadCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXUnLoadCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X1 "); + Description = _T("X1 "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXUnLoadCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorXLoadZJCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXLoadZJCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("X1ͻξ"); + Description = _T("X1ͻصĿξ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXLoadZJCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorXThrowCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorXThrowCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("X1ȥ߿"); + Description = _T("X1ȥ߿"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorXThrowCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorX2LoadCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorX2LoadCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X2 "); + Description = _T("X2 "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorX2LoadCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorX2UnLoadCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorX2UnLoadCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("X2 "); + Description = _T("X2 "); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorX2UnLoadCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorX2LoadZJCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorX2LoadZJCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("X2ͻξ"); + Description = _T("X2ͻصĿξ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorX2LoadZJCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + { + //Աӳ + Name = _T("m_MotorX2ThrowCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_MotorX2ThrowCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("X2ȥ߿"); + Description = _T("X2ȥ߿"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MotorX2ThrowCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + + + + pGroup->AddSubItem(pGroup1); + } + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = _T("1 Y "); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_Track1DangerCoordStart");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track1DangerCoordStart); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ΣշΧstart"); + Description = _T("ΣշΧstart"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track1DangerCoordStart, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track1DangerCoordEnd");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track1DangerCoordEnd); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ΣշΧend"); + Description = _T("ΣշΧend"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track1DangerCoordEnd, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track1SafeCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track1SafeCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȫ"); + Description = _T("ȫ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track1SafeCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + if (gAuthorityMgr->CheckAuthority(_FACTORY)) + { + PropertyName = _T("2 Y "); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_Track2DangerCoordStart");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track2DangerCoordStart); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ΣշΧstart"); + Description = _T("ΣշΧstart"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track2DangerCoordStart, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track2DangerCoordEnd");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track2DangerCoordEnd); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ΣշΧend"); + Description = _T("ΣշΧend"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track2DangerCoordEnd, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track2SafeCoord");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Track2SafeCoord); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ȫ"); + Description = _T("ȫ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Track2SafeCoord, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + + + + if (gAuthorityMgr->CheckAuthority(_ADMIN)) + { + PropertyName = _T("ӹƫ"); + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName); + { + //Աӳ + Name = _T("m_Track1MarkOffset_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig1MarkOffset.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ1ƫX"); + Description = _T("ξ1иƫX()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig1MarkOffset.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track1MarkOffset_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig1MarkOffset.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ1ƫY"); + Description = _T("ξ1иƫY()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig1MarkOffset.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track2MarkOffset_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig3MarkOffset.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ3ƫX"); + Description = _T("ξ3иƫX()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig3MarkOffset.x, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + { + //Աӳ + Name = _T("m_Track2MarkOffset_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Jig3MarkOffset.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ξ3ƫY"); + Description = _T("ξ3иƫY()"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Jig3MarkOffset.y, Description); + //p->AllowEdit(FALSE);//޸ + pGroup1->AddSubItem(p); + PropertieMgr.Insert(p, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + + return pGroup; +} +void CProgram_SZ_XL::Ini() +{ + //ôڲ + gTrackWorkFlow1.SetComPar(m_TrackComPort1, m_ComBaudRate); + gTrackWorkFlow2.SetComPar(m_TrackComPort2, m_ComBaudRate); + //WorkFlow ߳ + gTrackWorkFlow1.WorkFlowStart(); + gTrackWorkFlow2.WorkFlowStart(false); + + CFileMgr FileMgr; + CString DirPath; + FileMgr.GetFullFilePath(DirPath, CUT_PAR_DIR); + //Ŀ¼ + if (!FileMgr.IsDirectoryExists(DirPath)) + { + FileMgr.CreatDir(DirPath); + } + //ȡӹ + gTrackWorkFlow1.ReadRecordTimesFromFile(); + gTrackWorkFlow2.ReadRecordTimesFromFile(); + //ʼϻͨŴ + InitLoadDeviceCom(); + +} +//˳ʱ +void CProgram_SZ_XL::OnExitApp() +{ + //λϻϻź + ResetLoadUnloadSignal(); +} +CTrackWorkFlow* CProgram_SZ_XL::GetTrackWorkFlow(ETrackType TrackType) +{ + if (TrackType == _ETrackType_Track_1) + return &gTrackWorkFlow1; + else + return &gTrackWorkFlow2; +} +//ȡһĶ +CTrackWorkFlow* CProgram_SZ_XL::GetOtherTrackWorkFlow(ETrackType TrackType) +{ + if (TrackType == _ETrackType_Track_1) + return &gTrackWorkFlow2; + else + return &gTrackWorkFlow1; +} +//ʼ豸 +void CProgram_SZ_XL::InitDevice() +{ + if (IsbAutoWorking()) + { + CMsgBox MsgBox; + MsgBox.Show("Զ,ܳʼ豸!"); + return; + } + //ϻ״̬ + if (m_bCheckUnloadState && gMotionCard_PCI1245->CheckUnloadState() == false) + { + CMsgBox MsgBox; + MsgBox.Show("ϻڹ,ܳʼ豸!"); + return; + } + if (gCommonFlowMgr->InitDevice()) + { + //ʼϻplc ͨ + OpenPlcCtrl(); + //λϻϻź + ResetLoadUnloadSignal(); + } +} +//λϻϻź +void CProgram_SZ_XL::ResetLoadUnloadSignal() +{ + //ȡ + CancelUnloadRequest(_ETrackType_Track_1); + Sleep(500); + CancelUnloadRequest(_ETrackType_Track_2); + //λϻź + SendMsgToLoadDevice(_ETrackType_Track_1, _ETrack_Step_Reset_Load_Request, false); +} +//ǷԶ +bool CProgram_SZ_XL::IsbAutoWorking() +{ + return (gTrackWorkFlow1.IsbAutoWorking() || gTrackWorkFlow2.IsbAutoWorking()); +} +//ʼԶӹ +void CProgram_SZ_XL::StartAutoWork(ETrackType TrackType) +{ +#ifdef _USE_LAIPU_SUPERDOG + if (gEncryptionMgr->CheckLockState() == false) + { + return; + } +#endif + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if (!DeviceState.IsDeviceIni()) + { + CMsgBox MsgBox; + MsgBox.Show("豸δʼ!"); + return; + } + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + if (pTrackWorkFlow->StartAutoWork()) + { + if (IsbAutoWorking()) + gTrackWorkFlow1.SendAutoStartFlg(true);//򿪷 + else + gTrackWorkFlow1.SendAutoStartFlg(false);//رշ + } +} +void CProgram_SZ_XL::StopAutoWork() +{ + gTrackWorkFlow1.StopAutoWork(); + gTrackWorkFlow2.StopAutoWork(); +} +//ֶ +void CProgram_SZ_XL::ManualOperation(ETrackType TrackType, ETrackWorkStep TrackWorkStep) +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if (!DeviceState.IsDeviceIni()) + { + CMsgBox MsgBox; + MsgBox.Show("豸δʼ!"); + return; + } + if (TrackWorkStep != _ETrack_Step_Load_End) + { + if (gAuthorityMgr->CheckAuthority(_FACTORY, true) == false)//ֶҪȨ + return; + } + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + pTrackWorkFlow->ManualOperation(TrackWorkStep); +} +double CProgram_SZ_XL::GetMoveCoord(ETrackType TrackType, ETrackWorkStep WorkStep) +{ + double Coord = 0; + switch (WorkStep) + { + case _ETrack_Step_Load:// + if (TrackType == _ETrackType_Track_1) + Coord = m_MotorXLoadCoord; + else + Coord = m_MotorX2LoadCoord; + break; + + case _ETrack_Step_Throw_Edge://ȥ߿ + if (TrackType == _ETrackType_Track_1) + Coord = m_MotorXThrowCoord; + else + Coord = m_MotorX2ThrowCoord; + break; + + case _ETrack_Step_To_Wait_Pos://ȴλ + Coord = m_MotorXWaitCoord; + break; + + case _ETrack_Step_Unload:// + if (TrackType == _ETrackType_Track_1) + Coord = m_MotorXUnLoadCoord; + else + Coord = m_MotorX2UnLoadCoord; + break; + + case _ETrack_Step_WaitBack://ͻξ + if (TrackType == _ETrackType_Track_1) + Coord = m_MotorXLoadZJCoord; + else + Coord = m_MotorX2LoadZJCoord; + break; + default: + break; + } + return Coord; +} +//ȡиƫ +Dbxy CProgram_SZ_XL::GetTrackMarkOffset(ETrackType TrackType) +{ + Dbxy MarkOffset; + if (TrackType == _ETrackType_Track_1) + MarkOffset = m_Jig1MarkOffset; + else + MarkOffset = m_Jig3MarkOffset; + return MarkOffset; +} +/* +Dbxy CProgram_SZ_XL::GetTrackMarkPosOffset(ETrackType TrackType) +{ + Dbxy MarkOffset; + if (TrackType == _ETrackType_Track_1) + MarkOffset = m_Track1MarkPosOffset; + else + MarkOffset = m_Track2MarkPosOffset; + return MarkOffset; +}*/ +//,н/ +void CProgram_SZ_XL::ProductCarrierOpenClose(ETrackType TrackType, bool bOpen) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + if (pTrackWorkFlow->IsbAutoWorking() == false)//Զֶ̲ + { + pTrackWorkFlow->ProductCarrierOpenClose(bOpen); + Sleep(100); + pTrackWorkFlow->VacSorbOnOff(!bOpen); + } +} +//ȡǰӹ +int CProgram_SZ_XL::GetCutProductCnt(ETrackType TrackType) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + return pTrackWorkFlow->GetCutProductCnt(); +} +ETrackWorkStep CProgram_SZ_XL::GetCurTrackWorkStep(ETrackType TrackType) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + return pTrackWorkFlow->GetCurTrackWorkStep(); +} +//ȡһĹ״̬ +ETrackWorkStep CProgram_SZ_XL::GetOtherTrackWorkStep(ETrackType TrackType) +{ + CTrackWorkFlow*pTrackWorkFlow = GetOtherTrackWorkFlow(TrackType); + return pTrackWorkFlow->GetCurTrackWorkStep(); +} +//ȡY 귶Χ(Σ/ȫ) +void CProgram_SZ_XL::GetTrackMotorYCoord(ETrackType TrackType, double &DangerCoordStart, double &DangerCoordEnd, double &SafeCoord) +{ + if (TrackType == _ETrackType_Track_1) + { + DangerCoordStart = m_Track1DangerCoordStart;//ΣշΧstart + DangerCoordEnd = m_Track1DangerCoordEnd;//ΣշΧend + SafeCoord = m_Track1SafeCoord;//ȫ + } + else + { + DangerCoordStart = m_Track2DangerCoordStart;//ΣշΧstart + DangerCoordEnd = m_Track2DangerCoordEnd;//ΣշΧend + SafeCoord = m_Track2SafeCoord;//ȫ + } +} +//ƶY ᵽȫ +void CProgram_SZ_XL::MoveMotorYToSafePos(ETrackType TrackType) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + pTrackWorkFlow->MoveMotorYToSafePos(); +} +//ȡ +void CProgram_SZ_XL::CancelUnloadRequest(ETrackType TrackType) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + pTrackWorkFlow->CancelUnloadRequest(); +} +//õǰѭֹͣ +void CProgram_SZ_XL::SetbCircleStop(ETrackType TrackType, bool bStop) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + pTrackWorkFlow->SetbCircleStop(bStop); +} +bool CProgram_SZ_XL::GetbCircleStop(ETrackType TrackType) +{ + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + return pTrackWorkFlow->GetbCircleStop(); +} +#if 1 +//dxf Ӧи +void CProgram_SZ_XL::SaveCutPar() +{ + CString FilePath; + if (GetDxfParFilePath("par", FilePath)) + { + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SaveCutParFile(FilePath); + + //һͬarea ļ + CString AreaFilePath; + GetDxfParFilePath("are", AreaFilePath); + CFile file(AreaFilePath, CFile::modeReadWrite | CFile::modeCreate); + CArchive ar(&file, CArchive::store); + gMarkAreaMgr->SaveOrLoadExt(ar); + } +} +//ȡdxf Ӧи +void CProgram_SZ_XL::ReadCutPar() +{ + CString FilePath; + if (GetDxfParFilePath("par", FilePath)) + { + CWorkFileMgr WorkFileMgr; + WorkFileMgr.ReadWorkFile(FilePath); + + //Ӧarea ļ + CString AreaFilePath; + GetDxfParFilePath("are", AreaFilePath); + CFile file; + if (file.Open(AreaFilePath, CFile::modeRead)) + { + CArchive ar(&file, CArchive::load); + gMarkAreaMgr->SaveOrLoadExt(ar); + gLogMgr->WriteDebugLog("OpenArea:" + AreaFilePath); + file.Close(); + } + } + else + { + gCommonFlowMgr->ResetProductOffset(); + } +} +bool CProgram_SZ_XL::GetDxfParFilePath(CString Suffix, CString &FilePath) +{ + CString OpenFileName = gProgramCutMgr->GetCurOpenFileName(); + if (OpenFileName != "") + { + CString Path = CUT_PAR_DIR; + Path += OpenFileName; + Path += "." + Suffix; + CFileMgr FileMgr; + FileMgr.GetFullFilePath(FilePath, Path); + return true; + } + return false; +} +void CProgram_SZ_XL::ResetRecordTimes(ETrackType TrackType) +{ + CMsgBox MsgBox; + if (MsgBox.ConfirmOkCancel("ӹ?")) + { + CTrackWorkFlow *pTrackWorkFlow = GetTrackWorkFlow(TrackType); + pTrackWorkFlow->ResetRecordTimes(); + } +} +#endif + +#if 1//ع + +void CProgram_SZ_XL::ReadLoadPlcMsg() +{ + while (!gExitApp) + { + if (gExitApp) + break; + + ETrackWorkStep Track1WorkStep = gTrackWorkFlow1.GetCurTrackWorkStep(); + ETrackWorkStep Track2WorkStep = gTrackWorkFlow2.GetCurTrackWorkStep(); + bool ReadMsg = false; + if (Track1WorkStep == _ETrack_Step_Load || Track1WorkStep == _ETrack_Step_Throw_Edge || Track1WorkStep == _ETrack_Step_Unload\ + || Track2WorkStep == _ETrack_Step_Load || Track2WorkStep == _ETrack_Step_Throw_Edge || Track2WorkStep == _ETrack_Step_Unload) + { + ReadMsg = true; + } + if (m_bStopReadMsg) + { + Sleep(100); + continue; + } + Sleep(300); + if (ReadMsg)//ֻload/unload ȥ߿ʱŶȡ + { + ReadLoadPlcMsgExt(); + } + } +} +//ȡPLC ״̬ +void CProgram_SZ_XL::ReadLoadPlcMsgExt() +{ + char Buf[BUF_LEN]; + /* CString Str = ("@00RD0512000151*");//ѯָ + int len = CreatBuf(Buf,Str); + m_LoadDeviceCOM.WriteBuf(Buf,len); + Sleep(100); */ + //ȡ + memset(Buf, 0, BUF_LEN); + + int rcvLen = m_LoadDeviceCOM.Read(Buf, BUF_LEN); + //m_LoadDeviceCOM.ReadBuf(Buf,BUF_LEN); + if (rcvLen > 1) + { + CString RecvStr(Buf); + AnalyzeRecvLoadMsg(RecvStr); + } +} +//յϻPLC Ϣ +void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr) +{ + CString LogStr1, LogStr2; + bool ret = false; + + if (gTrackWorkFlow1.GetCurTrackWorkStep() == _ETrack_Step_Unload)//ֻunload յźŲ + { + if (RecvStr.Find("$(KL1D1)#", 0) != -1)//1 + { + if (gProgram_SZ_XL->GetbCircleStop(_ETrackType_Track_1) || (!gTrackWorkFlow1.IsbAutoWorking()))//ǰѭֶֹͣ + { + gTrackWorkFlow1.SetbCircleStop(false); + GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(_ETrackType_Track_1);//Զָcheck ״̬ + CString Log = "1 Circle Stop."; + gLogMgr->WriteDebugLog(Log); + gTrackWorkFlow1.StopAutoWork();//ֹͣԶ + } + else + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_End); + } + LogStr1 = "1 "; + } + if (RecvStr.Find("$(KL1E)#", 0) != -1)//1 ϴ + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + LogStr1 = "1 ϴ"; + } + if (RecvStr.Find("$(KL7D1)#", 0) != -1)//1ؾ + { + gTrackWorkFlow1.m_bPullJigOut = true; + LogStr1 = "1ؾ"; + } + if (RecvStr.Find("$(KL1D9)#", 0) != -1)//1Ƴ + { + gTrackWorkFlow1.m_bPushJigReady = true; + LogStr1 = "1ؾ߿Ƴ"; + } + if (RecvStr.Find("$(KL9E)#", 0) != -1)//1Ƴ + { + gTrackWorkFlow1.m_bPushJigReady = false; + LogStr1 = "1ؾ߲Ƴ--fromϻ"; + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + } + ret = true; + } + + if (gTrackWorkFlow2.GetCurTrackWorkStep() == _ETrack_Step_Unload)//ֻload յźŲ + { + if (RecvStr.Find("$(KL2D1)#", 0) != -1)//2 + { + if (gProgram_SZ_XL->GetbCircleStop(_ETrackType_Track_2) || (!gTrackWorkFlow2.IsbAutoWorking()) )//ǰѭֹͣ + { + gTrackWorkFlow2.SetbCircleStop(false); + GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(_ETrackType_Track_2);//Զָcheck ״̬ + CString Log = "1 Circle Stop."; + gLogMgr->WriteDebugLog(Log); + gTrackWorkFlow2.StopAutoWork();//ֹͣԶ + } + else + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_End); + } + LogStr1 = "2 "; + } + if (RecvStr.Find("$(KL2E)#", 0) != -1)//2 ϴ + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + LogStr1 = "2 ϴ"; + } + if (RecvStr.Find("$(KL8D1)#", 0) != -1)//1ؾ + { + //gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_PulledOut); + gTrackWorkFlow2.m_bPullJigOut = true; + LogStr1 = "2ؾ"; + } + if (RecvStr.Find("$(KL1D10)#", 0) != -1)//1ؾ + { + gTrackWorkFlow2.m_bPushJigReady = true; + LogStr1 = "2ؾ߿Ƴ"; + } + if (RecvStr.Find("$(KL10E)#", 0) != -1)//1ؾ + { + gTrackWorkFlow2.m_bPushJigReady = false; + LogStr1 = "2ؾ߲Ƴ--fromϻ"; + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + } + ret = true; + } + + + + if (gTrackWorkFlow1.GetCurTrackWorkStep() == _ETrack_Step_Load)//ֻload յźŲ + { + if (RecvStr.Find("$(KL3D1)#", 0) != -1)//1 + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_End); + LogStr1 = "1 "; + } + if (RecvStr.Find("$(KL3E)#", 0) != -1)//1 ϴ + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_Err); + LogStr1 = "1 ϴ"; + } + ret = true; + } + + if (gTrackWorkFlow2.GetCurTrackWorkStep() == _ETrack_Step_Load) + { + if (RecvStr.Find("$(KL4D1)#", 0) != -1)//2 + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_End); + LogStr1 = "2 "; + } + if (RecvStr.Find("$(KL4E)#", 0) != -1)//2 + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_Err); + LogStr1 = "2 ϴ"; + } + ret = true; + } + + + if (gTrackWorkFlow1.GetCurTrackWorkStep() == _ETrack_Step_Throw_Edge) + { + if (RecvStr.Find("$(KL5D1)#", 0) != -1)//1 ȥ߿(01000000) + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + LogStr1 = "1 ȥ߿"; + } + + if (RecvStr.Find("$(KL5E)#", 0) != -1)//1 ȥ߿(01000000) + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Err); + LogStr1 = "1 ȥ߿"; + } + ret = true; + } + + if (gTrackWorkFlow2.GetCurTrackWorkStep() == _ETrack_Step_Throw_Edge) + { + if (RecvStr.Find("$(KL6D1)#", 0) != -1)//2 ȥ߿(10000000) + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + LogStr1 = "2 ȥ߿"; + } + if (RecvStr.Find("$(KL6E)#", 0) != -1)//2 ȥ߿(10000000) + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Err); + LogStr1 = "2 ȥ߿"; + } + ret = true; + } + + + /* + else if(RecvStr.Find("@00RD00000C25*",0) != -1)//1 //2 (00001100) + { + if(gTrackWorkFlow1.GetCurTrackWorkStep()==_ETrack_Step_Load) + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_End); + Sleep(500); + LogStr1 = "1 "; + } + if(gTrackWorkFlow2.GetCurTrackWorkStep()==_ETrack_Step_Load) + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_End); + LogStr2 = "2 "; + } + ret = true; + } + else if(RecvStr.Find("@00RD0000845A*",0) != -1)//1 //2 ȥ߿(10000100) + { + if(gTrackWorkFlow1.GetCurTrackWorkStep()==_ETrack_Step_Load) + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_End); + Sleep(500); + LogStr1 = "1 "; + } + if(gTrackWorkFlow2.GetCurTrackWorkStep()==_ETrack_Step_Throw_Edge) + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + LogStr2 = "2 ȥ߿"; + } + ret = true; + } + else if(RecvStr.Find("@00RD0000485A*",0) != -1)//1 ȥ߿//2 (01001000) + { + if(gTrackWorkFlow1.GetCurTrackWorkStep()==_ETrack_Step_Throw_Edge) + { + gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + Sleep(500); + LogStr1 = "1 ȥ߿"; + } + if(gTrackWorkFlow2.GetCurTrackWorkStep()==_ETrack_Step_Load) + { + gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_End); + LogStr2 = "2 "; + } + ret = true; + }*/ + + if (ret) + { + gLogMgr->WriteDebugLog(RecvStr); + if (LogStr1 != "") + { + gLogMgr->WriteDebugLog(LogStr1); + } + if (LogStr2 != "") + { + gLogMgr->WriteDebugLog(LogStr2); + } + } +} + +#include + +mutex IniTex; + +//ʼϻͨŴ +void CProgram_SZ_XL::InitLoadDeviceCom() +{ + IniTex.lock(); + static bool bThreadStart = false; + //ϻplc ͨô + if (!bThreadStart) + { + if (m_LoadDeviceCOM.Open(m_LoadComPort, "115200,n,8,1")) + { + CString LogStr; + LogStr.Format(_T("ϻͨŴ %d 򿪳ɹ"), m_LoadComPort); + gLogMgr->WriteDebugLog(LogStr); + if (OpenPlcCtrl()) + { + m_bLoadDeviceSuc = true; + if (!bThreadStart) + { + bThreadStart = true; + //ȡplc Ϣ߳ + AfxBeginThread(ReadLoadPlcMsgThread, this); + } + } + } + else + { + CString LogStr; + LogStr.Format(_T("ϻͨŴ %d ʧ"), m_LoadComPort); + gLogMgr->WriteDebugLog(LogStr); + } + } + IniTex.unlock(); +} +//һ,ͨǷ +bool CProgram_SZ_XL::OpenPlcCtrl() +{ + return true; + char Buf[BUF_LEN]; + CString Str = ("@00SC0252*"); + int len = CreatBuf(Buf, Str); + m_LoadDeviceCOM.WriteBuf(Buf, len); + Sleep(m_LoadCmdRevDelay); + //ȡ + memset(Buf, 0, BUF_LEN); + m_LoadDeviceCOM.ReadBuf(Buf, BUF_LEN); + + Str = ("@00SC0050*"); + if (CompareBuf(Buf, Str)) + { + gLogMgr->WriteDebugLog("OpenPlcCtrl Suc Rev = " + Str); + return true; + } + gLogMgr->WriteDebugLog("OpenPlcCtrl Err ʧ"); + return false; +} +//str ݷŵBuf +int CProgram_SZ_XL::CreatBuf(char *Buf, CString str) +{ + int len = str.GetLength(); + int k = 0; + for (;k < len;k++) + { + Buf[k] = str[k]; + } + Buf[k++] = char(13); + Buf[k++] = char(10); + return k; +} +//Ƚbuf Ƿstr +bool CProgram_SZ_XL::CompareBuf(char *Buf, CString str) +{ + int len = str.GetLength(); + for (int k = 0;k < len;k++) + { + if (Buf[k] != str[k]) + return false; + } + return true; +} +//ȡַ +bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep, CString &StrOn, CString &StrOnRev, CString &StrOff, CString &StrOffRev) +{ + CString LogStr; + bool Ret = false; + if (WorkStep == _ETrack_Step_Load)// + { + if (_ETrackType_Track_1 == TrackType) + { + StrOn = "$(KL3)#"; + StrOff = "@00WD0507000051*"; + LogStr = "1 "; + } + else + { + StrOn = "$(KL4)#"; + StrOff = "@00WD050800005E*"; + LogStr = "2 "; + } + Ret = true; + } + else if (WorkStep == _ETrack_Step_Throw_Edge)//ȥ߿ + { + if (_ETrackType_Track_1 == TrackType) + { + StrOn = "$(KL5)#"; + StrOff = "@00WD050900005F*"; + LogStr = "1ȥ߿"; + } + else + { + StrOn = "$(KL6)#"; + StrOff = "@00WD0510000057*"; + LogStr = "2ȥ߿"; + } + Ret = true; + } + else if (WorkStep == _ETrack_Step_Unload)// + { + if (_ETrackType_Track_1 == TrackType) + { + StrOn = "$(KL1)#"; + StrOff = "@00WD050900005F*"; + LogStr = "1"; + } + else + { + StrOn = "$(KL2)#"; + StrOff = "@00WD0510000057*"; + LogStr = "2"; + } + Ret = true; + } + else if (WorkStep == _ETrack_Step_WaitBack)//ȴͻؾ + { + if (_ETrackType_Track_1 == TrackType) + { + StrOn = "$(KL7)#"; + StrOff = "@00WD050900005F*"; + LogStr = "1ͻξ"; + } + else + { + StrOn = "$(KL8)#"; + StrOff = "@00WD0510000057*"; + LogStr = "2ͻξ"; + } + Ret = true; + } + if (Ret) + { + // gLogMgr->WriteDebugLog("Str1 = "+StrOn); + //gLogMgr->WriteDebugLog("Str2 = "+StrOff); + gLogMgr->WriteDebugLog(LogStr); + } + return Ret; +} +//Ϣϻ(bCheckRev Ƿ鷴ź) +//Ϣplc(bCheckRev Ƿ鷴ź) + +mutex SendMutex; + +bool CProgram_SZ_XL::SendMsgToLoadDevice(ETrackType TrackType, ETrackWorkStep WorkStep, bool bCheckRev) +{ + + if (!m_bLoadDeviceSuc) + { + CMsgBox MsgBox; + MsgBox.Show("ϻͨ ʧ"); + return false; + } + + lock_guard lock(SendMutex); + + while (m_bLoadCOMLockerFlg)//ȴ + { + Sleep(100); + } + + m_bStopReadMsg = true;//ͣȡ + Sleep(400); + + m_bLoadCOMLockerFlg = true;// + + bool Ret = false; + CString StrOn, StrOnRev; + CString StrOff, StrOffRev; + if (GetLoadCmdStr(TrackType, WorkStep, StrOn, StrOnRev, StrOff, StrOffRev)) + { + char Buf[BUF_LEN]; + int len = CreatBuf(Buf, StrOn); + m_LoadDeviceCOM.WriteBuf(Buf, len); + gLogMgr->WriteDebugLog("SendMsgToLoadDevice: "+StrOn); + /* Sleep(100); + m_LoadDeviceCOM.WriteBuf(Buf,len);//ٷһ + Sleep(m_LoadCmdDelay);//ȴplc ⵽صʱ + len = CreatBuf(Buf,StrOff); + m_LoadDeviceCOM.WriteBuf(Buf,len); + Sleep(100); + m_LoadDeviceCOM.WriteBuf(Buf,len); //ٷһ*/ + Ret = true; + } + + m_bLoadCOMLockerFlg = false;// + + m_bStopReadMsg = false;//ָȡ + return Ret; +} +//Ϣ鷴(SendMsg 鷴źǷΪRevMsg) +bool CProgram_SZ_XL::SendMsgToLoadPlc(CString &SendMsg, CString &RevMsg) +{ + return true; +} + +#endif diff --git a/LaiPuLaser/Program_SZ_XL.h b/LaiPuLaser/Program_SZ_XL.h new file mode 100644 index 0000000..51ceeb4 --- /dev/null +++ b/LaiPuLaser/Program_SZ_XL.h @@ -0,0 +1,132 @@ +#pragma once +#include "module.h" +#include "Program_SZ_XL_TrackWorkFlow.h" + + +//ȫԶ豸 +class CProgram_SZ_XL :public CModule +{ +public: + CProgram_SZ_XL(void); + ~CProgram_SZ_XL(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _PGM_SW_XL_PROP;}; + virtual void Ini(); + virtual void OnExitApp();//˳ʱ + void InitDevice(); + void StartAutoWork(ETrackType TrackType); + void ManualOperation(ETrackType TrackType,ETrackWorkStep TrackWorkStep); + double GetMoveCoord(ETrackType TrackType,ETrackWorkStep WorkStep); + Dbxy GetTrack2Offset(){return m_Track2Offset;}; + Dbxy GetTrackMarkOffset(ETrackType TrackType);//ȡƫ + //Dbxy GetTrackMarkPosOffset(ETrackType TrackType);//ȡļӹλƫ + void SetbSelMarkMode(bool b){m_bSelMarkMode = b;}; + bool IsbSelMarkMode(){return m_bSelMarkMode;}; + bool IsbAutoWorkMode(){return m_bAutoWorkMode;}; + void SetbAutoWorkMode(bool b){m_bAutoWorkMode = b;}; + void ProductCarrierOpenClose(ETrackType TrackType,bool bOpen); + CTrackWorkFlow* GetTrackWorkFlow(ETrackType TrackType); + int GetCutProductCnt(ETrackType TrackType); + void StopAutoWork(); + void SaveCutPar(); + void ReadCutPar(); + ETrackWorkStep GetCurTrackWorkStep(ETrackType TrackType); + void ResetRecordTimes(ETrackType TrackType); + void ReadLoadPlcMsg(); + bool SendMsgToLoadDevice(ETrackType TrackType,ETrackWorkStep WorkStep,bool bCheckRev); + ETrackWorkStep GetOtherTrackWorkStep(ETrackType TrackType); + void MoveMotorYToSafePos(ETrackType TrackType); + bool IsbShieldLoad(){return m_bShieldLoad;}; + bool IsbShieldMarking(){return m_bShieldMarking;}; + bool IsbShieldUnLoad(){return m_bShieldUnLoad;}; + void CancelUnloadRequest(ETrackType TrackType); + void SetbCircleStop(ETrackType TrackType,bool bStop); + bool GetbCircleStop(ETrackType TrackType) ; + int GetStopStepUnloadTimes(){return m_StopStepUnloadTimes;}; + int GetPlcCmdSendDelay(){return m_PlcCmdSendDelay;}; + void GetTrackMotorYCoord(ETrackType TrackType,double &DangerCoordStart,double &DangerCoordEnd,double &SafeCoord); + bool IsbAutoWorking(); + bool IsbCheckUnloadState(){return m_bCheckUnloadState;}; + void SetCurMarkingTrack(ETrackType t){m_CurMarkingTrack = t;}; + ETrackType GetCurMarkingTrack(){return m_CurMarkingTrack;}; + + Dbxy GetNPOffsetT1() { return m_NPCatchOffset1; }; //ȡ1,¼Ƭλƫ + Dbxy GetNPOffsetT2() { return m_NPCatchOffset2; }; //ȡ2,¼Ƭλƫ +private: + bool GetDxfParFilePath(CString Suffix,CString &FilePath); + void ReadLoadPlcMsgExt(); + void InitLoadDeviceCom(); + void ResetLoadUnloadSignal(); + CTrackWorkFlow* GetOtherTrackWorkFlow(ETrackType TrackType); + bool OpenPlcCtrl(); + void AnalyzeRecvLoadMsg(CString &RecvStr); + bool CompareBuf(char *Buf,CString str); + int CreatBuf(char *Buf,CString str); + bool SendMsgToLoadPlc(CString &SendMsg,CString &RevMsg); + bool GetLoadCmdStr(ETrackType TrackType,ETrackWorkStep WorkStep,CString &StrOn,CString &StrOnRev,CString &StrOff,CString &StrOffRev); +public: + CString m_ServerIP="127.0.0.1";//IP + int m_ServerPort=2404;//˿ + Dbxy GetJig1Scale() { return m_Jig1Scale; }; + Dbxy GetJig3Scale() { return m_Jig3Scale; }; +private: + int m_TrackComPort1;//1 ں + int m_TrackComPort2;//2 ں + int m_ComBaudRate;//ͨŲ + int m_PlcCmdSendDelay;//plcָͺʱms + int m_LoadComPort;//ϻں + bool m_bLoadDeviceSuc;//ϻͨǷɹ + int m_LoadCmdDelay;//صʱms + int m_LoadCmdRevDelay;//ͺʱȥȡms + int m_LoadCmdSendTims;//͸plc cmdԵĴ + + bool m_bLoadCOMLockerFlg;//Ϣflg + bool m_bCheckUnloadState;//Ƿϻ״̬ + CCommPortMgr m_LoadDeviceCOM;//ϻͨôڹ + bool m_bStopReadMsg;//Ƿͣȡplc Ϣ + + + bool m_bSelMarkMode;//ѡӹģʽ + bool m_bAutoWorkMode;//Զģʽ + + double m_MotorXWaitCoord;//Xȴ + + double m_MotorXLoadCoord;//X + double m_MotorXUnLoadCoord;//X + double m_MotorXLoadZJCoord=0;//X ξ + double m_MotorXThrowCoord = 0;//X ȥ߿ + + double m_MotorX2LoadCoord;//X2 + double m_MotorX2UnLoadCoord;//X2 + double m_MotorX2LoadZJCoord=0;//X2 ξ + double m_MotorX2ThrowCoord = 0;//X2 ȥ߿ + + Dbxy m_Track2Offset;//2Թ1 ƫ + + Dbxy m_NPCatchOffset1;//1ƬƬλƫ(CCDץȡʱ) + Dbxy m_NPCatchOffset2;//2ƬƬλƫ(CCDץȡʱ) + + Dbxy m_Jig1Scale=Dbxy(1,1); //ξ1Զ() + Dbxy m_Jig3Scale = Dbxy(1, 1);//ξ3Զ() + + Dbxy m_Jig1MarkOffset;//ξ1ļӹƫ + Dbxy m_Jig3MarkOffset;//ξ3ļӹƫ + + double m_Track1DangerCoordStart;//1 ΣշΧstart + double m_Track1DangerCoordEnd;//1 ΣշΧend + double m_Track1SafeCoord;//1 İȫ + double m_Track2DangerCoordStart;//2 ΣշΧstart + double m_Track2DangerCoordEnd;//2 ΣշΧend + double m_Track2SafeCoord;//2 İȫ + + + bool m_bShieldLoad;// + bool m_bShieldMarking;//μӹ + bool m_bShieldUnLoad;// + + int m_StopStepUnloadTimes;//ٴοǿֹͣunload + + ETrackType m_CurMarkingTrack;//ǰиĹ +}; + +extern CProgram_SZ_XL *gProgram_SZ_XL; \ No newline at end of file diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp new file mode 100644 index 0000000..2fe8aae --- /dev/null +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp @@ -0,0 +1,1408 @@ +#include "StdAfx.h" +#include "Program_SZ_XL_TrackWorkFlow.h" +#include "GlobalFunction.h" +#include "CommonFlowMgr.h" +#include "ProductMgr.h" +#include "ProgramCutMgr.h" +#include "WorkCmdContainer.h" +#include "Program_SZ_XL.h" +#include "MotionCard_PCI1245.h" +#include "WorkCmdMoveMotor.h" +#include "WorkCmdInvoker.h" +#include "WorkCmdWaitMotorStop.h" +#include "WorkCmdSetMotorSpeed.h" +#include "ObjComponentMgr.h" +#include "LogMgr.h" +#include "MsgBox.h" +#include "WorkTime.h" +#include "FileMgr.h" +#include "Motor.h" +#include "ClientMgr.h" +#include "SocketMgr.h" +#include + +#define PLC_READ_MSG_LEN 12 //PLC ݵij(ֽ) + +#define TRACK_NAME_1 "1" +#define TRACK_NAME_2 "2" +int gStopTimes = 0; +//ǰĹ +ETrackType gCurLockTrackType = _ETrackType_NULL; + +CTrackWorkFlow gTrackWorkFlow1(TRACK_NAME_1);//1 ̹ +CTrackWorkFlow gTrackWorkFlow2(TRACK_NAME_2);//2 ̹ + +#define TRACK1_RECORD_FILE "\\CutPar\\TrackRecord1.txt" +#define TRACK2_RECORD_FILE "\\CutPar\\TrackRecord2.txt" + +CCommPortMgr CTrackWorkFlow::m_TrackCOM;//ͨõĴڹ + +//̿߳(ѭ) +UINT WorkFlowCtrlThread(LPVOID pParam) +{ + CTrackWorkFlow *WorkFlow = (CTrackWorkFlow *)pParam; + WorkFlow->WorkFlowCtrl(); + return 0; +} +//ȡplc Ϣ߳(ѭ) +UINT ReadPlcMsgThread(LPVOID pParam) +{ + CTrackWorkFlow *WorkFlow = (CTrackWorkFlow *)pParam; + WorkFlow->ReadPlcMsg(); + return 0; +} +//ִһ߳(ִһ) +UINT ExecuteStepThread(LPVOID pParam) +{ + CTrackWorkFlow *WorkFlow = (CTrackWorkFlow *)pParam; + WorkFlow->ExecuteCurStep(); + return 0; +} + +CTrackWorkFlow::CTrackWorkFlow(CString Name) +{ + m_TrackName = Name; + m_ProductIdx = 0;//ӦƷλı + // + if (m_TrackName == TRACK_NAME_1) + m_TrackType = _ETrackType_Track_1; + else + m_TrackType = _ETrackType_Track_2; + + m_ComPort = 1;//ͨôں + m_ComBaudRate = 115200;//ͨò + + SetCurTrackWorkStep(_ETrack_Step_Stop);//ǰĹ + m_OldWorkStep = _ETrack_Step_Stop;//֮ǰĹ + + m_bStopReadMsg = false;//Ƿͣȡplc Ϣ + m_bAutoWorking = false;//ǷԶӹ + m_bLoadProduct = false;//Ƿload ˲Ʒ + m_ReadMsgDelay = 200; + m_CutProductCnt = 0;//иƷ + m_bCircleStop = false;//ǰѭֹͣ + +} +CTrackWorkFlow::~CTrackWorkFlow(void) +{ +} +//ôڲ +void CTrackWorkFlow::SetComPar(int Port, int BaudRate) +{ + m_ComPort = Port;//ͨôں + m_ComBaudRate = BaudRate;//ͨò +} + +#if 1 +//̹ +void CTrackWorkFlow::WorkFlowStart(bool bOpenCom /*= true*/) +{ + //WorkFlow ߳ + AfxBeginThread(WorkFlowCtrlThread, this); + //plc ͨô + if (bOpenCom&&m_TrackCOM.Open(m_ComPort, m_ComBaudRate)) + { + //ȡplc Ϣ߳ + AfxBeginThread(ReadPlcMsgThread, this); + } + else + { + CString LogStr; + LogStr.Format(_T("TrackCOM %d ʧ"), m_ComPort); + gLogMgr->WriteDebugLog(LogStr); + } +} + +//̿ +void CTrackWorkFlow::WorkFlowCtrl() +{ + while (!gExitApp) + { + if (gExitApp) + return; + Sleep(100); + if (m_CurWorkStep == m_OldWorkStep)//ޱ仯 + continue; + if (m_OldWorkStep == _ETrack_Step_Unload)//unload ʱ + { + //ȡ + CancelUnloadRequest(); + gStopTimes = 0; + } + m_OldWorkStep = m_CurWorkStep;//¼ǰ + //ִ߳ + AfxBeginThread(ExecuteStepThread, this); + } +} +//ִеǰ +void CTrackWorkFlow::ExecuteCurStep() +{ + if (gExitApp) + return; + switch (m_CurWorkStep) + { + case _ETrack_Step_Load_End:// + MoveToWaitPos();//ƶȴλ + break; + case _ETrack_Step_Mark_Waiting://ȴӹ + CatchMark();//ץȡλ + break; + case _ETrack_Step_Catch_mark_End://ȴӹ + MarkProcess();//ӹ + break; + case _ETrack_Step_Mark_End://ӹ + ThrowEdge();//ȥ߿ + break; + case _ETrack_Step_Throw_Edge_End://ȥ߿ + UnLoad();// + break; + case _ETrack_Step_Unload_End:// + Load();// + break; + case _ETrack_Step_Load_Err://ϴ + case _ETrack_Step_Catch_mark_Err://ץȡλ + case _ETrack_Step_Mark_Err://и̴ + case _ETrack_Step_Unload_Err://ϴ + case _ETrack_Step_Throw_Edge_Err://ȥ߿ + { + // + if (m_TrackType == gCurLockTrackType) + gCurLockTrackType = _ETrackType_NULL; + //˳Զ״̬ + StopAutoWork(); + } + break; + default: + break; + } +} +void CTrackWorkFlow::SetCurTrackWorkStep(ETrackWorkStep Step) +{ + if (m_CurWorkStep == _ETrack_Step_Load || m_CurWorkStep == _ETrack_Step_Throw_Edge) + { + if (Step == _ETrack_Step_Unload_End) + { + gLogMgr->WriteDebugLog("Canot Set Track_Step_Unload_End"); + return; + } + } + m_CurWorkStep = Step; +} + +#endif +#if 1 +//Զӹ +bool CTrackWorkFlow::StartAutoWork() +{ + if (m_bAutoWorking) + { + if (m_CurWorkStep == _ETrack_Step_Unload) + { + if (gStopTimes < gProgram_SZ_XL->GetStopStepUnloadTimes())//n οǿֹͣ + { + CMsgBox MsgBox; + MsgBox.Show("δɲֹͣ!"); + CString str; + str.Format("StopTimes = %ld", gStopTimes); + gLogMgr->WriteDebugLog(str); + gStopTimes++; + return false; + } + } + //ֹͣԶӹ + StopAutoWork(); + return true; + } + gStopTimes = 0;//¼ + //Ƿжλmark + Dbxy MarkPt1; + Dbxy MarkPt2; + if (!gObjComponentMgr->GetTwoMarkPt(MarkPt1, MarkPt2))//ȡλ + { + CMsgBox MsgBox; + MsgBox.Show("ûмӹͼ!"); + return false; + } + //Զ״̬ + m_bAutoWorking = true; + if (gProgram_SZ_XL->IsbAutoWorkMode())//ԶģʽҪԶʼ + { + //load ˲Ʒ + /*if (m_bLoadProduct) + {*/ + CMsgBox MsgBox; + if (MsgBox.ConfirmOkCancel("ȷ:и,ȡ:")) + SetCurTrackWorkStep(_ETrack_Step_Mark_Waiting); + else + SetCurTrackWorkStep(_ETrack_Step_Unload_End); + /*} + else + { + SetCurTrackWorkStep(_ETrack_Step_Unload_End);//ֱ + }*/ + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Load); + } + CString Log = m_TrackName + " ʼԶ"; + gLogMgr->WriteDebugLog(Log); + return true; +} +//ֹͣԶӹ +void CTrackWorkFlow::StopAutoWork() +{ + CString Log = m_TrackName + " ֹͣԶ"; + gLogMgr->WriteDebugLog(Log); + + m_bAutoWorking = false; + + SetCurTrackWorkStep(_ETrack_Step_Stop); + //ȡ + CancelUnloadRequest(); +} + +#endif +#if 1 +//ֶ +void CTrackWorkFlow::ManualOperation(ETrackWorkStep TrackWorkStep) +{ + //Զӹʱֶ(ֶLoad_End ) + if (m_bAutoWorking && TrackWorkStep != _ETrack_Step_Load_End) + { + CString Log = m_TrackName + " Զ"; + gLogMgr->WriteDebugLog(Log); + return; + } + //ֶLoad_End ԶģʽЧ + if (TrackWorkStep == _ETrack_Step_Load_End && gProgram_SZ_XL->IsbAutoWorkMode()) + return; + + if (TrackWorkStep == _ETrack_Step_Load_End) + { + //н + ProductCarrierOpenClose(false); + } + + SetCurTrackWorkStep(TrackWorkStep); +} +#endif +#if 1 +//ȡϢ +void CTrackWorkFlow::ReadPlcMsg() +{ + while (!gExitApp) + { + if (gExitApp) + break; + if (m_bStopReadMsg) + { + Sleep(100); + continue; + } + ReadPlcMsgExt(); + } +} +void CTrackWorkFlow::ReadPlcMsgExt() +{ + Sleep(m_ReadMsgDelay); + char buf[PLC_READ_MSG_LEN]; + memset(buf, 0, sizeof(buf)); + int ReadBytes = m_TrackCOM.Read(buf, PLC_READ_MSG_LEN); + // + if (ReadBytes > 0) + { + AnalyzeRecvPlcCmd(buf, PLC_READ_MSG_LEN); + } +} +//ָ +void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len) +{ + //ҵ# λ + int IdxEnd = -1; + for (int k = 0; k < len; k++) + { + if (buf[k] == '#') + { + IdxEnd = k; + CString s; + s.Format(_T("Idx # = %d"), IdxEnd); + gLogMgr->WriteDebugLog(s); + break; + } + } + if (IdxEnd < 0)//ûҵ + return; + + if (IdxEnd != len - 1) + buf[IdxEnd + 1] = '\0'; + + CString PlcMsg(buf); + gLogMgr->WriteDebugLog("ReadPlcMsg--->" + PlcMsg); + + int IdxK = -1;//һK λ + for (int k = 0; k < IdxEnd; k++) + { + if (buf[k] == 'K') + { + IdxK = k; + break; + } + } + if (IdxK < 0) + return; + + if (PlcMsg.Find("$(KQ3D1)#") != -1 || PlcMsg.Find("$(KQ4D1)#") != -1)// + { + gLogMgr->WriteDebugLog("ReadPlcMsg--->_ETrack_Step_Unload_End"); + if (m_CurWorkStep == _ETrack_Step_Unload)//ֻ״̬Ӧź + { + if (m_bCircleStop)//ǰѭֹͣ + { + m_bCircleStop = false;//ֹֻͣһ + GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(m_TrackType);//Զָcheck ״̬ + CString Log = m_TrackName + " Circle Stop"; + gLogMgr->WriteDebugLog(Log); + StopAutoWork();//ֹͣԶ + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Unload_End); + } + } + } + if (PlcMsg.Find("$(KQ3E)#") != -1 || PlcMsg.Find("$(KQ4E)#") != -1)//ϴ + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + gLogMgr->WriteDebugLog("ReadPlcMsg--->_ETrack_Step_Unload_Err"); + } + ///------------------------1------------------------------------- + if (PlcMsg.Find("$(KQ5D1)#") != -1)//ξδλ + { + gTrackWorkFlow1.m_bPushJigOut = true; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5D1)#] --->1Ƴξ"); + } + if (PlcMsg.Find("$(KQ5E)#") != -1)//ξδλ + { + gTrackWorkFlow1.m_bJigOK = false; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5E)#] --->1ξδλ"); + } + if (PlcMsg.Find("$(KQ7D1)#") != -1)//ξߵλ + { + gTrackWorkFlow1.m_bJigOK = true; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ7D1)#]--->1ξߵλ"); + } + ///------------------------2------------------------------------- + if (PlcMsg.Find("$(KQ6D1)#") != -1)//ξδλ + { + gTrackWorkFlow2.m_bPushJigOut = true; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6D1)#] --->2Ƴξ"); + } + if (PlcMsg.Find("$(KQ6E)#") != -1)//ξδλ + { + gTrackWorkFlow2.m_bJigOK = false; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6E)#] --->2ξδλ"); + } + if (PlcMsg.Find("$(KQ8D1)#") != -1)//ξߵλ + { + gTrackWorkFlow2.m_bJigOK = true; + gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ8D1)#]--->2ξߵλ"); + } +} + +#endif +#if 1 +//ȡ͸plc ַ +CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd) +{ + CString log; + CString msg = "$(KQ"; + if (PlcCmd == _ETrack_PlcCmd_Open_Product)// + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "G"; + log = "SendPlcMsg: Track_1 "; + } + else + { + msg += "I"; + log = "SendPlcMsg: Track_2 "; + } + } + if (PlcCmd == _ETrack_PlcCmd_Close_Product)//н + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "F"; + log = "SendPlcMsg: Track_1 н"; + } + else + { + msg += "H"; + log = "SendPlcMsg: Track_2 н"; + } + } + if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_On)// + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "9"; + log = "SendPlcMsg: Track_1 "; + } + else + { + msg += "B"; + log = "SendPlcMsg: Track_2 "; + } + } + if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_Off)// + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "A"; + log = "SendPlcMsg: Track_1 "; + } + else + { + msg += "C"; + log = "SendPlcMsg: Track_2 "; + } + } + if (PlcCmd == _ETrack_PlcCmd_Auto_Start)//Զʼ(̵) + { + msg += "5"; + log = "SendPlcMsg: Զʼ"; + } + if (PlcCmd == _ETrack_PlcCmd_Auto_End)//ԶƵƣ + { + msg += "6"; + log = "SendPlcMsg: Զ"; + } + if (PlcCmd == _ETrack_PlcCmd_Unload)// + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "3"; + log = "SendPlcMsg: Track_1 "; + } + else + { + msg += "4"; + log = "SendPlcMsg: Track_2 "; + } + } + if (PlcCmd == _ETrack_PlcCmd_Push_Jig_Out)//ξ + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "J"; + log = "SendPlcMsg: Track_1 Ƴξ"; + } + else + { + msg += "K"; + log = "SendPlcMsg: Track_2 Ƴξ"; + } + } + + if (PlcCmd == _ETrack_PlcCmd_Check_Jig_In)//ξ + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "L"; + log = "SendPlcMsg: Track_1 ξ"; + } + else + { + msg += "M"; + log = "SendPlcMsg: Track_2 ξ"; + } + } + + if (PlcCmd == _ETrack_PlcCmd_Cancel_Unload)//ȡ + { + if (m_TrackType == _ETrackType_Track_1) + { + msg += "D"; + log = "SendPlcMsg: Track_1 ȡ"; + } + else + { + msg += "E"; + log = "SendPlcMsg: Track_2 ȡ"; + } + } + if (PlcCmd == _ETrack_PlcCmd_Red_Alam_On)//Ʒ + { + msg += "1"; + log = "SendPlcMsg: Ʒ"; + } + if (PlcCmd == _ETrack_PlcCmd_Red_Alam_Off)//Ʒ + { + msg += "2"; + log = "SendPlcMsg: Ʒ"; + } + gLogMgr->WriteDebugLog(log); + msg += ")#\r\n"; + return msg; +} + +//ָPLC (bStopReadMsg ǷͣȡPLC Ϣ) +bool CTrackWorkFlow::SendMsgToPlc(ETrackPlcCmd PlcCmd, bool bStopReadMsg) +{ + if (bStopReadMsg) + { + m_bStopReadMsg = true;//ͣȡ + Sleep(300); + } + CString Msg = GetSendPlcMsgStr(PlcCmd); + if (m_TrackCOM.IsOpen()) + { + char * buf = Msg.GetBuffer(); + int len = Msg.GetLength(); + m_TrackCOM.WriteBuf(buf, len);// + gLogMgr->WriteDebugLog("SendMsgToPlc--->" + Msg); + } + else + { + gLogMgr->WriteDebugLog("Plc ʧ!"); + return false; + } + //ȴPLC ź + bool Ret = true; + //Ret = WaitPlcRevMsg(PlcCmd); + if (bStopReadMsg) + { + m_bStopReadMsg = false;//ָȡ + } + Sleep(gProgram_SZ_XL->GetPlcCmdSendDelay()); + return Ret; +} +///н +void CTrackWorkFlow::ProductCarrierOpenClose(bool bOpen) +{ + m_bCarrierOpen = bOpen; + ETrackPlcCmd PlcCmd; + if (bOpen) + PlcCmd = _ETrack_PlcCmd_Open_Product; + else + PlcCmd = _ETrack_PlcCmd_Close_Product; + + SendMsgToPlc(PlcCmd, false); +} +// +void CTrackWorkFlow::VacSorbOnOff(bool bOn) +{ + ETrackPlcCmd PlcCmd; + if (bOn) + PlcCmd = _ETrack_PlcCmd_Vac_Sorb_On; + else + PlcCmd = _ETrack_PlcCmd_Vac_Sorb_Off; + + SendMsgToPlc(PlcCmd, false); +} +bool CTrackWorkFlow::PushJigOut() +{ + if (gLogMgr->IsDebuging()) + { + return true; + } + ETrackPlcCmd PlcCmd; + PlcCmd = _ETrack_PlcCmd_Push_Jig_Out; + SendMsgToPlc(PlcCmd, false); + m_bPushJigOut = false; + int cnt = 0; + while (cnt < 200 && (!m_bPushJigOut)) + { + Sleep(300); + cnt++; + } + if (cnt == 200) + { + gTrackWorkFlow1.RadAlamOnOff(true); + AfxMessageBox("Ƴξ߳ʱ!"); + gTrackWorkFlow1.RadAlamOnOff(false); + return false; + } + return true; +} +bool CTrackWorkFlow::IsJigOK() +{ + if (gLogMgr->IsDebuging()) + { + return true; + } + ETrackPlcCmd PlcCmd; + PlcCmd = _ETrack_PlcCmd_Check_Jig_In; + + m_bJigOK = false; + SendMsgToPlc(PlcCmd, false); + int cnt = 0; + while (cnt < 10 && (!m_bJigOK)) + { + Sleep(300); + cnt++; + } + if (cnt == 10) + { + gTrackWorkFlow1.RadAlamOnOff(true); + AfxMessageBox(m_TrackName + " ξδλ!"); + gTrackWorkFlow1.RadAlamOnOff(false); + return false; + } + return true; +} +//Ʒ +void CTrackWorkFlow::RadAlamOnOff(bool bOn) +{ + ETrackPlcCmd PlcCmd; + if (bOn) + PlcCmd = _ETrack_PlcCmd_Red_Alam_On; + else + PlcCmd = _ETrack_PlcCmd_Red_Alam_Off; + + SendMsgToPlc(PlcCmd, false); +} + +//֪ͨplc Զʼ +void CTrackWorkFlow::SendAutoStartFlg(bool bStart) +{ + if (m_TrackType == _ETrackType_Track_1)//ù1 ڿ + { + ETrackPlcCmd PlcCmd; + if (bStart) + PlcCmd = _ETrack_PlcCmd_Auto_Start; + else + PlcCmd = _ETrack_PlcCmd_Auto_End; + + SendMsgToPlc(PlcCmd, false); + } +} +//ȡ +void CTrackWorkFlow::CancelUnloadRequest() +{ + gLogMgr->WriteDebugLog(m_TrackName + " CancelUnloadRequest"); + SendMsgToPlc(_ETrack_PlcCmd_Cancel_Unload, false); +} + +#endif +#if 1 +//ƶλ +void CTrackWorkFlow::MoveToPos(ETrackWorkStep WorkStep) +{ + double Coord = gProgram_SZ_XL->GetMoveCoord(m_TrackType, WorkStep); + + /*if (abs(Coord)<0.005) //˵ȴͻؿξߵλ;ʼΪ0;ײ + return;*/ + + CString MotorStr = (m_TrackType == _ETrackType_Track_1) ? (MOTOR_X) : (MOTOR_X2); + CMotor &Motor = *(CMotor::GetMotor(MotorStr)); + + CWorkCmdContainer CmdContainer; + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + if (m_TrackType == _ETrackType_Track_1) + pCmd->SetbSetMotorX(); + else + pCmd->SetbSetMotorX2(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //ƶ + { + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor, Coord); + pCmd->SetMoveFlg(false);//ƶ + CmdContainer.AddCmd(pCmd); + } + //ȴƶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + if (m_TrackType == _ETrackType_Track_1) + pCmd->SetbWaitMotorX(); + else + pCmd->SetbWaitMotorX2(); + + CmdContainer.AddCmd(pCmd); + } + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.Excute(CmdContainer); + + Motor.NotifyObservers(); +} +// +void CTrackWorkFlow::Load() +{ + SetCurTrackWorkStep(_ETrack_Step_Load); + //ƽ̨ƶλ + if (gProgram_SZ_XL->IsbAutoWorkMode())//Զģʽ + { + //н + ProductCarrierOpenClose(false); + MoveToPos(_ETrack_Step_Load); + } + else//ֶģʽƶunload λ + { + MoveToPos(_ETrack_Step_Unload); + } + CString Log = m_TrackName + " Load"; + gLogMgr->WriteDebugLog(Log); + + if (gProgram_SZ_XL->IsbShieldLoad())// + { + if (m_bAutoWorking)//Զ + { + SetCurTrackWorkStep(_ETrack_Step_Load_End); + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Load_Stop); + } + return; + } + if (gProgram_SZ_XL->IsbAutoWorkMode())//Զģʽ + { + if (!IsJigOK()) + { + SetCurTrackWorkStep(_ETrack_Step_Load_Err); + Log = m_TrackName + " Load Err"; + gLogMgr->WriteDebugLog(Log); + return; + } + //źŸϻ + if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Load, true) == false) + { + SetCurTrackWorkStep(_ETrack_Step_Load_Err); + Log = m_TrackName + " Load Err"; + gLogMgr->WriteDebugLog(Log); + return; + } + } + + if (m_bAutoWorking)//Զ + { + //ȴPLC + while (!gExitApp) + { + if (m_CurWorkStep == _ETrack_Step_Load_End) + break; + Sleep(200); + } + Log = m_TrackName + " Load End"; + gLogMgr->WriteDebugLog(Log); + } + else//ԶģʽֱϽ + { + SetCurTrackWorkStep(_ETrack_Step_Load_Stop); + Log = m_TrackName + " Load Stop"; + gLogMgr->WriteDebugLog(Log); + } +} +//ƶȴλ +void CTrackWorkFlow::MoveToWaitPos() +{ + + + CString Log = m_TrackName + " MoveToWaitPos"; + gLogMgr->WriteDebugLog(Log); + + SetCurTrackWorkStep(_ETrack_Step_To_Wait_Pos); + MoveToPos(_ETrack_Step_To_Wait_Pos); + + if (m_bAutoWorking) + { + SetCurTrackWorkStep(_ETrack_Step_Mark_Waiting); + Log = m_TrackName + " Mark Waiting"; + gLogMgr->WriteDebugLog(Log); + + m_bLoadProduct = true;//Ƿload ˲Ʒ + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Stop); + } +} +//лƽ̨XY +#include "CameraHawkvis.h" +void CTrackWorkFlow::ChangePlatXYGroupIdx() +{ + int idx = (m_TrackType == _ETrackType_Track_1) ? 0 : 1; + gMotionCard_PCI1245->SetCurGpIdx(idx); + gCameraHawkvis->SwitchCamera(idx);//ʱ,л. +} +//ץȡλ,ƫƺת + +void CTrackWorkFlow::CatchMark() +{ + /*if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//ȡλ + { + CMsgBox MsgBox; + MsgBox.Show("ûмӹͼ!"); + return ; + }*/ + //ֻ״̬CatchMark + if (gCurLockTrackType != _ETrackType_NULL) + { + m_OldWorkStep = _ETrack_Step_NULL;//ǿƸı֮ǰ״̬ + return; + } + gCurLockTrackType = m_TrackType;//ǰ + + //ռδƶǰ + gClientMgr->SendCmd_CollectData(); + //gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode()); + thread t1(&CMarkAreaMgr::CollectOrgWorkData, gMarkAreaMgr, gProgram_SZ_XL->IsbSelMarkMode()); + t1.detach(); + + SetCurTrackWorkStep(_ETrack_Step_Catch_mark); + CString Log = m_TrackName + " CatchMark"; + gLogMgr->WriteDebugLog(Log); + + // + ProductCarrierOpenClose(false); + VacSorbOnOff(true); + + bool Ret = true; + Ret = IsJigOK(); + + if (gProgram_SZ_XL->IsbShieldMarking() == false)//μӹ + { + //лƽ̨XY + ChangePlatXYGroupIdx(); + CProduct &Product = gProductMgr->GetProduct(m_ProductIdx); + + //start----------Ƭ2Ƭ1Ϣ------------start + CProduct Product2 = Product; + Product2.SetbNewAddProduct(true); + //end----------Ƭ2Ƭ1Ϣƫ----------------end + + + ///--------------------ץȡξ1ƬĶλ--------------------/// + //ƶǰproduct Ļ׼ + Dbxy BasePt = Product.GetProductBasePt(); + + //2 Ҫƫƻ׼ + if (m_TrackType == _ETrackType_Track_2) + { + Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset(); + BasePt.x += Track2Offset.x; + BasePt.y += Track2Offset.y; + //Product2.SetBasePt(BasePt);//¼ΪյProduct2ƶ + } + //ƶobj + gProgramCutMgr->MoveObjData(BasePt); + //ƶarea + //obj ĵ + gObjComponentMgr->CalAllObjCenterPt(); + Dbxy AllObjCenterPt = gObjComponentMgr->GetAllObjCenterPt(); + gMarkAreaMgr->MoveAllAreaToTargetPt(AllObjCenterPt); + + Product.ResetRealMarkPt(); + //ʶλ1 + if (Ret) + { + gCommonFlowMgr->CameraCatchTwoMark(Product);//ֻץȡһ + } + if (!Product.IsSetRealMarkPt1()) + { + Ret = false; + } + //ʶλ3 + Dbxy MarkPt3; + if (Ret&&gObjComponentMgr->GetMark3Pt(MarkPt3)) + { + Ret = gCommonFlowMgr->CameraCatchMark3(Product); + } + //ʶλ2 + if (Ret) + { + gCommonFlowMgr->CameraCatchTwoMark(Product);//ֻץȡһ + } + if (!Product.IsMarkReady())//mark ʶ + { + Ret = false; + } + + ///Start--------------------ץȡξ2ƬĶλ--------------------/// + Dbxy Product2MarkPt3; + if (gClientMgr->IsbDisableServer())//θץȡ + goto CatchProduct2Finished; + + Product2.ResetRealMarkPt(); + //ʶλ1 + if (Ret) + { + gCommonFlowMgr->CameraCatchTwoMark(Product2);//ֻץȡһ + if (!Product2.IsSetRealMarkPt1()) + { + Ret = false; + } + } + //ʶλ3 + if (gObjComponentMgr->GetMark3Pt(Product2MarkPt3) && Ret) + { + Ret = gCommonFlowMgr->CameraCatchMark3(Product2); + } + //ʶλ2 + if (Ret) + { + gCommonFlowMgr->CameraCatchTwoMark(Product2);//ֻץȡһ + } + + if (!Product2.IsMarkReady())//mark ʶ + { + Ret = false; + } + else + { + gClientMgr->SendCmd_ProductInfo(Product2); + } + ///End--------------------ץȡξ2ƬĶλ--------------------End/// + + CatchProduct2Finished: + + //ץȡʧʱ/Զ״̬ʱ + if (Ret == false || m_bAutoWorking == false) + { + VacSorbOnOff(false);//շſ + // + gCurLockTrackType = _ETrackType_NULL; + } + } + + if (m_bAutoWorking) + { + if (Ret == false) + { + SetCurTrackWorkStep(_ETrack_Step_Catch_mark_Err); + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End); + } + } + else + { + //ƶĬϵλ(ֹarea λ) + gProgramCutMgr->MoveObjData(Dbxy(0, 0)); + gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0)); + SetCurTrackWorkStep(_ETrack_Step_Stop); + // + if (m_TrackType == gCurLockTrackType) + { + gCurLockTrackType = _ETrackType_NULL; + } + } + + if (m_CurWorkStep != _ETrack_Step_Catch_mark_End)//쳣ֹͣʱ + { + //ƶĬϵλ(ֹarea λ) + gProgramCutMgr->MoveObjData(Dbxy(0, 0)); + gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0)); + } + //ָ״̬ + gTrackWorkFlow1.RadAlamOnOff(false); +} +//ӹ +void CTrackWorkFlow::MarkProcess() +{ + + if (m_bAutoWorking) + { + //Զ״̬ҪCatchMark ǰܽ + if (gCurLockTrackType != m_TrackType) + return; + } + else + { + //Զ״ֻ̬ʱܽ + if (gCurLockTrackType != _ETrackType_NULL) + return; + } + gCurLockTrackType = m_TrackType;// + + CString Log = m_TrackName + " MarkProcess"; + gLogMgr->WriteDebugLog(Log); + + if (gProgram_SZ_XL->IsbShieldMarking() == false)//μӹ + { + //лƽ̨XY + ChangePlatXYGroupIdx(); +#if 1 + CProduct &Product = gProductMgr->GetProduct(m_ProductIdx); + if (!Product.IsMarkReady()) + { + CString Log = m_TrackName + " ûʶλ!"; + gLogMgr->WriteDebugLog(Log); + return; + } + if (!IsJigOK()) + { + CString Log = m_TrackName + " δ⵽ξ!"; + gLogMgr->WriteDebugLog(Log); + return; + } + gWorkTime.StartRecordTime();//ʱʼ + + //õǰĹ + SetCurTrackWorkStep(_ETrack_Step_Marking); + //XY л + MarkProcessExt(); +#endif + //õǰĹ + SetCurTrackWorkStep(_ETrack_Step_Marking); + //ƶĬϵλ + gProgramCutMgr->MoveObjData(Dbxy(0, 0)); + gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0)); + + } + gCurLockTrackType = _ETrackType_NULL;// + VacSorbOnOff(false);//շſ + + if (m_bAutoWorking) + { + SetCurTrackWorkStep(_ETrack_Step_Mark_End); + Log = m_TrackName + " Mark End"; + gLogMgr->WriteDebugLog(Log); + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Mark_Stop); + Log = m_TrackName + " Mark Stop"; + gLogMgr->WriteDebugLog(Log); + } + m_CutProductCnt++;//иƷ + WriteRecordTimesToFile(); + gWorkTime.StopRecordTime();//ֹͣʱ +} +bool CTrackWorkFlow::MarkProcessExt() +{ + //øùӹƫ + Dbxy MarkOffset = gProgram_SZ_XL->GetTrackMarkOffset(m_TrackType); + gCommonFlowMgr->SetAdjustOffsetAll(MarkOffset); + //¼ǰиĹ + gProgram_SZ_XL->SetCurMarkingTrack(m_TrackType); + CProduct &Product = gProductMgr->GetProduct(m_ProductIdx); + bool Ret; + //и + if (!gProgram_SZ_XL->IsbSelMarkMode())//ȫӹʱԶѡobj + gObjComponentMgr->SelAllObj(); + Ret = gProgramCutMgr->StartWork(Product, true); + // + Product.ResetAffinePars(); + //ָ + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance();//ָ + CmdContainer.Clear(); + //ȡѡ״̬ + gObjComponentMgr->NotSelAllObj(); + return Ret; +} +//ȥ߿ +void CTrackWorkFlow::ThrowEdge() +{ + SetCurTrackWorkStep(_ETrack_Step_Throw_Edge); + //֪ͨplc + CString Log = m_TrackName + " Throw Edge"; + gLogMgr->WriteDebugLog(Log); + + if (gProgram_SZ_XL->IsbShieldLoad())// + { + if (m_bAutoWorking)//Զ + SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + else + SetCurTrackWorkStep(_ETrack_Step_Stop); + return; + } + + if (gProgram_SZ_XL->IsbAutoWorkMode())//Զģʽ + { + //ƽ̨ƶλ + MoveToPos(_ETrack_Step_Load); + + if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Throw_Edge, true) == false) + { + SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Err); + Log = m_TrackName + " Throw Edge Err"; + gLogMgr->WriteDebugLog(Log); + return; + } + if (m_bAutoWorking)//Զ + { + //ȴ + while (!gExitApp) + { + if (m_CurWorkStep == _ETrack_Step_Throw_Edge_End) + break; + Sleep(200); + } + Log = m_TrackName + " Throw Edge End"; + gLogMgr->WriteDebugLog(Log); + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Stop); + Log = m_TrackName + " Load Stop"; + gLogMgr->WriteDebugLog(Log); + } + } + else + { + SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End); + Log = m_TrackName + " Throw Edge End"; + gLogMgr->WriteDebugLog(Log); + } +} +// +void CTrackWorkFlow::UnLoad() +{ + //õǰ + SetCurTrackWorkStep(_ETrack_Step_Unload); + //ϻ״̬ + if (gProgram_SZ_XL->IsbCheckUnloadState()) + { + //һûϣϻڹϵʱжΪunload + if (gMotionCard_PCI1245->CheckUnloadState() == false) + { + //ȡһ״̬ + ETrackWorkStep OtherTrackWorkStep = gProgram_SZ_XL->GetOtherTrackWorkStep(m_TrackType); + if (OtherTrackWorkStep != _ETrack_Step_Unload) + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + CMsgBox MsgBox; + MsgBox.Show("ϻλ쳣!"); + return; + } + } + } + //ƽ̨ƶλ + MoveToPos(_ETrack_Step_Unload); + //Զ + ProductCarrierOpenClose(true); + + //֪ͨ + CString Log = m_TrackName + " UnLoad"; + gLogMgr->WriteDebugLog(Log); + + if (gProgram_SZ_XL->IsbShieldUnLoad())// + { + if (m_bAutoWorking)//Զ + SetCurTrackWorkStep(_ETrack_Step_Unload_End); + else + SetCurTrackWorkStep(_ETrack_Step_Stop); + return; + } + + //һunload ,Ҫȴunload + if (gProgram_SZ_XL->IsbAutoWorkMode()) + { + while (!gExitApp) + { + Sleep(200); + //ȡһ״̬ + ETrackWorkStep OtherTrackWorkStep = gProgram_SZ_XL->GetOtherTrackWorkStep(m_TrackType); + if (OtherTrackWorkStep != _ETrack_Step_Unload) + { + break; + } + } + } + + if (m_bAutoWorking)//Զ + { + if (gProgram_SZ_XL->IsbAutoWorkMode())//Զģʽ + { + //֪ͨϻ ؾλ + m_bPushJigReady = false; + if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false) + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + Log = m_TrackName + " unload Err"; + gLogMgr->WriteDebugLog(Log); + return; + } + //ȴϻƳؾλ + CString str = "1"; + if (m_TrackType == _ETrackType_Track_2) + str = "2"; + CString logstr; + logstr.Format("ȴ[ϻ] ˶[%s]ؾλ.", str); + gLogMgr->WriteDebugLog(logstr); + + + int cnt = 0; + while ((!m_bPushJigReady) && cnt < 400) + { + Sleep(300); + cnt++; + } + if (cnt == 400) + { + Log = m_TrackName + " [ϻ] ˶ؾλ ʱ!"; + gLogMgr->WriteDebugLog(Log); + gTrackWorkFlow1.RadAlamOnOff(true); + AfxMessageBox(m_TrackName + " [ϻ] ˶ؾλʱ!ֶ!"); + gTrackWorkFlow1.RadAlamOnOff(false); + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + return; + } + + if (!PushJigOut())//Ƴξ + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + return; + } + + Sleep(3000); + //ƽ̨ƶ ͻؿξߵλ + MoveToPos(_ETrack_Step_WaitBack); + gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//ϻ,ѵɻξλ + m_bLoadProduct = false;//Ƿload ˲Ʒ + } + else//ֶģʽֱϲ + { + SetCurTrackWorkStep(_ETrack_Step_Unload_End); + } + } + else + { + if (AfxMessageBox("ȷֶ?", MB_YESNO) != IDYES) + { + SetCurTrackWorkStep(_ETrack_Step_NULL); + return; + } + //֪ͨϻ + m_bPushJigReady = false; + if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false) + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + Log = m_TrackName + " unload Err"; + gLogMgr->WriteDebugLog(Log); + return; + } + //ȴϻƳؾλ + CString str = "1"; + if (m_TrackType == _ETrackType_Track_2) + str = "2"; + CString logstr; + logstr.Format("ȴ[ϻ] ˶[%s]ؾλ.", str); + gLogMgr->WriteDebugLog(logstr); + + + int cnt = 0; + while ((!m_bPushJigReady) && cnt < 400) + { + Sleep(300); + cnt++; + } + if (cnt == 400) + { + Log = m_TrackName + " [ϻ] ˶ؾλ ʱ!"; + gLogMgr->WriteDebugLog(Log); + gTrackWorkFlow1.RadAlamOnOff(true); + AfxMessageBox(m_TrackName + "[ϻ] ˶ؾλʱ!ֶ!"); + gTrackWorkFlow1.RadAlamOnOff(false); + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + return; + } + + if (!PushJigOut())//Ƴξ + { + SetCurTrackWorkStep(_ETrack_Step_Unload_Err); + return; + } + + Sleep(3000); + //ƽ̨ƶ ͻؿξߵλ + MoveToPos(_ETrack_Step_WaitBack); + gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//ϻ,ѵɻξλ + m_bLoadProduct = false;//Ƿload ˲Ʒ + } +} +//ƶY ᵽȫ +void CTrackWorkFlow::MoveMotorYToSafePos() +{ + return; + double DangerCoordStart;//ΣշΧstart + double DangerCoordEnd;//ΣշΧend + double SafeCoord;//ȫ + gProgram_SZ_XL->GetTrackMotorYCoord(m_TrackType, DangerCoordStart, DangerCoordEnd, SafeCoord); + + //ȡǰY + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + double CoordY = gMotionCard_PCI1245->GetMotorCoord(MotorY); + + if (DangerCoordStart <= CoordY && CoordY <= DangerCoordEnd) + { + gLogMgr->WriteDebugLog("Move MotorY To Safe Coord"); + gCurLockTrackType = m_TrackType;//ǰ + //ƶY ᵽȫ + CWorkCmdContainer CmdContainer; + //õٶ + { + CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed(); + pCmd->SetbSetMotorY(); + pCmd->SetSpeedType(_SpeedType_Move); + CmdContainer.AddCmd(pCmd); + } + //ƶ + { + CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(MotorY, SafeCoord); + pCmd->SetMoveFlg(false);//ƶ + CmdContainer.AddCmd(pCmd); + } + //ȴƶ + { + CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop(); + pCmd->SetbWaitMotorY(); + CmdContainer.AddCmd(pCmd); + } + CWorkCmdInvoker WorkInvoker;// + WorkInvoker.Excute(CmdContainer); + + MotorY.NotifyObservers(); + + // + gCurLockTrackType = _ETrackType_NULL; + } + else + { + gLogMgr->WriteDebugLog("MotorY At Safe Coord"); + } +} +CString CTrackWorkFlow::GetRecordFilePath() +{ + CString Path = (m_TrackType == _ETrackType_Track_1) ? (TRACK1_RECORD_FILE) : (TRACK2_RECORD_FILE); + CString FilePath; + CFileMgr FileMgr; + FileMgr.GetFullFilePath(FilePath, Path); + return FilePath; +} +//ӹд뵽ļ +void CTrackWorkFlow::WriteRecordTimesToFile() +{ + CString FilePath = GetRecordFilePath(); + + CFile file(FilePath, CFile::modeReadWrite | CFile::modeCreate); + CArchive ar(&file, CArchive::store); + + ar << m_CutProductCnt; +} +void CTrackWorkFlow::ReadRecordTimesFromFile() +{ + CString FilePath = GetRecordFilePath(); + + CFile file; + if (file.Open(FilePath, CFile::modeRead)) + { + CArchive ar(&file, CArchive::load); + ar >> m_CutProductCnt; + } +} +void CTrackWorkFlow::ResetRecordTimes() +{ + m_CutProductCnt = 0; + WriteRecordTimesToFile(); +} + +#endif diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h new file mode 100644 index 0000000..f2a17d8 --- /dev/null +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h @@ -0,0 +1,134 @@ +#pragma once +#include "CommPortMgr.h" +#include +//Ĺ +enum ETrackWorkStep +{ + _ETrack_Step_NULL = 0, + _ETrack_Step_Stop,//ֹͣ״̬1 + _ETrack_Step_Reset_Load_Request,//λϻź2 + _ETrack_Step_Load,//3 + _ETrack_Step_Load_End,//4 + _ETrack_Step_Load_Stop,//,ִֹͣ5 + _ETrack_Step_Load_Err,//ϴ6 + _ETrack_Step_To_Wait_Pos,//ƶȴλ7 + _ETrack_Step_Mark_Waiting,//ȴӹ8 + _ETrack_Step_Catch_mark,//ץȡλ9 + _ETrack_Step_Catch_mark_End,//ץȡλ10 + _ETrack_Step_Catch_mark_Err,//ץȡλ11 + _ETrack_Step_Marking,//ӹ12 + _ETrack_Step_Mark_Stop,//ӹֹͣ13 + _ETrack_Step_Mark_Err,//ӹ14 + _ETrack_Step_Mark_End,//ӹ15 + _ETrack_Step_Throw_Edge,//ȥ߿16 + _ETrack_Step_Throw_Edge_End,//ȥ߿17 + _ETrack_Step_Throw_Edge_Stop,//ȥ߿,ִֹͣ18 + _ETrack_Step_Throw_Edge_Err,//ȥ߿19 + _ETrack_Step_Unload,//20 + _ETrack_Step_PulledOut,//ȴξ + _ETrack_Step_WaitBack,//ȴͻؿξ + _ETrack_Step_Unload_End,//21 + _ETrack_Step_Unload_Err,//ϴ22 +}; +// +enum ETrackType +{ + _ETrackType_NULL=0,// + _ETrackType_Track_1,//1 + _ETrackType_Track_2,//2 +}; + +//͸plc ָ +enum ETrackPlcCmd +{ + _ETrack_PlcCmd_Auto_Start = 0,//Զʼ + _ETrack_PlcCmd_Auto_End,//Զ + _ETrack_PlcCmd_Load,// + _ETrack_PlcCmd_Unload,// + _ETrack_PlcCmd_Open_Product,// + _ETrack_PlcCmd_Close_Product,//н + _ETrack_PlcCmd_Cancel_Unload,//ȡ + _ETrack_PlcCmd_Vac_Sorb_On,// + _ETrack_PlcCmd_Vac_Sorb_Off,// + _ETrack_PlcCmd_Red_Alam_On,//Ʒ + _ETrack_PlcCmd_Red_Alam_Off,//Ʒ + _ETrack_PlcCmd_Push_Jig_Out,//Ƴξ + _ETrack_PlcCmd_Check_Jig_In,//ξߵλ +}; + +//: +class CTrackWorkFlow +{ +public: + CTrackWorkFlow(CString Name); + ~CTrackWorkFlow(void); + void SetComPar(int Port,int BaudRate); + void WorkFlowStart(bool bOpenCom=true); + void WorkFlowCtrl(); + void ExecuteCurStep(); + bool StartAutoWork(); + void StopAutoWork(); + void ReadPlcMsg(); + void ManualOperation(ETrackWorkStep TrackWorkStep); + bool IsbAutoWorking(){return m_bAutoWorking;}; + void SetCurTrackWorkStep(ETrackWorkStep Step); + ETrackWorkStep GetCurTrackWorkStep(){return m_CurWorkStep;}; + int GetCurTrackWorkStepInt(){return (int)m_CurWorkStep;}; + void SendAutoStartFlg(bool bStart); + void ProductCarrierOpenClose(bool bOpen); + void VacSorbOnOff(bool bOn); + bool PushJigOut(); + bool IsJigOK();//ξߵλ + void RadAlamOnOff(bool bOn); + int GetCutProductCnt(){return m_CutProductCnt;}; + void ReadRecordTimesFromFile(); + void ResetRecordTimes(); + bool SendMsgToPlc(ETrackPlcCmd PlcCmd,bool bStopReadMsg); + void MoveMotorYToSafePos(); + void CancelUnloadRequest(); + void SetbCircleStop(bool b){m_bCircleStop = b;}; + bool GetbCircleStop() { return m_bCircleStop ; }; + BOOL m_bCarrierOpen = true;//ǰǷɿ +private: + void Load(); + void MoveToWaitPos(); + void MoveToPos(ETrackWorkStep WorkStep); + void MarkProcess(); + bool MarkProcessExt(); + void ReadPlcMsgExt(); + void AnalyzeRecvPlcCmd(char *buf,int len); + void ThrowEdge(); + void UnLoad(); + void CatchMark(); + void ChangePlatXYGroupIdx(); + CString GetSendPlcMsgStr(ETrackPlcCmd PlcCmd); + void WriteRecordTimesToFile(); + CString GetRecordFilePath(); +public: + static CCommPortMgr m_TrackCOM;//ͨõĴڹ +private: + int m_ComPort;//ͨôں + int m_ComBaudRate;//ͨò + bool m_bStopReadMsg;//Ƿͣȡplc Ϣ + int m_ReadMsgDelay;//ȡplc Ϣʱms + + ETrackType m_TrackType;// + ETrackWorkStep m_CurWorkStep;//ǰĹ + ETrackWorkStep m_OldWorkStep;//֮ǰĹ(жǷ仯) + CString m_TrackName;// + bool m_bAutoWorking;//ǷԶӹ + int m_ProductIdx;//ӦƷλı + + bool m_bLoadProduct;//Ƿload ˲Ʒ + int m_CutProductCnt;//иƷ + bool m_bCircleStop;//ǰѭֹͣ + +public: + atomic_bool m_bPushJigOut = false;//Ƴָ,ǷƳؾ + atomic_bool m_bPullJigOut = false;//ָ,Ƿؾ + atomic_bool m_bPushJigReady = false;//ǰ,ǷƳξ + atomic_bool m_bJigOK = false;//ǰ,ξǷλ +}; + +extern CTrackWorkFlow gTrackWorkFlow1;//1 ̹ +extern CTrackWorkFlow gTrackWorkFlow2;//2 ̹ diff --git a/LaiPuLaser/ProgressMgr.cpp b/LaiPuLaser/ProgressMgr.cpp new file mode 100644 index 0000000..63fcd89 --- /dev/null +++ b/LaiPuLaser/ProgressMgr.cpp @@ -0,0 +1,23 @@ +#include "StdAfx.h" +#include "ProgressMgr.h" +#include "GlobalFunction.h" + + + +CProgressMgr gProgressMgr; +CProgressMgr::CProgressMgr(void) +{ + m_WorkProgress = NULL; +} +CProgressMgr::~CProgressMgr(void) +{ +} +//õǰ +void CProgressMgr::SetCurProgress(int cur,int total) +{ + double progress = (static_cast(cur)/static_cast(total))*100; + if(m_WorkProgress) + { + m_WorkProgress->SetPos(static_cast(progress)); + } +} \ No newline at end of file diff --git a/LaiPuLaser/ProgressMgr.h b/LaiPuLaser/ProgressMgr.h new file mode 100644 index 0000000..28d50c7 --- /dev/null +++ b/LaiPuLaser/ProgressMgr.h @@ -0,0 +1,17 @@ +#pragma once +#include "Observer.h" + +//ӹȹ +class CProgressMgr +{ +public: + CProgressMgr(void); + ~CProgressMgr(void); + void SetWorkProgress(CProgressCtrl *p){m_WorkProgress = p;}; + void SetCurProgress(int cur,int total); + void SetCurProgress(double val); +private: + CProgressCtrl *m_WorkProgress; +}; + +extern CProgressMgr gProgressMgr; \ No newline at end of file diff --git a/LaiPuLaser/Propertie.cpp b/LaiPuLaser/Propertie.cpp new file mode 100644 index 0000000..b65bf0b --- /dev/null +++ b/LaiPuLaser/Propertie.cpp @@ -0,0 +1,116 @@ +#include "StdAfx.h" +#include "Propertie.h" +#include "LogMgr.h" +#include "FileMgr.h" + +CPropertie::CPropertie() +{ + m_pVal = NULL; + m_pModule = NULL; +} +CPropertie::~CPropertie() +{ +} +//ıԵֵ֪ͨԶӦģ +void CPropertie::PropertyChangeVal(const COleVariant &OleVar) +{ + switch(m_Type) + { + case _PROP_TYPE_BOOL: + *((bool *)m_pVal) = OleVar.boolVal; + break; + case _PROP_TYPE_COLOR: + *((COLORREF *)m_pVal) = (COLORREF)OleVar.lVal; + break; + case _PROP_TYPE_DOUBLE: + *((double *)m_pVal) = OleVar.dblVal; + break; + case _PROP_TYPE_INT: + *((int *)m_pVal) = OleVar.lVal; + break; + case _PROP_TYPE_STRING: + *((CString *)m_pVal) = OleVar.bstrVal; + break; + default: + break; + } + //дļ + WriteRead(false); + //֪ͨӦģԱ仯 + if(m_pModule) + { + m_pModule->OnPropertyChanged(); + } +} +void CPropertie::WriteRead(bool bRead) +{ + CString FileName = _T("\\Parameter\\") + m_Path + _T("\\")+m_Name+_T(".var"); + if(bRead) + ReadFromFile(FileName); + else + WriteToFile(FileName); +} +//浽ļ +void CPropertie::WriteToFile(CString &FileName) +{ + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FileName);//ȡ· + CFile file(filepath,CFile::modeReadWrite|CFile::modeCreate); + CArchive ar(&file,CArchive::store); + + switch(m_Type) + { + case _PROP_TYPE_BOOL: + ar<<(*((bool *)m_pVal)); + break; + case _PROP_TYPE_DOUBLE: + ar<<(*((double *)m_pVal)); + break; + case _PROP_TYPE_INT: + ar<<(*((int *)m_pVal)); + break; + case _PROP_TYPE_COLOR: + ar<<(*((int *)m_pVal)); + break; + case _PROP_TYPE_STRING: + ar<<(*((CString *)m_pVal)); + break; + default: + break; + } +} +//ļȡֵ +void CPropertie::ReadFromFile(CString &FileName) +{ + CFileMgr FileMgr; + char filepath[1024]; + FileMgr.GetFullFilePath(filepath,FileName);//ȡ· + + CFile file; + if(file.Open(filepath,CFile::modeRead)) + { + CArchive ar(&file,CArchive::load); + switch(m_Type) + { + case _PROP_TYPE_BOOL: + ar>>(*((bool *)m_pVal)); + break; + case _PROP_TYPE_DOUBLE: + ar>>(*((double *)m_pVal)); + break; + case _PROP_TYPE_INT: + ar>>(*((int *)m_pVal)); + break; + case _PROP_TYPE_COLOR: + ar>>(*((int *)m_pVal)); + break; + case _PROP_TYPE_STRING: + ar>>(*((CString *)m_pVal)); + break; + default: + break; + } + } +} + diff --git a/LaiPuLaser/Propertie.h b/LaiPuLaser/Propertie.h new file mode 100644 index 0000000..0aad2c8 --- /dev/null +++ b/LaiPuLaser/Propertie.h @@ -0,0 +1,31 @@ +#pragma once +#include "GlobalDefine.h" +#include "EnumPropertieType.h" + + +class CModule; +//ģ +class CPropertie +{ +public: + CPropertie(); + ~CPropertie(); + void SetpVal(void *pVal){m_pVal = pVal;}; + void SetType(PROPERTIE_TYPE Type){m_Type = Type;}; + void SetpModule(CModule *pModule){m_pModule = pModule;}; + void SetName(CString &Name){m_Name = Name;}; + void SetPath(CString &Path){m_Path = Path;}; + void PropertyChangeVal(const COleVariant &OleVar); + void WriteRead(bool bRead); +private: + void WriteToFile(CString &FileName); + void ReadFromFile(CString &FileName); +private: + void * m_pVal;//ڴַ + PROPERTIE_TYPE m_Type;//Ե + CModule * m_pModule;//ģĵַ + CString m_Path;//洢· + CString m_Name;// +}; + + diff --git a/LaiPuLaser/PropertieMgr.cpp b/LaiPuLaser/PropertieMgr.cpp new file mode 100644 index 0000000..96e1250 --- /dev/null +++ b/LaiPuLaser/PropertieMgr.cpp @@ -0,0 +1,81 @@ +#include "StdAfx.h" +#include "PropertieMgr.h" +#include "Propertie.h" + +CPropertieMgr gDevicePropertieMgr;//豸Թ +CPropertieMgr gDrawPropertieMgr;//Թ + +CPropertieMgr::CPropertieMgr(void) +{ + m_bSaveAllPropertie = true;//Ҫ洢 +} +CPropertieMgr::~CPropertieMgr(void) +{ + //ɾ + DelAllPropertie(); + DelAllPropertieVec(); +} +//ӦԱ仯-->֪ͨӦģ +void CPropertieMgr::OnPropertyChanged(LPARAM lParam) +{ + CMFCPropertyGridProperty*pProp = (CMFCPropertyGridProperty*)lParam; + //ȡӳ + if (m_PropertieValMap.count(pProp)) + { + CPropertie *pPropertie = m_PropertieValMap[pProp]; + pPropertie->PropertyChangeVal(pProp->GetValue());//ֵ + } +} +//ӳ +void CPropertieMgr::Insert(CMFCPropertyGridProperty* p1,CPropertie* p2) +{ + if(m_bSaveAllPropertie) + { + m_AllPropertieVec.push_back(p2); + } + else + { + m_PropertieValMap.insert(make_pair(p1, p2)); + } +} +void CPropertieMgr::DelAllPropertieVec() +{ + vector::iterator iter = m_AllPropertieVec.begin(); + vector::iterator iter_end = m_AllPropertieVec.end(); + for(;iter!=iter_end;iter++) + { + CPropertie *pPropertie = (*iter); + if(pPropertie) + { + delete pPropertie; + } + } +} +//ɾ +void CPropertieMgr::DelAllPropertie() +{ + map::iterator iter = m_PropertieValMap.begin(); + map::iterator iter_end = m_PropertieValMap.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).second) + { + delete (*iter).second; + } + } + m_PropertieValMap.clear(); +} +//ǿƱеԵļ +void CPropertieMgr::SaveAllPropertie() +{ + vector::iterator iter = m_AllPropertieVec.begin(); + vector::iterator iter_end = m_AllPropertieVec.end(); + for(;iter!=iter_end;iter++) + { + CPropertie *pPropertie = (*iter); + if(pPropertie) + { + pPropertie->WriteRead(false); + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/PropertieMgr.h b/LaiPuLaser/PropertieMgr.h new file mode 100644 index 0000000..f910771 --- /dev/null +++ b/LaiPuLaser/PropertieMgr.h @@ -0,0 +1,26 @@ +#pragma once +#include "GlobalDefine.h" + +class CPropertie; + +//ģ--Եӳ +class CPropertieMgr +{ +public: + CPropertieMgr(void); + ~CPropertieMgr(void); + void Insert(CMFCPropertyGridProperty* p1,CPropertie* p2); + void OnPropertyChanged(LPARAM lParam); + void DelAllPropertie(); + void SaveAllPropertie(); + void SetSaveAllPropertie(bool b){m_bSaveAllPropertie = b;}; +private: + void DelAllPropertieVec(); +private: + map m_PropertieValMap;//ӳ + bool m_bSaveAllPropertie;//Ҫ洢 + vector m_AllPropertieVec;//Ҫ洢(ǿƱ) +}; + +extern CPropertieMgr gDevicePropertieMgr; +extern CPropertieMgr gDrawPropertieMgr;//Թ \ No newline at end of file diff --git a/LaiPuLaser/PropertiesWnd.cpp b/LaiPuLaser/PropertiesWnd.cpp new file mode 100644 index 0000000..7dd9b70 --- /dev/null +++ b/LaiPuLaser/PropertiesWnd.cpp @@ -0,0 +1,190 @@ + +#include "stdafx.h" + +#include "PropertiesWnd.h" +#include "Resource.h" +#include "MainFrm.h" +#include "LaiPuLaser.h" +#include "Propertie.h" +#include "Module.h" +#include "LogMgr.h" +#include "PropertieMgr.h" +#include "ModuleDeviceMgr.h" + + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#define new DEBUG_NEW +#endif + +///////////////////////////////////////////////////////////////////////////// +// CResourceViewBar + +CPanePropertiesWnd::CPanePropertiesWnd() +{ +} + +CPanePropertiesWnd::~CPanePropertiesWnd() +{ +} + +BEGIN_MESSAGE_MAP(CPanePropertiesWnd, CDockablePane) + ON_WM_CREATE() + ON_WM_SIZE() + ON_COMMAND(ID_EXPAND_ALL, OnExpandAllProperties) + ON_UPDATE_COMMAND_UI(ID_EXPAND_ALL, OnUpdateExpandAllProperties) + ON_COMMAND(ID_SORTPROPERTIES, OnSortProperties) + ON_UPDATE_COMMAND_UI(ID_SORTPROPERTIES, OnUpdateSortProperties) + ON_WM_SETFOCUS() + ON_WM_SETTINGCHANGE() +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CResourceViewBar Ϣ +void CPanePropertiesWnd::DoDataExchange(CDataExchange* pDX) +{ + CDockablePane::DoDataExchange(pDX); + DDX_Control(pDX, ID_PROPERTY_COMB, m_wndObjectCombo); + +} +#if 1 +int CPanePropertiesWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CDockablePane::OnCreate(lpCreateStruct) == -1) + return -1; + + CRect rectDummy; + rectDummy.SetRectEmpty(); + + // : + //const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + + if (!m_wndObjectCombo.Create(dwViewStyle, rectDummy, this, ID_PROPERTY_COMB)) + { + TRACE0("δܴ \n"); + return -1; // δܴ + } + + IniObjectCombo(); + + if (!m_wndPropList.Create(WS_VISIBLE | WS_CHILD, rectDummy, this, 2)) + { + TRACE0("δܴ\n"); + return -1; // δܴ + } + + InitPropList(); + + m_wndToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_PROPERTIES); + m_wndToolBar.LoadToolBar(IDR_PROPERTIES, 0, 0, TRUE /* */); + m_wndToolBar.CleanUpLockedImages(); + m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_PROPERTIES_HC : IDR_PROPERTIES, 0, 0, TRUE /* */); + + m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); + m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT)); + m_wndToolBar.SetOwner(this); + + // ͨ˿ؼ·ɣͨ·: + m_wndToolBar.SetRouteCommandsViaFrame(FALSE); + + AdjustLayout(); + return 0; +} +void CPanePropertiesWnd::OnSize(UINT nType, int cx, int cy) +{ + CDockablePane::OnSize(nType, cx, cy); + AdjustLayout(); +} +#endif +void CPanePropertiesWnd::OnExpandAllProperties() +{ + m_wndPropList.ExpandAll(); +} + +void CPanePropertiesWnd::OnUpdateExpandAllProperties(CCmdUI* /* pCmdUI */) +{ +} + +void CPanePropertiesWnd::OnSortProperties() +{ + m_wndPropList.SetAlphabeticMode(!m_wndPropList.IsAlphabeticMode()); +} + +void CPanePropertiesWnd::OnUpdateSortProperties(CCmdUI* pCmdUI) +{ + pCmdUI->SetCheck(m_wndPropList.IsAlphabeticMode()); +} + +void CPanePropertiesWnd::InitPropList() +{ + SetPropListFont(); + m_wndPropList.EnableHeaderCtrl(FALSE); + m_wndPropList.EnableDescriptionArea();//˵area + m_wndPropList.SetVSDotNetLook(); + //m_wndPropList.MarkModifiedProperties();//DZ޸ĵ +} +//һ +void CPanePropertiesWnd::InsertGridProperty(CMFCPropertyGridProperty* pProp) +{ + if(pProp) + { + m_wndPropList.AddProperty(pProp); + } +} +void CPanePropertiesWnd::OnSetFocus(CWnd* pOldWnd) +{ + CDockablePane::OnSetFocus(pOldWnd); + m_wndPropList.SetFocus(); +} + +void CPanePropertiesWnd::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) +{ + CDockablePane::OnSettingChange(uFlags, lpszSection); + SetPropListFont(); +} + +void CPanePropertiesWnd::SetPropListFont() +{ + ::DeleteObject(m_fntPropList.Detach()); + + LOGFONT lf; + afxGlobalData.fontRegular.GetLogFont(&lf); + + NONCLIENTMETRICS info; + info.cbSize = sizeof(info); + + afxGlobalData.GetNonClientMetrics(info); + + lf.lfHeight = info.lfMenuFont.lfHeight; + lf.lfWeight = info.lfMenuFont.lfWeight; + lf.lfItalic = info.lfMenuFont.lfItalic; + + m_fntPropList.CreateFontIndirect(&lf); + + m_wndPropList.SetFont(&m_fntPropList); + m_wndObjectCombo.SetFont(&m_fntPropList); +} +#if 1 +//ˢ¿ؼλ +void CPanePropertiesWnd::AdjustLayout() +{ + if (GetSafeHwnd() == NULL) + { + return; + } + + CRect rectClient,rectCombo; + GetClientRect(rectClient); + + m_wndObjectCombo.GetWindowRect(&rectCombo); + + int cyCmb = rectCombo.Size().cy; + int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy; + + m_wndObjectCombo.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), 400, SWP_NOACTIVATE | SWP_NOZORDER); + m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER); + m_wndPropList.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb + cyTlb, rectClient.Width(), rectClient.Height() -(cyCmb+cyTlb), SWP_NOACTIVATE | SWP_NOZORDER); +} +#endif diff --git a/LaiPuLaser/PropertiesWnd.h b/LaiPuLaser/PropertiesWnd.h new file mode 100644 index 0000000..010383c --- /dev/null +++ b/LaiPuLaser/PropertiesWnd.h @@ -0,0 +1,53 @@ + +#pragma once + +#include "GlobalDefine.h" +#include "EnumPropertieType.h" + + +class CPropertiesToolBar : public CMFCToolBar +{ +public: + virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) + { + CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler); + } + virtual BOOL AllowShowOnList() const { return FALSE; } +}; +//ͣ +class CPanePropertiesWnd : public CDockablePane +{ +public: + CPanePropertiesWnd(); + virtual ~CPanePropertiesWnd(); +public: + void AdjustLayout(); + void InsertGridProperty(CMFCPropertyGridProperty* pProp); + void SetVSDotNetLook(BOOL bSet) + { + m_wndPropList.SetVSDotNetLook(bSet); + m_wndPropList.SetGroupNameFullWidth(bSet); + } +protected: + CFont m_fntPropList; + CComboBox m_wndObjectCombo; + CPropertiesToolBar m_wndToolBar; + CMFCPropertyGridCtrl m_wndPropList; +protected: + virtual void RemoveAllProperty(){}; + virtual void IniObjectCombo(){}; +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnExpandAllProperties(); + afx_msg void OnUpdateExpandAllProperties(CCmdUI* pCmdUI); + afx_msg void OnSortProperties(); + afx_msg void OnUpdateSortProperties(CCmdUI* pCmdUI); + afx_msg void OnSetFocus(CWnd* pOldWnd); + afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection); + DECLARE_MESSAGE_MAP() + void InitPropList(); + void SetPropListFont(); +}; + diff --git a/LaiPuLaser/Raw2Rgb.lib b/LaiPuLaser/Raw2Rgb.lib new file mode 100644 index 0000000..be581dc Binary files /dev/null and b/LaiPuLaser/Raw2Rgb.lib differ diff --git a/LaiPuLaser/ReadMe.txt b/LaiPuLaser/ReadMe.txt new file mode 100644 index 0000000..54374e3 --- /dev/null +++ b/LaiPuLaser/ReadMe.txt @@ -0,0 +1,145 @@ +================================================================================ +MICROSOFT : LaiPuLaser Ŀ +=============================================================================== + +ӦóΪ LaiPuLaser Ӧó򡣴Ӧó򲻽ʾ Microsoft Ļʹ÷ΪдӦó㡣 + +ļҪ LaiPuLaser Ӧóÿļݡ + +LaiPuLaser.vcxproj +ʹӦóɵ VC++ ĿĿļ +ɸļ Visual C++ İ汾ϢԼйʹӦóѡƽ̨úĿܵϢ + +LaiPuLaser.vcxproj.filters + ʹáӦó򵼡ɵ VC++ Ŀɸѡļ + йĿļɸѡ֮ĹϢ IDE УֹͨضڵԷʽʾչļ磬.cppļ롰Դļɸѡ + +LaiPuLaser.h +ӦóҪͷļĿضͷļ( Resource.h) CLaiPuLaserApp Ӧóࡣ + +LaiPuLaser.cpp +ǰӦó CLaiPuLaserApp ҪӦóԴļ + +LaiPuLaser.rc +dzʹõ Microsoft Windows Դб RES Ŀ¼д洢ͼꡢλͼ͹ꡣļֱ Microsoft Visual C++ нб༭ĿԴλ 2052 С + +res\LaiPuLaser.ico +ӦóͼͼļͼҪԴļ LaiPuLaser.rc С + +res\LaiPuLaser.rc2 +ļ Microsoft Visual C++ нб༭ԴӦýԴ༭༭ԴڴļС + +LaiPuLaser.reg +һʾ .reg ļʾ˿ܽΪõעõࡣԽ +Ӧóһʹõ .reg ļԽɾĬϵ RegisterShellFileTypes עᡣ + + +///////////////////////////////////////////////////////////////////////////// + +ܴ: +Ŀ׼ MFC 档 + +MainFrm.h, MainFrm.cpp +Щļ CMainFrame +CMDIFrameWnd MDI ܹܡ + +///////////////////////////////////////////////////////////////////////////// + +ӿܴ: + +ChildFrm.hChildFrm.cpp +Щļ岢ʵ CChildFrame ֧࣬ MDI ӦóеӴڡ + +///////////////////////////////////////////////////////////////////////////// + +Ӧó򵼴һĵͺһͼ: + +LaiPuLaserDoc.hLaiPuLaserDoc.cpp - ĵ +Щļ CLaiPuLaserDoc ࡣ༭Щļĵݲʵļͼ(ͨ CLaiPuLaserDoc::Serialize) +ĵַ: +ļչ: mak +ļ ID: LaiPuLaser.Document +ܱ: LaiPuLaser +ĵ: LaiPuLaser +ɸѡ: LaiPuLaser Files (*.mak) +ļ¼: LaiPuLaser +ļȫ: LaiPuLaser.Document + +LaiPuLaserView.hLaiPuLaserView.cpp - ĵͼ +Щļ CLaiPuLaserView ࡣ +CLaiPuLaserView ڲ鿴 CLaiPuLaserDoc + +res\LaiPuLaserDoc.ico +ͼļ CLaiPuLaserDoc MDI ӴڵͼꡣͼҪԴļ LaiPuLaser.rc С + + + +///////////////////////////////////////////////////////////////////////////// + +֧: + +hlp\LaiPuLaser.hhp +ļǰĿļļΪ .chm ļݡ + +hlp\LaiPuLaser.hhc +ļгĿݡ + +hlp\LaiPuLaser.hhk +ļ + +hlp\afxcore.htm +ļ׼ MFC Ļı׼⡣ԼİӵļС + +hlp\afxprint.htm +ļӡİ⡣ + +makehtmlhelp.bat +ļϵͳļ + +hlp\Images\*.gif +Щ Microsoft ׼ı׼ļλͼļ + + +///////////////////////////////////////////////////////////////////////////// + +: + +ActiveX ؼ +Ӧóʹ ActiveX ؼ֧֡ + +ӡӡԤ֧ +Ӧóͨ MFC CView еijԱڴӡӡúʹӡԤĴ롣 + +MAPI ֧ +ɵĿʹ洢ʼĴ롣 + +Windows Sockets +Ӧó֧ͨ TCP/IP 罨ͨš + +///////////////////////////////////////////////////////////////////////////// + +׼ļ: + +StdAfx.hStdAfx.cpp +ЩļΪ LaiPuLaser.pch Ԥͷ (PCH) ļΪ StdAfx.obj Ԥļ + +Resource.h +DZ׼ͷļµԴ ID +Microsoft Visual C++ ȡ´ļ + +LaiPuLaser.manifest + Ӧó嵥ļ Windows XP Ӧó + ض汾г򼯵ԡسʹô + Ϣӳ򼯻ʵij򼯻 + Ӧó˽ϢӦó嵥Ϊ·ַΪ + Ӧóִļװͬļеⲿ .manifest ļ + ҲԴʽڸÿִļС +///////////////////////////////////////////////////////////////////////////// + +ע: + +ӦóʹáTODO:ָʾӦӻԶԴ벿֡ + +Ӧóڹ DLL ʹ MFCҪ·Щ MFC DLLӦóõϵͳĵǰòͬҪ·ӦıػԴ MFC100XXX.DLLйĸϢμ MSDN ĵй Redistributing Visual C++ applications (· Visual C++ Ӧó)½ڡ + +///////////////////////////////////////////////////////////////////////////// diff --git a/LaiPuLaser/Regsvr32.txt b/LaiPuLaser/Regsvr32.txt new file mode 100644 index 0000000..886b0b9 --- /dev/null +++ b/LaiPuLaser/Regsvr32.txt @@ -0,0 +1,2 @@ +Regsvr32 E:\LaipuLaser\marking_scan.dll +Regsvr32 E:\LaipuLaser\HawkvisCtrl.ocx \ No newline at end of file diff --git a/LaiPuLaser/Result.txt b/LaiPuLaser/Result.txt new file mode 100644 index 0000000..e69de29 diff --git a/LaiPuLaser/Ruler.cpp b/LaiPuLaser/Ruler.cpp new file mode 100644 index 0000000..22a7539 --- /dev/null +++ b/LaiPuLaser/Ruler.cpp @@ -0,0 +1,484 @@ +#include "StdAfx.h" +#include "Ruler.h" +#include "GlobalDrawMgr.h" +#include "GlobalFunction.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "WorkAreaMgr.h" + + + +#define RULER_WIDETH (22) //ߵĿ--(λ:)view仯 +#define RULER_GAP (1) //ߵļ--(λ:) +#define RULER_NUM_WIDTH (6) //ֵĿ--(λ:)view仯 +#define RULER_NUM_HEIGHT (10) //ֵĸ߶--(λ:)view仯 + +CRuler *gRuler = new CRuler; +CRuler::CRuler(void) +{ + m_bDrawRuler = true;//ǷƱ + m_MousePointTmp.x = -1;//¼ʱλ + m_MousePointTmp.y = -1; +} +CRuler::~CRuler(void) +{ +} +CMFCPropertyGridProperty *CRuler::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("LogMgr");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T(""); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_bDrawRuler");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDrawRuler); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʾ"); + Description = _T("Ƿʾ(Сλ: mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDrawRuler, Description); + pGroup->AddSubItem(p1); + + gDrawPropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CRuler::OnPropertyChanged() +{ + //ȡǰָ + CLaiPuLaserView *pView = GetCurViewPtr(); + if(pView) + { + pView->RefreshView(); + } +} +void CRuler::Draw(CDC* pDC) +{ + DrawRuler(pDC); +} +//Ʊ +void CRuler::DrawRuler(CDC* pDC) +{ + if(!m_bDrawRuler) + return; + //ȡͻΧ + CRect rect; + GetCurViewPtr()->GetClientRect(&rect);//ȡڿͻ + pDC->DPtoLP(rect);//תΪ߼ +// + int RulerWideth = GetCurViewPtr()->GetCurrScaleVal(RULER_WIDETH); + //ߵij + int ShortLen = RulerWideth/4; + int ShortLen2 = RulerWideth/6; + int MidLen = RulerWideth/2; + int LongLen; + double zoomScale = GetCurViewPtr()->GetCurZoomScale(); + if(zoomScale>VIEW_SCALE9) + { + LongLen = RulerWideth/2; + } + else//̫Сʱ̵ + { + LongLen = RulerWideth/3; + } + + CPen pen; + pen.CreatePen(PS_SOLID,0.5,RGB_BLACK); + CBrush brush ; + brush.CreateSolidBrush(RGB_GRAY) ; + CPen* pOldPen = (CPen*)pDC->SelectObject(&pen); + CBrush* pOldBrush = (CBrush*)pDC->SelectObject(&brush); + + int RulerX,RulerY; + RulerX = rect.left+RulerWideth; + RulerY = rect.top+RulerWideth; + //ˮƽ() + CRect DrawRectH(0,rect.top,SCROLL_SIZE_CX,RulerY); + pDC->Rectangle(DrawRectH); + //ֱ() + CRect DrawRectV(rect.left,0,RulerX,SCROLL_SIZE_CY); + pDC->Rectangle(DrawRectV); + + int count;// + int StartX = LOGIC_CENTER_X; + int StartY = LOGIC_CENTER_Y; + int gap;// + + gap = gDraw->Double2Int(1);//ÿ10 + + pDC->SetBkMode(TRANSPARENT);//͸ + CString FontTypeStr(""); + double TextHeight = GetCurViewPtr()->GetCurrScaleVal(RULER_NUM_HEIGHT);//߶ + double TextWidth = GetCurViewPtr()->GetCurrScaleVal(RULER_NUM_WIDTH);// +//ˮƽ-------------------------------------------------------- + //------------------------------------------------------ + SetCurFont(pDC,TextHeight,TextWidth,0,FALSE,FontTypeStr); + + DbSize size = gWorkAreaMgr->GetWorkArea().GetSize(); + int WorkSpaceWeidth = size.w; + int WorkSpaceHeight = size.h; + + double Scale1 = VIEW_SCALE1; + double Scale2 = VIEW_SCALE1; + double Scale3 = VIEW_SCALE1; +#if 1// + count = 0;// + for(int i=0;i<=(WorkSpaceWeidth);i += gap) + { + //ڹռ䷶Χʾ + if(zoomScale>Scale1)//ȫʾ + { + DrawRulerNum(pDC,count*10,StartX+i,RulerY-RulerWideth,TextWidth,TRUE); + } + else if(zoomScale>Scale2)//ÿ20 ʾ + { + if(count%2 == 0) + { + DrawRulerNum(pDC,count*10,StartX+i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + else if(zoomScale>Scale3)//ÿ50 ʾ + { + if(count%5 == 0) + { + DrawRulerNum(pDC,count*10,StartX+i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + else//ÿ200 ʾ + { + if(count%20 == 0) + { + DrawRulerNum(pDC,count*10,StartX+i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + count++; + } +#endif + +#if 1// + count = 0;// + for(int i=0;i<=(WorkSpaceWeidth);i += gap) + { + if(count !=0) + { + //ڹռ䷶Χʾ + if(zoomScale>Scale1)//ȫʾ + { + DrawRulerNum(pDC,count*10,StartX-i,RulerY-RulerWideth,TextWidth,TRUE); + } + else if(zoomScale>Scale2)//ÿ20 ʾ + { + if(count%2 == 0) + { + DrawRulerNum(pDC,count*10,StartX-i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + else if(zoomScale>Scale3)//ÿ50 ʾ + { + if(count%5 == 0) + { + DrawRulerNum(pDC,count*10,StartX-i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + else//ÿ200 ʾ + { + if(count%20 == 0) + { + DrawRulerNum(pDC,count*10,StartX-i,RulerY-RulerWideth,TextWidth,TRUE); + } + } + } + count++; + } +#endif + +//ƴֱ-------------------------------------------------------- + //------------------------------------------------------ + SetCurFont(pDC,TextHeight,TextWidth,90,FALSE,FontTypeStr); + count = 0;// + // + for(int i=0;i<=(WorkSpaceWeidth);i += gap) + { + //ڹռ䷶Χʾ + if(zoomScale>Scale1)//ȫʾ + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY-i,TextWidth,FALSE); + } + else if(zoomScale>Scale2)//ÿ20 ʾ + { + if(count%2 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY-i,TextWidth,FALSE); + } + } + else if(zoomScale>Scale3)//ÿ50 ʾ + { + if(count%5 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY-i,TextWidth,FALSE); + } + } + else//ÿ200 ʾ + { + if(count%20 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY-i,TextWidth,FALSE); + } + } + count++; + } + // + count = 0;// + for(int i=0;i<=(WorkSpaceWeidth);i += gap) + { + if(count != 0) + { + //ڹռ䷶Χʾ + if(zoomScale>Scale1)//ȫʾ + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY+i,TextWidth,FALSE); + } + else if(zoomScale>Scale2)//ÿ20 ʾ + { + if(count%2 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY+i,TextWidth,FALSE); + } + } + else if(zoomScale>Scale3)//ÿ50 ʾ + { + if(count%5 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY+i,TextWidth,FALSE); + } + } + else//ÿ200 ʾ + { + if(count%20 == 0) + { + DrawRulerNum(pDC,count*10,RulerX-RulerWideth,StartY+i,TextWidth,FALSE); + } + } + } + count++; + } +//ˮƽߵĺ + pDC->MoveTo(0,RulerY); + pDC->LineTo(SCROLL_SIZE_CX,RulerY); +//ֱߵ + pDC->MoveTo(RulerX,0); + pDC->LineTo(RulerX,SCROLL_SIZE_CY); +//---------------------------------------------------------- + count = 0;// + gap = gDraw->Double2Int(RULER_GAP); + for(int i=0;i<(SCROLL_SIZE_CX/2);i += gap) + { + if(count%10 == 0)//ÿ10 ׻ + { + if(zoomScale>VIEW_SCALE3)//Сʾ + { + //ˮƽ + pDC->MoveTo(StartX+i,RulerY); + pDC->LineTo(StartX+i,RulerY-LongLen); + pDC->MoveTo(StartX-i,RulerY); + pDC->LineTo(StartX-i,RulerY-LongLen); + //ֱ + pDC->MoveTo(RulerX,StartY+i); + pDC->LineTo(RulerX-LongLen,StartY+i); + pDC->MoveTo(RulerX,StartY-i); + pDC->LineTo(RulerX-LongLen,StartY-i); + } + } + else if(count%5 == 0)//ÿ5 ׻еȵ + { + if(zoomScale>VIEW_SCALE7)//Сʾ + { + //ˮƽ + pDC->MoveTo(StartX+i,RulerY); + pDC->LineTo(StartX+i,RulerY-MidLen); + pDC->MoveTo(StartX-i,RulerY); + pDC->LineTo(StartX-i,RulerY-MidLen); + //ֱ + pDC->MoveTo(RulerX,StartY+i); + pDC->LineTo(RulerX-MidLen,StartY+i); + pDC->MoveTo(RulerX,StartY-i); + pDC->LineTo(RulerX-MidLen,StartY-i); + } + } + else//ÿ1 + { + if(zoomScale>VIEW_SCALE12)//Сʾ + { + //ˮƽ + pDC->MoveTo(StartX+i,RulerY); + pDC->LineTo(StartX+i,RulerY-ShortLen); + pDC->MoveTo(StartX-i,RulerY); + pDC->LineTo(StartX-i,RulerY-ShortLen); + //ֱ + pDC->MoveTo(RulerX,StartY+i); + pDC->LineTo(RulerX-ShortLen,StartY+i); + pDC->MoveTo(RulerX,StartY-i); + pDC->LineTo(RulerX-ShortLen,StartY-i); + } + } + count++; + } + if(zoomScale>VIEW_SCALE20)//Ŵʾ0.1 ׼ + { + gap /= 10;//Ϊ0.1 + //ֻڹռķΧʾ + int max = max((int)WorkSpaceHeight,(int)WorkSpaceWeidth); + for(int i=0;i<(max);i += gap) + { + //ˮƽ + pDC->MoveTo(StartX+i,RulerY); + pDC->LineTo(StartX+i,RulerY-ShortLen2); + pDC->MoveTo(StartX-i,RulerY); + pDC->LineTo(StartX-i,RulerY-ShortLen2); + //ֱ + pDC->MoveTo(RulerX,StartY+i); + pDC->LineTo(RulerX-ShortLen2,StartY+i); + pDC->MoveTo(RulerX,StartY-i); + pDC->LineTo(RulerX-ShortLen2,StartY-i); + } + } + //IJ + CRect DrawRect(rect.left,rect.top,rect.left+RulerWideth,rect.top+RulerWideth); + pDC->Rectangle(DrawRect); + + pDC->SelectObject(pOldBrush); + pDC->SelectObject(pOldPen); + + m_MousePointTmp.x = -1; + m_MousePointTmp.y = -1; +} + +//Ʊߵ,bIsX == TRUEΪX +void CRuler::DrawRulerNum(CDC* pDC,int Num,int CurX,int CurY,double TextWidth,BOOL bIsX) +{ +//Num мλ + int NumTmp = Num; + int cnt = 0; + while(NumTmp>0) + { + NumTmp /=10; + cnt++; + } + if(cnt==0)//ֻһλʱ + { + cnt = 1; + } + if(bIsX) + { + CurX -= (cnt*TextWidth)/2;//ˮƽƫһ + } + else + { + CurY += (cnt*TextWidth)/2;//ֱ±ƫһ + } + CString TextString; + TextString.Format("%d",Num); + const char* pStr=(const char*)TextString; + int StrLen = strlen(pStr); + while(StrLen>0) + { + unsigned char char1; + char Char[3]; + char1 = *pStr; + strncpy(Char,pStr,1); + Char[1]='\0'; + pStr += 1; + StrLen -= 1; + pDC->TextOut(CurX,CurY,Char); + //һʼ + if(bIsX) + { + CurX += TextWidth; + } + else + { + CurY -= TextWidth; + } + } +} + +//õǰ +CFont* CRuler::SetCurFont(CDC *pDC,double TextHeight,double TextWidth,double RotateAngle,bool bIsItalic,CString FontTypeStr) +{ + //ʹõǰͼε + CFont font,*pOldFont; + font.CreateFont ( + TextHeight, // + 0,//TextWidth, // + RotateAngle*10, //Ƕ + 0, + FW_NORMAL, + bIsItalic, //б + 0, + 0, + DEFAULT_CHARSET, //ַ + OUT_CHARACTER_PRECIS, + CLIP_CHARACTER_PRECIS, + DEFAULT_QUALITY, + DEFAULT_PITCH |FF_DONTCARE, + FontTypeStr);// + + pOldFont = pDC->SelectObject(&font); + return pOldFont; +} + +//λ +void CRuler::DrawMousePos(CDC* pDC,CPoint point) +{ + if(!m_bDrawRuler) + return; + + double zoomScale = GetCurViewPtr()->GetCurZoomScale(); + int RulerWideth = RULER_WIDETH/zoomScale; + int CheckGap = RulerWideth/2;//ƫ +//ȡͻΧ + CRect rect; + GetCurViewPtr()->GetClientRect(&rect);//ȡڿͻ + pDC->DPtoLP(rect);//תΪ߼ + + //ǰµ,ػ + if(m_MousePointTmp.x == -1) + { + DrawRuler(pDC); + } + int old_rop = pDC->SetROP2(R2_XORPEN); + CPen pen; + pen.CreatePen(PS_SOLID,0.5,RGB_GRAY); + CPen* pOldPen = (CPen*)pDC->SelectObject(&pen); + + int RulerX,RulerY; + RulerX = rect.left+RulerWideth; + RulerY = rect.top+RulerWideth; + RulerX -= 1;// + RulerY -= 1;// + //ˮƽ + pDC->MoveTo(m_MousePointTmp.x,RulerY); + pDC->LineTo(m_MousePointTmp.x,RulerY-RulerWideth); + pDC->MoveTo(RulerX,m_MousePointTmp.y); + pDC->LineTo(RulerX-RulerWideth,m_MousePointTmp.y); + //ֱ + pDC->MoveTo(point.x,RulerY); + pDC->LineTo(point.x,RulerY-RulerWideth); + pDC->MoveTo(RulerX,point.y); + pDC->LineTo(RulerX-RulerWideth,point.y); + + pDC->SelectObject(pOldPen); + pDC->SetROP2(old_rop); +} \ No newline at end of file diff --git a/LaiPuLaser/Ruler.h b/LaiPuLaser/Ruler.h new file mode 100644 index 0000000..9a0cc2e --- /dev/null +++ b/LaiPuLaser/Ruler.h @@ -0,0 +1,23 @@ +#pragma once +#include "module.h" +class CRuler :public CModule +{ +public: + CRuler(void); + ~CRuler(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void OnPropertyChanged(); + virtual MODULE GetModuleType(){return _RULER_PROP;}; + virtual void Draw(CDC* pDC);//pDC һЩ + + void DrawMousePos(CDC* pDC,CPoint point); +private: + void DrawRuler(CDC* pDC); + void DrawRulerNum(CDC* pDC,int Num,int CurX,int CurY,double TextWidth,BOOL bIsX); + CFont* SetCurFont(CDC *pDC,double TextHeight,double TextWidth,double RotateAngle,bool bIsItalic,CString FontTypeStr); +private: + bool m_bDrawRuler;//ǷƱ + CPoint m_MousePointTmp;//¼ʱλ,ڱ +}; + +extern CRuler *gRuler; \ No newline at end of file diff --git a/LaiPuLaser/SFillPar.h b/LaiPuLaser/SFillPar.h new file mode 100644 index 0000000..1191d23 --- /dev/null +++ b/LaiPuLaser/SFillPar.h @@ -0,0 +1,14 @@ +#pragma once + +struct SFillPar{ +SFillPar() +{ + m_FillGap = 0.01;// + m_FillAngle = 90;//Ƕ(0~90)(360 Ƚ) + bFill = false;//Ƿ +} +bool bFill;//Ƿ +double m_FillGap;// +double m_FillAngle;//Ƕ(0~90)(360 Ƚ) +}; + diff --git a/LaiPuLaser/SFontPar.h b/LaiPuLaser/SFontPar.h new file mode 100644 index 0000000..83f598f --- /dev/null +++ b/LaiPuLaser/SFontPar.h @@ -0,0 +1,39 @@ +#pragma once + +struct SFontPar{ + enum TxtParGapType + { + _Center=0,//ĵ + _Boundary,//߽ + }; +SFontPar() +{ + m_CharGap = 1;//ַ + m_bArc = false;//ǷΪԲı + m_bReverse = false;//Ƿ + m_bOutDir = false;//ǷΪı + m_bVertical = false;//Ƿֱ + m_ArcRadius = 12;//Բ뾶 + m_CharHeight = 2;//ַ߶ + m_ItalicAngle = 0;//бǶ + m_ArcAngle = 0;//׼Ƕ + m_GapType = _Boundary;//ķʽ +} +//࣬߶ȣ +double m_CharHeight;//ַ߶ +double m_CharGap;//ַ +//бǶ +double m_ItalicAngle;//бǶ +double m_ArcRadius;//Բ뾶 +//׼Ƕ +double m_ArcAngle;//׼Ƕ + +TxtParGapType m_GapType;//ķʽ +//Ƿ +bool m_bReverse;//Ƿ +//з +bool m_bOutDir;//ǷΪı +bool m_bArc;//ǷΪԲı +bool m_bVertical;//Ƿֱ +}; + diff --git a/LaiPuLaser/SStringPar.h b/LaiPuLaser/SStringPar.h new file mode 100644 index 0000000..a20d5f8 --- /dev/null +++ b/LaiPuLaser/SStringPar.h @@ -0,0 +1,19 @@ +#pragma once +#include "ValString.h" + +struct SStringPar{ +SStringPar(){}; +void Copy(SStringPar &rhs); +public: +CValString m_ValString;//ɱı +CString m_FontTypeName;//͵ +CString m_FontName;// +}; + +inline void SStringPar::Copy(SStringPar &rhs) +{ + m_ValString.Copy(rhs.m_ValString); + m_FontTypeName = rhs.m_FontTypeName; + m_FontName = rhs.m_FontName; +} + diff --git a/LaiPuLaser/SequentialPoint.cpp b/LaiPuLaser/SequentialPoint.cpp new file mode 100644 index 0000000..349099a --- /dev/null +++ b/LaiPuLaser/SequentialPoint.cpp @@ -0,0 +1,500 @@ +#include "StdAfx.h" +#include "SequentialPoint.h" +#include "GlobalFunction.h" +#include "GlobalDrawMgr.h" +#include "DrawSimpleShape.h" +#include "SimulateTrace.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "LogMgr.h" + + + +CSequentialPoint::CSequentialPoint(void) +{ +} +CSequentialPoint::~CSequentialPoint(void) +{ +} +#if 1 +void CSequentialPoint::WriteWorkFile(vector &LabVec) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + LabVec.push_back(CLab(LAB_POINT_START));//ݵ㿪ʼ + + Dbxy pt = (*iter).GetPt(); + LabVec.push_back(CLab(LAB_POINT_X,pt.x)); + LabVec.push_back(CLab(LAB_POINT_Y,pt.y)); + LabVec.push_back(CLab(LAB_POINT_IS_NODE,(*iter).IsNode()));//ǷΪڵ + + LabVec.push_back(CLab(LAB_POINT_END));//ݵ + } +} +void CSequentialPoint::ReadWorkFile(CLabVecRang &LabVecRang) +{ + //ݵ--------------------------------------------------- + vector LabVecRangVec; + CWorkFileMgr WorkFileMgr; + WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_POINT_START,LAB_POINT_END); + + //ÿ + if(!LabVecRangVec.empty()) + { + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt; + bool bIsNode; + {//X + CLab Lab = WorkFileMgr.FindLab((*iter),LAB_POINT_X); + if(Lab.m_ValType != _TYPE_NULL) + { + pt.x = Lab.m_Double; + } + } + {//Y + CLab Lab = WorkFileMgr.FindLab((*iter),LAB_POINT_Y); + if(Lab.m_ValType != _TYPE_NULL) + { + pt.y = Lab.m_Double; + } + } + {//ǷΪNODE + CLab Lab = WorkFileMgr.FindLab((*iter),LAB_POINT_IS_NODE); + if(Lab.m_ValType != _TYPE_NULL) + { + bIsNode = Lab.m_Bool; + } + } + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(bIsNode); + AddDataPoint(DataPoint); + } + } +} +#endif +#if 1 +void CSequentialPoint::AddDataPoint(CDataPoint DataPt) +{ + m_PtContainer.push_back(DataPt); +} +//һ +void CSequentialPoint::Load(CSequentialPoint &rhs) +{ + vector::iterator iter = rhs.m_PtContainer.begin(); + vector::iterator iter_end = rhs.m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + m_PtContainer.push_back(*iter); + } +} + +bool CSequentialPoint::Empty()//Ƿݵ +{ + return m_PtContainer.empty(); +}; +void CSequentialPoint::DelAllPt()//ɾݵ +{ + m_PtContainer.clear(); +}; +void CSequentialPoint::DelLastDataPoint()//ɾһڵ +{ + if(!Empty()) + { + m_PtContainer.pop_back(); + } +} +//һڵ +void CSequentialPoint::SetLastPoint(CDataPoint &pt) +{ + if(!Empty()) + { + CDataPoint &LastPt = m_PtContainer[m_PtContainer.size()-1]; + LastPt = pt; + } +} +//ʹʱҪ֤m_Container ǿ +Dbxy CSequentialPoint::GetFirstPt() +{ + return m_PtContainer[0].GetPt(); +} +//ʹʱҪ֤m_Container ǿ +Dbxy CSequentialPoint::GetLastPt() +{ + return m_PtContainer[m_PtContainer.size()-1].GetPt(); +} +//ȡnode +int CSequentialPoint::GetNodePtIdx(Dbxy pt) +{ + int idx = -1; + int size = m_PtContainer.size(); + for(int i=0;i::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx && (*iter).IsNode()) + { + m_PtContainer.erase(iter); + break; + } + i++; + } +} +//idx Ӧnode ֵΪpt +void CSequentialPoint::SetNodePtByIdx(int idx,Dbxy pt) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx && (*iter).IsNode()) + { + (*iter).SetPt(pt); + break; + } + i++; + } +} + +void CSequentialPoint::InsertNode(int idx,Dbxy pt) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx) + { + CDataPoint DataPoint(pt); + DataPoint.SetIsNode(true); + m_PtContainer.insert(iter,DataPoint); + break; + } + i++; + } +} + +#endif +#if 1 +//Ƿھ +bool CSequentialPoint::IsInRect(DbRect rect,bool bNeedAllIn) +{ + //߶ + { + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + if(iter != m_PtContainer.begin()) + { + Dbxy pt1 = (*(iter-1)).GetPt(); + Dbxy pt2 = (*iter).GetPt(); + if(bNeedAllIn)//ҪȫھηΧ + { + if(!IsPointInRect(pt1,rect)||!IsPointInRect(pt2,rect)) + { + return false; + } + } + else //(ҵҲ) + { + if(IsLineInRect(pt1,pt2,rect)) + return true; + } + } + } + } + if(bNeedAllIn) + return true; + else + return false; +} +//ȡ߽ +DbRect CSequentialPoint::GetRect() +{ + DbRect rect; + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + AdjustRectByPoint(rect,(*iter).GetPt()); + } + return rect; +} +//Ƿнڵrect +bool CSequentialPoint::HasNodeInRect(DbRect rect) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + if((*iter).IsNode()&&IsPointInRect((*iter).GetPt(),rect)) + { + return true; + } + } + return false; +} + +#endif +#if 1 +void CSequentialPoint::Operate(SObjOperatePar par) +{ + if(par.OpType == _OP_REVERSE) + { + //תڵ + Reverse(); + } + else + { + OperateExt(par); + } +} +void CSequentialPoint::OperateExt(SObjOperatePar par) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Operate(par); + } +} +//תڵ +void CSequentialPoint::Reverse() +{ + //ȱ + vector vec; + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + vec.push_back((*iter)); + } + // + m_PtContainer.clear(); + //򵹻 + int size = vec.size(); + for(int i=size-1;i>=0;i--) + { + m_PtContainer.push_back(vec[i]); + } +} +#endif +#if 1// +//߶ +void CSequentialPoint::DrawDataPointVec(CDC* pDC,vector &vec) +{ + if(vec.size()>1)// + { + //ÿ߶ + vector::iterator iter = vec.begin(); + vector::iterator iter_end = vec.end(); + for(;iter!=iter_end;iter++) + { + CDataPoint &DataPt = (*iter); + CPoint pt = DataPt.GetDevicePt(); + if(iter == vec.begin()) + { + pDC->MoveTo(pt.x,pt.y); + } + else + { + pDC->LineTo(pt.x,pt.y); + } + //ģʱʱ + gSimulateTrace->Delay(); + } + } +} +void CSequentialPoint::Draw(CDC* pDC,CPen&Pen) +{ + CPen *pOldPen; + pOldPen = pDC->SelectObject(&Pen); + //߶ + DrawDataPointVec(pDC,m_PtContainer); + pDC->SelectObject(pOldPen); +} +//һ߶ +void CSequentialPoint::DrawLastLine(CDC* pDC,CPen &Pen) +{ + CPen *pOldPen; + pOldPen = pDC->SelectObject(&Pen); + + if(!Empty()) + { + vector &vec = m_PtContainer; + + int size = vec.size(); + if(size>=2) + { + CPoint pt1 = vec[size-2].GetDevicePt(); + pDC->MoveTo(pt1.x,pt1.y); + CPoint pt2 = vec[size-1].GetDevicePt(); + pDC->LineTo(pt2.x,pt2.y); + } + } + pDC->SelectObject(pOldPen); +} +//ƽڵ +void CSequentialPoint::DrawNode(CDC* pDC) +{ + int size = m_PtContainer.size(); + for(int i=0;iGetObjFirstNodeColor(),gDraw->GetCurPointRect(m_PtContainer[i].GetPt())); + } + else + { + DrawSolidRect(pDC,gDraw->GetObjNodeColor(),gDraw->GetCurPointRect(m_PtContainer[i].GetPt())); + } + } + } +} +#endif +#if 1 +void CSequentialPoint::GetLineInRect(DbRect &rect,vector &DataPtLineVec) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + if(iter != m_PtContainer.begin()) + { + Dbxy pt1 = (*(iter-1)).GetPt(); + Dbxy pt2 = (*iter).GetPt(); + if(IsLineInRect(pt1,pt2,rect)) + { + DataPtLineVec.push_back(DbLine((*(iter-1)),(*iter))); + } + } + } +} +//ȡ߶ +void CSequentialPoint::GetNodePtLineInRect(DbRect &rect,vector &DataPtLineVec) +{ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + Dbxy pt1 = (*iter).GetPt(); + Dbxy pt2 = (*iter).GetPt(); + if(IsLineInRect(pt1,pt2,rect)) + { + DataPtLineVec.push_back(DbLine((*iter),(*iter))); + } + } +} + +#endif +//Ѽݵvec (һӵ) +void CSequentialPoint::GetPtData(vector> &vec) +{ + #if 1//Żٶ + vector VecTmp; + vec.push_back(VecTmp); + int size = vec.size(); + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + vec[size-1].push_back((*iter).GetPt()); + } + + #else + bool bhasLastPt = false;//Ƿһ + Dbxy LastPt; + //ȡ֮ǰһ + int size = vec.size(); + if(size>0) + { + if(vec[size-1].empty()==false) + { + int size1 = vec[size-1].size(); + LastPt = vec[size-1][size1-1]; + bhasLastPt = true; + } + } + vector VecTmp; + + bool bNeedConnect = false;//ǷҪ + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + if(iter == m_PtContainer.begin() && bhasLastPt)//жǷ + { + if((*iter).GetPt() == LastPt) + { + bNeedConnect = true; + } + } + Dbxy pt = (*iter).GetPt(); + VecTmp.push_back(pt); + } + + if(!VecTmp.empty()) + { + if(bNeedConnect) + { + vector::iterator iter = VecTmp.begin(); + vector::iterator iter_end = VecTmp.end(); + for(;iter!=iter_end;iter++) + { + vec[size-1].push_back(*iter); + } + } + else + { + vec.push_back(VecTmp); + } + } + #endif +} +//Ƿline ཻ +bool CSequentialPoint::IntersectWithLine(DbLine &line) +{ + Dbxy pt1 = line.GetPt1(); + Dbxy pt2 = line.GetPt2(); + + vector::iterator iter = m_PtContainer.begin(); + vector::iterator iter_end = m_PtContainer.end(); + for(;iter!=iter_end;iter++) + { + if(iter != m_PtContainer.begin()) + { + if(IsTwoLineIntersect(pt1,pt2,(*(iter-1)).GetPt(),(*iter).GetPt())) + { + return true; + } + } + } + return false; +} \ No newline at end of file diff --git a/LaiPuLaser/SequentialPoint.h b/LaiPuLaser/SequentialPoint.h new file mode 100644 index 0000000..b1351cd --- /dev/null +++ b/LaiPuLaser/SequentialPoint.h @@ -0,0 +1,47 @@ +#pragma once +#include "GlobalDefine.h" +#include "DataPoint.h" +#include "LabVecRang.h" + + +//һ߶εĵ +class CSequentialPoint +{ +public: + CSequentialPoint(void); + ~CSequentialPoint(void); + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void Load(CSequentialPoint &rhs); + bool Empty(); + void AddDataPoint(CDataPoint pt); + void DelAllPt();//ɾݵ + void DelLastDataPoint();//ɾһڵ + bool IsInRect(DbRect rect,bool bNeedAllIn); + DbRect GetRect(); + void Draw(CDC* pDC,CPen&Pen); + void DrawLastLine(CDC* pDC,CPen &Pen); + void DrawNode(CDC* pDC); + void GetLineInRect(DbRect &rect,vector &DataPtLineVec); + void GetNodePtLineInRect(DbRect &rect,vector &DataPtLineVec); + void Operate(SObjOperatePar par); + vector& GetPtContainer(){return m_PtContainer;}; + void SetLastPoint(CDataPoint &pt); + Dbxy GetFirstPt(); + Dbxy GetLastPt(); + int GetNodePtIdx(Dbxy pt); + void DelNodePtByIdx(int idx); + void SetNodePtByIdx(int idx,Dbxy pt); + void InsertNode(int idx,Dbxy pt); + int GetPtCnt(){return m_PtContainer.size();}; + bool HasNodeInRect(DbRect rect); + void GetPtData(vector> &vec); + bool IntersectWithLine(DbLine &line); +private: + void DrawDataPointVec(CDC* pDC,vector &vec); + void Reverse(); + void OperateExt(SObjOperatePar par); +private: + vector m_PtContainer;//ݵ +}; + diff --git a/LaiPuLaser/SetPointMgr.cpp b/LaiPuLaser/SetPointMgr.cpp new file mode 100644 index 0000000..528e85f --- /dev/null +++ b/LaiPuLaser/SetPointMgr.cpp @@ -0,0 +1,31 @@ +#include "StdAfx.h" +#include "SetPointMgr.h" +#include "SetPointMoveToCcd.h" + + +CSetPointMgr *gSetPointMgr = new CSetPointMgr; +CSetPointMgr::CSetPointMgr(void) +{ + m_Tool = new CSetPointMoveToCcd;//ǰָ㹤 +} +CSetPointMgr::~CSetPointMgr(void) +{ + if (m_Tool!=NULL) + { + delete m_Tool; + } +} +void CSetPointMgr::OnLButtonDown(Dbxy pt) +{ + m_Tool->OnLButtonDown(pt); +} +void CSetPointMgr::SetTool(CSetPointTool *tool) +{ + if(m_Tool) + delete m_Tool; + m_Tool = tool; +} +void CSetPointMgr::Reset() +{ + m_Tool->Reset(); +} \ No newline at end of file diff --git a/LaiPuLaser/SetPointMgr.h b/LaiPuLaser/SetPointMgr.h new file mode 100644 index 0000000..add8a65 --- /dev/null +++ b/LaiPuLaser/SetPointMgr.h @@ -0,0 +1,17 @@ +#pragma once +#include "SetPointTool.h" + + +class CSetPointMgr +{ +public: + CSetPointMgr(void); + ~CSetPointMgr(void); + void OnLButtonDown(Dbxy pt); + void SetTool(CSetPointTool *tool); + void Reset(); +private: + CSetPointTool *m_Tool;//ǰָ㹤 +}; + +extern CSetPointMgr *gSetPointMgr; \ No newline at end of file diff --git a/LaiPuLaser/SetPointMoveToCcd.cpp b/LaiPuLaser/SetPointMoveToCcd.cpp new file mode 100644 index 0000000..b5e57a1 --- /dev/null +++ b/LaiPuLaser/SetPointMoveToCcd.cpp @@ -0,0 +1,21 @@ +#include "StdAfx.h" +#include "SetPointMoveToCcd.h" +#include "WorkCmdMovePlatformXY.h" +#include "WorkCmdInvoker.h" +#include "CameraKeyence.h" +#include "ProductMgr.h" +#include "GlobalDrawMgr.h" + + + + +CSetPointMoveToCcd::CSetPointMoveToCcd(void) +{ +} +CSetPointMoveToCcd::~CSetPointMoveToCcd(void) +{ +} +void CSetPointMoveToCcd::OnLButtonDown(Dbxy Pt) +{ +} + diff --git a/LaiPuLaser/SetPointMoveToCcd.h b/LaiPuLaser/SetPointMoveToCcd.h new file mode 100644 index 0000000..2128c61 --- /dev/null +++ b/LaiPuLaser/SetPointMoveToCcd.h @@ -0,0 +1,12 @@ +#pragma once +#include "setpointtool.h" + +//ָƶCCD +class CSetPointMoveToCcd :public CSetPointTool +{ +public: + CSetPointMoveToCcd(void); + ~CSetPointMoveToCcd(void); + virtual void OnLButtonDown(Dbxy Pt); +}; + diff --git a/LaiPuLaser/SetPointTool.cpp b/LaiPuLaser/SetPointTool.cpp new file mode 100644 index 0000000..3cc3438 --- /dev/null +++ b/LaiPuLaser/SetPointTool.cpp @@ -0,0 +1,12 @@ +#include "StdAfx.h" +#include "SetPointTool.h" + + +CSetPointTool::CSetPointTool(void) +{ +} + + +CSetPointTool::~CSetPointTool(void) +{ +} diff --git a/LaiPuLaser/SetPointTool.h b/LaiPuLaser/SetPointTool.h new file mode 100644 index 0000000..615ccf2 --- /dev/null +++ b/LaiPuLaser/SetPointTool.h @@ -0,0 +1,14 @@ +#pragma once +#include "GlobalDefine.h" + + +//ָ㹤 +class CSetPointTool +{ +public: + CSetPointTool(void); + virtual ~CSetPointTool(void); + virtual void OnLButtonDown(Dbxy Pt) = 0; + virtual void Reset(){}; +}; + diff --git a/LaiPuLaser/ShapeMatch0.dat b/LaiPuLaser/ShapeMatch0.dat new file mode 100644 index 0000000..d0e8a28 Binary files /dev/null and b/LaiPuLaser/ShapeMatch0.dat differ diff --git a/LaiPuLaser/ShowView.Ini b/LaiPuLaser/ShowView.Ini new file mode 100644 index 0000000..e979fa2 --- /dev/null +++ b/LaiPuLaser/ShowView.Ini @@ -0,0 +1,3 @@ +0 +0 +0.150206 diff --git a/LaiPuLaser/SimulateTrace.cpp b/LaiPuLaser/SimulateTrace.cpp new file mode 100644 index 0000000..201cbe0 --- /dev/null +++ b/LaiPuLaser/SimulateTrace.cpp @@ -0,0 +1,68 @@ +#include "StdAfx.h" +#include "SimulateTrace.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "GlobalFunction.h" +#include "MsgBox.h" +#include "AuthorityMgr.h" + +CSimulateTrace *gSimulateTrace = new CSimulateTrace; +CSimulateTrace::CSimulateTrace(void) +{ + m_bSimulate = false;//Ƿģ + m_Delay = 10;//ģʱ +} +CSimulateTrace::~CSimulateTrace(void) +{ +} +CMFCPropertyGridProperty *CSimulateTrace::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("Simulate");;//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("켣ģ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + //Աӳ + Name = _T("m_Delay");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_Delay); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ģʱ"); + Description = _T("ʱԽ̣ģٶԽ(λ: )"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Delay, Description); + pGroup->AddSubItem(p1); + + gDrawPropertieMgr.Insert(p1, pPropertie); + } +//-------------------------------------------------------------------------------// + return pGroup; +} + +void CSimulateTrace::Delay() +{ + if(m_bSimulate) + { + if(IsShiftKeyDown())//ͨshift ֹͣ + { + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel("?")) + { + Switch(false); + return; + } + } + int times = m_Delay*100000; + for(int i=0;iCheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_CardCnt");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CardCnt); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ѻ"); + Description = _T("ǰ豸ʹѻĸ,޸ĺҪ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CardCnt, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + for(int i=0;iSetpVal((void*)&(m_CardVec[i].m_ComPort)); + pPropertie->SetType(_PROP_TYPE_INT); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ں"); + Description = _T("ϻʹõĴں"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_CardVec[i].m_ComPort, Description); + + pGroup1->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + pGroup->AddSubItem(pGroup1); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CSinglechipCardMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CSinglechipCardMgr]------------------------------------------------"<m_CardCnt) + return 0; + int com = m_CardVec[idx].m_ComPort; + BYTE ret = (BYTE)com; + ret = SetBitOn(ret,7);//λ1 + return ret; +} diff --git a/LaiPuLaser/SinglechipCardMgr.h b/LaiPuLaser/SinglechipCardMgr.h new file mode 100644 index 0000000..dfea58d --- /dev/null +++ b/LaiPuLaser/SinglechipCardMgr.h @@ -0,0 +1,32 @@ +#pragma once +#include "module.h" + +//ѻƿ +class CSinglechipCard +{ + friend class CSinglechipCardMgr; +public: + CSinglechipCard(void) + { + m_ComPort = 1;//com ں + } +private: + int m_ComPort;//com ں +}; + +class CSinglechipCardMgr :public CModule +{ +public: + CSinglechipCardMgr(void); + ~CSinglechipCardMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void ExportPar(ofstream *pFile); + virtual MODULE GetModuleType(){return _SINGLE_CHIP_CARD;}; + + BYTE GetCardCom(int idx); +private: + int m_CardCnt;//ʹõϻ + vector m_CardVec;//ѻ +}; + +extern CSinglechipCardMgr *gSinglechipCardMgr; \ No newline at end of file diff --git a/LaiPuLaser/SmartArchive.h b/LaiPuLaser/SmartArchive.h new file mode 100644 index 0000000..78255e9 --- /dev/null +++ b/LaiPuLaser/SmartArchive.h @@ -0,0 +1,72 @@ +#pragma once +#include "stdafx.h" +//ȡʱ쳣.ʱ,ɼݲͬ汾,(ĩβ) +//÷: +/* +void WRdata(bool bWrite) +{ + CSmartArchive sar(L".\\param.ini", bWrite); + sar + name; + sar + age; + sar + Weight; +} +*/ +class CSmartArchive +{ +public: + CSmartArchive(CString filePath, bool bStore) + { + pArchive =NULL; + if (bStore) + { + m_Mode = CArchive::store; + if (m_file.Open(filePath, CFile::modeCreate | CFile::modeWrite)) + { + pArchive = new CArchive(&m_file, CArchive::store); + } + } + else + { + m_Mode = CArchive::load; + if (m_file.Open(filePath, CFile::modeRead)) + { + pArchive = new CArchive(&m_file, CArchive::load); + } + } + } + + ~CSmartArchive() + { + if (pArchive) + { + pArchive->Close(); + m_file.Close(); + delete pArchive; + pArchive = NULL; + } + }; + template void operator + (T & par) + { + if (pArchive) + { + if (m_Mode != CArchive::load) + { + (*pArchive) << par; + } + else + { + try + { + (*pArchive) >> par; + } + catch (...) { /*AfxMessageBox(L"ȡݸ,ϴд!"); */}; + } + } + }; + +private: + CArchive::Mode m_Mode; + CArchive * pArchive=NULL; + CFile m_file; +}; + diff --git a/LaiPuLaser/SmartPtr.h b/LaiPuLaser/SmartPtr.h new file mode 100644 index 0000000..ba957ea --- /dev/null +++ b/LaiPuLaser/SmartPtr.h @@ -0,0 +1,59 @@ +#if !defined(__MY_SMART_PTR_TEMPLATE_H__) +#define __MY_SMART_PTR_TEMPLATE_H__ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +//Լָģ +template +class RefPtr +{ +//ԱȨȫΪprivateΪֱʹø + template friend class Sptr; + RefPtr(TYPE *ptr):p(ptr), count(1) { } + ~RefPtr() { delete p; } + TYPE *GetPtr(){return p;} + int count; //ü + TYPE *p; //ָ +}; + +template +class Sptr +{ +public: + Sptr(TYPE *ptr):rp(new RefPtr(ptr)) { } //캯 + Sptr(const Sptr &sp):rp(sp.rp) { ++rp->count; } //ƹ캯 + Sptr& operator=(const Sptr& rhs) + { //ظֵ + ++rhs.rp->count; //ȽҲü1 + if(--rp->count == 0) //Ȼü1ӦԸֵ + delete rp; + rp = rhs.rp; + return *this; + } + + ~Sptr() + { + if(--rp->count == 0) //üΪ0ʱɾָ룬Ӷɾ + delete rp; + } + //زģָΪ + TYPE &operator*() { return *rp->p; } + TYPE *operator->() { return rp->p; } + const TYPE &operator*() const { return *rp->p; } + const TYPE *operator->() const { return rp->p; } + TYPE *GetPtr(){return rp->GetPtr();}//ȡָ + bool IsNull() + { + if(rp->GetPtr()) + return false; + else + return true; + } +private: + RefPtr *rp; //ָ +}; + + +#endif//__MY_SMART_PTR_TEMPLATE_H__ \ No newline at end of file diff --git a/LaiPuLaser/SocketMgr.cpp b/LaiPuLaser/SocketMgr.cpp new file mode 100644 index 0000000..7d732fe --- /dev/null +++ b/LaiPuLaser/SocketMgr.cpp @@ -0,0 +1,67 @@ +#include "StdAfx.h" +#include "SocketMgr.h" +#include "LogMgr.h" + +#include +#pragma comment(lib, "ws2_32.lib") + +CSocketMgr *gSocketMgr = new CSocketMgr; + +CSocketMgr::CSocketMgr(void) +{ +} +CSocketMgr::~CSocketMgr(void) +{ +} +//ͨѶʼ +void CSocketMgr::Ini() +{ + //ʼ׽socket + if(!AfxSocketInit()) + { + gLogMgr->WriteDebugLog("Socket ʼʧ",_LOG_ERROR); + } + else + { + gLogMgr->WriteDebugLog("Socket ʼɹ"); + } +} + +//Socket S_addr:ӵIP ַ,port:˿ں +bool CSocketMgr::Connect(const char* S_addr,u_short port) +{ + m_Socket.Create(); + + SOCKADDR_IN addrSrv; + addrSrv.sin_addr.S_un.S_addr=inet_addr(S_addr); + addrSrv.sin_family=AF_INET; + addrSrv.sin_port=htons(port); + + if(m_Socket.Connect((SOCKADDR*)&addrSrv,sizeof(SOCKADDR))) + { + gLogMgr->WriteDebugLog("Socket ӳɹ"); + return true; + } + else + { + gLogMgr->WriteDebugLog("Socket ʧ",_LOG_ERROR); + Close(); + return false; + } +} +//رsocket +void CSocketMgr::Close() +{ + gLogMgr->WriteDebugLog("Socket ر"); + m_Socket.Close(); +} +//socket ˷ +void CSocketMgr::Send(char* lpBuf,int nBufLen) +{ + m_Socket.Send(lpBuf,nBufLen,0); +} +//socket ӷ˽ +void CSocketMgr::Receive(char* lpBuf,int nBufLen) +{ + m_Socket.Receive(lpBuf,nBufLen,0); +} diff --git a/LaiPuLaser/SocketMgr.h b/LaiPuLaser/SocketMgr.h new file mode 100644 index 0000000..38f2bfc --- /dev/null +++ b/LaiPuLaser/SocketMgr.h @@ -0,0 +1,23 @@ + +#pragma once + + +#include "Module.h" + + +//Socket ͨѶ +class CSocketMgr :public CModule +{ +public: + CSocketMgr(void); + ~CSocketMgr(void); + virtual void Ini(); + virtual MODULE GetModuleType(){return _SOCKET_PROP;}; + bool Connect(const char* S_addr,u_short port); + void Close(); + void Send(char* lpBuf,int nBufLen); + void Receive(char* lpBuf,int nBufLen); +public: + CSocket m_Socket;//Socket +}; +extern CSocketMgr *gSocketMgr; \ No newline at end of file diff --git a/LaiPuLaser/Subject.cpp b/LaiPuLaser/Subject.cpp new file mode 100644 index 0000000..9624b52 --- /dev/null +++ b/LaiPuLaser/Subject.cpp @@ -0,0 +1,48 @@ +#include "StdAfx.h" +#include "Subject.h" + + +CSubject::CSubject(void) +{ +} +CSubject::~CSubject(void) +{ +} +//ע۲ +void CSubject::Attach(CObserver *p) +{ + m_ObserverVec.push_back(p); +} +//ɾ۲ +void CSubject::Delete(CObserver *p) +{ + vector::iterator iter = m_ObserverVec.begin(); + vector::iterator iter_end = m_ObserverVec.end(); + for(;iter!=iter_end;iter++) + { + if((*iter) == p) + { + m_ObserverVec.erase(iter); + break; + } + } +} +//֪ͨй۲߸ +void CSubject::NotifyObservers() +{ + vector::iterator iter = m_ObserverVec.begin(); + vector::iterator iter_end = m_ObserverVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Update(); + } +} +void CSubject::SetObserversVal1(double val) +{ + vector::iterator iter = m_ObserverVec.begin(); + vector::iterator iter_end = m_ObserverVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->SetVal1(val); + } +} \ No newline at end of file diff --git a/LaiPuLaser/Subject.h b/LaiPuLaser/Subject.h new file mode 100644 index 0000000..2587739 --- /dev/null +++ b/LaiPuLaser/Subject.h @@ -0,0 +1,19 @@ +#pragma once +#include "Observer.h" +#include "GlobalDefine.h" + +//۲ģʽӿ +class CSubject +{ +public: + CSubject(void); + virtual ~CSubject(void); + void Attach(CObserver*);//ע۲ + void Delete(CObserver*);//ɾ۲ + void NotifyObservers();//֪ͨй۲ + void DeleteAllObservers(){m_ObserverVec.clear();};//ɾй۲ + void SetObserversVal1(double val); +protected: + vector m_ObserverVec;//۲ߵ +}; + diff --git a/LaiPuLaser/TBarCode5.reg b/LaiPuLaser/TBarCode5.reg new file mode 100644 index 0000000..682a2d1 Binary files /dev/null and b/LaiPuLaser/TBarCode5.reg differ diff --git a/LaiPuLaser/TempMarkData/11.are b/LaiPuLaser/TempMarkData/11.are new file mode 100644 index 0000000..ec5ed7b Binary files /dev/null and b/LaiPuLaser/TempMarkData/11.are differ diff --git a/LaiPuLaser/TempMarkData/11.mak b/LaiPuLaser/TempMarkData/11.mak new file mode 100644 index 0000000..0c02fdd Binary files /dev/null and b/LaiPuLaser/TempMarkData/11.mak differ diff --git a/LaiPuLaser/TempMarkData/11.par b/LaiPuLaser/TempMarkData/11.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/11.par differ diff --git a/LaiPuLaser/TempMarkData/111.mak b/LaiPuLaser/TempMarkData/111.mak new file mode 100644 index 0000000..86e453a Binary files /dev/null and b/LaiPuLaser/TempMarkData/111.mak differ diff --git a/LaiPuLaser/TempMarkData/1111.are b/LaiPuLaser/TempMarkData/1111.are new file mode 100644 index 0000000..134e8fe Binary files /dev/null and b/LaiPuLaser/TempMarkData/1111.are differ diff --git a/LaiPuLaser/TempMarkData/1111.dxf b/LaiPuLaser/TempMarkData/1111.dxf new file mode 100644 index 0000000..581662c --- /dev/null +++ b/LaiPuLaser/TempMarkData/1111.dxf @@ -0,0 +1,8904 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +365.9152469292427 + 20 +223.1210343073169 + 30 +0.0 + 9 +$EXTMAX + 10 +407.9152469292424 + 20 +265.1210343073171 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458911.622808333 + 9 +$TDUCREATE + 40 +2458911.289475 + 9 +$TDUPDATE + 40 +2458912.439305972 + 9 +$TDUUPDATE + 40 +2458912.105972639 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +19E + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +374.4614313140232 + 22 +241.4030064406057 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +136.913472804885 + 41 +3.937950713359279 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +E4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +366.9152469292427 + 20 +224.1210343073169 + 30 +0.0 + 40 +1.0 + 0 +CIRCLE + 5 +E5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +406.9152469292424 + 20 +264.1210343073172 + 30 +0.0 + 40 +1.0 + 0 +LINE + 5 +E8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +262.3738695752925 + 30 +0.0 + 11 +373.5297466570212 + 21 +262.3738695752925 + 31 +0.0 + 0 +LINE + 5 +E9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +261.9942683890254 + 30 +0.0 + 11 +374.1509122345493 + 21 +260.4652454289565 + 31 +0.0 + 0 +LINE + 5 +EA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +260.0803351351892 + 30 +0.0 + 11 +373.5297466570212 + 21 +260.0803351351892 + 31 +0.0 + 0 +LINE + 5 +EB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +261.8217223952676 + 30 +0.0 + 11 +369.0276234968185 + 21 +260.6324823152141 + 31 +0.0 + 0 +LINE + 5 +EC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +259.0231591042041 + 30 +0.0 + 11 +373.5297466570212 + 21 +259.0231591042041 + 31 +0.0 + 0 +LINE + 5 +ED +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +258.643557917937 + 30 +0.0 + 11 +374.1509122345493 + 21 +257.1145349578682 + 31 +0.0 + 0 +LINE + 5 +EE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +256.7296246641009 + 30 +0.0 + 11 +373.5297466570212 + 21 +256.7296246641009 + 31 +0.0 + 0 +LINE + 5 +EF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +258.4710119241793 + 30 +0.0 + 11 +369.0276234968185 + 21 +257.2817718441257 + 31 +0.0 + 0 +LINE + 5 +F0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +255.4892844243575 + 30 +0.0 + 11 +373.5297466570212 + 21 +255.4892844243575 + 31 +0.0 + 0 +LINE + 5 +F1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +255.1096832380904 + 30 +0.0 + 11 +374.1509122345493 + 21 +253.5806602780215 + 31 +0.0 + 0 +LINE + 5 +F2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +253.1957499842542 + 30 +0.0 + 11 +373.5297466570212 + 21 +253.1957499842542 + 31 +0.0 + 0 +LINE + 5 +F3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +254.9371372443326 + 30 +0.0 + 11 +369.0276234968185 + 21 +253.7478971642791 + 31 +0.0 + 0 +LINE + 5 +F4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +251.2784985382304 + 30 +0.0 + 11 +373.5297466570212 + 21 +251.2784985382304 + 31 +0.0 + 0 +LINE + 5 +F5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +250.8988973519633 + 30 +0.0 + 11 +374.1509122345493 + 21 +249.3698743918944 + 31 +0.0 + 0 +LINE + 5 +F6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +248.9849640981271 + 30 +0.0 + 11 +373.5297466570212 + 21 +248.9849640981271 + 31 +0.0 + 0 +LINE + 5 +F7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +250.7263513582055 + 30 +0.0 + 11 +369.0276234968185 + 21 +249.537111278152 + 31 +0.0 + 0 +LINE + 5 +F8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +246.7763753780276 + 30 +0.0 + 11 +373.5297466570212 + 21 +246.7763753780276 + 31 +0.0 + 0 +LINE + 5 +F9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +246.3967741917605 + 30 +0.0 + 11 +374.1509122345493 + 21 +244.8677512316917 + 31 +0.0 + 0 +LINE + 5 +FA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +244.4828409379244 + 30 +0.0 + 11 +373.5297466570212 + 21 +244.4828409379244 + 31 +0.0 + 0 +LINE + 5 +FB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +246.2242281980028 + 30 +0.0 + 11 +369.0276234968185 + 21 +245.0349881179492 + 31 +0.0 + 0 +LINE + 5 +FC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +242.4475414866327 + 30 +0.0 + 11 +373.5297466570212 + 21 +242.4475414866327 + 31 +0.0 + 0 +LINE + 5 +FD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +242.0679403003656 + 30 +0.0 + 11 +374.1509122345493 + 21 +240.5389173402967 + 31 +0.0 + 0 +LINE + 5 +FE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +240.1540070465294 + 30 +0.0 + 11 +373.5297466570212 + 21 +240.1540070465294 + 31 +0.0 + 0 +LINE + 5 +FF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +241.8953943066078 + 30 +0.0 + 11 +369.0276234968185 + 21 +240.7061542265543 + 31 +0.0 + 0 +LINE + 5 +100 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +238.0983206224369 + 30 +0.0 + 11 +373.5297466570212 + 21 +238.0983206224369 + 31 +0.0 + 0 +LINE + 5 +101 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +237.7187194361697 + 30 +0.0 + 11 +374.1509122345493 + 21 +236.1896964761009 + 31 +0.0 + 0 +LINE + 5 +102 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +235.8047861823336 + 30 +0.0 + 11 +373.5297466570212 + 21 +235.8047861823336 + 31 +0.0 + 0 +LINE + 5 +103 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +237.546173442412 + 30 +0.0 + 11 +369.0276234968185 + 21 +236.3569333623585 + 31 +0.0 + 0 +LINE + 5 +104 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +234.1840218446606 + 30 +0.0 + 11 +373.5297466570212 + 21 +234.1840218446606 + 31 +0.0 + 0 +LINE + 5 +105 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +233.8044206583935 + 30 +0.0 + 11 +374.1509122345493 + 21 +232.2753976983246 + 31 +0.0 + 0 +LINE + 5 +106 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +231.8904874045573 + 30 +0.0 + 11 +373.5297466570212 + 21 +231.8904874045573 + 31 +0.0 + 0 +LINE + 5 +107 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +233.6318746646357 + 30 +0.0 + 11 +369.0276234968185 + 21 +232.4426345845822 + 31 +0.0 + 0 +LINE + 5 +108 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.7071892568491 + 20 +229.9435315020696 + 30 +0.0 + 11 +373.5297466570212 + 21 +229.9435315020696 + 31 +0.0 + 0 +LINE + 5 +109 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +374.1509122345493 + 20 +229.5639303158025 + 30 +0.0 + 11 +374.1509122345493 + 21 +228.0349073557337 + 31 +0.0 + 0 +LINE + 5 +10A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.749662116851 + 20 +227.6499970619664 + 30 +0.0 + 11 +373.5297466570212 + 21 +227.6499970619664 + 31 +0.0 + 0 +LINE + 5 +10B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +369.0276234968185 + 20 +229.3913843220448 + 30 +0.0 + 11 +369.0276234968185 + 21 +228.2021442419912 + 31 +0.0 + 0 +LINE + 5 +10C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +262.3738695752925 + 30 +0.0 + 11 +380.0470742966272 + 21 +262.3738695752925 + 31 +0.0 + 0 +LINE + 5 +10D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +261.9942683890254 + 30 +0.0 + 11 +380.6682398741552 + 21 +260.4652454289565 + 31 +0.0 + 0 +LINE + 5 +10E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +260.0803351351892 + 30 +0.0 + 11 +380.0470742966272 + 21 +260.0803351351892 + 31 +0.0 + 0 +LINE + 5 +10F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +261.8217223952676 + 30 +0.0 + 11 +375.5449511364245 + 21 +260.6324823152141 + 31 +0.0 + 0 +LINE + 5 +110 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +259.0231591042041 + 30 +0.0 + 11 +380.0470742966272 + 21 +259.0231591042041 + 31 +0.0 + 0 +LINE + 5 +111 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +258.643557917937 + 30 +0.0 + 11 +380.6682398741552 + 21 +257.1145349578682 + 31 +0.0 + 0 +LINE + 5 +112 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +256.7296246641009 + 30 +0.0 + 11 +380.0470742966272 + 21 +256.7296246641009 + 31 +0.0 + 0 +LINE + 5 +113 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +258.4710119241793 + 30 +0.0 + 11 +375.5449511364245 + 21 +257.2817718441257 + 31 +0.0 + 0 +LINE + 5 +114 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +255.4892844243575 + 30 +0.0 + 11 +380.0470742966272 + 21 +255.4892844243575 + 31 +0.0 + 0 +LINE + 5 +115 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +255.1096832380904 + 30 +0.0 + 11 +380.6682398741552 + 21 +253.5806602780215 + 31 +0.0 + 0 +LINE + 5 +116 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +253.1957499842542 + 30 +0.0 + 11 +380.0470742966272 + 21 +253.1957499842542 + 31 +0.0 + 0 +LINE + 5 +117 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +254.9371372443326 + 30 +0.0 + 11 +375.5449511364245 + 21 +253.7478971642791 + 31 +0.0 + 0 +LINE + 5 +118 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +251.2784985382304 + 30 +0.0 + 11 +380.0470742966272 + 21 +251.2784985382304 + 31 +0.0 + 0 +LINE + 5 +119 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +250.8988973519633 + 30 +0.0 + 11 +380.6682398741552 + 21 +249.3698743918944 + 31 +0.0 + 0 +LINE + 5 +11A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +248.9849640981271 + 30 +0.0 + 11 +380.0470742966272 + 21 +248.9849640981271 + 31 +0.0 + 0 +LINE + 5 +11B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +250.7263513582055 + 30 +0.0 + 11 +375.5449511364245 + 21 +249.537111278152 + 31 +0.0 + 0 +LINE + 5 +11C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +246.7763753780276 + 30 +0.0 + 11 +380.0470742966272 + 21 +246.7763753780276 + 31 +0.0 + 0 +LINE + 5 +11D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +246.3967741917605 + 30 +0.0 + 11 +380.6682398741552 + 21 +244.8677512316917 + 31 +0.0 + 0 +LINE + 5 +11E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +244.4828409379244 + 30 +0.0 + 11 +380.0470742966272 + 21 +244.4828409379244 + 31 +0.0 + 0 +LINE + 5 +11F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +246.2242281980028 + 30 +0.0 + 11 +375.5449511364245 + 21 +245.0349881179492 + 31 +0.0 + 0 +LINE + 5 +120 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +242.4475414866327 + 30 +0.0 + 11 +380.0470742966272 + 21 +242.4475414866327 + 31 +0.0 + 0 +LINE + 5 +121 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +242.0679403003656 + 30 +0.0 + 11 +380.6682398741552 + 21 +240.5389173402967 + 31 +0.0 + 0 +LINE + 5 +122 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +240.1540070465294 + 30 +0.0 + 11 +380.0470742966272 + 21 +240.1540070465294 + 31 +0.0 + 0 +LINE + 5 +123 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +241.8953943066078 + 30 +0.0 + 11 +375.5449511364245 + 21 +240.7061542265543 + 31 +0.0 + 0 +LINE + 5 +124 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +238.0983206224369 + 30 +0.0 + 11 +380.0470742966272 + 21 +238.0983206224369 + 31 +0.0 + 0 +LINE + 5 +125 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +237.7187194361697 + 30 +0.0 + 11 +380.6682398741552 + 21 +236.1896964761009 + 31 +0.0 + 0 +LINE + 5 +126 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +235.8047861823336 + 30 +0.0 + 11 +380.0470742966272 + 21 +235.8047861823336 + 31 +0.0 + 0 +LINE + 5 +127 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +237.546173442412 + 30 +0.0 + 11 +375.5449511364245 + 21 +236.3569333623585 + 31 +0.0 + 0 +LINE + 5 +128 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +234.1840218446606 + 30 +0.0 + 11 +380.0470742966272 + 21 +234.1840218446606 + 31 +0.0 + 0 +LINE + 5 +129 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +233.8044206583935 + 30 +0.0 + 11 +380.6682398741552 + 21 +232.2753976983246 + 31 +0.0 + 0 +LINE + 5 +12A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +231.8904874045573 + 30 +0.0 + 11 +380.0470742966272 + 21 +231.8904874045573 + 31 +0.0 + 0 +LINE + 5 +12B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +233.6318746646357 + 30 +0.0 + 11 +375.5449511364245 + 21 +232.4426345845822 + 31 +0.0 + 0 +LINE + 5 +12C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.224516896455 + 20 +229.9435315020696 + 30 +0.0 + 11 +380.0470742966272 + 21 +229.9435315020696 + 31 +0.0 + 0 +LINE + 5 +12D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +380.6682398741552 + 20 +229.5639303158025 + 30 +0.0 + 11 +380.6682398741552 + 21 +228.0349073557337 + 31 +0.0 + 0 +LINE + 5 +12E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +376.266989756457 + 20 +227.6499970619664 + 30 +0.0 + 11 +380.0470742966272 + 21 +227.6499970619664 + 31 +0.0 + 0 +LINE + 5 +12F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +375.5449511364245 + 20 +229.3913843220448 + 30 +0.0 + 11 +375.5449511364245 + 21 +228.2021442419912 + 31 +0.0 + 0 +LINE + 5 +130 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +262.3738695752925 + 30 +0.0 + 11 +387.1878238844487 + 21 +262.3738695752925 + 31 +0.0 + 0 +LINE + 5 +131 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +261.9942683890254 + 30 +0.0 + 11 +387.8089894619768 + 21 +260.4652454289565 + 31 +0.0 + 0 +LINE + 5 +132 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +260.0803351351892 + 30 +0.0 + 11 +387.1878238844487 + 21 +260.0803351351892 + 31 +0.0 + 0 +LINE + 5 +133 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +261.8217223952676 + 30 +0.0 + 11 +382.685700724246 + 21 +260.6324823152141 + 31 +0.0 + 0 +LINE + 5 +134 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +259.0231591042041 + 30 +0.0 + 11 +387.1878238844487 + 21 +259.0231591042041 + 31 +0.0 + 0 +LINE + 5 +135 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +258.643557917937 + 30 +0.0 + 11 +387.8089894619768 + 21 +257.1145349578682 + 31 +0.0 + 0 +LINE + 5 +136 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +256.7296246641009 + 30 +0.0 + 11 +387.1878238844487 + 21 +256.7296246641009 + 31 +0.0 + 0 +LINE + 5 +137 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +258.4710119241793 + 30 +0.0 + 11 +382.685700724246 + 21 +257.2817718441257 + 31 +0.0 + 0 +LINE + 5 +138 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +255.4892844243575 + 30 +0.0 + 11 +387.1878238844487 + 21 +255.4892844243575 + 31 +0.0 + 0 +LINE + 5 +139 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +255.1096832380904 + 30 +0.0 + 11 +387.8089894619768 + 21 +253.5806602780215 + 31 +0.0 + 0 +LINE + 5 +13A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +253.1957499842542 + 30 +0.0 + 11 +387.1878238844487 + 21 +253.1957499842542 + 31 +0.0 + 0 +LINE + 5 +13B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +254.9371372443326 + 30 +0.0 + 11 +382.685700724246 + 21 +253.7478971642791 + 31 +0.0 + 0 +LINE + 5 +13C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +251.2784985382304 + 30 +0.0 + 11 +387.1878238844487 + 21 +251.2784985382304 + 31 +0.0 + 0 +LINE + 5 +13D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +250.8988973519633 + 30 +0.0 + 11 +387.8089894619768 + 21 +249.3698743918944 + 31 +0.0 + 0 +LINE + 5 +13E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +248.9849640981271 + 30 +0.0 + 11 +387.1878238844487 + 21 +248.9849640981271 + 31 +0.0 + 0 +LINE + 5 +13F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +250.7263513582055 + 30 +0.0 + 11 +382.685700724246 + 21 +249.537111278152 + 31 +0.0 + 0 +LINE + 5 +140 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +246.7763753780276 + 30 +0.0 + 11 +387.1878238844487 + 21 +246.7763753780276 + 31 +0.0 + 0 +LINE + 5 +141 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +246.3967741917605 + 30 +0.0 + 11 +387.8089894619768 + 21 +244.8677512316917 + 31 +0.0 + 0 +LINE + 5 +142 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +244.4828409379244 + 30 +0.0 + 11 +387.1878238844487 + 21 +244.4828409379244 + 31 +0.0 + 0 +LINE + 5 +143 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +246.2242281980028 + 30 +0.0 + 11 +382.685700724246 + 21 +245.0349881179492 + 31 +0.0 + 0 +LINE + 5 +144 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +242.4475414866327 + 30 +0.0 + 11 +387.1878238844487 + 21 +242.4475414866327 + 31 +0.0 + 0 +LINE + 5 +145 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +242.0679403003656 + 30 +0.0 + 11 +387.8089894619768 + 21 +240.5389173402967 + 31 +0.0 + 0 +LINE + 5 +146 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +240.1540070465294 + 30 +0.0 + 11 +387.1878238844487 + 21 +240.1540070465294 + 31 +0.0 + 0 +LINE + 5 +147 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +241.8953943066078 + 30 +0.0 + 11 +382.685700724246 + 21 +240.7061542265543 + 31 +0.0 + 0 +LINE + 5 +148 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +238.0983206224369 + 30 +0.0 + 11 +387.1878238844487 + 21 +238.0983206224369 + 31 +0.0 + 0 +LINE + 5 +149 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +237.7187194361697 + 30 +0.0 + 11 +387.8089894619768 + 21 +236.1896964761009 + 31 +0.0 + 0 +LINE + 5 +14A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +235.8047861823336 + 30 +0.0 + 11 +387.1878238844487 + 21 +235.8047861823336 + 31 +0.0 + 0 +LINE + 5 +14B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +237.546173442412 + 30 +0.0 + 11 +382.685700724246 + 21 +236.3569333623585 + 31 +0.0 + 0 +LINE + 5 +14C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +234.1840218446606 + 30 +0.0 + 11 +387.1878238844487 + 21 +234.1840218446606 + 31 +0.0 + 0 +LINE + 5 +14D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +233.8044206583935 + 30 +0.0 + 11 +387.8089894619768 + 21 +232.2753976983246 + 31 +0.0 + 0 +LINE + 5 +14E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +231.8904874045573 + 30 +0.0 + 11 +387.1878238844487 + 21 +231.8904874045573 + 31 +0.0 + 0 +LINE + 5 +14F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +233.6318746646357 + 30 +0.0 + 11 +382.685700724246 + 21 +232.4426345845822 + 31 +0.0 + 0 +LINE + 5 +150 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.3652664842766 + 20 +229.9435315020696 + 30 +0.0 + 11 +387.1878238844487 + 21 +229.9435315020696 + 31 +0.0 + 0 +LINE + 5 +151 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +387.8089894619768 + 20 +229.5639303158025 + 30 +0.0 + 11 +387.8089894619768 + 21 +228.0349073557337 + 31 +0.0 + 0 +LINE + 5 +152 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +383.4077393442785 + 20 +227.6499970619664 + 30 +0.0 + 11 +387.1878238844487 + 21 +227.6499970619664 + 31 +0.0 + 0 +LINE + 5 +153 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +382.685700724246 + 20 +229.3913843220448 + 30 +0.0 + 11 +382.685700724246 + 21 +228.2021442419912 + 31 +0.0 + 0 +LINE + 5 +154 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +262.3738695752925 + 30 +0.0 + 11 +395.0983940598049 + 21 +262.3738695752925 + 31 +0.0 + 0 +LINE + 5 +155 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +261.9942683890254 + 30 +0.0 + 11 +395.7195596373329 + 21 +260.4652454289565 + 31 +0.0 + 0 +LINE + 5 +156 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +260.0803351351892 + 30 +0.0 + 11 +395.0983940598049 + 21 +260.0803351351892 + 31 +0.0 + 0 +LINE + 5 +157 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +261.8217223952676 + 30 +0.0 + 11 +390.5962708996022 + 21 +260.6324823152141 + 31 +0.0 + 0 +LINE + 5 +158 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +259.0231591042041 + 30 +0.0 + 11 +395.0983940598049 + 21 +259.0231591042041 + 31 +0.0 + 0 +LINE + 5 +159 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +258.643557917937 + 30 +0.0 + 11 +395.7195596373329 + 21 +257.1145349578682 + 31 +0.0 + 0 +LINE + 5 +15A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +256.7296246641009 + 30 +0.0 + 11 +395.0983940598049 + 21 +256.7296246641009 + 31 +0.0 + 0 +LINE + 5 +15B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +258.4710119241793 + 30 +0.0 + 11 +390.5962708996022 + 21 +257.2817718441257 + 31 +0.0 + 0 +LINE + 5 +15C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +255.4892844243575 + 30 +0.0 + 11 +395.0983940598049 + 21 +255.4892844243575 + 31 +0.0 + 0 +LINE + 5 +15D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +255.1096832380904 + 30 +0.0 + 11 +395.7195596373329 + 21 +253.5806602780215 + 31 +0.0 + 0 +LINE + 5 +15E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +253.1957499842542 + 30 +0.0 + 11 +395.0983940598049 + 21 +253.1957499842542 + 31 +0.0 + 0 +LINE + 5 +15F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +254.9371372443326 + 30 +0.0 + 11 +390.5962708996022 + 21 +253.7478971642791 + 31 +0.0 + 0 +LINE + 5 +160 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +251.2784985382304 + 30 +0.0 + 11 +395.0983940598049 + 21 +251.2784985382304 + 31 +0.0 + 0 +LINE + 5 +161 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +250.8988973519633 + 30 +0.0 + 11 +395.7195596373329 + 21 +249.3698743918944 + 31 +0.0 + 0 +LINE + 5 +162 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +248.9849640981271 + 30 +0.0 + 11 +395.0983940598049 + 21 +248.9849640981271 + 31 +0.0 + 0 +LINE + 5 +163 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +250.7263513582055 + 30 +0.0 + 11 +390.5962708996022 + 21 +249.537111278152 + 31 +0.0 + 0 +LINE + 5 +164 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +246.7763753780276 + 30 +0.0 + 11 +395.0983940598049 + 21 +246.7763753780276 + 31 +0.0 + 0 +LINE + 5 +165 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +246.3967741917605 + 30 +0.0 + 11 +395.7195596373329 + 21 +244.8677512316917 + 31 +0.0 + 0 +LINE + 5 +166 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +244.4828409379244 + 30 +0.0 + 11 +395.0983940598049 + 21 +244.4828409379244 + 31 +0.0 + 0 +LINE + 5 +167 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +246.2242281980028 + 30 +0.0 + 11 +390.5962708996022 + 21 +245.0349881179492 + 31 +0.0 + 0 +LINE + 5 +168 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +242.4475414866327 + 30 +0.0 + 11 +395.0983940598049 + 21 +242.4475414866327 + 31 +0.0 + 0 +LINE + 5 +169 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +242.0679403003656 + 30 +0.0 + 11 +395.7195596373329 + 21 +240.5389173402967 + 31 +0.0 + 0 +LINE + 5 +16A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +240.1540070465294 + 30 +0.0 + 11 +395.0983940598049 + 21 +240.1540070465294 + 31 +0.0 + 0 +LINE + 5 +16B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +241.8953943066078 + 30 +0.0 + 11 +390.5962708996022 + 21 +240.7061542265543 + 31 +0.0 + 0 +LINE + 5 +16C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +238.0983206224369 + 30 +0.0 + 11 +395.0983940598049 + 21 +238.0983206224369 + 31 +0.0 + 0 +LINE + 5 +16D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +237.7187194361697 + 30 +0.0 + 11 +395.7195596373329 + 21 +236.1896964761009 + 31 +0.0 + 0 +LINE + 5 +16E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +235.8047861823336 + 30 +0.0 + 11 +395.0983940598049 + 21 +235.8047861823336 + 31 +0.0 + 0 +LINE + 5 +16F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +237.546173442412 + 30 +0.0 + 11 +390.5962708996022 + 21 +236.3569333623585 + 31 +0.0 + 0 +LINE + 5 +170 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +234.1840218446606 + 30 +0.0 + 11 +395.0983940598049 + 21 +234.1840218446606 + 31 +0.0 + 0 +LINE + 5 +171 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +233.8044206583935 + 30 +0.0 + 11 +395.7195596373329 + 21 +232.2753976983246 + 31 +0.0 + 0 +LINE + 5 +172 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +231.8904874045573 + 30 +0.0 + 11 +395.0983940598049 + 21 +231.8904874045573 + 31 +0.0 + 0 +LINE + 5 +173 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +233.6318746646357 + 30 +0.0 + 11 +390.5962708996022 + 21 +232.4426345845822 + 31 +0.0 + 0 +LINE + 5 +174 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.2758366596328 + 20 +229.9435315020696 + 30 +0.0 + 11 +395.0983940598049 + 21 +229.9435315020696 + 31 +0.0 + 0 +LINE + 5 +175 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +395.7195596373329 + 20 +229.5639303158025 + 30 +0.0 + 11 +395.7195596373329 + 21 +228.0349073557337 + 31 +0.0 + 0 +LINE + 5 +176 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +391.3183095196347 + 20 +227.6499970619664 + 30 +0.0 + 11 +395.0983940598049 + 21 +227.6499970619664 + 31 +0.0 + 0 +LINE + 5 +177 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +390.5962708996022 + 20 +229.3913843220448 + 30 +0.0 + 11 +390.5962708996022 + 21 +228.2021442419912 + 31 +0.0 + 0 +LINE + 5 +178 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +262.3738695752925 + 30 +0.0 + 11 +403.1151463851659 + 21 +262.3738695752925 + 31 +0.0 + 0 +LINE + 5 +179 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +261.9942683890254 + 30 +0.0 + 11 +403.7363119626939 + 21 +260.4652454289565 + 31 +0.0 + 0 +LINE + 5 +17A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +260.0803351351892 + 30 +0.0 + 11 +403.1151463851659 + 21 +260.0803351351892 + 31 +0.0 + 0 +LINE + 5 +17B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +261.8217223952676 + 30 +0.0 + 11 +398.6130232249632 + 21 +260.6324823152141 + 31 +0.0 + 0 +LINE + 5 +17C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +259.0231591042041 + 30 +0.0 + 11 +403.1151463851659 + 21 +259.0231591042041 + 31 +0.0 + 0 +LINE + 5 +17D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +258.643557917937 + 30 +0.0 + 11 +403.7363119626939 + 21 +257.1145349578682 + 31 +0.0 + 0 +LINE + 5 +17E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +256.7296246641009 + 30 +0.0 + 11 +403.1151463851659 + 21 +256.7296246641009 + 31 +0.0 + 0 +LINE + 5 +17F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +258.4710119241793 + 30 +0.0 + 11 +398.6130232249632 + 21 +257.2817718441257 + 31 +0.0 + 0 +LINE + 5 +180 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +255.4892844243575 + 30 +0.0 + 11 +403.1151463851659 + 21 +255.4892844243575 + 31 +0.0 + 0 +LINE + 5 +181 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +255.1096832380904 + 30 +0.0 + 11 +403.7363119626939 + 21 +253.5806602780215 + 31 +0.0 + 0 +LINE + 5 +182 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +253.1957499842542 + 30 +0.0 + 11 +403.1151463851659 + 21 +253.1957499842542 + 31 +0.0 + 0 +LINE + 5 +183 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +254.9371372443326 + 30 +0.0 + 11 +398.6130232249632 + 21 +253.7478971642791 + 31 +0.0 + 0 +LINE + 5 +184 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +251.2784985382304 + 30 +0.0 + 11 +403.1151463851659 + 21 +251.2784985382304 + 31 +0.0 + 0 +LINE + 5 +185 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +250.8988973519633 + 30 +0.0 + 11 +403.7363119626939 + 21 +249.3698743918944 + 31 +0.0 + 0 +LINE + 5 +186 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +248.9849640981271 + 30 +0.0 + 11 +403.1151463851659 + 21 +248.9849640981271 + 31 +0.0 + 0 +LINE + 5 +187 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +250.7263513582055 + 30 +0.0 + 11 +398.6130232249632 + 21 +249.537111278152 + 31 +0.0 + 0 +LINE + 5 +188 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +246.7763753780276 + 30 +0.0 + 11 +403.1151463851659 + 21 +246.7763753780276 + 31 +0.0 + 0 +LINE + 5 +189 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +246.3967741917605 + 30 +0.0 + 11 +403.7363119626939 + 21 +244.8677512316917 + 31 +0.0 + 0 +LINE + 5 +18A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +244.4828409379244 + 30 +0.0 + 11 +403.1151463851659 + 21 +244.4828409379244 + 31 +0.0 + 0 +LINE + 5 +18B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +246.2242281980028 + 30 +0.0 + 11 +398.6130232249632 + 21 +245.0349881179492 + 31 +0.0 + 0 +LINE + 5 +18C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +242.4475414866327 + 30 +0.0 + 11 +403.1151463851659 + 21 +242.4475414866327 + 31 +0.0 + 0 +LINE + 5 +18D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +242.0679403003656 + 30 +0.0 + 11 +403.7363119626939 + 21 +240.5389173402967 + 31 +0.0 + 0 +LINE + 5 +18E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +240.1540070465294 + 30 +0.0 + 11 +403.1151463851659 + 21 +240.1540070465294 + 31 +0.0 + 0 +LINE + 5 +18F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +241.8953943066078 + 30 +0.0 + 11 +398.6130232249632 + 21 +240.7061542265543 + 31 +0.0 + 0 +LINE + 5 +190 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +238.0983206224369 + 30 +0.0 + 11 +403.1151463851659 + 21 +238.0983206224369 + 31 +0.0 + 0 +LINE + 5 +191 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +237.7187194361697 + 30 +0.0 + 11 +403.7363119626939 + 21 +236.1896964761009 + 31 +0.0 + 0 +LINE + 5 +192 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +235.8047861823336 + 30 +0.0 + 11 +403.1151463851659 + 21 +235.8047861823336 + 31 +0.0 + 0 +LINE + 5 +193 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +237.546173442412 + 30 +0.0 + 11 +398.6130232249632 + 21 +236.3569333623585 + 31 +0.0 + 0 +LINE + 5 +194 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +234.1840218446606 + 30 +0.0 + 11 +403.1151463851659 + 21 +234.1840218446606 + 31 +0.0 + 0 +LINE + 5 +195 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +233.8044206583935 + 30 +0.0 + 11 +403.7363119626939 + 21 +232.2753976983246 + 31 +0.0 + 0 +LINE + 5 +196 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +231.8904874045573 + 30 +0.0 + 11 +403.1151463851659 + 21 +231.8904874045573 + 31 +0.0 + 0 +LINE + 5 +197 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +233.6318746646357 + 30 +0.0 + 11 +398.6130232249632 + 21 +232.4426345845822 + 31 +0.0 + 0 +LINE + 5 +198 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.2925889849938 + 20 +229.9435315020696 + 30 +0.0 + 11 +403.1151463851659 + 21 +229.9435315020696 + 31 +0.0 + 0 +LINE + 5 +199 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +403.7363119626939 + 20 +229.5639303158025 + 30 +0.0 + 11 +403.7363119626939 + 21 +228.0349073557337 + 31 +0.0 + 0 +LINE + 5 +19A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +399.3350618449957 + 20 +227.6499970619664 + 30 +0.0 + 11 +403.1151463851659 + 21 +227.6499970619664 + 31 +0.0 + 0 +LINE + 5 +19B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +398.6130232249632 + 20 +229.3913843220448 + 30 +0.0 + 11 +398.6130232249632 + 21 +228.2021442419912 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +SECTION + 2 +THUMBNAILIMAGE + 90 + 17264 +310 +28000000B40000005A0000000100080000000000483F000000000000000000000001000000000000FFFFFF00000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004949000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000004900494949494949494949495252520000520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000494952000000000000000000494900000049000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004949490000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000524900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000004952000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000004949000049494900004949000000494949000049494900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049000049490000000049000049004900004900490000004900000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049490000494900000049 +310 +49000000494900000049490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000494949004949490000494949000049494900004949000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049494900494949000049494900004949490000494900000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000494900004949490000494900000049490000004949490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004900004949000000494900004900490000490049000000490000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00494900004949490000494900000049490000004949000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049490000494949000049490000004949000000494900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490000494900000049490000490049000049004900 +310 +00004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000049490000494949000049490000004949000000494949000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004949000049494900004949000000494949000049490000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000004900004949000000004900004900490000490049000000490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000494949004949490000 +310 +49490000004949490000494900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000494949490049494900494949490049494949004949490049000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000494949490049494900494949490000494949000049490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000494949004949490000494949000049494900004949000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00004949000049494900004949000000494949000049490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049494949004949490049494949004949494900004949004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049490000494949000049490000004949000000 +310 +49490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000049000049490000004949000049004900004900490000004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049490000494949000049490000004949000000494949000049000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000049520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/1111.par b/LaiPuLaser/TempMarkData/1111.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/1111.par differ diff --git a/LaiPuLaser/TempMarkData/1234.are b/LaiPuLaser/TempMarkData/1234.are new file mode 100644 index 0000000..bf10ed3 Binary files /dev/null and b/LaiPuLaser/TempMarkData/1234.are differ diff --git a/LaiPuLaser/TempMarkData/1234.dxf b/LaiPuLaser/TempMarkData/1234.dxf new file mode 100644 index 0000000..f7d7967 Binary files /dev/null and b/LaiPuLaser/TempMarkData/1234.dxf differ diff --git a/LaiPuLaser/TempMarkData/1234.par b/LaiPuLaser/TempMarkData/1234.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/1234.par differ diff --git a/LaiPuLaser/TempMarkData/219-2D.are b/LaiPuLaser/TempMarkData/219-2D.are new file mode 100644 index 0000000..ec1f762 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219-2D.are differ diff --git a/LaiPuLaser/TempMarkData/219-2D.dxf b/LaiPuLaser/TempMarkData/219-2D.dxf new file mode 100644 index 0000000..e96e158 --- /dev/null +++ b/LaiPuLaser/TempMarkData/219-2D.dxf @@ -0,0 +1,14988 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0000000000000641 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +402.2158990915597 + 20 +208.4266080301259 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458963.581383253 + 9 +$TDUCREATE + 40 +2458963.248049919 + 9 +$TDUPDATE + 40 +2458963.581383253 + 9 +$TDUUPDATE + 40 +2458963.248049919 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +44F + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层3 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2AE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +208.4266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +199.5668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +208.4266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +199.5668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +208.4266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +207.8516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +199.5668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +200.1418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +208.4266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +208.4266080301259 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +207.8516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +207.8516080301259 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +199.5668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +199.5668991242912 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +200.1418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +200.1418991242912 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +198.6266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +189.7668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +198.6266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +189.7668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +198.6266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +198.0516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +189.7668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +190.3418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +198.6266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +198.6266080301259 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +198.0516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +198.0516080301259 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +189.7668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +189.7668991242912 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +190.3418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +190.3418991242912 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +188.8266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +179.9668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +188.8266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +179.9668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +188.8266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +188.2516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +179.9668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +180.5418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +188.8266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +188.8266080301259 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +188.2516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +188.2516080301259 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +179.9668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +179.9668991242912 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +180.5418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +180.5418991242912 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +179.0266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +170.1668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +179.0266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +170.1668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +179.0266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +178.4516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +170.1668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +170.7418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +179.0266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +179.0266080301259 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +178.4516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +178.4516080301259 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +170.1668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +170.1668991242912 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +170.7418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +170.7418991242912 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +169.2266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +160.3668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +169.2266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +160.3668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +169.2266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +168.6516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +160.3668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +160.9418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +169.2266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +169.2266080301259 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +168.6516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +168.6516080301259 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +160.3668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +160.3668991242912 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +160.9418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +160.9418991242912 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +159.4266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +150.5668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +159.4266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +150.5668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +159.4266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +158.8516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +150.5668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +151.1418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +159.4266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +159.4266080301259 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +158.8516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +158.8516080301259 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +150.5668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +150.5668991242912 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +151.1418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +151.1418991242912 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +149.6266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +140.7668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +149.6266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +140.7668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +149.6266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +149.0516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +140.7668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +141.3418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +149.6266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +149.6266080301259 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +149.0516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +149.0516080301259 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +140.7668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +140.7668991242912 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +141.3418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +141.3418991242912 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +139.8266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +130.9668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +139.8266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +130.9668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +139.8266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +139.2516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +130.9668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +131.5418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +139.8266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +139.8266080301259 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +139.2516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +139.2516080301259 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +130.9668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +130.9668991242912 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +131.5418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +131.5418991242912 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +130.0266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +121.1668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +130.0266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +121.1668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +130.0266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +129.4516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +121.1668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +121.7418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +130.0266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +130.0266080301259 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +129.4516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +129.4516080301259 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +121.1668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +121.1668991242912 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +121.7418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +121.7418991242912 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +120.2266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +111.3668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +120.2266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +111.3668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +120.2266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +119.6516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +111.3668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +111.9418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +120.2266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +120.2266080301259 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +119.6516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +119.6516080301259 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +111.3668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +111.3668991242912 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +111.9418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +111.9418991242912 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +230.6808990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +240.2008990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +221.3208990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +230.6808990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +236.8408990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +240.2008990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +250.5008990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +260.0208990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +241.1408990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +250.5008990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +256.6608990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +260.0208990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +270.3208990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +279.8408990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +260.9608990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +270.3208990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +276.4808990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +279.8408990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +290.1408990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +299.6608990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +280.7808990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +290.1408990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +296.3008990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +299.6608990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +309.9608990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +319.4808990915598 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +300.6008990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +309.9608990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +316.1208990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +319.4808990915598 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +110.4266080301259 + 30 +0.0 + 11 +329.7808990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +339.3008990915598 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +320.4208990915598 + 20 +101.5668991242912 + 30 +0.0 + 11 +329.7808990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +335.9408990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +339.3008990915598 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +110.4266080301259 + 30 +0.0 + 11 +349.6008990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +359.1208990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +340.2408990915598 + 20 +101.5668991242912 + 30 +0.0 + 11 +349.6008990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +355.7608990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +359.1208990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +110.4266080301259 + 30 +0.0 + 11 +369.4208990915597 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +109.8516080301259 + 30 +0.0 + 11 +378.9408990915598 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +360.0608990915598 + 20 +101.5668991242912 + 30 +0.0 + 11 +369.4208990915597 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +375.5808990915598 + 20 +102.1418991242912 + 30 +0.0 + 11 +378.9408990915598 + 21 +102.1418991242912 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +110.4266080301259 + 30 +0.0 + 11 +389.2408990915598 + 21 +110.4266080301259 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +109.8516080301259 + 30 +0.0 + 11 +398.7608990915597 + 21 +109.8516080301259 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +379.8808990915597 + 20 +101.5668991242912 + 30 +0.0 + 11 +389.2408990915598 + 21 +101.5668991242912 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +395.4008990915597 + 20 +102.1418991242912 + 30 +0.0 + 11 +398.7608990915597 + 21 +102.1418991242912 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +221.4048372217997 + 20 +156.2459431499219 + 10 +221.5808990915597 + 20 +156.00303942822 + 10 +221.5808990915597 + 20 +153.8047946751739 + 10 +221.4399434817826 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +240.6080884233671 + 20 +156.4103897917249 + 10 +240.4408990915597 + 20 +156.1612959794176 + 10 +240.4408990915597 + 20 +153.7515324617207 + 10 +240.6062860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +260.4280884233672 + 20 +156.4103897917249 + 10 +260.2608990915597 + 20 +156.1612959794176 + 10 +260.2608990915597 + 20 +153.7515324617207 + 10 +260.4262860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +241.2248372217997 + 20 +156.2459431499219 + 10 +241.4008990915597 + 20 +156.00303942822 + 10 +241.4008990915597 + 20 +153.8047946751739 + 10 +241.2599434817826 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +280.2480884233672 + 20 +156.4103897917249 + 10 +280.0808990915597 + 20 +156.1612959794176 + 10 +280.0808990915597 + 20 +153.7515324617207 + 10 +280.2462860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +261.0448372217997 + 20 +156.2459431499219 + 10 +261.2208990915597 + 20 +156.00303942822 + 10 +261.2208990915597 + 20 +153.8047946751739 + 10 +261.0799434817825 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +300.0680884233672 + 20 +156.4103897917249 + 10 +299.9008990915597 + 20 +156.1612959794176 + 10 +299.9008990915597 + 20 +153.7515324617207 + 10 +300.0662860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +280.8648372217997 + 20 +156.2459431499219 + 10 +281.0408990915597 + 20 +156.00303942822 + 10 +281.0408990915597 + 20 +153.8047946751739 + 10 +280.8999434817825 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +319.8880884233672 + 20 +156.4103897917249 + 10 +319.7208990915597 + 20 +156.1612959794176 + 10 +319.7208990915597 + 20 +153.7515324617207 + 10 +319.8862860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +300.6848372217997 + 20 +156.2459431499219 + 10 +300.8608990915597 + 20 +156.00303942822 + 10 +300.8608990915597 + 20 +153.8047946751739 + 10 +300.7199434817825 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +339.7080884233671 + 20 +156.4103897917249 + 10 +339.5408990915597 + 20 +156.1612959794176 + 10 +339.5408990915597 + 20 +153.7515324617207 + 10 +339.7062860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +320.5048372217997 + 20 +156.2459431499219 + 10 +320.6808990915597 + 20 +156.00303942822 + 10 +320.6808990915597 + 20 +153.8047946751739 + 10 +320.5399434817825 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +359.5280884233672 + 20 +156.4103897917249 + 10 +359.3608990915596 + 20 +156.1612959794176 + 10 +359.3608990915596 + 20 +153.7515324617207 + 10 +359.5262860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +340.3248372217997 + 20 +156.2459431499219 + 10 +340.5008990915597 + 20 +156.00303942822 + 10 +340.5008990915597 + 20 +153.8047946751739 + 10 +340.3599434817826 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +379.3480884233671 + 20 +156.4103897917249 + 10 +379.1808990915597 + 20 +156.1612959794176 + 10 +379.1808990915597 + 20 +153.7515324617207 + 10 +379.3462860783843 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +360.1448372217997 + 20 +156.2459431499219 + 10 +360.3208990915597 + 20 +156.00303942822 + 10 +360.3208990915597 + 20 +153.8047946751739 + 10 +360.1799434817825 + 20 +153.5399711186833 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +399.1680884233672 + 20 +156.4103897917249 + 10 +399.0008990915596 + 20 +156.1612959794176 + 10 +399.0008990915596 + 20 +153.7515324617207 + 10 +399.1662860783842 + 20 +153.5012383455511 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +379.9648372217997 + 20 +156.2459431499219 + 10 +380.1408990915597 + 20 +156.00303942822 + 10 +380.1408990915597 + 20 +153.8047946751739 + 10 +379.9999434817826 + 20 +153.5399711186833 + 0 +CIRCLE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +401.7158990915597 + 20 +114.9968991242912 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +218.7158990915597 + 20 +164.9968991242912 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/219-2D.par b/LaiPuLaser/TempMarkData/219-2D.par new file mode 100644 index 0000000..5657f27 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219-2D.par differ diff --git a/LaiPuLaser/TempMarkData/219.are b/LaiPuLaser/TempMarkData/219.are new file mode 100644 index 0000000..fa534d1 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219.are differ diff --git a/LaiPuLaser/TempMarkData/219.dxf b/LaiPuLaser/TempMarkData/219.dxf new file mode 100644 index 0000000..e1d5543 --- /dev/null +++ b/LaiPuLaser/TempMarkData/219.dxf @@ -0,0 +1,16596 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-17.08142135623724 + 20 +-107.4714213562373 + 30 +0.0 + 9 +$EXTMAX + 10 +160.6214213562374 + 20 +0.2999999999999999 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458802.569606632 + 9 +$TDUCREATE + 40 +2458802.236273299 + 9 +$TDUPDATE + 40 +2458802.570181933 + 9 +$TDUUPDATE + 40 +2458802.2368486 + 9 +$TDINDWG + 40 +0.0005753125 + 9 +$TDUSRTIMER + 40 +0.0005753125 + 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 +52C + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{C001FFC2-1956-41DE-95F4-48CCB6D32CF0} + 9 +$VERSIONGUID + 2 +{4B32F4AE-AAAE-406F-9D41-A531B032489D} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +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 +379 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +42.64555875132054 + 22 +-41.08238181507136 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +174.4440379011743 + 41 +2.275157287742156 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +D979 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +LAYER + 5 +3A2 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +1DC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +160.6214213562374 + 20 +-54.99142135623733 + 10 +160.48 + 20 +-54.84999999999999 + 10 +160.48 + 20 +-52.95000000000001 + 10 +160.6214213562374 + 20 +-52.80857864376266 + 0 +LWPOLYLINE + 5 +1DD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +141.4785786437628 + 20 +-52.80857864376265 + 10 +141.62 + 20 +-52.95 + 10 +141.62 + 20 +-54.85 + 10 +141.4785786437627 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1DE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +140.8014213562374 + 20 +-54.99142135623732 + 10 +140.66 + 20 +-54.84999999999999 + 10 +140.66 + 20 +-52.95 + 10 +140.8014213562374 + 20 +-52.80857864376265 + 0 +LWPOLYLINE + 5 +1DF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +121.6585786437628 + 20 +-52.80857864376265 + 10 +121.8 + 20 +-52.95 + 10 +121.8 + 20 +-54.85 + 10 +121.6585786437627 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1E0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +120.9814213562373 + 20 +-54.99142135623732 + 10 +120.84 + 20 +-54.84999999999999 + 10 +120.84 + 20 +-52.95 + 10 +120.9814213562373 + 20 +-52.80857864376265 + 0 +LWPOLYLINE + 5 +1E1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +101.8385786437628 + 20 +-52.80857864376265 + 10 +101.98 + 20 +-52.95 + 10 +101.98 + 20 +-54.85 + 10 +101.8385786437627 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1E2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +101.1614213562374 + 20 +-54.99142135623732 + 10 +101.02 + 20 +-54.84999999999999 + 10 +101.02 + 20 +-52.95 + 10 +101.1614213562374 + 20 +-52.80857864376265 + 0 +LWPOLYLINE + 5 +1E3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +82.01857864376285 + 20 +-52.80857864376264 + 10 +82.16000000000003 + 20 +-52.95 + 10 +82.16000000000003 + 20 +-54.84999999999999 + 10 +82.01857864376274 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1E4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +81.34142135623736 + 20 +-54.99142135623732 + 10 +81.20000000000005 + 20 +-54.84999999999998 + 10 +81.20000000000005 + 20 +-52.95 + 10 +81.34142135623736 + 20 +-52.80857864376264 + 0 +LWPOLYLINE + 5 +1E5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.19857864376285 + 20 +-52.80857864376264 + 10 +62.34000000000002 + 20 +-52.95 + 10 +62.34000000000002 + 20 +-54.84999999999999 + 10 +62.19857864376273 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1E6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +61.52142135623736 + 20 +-54.99142135623732 + 10 +61.38000000000005 + 20 +-54.84999999999998 + 10 +61.38000000000005 + 20 +-52.95 + 10 +61.52142135623736 + 20 +-52.80857864376264 + 0 +LWPOLYLINE + 5 +1E7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +42.37857864376285 + 20 +-52.80857864376264 + 10 +42.52000000000003 + 20 +-52.95 + 10 +42.52000000000003 + 20 +-54.84999999999999 + 10 +42.37857864376274 + 20 +-54.99142135623732 + 0 +LWPOLYLINE + 5 +1E8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +41.70142135623734 + 20 +-54.99142135623732 + 10 +41.56000000000005 + 20 +-54.84999999999998 + 10 +41.56000000000005 + 20 +-52.95 + 10 +41.70142135623734 + 20 +-52.80857864376264 + 0 +LWPOLYLINE + 5 +1E9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +22.55857864376286 + 20 +-52.80857864376264 + 10 +22.70000000000004 + 20 +-52.94999999999999 + 10 +22.70000000000004 + 20 +-54.84999999999999 + 10 +22.55857864376275 + 20 +-54.99142135623731 + 0 +LWPOLYLINE + 5 +1EA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +21.88142135623734 + 20 +-54.99142135623731 + 10 +21.74000000000006 + 20 +-54.84999999999997 + 10 +21.74000000000006 + 20 +-52.94999999999999 + 10 +21.88142135623734 + 20 +-52.80857864376264 + 0 +LWPOLYLINE + 5 +1EB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +2.738578643762814 + 20 +-52.80857864376264 + 10 +2.880000000000045 + 20 +-52.94999999999999 + 10 +2.880000000000045 + 20 +-54.84999999999999 + 10 +2.738578643762701 + 20 +-54.99142135623731 + 0 +LWPOLYLINE + 5 +1EC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +2.061421356237354 + 20 +-54.99142135623731 + 10 +1.920000000000066 + 20 +-54.84999999999997 + 10 +1.920000000000067 + 20 +-52.94999999999999 + 10 +2.061421356237354 + 20 +-52.80857864376264 + 0 +LWPOLYLINE + 5 +1ED +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.08142135623713 + 20 +-52.80857864376264 + 10 +-16.93999999999995 + 20 +-52.94999999999999 + 10 +-16.93999999999995 + 20 +-54.84999999999999 + 10 +-17.08142135623724 + 20 +-54.99142135623731 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-99.02999999999996 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-106.77 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-98.32857864376264 + 10 +-9.570000000000006 + 20 +-98.46999999999996 + 10 +-15.46999999999987 + 20 +-98.46999999999996 + 10 +-15.61142135623721 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-107.4714213562373 + 10 +-9.570000000000006 + 20 +-107.3299999999999 + 10 +-15.46999999999987 + 20 +-107.3299999999999 + 10 +-15.61142135623721 + 20 +-107.4714213562373 + 0 +CIRCLE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbCircle + 10 +158.56 + 20 +-98.00000000000001 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbCircle + 10 +-0.000000000000012 + 20 +-98.0 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +LWPOLYLINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-98.32857864376264 + 10 +10.24999999999999 + 20 +-98.46999999999996 + 10 +4.350000000000131 + 20 +-98.46999999999996 + 10 +4.20857864376279 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-107.4714213562373 + 10 +10.24999999999999 + 20 +-107.3299999999999 + 10 +4.350000000000131 + 20 +-107.3299999999999 + 10 +4.20857864376279 + 20 +-107.4714213562373 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-99.02999999999996 + 30 +0.0 + 11 +17.79094586198329 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-106.77 + 30 +0.0 + 11 +17.79094586198323 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-98.32857864376264 + 10 +30.06999999999999 + 20 +-98.46999999999996 + 10 +24.17000000000013 + 20 +-98.46999999999996 + 10 +24.02857864376279 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-107.4714213562373 + 10 +30.06999999999999 + 20 +-107.3299999999999 + 10 +24.17000000000013 + 20 +-107.3299999999999 + 10 +24.02857864376279 + 20 +-107.4714213562373 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-99.02999999999996 + 30 +0.0 + 11 +37.61094586198328 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-106.77 + 30 +0.0 + 11 +37.61094586198323 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-98.32857864376264 + 10 +49.88999999999999 + 20 +-98.46999999999996 + 10 +43.99000000000013 + 20 +-98.46999999999996 + 10 +43.84857864376279 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-107.4714213562373 + 10 +49.88999999999999 + 20 +-107.3299999999999 + 10 +43.99000000000013 + 20 +-107.3299999999999 + 10 +43.84857864376279 + 20 +-107.4714213562373 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-99.02999999999996 + 30 +0.0 + 11 +57.43094586198328 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-106.77 + 30 +0.0 + 11 +57.43094586198323 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-98.32857864376264 + 10 +69.71 + 20 +-98.46999999999996 + 10 +63.81000000000013 + 20 +-98.46999999999996 + 10 +63.66857864376279 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-107.4714213562373 + 10 +69.71 + 20 +-107.3299999999999 + 10 +63.81000000000013 + 20 +-107.3299999999999 + 10 +63.66857864376279 + 20 +-107.4714213562373 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-99.02999999999996 + 30 +0.0 + 11 +77.25094586198328 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-106.77 + 30 +0.0 + 11 +77.25094586198323 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-98.32857864376264 + 10 +89.52999999999999 + 20 +-98.46999999999996 + 10 +83.63000000000012 + 20 +-98.46999999999996 + 10 +83.48857864376278 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-107.4714213562373 + 10 +89.52999999999999 + 20 +-107.3299999999999 + 10 +83.63000000000012 + 20 +-107.3299999999999 + 10 +83.48857864376278 + 20 +-107.4714213562373 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-99.02999999999996 + 30 +0.0 + 11 +97.07094586198328 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-106.77 + 30 +0.0 + 11 +97.07094586198322 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-98.32857864376264 + 10 +109.35 + 20 +-98.46999999999996 + 10 +103.4500000000001 + 20 +-98.46999999999996 + 10 +103.3085786437628 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-107.4714213562373 + 10 +109.35 + 20 +-107.3299999999999 + 10 +103.4500000000001 + 20 +-107.3299999999999 + 10 +103.3085786437628 + 20 +-107.4714213562373 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-99.02999999999996 + 30 +0.0 + 11 +116.8909458619833 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-106.77 + 30 +0.0 + 11 +116.8909458619832 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-98.32857864376264 + 10 +129.17 + 20 +-98.46999999999996 + 10 +123.2700000000001 + 20 +-98.46999999999996 + 10 +123.1285786437628 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-107.4714213562373 + 10 +129.17 + 20 +-107.3299999999999 + 10 +123.2700000000001 + 20 +-107.3299999999999 + 10 +123.1285786437628 + 20 +-107.4714213562373 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-99.02999999999996 + 30 +0.0 + 11 +136.7109458619833 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-106.77 + 30 +0.0 + 11 +136.7109458619832 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-98.32857864376264 + 10 +148.99 + 20 +-98.46999999999996 + 10 +143.0900000000001 + 20 +-98.46999999999996 + 10 +142.9485786437628 + 20 +-98.32857864376264 + 0 +LWPOLYLINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-107.4714213562373 + 10 +148.99 + 20 +-107.3299999999999 + 10 +143.0900000000001 + 20 +-107.3299999999999 + 10 +142.9485786437628 + 20 +-107.4714213562373 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-99.02999999999996 + 30 +0.0 + 11 +156.5309458619833 + 21 +-99.02999999999996 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-106.77 + 30 +0.0 + 11 +156.5309458619832 + 21 +-106.7699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-88.52857864376264 + 10 +-9.570000000000006 + 20 +-88.66999999999996 + 10 +-15.46999999999987 + 20 +-88.66999999999996 + 10 +-15.61142135623721 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-97.6714213562373 + 10 +-9.570000000000006 + 20 +-97.5299999999999 + 10 +-15.46999999999987 + 20 +-97.5299999999999 + 10 +-15.61142135623721 + 20 +-97.6714213562373 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-89.22999999999996 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-96.97000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-88.52857864376264 + 10 +10.24999999999999 + 20 +-88.66999999999996 + 10 +4.350000000000131 + 20 +-88.66999999999996 + 10 +4.20857864376279 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-97.6714213562373 + 10 +10.24999999999999 + 20 +-97.5299999999999 + 10 +4.350000000000131 + 20 +-97.5299999999999 + 10 +4.20857864376279 + 20 +-97.6714213562373 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-89.22999999999996 + 30 +0.0 + 11 +17.79094586198329 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-88.52857864376264 + 10 +30.06999999999999 + 20 +-88.66999999999996 + 10 +24.17000000000013 + 20 +-88.66999999999996 + 10 +24.02857864376279 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-97.6714213562373 + 10 +30.06999999999999 + 20 +-97.5299999999999 + 10 +24.17000000000013 + 20 +-97.5299999999999 + 10 +24.02857864376279 + 20 +-97.6714213562373 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-89.22999999999996 + 30 +0.0 + 11 +37.61094586198328 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-88.52857864376264 + 10 +49.88999999999999 + 20 +-88.66999999999996 + 10 +43.99000000000013 + 20 +-88.66999999999996 + 10 +43.84857864376279 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-97.6714213562373 + 10 +49.88999999999999 + 20 +-97.5299999999999 + 10 +43.99000000000013 + 20 +-97.5299999999999 + 10 +43.84857864376279 + 20 +-97.6714213562373 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-89.22999999999996 + 30 +0.0 + 11 +57.43094586198328 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-88.52857864376264 + 10 +69.71 + 20 +-88.66999999999996 + 10 +63.81000000000013 + 20 +-88.66999999999996 + 10 +63.66857864376279 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-97.6714213562373 + 10 +69.71 + 20 +-97.5299999999999 + 10 +63.81000000000013 + 20 +-97.5299999999999 + 10 +63.66857864376279 + 20 +-97.6714213562373 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-89.22999999999996 + 30 +0.0 + 11 +77.25094586198328 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-88.52857864376264 + 10 +89.52999999999999 + 20 +-88.66999999999996 + 10 +83.63000000000012 + 20 +-88.66999999999996 + 10 +83.48857864376278 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-97.6714213562373 + 10 +89.52999999999999 + 20 +-97.5299999999999 + 10 +83.63000000000012 + 20 +-97.5299999999999 + 10 +83.48857864376278 + 20 +-97.6714213562373 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-89.22999999999996 + 30 +0.0 + 11 +97.07094586198328 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-88.52857864376264 + 10 +109.35 + 20 +-88.66999999999996 + 10 +103.4500000000001 + 20 +-88.66999999999996 + 10 +103.3085786437628 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-97.6714213562373 + 10 +109.35 + 20 +-97.5299999999999 + 10 +103.4500000000001 + 20 +-97.5299999999999 + 10 +103.3085786437628 + 20 +-97.6714213562373 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-89.22999999999996 + 30 +0.0 + 11 +116.8909458619833 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-88.52857864376264 + 10 +129.17 + 20 +-88.66999999999996 + 10 +123.2700000000001 + 20 +-88.66999999999996 + 10 +123.1285786437628 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-97.6714213562373 + 10 +129.17 + 20 +-97.5299999999999 + 10 +123.2700000000001 + 20 +-97.5299999999999 + 10 +123.1285786437628 + 20 +-97.6714213562373 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-89.22999999999996 + 30 +0.0 + 11 +136.7109458619833 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-88.52857864376264 + 10 +148.99 + 20 +-88.66999999999996 + 10 +143.0900000000001 + 20 +-88.66999999999996 + 10 +142.9485786437628 + 20 +-88.52857864376264 + 0 +LWPOLYLINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-97.6714213562373 + 10 +148.99 + 20 +-97.5299999999999 + 10 +143.0900000000001 + 20 +-97.5299999999999 + 10 +142.9485786437628 + 20 +-97.6714213562373 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-89.22999999999996 + 30 +0.0 + 11 +156.5309458619833 + 21 +-89.22999999999996 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-96.97000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-96.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-78.72857864376263 + 10 +-9.570000000000006 + 20 +-78.86999999999995 + 10 +-15.46999999999987 + 20 +-78.86999999999995 + 10 +-15.61142135623721 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-87.8714213562373 + 10 +-9.570000000000006 + 20 +-87.7299999999999 + 10 +-15.46999999999987 + 20 +-87.7299999999999 + 10 +-15.61142135623721 + 20 +-87.8714213562373 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-79.42999999999995 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-87.17000000000002 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-78.72857864376263 + 10 +10.24999999999999 + 20 +-78.86999999999995 + 10 +4.350000000000131 + 20 +-78.86999999999995 + 10 +4.20857864376279 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-87.8714213562373 + 10 +10.24999999999999 + 20 +-87.7299999999999 + 10 +4.350000000000131 + 20 +-87.7299999999999 + 10 +4.20857864376279 + 20 +-87.8714213562373 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-79.42999999999995 + 30 +0.0 + 11 +17.79094586198329 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +17.79094586198323 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-78.72857864376263 + 10 +30.06999999999999 + 20 +-78.86999999999995 + 10 +24.17000000000013 + 20 +-78.86999999999995 + 10 +24.02857864376279 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-87.8714213562373 + 10 +30.06999999999999 + 20 +-87.7299999999999 + 10 +24.17000000000013 + 20 +-87.7299999999999 + 10 +24.02857864376279 + 20 +-87.8714213562373 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-79.42999999999995 + 30 +0.0 + 11 +37.61094586198328 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +37.61094586198323 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-78.72857864376263 + 10 +49.88999999999999 + 20 +-78.86999999999995 + 10 +43.99000000000013 + 20 +-78.86999999999995 + 10 +43.84857864376279 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-87.8714213562373 + 10 +49.88999999999999 + 20 +-87.7299999999999 + 10 +43.99000000000013 + 20 +-87.7299999999999 + 10 +43.84857864376279 + 20 +-87.8714213562373 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-79.42999999999995 + 30 +0.0 + 11 +57.43094586198328 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +57.43094586198323 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-78.72857864376263 + 10 +69.71 + 20 +-78.86999999999995 + 10 +63.81000000000013 + 20 +-78.86999999999995 + 10 +63.66857864376279 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-87.8714213562373 + 10 +69.71 + 20 +-87.7299999999999 + 10 +63.81000000000013 + 20 +-87.7299999999999 + 10 +63.66857864376279 + 20 +-87.8714213562373 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-79.42999999999995 + 30 +0.0 + 11 +77.25094586198328 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +77.25094586198323 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-78.72857864376263 + 10 +89.52999999999999 + 20 +-78.86999999999995 + 10 +83.63000000000012 + 20 +-78.86999999999995 + 10 +83.48857864376278 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-87.8714213562373 + 10 +89.52999999999999 + 20 +-87.7299999999999 + 10 +83.63000000000012 + 20 +-87.7299999999999 + 10 +83.48857864376278 + 20 +-87.8714213562373 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-79.42999999999995 + 30 +0.0 + 11 +97.07094586198328 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +97.07094586198322 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-78.72857864376263 + 10 +109.35 + 20 +-78.86999999999995 + 10 +103.4500000000001 + 20 +-78.86999999999995 + 10 +103.3085786437628 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-87.8714213562373 + 10 +109.35 + 20 +-87.7299999999999 + 10 +103.4500000000001 + 20 +-87.7299999999999 + 10 +103.3085786437628 + 20 +-87.8714213562373 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-79.42999999999995 + 30 +0.0 + 11 +116.8909458619833 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +116.8909458619832 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-78.72857864376263 + 10 +129.17 + 20 +-78.86999999999995 + 10 +123.2700000000001 + 20 +-78.86999999999995 + 10 +123.1285786437628 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-87.8714213562373 + 10 +129.17 + 20 +-87.7299999999999 + 10 +123.2700000000001 + 20 +-87.7299999999999 + 10 +123.1285786437628 + 20 +-87.8714213562373 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-79.42999999999995 + 30 +0.0 + 11 +136.7109458619833 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +136.7109458619832 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-78.72857864376263 + 10 +148.99 + 20 +-78.86999999999995 + 10 +143.0900000000001 + 20 +-78.86999999999995 + 10 +142.9485786437628 + 20 +-78.72857864376263 + 0 +LWPOLYLINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-87.8714213562373 + 10 +148.99 + 20 +-87.7299999999999 + 10 +143.0900000000001 + 20 +-87.7299999999999 + 10 +142.9485786437628 + 20 +-87.8714213562373 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-79.42999999999995 + 30 +0.0 + 11 +156.5309458619833 + 21 +-79.42999999999995 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-87.17000000000002 + 30 +0.0 + 11 +156.5309458619832 + 21 +-87.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-68.92857864376263 + 10 +-9.570000000000006 + 20 +-69.06999999999995 + 10 +-15.46999999999987 + 20 +-69.06999999999995 + 10 +-15.61142135623721 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-78.0714213562373 + 10 +-9.570000000000006 + 20 +-77.9299999999999 + 10 +-15.46999999999987 + 20 +-77.9299999999999 + 10 +-15.61142135623721 + 20 +-78.0714213562373 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-69.62999999999995 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-77.37 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-68.92857864376263 + 10 +10.24999999999999 + 20 +-69.06999999999995 + 10 +4.350000000000131 + 20 +-69.06999999999995 + 10 +4.20857864376279 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-78.0714213562373 + 10 +10.24999999999999 + 20 +-77.9299999999999 + 10 +4.350000000000131 + 20 +-77.9299999999999 + 10 +4.20857864376279 + 20 +-78.0714213562373 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-69.62999999999995 + 30 +0.0 + 11 +17.79094586198329 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-77.37 + 30 +0.0 + 11 +17.79094586198323 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-68.92857864376263 + 10 +30.06999999999999 + 20 +-69.06999999999995 + 10 +24.17000000000013 + 20 +-69.06999999999995 + 10 +24.02857864376279 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-78.0714213562373 + 10 +30.06999999999999 + 20 +-77.9299999999999 + 10 +24.17000000000013 + 20 +-77.9299999999999 + 10 +24.02857864376279 + 20 +-78.0714213562373 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-69.62999999999995 + 30 +0.0 + 11 +37.61094586198328 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-77.37 + 30 +0.0 + 11 +37.61094586198323 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-68.92857864376263 + 10 +49.88999999999999 + 20 +-69.06999999999995 + 10 +43.99000000000013 + 20 +-69.06999999999995 + 10 +43.84857864376279 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-78.0714213562373 + 10 +49.88999999999999 + 20 +-77.9299999999999 + 10 +43.99000000000013 + 20 +-77.9299999999999 + 10 +43.84857864376279 + 20 +-78.0714213562373 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-69.62999999999995 + 30 +0.0 + 11 +57.43094586198328 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-77.37 + 30 +0.0 + 11 +57.43094586198323 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-68.92857864376263 + 10 +69.71 + 20 +-69.06999999999995 + 10 +63.81000000000013 + 20 +-69.06999999999995 + 10 +63.66857864376279 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-78.0714213562373 + 10 +69.71 + 20 +-77.9299999999999 + 10 +63.81000000000013 + 20 +-77.9299999999999 + 10 +63.66857864376279 + 20 +-78.0714213562373 + 0 +LINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-69.62999999999995 + 30 +0.0 + 11 +77.25094586198328 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-77.37 + 30 +0.0 + 11 +77.25094586198323 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-68.92857864376263 + 10 +89.52999999999999 + 20 +-69.06999999999995 + 10 +83.63000000000012 + 20 +-69.06999999999995 + 10 +83.48857864376278 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-78.0714213562373 + 10 +89.52999999999999 + 20 +-77.9299999999999 + 10 +83.63000000000012 + 20 +-77.9299999999999 + 10 +83.48857864376278 + 20 +-78.0714213562373 + 0 +LINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-69.62999999999995 + 30 +0.0 + 11 +97.07094586198328 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-77.37 + 30 +0.0 + 11 +97.07094586198322 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-68.92857864376263 + 10 +109.35 + 20 +-69.06999999999995 + 10 +103.4500000000001 + 20 +-69.06999999999995 + 10 +103.3085786437628 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-78.0714213562373 + 10 +109.35 + 20 +-77.9299999999999 + 10 +103.4500000000001 + 20 +-77.9299999999999 + 10 +103.3085786437628 + 20 +-78.0714213562373 + 0 +LINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-69.62999999999995 + 30 +0.0 + 11 +116.8909458619833 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-77.37 + 30 +0.0 + 11 +116.8909458619832 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-68.92857864376263 + 10 +129.17 + 20 +-69.06999999999995 + 10 +123.2700000000001 + 20 +-69.06999999999995 + 10 +123.1285786437628 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-78.0714213562373 + 10 +129.17 + 20 +-77.9299999999999 + 10 +123.2700000000001 + 20 +-77.9299999999999 + 10 +123.1285786437628 + 20 +-78.0714213562373 + 0 +LINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-69.62999999999995 + 30 +0.0 + 11 +136.7109458619833 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-77.37 + 30 +0.0 + 11 +136.7109458619832 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-68.92857864376263 + 10 +148.99 + 20 +-69.06999999999995 + 10 +143.0900000000001 + 20 +-69.06999999999995 + 10 +142.9485786437628 + 20 +-68.92857864376263 + 0 +LWPOLYLINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-78.0714213562373 + 10 +148.99 + 20 +-77.9299999999999 + 10 +143.0900000000001 + 20 +-77.9299999999999 + 10 +142.9485786437628 + 20 +-78.0714213562373 + 0 +LINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-69.62999999999995 + 30 +0.0 + 11 +156.5309458619833 + 21 +-69.62999999999995 + 31 +0.0 + 0 +LINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-77.37 + 30 +0.0 + 11 +156.5309458619832 + 21 +-77.3699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-59.12857864376264 + 10 +-9.570000000000006 + 20 +-59.26999999999995 + 10 +-15.46999999999987 + 20 +-59.26999999999995 + 10 +-15.61142135623721 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-68.2714213562373 + 10 +-9.570000000000006 + 20 +-68.1299999999999 + 10 +-15.46999999999987 + 20 +-68.1299999999999 + 10 +-15.61142135623721 + 20 +-68.2714213562373 + 0 +LINE + 5 +431 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-59.82999999999996 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +432 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-67.57000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +433 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-59.12857864376264 + 10 +10.24999999999999 + 20 +-59.26999999999995 + 10 +4.350000000000131 + 20 +-59.26999999999995 + 10 +4.20857864376279 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +434 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-68.2714213562373 + 10 +10.24999999999999 + 20 +-68.1299999999999 + 10 +4.350000000000131 + 20 +-68.1299999999999 + 10 +4.20857864376279 + 20 +-68.2714213562373 + 0 +LINE + 5 +435 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-59.82999999999996 + 30 +0.0 + 11 +17.79094586198329 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +436 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +437 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-59.12857864376264 + 10 +30.06999999999999 + 20 +-59.26999999999995 + 10 +24.17000000000013 + 20 +-59.26999999999995 + 10 +24.02857864376279 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +438 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-68.2714213562373 + 10 +30.06999999999999 + 20 +-68.1299999999999 + 10 +24.17000000000013 + 20 +-68.1299999999999 + 10 +24.02857864376279 + 20 +-68.2714213562373 + 0 +LINE + 5 +439 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-59.82999999999996 + 30 +0.0 + 11 +37.61094586198328 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +43A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-59.12857864376264 + 10 +49.88999999999999 + 20 +-59.26999999999995 + 10 +43.99000000000013 + 20 +-59.26999999999995 + 10 +43.84857864376279 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +43C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-68.2714213562373 + 10 +49.88999999999999 + 20 +-68.1299999999999 + 10 +43.99000000000013 + 20 +-68.1299999999999 + 10 +43.84857864376279 + 20 +-68.2714213562373 + 0 +LINE + 5 +43D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-59.82999999999996 + 30 +0.0 + 11 +57.43094586198328 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +43E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-59.12857864376264 + 10 +69.71 + 20 +-59.26999999999995 + 10 +63.81000000000013 + 20 +-59.26999999999995 + 10 +63.66857864376279 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +440 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-68.2714213562373 + 10 +69.71 + 20 +-68.1299999999999 + 10 +63.81000000000013 + 20 +-68.1299999999999 + 10 +63.66857864376279 + 20 +-68.2714213562373 + 0 +LINE + 5 +441 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-59.82999999999996 + 30 +0.0 + 11 +77.25094586198328 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +442 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +443 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-59.12857864376264 + 10 +89.52999999999999 + 20 +-59.26999999999995 + 10 +83.63000000000012 + 20 +-59.26999999999995 + 10 +83.48857864376278 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +444 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-68.2714213562373 + 10 +89.52999999999999 + 20 +-68.1299999999999 + 10 +83.63000000000012 + 20 +-68.1299999999999 + 10 +83.48857864376278 + 20 +-68.2714213562373 + 0 +LINE + 5 +445 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-59.82999999999996 + 30 +0.0 + 11 +97.07094586198328 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +446 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +447 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-59.12857864376264 + 10 +109.35 + 20 +-59.26999999999995 + 10 +103.4500000000001 + 20 +-59.26999999999995 + 10 +103.3085786437628 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +448 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-68.2714213562373 + 10 +109.35 + 20 +-68.1299999999999 + 10 +103.4500000000001 + 20 +-68.1299999999999 + 10 +103.3085786437628 + 20 +-68.2714213562373 + 0 +LINE + 5 +449 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-59.82999999999996 + 30 +0.0 + 11 +116.8909458619833 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +44A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +44B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-59.12857864376264 + 10 +129.17 + 20 +-59.26999999999995 + 10 +123.2700000000001 + 20 +-59.26999999999995 + 10 +123.1285786437628 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +44C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-68.2714213562373 + 10 +129.17 + 20 +-68.1299999999999 + 10 +123.2700000000001 + 20 +-68.1299999999999 + 10 +123.1285786437628 + 20 +-68.2714213562373 + 0 +LINE + 5 +44D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-59.82999999999996 + 30 +0.0 + 11 +136.7109458619833 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +44E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +44F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-59.12857864376264 + 10 +148.99 + 20 +-59.26999999999995 + 10 +143.0900000000001 + 20 +-59.26999999999995 + 10 +142.9485786437628 + 20 +-59.12857864376264 + 0 +LWPOLYLINE + 5 +450 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-68.2714213562373 + 10 +148.99 + 20 +-68.1299999999999 + 10 +143.0900000000001 + 20 +-68.1299999999999 + 10 +142.9485786437628 + 20 +-68.2714213562373 + 0 +LINE + 5 +451 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-59.82999999999996 + 30 +0.0 + 11 +156.5309458619833 + 21 +-59.82999999999996 + 31 +0.0 + 0 +LINE + 5 +452 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-67.57000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-67.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +453 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-49.32857864376264 + 10 +-9.570000000000006 + 20 +-49.46999999999996 + 10 +-15.46999999999987 + 20 +-49.46999999999996 + 10 +-15.61142135623721 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +454 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-58.4714213562373 + 10 +-9.570000000000006 + 20 +-58.3299999999999 + 10 +-15.46999999999987 + 20 +-58.3299999999999 + 10 +-15.61142135623721 + 20 +-58.4714213562373 + 0 +LINE + 5 +455 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-50.02999999999996 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +456 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-57.77000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +457 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-49.32857864376264 + 10 +10.24999999999999 + 20 +-49.46999999999996 + 10 +4.350000000000131 + 20 +-49.46999999999996 + 10 +4.20857864376279 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +458 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-58.4714213562373 + 10 +10.24999999999999 + 20 +-58.3299999999999 + 10 +4.350000000000131 + 20 +-58.3299999999999 + 10 +4.20857864376279 + 20 +-58.4714213562373 + 0 +LINE + 5 +459 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-50.02999999999996 + 30 +0.0 + 11 +17.79094586198329 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +45A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +45B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-49.32857864376264 + 10 +30.06999999999999 + 20 +-49.46999999999996 + 10 +24.17000000000013 + 20 +-49.46999999999996 + 10 +24.02857864376279 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +45C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-58.4714213562373 + 10 +30.06999999999999 + 20 +-58.3299999999999 + 10 +24.17000000000013 + 20 +-58.3299999999999 + 10 +24.02857864376279 + 20 +-58.4714213562373 + 0 +LINE + 5 +45D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-50.02999999999996 + 30 +0.0 + 11 +37.61094586198328 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +45E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +45F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-49.32857864376264 + 10 +49.88999999999999 + 20 +-49.46999999999996 + 10 +43.99000000000013 + 20 +-49.46999999999996 + 10 +43.84857864376279 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +460 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-58.4714213562373 + 10 +49.88999999999999 + 20 +-58.3299999999999 + 10 +43.99000000000013 + 20 +-58.3299999999999 + 10 +43.84857864376279 + 20 +-58.4714213562373 + 0 +LINE + 5 +461 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-50.02999999999996 + 30 +0.0 + 11 +57.43094586198328 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +462 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +463 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-49.32857864376264 + 10 +69.71 + 20 +-49.46999999999996 + 10 +63.81000000000013 + 20 +-49.46999999999996 + 10 +63.66857864376279 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +464 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-58.4714213562373 + 10 +69.71 + 20 +-58.3299999999999 + 10 +63.81000000000013 + 20 +-58.3299999999999 + 10 +63.66857864376279 + 20 +-58.4714213562373 + 0 +LINE + 5 +465 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-50.02999999999996 + 30 +0.0 + 11 +77.25094586198328 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +466 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +467 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-49.32857864376264 + 10 +89.52999999999999 + 20 +-49.46999999999996 + 10 +83.63000000000012 + 20 +-49.46999999999996 + 10 +83.48857864376278 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +468 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-58.4714213562373 + 10 +89.52999999999999 + 20 +-58.3299999999999 + 10 +83.63000000000012 + 20 +-58.3299999999999 + 10 +83.48857864376278 + 20 +-58.4714213562373 + 0 +LINE + 5 +469 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-50.02999999999996 + 30 +0.0 + 11 +97.07094586198328 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +46A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +46B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-49.32857864376264 + 10 +109.35 + 20 +-49.46999999999996 + 10 +103.4500000000001 + 20 +-49.46999999999996 + 10 +103.3085786437628 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +46C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-58.4714213562373 + 10 +109.35 + 20 +-58.3299999999999 + 10 +103.4500000000001 + 20 +-58.3299999999999 + 10 +103.3085786437628 + 20 +-58.4714213562373 + 0 +LINE + 5 +46D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-50.02999999999996 + 30 +0.0 + 11 +116.8909458619833 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +46E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +46F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-49.32857864376264 + 10 +129.17 + 20 +-49.46999999999996 + 10 +123.2700000000001 + 20 +-49.46999999999996 + 10 +123.1285786437628 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +470 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-58.4714213562373 + 10 +129.17 + 20 +-58.3299999999999 + 10 +123.2700000000001 + 20 +-58.3299999999999 + 10 +123.1285786437628 + 20 +-58.4714213562373 + 0 +LINE + 5 +471 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-50.02999999999996 + 30 +0.0 + 11 +136.7109458619833 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +472 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +473 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-49.32857864376264 + 10 +148.99 + 20 +-49.46999999999996 + 10 +143.0900000000001 + 20 +-49.46999999999996 + 10 +142.9485786437628 + 20 +-49.32857864376264 + 0 +LWPOLYLINE + 5 +474 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-58.4714213562373 + 10 +148.99 + 20 +-58.3299999999999 + 10 +143.0900000000001 + 20 +-58.3299999999999 + 10 +142.9485786437628 + 20 +-58.4714213562373 + 0 +LINE + 5 +475 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-50.02999999999996 + 30 +0.0 + 11 +156.5309458619833 + 21 +-50.02999999999996 + 31 +0.0 + 0 +LINE + 5 +476 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-57.77000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-57.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +477 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-39.52857864376264 + 10 +-9.570000000000006 + 20 +-39.66999999999995 + 10 +-15.46999999999987 + 20 +-39.66999999999995 + 10 +-15.61142135623721 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +478 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-48.6714213562373 + 10 +-9.570000000000006 + 20 +-48.52999999999989 + 10 +-15.46999999999987 + 20 +-48.52999999999989 + 10 +-15.61142135623721 + 20 +-48.6714213562373 + 0 +LINE + 5 +479 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-40.22999999999995 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +47A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-47.97000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +47B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-39.52857864376264 + 10 +10.24999999999999 + 20 +-39.66999999999995 + 10 +4.350000000000131 + 20 +-39.66999999999995 + 10 +4.20857864376279 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +47C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-48.6714213562373 + 10 +10.24999999999999 + 20 +-48.52999999999989 + 10 +4.350000000000131 + 20 +-48.52999999999989 + 10 +4.20857864376279 + 20 +-48.6714213562373 + 0 +LINE + 5 +47D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-40.22999999999995 + 30 +0.0 + 11 +17.79094586198329 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +47E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +47F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-39.52857864376264 + 10 +30.06999999999999 + 20 +-39.66999999999995 + 10 +24.17000000000013 + 20 +-39.66999999999995 + 10 +24.02857864376279 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +480 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-48.6714213562373 + 10 +30.06999999999999 + 20 +-48.52999999999989 + 10 +24.17000000000013 + 20 +-48.52999999999989 + 10 +24.02857864376279 + 20 +-48.6714213562373 + 0 +LINE + 5 +481 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-40.22999999999995 + 30 +0.0 + 11 +37.61094586198328 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +482 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +483 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-39.52857864376264 + 10 +49.88999999999999 + 20 +-39.66999999999995 + 10 +43.99000000000013 + 20 +-39.66999999999995 + 10 +43.84857864376279 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +484 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-48.6714213562373 + 10 +49.88999999999999 + 20 +-48.52999999999989 + 10 +43.99000000000013 + 20 +-48.52999999999989 + 10 +43.84857864376279 + 20 +-48.6714213562373 + 0 +LINE + 5 +485 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-40.22999999999995 + 30 +0.0 + 11 +57.43094586198328 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +486 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +487 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-39.52857864376264 + 10 +69.71 + 20 +-39.66999999999995 + 10 +63.81000000000013 + 20 +-39.66999999999995 + 10 +63.66857864376279 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +488 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-48.6714213562373 + 10 +69.71 + 20 +-48.52999999999989 + 10 +63.81000000000013 + 20 +-48.52999999999989 + 10 +63.66857864376279 + 20 +-48.6714213562373 + 0 +LINE + 5 +489 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-40.22999999999995 + 30 +0.0 + 11 +77.25094586198328 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +48A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +48B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-39.52857864376264 + 10 +89.52999999999999 + 20 +-39.66999999999995 + 10 +83.63000000000012 + 20 +-39.66999999999995 + 10 +83.48857864376278 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +48C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-48.6714213562373 + 10 +89.52999999999999 + 20 +-48.52999999999989 + 10 +83.63000000000012 + 20 +-48.52999999999989 + 10 +83.48857864376278 + 20 +-48.6714213562373 + 0 +LINE + 5 +48D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-40.22999999999995 + 30 +0.0 + 11 +97.07094586198328 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +48E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +48F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-39.52857864376264 + 10 +109.35 + 20 +-39.66999999999995 + 10 +103.4500000000001 + 20 +-39.66999999999995 + 10 +103.3085786437628 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +490 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-48.6714213562373 + 10 +109.35 + 20 +-48.52999999999989 + 10 +103.4500000000001 + 20 +-48.52999999999989 + 10 +103.3085786437628 + 20 +-48.6714213562373 + 0 +LINE + 5 +491 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-40.22999999999995 + 30 +0.0 + 11 +116.8909458619833 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +492 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +493 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-39.52857864376264 + 10 +129.17 + 20 +-39.66999999999995 + 10 +123.2700000000001 + 20 +-39.66999999999995 + 10 +123.1285786437628 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +494 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-48.6714213562373 + 10 +129.17 + 20 +-48.52999999999989 + 10 +123.2700000000001 + 20 +-48.52999999999989 + 10 +123.1285786437628 + 20 +-48.6714213562373 + 0 +LINE + 5 +495 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-40.22999999999995 + 30 +0.0 + 11 +136.7109458619833 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +496 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +497 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-39.52857864376264 + 10 +148.99 + 20 +-39.66999999999995 + 10 +143.0900000000001 + 20 +-39.66999999999995 + 10 +142.9485786437628 + 20 +-39.52857864376264 + 0 +LWPOLYLINE + 5 +498 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-48.6714213562373 + 10 +148.99 + 20 +-48.52999999999989 + 10 +143.0900000000001 + 20 +-48.52999999999989 + 10 +142.9485786437628 + 20 +-48.6714213562373 + 0 +LINE + 5 +499 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-40.22999999999995 + 30 +0.0 + 11 +156.5309458619833 + 21 +-40.22999999999995 + 31 +0.0 + 0 +LINE + 5 +49A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-47.97000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-47.96999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +49B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-29.72857864376263 + 10 +-9.570000000000006 + 20 +-29.86999999999995 + 10 +-15.46999999999987 + 20 +-29.86999999999995 + 10 +-15.61142135623721 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +49C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-38.87142135623729 + 10 +-9.570000000000006 + 20 +-38.72999999999989 + 10 +-15.46999999999987 + 20 +-38.72999999999989 + 10 +-15.61142135623721 + 20 +-38.87142135623729 + 0 +LINE + 5 +49D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-30.42999999999995 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +49E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-38.17 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +49F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-29.72857864376263 + 10 +10.24999999999999 + 20 +-29.86999999999995 + 10 +4.350000000000131 + 20 +-29.86999999999995 + 10 +4.20857864376279 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4A0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-38.87142135623729 + 10 +10.24999999999999 + 20 +-38.72999999999989 + 10 +4.350000000000131 + 20 +-38.72999999999989 + 10 +4.20857864376279 + 20 +-38.87142135623729 + 0 +LINE + 5 +4A1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-30.42999999999995 + 30 +0.0 + 11 +17.79094586198329 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-38.17 + 30 +0.0 + 11 +17.79094586198323 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4A3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-29.72857864376263 + 10 +30.06999999999999 + 20 +-29.86999999999995 + 10 +24.17000000000013 + 20 +-29.86999999999995 + 10 +24.02857864376279 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4A4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-38.87142135623729 + 10 +30.06999999999999 + 20 +-38.72999999999989 + 10 +24.17000000000013 + 20 +-38.72999999999989 + 10 +24.02857864376279 + 20 +-38.87142135623729 + 0 +LINE + 5 +4A5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-30.42999999999995 + 30 +0.0 + 11 +37.61094586198328 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-38.17 + 30 +0.0 + 11 +37.61094586198323 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4A7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-29.72857864376263 + 10 +49.88999999999999 + 20 +-29.86999999999995 + 10 +43.99000000000013 + 20 +-29.86999999999995 + 10 +43.84857864376279 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4A8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-38.87142135623729 + 10 +49.88999999999999 + 20 +-38.72999999999989 + 10 +43.99000000000013 + 20 +-38.72999999999989 + 10 +43.84857864376279 + 20 +-38.87142135623729 + 0 +LINE + 5 +4A9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-30.42999999999995 + 30 +0.0 + 11 +57.43094586198328 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-38.17 + 30 +0.0 + 11 +57.43094586198323 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4AB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-29.72857864376263 + 10 +69.71 + 20 +-29.86999999999995 + 10 +63.81000000000013 + 20 +-29.86999999999995 + 10 +63.66857864376279 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4AC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-38.87142135623729 + 10 +69.71 + 20 +-38.72999999999989 + 10 +63.81000000000013 + 20 +-38.72999999999989 + 10 +63.66857864376279 + 20 +-38.87142135623729 + 0 +LINE + 5 +4AD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-30.42999999999995 + 30 +0.0 + 11 +77.25094586198328 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-38.17 + 30 +0.0 + 11 +77.25094586198323 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4AF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-29.72857864376263 + 10 +89.52999999999999 + 20 +-29.86999999999995 + 10 +83.63000000000012 + 20 +-29.86999999999995 + 10 +83.48857864376278 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4B0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-38.87142135623729 + 10 +89.52999999999999 + 20 +-38.72999999999989 + 10 +83.63000000000012 + 20 +-38.72999999999989 + 10 +83.48857864376278 + 20 +-38.87142135623729 + 0 +LINE + 5 +4B1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-30.42999999999995 + 30 +0.0 + 11 +97.07094586198328 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-38.17 + 30 +0.0 + 11 +97.07094586198322 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4B3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-29.72857864376263 + 10 +109.35 + 20 +-29.86999999999995 + 10 +103.4500000000001 + 20 +-29.86999999999995 + 10 +103.3085786437628 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4B4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-38.87142135623729 + 10 +109.35 + 20 +-38.72999999999989 + 10 +103.4500000000001 + 20 +-38.72999999999989 + 10 +103.3085786437628 + 20 +-38.87142135623729 + 0 +LINE + 5 +4B5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-30.42999999999995 + 30 +0.0 + 11 +116.8909458619833 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-38.17 + 30 +0.0 + 11 +116.8909458619832 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4B7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-29.72857864376263 + 10 +129.17 + 20 +-29.86999999999995 + 10 +123.2700000000001 + 20 +-29.86999999999995 + 10 +123.1285786437628 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4B8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-38.87142135623729 + 10 +129.17 + 20 +-38.72999999999989 + 10 +123.2700000000001 + 20 +-38.72999999999989 + 10 +123.1285786437628 + 20 +-38.87142135623729 + 0 +LINE + 5 +4B9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-30.42999999999995 + 30 +0.0 + 11 +136.7109458619833 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-38.17 + 30 +0.0 + 11 +136.7109458619832 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4BB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-29.72857864376263 + 10 +148.99 + 20 +-29.86999999999995 + 10 +143.0900000000001 + 20 +-29.86999999999995 + 10 +142.9485786437628 + 20 +-29.72857864376263 + 0 +LWPOLYLINE + 5 +4BC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-38.87142135623729 + 10 +148.99 + 20 +-38.72999999999989 + 10 +143.0900000000001 + 20 +-38.72999999999989 + 10 +142.9485786437628 + 20 +-38.87142135623729 + 0 +LINE + 5 +4BD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-30.42999999999995 + 30 +0.0 + 11 +156.5309458619833 + 21 +-30.42999999999995 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-38.17 + 30 +0.0 + 11 +156.5309458619832 + 21 +-38.1699999999999 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4BF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-19.92857864376263 + 10 +-9.570000000000006 + 20 +-20.06999999999995 + 10 +-15.46999999999987 + 20 +-20.06999999999995 + 10 +-15.61142135623721 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4C0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-29.07142135623729 + 10 +-9.570000000000006 + 20 +-28.92999999999989 + 10 +-15.46999999999987 + 20 +-28.92999999999989 + 10 +-15.61142135623721 + 20 +-29.07142135623729 + 0 +LINE + 5 +4C1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-20.62999999999995 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-28.37 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4C3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-19.92857864376263 + 10 +10.24999999999999 + 20 +-20.06999999999995 + 10 +4.350000000000131 + 20 +-20.06999999999995 + 10 +4.20857864376279 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4C4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-29.07142135623729 + 10 +10.24999999999999 + 20 +-28.92999999999989 + 10 +4.350000000000131 + 20 +-28.92999999999989 + 10 +4.20857864376279 + 20 +-29.07142135623729 + 0 +LINE + 5 +4C5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-20.62999999999995 + 30 +0.0 + 11 +17.79094586198329 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-28.37 + 30 +0.0 + 11 +17.79094586198323 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4C7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-19.92857864376263 + 10 +30.06999999999999 + 20 +-20.06999999999995 + 10 +24.17000000000013 + 20 +-20.06999999999995 + 10 +24.02857864376279 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4C8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-29.07142135623729 + 10 +30.06999999999999 + 20 +-28.92999999999989 + 10 +24.17000000000013 + 20 +-28.92999999999989 + 10 +24.02857864376279 + 20 +-29.07142135623729 + 0 +LINE + 5 +4C9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-20.62999999999995 + 30 +0.0 + 11 +37.61094586198328 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-28.37 + 30 +0.0 + 11 +37.61094586198323 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4CB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-19.92857864376263 + 10 +49.88999999999999 + 20 +-20.06999999999995 + 10 +43.99000000000013 + 20 +-20.06999999999995 + 10 +43.84857864376279 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4CC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-29.07142135623729 + 10 +49.88999999999999 + 20 +-28.92999999999989 + 10 +43.99000000000013 + 20 +-28.92999999999989 + 10 +43.84857864376279 + 20 +-29.07142135623729 + 0 +LINE + 5 +4CD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-20.62999999999995 + 30 +0.0 + 11 +57.43094586198328 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-28.37 + 30 +0.0 + 11 +57.43094586198323 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4CF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-19.92857864376263 + 10 +69.71 + 20 +-20.06999999999995 + 10 +63.81000000000013 + 20 +-20.06999999999995 + 10 +63.66857864376279 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4D0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-29.07142135623729 + 10 +69.71 + 20 +-28.92999999999989 + 10 +63.81000000000013 + 20 +-28.92999999999989 + 10 +63.66857864376279 + 20 +-29.07142135623729 + 0 +LINE + 5 +4D1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-20.62999999999995 + 30 +0.0 + 11 +77.25094586198328 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-28.37 + 30 +0.0 + 11 +77.25094586198323 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4D3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-19.92857864376263 + 10 +89.52999999999999 + 20 +-20.06999999999995 + 10 +83.63000000000012 + 20 +-20.06999999999995 + 10 +83.48857864376278 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4D4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-29.07142135623729 + 10 +89.52999999999999 + 20 +-28.92999999999989 + 10 +83.63000000000012 + 20 +-28.92999999999989 + 10 +83.48857864376278 + 20 +-29.07142135623729 + 0 +LINE + 5 +4D5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-20.62999999999995 + 30 +0.0 + 11 +97.07094586198328 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-28.37 + 30 +0.0 + 11 +97.07094586198322 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4D7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-19.92857864376263 + 10 +109.35 + 20 +-20.06999999999995 + 10 +103.4500000000001 + 20 +-20.06999999999995 + 10 +103.3085786437628 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4D8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-29.07142135623729 + 10 +109.35 + 20 +-28.92999999999989 + 10 +103.4500000000001 + 20 +-28.92999999999989 + 10 +103.3085786437628 + 20 +-29.07142135623729 + 0 +LINE + 5 +4D9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-20.62999999999995 + 30 +0.0 + 11 +116.8909458619833 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-28.37 + 30 +0.0 + 11 +116.8909458619832 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4DB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-19.92857864376263 + 10 +129.17 + 20 +-20.06999999999995 + 10 +123.2700000000001 + 20 +-20.06999999999995 + 10 +123.1285786437628 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4DC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-29.07142135623729 + 10 +129.17 + 20 +-28.92999999999989 + 10 +123.2700000000001 + 20 +-28.92999999999989 + 10 +123.1285786437628 + 20 +-29.07142135623729 + 0 +LINE + 5 +4DD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-20.62999999999995 + 30 +0.0 + 11 +136.7109458619833 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-28.37 + 30 +0.0 + 11 +136.7109458619832 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4DF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-19.92857864376263 + 10 +148.99 + 20 +-20.06999999999995 + 10 +143.0900000000001 + 20 +-20.06999999999995 + 10 +142.9485786437628 + 20 +-19.92857864376263 + 0 +LWPOLYLINE + 5 +4E0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-29.07142135623729 + 10 +148.99 + 20 +-28.92999999999989 + 10 +143.0900000000001 + 20 +-28.92999999999989 + 10 +142.9485786437628 + 20 +-29.07142135623729 + 0 +LINE + 5 +4E1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-20.62999999999995 + 30 +0.0 + 11 +156.5309458619833 + 21 +-20.62999999999995 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-28.37 + 30 +0.0 + 11 +156.5309458619832 + 21 +-28.36999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-10.12857864376264 + 10 +-9.570000000000006 + 20 +-10.26999999999995 + 10 +-15.46999999999987 + 20 +-10.26999999999995 + 10 +-15.61142135623721 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4E4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-19.2714213562373 + 10 +-9.570000000000006 + 20 +-19.1299999999999 + 10 +-15.46999999999987 + 20 +-19.1299999999999 + 10 +-15.61142135623721 + 20 +-19.2714213562373 + 0 +LINE + 5 +4E5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-10.82999999999996 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4E6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-18.57000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-10.12857864376264 + 10 +10.24999999999999 + 20 +-10.26999999999995 + 10 +4.350000000000131 + 20 +-10.26999999999995 + 10 +4.20857864376279 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4E8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-19.2714213562373 + 10 +10.24999999999999 + 20 +-19.1299999999999 + 10 +4.350000000000131 + 20 +-19.1299999999999 + 10 +4.20857864376279 + 20 +-19.2714213562373 + 0 +LINE + 5 +4E9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-10.82999999999996 + 30 +0.0 + 11 +17.79094586198329 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4EA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4EB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-10.12857864376264 + 10 +30.06999999999999 + 20 +-10.26999999999995 + 10 +24.17000000000013 + 20 +-10.26999999999995 + 10 +24.02857864376279 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4EC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-19.2714213562373 + 10 +30.06999999999999 + 20 +-19.1299999999999 + 10 +24.17000000000013 + 20 +-19.1299999999999 + 10 +24.02857864376279 + 20 +-19.2714213562373 + 0 +LINE + 5 +4ED +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-10.82999999999996 + 30 +0.0 + 11 +37.61094586198328 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4EE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4EF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-10.12857864376264 + 10 +49.88999999999999 + 20 +-10.26999999999995 + 10 +43.99000000000013 + 20 +-10.26999999999995 + 10 +43.84857864376279 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4F0 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-19.2714213562373 + 10 +49.88999999999999 + 20 +-19.1299999999999 + 10 +43.99000000000013 + 20 +-19.1299999999999 + 10 +43.84857864376279 + 20 +-19.2714213562373 + 0 +LINE + 5 +4F1 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-10.82999999999996 + 30 +0.0 + 11 +57.43094586198328 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4F2 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4F3 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-10.12857864376264 + 10 +69.71 + 20 +-10.26999999999995 + 10 +63.81000000000013 + 20 +-10.26999999999995 + 10 +63.66857864376279 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4F4 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-19.2714213562373 + 10 +69.71 + 20 +-19.1299999999999 + 10 +63.81000000000013 + 20 +-19.1299999999999 + 10 +63.66857864376279 + 20 +-19.2714213562373 + 0 +LINE + 5 +4F5 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-10.82999999999996 + 30 +0.0 + 11 +77.25094586198328 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4F6 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4F7 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-10.12857864376264 + 10 +89.52999999999999 + 20 +-10.26999999999995 + 10 +83.63000000000012 + 20 +-10.26999999999995 + 10 +83.48857864376278 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4F8 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-19.2714213562373 + 10 +89.52999999999999 + 20 +-19.1299999999999 + 10 +83.63000000000012 + 20 +-19.1299999999999 + 10 +83.48857864376278 + 20 +-19.2714213562373 + 0 +LINE + 5 +4F9 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-10.82999999999996 + 30 +0.0 + 11 +97.07094586198328 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4FA +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4FB +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-10.12857864376264 + 10 +109.35 + 20 +-10.26999999999995 + 10 +103.4500000000001 + 20 +-10.26999999999995 + 10 +103.3085786437628 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +4FC +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-19.2714213562373 + 10 +109.35 + 20 +-19.1299999999999 + 10 +103.4500000000001 + 20 +-19.1299999999999 + 10 +103.3085786437628 + 20 +-19.2714213562373 + 0 +LINE + 5 +4FD +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-10.82999999999996 + 30 +0.0 + 11 +116.8909458619833 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +4FE +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4FF +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-10.12857864376264 + 10 +129.17 + 20 +-10.26999999999995 + 10 +123.2700000000001 + 20 +-10.26999999999995 + 10 +123.1285786437628 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +500 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-19.2714213562373 + 10 +129.17 + 20 +-19.1299999999999 + 10 +123.2700000000001 + 20 +-19.1299999999999 + 10 +123.1285786437628 + 20 +-19.2714213562373 + 0 +LINE + 5 +501 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-10.82999999999996 + 30 +0.0 + 11 +136.7109458619833 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +502 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +503 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-10.12857864376264 + 10 +148.99 + 20 +-10.26999999999995 + 10 +143.0900000000001 + 20 +-10.26999999999995 + 10 +142.9485786437628 + 20 +-10.12857864376264 + 0 +LWPOLYLINE + 5 +504 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-19.2714213562373 + 10 +148.99 + 20 +-19.1299999999999 + 10 +143.0900000000001 + 20 +-19.1299999999999 + 10 +142.9485786437628 + 20 +-19.2714213562373 + 0 +LINE + 5 +505 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-10.82999999999996 + 30 +0.0 + 11 +156.5309458619833 + 21 +-10.82999999999996 + 31 +0.0 + 0 +LINE + 5 +506 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-18.57000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-18.56999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +507 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-0.3285786437626399 + 10 +-9.570000000000006 + 20 +-0.4699999999999562 + 10 +-15.46999999999987 + 20 +-0.4699999999999562 + 10 +-15.61142135623721 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +508 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.42857864376266 + 20 +-9.4714213562373 + 10 +-9.570000000000006 + 20 +-9.329999999999899 + 10 +-15.46999999999987 + 20 +-9.329999999999899 + 10 +-15.61142135623721 + 20 +-9.4714213562373 + 0 +LINE + 5 +509 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408562 + 20 +-1.029999999999959 + 30 +0.0 + 11 +-2.029054138016716 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +50A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +1.912212481408504 + 20 +-8.77000000000001 + 30 +0.0 + 11 +-2.029054138016774 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +50B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-0.3285786437626399 + 10 +10.24999999999999 + 20 +-0.4699999999999562 + 10 +4.350000000000131 + 20 +-0.4699999999999562 + 10 +4.20857864376279 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +50C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.39142135623734 + 20 +-9.4714213562373 + 10 +10.24999999999999 + 20 +-9.329999999999899 + 10 +4.350000000000131 + 20 +-9.329999999999899 + 10 +4.20857864376279 + 20 +-9.4714213562373 + 0 +LINE + 5 +50D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.73221248140856 + 20 +-1.029999999999959 + 30 +0.0 + 11 +17.79094586198329 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +50E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +21.7322124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +17.79094586198323 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +50F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-0.3285786437626399 + 10 +30.06999999999999 + 20 +-0.4699999999999562 + 10 +24.17000000000013 + 20 +-0.4699999999999562 + 10 +24.02857864376279 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +510 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.21142135623734 + 20 +-9.4714213562373 + 10 +30.06999999999999 + 20 +-9.329999999999899 + 10 +24.17000000000013 + 20 +-9.329999999999899 + 10 +24.02857864376279 + 20 +-9.4714213562373 + 0 +LINE + 5 +511 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.55221248140856 + 20 +-1.029999999999959 + 30 +0.0 + 11 +37.61094586198328 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +512 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +41.5522124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +37.61094586198323 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +513 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-0.3285786437626399 + 10 +49.88999999999999 + 20 +-0.4699999999999562 + 10 +43.99000000000013 + 20 +-0.4699999999999562 + 10 +43.84857864376279 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +514 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.03142135623734 + 20 +-9.4714213562373 + 10 +49.88999999999999 + 20 +-9.329999999999899 + 10 +43.99000000000013 + 20 +-9.329999999999899 + 10 +43.84857864376279 + 20 +-9.4714213562373 + 0 +LINE + 5 +515 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.37221248140856 + 20 +-1.029999999999959 + 30 +0.0 + 11 +57.43094586198328 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +516 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +61.3722124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +57.43094586198323 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +517 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-0.3285786437626399 + 10 +69.71 + 20 +-0.4699999999999562 + 10 +63.81000000000013 + 20 +-0.4699999999999562 + 10 +63.66857864376279 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +518 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.85142135623734 + 20 +-9.4714213562373 + 10 +69.71 + 20 +-9.329999999999899 + 10 +63.81000000000013 + 20 +-9.329999999999899 + 10 +63.66857864376279 + 20 +-9.4714213562373 + 0 +LINE + 5 +519 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.19221248140856 + 20 +-1.029999999999959 + 30 +0.0 + 11 +77.25094586198328 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +51A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +81.1922124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +77.25094586198323 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +51B +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-0.3285786437626399 + 10 +89.52999999999999 + 20 +-0.4699999999999562 + 10 +83.63000000000012 + 20 +-0.4699999999999562 + 10 +83.48857864376278 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +51C +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.67142135623733 + 20 +-9.4714213562373 + 10 +89.52999999999999 + 20 +-9.329999999999899 + 10 +83.63000000000012 + 20 +-9.329999999999899 + 10 +83.48857864376278 + 20 +-9.4714213562373 + 0 +LINE + 5 +51D +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814086 + 20 +-1.029999999999959 + 30 +0.0 + 11 +97.07094586198328 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +51E +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +101.0122124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +97.07094586198322 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +51F +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-0.3285786437626399 + 10 +109.35 + 20 +-0.4699999999999562 + 10 +103.4500000000001 + 20 +-0.4699999999999562 + 10 +103.3085786437628 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +520 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.4914213562373 + 20 +-9.4714213562373 + 10 +109.35 + 20 +-9.329999999999899 + 10 +103.4500000000001 + 20 +-9.329999999999899 + 10 +103.3085786437628 + 20 +-9.4714213562373 + 0 +LINE + 5 +521 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814086 + 20 +-1.029999999999959 + 30 +0.0 + 11 +116.8909458619833 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +522 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +120.8322124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +116.8909458619832 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +523 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-0.3285786437626399 + 10 +129.17 + 20 +-0.4699999999999562 + 10 +123.2700000000001 + 20 +-0.4699999999999562 + 10 +123.1285786437628 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +524 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.3114213562374 + 20 +-9.4714213562373 + 10 +129.17 + 20 +-9.329999999999899 + 10 +123.2700000000001 + 20 +-9.329999999999899 + 10 +123.1285786437628 + 20 +-9.4714213562373 + 0 +LINE + 5 +525 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814086 + 20 +-1.029999999999959 + 30 +0.0 + 11 +136.7109458619833 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +526 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +140.6522124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +136.7109458619832 + 21 +-8.76999999999991 + 31 +0.0 + 0 +LWPOLYLINE + 5 +527 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-0.3285786437626399 + 10 +148.99 + 20 +-0.4699999999999562 + 10 +143.0900000000001 + 20 +-0.4699999999999562 + 10 +142.9485786437628 + 20 +-0.3285786437626399 + 0 +LWPOLYLINE + 5 +528 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.1314213562374 + 20 +-9.4714213562373 + 10 +148.99 + 20 +-9.329999999999899 + 10 +143.0900000000001 + 20 +-9.329999999999899 + 10 +142.9485786437628 + 20 +-9.4714213562373 + 0 +LINE + 5 +529 +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814086 + 20 +-1.029999999999959 + 30 +0.0 + 11 +156.5309458619833 + 21 +-1.029999999999959 + 31 +0.0 + 0 +LINE + 5 +52A +330 +21 +100 +AcDbEntity + 8 +D979 +370 + 30 +100 +AcDbLine + 10 +160.4722124814085 + 20 +-8.77000000000001 + 30 +0.0 + 11 +156.5309458619832 + 21 +-8.76999999999991 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +3A0 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +37A + 3 +ACAD_TABLESTYLE +350 +39F + 3 +AcDbVariableDictionary +350 +39D + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +3A0 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +37A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +37B + 3 +A1 +350 +37C + 3 +A2 +350 +37D + 3 +A3 +350 +37E + 3 +A4 +350 +37F + 3 +A5 +350 +380 + 3 +A6 +350 +381 + 3 +A7 +350 +382 + 3 +A8 +350 +383 + 3 +A9 +350 +384 + 3 +B0 +350 +385 + 3 +B1 +350 +386 + 3 +B2 +350 +387 + 3 +B3 +350 +388 + 3 +B4 +350 +389 + 3 +B5 +350 +38A + 3 +B6 +350 +38B + 3 +B7 +350 +38C + 3 +B8 +350 +38D + 3 +B9 +350 +38E + 3 +C0 +350 +38F + 3 +C1 +350 +390 + 3 +C2 +350 +391 + 3 +C3 +350 +392 + 3 +C4 +350 +393 + 3 +C5 +350 +394 + 3 +C6 +350 +395 + 3 +C7 +350 +396 + 3 +C8 +350 +397 + 3 +C9 +350 +398 + 3 +D0 +350 +399 + 3 +D1 +350 +39A + 3 +D2 +350 +39B + 0 +DICTIONARY + 5 +39F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +39D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +39E + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +379 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +37B +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +37C +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +37D +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +37E +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +37F +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +380 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +381 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +382 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +383 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +384 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +385 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +386 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +387 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +388 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +389 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +38A +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +38B +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +38C +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +38D +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +38E +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +38F +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +390 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +391 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +392 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +393 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +394 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +395 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +396 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +397 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +398 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +399 +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +39A +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +39B +102 +{ACAD_REACTORS +330 +37A +102 +} +330 +37A +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +39E +102 +{ACAD_REACTORS +330 +39D +102 +} +330 +39D +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/219.par b/LaiPuLaser/TempMarkData/219.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219.par differ diff --git a/LaiPuLaser/TempMarkData/219xb.are b/LaiPuLaser/TempMarkData/219xb.are new file mode 100644 index 0000000..ec1f762 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219xb.are differ diff --git a/LaiPuLaser/TempMarkData/219xb.dxf b/LaiPuLaser/TempMarkData/219xb.dxf new file mode 100644 index 0000000..f5b70cd --- /dev/null +++ b/LaiPuLaser/TempMarkData/219xb.dxf @@ -0,0 +1,15010 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +-0.000000000000955 + 30 +0.0 + 9 +$EXTMAX + 10 +373.7383438131437 + 20 +221.0520184024433 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458963.785837315 + 9 +$TDUCREATE + 40 +2458963.452503982 + 9 +$TDUPDATE + 40 +2458963.785837315 + 9 +$TDUUPDATE + 40 +2458963.452503982 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +451 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层3 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +220.4770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +212.7673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +221.0520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +212.1923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +221.0520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +221.0520184024433 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +220.4770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +220.4770184024433 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +212.1923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +212.1923094966086 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +212.7673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +212.7673094966086 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +210.6770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +202.9673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +211.2520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +202.3923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +211.2520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +211.2520184024433 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +210.6770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +210.6770184024433 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +202.3923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +202.3923094966086 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +202.9673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +202.9673094966086 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +200.8770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +193.1673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +201.4520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +192.5923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +201.4520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +201.4520184024433 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +200.8770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +200.8770184024433 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +192.5923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +192.5923094966086 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +193.1673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +193.1673094966086 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +191.0770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +183.3673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +191.6520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +182.7923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +191.6520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +191.6520184024433 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +191.0770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +191.0770184024433 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +182.7923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +182.7923094966086 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +183.3673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +183.3673094966086 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +181.2770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +173.5673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +181.8520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +172.9923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +181.8520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +181.8520184024433 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +181.2770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +181.2770184024433 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +172.9923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +172.9923094966086 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +173.5673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +173.5673094966086 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +171.4770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +163.7673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +172.0520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +163.1923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +172.0520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +172.0520184024433 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +171.4770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +171.4770184024433 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +163.1923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +163.1923094966086 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +163.7673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +163.7673094966086 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +161.6770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +153.9673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +162.2520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +153.3923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +162.2520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +162.2520184024433 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +161.6770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +161.6770184024433 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +153.3923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +153.3923094966086 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +153.9673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +153.9673094966086 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +151.8770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +144.1673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +152.4520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +143.5923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +152.4520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +152.4520184024433 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +151.8770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +151.8770184024433 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +143.5923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +143.5923094966086 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +144.1673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +144.1673094966086 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +142.0770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +134.3673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +142.6520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +133.7923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +142.6520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +142.6520184024433 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +142.0770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +142.0770184024433 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +133.7923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +133.7923094966086 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +134.3673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +134.3673094966086 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +132.2770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +124.5673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +132.8520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +123.9923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +132.8520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +132.8520184024433 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +132.2770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +132.2770184024433 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +123.9923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +123.9923094966086 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +124.5673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +124.5673094966086 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +205.2511544813362 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +214.7711544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +195.8911544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +205.2511544813362 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +211.4111544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +214.7711544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +225.0711544813362 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +234.5911544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +215.7111544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +225.0711544813362 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +231.2311544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +234.5911544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +244.8911544813362 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +254.4111544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +235.5311544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +244.8911544813362 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +251.0511544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +254.4111544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +264.7111544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +122.4770184024433 + 30 +0.0 + 11 +274.2311544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +255.3511544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +264.7111544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +270.8711544813362 + 20 +114.7673094966086 + 30 +0.0 + 11 +274.2311544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +284.5311544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +294.0511544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +275.1711544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +284.5311544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +290.6911544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +294.0511544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +304.3511544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +313.8711544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +294.9911544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +304.3511544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +310.5111544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +313.8711544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +324.1711544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +333.6911544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +314.8111544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +324.1711544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +330.3311544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +333.6911544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +123.0520184024433 + 30 +0.0 + 11 +343.9911544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +353.5111544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +334.6311544813364 + 20 +114.1923094966086 + 30 +0.0 + 11 +343.9911544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +350.1511544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +353.5111544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +123.0520184024433 + 30 +0.0 + 11 +363.8111544813363 + 21 +123.0520184024433 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +122.4770184024433 + 30 +0.0 + 11 +373.3311544813363 + 21 +122.4770184024433 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +354.4511544813363 + 20 +114.1923094966086 + 30 +0.0 + 11 +363.8111544813363 + 21 +114.1923094966086 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +369.9711544813363 + 20 +114.7673094966086 + 30 +0.0 + 11 +373.3311544813363 + 21 +114.7673094966086 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.9750926115763 + 20 +168.8713535222392 + 10 +196.1511544813363 + 20 +168.6284498005374 + 10 +196.1511544813363 + 20 +166.4302050474913 + 10 +196.0101988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +215.1783438131437 + 20 +169.0358001640423 + 10 +215.0111544813362 + 20 +168.786706351735 + 10 +215.0111544813362 + 20 +166.3769428340381 + 10 +215.1765414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +234.9983438131437 + 20 +169.0358001640423 + 10 +234.8311544813363 + 20 +168.786706351735 + 10 +234.8311544813363 + 20 +166.3769428340381 + 10 +234.9965414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +215.7950926115763 + 20 +168.8713535222392 + 10 +215.9711544813363 + 20 +168.6284498005374 + 10 +215.9711544813363 + 20 +166.4302050474913 + 10 +215.8301988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +254.8183438131437 + 20 +169.0358001640423 + 10 +254.6511544813362 + 20 +168.786706351735 + 10 +254.6511544813362 + 20 +166.3769428340381 + 10 +254.8165414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +235.6150926115762 + 20 +168.8713535222392 + 10 +235.7911544813363 + 20 +168.6284498005374 + 10 +235.7911544813363 + 20 +166.4302050474913 + 10 +235.6501988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +274.6383438131437 + 20 +169.0358001640423 + 10 +274.4711544813363 + 20 +168.786706351735 + 10 +274.4711544813363 + 20 +166.3769428340381 + 10 +274.6365414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +255.4350926115763 + 20 +168.8713535222392 + 10 +255.6111544813363 + 20 +168.6284498005374 + 10 +255.6111544813363 + 20 +166.4302050474913 + 10 +255.4701988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4583438131437 + 20 +169.0358001640423 + 10 +294.2911544813363 + 20 +168.786706351735 + 10 +294.2911544813363 + 20 +166.3769428340381 + 10 +294.4565414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +275.2550926115763 + 20 +168.8713535222392 + 10 +275.4311544813363 + 20 +168.6284498005374 + 10 +275.4311544813363 + 20 +166.4302050474913 + 10 +275.2901988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +314.2783438131437 + 20 +169.0358001640423 + 10 +314.1111544813363 + 20 +168.786706351735 + 10 +314.1111544813363 + 20 +166.3769428340381 + 10 +314.2765414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +295.0750926115762 + 20 +168.8713535222392 + 10 +295.2511544813362 + 20 +168.6284498005374 + 10 +295.2511544813362 + 20 +166.4302050474913 + 10 +295.1101988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +334.0983438131437 + 20 +169.0358001640423 + 10 +333.9311544813363 + 20 +168.786706351735 + 10 +333.9311544813363 + 20 +166.3769428340381 + 10 +334.0965414681608 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +314.8950926115763 + 20 +168.8713535222392 + 10 +315.0711544813363 + 20 +168.6284498005374 + 10 +315.0711544813363 + 20 +166.4302050474913 + 10 +314.9301988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +353.9183438131437 + 20 +169.0358001640423 + 10 +353.7511544813362 + 20 +168.786706351735 + 10 +353.7511544813362 + 20 +166.3769428340381 + 10 +353.9165414681609 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +334.7150926115763 + 20 +168.8713535222392 + 10 +334.8911544813363 + 20 +168.6284498005374 + 10 +334.8911544813363 + 20 +166.4302050474913 + 10 +334.7501988715591 + 20 +166.1653814910007 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +373.7383438131437 + 20 +169.0358001640423 + 10 +373.5711544813362 + 20 +168.786706351735 + 10 +373.5711544813362 + 20 +166.3769428340381 + 10 +373.7365414681609 + 20 +166.1266487178686 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +354.5350926115763 + 20 +168.8713535222392 + 10 +354.7111544813363 + 20 +168.6284498005374 + 10 +354.7111544813363 + 20 +166.4302050474913 + 10 +354.5701988715591 + 20 +166.1653814910007 + 0 +CIRCLE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +196.317601090743 + 20 +212.3687561060153 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +196.317601090743 + 20 +114.3687561060153 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +354.877601090743 + 20 +212.3687561060153 + 30 +0.0 + 40 +0.3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/219xb.par b/LaiPuLaser/TempMarkData/219xb.par new file mode 100644 index 0000000..4212337 Binary files /dev/null and b/LaiPuLaser/TempMarkData/219xb.par differ diff --git a/LaiPuLaser/TempMarkData/32134324.dxf b/LaiPuLaser/TempMarkData/32134324.dxf new file mode 100644 index 0000000..7e3566d --- /dev/null +++ b/LaiPuLaser/TempMarkData/32134324.dxf @@ -0,0 +1,3320 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +121.6171912161387 + 20 +109.3746579546145 + 30 +0.0 + 9 +$EXTMAX + 10 +311.6171912161387 + 20 +189.3746579546145 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2459008.466467963 + 9 +$TDUCREATE + 40 +2459008.133134630 + 9 +$TDUPDATE + 40 +2459008.466671933 + 9 +$TDUUPDATE + 40 +2459008.133338600 + 9 +$TDINDWG + 40 +0.0002048843 + 9 +$TDUSRTIMER + 40 +0.0002048843 + 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 +7E + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{61AD3040-FFFF-458F-9FC2-49216202AD2C} + 9 +$VERSIONGUID + 2 +{96651E20-84C7-4574-9B3C-77196ACC8085} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +7D +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +241.0376850605652 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +297.0 + 41 +1.62314939434724 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +33 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +STYLE + 5 +2D +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STYLE1 + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.0 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +STYLE + 5 +2E +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +ADESK1 + 70 + 0 + 40 +2.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.0 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.0 +176 + 1 +177 + 1 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +5D +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +121.6171912161387 + 20 +189.3746579546145 + 10 +311.6171912161387 + 20 +189.3746579546145 + 10 +311.6171912161387 + 20 +109.3746579546145 + 10 +121.6171912161387 + 20 +109.3746579546145 + 0 +LINE + 5 +5E +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +121.6171912161387 + 20 +109.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +109.3746579546145 + 31 +0.0 + 0 +LINE + 5 +5F +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +109.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +189.3746579546145 + 31 +0.0 + 0 +MTEXT + 5 +60 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +132.510936957794 + 20 +179.619219982356 + 30 +0.0 + 40 +9.0 + 41 +21.97002108107466 + 71 + 1 + 72 + 5 + 1 +{\f@Arial Unicode MS|b0|i0|c134|p34;\H1.667x;S^JM^JT} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +61 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +189.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +62 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +311.6171912161387 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +63 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +154.3746579546145 + 31 +0.0 + 0 +LINE + 5 +64 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +154.3746579546145 + 30 +0.0 + 11 +214.6171912161388 + 21 +154.3746579546145 + 31 +0.0 + 0 +LINE + 5 +65 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +154.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +139.3746579546145 + 31 +0.0 + 0 +LINE + 5 +66 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +139.3746579546145 + 30 +0.0 + 11 +214.6171912161388 + 21 +139.3746579546145 + 31 +0.0 + 0 +LINE + 5 +67 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +139.3746579546145 + 30 +0.0 + 11 +157.6171912161387 + 21 +124.3746579546145 + 31 +0.0 + 0 +LINE + 5 +68 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +124.3746579546145 + 30 +0.0 + 11 +214.6171912161388 + 21 +124.3746579546145 + 31 +0.0 + 0 +LINE + 5 +69 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +157.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +184.6171912161387 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6A +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +184.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +184.6171912161387 + 21 +109.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6B +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +184.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +214.6171912161388 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6C +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +214.6171912161388 + 20 +169.3746579546145 + 30 +0.0 + 11 +214.6171912161388 + 21 +109.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6D +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +214.6171912161388 + 20 +169.3746579546145 + 30 +0.0 + 11 +232.6171912161387 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6E +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +232.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +232.6171912161387 + 21 +109.3746579546145 + 31 +0.0 + 0 +LINE + 5 +6F +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +232.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +259.6171912161387 + 21 +169.3746579546145 + 31 +0.0 + 0 +LINE + 5 +70 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +259.6171912161387 + 20 +169.3746579546145 + 30 +0.0 + 11 +259.6171912161387 + 21 +109.3746579546145 + 31 +0.0 + 0 +MTEXT + 5 +71 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +188.0917576285175 + 20 +187.1955968856308 + 30 +0.0 + 40 +12.0 + 41 +90.82252175589543 + 71 + 1 + 72 + 5 + 1 +\pi-84.0178,l84.0178,t48;濾ʶ + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +72 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +163.5364086526976 + 20 +166.0690937411292 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2;ͺ + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +73 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +162.2728159434668 + 20 +151.0813338003718 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2;߱ + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +74 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +162.1963544077694 + 20 +136.2327618270251 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2; + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +75 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +161.7706363216582 + 20 +121.3508588604271 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2; + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +76 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +232.6171912161387 + 20 +154.3746579546145 + 30 +0.0 + 11 +311.6171912161387 + 21 +154.3746579546145 + 31 +0.0 + 0 +LINE + 5 +77 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +232.6171912161387 + 20 +124.3746579546145 + 30 +0.0 + 11 +311.6171912161387 + 21 +124.3746579546145 + 31 +0.0 + 0 +MTEXT + 5 +78 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +237.310177522975 + 20 +166.0997410799613 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2;Ͷ + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +79 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +259.6171912161387 + 20 +139.3746579546145 + 30 +0.0 + 11 +311.6171912161387 + 21 +139.3746579546145 + 31 +0.0 + 0 +MTEXT + 5 +7A +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +237.1020487244222 + 20 +143.0552208868294 + 30 +0.0 + 40 +4.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.6381,l12.6381,t4.2;Ч + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +7B +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +237.3525310678791 + 20 +121.0241532743231 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-12.5338,l12.5338,t6.2;ؿ + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +7C +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +207.2946560583729 + 20 +161.0806396230135 + 30 +0.0 + 40 +6.2 + 41 +17.96729722945991 + 71 + 1 + 72 + 5 + 1 +\pi-0.132267,l12.5338,t6.2;濾ʱ + 7 +ADESK1 + 73 + 1 + 44 +1.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +33 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +34 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +30 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +34 +102 +{ACAD_REACTORS +330 +33 +102 +} +330 +33 +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MATERIAL + 5 +30 +102 +{ACAD_XDICTIONARY +360 +31 +102 +} +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +DICTIONARY + 5 +31 +330 +30 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +32 + 0 +XRECORD + 5 +32 +102 +{ACAD_REACTORS +330 +31 +102 +} +330 +31 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/341-3dd.are b/LaiPuLaser/TempMarkData/341-3dd.are new file mode 100644 index 0000000..969c704 Binary files /dev/null and b/LaiPuLaser/TempMarkData/341-3dd.are differ diff --git a/LaiPuLaser/TempMarkData/341-3dd.dxf b/LaiPuLaser/TempMarkData/341-3dd.dxf new file mode 100644 index 0000000..b1b8fe2 --- /dev/null +++ b/LaiPuLaser/TempMarkData/341-3dd.dxf @@ -0,0 +1,18492 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +388.8848786603775 + 20 +214.755196031031 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2459041.732879398 + 9 +$TDUCREATE + 40 +2459041.399546065 + 9 +$TDUPDATE + 40 +2459041.732879398 + 9 +$TDUUPDATE + 40 +2459041.399546065 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +4D5 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层2 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +2CC +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +236.2448786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +224.3578786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +224.3578786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +236.2448786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +241.3178786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +253.2048786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +241.3178786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +253.2048786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +258.2778786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +270.1648786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +258.2778786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +270.1648786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +275.2378786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +287.1248786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +275.2378786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +287.1248786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +213.9847338261502 + 30 +0.0 + 11 +292.1978786603775 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +304.0848786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +205.9248378307445 + 30 +0.0 + 11 +292.1978786603775 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +304.0848786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +309.1578786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +321.0448786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +309.1578786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +321.0448786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +326.1178786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +338.0048786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +326.1178786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +338.0048786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +213.9847338261502 + 30 +0.0 + 11 +343.0778786603775 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +354.9648786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +205.9248378307445 + 30 +0.0 + 11 +343.0778786603775 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +354.9648786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +360.0378786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +371.9248786603774 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +360.0378786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +371.9248786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +213.9847338261502 + 30 +0.0 + 11 +376.9978786603774 + 21 +213.9847338261502 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +213.2347338261502 + 30 +0.0 + 11 +388.8848786603775 + 21 +213.2347338261502 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +205.9248378307445 + 30 +0.0 + 11 +376.9978786603774 + 21 +205.9248378307445 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +206.6748378307445 + 30 +0.0 + 11 +388.8848786603774 + 21 +206.6748378307445 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +224.3578786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +236.2448786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +224.3578786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +236.2448786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +241.3178786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +253.2048786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +241.3178786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +253.2048786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +258.2778786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +270.1648786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +258.2778786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +270.1648786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +275.2378786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +287.1248786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +275.2378786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +287.1248786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +204.9847338261502 + 30 +0.0 + 11 +292.1978786603775 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +304.0848786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +196.9248378307445 + 30 +0.0 + 11 +292.1978786603775 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +304.0848786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +309.1578786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +321.0448786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +309.1578786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +321.0448786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +326.1178786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +338.0048786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +326.1178786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +338.0048786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +204.9847338261502 + 30 +0.0 + 11 +343.0778786603775 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +354.9648786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +196.9248378307445 + 30 +0.0 + 11 +343.0778786603775 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +354.9648786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +360.0378786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +371.9248786603774 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +360.0378786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +371.9248786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +204.9847338261502 + 30 +0.0 + 11 +376.9978786603774 + 21 +204.9847338261502 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +204.2347338261502 + 30 +0.0 + 11 +388.8848786603775 + 21 +204.2347338261502 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +196.9248378307445 + 30 +0.0 + 11 +376.9978786603774 + 21 +196.9248378307445 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +197.6748378307445 + 30 +0.0 + 11 +388.8848786603774 + 21 +197.6748378307445 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +224.3578786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +236.2448786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +224.3578786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +236.2448786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +241.3178786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +253.2048786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +241.3178786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +253.2048786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +258.2778786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +270.1648786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +258.2778786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +270.1648786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +275.2378786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +287.1248786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +275.2378786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +287.1248786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +195.9847338261502 + 30 +0.0 + 11 +292.1978786603775 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +304.0848786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +187.9248378307446 + 30 +0.0 + 11 +292.1978786603775 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +304.0848786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +309.1578786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +321.0448786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +309.1578786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +321.0448786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +326.1178786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +338.0048786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +326.1178786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +338.0048786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +195.9847338261502 + 30 +0.0 + 11 +343.0778786603775 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +354.9648786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +187.9248378307446 + 30 +0.0 + 11 +343.0778786603775 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +354.9648786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +360.0378786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +371.9248786603774 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +360.0378786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +371.9248786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +195.9847338261502 + 30 +0.0 + 11 +376.9978786603774 + 21 +195.9847338261502 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +195.2347338261502 + 30 +0.0 + 11 +388.8848786603775 + 21 +195.2347338261502 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +187.9248378307446 + 30 +0.0 + 11 +376.9978786603774 + 21 +187.9248378307446 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +188.6748378307446 + 30 +0.0 + 11 +388.8848786603774 + 21 +188.6748378307446 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +224.3578786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +236.2448786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +224.3578786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +236.2448786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +241.3178786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +253.2048786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +241.3178786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +253.2048786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +258.2778786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +270.1648786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +258.2778786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +270.1648786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +275.2378786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +287.1248786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +275.2378786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +287.1248786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +186.9847338261503 + 30 +0.0 + 11 +292.1978786603775 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +304.0848786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +178.9248378307446 + 30 +0.0 + 11 +292.1978786603775 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +304.0848786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +309.1578786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +321.0448786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +309.1578786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +321.0448786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +326.1178786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +338.0048786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +326.1178786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +338.0048786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +186.9847338261503 + 30 +0.0 + 11 +343.0778786603775 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +354.9648786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +178.9248378307446 + 30 +0.0 + 11 +343.0778786603775 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +354.9648786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +360.0378786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +371.9248786603774 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +360.0378786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +371.9248786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +186.9847338261503 + 30 +0.0 + 11 +376.9978786603774 + 21 +186.9847338261503 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +186.2347338261503 + 30 +0.0 + 11 +388.8848786603775 + 21 +186.2347338261503 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +178.9248378307446 + 30 +0.0 + 11 +376.9978786603774 + 21 +178.9248378307446 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +179.6748378307446 + 30 +0.0 + 11 +388.8848786603774 + 21 +179.6748378307446 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +224.3578786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +236.2448786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +224.3578786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +236.2448786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +241.3178786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +253.2048786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +241.3178786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +253.2048786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +258.2778786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +270.1648786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +258.2778786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +270.1648786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +275.2378786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +287.1248786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +275.2378786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +287.1248786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +177.9847338261503 + 30 +0.0 + 11 +292.1978786603775 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +304.0848786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +169.9248378307446 + 30 +0.0 + 11 +292.1978786603775 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +304.0848786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +309.1578786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +321.0448786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +309.1578786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +321.0448786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +326.1178786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +338.0048786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +326.1178786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +338.0048786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +177.9847338261503 + 30 +0.0 + 11 +343.0778786603775 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +354.9648786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +169.9248378307446 + 30 +0.0 + 11 +343.0778786603775 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +354.9648786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +360.0378786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +371.9248786603774 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +360.0378786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +371.9248786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +177.9847338261503 + 30 +0.0 + 11 +376.9978786603774 + 21 +177.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +177.2347338261503 + 30 +0.0 + 11 +388.8848786603775 + 21 +177.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +169.9248378307446 + 30 +0.0 + 11 +376.9978786603774 + 21 +169.9248378307446 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +170.6748378307446 + 30 +0.0 + 11 +388.8848786603774 + 21 +170.6748378307446 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +224.3578786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +236.2448786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +224.3578786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +236.2448786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +241.3178786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +253.2048786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +241.3178786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +253.2048786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +258.2778786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +270.1648786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +258.2778786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +270.1648786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +275.2378786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +287.1248786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +275.2378786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +287.1248786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +168.9847338261503 + 30 +0.0 + 11 +292.1978786603775 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +304.0848786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +160.9248378307447 + 30 +0.0 + 11 +292.1978786603775 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +304.0848786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +309.1578786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +321.0448786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +309.1578786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +321.0448786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +326.1178786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +338.0048786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +326.1178786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +338.0048786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +168.9847338261503 + 30 +0.0 + 11 +343.0778786603775 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +354.9648786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +160.9248378307447 + 30 +0.0 + 11 +343.0778786603775 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +354.9648786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +360.0378786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +371.9248786603774 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +360.0378786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +371.9248786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +168.9847338261503 + 30 +0.0 + 11 +376.9978786603774 + 21 +168.9847338261503 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +168.2347338261503 + 30 +0.0 + 11 +388.8848786603775 + 21 +168.2347338261503 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +160.9248378307447 + 30 +0.0 + 11 +376.9978786603774 + 21 +160.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +161.6748378307447 + 30 +0.0 + 11 +388.8848786603774 + 21 +161.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +224.3578786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +236.2448786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +224.3578786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +236.2448786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +241.3178786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +253.2048786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +241.3178786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +253.2048786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +258.2778786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +270.1648786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +258.2778786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +270.1648786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +275.2378786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +287.1248786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +275.2378786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +287.1248786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +159.9847338261504 + 30 +0.0 + 11 +292.1978786603775 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +304.0848786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +151.9248378307447 + 30 +0.0 + 11 +292.1978786603775 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +304.0848786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +309.1578786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +321.0448786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +309.1578786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +321.0448786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +326.1178786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +338.0048786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +326.1178786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +338.0048786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +159.9847338261504 + 30 +0.0 + 11 +343.0778786603775 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +354.9648786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +151.9248378307447 + 30 +0.0 + 11 +343.0778786603775 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +354.9648786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +360.0378786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +371.9248786603774 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +360.0378786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +371.9248786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +159.9847338261504 + 30 +0.0 + 11 +376.9978786603774 + 21 +159.9847338261504 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +159.2347338261504 + 30 +0.0 + 11 +388.8848786603775 + 21 +159.2347338261504 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +151.9248378307447 + 30 +0.0 + 11 +376.9978786603774 + 21 +151.9248378307447 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +152.6748378307447 + 30 +0.0 + 11 +388.8848786603774 + 21 +152.6748378307447 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +224.3578786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +236.2448786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +224.3578786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +236.2448786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +241.3178786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +253.2048786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +241.3178786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +253.2048786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +258.2778786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +270.1648786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +258.2778786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +270.1648786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +275.2378786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +287.1248786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +275.2378786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +287.1248786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +150.9847338261504 + 30 +0.0 + 11 +292.1978786603775 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +304.0848786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +142.9248378307447 + 30 +0.0 + 11 +292.1978786603775 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +304.0848786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +309.1578786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +321.0448786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +309.1578786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +321.0448786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +326.1178786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +338.0048786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +326.1178786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +338.0048786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +150.9847338261504 + 30 +0.0 + 11 +343.0778786603775 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +354.9648786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +142.9248378307447 + 30 +0.0 + 11 +343.0778786603775 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +354.9648786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +360.0378786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +371.9248786603774 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +360.0378786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +371.9248786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +150.9847338261504 + 30 +0.0 + 11 +376.9978786603774 + 21 +150.9847338261504 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +150.2347338261504 + 30 +0.0 + 11 +388.8848786603775 + 21 +150.2347338261504 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +142.9248378307447 + 30 +0.0 + 11 +376.9978786603774 + 21 +142.9248378307447 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +143.6748378307447 + 30 +0.0 + 11 +388.8848786603774 + 21 +143.6748378307447 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +224.3578786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +236.2448786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +224.3578786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +236.2448786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +241.3178786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +253.2048786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +241.3178786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +253.2048786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +258.2778786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +270.1648786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +258.2778786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +270.1648786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +275.2378786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +287.1248786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +275.2378786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +287.1248786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +141.9847338261504 + 30 +0.0 + 11 +292.1978786603775 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +304.0848786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +133.9248378307448 + 30 +0.0 + 11 +292.1978786603775 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +304.0848786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +309.1578786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +321.0448786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +309.1578786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +321.0448786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +326.1178786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +338.0048786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +326.1178786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +338.0048786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +141.9847338261504 + 30 +0.0 + 11 +343.0778786603775 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +354.9648786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +133.9248378307448 + 30 +0.0 + 11 +343.0778786603775 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +354.9648786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +360.0378786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +371.9248786603774 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +360.0378786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +371.9248786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +141.9847338261504 + 30 +0.0 + 11 +376.9978786603774 + 21 +141.9847338261504 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +141.2347338261504 + 30 +0.0 + 11 +388.8848786603775 + 21 +141.2347338261504 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +133.9248378307448 + 30 +0.0 + 11 +376.9978786603774 + 21 +133.9248378307448 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +134.6748378307448 + 30 +0.0 + 11 +388.8848786603774 + 21 +134.6748378307448 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +224.3578786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +236.2448786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +224.3578786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +236.2448786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +241.3178786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +253.2048786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +241.3178786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +253.2048786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +258.2778786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +270.1648786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +258.2778786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +270.1648786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +275.2378786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +287.1248786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +275.2378786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +287.1248786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +132.9847338261504 + 30 +0.0 + 11 +292.1978786603775 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +304.0848786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +124.9248378307448 + 30 +0.0 + 11 +292.1978786603775 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +304.0848786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +309.1578786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +321.0448786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +309.1578786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +321.0448786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +326.1178786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +338.0048786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +326.1178786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +338.0048786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +132.9847338261504 + 30 +0.0 + 11 +343.0778786603775 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +354.9648786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +124.9248378307448 + 30 +0.0 + 11 +343.0778786603775 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +354.9648786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +360.0378786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +371.9248786603774 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +360.0378786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +371.9248786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +132.9847338261504 + 30 +0.0 + 11 +376.9978786603774 + 21 +132.9847338261504 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +132.2347338261504 + 30 +0.0 + 11 +388.8848786603775 + 21 +132.2347338261504 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +124.9248378307448 + 30 +0.0 + 11 +376.9978786603774 + 21 +124.9248378307448 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +125.6748378307448 + 30 +0.0 + 11 +388.8848786603774 + 21 +125.6748378307448 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +224.3578786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +236.2448786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +224.3578786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +236.2448786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +241.3178786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +253.2048786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +241.3178786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +253.2048786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +258.2778786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +270.1648786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +258.2778786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +270.1648786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +275.2378786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +287.1248786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +275.2378786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +287.1248786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +123.9847338261505 + 30 +0.0 + 11 +292.1978786603775 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +304.0848786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +115.9248378307448 + 30 +0.0 + 11 +292.1978786603775 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +304.0848786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +309.1578786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +321.0448786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +309.1578786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +321.0448786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +326.1178786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +338.0048786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +326.1178786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +338.0048786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +123.9847338261505 + 30 +0.0 + 11 +343.0778786603775 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +354.9648786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +115.9248378307448 + 30 +0.0 + 11 +343.0778786603775 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +354.9648786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +360.0378786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +371.9248786603774 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +360.0378786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +371.9248786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +123.9847338261505 + 30 +0.0 + 11 +376.9978786603774 + 21 +123.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +123.2347338261505 + 30 +0.0 + 11 +388.8848786603775 + 21 +123.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +115.9248378307448 + 30 +0.0 + 11 +376.9978786603774 + 21 +115.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +116.6748378307448 + 30 +0.0 + 11 +388.8848786603774 + 21 +116.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +224.3578786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +236.2448786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +220.0018786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +224.3578786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +229.5348786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +236.2448786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +241.3178786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +253.2048786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +236.9618786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +241.3178786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +246.4948786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +253.2048786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +258.2778786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +270.1648786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.9218786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +258.2778786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +263.4548786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +270.1648786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +275.2378786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +287.1248786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +270.8818786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +275.2378786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +280.4148786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +287.1248786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +114.9847338261505 + 30 +0.0 + 11 +292.1978786603775 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +304.0848786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +287.8418786603775 + 20 +106.9248378307448 + 30 +0.0 + 11 +292.1978786603775 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +297.3748786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +304.0848786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +309.1578786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +321.0448786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +304.8018786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +309.1578786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +314.3348786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +321.0448786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +326.1178786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +338.0048786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +321.7618786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +326.1178786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +331.2948786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +338.0048786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +114.9847338261505 + 30 +0.0 + 11 +343.0778786603775 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +354.9648786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +338.7218786603775 + 20 +106.9248378307448 + 30 +0.0 + 11 +343.0778786603775 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +348.2548786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +354.9648786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +360.0378786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +371.9248786603774 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +355.6818786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +360.0378786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +365.2148786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +371.9248786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +114.9847338261505 + 30 +0.0 + 11 +376.9978786603774 + 21 +114.9847338261505 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +114.2347338261505 + 30 +0.0 + 11 +388.8848786603775 + 21 +114.2347338261505 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +372.6418786603774 + 20 +106.9248378307448 + 30 +0.0 + 11 +376.9978786603774 + 21 +106.9248378307448 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +382.1748786603774 + 20 +107.6748378307448 + 30 +0.0 + 11 +388.8848786603774 + 21 +107.6748378307448 + 31 +0.0 + 0 +CIRCLE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +222.0947970281098 + 20 +214.455196031031 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +222.0947970281098 + 20 +115.4548697387728 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +374.7299282690457 + 20 +214.455196031031 + 30 +0.0 + 40 +0.3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/341-3dd.par b/LaiPuLaser/TempMarkData/341-3dd.par new file mode 100644 index 0000000..c10594d Binary files /dev/null and b/LaiPuLaser/TempMarkData/341-3dd.par differ diff --git a/LaiPuLaser/TempMarkData/341-3dd.txt b/LaiPuLaser/TempMarkData/341-3dd.txt new file mode 100644 index 0000000..b9d4d12 --- /dev/null +++ b/LaiPuLaser/TempMarkData/341-3dd.txt @@ -0,0 +1,8 @@ +1 +76.9996 +0.419818 +80 +50 +600 +30 +1 diff --git a/LaiPuLaser/TempMarkData/341.mak b/LaiPuLaser/TempMarkData/341.mak new file mode 100644 index 0000000..25b6b08 Binary files /dev/null and b/LaiPuLaser/TempMarkData/341.mak differ diff --git a/LaiPuLaser/TempMarkData/341dd.mak b/LaiPuLaser/TempMarkData/341dd.mak new file mode 100644 index 0000000..92eb079 Binary files /dev/null and b/LaiPuLaser/TempMarkData/341dd.mak differ diff --git a/LaiPuLaser/TempMarkData/D714 3D.are b/LaiPuLaser/TempMarkData/D714 3D.are new file mode 100644 index 0000000..23baaaf Binary files /dev/null and b/LaiPuLaser/TempMarkData/D714 3D.are differ diff --git a/LaiPuLaser/TempMarkData/D714 3D.dxf b/LaiPuLaser/TempMarkData/D714 3D.dxf new file mode 100644 index 0000000..556b1ec --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714 3D.dxf @@ -0,0 +1,15432 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-163.2101432550816 + 20 +-0.3036339524011282 + 30 +-0.0015258207003583 + 9 +$EXTMAX + 10 +1.685486330750336 + 20 +102.7282109145636 + 30 +0.0000000349246037 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458999.567141806 + 9 +$TDUCREATE + 40 +2458999.233808472 + 9 +$TDUPDATE + 40 +2458999.567605127 + 9 +$TDUUPDATE + 40 +2458999.234271794 + 9 +$TDINDWG + 40 +0.0004656713 + 9 +$TDUSRTIMER + 40 +0.0004653125 + 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 +46C + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{D1B94100-1E9B-4DE9-BC65-015D4DC2D032} + 9 +$VERSIONGUID + 2 +{F866443D-02F1-4574-A001-D0C4FCF32E1E} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +46B +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-72.78505847641077 + 22 +49.2609151846362 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +208.8262436039066 + 41 +1.62314939434724 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3D +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +34 +102 +{ACAD_XDICTIONARY +360 +35 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F + 0 +LAYER + 5 +37 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +38 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +39 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2D + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +BLOCK_RECORD + 5 +2D +102 +{ACAD_XDICTIONARY +360 +2E +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +31 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +32 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +33 +330 +2D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbCircle + 10 +-150.75 + 20 +0.0000000000000284 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbCircle + 10 +-150.75 + 20 +94.59999999999997 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-4.924234806523372 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +7.792500000000302 + 30 +0.0 + 11 +-4.924234806523372 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-12.44639519534428 + 21 +0.4775000000000489 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +8.117500000000205 + 30 +0.0 + 11 +-12.44639519534428 + 21 +8.117500000000092 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +9.402499999999974 + 30 +0.0 + 11 +-4.924234806523372 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +16.39250000000015 + 30 +0.0 + 11 +-4.924234806523372 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +9.077499999999787 + 30 +0.0 + 11 +-12.44639519534428 + 21 +9.077499999999901 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +16.71750000000006 + 30 +0.0 + 11 +-12.44639519534428 + 21 +16.71749999999994 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +18.00249999999983 + 30 +0.0 + 11 +-4.924234806523372 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +24.99250000000001 + 30 +0.0 + 11 +-4.924234806523372 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +17.67749999999964 + 30 +0.0 + 11 +-12.44639519534428 + 21 +17.67749999999975 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +25.31749999999991 + 30 +0.0 + 11 +-12.44639519534428 + 21 +25.3174999999998 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +26.60249999999968 + 30 +0.0 + 11 +-4.924234806523372 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +33.59249999999987 + 30 +0.0 + 11 +-4.924234806523372 + 21 +33.59249999999987 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +26.27749999999949 + 30 +0.0 + 11 +-12.44639519534428 + 21 +26.27749999999961 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +33.91749999999977 + 30 +0.0 + 11 +-12.44639519534428 + 21 +33.91749999999966 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +35.20249999999954 + 30 +0.0 + 11 +-4.924234806523372 + 21 +35.20249999999954 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +42.19249999999972 + 30 +0.0 + 11 +-4.924234806523372 + 21 +42.19249999999972 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +34.87749999999935 + 30 +0.0 + 11 +-12.44639519534428 + 21 +34.87749999999947 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +42.51749999999962 + 30 +0.0 + 11 +-12.44639519534428 + 21 +42.5174999999995 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +43.80249999999938 + 30 +0.0 + 11 +-4.924234806523372 + 21 +43.80249999999938 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +50.79249999999957 + 30 +0.0 + 11 +-4.924234806523372 + 21 +50.79249999999957 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +43.4774999999992 + 30 +0.0 + 11 +-12.44639519534428 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +51.11749999999947 + 30 +0.0 + 11 +-12.44639519534428 + 21 +51.11749999999936 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +52.40249999999925 + 30 +0.0 + 11 +-4.924234806523372 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +59.39249999999942 + 30 +0.0 + 11 +-4.924234806523372 + 21 +59.39249999999942 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +52.07749999999905 + 30 +0.0 + 11 +-12.44639519534428 + 21 +52.07749999999917 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +59.71749999999932 + 30 +0.0 + 11 +-12.44639519534428 + 21 +59.71749999999921 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +61.0024999999991 + 30 +0.0 + 11 +-4.924234806523372 + 21 +61.0024999999991 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +67.99249999999926 + 30 +0.0 + 11 +-4.924234806523372 + 21 +67.99249999999926 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +60.6774999999989 + 30 +0.0 + 11 +-12.44639519534428 + 21 +60.67749999999902 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +68.31749999999917 + 30 +0.0 + 11 +-12.44639519534428 + 21 +68.31749999999906 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +69.60249999999894 + 30 +0.0 + 11 +-4.924234806523372 + 21 +69.60249999999894 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +76.59249999999912 + 30 +0.0 + 11 +-4.924234806523372 + 21 +76.59249999999912 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +69.27749999999875 + 30 +0.0 + 11 +-12.44639519534428 + 21 +69.27749999999886 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +76.91749999999903 + 30 +0.0 + 11 +-12.44639519534428 + 21 +76.91749999999891 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +78.20249999999879 + 30 +0.0 + 11 +-4.924234806523372 + 21 +78.20249999999879 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +85.19249999999898 + 30 +0.0 + 11 +-4.924234806523372 + 21 +85.19249999999898 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +77.8774999999986 + 30 +0.0 + 11 +-12.44639519534428 + 21 +77.87749999999872 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +85.51749999999888 + 30 +0.0 + 11 +-12.44639519534428 + 21 +85.51749999999875 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +86.80249999999864 + 30 +0.0 + 11 +-4.924234806523372 + 21 +86.80249999999864 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +93.79249999999883 + 30 +0.0 + 11 +-4.924234806523372 + 21 +93.79249999999883 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +86.47749999999845 + 30 +0.0 + 11 +-12.44639519534428 + 21 +86.47749999999858 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +94.11749999999875 + 30 +0.0 + 11 +-12.44639519534428 + 21 +94.11749999999862 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +95.40249999999851 + 30 +0.0 + 11 +-4.924234806523372 + 21 +95.40249999999851 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +1.679830705185395 + 20 +102.3924999999987 + 30 +0.0 + 11 +-4.924234806523372 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +95.07749999999832 + 30 +0.0 + 11 +-12.44639519534428 + 21 +95.07749999999843 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-8.838131673775933 + 20 +102.7174999999985 + 30 +0.0 + 11 +-12.44639519534428 + 21 +102.7174999999984 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-19.99923480652342 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +7.792500000000302 + 30 +0.0 + 11 +-19.99923480652342 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-27.52139519534421 + 21 +0.4775000000000489 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +8.117500000000205 + 30 +0.0 + 11 +-27.52139519534421 + 21 +8.117500000000092 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +9.402499999999974 + 30 +0.0 + 11 +-19.99923480652342 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +16.39250000000015 + 30 +0.0 + 11 +-19.99923480652342 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +9.077499999999787 + 30 +0.0 + 11 +-27.52139519534421 + 21 +9.077499999999901 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +16.71750000000006 + 30 +0.0 + 11 +-27.52139519534421 + 21 +16.71749999999994 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +18.00249999999983 + 30 +0.0 + 11 +-19.99923480652342 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +24.99250000000001 + 30 +0.0 + 11 +-19.99923480652342 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +17.67749999999964 + 30 +0.0 + 11 +-27.52139519534421 + 21 +17.67749999999975 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +25.31749999999991 + 30 +0.0 + 11 +-27.52139519534421 + 21 +25.3174999999998 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +26.60249999999968 + 30 +0.0 + 11 +-19.99923480652342 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +33.59249999999987 + 30 +0.0 + 11 +-19.99923480652342 + 21 +33.59249999999987 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +26.27749999999949 + 30 +0.0 + 11 +-27.52139519534421 + 21 +26.27749999999961 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +33.91749999999977 + 30 +0.0 + 11 +-27.52139519534421 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +35.20249999999954 + 30 +0.0 + 11 +-19.99923480652342 + 21 +35.20249999999954 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +42.19249999999972 + 30 +0.0 + 11 +-19.99923480652342 + 21 +42.19249999999972 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +34.87749999999935 + 30 +0.0 + 11 +-27.52139519534421 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +42.51749999999962 + 30 +0.0 + 11 +-27.52139519534421 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +43.80249999999938 + 30 +0.0 + 11 +-19.99923480652342 + 21 +43.80249999999938 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +50.79249999999957 + 30 +0.0 + 11 +-19.99923480652342 + 21 +50.79249999999957 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +43.4774999999992 + 30 +0.0 + 11 +-27.52139519534421 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +51.11749999999947 + 30 +0.0 + 11 +-27.52139519534421 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +52.40249999999925 + 30 +0.0 + 11 +-19.99923480652342 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +59.39249999999942 + 30 +0.0 + 11 +-19.99923480652342 + 21 +59.39249999999942 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +52.07749999999905 + 30 +0.0 + 11 +-27.52139519534421 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +59.71749999999932 + 30 +0.0 + 11 +-27.52139519534421 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +61.0024999999991 + 30 +0.0 + 11 +-19.99923480652342 + 21 +61.0024999999991 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +67.99249999999926 + 30 +0.0 + 11 +-19.99923480652342 + 21 +67.99249999999926 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +60.6774999999989 + 30 +0.0 + 11 +-27.52139519534421 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +68.31749999999917 + 30 +0.0 + 11 +-27.52139519534421 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +69.60249999999894 + 30 +0.0 + 11 +-19.99923480652342 + 21 +69.60249999999894 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +76.59249999999912 + 30 +0.0 + 11 +-19.99923480652342 + 21 +76.59249999999912 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +69.27749999999875 + 30 +0.0 + 11 +-27.52139519534421 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +76.91749999999903 + 30 +0.0 + 11 +-27.52139519534421 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +78.20249999999879 + 30 +0.0 + 11 +-19.99923480652342 + 21 +78.20249999999879 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +85.19249999999898 + 30 +0.0 + 11 +-19.99923480652342 + 21 +85.19249999999898 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +77.8774999999986 + 30 +0.0 + 11 +-27.52139519534421 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +85.51749999999888 + 30 +0.0 + 11 +-27.52139519534421 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +86.80249999999864 + 30 +0.0 + 11 +-19.99923480652342 + 21 +86.80249999999864 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +93.79249999999883 + 30 +0.0 + 11 +-19.99923480652342 + 21 +93.79249999999883 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +86.47749999999845 + 30 +0.0 + 11 +-27.52139519534421 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +94.11749999999875 + 30 +0.0 + 11 +-27.52139519534421 + 21 +94.11749999999862 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +95.40249999999851 + 30 +0.0 + 11 +-19.99923480652342 + 21 +95.40249999999851 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-13.39516929481465 + 20 +102.3924999999987 + 30 +0.0 + 11 +-19.99923480652342 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +95.07749999999832 + 30 +0.0 + 11 +-27.52139519534421 + 21 +95.07749999999843 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-23.91313167377598 + 20 +102.7174999999985 + 30 +0.0 + 11 +-27.52139519534421 + 21 +102.7174999999984 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-35.07423480652335 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +7.792500000000302 + 30 +0.0 + 11 +-35.07423480652335 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-42.59639519534426 + 21 +0.4775000000000489 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +8.117500000000205 + 30 +0.0 + 11 +-42.59639519534426 + 21 +8.117500000000092 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +9.402499999999974 + 30 +0.0 + 11 +-35.07423480652335 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +16.39250000000015 + 30 +0.0 + 11 +-35.07423480652335 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +9.077499999999787 + 30 +0.0 + 11 +-42.59639519534426 + 21 +9.077499999999901 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +16.71750000000006 + 30 +0.0 + 11 +-42.59639519534426 + 21 +16.71749999999994 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +18.00249999999983 + 30 +0.0 + 11 +-35.07423480652335 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +24.99250000000001 + 30 +0.0 + 11 +-35.07423480652335 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +17.67749999999964 + 30 +0.0 + 11 +-42.59639519534426 + 21 +17.67749999999975 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +25.31749999999991 + 30 +0.0 + 11 +-42.59639519534426 + 21 +25.3174999999998 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +26.60249999999968 + 30 +0.0 + 11 +-35.07423480652335 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +33.59249999999988 + 30 +0.0 + 11 +-35.07423480652335 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +26.27749999999949 + 30 +0.0 + 11 +-42.59639519534426 + 21 +26.27749999999961 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +33.91749999999979 + 30 +0.0 + 11 +-42.59639519534426 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +35.20249999999955 + 30 +0.0 + 11 +-35.07423480652335 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +42.19249999999973 + 30 +0.0 + 11 +-35.07423480652335 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +34.87749999999937 + 30 +0.0 + 11 +-42.59639519534426 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +42.51749999999963 + 30 +0.0 + 11 +-42.59639519534426 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +43.8024999999994 + 30 +0.0 + 11 +-35.07423480652335 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +50.79249999999959 + 30 +0.0 + 11 +-35.07423480652335 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +43.47749999999922 + 30 +0.0 + 11 +-42.59639519534426 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +51.11749999999949 + 30 +0.0 + 11 +-42.59639519534426 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +52.40249999999925 + 30 +0.0 + 11 +-35.07423480652335 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +59.39249999999944 + 30 +0.0 + 11 +-35.07423480652335 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +52.07749999999907 + 30 +0.0 + 11 +-42.59639519534426 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +59.71749999999934 + 30 +0.0 + 11 +-42.59639519534426 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +61.00249999999911 + 30 +0.0 + 11 +-35.07423480652335 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +67.99249999999929 + 30 +0.0 + 11 +-35.07423480652335 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +60.67749999999892 + 30 +0.0 + 11 +-42.59639519534426 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +68.3174999999992 + 30 +0.0 + 11 +-42.59639519534426 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +69.60249999999897 + 30 +0.0 + 11 +-35.07423480652335 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +76.59249999999914 + 30 +0.0 + 11 +-35.07423480652335 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +69.27749999999878 + 30 +0.0 + 11 +-42.59639519534426 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +76.91749999999905 + 30 +0.0 + 11 +-42.59639519534426 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +78.20249999999882 + 30 +0.0 + 11 +-35.07423480652335 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +85.192499999999 + 30 +0.0 + 11 +-35.07423480652335 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +77.87749999999864 + 30 +0.0 + 11 +-42.59639519534426 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +85.5174999999989 + 30 +0.0 + 11 +-42.59639519534426 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +86.80249999999867 + 30 +0.0 + 11 +-35.07423480652335 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +93.79249999999883 + 30 +0.0 + 11 +-35.07423480652335 + 21 +93.79249999999883 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +86.47749999999849 + 30 +0.0 + 11 +-42.59639519534426 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +94.11749999999875 + 30 +0.0 + 11 +-42.59639519534426 + 21 +94.11749999999862 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +95.40249999999851 + 30 +0.0 + 11 +-35.07423480652335 + 21 +95.40249999999851 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-28.47016929481458 + 20 +102.3924999999987 + 30 +0.0 + 11 +-35.07423480652335 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +95.07749999999832 + 30 +0.0 + 11 +-42.59639519534426 + 21 +95.07749999999843 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-38.98813167377591 + 20 +102.7174999999985 + 30 +0.0 + 11 +-42.59639519534426 + 21 +102.7174999999984 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-50.14923480652328 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +7.792500000000302 + 30 +0.0 + 11 +-50.14923480652328 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-57.67139519534424 + 21 +0.4775000000000489 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +8.117500000000205 + 30 +0.0 + 11 +-57.67139519534424 + 21 +8.117500000000092 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +9.402499999999974 + 30 +0.0 + 11 +-50.14923480652328 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +16.39250000000015 + 30 +0.0 + 11 +-50.14923480652328 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +9.077499999999787 + 30 +0.0 + 11 +-57.67139519534424 + 21 +9.077499999999901 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +16.71750000000006 + 30 +0.0 + 11 +-57.67139519534424 + 21 +16.71749999999994 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +18.00249999999983 + 30 +0.0 + 11 +-50.14923480652328 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +24.99250000000001 + 30 +0.0 + 11 +-50.14923480652328 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +17.67749999999964 + 30 +0.0 + 11 +-57.67139519534424 + 21 +17.67749999999975 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +25.31749999999991 + 30 +0.0 + 11 +-57.67139519534424 + 21 +25.3174999999998 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +26.60249999999968 + 30 +0.0 + 11 +-50.14923480652328 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +33.59249999999988 + 30 +0.0 + 11 +-50.14923480652328 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +26.27749999999949 + 30 +0.0 + 11 +-57.67139519534424 + 21 +26.27749999999961 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +33.91749999999979 + 30 +0.0 + 11 +-57.67139519534424 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +35.20249999999955 + 30 +0.0 + 11 +-50.14923480652328 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +42.19249999999973 + 30 +0.0 + 11 +-50.14923480652328 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +34.87749999999937 + 30 +0.0 + 11 +-57.67139519534424 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +42.51749999999963 + 30 +0.0 + 11 +-57.67139519534424 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +43.8024999999994 + 30 +0.0 + 11 +-50.14923480652328 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +50.79249999999959 + 30 +0.0 + 11 +-50.14923480652328 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +43.47749999999922 + 30 +0.0 + 11 +-57.67139519534424 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +51.11749999999949 + 30 +0.0 + 11 +-57.67139519534424 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +52.40249999999925 + 30 +0.0 + 11 +-50.14923480652328 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +59.39249999999944 + 30 +0.0 + 11 +-50.14923480652328 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +52.07749999999907 + 30 +0.0 + 11 +-57.67139519534424 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +59.71749999999934 + 30 +0.0 + 11 +-57.67139519534424 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +61.00249999999911 + 30 +0.0 + 11 +-50.14923480652328 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +67.99249999999929 + 30 +0.0 + 11 +-50.14923480652328 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +60.67749999999892 + 30 +0.0 + 11 +-57.67139519534424 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +68.3174999999992 + 30 +0.0 + 11 +-57.67139519534424 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +69.60249999999897 + 30 +0.0 + 11 +-50.14923480652328 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +76.59249999999914 + 30 +0.0 + 11 +-50.14923480652328 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +69.27749999999878 + 30 +0.0 + 11 +-57.67139519534424 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +76.91749999999905 + 30 +0.0 + 11 +-57.67139519534424 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +78.20249999999882 + 30 +0.0 + 11 +-50.14923480652328 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +85.192499999999 + 30 +0.0 + 11 +-50.14923480652328 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +77.87749999999864 + 30 +0.0 + 11 +-57.67139519534424 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +85.5174999999989 + 30 +0.0 + 11 +-57.67139519534424 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +86.80249999999867 + 30 +0.0 + 11 +-50.14923480652328 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +93.79249999999883 + 30 +0.0 + 11 +-50.14923480652328 + 21 +93.79249999999883 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +86.47749999999849 + 30 +0.0 + 11 +-57.67139519534424 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +94.11749999999875 + 30 +0.0 + 11 +-57.67139519534424 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +95.40249999999851 + 30 +0.0 + 11 +-50.14923480652328 + 21 +95.40249999999851 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-43.54516929481451 + 20 +102.3924999999987 + 30 +0.0 + 11 +-50.14923480652328 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +95.07749999999832 + 30 +0.0 + 11 +-57.67139519534424 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-54.06313167377589 + 20 +102.7174999999985 + 30 +0.0 + 11 +-57.67139519534424 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-65.22423480652332 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +7.792500000000302 + 30 +0.0 + 11 +-65.22423480652332 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-72.74639519534424 + 21 +0.4775000000000489 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +8.117500000000205 + 30 +0.0 + 11 +-72.74639519534424 + 21 +8.117500000000092 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +9.402499999999974 + 30 +0.0 + 11 +-65.22423480652332 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +16.39250000000015 + 30 +0.0 + 11 +-65.22423480652332 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +9.077499999999787 + 30 +0.0 + 11 +-72.74639519534424 + 21 +9.077499999999901 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +16.71750000000006 + 30 +0.0 + 11 +-72.74639519534424 + 21 +16.71749999999994 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +18.00249999999983 + 30 +0.0 + 11 +-65.22423480652332 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +24.99250000000001 + 30 +0.0 + 11 +-65.22423480652332 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +17.67749999999964 + 30 +0.0 + 11 +-72.74639519534424 + 21 +17.67749999999975 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +25.31749999999991 + 30 +0.0 + 11 +-72.74639519534424 + 21 +25.3174999999998 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +26.60249999999968 + 30 +0.0 + 11 +-65.22423480652332 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +33.59249999999988 + 30 +0.0 + 11 +-65.22423480652332 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +26.27749999999949 + 30 +0.0 + 11 +-72.74639519534424 + 21 +26.27749999999961 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +33.91749999999979 + 30 +0.0 + 11 +-72.74639519534424 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +35.20249999999955 + 30 +0.0 + 11 +-65.22423480652332 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +42.19249999999973 + 30 +0.0 + 11 +-65.22423480652332 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +34.87749999999937 + 30 +0.0 + 11 +-72.74639519534424 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +42.51749999999963 + 30 +0.0 + 11 +-72.74639519534424 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +43.8024999999994 + 30 +0.0 + 11 +-65.22423480652332 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +50.79249999999959 + 30 +0.0 + 11 +-65.22423480652332 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +43.47749999999922 + 30 +0.0 + 11 +-72.74639519534424 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +51.11749999999949 + 30 +0.0 + 11 +-72.74639519534424 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +52.40249999999925 + 30 +0.0 + 11 +-65.22423480652332 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +59.39249999999944 + 30 +0.0 + 11 +-65.22423480652332 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +52.07749999999907 + 30 +0.0 + 11 +-72.74639519534424 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +59.71749999999934 + 30 +0.0 + 11 +-72.74639519534424 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +61.00249999999911 + 30 +0.0 + 11 +-65.22423480652332 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +67.99249999999929 + 30 +0.0 + 11 +-65.22423480652332 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +60.67749999999892 + 30 +0.0 + 11 +-72.74639519534424 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +68.3174999999992 + 30 +0.0 + 11 +-72.74639519534424 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +69.60249999999897 + 30 +0.0 + 11 +-65.22423480652332 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +76.59249999999914 + 30 +0.0 + 11 +-65.22423480652332 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +69.27749999999878 + 30 +0.0 + 11 +-72.74639519534424 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +76.91749999999905 + 30 +0.0 + 11 +-72.74639519534424 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +78.20249999999882 + 30 +0.0 + 11 +-65.22423480652332 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +85.192499999999 + 30 +0.0 + 11 +-65.22423480652332 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +77.87749999999864 + 30 +0.0 + 11 +-72.74639519534424 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +85.5174999999989 + 30 +0.0 + 11 +-72.74639519534424 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +86.80249999999867 + 30 +0.0 + 11 +-65.22423480652332 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +93.79249999999885 + 30 +0.0 + 11 +-65.22423480652332 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +86.47749999999849 + 30 +0.0 + 11 +-72.74639519534424 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +94.11749999999875 + 30 +0.0 + 11 +-72.74639519534424 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +95.40249999999852 + 30 +0.0 + 11 +-65.22423480652332 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-58.62016929481455 + 20 +102.3924999999987 + 30 +0.0 + 11 +-65.22423480652332 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +95.07749999999834 + 30 +0.0 + 11 +-72.74639519534424 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-69.13813167377589 + 20 +102.7174999999986 + 30 +0.0 + 11 +-72.74639519534424 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +0.8025000000001227 + 30 +0.0 + 11 +-80.29923480652332 + 21 +0.8025000000001227 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +7.792500000000302 + 30 +0.0 + 11 +-80.29923480652332 + 21 +7.792500000000302 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +0.4774999999999352 + 30 +0.0 + 11 +-87.82139519534423 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +8.117500000000205 + 30 +0.0 + 11 +-87.82139519534423 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +9.402499999999974 + 30 +0.0 + 11 +-80.29923480652332 + 21 +9.402499999999974 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +16.39250000000015 + 30 +0.0 + 11 +-80.29923480652332 + 21 +16.39250000000015 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +9.077499999999787 + 30 +0.0 + 11 +-87.82139519534423 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +16.71750000000006 + 30 +0.0 + 11 +-87.82139519534423 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +18.00249999999983 + 30 +0.0 + 11 +-80.29923480652332 + 21 +18.00249999999983 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +24.99250000000001 + 30 +0.0 + 11 +-80.29923480652332 + 21 +24.99250000000001 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +17.67749999999964 + 30 +0.0 + 11 +-87.82139519534423 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +25.31749999999991 + 30 +0.0 + 11 +-87.82139519534423 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +26.60249999999968 + 30 +0.0 + 11 +-80.29923480652332 + 21 +26.60249999999968 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +33.59249999999988 + 30 +0.0 + 11 +-80.29923480652332 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +26.27749999999949 + 30 +0.0 + 11 +-87.82139519534423 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +33.91749999999979 + 30 +0.0 + 11 +-87.82139519534423 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +35.20249999999955 + 30 +0.0 + 11 +-80.29923480652332 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +42.19249999999973 + 30 +0.0 + 11 +-80.29923480652332 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +34.87749999999937 + 30 +0.0 + 11 +-87.82139519534423 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +42.51749999999963 + 30 +0.0 + 11 +-87.82139519534423 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +43.8024999999994 + 30 +0.0 + 11 +-80.29923480652332 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +50.79249999999959 + 30 +0.0 + 11 +-80.29923480652332 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +43.47749999999922 + 30 +0.0 + 11 +-87.82139519534423 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +51.11749999999949 + 30 +0.0 + 11 +-87.82139519534423 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +52.40249999999925 + 30 +0.0 + 11 +-80.29923480652332 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +59.39249999999944 + 30 +0.0 + 11 +-80.29923480652332 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +52.07749999999907 + 30 +0.0 + 11 +-87.82139519534423 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +59.71749999999934 + 30 +0.0 + 11 +-87.82139519534423 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +61.00249999999911 + 30 +0.0 + 11 +-80.29923480652332 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +67.99249999999929 + 30 +0.0 + 11 +-80.29923480652332 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +60.67749999999892 + 30 +0.0 + 11 +-87.82139519534423 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +68.3174999999992 + 30 +0.0 + 11 +-87.82139519534423 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +69.60249999999897 + 30 +0.0 + 11 +-80.29923480652332 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +76.59249999999914 + 30 +0.0 + 11 +-80.29923480652332 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +69.27749999999878 + 30 +0.0 + 11 +-87.82139519534423 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +76.91749999999905 + 30 +0.0 + 11 +-87.82139519534423 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +78.20249999999882 + 30 +0.0 + 11 +-80.29923480652332 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +85.192499999999 + 30 +0.0 + 11 +-80.29923480652332 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +77.87749999999864 + 30 +0.0 + 11 +-87.82139519534423 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +85.5174999999989 + 30 +0.0 + 11 +-87.82139519534423 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +86.80249999999867 + 30 +0.0 + 11 +-80.29923480652332 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +93.79249999999885 + 30 +0.0 + 11 +-80.29923480652332 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +86.47749999999849 + 30 +0.0 + 11 +-87.82139519534423 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +94.11749999999875 + 30 +0.0 + 11 +-87.82139519534423 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +95.40249999999852 + 30 +0.0 + 11 +-80.29923480652332 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-73.69516929481455 + 20 +102.3924999999987 + 30 +0.0 + 11 +-80.29923480652332 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +95.07749999999834 + 30 +0.0 + 11 +-87.82139519534423 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-84.21313167377588 + 20 +102.7174999999986 + 30 +0.0 + 11 +-87.82139519534423 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +0.8025000000001512 + 30 +0.0 + 11 +-95.3742348065233 + 21 +0.8025000000001512 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +7.79250000000033 + 30 +0.0 + 11 +-95.3742348065233 + 21 +7.79250000000033 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +0.4774999999999637 + 30 +0.0 + 11 +-102.8963951953442 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +8.117500000000234 + 30 +0.0 + 11 +-102.8963951953442 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +9.402500000000003 + 30 +0.0 + 11 +-95.3742348065233 + 21 +9.402500000000003 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +16.39250000000018 + 30 +0.0 + 11 +-95.3742348065233 + 21 +16.39250000000018 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +9.077499999999815 + 30 +0.0 + 11 +-102.8963951953442 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +16.71750000000008 + 30 +0.0 + 11 +-102.8963951953442 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +18.00249999999985 + 30 +0.0 + 11 +-95.3742348065233 + 21 +18.00249999999985 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +24.99250000000003 + 30 +0.0 + 11 +-95.3742348065233 + 21 +24.99250000000003 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +17.67749999999967 + 30 +0.0 + 11 +-102.8963951953442 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +25.31749999999994 + 30 +0.0 + 11 +-102.8963951953442 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +26.60249999999971 + 30 +0.0 + 11 +-95.3742348065233 + 21 +26.60249999999971 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +33.59249999999988 + 30 +0.0 + 11 +-95.3742348065233 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +26.27749999999952 + 30 +0.0 + 11 +-102.8963951953442 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +33.91749999999979 + 30 +0.0 + 11 +-102.8963951953442 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +35.20249999999955 + 30 +0.0 + 11 +-95.3742348065233 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +42.19249999999973 + 30 +0.0 + 11 +-95.3742348065233 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +34.87749999999937 + 30 +0.0 + 11 +-102.8963951953442 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +42.51749999999963 + 30 +0.0 + 11 +-102.8963951953442 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +43.8024999999994 + 30 +0.0 + 11 +-95.3742348065233 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +50.79249999999959 + 30 +0.0 + 11 +-95.3742348065233 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +43.47749999999922 + 30 +0.0 + 11 +-102.8963951953442 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +51.11749999999949 + 30 +0.0 + 11 +-102.8963951953442 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +52.40249999999925 + 30 +0.0 + 11 +-95.3742348065233 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +59.39249999999944 + 30 +0.0 + 11 +-95.3742348065233 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +52.07749999999907 + 30 +0.0 + 11 +-102.8963951953442 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +59.71749999999934 + 30 +0.0 + 11 +-102.8963951953442 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +61.00249999999911 + 30 +0.0 + 11 +-95.3742348065233 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +67.99249999999929 + 30 +0.0 + 11 +-95.3742348065233 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +60.67749999999892 + 30 +0.0 + 11 +-102.8963951953442 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +68.3174999999992 + 30 +0.0 + 11 +-102.8963951953442 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +69.60249999999897 + 30 +0.0 + 11 +-95.3742348065233 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +76.59249999999914 + 30 +0.0 + 11 +-95.3742348065233 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +69.27749999999878 + 30 +0.0 + 11 +-102.8963951953442 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +76.91749999999905 + 30 +0.0 + 11 +-102.8963951953442 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +78.20249999999882 + 30 +0.0 + 11 +-95.3742348065233 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +85.192499999999 + 30 +0.0 + 11 +-95.3742348065233 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +77.87749999999864 + 30 +0.0 + 11 +-102.8963951953442 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +85.5174999999989 + 30 +0.0 + 11 +-102.8963951953442 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +86.80249999999867 + 30 +0.0 + 11 +-95.3742348065233 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +93.79249999999885 + 30 +0.0 + 11 +-95.3742348065233 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +86.47749999999849 + 30 +0.0 + 11 +-102.8963951953442 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +94.11749999999875 + 30 +0.0 + 11 +-102.8963951953442 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +95.40249999999852 + 30 +0.0 + 11 +-95.3742348065233 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-88.77016929481454 + 20 +102.3924999999987 + 30 +0.0 + 11 +-95.3742348065233 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +95.07749999999834 + 30 +0.0 + 11 +-102.8963951953442 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-99.28813167377587 + 20 +102.7174999999986 + 30 +0.0 + 11 +-102.8963951953442 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +0.8025000000001512 + 30 +0.0 + 11 +-110.4492348065233 + 21 +0.8025000000001512 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +7.79250000000033 + 30 +0.0 + 11 +-110.4492348065233 + 21 +7.79250000000033 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +0.4774999999999637 + 30 +0.0 + 11 +-117.9713951953442 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +8.117500000000234 + 30 +0.0 + 11 +-117.9713951953442 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +9.402500000000003 + 30 +0.0 + 11 +-110.4492348065233 + 21 +9.402500000000003 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +16.39250000000018 + 30 +0.0 + 11 +-110.4492348065233 + 21 +16.39250000000018 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +9.077499999999815 + 30 +0.0 + 11 +-117.9713951953442 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +16.71750000000008 + 30 +0.0 + 11 +-117.9713951953442 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +18.00249999999985 + 30 +0.0 + 11 +-110.4492348065233 + 21 +18.00249999999985 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +24.99250000000003 + 30 +0.0 + 11 +-110.4492348065233 + 21 +24.99250000000003 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +17.67749999999967 + 30 +0.0 + 11 +-117.9713951953442 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +25.31749999999994 + 30 +0.0 + 11 +-117.9713951953442 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +26.60249999999971 + 30 +0.0 + 11 +-110.4492348065233 + 21 +26.60249999999971 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +33.59249999999988 + 30 +0.0 + 11 +-110.4492348065233 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +26.27749999999952 + 30 +0.0 + 11 +-117.9713951953442 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +33.91749999999979 + 30 +0.0 + 11 +-117.9713951953442 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +35.20249999999955 + 30 +0.0 + 11 +-110.4492348065233 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +42.19249999999973 + 30 +0.0 + 11 +-110.4492348065233 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +34.87749999999937 + 30 +0.0 + 11 +-117.9713951953442 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +42.51749999999963 + 30 +0.0 + 11 +-117.9713951953442 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +43.8024999999994 + 30 +0.0 + 11 +-110.4492348065233 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +50.79249999999959 + 30 +0.0 + 11 +-110.4492348065233 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +43.47749999999922 + 30 +0.0 + 11 +-117.9713951953442 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +51.11749999999949 + 30 +0.0 + 11 +-117.9713951953442 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +52.40249999999925 + 30 +0.0 + 11 +-110.4492348065233 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +59.39249999999944 + 30 +0.0 + 11 +-110.4492348065233 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +52.07749999999907 + 30 +0.0 + 11 +-117.9713951953442 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +59.71749999999934 + 30 +0.0 + 11 +-117.9713951953442 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +61.00249999999911 + 30 +0.0 + 11 +-110.4492348065233 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +67.99249999999929 + 30 +0.0 + 11 +-110.4492348065233 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +60.67749999999892 + 30 +0.0 + 11 +-117.9713951953442 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +68.3174999999992 + 30 +0.0 + 11 +-117.9713951953442 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +69.60249999999897 + 30 +0.0 + 11 +-110.4492348065233 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +76.59249999999914 + 30 +0.0 + 11 +-110.4492348065233 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +69.27749999999878 + 30 +0.0 + 11 +-117.9713951953442 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +76.91749999999905 + 30 +0.0 + 11 +-117.9713951953442 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +78.20249999999882 + 30 +0.0 + 11 +-110.4492348065233 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +85.192499999999 + 30 +0.0 + 11 +-110.4492348065233 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +77.87749999999864 + 30 +0.0 + 11 +-117.9713951953442 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +85.5174999999989 + 30 +0.0 + 11 +-117.9713951953442 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +86.80249999999867 + 30 +0.0 + 11 +-110.4492348065233 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +93.79249999999885 + 30 +0.0 + 11 +-110.4492348065233 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +86.47749999999849 + 30 +0.0 + 11 +-117.9713951953442 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +94.11749999999875 + 30 +0.0 + 11 +-117.9713951953442 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +95.40249999999852 + 30 +0.0 + 11 +-110.4492348065233 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-103.8451692948145 + 20 +102.3924999999987 + 30 +0.0 + 11 +-110.4492348065233 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +95.07749999999834 + 30 +0.0 + 11 +-117.9713951953442 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-114.3631316737758 + 20 +102.7174999999986 + 30 +0.0 + 11 +-117.9713951953442 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +0.8025000000001512 + 30 +0.0 + 11 +-125.5242348065233 + 21 +0.8025000000001512 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +7.79250000000033 + 30 +0.0 + 11 +-125.5242348065233 + 21 +7.79250000000033 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +0.4774999999999637 + 30 +0.0 + 11 +-133.0463951953442 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +8.117500000000234 + 30 +0.0 + 11 +-133.0463951953442 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +9.402500000000003 + 30 +0.0 + 11 +-125.5242348065233 + 21 +9.402500000000003 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +16.39250000000018 + 30 +0.0 + 11 +-125.5242348065233 + 21 +16.39250000000018 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +9.077499999999815 + 30 +0.0 + 11 +-133.0463951953442 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +16.71750000000008 + 30 +0.0 + 11 +-133.0463951953442 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +18.00249999999985 + 30 +0.0 + 11 +-125.5242348065233 + 21 +18.00249999999985 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +24.99250000000003 + 30 +0.0 + 11 +-125.5242348065233 + 21 +24.99250000000003 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +17.67749999999967 + 30 +0.0 + 11 +-133.0463951953442 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +25.31749999999994 + 30 +0.0 + 11 +-133.0463951953442 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +26.60249999999971 + 30 +0.0 + 11 +-125.5242348065233 + 21 +26.60249999999971 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +33.59249999999988 + 30 +0.0 + 11 +-125.5242348065233 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +26.27749999999952 + 30 +0.0 + 11 +-133.0463951953442 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +33.91749999999979 + 30 +0.0 + 11 +-133.0463951953442 + 21 +33.91749999999967 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +35.20249999999955 + 30 +0.0 + 11 +-125.5242348065233 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +42.19249999999973 + 30 +0.0 + 11 +-125.5242348065233 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +34.87749999999937 + 30 +0.0 + 11 +-133.0463951953442 + 21 +34.87749999999948 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +42.51749999999963 + 30 +0.0 + 11 +-133.0463951953442 + 21 +42.51749999999952 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +43.8024999999994 + 30 +0.0 + 11 +-125.5242348065233 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +50.79249999999959 + 30 +0.0 + 11 +-125.5242348065233 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +43.47749999999922 + 30 +0.0 + 11 +-133.0463951953442 + 21 +43.47749999999932 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +51.11749999999949 + 30 +0.0 + 11 +-133.0463951953442 + 21 +51.11749999999937 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +52.40249999999925 + 30 +0.0 + 11 +-125.5242348065233 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +59.39249999999944 + 30 +0.0 + 11 +-125.5242348065233 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +52.07749999999907 + 30 +0.0 + 11 +-133.0463951953442 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +59.71749999999934 + 30 +0.0 + 11 +-133.0463951953442 + 21 +59.71749999999922 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +61.00249999999911 + 30 +0.0 + 11 +-125.5242348065233 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +67.99249999999929 + 30 +0.0 + 11 +-125.5242348065233 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +60.67749999999892 + 30 +0.0 + 11 +-133.0463951953442 + 21 +60.67749999999904 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +68.3174999999992 + 30 +0.0 + 11 +-133.0463951953442 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +69.60249999999897 + 30 +0.0 + 11 +-125.5242348065233 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +76.59249999999914 + 30 +0.0 + 11 +-125.5242348065233 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +69.27749999999878 + 30 +0.0 + 11 +-133.0463951953442 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +76.91749999999905 + 30 +0.0 + 11 +-133.0463951953442 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +78.20249999999882 + 30 +0.0 + 11 +-125.5242348065233 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +85.192499999999 + 30 +0.0 + 11 +-125.5242348065233 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +77.87749999999864 + 30 +0.0 + 11 +-133.0463951953442 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +85.5174999999989 + 30 +0.0 + 11 +-133.0463951953442 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +86.80249999999867 + 30 +0.0 + 11 +-125.5242348065233 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +93.79249999999885 + 30 +0.0 + 11 +-125.5242348065233 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +86.47749999999849 + 30 +0.0 + 11 +-133.0463951953442 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +94.11749999999875 + 30 +0.0 + 11 +-133.0463951953442 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +95.40249999999852 + 30 +0.0 + 11 +-125.5242348065233 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-118.9201692948145 + 20 +102.3924999999987 + 30 +0.0 + 11 +-125.5242348065233 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +95.07749999999834 + 30 +0.0 + 11 +-133.0463951953442 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-129.4381316737758 + 20 +102.7174999999986 + 30 +0.0 + 11 +-133.0463951953442 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +0.8025000000001512 + 30 +0.0 + 11 +-140.5992348065232 + 21 +0.8025000000001512 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +7.79250000000033 + 30 +0.0 + 11 +-140.5992348065232 + 21 +7.79250000000033 + 31 +0.0 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +0.4774999999999637 + 30 +0.0 + 11 +-148.1213951953441 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +8.117500000000234 + 30 +0.0 + 11 +-148.1213951953441 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +9.402500000000003 + 30 +0.0 + 11 +-140.5992348065232 + 21 +9.402500000000003 + 31 +0.0 + 0 +LINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +16.39250000000018 + 30 +0.0 + 11 +-140.5992348065232 + 21 +16.39250000000018 + 31 +0.0 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +9.077499999999815 + 30 +0.0 + 11 +-148.1213951953441 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +16.71750000000008 + 30 +0.0 + 11 +-148.1213951953441 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +18.00249999999985 + 30 +0.0 + 11 +-140.5992348065232 + 21 +18.00249999999985 + 31 +0.0 + 0 +LINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +24.99250000000003 + 30 +0.0 + 11 +-140.5992348065232 + 21 +24.99250000000003 + 31 +0.0 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +17.67749999999967 + 30 +0.0 + 11 +-148.1213951953441 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +25.31749999999994 + 30 +0.0 + 11 +-148.1213951953441 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +26.60249999999971 + 30 +0.0 + 11 +-140.5992348065232 + 21 +26.60249999999971 + 31 +0.0 + 0 +LINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +33.59249999999988 + 30 +0.0 + 11 +-140.5992348065232 + 21 +33.59249999999988 + 31 +0.0 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +26.27749999999952 + 30 +0.0 + 11 +-148.1213951953441 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +33.9174999999998 + 30 +0.0 + 11 +-148.1213951953441 + 21 +33.91749999999968 + 31 +0.0 + 0 +LINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +35.20249999999955 + 30 +0.0 + 11 +-140.5992348065232 + 21 +35.20249999999955 + 31 +0.0 + 0 +LINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +42.19249999999973 + 30 +0.0 + 11 +-140.5992348065232 + 21 +42.19249999999973 + 31 +0.0 + 0 +LINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +34.87749999999938 + 30 +0.0 + 11 +-148.1213951953441 + 21 +34.87749999999949 + 31 +0.0 + 0 +LINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +42.51749999999964 + 30 +0.0 + 11 +-148.1213951953441 + 21 +42.51749999999954 + 31 +0.0 + 0 +LINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +43.8024999999994 + 30 +0.0 + 11 +-140.5992348065232 + 21 +43.8024999999994 + 31 +0.0 + 0 +LINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +50.79249999999959 + 30 +0.0 + 11 +-140.5992348065232 + 21 +50.79249999999959 + 31 +0.0 + 0 +LINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +43.47749999999923 + 30 +0.0 + 11 +-148.1213951953441 + 21 +43.47749999999934 + 31 +0.0 + 0 +LINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +51.1174999999995 + 30 +0.0 + 11 +-148.1213951953441 + 21 +51.11749999999939 + 31 +0.0 + 0 +LINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +52.40249999999925 + 30 +0.0 + 11 +-140.5992348065232 + 21 +52.40249999999925 + 31 +0.0 + 0 +LINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +59.39249999999944 + 30 +0.0 + 11 +-140.5992348065232 + 21 +59.39249999999944 + 31 +0.0 + 0 +LINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +52.07749999999908 + 30 +0.0 + 11 +-148.1213951953441 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +59.71749999999936 + 30 +0.0 + 11 +-148.1213951953441 + 21 +59.71749999999924 + 31 +0.0 + 0 +LINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +61.00249999999911 + 30 +0.0 + 11 +-140.5992348065232 + 21 +61.00249999999911 + 31 +0.0 + 0 +LINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +67.99249999999929 + 30 +0.0 + 11 +-140.5992348065232 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +60.67749999999893 + 30 +0.0 + 11 +-148.1213951953441 + 21 +60.67749999999905 + 31 +0.0 + 0 +LINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +68.3174999999992 + 30 +0.0 + 11 +-148.1213951953441 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +69.60249999999897 + 30 +0.0 + 11 +-140.5992348065232 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +76.59249999999914 + 30 +0.0 + 11 +-140.5992348065232 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +69.27749999999878 + 30 +0.0 + 11 +-148.1213951953441 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +76.91749999999905 + 30 +0.0 + 11 +-148.1213951953441 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +78.20249999999882 + 30 +0.0 + 11 +-140.5992348065232 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +85.192499999999 + 30 +0.0 + 11 +-140.5992348065232 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +431 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +77.87749999999864 + 30 +0.0 + 11 +-148.1213951953441 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +432 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +85.5174999999989 + 30 +0.0 + 11 +-148.1213951953441 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +433 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +86.80249999999867 + 30 +0.0 + 11 +-140.5992348065232 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +434 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +93.79249999999885 + 30 +0.0 + 11 +-140.5992348065232 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +435 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +86.47749999999849 + 30 +0.0 + 11 +-148.1213951953441 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +436 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +94.11749999999875 + 30 +0.0 + 11 +-148.1213951953441 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +437 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +95.40249999999852 + 30 +0.0 + 11 +-140.5992348065232 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +438 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-133.9951692948144 + 20 +102.3924999999987 + 30 +0.0 + 11 +-140.5992348065232 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +439 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +95.07749999999834 + 30 +0.0 + 11 +-148.1213951953441 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +43A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-144.5131316737757 + 20 +102.7174999999986 + 30 +0.0 + 11 +-148.1213951953441 + 21 +102.7174999999985 + 31 +0.0 + 0 +LINE + 5 +43B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +0.8025000000001512 + 30 +0.0 + 11 +-155.6742348065232 + 21 +0.8025000000001512 + 31 +0.0 + 0 +LINE + 5 +43C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +7.79250000000033 + 30 +0.0 + 11 +-155.6742348065232 + 21 +7.79250000000033 + 31 +0.0 + 0 +LINE + 5 +43D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +0.4774999999999637 + 30 +0.0 + 11 +-163.1963951953441 + 21 +0.4775000000000773 + 31 +0.0 + 0 +LINE + 5 +43E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +8.117500000000234 + 30 +0.0 + 11 +-163.1963951953441 + 21 +8.11750000000012 + 31 +0.0 + 0 +LINE + 5 +43F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +9.402500000000003 + 30 +0.0 + 11 +-155.6742348065232 + 21 +9.402500000000003 + 31 +0.0 + 0 +LINE + 5 +440 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +16.39250000000018 + 30 +0.0 + 11 +-155.6742348065232 + 21 +16.39250000000018 + 31 +0.0 + 0 +LINE + 5 +441 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +9.077499999999815 + 30 +0.0 + 11 +-163.1963951953441 + 21 +9.077499999999929 + 31 +0.0 + 0 +LINE + 5 +442 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +16.71750000000008 + 30 +0.0 + 11 +-163.1963951953441 + 21 +16.71749999999997 + 31 +0.0 + 0 +LINE + 5 +443 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +18.00249999999985 + 30 +0.0 + 11 +-155.6742348065232 + 21 +18.00249999999985 + 31 +0.0 + 0 +LINE + 5 +444 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +24.99250000000003 + 30 +0.0 + 11 +-155.6742348065232 + 21 +24.99250000000003 + 31 +0.0 + 0 +LINE + 5 +445 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +17.67749999999967 + 30 +0.0 + 11 +-163.1963951953441 + 21 +17.67749999999978 + 31 +0.0 + 0 +LINE + 5 +446 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +25.31749999999994 + 30 +0.0 + 11 +-163.1963951953441 + 21 +25.31749999999983 + 31 +0.0 + 0 +LINE + 5 +447 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +26.60249999999971 + 30 +0.0 + 11 +-155.6742348065232 + 21 +26.60249999999971 + 31 +0.0 + 0 +LINE + 5 +448 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +33.5924999999999 + 30 +0.0 + 11 +-155.6742348065232 + 21 +33.5924999999999 + 31 +0.0 + 0 +LINE + 5 +449 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +26.27749999999952 + 30 +0.0 + 11 +-163.1963951953441 + 21 +26.27749999999963 + 31 +0.0 + 0 +LINE + 5 +44A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +33.9174999999998 + 30 +0.0 + 11 +-163.1963951953441 + 21 +33.91749999999968 + 31 +0.0 + 0 +LINE + 5 +44B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +35.20249999999957 + 30 +0.0 + 11 +-155.6742348065232 + 21 +35.20249999999957 + 31 +0.0 + 0 +LINE + 5 +44C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +42.19249999999974 + 30 +0.0 + 11 +-155.6742348065232 + 21 +42.19249999999974 + 31 +0.0 + 0 +LINE + 5 +44D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +34.87749999999938 + 30 +0.0 + 11 +-163.1963951953441 + 21 +34.87749999999949 + 31 +0.0 + 0 +LINE + 5 +44E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +42.51749999999964 + 30 +0.0 + 11 +-163.1963951953441 + 21 +42.51749999999954 + 31 +0.0 + 0 +LINE + 5 +44F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +43.80249999999942 + 30 +0.0 + 11 +-155.6742348065232 + 21 +43.80249999999942 + 31 +0.0 + 0 +LINE + 5 +450 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +50.7924999999996 + 30 +0.0 + 11 +-155.6742348065232 + 21 +50.7924999999996 + 31 +0.0 + 0 +LINE + 5 +451 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +43.47749999999923 + 30 +0.0 + 11 +-163.1963951953441 + 21 +43.47749999999934 + 31 +0.0 + 0 +LINE + 5 +452 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +51.1174999999995 + 30 +0.0 + 11 +-163.1963951953441 + 21 +51.11749999999939 + 31 +0.0 + 0 +LINE + 5 +453 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +52.40249999999927 + 30 +0.0 + 11 +-155.6742348065232 + 21 +52.40249999999927 + 31 +0.0 + 0 +LINE + 5 +454 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +59.39249999999945 + 30 +0.0 + 11 +-155.6742348065232 + 21 +59.39249999999945 + 31 +0.0 + 0 +LINE + 5 +455 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +52.07749999999908 + 30 +0.0 + 11 +-163.1963951953441 + 21 +52.07749999999919 + 31 +0.0 + 0 +LINE + 5 +456 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +59.71749999999936 + 30 +0.0 + 11 +-163.1963951953441 + 21 +59.71749999999924 + 31 +0.0 + 0 +LINE + 5 +457 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +61.00249999999912 + 30 +0.0 + 11 +-155.6742348065232 + 21 +61.00249999999912 + 31 +0.0 + 0 +LINE + 5 +458 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +67.99249999999929 + 30 +0.0 + 11 +-155.6742348065232 + 21 +67.99249999999929 + 31 +0.0 + 0 +LINE + 5 +459 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +60.67749999999893 + 30 +0.0 + 11 +-163.1963951953441 + 21 +60.67749999999905 + 31 +0.0 + 0 +LINE + 5 +45A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +68.3174999999992 + 30 +0.0 + 11 +-163.1963951953441 + 21 +68.31749999999908 + 31 +0.0 + 0 +LINE + 5 +45B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +69.60249999999897 + 30 +0.0 + 11 +-155.6742348065232 + 21 +69.60249999999897 + 31 +0.0 + 0 +LINE + 5 +45C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +76.59249999999914 + 30 +0.0 + 11 +-155.6742348065232 + 21 +76.59249999999914 + 31 +0.0 + 0 +LINE + 5 +45D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +69.27749999999878 + 30 +0.0 + 11 +-163.1963951953441 + 21 +69.27749999999889 + 31 +0.0 + 0 +LINE + 5 +45E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +76.91749999999905 + 30 +0.0 + 11 +-163.1963951953441 + 21 +76.91749999999894 + 31 +0.0 + 0 +LINE + 5 +45F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +78.20249999999882 + 30 +0.0 + 11 +-155.6742348065232 + 21 +78.20249999999882 + 31 +0.0 + 0 +LINE + 5 +460 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +85.192499999999 + 30 +0.0 + 11 +-155.6742348065232 + 21 +85.192499999999 + 31 +0.0 + 0 +LINE + 5 +461 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +77.87749999999864 + 30 +0.0 + 11 +-163.1963951953441 + 21 +77.87749999999874 + 31 +0.0 + 0 +LINE + 5 +462 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +85.5174999999989 + 30 +0.0 + 11 +-163.1963951953441 + 21 +85.51749999999879 + 31 +0.0 + 0 +LINE + 5 +463 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +86.80249999999867 + 30 +0.0 + 11 +-155.6742348065232 + 21 +86.80249999999867 + 31 +0.0 + 0 +LINE + 5 +464 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +93.79249999999885 + 30 +0.0 + 11 +-155.6742348065232 + 21 +93.79249999999885 + 31 +0.0 + 0 +LINE + 5 +465 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +86.47749999999849 + 30 +0.0 + 11 +-163.1963951953441 + 21 +86.47749999999859 + 31 +0.0 + 0 +LINE + 5 +466 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +94.11749999999875 + 30 +0.0 + 11 +-163.1963951953441 + 21 +94.11749999999864 + 31 +0.0 + 0 +LINE + 5 +467 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +95.40249999999852 + 30 +0.0 + 11 +-155.6742348065232 + 21 +95.40249999999852 + 31 +0.0 + 0 +LINE + 5 +468 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-149.0701692948145 + 20 +102.3924999999987 + 30 +0.0 + 11 +-155.6742348065232 + 21 +102.3924999999987 + 31 +0.0 + 0 +LINE + 5 +469 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +95.07749999999834 + 30 +0.0 + 11 +-163.1963951953441 + 21 +95.07749999999845 + 31 +0.0 + 0 +LINE + 5 +46A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +100 +AcDbLine + 10 +-159.5881316737758 + 20 +102.7174999999986 + 30 +0.0 + 11 +-163.1963951953441 + 21 +102.7174999999985 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +3D +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +3E + 0 +DICTIONARY + 5 +35 +330 +34 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +36 + 0 +DICTIONARY + 5 +2E +330 +2D +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +3A + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +3E +102 +{ACAD_REACTORS +330 +3D +102 +} +330 +3D +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +36 +102 +{ACAD_REACTORS +330 +35 +102 +} +330 +35 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +340 +3A + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MATERIAL + 5 +3A +102 +{ACAD_XDICTIONARY +360 +3B +102 +} +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +DICTIONARY + 5 +3B +330 +3A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +3C + 0 +XRECORD + 5 +3C +102 +{ACAD_REACTORS +330 +3B +102 +} +330 +3B +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D714 3D.par b/LaiPuLaser/TempMarkData/D714 3D.par new file mode 100644 index 0000000..de257aa Binary files /dev/null and b/LaiPuLaser/TempMarkData/D714 3D.par differ diff --git a/LaiPuLaser/TempMarkData/D714 3D.txt b/LaiPuLaser/TempMarkData/D714 3D.txt new file mode 100644 index 0000000..bf24788 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714 3D.txt @@ -0,0 +1,8 @@ +1 +76.6997 +-0.280251 +80 +50 +600 +35 +1 diff --git a/LaiPuLaser/TempMarkData/D714-1.dxf b/LaiPuLaser/TempMarkData/D714-1.dxf new file mode 100644 index 0000000..6cb177d --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714-1.dxf @@ -0,0 +1,19388 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +Administrator + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-152.5494465894126 + 20 +-94.90000000000005 + 30 +0.0 + 9 +$EXTMAX + 10 +152.5494465894126 + 20 +94.89999999999986 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +1.570796326794896 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458704.407000729 + 9 +$TDUCREATE + 40 +2458704.073667396 + 9 +$TDUPDATE + 40 +2458704.4074989 + 9 +$TDUUPDATE + 40 +2458704.074165567 + 9 +$TDINDWG + 40 +0.0004989583 + 9 +$TDUSRTIMER + 40 +0.0004989352 + 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 +4A2 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{BD9C02ED-12DF-45E9-8251-0ECFBC0F42C4} + 9 +$VERSIONGUID + 2 +{EC4DE5D2-4379-4A70-97A1-C73F036D1A7B} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +1E + 9 +$INTERFEREVPVS +346 +1B + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 20 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +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 +28 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +38.31867719957835 + 22 +0.6049033065383682 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +189.8468208516302 + 41 +1.154608225088767 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 +348 +1A + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 250 +421 + 3355443 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +26 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2A +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2B +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +4E +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +13 + 0 +LAYER + 5 +49 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +13 + 0 +LAYER + 5 +4A +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +13 +1001 +AcAecLayerStandard +1000 + +1000 + + 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 +27 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +4D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +3F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 50 +90.0 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +26 + 0 +DIMSTYLE +105 +4B +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +26 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +4C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +26 +341 +42 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +37 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +3A + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +36 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +3E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +42 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +38 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +39 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +35 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +3D +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +45 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +46 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +47 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +48 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +268 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +150.7499999999999 + 20 +-94.59999999999994 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +269 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +26A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-93.79749999999983 + 30 +0.0 + 11 +145.5895938551805 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +26B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-86.7874999999999 + 30 +0.0 + 11 +145.5895938551805 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +26C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-94.1224999999999 + 30 +0.0 + 11 +138.1491059033505 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +26D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-86.4624999999998 + 30 +0.0 + 11 +138.1491059033505 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +26E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-85.19749999999998 + 30 +0.0 + 11 +145.5895938551805 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +26F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-78.18750000000003 + 30 +0.0 + 11 +145.5895938551805 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +270 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-85.52250000000005 + 30 +0.0 + 11 +138.1491059033505 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +271 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-77.86249999999995 + 30 +0.0 + 11 +138.1491059033505 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +272 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-76.59750000000012 + 30 +0.0 + 11 +145.5895938551805 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +273 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-69.58750000000016 + 30 +0.0 + 11 +145.5895938551805 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +274 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-76.9225000000002 + 30 +0.0 + 11 +138.1491059033505 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +275 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-69.2625000000001 + 30 +0.0 + 11 +138.1491059033505 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +276 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-67.99750000000027 + 30 +0.0 + 11 +145.5895938551805 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +277 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-60.98750000000032 + 30 +0.0 + 11 +145.5895938551805 + 21 +-60.98750000000032 + 31 +0.0 + 0 +LINE + 5 +278 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-68.32250000000035 + 30 +0.0 + 11 +138.1491059033505 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +279 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-60.66250000000026 + 30 +0.0 + 11 +138.1491059033505 + 21 +-60.66250000000026 + 31 +0.0 + 0 +LINE + 5 +27A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-59.39750000000042 + 30 +0.0 + 11 +145.5895938551805 + 21 +-59.39750000000042 + 31 +0.0 + 0 +LINE + 5 +27B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-52.38750000000047 + 30 +0.0 + 11 +145.5895938551805 + 21 +-52.38750000000047 + 31 +0.0 + 0 +LINE + 5 +27C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-59.72250000000049 + 30 +0.0 + 11 +138.1491059033505 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +27D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-52.06250000000039 + 30 +0.0 + 11 +138.1491059033505 + 21 +-52.06250000000039 + 31 +0.0 + 0 +LINE + 5 +27E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-50.79750000000057 + 30 +0.0 + 11 +145.5895938551805 + 21 +-50.79750000000057 + 31 +0.0 + 0 +LINE + 5 +27F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-43.78750000000063 + 30 +0.0 + 11 +145.5895938551805 + 21 +-43.78750000000063 + 31 +0.0 + 0 +LINE + 5 +280 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-51.12250000000064 + 30 +0.0 + 11 +138.1491059033505 + 21 +-51.12250000000064 + 31 +0.0 + 0 +LINE + 5 +281 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-43.46250000000053 + 30 +0.0 + 11 +138.1491059033505 + 21 +-43.46250000000053 + 31 +0.0 + 0 +LINE + 5 +282 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-42.19750000000072 + 30 +0.0 + 11 +145.5895938551805 + 21 +-42.19750000000072 + 31 +0.0 + 0 +LINE + 5 +283 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-35.18750000000077 + 30 +0.0 + 11 +145.5895938551805 + 21 +-35.18750000000077 + 31 +0.0 + 0 +LINE + 5 +284 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-42.52250000000078 + 30 +0.0 + 11 +138.1491059033505 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +285 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-34.86250000000071 + 30 +0.0 + 11 +138.1491059033505 + 21 +-34.86250000000071 + 31 +0.0 + 0 +LINE + 5 +286 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-33.59750000000087 + 30 +0.0 + 11 +145.5895938551805 + 21 +-33.59750000000087 + 31 +0.0 + 0 +LINE + 5 +287 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-26.58750000000092 + 30 +0.0 + 11 +145.5895938551805 + 21 +-26.58750000000092 + 31 +0.0 + 0 +LINE + 5 +288 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-33.92250000000094 + 30 +0.0 + 11 +138.1491059033505 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +289 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-26.26250000000085 + 30 +0.0 + 11 +138.1491059033505 + 21 +-26.26250000000085 + 31 +0.0 + 0 +LINE + 5 +28A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-24.99750000000102 + 30 +0.0 + 11 +145.5895938551805 + 21 +-24.99750000000102 + 31 +0.0 + 0 +LINE + 5 +28B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-17.98750000000107 + 30 +0.0 + 11 +145.5895938551805 + 21 +-17.98750000000107 + 31 +0.0 + 0 +LINE + 5 +28C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-25.32250000000109 + 30 +0.0 + 11 +138.1491059033505 + 21 +-25.32250000000109 + 31 +0.0 + 0 +LINE + 5 +28D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-17.66250000000099 + 30 +0.0 + 11 +138.1491059033505 + 21 +-17.66250000000099 + 31 +0.0 + 0 +LINE + 5 +28E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-16.39750000000116 + 30 +0.0 + 11 +145.5895938551805 + 21 +-16.39750000000116 + 31 +0.0 + 0 +LINE + 5 +28F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-9.387500000001216 + 30 +0.0 + 11 +145.5895938551805 + 21 +-9.387500000001214 + 31 +0.0 + 0 +LINE + 5 +290 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-16.72250000000124 + 30 +0.0 + 11 +138.1491059033505 + 21 +-16.72250000000124 + 31 +0.0 + 0 +LINE + 5 +291 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-9.06250000000114 + 30 +0.0 + 11 +138.1491059033505 + 21 +-9.06250000000114 + 31 +0.0 + 0 +LINE + 5 +292 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-7.79750000000131 + 30 +0.0 + 11 +145.5895938551805 + 21 +-7.797500000001309 + 31 +0.0 + 0 +LINE + 5 +293 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +-0.7875000000013629 + 30 +0.0 + 11 +145.5895938551805 + 21 +-0.7875000000013621 + 31 +0.0 + 0 +LINE + 5 +294 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-8.122500000001384 + 30 +0.0 + 11 +138.1491059033505 + 21 +-8.122500000001384 + 31 +0.0 + 0 +LINE + 5 +295 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +-0.4625000000012879 + 30 +0.0 + 11 +138.1491059033505 + 21 +-0.4625000000012874 + 31 +0.0 + 0 +LINE + 5 +296 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +0.8024999999985408 + 30 +0.0 + 11 +145.5895938551805 + 21 +0.8024999999985416 + 31 +0.0 + 0 +LINE + 5 +297 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +152.5494465894126 + 20 +7.812499999998488 + 30 +0.0 + 11 +145.5895938551805 + 21 +7.812499999998489 + 31 +0.0 + 0 +LINE + 5 +298 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +0.4774999999984683 + 30 +0.0 + 11 +138.1491059033505 + 21 +0.4774999999984688 + 31 +0.0 + 0 +LINE + 5 +299 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +142.0746923809761 + 20 +8.137499999998564 + 30 +0.0 + 11 +138.1491059033505 + 21 +8.137499999998564 + 31 +0.0 + 0 +LINE + 5 +29A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-93.79749999999983 + 30 +0.0 + 11 +130.5145938551805 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +29B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-86.7874999999999 + 30 +0.0 + 11 +130.5145938551805 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +29C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-94.1224999999999 + 30 +0.0 + 11 +123.0741059033506 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +29D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-86.4624999999998 + 30 +0.0 + 11 +123.0741059033506 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +29E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-85.19749999999998 + 30 +0.0 + 11 +130.5145938551805 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +29F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-78.18750000000003 + 30 +0.0 + 11 +130.5145938551805 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-85.52250000000005 + 30 +0.0 + 11 +123.0741059033506 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-77.86249999999995 + 30 +0.0 + 11 +123.0741059033506 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-76.59750000000012 + 30 +0.0 + 11 +130.5145938551805 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-69.58750000000016 + 30 +0.0 + 11 +130.5145938551805 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-76.9225000000002 + 30 +0.0 + 11 +123.0741059033506 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-69.2625000000001 + 30 +0.0 + 11 +123.0741059033506 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-67.99750000000027 + 30 +0.0 + 11 +130.5145938551805 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-60.98750000000032 + 30 +0.0 + 11 +130.5145938551805 + 21 +-60.98750000000032 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-68.32250000000035 + 30 +0.0 + 11 +123.0741059033506 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-60.66250000000026 + 30 +0.0 + 11 +123.0741059033506 + 21 +-60.66250000000026 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-59.39750000000041 + 30 +0.0 + 11 +130.5145938551805 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-52.38750000000046 + 30 +0.0 + 11 +130.5145938551805 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-59.72250000000049 + 30 +0.0 + 11 +123.0741059033506 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-52.06250000000039 + 30 +0.0 + 11 +123.0741059033506 + 21 +-52.06250000000039 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-50.79750000000056 + 30 +0.0 + 11 +130.5145938551805 + 21 +-50.79750000000056 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-43.78750000000063 + 30 +0.0 + 11 +130.5145938551805 + 21 +-43.78750000000063 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-51.12250000000064 + 30 +0.0 + 11 +123.0741059033506 + 21 +-51.12250000000064 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-43.46250000000053 + 30 +0.0 + 11 +123.0741059033506 + 21 +-43.46250000000053 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-42.19750000000072 + 30 +0.0 + 11 +130.5145938551805 + 21 +-42.19750000000072 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-35.18750000000077 + 30 +0.0 + 11 +130.5145938551805 + 21 +-35.18750000000077 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-42.52250000000078 + 30 +0.0 + 11 +123.0741059033506 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-34.86250000000071 + 30 +0.0 + 11 +123.0741059033506 + 21 +-34.86250000000071 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-33.59750000000086 + 30 +0.0 + 11 +130.5145938551805 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-26.58750000000092 + 30 +0.0 + 11 +130.5145938551805 + 21 +-26.58750000000092 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-33.92250000000094 + 30 +0.0 + 11 +123.0741059033506 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-26.26250000000084 + 30 +0.0 + 11 +123.0741059033506 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-24.99750000000102 + 30 +0.0 + 11 +130.5145938551805 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-17.98750000000107 + 30 +0.0 + 11 +130.5145938551805 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-25.32250000000109 + 30 +0.0 + 11 +123.0741059033506 + 21 +-25.32250000000109 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-17.66250000000099 + 30 +0.0 + 11 +123.0741059033506 + 21 +-17.66250000000099 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-16.39750000000116 + 30 +0.0 + 11 +130.5145938551805 + 21 +-16.39750000000116 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-9.387500000001213 + 30 +0.0 + 11 +130.5145938551805 + 21 +-9.387500000001213 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-16.72250000000123 + 30 +0.0 + 11 +123.0741059033506 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-9.062500000001139 + 30 +0.0 + 11 +123.0741059033506 + 21 +-9.062500000001137 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-7.797500000001309 + 30 +0.0 + 11 +130.5145938551805 + 21 +-7.797500000001308 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +-0.7875000000013611 + 30 +0.0 + 11 +130.5145938551805 + 21 +-0.7875000000013602 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-8.122500000001383 + 30 +0.0 + 11 +123.0741059033506 + 21 +-8.12250000000138 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +-0.462500000001286 + 30 +0.0 + 11 +123.0741059033506 + 21 +-0.4625000000012856 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +0.8024999999985426 + 30 +0.0 + 11 +130.5145938551805 + 21 +0.8024999999985435 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +137.4744465894126 + 20 +7.81249999999849 + 30 +0.0 + 11 +130.5145938551805 + 21 +7.812499999998491 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +0.4774999999984701 + 30 +0.0 + 11 +123.0741059033506 + 21 +0.4774999999984706 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +126.9996923809761 + 20 +8.137499999998566 + 30 +0.0 + 11 +123.0741059033506 + 21 +8.137499999998568 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-93.79749999999983 + 30 +0.0 + 11 +115.4395938551805 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-86.7874999999999 + 30 +0.0 + 11 +115.4395938551805 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-94.1224999999999 + 30 +0.0 + 11 +107.9991059033506 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-86.4624999999998 + 30 +0.0 + 11 +107.9991059033506 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-85.19749999999998 + 30 +0.0 + 11 +115.4395938551805 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-78.18750000000003 + 30 +0.0 + 11 +115.4395938551805 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-85.52250000000005 + 30 +0.0 + 11 +107.9991059033506 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-77.86249999999995 + 30 +0.0 + 11 +107.9991059033506 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-76.59750000000012 + 30 +0.0 + 11 +115.4395938551805 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-69.58750000000016 + 30 +0.0 + 11 +115.4395938551805 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-76.9225000000002 + 30 +0.0 + 11 +107.9991059033506 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-69.2625000000001 + 30 +0.0 + 11 +107.9991059033506 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-67.99750000000027 + 30 +0.0 + 11 +115.4395938551805 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-60.98750000000032 + 30 +0.0 + 11 +115.4395938551805 + 21 +-60.98750000000032 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-68.32250000000035 + 30 +0.0 + 11 +107.9991059033506 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-60.66250000000026 + 30 +0.0 + 11 +107.9991059033506 + 21 +-60.66250000000026 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-59.39750000000041 + 30 +0.0 + 11 +115.4395938551805 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-52.38750000000046 + 30 +0.0 + 11 +115.4395938551805 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-59.72250000000049 + 30 +0.0 + 11 +107.9991059033506 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-52.06250000000039 + 30 +0.0 + 11 +107.9991059033506 + 21 +-52.06250000000039 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-50.79750000000056 + 30 +0.0 + 11 +115.4395938551805 + 21 +-50.79750000000056 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-43.78750000000063 + 30 +0.0 + 11 +115.4395938551805 + 21 +-43.78750000000063 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-51.12250000000064 + 30 +0.0 + 11 +107.9991059033506 + 21 +-51.12250000000064 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-43.46250000000053 + 30 +0.0 + 11 +107.9991059033506 + 21 +-43.46250000000053 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-42.19750000000072 + 30 +0.0 + 11 +115.4395938551805 + 21 +-42.19750000000072 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-35.18750000000077 + 30 +0.0 + 11 +115.4395938551805 + 21 +-35.18750000000077 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-42.52250000000078 + 30 +0.0 + 11 +107.9991059033506 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-34.86250000000071 + 30 +0.0 + 11 +107.9991059033506 + 21 +-34.86250000000071 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-33.59750000000086 + 30 +0.0 + 11 +115.4395938551805 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-26.58750000000092 + 30 +0.0 + 11 +115.4395938551805 + 21 +-26.58750000000092 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-33.92250000000094 + 30 +0.0 + 11 +107.9991059033506 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-26.26250000000084 + 30 +0.0 + 11 +107.9991059033506 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-24.99750000000101 + 30 +0.0 + 11 +115.4395938551805 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-17.98750000000106 + 30 +0.0 + 11 +115.4395938551805 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-25.32250000000109 + 30 +0.0 + 11 +107.9991059033506 + 21 +-25.32250000000109 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-17.66250000000099 + 30 +0.0 + 11 +107.9991059033506 + 21 +-17.66250000000099 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-16.39750000000116 + 30 +0.0 + 11 +115.4395938551805 + 21 +-16.39750000000116 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-9.38750000000121 + 30 +0.0 + 11 +115.4395938551805 + 21 +-9.38750000000121 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-16.72250000000123 + 30 +0.0 + 11 +107.9991059033506 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-9.062500000001137 + 30 +0.0 + 11 +107.9991059033506 + 21 +-9.062500000001135 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-7.797500000001307 + 30 +0.0 + 11 +115.4395938551805 + 21 +-7.797500000001306 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +-0.7875000000013592 + 30 +0.0 + 11 +115.4395938551805 + 21 +-0.7875000000013583 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-8.12250000000138 + 30 +0.0 + 11 +107.9991059033506 + 21 +-8.122500000001379 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +-0.4625000000012842 + 30 +0.0 + 11 +107.9991059033506 + 21 +-0.4625000000012837 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +0.8024999999985445 + 30 +0.0 + 11 +115.4395938551805 + 21 +0.8024999999985454 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +122.3994465894126 + 20 +7.812499999998492 + 30 +0.0 + 11 +115.4395938551805 + 21 +7.812499999998493 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +0.477499999998472 + 30 +0.0 + 11 +107.9991059033506 + 21 +0.4774999999984725 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +111.9246923809761 + 20 +8.137499999998568 + 30 +0.0 + 11 +107.9991059033506 + 21 +8.13749999999857 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-93.79749999999983 + 30 +0.0 + 11 +100.3645938551805 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-86.7874999999999 + 30 +0.0 + 11 +100.3645938551805 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-94.1224999999999 + 30 +0.0 + 11 +92.9241059033506 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-86.4624999999998 + 30 +0.0 + 11 +92.9241059033506 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-85.19749999999998 + 30 +0.0 + 11 +100.3645938551805 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-78.18750000000003 + 30 +0.0 + 11 +100.3645938551805 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +300 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-85.52250000000005 + 30 +0.0 + 11 +92.9241059033506 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +301 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-77.86249999999995 + 30 +0.0 + 11 +92.9241059033506 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +302 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-76.59750000000012 + 30 +0.0 + 11 +100.3645938551805 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +303 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-69.58750000000016 + 30 +0.0 + 11 +100.3645938551805 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +304 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-76.9225000000002 + 30 +0.0 + 11 +92.9241059033506 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +305 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-69.2625000000001 + 30 +0.0 + 11 +92.9241059033506 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +306 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-67.99750000000027 + 30 +0.0 + 11 +100.3645938551805 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +307 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-60.98750000000032 + 30 +0.0 + 11 +100.3645938551805 + 21 +-60.98750000000032 + 31 +0.0 + 0 +LINE + 5 +308 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-68.32250000000035 + 30 +0.0 + 11 +92.9241059033506 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +309 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-60.66250000000026 + 30 +0.0 + 11 +92.9241059033506 + 21 +-60.66250000000026 + 31 +0.0 + 0 +LINE + 5 +30A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-59.39750000000041 + 30 +0.0 + 11 +100.3645938551805 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +30B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-52.38750000000046 + 30 +0.0 + 11 +100.3645938551805 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +30C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097614 + 20 +-59.72250000000049 + 30 +0.0 + 11 +92.9241059033506 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +30D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-52.06250000000039 + 30 +0.0 + 11 +92.92410590335061 + 21 +-52.06250000000039 + 31 +0.0 + 0 +LINE + 5 +30E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-50.79750000000056 + 30 +0.0 + 11 +100.3645938551805 + 21 +-50.79750000000056 + 31 +0.0 + 0 +LINE + 5 +30F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-43.78750000000063 + 30 +0.0 + 11 +100.3645938551805 + 21 +-43.78750000000063 + 31 +0.0 + 0 +LINE + 5 +310 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-51.12250000000064 + 30 +0.0 + 11 +92.92410590335061 + 21 +-51.12250000000064 + 31 +0.0 + 0 +LINE + 5 +311 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-43.46250000000053 + 30 +0.0 + 11 +92.92410590335061 + 21 +-43.46250000000053 + 31 +0.0 + 0 +LINE + 5 +312 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-42.19750000000072 + 30 +0.0 + 11 +100.3645938551805 + 21 +-42.19750000000072 + 31 +0.0 + 0 +LINE + 5 +313 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-35.18750000000077 + 30 +0.0 + 11 +100.3645938551805 + 21 +-35.18750000000077 + 31 +0.0 + 0 +LINE + 5 +314 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-42.52250000000078 + 30 +0.0 + 11 +92.92410590335061 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +315 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-34.86250000000071 + 30 +0.0 + 11 +92.92410590335061 + 21 +-34.86250000000071 + 31 +0.0 + 0 +LINE + 5 +316 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-33.59750000000086 + 30 +0.0 + 11 +100.3645938551805 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +317 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-26.58750000000092 + 30 +0.0 + 11 +100.3645938551805 + 21 +-26.58750000000091 + 31 +0.0 + 0 +LINE + 5 +318 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-33.92250000000094 + 30 +0.0 + 11 +92.92410590335061 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +319 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-26.26250000000084 + 30 +0.0 + 11 +92.92410590335061 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +31A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-24.99750000000101 + 30 +0.0 + 11 +100.3645938551805 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +31B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-17.98750000000106 + 30 +0.0 + 11 +100.3645938551805 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +31C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-25.32250000000108 + 30 +0.0 + 11 +92.92410590335061 + 21 +-25.32250000000108 + 31 +0.0 + 0 +LINE + 5 +31D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-17.66250000000098 + 30 +0.0 + 11 +92.92410590335061 + 21 +-17.66250000000098 + 31 +0.0 + 0 +LINE + 5 +31E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-16.39750000000116 + 30 +0.0 + 11 +100.3645938551805 + 21 +-16.39750000000115 + 31 +0.0 + 0 +LINE + 5 +31F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-9.387500000001209 + 30 +0.0 + 11 +100.3645938551805 + 21 +-9.387500000001209 + 31 +0.0 + 0 +LINE + 5 +320 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-16.72250000000123 + 30 +0.0 + 11 +92.92410590335061 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +321 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-9.062500000001135 + 30 +0.0 + 11 +92.92410590335061 + 21 +-9.062500000001133 + 31 +0.0 + 0 +LINE + 5 +322 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-7.797500000001305 + 30 +0.0 + 11 +100.3645938551805 + 21 +-7.797500000001304 + 31 +0.0 + 0 +LINE + 5 +323 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +-0.7875000000013573 + 30 +0.0 + 11 +100.3645938551805 + 21 +-0.7875000000013566 + 31 +0.0 + 0 +LINE + 5 +324 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-8.122500000001379 + 30 +0.0 + 11 +92.92410590335061 + 21 +-8.122500000001377 + 31 +0.0 + 0 +LINE + 5 +325 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +-0.4625000000012824 + 30 +0.0 + 11 +92.92410590335061 + 21 +-0.4625000000012819 + 31 +0.0 + 0 +LINE + 5 +326 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +0.8024999999985464 + 30 +0.0 + 11 +100.3645938551805 + 21 +0.8024999999985472 + 31 +0.0 + 0 +LINE + 5 +327 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +107.3244465894126 + 20 +7.812499999998494 + 30 +0.0 + 11 +100.3645938551805 + 21 +7.812499999998495 + 31 +0.0 + 0 +LINE + 5 +328 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +0.4774999999984738 + 30 +0.0 + 11 +92.92410590335061 + 21 +0.4774999999984743 + 31 +0.0 + 0 +LINE + 5 +329 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +96.84969238097615 + 20 +8.13749999999857 + 30 +0.0 + 11 +92.92410590335061 + 21 +8.137499999998571 + 31 +0.0 + 0 +LINE + 5 +32A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-93.79749999999983 + 30 +0.0 + 11 +85.28959385518054 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +32B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-86.7874999999999 + 30 +0.0 + 11 +85.28959385518054 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +32C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-94.1224999999999 + 30 +0.0 + 11 +77.8491059033506 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +32D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-86.4624999999998 + 30 +0.0 + 11 +77.8491059033506 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +32E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-85.19749999999998 + 30 +0.0 + 11 +85.28959385518054 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +32F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-78.18750000000003 + 30 +0.0 + 11 +85.28959385518054 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +330 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-85.52250000000005 + 30 +0.0 + 11 +77.8491059033506 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +331 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-77.86249999999995 + 30 +0.0 + 11 +77.8491059033506 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +332 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-76.59750000000012 + 30 +0.0 + 11 +85.28959385518054 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +333 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-69.58750000000016 + 30 +0.0 + 11 +85.28959385518054 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +334 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-76.9225000000002 + 30 +0.0 + 11 +77.8491059033506 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +335 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-69.2625000000001 + 30 +0.0 + 11 +77.8491059033506 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +336 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-67.99750000000027 + 30 +0.0 + 11 +85.28959385518054 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +337 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-60.98750000000032 + 30 +0.0 + 11 +85.28959385518054 + 21 +-60.98750000000031 + 31 +0.0 + 0 +LINE + 5 +338 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-68.32250000000035 + 30 +0.0 + 11 +77.8491059033506 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +339 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-60.66250000000025 + 30 +0.0 + 11 +77.8491059033506 + 21 +-60.66250000000025 + 31 +0.0 + 0 +LINE + 5 +33A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941261 + 20 +-59.39750000000041 + 30 +0.0 + 11 +85.28959385518054 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +33B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-52.38750000000046 + 30 +0.0 + 11 +85.28959385518056 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +33C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097612 + 20 +-59.72250000000049 + 30 +0.0 + 11 +77.8491059033506 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +33D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-52.06250000000038 + 30 +0.0 + 11 +77.84910590335062 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +33E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-50.79750000000056 + 30 +0.0 + 11 +85.28959385518056 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +33F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-43.78750000000063 + 30 +0.0 + 11 +85.28959385518056 + 21 +-43.78750000000062 + 31 +0.0 + 0 +LINE + 5 +340 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-51.12250000000063 + 30 +0.0 + 11 +77.84910590335062 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +341 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-43.46250000000052 + 30 +0.0 + 11 +77.84910590335062 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +342 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-42.19750000000072 + 30 +0.0 + 11 +85.28959385518056 + 21 +-42.19750000000071 + 31 +0.0 + 0 +LINE + 5 +343 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-35.18750000000077 + 30 +0.0 + 11 +85.28959385518056 + 21 +-35.18750000000076 + 31 +0.0 + 0 +LINE + 5 +344 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-42.52250000000078 + 30 +0.0 + 11 +77.84910590335062 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +345 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-34.8625000000007 + 30 +0.0 + 11 +77.84910590335062 + 21 +-34.8625000000007 + 31 +0.0 + 0 +LINE + 5 +346 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-33.59750000000086 + 30 +0.0 + 11 +85.28959385518056 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +347 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-26.58750000000091 + 30 +0.0 + 11 +85.28959385518056 + 21 +-26.58750000000091 + 31 +0.0 + 0 +LINE + 5 +348 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-33.92250000000094 + 30 +0.0 + 11 +77.84910590335062 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +349 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-26.26250000000084 + 30 +0.0 + 11 +77.84910590335062 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +34A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-24.99750000000101 + 30 +0.0 + 11 +85.28959385518056 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +34B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-17.98750000000106 + 30 +0.0 + 11 +85.28959385518056 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +34C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-25.32250000000108 + 30 +0.0 + 11 +77.84910590335062 + 21 +-25.32250000000108 + 31 +0.0 + 0 +LINE + 5 +34D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-17.66250000000098 + 30 +0.0 + 11 +77.84910590335062 + 21 +-17.66250000000098 + 31 +0.0 + 0 +LINE + 5 +34E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-16.39750000000115 + 30 +0.0 + 11 +85.28959385518056 + 21 +-16.39750000000115 + 31 +0.0 + 0 +LINE + 5 +34F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-9.387500000001207 + 30 +0.0 + 11 +85.28959385518056 + 21 +-9.387500000001207 + 31 +0.0 + 0 +LINE + 5 +350 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-16.72250000000123 + 30 +0.0 + 11 +77.84910590335062 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +351 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-9.062500000001133 + 30 +0.0 + 11 +77.84910590335062 + 21 +-9.062500000001132 + 31 +0.0 + 0 +LINE + 5 +352 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-7.797500000001303 + 30 +0.0 + 11 +85.28959385518056 + 21 +-7.797500000001302 + 31 +0.0 + 0 +LINE + 5 +353 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +-0.7875000000013556 + 30 +0.0 + 11 +85.28959385518056 + 21 +-0.7875000000013547 + 31 +0.0 + 0 +LINE + 5 +354 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-8.122500000001377 + 30 +0.0 + 11 +77.84910590335062 + 21 +-8.122500000001375 + 31 +0.0 + 0 +LINE + 5 +355 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +-0.4625000000012805 + 30 +0.0 + 11 +77.84910590335062 + 21 +-0.4625000000012801 + 31 +0.0 + 0 +LINE + 5 +356 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +0.8024999999985482 + 30 +0.0 + 11 +85.28959385518056 + 21 +0.802499999998549 + 31 +0.0 + 0 +LINE + 5 +357 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +92.24944658941263 + 20 +7.812499999998495 + 30 +0.0 + 11 +85.28959385518056 + 21 +7.812499999998496 + 31 +0.0 + 0 +LINE + 5 +358 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +0.4774999999984757 + 30 +0.0 + 11 +77.84910590335062 + 21 +0.4774999999984761 + 31 +0.0 + 0 +LINE + 5 +359 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +81.77469238097613 + 20 +8.137499999998571 + 30 +0.0 + 11 +77.84910590335062 + 21 +8.137499999998573 + 31 +0.0 + 0 +LINE + 5 +35A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-93.79749999999983 + 30 +0.0 + 11 +70.21459385518055 + 21 +-93.79749999999983 + 31 +0.0 + 0 +LINE + 5 +35B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-86.7874999999999 + 30 +0.0 + 11 +70.21459385518055 + 21 +-86.7874999999999 + 31 +0.0 + 0 +LINE + 5 +35C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-94.1224999999999 + 30 +0.0 + 11 +62.77410590335062 + 21 +-94.1224999999999 + 31 +0.0 + 0 +LINE + 5 +35D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-86.4624999999998 + 30 +0.0 + 11 +62.77410590335062 + 21 +-86.4624999999998 + 31 +0.0 + 0 +LINE + 5 +35E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-85.19749999999998 + 30 +0.0 + 11 +70.21459385518055 + 21 +-85.19749999999998 + 31 +0.0 + 0 +LINE + 5 +35F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-78.18750000000003 + 30 +0.0 + 11 +70.21459385518055 + 21 +-78.18750000000003 + 31 +0.0 + 0 +LINE + 5 +360 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-85.52250000000005 + 30 +0.0 + 11 +62.77410590335062 + 21 +-85.52250000000005 + 31 +0.0 + 0 +LINE + 5 +361 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-77.86249999999995 + 30 +0.0 + 11 +62.77410590335062 + 21 +-77.86249999999995 + 31 +0.0 + 0 +LINE + 5 +362 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-76.59750000000012 + 30 +0.0 + 11 +70.21459385518055 + 21 +-76.59750000000012 + 31 +0.0 + 0 +LINE + 5 +363 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-69.58750000000016 + 30 +0.0 + 11 +70.21459385518055 + 21 +-69.58750000000016 + 31 +0.0 + 0 +LINE + 5 +364 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-76.9225000000002 + 30 +0.0 + 11 +62.77410590335062 + 21 +-76.9225000000002 + 31 +0.0 + 0 +LINE + 5 +365 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-69.2625000000001 + 30 +0.0 + 11 +62.77410590335062 + 21 +-69.2625000000001 + 31 +0.0 + 0 +LINE + 5 +366 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-67.99750000000027 + 30 +0.0 + 11 +70.21459385518055 + 21 +-67.99750000000027 + 31 +0.0 + 0 +LINE + 5 +367 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-60.98750000000031 + 30 +0.0 + 11 +70.21459385518055 + 21 +-60.98750000000031 + 31 +0.0 + 0 +LINE + 5 +368 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-68.32250000000035 + 30 +0.0 + 11 +62.77410590335062 + 21 +-68.32250000000035 + 31 +0.0 + 0 +LINE + 5 +369 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-60.66250000000025 + 30 +0.0 + 11 +62.77410590335062 + 21 +-60.66250000000025 + 31 +0.0 + 0 +LINE + 5 +36A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941263 + 20 +-59.39750000000041 + 30 +0.0 + 11 +70.21459385518055 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +36B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-52.38750000000046 + 30 +0.0 + 11 +70.21459385518057 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +36C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097615 + 20 +-59.72250000000049 + 30 +0.0 + 11 +62.77410590335062 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +36D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-52.06250000000038 + 30 +0.0 + 11 +62.77410590335062 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +36E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-50.79750000000055 + 30 +0.0 + 11 +70.21459385518057 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +36F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-43.78750000000062 + 30 +0.0 + 11 +70.21459385518057 + 21 +-43.78750000000062 + 31 +0.0 + 0 +LINE + 5 +370 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-51.12250000000063 + 30 +0.0 + 11 +62.77410590335062 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +371 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-43.46250000000052 + 30 +0.0 + 11 +62.77410590335062 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +372 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-42.19750000000071 + 30 +0.0 + 11 +70.21459385518057 + 21 +-42.19750000000071 + 31 +0.0 + 0 +LINE + 5 +373 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-35.18750000000076 + 30 +0.0 + 11 +70.21459385518057 + 21 +-35.18750000000076 + 31 +0.0 + 0 +LINE + 5 +374 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-42.52250000000078 + 30 +0.0 + 11 +62.77410590335062 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +375 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-34.8625000000007 + 30 +0.0 + 11 +62.77410590335062 + 21 +-34.8625000000007 + 31 +0.0 + 0 +LINE + 5 +376 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-33.59750000000086 + 30 +0.0 + 11 +70.21459385518057 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +377 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-26.58750000000091 + 30 +0.0 + 11 +70.21459385518057 + 21 +-26.58750000000091 + 31 +0.0 + 0 +LINE + 5 +378 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-33.92250000000094 + 30 +0.0 + 11 +62.77410590335062 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +379 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-26.26250000000084 + 30 +0.0 + 11 +62.77410590335063 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +37A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-24.99750000000101 + 30 +0.0 + 11 +70.21459385518057 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +37B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-17.98750000000106 + 30 +0.0 + 11 +70.21459385518057 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +37C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-25.32250000000108 + 30 +0.0 + 11 +62.77410590335063 + 21 +-25.32250000000108 + 31 +0.0 + 0 +LINE + 5 +37D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-17.66250000000098 + 30 +0.0 + 11 +62.77410590335063 + 21 +-17.66250000000098 + 31 +0.0 + 0 +LINE + 5 +37E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-16.39750000000115 + 30 +0.0 + 11 +70.21459385518057 + 21 +-16.39750000000115 + 31 +0.0 + 0 +LINE + 5 +37F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-9.387500000001205 + 30 +0.0 + 11 +70.21459385518057 + 21 +-9.387500000001205 + 31 +0.0 + 0 +LINE + 5 +380 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-16.72250000000123 + 30 +0.0 + 11 +62.77410590335063 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +381 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-9.062500000001132 + 30 +0.0 + 11 +62.77410590335063 + 21 +-9.06250000000113 + 31 +0.0 + 0 +LINE + 5 +382 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-7.797500000001302 + 30 +0.0 + 11 +70.21459385518057 + 21 +-7.797500000001301 + 31 +0.0 + 0 +LINE + 5 +383 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +-0.7875000000013537 + 30 +0.0 + 11 +70.21459385518057 + 21 +-0.7875000000013528 + 31 +0.0 + 0 +LINE + 5 +384 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-8.122500000001375 + 30 +0.0 + 11 +62.77410590335063 + 21 +-8.122500000001374 + 31 +0.0 + 0 +LINE + 5 +385 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +-0.4625000000012787 + 30 +0.0 + 11 +62.77410590335063 + 21 +-0.4625000000012782 + 31 +0.0 + 0 +LINE + 5 +386 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +0.80249999999855 + 30 +0.0 + 11 +70.21459385518057 + 21 +0.8024999999985509 + 31 +0.0 + 0 +LINE + 5 +387 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.17444658941264 + 20 +7.812499999998497 + 30 +0.0 + 11 +70.21459385518057 + 21 +7.812499999998498 + 31 +0.0 + 0 +LINE + 5 +388 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +0.4774999999984775 + 30 +0.0 + 11 +62.77410590335063 + 21 +0.477499999998478 + 31 +0.0 + 0 +LINE + 5 +389 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +66.69969238097616 + 20 +8.137499999998573 + 30 +0.0 + 11 +62.77410590335063 + 21 +8.137499999998575 + 31 +0.0 + 0 +LINE + 5 +38A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-93.79749999999983 + 30 +0.0 + 11 +55.13959385518056 + 21 +-93.79749999999981 + 31 +0.0 + 0 +LINE + 5 +38B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-86.7874999999999 + 30 +0.0 + 11 +55.13959385518057 + 21 +-86.78749999999988 + 31 +0.0 + 0 +LINE + 5 +38C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-94.12249999999989 + 30 +0.0 + 11 +47.69910590335063 + 21 +-94.12249999999989 + 31 +0.0 + 0 +LINE + 5 +38D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-86.46249999999979 + 30 +0.0 + 11 +47.69910590335063 + 21 +-86.46249999999979 + 31 +0.0 + 0 +LINE + 5 +38E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-85.19749999999998 + 30 +0.0 + 11 +55.13959385518057 + 21 +-85.19749999999996 + 31 +0.0 + 0 +LINE + 5 +38F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-78.18750000000003 + 30 +0.0 + 11 +55.13959385518057 + 21 +-78.18750000000001 + 31 +0.0 + 0 +LINE + 5 +390 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-85.52250000000004 + 30 +0.0 + 11 +47.69910590335063 + 21 +-85.52250000000004 + 31 +0.0 + 0 +LINE + 5 +391 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-77.86249999999994 + 30 +0.0 + 11 +47.69910590335063 + 21 +-77.86249999999994 + 31 +0.0 + 0 +LINE + 5 +392 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-76.59750000000012 + 30 +0.0 + 11 +55.13959385518057 + 21 +-76.59750000000011 + 31 +0.0 + 0 +LINE + 5 +393 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-69.58750000000016 + 30 +0.0 + 11 +55.13959385518057 + 21 +-69.58750000000015 + 31 +0.0 + 0 +LINE + 5 +394 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-76.92250000000018 + 30 +0.0 + 11 +47.69910590335063 + 21 +-76.92250000000018 + 31 +0.0 + 0 +LINE + 5 +395 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-69.26250000000009 + 30 +0.0 + 11 +47.69910590335063 + 21 +-69.26250000000009 + 31 +0.0 + 0 +LINE + 5 +396 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-67.99750000000027 + 30 +0.0 + 11 +55.13959385518057 + 21 +-67.99750000000026 + 31 +0.0 + 0 +LINE + 5 +397 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-60.98750000000031 + 30 +0.0 + 11 +55.13959385518057 + 21 +-60.98750000000031 + 31 +0.0 + 0 +LINE + 5 +398 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-68.32250000000033 + 30 +0.0 + 11 +47.69910590335063 + 21 +-68.32250000000033 + 31 +0.0 + 0 +LINE + 5 +399 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-60.66250000000025 + 30 +0.0 + 11 +47.69910590335063 + 21 +-60.66250000000025 + 31 +0.0 + 0 +LINE + 5 +39A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-59.39750000000041 + 30 +0.0 + 11 +55.13959385518057 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +39B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-52.38750000000046 + 30 +0.0 + 11 +55.13959385518057 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +39C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-59.72250000000049 + 30 +0.0 + 11 +47.69910590335063 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +39D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-52.06250000000038 + 30 +0.0 + 11 +47.69910590335063 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +39E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-50.79750000000055 + 30 +0.0 + 11 +55.13959385518057 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +39F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-43.78750000000062 + 30 +0.0 + 11 +55.13959385518057 + 21 +-43.78750000000062 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-51.12250000000063 + 30 +0.0 + 11 +47.69910590335063 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-43.46250000000052 + 30 +0.0 + 11 +47.69910590335063 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-42.19750000000071 + 30 +0.0 + 11 +55.13959385518057 + 21 +-42.19750000000071 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-35.18750000000076 + 30 +0.0 + 11 +55.13959385518057 + 21 +-35.18750000000076 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-42.52250000000078 + 30 +0.0 + 11 +47.69910590335063 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-34.8625000000007 + 30 +0.0 + 11 +47.69910590335063 + 21 +-34.8625000000007 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941264 + 20 +-33.59750000000086 + 30 +0.0 + 11 +55.13959385518057 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-26.58750000000091 + 30 +0.0 + 11 +55.13959385518058 + 21 +-26.58750000000091 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097616 + 20 +-33.92250000000094 + 30 +0.0 + 11 +47.69910590335063 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-26.26250000000084 + 30 +0.0 + 11 +47.69910590335064 + 21 +-26.26250000000084 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-24.99750000000101 + 30 +0.0 + 11 +55.13959385518058 + 21 +-24.99750000000101 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-17.98750000000106 + 30 +0.0 + 11 +55.13959385518058 + 21 +-17.98750000000106 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-25.32250000000108 + 30 +0.0 + 11 +47.69910590335064 + 21 +-25.32250000000108 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-17.66250000000098 + 30 +0.0 + 11 +47.69910590335064 + 21 +-17.66250000000098 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-16.39750000000115 + 30 +0.0 + 11 +55.13959385518058 + 21 +-16.39750000000115 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-9.387500000001204 + 30 +0.0 + 11 +55.13959385518058 + 21 +-9.387500000001204 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-16.72250000000123 + 30 +0.0 + 11 +47.69910590335064 + 21 +-16.72250000000123 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-9.06250000000113 + 30 +0.0 + 11 +47.69910590335064 + 21 +-9.062500000001128 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-7.7975000000013 + 30 +0.0 + 11 +55.13959385518058 + 21 +-7.797500000001299 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +-0.7875000000013518 + 30 +0.0 + 11 +55.13959385518058 + 21 +-0.787500000001351 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-8.122500000001374 + 30 +0.0 + 11 +47.69910590335064 + 21 +-8.122500000001372 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +-0.4625000000012768 + 30 +0.0 + 11 +47.69910590335064 + 21 +-0.4625000000012763 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +0.8024999999985519 + 30 +0.0 + 11 +55.13959385518058 + 21 +0.8024999999985527 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.09944658941265 + 20 +7.812499999998499 + 30 +0.0 + 11 +55.13959385518058 + 21 +7.8124999999985 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +0.4774999999984794 + 30 +0.0 + 11 +47.69910590335064 + 21 +0.4774999999984799 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +51.62469238097617 + 20 +8.137499999998575 + 30 +0.0 + 11 +47.69910590335064 + 21 +8.137499999998576 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-93.79749999999981 + 30 +0.0 + 11 +40.06459385518057 + 21 +-93.79749999999981 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-86.78749999999988 + 30 +0.0 + 11 +40.06459385518058 + 21 +-86.78749999999988 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097617 + 20 +-94.12249999999989 + 30 +0.0 + 11 +32.62410590335064 + 21 +-94.12249999999989 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-86.46249999999979 + 30 +0.0 + 11 +32.62410590335065 + 21 +-86.46249999999979 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-85.19749999999996 + 30 +0.0 + 11 +40.06459385518058 + 21 +-85.19749999999996 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-78.18750000000001 + 30 +0.0 + 11 +40.06459385518058 + 21 +-78.18750000000001 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-85.52250000000004 + 30 +0.0 + 11 +32.62410590335065 + 21 +-85.52250000000004 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-77.86249999999994 + 30 +0.0 + 11 +32.62410590335065 + 21 +-77.86249999999994 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-76.59750000000011 + 30 +0.0 + 11 +40.06459385518058 + 21 +-76.59750000000011 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-69.58750000000015 + 30 +0.0 + 11 +40.06459385518058 + 21 +-69.58750000000015 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-76.92250000000018 + 30 +0.0 + 11 +32.62410590335065 + 21 +-76.92250000000018 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-69.26250000000009 + 30 +0.0 + 11 +32.62410590335065 + 21 +-69.26250000000009 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-67.99750000000026 + 30 +0.0 + 11 +40.06459385518058 + 21 +-67.99750000000026 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-60.98750000000031 + 30 +0.0 + 11 +40.06459385518058 + 21 +-60.98750000000031 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-68.32250000000033 + 30 +0.0 + 11 +32.62410590335065 + 21 +-68.32250000000033 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-60.66250000000025 + 30 +0.0 + 11 +32.62410590335065 + 21 +-60.66250000000025 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-59.39750000000041 + 30 +0.0 + 11 +40.06459385518058 + 21 +-59.39750000000041 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-52.38750000000046 + 30 +0.0 + 11 +40.06459385518058 + 21 +-52.38750000000046 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-59.72250000000049 + 30 +0.0 + 11 +32.62410590335065 + 21 +-59.72250000000049 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-52.06250000000038 + 30 +0.0 + 11 +32.62410590335065 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-50.79750000000055 + 30 +0.0 + 11 +40.06459385518058 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-43.78750000000062 + 30 +0.0 + 11 +40.06459385518058 + 21 +-43.78750000000062 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-51.12250000000063 + 30 +0.0 + 11 +32.62410590335065 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-43.46250000000052 + 30 +0.0 + 11 +32.62410590335065 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-42.19750000000071 + 30 +0.0 + 11 +40.06459385518058 + 21 +-42.19750000000071 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-35.18750000000076 + 30 +0.0 + 11 +40.06459385518058 + 21 +-35.18750000000076 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-42.52250000000078 + 30 +0.0 + 11 +32.62410590335065 + 21 +-42.52250000000078 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-34.8625000000007 + 30 +0.0 + 11 +32.62410590335065 + 21 +-34.8625000000007 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941265 + 20 +-33.59750000000086 + 30 +0.0 + 11 +40.06459385518058 + 21 +-33.59750000000086 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-26.58750000000091 + 30 +0.0 + 11 +40.06459385518058 + 21 +-26.5875000000009 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-33.92250000000094 + 30 +0.0 + 11 +32.62410590335065 + 21 +-33.92250000000094 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-26.26250000000083 + 30 +0.0 + 11 +32.62410590335065 + 21 +-26.26250000000083 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-24.99750000000101 + 30 +0.0 + 11 +40.06459385518058 + 21 +-24.997500000001 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-17.98750000000106 + 30 +0.0 + 11 +40.06459385518058 + 21 +-17.98750000000105 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-25.32250000000107 + 30 +0.0 + 11 +32.62410590335065 + 21 +-25.32250000000107 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-17.66250000000097 + 30 +0.0 + 11 +32.62410590335065 + 21 +-17.66250000000097 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-16.39750000000115 + 30 +0.0 + 11 +40.06459385518058 + 21 +-16.39750000000114 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-9.387500000001202 + 30 +0.0 + 11 +40.06459385518058 + 21 +-9.387500000001202 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-16.72250000000122 + 30 +0.0 + 11 +32.62410590335065 + 21 +-16.72250000000122 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-9.062500000001128 + 30 +0.0 + 11 +32.62410590335065 + 21 +-9.062500000001126 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-7.797500000001297 + 30 +0.0 + 11 +40.06459385518058 + 21 +-7.797500000001297 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +-0.78750000000135 + 30 +0.0 + 11 +40.06459385518058 + 21 +-0.7875000000013491 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-8.122500000001372 + 30 +0.0 + 11 +32.62410590335065 + 21 +-8.12250000000137 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +-0.462500000001275 + 30 +0.0 + 11 +32.62410590335065 + 21 +-0.4625000000012745 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +0.8024999999985537 + 30 +0.0 + 11 +40.06459385518058 + 21 +0.8024999999985546 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.02444658941266 + 20 +7.812499999998502 + 30 +0.0 + 11 +40.06459385518058 + 21 +7.812499999998502 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +0.4774999999984812 + 30 +0.0 + 11 +32.62410590335065 + 21 +0.4774999999984817 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.54969238097618 + 20 +8.137499999998576 + 30 +0.0 + 11 +32.62410590335065 + 21 +8.137499999998578 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-93.79749999999981 + 30 +0.0 + 11 +24.98959385518059 + 21 +-93.79749999999981 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-86.78749999999988 + 30 +0.0 + 11 +24.98959385518059 + 21 +-86.78749999999988 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-94.12249999999989 + 30 +0.0 + 11 +17.54910590335065 + 21 +-94.12249999999989 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-86.46249999999979 + 30 +0.0 + 11 +17.54910590335065 + 21 +-86.46249999999979 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-85.19749999999996 + 30 +0.0 + 11 +24.98959385518059 + 21 +-85.19749999999996 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-78.18750000000001 + 30 +0.0 + 11 +24.98959385518059 + 21 +-78.18750000000001 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-85.52250000000004 + 30 +0.0 + 11 +17.54910590335065 + 21 +-85.52250000000004 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-77.86249999999994 + 30 +0.0 + 11 +17.54910590335065 + 21 +-77.86249999999994 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-76.59750000000011 + 30 +0.0 + 11 +24.98959385518059 + 21 +-76.59750000000011 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-69.58750000000015 + 30 +0.0 + 11 +24.98959385518059 + 21 +-69.58750000000015 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-76.92250000000018 + 30 +0.0 + 11 +17.54910590335065 + 21 +-76.92250000000018 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-69.26250000000009 + 30 +0.0 + 11 +17.54910590335065 + 21 +-69.26250000000009 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-67.99750000000026 + 30 +0.0 + 11 +24.98959385518059 + 21 +-67.99750000000026 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-60.98750000000031 + 30 +0.0 + 11 +24.98959385518059 + 21 +-60.9875000000003 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-68.32250000000033 + 30 +0.0 + 11 +17.54910590335065 + 21 +-68.32250000000033 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-60.66250000000024 + 30 +0.0 + 11 +17.54910590335065 + 21 +-60.66250000000024 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-59.39750000000041 + 30 +0.0 + 11 +24.98959385518059 + 21 +-59.3975000000004 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-52.38750000000046 + 30 +0.0 + 11 +24.98959385518059 + 21 +-52.38750000000045 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-59.72250000000048 + 30 +0.0 + 11 +17.54910590335065 + 21 +-59.72250000000048 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-52.06250000000038 + 30 +0.0 + 11 +17.54910590335065 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-50.79750000000055 + 30 +0.0 + 11 +24.98959385518059 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941266 + 20 +-43.78750000000062 + 30 +0.0 + 11 +24.98959385518059 + 21 +-43.78750000000061 + 31 +0.0 + 0 +LINE + 5 +400 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097618 + 20 +-51.12250000000063 + 30 +0.0 + 11 +17.54910590335065 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +401 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-43.46250000000052 + 30 +0.0 + 11 +17.54910590335066 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +402 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-42.19750000000071 + 30 +0.0 + 11 +24.9895938551806 + 21 +-42.1975000000007 + 31 +0.0 + 0 +LINE + 5 +403 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-35.18750000000076 + 30 +0.0 + 11 +24.9895938551806 + 21 +-35.18750000000075 + 31 +0.0 + 0 +LINE + 5 +404 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-42.52250000000077 + 30 +0.0 + 11 +17.54910590335066 + 21 +-42.52250000000077 + 31 +0.0 + 0 +LINE + 5 +405 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-34.86250000000069 + 30 +0.0 + 11 +17.54910590335066 + 21 +-34.86250000000069 + 31 +0.0 + 0 +LINE + 5 +406 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-33.59750000000086 + 30 +0.0 + 11 +24.9895938551806 + 21 +-33.59750000000085 + 31 +0.0 + 0 +LINE + 5 +407 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-26.5875000000009 + 30 +0.0 + 11 +24.9895938551806 + 21 +-26.5875000000009 + 31 +0.0 + 0 +LINE + 5 +408 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-33.92250000000093 + 30 +0.0 + 11 +17.54910590335066 + 21 +-33.92250000000093 + 31 +0.0 + 0 +LINE + 5 +409 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-26.26250000000083 + 30 +0.0 + 11 +17.54910590335066 + 21 +-26.26250000000083 + 31 +0.0 + 0 +LINE + 5 +40A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-24.997500000001 + 30 +0.0 + 11 +24.9895938551806 + 21 +-24.997500000001 + 31 +0.0 + 0 +LINE + 5 +40B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-17.98750000000105 + 30 +0.0 + 11 +24.9895938551806 + 21 +-17.98750000000105 + 31 +0.0 + 0 +LINE + 5 +40C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-25.32250000000107 + 30 +0.0 + 11 +17.54910590335066 + 21 +-25.32250000000107 + 31 +0.0 + 0 +LINE + 5 +40D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-17.66250000000097 + 30 +0.0 + 11 +17.54910590335066 + 21 +-17.66250000000097 + 31 +0.0 + 0 +LINE + 5 +40E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-16.39750000000114 + 30 +0.0 + 11 +24.9895938551806 + 21 +-16.39750000000114 + 31 +0.0 + 0 +LINE + 5 +40F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-9.3875000000012 + 30 +0.0 + 11 +24.9895938551806 + 21 +-9.3875000000012 + 31 +0.0 + 0 +LINE + 5 +410 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-16.72250000000122 + 30 +0.0 + 11 +17.54910590335066 + 21 +-16.72250000000122 + 31 +0.0 + 0 +LINE + 5 +411 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-9.062500000001124 + 30 +0.0 + 11 +17.54910590335066 + 21 +-9.062500000001124 + 31 +0.0 + 0 +LINE + 5 +412 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-7.797500000001295 + 30 +0.0 + 11 +24.9895938551806 + 21 +-7.797500000001294 + 31 +0.0 + 0 +LINE + 5 +413 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +-0.7875000000013481 + 30 +0.0 + 11 +24.9895938551806 + 21 +-0.7875000000013473 + 31 +0.0 + 0 +LINE + 5 +414 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-8.122500000001368 + 30 +0.0 + 11 +17.54910590335066 + 21 +-8.122500000001368 + 31 +0.0 + 0 +LINE + 5 +415 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +-0.4625000000012731 + 30 +0.0 + 11 +17.54910590335066 + 21 +-0.4625000000012727 + 31 +0.0 + 0 +LINE + 5 +416 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +0.8024999999985556 + 30 +0.0 + 11 +24.9895938551806 + 21 +0.8024999999985564 + 31 +0.0 + 0 +LINE + 5 +417 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +31.94944658941267 + 20 +7.812499999998503 + 30 +0.0 + 11 +24.9895938551806 + 21 +7.812499999998504 + 31 +0.0 + 0 +LINE + 5 +418 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +0.4774999999984831 + 30 +0.0 + 11 +17.54910590335066 + 21 +0.4774999999984835 + 31 +0.0 + 0 +LINE + 5 +419 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.47469238097619 + 20 +8.13749999999858 + 30 +0.0 + 11 +17.54910590335066 + 21 +8.13749999999858 + 31 +0.0 + 0 +LINE + 5 +41A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-93.79749999999981 + 30 +0.0 + 11 +9.914593855180659 + 21 +-93.79749999999981 + 31 +0.0 + 0 +LINE + 5 +41B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-86.78749999999988 + 30 +0.0 + 11 +9.914593855180659 + 21 +-86.78749999999988 + 31 +0.0 + 0 +LINE + 5 +41C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.39969238097625 + 20 +-94.12249999999989 + 30 +0.0 + 11 +2.474105903350721 + 21 +-94.12249999999989 + 31 +0.0 + 0 +LINE + 5 +41D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976251 + 20 +-86.46249999999979 + 30 +0.0 + 11 +2.474105903350722 + 21 +-86.46249999999979 + 31 +0.0 + 0 +LINE + 5 +41E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-85.19749999999996 + 30 +0.0 + 11 +9.914593855180659 + 21 +-85.19749999999996 + 31 +0.0 + 0 +LINE + 5 +41F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-78.18750000000001 + 30 +0.0 + 11 +9.91459385518066 + 21 +-78.18750000000001 + 31 +0.0 + 0 +LINE + 5 +420 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976251 + 20 +-85.52250000000004 + 30 +0.0 + 11 +2.474105903350722 + 21 +-85.52250000000004 + 31 +0.0 + 0 +LINE + 5 +421 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976252 + 20 +-77.86249999999994 + 30 +0.0 + 11 +2.474105903350723 + 21 +-77.86249999999994 + 31 +0.0 + 0 +LINE + 5 +422 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-76.59750000000011 + 30 +0.0 + 11 +9.91459385518066 + 21 +-76.59750000000011 + 31 +0.0 + 0 +LINE + 5 +423 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-69.58750000000015 + 30 +0.0 + 11 +9.91459385518066 + 21 +-69.58750000000015 + 31 +0.0 + 0 +LINE + 5 +424 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976252 + 20 +-76.92250000000018 + 30 +0.0 + 11 +2.474105903350723 + 21 +-76.92250000000018 + 31 +0.0 + 0 +LINE + 5 +425 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976253 + 20 +-69.26250000000009 + 30 +0.0 + 11 +2.474105903350724 + 21 +-69.26250000000009 + 31 +0.0 + 0 +LINE + 5 +426 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-67.99750000000026 + 30 +0.0 + 11 +9.91459385518066 + 21 +-67.99750000000026 + 31 +0.0 + 0 +LINE + 5 +427 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-60.9875000000003 + 30 +0.0 + 11 +9.914593855180662 + 21 +-60.9875000000003 + 31 +0.0 + 0 +LINE + 5 +428 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976254 + 20 +-68.32250000000033 + 30 +0.0 + 11 +2.474105903350724 + 21 +-68.32250000000033 + 31 +0.0 + 0 +LINE + 5 +429 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976255 + 20 +-60.66250000000024 + 30 +0.0 + 11 +2.474105903350725 + 21 +-60.66250000000024 + 31 +0.0 + 0 +LINE + 5 +42A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-59.3975000000004 + 30 +0.0 + 11 +9.914593855180662 + 21 +-59.3975000000004 + 31 +0.0 + 0 +LINE + 5 +42B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-52.38750000000045 + 30 +0.0 + 11 +9.914593855180662 + 21 +-52.38750000000045 + 31 +0.0 + 0 +LINE + 5 +42C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976255 + 20 +-59.72250000000048 + 30 +0.0 + 11 +2.474105903350725 + 21 +-59.72250000000048 + 31 +0.0 + 0 +LINE + 5 +42D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976256 + 20 +-52.06250000000038 + 30 +0.0 + 11 +2.474105903350726 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +42E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-50.79750000000055 + 30 +0.0 + 11 +9.914593855180662 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +42F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941273 + 20 +-43.78750000000061 + 30 +0.0 + 11 +9.914593855180664 + 21 +-43.78750000000061 + 31 +0.0 + 0 +LINE + 5 +430 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976256 + 20 +-51.12250000000063 + 30 +0.0 + 11 +2.474105903350726 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +431 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976257 + 20 +-43.46250000000052 + 30 +0.0 + 11 +2.474105903350727 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +432 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-42.1975000000007 + 30 +0.0 + 11 +9.914593855180664 + 21 +-42.1975000000007 + 31 +0.0 + 0 +LINE + 5 +433 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-35.18750000000075 + 30 +0.0 + 11 +9.914593855180666 + 21 +-35.18750000000075 + 31 +0.0 + 0 +LINE + 5 +434 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976257 + 20 +-42.52250000000077 + 30 +0.0 + 11 +2.474105903350727 + 21 +-42.52250000000077 + 31 +0.0 + 0 +LINE + 5 +435 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976258 + 20 +-34.86250000000069 + 30 +0.0 + 11 +2.474105903350728 + 21 +-34.86250000000069 + 31 +0.0 + 0 +LINE + 5 +436 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-33.59750000000085 + 30 +0.0 + 11 +9.914593855180666 + 21 +-33.59750000000085 + 31 +0.0 + 0 +LINE + 5 +437 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-26.5875000000009 + 30 +0.0 + 11 +9.914593855180666 + 21 +-26.5875000000009 + 31 +0.0 + 0 +LINE + 5 +438 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976258 + 20 +-33.92250000000093 + 30 +0.0 + 11 +2.474105903350728 + 21 +-33.92250000000093 + 31 +0.0 + 0 +LINE + 5 +439 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976258 + 20 +-26.26250000000083 + 30 +0.0 + 11 +2.474105903350729 + 21 +-26.26250000000083 + 31 +0.0 + 0 +LINE + 5 +43A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-24.997500000001 + 30 +0.0 + 11 +9.914593855180666 + 21 +-24.997500000001 + 31 +0.0 + 0 +LINE + 5 +43B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-17.98750000000105 + 30 +0.0 + 11 +9.914593855180668 + 21 +-17.98750000000105 + 31 +0.0 + 0 +LINE + 5 +43C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976259 + 20 +-25.32250000000107 + 30 +0.0 + 11 +2.474105903350729 + 21 +-25.32250000000107 + 31 +0.0 + 0 +LINE + 5 +43D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.39969238097626 + 20 +-17.66250000000097 + 30 +0.0 + 11 +2.47410590335073 + 21 +-17.66250000000097 + 31 +0.0 + 0 +LINE + 5 +43E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-16.39750000000114 + 30 +0.0 + 11 +9.914593855180668 + 21 +-16.39750000000114 + 31 +0.0 + 0 +LINE + 5 +43F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-9.387500000001198 + 30 +0.0 + 11 +9.914593855180668 + 21 +-9.387500000001198 + 31 +0.0 + 0 +LINE + 5 +440 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.39969238097626 + 20 +-16.72250000000122 + 30 +0.0 + 11 +2.47410590335073 + 21 +-16.72250000000122 + 31 +0.0 + 0 +LINE + 5 +441 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976261 + 20 +-9.062500000001123 + 30 +0.0 + 11 +2.474105903350731 + 21 +-9.062500000001123 + 31 +0.0 + 0 +LINE + 5 +442 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-7.797500000001294 + 30 +0.0 + 11 +9.914593855180668 + 21 +-7.797500000001293 + 31 +0.0 + 0 +LINE + 5 +443 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +-0.7875000000013463 + 30 +0.0 + 11 +9.91459385518067 + 21 +-0.7875000000013455 + 31 +0.0 + 0 +LINE + 5 +444 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976261 + 20 +-8.122500000001367 + 30 +0.0 + 11 +2.474105903350731 + 21 +-8.122500000001367 + 31 +0.0 + 0 +LINE + 5 +445 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976262 + 20 +-0.4625000000012713 + 30 +0.0 + 11 +2.474105903350732 + 21 +-0.4625000000012708 + 31 +0.0 + 0 +LINE + 5 +446 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +0.8024999999985574 + 30 +0.0 + 11 +9.91459385518067 + 21 +0.8024999999985583 + 31 +0.0 + 0 +LINE + 5 +447 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.87444658941274 + 20 +7.812499999998505 + 30 +0.0 + 11 +9.914593855180671 + 21 +7.812499999998506 + 31 +0.0 + 0 +LINE + 5 +448 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976262 + 20 +0.4774999999984849 + 30 +0.0 + 11 +2.474105903350732 + 21 +0.4774999999984854 + 31 +0.0 + 0 +LINE + 5 +449 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.399692380976263 + 20 +8.137499999998582 + 30 +0.0 + 11 +2.474105903350733 + 21 +8.137499999998582 + 31 +0.0 + 0 +LINE + 5 +44A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412685 + 20 +-93.79749999999981 + 30 +0.0 + 11 +-5.160406144819388 + 21 +-93.79749999999981 + 31 +0.0 + 0 +LINE + 5 +44B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412685 + 20 +-86.78749999999988 + 30 +0.0 + 11 +-5.160406144819387 + 21 +-86.78749999999988 + 31 +0.0 + 0 +LINE + 5 +44C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023794 + 20 +-94.12249999999989 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-94.12249999999989 + 31 +0.0 + 0 +LINE + 5 +44D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023794 + 20 +-86.46249999999979 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-86.46249999999979 + 31 +0.0 + 0 +LINE + 5 +44E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412686 + 20 +-85.19749999999996 + 30 +0.0 + 11 +-5.160406144819387 + 21 +-85.19749999999996 + 31 +0.0 + 0 +LINE + 5 +44F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412687 + 20 +-78.18750000000001 + 30 +0.0 + 11 +-5.160406144819386 + 21 +-78.18750000000001 + 31 +0.0 + 0 +LINE + 5 +450 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023794 + 20 +-85.52250000000004 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-85.52250000000004 + 31 +0.0 + 0 +LINE + 5 +451 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023792 + 20 +-77.86249999999994 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-77.86249999999994 + 31 +0.0 + 0 +LINE + 5 +452 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412687 + 20 +-76.59750000000011 + 30 +0.0 + 11 +-5.160406144819386 + 21 +-76.59750000000011 + 31 +0.0 + 0 +LINE + 5 +453 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412688 + 20 +-69.58750000000015 + 30 +0.0 + 11 +-5.160406144819385 + 21 +-69.58750000000015 + 31 +0.0 + 0 +LINE + 5 +454 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023792 + 20 +-76.92250000000018 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-76.92250000000018 + 31 +0.0 + 0 +LINE + 5 +455 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023792 + 20 +-69.26250000000009 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-69.26250000000009 + 31 +0.0 + 0 +LINE + 5 +456 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412688 + 20 +-67.99750000000026 + 30 +0.0 + 11 +-5.160406144819384 + 21 +-67.99750000000026 + 31 +0.0 + 0 +LINE + 5 +457 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412689 + 20 +-60.9875000000003 + 30 +0.0 + 11 +-5.160406144819383 + 21 +-60.9875000000003 + 31 +0.0 + 0 +LINE + 5 +458 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023792 + 20 +-68.32250000000033 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-68.32250000000033 + 31 +0.0 + 0 +LINE + 5 +459 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.67530761902379 + 20 +-60.66250000000024 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-60.66250000000024 + 31 +0.0 + 0 +LINE + 5 +45A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412689 + 20 +-59.3975000000004 + 30 +0.0 + 11 +-5.160406144819383 + 21 +-59.3975000000004 + 31 +0.0 + 0 +LINE + 5 +45B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.79944658941269 + 20 +-52.38750000000045 + 30 +0.0 + 11 +-5.160406144819382 + 21 +-52.38750000000045 + 31 +0.0 + 0 +LINE + 5 +45C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.67530761902379 + 20 +-59.72250000000048 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-59.72250000000048 + 31 +0.0 + 0 +LINE + 5 +45D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.67530761902379 + 20 +-52.06250000000038 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-52.06250000000038 + 31 +0.0 + 0 +LINE + 5 +45E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.79944658941269 + 20 +-50.79750000000055 + 30 +0.0 + 11 +-5.160406144819382 + 21 +-50.79750000000055 + 31 +0.0 + 0 +LINE + 5 +45F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412691 + 20 +-43.78750000000061 + 30 +0.0 + 11 +-5.160406144819381 + 21 +-43.78750000000061 + 31 +0.0 + 0 +LINE + 5 +460 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.67530761902379 + 20 +-51.12250000000063 + 30 +0.0 + 11 +-12.60089409664932 + 21 +-51.12250000000063 + 31 +0.0 + 0 +LINE + 5 +461 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023789 + 20 +-43.46250000000052 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-43.46250000000052 + 31 +0.0 + 0 +LINE + 5 +462 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412691 + 20 +-42.1975000000007 + 30 +0.0 + 11 +-5.160406144819381 + 21 +-42.1975000000007 + 31 +0.0 + 0 +LINE + 5 +463 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412692 + 20 +-35.18750000000075 + 30 +0.0 + 11 +-5.160406144819381 + 21 +-35.18750000000075 + 31 +0.0 + 0 +LINE + 5 +464 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023789 + 20 +-42.52250000000077 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-42.52250000000077 + 31 +0.0 + 0 +LINE + 5 +465 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023787 + 20 +-34.86250000000069 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-34.86250000000069 + 31 +0.0 + 0 +LINE + 5 +466 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412692 + 20 +-33.59750000000085 + 30 +0.0 + 11 +-5.160406144819381 + 21 +-33.59750000000085 + 31 +0.0 + 0 +LINE + 5 +467 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412693 + 20 +-26.5875000000009 + 30 +0.0 + 11 +-5.16040614481938 + 21 +-26.5875000000009 + 31 +0.0 + 0 +LINE + 5 +468 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023787 + 20 +-33.92250000000093 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-33.92250000000093 + 31 +0.0 + 0 +LINE + 5 +469 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023787 + 20 +-26.26250000000083 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-26.26250000000083 + 31 +0.0 + 0 +LINE + 5 +46A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412693 + 20 +-24.997500000001 + 30 +0.0 + 11 +-5.160406144819379 + 21 +-24.997500000001 + 31 +0.0 + 0 +LINE + 5 +46B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412694 + 20 +-17.98750000000105 + 30 +0.0 + 11 +-5.160406144819378 + 21 +-17.98750000000105 + 31 +0.0 + 0 +LINE + 5 +46C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023787 + 20 +-25.32250000000107 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-25.32250000000107 + 31 +0.0 + 0 +LINE + 5 +46D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023785 + 20 +-17.66250000000097 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-17.66250000000097 + 31 +0.0 + 0 +LINE + 5 +46E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412694 + 20 +-16.39750000000114 + 30 +0.0 + 11 +-5.160406144819378 + 21 +-16.39750000000114 + 31 +0.0 + 0 +LINE + 5 +46F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412695 + 20 +-9.387500000001197 + 30 +0.0 + 11 +-5.160406144819377 + 21 +-9.387500000001197 + 31 +0.0 + 0 +LINE + 5 +470 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023785 + 20 +-16.72250000000122 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-16.72250000000122 + 31 +0.0 + 0 +LINE + 5 +471 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023785 + 20 +-9.06250000000112 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-9.06250000000112 + 31 +0.0 + 0 +LINE + 5 +472 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412695 + 20 +-7.797500000001292 + 30 +0.0 + 11 +-5.160406144819377 + 21 +-7.797500000001291 + 31 +0.0 + 0 +LINE + 5 +473 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412696 + 20 +-0.7875000000013445 + 30 +0.0 + 11 +-5.160406144819376 + 21 +-0.7875000000013436 + 31 +0.0 + 0 +LINE + 5 +474 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023785 + 20 +-8.122500000001365 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-8.122500000001365 + 31 +0.0 + 0 +LINE + 5 +475 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023783 + 20 +-0.4625000000012695 + 30 +0.0 + 11 +-12.60089409664931 + 21 +-0.462500000001269 + 31 +0.0 + 0 +LINE + 5 +476 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412696 + 20 +0.8024999999985593 + 30 +0.0 + 11 +-5.160406144819376 + 21 +0.8024999999985601 + 31 +0.0 + 0 +LINE + 5 +477 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +1.799446589412697 + 20 +7.812499999998507 + 30 +0.0 + 11 +-5.160406144819375 + 21 +7.812499999998508 + 31 +0.0 + 0 +LINE + 5 +478 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023783 + 20 +0.4774999999984867 + 30 +0.0 + 11 +-12.60089409664931 + 21 +0.4774999999984872 + 31 +0.0 + 0 +LINE + 5 +479 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +-8.675307619023782 + 20 +8.137499999998584 + 30 +0.0 + 11 +-12.60089409664931 + 21 +8.137499999998584 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +30 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +2F + 3 +ACAD_MATERIAL +350 +10 + 3 +ACAD_MLEADERSTYLE +350 +4A0 + 3 +ACAD_MLINESTYLE +350 +2C + 3 +ACAD_PLOTSETTINGS +350 +2E + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +47C + 3 +ACAD_TABLESTYLE +350 +31 + 3 +ACAD_VISUALSTYLE +350 +14 + 3 +AcDbVariableDictionary +350 +47A + 0 +DICTIONARY + 5 +4E +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +4F + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +3A + 3 +布局1 +350 +36 + 3 +布局2 +350 +3E + 0 +DICTIONARY + 5 +10 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +12 + 3 +ByLayer +350 +11 + 3 +Global +350 +13 + 0 +DICTIONARY + 5 +4A0 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +2D + 0 +DICTIONARY + 5 +2E +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 +47C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +47D + 3 +A1 +350 +47E + 3 +A2 +350 +47F + 3 +A3 +350 +480 + 3 +A4 +350 +481 + 3 +A5 +350 +482 + 3 +A6 +350 +483 + 3 +A7 +350 +484 + 3 +A8 +350 +485 + 3 +A9 +350 +486 + 3 +B0 +350 +487 + 3 +B1 +350 +488 + 3 +B2 +350 +489 + 3 +B3 +350 +48A + 3 +B4 +350 +48B + 3 +B5 +350 +48C + 3 +B6 +350 +48D + 3 +B7 +350 +48E + 3 +B8 +350 +48F + 3 +B9 +350 +490 + 3 +C0 +350 +491 + 3 +C1 +350 +492 + 3 +C2 +350 +493 + 3 +C3 +350 +494 + 3 +C4 +350 +495 + 3 +C5 +350 +496 + 3 +C6 +350 +497 + 3 +C7 +350 +498 + 3 +C8 +350 +499 + 3 +C9 +350 +49A + 3 +D0 +350 +49B + 3 +D1 +350 +49C + 3 +D2 +350 +49D + 0 +DICTIONARY + 5 +31 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +32 + 0 +DICTIONARY + 5 +14 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +1A + 3 +3D Hidden +350 +1C + 3 +3dWireframe +350 +1B + 3 +Basic +350 +19 + 3 +Brighten +350 +20 + 3 +ColorChange +350 +24 + 3 +Conceptual +350 +1D + 3 +Dim +350 +1F + 3 +Facepattern +350 +23 + 3 +Flat +350 +15 + 3 +FlatWithEdges +350 +16 + 3 +Gouraud +350 +17 + 3 +GouraudWithEdges +350 +18 + 3 +Linepattern +350 +22 + 3 +Realistic +350 +1E + 3 +Thicken +350 +21 + 0 +DICTIONARY + 5 +47A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +49F + 3 +CTABLESTYLE +350 +47B + 0 +DICTIONARY + 5 +4F +102 +{ACAD_REACTORS +330 +4E +102 +} +330 +4E +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +3A +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +37 +331 +28 + 0 +LAYOUT + 5 +36 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +33 + 0 +LAYOUT + 5 +3E +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +3B + 0 +MATERIAL + 5 +12 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByBlock + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +11 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByLayer + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +13 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2C +102 +} +330 +2C +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 +47D +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +47E +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +47F +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +480 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +481 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +482 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +483 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +484 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +485 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +486 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +487 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +488 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +489 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +48A +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +48B +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +48C +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +48D +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +48E +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48F +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +490 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +491 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +492 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +493 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +494 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +495 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +496 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +497 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +498 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +499 +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +49A +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +49B +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +49C +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +49D +102 +{ACAD_REACTORS +330 +47C +102 +} +330 +47C +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +31 +102 +} +330 +31 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 8 + 40 +1.5 + 41 +1.5 +280 + 0 +281 + 0 + 7 +Standard +140 +4.5 +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 +6.0 +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 +4.5 +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 +1A +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1C +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1B +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +19 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +20 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +24 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1D +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1F +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +23 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +15 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +16 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +17 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1E +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +21 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +49F +102 +{ACAD_REACTORS +330 +47A +102 +} +330 +47A +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +47B +102 +{ACAD_REACTORS +330 +47A +102 +} +330 +47A +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D714-A5.dxf b/LaiPuLaser/TempMarkData/D714-A5.dxf new file mode 100644 index 0000000..8141d27 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714-A5.dxf @@ -0,0 +1,15412 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +196.2337333565398 + 20 +96.69354149371194 + 30 +0.0 + 9 +$EXTMAX + 10 +439.8587333565392 + 20 +300.3185414937121 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458950.924087592 + 9 +$TDUCREATE + 40 +2458950.590754259 + 9 +$TDUPDATE + 40 +2458950.924877072 + 9 +$TDUUPDATE + 40 +2458950.591543738 + 9 +$TDINDWG + 40 +0.0007920023 + 9 +$TDUSRTIMER + 40 +0.0007916435 + 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 +46A + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{EFBA544F-0245-4C3E-9E31-B585AC739942} + 9 +$VERSIONGUID + 2 +{5F283802-EBA0-40CC-9CDB-8093E268E4F0} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +469 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +388.1127763612464 + 22 +39.00124346790912 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +415.1349727727858 + 41 +1.656593406593406 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3D +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +34 +102 +{ACAD_XDICTIONARY +360 +35 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F + 0 +LAYER + 5 +37 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +D714 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +38 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +39 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2D + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +BLOCK_RECORD + 5 +2D +102 +{ACAD_XDICTIONARY +360 +2E +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +31 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +32 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +33 +330 +2D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565397 + 20 +296.2310414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +285.756041493712 + 30 +0.0 + 11 +337.6087333565396 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +285.756041493712 + 30 +0.0 + 11 +345.2587333565396 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +296.2310414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +285.756041493712 + 30 +0.0 + 11 +346.2087333565396 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +285.756041493712 + 30 +0.0 + 11 +353.8587333565395 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +296.2310414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +285.756041493712 + 30 +0.0 + 11 +354.8087333565395 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +362.4587333565395 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +296.2310414937121 + 30 +0.0 + 11 +370.7337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +285.756041493712 + 30 +0.0 + 11 +363.4087333565395 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +371.0587333565395 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565393 + 20 +296.2310414937121 + 30 +0.0 + 11 +372.3337333565395 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +296.2310414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +372.0087333565394 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +379.6587333565394 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +296.2310414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +296.2310414937121 + 30 +0.0 + 11 +387.9337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565395 + 20 +285.756041493712 + 30 +0.0 + 11 +380.6087333565394 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +285.756041493712 + 30 +0.0 + 11 +388.2587333565394 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565393 + 20 +296.2310414937121 + 30 +0.0 + 11 +389.5337333565394 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565395 + 20 +296.2310414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +389.2087333565394 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +285.756041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +296.2310414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +405.1337333565393 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565394 + 20 +285.756041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +285.756041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +296.2310414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565394 + 20 +296.2310414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +285.756041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565393 + 20 +285.756041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +296.2310414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +296.2310414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +285.756041493712 + 30 +0.0 + 11 +415.0087333565393 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +285.756041493712 + 30 +0.0 + 11 +422.6587333565392 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.9337333565391 + 20 +296.2310414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +296.2310414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +285.756041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +285.756041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +296.2310414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +296.2310414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +289.681041493712 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565392 + 20 +285.756041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +285.756041493712 + 30 +0.0 + 11 +439.8587333565392 + 21 +282.1560414937121 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565397 + 20 +281.1560414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +270.681041493712 + 30 +0.0 + 11 +337.6087333565396 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +270.681041493712 + 30 +0.0 + 11 +345.2587333565396 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +281.1560414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +270.681041493712 + 30 +0.0 + 11 +346.2087333565396 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +270.681041493712 + 30 +0.0 + 11 +353.8587333565395 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +281.1560414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +270.681041493712 + 30 +0.0 + 11 +354.8087333565395 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +362.4587333565395 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +281.1560414937121 + 30 +0.0 + 11 +370.7337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +270.681041493712 + 30 +0.0 + 11 +363.4087333565395 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +371.0587333565395 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565393 + 20 +281.1560414937121 + 30 +0.0 + 11 +372.3337333565395 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +281.1560414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +372.0087333565394 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +379.6587333565394 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +281.1560414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +281.1560414937121 + 30 +0.0 + 11 +387.9337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565395 + 20 +270.681041493712 + 30 +0.0 + 11 +380.6087333565394 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +270.681041493712 + 30 +0.0 + 11 +388.2587333565394 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565393 + 20 +281.1560414937121 + 30 +0.0 + 11 +389.5337333565394 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565395 + 20 +281.1560414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +389.2087333565394 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +270.681041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +281.1560414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +405.1337333565393 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565394 + 20 +270.681041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +270.681041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +281.1560414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565394 + 20 +281.1560414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +270.681041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565393 + 20 +270.681041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +281.1560414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +281.1560414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +270.681041493712 + 30 +0.0 + 11 +415.0087333565393 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +270.681041493712 + 30 +0.0 + 11 +422.6587333565392 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.9337333565391 + 20 +281.1560414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +281.1560414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +270.681041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +270.681041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +281.1560414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +281.1560414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +274.606041493712 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565392 + 20 +270.681041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +270.681041493712 + 30 +0.0 + 11 +439.8587333565392 + 21 +267.0810414937121 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565397 + 20 +266.0810414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +255.606041493712 + 30 +0.0 + 11 +337.6087333565396 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +255.606041493712 + 30 +0.0 + 11 +345.2587333565396 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +266.0810414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +255.606041493712 + 30 +0.0 + 11 +346.2087333565396 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +255.606041493712 + 30 +0.0 + 11 +353.8587333565395 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +266.0810414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +255.606041493712 + 30 +0.0 + 11 +354.8087333565395 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +362.4587333565395 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +266.0810414937121 + 30 +0.0 + 11 +370.7337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +255.606041493712 + 30 +0.0 + 11 +363.4087333565395 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +371.0587333565394 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565393 + 20 +266.0810414937121 + 30 +0.0 + 11 +372.3337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +266.0810414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +372.0087333565394 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +379.6587333565394 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +266.0810414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +266.0810414937121 + 30 +0.0 + 11 +387.9337333565393 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +380.6087333565394 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +255.606041493712 + 30 +0.0 + 11 +388.2587333565393 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565393 + 20 +266.0810414937121 + 30 +0.0 + 11 +389.5337333565393 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565395 + 20 +266.0810414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +255.606041493712 + 30 +0.0 + 11 +389.2087333565394 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +255.606041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +266.0810414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +255.606041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +255.606041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +266.0810414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565394 + 20 +266.0810414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +255.606041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +255.606041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +266.0810414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +266.0810414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +255.606041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +255.606041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.9337333565391 + 20 +266.0810414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +266.0810414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +255.606041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +255.606041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +266.0810414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +266.0810414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +259.531041493712 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +255.606041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +255.606041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +252.0060414937121 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565397 + 20 +251.0060414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +240.5310414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +240.5310414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +251.0060414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +240.5310414937121 + 30 +0.0 + 11 +346.2087333565396 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +240.5310414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +251.0060414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +240.5310414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +251.0060414937121 + 30 +0.0 + 11 +370.7337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +240.5310414937121 + 30 +0.0 + 11 +363.4087333565395 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +251.0060414937121 + 30 +0.0 + 11 +372.3337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +251.0060414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +251.0060414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +251.0060414937121 + 30 +0.0 + 11 +387.9337333565393 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +240.5310414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +251.0060414937121 + 30 +0.0 + 11 +389.5337333565393 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +240.5310414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +236.9310414937122 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +240.531041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +251.0060414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +251.0060414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +240.531041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +240.531041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +251.0060414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +251.0060414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +240.531041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +240.531041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +251.0060414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +251.0060414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +240.531041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +240.531041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +251.0060414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +251.0060414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +240.531041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +240.531041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +251.0060414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +251.0060414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +244.456041493712 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +240.531041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +240.531041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +236.9310414937121 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565397 + 20 +235.9310414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +225.4560414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +225.4560414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +235.9310414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +225.4560414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +225.4560414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +235.9310414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +225.4560414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +235.9310414937121 + 30 +0.0 + 11 +370.7337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +225.4560414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +235.9310414937121 + 30 +0.0 + 11 +372.3337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +235.9310414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +235.9310414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +235.9310414937121 + 30 +0.0 + 11 +387.9337333565393 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +225.4560414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +235.9310414937121 + 30 +0.0 + 11 +389.5337333565393 + 21 +229.3810414937121 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +225.4560414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +221.8560414937122 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +225.456041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +235.9310414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +235.9310414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +225.456041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +225.456041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +235.9310414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +235.9310414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +225.456041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +225.456041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +235.9310414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +235.9310414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +225.456041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +225.456041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +235.9310414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +235.9310414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +225.456041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +225.456041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +235.9310414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +235.9310414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +229.381041493712 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +225.456041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +225.456041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +221.8560414937121 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +220.8560414937121 + 30 +0.0 + 11 +337.9337333565396 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +220.8560414937121 + 30 +0.0 + 11 +344.9337333565395 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +210.3810414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +210.3810414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +220.8560414937121 + 30 +0.0 + 11 +346.5337333565395 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +220.8560414937121 + 30 +0.0 + 11 +353.5337333565395 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +210.3810414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +210.3810414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +220.8560414937121 + 30 +0.0 + 11 +355.1337333565395 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +220.8560414937121 + 30 +0.0 + 11 +362.1337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +210.3810414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +220.8560414937121 + 30 +0.0 + 11 +363.7337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +220.8560414937121 + 30 +0.0 + 11 +370.7337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +210.3810414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +220.8560414937121 + 30 +0.0 + 11 +372.3337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +220.8560414937121 + 30 +0.0 + 11 +379.3337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +220.8560414937121 + 30 +0.0 + 11 +380.9337333565394 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +220.8560414937121 + 30 +0.0 + 11 +387.9337333565393 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +210.3810414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +220.8560414937121 + 30 +0.0 + 11 +389.5337333565393 + 21 +214.3060414937121 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +220.8560414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +210.3810414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +206.7810414937122 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +210.381041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +220.8560414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +220.8560414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +210.381041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +210.381041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +220.8560414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +220.8560414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +210.381041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +210.381041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +220.8560414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +220.8560414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +210.381041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +210.381041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +220.8560414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +220.8560414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +210.381041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +210.381041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +220.8560414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +220.8560414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +214.306041493712 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +210.381041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +210.381041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +206.7810414937121 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +205.7810414937122 + 30 +0.0 + 11 +337.9337333565396 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +205.7810414937122 + 30 +0.0 + 11 +344.9337333565395 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +195.3060414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +195.3060414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +205.7810414937122 + 30 +0.0 + 11 +346.5337333565395 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +205.7810414937122 + 30 +0.0 + 11 +353.5337333565395 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +195.3060414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +195.3060414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +205.7810414937122 + 30 +0.0 + 11 +355.1337333565395 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +205.7810414937122 + 30 +0.0 + 11 +362.1337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +195.3060414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +205.7810414937122 + 30 +0.0 + 11 +363.7337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +205.7810414937122 + 30 +0.0 + 11 +370.7337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +195.3060414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +205.7810414937122 + 30 +0.0 + 11 +372.3337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +205.7810414937122 + 30 +0.0 + 11 +379.3337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +205.7810414937122 + 30 +0.0 + 11 +380.9337333565394 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +205.7810414937122 + 30 +0.0 + 11 +387.9337333565393 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +195.3060414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +205.7810414937122 + 30 +0.0 + 11 +389.5337333565393 + 21 +199.2310414937121 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +205.7810414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +195.3060414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +191.7060414937122 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +195.306041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +205.7810414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +205.7810414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +195.306041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +195.306041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +205.7810414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +205.7810414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +195.306041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +195.306041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +205.7810414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +205.7810414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +195.306041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +195.306041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +205.7810414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +205.7810414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +195.306041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +195.306041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +205.7810414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +205.7810414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +199.231041493712 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +195.306041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +195.306041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +191.7060414937121 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +190.7060414937122 + 30 +0.0 + 11 +337.9337333565396 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +190.7060414937122 + 30 +0.0 + 11 +344.9337333565395 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +180.2310414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +180.2310414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +190.7060414937122 + 30 +0.0 + 11 +346.5337333565395 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +190.7060414937122 + 30 +0.0 + 11 +353.5337333565395 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +180.2310414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +180.2310414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +190.7060414937122 + 30 +0.0 + 11 +355.1337333565395 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +190.7060414937122 + 30 +0.0 + 11 +362.1337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +180.2310414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +190.7060414937122 + 30 +0.0 + 11 +363.7337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +190.7060414937122 + 30 +0.0 + 11 +370.7337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +180.2310414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +190.7060414937122 + 30 +0.0 + 11 +372.3337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +190.7060414937122 + 30 +0.0 + 11 +379.3337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +190.7060414937122 + 30 +0.0 + 11 +380.9337333565394 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +190.7060414937122 + 30 +0.0 + 11 +387.9337333565393 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +180.2310414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +190.7060414937122 + 30 +0.0 + 11 +389.5337333565393 + 21 +184.1560414937121 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +190.7060414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +180.2310414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +180.231041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +190.7060414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +190.7060414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +180.231041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +180.231041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +190.7060414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +190.7060414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +180.231041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +180.231041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +190.7060414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +190.7060414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +180.231041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +180.231041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +190.7060414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +190.7060414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +180.231041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +180.231041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +190.7060414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +190.7060414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +184.156041493712 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +180.231041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +180.231041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +176.6310414937121 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +175.6310414937122 + 30 +0.0 + 11 +337.9337333565396 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +175.6310414937122 + 30 +0.0 + 11 +344.9337333565395 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +165.1560414937121 + 30 +0.0 + 11 +337.6087333565396 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +165.1560414937121 + 30 +0.0 + 11 +345.2587333565396 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +175.6310414937122 + 30 +0.0 + 11 +346.5337333565395 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +175.6310414937122 + 30 +0.0 + 11 +353.5337333565395 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +165.1560414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +165.1560414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +175.6310414937122 + 30 +0.0 + 11 +355.1337333565395 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +175.6310414937122 + 30 +0.0 + 11 +362.1337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +165.1560414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +362.4587333565395 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +175.6310414937122 + 30 +0.0 + 11 +363.7337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +175.6310414937122 + 30 +0.0 + 11 +370.7337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +165.1560414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +175.6310414937122 + 30 +0.0 + 11 +372.3337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +175.6310414937122 + 30 +0.0 + 11 +379.3337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +175.6310414937122 + 30 +0.0 + 11 +380.9337333565394 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +175.6310414937122 + 30 +0.0 + 11 +387.9337333565393 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +165.1560414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +175.6310414937122 + 30 +0.0 + 11 +389.5337333565393 + 21 +169.0810414937121 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +175.6310414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +165.1560414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +161.5560414937122 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +165.156041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +175.6310414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +175.6310414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +165.156041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +165.156041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +175.6310414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +175.6310414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +165.156041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +165.156041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +175.6310414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +175.6310414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +165.156041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +165.156041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +175.6310414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +175.6310414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +165.156041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +165.156041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +175.6310414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +175.6310414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +169.081041493712 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +165.156041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +165.156041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +161.5560414937121 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +160.5560414937122 + 30 +0.0 + 11 +337.9337333565396 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +160.5560414937122 + 30 +0.0 + 11 +344.9337333565395 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +150.0810414937121 + 30 +0.0 + 11 +337.6087333565395 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +150.0810414937121 + 30 +0.0 + 11 +345.2587333565395 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +160.5560414937122 + 30 +0.0 + 11 +346.5337333565395 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +160.5560414937122 + 30 +0.0 + 11 +353.5337333565395 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +150.0810414937121 + 30 +0.0 + 11 +346.2087333565395 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +150.0810414937121 + 30 +0.0 + 11 +353.8587333565395 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +160.5560414937122 + 30 +0.0 + 11 +355.1337333565395 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +160.5560414937122 + 30 +0.0 + 11 +362.1337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +150.0810414937121 + 30 +0.0 + 11 +354.8087333565395 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +362.4587333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565394 + 20 +160.5560414937122 + 30 +0.0 + 11 +363.7337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +160.5560414937122 + 30 +0.0 + 11 +370.7337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +150.0810414937121 + 30 +0.0 + 11 +363.4087333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +371.0587333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +160.5560414937122 + 30 +0.0 + 11 +372.3337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +160.5560414937122 + 30 +0.0 + 11 +379.3337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +372.0087333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +379.6587333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +160.5560414937122 + 30 +0.0 + 11 +380.9337333565394 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +160.5560414937122 + 30 +0.0 + 11 +387.9337333565393 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +380.6087333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +150.0810414937121 + 30 +0.0 + 11 +388.2587333565393 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +160.5560414937122 + 30 +0.0 + 11 +389.5337333565393 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +160.5560414937122 + 30 +0.0 + 11 +396.5337333565393 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +150.0810414937121 + 30 +0.0 + 11 +389.2087333565394 + 21 +146.4810414937122 + 31 +0.0 + 0 +LINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +150.081041493712 + 30 +0.0 + 11 +396.8587333565393 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +160.5560414937122 + 30 +0.0 + 11 +398.1337333565393 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +160.5560414937122 + 30 +0.0 + 11 +405.1337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +150.081041493712 + 30 +0.0 + 11 +397.8087333565393 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +150.081041493712 + 30 +0.0 + 11 +405.4587333565392 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +160.5560414937122 + 30 +0.0 + 11 +406.7337333565393 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +160.5560414937122 + 30 +0.0 + 11 +413.7337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +150.081041493712 + 30 +0.0 + 11 +406.4087333565392 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +150.081041493712 + 30 +0.0 + 11 +414.0587333565393 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +160.5560414937122 + 30 +0.0 + 11 +415.3337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +160.5560414937122 + 30 +0.0 + 11 +422.3337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +150.081041493712 + 30 +0.0 + 11 +415.0087333565392 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +150.081041493712 + 30 +0.0 + 11 +422.6587333565391 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +160.5560414937122 + 30 +0.0 + 11 +423.9337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +160.5560414937122 + 30 +0.0 + 11 +430.9337333565391 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +431 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +150.081041493712 + 30 +0.0 + 11 +423.6087333565392 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +432 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +150.081041493712 + 30 +0.0 + 11 +431.2587333565391 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +433 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +160.5560414937122 + 30 +0.0 + 11 +432.5337333565392 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +434 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +160.5560414937122 + 30 +0.0 + 11 +439.5337333565391 + 21 +154.0060414937121 + 31 +0.0 + 0 +LINE + 5 +435 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +150.081041493712 + 30 +0.0 + 11 +432.2087333565391 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +436 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +150.081041493712 + 30 +0.0 + 11 +439.8587333565391 + 21 +146.4810414937121 + 31 +0.0 + 0 +LINE + 5 +437 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.9337333565394 + 20 +145.4810414937122 + 30 +0.0 + 11 +337.9337333565396 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +438 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +344.9337333565396 + 20 +145.4810414937122 + 30 +0.0 + 11 +344.9337333565395 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +439 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +337.6087333565396 + 20 +135.0060414937122 + 30 +0.0 + 11 +337.6087333565395 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +43A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +345.2587333565395 + 20 +135.0060414937122 + 30 +0.0 + 11 +345.2587333565395 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +43B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.5337333565394 + 20 +145.4810414937122 + 30 +0.0 + 11 +346.5337333565395 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +43C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.5337333565396 + 20 +145.4810414937122 + 30 +0.0 + 11 +353.5337333565395 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +43D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +346.2087333565396 + 20 +135.0060414937122 + 30 +0.0 + 11 +346.2087333565395 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +43E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +353.8587333565395 + 20 +135.0060414937122 + 30 +0.0 + 11 +353.8587333565395 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +43F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +355.1337333565393 + 20 +145.4810414937122 + 30 +0.0 + 11 +355.1337333565395 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +440 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.1337333565396 + 20 +145.4810414937122 + 30 +0.0 + 11 +362.1337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +441 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +354.8087333565395 + 20 +135.0060414937122 + 30 +0.0 + 11 +354.8087333565395 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +442 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +362.4587333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +362.4587333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +443 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.7337333565393 + 20 +145.4810414937122 + 30 +0.0 + 11 +363.7337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +444 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +370.7337333565396 + 20 +145.4810414937122 + 30 +0.0 + 11 +370.7337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +445 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +363.4087333565395 + 20 +135.0060414937122 + 30 +0.0 + 11 +363.4087333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +446 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +371.0587333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +371.0587333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +447 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.3337333565392 + 20 +145.4810414937122 + 30 +0.0 + 11 +372.3337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +448 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.3337333565395 + 20 +145.4810414937122 + 30 +0.0 + 11 +379.3337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +449 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +372.0087333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +372.0087333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +44A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +379.6587333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +379.6587333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +44B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.9337333565393 + 20 +145.4810414937122 + 30 +0.0 + 11 +380.9337333565394 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +44C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +387.9337333565395 + 20 +145.4810414937122 + 30 +0.0 + 11 +387.9337333565393 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +44D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +380.6087333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +380.6087333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +44E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +388.2587333565393 + 20 +135.0060414937122 + 30 +0.0 + 11 +388.2587333565393 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +44F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.5337333565392 + 20 +145.4810414937122 + 30 +0.0 + 11 +389.5337333565393 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +450 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.5337333565394 + 20 +145.4810414937121 + 30 +0.0 + 11 +396.5337333565393 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +451 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +389.2087333565394 + 20 +135.0060414937122 + 30 +0.0 + 11 +389.2087333565394 + 21 +131.4060414937123 + 31 +0.0 + 0 +LINE + 5 +452 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +396.8587333565393 + 20 +135.0060414937121 + 30 +0.0 + 11 +396.8587333565393 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +453 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +398.1337333565392 + 20 +145.4810414937121 + 30 +0.0 + 11 +398.1337333565393 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +454 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.1337333565394 + 20 +145.4810414937121 + 30 +0.0 + 11 +405.1337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +455 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +397.8087333565393 + 20 +135.0060414937121 + 30 +0.0 + 11 +397.8087333565393 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +456 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +405.4587333565392 + 20 +135.0060414937121 + 30 +0.0 + 11 +405.4587333565392 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +457 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.7337333565391 + 20 +145.4810414937121 + 30 +0.0 + 11 +406.7337333565393 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +458 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +413.7337333565393 + 20 +145.4810414937121 + 30 +0.0 + 11 +413.7337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +459 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +406.4087333565392 + 20 +135.0060414937121 + 30 +0.0 + 11 +406.4087333565392 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +45A +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +414.0587333565392 + 20 +135.0060414937121 + 30 +0.0 + 11 +414.0587333565393 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +45B +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.3337333565391 + 20 +145.4810414937121 + 30 +0.0 + 11 +415.3337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +45C +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.3337333565393 + 20 +145.4810414937121 + 30 +0.0 + 11 +422.3337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +45D +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +415.0087333565393 + 20 +135.0060414937121 + 30 +0.0 + 11 +415.0087333565392 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +45E +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +422.6587333565391 + 20 +135.0060414937121 + 30 +0.0 + 11 +422.6587333565391 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +45F +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.933733356539 + 20 +145.4810414937121 + 30 +0.0 + 11 +423.9337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +460 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +430.9337333565393 + 20 +145.4810414937121 + 30 +0.0 + 11 +430.9337333565391 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +461 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +423.6087333565392 + 20 +135.0060414937121 + 30 +0.0 + 11 +423.6087333565392 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +462 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +431.2587333565391 + 20 +135.0060414937121 + 30 +0.0 + 11 +431.2587333565391 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +463 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.533733356539 + 20 +145.4810414937121 + 30 +0.0 + 11 +432.5337333565392 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +464 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.5337333565392 + 20 +145.4810414937121 + 30 +0.0 + 11 +439.5337333565391 + 21 +138.9310414937121 + 31 +0.0 + 0 +LINE + 5 +465 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +432.2087333565391 + 20 +135.0060414937121 + 30 +0.0 + 11 +432.2087333565391 + 21 +131.4060414937122 + 31 +0.0 + 0 +LINE + 5 +466 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbLine + 10 +439.8587333565391 + 20 +135.0060414937121 + 30 +0.0 + 11 +439.8587333565391 + 21 +131.4060414937122 + 31 +0.0 + 0 +CIRCLE + 5 +467 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbCircle + 10 +396.7337333565398 + 20 +299.8185414937121 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +468 +330 +21 +100 +AcDbEntity + 8 +D714 +100 +AcDbCircle + 10 +368.7337333565397 + 20 +127.8185414937121 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +3D +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +3E + 0 +DICTIONARY + 5 +35 +330 +34 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +36 + 0 +DICTIONARY + 5 +2E +330 +2D +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +3A + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +3E +102 +{ACAD_REACTORS +330 +3D +102 +} +330 +3D +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +36 +102 +{ACAD_REACTORS +330 +35 +102 +} +330 +35 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +340 +3A + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MATERIAL + 5 +3A +102 +{ACAD_XDICTIONARY +360 +3B +102 +} +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +DICTIONARY + 5 +3B +330 +3A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +3C + 0 +XRECORD + 5 +3C +102 +{ACAD_REACTORS +330 +3B +102 +} +330 +3B +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D714.are b/LaiPuLaser/TempMarkData/D714.are new file mode 100644 index 0000000..7eae466 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D714.are differ diff --git a/LaiPuLaser/TempMarkData/D714.dxf b/LaiPuLaser/TempMarkData/D714.dxf new file mode 100644 index 0000000..59cbe5f --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714.dxf @@ -0,0 +1,17636 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +367.7337333565396 + 20 +56.19354149371256 + 30 +0.0 + 9 +$EXTMAX + 10 +540.7337333565396 + 20 +158.4435414937122 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458950.924087581 + 9 +$TDUCREATE + 40 +2458950.590754248 + 9 +$TDUPDATE + 40 +2458950.924877048 + 9 +$TDUUPDATE + 40 +2458950.591543715 + 9 +$TDINDWG + 40 +0.0007920023 + 9 +$TDUSRTIMER + 40 +0.0007916204 + 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 +492 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{EFBA544F-0245-4C3E-9E31-B585AC739942} + 9 +$VERSIONGUID + 2 +{5F283802-EBA0-40CC-9CDB-8093E268E4F0} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 6 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 10 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 6 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 105 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 6 +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 +469 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +441.0889018504444 + 22 +102.9166455576206 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +120.0659504429823 + 41 +5.727767582769554 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3D +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +LAYER + 5 +34 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +3A + 0 +LAYER + 5 +37 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +D714 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +38 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +39 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2D + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +31 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +32 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +33 +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +522.5712333565397 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +125.3185414937122 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +124.9935414937122 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +123.7185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +522.5712333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +530.0962333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +108.1185414937123 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +115.4435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +522.5712333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +106.5185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +106.5185414937123 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +99.5185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +99.19354149371244 + 30 +0.0 + 11 +522.5712333565397 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +530.0962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +530.0962333565395 + 21 +90.91854149371241 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +98.24354149371234 + 30 +0.0 + 11 +522.5712333565397 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +90.59354149371254 + 30 +0.0 + 11 +522.5712333565397 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +530.0962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +82.31854149371233 + 30 +0.0 + 11 +530.0962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +89.64354149371255 + 30 +0.0 + 11 +522.5712333565397 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +81.99354149371246 + 30 +0.0 + 11 +522.5712333565397 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +530.0962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +530.0962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +81.04354149371241 + 30 +0.0 + 11 +522.5712333565397 + 21 +81.04354149371241 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +73.39354149371266 + 30 +0.0 + 11 +522.5712333565397 + 21 +73.39354149371255 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +72.11854149371263 + 30 +0.0 + 11 +530.0962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +530.0962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +72.44354149371256 + 30 +0.0 + 11 +522.5712333565397 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +64.79354149371264 + 30 +0.0 + 11 +522.5712333565397 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +530.0962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +530.0962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +63.84354149371254 + 30 +0.0 + 11 +522.5712333565397 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +56.19354149371262 + 30 +0.0 + 11 +522.5712333565397 + 21 +56.19354149371256 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +158.1185414937123 + 30 +0.0 + 11 +515.0212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +515.0212333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +158.4435414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +150.7935414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +515.0212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +142.5185414937121 + 30 +0.0 + 11 +515.0212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +149.8435414937121 + 30 +0.0 + 11 +507.4962333565397 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +142.1935414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +515.0212333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +133.9185414937121 + 30 +0.0 + 11 +515.0212333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +141.2435414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +133.5935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +132.3185414937123 + 30 +0.0 + 11 +515.0212333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +125.3185414937122 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +132.6435414937122 + 30 +0.0 + 11 +507.4962333565396 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +124.9935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +124.9935414937122 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +123.7185414937124 + 30 +0.0 + 11 +515.0212333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +515.0212333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +124.0435414937124 + 30 +0.0 + 11 +507.4962333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +116.3935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +515.0212333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +108.1185414937123 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +115.4435414937122 + 30 +0.0 + 11 +507.4962333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +107.7935414937124 + 30 +0.0 + 11 +507.4962333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +106.5185414937124 + 30 +0.0 + 11 +515.0212333565395 + 21 +106.5185414937123 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +99.5185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +106.8435414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +507.4962333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +97.91854149371252 + 30 +0.0 + 11 +515.0212333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +90.91854149371235 + 30 +0.0 + 11 +515.0212333565395 + 21 +90.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +98.24354149371234 + 30 +0.0 + 11 +507.4962333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +507.4962333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +89.31854149371262 + 30 +0.0 + 11 +515.0212333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +82.31854149371233 + 30 +0.0 + 11 +515.0212333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +507.4962333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +81.99354149371246 + 30 +0.0 + 11 +507.4962333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +80.71854149371265 + 30 +0.0 + 11 +515.0212333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +73.71854149371242 + 30 +0.0 + 11 +515.0212333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +507.4962333565396 + 21 +81.04354149371241 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +507.4962333565396 + 21 +73.39354149371255 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +72.11854149371263 + 30 +0.0 + 11 +515.0212333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +65.11854149371246 + 30 +0.0 + 11 +515.0212333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +507.4962333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +507.4962333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +63.51854149371272 + 30 +0.0 + 11 +515.0212333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +56.51854149371255 + 30 +0.0 + 11 +515.0212333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +63.84354149371254 + 30 +0.0 + 11 +507.4962333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +507.4962333565396 + 21 +56.19354149371256 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +158.1185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +158.4435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +150.7935414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +142.5185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +149.8435414937121 + 30 +0.0 + 11 +492.4212333565396 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +142.1935414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +141.2435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +133.5935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +132.6435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +124.9935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +123.7185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +124.0435414937124 + 30 +0.0 + 11 +492.4212333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +116.3935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +499.9462333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +115.4435414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +107.7935414937124 + 30 +0.0 + 11 +492.4212333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +106.5185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +99.5185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +106.8435414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +492.4212333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +499.9462333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +499.9462333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +492.4212333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +492.4212333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +499.9462333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +82.31854149371233 + 30 +0.0 + 11 +499.9462333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +492.4212333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +492.4212333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +499.9462333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +499.9462333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +492.4212333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +492.4212333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +72.11854149371263 + 30 +0.0 + 11 +499.9462333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +499.9462333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +492.4212333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +492.4212333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +499.9462333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +499.9462333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +492.4212333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +492.4212333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +150.7935414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +149.8435414937121 + 30 +0.0 + 11 +477.3462333565398 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +484.8712333565395 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +141.2435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +484.8712333565395 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +477.3462333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +484.8712333565395 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +477.3462333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +484.8712333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +477.3462333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +484.8712333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +484.8712333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +477.3462333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +477.3462333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +484.8712333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +484.8712333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +477.3462333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +477.3462333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +484.8712333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +484.8712333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +477.3462333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +477.3462333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +484.8712333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +484.8712333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +477.3462333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +477.3462333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +484.8712333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +484.8712333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +477.3462333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +477.3462333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +462.2712333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +469.7962333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +469.7962333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +462.2712333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +469.7962333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +462.2712333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +469.7962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +462.2712333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +469.7962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +469.7962333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +462.2712333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +462.2712333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +469.7962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +469.7962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +462.2712333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +462.2712333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +469.7962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +469.7962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +462.2712333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +462.2712333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +469.7962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +469.7962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +462.2712333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +462.2712333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +469.7962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +469.7962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +462.2712333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +462.2712333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +447.1962333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +454.7212333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +454.7212333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +447.1962333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +454.7212333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +447.1962333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +454.7212333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +447.1962333565397 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +454.7212333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +454.7212333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +447.1962333565397 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +447.1962333565397 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +454.7212333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +454.7212333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +447.1962333565397 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +447.1962333565397 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +454.7212333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +454.7212333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +447.1962333565397 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +447.1962333565397 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +454.7212333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +454.7212333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +447.1962333565397 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +447.1962333565397 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +454.7212333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +454.7212333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +447.1962333565397 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +447.1962333565397 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +439.6462333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +439.6462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +439.6462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +432.1212333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +432.1212333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +99.51854149371232 + 30 +0.0 + 11 +439.6462333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +432.1212333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +97.91854149371252 + 30 +0.0 + 11 +439.6462333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +90.91854149371235 + 30 +0.0 + 11 +439.6462333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +432.1212333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +432.1212333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +89.31854149371262 + 30 +0.0 + 11 +439.6462333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +82.31854149371244 + 30 +0.0 + 11 +439.6462333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +432.1212333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +432.1212333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +80.71854149371265 + 30 +0.0 + 11 +439.6462333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +73.71854149371242 + 30 +0.0 + 11 +439.6462333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +432.1212333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +432.1212333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +72.11854149371274 + 30 +0.0 + 11 +439.6462333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +65.11854149371246 + 30 +0.0 + 11 +439.6462333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +432.1212333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +432.1212333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +63.51854149371272 + 30 +0.0 + 11 +439.6462333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +56.51854149371255 + 30 +0.0 + 11 +439.6462333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +432.1212333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +432.1212333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +424.5712333565397 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +424.5712333565397 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +424.5712333565397 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +417.0462333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +417.0462333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +424.5712333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +417.0462333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +424.5712333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +424.5712333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +417.0462333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +417.0462333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +424.5712333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +424.5712333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +417.0462333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +417.0462333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +424.5712333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +424.5712333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +417.0462333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +417.0462333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +424.5712333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +424.5712333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +417.0462333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +417.0462333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +424.5712333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +424.5712333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +417.0462333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +417.0462333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +409.4962333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +150.7935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +409.4962333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +149.8435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +141.2435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +133.5935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +132.6435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +124.9935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +409.4962333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +124.0435414937124 + 30 +0.0 + 11 +401.9712333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +116.3935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +115.4435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +107.7935414937124 + 30 +0.0 + 11 +401.9712333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +409.4962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +106.8435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +99.19354149371244 + 30 +0.0 + 11 +401.9712333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +409.4962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +409.4962333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +98.24354149371246 + 30 +0.0 + 11 +401.9712333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +90.59354149371254 + 30 +0.0 + 11 +401.9712333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +409.4962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +409.4962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +89.64354149371255 + 30 +0.0 + 11 +401.9712333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +81.99354149371251 + 30 +0.0 + 11 +401.9712333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +409.4962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +409.4962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +81.04354149371241 + 30 +0.0 + 11 +401.9712333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +73.39354149371266 + 30 +0.0 + 11 +401.9712333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +409.4962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +409.4962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +72.44354149371256 + 30 +0.0 + 11 +401.9712333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +64.79354149371264 + 30 +0.0 + 11 +401.9712333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +409.4962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +409.4962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +63.84354149371265 + 30 +0.0 + 11 +401.9712333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +56.19354149371262 + 30 +0.0 + 11 +401.9712333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +158.1185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +151.1185414937121 + 30 +0.0 + 11 +394.4212333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +150.7935414937123 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +149.5185414937123 + 30 +0.0 + 11 +394.4212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +142.5185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +140.9185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +133.9185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +132.3185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +125.3185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +124.9935414937124 + 31 +0.0 + 0 +LINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +123.7185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +116.7185414937123 + 30 +0.0 + 11 +394.4212333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +386.8962333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +115.1185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +108.1185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +115.4435414937124 + 31 +0.0 + 0 +LINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +386.8962333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +106.5185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +99.51854149371232 + 30 +0.0 + 11 +394.4212333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +386.8962333565396 + 21 +99.19354149371247 + 31 +0.0 + 0 +LINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +97.91854149371252 + 30 +0.0 + 11 +394.4212333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +90.91854149371235 + 30 +0.0 + 11 +394.4212333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +386.8962333565396 + 21 +98.24354149371248 + 31 +0.0 + 0 +LINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +386.8962333565396 + 21 +90.59354149371256 + 31 +0.0 + 0 +LINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +89.31854149371262 + 30 +0.0 + 11 +394.4212333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +82.31854149371244 + 30 +0.0 + 11 +394.4212333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +386.8962333565396 + 21 +89.64354149371258 + 31 +0.0 + 0 +LINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +386.8962333565396 + 21 +81.99354149371248 + 31 +0.0 + 0 +LINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +80.71854149371265 + 30 +0.0 + 11 +394.4212333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +73.71854149371242 + 30 +0.0 + 11 +394.4212333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +386.8962333565396 + 21 +81.04354149371255 + 31 +0.0 + 0 +LINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +386.8962333565396 + 21 +73.39354149371269 + 31 +0.0 + 0 +LINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +72.11854149371274 + 30 +0.0 + 11 +394.4212333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +65.11854149371246 + 30 +0.0 + 11 +394.4212333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +431 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +386.8962333565396 + 21 +72.44354149371259 + 31 +0.0 + 0 +LINE + 5 +432 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +386.8962333565396 + 21 +64.79354149371267 + 31 +0.0 + 0 +LINE + 5 +433 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +63.51854149371272 + 30 +0.0 + 11 +394.4212333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +434 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +56.51854149371255 + 30 +0.0 + 11 +394.4212333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +435 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +386.8962333565396 + 21 +63.84354149371268 + 31 +0.0 + 0 +LINE + 5 +436 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +386.8962333565396 + 21 +56.19354149371264 + 31 +0.0 + 0 +LINE + 5 +437 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +379.3462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +438 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +379.3462333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +439 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +43A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +150.7935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +150.7935414937123 + 31 +0.0 + 0 +LINE + 5 +43B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +43C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +43D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +149.8435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +43E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +43F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +379.3462333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +440 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +441 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +141.2435414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +442 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +133.5935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +443 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +132.3185414937125 + 30 +0.0 + 11 +379.3462333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +444 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +125.3185414937124 + 31 +0.0 + 0 +LINE + 5 +445 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +132.6435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +446 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +124.9935414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +124.9935414937124 + 31 +0.0 + 0 +LINE + 5 +447 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +123.7185414937126 + 30 +0.0 + 11 +379.3462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +448 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +449 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +124.0435414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +44A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +116.3935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +44B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +379.3462333565396 + 21 +115.1185414937124 + 31 +0.0 + 0 +LINE + 5 +44C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +108.1185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +44D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +115.4435414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +115.4435414937124 + 31 +0.0 + 0 +LINE + 5 +44E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +107.7935414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +44F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +106.5185414937126 + 30 +0.0 + 11 +379.3462333565396 + 21 +106.5185414937125 + 31 +0.0 + 0 +LINE + 5 +450 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +99.51854149371235 + 30 +0.0 + 11 +379.3462333565396 + 21 +99.51854149371246 + 31 +0.0 + 0 +LINE + 5 +451 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +106.8435414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +452 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +99.19354149371247 + 30 +0.0 + 11 +371.8212333565397 + 21 +99.19354149371247 + 31 +0.0 + 0 +LINE + 5 +453 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +97.91854149371255 + 30 +0.0 + 11 +379.3462333565396 + 21 +97.91854149371244 + 31 +0.0 + 0 +LINE + 5 +454 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +90.91854149371238 + 30 +0.0 + 11 +379.3462333565396 + 21 +90.91854149371255 + 31 +0.0 + 0 +LINE + 5 +455 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +98.24354149371248 + 30 +0.0 + 11 +371.8212333565397 + 21 +98.24354149371248 + 31 +0.0 + 0 +LINE + 5 +456 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +90.59354149371256 + 30 +0.0 + 11 +371.8212333565397 + 21 +90.59354149371256 + 31 +0.0 + 0 +LINE + 5 +457 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +89.31854149371264 + 30 +0.0 + 11 +379.3462333565396 + 21 +89.31854149371247 + 31 +0.0 + 0 +LINE + 5 +458 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +82.31854149371247 + 30 +0.0 + 11 +379.3462333565396 + 21 +82.31854149371259 + 31 +0.0 + 0 +LINE + 5 +459 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +89.64354149371258 + 30 +0.0 + 11 +371.8212333565397 + 21 +89.64354149371258 + 31 +0.0 + 0 +LINE + 5 +45A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +81.99354149371254 + 30 +0.0 + 11 +371.8212333565397 + 21 +81.99354149371248 + 31 +0.0 + 0 +LINE + 5 +45B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +80.71854149371268 + 30 +0.0 + 11 +379.3462333565396 + 21 +80.71854149371256 + 31 +0.0 + 0 +LINE + 5 +45C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +73.71854149371245 + 30 +0.0 + 11 +379.3462333565396 + 21 +73.71854149371256 + 31 +0.0 + 0 +LINE + 5 +45D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +81.04354149371244 + 30 +0.0 + 11 +371.8212333565397 + 21 +81.04354149371255 + 31 +0.0 + 0 +LINE + 5 +45E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +73.39354149371269 + 30 +0.0 + 11 +371.8212333565397 + 21 +73.39354149371269 + 31 +0.0 + 0 +LINE + 5 +45F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +72.11854149371277 + 30 +0.0 + 11 +379.3462333565396 + 21 +72.11854149371254 + 31 +0.0 + 0 +LINE + 5 +460 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +65.11854149371248 + 30 +0.0 + 11 +379.3462333565396 + 21 +65.11854149371266 + 31 +0.0 + 0 +LINE + 5 +461 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +72.44354149371259 + 30 +0.0 + 11 +371.8212333565397 + 21 +72.44354149371259 + 31 +0.0 + 0 +LINE + 5 +462 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +64.79354149371267 + 30 +0.0 + 11 +371.8212333565397 + 21 +64.79354149371267 + 31 +0.0 + 0 +LINE + 5 +463 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +63.51854149371275 + 30 +0.0 + 11 +379.3462333565396 + 21 +63.51854149371258 + 31 +0.0 + 0 +LINE + 5 +464 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +56.51854149371258 + 30 +0.0 + 11 +379.3462333565396 + 21 +56.51854149371269 + 31 +0.0 + 0 +LINE + 5 +465 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +63.84354149371268 + 30 +0.0 + 11 +371.8212333565397 + 21 +63.84354149371268 + 31 +0.0 + 0 +LINE + 5 +466 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +56.19354149371264 + 30 +0.0 + 11 +371.8212333565397 + 21 +56.19354149371264 + 31 +0.0 + 0 +CIRCLE + 5 +467 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbCircle + 10 +540.2337333565396 + 20 +99.31854149371193 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +468 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbCircle + 10 +368.2337333565396 + 20 +127.3185414937121 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +490 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +46A + 3 +ACAD_TABLESTYLE +350 +48F + 3 +AcDbVariableDictionary +350 +48D + 0 +DICTIONARY + 5 +3D +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +3E + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +3A + 0 +DICTIONARY + 5 +490 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +46A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +46B + 3 +A1 +350 +46C + 3 +A2 +350 +46D + 3 +A3 +350 +46E + 3 +A4 +350 +46F + 3 +A5 +350 +470 + 3 +A6 +350 +471 + 3 +A7 +350 +472 + 3 +A8 +350 +473 + 3 +A9 +350 +474 + 3 +B0 +350 +475 + 3 +B1 +350 +476 + 3 +B2 +350 +477 + 3 +B3 +350 +478 + 3 +B4 +350 +479 + 3 +B5 +350 +47A + 3 +B6 +350 +47B + 3 +B7 +350 +47C + 3 +B8 +350 +47D + 3 +B9 +350 +47E + 3 +C0 +350 +47F + 3 +C1 +350 +480 + 3 +C2 +350 +481 + 3 +C3 +350 +482 + 3 +C4 +350 +483 + 3 +C5 +350 +484 + 3 +C6 +350 +485 + 3 +C7 +350 +486 + 3 +C8 +350 +487 + 3 +C9 +350 +488 + 3 +D0 +350 +489 + 3 +D1 +350 +48A + 3 +D2 +350 +48B + 0 +DICTIONARY + 5 +48F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +48D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +48E + 0 +DICTIONARY + 5 +3E +102 +{ACAD_REACTORS +330 +3D +102 +} +330 +3D +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +469 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MATERIAL + 5 +3A +102 +{ACAD_REACTORS +330 +1B +102 +} +102 +{ACAD_XDICTIONARY +360 +3B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +46B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +46C +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +46D +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +46E +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +46F +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +470 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +471 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +472 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +473 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +474 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +475 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +476 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +477 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +478 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +479 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47A +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47C +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47D +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47E +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47F +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +480 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +481 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +482 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +483 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +484 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +485 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +486 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +487 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +488 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +489 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48A +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +48E +102 +{ACAD_REACTORS +330 +48D +102 +} +330 +48D +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARY + 5 +3B +330 +3A +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D714.par b/LaiPuLaser/TempMarkData/D714.par new file mode 100644 index 0000000..0cc2429 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D714.par differ diff --git a/LaiPuLaser/TempMarkData/D714.txt b/LaiPuLaser/TempMarkData/D714.txt new file mode 100644 index 0000000..18d3ec9 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D714.txt @@ -0,0 +1,8 @@ +1 +60.171 +-7.872 +60 +50 +600 +24 +1 diff --git a/LaiPuLaser/TempMarkData/D812.are b/LaiPuLaser/TempMarkData/D812.are new file mode 100644 index 0000000..06cc203 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D812.are differ diff --git a/LaiPuLaser/TempMarkData/D812.dxf b/LaiPuLaser/TempMarkData/D812.dxf new file mode 100644 index 0000000..0b71105 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D812.dxf @@ -0,0 +1,17636 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +367.7337333565396 + 20 +56.19354149371256 + 30 +0.0 + 9 +$EXTMAX + 10 +540.7337333565396 + 20 +158.4435414937122 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458950.924087581 + 9 +$TDUCREATE + 40 +2458950.590754248 + 9 +$TDUPDATE + 40 +2458950.924877048 + 9 +$TDUUPDATE + 40 +2458950.591543715 + 9 +$TDINDWG + 40 +0.0007920023 + 9 +$TDUSRTIMER + 40 +0.0007916435 + 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 +492 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{EFBA544F-0245-4C3E-9E31-B585AC739942} + 9 +$VERSIONGUID + 2 +{5F283802-EBA0-40CC-9CDB-8093E268E4F0} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +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 +469 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +611.6728936990377 + 22 +-18.66983559117439 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +263.4738200953373 + 41 +2.610163918725906 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3D +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +LAYER + 5 +34 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +3A + 0 +LAYER + 5 +37 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +D714 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +38 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +39 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2D + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +31 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +32 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +33 +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +522.5712333565397 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +530.0962333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +125.3185414937122 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +124.9935414937122 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +123.7185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +530.0962333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +522.5712333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +530.0962333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +108.1185414937123 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +115.4435414937122 + 30 +0.0 + 11 +522.5712333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +522.5712333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +106.5185414937124 + 30 +0.0 + 11 +530.0962333565395 + 21 +106.5185414937123 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +99.5185414937122 + 30 +0.0 + 11 +530.0962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +522.5712333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +99.19354149371244 + 30 +0.0 + 11 +522.5712333565397 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +530.0962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +530.0962333565395 + 21 +90.91854149371241 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +98.24354149371234 + 30 +0.0 + 11 +522.5712333565397 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +90.59354149371254 + 30 +0.0 + 11 +522.5712333565397 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +530.0962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +82.31854149371233 + 30 +0.0 + 11 +530.0962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +89.64354149371255 + 30 +0.0 + 11 +522.5712333565397 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +81.99354149371246 + 30 +0.0 + 11 +522.5712333565397 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +530.0962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +530.0962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +81.04354149371241 + 30 +0.0 + 11 +522.5712333565397 + 21 +81.04354149371241 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +73.39354149371266 + 30 +0.0 + 11 +522.5712333565397 + 21 +73.39354149371255 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +72.11854149371263 + 30 +0.0 + 11 +530.0962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +530.0962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +72.44354149371256 + 30 +0.0 + 11 +522.5712333565397 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +64.79354149371264 + 30 +0.0 + 11 +522.5712333565397 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +530.0962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +536.6462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +530.0962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +63.84354149371254 + 30 +0.0 + 11 +522.5712333565397 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +526.1712333565396 + 20 +56.19354149371262 + 30 +0.0 + 11 +522.5712333565397 + 21 +56.19354149371256 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +158.1185414937123 + 30 +0.0 + 11 +515.0212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +515.0212333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +158.4435414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +150.7935414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +515.0212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +142.5185414937121 + 30 +0.0 + 11 +515.0212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +149.8435414937121 + 30 +0.0 + 11 +507.4962333565397 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +142.1935414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +515.0212333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +133.9185414937121 + 30 +0.0 + 11 +515.0212333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +141.2435414937122 + 30 +0.0 + 11 +507.4962333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +133.5935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +132.3185414937123 + 30 +0.0 + 11 +515.0212333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +125.3185414937122 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +132.6435414937122 + 30 +0.0 + 11 +507.4962333565396 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +124.9935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +124.9935414937122 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +123.7185414937124 + 30 +0.0 + 11 +515.0212333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +515.0212333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +124.0435414937124 + 30 +0.0 + 11 +507.4962333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +116.3935414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +515.0212333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +108.1185414937123 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +115.4435414937122 + 30 +0.0 + 11 +507.4962333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +107.7935414937124 + 30 +0.0 + 11 +507.4962333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +106.5185414937124 + 30 +0.0 + 11 +515.0212333565395 + 21 +106.5185414937123 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +99.5185414937122 + 30 +0.0 + 11 +515.0212333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +106.8435414937123 + 30 +0.0 + 11 +507.4962333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +507.4962333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +97.91854149371252 + 30 +0.0 + 11 +515.0212333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +90.91854149371235 + 30 +0.0 + 11 +515.0212333565395 + 21 +90.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +98.24354149371234 + 30 +0.0 + 11 +507.4962333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +507.4962333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +89.31854149371262 + 30 +0.0 + 11 +515.0212333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +82.31854149371233 + 30 +0.0 + 11 +515.0212333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +507.4962333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +81.99354149371246 + 30 +0.0 + 11 +507.4962333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +80.71854149371265 + 30 +0.0 + 11 +515.0212333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +73.71854149371242 + 30 +0.0 + 11 +515.0212333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +507.4962333565396 + 21 +81.04354149371241 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +507.4962333565396 + 21 +73.39354149371255 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +72.11854149371263 + 30 +0.0 + 11 +515.0212333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +65.11854149371246 + 30 +0.0 + 11 +515.0212333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +507.4962333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +507.4962333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +63.51854149371272 + 30 +0.0 + 11 +515.0212333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +521.5712333565397 + 20 +56.51854149371255 + 30 +0.0 + 11 +515.0212333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +63.84354149371254 + 30 +0.0 + 11 +507.4962333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +511.0962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +507.4962333565396 + 21 +56.19354149371256 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +158.1185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +158.4435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +150.7935414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +142.5185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +149.8435414937121 + 30 +0.0 + 11 +492.4212333565396 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +142.1935414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +499.9462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +141.2435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +133.5935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +132.6435414937122 + 30 +0.0 + 11 +492.4212333565396 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +124.9935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +123.7185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +499.9462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +124.0435414937124 + 30 +0.0 + 11 +492.4212333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +116.3935414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +499.9462333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +115.4435414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +107.7935414937124 + 30 +0.0 + 11 +492.4212333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +106.5185414937124 + 30 +0.0 + 11 +499.9462333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +99.5185414937122 + 30 +0.0 + 11 +499.9462333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +106.8435414937123 + 30 +0.0 + 11 +492.4212333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +492.4212333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +499.9462333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +499.9462333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +492.4212333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +492.4212333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +499.9462333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +82.31854149371233 + 30 +0.0 + 11 +499.9462333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +492.4212333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +492.4212333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +499.9462333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +499.9462333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +492.4212333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +492.4212333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +72.11854149371263 + 30 +0.0 + 11 +499.9462333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +499.9462333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +492.4212333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +492.4212333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +499.9462333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +506.4962333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +499.9462333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +492.4212333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +496.0212333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +492.4212333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +150.7935414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +149.8435414937121 + 30 +0.0 + 11 +477.3462333565398 + 21 +149.8435414937121 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +484.8712333565395 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +484.8712333565395 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565397 + 20 +141.2435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +484.8712333565395 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +477.3462333565398 + 21 +132.6435414937122 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +484.8712333565395 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +477.3462333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +484.8712333565395 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +477.3462333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +484.8712333565395 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +484.8712333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +477.3462333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +477.3462333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +484.8712333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +484.8712333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +477.3462333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +477.3462333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +484.8712333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +484.8712333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +477.3462333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +477.3462333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +484.8712333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +484.8712333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +477.3462333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +477.3462333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +484.8712333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +484.8712333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +477.3462333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +477.3462333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +484.8712333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +491.4212333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +484.8712333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +477.3462333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +480.9462333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +477.3462333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +462.2712333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +469.7962333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +469.7962333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +469.7962333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +462.2712333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +469.7962333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +462.2712333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +469.7962333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +462.2712333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +469.7962333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +469.7962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +462.2712333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +462.2712333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +469.7962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +469.7962333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +462.2712333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +462.2712333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +469.7962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +469.7962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +462.2712333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +462.2712333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +469.7962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +469.7962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +462.2712333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +462.2712333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +469.7962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +469.7962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +462.2712333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +462.2712333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +469.7962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +476.3462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +469.7962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +462.2712333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +465.8712333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +462.2712333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +158.1185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +151.1185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +151.1185414937122 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +150.7935414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +150.7935414937121 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +149.5185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +142.5185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +149.8435414937121 + 30 +0.0 + 11 +447.1962333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +140.9185414937124 + 30 +0.0 + 11 +454.7212333565396 + 21 +140.9185414937122 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +133.9185414937121 + 30 +0.0 + 11 +454.7212333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +141.2435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +141.2435414937122 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +132.3185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +132.3185414937123 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +125.3185414937122 + 30 +0.0 + 11 +454.7212333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +447.1962333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +123.7185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +116.7185414937123 + 30 +0.0 + 11 +454.7212333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +447.1962333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +115.1185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +108.1185414937122 + 30 +0.0 + 11 +454.7212333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +447.1962333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +106.5185414937125 + 30 +0.0 + 11 +454.7212333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +454.7212333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +447.1962333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +447.1962333565397 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +454.7212333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +454.7212333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +447.1962333565397 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +447.1962333565397 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +454.7212333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +454.7212333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +447.1962333565397 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +447.1962333565397 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +454.7212333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +454.7212333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +447.1962333565397 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +447.1962333565397 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +454.7212333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +454.7212333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +447.1962333565397 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +447.1962333565397 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +454.7212333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +461.2712333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +454.7212333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +447.1962333565397 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +450.7962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +447.1962333565397 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +439.6462333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +439.6462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +439.6462333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +432.1212333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +439.6462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +432.1212333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +439.6462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +432.1212333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +439.6462333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +99.51854149371232 + 30 +0.0 + 11 +439.6462333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +432.1212333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +432.1212333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +97.91854149371252 + 30 +0.0 + 11 +439.6462333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +90.91854149371235 + 30 +0.0 + 11 +439.6462333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +432.1212333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +432.1212333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +89.31854149371262 + 30 +0.0 + 11 +439.6462333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +82.31854149371244 + 30 +0.0 + 11 +439.6462333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +432.1212333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +432.1212333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +80.71854149371265 + 30 +0.0 + 11 +439.6462333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +73.71854149371242 + 30 +0.0 + 11 +439.6462333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +432.1212333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +432.1212333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +72.11854149371274 + 30 +0.0 + 11 +439.6462333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +65.11854149371246 + 30 +0.0 + 11 +439.6462333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +432.1212333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +432.1212333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +63.51854149371272 + 30 +0.0 + 11 +439.6462333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +446.1962333565397 + 20 +56.51854149371255 + 30 +0.0 + 11 +439.6462333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +432.1212333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +435.7212333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +432.1212333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +424.5712333565397 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +424.5712333565397 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +424.5712333565397 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +417.0462333565396 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +424.5712333565397 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +417.0462333565396 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +424.5712333565397 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +417.0462333565396 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +424.5712333565397 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +424.5712333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +417.0462333565396 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +417.0462333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +424.5712333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +424.5712333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +417.0462333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +417.0462333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +424.5712333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +424.5712333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +417.0462333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +417.0462333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +424.5712333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +424.5712333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +417.0462333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +417.0462333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +424.5712333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +424.5712333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +417.0462333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +417.0462333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +424.5712333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +431.1212333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +424.5712333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +417.0462333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +420.6462333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +417.0462333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +409.4962333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +150.7935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +150.7935414937122 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +409.4962333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +149.8435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +141.2435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +133.5935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +132.3185414937124 + 30 +0.0 + 11 +409.4962333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +132.6435414937122 + 30 +0.0 + 11 +401.9712333565398 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +124.9935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +124.9935414937123 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +123.7185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +409.4962333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +124.0435414937124 + 30 +0.0 + 11 +401.9712333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +116.3935414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +108.1185414937122 + 30 +0.0 + 11 +409.4962333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +115.4435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +115.4435414937123 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +107.7935414937124 + 30 +0.0 + 11 +401.9712333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565397 + 20 +106.5185414937125 + 30 +0.0 + 11 +409.4962333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +99.51854149371232 + 30 +0.0 + 11 +409.4962333565395 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565397 + 20 +106.8435414937123 + 30 +0.0 + 11 +401.9712333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +99.19354149371244 + 30 +0.0 + 11 +401.9712333565396 + 21 +99.19354149371244 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +97.91854149371252 + 30 +0.0 + 11 +409.4962333565395 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +90.91854149371235 + 30 +0.0 + 11 +409.4962333565395 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +98.24354149371246 + 30 +0.0 + 11 +401.9712333565396 + 21 +98.24354149371246 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +90.59354149371254 + 30 +0.0 + 11 +401.9712333565396 + 21 +90.59354149371254 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +89.31854149371262 + 30 +0.0 + 11 +409.4962333565395 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +82.31854149371244 + 30 +0.0 + 11 +409.4962333565395 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +89.64354149371255 + 30 +0.0 + 11 +401.9712333565396 + 21 +89.64354149371255 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +81.99354149371251 + 30 +0.0 + 11 +401.9712333565396 + 21 +81.99354149371246 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +80.71854149371265 + 30 +0.0 + 11 +409.4962333565395 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +73.71854149371242 + 30 +0.0 + 11 +409.4962333565395 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +81.04354149371241 + 30 +0.0 + 11 +401.9712333565396 + 21 +81.04354149371252 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +73.39354149371266 + 30 +0.0 + 11 +401.9712333565396 + 21 +73.39354149371266 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +72.11854149371274 + 30 +0.0 + 11 +409.4962333565395 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +65.11854149371246 + 30 +0.0 + 11 +409.4962333565395 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +72.44354149371256 + 30 +0.0 + 11 +401.9712333565396 + 21 +72.44354149371256 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +64.79354149371264 + 30 +0.0 + 11 +401.9712333565396 + 21 +64.79354149371264 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +63.51854149371272 + 30 +0.0 + 11 +409.4962333565395 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +416.0462333565396 + 20 +56.51854149371255 + 30 +0.0 + 11 +409.4962333565395 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +63.84354149371265 + 30 +0.0 + 11 +401.9712333565396 + 21 +63.84354149371265 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +405.5712333565396 + 20 +56.19354149371262 + 30 +0.0 + 11 +401.9712333565396 + 21 +56.19354149371262 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +158.1185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +151.1185414937121 + 30 +0.0 + 11 +394.4212333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +158.4435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +150.7935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +150.7935414937123 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +149.5185414937123 + 30 +0.0 + 11 +394.4212333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +142.5185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +149.8435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +142.1935414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +140.9185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +133.9185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +141.2435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +133.5935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +132.3185414937124 + 30 +0.0 + 11 +394.4212333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +125.3185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +125.3185414937123 + 31 +0.0 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +132.6435414937122 + 30 +0.0 + 11 +386.8962333565397 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +124.9935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +124.9935414937124 + 31 +0.0 + 0 +LINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +123.7185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +116.7185414937123 + 30 +0.0 + 11 +394.4212333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +124.0435414937124 + 30 +0.0 + 11 +386.8962333565397 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +116.3935414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +115.1185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +115.1185414937123 + 31 +0.0 + 0 +LINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +108.1185414937122 + 30 +0.0 + 11 +394.4212333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +115.4435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +115.4435414937124 + 31 +0.0 + 0 +LINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +107.7935414937124 + 30 +0.0 + 11 +386.8962333565397 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +106.5185414937125 + 30 +0.0 + 11 +394.4212333565396 + 21 +106.5185414937124 + 31 +0.0 + 0 +LINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +99.51854149371232 + 30 +0.0 + 11 +394.4212333565396 + 21 +99.51854149371243 + 31 +0.0 + 0 +LINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565396 + 20 +106.8435414937123 + 30 +0.0 + 11 +386.8962333565397 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +99.19354149371244 + 30 +0.0 + 11 +386.8962333565396 + 21 +99.19354149371247 + 31 +0.0 + 0 +LINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +97.91854149371252 + 30 +0.0 + 11 +394.4212333565396 + 21 +97.91854149371241 + 31 +0.0 + 0 +LINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +90.91854149371235 + 30 +0.0 + 11 +394.4212333565396 + 21 +90.91854149371252 + 31 +0.0 + 0 +LINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +98.24354149371246 + 30 +0.0 + 11 +386.8962333565396 + 21 +98.24354149371248 + 31 +0.0 + 0 +LINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +90.59354149371254 + 30 +0.0 + 11 +386.8962333565396 + 21 +90.59354149371256 + 31 +0.0 + 0 +LINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +89.31854149371262 + 30 +0.0 + 11 +394.4212333565396 + 21 +89.31854149371244 + 31 +0.0 + 0 +LINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +82.31854149371244 + 30 +0.0 + 11 +394.4212333565396 + 21 +82.31854149371256 + 31 +0.0 + 0 +LINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +89.64354149371255 + 30 +0.0 + 11 +386.8962333565396 + 21 +89.64354149371258 + 31 +0.0 + 0 +LINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +81.99354149371251 + 30 +0.0 + 11 +386.8962333565396 + 21 +81.99354149371248 + 31 +0.0 + 0 +LINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +80.71854149371265 + 30 +0.0 + 11 +394.4212333565396 + 21 +80.71854149371254 + 31 +0.0 + 0 +LINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +73.71854149371242 + 30 +0.0 + 11 +394.4212333565396 + 21 +73.71854149371254 + 31 +0.0 + 0 +LINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +81.04354149371241 + 30 +0.0 + 11 +386.8962333565396 + 21 +81.04354149371255 + 31 +0.0 + 0 +LINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +73.39354149371266 + 30 +0.0 + 11 +386.8962333565396 + 21 +73.39354149371269 + 31 +0.0 + 0 +LINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +72.11854149371274 + 30 +0.0 + 11 +394.4212333565396 + 21 +72.11854149371251 + 31 +0.0 + 0 +LINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +65.11854149371246 + 30 +0.0 + 11 +394.4212333565396 + 21 +65.11854149371263 + 31 +0.0 + 0 +LINE + 5 +431 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +72.44354149371256 + 30 +0.0 + 11 +386.8962333565396 + 21 +72.44354149371259 + 31 +0.0 + 0 +LINE + 5 +432 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +64.79354149371264 + 30 +0.0 + 11 +386.8962333565396 + 21 +64.79354149371267 + 31 +0.0 + 0 +LINE + 5 +433 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +63.51854149371272 + 30 +0.0 + 11 +394.4212333565396 + 21 +63.51854149371255 + 31 +0.0 + 0 +LINE + 5 +434 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +400.9712333565398 + 20 +56.51854149371255 + 30 +0.0 + 11 +394.4212333565396 + 21 +56.51854149371266 + 31 +0.0 + 0 +LINE + 5 +435 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +63.84354149371265 + 30 +0.0 + 11 +386.8962333565396 + 21 +63.84354149371268 + 31 +0.0 + 0 +LINE + 5 +436 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +390.4962333565395 + 20 +56.19354149371262 + 30 +0.0 + 11 +386.8962333565396 + 21 +56.19354149371264 + 31 +0.0 + 0 +LINE + 5 +437 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +158.1185414937124 + 30 +0.0 + 11 +379.3462333565396 + 21 +158.1185414937121 + 31 +0.0 + 0 +LINE + 5 +438 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +151.1185414937121 + 30 +0.0 + 11 +379.3462333565396 + 21 +151.1185414937123 + 31 +0.0 + 0 +LINE + 5 +439 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +158.4435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +158.4435414937122 + 31 +0.0 + 0 +LINE + 5 +43A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +150.7935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +150.7935414937123 + 31 +0.0 + 0 +LINE + 5 +43B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +149.5185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +149.5185414937122 + 31 +0.0 + 0 +LINE + 5 +43C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +142.5185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +142.5185414937122 + 31 +0.0 + 0 +LINE + 5 +43D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +149.8435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +149.8435414937123 + 31 +0.0 + 0 +LINE + 5 +43E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +142.1935414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +142.1935414937122 + 31 +0.0 + 0 +LINE + 5 +43F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +140.9185414937124 + 30 +0.0 + 11 +379.3462333565396 + 21 +140.9185414937123 + 31 +0.0 + 0 +LINE + 5 +440 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +133.9185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +133.9185414937124 + 31 +0.0 + 0 +LINE + 5 +441 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +141.2435414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +141.2435414937123 + 31 +0.0 + 0 +LINE + 5 +442 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +133.5935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +133.5935414937123 + 31 +0.0 + 0 +LINE + 5 +443 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +132.3185414937125 + 30 +0.0 + 11 +379.3462333565396 + 21 +132.3185414937124 + 31 +0.0 + 0 +LINE + 5 +444 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +125.3185414937122 + 30 +0.0 + 11 +379.3462333565396 + 21 +125.3185414937124 + 31 +0.0 + 0 +LINE + 5 +445 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +132.6435414937122 + 30 +0.0 + 11 +371.8212333565398 + 21 +132.6435414937123 + 31 +0.0 + 0 +LINE + 5 +446 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +124.9935414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +124.9935414937124 + 31 +0.0 + 0 +LINE + 5 +447 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +123.7185414937126 + 30 +0.0 + 11 +379.3462333565396 + 21 +123.7185414937123 + 31 +0.0 + 0 +LINE + 5 +448 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +116.7185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +116.7185414937123 + 31 +0.0 + 0 +LINE + 5 +449 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +124.0435414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +124.0435414937124 + 31 +0.0 + 0 +LINE + 5 +44A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +116.3935414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +116.3935414937123 + 31 +0.0 + 0 +LINE + 5 +44B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +115.1185414937125 + 30 +0.0 + 11 +379.3462333565396 + 21 +115.1185414937124 + 31 +0.0 + 0 +LINE + 5 +44C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +108.1185414937123 + 30 +0.0 + 11 +379.3462333565396 + 21 +108.1185414937125 + 31 +0.0 + 0 +LINE + 5 +44D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +115.4435414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +115.4435414937124 + 31 +0.0 + 0 +LINE + 5 +44E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +107.7935414937124 + 30 +0.0 + 11 +371.8212333565398 + 21 +107.7935414937124 + 31 +0.0 + 0 +LINE + 5 +44F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565397 + 20 +106.5185414937126 + 30 +0.0 + 11 +379.3462333565396 + 21 +106.5185414937125 + 31 +0.0 + 0 +LINE + 5 +450 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +99.51854149371235 + 30 +0.0 + 11 +379.3462333565396 + 21 +99.51854149371246 + 31 +0.0 + 0 +LINE + 5 +451 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565397 + 20 +106.8435414937123 + 30 +0.0 + 11 +371.8212333565398 + 21 +106.8435414937123 + 31 +0.0 + 0 +LINE + 5 +452 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +99.19354149371247 + 30 +0.0 + 11 +371.8212333565397 + 21 +99.19354149371247 + 31 +0.0 + 0 +LINE + 5 +453 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +97.91854149371255 + 30 +0.0 + 11 +379.3462333565396 + 21 +97.91854149371244 + 31 +0.0 + 0 +LINE + 5 +454 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +90.91854149371238 + 30 +0.0 + 11 +379.3462333565396 + 21 +90.91854149371255 + 31 +0.0 + 0 +LINE + 5 +455 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +98.24354149371248 + 30 +0.0 + 11 +371.8212333565397 + 21 +98.24354149371248 + 31 +0.0 + 0 +LINE + 5 +456 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +90.59354149371256 + 30 +0.0 + 11 +371.8212333565397 + 21 +90.59354149371256 + 31 +0.0 + 0 +LINE + 5 +457 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +89.31854149371264 + 30 +0.0 + 11 +379.3462333565396 + 21 +89.31854149371247 + 31 +0.0 + 0 +LINE + 5 +458 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +82.31854149371247 + 30 +0.0 + 11 +379.3462333565396 + 21 +82.31854149371259 + 31 +0.0 + 0 +LINE + 5 +459 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +89.64354149371258 + 30 +0.0 + 11 +371.8212333565397 + 21 +89.64354149371258 + 31 +0.0 + 0 +LINE + 5 +45A +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +81.99354149371254 + 30 +0.0 + 11 +371.8212333565397 + 21 +81.99354149371248 + 31 +0.0 + 0 +LINE + 5 +45B +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +80.71854149371268 + 30 +0.0 + 11 +379.3462333565396 + 21 +80.71854149371256 + 31 +0.0 + 0 +LINE + 5 +45C +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +73.71854149371245 + 30 +0.0 + 11 +379.3462333565396 + 21 +73.71854149371256 + 31 +0.0 + 0 +LINE + 5 +45D +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +81.04354149371244 + 30 +0.0 + 11 +371.8212333565397 + 21 +81.04354149371255 + 31 +0.0 + 0 +LINE + 5 +45E +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +73.39354149371269 + 30 +0.0 + 11 +371.8212333565397 + 21 +73.39354149371269 + 31 +0.0 + 0 +LINE + 5 +45F +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +72.11854149371277 + 30 +0.0 + 11 +379.3462333565396 + 21 +72.11854149371254 + 31 +0.0 + 0 +LINE + 5 +460 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +65.11854149371248 + 30 +0.0 + 11 +379.3462333565396 + 21 +65.11854149371266 + 31 +0.0 + 0 +LINE + 5 +461 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +72.44354149371259 + 30 +0.0 + 11 +371.8212333565397 + 21 +72.44354149371259 + 31 +0.0 + 0 +LINE + 5 +462 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +64.79354149371267 + 30 +0.0 + 11 +371.8212333565397 + 21 +64.79354149371267 + 31 +0.0 + 0 +LINE + 5 +463 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +63.51854149371275 + 30 +0.0 + 11 +379.3462333565396 + 21 +63.51854149371258 + 31 +0.0 + 0 +LINE + 5 +464 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +385.8962333565396 + 20 +56.51854149371258 + 30 +0.0 + 11 +379.3462333565396 + 21 +56.51854149371269 + 31 +0.0 + 0 +LINE + 5 +465 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +63.84354149371268 + 30 +0.0 + 11 +371.8212333565397 + 21 +63.84354149371268 + 31 +0.0 + 0 +LINE + 5 +466 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbLine + 10 +375.4212333565396 + 20 +56.19354149371264 + 30 +0.0 + 11 +371.8212333565397 + 21 +56.19354149371264 + 31 +0.0 + 0 +CIRCLE + 5 +467 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbCircle + 10 +540.2337333565396 + 20 +91.31854149371193 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +468 +330 +21 +100 +AcDbEntity + 8 +D714 +370 + -1 +100 +AcDbCircle + 10 +368.2337333565396 + 20 +135.3185414937121 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +490 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +46A + 3 +ACAD_TABLESTYLE +350 +48F + 3 +AcDbVariableDictionary +350 +48D + 0 +DICTIONARY + 5 +3D +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +3E + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +3A + 0 +DICTIONARY + 5 +490 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +46A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +46B + 3 +A1 +350 +46C + 3 +A2 +350 +46D + 3 +A3 +350 +46E + 3 +A4 +350 +46F + 3 +A5 +350 +470 + 3 +A6 +350 +471 + 3 +A7 +350 +472 + 3 +A8 +350 +473 + 3 +A9 +350 +474 + 3 +B0 +350 +475 + 3 +B1 +350 +476 + 3 +B2 +350 +477 + 3 +B3 +350 +478 + 3 +B4 +350 +479 + 3 +B5 +350 +47A + 3 +B6 +350 +47B + 3 +B7 +350 +47C + 3 +B8 +350 +47D + 3 +B9 +350 +47E + 3 +C0 +350 +47F + 3 +C1 +350 +480 + 3 +C2 +350 +481 + 3 +C3 +350 +482 + 3 +C4 +350 +483 + 3 +C5 +350 +484 + 3 +C6 +350 +485 + 3 +C7 +350 +486 + 3 +C8 +350 +487 + 3 +C9 +350 +488 + 3 +D0 +350 +489 + 3 +D1 +350 +48A + 3 +D2 +350 +48B + 0 +DICTIONARY + 5 +48F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +48D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +48E + 0 +DICTIONARY + 5 +3E +102 +{ACAD_REACTORS +330 +3D +102 +} +330 +3D +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +469 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MATERIAL + 5 +3A +102 +{ACAD_REACTORS +330 +1B +102 +} +102 +{ACAD_XDICTIONARY +360 +3B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +46B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +46C +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +46D +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +46E +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +46F +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +470 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +471 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +472 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +473 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +474 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +475 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +476 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +477 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +478 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +479 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47A +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +47C +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47D +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47E +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47F +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +480 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +481 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +482 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +483 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +484 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +485 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +486 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +487 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +488 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +489 +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48A +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48B +102 +{ACAD_REACTORS +330 +46A +102 +} +330 +46A +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +48E +102 +{ACAD_REACTORS +330 +48D +102 +} +330 +48D +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARY + 5 +3B +330 +3A +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D812.par b/LaiPuLaser/TempMarkData/D812.par new file mode 100644 index 0000000..67642d5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D812.par differ diff --git a/LaiPuLaser/TempMarkData/D979 原图.dxf b/LaiPuLaser/TempMarkData/D979 原图.dxf new file mode 100644 index 0000000..6db06e2 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D979 原图.dxf @@ -0,0 +1,14070 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5256950365445 + 20 +-43.42428524771742 + 30 +-0.0015258207003583 + 9 +$EXTMAX + 10 +0.5319218762823539 + 20 +63.43698162077578 + 30 +0.0000000349246037 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458795.707209791 + 9 +$TDUCREATE + 40 +2458795.373876458 + 9 +$TDUPDATE + 40 +2458795.707682465 + 9 +$TDUUPDATE + 40 +2458795.374349132 + 9 +$TDINDWG + 40 +0.0004743056 + 9 +$TDUSRTIMER + 40 +0.0004739352 + 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 +3C0 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{6312F6AF-95BB-4F8D-8224-3440C65C30F4} + 9 +$VERSIONGUID + 2 +{FAB046C1-4DA3-4C40-BD31-E5480C6A91DF} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +3BF +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-68.12234691393482 + 22 +55.56210548948664 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +275.4657647786353 + 41 +1.735251798561151 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +-183.0 + 20 +50.0 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +62.84500000000003 + 30 +0.0 + 11 +-176.3581777686141 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +55.15500000000002 + 30 +0.0 + 11 +-176.3581777686141 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +63.42000000000004 + 30 +0.0 + 11 +-161.2578763949082 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +54.58000000000001 + 30 +0.0 + 11 +-161.2578763949082 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +53.04500000000004 + 30 +0.0 + 11 +-176.3581777686141 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +45.35500000000005 + 30 +0.0 + 11 +-176.3581777686141 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +53.62000000000003 + 30 +0.0 + 11 +-161.2578763949082 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +44.78000000000003 + 30 +0.0 + 11 +-161.2578763949082 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +43.24500000000003 + 30 +0.0 + 11 +-176.3581777686141 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +35.55500000000004 + 30 +0.0 + 11 +-176.3581777686141 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +43.82000000000005 + 30 +0.0 + 11 +-161.2578763949082 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +34.98000000000002 + 30 +0.0 + 11 +-161.2578763949082 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +33.44500000000005 + 30 +0.0 + 11 +-176.3581777686141 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +25.75500000000005 + 30 +0.0 + 11 +-176.3581777686141 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +34.02000000000004 + 30 +0.0 + 11 +-161.2578763949082 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +25.18000000000004 + 30 +0.0 + 11 +-161.2578763949082 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +23.64500000000004 + 30 +0.0 + 11 +-176.3581777686141 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +15.95500000000004 + 30 +0.0 + 11 +-176.3581777686141 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +24.22000000000006 + 30 +0.0 + 11 +-161.2578763949082 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +15.38000000000002 + 30 +0.0 + 11 +-161.2578763949082 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +13.84500000000005 + 30 +0.0 + 11 +-176.3581777686141 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +6.155000000000057 + 30 +0.0 + 11 +-176.3581777686141 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +14.42000000000004 + 30 +0.0 + 11 +-161.2578763949082 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +5.58000000000004 + 30 +0.0 + 11 +-161.2578763949082 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +4.045000000000044 + 30 +0.0 + 11 +-176.3581777686141 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +4.620000000000061 + 30 +0.0 + 11 +-161.2578763949082 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.3134821083391 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-176.3581777686141 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-170.3215608764847 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-161.2578763949082 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +62.84500000000003 + 30 +0.0 + 11 +-156.5381777686141 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +55.15500000000002 + 30 +0.0 + 11 +-156.5381777686141 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +63.42000000000004 + 30 +0.0 + 11 +-141.4378763949082 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +54.58000000000001 + 30 +0.0 + 11 +-141.4378763949082 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +53.04500000000004 + 30 +0.0 + 11 +-156.5381777686141 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +45.35500000000005 + 30 +0.0 + 11 +-156.5381777686141 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +53.62000000000003 + 30 +0.0 + 11 +-141.4378763949082 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +44.78000000000003 + 30 +0.0 + 11 +-141.4378763949082 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +43.24500000000003 + 30 +0.0 + 11 +-156.5381777686141 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +35.55500000000004 + 30 +0.0 + 11 +-156.5381777686141 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +43.82000000000005 + 30 +0.0 + 11 +-141.4378763949082 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +34.98000000000002 + 30 +0.0 + 11 +-141.4378763949082 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +33.44500000000005 + 30 +0.0 + 11 +-156.5381777686141 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +25.75500000000005 + 30 +0.0 + 11 +-156.5381777686141 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +34.02000000000004 + 30 +0.0 + 11 +-141.4378763949082 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +25.18000000000004 + 30 +0.0 + 11 +-141.4378763949082 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +23.64500000000004 + 30 +0.0 + 11 +-156.5381777686141 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +15.95500000000004 + 30 +0.0 + 11 +-156.5381777686141 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +24.22000000000006 + 30 +0.0 + 11 +-141.4378763949082 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +15.38000000000002 + 30 +0.0 + 11 +-141.4378763949082 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +13.84500000000005 + 30 +0.0 + 11 +-156.5381777686141 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +6.155000000000057 + 30 +0.0 + 11 +-156.5381777686141 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +14.42000000000004 + 30 +0.0 + 11 +-141.4378763949082 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +5.58000000000004 + 30 +0.0 + 11 +-141.4378763949082 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +4.045000000000044 + 30 +0.0 + 11 +-156.5381777686141 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +4.620000000000061 + 30 +0.0 + 11 +-141.4378763949082 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.4934821083391 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-156.5381777686141 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-150.5015608764847 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-141.4378763949082 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +62.84500000000003 + 30 +0.0 + 11 +-136.7181777686141 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +55.15500000000002 + 30 +0.0 + 11 +-136.7181777686141 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +63.42000000000004 + 30 +0.0 + 11 +-121.6178763949082 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +54.58000000000001 + 30 +0.0 + 11 +-121.6178763949082 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +53.04500000000004 + 30 +0.0 + 11 +-136.7181777686141 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +45.35500000000005 + 30 +0.0 + 11 +-136.7181777686141 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +53.62000000000003 + 30 +0.0 + 11 +-121.6178763949082 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +44.78000000000003 + 30 +0.0 + 11 +-121.6178763949082 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +43.24500000000003 + 30 +0.0 + 11 +-136.7181777686141 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +35.55500000000004 + 30 +0.0 + 11 +-136.7181777686141 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +43.82000000000005 + 30 +0.0 + 11 +-121.6178763949082 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +34.98000000000002 + 30 +0.0 + 11 +-121.6178763949082 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +33.44500000000005 + 30 +0.0 + 11 +-136.7181777686141 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +25.75500000000005 + 30 +0.0 + 11 +-136.7181777686141 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +34.02000000000004 + 30 +0.0 + 11 +-121.6178763949082 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +25.18000000000004 + 30 +0.0 + 11 +-121.6178763949082 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +23.64500000000004 + 30 +0.0 + 11 +-136.7181777686141 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +15.95500000000004 + 30 +0.0 + 11 +-136.7181777686141 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +24.22000000000006 + 30 +0.0 + 11 +-121.6178763949082 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +15.38000000000002 + 30 +0.0 + 11 +-121.6178763949082 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +13.84500000000005 + 30 +0.0 + 11 +-136.7181777686141 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +6.155000000000057 + 30 +0.0 + 11 +-136.7181777686141 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +14.42000000000004 + 30 +0.0 + 11 +-121.6178763949082 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +5.58000000000004 + 30 +0.0 + 11 +-121.6178763949082 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +4.045000000000044 + 30 +0.0 + 11 +-136.7181777686141 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +4.620000000000061 + 30 +0.0 + 11 +-121.6178763949082 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.6734821083391 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-136.7181777686141 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-130.6815608764847 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-121.6178763949082 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +62.84500000000003 + 30 +0.0 + 11 +-116.8981777686141 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +55.15500000000002 + 30 +0.0 + 11 +-116.8981777686141 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +63.42000000000004 + 30 +0.0 + 11 +-101.7978763949082 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +54.58000000000001 + 30 +0.0 + 11 +-101.7978763949082 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +53.04500000000004 + 30 +0.0 + 11 +-116.8981777686141 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +45.35500000000005 + 30 +0.0 + 11 +-116.8981777686141 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +53.62000000000003 + 30 +0.0 + 11 +-101.7978763949082 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +44.78000000000003 + 30 +0.0 + 11 +-101.7978763949082 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +43.24500000000003 + 30 +0.0 + 11 +-116.8981777686141 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +35.55500000000004 + 30 +0.0 + 11 +-116.8981777686141 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +43.82000000000005 + 30 +0.0 + 11 +-101.7978763949082 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +34.98000000000002 + 30 +0.0 + 11 +-101.7978763949082 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +33.44500000000005 + 30 +0.0 + 11 +-116.8981777686141 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +25.75500000000005 + 30 +0.0 + 11 +-116.8981777686141 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +34.02000000000004 + 30 +0.0 + 11 +-101.7978763949082 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +25.18000000000004 + 30 +0.0 + 11 +-101.7978763949082 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +23.64500000000004 + 30 +0.0 + 11 +-116.8981777686141 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +15.95500000000004 + 30 +0.0 + 11 +-116.8981777686141 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +24.22000000000006 + 30 +0.0 + 11 +-101.7978763949082 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +15.38000000000002 + 30 +0.0 + 11 +-101.7978763949082 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +13.84500000000005 + 30 +0.0 + 11 +-116.8981777686141 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +6.155000000000057 + 30 +0.0 + 11 +-116.8981777686141 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +14.42000000000004 + 30 +0.0 + 11 +-101.7978763949082 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +5.58000000000004 + 30 +0.0 + 11 +-101.7978763949082 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +4.045000000000044 + 30 +0.0 + 11 +-116.8981777686141 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +4.620000000000061 + 30 +0.0 + 11 +-101.7978763949082 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.8534821083391 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-116.8981777686141 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-110.8615608764847 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-101.7978763949082 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +62.84500000000003 + 30 +0.0 + 11 +-97.07817776861412 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +55.15500000000002 + 30 +0.0 + 11 +-97.07817776861412 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +63.42000000000004 + 30 +0.0 + 11 +-81.97787639490826 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +54.58000000000001 + 30 +0.0 + 11 +-81.97787639490826 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +53.04500000000004 + 30 +0.0 + 11 +-97.07817776861412 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +45.35500000000005 + 30 +0.0 + 11 +-97.07817776861412 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +53.62000000000003 + 30 +0.0 + 11 +-81.97787639490826 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +44.78000000000003 + 30 +0.0 + 11 +-81.97787639490826 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +43.24500000000003 + 30 +0.0 + 11 +-97.07817776861412 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +35.55500000000004 + 30 +0.0 + 11 +-97.07817776861412 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +43.82000000000005 + 30 +0.0 + 11 +-81.97787639490826 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +34.98000000000002 + 30 +0.0 + 11 +-81.97787639490826 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +33.44500000000005 + 30 +0.0 + 11 +-97.07817776861412 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +25.75500000000005 + 30 +0.0 + 11 +-97.07817776861412 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +34.02000000000004 + 30 +0.0 + 11 +-81.97787639490826 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +25.18000000000004 + 30 +0.0 + 11 +-81.97787639490826 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +23.64500000000004 + 30 +0.0 + 11 +-97.07817776861412 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +15.95500000000004 + 30 +0.0 + 11 +-97.07817776861412 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +24.22000000000006 + 30 +0.0 + 11 +-81.97787639490826 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +15.38000000000002 + 30 +0.0 + 11 +-81.97787639490826 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +13.84500000000005 + 30 +0.0 + 11 +-97.07817776861412 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +6.155000000000057 + 30 +0.0 + 11 +-97.07817776861412 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +14.42000000000004 + 30 +0.0 + 11 +-81.97787639490826 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +5.58000000000004 + 30 +0.0 + 11 +-81.97787639490826 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +4.045000000000044 + 30 +0.0 + 11 +-97.07817776861412 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +4.620000000000061 + 30 +0.0 + 11 +-81.97787639490826 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.0334821083391 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-97.07817776861412 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-91.04156087648476 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-81.97787639490826 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +62.84500000000003 + 30 +0.0 + 11 +-77.25817776861413 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +55.15500000000002 + 30 +0.0 + 11 +-77.25817776861413 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +63.42000000000004 + 30 +0.0 + 11 +-62.15787639490827 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +54.58000000000001 + 30 +0.0 + 11 +-62.15787639490827 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +53.04500000000004 + 30 +0.0 + 11 +-77.25817776861413 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +45.35500000000005 + 30 +0.0 + 11 +-77.25817776861413 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +53.62000000000003 + 30 +0.0 + 11 +-62.15787639490827 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +44.78000000000003 + 30 +0.0 + 11 +-62.15787639490827 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +43.24500000000003 + 30 +0.0 + 11 +-77.25817776861413 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +35.55500000000004 + 30 +0.0 + 11 +-77.25817776861413 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +43.82000000000005 + 30 +0.0 + 11 +-62.15787639490827 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +34.98000000000002 + 30 +0.0 + 11 +-62.15787639490827 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +33.44500000000005 + 30 +0.0 + 11 +-77.25817776861413 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +25.75500000000005 + 30 +0.0 + 11 +-77.25817776861413 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +34.02000000000004 + 30 +0.0 + 11 +-62.15787639490827 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +25.18000000000004 + 30 +0.0 + 11 +-62.15787639490827 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +23.64500000000004 + 30 +0.0 + 11 +-77.25817776861413 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +15.95500000000004 + 30 +0.0 + 11 +-77.25817776861413 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +24.22000000000006 + 30 +0.0 + 11 +-62.15787639490827 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +15.38000000000002 + 30 +0.0 + 11 +-62.15787639490827 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +13.84500000000005 + 30 +0.0 + 11 +-77.25817776861413 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +6.155000000000057 + 30 +0.0 + 11 +-77.25817776861413 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +14.42000000000004 + 30 +0.0 + 11 +-62.15787639490827 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +5.58000000000004 + 30 +0.0 + 11 +-62.15787639490827 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +4.045000000000044 + 30 +0.0 + 11 +-77.25817776861413 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +4.620000000000061 + 30 +0.0 + 11 +-62.15787639490827 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.21348210833913 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-77.25817776861413 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-71.22156087648477 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-62.15787639490827 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +62.84500000000003 + 30 +0.0 + 11 +-57.43817776861414 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +55.15500000000002 + 30 +0.0 + 11 +-57.43817776861414 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +63.42000000000004 + 30 +0.0 + 11 +-42.33787639490827 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +54.58000000000001 + 30 +0.0 + 11 +-42.33787639490827 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +53.04500000000004 + 30 +0.0 + 11 +-57.43817776861414 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +45.35500000000005 + 30 +0.0 + 11 +-57.43817776861414 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +53.62000000000003 + 30 +0.0 + 11 +-42.33787639490827 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +44.78000000000003 + 30 +0.0 + 11 +-42.33787639490827 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +43.24500000000003 + 30 +0.0 + 11 +-57.43817776861414 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +35.55500000000004 + 30 +0.0 + 11 +-57.43817776861414 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +43.82000000000005 + 30 +0.0 + 11 +-42.33787639490827 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +34.98000000000002 + 30 +0.0 + 11 +-42.33787639490827 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +33.44500000000005 + 30 +0.0 + 11 +-57.43817776861414 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +25.75500000000005 + 30 +0.0 + 11 +-57.43817776861414 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +34.02000000000004 + 30 +0.0 + 11 +-42.33787639490827 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +25.18000000000004 + 30 +0.0 + 11 +-42.33787639490827 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +23.64500000000004 + 30 +0.0 + 11 +-57.43817776861414 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +15.95500000000004 + 30 +0.0 + 11 +-57.43817776861414 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +24.22000000000006 + 30 +0.0 + 11 +-42.33787639490827 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +15.38000000000002 + 30 +0.0 + 11 +-42.33787639490827 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +13.84500000000005 + 30 +0.0 + 11 +-57.43817776861414 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +6.155000000000057 + 30 +0.0 + 11 +-57.43817776861414 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +14.42000000000004 + 30 +0.0 + 11 +-42.33787639490827 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +5.58000000000004 + 30 +0.0 + 11 +-42.33787639490827 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +4.045000000000044 + 30 +0.0 + 11 +-57.43817776861414 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +4.620000000000061 + 30 +0.0 + 11 +-42.33787639490827 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.39348210833913 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-57.43817776861414 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-51.40156087648477 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-42.33787639490827 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +62.84500000000003 + 30 +0.0 + 11 +-37.61817776861409 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +55.15500000000002 + 30 +0.0 + 11 +-37.61817776861409 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +63.42000000000004 + 30 +0.0 + 11 +-22.51787639490823 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +54.58000000000001 + 30 +0.0 + 11 +-22.51787639490823 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +53.04500000000004 + 30 +0.0 + 11 +-37.61817776861409 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +45.35500000000005 + 30 +0.0 + 11 +-37.61817776861409 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +53.62000000000003 + 30 +0.0 + 11 +-22.51787639490823 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +44.78000000000003 + 30 +0.0 + 11 +-22.51787639490823 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +43.24500000000003 + 30 +0.0 + 11 +-37.61817776861409 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +35.55500000000004 + 30 +0.0 + 11 +-37.61817776861409 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +43.82000000000005 + 30 +0.0 + 11 +-22.51787639490823 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +34.98000000000002 + 30 +0.0 + 11 +-22.51787639490823 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +33.44500000000005 + 30 +0.0 + 11 +-37.61817776861409 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +25.75500000000005 + 30 +0.0 + 11 +-37.61817776861409 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +34.02000000000004 + 30 +0.0 + 11 +-22.51787639490823 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +25.18000000000004 + 30 +0.0 + 11 +-22.51787639490823 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +23.64500000000004 + 30 +0.0 + 11 +-37.61817776861409 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +15.95500000000004 + 30 +0.0 + 11 +-37.61817776861409 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +24.22000000000006 + 30 +0.0 + 11 +-22.51787639490823 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +15.38000000000002 + 30 +0.0 + 11 +-22.51787639490823 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +13.84500000000005 + 30 +0.0 + 11 +-37.61817776861409 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +6.155000000000057 + 30 +0.0 + 11 +-37.61817776861409 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +14.42000000000004 + 30 +0.0 + 11 +-22.51787639490823 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +5.58000000000004 + 30 +0.0 + 11 +-22.51787639490823 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +4.045000000000044 + 30 +0.0 + 11 +-37.61817776861409 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +4.620000000000061 + 30 +0.0 + 11 +-22.51787639490823 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.57348210833908 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-37.61817776861409 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-31.58156087648473 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-22.51787639490823 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +62.84500000000003 + 30 +0.0 + 11 +-17.79817776861415 + 21 +62.84500000000005 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +55.15500000000002 + 30 +0.0 + 11 +-17.79817776861415 + 21 +55.15500000000002 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +63.42000000000004 + 30 +0.0 + 11 +-2.697876394908291 + 21 +63.42000000000002 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +54.58000000000001 + 30 +0.0 + 11 +-2.697876394908291 + 21 +54.58000000000004 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +53.04500000000004 + 30 +0.0 + 11 +-17.79817776861415 + 21 +53.04500000000004 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +45.35500000000005 + 30 +0.0 + 11 +-17.79817776861415 + 21 +45.35500000000001 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +53.62000000000003 + 30 +0.0 + 11 +-2.697876394908291 + 21 +53.62000000000003 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +44.78000000000003 + 30 +0.0 + 11 +-2.697876394908291 + 21 +44.78000000000003 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +43.24500000000003 + 30 +0.0 + 11 +-17.79817776861415 + 21 +43.24500000000006 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +35.55500000000004 + 30 +0.0 + 11 +-17.79817776861415 + 21 +35.55500000000004 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +43.82000000000005 + 30 +0.0 + 11 +-2.697876394908291 + 21 +43.82000000000002 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +34.98000000000002 + 30 +0.0 + 11 +-2.697876394908291 + 21 +34.98000000000005 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +33.44500000000005 + 30 +0.0 + 11 +-17.79817776861415 + 21 +33.44500000000005 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +25.75500000000005 + 30 +0.0 + 11 +-17.79817776861415 + 21 +25.75500000000003 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +34.02000000000004 + 30 +0.0 + 11 +-2.697876394908291 + 21 +34.02000000000004 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +25.18000000000004 + 30 +0.0 + 11 +-2.697876394908291 + 21 +25.18000000000004 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +23.64500000000004 + 30 +0.0 + 11 +-17.79817776861415 + 21 +23.64500000000007 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +15.95500000000004 + 30 +0.0 + 11 +-17.79817776861415 + 21 +15.95500000000004 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +24.22000000000006 + 30 +0.0 + 11 +-2.697876394908291 + 21 +24.22000000000003 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +15.38000000000002 + 30 +0.0 + 11 +-2.697876394908291 + 21 +15.38000000000005 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +13.84500000000005 + 30 +0.0 + 11 +-17.79817776861415 + 21 +13.84500000000005 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +6.155000000000057 + 30 +0.0 + 11 +-17.79817776861415 + 21 +6.155000000000029 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +14.42000000000004 + 30 +0.0 + 11 +-2.697876394908291 + 21 +14.42000000000004 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +5.58000000000004 + 30 +0.0 + 11 +-2.697876394908291 + 21 +5.58000000000004 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +4.045000000000044 + 30 +0.0 + 11 +-17.79817776861415 + 21 +4.045000000000072 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-3.644999999999953 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-3.644999999999953 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +4.620000000000061 + 30 +0.0 + 11 +-2.697876394908291 + 21 +4.620000000000032 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-4.21999999999997 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-4.219999999999942 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-5.754999999999938 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-5.754999999999938 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-13.44499999999994 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-13.44499999999996 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-5.179999999999949 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-5.179999999999949 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-14.01999999999995 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-14.01999999999995 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-15.55499999999995 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-15.55499999999992 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-23.24499999999995 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-23.24499999999995 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-14.97999999999993 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-14.97999999999996 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-23.81999999999997 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-23.81999999999994 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-25.35499999999994 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-25.35499999999994 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-33.04499999999993 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-33.04499999999996 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-24.77999999999994 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-24.77999999999994 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-33.61999999999995 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-33.61999999999995 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-35.15499999999994 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-35.15499999999992 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.75348210833914 + 20 +-42.84499999999994 + 30 +0.0 + 11 +-17.79817776861415 + 21 +-42.84499999999994 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-34.57999999999993 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-34.57999999999996 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-11.76156087648479 + 20 +-43.41999999999996 + 30 +0.0 + 11 +-2.697876394908291 + 21 +-43.41999999999993 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.285 + 20 +11.15000000000003 + 30 +0.0 + 11 +-180.285 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.285 + 20 +11.15000000000003 + 30 +0.0 + 11 +-180.497132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-180.285 + 20 +8.850000000000022 + 30 +0.0 + 11 +-180.497132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.425 + 20 +11.15000000000003 + 30 +0.0 + 11 +-161.425 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.425 + 20 +11.15000000000003 + 30 +0.0 + 11 +-161.2128679656441 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.425 + 20 +8.850000000000051 + 30 +0.0 + 11 +-161.2128679656441 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.465 + 20 +11.15000000000003 + 30 +0.0 + 11 +-160.465 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.465 + 20 +11.15000000000003 + 30 +0.0 + 11 +-160.677132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-160.465 + 20 +8.850000000000022 + 30 +0.0 + 11 +-160.677132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.605 + 20 +11.15000000000003 + 30 +0.0 + 11 +-141.605 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.605 + 20 +11.15000000000003 + 30 +0.0 + 11 +-141.3928679656441 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.605 + 20 +8.850000000000051 + 30 +0.0 + 11 +-141.3928679656441 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.645 + 20 +11.15000000000003 + 30 +0.0 + 11 +-140.645 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.645 + 20 +11.15000000000003 + 30 +0.0 + 11 +-140.857132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-140.645 + 20 +8.850000000000022 + 30 +0.0 + 11 +-140.857132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.785 + 20 +11.15000000000003 + 30 +0.0 + 11 +-121.785 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.785 + 20 +11.15000000000003 + 30 +0.0 + 11 +-121.5728679656441 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.785 + 20 +8.850000000000051 + 30 +0.0 + 11 +-121.5728679656441 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.825 + 20 +11.15000000000003 + 30 +0.0 + 11 +-120.825 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.825 + 20 +11.15000000000003 + 30 +0.0 + 11 +-121.037132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-120.825 + 20 +8.850000000000022 + 30 +0.0 + 11 +-121.037132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.9650000000001 + 20 +11.15000000000003 + 30 +0.0 + 11 +-101.9650000000001 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.9650000000001 + 20 +11.15000000000003 + 30 +0.0 + 11 +-101.7528679656441 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.9650000000001 + 20 +8.850000000000051 + 30 +0.0 + 11 +-101.7528679656441 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.005 + 20 +11.15000000000003 + 30 +0.0 + 11 +-101.005 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.005 + 20 +11.15000000000003 + 30 +0.0 + 11 +-101.217132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.005 + 20 +8.850000000000022 + 30 +0.0 + 11 +-101.217132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.14500000000004 + 20 +11.15000000000003 + 30 +0.0 + 11 +-82.14500000000004 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.14500000000004 + 20 +11.15000000000003 + 30 +0.0 + 11 +-81.93286796564411 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.14500000000004 + 20 +8.850000000000051 + 30 +0.0 + 11 +-81.93286796564411 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.18500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-81.18500000000006 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.18500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-81.39713203435604 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-81.18500000000006 + 20 +8.850000000000022 + 30 +0.0 + 11 +-81.39713203435604 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.3250000000001 + 20 +11.15000000000003 + 30 +0.0 + 11 +-62.3250000000001 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.3250000000001 + 20 +11.15000000000003 + 30 +0.0 + 11 +-62.11286796564412 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.3250000000001 + 20 +8.850000000000051 + 30 +0.0 + 11 +-62.11286796564412 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.36500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-61.36500000000006 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.36500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-61.577132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-61.36500000000006 + 20 +8.850000000000022 + 30 +0.0 + 11 +-61.577132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.50500000000005 + 20 +11.15000000000003 + 30 +0.0 + 11 +-42.50500000000005 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.50500000000005 + 20 +11.15000000000003 + 30 +0.0 + 11 +-42.29286796564411 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.50500000000005 + 20 +8.850000000000051 + 30 +0.0 + 11 +-42.29286796564411 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.54500000000007 + 20 +11.15000000000003 + 30 +0.0 + 11 +-41.54500000000007 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.54500000000007 + 20 +11.15000000000003 + 30 +0.0 + 11 +-41.757132034356 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-41.54500000000007 + 20 +8.850000000000022 + 30 +0.0 + 11 +-41.757132034356 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.68500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-22.68500000000006 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.68500000000006 + 20 +11.15000000000003 + 30 +0.0 + 11 +-22.47286796564413 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.68500000000006 + 20 +8.850000000000051 + 30 +0.0 + 11 +-22.47286796564413 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.72500000000008 + 20 +11.15000000000003 + 30 +0.0 + 11 +-21.72500000000008 + 21 +8.850000000000022 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.72500000000008 + 20 +11.15000000000003 + 30 +0.0 + 11 +-21.93713203435601 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-21.72500000000008 + 20 +8.850000000000022 + 30 +0.0 + 11 +-21.93713203435601 + 21 +8.637867965644062 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.865000000000065 + 20 +11.15000000000003 + 30 +0.0 + 11 +-2.865000000000065 + 21 +8.850000000000051 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.865000000000065 + 20 +11.15000000000003 + 30 +0.0 + 11 +-2.652867965644134 + 21 +11.36213203435599 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.865000000000065 + 20 +8.850000000000051 + 30 +0.0 + 11 +-2.652867965644134 + 21 +8.637867965644062 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.are b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.are new file mode 100644 index 0000000..f9da8b4 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.are differ diff --git a/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.dxf b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.dxf new file mode 100644 index 0000000..3ad33c2 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.dxf @@ -0,0 +1,17364 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5000000000001 + 20 +-63.63213203435602 + 30 +0.0 + 9 +$EXTMAX + 10 +183.5000000000001 + 20 +63.632132034356 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458920.366792616 + 9 +$TDUCREATE + 40 +2458920.033459282 + 9 +$TDUPDATE + 40 +2458920.366792616 + 9 +$TDUUPDATE + 40 +2458920.033459282 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +2904 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +103.0023940636376 + 22 +-22.58311658874761 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +240.7010085701896 + 41 +2.239951178863765 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +7AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +183.0000000000001 + 20 +-50.00000000000002 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +7AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +2764 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-62.84500000000005 + 10 +176.4601396772036 + 20 +-62.8450000000001 + 0 +LWPOLYLINE + 5 +2765 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-55.15500000000005 + 10 +176.4601396772036 + 20 +-55.15500000000002 + 0 +LWPOLYLINE + 5 +2766 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-63.63213203435602 + 10 +168.895 + 20 +-63.42000000000004 + 10 +162.7950000000002 + 20 +-63.41999999999987 + 10 +162.5828679656442 + 20 +-63.63213203435585 + 0 +LWPOLYLINE + 5 +2767 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-54.36786796564407 + 10 +168.895 + 20 +-54.58000000000006 + 10 +162.7950000000002 + 20 +-54.58000000000023 + 10 +162.5828679656442 + 20 +-54.36786796564427 + 0 +LWPOLYLINE + 5 +2768 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-62.84500000000005 + 10 +156.6401396772036 + 20 +-62.8450000000001 + 0 +LWPOLYLINE + 5 +2769 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-63.63213203435602 + 10 +149.075 + 20 +-63.42000000000004 + 10 +142.9750000000002 + 20 +-63.41999999999987 + 10 +142.7628679656442 + 20 +-63.63213203435584 + 0 +LWPOLYLINE + 5 +276A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-54.36786796564407 + 10 +149.075 + 20 +-54.58000000000006 + 10 +142.9750000000002 + 20 +-54.58000000000023 + 10 +142.7628679656442 + 20 +-54.36786796564427 + 0 +LWPOLYLINE + 5 +276B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-55.15500000000005 + 10 +156.6401396772036 + 20 +-55.15500000000002 + 0 +LWPOLYLINE + 5 +276C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-62.84500000000004 + 10 +136.8201396772036 + 20 +-62.84500000000009 + 0 +LWPOLYLINE + 5 +276D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-63.63213203435601 + 10 +129.2550000000001 + 20 +-63.42000000000004 + 10 +123.1550000000002 + 20 +-63.41999999999987 + 10 +122.9428679656442 + 20 +-63.63213203435584 + 0 +LWPOLYLINE + 5 +276E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-54.36786796564407 + 10 +129.2550000000001 + 20 +-54.58000000000006 + 10 +123.1550000000002 + 20 +-54.58000000000023 + 10 +122.9428679656442 + 20 +-54.36786796564427 + 0 +LWPOLYLINE + 5 +276F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-55.15500000000004 + 10 +136.8201396772036 + 20 +-55.15500000000002 + 0 +LWPOLYLINE + 5 +2770 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-62.84500000000004 + 10 +117.0001396772036 + 20 +-62.84500000000009 + 0 +LWPOLYLINE + 5 +2771 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-63.63213203435601 + 10 +109.4350000000001 + 20 +-63.42000000000004 + 10 +103.3350000000002 + 20 +-63.41999999999987 + 10 +103.1228679656442 + 20 +-63.63213203435584 + 0 +LWPOLYLINE + 5 +2772 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-54.36786796564407 + 10 +109.4350000000001 + 20 +-54.58000000000006 + 10 +103.3350000000002 + 20 +-54.58000000000023 + 10 +103.1228679656442 + 20 +-54.36786796564427 + 0 +LWPOLYLINE + 5 +2773 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-55.15500000000004 + 10 +117.0001396772036 + 20 +-55.15500000000002 + 0 +LWPOLYLINE + 5 +2774 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-62.84500000000004 + 10 +97.18013967720357 + 20 +-62.84500000000009 + 0 +LWPOLYLINE + 5 +2775 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435604 + 20 +-63.63213203435601 + 10 +89.61500000000005 + 20 +-63.42000000000004 + 10 +83.51500000000017 + 20 +-63.41999999999986 + 10 +83.30286796564418 + 20 +-63.63213203435583 + 0 +LWPOLYLINE + 5 +2776 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-54.36786796564407 + 10 +89.61500000000007 + 20 +-54.58000000000006 + 10 +83.51500000000019 + 20 +-54.58000000000022 + 10 +83.3028679656442 + 20 +-54.36786796564426 + 0 +LWPOLYLINE + 5 +2777 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-55.15500000000004 + 10 +97.18013967720358 + 20 +-55.15500000000002 + 0 +LWPOLYLINE + 5 +2778 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064911 + 20 +-62.84500000000003 + 10 +77.3601396772036 + 20 +-62.84500000000008 + 0 +LWPOLYLINE + 5 +2779 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435605 + 20 +-63.632132034356 + 10 +69.79500000000006 + 20 +-63.42000000000003 + 10 +63.69500000000015 + 20 +-63.41999999999986 + 10 +63.48286796564422 + 20 +-63.63213203435583 + 0 +LWPOLYLINE + 5 +277A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-54.36786796564406 + 10 +69.79500000000007 + 20 +-54.58000000000005 + 10 +63.69500000000015 + 20 +-54.58000000000022 + 10 +63.48286796564422 + 20 +-54.36786796564426 + 0 +LWPOLYLINE + 5 +277B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-55.15500000000004 + 10 +77.36013967720362 + 20 +-55.15500000000001 + 0 +LWPOLYLINE + 5 +277C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-62.84500000000003 + 10 +57.54013967720356 + 20 +-62.84500000000008 + 0 +LWPOLYLINE + 5 +277D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-63.632132034356 + 10 +49.97500000000007 + 20 +-63.42000000000003 + 10 +43.87500000000022 + 20 +-63.41999999999986 + 10 +43.66286796564417 + 20 +-63.63213203435583 + 0 +LWPOLYLINE + 5 +277E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-54.36786796564406 + 10 +49.97500000000007 + 20 +-54.58000000000005 + 10 +43.87500000000022 + 20 +-54.58000000000022 + 10 +43.66286796564417 + 20 +-54.36786796564426 + 0 +LWPOLYLINE + 5 +277F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-55.15500000000004 + 10 +57.54013967720356 + 20 +-55.15500000000001 + 0 +LWPOLYLINE + 5 +2780 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-62.84500000000003 + 10 +37.72013967720363 + 20 +-62.84500000000008 + 0 +LWPOLYLINE + 5 +2781 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-63.632132034356 + 10 +30.15500000000008 + 20 +-63.42000000000003 + 10 +24.05500000000017 + 20 +-63.41999999999985 + 10 +23.84286796564424 + 20 +-63.63213203435583 + 0 +LWPOLYLINE + 5 +2782 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-54.36786796564406 + 10 +30.15500000000008 + 20 +-54.58000000000005 + 10 +24.05500000000017 + 20 +-54.58000000000021 + 10 +23.84286796564424 + 20 +-54.36786796564425 + 0 +LWPOLYLINE + 5 +2783 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-55.15500000000004 + 10 +37.72013967720363 + 20 +-55.15500000000001 + 0 +LWPOLYLINE + 5 +2784 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064914 + 20 +-62.84500000000003 + 10 +17.90013967720357 + 20 +-62.84500000000008 + 0 +LWPOLYLINE + 5 +2785 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435607 + 20 +-63.632132034356 + 10 +10.33500000000008 + 20 +-63.42000000000002 + 10 +4.235000000000233 + 20 +-63.41999999999985 + 10 +4.022867965644187 + 20 +-63.63213203435583 + 0 +LWPOLYLINE + 5 +2786 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435607 + 20 +-54.36786796564405 + 10 +10.33500000000008 + 20 +-54.58000000000004 + 10 +4.235000000000234 + 20 +-54.58000000000021 + 10 +4.022867965644188 + 20 +-54.36786796564425 + 0 +LWPOLYLINE + 5 +2787 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064914 + 20 +-55.15500000000003 + 10 +17.90013967720357 + 20 +-55.155 + 0 +LWPOLYLINE + 5 +2788 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-53.04500000000006 + 10 +176.4601396772036 + 20 +-53.04500000000006 + 0 +LWPOLYLINE + 5 +2789 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-53.83213203435601 + 10 +168.895 + 20 +-53.62000000000005 + 10 +162.7950000000002 + 20 +-53.61999999999988 + 10 +162.5828679656442 + 20 +-53.83213203435584 + 0 +LWPOLYLINE + 5 +278A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-44.56786796564406 + 10 +168.895 + 20 +-44.78000000000005 + 10 +162.7950000000002 + 20 +-44.78000000000022 + 10 +162.5828679656442 + 20 +-44.56786796564426 + 0 +LWPOLYLINE + 5 +278B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-45.35500000000004 + 10 +176.4601396772036 + 20 +-45.35500000000004 + 0 +LWPOLYLINE + 5 +278C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-53.04500000000006 + 10 +156.6401396772036 + 20 +-53.04500000000006 + 0 +LWPOLYLINE + 5 +278D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-53.83213203435601 + 10 +149.075 + 20 +-53.62000000000005 + 10 +142.9750000000002 + 20 +-53.61999999999988 + 10 +142.7628679656442 + 20 +-53.83213203435584 + 0 +LWPOLYLINE + 5 +278E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-44.56786796564406 + 10 +149.075 + 20 +-44.78000000000005 + 10 +142.9750000000002 + 20 +-44.78000000000021 + 10 +142.7628679656442 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +278F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-45.35500000000004 + 10 +156.6401396772036 + 20 +-45.35500000000004 + 0 +LWPOLYLINE + 5 +2790 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-53.04500000000005 + 10 +136.8201396772036 + 20 +-53.04500000000005 + 0 +LWPOLYLINE + 5 +2791 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-53.83213203435601 + 10 +129.2550000000001 + 20 +-53.62000000000005 + 10 +123.1550000000002 + 20 +-53.61999999999988 + 10 +122.9428679656442 + 20 +-53.83213203435584 + 0 +LWPOLYLINE + 5 +2792 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-44.56786796564406 + 10 +129.2550000000001 + 20 +-44.78000000000004 + 10 +123.1550000000002 + 20 +-44.78000000000021 + 10 +122.9428679656442 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +2793 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-45.35500000000003 + 10 +136.8201396772036 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +2794 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-53.04500000000005 + 10 +117.0001396772036 + 20 +-53.04500000000005 + 0 +LWPOLYLINE + 5 +2795 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-53.83213203435601 + 10 +109.4350000000001 + 20 +-53.62000000000005 + 10 +103.3350000000002 + 20 +-53.61999999999988 + 10 +103.1228679656442 + 20 +-53.83213203435584 + 0 +LWPOLYLINE + 5 +2796 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-44.56786796564406 + 10 +109.4350000000001 + 20 +-44.78000000000004 + 10 +103.3350000000002 + 20 +-44.78000000000021 + 10 +103.1228679656442 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +2797 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-45.35500000000003 + 10 +117.0001396772036 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +2798 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-53.04500000000005 + 10 +97.18013967720358 + 20 +-53.04500000000005 + 0 +LWPOLYLINE + 5 +2799 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-53.83213203435601 + 10 +89.61500000000007 + 20 +-53.62000000000005 + 10 +83.51500000000019 + 20 +-53.61999999999987 + 10 +83.3028679656442 + 20 +-53.83213203435583 + 0 +LWPOLYLINE + 5 +279A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-44.56786796564406 + 10 +89.61500000000007 + 20 +-44.78000000000004 + 10 +83.51500000000019 + 20 +-44.78000000000021 + 10 +83.3028679656442 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +279B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-45.35500000000003 + 10 +97.18013967720358 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +279C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-53.04500000000004 + 10 +77.36013967720362 + 20 +-53.04500000000004 + 0 +LWPOLYLINE + 5 +279D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-53.832132034356 + 10 +69.79500000000007 + 20 +-53.62000000000004 + 10 +63.69500000000015 + 20 +-53.61999999999987 + 10 +63.48286796564422 + 20 +-53.83213203435583 + 0 +LWPOLYLINE + 5 +279E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-44.56786796564405 + 10 +69.79500000000007 + 20 +-44.78000000000004 + 10 +63.69500000000015 + 20 +-44.78000000000021 + 10 +63.48286796564422 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +279F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-45.35500000000003 + 10 +77.36013967720362 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +27A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-53.04500000000004 + 10 +57.54013967720356 + 20 +-53.04500000000004 + 0 +LWPOLYLINE + 5 +27A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-53.832132034356 + 10 +49.97500000000007 + 20 +-53.62000000000004 + 10 +43.87500000000022 + 20 +-53.61999999999987 + 10 +43.66286796564417 + 20 +-53.83213203435583 + 0 +LWPOLYLINE + 5 +27A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-44.56786796564405 + 10 +49.97500000000007 + 20 +-44.78000000000004 + 10 +43.87500000000022 + 20 +-44.78000000000021 + 10 +43.66286796564417 + 20 +-44.56786796564425 + 0 +LWPOLYLINE + 5 +27A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-45.35500000000003 + 10 +57.54013967720356 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +27A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-53.04500000000004 + 10 +37.72013967720363 + 20 +-53.04500000000004 + 0 +LWPOLYLINE + 5 +27A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-53.832132034356 + 10 +30.15500000000008 + 20 +-53.62000000000004 + 10 +24.05500000000017 + 20 +-53.61999999999986 + 10 +23.84286796564424 + 20 +-53.83213203435582 + 0 +LWPOLYLINE + 5 +27A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-44.56786796564405 + 10 +30.15500000000008 + 20 +-44.78000000000004 + 10 +24.05500000000017 + 20 +-44.7800000000002 + 10 +23.84286796564424 + 20 +-44.56786796564424 + 0 +LWPOLYLINE + 5 +27A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-45.35500000000003 + 10 +37.72013967720363 + 20 +-45.35500000000003 + 0 +LWPOLYLINE + 5 +27A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064914 + 20 +-53.04500000000004 + 10 +17.90013967720357 + 20 +-53.04500000000004 + 0 +LWPOLYLINE + 5 +27A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435607 + 20 +-53.83213203435599 + 10 +10.33500000000008 + 20 +-53.62000000000003 + 10 +4.235000000000235 + 20 +-53.61999999999986 + 10 +4.022867965644188 + 20 +-53.83213203435582 + 0 +LWPOLYLINE + 5 +27AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435607 + 20 +-44.56786796564404 + 10 +10.33500000000008 + 20 +-44.78000000000003 + 10 +4.235000000000236 + 20 +-44.7800000000002 + 10 +4.022867965644189 + 20 +-44.56786796564424 + 0 +LWPOLYLINE + 5 +27AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064914 + 20 +-45.35500000000002 + 10 +17.90013967720357 + 20 +-45.35500000000002 + 0 +LWPOLYLINE + 5 +27AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-43.24500000000005 + 10 +176.4601396772036 + 20 +-43.24500000000008 + 0 +LWPOLYLINE + 5 +27AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-44.03213203435603 + 10 +168.895 + 20 +-43.82000000000007 + 10 +162.7950000000002 + 20 +-43.8199999999999 + 10 +162.5828679656442 + 20 +-44.03213203435583 + 0 +LWPOLYLINE + 5 +27AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-34.76786796564408 + 10 +168.895 + 20 +-34.98000000000004 + 10 +162.7950000000002 + 20 +-34.98000000000021 + 10 +162.5828679656442 + 20 +-34.76786796564428 + 0 +LWPOLYLINE + 5 +27AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-35.55500000000006 + 10 +176.4601396772036 + 20 +-35.55500000000003 + 0 +LWPOLYLINE + 5 +27B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-43.24500000000005 + 10 +156.6401396772036 + 20 +-43.24500000000008 + 0 +LWPOLYLINE + 5 +27B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-44.03213203435603 + 10 +149.075 + 20 +-43.82000000000007 + 10 +142.9750000000002 + 20 +-43.81999999999989 + 10 +142.7628679656442 + 20 +-44.03213203435583 + 0 +LWPOLYLINE + 5 +27B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-34.76786796564408 + 10 +149.075 + 20 +-34.98000000000004 + 10 +142.9750000000002 + 20 +-34.9800000000002 + 10 +142.7628679656442 + 20 +-34.76786796564427 + 0 +LWPOLYLINE + 5 +27B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-35.55500000000006 + 10 +156.6401396772036 + 20 +-35.55500000000003 + 0 +LWPOLYLINE + 5 +27B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-43.24500000000005 + 10 +136.8201396772036 + 20 +-43.24500000000008 + 0 +LWPOLYLINE + 5 +27B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-44.03213203435602 + 10 +129.2550000000001 + 20 +-43.82000000000006 + 10 +123.1550000000002 + 20 +-43.81999999999989 + 10 +122.9428679656442 + 20 +-44.03213203435583 + 0 +LWPOLYLINE + 5 +27B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-34.76786796564407 + 10 +129.2550000000001 + 20 +-34.98000000000003 + 10 +123.1550000000002 + 20 +-34.9800000000002 + 10 +122.9428679656442 + 20 +-34.76786796564427 + 0 +LWPOLYLINE + 5 +27B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-35.55500000000006 + 10 +136.8201396772036 + 20 +-35.55500000000002 + 0 +LWPOLYLINE + 5 +27B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-43.24500000000005 + 10 +117.0001396772036 + 20 +-43.24500000000008 + 0 +LWPOLYLINE + 5 +27B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-44.03213203435602 + 10 +109.4350000000001 + 20 +-43.82000000000006 + 10 +103.3350000000002 + 20 +-43.81999999999989 + 10 +103.1228679656442 + 20 +-44.03213203435583 + 0 +LWPOLYLINE + 5 +27BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-34.76786796564407 + 10 +109.4350000000001 + 20 +-34.98000000000003 + 10 +103.3350000000002 + 20 +-34.9800000000002 + 10 +103.1228679656442 + 20 +-34.76786796564427 + 0 +LWPOLYLINE + 5 +27BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-35.55500000000006 + 10 +117.0001396772036 + 20 +-35.55500000000002 + 0 +LWPOLYLINE + 5 +27BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-43.24500000000005 + 10 +97.18013967720358 + 20 +-43.24500000000008 + 0 +LWPOLYLINE + 5 +27BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-44.03213203435602 + 10 +89.61500000000007 + 20 +-43.82000000000006 + 10 +83.51500000000019 + 20 +-43.81999999999989 + 10 +83.3028679656442 + 20 +-44.03213203435582 + 0 +LWPOLYLINE + 5 +27BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-34.76786796564407 + 10 +89.61500000000007 + 20 +-34.98000000000003 + 10 +83.51500000000019 + 20 +-34.9800000000002 + 10 +83.3028679656442 + 20 +-34.76786796564426 + 0 +LWPOLYLINE + 5 +27BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-35.55500000000006 + 10 +97.18013967720358 + 20 +-35.55500000000002 + 0 +LWPOLYLINE + 5 +27C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-43.24500000000004 + 10 +77.36013967720362 + 20 +-43.24500000000007 + 0 +LWPOLYLINE + 5 +27C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-44.03213203435602 + 10 +69.79500000000007 + 20 +-43.82000000000006 + 10 +63.69500000000015 + 20 +-43.81999999999989 + 10 +63.48286796564422 + 20 +-44.03213203435582 + 0 +LWPOLYLINE + 5 +27C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-34.76786796564407 + 10 +69.79500000000007 + 20 +-34.98000000000003 + 10 +63.69500000000015 + 20 +-34.9800000000002 + 10 +63.48286796564422 + 20 +-34.76786796564426 + 0 +LWPOLYLINE + 5 +27C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-35.55500000000005 + 10 +77.36013967720362 + 20 +-35.55500000000001 + 0 +LWPOLYLINE + 5 +27C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-43.24500000000004 + 10 +57.54013967720356 + 20 +-43.24500000000007 + 0 +LWPOLYLINE + 5 +27C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-44.03213203435602 + 10 +49.97500000000007 + 20 +-43.82000000000006 + 10 +43.87500000000022 + 20 +-43.81999999999989 + 10 +43.66286796564417 + 20 +-44.03213203435582 + 0 +LWPOLYLINE + 5 +27C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-34.76786796564407 + 10 +49.97500000000007 + 20 +-34.98000000000003 + 10 +43.87500000000022 + 20 +-34.9800000000002 + 10 +43.66286796564417 + 20 +-34.76786796564426 + 0 +LWPOLYLINE + 5 +27C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-35.55500000000005 + 10 +57.54013967720356 + 20 +-35.55500000000001 + 0 +LWPOLYLINE + 5 +27C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-43.24500000000004 + 10 +37.72013967720363 + 20 +-43.24500000000007 + 0 +LWPOLYLINE + 5 +27C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-44.03213203435602 + 10 +30.15500000000008 + 20 +-43.82000000000006 + 10 +24.05500000000017 + 20 +-43.81999999999988 + 10 +23.84286796564424 + 20 +-44.03213203435581 + 0 +LWPOLYLINE + 5 +27CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-34.76786796564407 + 10 +30.15500000000009 + 20 +-34.98000000000003 + 10 +24.05500000000018 + 20 +-34.98000000000019 + 10 +23.84286796564425 + 20 +-34.76786796564426 + 0 +LWPOLYLINE + 5 +27CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-35.55500000000005 + 10 +37.72013967720363 + 20 +-35.55500000000001 + 0 +LWPOLYLINE + 5 +27CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-43.24500000000003 + 10 +17.90013967720358 + 20 +-43.24500000000006 + 0 +LWPOLYLINE + 5 +27CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435607 + 20 +-44.03213203435601 + 10 +10.33500000000008 + 20 +-43.82000000000005 + 10 +4.235000000000236 + 20 +-43.81999999999988 + 10 +4.022867965644189 + 20 +-44.03213203435581 + 0 +LWPOLYLINE + 5 +27CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-34.76786796564406 + 10 +10.33500000000009 + 20 +-34.98000000000002 + 10 +4.235000000000237 + 20 +-34.98000000000019 + 10 +4.02286796564419 + 20 +-34.76786796564426 + 0 +LWPOLYLINE + 5 +27CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-35.55500000000004 + 10 +17.90013967720358 + 20 +-35.55500000000001 + 0 +LWPOLYLINE + 5 +27D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-33.44500000000007 + 10 +176.4601396772036 + 20 +-33.44500000000007 + 0 +LWPOLYLINE + 5 +27D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-34.23213203435605 + 10 +168.895 + 20 +-34.02000000000006 + 10 +162.7950000000002 + 20 +-34.01999999999989 + 10 +162.5828679656442 + 20 +-34.23213203435585 + 0 +LWPOLYLINE + 5 +27D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-24.96786796564409 + 10 +168.895 + 20 +-25.18000000000006 + 10 +162.7950000000002 + 20 +-25.18000000000023 + 10 +162.5828679656442 + 20 +-24.96786796564427 + 0 +LWPOLYLINE + 5 +27D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-25.75500000000004 + 10 +176.4601396772036 + 20 +-25.75500000000004 + 0 +LWPOLYLINE + 5 +27D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-33.44500000000007 + 10 +156.6401396772036 + 20 +-33.44500000000007 + 0 +LWPOLYLINE + 5 +27D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-34.23213203435605 + 10 +149.075 + 20 +-34.02000000000006 + 10 +142.9750000000002 + 20 +-34.01999999999988 + 10 +142.7628679656442 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-24.96786796564409 + 10 +149.075 + 20 +-25.18000000000006 + 10 +142.9750000000002 + 20 +-25.18000000000023 + 10 +142.7628679656442 + 20 +-24.96786796564427 + 0 +LWPOLYLINE + 5 +27D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-25.75500000000004 + 10 +156.6401396772036 + 20 +-25.75500000000004 + 0 +LWPOLYLINE + 5 +27D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-33.44500000000006 + 10 +136.8201396772036 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-34.23213203435604 + 10 +129.2550000000001 + 20 +-34.02000000000005 + 10 +123.1550000000002 + 20 +-34.01999999999988 + 10 +122.9428679656442 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-24.96786796564409 + 10 +129.2550000000001 + 20 +-25.18000000000005 + 10 +123.1550000000002 + 20 +-25.18000000000022 + 10 +122.9428679656442 + 20 +-24.96786796564426 + 0 +LWPOLYLINE + 5 +27DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-25.75500000000004 + 10 +136.8201396772036 + 20 +-25.75500000000004 + 0 +LWPOLYLINE + 5 +27DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-33.44500000000006 + 10 +117.0001396772036 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-34.23213203435604 + 10 +109.4350000000001 + 20 +-34.02000000000005 + 10 +103.3350000000002 + 20 +-34.01999999999988 + 10 +103.1228679656442 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-24.96786796564409 + 10 +109.4350000000001 + 20 +-25.18000000000005 + 10 +103.3350000000002 + 20 +-25.18000000000022 + 10 +103.1228679656442 + 20 +-24.96786796564426 + 0 +LWPOLYLINE + 5 +27DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-25.75500000000003 + 10 +117.0001396772036 + 20 +-25.75500000000003 + 0 +LWPOLYLINE + 5 +27E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-33.44500000000006 + 10 +97.18013967720358 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-34.23213203435604 + 10 +89.61500000000007 + 20 +-34.02000000000005 + 10 +83.51500000000019 + 20 +-34.01999999999988 + 10 +83.3028679656442 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-24.96786796564408 + 10 +89.61500000000007 + 20 +-25.18000000000005 + 10 +83.51500000000019 + 20 +-25.18000000000022 + 10 +83.3028679656442 + 20 +-24.96786796564426 + 0 +LWPOLYLINE + 5 +27E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-25.75500000000003 + 10 +97.18013967720358 + 20 +-25.75500000000003 + 0 +LWPOLYLINE + 5 +27E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-33.44500000000006 + 10 +77.36013967720362 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-34.23213203435603 + 10 +69.79500000000007 + 20 +-34.02000000000005 + 10 +63.69500000000015 + 20 +-34.01999999999988 + 10 +63.48286796564422 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-24.96786796564408 + 10 +69.79500000000007 + 20 +-25.18000000000005 + 10 +63.69500000000016 + 20 +-25.18000000000022 + 10 +63.48286796564423 + 20 +-24.96786796564426 + 0 +LWPOLYLINE + 5 +27E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-25.75500000000003 + 10 +77.36013967720362 + 20 +-25.75500000000003 + 0 +LWPOLYLINE + 5 +27E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064912 + 20 +-33.44500000000006 + 10 +57.54013967720356 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435606 + 20 +-34.23213203435603 + 10 +49.97500000000007 + 20 +-34.02000000000005 + 10 +43.87500000000022 + 20 +-34.01999999999988 + 10 +43.66286796564417 + 20 +-34.23213203435584 + 0 +LWPOLYLINE + 5 +27EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-24.96786796564408 + 10 +49.97500000000008 + 20 +-25.18000000000005 + 10 +43.87500000000023 + 20 +-25.18000000000022 + 10 +43.66286796564418 + 20 +-24.96786796564426 + 0 +LWPOLYLINE + 5 +27EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-25.75500000000003 + 10 +57.54013967720357 + 20 +-25.75500000000003 + 0 +LWPOLYLINE + 5 +27EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064913 + 20 +-33.44500000000006 + 10 +37.72013967720363 + 20 +-33.44500000000006 + 0 +LWPOLYLINE + 5 +27ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-34.23213203435603 + 10 +30.15500000000009 + 20 +-34.02000000000005 + 10 +24.05500000000018 + 20 +-34.01999999999987 + 10 +23.84286796564425 + 20 +-34.23213203435583 + 0 +LWPOLYLINE + 5 +27EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-24.96786796564407 + 10 +30.15500000000009 + 20 +-25.18000000000004 + 10 +24.05500000000018 + 20 +-25.18000000000021 + 10 +23.84286796564425 + 20 +-24.96786796564425 + 0 +LWPOLYLINE + 5 +27EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-25.75500000000002 + 10 +37.72013967720363 + 20 +-25.75500000000002 + 0 +LWPOLYLINE + 5 +27F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-33.44500000000005 + 10 +17.90013967720358 + 20 +-33.44500000000005 + 0 +LWPOLYLINE + 5 +27F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-34.23213203435603 + 10 +10.33500000000009 + 20 +-34.02000000000004 + 10 +4.235000000000237 + 20 +-34.01999999999987 + 10 +4.02286796564419 + 20 +-34.23213203435583 + 0 +LWPOLYLINE + 5 +27F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-24.96786796564407 + 10 +10.33500000000009 + 20 +-25.18000000000004 + 10 +4.235000000000238 + 20 +-25.18000000000021 + 10 +4.022867965644192 + 20 +-24.96786796564425 + 0 +LWPOLYLINE + 5 +27F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-25.75500000000002 + 10 +17.90013967720358 + 20 +-25.75500000000002 + 0 +LWPOLYLINE + 5 +27F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-23.64500000000006 + 10 +176.4601396772036 + 20 +-23.64500000000009 + 0 +LWPOLYLINE + 5 +27F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-24.43213203435604 + 10 +168.895 + 20 +-24.22000000000005 + 10 +162.7950000000002 + 20 +-24.21999999999988 + 10 +162.5828679656442 + 20 +-24.43213203435584 + 0 +LWPOLYLINE + 5 +27F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-15.16786796564408 + 10 +168.895 + 20 +-15.38000000000007 + 10 +162.7950000000002 + 20 +-15.38000000000024 + 10 +162.5828679656442 + 20 +-15.16786796564428 + 0 +LWPOLYLINE + 5 +27F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-15.95500000000006 + 10 +176.4601396772036 + 20 +-15.95500000000003 + 0 +LWPOLYLINE + 5 +27F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-23.64500000000006 + 10 +156.6401396772036 + 20 +-23.64500000000009 + 0 +LWPOLYLINE + 5 +27F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-24.43213203435604 + 10 +149.075 + 20 +-24.22000000000005 + 10 +142.9750000000002 + 20 +-24.21999999999988 + 10 +142.7628679656442 + 20 +-24.43213203435584 + 0 +LWPOLYLINE + 5 +27FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-15.16786796564408 + 10 +149.075 + 20 +-15.38000000000007 + 10 +142.9750000000002 + 20 +-15.38000000000024 + 10 +142.7628679656442 + 20 +-15.16786796564428 + 0 +LWPOLYLINE + 5 +27FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-15.95500000000006 + 10 +156.6401396772036 + 20 +-15.95500000000003 + 0 +LWPOLYLINE + 5 +27FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-23.64500000000006 + 10 +136.8201396772036 + 20 +-23.64500000000009 + 0 +LWPOLYLINE + 5 +27FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-24.43213203435603 + 10 +129.2550000000001 + 20 +-24.22000000000005 + 10 +123.1550000000002 + 20 +-24.21999999999987 + 10 +122.9428679656442 + 20 +-24.43213203435583 + 0 +LWPOLYLINE + 5 +27FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-15.16786796564408 + 10 +129.2550000000001 + 20 +-15.38000000000007 + 10 +123.1550000000002 + 20 +-15.38000000000023 + 10 +122.9428679656442 + 20 +-15.16786796564427 + 0 +LWPOLYLINE + 5 +27FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-15.95500000000006 + 10 +136.8201396772036 + 20 +-15.95500000000003 + 0 +LWPOLYLINE + 5 +2800 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-23.64500000000005 + 10 +117.0001396772036 + 20 +-23.64500000000008 + 0 +LWPOLYLINE + 5 +2801 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-24.43213203435603 + 10 +109.4350000000001 + 20 +-24.22000000000005 + 10 +103.3350000000002 + 20 +-24.21999999999987 + 10 +103.1228679656442 + 20 +-24.43213203435583 + 0 +LWPOLYLINE + 5 +2802 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-15.16786796564407 + 10 +109.4350000000001 + 20 +-15.38000000000006 + 10 +103.3350000000002 + 20 +-15.38000000000023 + 10 +103.1228679656442 + 20 +-15.16786796564427 + 0 +LWPOLYLINE + 5 +2803 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-15.95500000000005 + 10 +117.0001396772036 + 20 +-15.95500000000002 + 0 +LWPOLYLINE + 5 +2804 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-23.64500000000005 + 10 +97.18013967720358 + 20 +-23.64500000000008 + 0 +LWPOLYLINE + 5 +2805 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-24.43213203435603 + 10 +89.61500000000007 + 20 +-24.22000000000004 + 10 +83.51500000000019 + 20 +-24.21999999999987 + 10 +83.3028679656442 + 20 +-24.43213203435583 + 0 +LWPOLYLINE + 5 +2806 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-15.16786796564407 + 10 +89.61500000000007 + 20 +-15.38000000000006 + 10 +83.51500000000019 + 20 +-15.38000000000023 + 10 +83.3028679656442 + 20 +-15.16786796564427 + 0 +LWPOLYLINE + 5 +2807 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-15.95500000000005 + 10 +97.18013967720358 + 20 +-15.95500000000002 + 0 +LWPOLYLINE + 5 +2808 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-23.64500000000005 + 10 +77.36013967720362 + 20 +-23.64500000000008 + 0 +LWPOLYLINE + 5 +2809 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-24.43213203435603 + 10 +69.79500000000007 + 20 +-24.22000000000004 + 10 +63.69500000000016 + 20 +-24.21999999999987 + 10 +63.48286796564423 + 20 +-24.43213203435583 + 0 +LWPOLYLINE + 5 +280A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-15.16786796564407 + 10 +69.79500000000007 + 20 +-15.38000000000006 + 10 +63.69500000000016 + 20 +-15.38000000000023 + 10 +63.48286796564423 + 20 +-15.16786796564427 + 0 +LWPOLYLINE + 5 +280B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-15.95500000000005 + 10 +77.36013967720362 + 20 +-15.95500000000002 + 0 +LWPOLYLINE + 5 +280C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-23.64500000000005 + 10 +57.54013967720357 + 20 +-23.64500000000008 + 0 +LWPOLYLINE + 5 +280D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-24.43213203435603 + 10 +49.97500000000008 + 20 +-24.22000000000004 + 10 +43.87500000000023 + 20 +-24.21999999999987 + 10 +43.66286796564418 + 20 +-24.43213203435583 + 0 +LWPOLYLINE + 5 +280E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-15.16786796564407 + 10 +49.97500000000008 + 20 +-15.38000000000006 + 10 +43.87500000000023 + 20 +-15.38000000000022 + 10 +43.66286796564418 + 20 +-15.16786796564427 + 0 +LWPOLYLINE + 5 +280F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-15.95500000000005 + 10 +57.54013967720357 + 20 +-15.95500000000002 + 0 +LWPOLYLINE + 5 +2810 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-23.64500000000004 + 10 +37.72013967720363 + 20 +-23.64500000000007 + 0 +LWPOLYLINE + 5 +2811 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-24.43213203435602 + 10 +30.15500000000009 + 20 +-24.22000000000003 + 10 +24.05500000000018 + 20 +-24.21999999999986 + 10 +23.84286796564425 + 20 +-24.43213203435582 + 0 +LWPOLYLINE + 5 +2812 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-15.16786796564406 + 10 +30.15500000000009 + 20 +-15.38000000000005 + 10 +24.05500000000018 + 20 +-15.38000000000022 + 10 +23.84286796564425 + 20 +-15.16786796564426 + 0 +LWPOLYLINE + 5 +2813 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-15.95500000000004 + 10 +37.72013967720363 + 20 +-15.95500000000002 + 0 +LWPOLYLINE + 5 +2814 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-23.64500000000004 + 10 +17.90013967720358 + 20 +-23.64500000000007 + 0 +LWPOLYLINE + 5 +2815 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-24.43213203435602 + 10 +10.33500000000009 + 20 +-24.22000000000003 + 10 +4.235000000000238 + 20 +-24.21999999999986 + 10 +4.022867965644192 + 20 +-24.43213203435582 + 0 +LWPOLYLINE + 5 +2816 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-15.16786796564406 + 10 +10.33500000000009 + 20 +-15.38000000000005 + 10 +4.235000000000239 + 20 +-15.38000000000022 + 10 +4.022867965644193 + 20 +-15.16786796564426 + 0 +LWPOLYLINE + 5 +2817 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-15.95500000000004 + 10 +17.90013967720358 + 20 +-15.95500000000001 + 0 +LWPOLYLINE + 5 +2818 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-13.84500000000008 + 10 +176.4601396772036 + 20 +-13.84500000000008 + 0 +LWPOLYLINE + 5 +2819 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-14.63213203435602 + 10 +168.895 + 20 +-14.42000000000006 + 10 +162.7950000000002 + 20 +-14.41999999999989 + 10 +162.5828679656442 + 20 +-14.63213203435585 + 0 +LWPOLYLINE + 5 +281A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-5.367867965644073 + 10 +168.895 + 20 +-5.580000000000061 + 10 +162.7950000000002 + 20 +-5.58000000000023 + 10 +162.5828679656442 + 20 +-5.367867965644271 + 0 +LWPOLYLINE + 5 +281B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-6.155000000000052 + 10 +176.4601396772036 + 20 +-6.155000000000051 + 0 +LWPOLYLINE + 5 +281C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-13.84500000000008 + 10 +156.6401396772036 + 20 +-13.84500000000008 + 0 +LWPOLYLINE + 5 +281D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-14.63213203435602 + 10 +149.075 + 20 +-14.42000000000006 + 10 +142.9750000000002 + 20 +-14.41999999999989 + 10 +142.7628679656442 + 20 +-14.63213203435585 + 0 +LWPOLYLINE + 5 +281E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-5.367867965644071 + 10 +149.075 + 20 +-5.58000000000006 + 10 +142.9750000000002 + 20 +-5.580000000000228 + 10 +142.7628679656442 + 20 +-5.367867965644269 + 0 +LWPOLYLINE + 5 +281F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-6.155000000000049 + 10 +156.6401396772036 + 20 +-6.155000000000049 + 0 +LWPOLYLINE + 5 +2820 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-13.84500000000008 + 10 +136.8201396772036 + 20 +-13.84500000000008 + 0 +LWPOLYLINE + 5 +2821 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-14.63213203435602 + 10 +129.2550000000001 + 20 +-14.42000000000006 + 10 +123.1550000000002 + 20 +-14.41999999999988 + 10 +122.9428679656442 + 20 +-14.63213203435584 + 0 +LWPOLYLINE + 5 +2822 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-5.367867965644068 + 10 +129.2550000000001 + 20 +-5.580000000000057 + 10 +123.1550000000002 + 20 +-5.580000000000226 + 10 +122.9428679656442 + 20 +-5.367867965644266 + 0 +LWPOLYLINE + 5 +2823 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-6.155000000000046 + 10 +136.8201396772036 + 20 +-6.155000000000046 + 0 +LWPOLYLINE + 5 +2824 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-13.84500000000007 + 10 +117.0001396772036 + 20 +-13.84500000000007 + 0 +LWPOLYLINE + 5 +2825 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-14.63213203435601 + 10 +109.4350000000001 + 20 +-14.42000000000005 + 10 +103.3350000000002 + 20 +-14.41999999999988 + 10 +103.1228679656442 + 20 +-14.63213203435584 + 0 +LWPOLYLINE + 5 +2826 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-5.367867965644066 + 10 +109.4350000000001 + 20 +-5.580000000000054 + 10 +103.3350000000002 + 20 +-5.580000000000223 + 10 +103.1228679656442 + 20 +-5.367867965644264 + 0 +LWPOLYLINE + 5 +2827 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-6.155000000000045 + 10 +117.0001396772036 + 20 +-6.155000000000044 + 0 +LWPOLYLINE + 5 +2828 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-13.84500000000007 + 10 +97.18013967720358 + 20 +-13.84500000000007 + 0 +LWPOLYLINE + 5 +2829 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-14.63213203435601 + 10 +89.61500000000007 + 20 +-14.42000000000005 + 10 +83.51500000000019 + 20 +-14.41999999999988 + 10 +83.3028679656442 + 20 +-14.63213203435584 + 0 +LWPOLYLINE + 5 +282A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-5.367867965644063 + 10 +89.61500000000007 + 20 +-5.580000000000052 + 10 +83.51500000000019 + 20 +-5.580000000000221 + 10 +83.3028679656442 + 20 +-5.367867965644261 + 0 +LWPOLYLINE + 5 +282B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-6.155000000000042 + 10 +97.18013967720358 + 20 +-6.155000000000041 + 0 +LWPOLYLINE + 5 +282C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-13.84500000000007 + 10 +77.36013967720362 + 20 +-13.84500000000007 + 0 +LWPOLYLINE + 5 +282D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-14.63213203435601 + 10 +69.79500000000007 + 20 +-14.42000000000005 + 10 +63.69500000000016 + 20 +-14.41999999999988 + 10 +63.48286796564423 + 20 +-14.63213203435584 + 0 +LWPOLYLINE + 5 +282E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-5.367867965644061 + 10 +69.79500000000007 + 20 +-5.58000000000005 + 10 +63.69500000000016 + 20 +-5.580000000000219 + 10 +63.48286796564423 + 20 +-5.367867965644259 + 0 +LWPOLYLINE + 5 +282F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-6.155000000000039 + 10 +77.36013967720362 + 20 +-6.155000000000039 + 0 +LWPOLYLINE + 5 +2830 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-13.84500000000007 + 10 +57.54013967720357 + 20 +-13.84500000000007 + 0 +LWPOLYLINE + 5 +2831 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-14.632132034356 + 10 +49.97500000000008 + 20 +-14.42000000000005 + 10 +43.87500000000023 + 20 +-14.41999999999988 + 10 +43.66286796564418 + 20 +-14.63213203435584 + 0 +LWPOLYLINE + 5 +2832 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-5.367867965644058 + 10 +49.97500000000008 + 20 +-5.580000000000047 + 10 +43.87500000000023 + 20 +-5.580000000000216 + 10 +43.66286796564418 + 20 +-5.367867965644257 + 0 +LWPOLYLINE + 5 +2833 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-6.155000000000037 + 10 +57.54013967720357 + 20 +-6.155000000000037 + 0 +LWPOLYLINE + 5 +2834 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-13.84500000000006 + 10 +37.72013967720363 + 20 +-13.84500000000006 + 0 +LWPOLYLINE + 5 +2835 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435601 + 20 +-14.632132034356 + 10 +30.15500000000009 + 20 +-14.42000000000004 + 10 +24.05500000000018 + 20 +-14.41999999999987 + 10 +23.84286796564425 + 20 +-14.63213203435583 + 0 +LWPOLYLINE + 5 +2836 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +-5.367867965644056 + 10 +30.15500000000009 + 20 +-5.580000000000044 + 10 +24.05500000000018 + 20 +-5.580000000000213 + 10 +23.84286796564425 + 20 +-5.367867965644254 + 0 +LWPOLYLINE + 5 +2837 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-6.155000000000035 + 10 +37.72013967720363 + 20 +-6.155000000000034 + 0 +LWPOLYLINE + 5 +2838 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-13.84500000000006 + 10 +17.90013967720358 + 20 +-13.84500000000006 + 0 +LWPOLYLINE + 5 +2839 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-14.632132034356 + 10 +10.33500000000009 + 20 +-14.42000000000004 + 10 +4.235000000000239 + 20 +-14.41999999999987 + 10 +4.022867965644193 + 20 +-14.63213203435583 + 0 +LWPOLYLINE + 5 +283A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-5.367867965644053 + 10 +10.33500000000009 + 20 +-5.580000000000042 + 10 +4.23500000000024 + 20 +-5.580000000000211 + 10 +4.022867965644194 + 20 +-5.367867965644252 + 0 +LWPOLYLINE + 5 +283B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-6.155000000000032 + 10 +17.90013967720358 + 20 +-6.155000000000031 + 0 +LWPOLYLINE + 5 +283C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +-4.045000000000067 + 10 +176.4601396772036 + 20 +-4.045000000000094 + 0 +LWPOLYLINE + 5 +283D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +-4.832132034356042 + 10 +168.895 + 20 +-4.620000000000082 + 10 +162.7950000000002 + 20 +-4.61999999999991 + 10 +162.5828679656442 + 20 +-4.832132034355842 + 0 +LWPOLYLINE + 5 +283E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +4.43213203435591 + 10 +168.895 + 20 +4.21999999999995 + 10 +162.7950000000002 + 20 +4.21999999999978 + 10 +162.5828679656442 + 20 +4.432132034355712 + 0 +LWPOLYLINE + 5 +283F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +3.644999999999931 + 10 +176.4601396772036 + 20 +3.64499999999996 + 0 +LWPOLYLINE + 5 +2840 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +-4.045000000000064 + 10 +156.6401396772036 + 20 +-4.045000000000092 + 0 +LWPOLYLINE + 5 +2841 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +-4.83213203435604 + 10 +149.075 + 20 +-4.62000000000008 + 10 +142.9750000000002 + 20 +-4.619999999999909 + 10 +142.7628679656442 + 20 +-4.83213203435584 + 0 +LWPOLYLINE + 5 +2842 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +4.432132034355912 + 10 +149.075 + 20 +4.219999999999952 + 10 +142.9750000000002 + 20 +4.219999999999782 + 10 +142.7628679656442 + 20 +4.432132034355714 + 0 +LWPOLYLINE + 5 +2843 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +3.644999999999933 + 10 +156.6401396772036 + 20 +3.644999999999963 + 0 +LWPOLYLINE + 5 +2844 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +-4.045000000000061 + 10 +136.8201396772036 + 20 +-4.04500000000009 + 0 +LWPOLYLINE + 5 +2845 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +-4.832132034356038 + 10 +129.2550000000001 + 20 +-4.620000000000077 + 10 +123.1550000000002 + 20 +-4.619999999999906 + 10 +122.9428679656442 + 20 +-4.832132034355838 + 0 +LWPOLYLINE + 5 +2846 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +4.432132034355915 + 10 +129.2550000000001 + 20 +4.219999999999954 + 10 +123.1550000000002 + 20 +4.219999999999785 + 10 +122.9428679656442 + 20 +4.432132034355717 + 0 +LWPOLYLINE + 5 +2847 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +3.644999999999936 + 10 +136.8201396772036 + 20 +3.644999999999965 + 0 +LWPOLYLINE + 5 +2848 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +-4.045000000000059 + 10 +117.0001396772036 + 20 +-4.045000000000087 + 0 +LWPOLYLINE + 5 +2849 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +-4.832132034356035 + 10 +109.4350000000001 + 20 +-4.620000000000075 + 10 +103.3350000000002 + 20 +-4.619999999999903 + 10 +103.1228679656442 + 20 +-4.832132034355835 + 0 +LWPOLYLINE + 5 +284A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +4.432132034355917 + 10 +109.4350000000001 + 20 +4.219999999999957 + 10 +103.3350000000002 + 20 +4.219999999999787 + 10 +103.1228679656442 + 20 +4.432132034355719 + 0 +LWPOLYLINE + 5 +284B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +3.644999999999938 + 10 +117.0001396772036 + 20 +3.644999999999968 + 0 +LWPOLYLINE + 5 +284C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +-4.045000000000057 + 10 +97.18013967720358 + 20 +-4.045000000000084 + 0 +LWPOLYLINE + 5 +284D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +-4.832132034356032 + 10 +89.61500000000007 + 20 +-4.620000000000072 + 10 +83.51500000000019 + 20 +-4.619999999999902 + 10 +83.3028679656442 + 20 +-4.832132034355832 + 0 +LWPOLYLINE + 5 +284E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +4.43213203435592 + 10 +89.61500000000007 + 20 +4.21999999999996 + 10 +83.51500000000019 + 20 +4.219999999999789 + 10 +83.3028679656442 + 20 +4.432132034355722 + 0 +LWPOLYLINE + 5 +284F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +3.644999999999941 + 10 +97.18013967720358 + 20 +3.64499999999997 + 0 +LWPOLYLINE + 5 +2850 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +-4.045000000000054 + 10 +77.36013967720362 + 20 +-4.045000000000083 + 0 +LWPOLYLINE + 5 +2851 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +-4.832132034356031 + 10 +69.79500000000007 + 20 +-4.62000000000007 + 10 +63.69500000000016 + 20 +-4.619999999999899 + 10 +63.48286796564423 + 20 +-4.832132034355831 + 0 +LWPOLYLINE + 5 +2852 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +4.432132034355922 + 10 +69.79500000000007 + 20 +4.219999999999962 + 10 +63.69500000000016 + 20 +4.219999999999792 + 10 +63.48286796564423 + 20 +4.432132034355724 + 0 +LWPOLYLINE + 5 +2853 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +3.644999999999943 + 10 +77.36013967720362 + 20 +3.644999999999972 + 0 +LWPOLYLINE + 5 +2854 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +-4.045000000000051 + 10 +57.54013967720357 + 20 +-4.04500000000008 + 0 +LWPOLYLINE + 5 +2855 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +-4.832132034356028 + 10 +49.97500000000008 + 20 +-4.620000000000068 + 10 +43.87500000000023 + 20 +-4.619999999999896 + 10 +43.66286796564418 + 20 +-4.832132034355828 + 0 +LWPOLYLINE + 5 +2856 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +4.432132034355925 + 10 +49.97500000000008 + 20 +4.219999999999964 + 10 +43.87500000000023 + 20 +4.219999999999795 + 10 +43.66286796564418 + 20 +4.432132034355726 + 0 +LWPOLYLINE + 5 +2857 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +3.644999999999945 + 10 +57.54013967720357 + 20 +3.644999999999975 + 0 +LWPOLYLINE + 5 +2858 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +-4.04500000000005 + 10 +37.72013967720363 + 20 +-4.045000000000077 + 0 +LWPOLYLINE + 5 +2859 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +-4.832132034356025 + 10 +30.15500000000009 + 20 +-4.620000000000065 + 10 +24.05500000000018 + 20 +-4.619999999999894 + 10 +23.84286796564425 + 20 +-4.832132034355825 + 0 +LWPOLYLINE + 5 +285A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +4.432132034355927 + 10 +30.15500000000009 + 20 +4.219999999999967 + 10 +24.05500000000018 + 20 +4.219999999999797 + 10 +23.84286796564425 + 20 +4.432132034355729 + 0 +LWPOLYLINE + 5 +285B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +3.644999999999948 + 10 +37.72013967720363 + 20 +3.644999999999977 + 0 +LWPOLYLINE + 5 +285C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +-4.045000000000047 + 10 +17.90013967720358 + 20 +-4.045000000000075 + 0 +LWPOLYLINE + 5 +285D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +-4.832132034356023 + 10 +10.33500000000009 + 20 +-4.620000000000062 + 10 +4.23500000000024 + 20 +-4.619999999999892 + 10 +4.022867965644194 + 20 +-4.832132034355824 + 0 +LWPOLYLINE + 5 +285E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +4.43213203435593 + 10 +10.33500000000009 + 20 +4.21999999999997 + 10 +4.235000000000242 + 20 +4.219999999999799 + 10 +4.022867965644195 + 20 +4.432132034355731 + 0 +LWPOLYLINE + 5 +285F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +3.64499999999995 + 10 +17.90013967720358 + 20 +3.64499999999998 + 0 +LWPOLYLINE + 5 +2860 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +5.754999999999916 + 10 +176.4601396772036 + 20 +5.754999999999917 + 0 +LWPOLYLINE + 5 +2861 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +4.967867965643941 + 10 +168.895 + 20 +5.17999999999993 + 10 +162.7950000000002 + 20 +5.180000000000102 + 10 +162.5828679656442 + 20 +4.967867965644141 + 0 +LWPOLYLINE + 5 +2862 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +14.23213203435589 + 10 +168.895 + 20 +14.01999999999993 + 10 +162.7950000000002 + 20 +14.01999999999976 + 10 +162.5828679656442 + 20 +14.23213203435572 + 0 +LWPOLYLINE + 5 +2863 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +13.44499999999994 + 10 +176.4601396772036 + 20 +13.44499999999994 + 0 +LWPOLYLINE + 5 +2864 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +5.754999999999919 + 10 +156.6401396772036 + 20 +5.754999999999919 + 0 +LWPOLYLINE + 5 +2865 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +4.967867965643943 + 10 +149.075 + 20 +5.179999999999931 + 10 +142.9750000000002 + 20 +5.180000000000104 + 10 +142.7628679656442 + 20 +4.967867965644142 + 0 +LWPOLYLINE + 5 +2866 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +14.23213203435589 + 10 +149.075 + 20 +14.01999999999993 + 10 +142.9750000000002 + 20 +14.01999999999976 + 10 +142.7628679656442 + 20 +14.23213203435572 + 0 +LWPOLYLINE + 5 +2867 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +13.44499999999994 + 10 +156.6401396772036 + 20 +13.44499999999994 + 0 +LWPOLYLINE + 5 +2868 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +5.754999999999922 + 10 +136.8201396772036 + 20 +5.754999999999922 + 0 +LWPOLYLINE + 5 +2869 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +4.967867965643945 + 10 +129.2550000000001 + 20 +5.179999999999934 + 10 +123.1550000000002 + 20 +5.180000000000106 + 10 +122.9428679656442 + 20 +4.967867965644145 + 0 +LWPOLYLINE + 5 +286A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +14.23213203435589 + 10 +129.2550000000001 + 20 +14.01999999999993 + 10 +123.1550000000002 + 20 +14.01999999999977 + 10 +122.9428679656442 + 20 +14.23213203435573 + 0 +LWPOLYLINE + 5 +286B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +13.44499999999994 + 10 +136.8201396772036 + 20 +13.44499999999994 + 0 +LWPOLYLINE + 5 +286C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +5.754999999999924 + 10 +117.0001396772036 + 20 +5.754999999999924 + 0 +LWPOLYLINE + 5 +286D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +4.967867965643948 + 10 +109.4350000000001 + 20 +5.179999999999937 + 10 +103.3350000000002 + 20 +5.180000000000109 + 10 +103.1228679656442 + 20 +4.967867965644148 + 0 +LWPOLYLINE + 5 +286E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +14.2321320343559 + 10 +109.4350000000001 + 20 +14.01999999999994 + 10 +103.3350000000002 + 20 +14.01999999999977 + 10 +103.1228679656442 + 20 +14.23213203435573 + 0 +LWPOLYLINE + 5 +286F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +13.44499999999995 + 10 +117.0001396772036 + 20 +13.44499999999995 + 0 +LWPOLYLINE + 5 +2870 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +5.754999999999926 + 10 +97.18013967720358 + 20 +5.754999999999927 + 0 +LWPOLYLINE + 5 +2871 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +4.967867965643951 + 10 +89.61500000000007 + 20 +5.179999999999939 + 10 +83.51500000000019 + 20 +5.180000000000111 + 10 +83.3028679656442 + 20 +4.96786796564415 + 0 +LWPOLYLINE + 5 +2872 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +14.2321320343559 + 10 +89.61500000000007 + 20 +14.01999999999994 + 10 +83.51500000000019 + 20 +14.01999999999977 + 10 +83.3028679656442 + 20 +14.23213203435573 + 0 +LWPOLYLINE + 5 +2873 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +13.44499999999995 + 10 +97.18013967720358 + 20 +13.44499999999995 + 0 +LWPOLYLINE + 5 +2874 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +5.754999999999929 + 10 +77.36013967720362 + 20 +5.754999999999929 + 0 +LWPOLYLINE + 5 +2875 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +4.967867965643952 + 10 +69.79500000000007 + 20 +5.179999999999941 + 10 +63.69500000000016 + 20 +5.180000000000113 + 10 +63.48286796564423 + 20 +4.967867965644152 + 0 +LWPOLYLINE + 5 +2876 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +14.2321320343559 + 10 +69.79500000000007 + 20 +14.01999999999994 + 10 +63.69500000000016 + 20 +14.01999999999977 + 10 +63.48286796564423 + 20 +14.23213203435573 + 0 +LWPOLYLINE + 5 +2877 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +13.44499999999995 + 10 +77.36013967720362 + 20 +13.44499999999995 + 0 +LWPOLYLINE + 5 +2878 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +5.754999999999932 + 10 +57.54013967720357 + 20 +5.754999999999932 + 0 +LWPOLYLINE + 5 +2879 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +4.967867965643955 + 10 +49.97500000000008 + 20 +5.179999999999944 + 10 +43.87500000000023 + 20 +5.180000000000116 + 10 +43.66286796564418 + 20 +4.967867965644155 + 0 +LWPOLYLINE + 5 +287A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +14.2321320343559 + 10 +49.97500000000008 + 20 +14.01999999999994 + 10 +43.87500000000023 + 20 +14.01999999999977 + 10 +43.66286796564418 + 20 +14.23213203435573 + 0 +LWPOLYLINE + 5 +287B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +13.44499999999995 + 10 +57.54013967720357 + 20 +13.44499999999995 + 0 +LWPOLYLINE + 5 +287C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +5.754999999999933 + 10 +37.72013967720363 + 20 +5.754999999999934 + 0 +LWPOLYLINE + 5 +287D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +4.967867965643958 + 10 +30.15500000000009 + 20 +5.179999999999946 + 10 +24.05500000000018 + 20 +5.180000000000119 + 10 +23.84286796564425 + 20 +4.967867965644158 + 0 +LWPOLYLINE + 5 +287E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +14.23213203435591 + 10 +30.15500000000009 + 20 +14.01999999999995 + 10 +24.05500000000018 + 20 +14.01999999999978 + 10 +23.84286796564425 + 20 +14.23213203435574 + 0 +LWPOLYLINE + 5 +287F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +13.44499999999995 + 10 +37.72013967720363 + 20 +13.44499999999995 + 0 +LWPOLYLINE + 5 +2880 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +5.754999999999936 + 10 +17.90013967720358 + 20 +5.754999999999937 + 0 +LWPOLYLINE + 5 +2881 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +4.96786796564396 + 10 +10.33500000000009 + 20 +5.179999999999949 + 10 +4.235000000000242 + 20 +5.180000000000121 + 10 +4.022867965644195 + 20 +4.967867965644159 + 0 +LWPOLYLINE + 5 +2882 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +14.23213203435591 + 10 +10.33500000000009 + 20 +14.01999999999995 + 10 +4.235000000000243 + 20 +14.01999999999978 + 10 +4.022867965644196 + 20 +14.23213203435574 + 0 +LWPOLYLINE + 5 +2883 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +13.44499999999996 + 10 +17.90013967720358 + 20 +13.44499999999996 + 0 +LWPOLYLINE + 5 +2884 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +15.55499999999993 + 10 +176.4601396772036 + 20 +15.5549999999999 + 0 +LWPOLYLINE + 5 +2885 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +14.76786796564395 + 10 +168.895 + 20 +14.97999999999994 + 10 +162.7950000000002 + 20 +14.98000000000011 + 10 +162.5828679656442 + 20 +14.76786796564415 + 0 +LWPOLYLINE + 5 +2886 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +24.03213203435591 + 10 +168.895 + 20 +23.81999999999992 + 10 +162.7950000000002 + 20 +23.81999999999975 + 10 +162.5828679656442 + 20 +24.03213203435571 + 0 +LWPOLYLINE + 5 +2887 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +23.24499999999993 + 10 +176.4601396772036 + 20 +23.24499999999996 + 0 +LWPOLYLINE + 5 +2888 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +15.55499999999993 + 10 +156.6401396772036 + 20 +15.5549999999999 + 0 +LWPOLYLINE + 5 +2889 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +14.76786796564395 + 10 +149.075 + 20 +14.97999999999994 + 10 +142.9750000000002 + 20 +14.98000000000011 + 10 +142.7628679656442 + 20 +14.76786796564415 + 0 +LWPOLYLINE + 5 +288A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +24.03213203435591 + 10 +149.075 + 20 +23.81999999999992 + 10 +142.9750000000002 + 20 +23.81999999999975 + 10 +142.7628679656442 + 20 +24.03213203435571 + 0 +LWPOLYLINE + 5 +288B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +23.24499999999993 + 10 +156.6401396772036 + 20 +23.24499999999996 + 0 +LWPOLYLINE + 5 +288C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +15.55499999999993 + 10 +136.8201396772036 + 20 +15.5549999999999 + 0 +LWPOLYLINE + 5 +288D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +14.76786796564395 + 10 +129.2550000000001 + 20 +14.97999999999994 + 10 +123.1550000000002 + 20 +14.98000000000012 + 10 +122.9428679656442 + 20 +14.76786796564416 + 0 +LWPOLYLINE + 5 +288E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +24.03213203435591 + 10 +129.2550000000001 + 20 +23.81999999999993 + 10 +123.1550000000002 + 20 +23.81999999999976 + 10 +122.9428679656442 + 20 +24.03213203435572 + 0 +LWPOLYLINE + 5 +288F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +23.24499999999993 + 10 +136.8201396772036 + 20 +23.24499999999996 + 0 +LWPOLYLINE + 5 +2890 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +15.55499999999994 + 10 +117.0001396772036 + 20 +15.55499999999991 + 0 +LWPOLYLINE + 5 +2891 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +14.76786796564396 + 10 +109.4350000000001 + 20 +14.97999999999995 + 10 +103.3350000000002 + 20 +14.98000000000012 + 10 +103.1228679656442 + 20 +14.76786796564416 + 0 +LWPOLYLINE + 5 +2892 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +24.03213203435591 + 10 +109.4350000000001 + 20 +23.81999999999993 + 10 +103.3350000000002 + 20 +23.81999999999976 + 10 +103.1228679656442 + 20 +24.03213203435572 + 0 +LWPOLYLINE + 5 +2893 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +23.24499999999994 + 10 +117.0001396772036 + 20 +23.24499999999997 + 0 +LWPOLYLINE + 5 +2894 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +15.55499999999994 + 10 +97.18013967720358 + 20 +15.55499999999991 + 0 +LWPOLYLINE + 5 +2895 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +14.76786796564396 + 10 +89.61500000000007 + 20 +14.97999999999995 + 10 +83.51500000000019 + 20 +14.98000000000012 + 10 +83.3028679656442 + 20 +14.76786796564416 + 0 +LWPOLYLINE + 5 +2896 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +24.03213203435592 + 10 +89.61500000000007 + 20 +23.81999999999993 + 10 +83.51500000000019 + 20 +23.81999999999976 + 10 +83.3028679656442 + 20 +24.03213203435572 + 0 +LWPOLYLINE + 5 +2897 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +23.24499999999994 + 10 +97.18013967720358 + 20 +23.24499999999997 + 0 +LWPOLYLINE + 5 +2898 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +15.55499999999994 + 10 +77.36013967720362 + 20 +15.55499999999991 + 0 +LWPOLYLINE + 5 +2899 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +14.76786796564396 + 10 +69.79500000000007 + 20 +14.97999999999995 + 10 +63.69500000000016 + 20 +14.98000000000012 + 10 +63.48286796564423 + 20 +14.76786796564416 + 0 +LWPOLYLINE + 5 +289A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +24.03213203435592 + 10 +69.79500000000007 + 20 +23.81999999999993 + 10 +63.69500000000016 + 20 +23.81999999999976 + 10 +63.48286796564423 + 20 +24.03213203435572 + 0 +LWPOLYLINE + 5 +289B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +23.24499999999994 + 10 +77.36013967720362 + 20 +23.24499999999997 + 0 +LWPOLYLINE + 5 +289C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +15.55499999999994 + 10 +57.54013967720357 + 20 +15.55499999999991 + 0 +LWPOLYLINE + 5 +289D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +14.76786796564397 + 10 +49.97500000000008 + 20 +14.97999999999995 + 10 +43.87500000000023 + 20 +14.98000000000012 + 10 +43.66286796564418 + 20 +14.76786796564416 + 0 +LWPOLYLINE + 5 +289E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +24.03213203435592 + 10 +49.97500000000008 + 20 +23.81999999999993 + 10 +43.87500000000023 + 20 +23.81999999999976 + 10 +43.66286796564418 + 20 +24.03213203435572 + 0 +LWPOLYLINE + 5 +289F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +23.24499999999994 + 10 +57.54013967720357 + 20 +23.24499999999997 + 0 +LWPOLYLINE + 5 +28A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +15.55499999999994 + 10 +37.72013967720363 + 20 +15.55499999999991 + 0 +LWPOLYLINE + 5 +28A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +14.76786796564397 + 10 +30.15500000000009 + 20 +14.97999999999996 + 10 +24.05500000000018 + 20 +14.98000000000013 + 10 +23.84286796564425 + 20 +14.76786796564417 + 0 +LWPOLYLINE + 5 +28A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +24.03213203435593 + 10 +30.15500000000009 + 20 +23.81999999999994 + 10 +24.05500000000018 + 20 +23.81999999999977 + 10 +23.84286796564425 + 20 +24.03213203435573 + 0 +LWPOLYLINE + 5 +28A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +23.24499999999995 + 10 +37.72013967720363 + 20 +23.24499999999998 + 0 +LWPOLYLINE + 5 +28A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +15.55499999999995 + 10 +17.90013967720358 + 20 +15.55499999999992 + 0 +LWPOLYLINE + 5 +28A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +14.76786796564397 + 10 +10.33500000000009 + 20 +14.97999999999996 + 10 +4.235000000000243 + 20 +14.98000000000013 + 10 +4.022867965644196 + 20 +14.76786796564417 + 0 +LWPOLYLINE + 5 +28A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +24.03213203435593 + 10 +10.33500000000009 + 20 +23.81999999999994 + 10 +4.235000000000244 + 20 +23.81999999999977 + 10 +4.022867965644197 + 20 +24.03213203435573 + 0 +LWPOLYLINE + 5 +28A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +23.24499999999995 + 10 +17.90013967720358 + 20 +23.24499999999998 + 0 +LWPOLYLINE + 5 +28A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +25.35499999999991 + 10 +176.4601396772036 + 20 +25.35499999999991 + 0 +LWPOLYLINE + 5 +28A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +24.56786796564396 + 10 +168.895 + 20 +24.77999999999992 + 10 +162.7950000000002 + 20 +24.78000000000009 + 10 +162.5828679656442 + 20 +24.56786796564413 + 0 +LWPOLYLINE + 5 +28AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +33.83213203435592 + 10 +168.895 + 20 +33.61999999999993 + 10 +162.7950000000002 + 20 +33.61999999999976 + 10 +162.5828679656442 + 20 +33.83213203435572 + 0 +LWPOLYLINE + 5 +28AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +33.04499999999994 + 10 +176.4601396772036 + 20 +33.04499999999994 + 0 +LWPOLYLINE + 5 +28AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +25.35499999999991 + 10 +156.6401396772036 + 20 +25.35499999999991 + 0 +LWPOLYLINE + 5 +28AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +24.56786796564396 + 10 +149.075 + 20 +24.77999999999992 + 10 +142.9750000000002 + 20 +24.78000000000009 + 10 +142.7628679656442 + 20 +24.56786796564413 + 0 +LWPOLYLINE + 5 +28AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +33.83213203435592 + 10 +149.075 + 20 +33.61999999999993 + 10 +142.9750000000002 + 20 +33.61999999999976 + 10 +142.7628679656442 + 20 +33.83213203435572 + 0 +LWPOLYLINE + 5 +28AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +33.04499999999994 + 10 +156.6401396772036 + 20 +33.04499999999994 + 0 +LWPOLYLINE + 5 +28B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +25.35499999999991 + 10 +136.8201396772036 + 20 +25.35499999999991 + 0 +LWPOLYLINE + 5 +28B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +24.56786796564397 + 10 +129.2550000000001 + 20 +24.77999999999993 + 10 +123.1550000000002 + 20 +24.7800000000001 + 10 +122.9428679656442 + 20 +24.56786796564414 + 0 +LWPOLYLINE + 5 +28B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +33.83213203435593 + 10 +129.2550000000001 + 20 +33.61999999999993 + 10 +123.1550000000002 + 20 +33.61999999999976 + 10 +122.9428679656442 + 20 +33.83213203435572 + 0 +LWPOLYLINE + 5 +28B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +33.04499999999994 + 10 +136.8201396772036 + 20 +33.04499999999994 + 0 +LWPOLYLINE + 5 +28B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +25.35499999999992 + 10 +117.0001396772036 + 20 +25.35499999999992 + 0 +LWPOLYLINE + 5 +28B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +24.56786796564397 + 10 +109.4350000000001 + 20 +24.77999999999993 + 10 +103.3350000000002 + 20 +24.7800000000001 + 10 +103.1228679656442 + 20 +24.56786796564414 + 0 +LWPOLYLINE + 5 +28B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +33.83213203435593 + 10 +109.4350000000001 + 20 +33.61999999999993 + 10 +103.3350000000002 + 20 +33.61999999999976 + 10 +103.1228679656442 + 20 +33.83213203435572 + 0 +LWPOLYLINE + 5 +28B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +33.04499999999994 + 10 +117.0001396772036 + 20 +33.04499999999994 + 0 +LWPOLYLINE + 5 +28B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +25.35499999999992 + 10 +97.18013967720358 + 20 +25.35499999999992 + 0 +LWPOLYLINE + 5 +28B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +24.56786796564397 + 10 +89.61500000000007 + 20 +24.77999999999993 + 10 +83.51500000000019 + 20 +24.7800000000001 + 10 +83.3028679656442 + 20 +24.56786796564414 + 0 +LWPOLYLINE + 5 +28BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +33.83213203435593 + 10 +89.61500000000007 + 20 +33.61999999999993 + 10 +83.51500000000019 + 20 +33.61999999999977 + 10 +83.3028679656442 + 20 +33.83213203435573 + 0 +LWPOLYLINE + 5 +28BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +33.04499999999994 + 10 +97.18013967720358 + 20 +33.04499999999994 + 0 +LWPOLYLINE + 5 +28BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +25.35499999999992 + 10 +77.36013967720362 + 20 +25.35499999999992 + 0 +LWPOLYLINE + 5 +28BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +24.56786796564397 + 10 +69.79500000000007 + 20 +24.77999999999993 + 10 +63.69500000000016 + 20 +24.7800000000001 + 10 +63.48286796564423 + 20 +24.56786796564414 + 0 +LWPOLYLINE + 5 +28BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +33.83213203435594 + 10 +69.79500000000007 + 20 +33.61999999999994 + 10 +63.69500000000016 + 20 +33.61999999999977 + 10 +63.48286796564424 + 20 +33.83213203435573 + 0 +LWPOLYLINE + 5 +28BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +33.04499999999995 + 10 +77.36013967720362 + 20 +33.04499999999995 + 0 +LWPOLYLINE + 5 +28C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +25.35499999999992 + 10 +57.54013967720357 + 20 +25.35499999999992 + 0 +LWPOLYLINE + 5 +28C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435607 + 20 +24.56786796564397 + 10 +49.97500000000008 + 20 +24.77999999999993 + 10 +43.87500000000023 + 20 +24.7800000000001 + 10 +43.66286796564418 + 20 +24.56786796564414 + 0 +LWPOLYLINE + 5 +28C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435608 + 20 +33.83213203435594 + 10 +49.97500000000009 + 20 +33.61999999999994 + 10 +43.87500000000023 + 20 +33.61999999999977 + 10 +43.66286796564419 + 20 +33.83213203435573 + 0 +LWPOLYLINE + 5 +28C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +33.04499999999995 + 10 +57.54013967720358 + 20 +33.04499999999995 + 0 +LWPOLYLINE + 5 +28C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064914 + 20 +25.35499999999993 + 10 +37.72013967720363 + 20 +25.35499999999993 + 0 +LWPOLYLINE + 5 +28C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +24.56786796564398 + 10 +30.15500000000009 + 20 +24.77999999999994 + 10 +24.05500000000018 + 20 +24.78000000000011 + 10 +23.84286796564425 + 20 +24.56786796564415 + 0 +LWPOLYLINE + 5 +28C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +33.83213203435594 + 10 +30.15500000000009 + 20 +33.61999999999994 + 10 +24.05500000000018 + 20 +33.61999999999978 + 10 +23.84286796564425 + 20 +33.83213203435574 + 0 +LWPOLYLINE + 5 +28C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064915 + 20 +33.04499999999995 + 10 +37.72013967720364 + 20 +33.04499999999995 + 0 +LWPOLYLINE + 5 +28C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +25.35499999999993 + 10 +17.90013967720358 + 20 +25.35499999999993 + 0 +LWPOLYLINE + 5 +28C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +24.56786796564398 + 10 +10.33500000000009 + 20 +24.77999999999994 + 10 +4.235000000000244 + 20 +24.78000000000011 + 10 +4.022867965644197 + 20 +24.56786796564415 + 0 +LWPOLYLINE + 5 +28CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +33.83213203435594 + 10 +10.33500000000009 + 20 +33.61999999999995 + 10 +4.235000000000245 + 20 +33.61999999999978 + 10 +4.022867965644199 + 20 +33.83213203435574 + 0 +LWPOLYLINE + 5 +28CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +33.04499999999996 + 10 +17.90013967720358 + 20 +33.04499999999996 + 0 +LWPOLYLINE + 5 +28CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +35.15499999999992 + 10 +176.4601396772036 + 20 +35.1549999999999 + 0 +LWPOLYLINE + 5 +28CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +34.36786796564395 + 10 +168.895 + 20 +34.57999999999991 + 10 +162.7950000000002 + 20 +34.58000000000008 + 10 +162.5828679656442 + 20 +34.36786796564415 + 0 +LWPOLYLINE + 5 +28CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.107132034356 + 20 +43.6321320343559 + 10 +168.895 + 20 +43.41999999999994 + 10 +162.7950000000002 + 20 +43.41999999999977 + 10 +162.5828679656442 + 20 +43.6321320343557 + 0 +LWPOLYLINE + 5 +28CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +180.2989677806491 + 20 +42.84499999999992 + 10 +176.4601396772036 + 20 +42.84499999999995 + 0 +LWPOLYLINE + 5 +28D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +35.15499999999992 + 10 +156.6401396772036 + 20 +35.1549999999999 + 0 +LWPOLYLINE + 5 +28D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +34.36786796564395 + 10 +149.075 + 20 +34.57999999999991 + 10 +142.9750000000002 + 20 +34.58000000000008 + 10 +142.7628679656442 + 20 +34.36786796564416 + 0 +LWPOLYLINE + 5 +28D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +149.287132034356 + 20 +43.6321320343559 + 10 +149.075 + 20 +43.41999999999994 + 10 +142.9750000000002 + 20 +43.41999999999977 + 10 +142.7628679656442 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +160.4789677806491 + 20 +42.84499999999992 + 10 +156.6401396772036 + 20 +42.84499999999995 + 0 +LWPOLYLINE + 5 +28D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +35.15499999999992 + 10 +136.8201396772036 + 20 +35.15499999999991 + 0 +LWPOLYLINE + 5 +28D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +34.36786796564395 + 10 +129.2550000000001 + 20 +34.57999999999991 + 10 +123.1550000000002 + 20 +34.58000000000008 + 10 +122.9428679656442 + 20 +34.36786796564416 + 0 +LWPOLYLINE + 5 +28D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +129.467132034356 + 20 +43.63213203435591 + 10 +129.2550000000001 + 20 +43.41999999999994 + 10 +123.1550000000002 + 20 +43.41999999999977 + 10 +122.9428679656442 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +140.6589677806491 + 20 +42.84499999999993 + 10 +136.8201396772036 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +35.15499999999992 + 10 +117.0001396772036 + 20 +35.15499999999991 + 0 +LWPOLYLINE + 5 +28D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +34.36786796564395 + 10 +109.4350000000001 + 20 +34.57999999999991 + 10 +103.3350000000002 + 20 +34.58000000000008 + 10 +103.1228679656442 + 20 +34.36786796564416 + 0 +LWPOLYLINE + 5 +28DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +109.647132034356 + 20 +43.63213203435591 + 10 +109.4350000000001 + 20 +43.41999999999994 + 10 +103.3350000000002 + 20 +43.41999999999977 + 10 +103.1228679656442 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +120.8389677806491 + 20 +42.84499999999993 + 10 +117.0001396772036 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +35.15499999999992 + 10 +97.18013967720358 + 20 +35.15499999999991 + 0 +LWPOLYLINE + 5 +28DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +34.36786796564395 + 10 +89.61500000000007 + 20 +34.57999999999991 + 10 +83.51500000000019 + 20 +34.58000000000009 + 10 +83.3028679656442 + 20 +34.36786796564417 + 0 +LWPOLYLINE + 5 +28DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.82713203435605 + 20 +43.63213203435591 + 10 +89.61500000000007 + 20 +43.41999999999994 + 10 +83.51500000000019 + 20 +43.41999999999978 + 10 +83.3028679656442 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +101.0189677806491 + 20 +42.84499999999993 + 10 +97.18013967720358 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +35.15499999999993 + 10 +77.36013967720362 + 20 +35.15499999999992 + 0 +LWPOLYLINE + 5 +28E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +34.36786796564396 + 10 +69.79500000000007 + 20 +34.57999999999992 + 10 +63.69500000000016 + 20 +34.58000000000009 + 10 +63.48286796564424 + 20 +34.36786796564417 + 0 +LWPOLYLINE + 5 +28E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.00713203435606 + 20 +43.63213203435591 + 10 +69.79500000000007 + 20 +43.41999999999995 + 10 +63.69500000000016 + 20 +43.41999999999978 + 10 +63.48286796564424 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +81.19896778064913 + 20 +42.84499999999993 + 10 +77.36013967720362 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +35.15499999999993 + 10 +57.54013967720358 + 20 +35.15499999999992 + 0 +LWPOLYLINE + 5 +28E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435608 + 20 +34.36786796564396 + 10 +49.97500000000009 + 20 +34.57999999999992 + 10 +43.87500000000023 + 20 +34.58000000000009 + 10 +43.66286796564419 + 20 +34.36786796564417 + 0 +LWPOLYLINE + 5 +28E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +50.18713203435608 + 20 +43.63213203435591 + 10 +49.97500000000009 + 20 +43.41999999999995 + 10 +43.87500000000023 + 20 +43.41999999999978 + 10 +43.66286796564419 + 20 +43.63213203435571 + 0 +LWPOLYLINE + 5 +28E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +61.37896778064913 + 20 +42.84499999999993 + 10 +57.54013967720358 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064915 + 20 +35.15499999999993 + 10 +37.72013967720364 + 20 +35.15499999999992 + 0 +LWPOLYLINE + 5 +28E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435602 + 20 +34.36786796564396 + 10 +30.15500000000009 + 20 +34.57999999999992 + 10 +24.05500000000018 + 20 +34.5800000000001 + 10 +23.84286796564425 + 20 +34.36786796564417 + 0 +LWPOLYLINE + 5 +28EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +30.36713203435603 + 20 +43.63213203435591 + 10 +30.15500000000009 + 20 +43.41999999999995 + 10 +24.05500000000018 + 20 +43.41999999999979 + 10 +23.84286796564426 + 20 +43.63213203435572 + 0 +LWPOLYLINE + 5 +28EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +41.55896778064915 + 20 +42.84499999999993 + 10 +37.72013967720364 + 20 +42.84499999999996 + 0 +LWPOLYLINE + 5 +28EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +35.15499999999994 + 10 +17.90013967720358 + 20 +35.15499999999992 + 0 +LWPOLYLINE + 5 +28ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435608 + 20 +34.36786796564397 + 10 +10.33500000000009 + 20 +34.57999999999993 + 10 +4.235000000000245 + 20 +34.5800000000001 + 10 +4.022867965644199 + 20 +34.36786796564417 + 0 +LWPOLYLINE + 5 +28EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +10.54713203435609 + 20 +43.63213203435592 + 10 +10.33500000000009 + 20 +43.41999999999996 + 10 +4.235000000000246 + 20 +43.41999999999979 + 10 +4.0228679656442 + 20 +43.63213203435572 + 0 +LWPOLYLINE + 5 +28EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +21.73896778064915 + 20 +42.84499999999994 + 10 +17.90013967720358 + 20 +42.84499999999997 + 0 +LWPOLYLINE + 5 +28F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.497132034356 + 20 +-11.26213203435602 + 10 +180.2850000000001 + 20 +-11.05000000000003 + 10 +180.2850000000001 + 20 +-8.950000000000067 + 10 +180.497132034356 + 20 +-8.737867965644078 + 0 +LWPOLYLINE + 5 +28F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +161.1928679656441 + 20 +-11.26213203435602 + 10 +161.4050000000001 + 20 +-11.05000000000003 + 10 +161.4050000000001 + 20 +-8.950000000000065 + 10 +161.1928679656441 + 20 +-8.737867965644076 + 0 +LWPOLYLINE + 5 +28F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +160.677132034356 + 20 +-11.26213203435602 + 10 +160.4650000000001 + 20 +-11.05000000000003 + 10 +160.4650000000001 + 20 +-8.950000000000065 + 10 +160.677132034356 + 20 +-8.737867965644076 + 0 +LWPOLYLINE + 5 +28F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +141.3728679656441 + 20 +-11.26213203435602 + 10 +141.5850000000001 + 20 +-11.05000000000003 + 10 +141.5850000000001 + 20 +-8.950000000000063 + 10 +141.3728679656441 + 20 +-8.737867965644075 + 0 +LWPOLYLINE + 5 +28F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +140.857132034356 + 20 +-11.26213203435602 + 10 +140.6450000000001 + 20 +-11.05000000000003 + 10 +140.6450000000001 + 20 +-8.950000000000063 + 10 +140.857132034356 + 20 +-8.737867965644075 + 0 +LWPOLYLINE + 5 +28F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +121.5528679656441 + 20 +-11.26213203435601 + 10 +121.765 + 20 +-11.05000000000002 + 10 +121.765 + 20 +-8.95000000000006 + 10 +121.5528679656441 + 20 +-8.737867965644071 + 0 +LWPOLYLINE + 5 +28F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +121.037132034356 + 20 +-11.26213203435601 + 10 +120.8250000000001 + 20 +-11.05000000000002 + 10 +120.8250000000001 + 20 +-8.95000000000006 + 10 +121.037132034356 + 20 +-8.737867965644071 + 0 +LWPOLYLINE + 5 +28F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +101.7328679656441 + 20 +-11.26213203435601 + 10 +101.9450000000001 + 20 +-11.05000000000002 + 10 +101.9450000000001 + 20 +-8.950000000000058 + 10 +101.7328679656441 + 20 +-8.73786796564407 + 0 +LWPOLYLINE + 5 +28F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +101.217132034356 + 20 +-11.26213203435601 + 10 +101.0050000000001 + 20 +-11.05000000000002 + 10 +101.0050000000001 + 20 +-8.950000000000058 + 10 +101.217132034356 + 20 +-8.73786796564407 + 0 +LWPOLYLINE + 5 +28F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +81.9128679656441 + 20 +-11.26213203435601 + 10 +82.12500000000006 + 20 +-11.05000000000002 + 10 +82.12500000000006 + 20 +-8.950000000000056 + 10 +81.9128679656441 + 20 +-8.737867965644067 + 0 +LWPOLYLINE + 5 +28FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +81.39713203435605 + 20 +-11.26213203435601 + 10 +81.18500000000009 + 20 +-11.05000000000002 + 10 +81.18500000000009 + 20 +-8.950000000000056 + 10 +81.39713203435605 + 20 +-8.737867965644067 + 0 +LWPOLYLINE + 5 +28FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.09286796564413 + 20 +-11.26213203435601 + 10 +62.30500000000006 + 20 +-11.05000000000002 + 10 +62.30500000000006 + 20 +-8.950000000000053 + 10 +62.09286796564413 + 20 +-8.737867965644064 + 0 +LWPOLYLINE + 5 +28FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +61.57713203435605 + 20 +-11.26213203435601 + 10 +61.36500000000007 + 20 +-11.05000000000002 + 10 +61.36500000000007 + 20 +-8.950000000000053 + 10 +61.57713203435605 + 20 +-8.737867965644064 + 0 +LWPOLYLINE + 5 +28FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +42.27286796564408 + 20 +-11.26213203435601 + 10 +42.48500000000001 + 20 +-11.05000000000001 + 10 +42.48500000000001 + 20 +-8.95000000000005 + 10 +42.27286796564408 + 20 +-8.737867965644062 + 0 +LWPOLYLINE + 5 +28FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +41.757132034356 + 20 +-11.26213203435601 + 10 +41.54500000000007 + 20 +-11.05000000000001 + 10 +41.54500000000007 + 20 +-8.95000000000005 + 10 +41.757132034356 + 20 +-8.737867965644062 + 0 +LWPOLYLINE + 5 +28FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +22.45286796564409 + 20 +-11.262132034356 + 10 +22.66500000000008 + 20 +-11.05000000000001 + 10 +22.66500000000008 + 20 +-8.950000000000049 + 10 +22.45286796564409 + 20 +-8.73786796564406 + 0 +LWPOLYLINE + 5 +2900 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +21.93713203435607 + 20 +-11.262132034356 + 10 +21.72500000000008 + 20 +-11.05000000000001 + 10 +21.72500000000008 + 20 +-8.950000000000047 + 10 +21.93713203435607 + 20 +-8.73786796564406 + 0 +LWPOLYLINE + 5 +2901 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +2.632867965644094 + 20 +-11.262132034356 + 10 +2.845000000000026 + 20 +-11.05000000000001 + 10 +2.845000000000026 + 20 +-8.950000000000045 + 10 +2.632867965644094 + 20 +-8.737867965644057 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.par b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/D979.E219 原图.E219 原图.dxfxin.par differ diff --git a/LaiPuLaser/TempMarkData/D979.E219 原图.dxf b/LaiPuLaser/TempMarkData/D979.E219 原图.dxf new file mode 100644 index 0000000..c441685 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D979.E219 原图.dxf @@ -0,0 +1,17364 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5000000000001 + 20 +-43.63213203435592 + 30 +0.0 + 9 +$EXTMAX + 10 +0.5000000000000002 + 20 +63.632132034356 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458920.366792616 + 9 +$TDUCREATE + 40 +2458920.033459282 + 9 +$TDUPDATE + 40 +2458920.366792616 + 9 +$TDUUPDATE + 40 +2458920.033459282 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +2903 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-91.50000000000006 + 22 +10.00000000000004 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +109.4095493500862 + 41 +4.927892593500282 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +7AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +-183.0000000000001 + 20 +50.0 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +7AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +2764 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +62.84500000000003 + 10 +-176.4601396772036 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2765 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +55.15500000000003 + 10 +-176.4601396772036 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2766 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +63.632132034356 + 10 +-168.895 + 20 +63.42000000000002 + 10 +-162.7950000000002 + 20 +63.41999999999985 + 10 +-162.5828679656442 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +2767 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +54.36786796564405 + 10 +-168.895 + 20 +54.58000000000004 + 10 +-162.7950000000002 + 20 +54.58000000000021 + 10 +-162.5828679656442 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +2768 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +62.84500000000003 + 10 +-156.6401396772036 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2769 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +63.632132034356 + 10 +-149.075 + 20 +63.42000000000002 + 10 +-142.9750000000002 + 20 +63.41999999999985 + 10 +-142.7628679656442 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +276A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +54.36786796564405 + 10 +-149.075 + 20 +54.58000000000004 + 10 +-142.9750000000002 + 20 +54.58000000000021 + 10 +-142.7628679656442 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +276B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +55.15500000000003 + 10 +-156.6401396772036 + 20 +55.155 + 0 +LWPOLYLINE + 5 +276C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +62.84500000000003 + 10 +-136.8201396772036 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +276D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +63.632132034356 + 10 +-129.2550000000001 + 20 +63.42000000000002 + 10 +-123.1550000000002 + 20 +63.41999999999985 + 10 +-122.9428679656442 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +276E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +54.36786796564405 + 10 +-129.2550000000001 + 20 +54.58000000000004 + 10 +-123.1550000000002 + 20 +54.58000000000021 + 10 +-122.9428679656442 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +276F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +55.15500000000003 + 10 +-136.8201396772036 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2770 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +62.84500000000003 + 10 +-117.0001396772036 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2771 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +63.632132034356 + 10 +-109.4350000000001 + 20 +63.42000000000002 + 10 +-103.3350000000002 + 20 +63.41999999999985 + 10 +-103.1228679656442 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +2772 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +54.36786796564405 + 10 +-109.4350000000001 + 20 +54.58000000000004 + 10 +-103.3350000000002 + 20 +54.58000000000021 + 10 +-103.1228679656442 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +2773 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +55.15500000000003 + 10 +-117.0001396772036 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2774 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +62.84500000000003 + 10 +-97.18013967720358 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2775 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +63.632132034356 + 10 +-89.61500000000007 + 20 +63.42000000000002 + 10 +-83.51500000000019 + 20 +63.41999999999985 + 10 +-83.3028679656442 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +2776 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +54.36786796564405 + 10 +-89.61500000000007 + 20 +54.58000000000004 + 10 +-83.51500000000019 + 20 +54.58000000000021 + 10 +-83.3028679656442 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +2777 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +55.15500000000003 + 10 +-97.18013967720358 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2778 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +62.84500000000003 + 10 +-77.36013967720362 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2779 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +63.632132034356 + 10 +-69.79500000000007 + 20 +63.42000000000002 + 10 +-63.69500000000016 + 20 +63.41999999999985 + 10 +-63.48286796564423 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +277A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +54.36786796564405 + 10 +-69.79500000000007 + 20 +54.58000000000004 + 10 +-63.69500000000016 + 20 +54.58000000000021 + 10 +-63.48286796564423 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +277B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +55.15500000000003 + 10 +-77.36013967720362 + 20 +55.155 + 0 +LWPOLYLINE + 5 +277C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +62.84500000000003 + 10 +-57.54013967720357 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +277D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +63.632132034356 + 10 +-49.97500000000008 + 20 +63.42000000000002 + 10 +-43.87500000000023 + 20 +63.41999999999985 + 10 +-43.66286796564418 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +277E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +54.36786796564405 + 10 +-49.97500000000008 + 20 +54.58000000000004 + 10 +-43.87500000000023 + 20 +54.58000000000021 + 10 +-43.66286796564418 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +277F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +55.15500000000003 + 10 +-57.54013967720357 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2780 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +62.84500000000003 + 10 +-37.72013967720363 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2781 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +63.632132034356 + 10 +-30.15500000000009 + 20 +63.42000000000002 + 10 +-24.05500000000018 + 20 +63.41999999999985 + 10 +-23.84286796564425 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +2782 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +54.36786796564405 + 10 +-30.15500000000009 + 20 +54.58000000000004 + 10 +-24.05500000000018 + 20 +54.58000000000021 + 10 +-23.84286796564425 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +2783 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +55.15500000000003 + 10 +-37.72013967720363 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2784 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +62.84500000000003 + 10 +-17.90013967720358 + 20 +62.84500000000008 + 0 +LWPOLYLINE + 5 +2785 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +63.632132034356 + 10 +-10.33500000000009 + 20 +63.42000000000002 + 10 +-4.235000000000241 + 20 +63.41999999999985 + 10 +-4.022867965644195 + 20 +63.63213203435583 + 0 +LWPOLYLINE + 5 +2786 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +54.36786796564405 + 10 +-10.33500000000009 + 20 +54.58000000000004 + 10 +-4.235000000000241 + 20 +54.58000000000021 + 10 +-4.022867965644195 + 20 +54.36786796564425 + 0 +LWPOLYLINE + 5 +2787 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +55.15500000000003 + 10 +-17.90013967720358 + 20 +55.155 + 0 +LWPOLYLINE + 5 +2788 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +53.04500000000004 + 10 +-176.4601396772036 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +2789 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +53.83213203435599 + 10 +-168.895 + 20 +53.62000000000003 + 10 +-162.7950000000002 + 20 +53.61999999999986 + 10 +-162.5828679656442 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +278A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +44.56786796564404 + 10 +-168.895 + 20 +44.78000000000003 + 10 +-162.7950000000002 + 20 +44.7800000000002 + 10 +-162.5828679656442 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +278B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +45.35500000000002 + 10 +-176.4601396772036 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +278C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +53.04500000000004 + 10 +-156.6401396772036 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +278D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +53.83213203435599 + 10 +-149.075 + 20 +53.62000000000003 + 10 +-142.9750000000002 + 20 +53.61999999999986 + 10 +-142.7628679656442 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +278E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +44.56786796564404 + 10 +-149.075 + 20 +44.78000000000003 + 10 +-142.9750000000002 + 20 +44.7800000000002 + 10 +-142.7628679656442 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +278F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +45.35500000000002 + 10 +-156.6401396772036 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +2790 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +53.04500000000004 + 10 +-136.8201396772036 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +2791 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +53.83213203435599 + 10 +-129.2550000000001 + 20 +53.62000000000003 + 10 +-123.1550000000002 + 20 +53.61999999999986 + 10 +-122.9428679656442 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +2792 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +44.56786796564404 + 10 +-129.2550000000001 + 20 +44.78000000000003 + 10 +-123.1550000000002 + 20 +44.7800000000002 + 10 +-122.9428679656442 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +2793 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +45.35500000000002 + 10 +-136.8201396772036 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +2794 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +53.04500000000004 + 10 +-117.0001396772036 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +2795 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +53.83213203435599 + 10 +-109.4350000000001 + 20 +53.62000000000003 + 10 +-103.3350000000002 + 20 +53.61999999999986 + 10 +-103.1228679656442 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +2796 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +44.56786796564404 + 10 +-109.4350000000001 + 20 +44.78000000000003 + 10 +-103.3350000000002 + 20 +44.7800000000002 + 10 +-103.1228679656442 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +2797 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +45.35500000000002 + 10 +-117.0001396772036 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +2798 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +53.04500000000004 + 10 +-97.18013967720358 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +2799 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +53.83213203435599 + 10 +-89.61500000000007 + 20 +53.62000000000003 + 10 +-83.51500000000019 + 20 +53.61999999999986 + 10 +-83.3028679656442 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +279A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +44.56786796564404 + 10 +-89.61500000000007 + 20 +44.78000000000003 + 10 +-83.51500000000019 + 20 +44.7800000000002 + 10 +-83.3028679656442 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +279B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +45.35500000000002 + 10 +-97.18013967720358 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +279C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +53.04500000000004 + 10 +-77.36013967720362 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +279D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +53.83213203435599 + 10 +-69.79500000000007 + 20 +53.62000000000003 + 10 +-63.69500000000016 + 20 +53.61999999999986 + 10 +-63.48286796564423 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +279E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +44.56786796564404 + 10 +-69.79500000000007 + 20 +44.78000000000003 + 10 +-63.69500000000016 + 20 +44.7800000000002 + 10 +-63.48286796564423 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +279F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +45.35500000000002 + 10 +-77.36013967720362 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +27A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +53.04500000000004 + 10 +-57.54013967720357 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +27A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +53.83213203435599 + 10 +-49.97500000000008 + 20 +53.62000000000003 + 10 +-43.87500000000023 + 20 +53.61999999999986 + 10 +-43.66286796564418 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +27A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +44.56786796564404 + 10 +-49.97500000000008 + 20 +44.78000000000003 + 10 +-43.87500000000023 + 20 +44.7800000000002 + 10 +-43.66286796564418 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +27A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +45.35500000000002 + 10 +-57.54013967720357 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +27A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +53.04500000000004 + 10 +-37.72013967720363 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +27A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +53.83213203435599 + 10 +-30.15500000000009 + 20 +53.62000000000003 + 10 +-24.05500000000018 + 20 +53.61999999999986 + 10 +-23.84286796564425 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +27A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +44.56786796564404 + 10 +-30.15500000000009 + 20 +44.78000000000003 + 10 +-24.05500000000018 + 20 +44.7800000000002 + 10 +-23.84286796564425 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +27A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +45.35500000000002 + 10 +-37.72013967720363 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +27A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +53.04500000000004 + 10 +-17.90013967720358 + 20 +53.04500000000004 + 0 +LWPOLYLINE + 5 +27A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +53.83213203435599 + 10 +-10.33500000000009 + 20 +53.62000000000003 + 10 +-4.235000000000241 + 20 +53.61999999999986 + 10 +-4.022867965644195 + 20 +53.83213203435582 + 0 +LWPOLYLINE + 5 +27AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +44.56786796564404 + 10 +-10.33500000000009 + 20 +44.78000000000003 + 10 +-4.235000000000241 + 20 +44.7800000000002 + 10 +-4.022867965644195 + 20 +44.56786796564424 + 0 +LWPOLYLINE + 5 +27AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +45.35500000000002 + 10 +-17.90013967720358 + 20 +45.35500000000002 + 0 +LWPOLYLINE + 5 +27AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +43.24500000000003 + 10 +-176.4601396772036 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +44.03213203435601 + 10 +-168.895 + 20 +43.82000000000005 + 10 +-162.7950000000002 + 20 +43.81999999999988 + 10 +-162.5828679656442 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +34.76786796564406 + 10 +-168.895 + 20 +34.98000000000002 + 10 +-162.7950000000002 + 20 +34.98000000000019 + 10 +-162.5828679656442 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +35.55500000000004 + 10 +-176.4601396772036 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +43.24500000000003 + 10 +-156.6401396772036 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +44.03213203435601 + 10 +-149.075 + 20 +43.82000000000005 + 10 +-142.9750000000002 + 20 +43.81999999999988 + 10 +-142.7628679656442 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +34.76786796564406 + 10 +-149.075 + 20 +34.98000000000002 + 10 +-142.9750000000002 + 20 +34.98000000000019 + 10 +-142.7628679656442 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +35.55500000000004 + 10 +-156.6401396772036 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +43.24500000000003 + 10 +-136.8201396772036 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +44.03213203435601 + 10 +-129.2550000000001 + 20 +43.82000000000005 + 10 +-123.1550000000002 + 20 +43.81999999999988 + 10 +-122.9428679656442 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +34.76786796564406 + 10 +-129.2550000000001 + 20 +34.98000000000002 + 10 +-123.1550000000002 + 20 +34.98000000000019 + 10 +-122.9428679656442 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +35.55500000000004 + 10 +-136.8201396772036 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +43.24500000000003 + 10 +-117.0001396772036 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +44.03213203435601 + 10 +-109.4350000000001 + 20 +43.82000000000005 + 10 +-103.3350000000002 + 20 +43.81999999999988 + 10 +-103.1228679656442 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +34.76786796564406 + 10 +-109.4350000000001 + 20 +34.98000000000002 + 10 +-103.3350000000002 + 20 +34.98000000000019 + 10 +-103.1228679656442 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +35.55500000000004 + 10 +-117.0001396772036 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +43.24500000000003 + 10 +-97.18013967720358 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +44.03213203435601 + 10 +-89.61500000000007 + 20 +43.82000000000005 + 10 +-83.51500000000019 + 20 +43.81999999999988 + 10 +-83.3028679656442 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +34.76786796564406 + 10 +-89.61500000000007 + 20 +34.98000000000002 + 10 +-83.51500000000019 + 20 +34.98000000000019 + 10 +-83.3028679656442 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +35.55500000000004 + 10 +-97.18013967720358 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +43.24500000000003 + 10 +-77.36013967720362 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +44.03213203435601 + 10 +-69.79500000000007 + 20 +43.82000000000005 + 10 +-63.69500000000016 + 20 +43.81999999999988 + 10 +-63.48286796564423 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +34.76786796564406 + 10 +-69.79500000000007 + 20 +34.98000000000002 + 10 +-63.69500000000016 + 20 +34.98000000000019 + 10 +-63.48286796564423 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +35.55500000000004 + 10 +-77.36013967720362 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +43.24500000000003 + 10 +-57.54013967720357 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +44.03213203435601 + 10 +-49.97500000000008 + 20 +43.82000000000005 + 10 +-43.87500000000023 + 20 +43.81999999999988 + 10 +-43.66286796564418 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +34.76786796564406 + 10 +-49.97500000000008 + 20 +34.98000000000002 + 10 +-43.87500000000023 + 20 +34.98000000000019 + 10 +-43.66286796564418 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +35.55500000000004 + 10 +-57.54013967720357 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +43.24500000000003 + 10 +-37.72013967720363 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +44.03213203435601 + 10 +-30.15500000000009 + 20 +43.82000000000005 + 10 +-24.05500000000018 + 20 +43.81999999999988 + 10 +-23.84286796564425 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +34.76786796564406 + 10 +-30.15500000000009 + 20 +34.98000000000002 + 10 +-24.05500000000018 + 20 +34.98000000000019 + 10 +-23.84286796564425 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +35.55500000000004 + 10 +-37.72013967720363 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +43.24500000000003 + 10 +-17.90013967720358 + 20 +43.24500000000006 + 0 +LWPOLYLINE + 5 +27CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +44.03213203435601 + 10 +-10.33500000000009 + 20 +43.82000000000005 + 10 +-4.235000000000241 + 20 +43.81999999999988 + 10 +-4.022867965644195 + 20 +44.03213203435581 + 0 +LWPOLYLINE + 5 +27CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +34.76786796564406 + 10 +-10.33500000000009 + 20 +34.98000000000002 + 10 +-4.235000000000241 + 20 +34.98000000000019 + 10 +-4.022867965644195 + 20 +34.76786796564426 + 0 +LWPOLYLINE + 5 +27CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +35.55500000000004 + 10 +-17.90013967720358 + 20 +35.55500000000001 + 0 +LWPOLYLINE + 5 +27D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +33.44500000000005 + 10 +-176.4601396772036 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +34.23213203435603 + 10 +-168.895 + 20 +34.02000000000004 + 10 +-162.7950000000002 + 20 +34.01999999999987 + 10 +-162.5828679656442 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +24.96786796564407 + 10 +-168.895 + 20 +25.18000000000004 + 10 +-162.7950000000002 + 20 +25.18000000000021 + 10 +-162.5828679656442 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +25.75500000000002 + 10 +-176.4601396772036 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +33.44500000000005 + 10 +-156.6401396772036 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +34.23213203435603 + 10 +-149.075 + 20 +34.02000000000004 + 10 +-142.9750000000002 + 20 +34.01999999999987 + 10 +-142.7628679656442 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +24.96786796564407 + 10 +-149.075 + 20 +25.18000000000004 + 10 +-142.9750000000002 + 20 +25.18000000000021 + 10 +-142.7628679656442 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +25.75500000000002 + 10 +-156.6401396772036 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +33.44500000000005 + 10 +-136.8201396772036 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +34.23213203435603 + 10 +-129.2550000000001 + 20 +34.02000000000004 + 10 +-123.1550000000002 + 20 +34.01999999999987 + 10 +-122.9428679656442 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +24.96786796564407 + 10 +-129.2550000000001 + 20 +25.18000000000004 + 10 +-123.1550000000002 + 20 +25.18000000000021 + 10 +-122.9428679656442 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +25.75500000000002 + 10 +-136.8201396772036 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +33.44500000000005 + 10 +-117.0001396772036 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +34.23213203435603 + 10 +-109.4350000000001 + 20 +34.02000000000004 + 10 +-103.3350000000002 + 20 +34.01999999999987 + 10 +-103.1228679656442 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +24.96786796564407 + 10 +-109.4350000000001 + 20 +25.18000000000004 + 10 +-103.3350000000002 + 20 +25.18000000000021 + 10 +-103.1228679656442 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +25.75500000000002 + 10 +-117.0001396772036 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +33.44500000000005 + 10 +-97.18013967720358 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +34.23213203435603 + 10 +-89.61500000000007 + 20 +34.02000000000004 + 10 +-83.51500000000019 + 20 +34.01999999999987 + 10 +-83.3028679656442 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +24.96786796564407 + 10 +-89.61500000000007 + 20 +25.18000000000004 + 10 +-83.51500000000019 + 20 +25.18000000000021 + 10 +-83.3028679656442 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +25.75500000000002 + 10 +-97.18013967720358 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +33.44500000000005 + 10 +-77.36013967720362 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +34.23213203435603 + 10 +-69.79500000000007 + 20 +34.02000000000004 + 10 +-63.69500000000016 + 20 +34.01999999999987 + 10 +-63.48286796564423 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +24.96786796564407 + 10 +-69.79500000000007 + 20 +25.18000000000004 + 10 +-63.69500000000016 + 20 +25.18000000000021 + 10 +-63.48286796564423 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +25.75500000000002 + 10 +-77.36013967720362 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +33.44500000000005 + 10 +-57.54013967720357 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +34.23213203435603 + 10 +-49.97500000000008 + 20 +34.02000000000004 + 10 +-43.87500000000023 + 20 +34.01999999999987 + 10 +-43.66286796564418 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +24.96786796564407 + 10 +-49.97500000000008 + 20 +25.18000000000004 + 10 +-43.87500000000023 + 20 +25.18000000000021 + 10 +-43.66286796564418 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +25.75500000000002 + 10 +-57.54013967720357 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +33.44500000000005 + 10 +-37.72013967720363 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +34.23213203435603 + 10 +-30.15500000000009 + 20 +34.02000000000004 + 10 +-24.05500000000018 + 20 +34.01999999999987 + 10 +-23.84286796564425 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +24.96786796564407 + 10 +-30.15500000000009 + 20 +25.18000000000004 + 10 +-24.05500000000018 + 20 +25.18000000000021 + 10 +-23.84286796564425 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +25.75500000000002 + 10 +-37.72013967720363 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +33.44500000000005 + 10 +-17.90013967720358 + 20 +33.44500000000005 + 0 +LWPOLYLINE + 5 +27F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +34.23213203435603 + 10 +-10.33500000000009 + 20 +34.02000000000004 + 10 +-4.235000000000241 + 20 +34.01999999999987 + 10 +-4.022867965644195 + 20 +34.23213203435583 + 0 +LWPOLYLINE + 5 +27F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +24.96786796564407 + 10 +-10.33500000000009 + 20 +25.18000000000004 + 10 +-4.235000000000241 + 20 +25.18000000000021 + 10 +-4.022867965644195 + 20 +24.96786796564425 + 0 +LWPOLYLINE + 5 +27F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +25.75500000000002 + 10 +-17.90013967720358 + 20 +25.75500000000002 + 0 +LWPOLYLINE + 5 +27F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +23.64500000000004 + 10 +-176.4601396772036 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +27F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +24.43213203435602 + 10 +-168.895 + 20 +24.22000000000003 + 10 +-162.7950000000002 + 20 +24.21999999999986 + 10 +-162.5828679656442 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +27F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +15.16786796564406 + 10 +-168.895 + 20 +15.38000000000005 + 10 +-162.7950000000002 + 20 +15.38000000000022 + 10 +-162.5828679656442 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +27F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +15.95500000000004 + 10 +-176.4601396772036 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +27F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +23.64500000000004 + 10 +-156.6401396772036 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +27F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +24.43213203435602 + 10 +-149.075 + 20 +24.22000000000003 + 10 +-142.9750000000002 + 20 +24.21999999999986 + 10 +-142.7628679656442 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +27FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +15.16786796564406 + 10 +-149.075 + 20 +15.38000000000005 + 10 +-142.9750000000002 + 20 +15.38000000000022 + 10 +-142.7628679656442 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +27FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +15.95500000000004 + 10 +-156.6401396772036 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +27FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +23.64500000000004 + 10 +-136.8201396772036 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +27FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +24.43213203435602 + 10 +-129.2550000000001 + 20 +24.22000000000003 + 10 +-123.1550000000002 + 20 +24.21999999999986 + 10 +-122.9428679656442 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +27FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +15.16786796564406 + 10 +-129.2550000000001 + 20 +15.38000000000005 + 10 +-123.1550000000002 + 20 +15.38000000000022 + 10 +-122.9428679656442 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +27FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +15.95500000000004 + 10 +-136.8201396772036 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2800 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +23.64500000000004 + 10 +-117.0001396772036 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +2801 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +24.43213203435602 + 10 +-109.4350000000001 + 20 +24.22000000000003 + 10 +-103.3350000000002 + 20 +24.21999999999986 + 10 +-103.1228679656442 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +2802 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +15.16786796564406 + 10 +-109.4350000000001 + 20 +15.38000000000005 + 10 +-103.3350000000002 + 20 +15.38000000000022 + 10 +-103.1228679656442 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +2803 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +15.95500000000004 + 10 +-117.0001396772036 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2804 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +23.64500000000004 + 10 +-97.18013967720358 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +2805 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +24.43213203435602 + 10 +-89.61500000000007 + 20 +24.22000000000003 + 10 +-83.51500000000019 + 20 +24.21999999999986 + 10 +-83.3028679656442 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +2806 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +15.16786796564406 + 10 +-89.61500000000007 + 20 +15.38000000000005 + 10 +-83.51500000000019 + 20 +15.38000000000022 + 10 +-83.3028679656442 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +2807 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +15.95500000000004 + 10 +-97.18013967720358 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2808 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +23.64500000000004 + 10 +-77.36013967720362 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +2809 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +24.43213203435602 + 10 +-69.79500000000007 + 20 +24.22000000000003 + 10 +-63.69500000000016 + 20 +24.21999999999986 + 10 +-63.48286796564423 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +280A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +15.16786796564406 + 10 +-69.79500000000007 + 20 +15.38000000000005 + 10 +-63.69500000000016 + 20 +15.38000000000022 + 10 +-63.48286796564423 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +280B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +15.95500000000004 + 10 +-77.36013967720362 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +280C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +23.64500000000004 + 10 +-57.54013967720357 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +280D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +24.43213203435602 + 10 +-49.97500000000008 + 20 +24.22000000000003 + 10 +-43.87500000000023 + 20 +24.21999999999986 + 10 +-43.66286796564418 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +280E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +15.16786796564406 + 10 +-49.97500000000008 + 20 +15.38000000000005 + 10 +-43.87500000000023 + 20 +15.38000000000022 + 10 +-43.66286796564418 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +280F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +15.95500000000004 + 10 +-57.54013967720357 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2810 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +23.64500000000004 + 10 +-37.72013967720363 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +2811 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +24.43213203435602 + 10 +-30.15500000000009 + 20 +24.22000000000003 + 10 +-24.05500000000018 + 20 +24.21999999999986 + 10 +-23.84286796564425 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +2812 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +15.16786796564406 + 10 +-30.15500000000009 + 20 +15.38000000000005 + 10 +-24.05500000000018 + 20 +15.38000000000022 + 10 +-23.84286796564425 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +2813 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +15.95500000000004 + 10 +-37.72013967720363 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2814 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +23.64500000000004 + 10 +-17.90013967720358 + 20 +23.64500000000007 + 0 +LWPOLYLINE + 5 +2815 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +24.43213203435602 + 10 +-10.33500000000009 + 20 +24.22000000000003 + 10 +-4.235000000000241 + 20 +24.21999999999986 + 10 +-4.022867965644195 + 20 +24.43213203435582 + 0 +LWPOLYLINE + 5 +2816 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +15.16786796564406 + 10 +-10.33500000000009 + 20 +15.38000000000005 + 10 +-4.235000000000241 + 20 +15.38000000000022 + 10 +-4.022867965644195 + 20 +15.16786796564426 + 0 +LWPOLYLINE + 5 +2817 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +15.95500000000004 + 10 +-17.90013967720358 + 20 +15.95500000000001 + 0 +LWPOLYLINE + 5 +2818 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +13.84500000000006 + 10 +-176.4601396772036 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2819 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +14.632132034356 + 10 +-168.895 + 20 +14.42000000000004 + 10 +-162.7950000000002 + 20 +14.41999999999987 + 10 +-162.5828679656442 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +281A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +5.367867965644052 + 10 +-168.895 + 20 +5.580000000000041 + 10 +-162.7950000000002 + 20 +5.580000000000211 + 10 +-162.5828679656442 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +281B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +6.15500000000003 + 10 +-176.4601396772036 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +281C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +13.84500000000006 + 10 +-156.6401396772036 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +281D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +14.632132034356 + 10 +-149.075 + 20 +14.42000000000004 + 10 +-142.9750000000002 + 20 +14.41999999999987 + 10 +-142.7628679656442 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +281E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +5.367867965644052 + 10 +-149.075 + 20 +5.580000000000041 + 10 +-142.9750000000002 + 20 +5.580000000000211 + 10 +-142.7628679656442 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +281F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +6.15500000000003 + 10 +-156.6401396772036 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2820 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +13.84500000000006 + 10 +-136.8201396772036 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2821 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +14.632132034356 + 10 +-129.2550000000001 + 20 +14.42000000000004 + 10 +-123.1550000000002 + 20 +14.41999999999987 + 10 +-122.9428679656442 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +2822 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +5.367867965644052 + 10 +-129.2550000000001 + 20 +5.580000000000041 + 10 +-123.1550000000002 + 20 +5.580000000000211 + 10 +-122.9428679656442 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +2823 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +6.15500000000003 + 10 +-136.8201396772036 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2824 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +13.84500000000006 + 10 +-117.0001396772036 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2825 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +14.632132034356 + 10 +-109.4350000000001 + 20 +14.42000000000004 + 10 +-103.3350000000002 + 20 +14.41999999999987 + 10 +-103.1228679656442 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +2826 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +5.367867965644052 + 10 +-109.4350000000001 + 20 +5.580000000000041 + 10 +-103.3350000000002 + 20 +5.580000000000211 + 10 +-103.1228679656442 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +2827 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +6.15500000000003 + 10 +-117.0001396772036 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2828 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +13.84500000000006 + 10 +-97.18013967720358 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2829 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +14.632132034356 + 10 +-89.61500000000007 + 20 +14.42000000000004 + 10 +-83.51500000000019 + 20 +14.41999999999987 + 10 +-83.3028679656442 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +282A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +5.367867965644052 + 10 +-89.61500000000007 + 20 +5.580000000000041 + 10 +-83.51500000000019 + 20 +5.580000000000211 + 10 +-83.3028679656442 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +282B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +6.15500000000003 + 10 +-97.18013967720358 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +282C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +13.84500000000006 + 10 +-77.36013967720362 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +282D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +14.632132034356 + 10 +-69.79500000000007 + 20 +14.42000000000004 + 10 +-63.69500000000016 + 20 +14.41999999999987 + 10 +-63.48286796564423 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +282E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +5.367867965644052 + 10 +-69.79500000000007 + 20 +5.580000000000041 + 10 +-63.69500000000016 + 20 +5.580000000000211 + 10 +-63.48286796564423 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +282F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +6.15500000000003 + 10 +-77.36013967720362 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2830 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +13.84500000000006 + 10 +-57.54013967720357 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2831 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +14.632132034356 + 10 +-49.97500000000008 + 20 +14.42000000000004 + 10 +-43.87500000000023 + 20 +14.41999999999987 + 10 +-43.66286796564418 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +2832 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +5.367867965644052 + 10 +-49.97500000000008 + 20 +5.580000000000041 + 10 +-43.87500000000023 + 20 +5.580000000000211 + 10 +-43.66286796564418 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +2833 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +6.15500000000003 + 10 +-57.54013967720357 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2834 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +13.84500000000006 + 10 +-37.72013967720363 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2835 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +14.632132034356 + 10 +-30.15500000000009 + 20 +14.42000000000004 + 10 +-24.05500000000018 + 20 +14.41999999999987 + 10 +-23.84286796564425 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +2836 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +5.367867965644052 + 10 +-30.15500000000009 + 20 +5.580000000000041 + 10 +-24.05500000000018 + 20 +5.580000000000211 + 10 +-23.84286796564425 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +2837 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +6.15500000000003 + 10 +-37.72013967720363 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +2838 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +13.84500000000006 + 10 +-17.90013967720358 + 20 +13.84500000000006 + 0 +LWPOLYLINE + 5 +2839 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +14.632132034356 + 10 +-10.33500000000009 + 20 +14.42000000000004 + 10 +-4.235000000000241 + 20 +14.41999999999987 + 10 +-4.022867965644195 + 20 +14.63213203435583 + 0 +LWPOLYLINE + 5 +283A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +5.367867965644052 + 10 +-10.33500000000009 + 20 +5.580000000000041 + 10 +-4.235000000000241 + 20 +5.580000000000211 + 10 +-4.022867965644195 + 20 +5.367867965644251 + 0 +LWPOLYLINE + 5 +283B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +6.15500000000003 + 10 +-17.90013967720358 + 20 +6.15500000000003 + 0 +LWPOLYLINE + 5 +283C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +4.045000000000044 + 10 +-176.4601396772036 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +283D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +4.832132034356022 + 10 +-168.895 + 20 +4.620000000000061 + 10 +-162.7950000000002 + 20 +4.619999999999891 + 10 +-162.5828679656442 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +283E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-4.432132034355931 + 10 +-168.895 + 20 +-4.21999999999997 + 10 +-162.7950000000002 + 20 +-4.2199999999998 + 10 +-162.5828679656442 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +283F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-3.644999999999953 + 10 +-176.4601396772036 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2840 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +4.045000000000044 + 10 +-156.6401396772036 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2841 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +4.832132034356022 + 10 +-149.075 + 20 +4.620000000000061 + 10 +-142.9750000000002 + 20 +4.619999999999891 + 10 +-142.7628679656442 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +2842 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-4.432132034355931 + 10 +-149.075 + 20 +-4.21999999999997 + 10 +-142.9750000000002 + 20 +-4.2199999999998 + 10 +-142.7628679656442 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +2843 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-3.644999999999953 + 10 +-156.6401396772036 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2844 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +4.045000000000044 + 10 +-136.8201396772036 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2845 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +4.832132034356022 + 10 +-129.2550000000001 + 20 +4.620000000000061 + 10 +-123.1550000000002 + 20 +4.619999999999891 + 10 +-122.9428679656442 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +2846 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-4.432132034355931 + 10 +-129.2550000000001 + 20 +-4.21999999999997 + 10 +-123.1550000000002 + 20 +-4.2199999999998 + 10 +-122.9428679656442 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +2847 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-3.644999999999953 + 10 +-136.8201396772036 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2848 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +4.045000000000044 + 10 +-117.0001396772036 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2849 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +4.832132034356022 + 10 +-109.4350000000001 + 20 +4.620000000000061 + 10 +-103.3350000000002 + 20 +4.619999999999891 + 10 +-103.1228679656442 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +284A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-4.432132034355931 + 10 +-109.4350000000001 + 20 +-4.21999999999997 + 10 +-103.3350000000002 + 20 +-4.2199999999998 + 10 +-103.1228679656442 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +284B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-3.644999999999953 + 10 +-117.0001396772036 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +284C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +4.045000000000044 + 10 +-97.18013967720358 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +284D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +4.832132034356022 + 10 +-89.61500000000007 + 20 +4.620000000000061 + 10 +-83.51500000000019 + 20 +4.619999999999891 + 10 +-83.3028679656442 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +284E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-4.432132034355931 + 10 +-89.61500000000007 + 20 +-4.21999999999997 + 10 +-83.51500000000019 + 20 +-4.2199999999998 + 10 +-83.3028679656442 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +284F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-3.644999999999953 + 10 +-97.18013967720358 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2850 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +4.045000000000044 + 10 +-77.36013967720362 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2851 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +4.832132034356022 + 10 +-69.79500000000007 + 20 +4.620000000000061 + 10 +-63.69500000000016 + 20 +4.619999999999891 + 10 +-63.48286796564423 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +2852 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-4.432132034355931 + 10 +-69.79500000000007 + 20 +-4.21999999999997 + 10 +-63.69500000000016 + 20 +-4.2199999999998 + 10 +-63.48286796564423 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +2853 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-3.644999999999953 + 10 +-77.36013967720362 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2854 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +4.045000000000044 + 10 +-57.54013967720357 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2855 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +4.832132034356022 + 10 +-49.97500000000008 + 20 +4.620000000000061 + 10 +-43.87500000000023 + 20 +4.619999999999891 + 10 +-43.66286796564418 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +2856 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-4.432132034355931 + 10 +-49.97500000000008 + 20 +-4.21999999999997 + 10 +-43.87500000000023 + 20 +-4.2199999999998 + 10 +-43.66286796564418 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +2857 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-3.644999999999953 + 10 +-57.54013967720357 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2858 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +4.045000000000044 + 10 +-37.72013967720363 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +2859 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +4.832132034356022 + 10 +-30.15500000000009 + 20 +4.620000000000061 + 10 +-24.05500000000018 + 20 +4.619999999999891 + 10 +-23.84286796564425 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +285A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-4.432132034355931 + 10 +-30.15500000000009 + 20 +-4.21999999999997 + 10 +-24.05500000000018 + 20 +-4.2199999999998 + 10 +-23.84286796564425 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +285B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-3.644999999999953 + 10 +-37.72013967720363 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +285C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +4.045000000000044 + 10 +-17.90013967720358 + 20 +4.045000000000073 + 0 +LWPOLYLINE + 5 +285D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +4.832132034356022 + 10 +-10.33500000000009 + 20 +4.620000000000061 + 10 +-4.235000000000241 + 20 +4.619999999999891 + 10 +-4.022867965644195 + 20 +4.832132034355823 + 0 +LWPOLYLINE + 5 +285E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-4.432132034355931 + 10 +-10.33500000000009 + 20 +-4.21999999999997 + 10 +-4.235000000000241 + 20 +-4.2199999999998 + 10 +-4.022867965644195 + 20 +-4.432132034355732 + 0 +LWPOLYLINE + 5 +285F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-3.644999999999953 + 10 +-17.90013967720358 + 20 +-3.644999999999982 + 0 +LWPOLYLINE + 5 +2860 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-5.754999999999939 + 10 +-176.4601396772036 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2861 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-4.967867965643961 + 10 +-168.895 + 20 +-5.17999999999995 + 10 +-162.7950000000002 + 20 +-5.180000000000121 + 10 +-162.5828679656442 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +2862 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-14.23213203435591 + 10 +-168.895 + 20 +-14.01999999999995 + 10 +-162.7950000000002 + 20 +-14.01999999999978 + 10 +-162.5828679656442 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +2863 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-13.44499999999996 + 10 +-176.4601396772036 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2864 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-5.754999999999939 + 10 +-156.6401396772036 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2865 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-4.967867965643961 + 10 +-149.075 + 20 +-5.17999999999995 + 10 +-142.9750000000002 + 20 +-5.180000000000121 + 10 +-142.7628679656442 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +2866 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-14.23213203435591 + 10 +-149.075 + 20 +-14.01999999999995 + 10 +-142.9750000000002 + 20 +-14.01999999999978 + 10 +-142.7628679656442 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +2867 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-13.44499999999996 + 10 +-156.6401396772036 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2868 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-5.754999999999939 + 10 +-136.8201396772036 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2869 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-4.967867965643961 + 10 +-129.2550000000001 + 20 +-5.17999999999995 + 10 +-123.1550000000002 + 20 +-5.180000000000121 + 10 +-122.9428679656442 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +286A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-14.23213203435591 + 10 +-129.2550000000001 + 20 +-14.01999999999995 + 10 +-123.1550000000002 + 20 +-14.01999999999978 + 10 +-122.9428679656442 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +286B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-13.44499999999996 + 10 +-136.8201396772036 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +286C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-5.754999999999939 + 10 +-117.0001396772036 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +286D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-4.967867965643961 + 10 +-109.4350000000001 + 20 +-5.17999999999995 + 10 +-103.3350000000002 + 20 +-5.180000000000121 + 10 +-103.1228679656442 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +286E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-14.23213203435591 + 10 +-109.4350000000001 + 20 +-14.01999999999995 + 10 +-103.3350000000002 + 20 +-14.01999999999978 + 10 +-103.1228679656442 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +286F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-13.44499999999996 + 10 +-117.0001396772036 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2870 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-5.754999999999939 + 10 +-97.18013967720358 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2871 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-4.967867965643961 + 10 +-89.61500000000007 + 20 +-5.17999999999995 + 10 +-83.51500000000019 + 20 +-5.180000000000121 + 10 +-83.3028679656442 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +2872 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-14.23213203435591 + 10 +-89.61500000000007 + 20 +-14.01999999999995 + 10 +-83.51500000000019 + 20 +-14.01999999999978 + 10 +-83.3028679656442 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +2873 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-13.44499999999996 + 10 +-97.18013967720358 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2874 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-5.754999999999939 + 10 +-77.36013967720362 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2875 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-4.967867965643961 + 10 +-69.79500000000007 + 20 +-5.17999999999995 + 10 +-63.69500000000016 + 20 +-5.180000000000121 + 10 +-63.48286796564423 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +2876 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-14.23213203435591 + 10 +-69.79500000000007 + 20 +-14.01999999999995 + 10 +-63.69500000000016 + 20 +-14.01999999999978 + 10 +-63.48286796564423 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +2877 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-13.44499999999996 + 10 +-77.36013967720362 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2878 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-5.754999999999939 + 10 +-57.54013967720357 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2879 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-4.967867965643961 + 10 +-49.97500000000008 + 20 +-5.17999999999995 + 10 +-43.87500000000023 + 20 +-5.180000000000121 + 10 +-43.66286796564418 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +287A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-14.23213203435591 + 10 +-49.97500000000008 + 20 +-14.01999999999995 + 10 +-43.87500000000023 + 20 +-14.01999999999978 + 10 +-43.66286796564418 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +287B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-13.44499999999996 + 10 +-57.54013967720357 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +287C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-5.754999999999939 + 10 +-37.72013967720363 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +287D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-4.967867965643961 + 10 +-30.15500000000009 + 20 +-5.17999999999995 + 10 +-24.05500000000018 + 20 +-5.180000000000121 + 10 +-23.84286796564425 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +287E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-14.23213203435591 + 10 +-30.15500000000009 + 20 +-14.01999999999995 + 10 +-24.05500000000018 + 20 +-14.01999999999978 + 10 +-23.84286796564425 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +287F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-13.44499999999996 + 10 +-37.72013967720363 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2880 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-5.754999999999939 + 10 +-17.90013967720358 + 20 +-5.754999999999939 + 0 +LWPOLYLINE + 5 +2881 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-4.967867965643961 + 10 +-10.33500000000009 + 20 +-5.17999999999995 + 10 +-4.235000000000241 + 20 +-5.180000000000121 + 10 +-4.022867965644195 + 20 +-4.96786796564416 + 0 +LWPOLYLINE + 5 +2882 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-14.23213203435591 + 10 +-10.33500000000009 + 20 +-14.01999999999995 + 10 +-4.235000000000241 + 20 +-14.01999999999978 + 10 +-4.022867965644195 + 20 +-14.23213203435574 + 0 +LWPOLYLINE + 5 +2883 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-13.44499999999996 + 10 +-17.90013967720358 + 20 +-13.44499999999996 + 0 +LWPOLYLINE + 5 +2884 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-15.55499999999995 + 10 +-176.4601396772036 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +2885 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-14.76786796564397 + 10 +-168.895 + 20 +-14.97999999999996 + 10 +-162.7950000000002 + 20 +-14.98000000000013 + 10 +-162.5828679656442 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +2886 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-24.03213203435593 + 10 +-168.895 + 20 +-23.81999999999994 + 10 +-162.7950000000002 + 20 +-23.81999999999977 + 10 +-162.5828679656442 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +2887 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-23.24499999999995 + 10 +-176.4601396772036 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +2888 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-15.55499999999995 + 10 +-156.6401396772036 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +2889 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-14.76786796564397 + 10 +-149.075 + 20 +-14.97999999999996 + 10 +-142.9750000000002 + 20 +-14.98000000000013 + 10 +-142.7628679656442 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +288A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-24.03213203435593 + 10 +-149.075 + 20 +-23.81999999999994 + 10 +-142.9750000000002 + 20 +-23.81999999999977 + 10 +-142.7628679656442 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +288B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-23.24499999999995 + 10 +-156.6401396772036 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +288C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-15.55499999999995 + 10 +-136.8201396772036 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +288D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-14.76786796564397 + 10 +-129.2550000000001 + 20 +-14.97999999999996 + 10 +-123.1550000000002 + 20 +-14.98000000000013 + 10 +-122.9428679656442 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +288E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-24.03213203435593 + 10 +-129.2550000000001 + 20 +-23.81999999999994 + 10 +-123.1550000000002 + 20 +-23.81999999999977 + 10 +-122.9428679656442 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +288F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-23.24499999999995 + 10 +-136.8201396772036 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +2890 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-15.55499999999995 + 10 +-117.0001396772036 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +2891 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-14.76786796564397 + 10 +-109.4350000000001 + 20 +-14.97999999999996 + 10 +-103.3350000000002 + 20 +-14.98000000000013 + 10 +-103.1228679656442 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +2892 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-24.03213203435593 + 10 +-109.4350000000001 + 20 +-23.81999999999994 + 10 +-103.3350000000002 + 20 +-23.81999999999977 + 10 +-103.1228679656442 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +2893 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-23.24499999999995 + 10 +-117.0001396772036 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +2894 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-15.55499999999995 + 10 +-97.18013967720358 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +2895 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-14.76786796564397 + 10 +-89.61500000000007 + 20 +-14.97999999999996 + 10 +-83.51500000000019 + 20 +-14.98000000000013 + 10 +-83.3028679656442 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +2896 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-24.03213203435593 + 10 +-89.61500000000007 + 20 +-23.81999999999994 + 10 +-83.51500000000019 + 20 +-23.81999999999977 + 10 +-83.3028679656442 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +2897 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-23.24499999999995 + 10 +-97.18013967720358 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +2898 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-15.55499999999995 + 10 +-77.36013967720362 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +2899 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-14.76786796564397 + 10 +-69.79500000000007 + 20 +-14.97999999999996 + 10 +-63.69500000000016 + 20 +-14.98000000000013 + 10 +-63.48286796564423 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +289A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-24.03213203435593 + 10 +-69.79500000000007 + 20 +-23.81999999999994 + 10 +-63.69500000000016 + 20 +-23.81999999999977 + 10 +-63.48286796564423 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +289B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-23.24499999999995 + 10 +-77.36013967720362 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +289C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-15.55499999999995 + 10 +-57.54013967720357 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +289D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-14.76786796564397 + 10 +-49.97500000000008 + 20 +-14.97999999999996 + 10 +-43.87500000000023 + 20 +-14.98000000000013 + 10 +-43.66286796564418 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +289E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-24.03213203435593 + 10 +-49.97500000000008 + 20 +-23.81999999999994 + 10 +-43.87500000000023 + 20 +-23.81999999999977 + 10 +-43.66286796564418 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +289F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-23.24499999999995 + 10 +-57.54013967720357 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +28A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-15.55499999999995 + 10 +-37.72013967720363 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +28A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-14.76786796564397 + 10 +-30.15500000000009 + 20 +-14.97999999999996 + 10 +-24.05500000000018 + 20 +-14.98000000000013 + 10 +-23.84286796564425 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +28A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-24.03213203435593 + 10 +-30.15500000000009 + 20 +-23.81999999999994 + 10 +-24.05500000000018 + 20 +-23.81999999999977 + 10 +-23.84286796564425 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +28A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-23.24499999999995 + 10 +-37.72013967720363 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +28A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-15.55499999999995 + 10 +-17.90013967720358 + 20 +-15.55499999999992 + 0 +LWPOLYLINE + 5 +28A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-14.76786796564397 + 10 +-10.33500000000009 + 20 +-14.97999999999996 + 10 +-4.235000000000241 + 20 +-14.98000000000013 + 10 +-4.022867965644195 + 20 +-14.76786796564417 + 0 +LWPOLYLINE + 5 +28A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-24.03213203435593 + 10 +-10.33500000000009 + 20 +-23.81999999999994 + 10 +-4.235000000000241 + 20 +-23.81999999999977 + 10 +-4.022867965644195 + 20 +-24.03213203435573 + 0 +LWPOLYLINE + 5 +28A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-23.24499999999995 + 10 +-17.90013967720358 + 20 +-23.24499999999998 + 0 +LWPOLYLINE + 5 +28A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-25.35499999999993 + 10 +-176.4601396772036 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-24.56786796564398 + 10 +-168.895 + 20 +-24.77999999999994 + 10 +-162.7950000000002 + 20 +-24.78000000000011 + 10 +-162.5828679656442 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-33.83213203435594 + 10 +-168.895 + 20 +-33.61999999999995 + 10 +-162.7950000000002 + 20 +-33.61999999999978 + 10 +-162.5828679656442 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-33.04499999999996 + 10 +-176.4601396772036 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-25.35499999999993 + 10 +-156.6401396772036 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-24.56786796564398 + 10 +-149.075 + 20 +-24.77999999999994 + 10 +-142.9750000000002 + 20 +-24.78000000000011 + 10 +-142.7628679656442 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-33.83213203435594 + 10 +-149.075 + 20 +-33.61999999999995 + 10 +-142.9750000000002 + 20 +-33.61999999999978 + 10 +-142.7628679656442 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-33.04499999999996 + 10 +-156.6401396772036 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-25.35499999999993 + 10 +-136.8201396772036 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-24.56786796564398 + 10 +-129.2550000000001 + 20 +-24.77999999999994 + 10 +-123.1550000000002 + 20 +-24.78000000000011 + 10 +-122.9428679656442 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-33.83213203435594 + 10 +-129.2550000000001 + 20 +-33.61999999999995 + 10 +-123.1550000000002 + 20 +-33.61999999999978 + 10 +-122.9428679656442 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-33.04499999999996 + 10 +-136.8201396772036 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-25.35499999999993 + 10 +-117.0001396772036 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-24.56786796564398 + 10 +-109.4350000000001 + 20 +-24.77999999999994 + 10 +-103.3350000000002 + 20 +-24.78000000000011 + 10 +-103.1228679656442 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-33.83213203435594 + 10 +-109.4350000000001 + 20 +-33.61999999999995 + 10 +-103.3350000000002 + 20 +-33.61999999999978 + 10 +-103.1228679656442 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-33.04499999999996 + 10 +-117.0001396772036 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-25.35499999999993 + 10 +-97.18013967720358 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-24.56786796564398 + 10 +-89.61500000000007 + 20 +-24.77999999999994 + 10 +-83.51500000000019 + 20 +-24.78000000000011 + 10 +-83.3028679656442 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-33.83213203435594 + 10 +-89.61500000000007 + 20 +-33.61999999999995 + 10 +-83.51500000000019 + 20 +-33.61999999999978 + 10 +-83.3028679656442 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-33.04499999999996 + 10 +-97.18013967720358 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-25.35499999999993 + 10 +-77.36013967720362 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-24.56786796564398 + 10 +-69.79500000000007 + 20 +-24.77999999999994 + 10 +-63.69500000000016 + 20 +-24.78000000000011 + 10 +-63.48286796564423 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-33.83213203435594 + 10 +-69.79500000000007 + 20 +-33.61999999999995 + 10 +-63.69500000000016 + 20 +-33.61999999999978 + 10 +-63.48286796564423 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-33.04499999999996 + 10 +-77.36013967720362 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-25.35499999999993 + 10 +-57.54013967720357 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-24.56786796564398 + 10 +-49.97500000000008 + 20 +-24.77999999999994 + 10 +-43.87500000000023 + 20 +-24.78000000000011 + 10 +-43.66286796564418 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-33.83213203435594 + 10 +-49.97500000000008 + 20 +-33.61999999999995 + 10 +-43.87500000000023 + 20 +-33.61999999999978 + 10 +-43.66286796564418 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-33.04499999999996 + 10 +-57.54013967720357 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-25.35499999999993 + 10 +-37.72013967720363 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-24.56786796564398 + 10 +-30.15500000000009 + 20 +-24.77999999999994 + 10 +-24.05500000000018 + 20 +-24.78000000000011 + 10 +-23.84286796564425 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-33.83213203435594 + 10 +-30.15500000000009 + 20 +-33.61999999999995 + 10 +-24.05500000000018 + 20 +-33.61999999999978 + 10 +-23.84286796564425 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-33.04499999999996 + 10 +-37.72013967720363 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-25.35499999999993 + 10 +-17.90013967720358 + 20 +-25.35499999999993 + 0 +LWPOLYLINE + 5 +28C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-24.56786796564398 + 10 +-10.33500000000009 + 20 +-24.77999999999994 + 10 +-4.235000000000241 + 20 +-24.78000000000011 + 10 +-4.022867965644195 + 20 +-24.56786796564415 + 0 +LWPOLYLINE + 5 +28CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-33.83213203435594 + 10 +-10.33500000000009 + 20 +-33.61999999999995 + 10 +-4.235000000000241 + 20 +-33.61999999999978 + 10 +-4.022867965644195 + 20 +-33.83213203435574 + 0 +LWPOLYLINE + 5 +28CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-33.04499999999996 + 10 +-17.90013967720358 + 20 +-33.04499999999996 + 0 +LWPOLYLINE + 5 +28CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-35.15499999999994 + 10 +-176.4601396772036 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-34.36786796564397 + 10 +-168.895 + 20 +-34.57999999999993 + 10 +-162.7950000000002 + 20 +-34.5800000000001 + 10 +-162.5828679656442 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-169.107132034356 + 20 +-43.63213203435592 + 10 +-168.895 + 20 +-43.41999999999996 + 10 +-162.7950000000002 + 20 +-43.41999999999979 + 10 +-162.5828679656442 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-180.2989677806491 + 20 +-42.84499999999994 + 10 +-176.4601396772036 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-35.15499999999994 + 10 +-156.6401396772036 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-34.36786796564397 + 10 +-149.075 + 20 +-34.57999999999993 + 10 +-142.9750000000002 + 20 +-34.5800000000001 + 10 +-142.7628679656442 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-149.287132034356 + 20 +-43.63213203435592 + 10 +-149.075 + 20 +-43.41999999999996 + 10 +-142.9750000000002 + 20 +-43.41999999999979 + 10 +-142.7628679656442 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-160.4789677806491 + 20 +-42.84499999999994 + 10 +-156.6401396772036 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-35.15499999999994 + 10 +-136.8201396772036 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-34.36786796564397 + 10 +-129.2550000000001 + 20 +-34.57999999999993 + 10 +-123.1550000000002 + 20 +-34.5800000000001 + 10 +-122.9428679656442 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-129.467132034356 + 20 +-43.63213203435592 + 10 +-129.2550000000001 + 20 +-43.41999999999996 + 10 +-123.1550000000002 + 20 +-43.41999999999979 + 10 +-122.9428679656442 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6589677806491 + 20 +-42.84499999999994 + 10 +-136.8201396772036 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-35.15499999999994 + 10 +-117.0001396772036 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-34.36786796564397 + 10 +-109.4350000000001 + 20 +-34.57999999999993 + 10 +-103.3350000000002 + 20 +-34.5800000000001 + 10 +-103.1228679656442 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.647132034356 + 20 +-43.63213203435592 + 10 +-109.4350000000001 + 20 +-43.41999999999996 + 10 +-103.3350000000002 + 20 +-43.41999999999979 + 10 +-103.1228679656442 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-120.8389677806491 + 20 +-42.84499999999994 + 10 +-117.0001396772036 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-35.15499999999994 + 10 +-97.18013967720358 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-34.36786796564397 + 10 +-89.61500000000007 + 20 +-34.57999999999993 + 10 +-83.51500000000019 + 20 +-34.5800000000001 + 10 +-83.3028679656442 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-89.82713203435605 + 20 +-43.63213203435592 + 10 +-89.61500000000007 + 20 +-43.41999999999996 + 10 +-83.51500000000019 + 20 +-43.41999999999979 + 10 +-83.3028679656442 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.0189677806491 + 20 +-42.84499999999994 + 10 +-97.18013967720358 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-35.15499999999994 + 10 +-77.36013967720362 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-34.36786796564397 + 10 +-69.79500000000007 + 20 +-34.57999999999993 + 10 +-63.69500000000016 + 20 +-34.5800000000001 + 10 +-63.48286796564423 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-70.00713203435606 + 20 +-43.63213203435592 + 10 +-69.79500000000007 + 20 +-43.41999999999996 + 10 +-63.69500000000016 + 20 +-43.41999999999979 + 10 +-63.48286796564423 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-81.19896778064913 + 20 +-42.84499999999994 + 10 +-77.36013967720362 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-35.15499999999994 + 10 +-57.54013967720357 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-34.36786796564397 + 10 +-49.97500000000008 + 20 +-34.57999999999993 + 10 +-43.87500000000023 + 20 +-34.5800000000001 + 10 +-43.66286796564418 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.18713203435607 + 20 +-43.63213203435592 + 10 +-49.97500000000008 + 20 +-43.41999999999996 + 10 +-43.87500000000023 + 20 +-43.41999999999979 + 10 +-43.66286796564418 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.37896778064913 + 20 +-42.84499999999994 + 10 +-57.54013967720357 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-35.15499999999994 + 10 +-37.72013967720363 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-34.36786796564397 + 10 +-30.15500000000009 + 20 +-34.57999999999993 + 10 +-24.05500000000018 + 20 +-34.5800000000001 + 10 +-23.84286796564425 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-30.36713203435602 + 20 +-43.63213203435592 + 10 +-30.15500000000009 + 20 +-43.41999999999996 + 10 +-24.05500000000018 + 20 +-43.41999999999979 + 10 +-23.84286796564425 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-41.55896778064914 + 20 +-42.84499999999994 + 10 +-37.72013967720363 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-35.15499999999994 + 10 +-17.90013967720358 + 20 +-35.15499999999992 + 0 +LWPOLYLINE + 5 +28ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-34.36786796564397 + 10 +-10.33500000000009 + 20 +-34.57999999999993 + 10 +-4.235000000000241 + 20 +-34.5800000000001 + 10 +-4.022867965644195 + 20 +-34.36786796564417 + 0 +LWPOLYLINE + 5 +28EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-10.54713203435608 + 20 +-43.63213203435592 + 10 +-10.33500000000009 + 20 +-43.41999999999996 + 10 +-4.235000000000241 + 20 +-43.41999999999979 + 10 +-4.022867965644195 + 20 +-43.63213203435572 + 0 +LWPOLYLINE + 5 +28EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.73896778064915 + 20 +-42.84499999999994 + 10 +-17.90013967720358 + 20 +-42.84499999999997 + 0 +LWPOLYLINE + 5 +28F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-180.497132034356 + 20 +11.262132034356 + 10 +-180.2850000000001 + 20 +11.05000000000001 + 10 +-180.2850000000001 + 20 +8.950000000000045 + 10 +-180.497132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-161.1928679656441 + 20 +11.262132034356 + 10 +-161.4050000000001 + 20 +11.05000000000001 + 10 +-161.4050000000001 + 20 +8.950000000000045 + 10 +-161.1928679656441 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-160.677132034356 + 20 +11.262132034356 + 10 +-160.4650000000001 + 20 +11.05000000000001 + 10 +-160.4650000000001 + 20 +8.950000000000045 + 10 +-160.677132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-141.3728679656441 + 20 +11.262132034356 + 10 +-141.5850000000001 + 20 +11.05000000000001 + 10 +-141.5850000000001 + 20 +8.950000000000045 + 10 +-141.3728679656441 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-140.857132034356 + 20 +11.262132034356 + 10 +-140.6450000000001 + 20 +11.05000000000001 + 10 +-140.6450000000001 + 20 +8.950000000000045 + 10 +-140.857132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-121.5528679656441 + 20 +11.262132034356 + 10 +-121.765 + 20 +11.05000000000001 + 10 +-121.765 + 20 +8.950000000000045 + 10 +-121.5528679656441 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-121.037132034356 + 20 +11.262132034356 + 10 +-120.8250000000001 + 20 +11.05000000000001 + 10 +-120.8250000000001 + 20 +8.950000000000045 + 10 +-121.037132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-101.7328679656441 + 20 +11.262132034356 + 10 +-101.9450000000001 + 20 +11.05000000000001 + 10 +-101.9450000000001 + 20 +8.950000000000045 + 10 +-101.7328679656441 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-101.217132034356 + 20 +11.262132034356 + 10 +-101.0050000000001 + 20 +11.05000000000001 + 10 +-101.0050000000001 + 20 +8.950000000000045 + 10 +-101.217132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-81.9128679656441 + 20 +11.262132034356 + 10 +-82.12500000000006 + 20 +11.05000000000001 + 10 +-82.12500000000006 + 20 +8.950000000000045 + 10 +-81.9128679656441 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-81.39713203435605 + 20 +11.262132034356 + 10 +-81.18500000000009 + 20 +11.05000000000001 + 10 +-81.18500000000009 + 20 +8.950000000000045 + 10 +-81.39713203435605 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-62.09286796564413 + 20 +11.262132034356 + 10 +-62.30500000000006 + 20 +11.05000000000001 + 10 +-62.30500000000006 + 20 +8.950000000000045 + 10 +-62.09286796564413 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-61.57713203435605 + 20 +11.262132034356 + 10 +-61.36500000000007 + 20 +11.05000000000001 + 10 +-61.36500000000007 + 20 +8.950000000000045 + 10 +-61.57713203435605 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-42.27286796564408 + 20 +11.262132034356 + 10 +-42.48500000000001 + 20 +11.05000000000001 + 10 +-42.48500000000001 + 20 +8.950000000000045 + 10 +-42.27286796564408 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-41.757132034356 + 20 +11.262132034356 + 10 +-41.54500000000007 + 20 +11.05000000000001 + 10 +-41.54500000000007 + 20 +8.950000000000045 + 10 +-41.757132034356 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +28FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.45286796564409 + 20 +11.262132034356 + 10 +-22.66500000000008 + 20 +11.05000000000001 + 10 +-22.66500000000008 + 20 +8.950000000000045 + 10 +-22.45286796564409 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +2900 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-21.93713203435607 + 20 +11.262132034356 + 10 +-21.72500000000008 + 20 +11.05000000000001 + 10 +-21.72500000000008 + 20 +8.950000000000045 + 10 +-21.93713203435607 + 20 +8.737867965644057 + 0 +LWPOLYLINE + 5 +2901 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.632867965644095 + 20 +11.262132034356 + 10 +-2.845000000000027 + 20 +11.05000000000001 + 10 +-2.845000000000027 + 20 +8.950000000000045 + 10 +-2.632867965644095 + 20 +8.737867965644057 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D979.E219.E219.dxf11111.dxf b/LaiPuLaser/TempMarkData/D979.E219.E219.dxf11111.dxf new file mode 100644 index 0000000..f6f9291 --- /dev/null +++ b/LaiPuLaser/TempMarkData/D979.E219.E219.dxf11111.dxf @@ -0,0 +1,16990 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +157.9290886439566 + 20 +158.2717504342585 + 30 +0.0 + 9 +$EXTMAX + 10 +335.7888834343608 + 20 +266.1114067867879 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458928.487788808 + 9 +$TDUCREATE + 40 +2458928.154455475 + 9 +$TDUPDATE + 40 +2458928.487788819 + 9 +$TDUUPDATE + 40 +2458928.154455486 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +5F1 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +158.6840609472882 + 22 +252.6039354991455 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +29.74128138030628 + 41 +18.12828778310495 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +160.0712206783126 + 20 +158.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +318.6312206783126 + 20 +158.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +266.1114067867879 + 10 +169.5412206783126 + 20 +265.899274752432 + 10 +175.6412206783125 + 20 +265.899274752432 + 10 +175.8533527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +256.8320940817289 + 10 +169.5412206783126 + 20 +257.0442261160849 + 10 +175.6412206783125 + 20 +257.0442261160849 + 10 +175.8533527126685 + 20 +256.8320940817289 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +157.9290886439566 + 20 +213.7338824686144 + 10 +158.1412206783126 + 20 +213.5217504342585 + 10 +158.1412206783126 + 20 +211.4217504342585 + 10 +157.9290886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +177.2288834343608 + 20 +213.7338824686144 + 10 +177.0167514000049 + 20 +213.5217504342585 + 10 +177.0167514000049 + 20 +211.4217504342585 + 10 +177.2288834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +177.7490886439566 + 20 +213.7338824686144 + 10 +177.9612206783126 + 20 +213.5217504342585 + 10 +177.9612206783126 + 20 +211.4217504342585 + 10 +177.7490886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +197.0488834343608 + 20 +213.7338824686144 + 10 +196.8367514000049 + 20 +213.5217504342585 + 10 +196.8367514000049 + 20 +211.4217504342585 + 10 +197.0488834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +197.5690886439566 + 20 +213.7338824686144 + 10 +197.7812206783126 + 20 +213.5217504342585 + 10 +197.7812206783126 + 20 +211.4217504342585 + 10 +197.5690886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.8688834343608 + 20 +213.7338824686144 + 10 +216.6567514000049 + 20 +213.5217504342585 + 10 +216.6567514000049 + 20 +211.4217504342585 + 10 +216.8688834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +217.3890886439566 + 20 +213.7338824686144 + 10 +217.6012206783126 + 20 +213.5217504342585 + 10 +217.6012206783126 + 20 +211.4217504342585 + 10 +217.3890886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +236.6888834343608 + 20 +213.7338824686144 + 10 +236.4767514000049 + 20 +213.5217504342585 + 10 +236.4767514000049 + 20 +211.4217504342585 + 10 +236.6888834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +237.2090886439566 + 20 +213.7338824686144 + 10 +237.4212206783126 + 20 +213.5217504342585 + 10 +237.4212206783126 + 20 +211.4217504342585 + 10 +237.2090886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +256.5088834343608 + 20 +213.7338824686144 + 10 +256.2967514000048 + 20 +213.5217504342585 + 10 +256.2967514000048 + 20 +211.4217504342585 + 10 +256.5088834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +257.0290886439566 + 20 +213.7338824686144 + 10 +257.2412206783126 + 20 +213.5217504342585 + 10 +257.2412206783126 + 20 +211.4217504342585 + 10 +257.0290886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +276.3288834343608 + 20 +213.7338824686144 + 10 +276.1167514000048 + 20 +213.5217504342585 + 10 +276.1167514000048 + 20 +211.4217504342585 + 10 +276.3288834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +276.8490886439566 + 20 +213.7338824686144 + 10 +277.0612206783126 + 20 +213.5217504342585 + 10 +277.0612206783126 + 20 +211.4217504342585 + 10 +276.8490886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +296.1488834343608 + 20 +213.7338824686144 + 10 +295.9367514000048 + 20 +213.5217504342585 + 10 +295.9367514000048 + 20 +211.4217504342585 + 10 +296.1488834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +296.6690886439566 + 20 +213.7338824686144 + 10 +296.8812206783126 + 20 +213.5217504342585 + 10 +296.8812206783126 + 20 +211.4217504342585 + 10 +296.6690886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +315.9688834343608 + 20 +213.7338824686144 + 10 +315.7567514000049 + 20 +213.5217504342585 + 10 +315.7567514000049 + 20 +211.4217504342585 + 10 +315.9688834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +316.4890886439566 + 20 +213.7338824686144 + 10 +316.7012206783125 + 20 +213.5217504342585 + 10 +316.7012206783125 + 20 +211.4217504342585 + 10 +316.4890886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +335.7888834343608 + 20 +213.7338824686144 + 10 +335.5767514000049 + 20 +213.5217504342585 + 10 +335.5767514000049 + 20 +211.4217504342585 + 10 +335.7888834343608 + 20 +211.2096183999025 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +266.1114067867879 + 10 +189.3612206783126 + 20 +265.899274752432 + 10 +195.4612206783125 + 20 +265.899274752432 + 10 +195.6733527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +256.8320940817289 + 10 +189.3612206783126 + 20 +257.0442261160849 + 10 +195.4612206783125 + 20 +257.0442261160849 + 10 +195.6733527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +266.1114067867879 + 10 +209.1812206783126 + 20 +265.899274752432 + 10 +215.2812206783125 + 20 +265.899274752432 + 10 +215.4933527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +256.8320940817289 + 10 +209.1812206783126 + 20 +257.0442261160849 + 10 +215.2812206783125 + 20 +257.0442261160849 + 10 +215.4933527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +266.1114067867879 + 10 +229.0012206783126 + 20 +265.899274752432 + 10 +235.1012206783125 + 20 +265.899274752432 + 10 +235.3133527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +256.8320940817289 + 10 +229.0012206783126 + 20 +257.0442261160849 + 10 +235.1012206783125 + 20 +257.0442261160849 + 10 +235.3133527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +266.1114067867879 + 10 +248.8212206783126 + 20 +265.899274752432 + 10 +254.9212206783125 + 20 +265.899274752432 + 10 +255.1333527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +256.8320940817289 + 10 +248.8212206783126 + 20 +257.0442261160849 + 10 +254.9212206783125 + 20 +257.0442261160849 + 10 +255.1333527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +266.1114067867879 + 10 +268.6412206783126 + 20 +265.899274752432 + 10 +274.7412206783125 + 20 +265.899274752432 + 10 +274.9533527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +256.8320940817289 + 10 +268.6412206783126 + 20 +257.0442261160849 + 10 +274.7412206783125 + 20 +257.0442261160849 + 10 +274.9533527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +266.1114067867879 + 10 +288.4612206783126 + 20 +265.899274752432 + 10 +294.5612206783125 + 20 +265.899274752432 + 10 +294.7733527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +256.8320940817289 + 10 +288.4612206783126 + 20 +257.0442261160849 + 10 +294.5612206783125 + 20 +257.0442261160849 + 10 +294.7733527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +266.1114067867879 + 10 +308.2812206783126 + 20 +265.899274752432 + 10 +314.3812206783125 + 20 +265.899274752432 + 10 +314.5933527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +256.8320940817289 + 10 +308.2812206783126 + 20 +257.0442261160849 + 10 +314.3812206783125 + 20 +257.0442261160849 + 10 +314.5933527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +265.3267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +265.3267504342584 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +257.6167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +257.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +266.1114067867879 + 10 +328.1012206783126 + 20 +265.899274752432 + 10 +334.2012206783125 + 20 +265.899274752432 + 10 +334.4133527126685 + 20 +266.1114067867879 + 0 +LWPOLYLINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +256.8320940817289 + 10 +328.1012206783126 + 20 +257.0442261160849 + 10 +334.2012206783125 + 20 +257.0442261160849 + 10 +334.4133527126685 + 20 +256.8320940817289 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +256.3114067867879 + 10 +169.5412206783126 + 20 +256.099274752432 + 10 +175.6412206783125 + 20 +256.099274752432 + 10 +175.8533527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +247.0320940817289 + 10 +169.5412206783126 + 20 +247.2442261160849 + 10 +175.6412206783125 + 20 +247.2442261160849 + 10 +175.8533527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +256.3114067867879 + 10 +189.3612206783126 + 20 +256.099274752432 + 10 +195.4612206783125 + 20 +256.099274752432 + 10 +195.6733527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +247.0320940817289 + 10 +189.3612206783126 + 20 +247.2442261160849 + 10 +195.4612206783125 + 20 +247.2442261160849 + 10 +195.6733527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +256.3114067867879 + 10 +209.1812206783126 + 20 +256.099274752432 + 10 +215.2812206783125 + 20 +256.099274752432 + 10 +215.4933527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +247.0320940817289 + 10 +209.1812206783126 + 20 +247.2442261160849 + 10 +215.2812206783125 + 20 +247.2442261160849 + 10 +215.4933527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +256.3114067867879 + 10 +229.0012206783126 + 20 +256.099274752432 + 10 +235.1012206783125 + 20 +256.099274752432 + 10 +235.3133527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +247.0320940817289 + 10 +229.0012206783126 + 20 +247.2442261160849 + 10 +235.1012206783125 + 20 +247.2442261160849 + 10 +235.3133527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +256.3114067867879 + 10 +248.8212206783126 + 20 +256.099274752432 + 10 +254.9212206783125 + 20 +256.099274752432 + 10 +255.1333527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +247.0320940817289 + 10 +248.8212206783126 + 20 +247.2442261160849 + 10 +254.9212206783125 + 20 +247.2442261160849 + 10 +255.1333527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +256.3114067867879 + 10 +268.6412206783126 + 20 +256.099274752432 + 10 +274.7412206783125 + 20 +256.099274752432 + 10 +274.9533527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +247.0320940817289 + 10 +268.6412206783126 + 20 +247.2442261160849 + 10 +274.7412206783125 + 20 +247.2442261160849 + 10 +274.9533527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +256.3114067867879 + 10 +288.4612206783126 + 20 +256.099274752432 + 10 +294.5612206783125 + 20 +256.099274752432 + 10 +294.7733527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +247.0320940817289 + 10 +288.4612206783126 + 20 +247.2442261160849 + 10 +294.5612206783125 + 20 +247.2442261160849 + 10 +294.7733527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +256.3114067867879 + 10 +308.2812206783126 + 20 +256.099274752432 + 10 +314.3812206783125 + 20 +256.099274752432 + 10 +314.5933527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +247.0320940817289 + 10 +308.2812206783126 + 20 +247.2442261160849 + 10 +314.3812206783125 + 20 +247.2442261160849 + 10 +314.5933527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +255.5267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +255.5267504342584 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +247.8167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +247.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +256.3114067867879 + 10 +328.1012206783126 + 20 +256.099274752432 + 10 +334.2012206783125 + 20 +256.099274752432 + 10 +334.4133527126685 + 20 +256.3114067867879 + 0 +LWPOLYLINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +247.0320940817289 + 10 +328.1012206783126 + 20 +247.2442261160849 + 10 +334.2012206783125 + 20 +247.2442261160849 + 10 +334.4133527126685 + 20 +247.0320940817289 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +246.5114067867879 + 10 +169.5412206783126 + 20 +246.299274752432 + 10 +175.6412206783125 + 20 +246.299274752432 + 10 +175.8533527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +237.2320940817289 + 10 +169.5412206783126 + 20 +237.4442261160849 + 10 +175.6412206783125 + 20 +237.4442261160849 + 10 +175.8533527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +246.5114067867879 + 10 +189.3612206783126 + 20 +246.299274752432 + 10 +195.4612206783125 + 20 +246.299274752432 + 10 +195.6733527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +237.2320940817289 + 10 +189.3612206783126 + 20 +237.4442261160849 + 10 +195.4612206783125 + 20 +237.4442261160849 + 10 +195.6733527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +246.5114067867879 + 10 +209.1812206783126 + 20 +246.299274752432 + 10 +215.2812206783125 + 20 +246.299274752432 + 10 +215.4933527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +237.2320940817289 + 10 +209.1812206783126 + 20 +237.4442261160849 + 10 +215.2812206783125 + 20 +237.4442261160849 + 10 +215.4933527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +246.5114067867879 + 10 +229.0012206783126 + 20 +246.299274752432 + 10 +235.1012206783125 + 20 +246.299274752432 + 10 +235.3133527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +237.2320940817289 + 10 +229.0012206783126 + 20 +237.4442261160849 + 10 +235.1012206783125 + 20 +237.4442261160849 + 10 +235.3133527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +246.5114067867879 + 10 +248.8212206783126 + 20 +246.299274752432 + 10 +254.9212206783125 + 20 +246.299274752432 + 10 +255.1333527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +237.2320940817289 + 10 +248.8212206783126 + 20 +237.4442261160849 + 10 +254.9212206783125 + 20 +237.4442261160849 + 10 +255.1333527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +246.5114067867879 + 10 +268.6412206783126 + 20 +246.299274752432 + 10 +274.7412206783125 + 20 +246.299274752432 + 10 +274.9533527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +237.2320940817289 + 10 +268.6412206783126 + 20 +237.4442261160849 + 10 +274.7412206783125 + 20 +237.4442261160849 + 10 +274.9533527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +246.5114067867879 + 10 +288.4612206783126 + 20 +246.299274752432 + 10 +294.5612206783125 + 20 +246.299274752432 + 10 +294.7733527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +237.2320940817289 + 10 +288.4612206783126 + 20 +237.4442261160849 + 10 +294.5612206783125 + 20 +237.4442261160849 + 10 +294.7733527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +246.5114067867879 + 10 +308.2812206783126 + 20 +246.299274752432 + 10 +314.3812206783125 + 20 +246.299274752432 + 10 +314.5933527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +237.2320940817289 + 10 +308.2812206783126 + 20 +237.4442261160849 + 10 +314.3812206783125 + 20 +237.4442261160849 + 10 +314.5933527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +245.7267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +245.7267504342584 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +238.0167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +238.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +246.5114067867879 + 10 +328.1012206783126 + 20 +246.299274752432 + 10 +334.2012206783125 + 20 +246.299274752432 + 10 +334.4133527126685 + 20 +246.5114067867879 + 0 +LWPOLYLINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +237.2320940817289 + 10 +328.1012206783126 + 20 +237.4442261160849 + 10 +334.2012206783125 + 20 +237.4442261160849 + 10 +334.4133527126685 + 20 +237.2320940817289 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +236.7114067867879 + 10 +169.5412206783126 + 20 +236.499274752432 + 10 +175.6412206783125 + 20 +236.499274752432 + 10 +175.8533527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +227.4320940817289 + 10 +169.5412206783126 + 20 +227.6442261160849 + 10 +175.6412206783125 + 20 +227.6442261160849 + 10 +175.8533527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +236.7114067867879 + 10 +189.3612206783126 + 20 +236.499274752432 + 10 +195.4612206783125 + 20 +236.499274752432 + 10 +195.6733527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +227.4320940817289 + 10 +189.3612206783126 + 20 +227.6442261160849 + 10 +195.4612206783125 + 20 +227.6442261160849 + 10 +195.6733527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +236.7114067867879 + 10 +209.1812206783126 + 20 +236.499274752432 + 10 +215.2812206783125 + 20 +236.499274752432 + 10 +215.4933527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +227.4320940817289 + 10 +209.1812206783126 + 20 +227.6442261160849 + 10 +215.2812206783125 + 20 +227.6442261160849 + 10 +215.4933527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +236.7114067867879 + 10 +229.0012206783126 + 20 +236.499274752432 + 10 +235.1012206783125 + 20 +236.499274752432 + 10 +235.3133527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +227.4320940817289 + 10 +229.0012206783126 + 20 +227.6442261160849 + 10 +235.1012206783125 + 20 +227.6442261160849 + 10 +235.3133527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +236.7114067867879 + 10 +248.8212206783126 + 20 +236.499274752432 + 10 +254.9212206783125 + 20 +236.499274752432 + 10 +255.1333527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +227.4320940817289 + 10 +248.8212206783126 + 20 +227.6442261160849 + 10 +254.9212206783125 + 20 +227.6442261160849 + 10 +255.1333527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +236.7114067867879 + 10 +268.6412206783126 + 20 +236.499274752432 + 10 +274.7412206783125 + 20 +236.499274752432 + 10 +274.9533527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +227.4320940817289 + 10 +268.6412206783126 + 20 +227.6442261160849 + 10 +274.7412206783125 + 20 +227.6442261160849 + 10 +274.9533527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +236.7114067867879 + 10 +288.4612206783126 + 20 +236.499274752432 + 10 +294.5612206783125 + 20 +236.499274752432 + 10 +294.7733527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +227.4320940817289 + 10 +288.4612206783126 + 20 +227.6442261160849 + 10 +294.5612206783125 + 20 +227.6442261160849 + 10 +294.7733527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +236.7114067867879 + 10 +308.2812206783126 + 20 +236.499274752432 + 10 +314.3812206783125 + 20 +236.499274752432 + 10 +314.5933527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +227.4320940817289 + 10 +308.2812206783126 + 20 +227.6442261160849 + 10 +314.3812206783125 + 20 +227.6442261160849 + 10 +314.5933527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +235.9267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +235.9267504342584 + 31 +0.0 + 0 +LINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +228.2167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +228.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +236.7114067867879 + 10 +328.1012206783126 + 20 +236.499274752432 + 10 +334.2012206783125 + 20 +236.499274752432 + 10 +334.4133527126685 + 20 +236.7114067867879 + 0 +LWPOLYLINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +227.4320940817289 + 10 +328.1012206783126 + 20 +227.6442261160849 + 10 +334.2012206783125 + 20 +227.6442261160849 + 10 +334.4133527126685 + 20 +227.4320940817289 + 0 +LINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +226.9114067867879 + 10 +169.5412206783126 + 20 +226.699274752432 + 10 +175.6412206783125 + 20 +226.699274752432 + 10 +175.8533527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +217.6320940817289 + 10 +169.5412206783126 + 20 +217.8442261160849 + 10 +175.6412206783125 + 20 +217.8442261160849 + 10 +175.8533527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +226.9114067867879 + 10 +189.3612206783126 + 20 +226.699274752432 + 10 +195.4612206783125 + 20 +226.699274752432 + 10 +195.6733527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +4F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +217.6320940817289 + 10 +189.3612206783126 + 20 +217.8442261160849 + 10 +195.4612206783125 + 20 +217.8442261160849 + 10 +195.6733527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +4FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +4FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +226.9114067867879 + 10 +209.1812206783126 + 20 +226.699274752432 + 10 +215.2812206783125 + 20 +226.699274752432 + 10 +215.4933527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +4FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +217.6320940817289 + 10 +209.1812206783126 + 20 +217.8442261160849 + 10 +215.2812206783125 + 20 +217.8442261160849 + 10 +215.4933527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +4FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +4FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +500 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +226.9114067867879 + 10 +229.0012206783126 + 20 +226.699274752432 + 10 +235.1012206783125 + 20 +226.699274752432 + 10 +235.3133527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +501 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +217.6320940817289 + 10 +229.0012206783126 + 20 +217.8442261160849 + 10 +235.1012206783125 + 20 +217.8442261160849 + 10 +235.3133527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +502 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +503 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +504 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +226.9114067867879 + 10 +248.8212206783126 + 20 +226.699274752432 + 10 +254.9212206783125 + 20 +226.699274752432 + 10 +255.1333527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +505 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +217.6320940817289 + 10 +248.8212206783126 + 20 +217.8442261160849 + 10 +254.9212206783125 + 20 +217.8442261160849 + 10 +255.1333527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +506 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +507 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +508 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +226.9114067867879 + 10 +268.6412206783126 + 20 +226.699274752432 + 10 +274.7412206783125 + 20 +226.699274752432 + 10 +274.9533527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +509 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +217.6320940817289 + 10 +268.6412206783126 + 20 +217.8442261160849 + 10 +274.7412206783125 + 20 +217.8442261160849 + 10 +274.9533527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +50A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +50B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +50C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +226.9114067867879 + 10 +288.4612206783126 + 20 +226.699274752432 + 10 +294.5612206783125 + 20 +226.699274752432 + 10 +294.7733527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +50D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +217.6320940817289 + 10 +288.4612206783126 + 20 +217.8442261160849 + 10 +294.5612206783125 + 20 +217.8442261160849 + 10 +294.7733527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +50E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +50F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +510 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +226.9114067867879 + 10 +308.2812206783126 + 20 +226.699274752432 + 10 +314.3812206783125 + 20 +226.699274752432 + 10 +314.5933527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +511 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +217.6320940817289 + 10 +308.2812206783126 + 20 +217.8442261160849 + 10 +314.3812206783125 + 20 +217.8442261160849 + 10 +314.5933527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +512 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +226.1267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +226.1267504342584 + 31 +0.0 + 0 +LINE + 5 +513 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +218.4167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +218.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +514 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +226.9114067867879 + 10 +328.1012206783126 + 20 +226.699274752432 + 10 +334.2012206783125 + 20 +226.699274752432 + 10 +334.4133527126685 + 20 +226.9114067867879 + 0 +LWPOLYLINE + 5 +515 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +217.6320940817289 + 10 +328.1012206783126 + 20 +217.8442261160849 + 10 +334.2012206783125 + 20 +217.8442261160849 + 10 +334.4133527126685 + 20 +217.6320940817289 + 0 +LINE + 5 +516 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +517 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +518 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +217.1114067867879 + 10 +169.5412206783126 + 20 +216.899274752432 + 10 +175.6412206783125 + 20 +216.899274752432 + 10 +175.8533527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +519 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +207.8320940817289 + 10 +169.5412206783126 + 20 +208.0442261160849 + 10 +175.6412206783125 + 20 +208.0442261160849 + 10 +175.8533527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +51A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +51B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +51C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +217.1114067867879 + 10 +189.3612206783126 + 20 +216.899274752432 + 10 +195.4612206783125 + 20 +216.899274752432 + 10 +195.6733527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +51D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +207.8320940817289 + 10 +189.3612206783126 + 20 +208.0442261160849 + 10 +195.4612206783125 + 20 +208.0442261160849 + 10 +195.6733527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +51E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +51F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +520 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +217.1114067867879 + 10 +209.1812206783126 + 20 +216.899274752432 + 10 +215.2812206783125 + 20 +216.899274752432 + 10 +215.4933527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +521 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +207.8320940817289 + 10 +209.1812206783126 + 20 +208.0442261160849 + 10 +215.2812206783125 + 20 +208.0442261160849 + 10 +215.4933527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +522 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +523 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +524 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +217.1114067867879 + 10 +229.0012206783126 + 20 +216.899274752432 + 10 +235.1012206783125 + 20 +216.899274752432 + 10 +235.3133527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +525 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +207.8320940817289 + 10 +229.0012206783126 + 20 +208.0442261160849 + 10 +235.1012206783125 + 20 +208.0442261160849 + 10 +235.3133527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +526 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +527 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +528 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +217.1114067867879 + 10 +248.8212206783126 + 20 +216.899274752432 + 10 +254.9212206783125 + 20 +216.899274752432 + 10 +255.1333527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +529 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +207.8320940817289 + 10 +248.8212206783126 + 20 +208.0442261160849 + 10 +254.9212206783125 + 20 +208.0442261160849 + 10 +255.1333527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +52A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +52B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +52C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +217.1114067867879 + 10 +268.6412206783126 + 20 +216.899274752432 + 10 +274.7412206783125 + 20 +216.899274752432 + 10 +274.9533527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +52D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +207.8320940817289 + 10 +268.6412206783126 + 20 +208.0442261160849 + 10 +274.7412206783125 + 20 +208.0442261160849 + 10 +274.9533527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +52E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +52F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +530 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +217.1114067867879 + 10 +288.4612206783126 + 20 +216.899274752432 + 10 +294.5612206783125 + 20 +216.899274752432 + 10 +294.7733527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +531 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +207.8320940817289 + 10 +288.4612206783126 + 20 +208.0442261160849 + 10 +294.5612206783125 + 20 +208.0442261160849 + 10 +294.7733527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +532 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +533 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +534 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +217.1114067867879 + 10 +308.2812206783126 + 20 +216.899274752432 + 10 +314.3812206783125 + 20 +216.899274752432 + 10 +314.5933527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +535 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +207.8320940817289 + 10 +308.2812206783126 + 20 +208.0442261160849 + 10 +314.3812206783125 + 20 +208.0442261160849 + 10 +314.5933527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +536 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +216.3267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +216.3267504342584 + 31 +0.0 + 0 +LINE + 5 +537 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +208.6167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +208.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +538 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +217.1114067867879 + 10 +328.1012206783126 + 20 +216.899274752432 + 10 +334.2012206783125 + 20 +216.899274752432 + 10 +334.4133527126685 + 20 +217.1114067867879 + 0 +LWPOLYLINE + 5 +539 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +207.8320940817289 + 10 +328.1012206783126 + 20 +208.0442261160849 + 10 +334.2012206783125 + 20 +208.0442261160849 + 10 +334.4133527126685 + 20 +207.8320940817289 + 0 +LINE + 5 +53A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +53B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +53C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +207.3114067867879 + 10 +169.5412206783126 + 20 +207.099274752432 + 10 +175.6412206783125 + 20 +207.099274752432 + 10 +175.8533527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +53D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +198.0320940817289 + 10 +169.5412206783126 + 20 +198.2442261160849 + 10 +175.6412206783125 + 20 +198.2442261160849 + 10 +175.8533527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +53E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +53F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +540 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +207.3114067867879 + 10 +189.3612206783126 + 20 +207.099274752432 + 10 +195.4612206783125 + 20 +207.099274752432 + 10 +195.6733527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +541 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +198.0320940817289 + 10 +189.3612206783126 + 20 +198.2442261160849 + 10 +195.4612206783125 + 20 +198.2442261160849 + 10 +195.6733527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +542 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +543 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +544 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +207.3114067867879 + 10 +209.1812206783126 + 20 +207.099274752432 + 10 +215.2812206783125 + 20 +207.099274752432 + 10 +215.4933527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +545 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +198.0320940817289 + 10 +209.1812206783126 + 20 +198.2442261160849 + 10 +215.2812206783125 + 20 +198.2442261160849 + 10 +215.4933527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +546 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +547 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +548 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +207.3114067867879 + 10 +229.0012206783126 + 20 +207.099274752432 + 10 +235.1012206783125 + 20 +207.099274752432 + 10 +235.3133527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +549 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +198.0320940817289 + 10 +229.0012206783126 + 20 +198.2442261160849 + 10 +235.1012206783125 + 20 +198.2442261160849 + 10 +235.3133527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +54A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +54B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +54C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +207.3114067867879 + 10 +248.8212206783126 + 20 +207.099274752432 + 10 +254.9212206783125 + 20 +207.099274752432 + 10 +255.1333527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +54D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +198.0320940817289 + 10 +248.8212206783126 + 20 +198.2442261160849 + 10 +254.9212206783125 + 20 +198.2442261160849 + 10 +255.1333527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +54E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +54F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +550 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +207.3114067867879 + 10 +268.6412206783126 + 20 +207.099274752432 + 10 +274.7412206783125 + 20 +207.099274752432 + 10 +274.9533527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +551 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +198.0320940817289 + 10 +268.6412206783126 + 20 +198.2442261160849 + 10 +274.7412206783125 + 20 +198.2442261160849 + 10 +274.9533527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +552 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +553 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +554 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +207.3114067867879 + 10 +288.4612206783126 + 20 +207.099274752432 + 10 +294.5612206783125 + 20 +207.099274752432 + 10 +294.7733527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +555 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +198.0320940817289 + 10 +288.4612206783126 + 20 +198.2442261160849 + 10 +294.5612206783125 + 20 +198.2442261160849 + 10 +294.7733527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +556 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +557 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +558 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +207.3114067867879 + 10 +308.2812206783126 + 20 +207.099274752432 + 10 +314.3812206783125 + 20 +207.099274752432 + 10 +314.5933527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +559 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +198.0320940817289 + 10 +308.2812206783126 + 20 +198.2442261160849 + 10 +314.3812206783125 + 20 +198.2442261160849 + 10 +314.5933527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +55A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +206.5267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +206.5267504342584 + 31 +0.0 + 0 +LINE + 5 +55B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +198.8167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +198.8167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +55C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +207.3114067867879 + 10 +328.1012206783126 + 20 +207.099274752432 + 10 +334.2012206783125 + 20 +207.099274752432 + 10 +334.4133527126685 + 20 +207.3114067867879 + 0 +LWPOLYLINE + 5 +55D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +198.0320940817289 + 10 +328.1012206783126 + 20 +198.2442261160849 + 10 +334.2012206783125 + 20 +198.2442261160849 + 10 +334.4133527126685 + 20 +198.0320940817289 + 0 +LINE + 5 +55E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +161.9712838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +55F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +560 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +197.5114067867879 + 10 +169.5412206783126 + 20 +197.299274752432 + 10 +175.6412206783125 + 20 +197.299274752432 + 10 +175.8533527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +561 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +188.2320940817289 + 10 +169.5412206783126 + 20 +188.4442261160849 + 10 +175.6412206783125 + 20 +188.4442261160849 + 10 +175.8533527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +562 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +181.7912838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +563 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +564 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +197.5114067867879 + 10 +189.3612206783126 + 20 +197.299274752432 + 10 +195.4612206783125 + 20 +197.299274752432 + 10 +195.6733527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +565 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +188.2320940817289 + 10 +189.3612206783126 + 20 +188.4442261160849 + 10 +195.4612206783125 + 20 +188.4442261160849 + 10 +195.6733527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +566 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +201.6112838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +567 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +568 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +197.5114067867879 + 10 +209.1812206783126 + 20 +197.299274752432 + 10 +215.2812206783125 + 20 +197.299274752432 + 10 +215.4933527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +569 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +188.2320940817289 + 10 +209.1812206783126 + 20 +188.4442261160849 + 10 +215.2812206783125 + 20 +188.4442261160849 + 10 +215.4933527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +56A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +221.4312838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +56B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +56C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +197.5114067867879 + 10 +229.0012206783126 + 20 +197.299274752432 + 10 +235.1012206783125 + 20 +197.299274752432 + 10 +235.3133527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +56D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +188.2320940817289 + 10 +229.0012206783126 + 20 +188.4442261160849 + 10 +235.1012206783125 + 20 +188.4442261160849 + 10 +235.3133527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +56E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +241.2512838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +56F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +570 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +197.5114067867879 + 10 +248.8212206783126 + 20 +197.299274752432 + 10 +254.9212206783125 + 20 +197.299274752432 + 10 +255.1333527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +571 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +188.2320940817289 + 10 +248.8212206783126 + 20 +188.4442261160849 + 10 +254.9212206783125 + 20 +188.4442261160849 + 10 +255.1333527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +572 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +261.0712838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +573 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +574 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +197.5114067867879 + 10 +268.6412206783126 + 20 +197.299274752432 + 10 +274.7412206783125 + 20 +197.299274752432 + 10 +274.9533527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +575 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +188.2320940817289 + 10 +268.6412206783126 + 20 +188.4442261160849 + 10 +274.7412206783125 + 20 +188.4442261160849 + 10 +274.9533527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +576 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +280.8912838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +577 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +578 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +197.5114067867879 + 10 +288.4612206783126 + 20 +197.299274752432 + 10 +294.5612206783125 + 20 +197.299274752432 + 10 +294.7733527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +579 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +188.2320940817289 + 10 +288.4612206783126 + 20 +188.4442261160849 + 10 +294.5612206783125 + 20 +188.4442261160849 + 10 +294.7733527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +57A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +300.7112838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +57B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +57C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +197.5114067867879 + 10 +308.2812206783126 + 20 +197.299274752432 + 10 +314.3812206783125 + 20 +197.299274752432 + 10 +314.5933527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +57D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +188.2320940817289 + 10 +308.2812206783126 + 20 +188.4442261160849 + 10 +314.3812206783125 + 20 +188.4442261160849 + 10 +314.5933527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +57E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +196.7267504342583 + 30 +0.0 + 11 +320.5312838197172 + 21 +196.7267504342583 + 31 +0.0 + 0 +LINE + 5 +57F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +189.0167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +189.0167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +580 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +197.5114067867879 + 10 +328.1012206783126 + 20 +197.299274752432 + 10 +334.2012206783125 + 20 +197.299274752432 + 10 +334.4133527126685 + 20 +197.5114067867879 + 0 +LWPOLYLINE + 5 +581 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +188.2320940817289 + 10 +328.1012206783126 + 20 +188.4442261160849 + 10 +334.2012206783125 + 20 +188.4442261160849 + 10 +334.4133527126685 + 20 +188.2320940817289 + 0 +LINE + 5 +582 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +583 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +584 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +187.7114067867879 + 10 +169.5412206783126 + 20 +187.499274752432 + 10 +175.6412206783125 + 20 +187.499274752432 + 10 +175.8533527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +585 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +178.4320940817289 + 10 +169.5412206783126 + 20 +178.6442261160849 + 10 +175.6412206783125 + 20 +178.6442261160849 + 10 +175.8533527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +586 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +587 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +588 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +187.7114067867879 + 10 +189.3612206783126 + 20 +187.499274752432 + 10 +195.4612206783125 + 20 +187.499274752432 + 10 +195.6733527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +589 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +178.4320940817289 + 10 +189.3612206783126 + 20 +178.6442261160849 + 10 +195.4612206783125 + 20 +178.6442261160849 + 10 +195.6733527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +58A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +58B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +58C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +187.7114067867879 + 10 +209.1812206783126 + 20 +187.499274752432 + 10 +215.2812206783125 + 20 +187.499274752432 + 10 +215.4933527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +58D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +178.4320940817289 + 10 +209.1812206783126 + 20 +178.6442261160849 + 10 +215.2812206783125 + 20 +178.6442261160849 + 10 +215.4933527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +58E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +58F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +590 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +187.7114067867879 + 10 +229.0012206783126 + 20 +187.499274752432 + 10 +235.1012206783125 + 20 +187.499274752432 + 10 +235.3133527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +591 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +178.4320940817289 + 10 +229.0012206783126 + 20 +178.6442261160849 + 10 +235.1012206783125 + 20 +178.6442261160849 + 10 +235.3133527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +592 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +593 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +594 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +187.7114067867879 + 10 +248.8212206783126 + 20 +187.499274752432 + 10 +254.9212206783125 + 20 +187.499274752432 + 10 +255.1333527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +595 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +178.4320940817289 + 10 +248.8212206783126 + 20 +178.6442261160849 + 10 +254.9212206783125 + 20 +178.6442261160849 + 10 +255.1333527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +596 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +597 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +598 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +187.7114067867879 + 10 +268.6412206783126 + 20 +187.499274752432 + 10 +274.7412206783125 + 20 +187.499274752432 + 10 +274.9533527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +599 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +178.4320940817289 + 10 +268.6412206783126 + 20 +178.6442261160849 + 10 +274.7412206783125 + 20 +178.6442261160849 + 10 +274.9533527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +59A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +59B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +59C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +187.7114067867879 + 10 +288.4612206783126 + 20 +187.499274752432 + 10 +294.5612206783125 + 20 +187.499274752432 + 10 +294.7733527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +59D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +178.4320940817289 + 10 +288.4612206783126 + 20 +178.6442261160849 + 10 +294.5612206783125 + 20 +178.6442261160849 + 10 +294.7733527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +59E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +59F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +187.7114067867879 + 10 +308.2812206783126 + 20 +187.499274752432 + 10 +314.3812206783125 + 20 +187.499274752432 + 10 +314.5933527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +5A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +178.4320940817289 + 10 +308.2812206783126 + 20 +178.6442261160849 + 10 +314.3812206783125 + 20 +178.6442261160849 + 10 +314.5933527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +5A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +186.9267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +186.9267504342584 + 31 +0.0 + 0 +LINE + 5 +5A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +179.2167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +179.2167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +187.7114067867879 + 10 +328.1012206783126 + 20 +187.499274752432 + 10 +334.2012206783125 + 20 +187.499274752432 + 10 +334.4133527126685 + 20 +187.7114067867879 + 0 +LWPOLYLINE + 5 +5A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +178.4320940817289 + 10 +328.1012206783126 + 20 +178.6442261160849 + 10 +334.2012206783125 + 20 +178.6442261160849 + 10 +334.4133527126685 + 20 +178.4320940817289 + 0 +LINE + 5 +5A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +177.9114067867879 + 10 +169.5412206783126 + 20 +177.699274752432 + 10 +175.6412206783125 + 20 +177.699274752432 + 10 +175.8533527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +168.6320940817289 + 10 +169.5412206783126 + 20 +168.8442261160849 + 10 +175.6412206783125 + 20 +168.8442261160849 + 10 +175.8533527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +177.9114067867879 + 10 +189.3612206783126 + 20 +177.699274752432 + 10 +195.4612206783125 + 20 +177.699274752432 + 10 +195.6733527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +168.6320940817289 + 10 +189.3612206783126 + 20 +168.8442261160849 + 10 +195.4612206783125 + 20 +168.8442261160849 + 10 +195.6733527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +177.9114067867879 + 10 +209.1812206783126 + 20 +177.699274752432 + 10 +215.2812206783125 + 20 +177.699274752432 + 10 +215.4933527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +168.6320940817289 + 10 +209.1812206783126 + 20 +168.8442261160849 + 10 +215.2812206783125 + 20 +168.8442261160849 + 10 +215.4933527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +177.9114067867879 + 10 +229.0012206783126 + 20 +177.699274752432 + 10 +235.1012206783125 + 20 +177.699274752432 + 10 +235.3133527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +168.6320940817289 + 10 +229.0012206783126 + 20 +168.8442261160849 + 10 +235.1012206783125 + 20 +168.8442261160849 + 10 +235.3133527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +177.9114067867879 + 10 +248.8212206783126 + 20 +177.699274752432 + 10 +254.9212206783125 + 20 +177.699274752432 + 10 +255.1333527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +168.6320940817289 + 10 +248.8212206783126 + 20 +168.8442261160849 + 10 +254.9212206783125 + 20 +168.8442261160849 + 10 +255.1333527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +177.9114067867879 + 10 +268.6412206783126 + 20 +177.699274752432 + 10 +274.7412206783125 + 20 +177.699274752432 + 10 +274.9533527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +168.6320940817289 + 10 +268.6412206783126 + 20 +168.8442261160849 + 10 +274.7412206783125 + 20 +168.8442261160849 + 10 +274.9533527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +177.9114067867879 + 10 +288.4612206783126 + 20 +177.699274752432 + 10 +294.5612206783125 + 20 +177.699274752432 + 10 +294.7733527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +168.6320940817289 + 10 +288.4612206783126 + 20 +168.8442261160849 + 10 +294.5612206783125 + 20 +168.8442261160849 + 10 +294.7733527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +177.9114067867879 + 10 +308.2812206783126 + 20 +177.699274752432 + 10 +314.3812206783125 + 20 +177.699274752432 + 10 +314.5933527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +168.6320940817289 + 10 +308.2812206783126 + 20 +168.8442261160849 + 10 +314.3812206783125 + 20 +168.8442261160849 + 10 +314.5933527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +177.1267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +177.1267504342584 + 31 +0.0 + 0 +LINE + 5 +5C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +169.4167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +169.4167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +177.9114067867879 + 10 +328.1012206783126 + 20 +177.699274752432 + 10 +334.2012206783125 + 20 +177.699274752432 + 10 +334.4133527126685 + 20 +177.9114067867879 + 0 +LWPOLYLINE + 5 +5C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +168.6320940817289 + 10 +328.1012206783126 + 20 +168.8442261160849 + 10 +334.2012206783125 + 20 +168.8442261160849 + 10 +334.4133527126685 + 20 +168.6320940817289 + 0 +LINE + 5 +5CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +168.1114067867879 + 10 +169.5412206783126 + 20 +167.899274752432 + 10 +175.6412206783125 + 20 +167.899274752432 + 10 +175.8533527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +158.8320940817289 + 10 +169.5412206783126 + 20 +159.0442261160849 + 10 +175.6412206783125 + 20 +159.0442261160849 + 10 +175.8533527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +168.1114067867879 + 10 +189.3612206783126 + 20 +167.899274752432 + 10 +195.4612206783125 + 20 +167.899274752432 + 10 +195.6733527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439567 + 20 +158.8320940817289 + 10 +189.3612206783126 + 20 +159.0442261160849 + 10 +195.4612206783125 + 20 +159.0442261160849 + 10 +195.6733527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +168.1114067867879 + 10 +209.1812206783126 + 20 +167.899274752432 + 10 +215.2812206783125 + 20 +167.899274752432 + 10 +215.4933527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439567 + 20 +158.8320940817289 + 10 +209.1812206783126 + 20 +159.0442261160849 + 10 +215.2812206783125 + 20 +159.0442261160849 + 10 +215.4933527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +168.1114067867879 + 10 +229.0012206783126 + 20 +167.899274752432 + 10 +235.1012206783125 + 20 +167.899274752432 + 10 +235.3133527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439567 + 20 +158.8320940817289 + 10 +229.0012206783126 + 20 +159.0442261160849 + 10 +235.1012206783125 + 20 +159.0442261160849 + 10 +235.3133527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +168.1114067867879 + 10 +248.8212206783126 + 20 +167.899274752432 + 10 +254.9212206783125 + 20 +167.899274752432 + 10 +255.1333527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439567 + 20 +158.8320940817289 + 10 +248.8212206783126 + 20 +159.0442261160849 + 10 +254.9212206783125 + 20 +159.0442261160849 + 10 +255.1333527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +168.1114067867879 + 10 +268.6412206783126 + 20 +167.899274752432 + 10 +274.7412206783125 + 20 +167.899274752432 + 10 +274.9533527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439567 + 20 +158.8320940817289 + 10 +268.6412206783126 + 20 +159.0442261160849 + 10 +274.7412206783125 + 20 +159.0442261160849 + 10 +274.9533527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +168.1114067867879 + 10 +288.4612206783126 + 20 +167.899274752432 + 10 +294.5612206783125 + 20 +167.899274752432 + 10 +294.7733527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439567 + 20 +158.8320940817289 + 10 +288.4612206783126 + 20 +159.0442261160849 + 10 +294.5612206783125 + 20 +159.0442261160849 + 10 +294.7733527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +168.1114067867879 + 10 +308.2812206783126 + 20 +167.899274752432 + 10 +314.3812206783125 + 20 +167.899274752432 + 10 +314.5933527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439567 + 20 +158.8320940817289 + 10 +308.2812206783126 + 20 +159.0442261160849 + 10 +314.3812206783125 + 20 +159.0442261160849 + 10 +314.5933527126685 + 20 +158.8320940817289 + 0 +LINE + 5 +5EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +167.3267504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +167.3267504342584 + 31 +0.0 + 0 +LINE + 5 +5EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550942 + 20 +159.6167504342584 + 30 +0.0 + 11 +320.5312838197172 + 21 +159.6167504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +5EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +168.1114067867879 + 10 +328.1012206783126 + 20 +167.899274752432 + 10 +334.2012206783125 + 20 +167.899274752432 + 10 +334.4133527126685 + 20 +168.1114067867879 + 0 +LWPOLYLINE + 5 +5ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439567 + 20 +158.8320940817289 + 10 +328.1012206783126 + 20 +159.0442261160849 + 10 +334.2012206783125 + 20 +159.0442261160849 + 10 +334.4133527126685 + 20 +158.8320940817289 + 0 +CIRCLE + 5 +5EF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +160.0712206783126 + 20 +256.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/D979.E219.dxf b/LaiPuLaser/TempMarkData/D979.E219.dxf new file mode 100644 index 0000000..30f98cd --- /dev/null +++ b/LaiPuLaser/TempMarkData/D979.E219.dxf @@ -0,0 +1,17140 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +-0.0000000000000223 + 30 +0.0 + 9 +$EXTMAX + 10 +335.7788834343608 + 20 +266.1014067867879 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458928.487788819 + 9 +$TDUCREATE + 40 +2458928.154455486 + 9 +$TDUPDATE + 40 +2458928.487788819 + 9 +$TDUUPDATE + 40 +2458928.154455486 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +466 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +246.7915721926454 + 22 +190.6426301190823 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +219.6196751030719 + 41 +2.454964509201898 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +160.0712206783126 + 20 +256.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +160.0712206783126 + 20 +158.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +318.6312206783126 + 20 +158.5717504342585 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +265.3167504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +257.6267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +266.1014067867879 + 10 +169.5412206783126 + 20 +265.889274752432 + 10 +175.6412206783125 + 20 +265.889274752432 + 10 +175.8533527126685 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +256.8420940817289 + 10 +169.5412206783126 + 20 +257.0542261160849 + 10 +175.6412206783125 + 20 +257.0542261160849 + 10 +175.8533527126685 + 20 +256.8420940817289 + 0 +LWPOLYLINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +266.1014067867879 + 10 +189.3612206783126 + 20 +265.889274752432 + 10 +195.4612206783125 + 20 +265.889274752432 + 10 +195.6733527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +256.8420940817289 + 10 +189.3612206783126 + 20 +257.0542261160849 + 10 +195.4612206783125 + 20 +257.0542261160849 + 10 +195.6733527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +265.3167504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +257.6267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +266.1014067867879 + 10 +209.1812206783126 + 20 +265.889274752432 + 10 +215.2812206783125 + 20 +265.889274752432 + 10 +215.4933527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +256.8420940817289 + 10 +209.1812206783126 + 20 +257.0542261160849 + 10 +215.2812206783125 + 20 +257.0542261160849 + 10 +215.4933527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +265.3167504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +257.6267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +266.1014067867879 + 10 +229.0012206783126 + 20 +265.889274752432 + 10 +235.1012206783125 + 20 +265.889274752432 + 10 +235.3133527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +256.8420940817289 + 10 +229.0012206783126 + 20 +257.0542261160849 + 10 +235.1012206783125 + 20 +257.0542261160849 + 10 +235.3133527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +265.3167504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +257.6267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +266.1014067867879 + 10 +248.8212206783126 + 20 +265.889274752432 + 10 +254.9212206783125 + 20 +265.889274752432 + 10 +255.1333527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +256.8420940817289 + 10 +248.8212206783126 + 20 +257.0542261160849 + 10 +254.9212206783125 + 20 +257.0542261160849 + 10 +255.1333527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +265.3167504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +257.6267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +266.1014067867879 + 10 +268.6412206783126 + 20 +265.889274752432 + 10 +274.7412206783125 + 20 +265.889274752432 + 10 +274.9533527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +256.8420940817289 + 10 +268.6412206783126 + 20 +257.0542261160849 + 10 +274.7412206783125 + 20 +257.0542261160849 + 10 +274.9533527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +265.3167504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +257.6267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +266.1014067867879 + 10 +288.4612206783125 + 20 +265.889274752432 + 10 +294.5612206783125 + 20 +265.889274752432 + 10 +294.7733527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +256.8420940817289 + 10 +288.4612206783125 + 20 +257.0542261160849 + 10 +294.5612206783125 + 20 +257.0542261160849 + 10 +294.7733527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +265.3167504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +257.6267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +266.1014067867879 + 10 +308.2812206783126 + 20 +265.889274752432 + 10 +314.3812206783124 + 20 +265.889274752432 + 10 +314.5933527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +256.8420940817289 + 10 +308.2812206783126 + 20 +257.0542261160849 + 10 +314.3812206783124 + 20 +257.0542261160849 + 10 +314.5933527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +265.3167504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +257.6267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +266.1014067867879 + 10 +328.1012206783125 + 20 +265.889274752432 + 10 +334.2012206783124 + 20 +265.889274752432 + 10 +334.4133527126684 + 20 +266.1014067867879 + 0 +LWPOLYLINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +256.8420940817289 + 10 +328.1012206783125 + 20 +257.0542261160849 + 10 +334.2012206783124 + 20 +257.0542261160849 + 10 +334.4133527126684 + 20 +256.8420940817289 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +265.3167504342584 + 30 +0.0 + 11 +320.5312838197171 + 21 +265.3167504342584 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +257.6267504342584 + 30 +0.0 + 11 +320.5312838197171 + 21 +257.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +256.301406786788 + 10 +169.5412206783126 + 20 +256.089274752432 + 10 +175.6412206783125 + 20 +256.089274752432 + 10 +175.8533527126685 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +247.0420940817289 + 10 +169.5412206783126 + 20 +247.2542261160849 + 10 +175.6412206783125 + 20 +247.2542261160849 + 10 +175.8533527126685 + 20 +247.0420940817289 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +255.5167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +247.8267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +256.301406786788 + 10 +189.3612206783126 + 20 +256.089274752432 + 10 +195.4612206783125 + 20 +256.089274752432 + 10 +195.6733527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +247.0420940817289 + 10 +189.3612206783126 + 20 +247.2542261160849 + 10 +195.4612206783125 + 20 +247.2542261160849 + 10 +195.6733527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +255.5167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +247.8267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +256.301406786788 + 10 +209.1812206783126 + 20 +256.089274752432 + 10 +215.2812206783125 + 20 +256.089274752432 + 10 +215.4933527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +247.0420940817289 + 10 +209.1812206783126 + 20 +247.2542261160849 + 10 +215.2812206783125 + 20 +247.2542261160849 + 10 +215.4933527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +255.5167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +247.8267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +256.301406786788 + 10 +229.0012206783126 + 20 +256.089274752432 + 10 +235.1012206783125 + 20 +256.089274752432 + 10 +235.3133527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +247.0420940817289 + 10 +229.0012206783126 + 20 +247.2542261160849 + 10 +235.1012206783125 + 20 +247.2542261160849 + 10 +235.3133527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +255.5167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +247.8267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +256.301406786788 + 10 +248.8212206783126 + 20 +256.089274752432 + 10 +254.9212206783125 + 20 +256.089274752432 + 10 +255.1333527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +247.0420940817289 + 10 +248.8212206783126 + 20 +247.2542261160849 + 10 +254.9212206783125 + 20 +247.2542261160849 + 10 +255.1333527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +255.5167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +247.8267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +256.301406786788 + 10 +268.6412206783126 + 20 +256.089274752432 + 10 +274.7412206783125 + 20 +256.089274752432 + 10 +274.9533527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +247.0420940817289 + 10 +268.6412206783126 + 20 +247.2542261160849 + 10 +274.7412206783125 + 20 +247.2542261160849 + 10 +274.9533527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +255.5167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +247.8267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +256.301406786788 + 10 +288.4612206783125 + 20 +256.089274752432 + 10 +294.5612206783125 + 20 +256.089274752432 + 10 +294.7733527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +247.0420940817289 + 10 +288.4612206783125 + 20 +247.2542261160849 + 10 +294.5612206783125 + 20 +247.2542261160849 + 10 +294.7733527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +255.5167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +247.8267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +256.301406786788 + 10 +308.2812206783126 + 20 +256.089274752432 + 10 +314.3812206783124 + 20 +256.089274752432 + 10 +314.5933527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +247.0420940817289 + 10 +308.2812206783126 + 20 +247.2542261160849 + 10 +314.3812206783124 + 20 +247.2542261160849 + 10 +314.5933527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +255.5167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +247.8267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +256.301406786788 + 10 +328.1012206783125 + 20 +256.089274752432 + 10 +334.2012206783124 + 20 +256.089274752432 + 10 +334.4133527126684 + 20 +256.301406786788 + 0 +LWPOLYLINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +247.0420940817289 + 10 +328.1012206783125 + 20 +247.2542261160849 + 10 +334.2012206783124 + 20 +247.2542261160849 + 10 +334.4133527126684 + 20 +247.0420940817289 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +255.5167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +255.5167504342585 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +247.8267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +247.8267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +246.501406786788 + 10 +169.5412206783126 + 20 +246.289274752432 + 10 +175.6412206783125 + 20 +246.289274752432 + 10 +175.8533527126685 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +237.242094081729 + 10 +169.5412206783126 + 20 +237.4542261160849 + 10 +175.6412206783125 + 20 +237.4542261160849 + 10 +175.8533527126685 + 20 +237.242094081729 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +245.7167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +238.0267504342584 + 30 +0.0 + 11 +161.9712838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +246.501406786788 + 10 +189.3612206783126 + 20 +246.289274752432 + 10 +195.4612206783125 + 20 +246.289274752432 + 10 +195.6733527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +237.242094081729 + 10 +189.3612206783126 + 20 +237.4542261160849 + 10 +195.4612206783125 + 20 +237.4542261160849 + 10 +195.6733527126684 + 20 +237.242094081729 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +245.7167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +238.0267504342584 + 30 +0.0 + 11 +181.7912838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +246.501406786788 + 10 +209.1812206783126 + 20 +246.289274752432 + 10 +215.2812206783125 + 20 +246.289274752432 + 10 +215.4933527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +237.242094081729 + 10 +209.1812206783126 + 20 +237.4542261160849 + 10 +215.2812206783125 + 20 +237.4542261160849 + 10 +215.4933527126684 + 20 +237.242094081729 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +245.7167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +238.0267504342584 + 30 +0.0 + 11 +201.6112838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +246.501406786788 + 10 +229.0012206783126 + 20 +246.289274752432 + 10 +235.1012206783125 + 20 +246.289274752432 + 10 +235.3133527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +237.242094081729 + 10 +229.0012206783126 + 20 +237.4542261160849 + 10 +235.1012206783125 + 20 +237.4542261160849 + 10 +235.3133527126684 + 20 +237.242094081729 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +245.7167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +238.0267504342584 + 30 +0.0 + 11 +221.4312838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +246.501406786788 + 10 +248.8212206783126 + 20 +246.289274752432 + 10 +254.9212206783125 + 20 +246.289274752432 + 10 +255.1333527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +237.242094081729 + 10 +248.8212206783126 + 20 +237.4542261160849 + 10 +254.9212206783125 + 20 +237.4542261160849 + 10 +255.1333527126684 + 20 +237.242094081729 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +245.7167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +238.0267504342584 + 30 +0.0 + 11 +241.2512838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +246.501406786788 + 10 +268.6412206783126 + 20 +246.289274752432 + 10 +274.7412206783125 + 20 +246.289274752432 + 10 +274.9533527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +237.242094081729 + 10 +268.6412206783126 + 20 +237.4542261160849 + 10 +274.7412206783125 + 20 +237.4542261160849 + 10 +274.9533527126684 + 20 +237.242094081729 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +245.7167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +238.0267504342584 + 30 +0.0 + 11 +261.0712838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +246.501406786788 + 10 +288.4612206783125 + 20 +246.289274752432 + 10 +294.5612206783125 + 20 +246.289274752432 + 10 +294.7733527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +237.242094081729 + 10 +288.4612206783125 + 20 +237.4542261160849 + 10 +294.5612206783125 + 20 +237.4542261160849 + 10 +294.7733527126684 + 20 +237.242094081729 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +245.7167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +238.0267504342584 + 30 +0.0 + 11 +280.8912838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +246.501406786788 + 10 +308.2812206783126 + 20 +246.289274752432 + 10 +314.3812206783124 + 20 +246.289274752432 + 10 +314.5933527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +237.242094081729 + 10 +308.2812206783126 + 20 +237.4542261160849 + 10 +314.3812206783124 + 20 +237.4542261160849 + 10 +314.5933527126684 + 20 +237.242094081729 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +245.7167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +238.0267504342584 + 30 +0.0 + 11 +300.7112838197172 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +246.501406786788 + 10 +328.1012206783125 + 20 +246.289274752432 + 10 +334.2012206783124 + 20 +246.289274752432 + 10 +334.4133527126684 + 20 +246.501406786788 + 0 +LWPOLYLINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +237.242094081729 + 10 +328.1012206783125 + 20 +237.4542261160849 + 10 +334.2012206783124 + 20 +237.4542261160849 + 10 +334.4133527126684 + 20 +237.242094081729 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +245.7167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +245.7167504342585 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +238.0267504342584 + 30 +0.0 + 11 +320.5312838197171 + 21 +238.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +236.701406786788 + 10 +169.5412206783126 + 20 +236.489274752432 + 10 +175.6412206783125 + 20 +236.489274752432 + 10 +175.8533527126685 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +227.442094081729 + 10 +169.5412206783126 + 20 +227.6542261160849 + 10 +175.6412206783125 + 20 +227.6542261160849 + 10 +175.8533527126685 + 20 +227.442094081729 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +235.9167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +228.2267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +236.701406786788 + 10 +189.3612206783126 + 20 +236.489274752432 + 10 +195.4612206783125 + 20 +236.489274752432 + 10 +195.6733527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +227.442094081729 + 10 +189.3612206783126 + 20 +227.6542261160849 + 10 +195.4612206783125 + 20 +227.6542261160849 + 10 +195.6733527126684 + 20 +227.442094081729 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +235.9167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +228.2267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +236.701406786788 + 10 +209.1812206783126 + 20 +236.489274752432 + 10 +215.2812206783125 + 20 +236.489274752432 + 10 +215.4933527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +227.442094081729 + 10 +209.1812206783126 + 20 +227.6542261160849 + 10 +215.2812206783125 + 20 +227.6542261160849 + 10 +215.4933527126684 + 20 +227.442094081729 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +235.9167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +228.2267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +236.701406786788 + 10 +229.0012206783126 + 20 +236.489274752432 + 10 +235.1012206783125 + 20 +236.489274752432 + 10 +235.3133527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +227.442094081729 + 10 +229.0012206783126 + 20 +227.6542261160849 + 10 +235.1012206783125 + 20 +227.6542261160849 + 10 +235.3133527126684 + 20 +227.442094081729 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +235.9167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +228.2267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +236.701406786788 + 10 +248.8212206783126 + 20 +236.489274752432 + 10 +254.9212206783125 + 20 +236.489274752432 + 10 +255.1333527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +227.442094081729 + 10 +248.8212206783126 + 20 +227.6542261160849 + 10 +254.9212206783125 + 20 +227.6542261160849 + 10 +255.1333527126684 + 20 +227.442094081729 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +235.9167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +228.2267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +236.701406786788 + 10 +268.6412206783126 + 20 +236.489274752432 + 10 +274.7412206783125 + 20 +236.489274752432 + 10 +274.9533527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +227.442094081729 + 10 +268.6412206783126 + 20 +227.6542261160849 + 10 +274.7412206783125 + 20 +227.6542261160849 + 10 +274.9533527126684 + 20 +227.442094081729 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +235.9167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +228.2267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +236.701406786788 + 10 +288.4612206783125 + 20 +236.489274752432 + 10 +294.5612206783125 + 20 +236.489274752432 + 10 +294.7733527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +227.442094081729 + 10 +288.4612206783125 + 20 +227.6542261160849 + 10 +294.5612206783125 + 20 +227.6542261160849 + 10 +294.7733527126684 + 20 +227.442094081729 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +235.9167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +228.2267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +236.701406786788 + 10 +308.2812206783126 + 20 +236.489274752432 + 10 +314.3812206783124 + 20 +236.489274752432 + 10 +314.5933527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +227.442094081729 + 10 +308.2812206783126 + 20 +227.6542261160849 + 10 +314.3812206783124 + 20 +227.6542261160849 + 10 +314.5933527126684 + 20 +227.442094081729 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +235.9167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +228.2267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +236.701406786788 + 10 +328.1012206783125 + 20 +236.489274752432 + 10 +334.2012206783124 + 20 +236.489274752432 + 10 +334.4133527126684 + 20 +236.701406786788 + 0 +LWPOLYLINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +227.442094081729 + 10 +328.1012206783125 + 20 +227.6542261160849 + 10 +334.2012206783124 + 20 +227.6542261160849 + 10 +334.4133527126684 + 20 +227.442094081729 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +235.9167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +235.9167504342585 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +228.2267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +228.2267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +226.901406786788 + 10 +169.5412206783126 + 20 +226.689274752432 + 10 +175.6412206783125 + 20 +226.689274752432 + 10 +175.8533527126685 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +217.6420940817289 + 10 +169.5412206783126 + 20 +217.8542261160849 + 10 +175.6412206783125 + 20 +217.8542261160849 + 10 +175.8533527126685 + 20 +217.6420940817289 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +226.1167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +218.4267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +226.901406786788 + 10 +189.3612206783126 + 20 +226.689274752432 + 10 +195.4612206783125 + 20 +226.689274752432 + 10 +195.6733527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +217.6420940817289 + 10 +189.3612206783126 + 20 +217.8542261160849 + 10 +195.4612206783125 + 20 +217.8542261160849 + 10 +195.6733527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +226.1167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +218.4267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +226.901406786788 + 10 +209.1812206783126 + 20 +226.689274752432 + 10 +215.2812206783125 + 20 +226.689274752432 + 10 +215.4933527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +217.6420940817289 + 10 +209.1812206783126 + 20 +217.8542261160849 + 10 +215.2812206783125 + 20 +217.8542261160849 + 10 +215.4933527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +226.1167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +218.4267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +226.901406786788 + 10 +229.0012206783126 + 20 +226.689274752432 + 10 +235.1012206783125 + 20 +226.689274752432 + 10 +235.3133527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +217.6420940817289 + 10 +229.0012206783126 + 20 +217.8542261160849 + 10 +235.1012206783125 + 20 +217.8542261160849 + 10 +235.3133527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +226.1167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +218.4267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +226.901406786788 + 10 +248.8212206783126 + 20 +226.689274752432 + 10 +254.9212206783125 + 20 +226.689274752432 + 10 +255.1333527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +217.6420940817289 + 10 +248.8212206783126 + 20 +217.8542261160849 + 10 +254.9212206783125 + 20 +217.8542261160849 + 10 +255.1333527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +226.1167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +218.4267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +226.901406786788 + 10 +268.6412206783126 + 20 +226.689274752432 + 10 +274.7412206783125 + 20 +226.689274752432 + 10 +274.9533527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +217.6420940817289 + 10 +268.6412206783126 + 20 +217.8542261160849 + 10 +274.7412206783125 + 20 +217.8542261160849 + 10 +274.9533527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +226.1167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +218.4267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +226.901406786788 + 10 +288.4612206783125 + 20 +226.689274752432 + 10 +294.5612206783125 + 20 +226.689274752432 + 10 +294.7733527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +217.6420940817289 + 10 +288.4612206783125 + 20 +217.8542261160849 + 10 +294.5612206783125 + 20 +217.8542261160849 + 10 +294.7733527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +226.1167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +218.4267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +226.901406786788 + 10 +308.2812206783126 + 20 +226.689274752432 + 10 +314.3812206783124 + 20 +226.689274752432 + 10 +314.5933527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +217.6420940817289 + 10 +308.2812206783126 + 20 +217.8542261160849 + 10 +314.3812206783124 + 20 +217.8542261160849 + 10 +314.5933527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +226.1167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +218.4267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +226.901406786788 + 10 +328.1012206783125 + 20 +226.689274752432 + 10 +334.2012206783124 + 20 +226.689274752432 + 10 +334.4133527126684 + 20 +226.901406786788 + 0 +LWPOLYLINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +217.6420940817289 + 10 +328.1012206783125 + 20 +217.8542261160849 + 10 +334.2012206783124 + 20 +217.8542261160849 + 10 +334.4133527126684 + 20 +217.6420940817289 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +226.1167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +226.1167504342585 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +218.4267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +218.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +217.101406786788 + 10 +169.5412206783126 + 20 +216.889274752432 + 10 +175.6412206783125 + 20 +216.889274752432 + 10 +175.8533527126685 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +207.842094081729 + 10 +169.5412206783126 + 20 +208.0542261160849 + 10 +175.6412206783125 + 20 +208.0542261160849 + 10 +175.8533527126685 + 20 +207.842094081729 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +216.3167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +208.6267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +217.101406786788 + 10 +189.3612206783126 + 20 +216.889274752432 + 10 +195.4612206783125 + 20 +216.889274752432 + 10 +195.6733527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +207.842094081729 + 10 +189.3612206783126 + 20 +208.0542261160849 + 10 +195.4612206783125 + 20 +208.0542261160849 + 10 +195.6733527126684 + 20 +207.842094081729 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +216.3167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +208.6267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +217.101406786788 + 10 +209.1812206783126 + 20 +216.889274752432 + 10 +215.2812206783125 + 20 +216.889274752432 + 10 +215.4933527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +207.842094081729 + 10 +209.1812206783126 + 20 +208.0542261160849 + 10 +215.2812206783125 + 20 +208.0542261160849 + 10 +215.4933527126684 + 20 +207.842094081729 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +216.3167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +208.6267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +217.101406786788 + 10 +229.0012206783126 + 20 +216.889274752432 + 10 +235.1012206783125 + 20 +216.889274752432 + 10 +235.3133527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +207.842094081729 + 10 +229.0012206783126 + 20 +208.0542261160849 + 10 +235.1012206783125 + 20 +208.0542261160849 + 10 +235.3133527126684 + 20 +207.842094081729 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +216.3167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +208.6267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +217.101406786788 + 10 +248.8212206783126 + 20 +216.889274752432 + 10 +254.9212206783125 + 20 +216.889274752432 + 10 +255.1333527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +207.842094081729 + 10 +248.8212206783126 + 20 +208.0542261160849 + 10 +254.9212206783125 + 20 +208.0542261160849 + 10 +255.1333527126684 + 20 +207.842094081729 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +216.3167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +208.6267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +217.101406786788 + 10 +268.6412206783126 + 20 +216.889274752432 + 10 +274.7412206783125 + 20 +216.889274752432 + 10 +274.9533527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +207.842094081729 + 10 +268.6412206783126 + 20 +208.0542261160849 + 10 +274.7412206783125 + 20 +208.0542261160849 + 10 +274.9533527126684 + 20 +207.842094081729 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +216.3167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +208.6267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +217.101406786788 + 10 +288.4612206783125 + 20 +216.889274752432 + 10 +294.5612206783125 + 20 +216.889274752432 + 10 +294.7733527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +207.842094081729 + 10 +288.4612206783125 + 20 +208.0542261160849 + 10 +294.5612206783125 + 20 +208.0542261160849 + 10 +294.7733527126684 + 20 +207.842094081729 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +216.3167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +208.6267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +217.101406786788 + 10 +308.2812206783126 + 20 +216.889274752432 + 10 +314.3812206783124 + 20 +216.889274752432 + 10 +314.5933527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +207.842094081729 + 10 +308.2812206783126 + 20 +208.0542261160849 + 10 +314.3812206783124 + 20 +208.0542261160849 + 10 +314.5933527126684 + 20 +207.842094081729 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +216.3167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +208.6267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +217.101406786788 + 10 +328.1012206783125 + 20 +216.889274752432 + 10 +334.2012206783124 + 20 +216.889274752432 + 10 +334.4133527126684 + 20 +217.101406786788 + 0 +LWPOLYLINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +207.842094081729 + 10 +328.1012206783125 + 20 +208.0542261160849 + 10 +334.2012206783124 + 20 +208.0542261160849 + 10 +334.4133527126684 + 20 +207.842094081729 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +216.3167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +216.3167504342585 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +208.6267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +208.6267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +207.301406786788 + 10 +169.5412206783126 + 20 +207.089274752432 + 10 +175.6412206783125 + 20 +207.089274752432 + 10 +175.8533527126685 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +198.042094081729 + 10 +169.5412206783126 + 20 +198.2542261160849 + 10 +175.6412206783125 + 20 +198.2542261160849 + 10 +175.8533527126685 + 20 +198.042094081729 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +206.5167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +198.8267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +207.301406786788 + 10 +189.3612206783126 + 20 +207.089274752432 + 10 +195.4612206783125 + 20 +207.089274752432 + 10 +195.6733527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +198.042094081729 + 10 +189.3612206783126 + 20 +198.2542261160849 + 10 +195.4612206783125 + 20 +198.2542261160849 + 10 +195.6733527126684 + 20 +198.042094081729 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +206.5167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +198.8267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +207.301406786788 + 10 +209.1812206783126 + 20 +207.089274752432 + 10 +215.2812206783125 + 20 +207.089274752432 + 10 +215.4933527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +198.042094081729 + 10 +209.1812206783126 + 20 +198.2542261160849 + 10 +215.2812206783125 + 20 +198.2542261160849 + 10 +215.4933527126684 + 20 +198.042094081729 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +206.5167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +198.8267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +207.301406786788 + 10 +229.0012206783126 + 20 +207.089274752432 + 10 +235.1012206783125 + 20 +207.089274752432 + 10 +235.3133527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +198.042094081729 + 10 +229.0012206783126 + 20 +198.2542261160849 + 10 +235.1012206783125 + 20 +198.2542261160849 + 10 +235.3133527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +206.5167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +198.8267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +207.301406786788 + 10 +248.8212206783126 + 20 +207.089274752432 + 10 +254.9212206783125 + 20 +207.089274752432 + 10 +255.1333527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +198.042094081729 + 10 +248.8212206783126 + 20 +198.2542261160849 + 10 +254.9212206783125 + 20 +198.2542261160849 + 10 +255.1333527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +206.5167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +198.8267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +207.301406786788 + 10 +268.6412206783126 + 20 +207.089274752432 + 10 +274.7412206783125 + 20 +207.089274752432 + 10 +274.9533527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +198.042094081729 + 10 +268.6412206783126 + 20 +198.2542261160849 + 10 +274.7412206783125 + 20 +198.2542261160849 + 10 +274.9533527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +206.5167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +198.8267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +207.301406786788 + 10 +288.4612206783125 + 20 +207.089274752432 + 10 +294.5612206783125 + 20 +207.089274752432 + 10 +294.7733527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +198.042094081729 + 10 +288.4612206783125 + 20 +198.2542261160849 + 10 +294.5612206783125 + 20 +198.2542261160849 + 10 +294.7733527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +206.5167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +198.8267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +207.301406786788 + 10 +308.2812206783126 + 20 +207.089274752432 + 10 +314.3812206783124 + 20 +207.089274752432 + 10 +314.5933527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +198.042094081729 + 10 +308.2812206783126 + 20 +198.2542261160849 + 10 +314.3812206783124 + 20 +198.2542261160849 + 10 +314.5933527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +206.5167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +198.8267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +207.301406786788 + 10 +328.1012206783125 + 20 +207.089274752432 + 10 +334.2012206783124 + 20 +207.089274752432 + 10 +334.4133527126684 + 20 +207.301406786788 + 0 +LWPOLYLINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +198.042094081729 + 10 +328.1012206783125 + 20 +198.2542261160849 + 10 +334.2012206783124 + 20 +198.2542261160849 + 10 +334.4133527126684 + 20 +198.042094081729 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +206.5167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +206.5167504342585 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +198.8267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +198.8267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +197.501406786788 + 10 +169.5412206783126 + 20 +197.289274752432 + 10 +175.6412206783125 + 20 +197.289274752432 + 10 +175.8533527126685 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +188.242094081729 + 10 +169.5412206783126 + 20 +188.454226116085 + 10 +175.6412206783125 + 20 +188.4542261160849 + 10 +175.8533527126685 + 20 +188.242094081729 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +196.7167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +189.0267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +197.501406786788 + 10 +189.3612206783126 + 20 +197.289274752432 + 10 +195.4612206783125 + 20 +197.289274752432 + 10 +195.6733527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +188.242094081729 + 10 +189.3612206783126 + 20 +188.454226116085 + 10 +195.4612206783125 + 20 +188.4542261160849 + 10 +195.6733527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +196.7167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +189.0267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +197.501406786788 + 10 +209.1812206783126 + 20 +197.289274752432 + 10 +215.2812206783125 + 20 +197.289274752432 + 10 +215.4933527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +188.242094081729 + 10 +209.1812206783126 + 20 +188.454226116085 + 10 +215.2812206783125 + 20 +188.4542261160849 + 10 +215.4933527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +196.7167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +189.0267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +197.501406786788 + 10 +229.0012206783126 + 20 +197.289274752432 + 10 +235.1012206783125 + 20 +197.289274752432 + 10 +235.3133527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +188.242094081729 + 10 +229.0012206783126 + 20 +188.454226116085 + 10 +235.1012206783125 + 20 +188.4542261160849 + 10 +235.3133527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +196.7167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +189.0267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +197.501406786788 + 10 +248.8212206783126 + 20 +197.289274752432 + 10 +254.9212206783125 + 20 +197.289274752432 + 10 +255.1333527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +188.242094081729 + 10 +248.8212206783126 + 20 +188.454226116085 + 10 +254.9212206783125 + 20 +188.4542261160849 + 10 +255.1333527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +196.7167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +189.0267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +197.501406786788 + 10 +268.6412206783126 + 20 +197.289274752432 + 10 +274.7412206783125 + 20 +197.289274752432 + 10 +274.9533527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +188.242094081729 + 10 +268.6412206783126 + 20 +188.454226116085 + 10 +274.7412206783125 + 20 +188.4542261160849 + 10 +274.9533527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +196.7167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +189.0267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +197.501406786788 + 10 +288.4612206783125 + 20 +197.289274752432 + 10 +294.5612206783125 + 20 +197.289274752432 + 10 +294.7733527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +188.242094081729 + 10 +288.4612206783125 + 20 +188.454226116085 + 10 +294.5612206783125 + 20 +188.4542261160849 + 10 +294.7733527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +196.7167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +189.0267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +197.501406786788 + 10 +308.2812206783126 + 20 +197.289274752432 + 10 +314.3812206783124 + 20 +197.289274752432 + 10 +314.5933527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +188.242094081729 + 10 +308.2812206783126 + 20 +188.454226116085 + 10 +314.3812206783124 + 20 +188.4542261160849 + 10 +314.5933527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +196.7167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +189.0267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +197.501406786788 + 10 +328.1012206783125 + 20 +197.289274752432 + 10 +334.2012206783124 + 20 +197.289274752432 + 10 +334.4133527126684 + 20 +197.501406786788 + 0 +LWPOLYLINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +188.242094081729 + 10 +328.1012206783125 + 20 +188.454226116085 + 10 +334.2012206783124 + 20 +188.4542261160849 + 10 +334.4133527126684 + 20 +188.242094081729 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +196.7167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +196.7167504342585 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +189.0267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +189.0267504342584 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +187.701406786788 + 10 +169.5412206783126 + 20 +187.489274752432 + 10 +175.6412206783125 + 20 +187.489274752432 + 10 +175.8533527126685 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +178.442094081729 + 10 +169.5412206783126 + 20 +178.6542261160849 + 10 +175.6412206783125 + 20 +178.6542261160849 + 10 +175.8533527126685 + 20 +178.442094081729 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +186.9167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +179.2267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +187.701406786788 + 10 +189.3612206783126 + 20 +187.489274752432 + 10 +195.4612206783125 + 20 +187.489274752432 + 10 +195.6733527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +178.442094081729 + 10 +189.3612206783126 + 20 +178.6542261160849 + 10 +195.4612206783125 + 20 +178.6542261160849 + 10 +195.6733527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +186.9167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +179.2267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +187.701406786788 + 10 +209.1812206783126 + 20 +187.489274752432 + 10 +215.2812206783125 + 20 +187.489274752432 + 10 +215.4933527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +178.442094081729 + 10 +209.1812206783126 + 20 +178.6542261160849 + 10 +215.2812206783125 + 20 +178.6542261160849 + 10 +215.4933527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +186.9167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +179.2267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +187.701406786788 + 10 +229.0012206783126 + 20 +187.489274752432 + 10 +235.1012206783125 + 20 +187.489274752432 + 10 +235.3133527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +178.442094081729 + 10 +229.0012206783126 + 20 +178.6542261160849 + 10 +235.1012206783125 + 20 +178.6542261160849 + 10 +235.3133527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +186.9167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +179.2267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +187.701406786788 + 10 +248.8212206783126 + 20 +187.489274752432 + 10 +254.9212206783125 + 20 +187.489274752432 + 10 +255.1333527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +178.442094081729 + 10 +248.8212206783126 + 20 +178.6542261160849 + 10 +254.9212206783125 + 20 +178.6542261160849 + 10 +255.1333527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +186.9167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +179.2267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +187.701406786788 + 10 +268.6412206783126 + 20 +187.489274752432 + 10 +274.7412206783125 + 20 +187.489274752432 + 10 +274.9533527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +178.442094081729 + 10 +268.6412206783126 + 20 +178.6542261160849 + 10 +274.7412206783125 + 20 +178.6542261160849 + 10 +274.9533527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +186.9167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +179.2267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +187.701406786788 + 10 +288.4612206783125 + 20 +187.489274752432 + 10 +294.5612206783125 + 20 +187.489274752432 + 10 +294.7733527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +178.442094081729 + 10 +288.4612206783125 + 20 +178.6542261160849 + 10 +294.5612206783125 + 20 +178.6542261160849 + 10 +294.7733527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +186.9167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +179.2267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +187.701406786788 + 10 +308.2812206783126 + 20 +187.489274752432 + 10 +314.3812206783124 + 20 +187.489274752432 + 10 +314.5933527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +178.442094081729 + 10 +308.2812206783126 + 20 +178.6542261160849 + 10 +314.3812206783124 + 20 +178.6542261160849 + 10 +314.5933527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +186.9167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +179.2267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +187.701406786788 + 10 +328.1012206783125 + 20 +187.489274752432 + 10 +334.2012206783124 + 20 +187.489274752432 + 10 +334.4133527126684 + 20 +187.701406786788 + 0 +LWPOLYLINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +178.442094081729 + 10 +328.1012206783125 + 20 +178.6542261160849 + 10 +334.2012206783124 + 20 +178.6542261160849 + 10 +334.4133527126684 + 20 +178.442094081729 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +186.9167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +186.9167504342585 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +179.2267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +179.2267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +177.901406786788 + 10 +169.5412206783126 + 20 +177.689274752432 + 10 +175.6412206783125 + 20 +177.689274752432 + 10 +175.8533527126685 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +168.642094081729 + 10 +169.5412206783126 + 20 +168.8542261160849 + 10 +175.6412206783125 + 20 +168.8542261160849 + 10 +175.8533527126685 + 20 +168.642094081729 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +177.1167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +169.4267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +177.901406786788 + 10 +189.3612206783126 + 20 +177.689274752432 + 10 +195.4612206783125 + 20 +177.689274752432 + 10 +195.6733527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +168.642094081729 + 10 +189.3612206783126 + 20 +168.8542261160849 + 10 +195.4612206783125 + 20 +168.8542261160849 + 10 +195.6733527126684 + 20 +168.642094081729 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +177.1167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +169.4267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +177.901406786788 + 10 +209.1812206783126 + 20 +177.689274752432 + 10 +215.2812206783125 + 20 +177.689274752432 + 10 +215.4933527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +168.642094081729 + 10 +209.1812206783126 + 20 +168.8542261160849 + 10 +215.2812206783125 + 20 +168.8542261160849 + 10 +215.4933527126684 + 20 +168.642094081729 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +177.1167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +169.4267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +177.901406786788 + 10 +229.0012206783126 + 20 +177.689274752432 + 10 +235.1012206783125 + 20 +177.689274752432 + 10 +235.3133527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +168.642094081729 + 10 +229.0012206783126 + 20 +168.8542261160849 + 10 +235.1012206783125 + 20 +168.8542261160849 + 10 +235.3133527126684 + 20 +168.642094081729 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +177.1167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +169.4267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +177.901406786788 + 10 +248.8212206783126 + 20 +177.689274752432 + 10 +254.9212206783125 + 20 +177.689274752432 + 10 +255.1333527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +168.642094081729 + 10 +248.8212206783126 + 20 +168.8542261160849 + 10 +254.9212206783125 + 20 +168.8542261160849 + 10 +255.1333527126684 + 20 +168.642094081729 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +177.1167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +169.4267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +177.901406786788 + 10 +268.6412206783126 + 20 +177.689274752432 + 10 +274.7412206783125 + 20 +177.689274752432 + 10 +274.9533527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +168.642094081729 + 10 +268.6412206783126 + 20 +168.8542261160849 + 10 +274.7412206783125 + 20 +168.8542261160849 + 10 +274.9533527126684 + 20 +168.642094081729 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +177.1167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +169.4267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +177.901406786788 + 10 +288.4612206783125 + 20 +177.689274752432 + 10 +294.5612206783125 + 20 +177.689274752432 + 10 +294.7733527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +168.642094081729 + 10 +288.4612206783125 + 20 +168.8542261160849 + 10 +294.5612206783125 + 20 +168.8542261160849 + 10 +294.7733527126684 + 20 +168.642094081729 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +177.1167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +169.4267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +177.901406786788 + 10 +308.2812206783126 + 20 +177.689274752432 + 10 +314.3812206783124 + 20 +177.689274752432 + 10 +314.5933527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +168.642094081729 + 10 +308.2812206783126 + 20 +168.8542261160849 + 10 +314.3812206783124 + 20 +168.8542261160849 + 10 +314.5933527126684 + 20 +168.642094081729 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +177.1167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +169.4267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +177.901406786788 + 10 +328.1012206783125 + 20 +177.689274752432 + 10 +334.2012206783124 + 20 +177.689274752432 + 10 +334.4133527126684 + 20 +177.901406786788 + 0 +LWPOLYLINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +168.642094081729 + 10 +328.1012206783125 + 20 +168.8542261160849 + 10 +334.2012206783124 + 20 +168.8542261160849 + 10 +334.4133527126684 + 20 +168.642094081729 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +177.1167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +177.1167504342585 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +169.4267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +169.4267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +168.101406786788 + 10 +169.5412206783126 + 20 +167.889274752432 + 10 +175.6412206783125 + 20 +167.889274752432 + 10 +175.8533527126685 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.3290886439567 + 20 +158.842094081729 + 10 +169.5412206783126 + 20 +159.0542261160849 + 10 +175.6412206783125 + 20 +159.0542261160849 + 10 +175.8533527126685 + 20 +158.842094081729 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +167.3167504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +158.1425241550942 + 20 +159.6267504342585 + 30 +0.0 + 11 +161.9712838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +168.101406786788 + 10 +189.3612206783126 + 20 +167.889274752432 + 10 +195.4612206783125 + 20 +167.889274752432 + 10 +195.6733527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +189.1490886439566 + 20 +158.842094081729 + 10 +189.3612206783126 + 20 +159.0542261160849 + 10 +195.4612206783125 + 20 +159.0542261160849 + 10 +195.6733527126684 + 20 +158.842094081729 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +167.3167504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +177.9625241550942 + 20 +159.6267504342585 + 30 +0.0 + 11 +181.7912838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +168.101406786788 + 10 +209.1812206783126 + 20 +167.889274752432 + 10 +215.2812206783125 + 20 +167.889274752432 + 10 +215.4933527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +208.9690886439566 + 20 +158.842094081729 + 10 +209.1812206783126 + 20 +159.0542261160849 + 10 +215.2812206783125 + 20 +159.0542261160849 + 10 +215.4933527126684 + 20 +158.842094081729 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +167.3167504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +197.7825241550942 + 20 +159.6267504342585 + 30 +0.0 + 11 +201.6112838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +168.101406786788 + 10 +229.0012206783126 + 20 +167.889274752432 + 10 +235.1012206783125 + 20 +167.889274752432 + 10 +235.3133527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +228.7890886439566 + 20 +158.842094081729 + 10 +229.0012206783126 + 20 +159.0542261160849 + 10 +235.1012206783125 + 20 +159.0542261160849 + 10 +235.3133527126684 + 20 +158.842094081729 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +167.3167504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +217.6025241550942 + 20 +159.6267504342585 + 30 +0.0 + 11 +221.4312838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +168.101406786788 + 10 +248.8212206783126 + 20 +167.889274752432 + 10 +254.9212206783125 + 20 +167.889274752432 + 10 +255.1333527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.6090886439566 + 20 +158.842094081729 + 10 +248.8212206783126 + 20 +159.0542261160849 + 10 +254.9212206783125 + 20 +159.0542261160849 + 10 +255.1333527126684 + 20 +158.842094081729 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +167.3167504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +237.4225241550942 + 20 +159.6267504342585 + 30 +0.0 + 11 +241.2512838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +168.101406786788 + 10 +268.6412206783126 + 20 +167.889274752432 + 10 +274.7412206783125 + 20 +167.889274752432 + 10 +274.9533527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.4290886439566 + 20 +158.842094081729 + 10 +268.6412206783126 + 20 +159.0542261160849 + 10 +274.7412206783125 + 20 +159.0542261160849 + 10 +274.9533527126684 + 20 +158.842094081729 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +167.3167504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.2425241550941 + 20 +159.6267504342585 + 30 +0.0 + 11 +261.0712838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +168.101406786788 + 10 +288.4612206783125 + 20 +167.889274752432 + 10 +294.5612206783125 + 20 +167.889274752432 + 10 +294.7733527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +288.2490886439566 + 20 +158.842094081729 + 10 +288.4612206783125 + 20 +159.0542261160849 + 10 +294.5612206783125 + 20 +159.0542261160849 + 10 +294.7733527126684 + 20 +158.842094081729 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +167.3167504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +277.0625241550941 + 20 +159.6267504342585 + 30 +0.0 + 11 +280.8912838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +168.101406786788 + 10 +308.2812206783126 + 20 +167.889274752432 + 10 +314.3812206783124 + 20 +167.889274752432 + 10 +314.5933527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +308.0690886439566 + 20 +158.842094081729 + 10 +308.2812206783126 + 20 +159.0542261160849 + 10 +314.3812206783124 + 20 +159.0542261160849 + 10 +314.5933527126684 + 20 +158.842094081729 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +167.3167504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.8825241550941 + 20 +159.6267504342585 + 30 +0.0 + 11 +300.7112838197172 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +168.101406786788 + 10 +328.1012206783125 + 20 +167.889274752432 + 10 +334.2012206783124 + 20 +167.889274752432 + 10 +334.4133527126684 + 20 +168.101406786788 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.8890886439566 + 20 +158.842094081729 + 10 +328.1012206783125 + 20 +159.0542261160849 + 10 +334.2012206783124 + 20 +159.0542261160849 + 10 +334.4133527126684 + 20 +158.842094081729 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +167.3167504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +167.3167504342585 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.7025241550941 + 20 +159.6267504342585 + 30 +0.0 + 11 +320.5312838197171 + 21 +159.6267504342585 + 31 +0.0 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +157.9390886439566 + 20 +213.7338824686144 + 10 +158.1512206783126 + 20 +213.5217504342585 + 10 +158.1512206783126 + 20 +211.4217504342585 + 10 +157.9390886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +177.2188834343608 + 20 +213.7338824686144 + 10 +177.0067514000049 + 20 +213.5217504342585 + 10 +177.0067514000049 + 20 +211.4217504342585 + 10 +177.2188834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +176.9912206783126 + 20 +212.5460494755709 + 10 +176.9912206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +177.7590886439566 + 20 +213.7338824686144 + 10 +177.9712206783126 + 20 +213.5217504342585 + 10 +177.9712206783126 + 20 +211.4217504342585 + 10 +177.7590886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +197.0388834343608 + 20 +213.7338824686144 + 10 +196.8267514000049 + 20 +213.5217504342585 + 10 +196.8267514000049 + 20 +211.4217504342585 + 10 +197.0388834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +196.8112206783126 + 20 +212.5460494755709 + 10 +196.8112206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +197.5790886439566 + 20 +213.7338824686144 + 10 +197.7912206783126 + 20 +213.5217504342585 + 10 +197.7912206783126 + 20 +211.4217504342585 + 10 +197.5790886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.8588834343608 + 20 +213.7338824686144 + 10 +216.6467514000049 + 20 +213.5217504342585 + 10 +216.6467514000049 + 20 +211.4217504342585 + 10 +216.8588834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +216.6312206783126 + 20 +212.5460494755709 + 10 +216.6312206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +217.3990886439566 + 20 +213.7338824686144 + 10 +217.6112206783126 + 20 +213.5217504342585 + 10 +217.6112206783126 + 20 +211.4217504342585 + 10 +217.3990886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +236.6788834343608 + 20 +213.7338824686144 + 10 +236.4667514000049 + 20 +213.5217504342585 + 10 +236.4667514000049 + 20 +211.4217504342585 + 10 +236.6788834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +236.4512206783126 + 20 +212.5460494755709 + 10 +236.4512206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +237.2190886439566 + 20 +213.7338824686144 + 10 +237.4312206783126 + 20 +213.5217504342585 + 10 +237.4312206783126 + 20 +211.4217504342585 + 10 +237.2190886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +256.4988834343608 + 20 +213.7338824686144 + 10 +256.2867514000048 + 20 +213.5217504342585 + 10 +256.2867514000048 + 20 +211.4217504342585 + 10 +256.4988834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +256.2712206783125 + 20 +212.5460494755709 + 10 +256.2712206783125 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +257.0390886439566 + 20 +213.7338824686144 + 10 +257.2512206783126 + 20 +213.5217504342585 + 10 +257.2512206783126 + 20 +211.4217504342585 + 10 +257.0390886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +276.3188834343608 + 20 +213.7338824686144 + 10 +276.1067514000048 + 20 +213.5217504342585 + 10 +276.1067514000048 + 20 +211.4217504342585 + 10 +276.3188834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +276.0912206783125 + 20 +212.5460494755709 + 10 +276.0912206783125 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +276.8590886439566 + 20 +213.7338824686144 + 10 +277.0712206783126 + 20 +213.5217504342585 + 10 +277.0712206783126 + 20 +211.4217504342585 + 10 +276.8590886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +296.1388834343608 + 20 +213.7338824686144 + 10 +295.9267514000048 + 20 +213.5217504342585 + 10 +295.9267514000048 + 20 +211.4217504342585 + 10 +296.1388834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +295.9112206783126 + 20 +212.5460494755709 + 10 +295.9112206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +296.6790886439566 + 20 +213.7338824686144 + 10 +296.8912206783126 + 20 +213.5217504342585 + 10 +296.8912206783126 + 20 +211.4217504342585 + 10 +296.6790886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +315.9588834343608 + 20 +213.7338824686144 + 10 +315.7467514000049 + 20 +213.5217504342585 + 10 +315.7467514000049 + 20 +211.4217504342585 + 10 +315.9588834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +315.7312206783126 + 20 +212.5460494755709 + 10 +315.7312206783126 + 20 +212.4717504342585 + 0 +LWPOLYLINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +316.4990886439566 + 20 +213.7338824686144 + 10 +316.7112206783125 + 20 +213.5217504342585 + 10 +316.7112206783125 + 20 +211.4217504342585 + 10 +316.4990886439566 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +335.7788834343608 + 20 +213.7338824686144 + 10 +335.5667514000049 + 20 +213.5217504342585 + 10 +335.5667514000049 + 20 +211.4217504342585 + 10 +335.7788834343608 + 20 +211.2096183999025 + 0 +LWPOLYLINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +335.5512206783126 + 20 +212.5460494755709 + 10 +335.5512206783126 + 20 +212.4717504342585 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +1 +350 +1E + 3 +2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +102 +{ACAD_XDICTIONARY +360 +464 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +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 +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 +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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +463 + 0 +DICTIONARY + 5 +464 +330 +93 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +465 + 0 +XRECORD + 5 +463 +102 +{ACAD_REACTORS +330 +E8 +102 +} +330 +E8 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +XRECORD + 5 +465 +102 +{ACAD_REACTORS +330 +464 +102 +} +330 +464 +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 512 + 91 + 0 + 1 + + 92 + 512 + 93 + 0 + 2 + + 94 + 512 + 95 + 0 + 3 + + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/Debug.are b/LaiPuLaser/TempMarkData/Debug.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/TempMarkData/Debug.are differ diff --git a/LaiPuLaser/TempMarkData/Debug.mak b/LaiPuLaser/TempMarkData/Debug.mak new file mode 100644 index 0000000..78cd90c Binary files /dev/null and b/LaiPuLaser/TempMarkData/Debug.mak differ diff --git a/LaiPuLaser/TempMarkData/Debug.par b/LaiPuLaser/TempMarkData/Debug.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/Debug.par differ diff --git a/LaiPuLaser/TempMarkData/Debug.txt b/LaiPuLaser/TempMarkData/Debug.txt new file mode 100644 index 0000000..2f17983 --- /dev/null +++ b/LaiPuLaser/TempMarkData/Debug.txt @@ -0,0 +1,8 @@ +1 +190.8 +1.82 +80 +50 +600 +1 +1 diff --git a/LaiPuLaser/TempMarkData/Drawing1.are b/LaiPuLaser/TempMarkData/Drawing1.are new file mode 100644 index 0000000..ec5ed7b Binary files /dev/null and b/LaiPuLaser/TempMarkData/Drawing1.are differ diff --git a/LaiPuLaser/TempMarkData/Drawing1.dxf b/LaiPuLaser/TempMarkData/Drawing1.dxf new file mode 100644 index 0000000..134e28f --- /dev/null +++ b/LaiPuLaser/TempMarkData/Drawing1.dxf @@ -0,0 +1,3980 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +365.9152469292427 + 20 +223.1210343073169 + 30 +0.0 + 9 +$EXTMAX + 10 +407.9152469292424 + 20 +265.1210343073171 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458911.622808333 + 9 +$TDUCREATE + 40 +2458911.289475 + 9 +$TDUPDATE + 40 +2458911.622808322 + 9 +$TDUUPDATE + 40 +2458911.289474988 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +E7 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +406.1395219455372 + 22 +240.9658492199285 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +85.57092050305323 + 41 +6.300721141374839 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +E3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +406.9152469292424 + 20 +264.1210343073172 + 10 +406.9152469292428 + 20 +224.1210343073173 + 10 +366.9152469292427 + 20 +224.1210343073169 + 10 +366.9152469292422 + 20 +264.1210343073168 + 0 +CIRCLE + 5 +E4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +366.9152469292427 + 20 +224.1210343073169 + 30 +0.0 + 40 +1.0 + 0 +CIRCLE + 5 +E5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +406.9152469292424 + 20 +264.1210343073172 + 30 +0.0 + 40 +1.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/Drawing1.par b/LaiPuLaser/TempMarkData/Drawing1.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/Drawing1.par differ diff --git a/LaiPuLaser/TempMarkData/E006 原图.are b/LaiPuLaser/TempMarkData/E006 原图.are new file mode 100644 index 0000000..f6f3125 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E006 原图.are differ diff --git a/LaiPuLaser/TempMarkData/E006 原图.dxf b/LaiPuLaser/TempMarkData/E006 原图.dxf new file mode 100644 index 0000000..5fa389e --- /dev/null +++ b/LaiPuLaser/TempMarkData/E006 原图.dxf @@ -0,0 +1,17610 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 1 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +sa0 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5256950365445 + 20 +-28.53712397550362 + 30 +-0.0015258207003583 + 9 +$EXTMAX + 10 +0.5319218762823539 + 20 +78.52807660904727 + 30 +0.0000000349246037 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +1.570796326794896 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458629.514451482 + 9 +$TDUCREATE + 40 +2458629.181118149 + 9 +$TDUPDATE + 40 +2458629.514642720 + 9 +$TDUUPDATE + 40 +2458629.181309387 + 9 +$TDINDWG + 40 +0.0001917014 + 9 +$TDUSRTIMER + 40 +0.0001916898 + 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 +494 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{6ED465F9-8A40-4A70-82C6-2DA702049DE9} + 9 +$VERSIONGUID + 2 +{EC0CFEDE-6A2B-4AC1-B27C-CDAB11AE2246} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +1E + 9 +$INTERFEREVPVS +346 +1B + 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 + 1024 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 16 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 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 +28 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-91.4968865801311 + 22 +24.99547631677183 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +115.8023641590689 + 41 +1.597544338335607 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 +348 +1A + 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 + 1 + 0 +LTYPE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2A +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2B +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +4E +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +13 + 0 +LAYER + 5 +49 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +13 + 0 +LAYER + 5 +4A +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +13 +1001 +AcAecLayerStandard +1000 + +1000 + + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +26 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +27 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +4D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +3F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 50 +90.0 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +26 + 0 +DIMSTYLE +105 +4B +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +26 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +4C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +26 +341 +42 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +BLOCK_RECORD + 5 +37 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +3A + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +36 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +3E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +42 +102 +{ACAD_XDICTIONARY +360 +43 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +38 +330 +37 +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 +39 +330 +37 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34 +330 +33 +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 +35 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C +330 +3B +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 +3D +330 +3B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44 +330 +42 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +45 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +46 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +47 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +48 +330 +42 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +274 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbCircle + 10 +-182.9999999999999 + 20 +64.99999999999466 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +275 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +276 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +78.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +277 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +70.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +278 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +78.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +279 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +70.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +27A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +69.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +27B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +61.50499999999723 + 30 +0.0 + 11 +-170.4076820803568 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +27C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +69.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +27D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +61.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +27E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +60.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +27F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +52.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +280 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +60.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +281 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +52.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +282 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +51.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +283 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +43.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +284 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +51.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +285 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +43.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +286 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +42.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +287 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +34.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +288 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +42.51999999999727 + 30 +0.0 + 11 +-161.8702211621656 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +289 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +34.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +28A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +33.49499999999731 + 30 +0.0 + 11 +-170.4076820803568 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +28B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +25.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +28C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +33.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +28D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +25.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +28E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +24.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +28F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +16.50499999999724 + 30 +0.0 + 11 +-170.4076820803568 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +290 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +24.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +291 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +16.47999999999726 + 30 +0.0 + 11 +-161.8702211621656 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +292 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +15.4949999999973 + 30 +0.0 + 11 +-170.4076820803568 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +293 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +7.504999999997238 + 30 +0.0 + 11 +-170.4076820803568 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +294 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +15.51999999999728 + 30 +0.0 + 11 +-161.8702211621656 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +295 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +7.479999999997261 + 30 +0.0 + 11 +-161.8702211621656 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +296 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +6.494999999997304 + 30 +0.0 + 11 +-170.4076820803568 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +297 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +298 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +6.519999999997281 + 30 +0.0 + 11 +-161.8702211621656 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +299 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +29A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +29B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +29C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +29D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +29E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +29F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.8336657249168 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-170.4076820803568 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-165.7722010665217 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-161.8702211621656 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +78.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +70.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +78.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +70.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +69.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +61.50499999999723 + 30 +0.0 + 11 +-152.7826820803568 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +69.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +61.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +60.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +52.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +60.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +52.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +51.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +43.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +51.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +43.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +42.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +34.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +42.51999999999727 + 30 +0.0 + 11 +-144.2452211621656 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +34.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +33.49499999999731 + 30 +0.0 + 11 +-152.7826820803568 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +25.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +33.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +25.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +24.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +16.50499999999724 + 30 +0.0 + 11 +-152.7826820803568 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +24.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +16.47999999999726 + 30 +0.0 + 11 +-144.2452211621656 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +15.4949999999973 + 30 +0.0 + 11 +-152.7826820803568 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +7.504999999997238 + 30 +0.0 + 11 +-152.7826820803568 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +15.51999999999728 + 30 +0.0 + 11 +-144.2452211621656 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +7.479999999997261 + 30 +0.0 + 11 +-144.2452211621656 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +6.494999999997304 + 30 +0.0 + 11 +-152.7826820803568 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +6.519999999997281 + 30 +0.0 + 11 +-144.2452211621656 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.2086657249168 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-152.7826820803568 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-148.1472010665217 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-144.2452211621656 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +78.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +70.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +78.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +70.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +69.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +61.50499999999723 + 30 +0.0 + 11 +-135.1576820803568 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +69.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +61.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +60.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +52.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +60.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +52.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +51.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +43.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +51.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +43.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +42.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +34.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +42.51999999999727 + 30 +0.0 + 11 +-126.6202211621656 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +34.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +33.49499999999731 + 30 +0.0 + 11 +-135.1576820803568 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +25.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +33.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +25.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +24.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +16.50499999999724 + 30 +0.0 + 11 +-135.1576820803568 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +24.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +16.47999999999726 + 30 +0.0 + 11 +-126.6202211621656 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +15.4949999999973 + 30 +0.0 + 11 +-135.1576820803568 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +7.504999999997238 + 30 +0.0 + 11 +-135.1576820803568 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +15.51999999999728 + 30 +0.0 + 11 +-126.6202211621656 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +7.479999999997261 + 30 +0.0 + 11 +-126.6202211621656 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +6.494999999997304 + 30 +0.0 + 11 +-135.1576820803568 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +6.519999999997281 + 30 +0.0 + 11 +-126.6202211621656 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +300 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +301 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +302 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +303 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.5836657249168 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-135.1576820803568 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +304 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +305 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-130.5222010665217 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-126.6202211621656 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +306 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +78.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +307 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +70.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +308 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +78.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +309 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +70.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +30A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +69.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +30B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +61.50499999999723 + 30 +0.0 + 11 +-117.5326820803568 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +30C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +69.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +30D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +61.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +30E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +60.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +30F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +52.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +310 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +60.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +311 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +52.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +312 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +51.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +313 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +43.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +314 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +51.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +315 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +43.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +316 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +42.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +317 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +34.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +318 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +42.51999999999727 + 30 +0.0 + 11 +-108.9952211621656 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +319 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +34.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +31A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +33.49499999999731 + 30 +0.0 + 11 +-117.5326820803568 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +31B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +25.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +31C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +33.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +31D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +25.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +31E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +24.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +31F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +16.50499999999724 + 30 +0.0 + 11 +-117.5326820803568 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +320 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +24.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +321 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +16.47999999999726 + 30 +0.0 + 11 +-108.9952211621656 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +322 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +15.4949999999973 + 30 +0.0 + 11 +-117.5326820803568 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +323 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +7.504999999997238 + 30 +0.0 + 11 +-117.5326820803568 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +324 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +15.51999999999728 + 30 +0.0 + 11 +-108.9952211621656 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +325 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +7.479999999997261 + 30 +0.0 + 11 +-108.9952211621656 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +326 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +6.494999999997304 + 30 +0.0 + 11 +-117.5326820803568 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +327 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +328 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +6.519999999997281 + 30 +0.0 + 11 +-108.9952211621656 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +329 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +32A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +32B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +32C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +32D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +32E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +32F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +330 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +331 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +332 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +333 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.9586657249168 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-117.5326820803568 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +334 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +335 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-112.8972010665217 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-108.9952211621656 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +336 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +78.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +337 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +70.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +338 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +78.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +339 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +70.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +33A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +69.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +33B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +61.50499999999723 + 30 +0.0 + 11 +-99.90768208035683 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +33C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +69.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +33D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +61.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +33E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +60.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +33F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +52.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +340 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +60.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +341 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +52.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +342 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +51.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +343 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +43.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +344 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +51.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +345 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +43.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +346 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +42.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +347 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +34.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +348 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +42.51999999999727 + 30 +0.0 + 11 +-91.37022116216565 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +349 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +34.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +34A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +33.49499999999731 + 30 +0.0 + 11 +-99.90768208035683 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +34B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +25.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +34C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +33.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +34D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +25.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +34E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +24.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +34F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +16.50499999999724 + 30 +0.0 + 11 +-99.90768208035683 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +350 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +24.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +351 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +16.47999999999726 + 30 +0.0 + 11 +-91.37022116216565 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +352 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +15.4949999999973 + 30 +0.0 + 11 +-99.90768208035683 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +353 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +7.504999999997238 + 30 +0.0 + 11 +-99.90768208035683 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +354 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +15.51999999999728 + 30 +0.0 + 11 +-91.37022116216565 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +355 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +7.479999999997261 + 30 +0.0 + 11 +-91.37022116216565 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +356 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +6.494999999997304 + 30 +0.0 + 11 +-99.90768208035683 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +357 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +358 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +6.519999999997281 + 30 +0.0 + 11 +-91.37022116216565 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +359 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +35A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +35B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +35C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +35D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +35E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +35F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +360 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +361 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +362 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +363 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.3336657249168 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-99.90768208035683 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +364 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +365 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-95.27220106652169 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-91.37022116216565 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +366 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +78.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +367 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +70.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +368 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +78.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +369 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +70.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +36A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +69.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +36B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +61.50499999999723 + 30 +0.0 + 11 +-82.28268208035684 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +36C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +69.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +36D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +61.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +36E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +60.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +36F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +52.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +370 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +60.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +371 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +52.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +372 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +51.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +373 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +43.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +374 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +51.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +375 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +43.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +376 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +42.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +377 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +34.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +378 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +42.51999999999727 + 30 +0.0 + 11 +-73.74522116216565 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +379 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +34.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +37A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +33.49499999999731 + 30 +0.0 + 11 +-82.28268208035684 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +37B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +25.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +37C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +33.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +37D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +25.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +37E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +24.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +37F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +16.50499999999724 + 30 +0.0 + 11 +-82.28268208035684 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +380 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +24.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +381 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +16.47999999999726 + 30 +0.0 + 11 +-73.74522116216565 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +382 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +15.4949999999973 + 30 +0.0 + 11 +-82.28268208035684 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +383 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +7.504999999997238 + 30 +0.0 + 11 +-82.28268208035684 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +384 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +15.51999999999728 + 30 +0.0 + 11 +-73.74522116216565 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +385 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +7.479999999997261 + 30 +0.0 + 11 +-73.74522116216565 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +386 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +6.494999999997304 + 30 +0.0 + 11 +-82.28268208035684 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +387 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +388 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +6.519999999997281 + 30 +0.0 + 11 +-73.74522116216565 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +389 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +38A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +38B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +38C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +38D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +38E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +38F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +390 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +391 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +392 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +393 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.70866572491684 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-82.28268208035684 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +394 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +395 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-77.64720106652169 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-73.74522116216565 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +396 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +78.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +397 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +70.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +398 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +78.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +399 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +70.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +39A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +69.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +39B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +61.50499999999723 + 30 +0.0 + 11 +-64.65768208035683 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +39C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +69.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +39D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +61.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +39E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +60.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +39F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +52.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +60.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +52.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +51.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +43.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +51.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +43.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +42.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +34.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +42.51999999999727 + 30 +0.0 + 11 +-56.12022116216564 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +34.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +33.49499999999731 + 30 +0.0 + 11 +-64.65768208035683 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +25.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +33.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +25.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +24.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +16.50499999999724 + 30 +0.0 + 11 +-64.65768208035683 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +24.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +16.47999999999726 + 30 +0.0 + 11 +-56.12022116216564 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +15.4949999999973 + 30 +0.0 + 11 +-64.65768208035683 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +7.504999999997238 + 30 +0.0 + 11 +-64.65768208035683 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +15.51999999999728 + 30 +0.0 + 11 +-56.12022116216564 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +7.479999999997261 + 30 +0.0 + 11 +-56.12022116216564 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +6.494999999997304 + 30 +0.0 + 11 +-64.65768208035683 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +6.519999999997281 + 30 +0.0 + 11 +-56.12022116216564 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.08366572491684 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-64.65768208035683 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-60.02220106652169 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-56.12022116216564 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +78.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +70.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +78.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +70.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +69.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +61.50499999999723 + 30 +0.0 + 11 +-47.03268208035683 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +69.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +61.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +60.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +52.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +60.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +52.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +51.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +43.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +51.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +43.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +42.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +34.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +42.51999999999727 + 30 +0.0 + 11 +-38.49522116216565 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +34.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +33.49499999999731 + 30 +0.0 + 11 +-47.03268208035683 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +25.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +33.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +25.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +24.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +16.50499999999724 + 30 +0.0 + 11 +-47.03268208035683 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +24.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +16.47999999999726 + 30 +0.0 + 11 +-38.49522116216565 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +15.4949999999973 + 30 +0.0 + 11 +-47.03268208035683 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +7.504999999997238 + 30 +0.0 + 11 +-47.03268208035683 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +15.51999999999728 + 30 +0.0 + 11 +-38.49522116216565 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +7.479999999997261 + 30 +0.0 + 11 +-38.49522116216565 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +6.494999999997304 + 30 +0.0 + 11 +-47.03268208035683 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +6.519999999997281 + 30 +0.0 + 11 +-38.49522116216565 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.45866572491684 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-47.03268208035683 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-42.39720106652169 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-38.49522116216565 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +78.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +70.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +78.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +70.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +69.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +61.50499999999723 + 30 +0.0 + 11 +-29.40768208035684 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +69.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +61.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +60.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +52.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +400 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +60.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +401 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +52.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +402 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +51.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +403 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +43.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +404 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +51.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +405 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +43.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +406 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +42.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +407 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +34.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +408 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +42.51999999999727 + 30 +0.0 + 11 +-20.87022116216565 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +409 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +34.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +40A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +33.49499999999731 + 30 +0.0 + 11 +-29.40768208035684 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +40B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +25.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +40C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +33.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +40D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +25.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +40E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +24.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +40F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +16.50499999999724 + 30 +0.0 + 11 +-29.40768208035684 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +410 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +24.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +411 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +16.47999999999726 + 30 +0.0 + 11 +-20.87022116216565 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +412 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +15.4949999999973 + 30 +0.0 + 11 +-29.40768208035684 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +413 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +7.504999999997238 + 30 +0.0 + 11 +-29.40768208035684 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +414 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +15.51999999999728 + 30 +0.0 + 11 +-20.87022116216565 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +415 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +7.479999999997261 + 30 +0.0 + 11 +-20.87022116216565 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +416 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +6.494999999997304 + 30 +0.0 + 11 +-29.40768208035684 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +417 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +418 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +6.519999999997281 + 30 +0.0 + 11 +-20.87022116216565 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +419 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +41A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +41B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +41C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +41D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +41E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +41F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +420 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +421 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +422 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +423 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.83366572491684 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-29.40768208035684 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +424 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +425 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-24.77220106652169 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-20.87022116216565 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +426 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +78.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +78.49499999999728 + 31 +0.0 + 0 +LINE + 5 +427 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +70.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +70.50499999999726 + 31 +0.0 + 0 +LINE + 5 +428 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +78.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +429 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +70.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +42A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +69.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +69.49499999999727 + 31 +0.0 + 0 +LINE + 5 +42B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +61.50499999999723 + 30 +0.0 + 11 +-11.78268208035683 + 21 +61.50499999999727 + 31 +0.0 + 0 +LINE + 5 +42C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +69.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +42D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +61.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +42E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +60.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +60.49499999999728 + 31 +0.0 + 0 +LINE + 5 +42F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +52.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +52.50499999999727 + 31 +0.0 + 0 +LINE + 5 +430 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +60.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +431 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +52.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +432 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +51.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +51.49499999999727 + 31 +0.0 + 0 +LINE + 5 +433 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +43.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +43.50499999999726 + 31 +0.0 + 0 +LINE + 5 +434 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +51.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +435 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +43.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +436 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +42.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +42.49499999999727 + 31 +0.0 + 0 +LINE + 5 +437 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +34.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +34.50499999999727 + 31 +0.0 + 0 +LINE + 5 +438 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +42.51999999999727 + 30 +0.0 + 11 +-3.245221162165648 + 21 +42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +439 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +34.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +43A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +33.49499999999731 + 30 +0.0 + 11 +-11.78268208035683 + 21 +33.49499999999728 + 31 +0.0 + 0 +LINE + 5 +43B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +25.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +25.50499999999727 + 31 +0.0 + 0 +LINE + 5 +43C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +33.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +43D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +25.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +43E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +24.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +24.49499999999728 + 31 +0.0 + 0 +LINE + 5 +43F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +16.50499999999724 + 30 +0.0 + 11 +-11.78268208035683 + 21 +16.50499999999726 + 31 +0.0 + 0 +LINE + 5 +440 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +24.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +441 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +16.47999999999726 + 30 +0.0 + 11 +-3.245221162165648 + 21 +16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +442 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +15.4949999999973 + 30 +0.0 + 11 +-11.78268208035683 + 21 +15.49499999999727 + 31 +0.0 + 0 +LINE + 5 +443 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +7.504999999997238 + 30 +0.0 + 11 +-11.78268208035683 + 21 +7.504999999997266 + 31 +0.0 + 0 +LINE + 5 +444 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +15.51999999999728 + 30 +0.0 + 11 +-3.245221162165648 + 21 +15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +445 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +7.479999999997261 + 30 +0.0 + 11 +-3.245221162165648 + 21 +7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +446 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +6.494999999997304 + 30 +0.0 + 11 +-11.78268208035683 + 21 +6.494999999997276 + 31 +0.0 + 0 +LINE + 5 +447 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-1.495000000002761 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-1.495000000002733 + 31 +0.0 + 0 +LINE + 5 +448 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +6.519999999997281 + 30 +0.0 + 11 +-3.245221162165648 + 21 +6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +449 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-1.520000000002738 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +44A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-2.505000000002695 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-2.505000000002723 + 31 +0.0 + 0 +LINE + 5 +44B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-10.49500000000276 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-10.49500000000273 + 31 +0.0 + 0 +LINE + 5 +44C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-2.480000000002718 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-2.480000000002718 + 31 +0.0 + 0 +LINE + 5 +44D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-10.52000000000274 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +44E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-11.50500000000269 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-11.50500000000272 + 31 +0.0 + 0 +LINE + 5 +44F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-19.49500000000276 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-19.49500000000273 + 31 +0.0 + 0 +LINE + 5 +450 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-11.48000000000272 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +451 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-19.52000000000274 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +452 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-20.50500000000269 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-20.50500000000273 + 31 +0.0 + 0 +LINE + 5 +453 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.20866572491684 + 20 +-28.49500000000276 + 30 +0.0 + 11 +-11.78268208035683 + 21 +-28.49500000000274 + 31 +0.0 + 0 +LINE + 5 +454 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-20.48000000000272 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +455 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-7.147201066521688 + 20 +-28.52000000000274 + 30 +0.0 + 11 +-3.245221162165648 + 21 +-28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +456 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.6449999999998 + 20 +28.09999999999727 + 30 +0.0 + 11 +-178.6449999999998 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +457 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.6449999999998 + 20 +30.89999999999728 + 30 +0.0 + 11 +-178.8571320343558 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +458 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-178.6449999999998 + 20 +28.09999999999724 + 30 +0.0 + 11 +-178.8571320343558 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +459 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.9799999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-161.9799999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +45A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.9799999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-161.7678679656439 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +45B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.98 + 20 +30.89999999999725 + 30 +0.0 + 11 +-161.767867965644 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +45C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.0199999999998 + 20 +28.09999999999727 + 30 +0.0 + 11 +-161.0199999999998 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +45D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.0199999999998 + 20 +30.89999999999728 + 30 +0.0 + 11 +-161.2321320343558 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +45E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-161.0199999999998 + 20 +28.09999999999724 + 30 +0.0 + 11 +-161.2321320343558 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +45F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-144.3549999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-144.3549999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +460 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-144.3549999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-144.1428679656439 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +461 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-144.355 + 20 +30.89999999999725 + 30 +0.0 + 11 +-144.142867965644 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +462 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.3949999999998 + 20 +28.09999999999727 + 30 +0.0 + 11 +-143.3949999999998 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +463 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.3949999999998 + 20 +30.89999999999728 + 30 +0.0 + 11 +-143.6071320343558 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +464 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-143.3949999999998 + 20 +28.09999999999724 + 30 +0.0 + 11 +-143.6071320343558 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +465 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-126.7299999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-126.7299999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +466 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-126.7299999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-126.5178679656439 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +467 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-126.73 + 20 +30.89999999999725 + 30 +0.0 + 11 +-126.517867965644 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +468 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.7699999999998 + 20 +28.09999999999727 + 30 +0.0 + 11 +-125.7699999999998 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +469 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.7699999999998 + 20 +30.89999999999728 + 30 +0.0 + 11 +-125.9821320343558 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +46A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-125.7699999999998 + 20 +28.09999999999724 + 30 +0.0 + 11 +-125.9821320343558 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +46B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-109.1049999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-109.1049999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +46C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-109.1049999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-108.8928679656439 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +46D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-109.105 + 20 +30.89999999999725 + 30 +0.0 + 11 +-108.892867965644 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +46E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.1449999999998 + 20 +28.09999999999727 + 30 +0.0 + 11 +-108.1449999999998 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +46F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.1449999999998 + 20 +30.89999999999728 + 30 +0.0 + 11 +-108.3571320343558 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +470 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-108.1449999999998 + 20 +28.09999999999724 + 30 +0.0 + 11 +-108.3571320343558 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +471 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-91.4799999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-91.4799999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +472 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-91.4799999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-91.26786796564392 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +473 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-91.48000000000001 + 20 +30.89999999999725 + 30 +0.0 + 11 +-91.26786796564402 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +474 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.51999999999987 + 20 +28.09999999999727 + 30 +0.0 + 11 +-90.51999999999987 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +475 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.51999999999987 + 20 +30.89999999999728 + 30 +0.0 + 11 +-90.73213203435585 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +476 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-90.51999999999987 + 20 +28.09999999999724 + 30 +0.0 + 11 +-90.73213203435585 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +477 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.8549999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-73.8549999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +478 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.8549999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-73.64286796564392 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +479 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-73.85500000000002 + 20 +30.89999999999725 + 30 +0.0 + 11 +-73.64286796564403 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +47A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-72.89499999999986 + 20 +28.09999999999727 + 30 +0.0 + 11 +-72.89499999999986 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +47B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-72.89499999999986 + 20 +30.89999999999728 + 30 +0.0 + 11 +-73.10713203435586 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +47C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-72.89499999999986 + 20 +28.09999999999724 + 30 +0.0 + 11 +-73.10713203435586 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +47D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-56.2299999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-56.2299999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +47E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-56.2299999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-56.01786796564391 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +47F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-56.23000000000001 + 20 +30.89999999999725 + 30 +0.0 + 11 +-56.01786796564403 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +480 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.26999999999986 + 20 +28.09999999999727 + 30 +0.0 + 11 +-55.26999999999986 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +481 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.26999999999986 + 20 +30.89999999999728 + 30 +0.0 + 11 +-55.48213203435586 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +482 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-55.26999999999986 + 20 +28.09999999999724 + 30 +0.0 + 11 +-55.48213203435586 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +483 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-38.60499999999991 + 20 +30.89999999999728 + 30 +0.0 + 11 +-38.60499999999991 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +484 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-38.60499999999991 + 20 +28.09999999999727 + 30 +0.0 + 11 +-38.39286796564392 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +485 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-38.60500000000002 + 20 +30.89999999999725 + 30 +0.0 + 11 +-38.39286796564403 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +486 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.64499999999987 + 20 +28.09999999999727 + 30 +0.0 + 11 +-37.64499999999987 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +487 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.64499999999987 + 20 +30.89999999999728 + 30 +0.0 + 11 +-37.85713203435586 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +488 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-37.64499999999987 + 20 +28.09999999999724 + 30 +0.0 + 11 +-37.85713203435586 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +489 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.9799999999999 + 20 +30.89999999999728 + 30 +0.0 + 11 +-20.9799999999999 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +48A +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.9799999999999 + 20 +28.09999999999727 + 30 +0.0 + 11 +-20.76786796564392 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +48B +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.98000000000002 + 20 +30.89999999999725 + 30 +0.0 + 11 +-20.76786796564403 + 21 +31.11213203435325 + 31 +0.0 + 0 +LINE + 5 +48C +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.01999999999987 + 20 +28.09999999999727 + 30 +0.0 + 11 +-20.01999999999987 + 21 +30.89999999999728 + 31 +0.0 + 0 +LINE + 5 +48D +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.01999999999987 + 20 +30.89999999999728 + 30 +0.0 + 11 +-20.23213203435586 + 21 +31.11213203435327 + 31 +0.0 + 0 +LINE + 5 +48E +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-20.01999999999987 + 20 +28.09999999999724 + 30 +0.0 + 11 +-20.23213203435586 + 21 +27.88786796564125 + 31 +0.0 + 0 +LINE + 5 +48F +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-3.354999999999904 + 20 +30.89999999999728 + 30 +0.0 + 11 +-3.354999999999904 + 21 +28.09999999999727 + 31 +0.0 + 0 +LINE + 5 +490 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-3.354999999999904 + 20 +28.09999999999727 + 30 +0.0 + 11 +-3.142867965643915 + 21 +27.88786796564128 + 31 +0.0 + 0 +LINE + 5 +491 +330 +37 +100 +AcDbEntity + 8 +图层1 +100 +AcDbLine + 10 +-3.355000000000018 + 20 +30.89999999999725 + 30 +0.0 + 11 +-3.142867965644029 + 21 +31.11213203435325 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +30 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +2F + 3 +ACAD_MATERIAL +350 +10 + 3 +ACAD_MLINESTYLE +350 +2C + 3 +ACAD_PLOTSETTINGS +350 +2E + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_TABLESTYLE +350 +31 + 3 +ACAD_VISUALSTYLE +350 +14 + 3 +AcDbVariableDictionary +350 +492 + 0 +DICTIONARY + 5 +4E +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +4F + 0 +DICTIONARY + 5 +43 +330 +42 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +3A + 3 +布局1 +350 +36 + 3 +布局2 +350 +3E + 0 +DICTIONARY + 5 +10 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +12 + 3 +ByLayer +350 +11 + 3 +Global +350 +13 + 0 +DICTIONARY + 5 +2C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +2D + 0 +DICTIONARY + 5 +2E +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 +31 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +32 + 0 +DICTIONARY + 5 +14 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +1A + 3 +3D Hidden +350 +1C + 3 +3dWireframe +350 +1B + 3 +Basic +350 +19 + 3 +Brighten +350 +20 + 3 +ColorChange +350 +24 + 3 +Conceptual +350 +1D + 3 +Dim +350 +1F + 3 +Facepattern +350 +23 + 3 +Flat +350 +15 + 3 +FlatWithEdges +350 +16 + 3 +Gouraud +350 +17 + 3 +GouraudWithEdges +350 +18 + 3 +Linepattern +350 +22 + 3 +Realistic +350 +1E + 3 +Thicken +350 +21 + 0 +DICTIONARY + 5 +492 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CTABLESTYLE +350 +493 + 0 +DICTIONARY + 5 +4F +102 +{ACAD_REACTORS +330 +4E +102 +} +330 +4E +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +3A +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 +37 +331 +28 + 0 +LAYOUT + 5 +36 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +33 + 0 +LAYOUT + 5 +3E +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 +布局2 + 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 +3B + 0 +MATERIAL + 5 +12 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByBlock + 0 +MATERIAL + 5 +11 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByLayer + 0 +MATERIAL + 5 +13 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2C +102 +} +330 +2C +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 +TABLESTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +31 +102 +} +330 +31 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 8 + 40 +1.5 + 41 +1.5 +280 + 0 +281 + 0 + 7 +Standard +140 +4.5 +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 +6.0 +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 +4.5 +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 +1A +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1C +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1B +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +19 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +20 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +24 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1D +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1F +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +23 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +15 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +16 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +17 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1E +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +21 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +493 +102 +{ACAD_REACTORS +330 +492 +102 +} +330 +492 +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E006 原图.par b/LaiPuLaser/TempMarkData/E006 原图.par new file mode 100644 index 0000000..7f2c9db Binary files /dev/null and b/LaiPuLaser/TempMarkData/E006 原图.par differ diff --git a/LaiPuLaser/TempMarkData/E114 原图.are b/LaiPuLaser/TempMarkData/E114 原图.are new file mode 100644 index 0000000..26a33a0 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E114 原图.are differ diff --git a/LaiPuLaser/TempMarkData/E114 原图.dxf b/LaiPuLaser/TempMarkData/E114 原图.dxf new file mode 100644 index 0000000..78490f3 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E114 原图.dxf @@ -0,0 +1,19820 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +sa0 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5 + 20 +-13.52000000000261 + 30 +0.0 + 9 +$EXTMAX + 10 +0.5 + 20 +93.51999999999742 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +1.570796326794896 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458629.514451447 + 9 +$TDUCREATE + 40 +2458629.181118113 + 9 +$TDUPDATE + 40 +2458629.51464272 + 9 +$TDUUPDATE + 40 +2458629.181309387 + 9 +$TDINDWG + 40 +0.0001917014 + 9 +$TDUSRTIMER + 40 +0.0001916898 + 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 +12A2 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{6ED465F9-8A40-4A70-82C6-2DA702049DE9} + 9 +$VERSIONGUID + 2 +{EC0CFEDE-6A2B-4AC1-B27C-CDAB11AE2246} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +1E + 9 +$INTERFEREVPVS +346 +1B + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 20 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +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 +28 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-88.32078896551725 + 22 +42.90730482758362 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +68.23799999999999 + 41 +2.711090759227978 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 +348 +1A + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 250 +421 + 3355443 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +26 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2A +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2B +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +4E +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +13 + 0 +LAYER + 5 +49 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +13 + 0 +LAYER + 5 +4A +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +13 +1001 +AcAecLayerStandard +1000 + +1000 + + 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 +27 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +4D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +3F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 50 +90.0 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +26 + 0 +DIMSTYLE +105 +4B +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +26 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +4C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +26 +341 +42 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +37 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +3A + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +36 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +3E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +42 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +38 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +39 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +35 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +3D +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +45 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +46 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +47 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +48 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +274 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +275 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +-182.9999999999999 + 20 +64.99999999999469 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +10AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +-13.49500000000265 + 10 +-12.59231791964308 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +10AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +-5.505000000002582 + 10 +-12.59231791964308 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +10AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +-13.52000000000261 + 10 +-21.12977883783429 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +10B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +-5.48000000000259 + 10 +-21.12977883783429 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +10B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +-4.495000000002648 + 10 +-12.59231791964308 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +10B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +3.494999999997432 + 10 +-12.59231791964308 + 20 +3.494999999997397 + 0 +LWPOLYLINE + 5 +10B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +-4.520000000002611 + 10 +-21.12977883783429 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +10B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +3.519999999997403 + 10 +-21.12977883783429 + 20 +3.519999999997403 + 0 +LWPOLYLINE + 5 +10B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +4.504999999997366 + 10 +-12.59231791964308 + 20 +4.504999999997381 + 0 +LWPOLYLINE + 5 +10B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +12.49499999999743 + 10 +-12.59231791964308 + 20 +12.4949999999974 + 0 +LWPOLYLINE + 5 +10B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +4.479999999997382 + 10 +-21.12977883783429 + 20 +4.479999999997382 + 0 +LWPOLYLINE + 5 +10B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +12.5199999999974 + 10 +-21.12977883783429 + 20 +12.5199999999974 + 0 +LWPOLYLINE + 5 +10B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +13.50499999999737 + 10 +-12.59231791964308 + 20 +13.50499999999739 + 0 +LWPOLYLINE + 5 +10BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +21.49499999999743 + 10 +-12.59231791964308 + 20 +21.4949999999974 + 0 +LWPOLYLINE + 5 +10BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +13.47999999999738 + 10 +-21.12977883783429 + 20 +13.47999999999738 + 0 +LWPOLYLINE + 5 +10BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +21.5199999999974 + 10 +-21.12977883783429 + 20 +21.5199999999974 + 0 +LWPOLYLINE + 5 +10BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +22.50499999999737 + 10 +-12.59231791964308 + 20 +22.50499999999739 + 0 +LWPOLYLINE + 5 +10BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +30.49499999999743 + 10 +-12.59231791964308 + 20 +30.4949999999974 + 0 +LWPOLYLINE + 5 +10BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +22.4799999999974 + 10 +-21.12977883783429 + 20 +22.4799999999974 + 0 +LWPOLYLINE + 5 +10C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +30.5199999999974 + 10 +-21.12977883783429 + 20 +30.5199999999974 + 0 +LWPOLYLINE + 5 +10C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +31.50499999999735 + 10 +-12.59231791964308 + 20 +31.50499999999738 + 0 +LWPOLYLINE + 5 +10C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +39.49499999999743 + 10 +-12.59231791964308 + 20 +39.49499999999739 + 0 +LWPOLYLINE + 5 +10C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +31.47999999999738 + 10 +-21.12977883783429 + 20 +31.47999999999738 + 0 +LWPOLYLINE + 5 +10C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +39.5199999999974 + 10 +-21.12977883783429 + 20 +39.5199999999974 + 0 +LWPOLYLINE + 5 +10C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +40.50499999999737 + 10 +-12.59231791964308 + 20 +40.50499999999738 + 0 +LWPOLYLINE + 5 +10C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +48.49499999999743 + 10 +-12.59231791964308 + 20 +48.4949999999974 + 0 +LWPOLYLINE + 5 +10C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +40.47999999999738 + 10 +-21.12977883783429 + 20 +40.47999999999738 + 0 +LWPOLYLINE + 5 +10C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +48.5199999999974 + 10 +-21.12977883783429 + 20 +48.5199999999974 + 0 +LWPOLYLINE + 5 +10C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +49.50499999999737 + 10 +-12.59231791964308 + 20 +49.50499999999739 + 0 +LWPOLYLINE + 5 +10CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +57.49499999999743 + 10 +-12.59231791964308 + 20 +57.4949999999974 + 0 +LWPOLYLINE + 5 +10CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +49.47999999999739 + 10 +-21.12977883783429 + 20 +49.47999999999739 + 0 +LWPOLYLINE + 5 +10CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +57.5199999999974 + 10 +-21.12977883783429 + 20 +57.5199999999974 + 0 +LWPOLYLINE + 5 +10CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +58.50499999999736 + 10 +-12.59231791964308 + 20 +58.50499999999739 + 0 +LWPOLYLINE + 5 +10CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +66.49499999999742 + 10 +-12.59231791964308 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +10CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +58.47999999999738 + 10 +-21.12977883783429 + 20 +58.47999999999738 + 0 +LWPOLYLINE + 5 +10D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +66.51999999999741 + 10 +-21.12977883783429 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +10D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +67.50499999999735 + 10 +-12.59231791964308 + 20 +67.50499999999738 + 0 +LWPOLYLINE + 5 +10D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +75.49499999999742 + 10 +-12.59231791964308 + 20 +75.49499999999739 + 0 +LWPOLYLINE + 5 +10D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +67.47999999999739 + 10 +-21.12977883783429 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +10D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +75.51999999999741 + 10 +-21.12977883783429 + 20 +75.51999999999741 + 0 +LWPOLYLINE + 5 +10D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +76.50499999999735 + 10 +-12.59231791964308 + 20 +76.50499999999738 + 0 +LWPOLYLINE + 5 +10D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +84.49499999999742 + 10 +-12.59231791964308 + 20 +84.49499999999739 + 0 +LWPOLYLINE + 5 +10D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +76.47999999999739 + 10 +-21.12977883783429 + 20 +76.47999999999739 + 0 +LWPOLYLINE + 5 +10D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +84.5199999999974 + 10 +-21.12977883783429 + 20 +84.5199999999974 + 0 +LWPOLYLINE + 5 +10D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +85.50499999999735 + 10 +-12.59231791964308 + 20 +85.5049999999974 + 0 +LWPOLYLINE + 5 +10DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-4.166334275083074 + 20 +93.49499999999742 + 10 +-12.59231791964308 + 20 +93.4949999999974 + 0 +LWPOLYLINE + 5 +10DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +85.47999999999737 + 10 +-21.12977883783429 + 20 +85.47999999999737 + 0 +LWPOLYLINE + 5 +10DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-17.2277989334782 + 20 +93.5199999999974 + 10 +-21.12977883783429 + 20 +93.5199999999974 + 0 +LWPOLYLINE + 5 +10DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +-13.49500000000263 + 10 +-30.21731791964308 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +10DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +-5.505000000002568 + 10 +-30.21731791964308 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +10DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +-13.52000000000261 + 10 +-38.75477883783429 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +10E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +-5.48000000000259 + 10 +-38.75477883783429 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +10E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +-4.495000000002634 + 10 +-30.21731791964308 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +10E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +3.494999999997432 + 10 +-30.21731791964308 + 20 +3.494999999997397 + 0 +LWPOLYLINE + 5 +10E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +-4.520000000002611 + 10 +-38.75477883783429 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +10E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +3.519999999997403 + 10 +-38.75477883783429 + 20 +3.51999999999741 + 0 +LWPOLYLINE + 5 +10E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +4.504999999997366 + 10 +-30.21731791964308 + 20 +4.504999999997381 + 0 +LWPOLYLINE + 5 +10E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +12.49499999999743 + 10 +-30.21731791964308 + 20 +12.4949999999974 + 0 +LWPOLYLINE + 5 +10E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +4.479999999997382 + 10 +-38.75477883783429 + 20 +4.479999999997389 + 0 +LWPOLYLINE + 5 +10E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +12.5199999999974 + 10 +-38.75477883783429 + 20 +12.51999999999741 + 0 +LWPOLYLINE + 5 +10E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +13.50499999999737 + 10 +-30.21731791964308 + 20 +13.50499999999739 + 0 +LWPOLYLINE + 5 +10EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +21.49499999999743 + 10 +-30.21731791964308 + 20 +21.4949999999974 + 0 +LWPOLYLINE + 5 +10EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +13.47999999999738 + 10 +-38.75477883783429 + 20 +13.47999999999739 + 0 +LWPOLYLINE + 5 +10EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +21.5199999999974 + 10 +-38.75477883783429 + 20 +21.51999999999741 + 0 +LWPOLYLINE + 5 +10ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +22.50499999999737 + 10 +-30.21731791964308 + 20 +22.50499999999739 + 0 +LWPOLYLINE + 5 +10EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +30.49499999999743 + 10 +-30.21731791964308 + 20 +30.4949999999974 + 0 +LWPOLYLINE + 5 +10EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +22.4799999999974 + 10 +-38.75477883783429 + 20 +22.4799999999974 + 0 +LWPOLYLINE + 5 +10F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +30.5199999999974 + 10 +-38.75477883783429 + 20 +30.51999999999741 + 0 +LWPOLYLINE + 5 +10F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +31.50499999999735 + 10 +-30.21731791964308 + 20 +31.50499999999738 + 0 +LWPOLYLINE + 5 +10F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +39.49499999999743 + 10 +-30.21731791964308 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +10F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +31.47999999999738 + 10 +-38.75477883783429 + 20 +31.47999999999739 + 0 +LWPOLYLINE + 5 +10F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +39.51999999999741 + 10 +-38.75477883783429 + 20 +39.51999999999741 + 0 +LWPOLYLINE + 5 +10F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +40.50499999999737 + 10 +-30.21731791964308 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +10F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +48.49499999999743 + 10 +-30.21731791964308 + 20 +48.4949999999974 + 0 +LWPOLYLINE + 5 +10F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +40.47999999999739 + 10 +-38.75477883783429 + 20 +40.47999999999739 + 0 +LWPOLYLINE + 5 +10F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +48.51999999999741 + 10 +-38.75477883783429 + 20 +48.51999999999741 + 0 +LWPOLYLINE + 5 +10F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +49.50499999999737 + 10 +-30.21731791964308 + 20 +49.50499999999739 + 0 +LWPOLYLINE + 5 +10FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +57.49499999999743 + 10 +-30.21731791964308 + 20 +57.4949999999974 + 0 +LWPOLYLINE + 5 +10FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +49.47999999999739 + 10 +-38.75477883783429 + 20 +49.47999999999739 + 0 +LWPOLYLINE + 5 +10FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +57.51999999999741 + 10 +-38.75477883783429 + 20 +57.51999999999741 + 0 +LWPOLYLINE + 5 +10FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +58.50499999999736 + 10 +-30.21731791964308 + 20 +58.50499999999739 + 0 +LWPOLYLINE + 5 +10FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +66.49499999999743 + 10 +-30.21731791964308 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +10FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +58.47999999999739 + 10 +-38.75477883783429 + 20 +58.47999999999739 + 0 +LWPOLYLINE + 5 +1100 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +66.51999999999741 + 10 +-38.75477883783429 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +1101 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +67.50499999999737 + 10 +-30.21731791964308 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +1102 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +75.49499999999742 + 10 +-30.21731791964308 + 20 +75.49499999999739 + 0 +LWPOLYLINE + 5 +1103 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +67.47999999999739 + 10 +-38.75477883783429 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +1104 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +75.51999999999741 + 10 +-38.75477883783429 + 20 +75.51999999999741 + 0 +LWPOLYLINE + 5 +1105 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +76.50499999999735 + 10 +-30.21731791964308 + 20 +76.50499999999738 + 0 +LWPOLYLINE + 5 +1106 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +84.49499999999742 + 10 +-30.21731791964308 + 20 +84.49499999999739 + 0 +LWPOLYLINE + 5 +1107 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +76.47999999999739 + 10 +-38.75477883783429 + 20 +76.47999999999739 + 0 +LWPOLYLINE + 5 +1108 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +84.51999999999741 + 10 +-38.75477883783429 + 20 +84.51999999999741 + 0 +LWPOLYLINE + 5 +1109 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +85.50499999999735 + 10 +-30.21731791964308 + 20 +85.5049999999974 + 0 +LWPOLYLINE + 5 +110A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-21.79133427508307 + 20 +93.49499999999742 + 10 +-30.21731791964308 + 20 +93.4949999999974 + 0 +LWPOLYLINE + 5 +110B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +85.47999999999739 + 10 +-38.75477883783429 + 20 +85.47999999999739 + 0 +LWPOLYLINE + 5 +110C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.8527989334782 + 20 +93.51999999999741 + 10 +-38.75477883783429 + 20 +93.51999999999741 + 0 +LWPOLYLINE + 5 +110D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +-13.49500000000263 + 10 +-47.84231791964308 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +110E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +-5.505000000002568 + 10 +-47.84231791964308 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +110F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +-13.52000000000261 + 10 +-56.37977883783429 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +1110 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +-5.48000000000259 + 10 +-56.37977883783429 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +1111 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +-4.495000000002634 + 10 +-47.84231791964308 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +1112 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +3.494999999997439 + 10 +-47.84231791964308 + 20 +3.494999999997404 + 0 +LWPOLYLINE + 5 +1113 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +-4.520000000002611 + 10 +-56.37977883783429 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +1114 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +3.51999999999741 + 10 +-56.37977883783429 + 20 +3.51999999999741 + 0 +LWPOLYLINE + 5 +1115 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +4.504999999997374 + 10 +-47.84231791964308 + 20 +4.504999999997388 + 0 +LWPOLYLINE + 5 +1116 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +12.49499999999743 + 10 +-47.84231791964308 + 20 +12.4949999999974 + 0 +LWPOLYLINE + 5 +1117 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +4.479999999997389 + 10 +-56.37977883783429 + 20 +4.479999999997389 + 0 +LWPOLYLINE + 5 +1118 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +12.51999999999741 + 10 +-56.37977883783428 + 20 +12.51999999999741 + 0 +LWPOLYLINE + 5 +1119 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +13.50499999999737 + 10 +-47.84231791964308 + 20 +13.5049999999974 + 0 +LWPOLYLINE + 5 +111A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +21.49499999999743 + 10 +-47.84231791964308 + 20 +21.49499999999741 + 0 +LWPOLYLINE + 5 +111B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +13.47999999999739 + 10 +-56.37977883783428 + 20 +13.47999999999739 + 0 +LWPOLYLINE + 5 +111C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +21.51999999999741 + 10 +-56.37977883783428 + 20 +21.51999999999741 + 0 +LWPOLYLINE + 5 +111D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +22.50499999999737 + 10 +-47.84231791964308 + 20 +22.5049999999974 + 0 +LWPOLYLINE + 5 +111E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +30.49499999999743 + 10 +-47.84231791964308 + 20 +30.4949999999974 + 0 +LWPOLYLINE + 5 +111F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +22.4799999999974 + 10 +-56.37977883783428 + 20 +22.4799999999974 + 0 +LWPOLYLINE + 5 +1120 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +30.51999999999741 + 10 +-56.37977883783428 + 20 +30.51999999999741 + 0 +LWPOLYLINE + 5 +1121 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +31.50499999999736 + 10 +-47.84231791964308 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +1122 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +39.49499999999743 + 10 +-47.84231791964308 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +1123 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +31.47999999999739 + 10 +-56.37977883783428 + 20 +31.47999999999739 + 0 +LWPOLYLINE + 5 +1124 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +39.51999999999741 + 10 +-56.37977883783428 + 20 +39.51999999999741 + 0 +LWPOLYLINE + 5 +1125 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +40.50499999999737 + 10 +-47.84231791964308 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +1126 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +48.49499999999743 + 10 +-47.84231791964308 + 20 +48.4949999999974 + 0 +LWPOLYLINE + 5 +1127 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +40.47999999999739 + 10 +-56.37977883783428 + 20 +40.47999999999739 + 0 +LWPOLYLINE + 5 +1128 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +48.51999999999741 + 10 +-56.37977883783428 + 20 +48.51999999999741 + 0 +LWPOLYLINE + 5 +1129 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +49.50499999999737 + 10 +-47.84231791964308 + 20 +49.50499999999739 + 0 +LWPOLYLINE + 5 +112A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +57.49499999999743 + 10 +-47.84231791964308 + 20 +57.4949999999974 + 0 +LWPOLYLINE + 5 +112B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +49.47999999999739 + 10 +-56.37977883783428 + 20 +49.47999999999739 + 0 +LWPOLYLINE + 5 +112C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +57.51999999999741 + 10 +-56.37977883783428 + 20 +57.51999999999741 + 0 +LWPOLYLINE + 5 +112D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +58.50499999999737 + 10 +-47.84231791964308 + 20 +58.50499999999739 + 0 +LWPOLYLINE + 5 +112E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +66.49499999999743 + 10 +-47.84231791964308 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +112F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +58.47999999999739 + 10 +-56.37977883783428 + 20 +58.47999999999739 + 0 +LWPOLYLINE + 5 +1130 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +66.51999999999741 + 10 +-56.37977883783428 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +1131 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +67.50499999999737 + 10 +-47.84231791964308 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +1132 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +75.49499999999743 + 10 +-47.84231791964308 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +1133 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +67.47999999999739 + 10 +-56.37977883783428 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +1134 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +75.51999999999741 + 10 +-56.37977883783428 + 20 +75.51999999999741 + 0 +LWPOLYLINE + 5 +1135 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +76.50499999999735 + 10 +-47.84231791964308 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +1136 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +84.49499999999743 + 10 +-47.84231791964308 + 20 +84.49499999999739 + 0 +LWPOLYLINE + 5 +1137 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +76.47999999999739 + 10 +-56.37977883783428 + 20 +76.47999999999739 + 0 +LWPOLYLINE + 5 +1138 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +84.51999999999741 + 10 +-56.37977883783428 + 20 +84.51999999999741 + 0 +LWPOLYLINE + 5 +1139 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +85.50499999999735 + 10 +-47.84231791964308 + 20 +85.5049999999974 + 0 +LWPOLYLINE + 5 +113A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-39.41633427508307 + 20 +93.49499999999743 + 10 +-47.84231791964308 + 20 +93.4949999999974 + 0 +LWPOLYLINE + 5 +113B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +85.47999999999739 + 10 +-56.37977883783428 + 20 +85.47999999999739 + 0 +LWPOLYLINE + 5 +113C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-52.4777989334782 + 20 +93.51999999999741 + 10 +-56.37977883783428 + 20 +93.51999999999741 + 0 +LWPOLYLINE + 5 +113D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.0413342750831 + 20 +-13.49500000000263 + 10 +-65.4673179196431 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +113E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.0413342750831 + 20 +-5.505000000002568 + 10 +-65.4673179196431 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +113F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.1027989334782 + 20 +-13.52000000000261 + 10 +-74.0047788378343 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +1140 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.1027989334782 + 20 +-5.48000000000259 + 10 +-74.0047788378343 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +1141 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.0413342750831 + 20 +-4.495000000002634 + 10 +-65.4673179196431 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +1142 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.0413342750831 + 20 +3.494999999997439 + 10 +-65.4673179196431 + 20 +3.494999999997404 + 0 +LWPOLYLINE + 5 +1143 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.1027989334782 + 20 +-4.520000000002611 + 10 +-74.0047788378343 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +1144 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.1027989334782 + 20 +3.51999999999741 + 10 +-74.0047788378343 + 20 +3.51999999999741 + 0 +LWPOLYLINE + 5 +1145 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.0413342750831 + 20 +4.504999999997374 + 10 +-65.4673179196431 + 20 +4.504999999997388 + 0 +LWPOLYLINE + 5 +1146 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +12.49499999999743 + 10 +-65.46731791964308 + 20 +12.4949999999974 + 0 +LWPOLYLINE + 5 +1147 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.1027989334782 + 20 +4.479999999997389 + 10 +-74.0047788378343 + 20 +4.479999999997389 + 0 +LWPOLYLINE + 5 +1148 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +12.51999999999741 + 10 +-74.00477883783428 + 20 +12.51999999999741 + 0 +LWPOLYLINE + 5 +1149 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +13.50499999999737 + 10 +-65.46731791964308 + 20 +13.5049999999974 + 0 +LWPOLYLINE + 5 +114A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +21.49499999999743 + 10 +-65.46731791964308 + 20 +21.49499999999741 + 0 +LWPOLYLINE + 5 +114B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +13.47999999999739 + 10 +-74.00477883783428 + 20 +13.47999999999739 + 0 +LWPOLYLINE + 5 +114C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +21.51999999999741 + 10 +-74.00477883783428 + 20 +21.51999999999741 + 0 +LWPOLYLINE + 5 +114D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +22.50499999999737 + 10 +-65.46731791964308 + 20 +22.5049999999974 + 0 +LWPOLYLINE + 5 +114E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +30.49499999999743 + 10 +-65.46731791964308 + 20 +30.4949999999974 + 0 +LWPOLYLINE + 5 +114F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +22.4799999999974 + 10 +-74.00477883783428 + 20 +22.4799999999974 + 0 +LWPOLYLINE + 5 +1150 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +30.51999999999741 + 10 +-74.00477883783428 + 20 +30.51999999999741 + 0 +LWPOLYLINE + 5 +1151 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +31.50499999999736 + 10 +-65.46731791964308 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +1152 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +39.49499999999743 + 10 +-65.46731791964308 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +1153 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +31.47999999999739 + 10 +-74.00477883783428 + 20 +31.47999999999739 + 0 +LWPOLYLINE + 5 +1154 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +39.51999999999741 + 10 +-74.00477883783428 + 20 +39.51999999999741 + 0 +LWPOLYLINE + 5 +1155 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +40.50499999999737 + 10 +-65.46731791964308 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +1156 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +48.49499999999743 + 10 +-65.46731791964308 + 20 +48.49499999999741 + 0 +LWPOLYLINE + 5 +1157 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +40.47999999999739 + 10 +-74.00477883783428 + 20 +40.47999999999739 + 0 +LWPOLYLINE + 5 +1158 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +48.51999999999741 + 10 +-74.00477883783428 + 20 +48.51999999999741 + 0 +LWPOLYLINE + 5 +1159 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +49.50499999999737 + 10 +-65.46731791964308 + 20 +49.5049999999974 + 0 +LWPOLYLINE + 5 +115A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +57.49499999999743 + 10 +-65.46731791964308 + 20 +57.4949999999974 + 0 +LWPOLYLINE + 5 +115B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +49.47999999999739 + 10 +-74.00477883783428 + 20 +49.47999999999739 + 0 +LWPOLYLINE + 5 +115C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +57.51999999999741 + 10 +-74.00477883783428 + 20 +57.51999999999741 + 0 +LWPOLYLINE + 5 +115D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +58.50499999999737 + 10 +-65.46731791964308 + 20 +58.50499999999739 + 0 +LWPOLYLINE + 5 +115E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +66.49499999999743 + 10 +-65.46731791964308 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +115F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +58.47999999999739 + 10 +-74.00477883783428 + 20 +58.47999999999739 + 0 +LWPOLYLINE + 5 +1160 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +66.51999999999741 + 10 +-74.00477883783428 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +1161 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +67.50499999999737 + 10 +-65.46731791964308 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +1162 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +75.49499999999743 + 10 +-65.46731791964308 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +1163 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +67.47999999999739 + 10 +-74.00477883783428 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +1164 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +75.51999999999741 + 10 +-74.00477883783428 + 20 +75.51999999999741 + 0 +LWPOLYLINE + 5 +1165 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +76.50499999999735 + 10 +-65.46731791964308 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +1166 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +84.49499999999743 + 10 +-65.46731791964308 + 20 +84.4949999999974 + 0 +LWPOLYLINE + 5 +1167 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +76.47999999999739 + 10 +-74.00477883783428 + 20 +76.47999999999739 + 0 +LWPOLYLINE + 5 +1168 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +84.51999999999741 + 10 +-74.00477883783428 + 20 +84.51999999999741 + 0 +LWPOLYLINE + 5 +1169 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +85.50499999999735 + 10 +-65.46731791964308 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +116A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.04133427508309 + 20 +93.49499999999743 + 10 +-65.46731791964308 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +116B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +85.47999999999739 + 10 +-74.00477883783428 + 20 +85.47999999999739 + 0 +LWPOLYLINE + 5 +116C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.10279893347818 + 20 +93.51999999999741 + 10 +-74.00477883783428 + 20 +93.51999999999741 + 0 +LWPOLYLINE + 5 +116D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.6663342750831 + 20 +-13.49500000000263 + 10 +-83.09231791964307 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +116E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.6663342750831 + 20 +-5.505000000002568 + 10 +-83.09231791964307 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +116F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.72779893347821 + 20 +-13.52000000000261 + 10 +-91.62977883783425 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +1170 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.72779893347821 + 20 +-5.48000000000259 + 10 +-91.62977883783425 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +1171 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.6663342750831 + 20 +-4.495000000002634 + 10 +-83.09231791964307 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +1172 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.6663342750831 + 20 +3.494999999997439 + 10 +-83.09231791964307 + 20 +3.494999999997404 + 0 +LWPOLYLINE + 5 +1173 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.72779893347821 + 20 +-4.520000000002611 + 10 +-91.62977883783425 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +1174 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.72779893347821 + 20 +3.51999999999741 + 10 +-91.62977883783425 + 20 +3.51999999999741 + 0 +LWPOLYLINE + 5 +1175 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.6663342750831 + 20 +4.504999999997374 + 10 +-83.09231791964307 + 20 +4.504999999997388 + 0 +LWPOLYLINE + 5 +1176 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +12.49499999999743 + 10 +-83.09231791964305 + 20 +12.4949999999974 + 0 +LWPOLYLINE + 5 +1177 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.72779893347821 + 20 +4.479999999997389 + 10 +-91.62977883783425 + 20 +4.479999999997389 + 0 +LWPOLYLINE + 5 +1178 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +12.51999999999741 + 10 +-91.62977883783424 + 20 +12.51999999999741 + 0 +LWPOLYLINE + 5 +1179 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +13.50499999999737 + 10 +-83.09231791964305 + 20 +13.5049999999974 + 0 +LWPOLYLINE + 5 +117A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +21.49499999999743 + 10 +-83.09231791964305 + 20 +21.49499999999741 + 0 +LWPOLYLINE + 5 +117B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +13.47999999999739 + 10 +-91.62977883783424 + 20 +13.47999999999739 + 0 +LWPOLYLINE + 5 +117C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +21.51999999999741 + 10 +-91.62977883783424 + 20 +21.51999999999741 + 0 +LWPOLYLINE + 5 +117D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +22.50499999999737 + 10 +-83.09231791964305 + 20 +22.5049999999974 + 0 +LWPOLYLINE + 5 +117E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +30.49499999999743 + 10 +-83.09231791964305 + 20 +30.4949999999974 + 0 +LWPOLYLINE + 5 +117F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +22.4799999999974 + 10 +-91.62977883783424 + 20 +22.4799999999974 + 0 +LWPOLYLINE + 5 +1180 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +30.51999999999741 + 10 +-91.62977883783424 + 20 +30.51999999999741 + 0 +LWPOLYLINE + 5 +1181 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +31.50499999999736 + 10 +-83.09231791964305 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +1182 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +39.49499999999743 + 10 +-83.09231791964305 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +1183 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +31.47999999999739 + 10 +-91.62977883783424 + 20 +31.47999999999739 + 0 +LWPOLYLINE + 5 +1184 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +39.51999999999741 + 10 +-91.62977883783424 + 20 +39.51999999999741 + 0 +LWPOLYLINE + 5 +1185 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +40.50499999999737 + 10 +-83.09231791964305 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +1186 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +48.49499999999743 + 10 +-83.09231791964305 + 20 +48.49499999999742 + 0 +LWPOLYLINE + 5 +1187 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +40.47999999999739 + 10 +-91.62977883783424 + 20 +40.47999999999739 + 0 +LWPOLYLINE + 5 +1188 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +48.51999999999741 + 10 +-91.62977883783424 + 20 +48.51999999999741 + 0 +LWPOLYLINE + 5 +1189 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +49.50499999999737 + 10 +-83.09231791964305 + 20 +49.5049999999974 + 0 +LWPOLYLINE + 5 +118A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +57.49499999999743 + 10 +-83.09231791964305 + 20 +57.4949999999974 + 0 +LWPOLYLINE + 5 +118B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +49.47999999999739 + 10 +-91.62977883783424 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +118C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +57.51999999999741 + 10 +-91.62977883783424 + 20 +57.51999999999741 + 0 +LWPOLYLINE + 5 +118D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +58.50499999999737 + 10 +-83.09231791964305 + 20 +58.50499999999739 + 0 +LWPOLYLINE + 5 +118E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +66.49499999999743 + 10 +-83.09231791964305 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +118F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +58.47999999999739 + 10 +-91.62977883783424 + 20 +58.47999999999739 + 0 +LWPOLYLINE + 5 +1190 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +66.51999999999741 + 10 +-91.62977883783424 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +1191 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +67.50499999999737 + 10 +-83.09231791964305 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +1192 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +75.49499999999743 + 10 +-83.09231791964305 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +1193 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +67.47999999999739 + 10 +-91.62977883783424 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +1194 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +75.51999999999741 + 10 +-91.62977883783424 + 20 +75.51999999999741 + 0 +LWPOLYLINE + 5 +1195 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +76.50499999999737 + 10 +-83.09231791964305 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +1196 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +84.49499999999743 + 10 +-83.09231791964305 + 20 +84.4949999999974 + 0 +LWPOLYLINE + 5 +1197 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +76.47999999999739 + 10 +-91.62977883783424 + 20 +76.47999999999739 + 0 +LWPOLYLINE + 5 +1198 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +84.51999999999741 + 10 +-91.62977883783424 + 20 +84.51999999999741 + 0 +LWPOLYLINE + 5 +1199 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +85.50499999999735 + 10 +-83.09231791964305 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +119A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-74.66633427508309 + 20 +93.49499999999743 + 10 +-83.09231791964305 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +119B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +85.47999999999739 + 10 +-91.62977883783424 + 20 +85.47999999999739 + 0 +LWPOLYLINE + 5 +119C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-87.7277989334782 + 20 +93.51999999999741 + 10 +-91.62977883783424 + 20 +93.51999999999741 + 0 +LWPOLYLINE + 5 +119D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508306 + 20 +-13.49500000000263 + 10 +-100.7173179196431 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +119E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508306 + 20 +-5.505000000002568 + 10 +-100.7173179196431 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +119F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +-13.52000000000261 + 10 +-109.2547788378343 + 20 +-13.52000000000261 + 0 +LWPOLYLINE + 5 +11A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +-5.48000000000259 + 10 +-109.2547788378343 + 20 +-5.48000000000259 + 0 +LWPOLYLINE + 5 +11A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508306 + 20 +-4.495000000002634 + 10 +-100.7173179196431 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +11A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508306 + 20 +3.494999999997439 + 10 +-100.7173179196431 + 20 +3.494999999997411 + 0 +LWPOLYLINE + 5 +11A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +-4.520000000002611 + 10 +-109.2547788378343 + 20 +-4.520000000002611 + 0 +LWPOLYLINE + 5 +11A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +3.519999999997417 + 10 +-109.2547788378343 + 20 +3.519999999997417 + 0 +LWPOLYLINE + 5 +11A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508306 + 20 +4.504999999997374 + 10 +-100.7173179196431 + 20 +4.504999999997395 + 0 +LWPOLYLINE + 5 +11A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +12.49499999999743 + 10 +-100.7173179196431 + 20 +12.49499999999741 + 0 +LWPOLYLINE + 5 +11A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +4.479999999997396 + 10 +-109.2547788378343 + 20 +4.479999999997396 + 0 +LWPOLYLINE + 5 +11A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +12.51999999999742 + 10 +-109.2547788378342 + 20 +12.51999999999742 + 0 +LWPOLYLINE + 5 +11A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +13.50499999999737 + 10 +-100.7173179196431 + 20 +13.50499999999741 + 0 +LWPOLYLINE + 5 +11AA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +21.49499999999743 + 10 +-100.7173179196431 + 20 +21.49499999999742 + 0 +LWPOLYLINE + 5 +11AB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +13.4799999999974 + 10 +-109.2547788378342 + 20 +13.4799999999974 + 0 +LWPOLYLINE + 5 +11AC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +21.51999999999742 + 10 +-109.2547788378342 + 20 +21.51999999999742 + 0 +LWPOLYLINE + 5 +11AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +22.50499999999737 + 10 +-100.7173179196431 + 20 +22.50499999999741 + 0 +LWPOLYLINE + 5 +11AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +30.49499999999743 + 10 +-100.7173179196431 + 20 +30.49499999999741 + 0 +LWPOLYLINE + 5 +11AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +22.47999999999741 + 10 +-109.2547788378342 + 20 +22.47999999999741 + 0 +LWPOLYLINE + 5 +11B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +30.51999999999742 + 10 +-109.2547788378342 + 20 +30.51999999999742 + 0 +LWPOLYLINE + 5 +11B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +31.50499999999736 + 10 +-100.7173179196431 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +11B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +39.49499999999743 + 10 +-100.7173179196431 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +11B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +31.4799999999974 + 10 +-109.2547788378342 + 20 +31.4799999999974 + 0 +LWPOLYLINE + 5 +11B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +39.51999999999741 + 10 +-109.2547788378342 + 20 +39.51999999999741 + 0 +LWPOLYLINE + 5 +11B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +40.50499999999737 + 10 +-100.7173179196431 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +11B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +48.49499999999743 + 10 +-100.7173179196431 + 20 +48.49499999999742 + 0 +LWPOLYLINE + 5 +11B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +40.47999999999739 + 10 +-109.2547788378342 + 20 +40.47999999999739 + 0 +LWPOLYLINE + 5 +11B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +48.51999999999741 + 10 +-109.2547788378342 + 20 +48.51999999999741 + 0 +LWPOLYLINE + 5 +11B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +49.50499999999737 + 10 +-100.7173179196431 + 20 +49.5049999999974 + 0 +LWPOLYLINE + 5 +11BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +57.49499999999743 + 10 +-100.7173179196431 + 20 +57.49499999999741 + 0 +LWPOLYLINE + 5 +11BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +49.4799999999974 + 10 +-109.2547788378342 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +11BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +57.51999999999742 + 10 +-109.2547788378342 + 20 +57.51999999999742 + 0 +LWPOLYLINE + 5 +11BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +58.50499999999737 + 10 +-100.7173179196431 + 20 +58.5049999999974 + 0 +LWPOLYLINE + 5 +11BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +66.49499999999743 + 10 +-100.7173179196431 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +11BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +58.4799999999974 + 10 +-109.2547788378342 + 20 +58.4799999999974 + 0 +LWPOLYLINE + 5 +11C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +66.51999999999741 + 10 +-109.2547788378342 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +11C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +67.50499999999737 + 10 +-100.7173179196431 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +11C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +75.49499999999743 + 10 +-100.7173179196431 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +11C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +67.47999999999739 + 10 +-109.2547788378342 + 20 +67.47999999999739 + 0 +LWPOLYLINE + 5 +11C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +75.51999999999742 + 10 +-109.2547788378342 + 20 +75.51999999999742 + 0 +LWPOLYLINE + 5 +11C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +76.50499999999737 + 10 +-100.7173179196431 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +11C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +84.49499999999743 + 10 +-100.7173179196431 + 20 +84.4949999999974 + 0 +LWPOLYLINE + 5 +11C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +76.4799999999974 + 10 +-109.2547788378342 + 20 +76.4799999999974 + 0 +LWPOLYLINE + 5 +11C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +84.51999999999741 + 10 +-109.2547788378342 + 20 +84.51999999999741 + 0 +LWPOLYLINE + 5 +11C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +85.50499999999737 + 10 +-100.7173179196431 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +11CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-92.29133427508305 + 20 +93.49499999999743 + 10 +-100.7173179196431 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +11CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +85.47999999999739 + 10 +-109.2547788378342 + 20 +85.47999999999739 + 0 +LWPOLYLINE + 5 +11CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-105.3527989334782 + 20 +93.51999999999741 + 10 +-109.2547788378342 + 20 +93.51999999999741 + 0 +LWPOLYLINE + 5 +11CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.9163342750831 + 20 +-13.49500000000263 + 10 +-118.3423179196431 + 20 +-13.49500000000261 + 0 +LWPOLYLINE + 5 +11CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.9163342750831 + 20 +-5.505000000002568 + 10 +-118.3423179196431 + 20 +-5.505000000002596 + 0 +LWPOLYLINE + 5 +11CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +-13.52000000000261 + 10 +-126.8797788378343 + 20 +-13.5200000000026 + 0 +LWPOLYLINE + 5 +11D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +-5.48000000000259 + 10 +-126.8797788378343 + 20 +-5.480000000002576 + 0 +LWPOLYLINE + 5 +11D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.9163342750831 + 20 +-4.495000000002634 + 10 +-118.3423179196431 + 20 +-4.495000000002605 + 0 +LWPOLYLINE + 5 +11D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.9163342750831 + 20 +3.494999999997447 + 10 +-118.3423179196431 + 20 +3.494999999997411 + 0 +LWPOLYLINE + 5 +11D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +-4.520000000002611 + 10 +-126.8797788378343 + 20 +-4.520000000002597 + 0 +LWPOLYLINE + 5 +11D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +3.519999999997417 + 10 +-126.8797788378343 + 20 +3.519999999997417 + 0 +LWPOLYLINE + 5 +11D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.9163342750831 + 20 +4.504999999997381 + 10 +-118.3423179196431 + 20 +4.504999999997395 + 0 +LWPOLYLINE + 5 +11D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +12.49499999999744 + 10 +-118.3423179196431 + 20 +12.49499999999741 + 0 +LWPOLYLINE + 5 +11D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +4.479999999997396 + 10 +-126.8797788378343 + 20 +4.479999999997396 + 0 +LWPOLYLINE + 5 +11D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +12.51999999999742 + 10 +-126.8797788378343 + 20 +12.51999999999742 + 0 +LWPOLYLINE + 5 +11D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +13.50499999999738 + 10 +-118.3423179196431 + 20 +13.50499999999741 + 0 +LWPOLYLINE + 5 +11DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +21.49499999999744 + 10 +-118.3423179196431 + 20 +21.49499999999742 + 0 +LWPOLYLINE + 5 +11DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +13.4799999999974 + 10 +-126.8797788378343 + 20 +13.4799999999974 + 0 +LWPOLYLINE + 5 +11DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +21.51999999999742 + 10 +-126.8797788378343 + 20 +21.51999999999742 + 0 +LWPOLYLINE + 5 +11DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +22.50499999999738 + 10 +-118.3423179196431 + 20 +22.50499999999741 + 0 +LWPOLYLINE + 5 +11DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +30.49499999999744 + 10 +-118.3423179196431 + 20 +30.49499999999741 + 0 +LWPOLYLINE + 5 +11DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +22.47999999999741 + 10 +-126.8797788378343 + 20 +22.47999999999741 + 0 +LWPOLYLINE + 5 +11E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +30.51999999999742 + 10 +-126.8797788378343 + 20 +30.51999999999742 + 0 +LWPOLYLINE + 5 +11E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +31.50499999999737 + 10 +-118.3423179196431 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +11E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +39.49499999999743 + 10 +-118.3423179196431 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +11E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +31.4799999999974 + 10 +-126.8797788378343 + 20 +31.4799999999974 + 0 +LWPOLYLINE + 5 +11E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +39.51999999999742 + 10 +-126.8797788378342 + 20 +39.51999999999742 + 0 +LWPOLYLINE + 5 +11E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +40.50499999999737 + 10 +-118.3423179196431 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +11E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +48.49499999999743 + 10 +-118.3423179196431 + 20 +48.49499999999742 + 0 +LWPOLYLINE + 5 +11E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +40.4799999999974 + 10 +-126.8797788378342 + 20 +40.4799999999974 + 0 +LWPOLYLINE + 5 +11E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +48.51999999999742 + 10 +-126.8797788378342 + 20 +48.51999999999742 + 0 +LWPOLYLINE + 5 +11E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +49.50499999999738 + 10 +-118.3423179196431 + 20 +49.50499999999741 + 0 +LWPOLYLINE + 5 +11EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +57.49499999999744 + 10 +-118.3423179196431 + 20 +57.49499999999741 + 0 +LWPOLYLINE + 5 +11EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +49.4799999999974 + 10 +-126.8797788378342 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +11EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +57.51999999999742 + 10 +-126.8797788378342 + 20 +57.51999999999742 + 0 +LWPOLYLINE + 5 +11ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +58.50499999999737 + 10 +-118.3423179196431 + 20 +58.5049999999974 + 0 +LWPOLYLINE + 5 +11EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +66.49499999999743 + 10 +-118.3423179196431 + 20 +66.4949999999974 + 0 +LWPOLYLINE + 5 +11EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +58.4799999999974 + 10 +-126.8797788378342 + 20 +58.4799999999974 + 0 +LWPOLYLINE + 5 +11F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +66.51999999999741 + 10 +-126.8797788378342 + 20 +66.51999999999741 + 0 +LWPOLYLINE + 5 +11F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +67.50499999999737 + 10 +-118.3423179196431 + 20 +67.5049999999974 + 0 +LWPOLYLINE + 5 +11F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +75.49499999999743 + 10 +-118.3423179196431 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +11F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +67.47999999999739 + 10 +-126.8797788378342 + 20 +67.4799999999974 + 0 +LWPOLYLINE + 5 +11F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +75.51999999999742 + 10 +-126.8797788378342 + 20 +75.51999999999742 + 0 +LWPOLYLINE + 5 +11F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +76.50499999999737 + 10 +-118.3423179196431 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +11F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +84.49499999999743 + 10 +-118.3423179196431 + 20 +84.4949999999974 + 0 +LWPOLYLINE + 5 +11F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +76.4799999999974 + 10 +-126.8797788378342 + 20 +76.4799999999974 + 0 +LWPOLYLINE + 5 +11F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +84.51999999999742 + 10 +-126.8797788378342 + 20 +84.51999999999742 + 0 +LWPOLYLINE + 5 +11F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +85.50499999999737 + 10 +-118.3423179196431 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +11FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-109.916334275083 + 20 +93.49499999999743 + 10 +-118.3423179196431 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +11FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +85.4799999999974 + 10 +-126.8797788378342 + 20 +85.4799999999974 + 0 +LWPOLYLINE + 5 +11FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-122.9777989334782 + 20 +93.51999999999742 + 10 +-126.8797788378342 + 20 +93.51999999999742 + 0 +LWPOLYLINE + 5 +11FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +-13.49500000000262 + 10 +-135.9673179196431 + 20 +-13.49500000000259 + 0 +LWPOLYLINE + 5 +11FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +-5.505000000002553 + 10 +-135.9673179196431 + 20 +-5.505000000002582 + 0 +LWPOLYLINE + 5 +11FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +-13.5200000000026 + 10 +-144.5047788378342 + 20 +-13.5200000000026 + 0 +LWPOLYLINE + 5 +1200 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +-5.480000000002576 + 10 +-144.5047788378342 + 20 +-5.480000000002576 + 0 +LWPOLYLINE + 5 +1201 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +-4.495000000002619 + 10 +-135.9673179196431 + 20 +-4.495000000002591 + 0 +LWPOLYLINE + 5 +1202 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +3.494999999997447 + 10 +-135.9673179196431 + 20 +3.494999999997411 + 0 +LWPOLYLINE + 5 +1203 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +-4.520000000002597 + 10 +-144.5047788378342 + 20 +-4.520000000002597 + 0 +LWPOLYLINE + 5 +1204 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +3.519999999997417 + 10 +-144.5047788378342 + 20 +3.519999999997417 + 0 +LWPOLYLINE + 5 +1205 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +4.504999999997381 + 10 +-135.9673179196431 + 20 +4.504999999997395 + 0 +LWPOLYLINE + 5 +1206 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +12.49499999999744 + 10 +-135.9673179196431 + 20 +12.49499999999741 + 0 +LWPOLYLINE + 5 +1207 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +4.479999999997396 + 10 +-144.5047788378342 + 20 +4.479999999997396 + 0 +LWPOLYLINE + 5 +1208 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +12.51999999999742 + 10 +-144.5047788378342 + 20 +12.51999999999742 + 0 +LWPOLYLINE + 5 +1209 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +13.50499999999738 + 10 +-135.9673179196431 + 20 +13.50499999999741 + 0 +LWPOLYLINE + 5 +120A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +21.49499999999744 + 10 +-135.9673179196431 + 20 +21.49499999999742 + 0 +LWPOLYLINE + 5 +120B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +13.4799999999974 + 10 +-144.5047788378342 + 20 +13.4799999999974 + 0 +LWPOLYLINE + 5 +120C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +21.51999999999742 + 10 +-144.5047788378342 + 20 +21.51999999999742 + 0 +LWPOLYLINE + 5 +120D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +22.50499999999738 + 10 +-135.9673179196431 + 20 +22.50499999999741 + 0 +LWPOLYLINE + 5 +120E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +30.49499999999744 + 10 +-135.9673179196431 + 20 +30.49499999999741 + 0 +LWPOLYLINE + 5 +120F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +22.47999999999741 + 10 +-144.5047788378342 + 20 +22.47999999999741 + 0 +LWPOLYLINE + 5 +1210 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +30.51999999999742 + 10 +-144.5047788378342 + 20 +30.51999999999742 + 0 +LWPOLYLINE + 5 +1211 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +31.50499999999737 + 10 +-135.9673179196431 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +1212 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +39.49499999999744 + 10 +-135.9673179196431 + 20 +39.4949999999974 + 0 +LWPOLYLINE + 5 +1213 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +31.4799999999974 + 10 +-144.5047788378342 + 20 +31.4799999999974 + 0 +LWPOLYLINE + 5 +1214 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +39.51999999999742 + 10 +-144.5047788378342 + 20 +39.51999999999742 + 0 +LWPOLYLINE + 5 +1215 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +40.50499999999738 + 10 +-135.9673179196431 + 20 +40.50499999999739 + 0 +LWPOLYLINE + 5 +1216 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +48.49499999999744 + 10 +-135.9673179196431 + 20 +48.49499999999742 + 0 +LWPOLYLINE + 5 +1217 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +40.4799999999974 + 10 +-144.5047788378342 + 20 +40.4799999999974 + 0 +LWPOLYLINE + 5 +1218 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +48.51999999999742 + 10 +-144.5047788378342 + 20 +48.51999999999742 + 0 +LWPOLYLINE + 5 +1219 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +49.50499999999738 + 10 +-135.9673179196431 + 20 +49.50499999999741 + 0 +LWPOLYLINE + 5 +121A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +57.49499999999744 + 10 +-135.9673179196431 + 20 +57.49499999999741 + 0 +LWPOLYLINE + 5 +121B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +49.4799999999974 + 10 +-144.5047788378342 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +121C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +57.51999999999742 + 10 +-144.5047788378342 + 20 +57.51999999999742 + 0 +LWPOLYLINE + 5 +121D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +58.50499999999737 + 10 +-135.9673179196431 + 20 +58.5049999999974 + 0 +LWPOLYLINE + 5 +121E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +66.49499999999743 + 10 +-135.9673179196431 + 20 +66.49499999999742 + 0 +LWPOLYLINE + 5 +121F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +58.4799999999974 + 10 +-144.5047788378342 + 20 +58.4799999999974 + 0 +LWPOLYLINE + 5 +1220 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +66.51999999999742 + 10 +-144.5047788378342 + 20 +66.51999999999742 + 0 +LWPOLYLINE + 5 +1221 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +67.50499999999738 + 10 +-135.9673179196431 + 20 +67.50499999999741 + 0 +LWPOLYLINE + 5 +1222 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +75.49499999999743 + 10 +-135.9673179196431 + 20 +75.4949999999974 + 0 +LWPOLYLINE + 5 +1223 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +67.4799999999974 + 10 +-144.5047788378342 + 20 +67.4799999999974 + 0 +LWPOLYLINE + 5 +1224 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +75.51999999999742 + 10 +-144.5047788378342 + 20 +75.51999999999742 + 0 +LWPOLYLINE + 5 +1225 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +76.50499999999737 + 10 +-135.9673179196431 + 20 +76.5049999999974 + 0 +LWPOLYLINE + 5 +1226 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +84.49499999999745 + 10 +-135.9673179196431 + 20 +84.4949999999974 + 0 +LWPOLYLINE + 5 +1227 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +76.4799999999974 + 10 +-144.5047788378342 + 20 +76.4799999999974 + 0 +LWPOLYLINE + 5 +1228 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +84.51999999999742 + 10 +-144.5047788378342 + 20 +84.51999999999742 + 0 +LWPOLYLINE + 5 +1229 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +85.50499999999737 + 10 +-135.9673179196431 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +122A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-127.541334275083 + 20 +93.49499999999745 + 10 +-135.9673179196431 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +122B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +85.4799999999974 + 10 +-144.5047788378342 + 20 +85.4799999999974 + 0 +LWPOLYLINE + 5 +122C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-140.6027989334782 + 20 +93.51999999999742 + 10 +-144.5047788378342 + 20 +93.51999999999742 + 0 +LWPOLYLINE + 5 +122D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +-13.49500000000262 + 10 +-153.5923179196431 + 20 +-13.49500000000259 + 0 +LWPOLYLINE + 5 +122E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +-5.505000000002553 + 10 +-153.5923179196431 + 20 +-5.505000000002582 + 0 +LWPOLYLINE + 5 +122F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +-13.5200000000026 + 10 +-162.1297788378342 + 20 +-13.5200000000026 + 0 +LWPOLYLINE + 5 +1230 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +-5.480000000002576 + 10 +-162.1297788378342 + 20 +-5.480000000002576 + 0 +LWPOLYLINE + 5 +1231 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +-4.495000000002619 + 10 +-153.5923179196431 + 20 +-4.495000000002591 + 0 +LWPOLYLINE + 5 +1232 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +3.494999999997447 + 10 +-153.5923179196431 + 20 +3.494999999997411 + 0 +LWPOLYLINE + 5 +1233 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +-4.520000000002597 + 10 +-162.1297788378342 + 20 +-4.520000000002597 + 0 +LWPOLYLINE + 5 +1234 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +3.519999999997424 + 10 +-162.1297788378342 + 20 +3.519999999997424 + 0 +LWPOLYLINE + 5 +1235 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +4.504999999997381 + 10 +-153.5923179196431 + 20 +4.504999999997395 + 0 +LWPOLYLINE + 5 +1236 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +12.49499999999744 + 10 +-153.5923179196431 + 20 +12.49499999999741 + 0 +LWPOLYLINE + 5 +1237 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +4.479999999997403 + 10 +-162.1297788378342 + 20 +4.479999999997403 + 0 +LWPOLYLINE + 5 +1238 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +12.51999999999742 + 10 +-162.1297788378342 + 20 +12.51999999999742 + 0 +LWPOLYLINE + 5 +1239 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +13.50499999999738 + 10 +-153.5923179196431 + 20 +13.50499999999741 + 0 +LWPOLYLINE + 5 +123A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +21.49499999999744 + 10 +-153.5923179196431 + 20 +21.49499999999742 + 0 +LWPOLYLINE + 5 +123B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +13.4799999999974 + 10 +-162.1297788378342 + 20 +13.4799999999974 + 0 +LWPOLYLINE + 5 +123C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +21.51999999999742 + 10 +-162.1297788378342 + 20 +21.51999999999742 + 0 +LWPOLYLINE + 5 +123D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +22.50499999999738 + 10 +-153.5923179196431 + 20 +22.50499999999741 + 0 +LWPOLYLINE + 5 +123E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +30.49499999999744 + 10 +-153.5923179196431 + 20 +30.49499999999741 + 0 +LWPOLYLINE + 5 +123F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +22.47999999999742 + 10 +-162.1297788378342 + 20 +22.47999999999742 + 0 +LWPOLYLINE + 5 +1240 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +30.51999999999742 + 10 +-162.1297788378342 + 20 +30.51999999999742 + 0 +LWPOLYLINE + 5 +1241 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +31.50499999999737 + 10 +-153.5923179196431 + 20 +31.50499999999739 + 0 +LWPOLYLINE + 5 +1242 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +39.49499999999745 + 10 +-153.5923179196431 + 20 +39.49499999999741 + 0 +LWPOLYLINE + 5 +1243 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +31.4799999999974 + 10 +-162.1297788378342 + 20 +31.4799999999974 + 0 +LWPOLYLINE + 5 +1244 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +39.51999999999742 + 10 +-162.1297788378342 + 20 +39.51999999999742 + 0 +LWPOLYLINE + 5 +1245 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +40.50499999999738 + 10 +-153.5923179196431 + 20 +40.5049999999974 + 0 +LWPOLYLINE + 5 +1246 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +48.49499999999745 + 10 +-153.5923179196431 + 20 +48.49499999999742 + 0 +LWPOLYLINE + 5 +1247 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +40.4799999999974 + 10 +-162.1297788378342 + 20 +40.4799999999974 + 0 +LWPOLYLINE + 5 +1248 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +48.51999999999742 + 10 +-162.1297788378342 + 20 +48.51999999999742 + 0 +LWPOLYLINE + 5 +1249 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +49.50499999999738 + 10 +-153.5923179196431 + 20 +49.50499999999741 + 0 +LWPOLYLINE + 5 +124A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +57.49499999999745 + 10 +-153.5923179196431 + 20 +57.49499999999742 + 0 +LWPOLYLINE + 5 +124B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +49.4799999999974 + 10 +-162.1297788378342 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +124C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +57.51999999999742 + 10 +-162.1297788378342 + 20 +57.51999999999742 + 0 +LWPOLYLINE + 5 +124D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +58.50499999999738 + 10 +-153.5923179196431 + 20 +58.50499999999741 + 0 +LWPOLYLINE + 5 +124E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +66.49499999999745 + 10 +-153.5923179196431 + 20 +66.49499999999742 + 0 +LWPOLYLINE + 5 +124F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +58.4799999999974 + 10 +-162.1297788378342 + 20 +58.4799999999974 + 0 +LWPOLYLINE + 5 +1250 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +66.51999999999742 + 10 +-162.1297788378342 + 20 +66.51999999999742 + 0 +LWPOLYLINE + 5 +1251 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +67.50499999999738 + 10 +-153.5923179196431 + 20 +67.50499999999741 + 0 +LWPOLYLINE + 5 +1252 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +75.49499999999745 + 10 +-153.5923179196431 + 20 +75.49499999999742 + 0 +LWPOLYLINE + 5 +1253 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +67.4799999999974 + 10 +-162.1297788378342 + 20 +67.4799999999974 + 0 +LWPOLYLINE + 5 +1254 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +75.51999999999742 + 10 +-162.1297788378342 + 20 +75.51999999999742 + 0 +LWPOLYLINE + 5 +1255 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +76.50499999999737 + 10 +-153.5923179196431 + 20 +76.50499999999741 + 0 +LWPOLYLINE + 5 +1256 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +84.49499999999745 + 10 +-153.5923179196431 + 20 +84.49499999999742 + 0 +LWPOLYLINE + 5 +1257 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +76.4799999999974 + 10 +-162.1297788378342 + 20 +76.4799999999974 + 0 +LWPOLYLINE + 5 +1258 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +84.51999999999742 + 10 +-162.1297788378342 + 20 +84.51999999999742 + 0 +LWPOLYLINE + 5 +1259 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +85.50499999999737 + 10 +-153.5923179196431 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +125A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.166334275083 + 20 +93.49499999999745 + 10 +-153.5923179196431 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +125B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +85.4799999999974 + 10 +-162.1297788378342 + 20 +85.4799999999974 + 0 +LWPOLYLINE + 5 +125C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-158.2277989334782 + 20 +93.51999999999742 + 10 +-162.1297788378342 + 20 +93.51999999999742 + 0 +LWPOLYLINE + 5 +125D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +-13.49500000000262 + 10 +-171.2173179196431 + 20 +-13.49500000000259 + 0 +LWPOLYLINE + 5 +125E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +-5.505000000002553 + 10 +-171.2173179196431 + 20 +-5.505000000002582 + 0 +LWPOLYLINE + 5 +125F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +-13.5200000000026 + 10 +-179.7547788378342 + 20 +-13.5200000000026 + 0 +LWPOLYLINE + 5 +1260 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +-5.480000000002576 + 10 +-179.7547788378342 + 20 +-5.480000000002576 + 0 +LWPOLYLINE + 5 +1261 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +-4.495000000002619 + 10 +-171.2173179196431 + 20 +-4.495000000002591 + 0 +LWPOLYLINE + 5 +1262 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +3.494999999997454 + 10 +-171.2173179196431 + 20 +3.494999999997418 + 0 +LWPOLYLINE + 5 +1263 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +-4.520000000002597 + 10 +-179.7547788378342 + 20 +-4.520000000002597 + 0 +LWPOLYLINE + 5 +1264 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +3.519999999997424 + 10 +-179.7547788378342 + 20 +3.519999999997424 + 0 +LWPOLYLINE + 5 +1265 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +4.504999999997388 + 10 +-171.2173179196431 + 20 +4.504999999997402 + 0 +LWPOLYLINE + 5 +1266 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +12.49499999999745 + 10 +-171.2173179196431 + 20 +12.49499999999742 + 0 +LWPOLYLINE + 5 +1267 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +4.479999999997403 + 10 +-179.7547788378342 + 20 +4.479999999997403 + 0 +LWPOLYLINE + 5 +1268 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +12.51999999999742 + 10 +-179.7547788378342 + 20 +12.51999999999742 + 0 +LWPOLYLINE + 5 +1269 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +13.50499999999739 + 10 +-171.2173179196431 + 20 +13.50499999999742 + 0 +LWPOLYLINE + 5 +126A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +21.49499999999745 + 10 +-171.2173179196431 + 20 +21.49499999999743 + 0 +LWPOLYLINE + 5 +126B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +13.4799999999974 + 10 +-179.7547788378342 + 20 +13.4799999999974 + 0 +LWPOLYLINE + 5 +126C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +21.51999999999742 + 10 +-179.7547788378342 + 20 +21.51999999999742 + 0 +LWPOLYLINE + 5 +126D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +22.50499999999739 + 10 +-171.2173179196431 + 20 +22.50499999999742 + 0 +LWPOLYLINE + 5 +126E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +30.49499999999745 + 10 +-171.2173179196431 + 20 +30.49499999999742 + 0 +LWPOLYLINE + 5 +126F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +22.47999999999742 + 10 +-179.7547788378342 + 20 +22.47999999999742 + 0 +LWPOLYLINE + 5 +1270 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +30.51999999999742 + 10 +-179.7547788378342 + 20 +30.51999999999742 + 0 +LWPOLYLINE + 5 +1271 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +31.50499999999737 + 10 +-171.2173179196431 + 20 +31.5049999999974 + 0 +LWPOLYLINE + 5 +1272 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +39.49499999999745 + 10 +-171.2173179196431 + 20 +39.49499999999742 + 0 +LWPOLYLINE + 5 +1273 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +31.4799999999974 + 10 +-179.7547788378342 + 20 +31.4799999999974 + 0 +LWPOLYLINE + 5 +1274 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +39.51999999999742 + 10 +-179.7547788378342 + 20 +39.51999999999742 + 0 +LWPOLYLINE + 5 +1275 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +40.50499999999738 + 10 +-171.2173179196431 + 20 +40.50499999999741 + 0 +LWPOLYLINE + 5 +1276 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +48.49499999999745 + 10 +-171.2173179196431 + 20 +48.49499999999743 + 0 +LWPOLYLINE + 5 +1277 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +40.4799999999974 + 10 +-179.7547788378342 + 20 +40.4799999999974 + 0 +LWPOLYLINE + 5 +1278 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +48.51999999999742 + 10 +-179.7547788378342 + 20 +48.51999999999742 + 0 +LWPOLYLINE + 5 +1279 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +49.50499999999738 + 10 +-171.2173179196431 + 20 +49.50499999999741 + 0 +LWPOLYLINE + 5 +127A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +57.49499999999745 + 10 +-171.2173179196431 + 20 +57.49499999999742 + 0 +LWPOLYLINE + 5 +127B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +49.4799999999974 + 10 +-179.7547788378342 + 20 +49.4799999999974 + 0 +LWPOLYLINE + 5 +127C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +57.51999999999742 + 10 +-179.7547788378342 + 20 +57.51999999999742 + 0 +LWPOLYLINE + 5 +127D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +58.50499999999738 + 10 +-171.2173179196431 + 20 +58.50499999999741 + 0 +LWPOLYLINE + 5 +127E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +66.49499999999745 + 10 +-171.2173179196431 + 20 +66.49499999999742 + 0 +LWPOLYLINE + 5 +127F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +58.4799999999974 + 10 +-179.7547788378342 + 20 +58.4799999999974 + 0 +LWPOLYLINE + 5 +1280 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +66.51999999999742 + 10 +-179.7547788378342 + 20 +66.51999999999742 + 0 +LWPOLYLINE + 5 +1281 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +67.50499999999738 + 10 +-171.2173179196431 + 20 +67.50499999999741 + 0 +LWPOLYLINE + 5 +1282 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +75.49499999999745 + 10 +-171.2173179196431 + 20 +75.49499999999742 + 0 +LWPOLYLINE + 5 +1283 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +67.4799999999974 + 10 +-179.7547788378342 + 20 +67.4799999999974 + 0 +LWPOLYLINE + 5 +1284 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +75.51999999999742 + 10 +-179.7547788378342 + 20 +75.51999999999742 + 0 +LWPOLYLINE + 5 +1285 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +76.50499999999738 + 10 +-171.2173179196431 + 20 +76.50499999999741 + 0 +LWPOLYLINE + 5 +1286 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +84.49499999999745 + 10 +-171.2173179196431 + 20 +84.49499999999742 + 0 +LWPOLYLINE + 5 +1287 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +76.4799999999974 + 10 +-179.7547788378342 + 20 +76.4799999999974 + 0 +LWPOLYLINE + 5 +1288 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +84.51999999999742 + 10 +-179.7547788378342 + 20 +84.51999999999742 + 0 +LWPOLYLINE + 5 +1289 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +85.50499999999737 + 10 +-171.2173179196431 + 20 +85.50499999999741 + 0 +LWPOLYLINE + 5 +128A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-162.791334275083 + 20 +93.49499999999745 + 10 +-171.2173179196431 + 20 +93.49499999999742 + 0 +LWPOLYLINE + 5 +128B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +85.4799999999974 + 10 +-179.7547788378342 + 20 +85.4799999999974 + 0 +LWPOLYLINE + 5 +128C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-175.8527989334782 + 20 +93.51999999999742 + 10 +-179.7547788378342 + 20 +93.51999999999742 + 0 +LWPOLYLINE + 5 +128D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-4.142867965644086 + 20 +37.11213203435342 + 10 +-4.355000000000075 + 20 +36.89999999999739 + 10 +-4.355000000000075 + 20 +34.09999999999738 + 10 +-4.142867965644086 + 20 +33.88786796564139 + 0 +LWPOLYLINE + 5 +128E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-21.23213203435589 + 20 +33.88786796564141 + 10 +-21.01999999999998 + 20 +34.09999999999738 + 10 +-21.01999999999998 + 20 +36.89999999999739 + 10 +-21.232132034356 + 20 +37.11213203435338 + 0 +LWPOLYLINE + 5 +128F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-21.76786796564409 + 20 +37.11213203435342 + 10 +-21.98000000000008 + 20 +36.89999999999739 + 10 +-21.98000000000008 + 20 +34.09999999999738 + 10 +-21.76786796564409 + 20 +33.88786796564139 + 0 +LWPOLYLINE + 5 +1290 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.85713203435589 + 20 +33.88786796564142 + 10 +-38.64499999999998 + 20 +34.09999999999739 + 10 +-38.64499999999998 + 20 +36.8999999999974 + 10 +-38.857132034356 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +1291 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-39.39286796564409 + 20 +37.11213203435342 + 10 +-39.60500000000008 + 20 +36.8999999999974 + 10 +-39.60500000000008 + 20 +34.09999999999739 + 10 +-39.39286796564409 + 20 +33.8878679656414 + 0 +LWPOLYLINE + 5 +1292 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-56.48213203435589 + 20 +33.88786796564142 + 10 +-56.26999999999998 + 20 +34.09999999999739 + 10 +-56.26999999999998 + 20 +36.89999999999741 + 10 +-56.48213203435598 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +1293 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-57.01786796564409 + 20 +37.11213203435342 + 10 +-57.23000000000009 + 20 +36.89999999999741 + 10 +-57.23000000000009 + 20 +34.09999999999739 + 10 +-57.01786796564409 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +1294 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-74.10713203435589 + 20 +33.88786796564142 + 10 +-73.89499999999998 + 20 +34.09999999999739 + 10 +-73.89499999999998 + 20 +36.89999999999741 + 10 +-74.10713203435598 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +1295 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-74.64286796564409 + 20 +37.11213203435342 + 10 +-74.85500000000009 + 20 +36.89999999999741 + 10 +-74.85500000000009 + 20 +34.09999999999739 + 10 +-74.64286796564409 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +1296 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-91.73213203435587 + 20 +33.88786796564142 + 10 +-91.51999999999998 + 20 +34.09999999999739 + 10 +-91.51999999999998 + 20 +36.89999999999741 + 10 +-91.73213203435597 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +1297 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-92.26786796564403 + 20 +37.11213203435342 + 10 +-92.48000000000002 + 20 +36.89999999999741 + 10 +-92.48000000000002 + 20 +34.09999999999739 + 10 +-92.26786796564403 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +1298 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.3571320343559 + 20 +33.88786796564142 + 10 +-109.145 + 20 +34.09999999999739 + 10 +-109.145 + 20 +36.89999999999741 + 10 +-109.357132034356 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +1299 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-109.892867965644 + 20 +37.11213203435342 + 10 +-110.105 + 20 +36.89999999999741 + 10 +-110.105 + 20 +34.09999999999739 + 10 +-109.892867965644 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +129A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-126.9821320343559 + 20 +33.88786796564143 + 10 +-126.77 + 20 +34.09999999999739 + 10 +-126.77 + 20 +36.89999999999741 + 10 +-126.982132034356 + 20 +37.11213203435339 + 0 +LWPOLYLINE + 5 +129B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-127.517867965644 + 20 +37.11213203435343 + 10 +-127.73 + 20 +36.89999999999741 + 10 +-127.73 + 20 +34.09999999999739 + 10 +-127.517867965644 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +129C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-144.6071320343559 + 20 +33.88786796564143 + 10 +-144.395 + 20 +34.0999999999974 + 10 +-144.395 + 20 +36.89999999999741 + 10 +-144.607132034356 + 20 +37.1121320343534 + 0 +LWPOLYLINE + 5 +129D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-145.142867965644 + 20 +37.11213203435344 + 10 +-145.355 + 20 +36.89999999999741 + 10 +-145.355 + 20 +34.0999999999974 + 10 +-145.142867965644 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +129E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-162.2321320343559 + 20 +33.88786796564143 + 10 +-162.02 + 20 +34.0999999999974 + 10 +-162.02 + 20 +36.89999999999741 + 10 +-162.232132034356 + 20 +37.1121320343534 + 0 +LWPOLYLINE + 5 +129F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-162.767867965644 + 20 +37.11213203435344 + 10 +-162.98 + 20 +36.89999999999741 + 10 +-162.98 + 20 +34.0999999999974 + 10 +-162.767867965644 + 20 +33.88786796564141 + 0 +LWPOLYLINE + 5 +12A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-179.8571320343559 + 20 +33.88786796564143 + 10 +-179.645 + 20 +34.09999999999741 + 10 +-179.645 + 20 +36.89999999999742 + 10 +-179.857132034356 + 20 +37.11213203435341 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +30 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +2F + 3 +ACAD_MATERIAL +350 +10 + 3 +ACAD_MLEADERSTYLE +350 +4B8 + 3 +ACAD_MLINESTYLE +350 +2C + 3 +ACAD_PLOTSETTINGS +350 +2E + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +494 + 3 +ACAD_TABLESTYLE +350 +31 + 3 +ACAD_VISUALSTYLE +350 +14 + 3 +AcDbVariableDictionary +350 +492 + 0 +DICTIONARY + 5 +4E +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +4F + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +3A + 3 +布局1 +350 +36 + 3 +布局2 +350 +3E + 0 +DICTIONARY + 5 +10 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +12 + 3 +ByLayer +350 +11 + 3 +Global +350 +13 + 0 +DICTIONARY + 5 +4B8 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +2D + 0 +DICTIONARY + 5 +2E +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 +494 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +495 + 3 +A1 +350 +496 + 3 +A2 +350 +497 + 3 +A3 +350 +498 + 3 +A4 +350 +499 + 3 +A5 +350 +49A + 3 +A6 +350 +49B + 3 +A7 +350 +49C + 3 +A8 +350 +49D + 3 +A9 +350 +49E + 3 +B0 +350 +49F + 3 +B1 +350 +4A0 + 3 +B2 +350 +4A1 + 3 +B3 +350 +4A2 + 3 +B4 +350 +4A3 + 3 +B5 +350 +4A4 + 3 +B6 +350 +4A5 + 3 +B7 +350 +4A6 + 3 +B8 +350 +4A7 + 3 +B9 +350 +4A8 + 3 +C0 +350 +4A9 + 3 +C1 +350 +4AA + 3 +C2 +350 +4AB + 3 +C3 +350 +4AC + 3 +C4 +350 +4AD + 3 +C5 +350 +4AE + 3 +C6 +350 +4AF + 3 +C7 +350 +4B0 + 3 +C8 +350 +4B1 + 3 +C9 +350 +4B2 + 3 +D0 +350 +4B3 + 3 +D1 +350 +4B4 + 3 +D2 +350 +4B5 + 0 +DICTIONARY + 5 +31 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +32 + 0 +DICTIONARY + 5 +14 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +1A + 3 +3D Hidden +350 +1C + 3 +3dWireframe +350 +1B + 3 +Basic +350 +19 + 3 +Brighten +350 +20 + 3 +ColorChange +350 +24 + 3 +Conceptual +350 +1D + 3 +Dim +350 +1F + 3 +Facepattern +350 +23 + 3 +Flat +350 +15 + 3 +FlatWithEdges +350 +16 + 3 +Gouraud +350 +17 + 3 +GouraudWithEdges +350 +18 + 3 +Linepattern +350 +22 + 3 +Realistic +350 +1E + 3 +Thicken +350 +21 + 0 +DICTIONARY + 5 +492 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +4B7 + 3 +CTABLESTYLE +350 +493 + 0 +DICTIONARY + 5 +4F +102 +{ACAD_REACTORS +330 +4E +102 +} +330 +4E +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +3A +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +37 +331 +28 + 0 +LAYOUT + 5 +36 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +33 + 0 +LAYOUT + 5 +3E +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft Office Document Image Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +3B + 0 +MATERIAL + 5 +12 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByBlock + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +11 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByLayer + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +13 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2C +102 +} +330 +2C +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 +495 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +496 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +497 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +498 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +499 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +49A +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +49B +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +49C +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +49D +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +49E +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +49F +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +4A0 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +4A1 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +4A2 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +4A3 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +4A4 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +4A5 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +4A6 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4A7 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4A8 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4A9 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AA +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AB +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AC +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AD +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AE +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4AF +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B0 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B1 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B2 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B3 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B4 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B5 +102 +{ACAD_REACTORS +330 +494 +102 +} +330 +494 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +31 +102 +} +330 +31 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 8 + 40 +1.5 + 41 +1.5 +280 + 0 +281 + 0 + 7 +Standard +140 +4.5 +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 +6.0 +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 +4.5 +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 +1A +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1C +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1B +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +19 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +20 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +24 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1D +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1F +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +23 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +15 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +16 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +17 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1E +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +21 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +4B7 +102 +{ACAD_REACTORS +330 +492 +102 +} +330 +492 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +493 +102 +{ACAD_REACTORS +330 +492 +102 +} +330 +492 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E114 原图.par b/LaiPuLaser/TempMarkData/E114 原图.par new file mode 100644 index 0000000..80a8ac7 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E114 原图.par differ diff --git a/LaiPuLaser/TempMarkData/E114 原图.txt b/LaiPuLaser/TempMarkData/E114 原图.txt new file mode 100644 index 0000000..1b9e6f6 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E114 原图.txt @@ -0,0 +1,8 @@ +1 +63.32 +-11.621 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/TempMarkData/E114YT.are b/LaiPuLaser/TempMarkData/E114YT.are new file mode 100644 index 0000000..0fb6b2e Binary files /dev/null and b/LaiPuLaser/TempMarkData/E114YT.are differ diff --git a/LaiPuLaser/TempMarkData/E114YT.dxf b/LaiPuLaser/TempMarkData/E114YT.dxf new file mode 100644 index 0000000..0678e16 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E114YT.dxf @@ -0,0 +1,17244 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +198.5701238345629 + 20 +89.07247006947176 + 30 +0.0 + 9 +$EXTMAX + 10 +565.5701238345628 + 20 +246.1324700694664 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458952.779626401 + 9 +$TDUCREATE + 40 +2458952.446293067 + 9 +$TDUPDATE + 40 +2458952.779626423 + 9 +$TDUUPDATE + 40 +2458952.44629309 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +4FB + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +346.0009669538186 + 22 +302.2602181756143 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +562.2263682638637 + 41 +0.9589705114069917 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 220 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +89.09747006947165 + 30 +0.0 + 11 +552.9451238345628 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +97.10747006947176 + 30 +0.0 + 11 +552.9451238345628 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +89.07247006947176 + 30 +0.0 + 11 +544.3701238345627 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +97.13247006947176 + 30 +0.0 + 11 +544.3701238345627 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +89.09747006947165 + 30 +0.0 + 11 +535.3201238345628 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +89.07247006947176 + 30 +0.0 + 11 +526.7451238345627 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +97.10747006947176 + 30 +0.0 + 11 +535.3201238345628 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +97.13247006947176 + 30 +0.0 + 11 +526.7451238345627 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +89.09747006947165 + 30 +0.0 + 11 +517.6951238345628 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +89.07247006947176 + 30 +0.0 + 11 +509.1201238345627 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +97.10747006947176 + 30 +0.0 + 11 +517.6951238345628 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +97.13247006947176 + 30 +0.0 + 11 +509.1201238345627 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +500.0701238345627 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +89.07247006947176 + 30 +0.0 + 11 +491.4951238345628 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +500.0701238345627 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +97.13247006947176 + 30 +0.0 + 11 +491.4951238345628 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +482.4451238345627 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +89.07247006947176 + 30 +0.0 + 11 +473.8701238345628 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +482.4451238345627 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +97.13247006947176 + 30 +0.0 + 11 +473.8701238345628 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +464.8201238345627 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +89.07247006947176 + 30 +0.0 + 11 +456.2451238345628 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +464.8201238345627 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +97.13247006947176 + 30 +0.0 + 11 +456.2451238345628 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +447.1951238345627 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +89.07247006947176 + 30 +0.0 + 11 +438.6201238345628 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +447.1951238345627 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +97.13247006947176 + 30 +0.0 + 11 +438.6201238345628 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +429.5701238345627 + 21 +89.09747006947177 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +89.07247006947176 + 30 +0.0 + 11 +420.9951238345628 + 21 +89.07247006947176 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +429.5701238345627 + 21 +97.10747006947176 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +97.13247006947176 + 30 +0.0 + 11 +420.9951238345628 + 21 +97.13247006947176 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +89.09747006947165 + 30 +0.0 + 11 +411.9451238345627 + 21 +89.0974700694718 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +89.07247006947179 + 30 +0.0 + 11 +403.3701238345628 + 21 +89.07247006947179 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +97.10747006947176 + 30 +0.0 + 11 +411.9451238345627 + 21 +97.10747006947179 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +97.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +97.1324700694718 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +89.09747006947168 + 30 +0.0 + 11 +394.3201238345627 + 21 +89.0974700694718 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +89.07247006947179 + 30 +0.0 + 11 +385.7451238345628 + 21 +89.07247006947179 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +97.10747006947179 + 30 +0.0 + 11 +394.3201238345627 + 21 +97.10747006947179 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +97.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +97.1324700694718 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +98.09747006947165 + 30 +0.0 + 11 +552.9451238345628 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +98.07247006947176 + 30 +0.0 + 11 +544.3701238345627 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +106.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +106.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +98.09747006947165 + 30 +0.0 + 11 +535.3201238345628 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +98.07247006947176 + 30 +0.0 + 11 +526.7451238345627 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +106.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +106.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +98.09747006947165 + 30 +0.0 + 11 +517.6951238345628 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +98.07247006947176 + 30 +0.0 + 11 +509.1201238345627 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +106.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +106.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +500.0701238345627 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +98.07247006947176 + 30 +0.0 + 11 +491.4951238345628 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +482.4451238345627 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +98.07247006947176 + 30 +0.0 + 11 +473.8701238345628 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +464.8201238345627 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +98.07247006947176 + 30 +0.0 + 11 +456.2451238345628 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +447.1951238345627 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +98.07247006947176 + 30 +0.0 + 11 +438.6201238345628 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +429.5701238345627 + 21 +98.09747006947177 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +98.07247006947176 + 30 +0.0 + 11 +420.9951238345628 + 21 +98.07247006947176 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +98.09747006947165 + 30 +0.0 + 11 +411.9451238345627 + 21 +98.0974700694718 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +98.07247006947179 + 30 +0.0 + 11 +403.3701238345628 + 21 +98.07247006947179 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +98.09747006947168 + 30 +0.0 + 11 +394.3201238345627 + 21 +98.0974700694718 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +98.07247006947179 + 30 +0.0 + 11 +385.7451238345628 + 21 +98.07247006947179 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +106.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +106.1074700694718 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +106.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +106.1324700694718 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +107.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +107.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +115.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +115.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +107.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +107.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +115.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +115.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +107.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +107.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +115.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +115.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +107.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +107.0974700694718 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +107.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +107.0724700694718 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +115.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +115.1074700694718 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +115.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +115.1324700694718 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +116.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +116.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +124.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +124.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +116.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +116.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +124.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +124.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +116.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +116.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +124.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +124.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +116.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +116.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +116.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +116.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +124.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +124.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +124.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +124.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +125.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +125.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +133.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +133.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +125.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +125.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +133.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +133.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +125.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +125.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +133.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +133.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +125.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +125.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +125.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +125.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +133.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +133.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +133.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +133.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +134.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +134.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +142.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +142.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +134.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +134.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +142.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +142.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +134.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +134.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +142.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +142.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +134.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +134.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +134.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +134.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +142.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +142.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +142.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +142.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +143.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +143.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +151.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +151.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +143.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +143.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +151.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +151.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +143.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +143.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +151.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +151.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +143.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +143.0974700694718 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +143.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +143.0724700694718 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +151.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +151.1074700694718 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +151.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +151.1324700694718 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +152.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +152.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +160.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +160.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +152.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +152.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +160.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +160.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +152.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +152.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +160.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +160.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +152.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +152.0974700694718 + 31 +0.0 + 0 +LINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +152.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +152.0724700694718 + 31 +0.0 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +160.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +160.1074700694718 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +160.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +160.1324700694718 + 31 +0.0 + 0 +LINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +161.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +161.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +169.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +169.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +161.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +161.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +169.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +169.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +161.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +161.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +169.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +169.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +161.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +161.0974700694718 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +161.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +161.0724700694718 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +169.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +169.1074700694718 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +169.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +169.1324700694718 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +170.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +170.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +178.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +178.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +170.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +170.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +178.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +178.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +170.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +170.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +178.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +178.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +170.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +170.0974700694718 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +170.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +170.0724700694718 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +178.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +178.1074700694718 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +178.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +178.1324700694718 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +179.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +179.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +187.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +187.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +179.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +179.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +187.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +187.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +179.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +179.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +187.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +187.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +179.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +179.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +179.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +179.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +187.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +187.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +187.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +187.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +188.0974700694717 + 30 +0.0 + 11 +552.9451238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +188.0724700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +560.4951238345627 + 20 +196.1074700694718 + 30 +0.0 + 11 +552.9451238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +547.3701238345627 + 20 +196.1324700694718 + 30 +0.0 + 11 +544.3701238345627 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +188.0974700694717 + 30 +0.0 + 11 +535.3201238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +188.0724700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +542.8701238345627 + 20 +196.1074700694718 + 30 +0.0 + 11 +535.3201238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +529.7451238345627 + 20 +196.1324700694718 + 30 +0.0 + 11 +526.7451238345627 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +188.0974700694717 + 30 +0.0 + 11 +517.6951238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +188.0724700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +525.2451238345627 + 20 +196.1074700694718 + 30 +0.0 + 11 +517.6951238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +512.1201238345627 + 20 +196.1324700694718 + 30 +0.0 + 11 +509.1201238345627 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +500.0701238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +507.6201238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +500.0701238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +494.4951238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +491.4951238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +482.4451238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +489.9951238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +482.4451238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +476.8701238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +473.8701238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +464.8201238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +472.3701238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +464.8201238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +459.2451238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +456.2451238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +447.1951238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +454.7451238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +447.1951238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +441.6201238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +438.6201238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +429.5701238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +437.1201238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +429.5701238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +423.9951238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +420.9951238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +411.9451238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +419.4951238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +411.9451238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +406.3701238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +403.3701238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +188.0974700694717 + 30 +0.0 + 11 +394.3201238345628 + 21 +188.0974700694718 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +188.0724700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +188.0724700694718 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +401.8701238345628 + 20 +196.1074700694718 + 30 +0.0 + 11 +394.3201238345628 + 21 +196.1074700694718 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +388.7451238345628 + 20 +196.1324700694718 + 30 +0.0 + 11 +385.7451238345628 + 21 +196.1324700694718 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +560.9517438364114 + 20 +136.7058908875574 + 10 +560.7251238345627 + 20 +136.9024700694717 + 10 +560.7251238345627 + 20 +139.3024700694718 + 10 +560.9360872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +543.8299605974144 + 20 +136.6883873430521 + 10 +544.0401238345628 + 20 +136.9024700694717 + 10 +544.0401238345628 + 20 +139.3024700694718 + 10 +543.8379874086719 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +526.2049605974144 + 20 +136.6883873430521 + 10 +526.4151238345628 + 20 +136.9024700694717 + 10 +526.4151238345628 + 20 +139.3024700694718 + 10 +526.2129874086719 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +543.3267438364114 + 20 +136.7058908875574 + 10 +543.1001238345627 + 20 +136.9024700694717 + 10 +543.1001238345627 + 20 +139.3024700694718 + 10 +543.3110872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +508.5799605974144 + 20 +136.6883873430521 + 10 +508.7901238345628 + 20 +136.9024700694717 + 10 +508.7901238345628 + 20 +139.3024700694718 + 10 +508.5879874086719 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +525.7017438364114 + 20 +136.7058908875574 + 10 +525.4751238345627 + 20 +136.9024700694717 + 10 +525.4751238345627 + 20 +139.3024700694718 + 10 +525.6860872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +490.9549605974144 + 20 +136.6883873430521 + 10 +491.1651238345627 + 20 +136.9024700694717 + 10 +491.1651238345627 + 20 +139.3024700694718 + 10 +490.9629874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +508.0767438364115 + 20 +136.7058908875574 + 10 +507.8501238345627 + 20 +136.9024700694717 + 10 +507.8501238345627 + 20 +139.3024700694718 + 10 +508.0610872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +473.3299605974144 + 20 +136.6883873430521 + 10 +473.5401238345627 + 20 +136.9024700694717 + 10 +473.5401238345627 + 20 +139.3024700694718 + 10 +473.3379874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +490.4517438364115 + 20 +136.7058908875574 + 10 +490.2251238345627 + 20 +136.9024700694717 + 10 +490.2251238345627 + 20 +139.3024700694718 + 10 +490.4360872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +455.7049605974144 + 20 +136.6883873430521 + 10 +455.9151238345627 + 20 +136.9024700694717 + 10 +455.9151238345627 + 20 +139.3024700694718 + 10 +455.7129874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +472.8267438364115 + 20 +136.7058908875574 + 10 +472.6001238345627 + 20 +136.9024700694717 + 10 +472.6001238345627 + 20 +139.3024700694718 + 10 +472.8110872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +438.0799605974144 + 20 +136.6883873430521 + 10 +438.2901238345627 + 20 +136.9024700694717 + 10 +438.2901238345627 + 20 +139.3024700694718 + 10 +438.0879874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +455.2017438364115 + 20 +136.7058908875574 + 10 +454.9751238345627 + 20 +136.9024700694717 + 10 +454.9751238345627 + 20 +139.3024700694718 + 10 +455.1860872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +420.4549605974144 + 20 +136.6883873430521 + 10 +420.6651238345627 + 20 +136.9024700694717 + 10 +420.6651238345627 + 20 +139.3024700694718 + 10 +420.4629874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +437.5767438364115 + 20 +136.7058908875574 + 10 +437.3501238345627 + 20 +136.9024700694717 + 10 +437.3501238345627 + 20 +139.3024700694718 + 10 +437.5610872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +402.8299605974144 + 20 +136.6883873430521 + 10 +403.0401238345627 + 20 +136.9024700694718 + 10 +403.0401238345627 + 20 +139.3024700694718 + 10 +402.8379874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +419.9517438364115 + 20 +136.7058908875574 + 10 +419.7251238345627 + 20 +136.9024700694717 + 10 +419.7251238345627 + 20 +139.3024700694718 + 10 +419.9360872389271 + 20 +139.5157643310424 + 0 +LWPOLYLINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +385.2049605974144 + 20 +136.6883873430521 + 10 +385.4151238345627 + 20 +136.9024700694718 + 10 +385.4151238345627 + 20 +139.3024700694718 + 10 +385.2129874086718 + 20 +139.5241474596767 + 0 +LWPOLYLINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +402.3267438364115 + 20 +136.7058908875574 + 10 +402.1001238345627 + 20 +136.9024700694718 + 10 +402.1001238345627 + 20 +139.3024700694718 + 10 +402.3110872389271 + 20 +139.5157643310425 + 0 +CIRCLE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +565.0701238345628 + 20 +102.6024700694744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +382.0701238345629 + 20 +167.6024700694691 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E114YT.par b/LaiPuLaser/TempMarkData/E114YT.par new file mode 100644 index 0000000..d1137fe Binary files /dev/null and b/LaiPuLaser/TempMarkData/E114YT.par differ diff --git a/LaiPuLaser/TempMarkData/E114YT.txt b/LaiPuLaser/TempMarkData/E114YT.txt new file mode 100644 index 0000000..6363890 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E114YT.txt @@ -0,0 +1,8 @@ +1 +60.9 +-26.96 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/TempMarkData/E129-1.are b/LaiPuLaser/TempMarkData/E129-1.are new file mode 100644 index 0000000..429797c Binary files /dev/null and b/LaiPuLaser/TempMarkData/E129-1.are differ diff --git a/LaiPuLaser/TempMarkData/E129-1.dxf b/LaiPuLaser/TempMarkData/E129-1.dxf new file mode 100644 index 0000000..29b1f0b --- /dev/null +++ b/LaiPuLaser/TempMarkData/E129-1.dxf @@ -0,0 +1,10910 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-172.5 + 20 +-45.04499999999969 + 30 +0.0 + 9 +$EXTMAX + 10 +534.450154101518 + 20 +182.8903965090264 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2459014.475116656 + 9 +$TDUCREATE + 40 +2459014.141783322 + 9 +$TDUPDATE + 40 +2459014.475962951 + 9 +$TDUUPDATE + 40 +2459014.142629618 + 9 +$TDINDWG + 40 +0.0008468403 + 9 +$TDUSRTIMER + 40 +0.0008468403 + 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 +2DC + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{858BE686-7CAF-499F-AC58-2568033D1D6B} + 9 +$VERSIONGUID + 2 +{09834D44-2FCD-4944-A779-CFDF8D684F4D} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +2DB +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-53.45919326278419 + 22 +7.349114276327753 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +220.1920962684722 + 41 +1.62314939434724 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +4545 + 70 + 0 + 62 + 1 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +189 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.7321320343559 + 20 +9.612132034356058 + 10 +-167.52 + 20 +9.400000000000069 + 10 +-167.52 + 20 +6.600000000000001 + 10 +-167.7321320343559 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +18A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.767867965644 + 20 +9.612132034356058 + 10 +-147.9799999999999 + 20 +9.400000000000069 + 10 +-147.9799999999999 + 20 +6.600000000000001 + 10 +-147.767867965644 + 20 +6.387867965644069 + 0 +LWPOLYLINE + 5 +18B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.2321320343559 + 20 +9.612132034356058 + 10 +-147.02 + 20 +9.400000000000069 + 10 +-147.02 + 20 +6.600000000000001 + 10 +-147.2321320343559 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +18C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-127.2678679656439 + 20 +9.612132034356029 + 10 +-127.4799999999999 + 20 +9.400000000000041 + 10 +-127.4799999999999 + 20 +6.599999999999972 + 10 +-127.2678679656439 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +18D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-126.7321320343559 + 20 +9.612132034356029 + 10 +-126.52 + 20 +9.400000000000041 + 10 +-126.52 + 20 +6.599999999999972 + 10 +-126.7321320343559 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +18E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.7678679656439 + 20 +9.612132034356029 + 10 +-106.9799999999999 + 20 +9.400000000000041 + 10 +-106.9799999999999 + 20 +6.599999999999972 + 10 +-106.7678679656439 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +18F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.2321320343559 + 20 +9.612132034356029 + 10 +-106.02 + 20 +9.400000000000041 + 10 +-106.02 + 20 +6.599999999999972 + 10 +-106.2321320343559 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +190 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-86.26786796564397 + 20 +9.612132034356029 + 10 +-86.4799999999999 + 20 +9.400000000000041 + 10 +-86.4799999999999 + 20 +6.599999999999972 + 10 +-86.26786796564397 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +191 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.73213203435591 + 20 +9.612132034356029 + 10 +-85.51999999999997 + 20 +9.400000000000041 + 10 +-85.51999999999997 + 20 +6.599999999999972 + 10 +-85.73213203435591 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +192 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.76786796564403 + 20 +9.612132034356029 + 10 +-65.98000000000002 + 20 +9.400000000000041 + 10 +-65.98000000000002 + 20 +6.599999999999972 + 10 +-65.76786796564403 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +193 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.23213203435592 + 20 +9.612132034356029 + 10 +-65.01999999999998 + 20 +9.400000000000041 + 10 +-65.01999999999998 + 20 +6.599999999999972 + 10 +-65.23213203435602 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +194 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-45.26786796564403 + 20 +9.612132034356029 + 10 +-45.48000000000001 + 20 +9.400000000000041 + 10 +-45.48000000000001 + 20 +6.599999999999972 + 10 +-45.26786796564403 + 20 +6.387867965644041 + 0 +LWPOLYLINE + 5 +195 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.73213203435591 + 20 +9.612132034356029 + 10 +-44.51999999999998 + 20 +9.400000000000041 + 10 +-44.51999999999998 + 20 +6.599999999999972 + 10 +-44.73213203435602 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +196 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.76786796564409 + 20 +9.612132034356029 + 10 +-24.98000000000002 + 20 +9.400000000000041 + 10 +-24.98000000000002 + 20 +6.599999999999972 + 10 +-24.76786796564409 + 20 +6.387867965644041 + 0 +LINE + 5 +197 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-43.61999999999971 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-43.61999999999971 + 31 +0.0 + 0 +LINE + 5 +198 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-45.04499999999967 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-45.04499999999967 + 31 +0.0 + 0 +LINE + 5 +199 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-35.5799999999997 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-35.5799999999997 + 31 +0.0 + 0 +LINE + 5 +19A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-34.15499999999974 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-34.15499999999974 + 31 +0.0 + 0 +LINE + 5 +19B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-31.71999999999974 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-31.71999999999974 + 31 +0.0 + 0 +LINE + 5 +19C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-33.14499999999969 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-33.14499999999969 + 31 +0.0 + 0 +LINE + 5 +19D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-23.67999999999971 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-23.67999999999971 + 31 +0.0 + 0 +LINE + 5 +19E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-22.25499999999976 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-22.25499999999976 + 31 +0.0 + 0 +LINE + 5 +19F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-19.81999999999976 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-19.81999999999976 + 31 +0.0 + 0 +LINE + 5 +1A0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-21.24499999999971 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-21.24499999999971 + 31 +0.0 + 0 +LINE + 5 +1A1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-11.77999999999974 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-11.77999999999974 + 31 +0.0 + 0 +LINE + 5 +1A2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-10.35499999999978 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-10.35499999999978 + 31 +0.0 + 0 +LINE + 5 +1A3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-7.919999999999781 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-7.919999999999781 + 31 +0.0 + 0 +LINE + 5 +1A4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-9.344999999999735 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-9.344999999999764 + 31 +0.0 + 0 +LINE + 5 +1A5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +0.1200000000002106 + 30 +0.0 + 11 +-167.6129499801618 + 21 +0.1200000000002106 + 31 +0.0 + 0 +LINE + 5 +1A6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +1.545000000000193 + 30 +0.0 + 11 +-159.1807602633806 + 21 +1.545000000000193 + 31 +0.0 + 0 +LINE + 5 +1A7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +3.980000000000195 + 30 +0.0 + 11 +-167.6129499801618 + 21 +3.980000000000195 + 31 +0.0 + 0 +LINE + 5 +1A8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +2.555000000000241 + 30 +0.0 + 11 +-159.1807602633806 + 21 +2.555000000000212 + 31 +0.0 + 0 +LINE + 5 +1A9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-167.6129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +1AA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +13.44500000000016 + 30 +0.0 + 11 +-159.1807602633806 + 21 +13.44500000000016 + 31 +0.0 + 0 +LINE + 5 +1AB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +15.88000000000016 + 30 +0.0 + 11 +-167.6129499801618 + 21 +15.88000000000016 + 31 +0.0 + 0 +LINE + 5 +1AC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +14.4550000000002 + 30 +0.0 + 11 +-159.1807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +1AD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +23.92000000000015 + 30 +0.0 + 11 +-167.6129499801618 + 21 +23.92000000000015 + 31 +0.0 + 0 +LINE + 5 +1AE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +25.34500000000014 + 30 +0.0 + 11 +-159.1807602633806 + 21 +25.34500000000014 + 31 +0.0 + 0 +LINE + 5 +1AF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +27.78000000000014 + 30 +0.0 + 11 +-167.6129499801618 + 21 +27.78000000000014 + 31 +0.0 + 0 +LINE + 5 +1B0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +26.35500000000015 + 30 +0.0 + 11 +-159.1807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +1B1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +35.82000000000013 + 30 +0.0 + 11 +-167.6129499801618 + 21 +35.82000000000013 + 31 +0.0 + 0 +LINE + 5 +1B2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +37.2450000000001 + 30 +0.0 + 11 +-159.1807602633806 + 21 +37.24500000000011 + 31 +0.0 + 0 +LINE + 5 +1B3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +39.68000000000012 + 30 +0.0 + 11 +-167.6129499801618 + 21 +39.68000000000012 + 31 +0.0 + 0 +LINE + 5 +1B4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +38.25500000000014 + 30 +0.0 + 11 +-159.1807602633806 + 21 +38.25500000000013 + 31 +0.0 + 0 +LINE + 5 +1B5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +47.7200000000001 + 30 +0.0 + 11 +-167.6129499801618 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +1B6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +49.14500000000007 + 30 +0.0 + 11 +-159.1807602633806 + 21 +49.14500000000009 + 31 +0.0 + 0 +LINE + 5 +1B7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +51.58000000000009 + 30 +0.0 + 11 +-167.6129499801618 + 21 +51.58000000000009 + 31 +0.0 + 0 +LINE + 5 +1B8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +50.15500000000012 + 30 +0.0 + 11 +-159.1807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +1B9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-167.6129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +1BA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-147.775115530774 + 20 +61.04500000000005 + 30 +0.0 + 11 +-159.1807602633806 + 21 +61.04500000000007 + 31 +0.0 + 0 +LINE + 5 +1BB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-43.61999999999971 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-43.61999999999971 + 31 +0.0 + 0 +LINE + 5 +1BC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-45.04499999999967 + 31 +0.0 + 0 +LINE + 5 +1BD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-35.5799999999997 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-35.5799999999997 + 31 +0.0 + 0 +LINE + 5 +1BE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-34.15499999999974 + 31 +0.0 + 0 +LINE + 5 +1BF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-31.71999999999974 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-31.71999999999974 + 31 +0.0 + 0 +LINE + 5 +1C0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-33.14499999999969 + 31 +0.0 + 0 +LINE + 5 +1C1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-23.67999999999971 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-23.67999999999971 + 31 +0.0 + 0 +LINE + 5 +1C2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-22.25499999999976 + 31 +0.0 + 0 +LINE + 5 +1C3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-19.81999999999976 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-19.81999999999976 + 31 +0.0 + 0 +LINE + 5 +1C4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-21.24499999999971 + 31 +0.0 + 0 +LINE + 5 +1C5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-11.77999999999974 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-11.77999999999974 + 31 +0.0 + 0 +LINE + 5 +1C6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-10.35499999999978 + 31 +0.0 + 0 +LINE + 5 +1C7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-7.919999999999781 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-7.919999999999781 + 31 +0.0 + 0 +LINE + 5 +1C8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-9.344999999999764 + 31 +0.0 + 0 +LINE + 5 +1C9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +0.1200000000002106 + 30 +0.0 + 11 +-147.1129499801618 + 21 +0.1200000000002106 + 31 +0.0 + 0 +LINE + 5 +1CA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +1.545000000000165 + 30 +0.0 + 11 +-138.6807602633806 + 21 +1.545000000000193 + 31 +0.0 + 0 +LINE + 5 +1CB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +3.980000000000195 + 30 +0.0 + 11 +-147.1129499801618 + 21 +3.980000000000195 + 31 +0.0 + 0 +LINE + 5 +1CC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +2.555000000000212 + 30 +0.0 + 11 +-138.6807602633806 + 21 +2.555000000000212 + 31 +0.0 + 0 +LINE + 5 +1CD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-147.1129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +1CE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +13.44500000000016 + 30 +0.0 + 11 +-138.6807602633806 + 21 +13.44500000000016 + 31 +0.0 + 0 +LINE + 5 +1CF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +15.88000000000016 + 30 +0.0 + 11 +-147.1129499801618 + 21 +15.88000000000016 + 31 +0.0 + 0 +LINE + 5 +1D0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +14.4550000000002 + 30 +0.0 + 11 +-138.6807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +1D1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +23.92000000000015 + 30 +0.0 + 11 +-147.1129499801618 + 21 +23.92000000000015 + 31 +0.0 + 0 +LINE + 5 +1D2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +25.34500000000014 + 30 +0.0 + 11 +-138.6807602633806 + 21 +25.34500000000014 + 31 +0.0 + 0 +LINE + 5 +1D3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +27.78000000000014 + 30 +0.0 + 11 +-147.1129499801618 + 21 +27.78000000000014 + 31 +0.0 + 0 +LINE + 5 +1D4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +26.35500000000015 + 30 +0.0 + 11 +-138.6807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +1D5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +35.82000000000013 + 30 +0.0 + 11 +-147.1129499801618 + 21 +35.82000000000013 + 31 +0.0 + 0 +LINE + 5 +1D6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +37.2450000000001 + 30 +0.0 + 11 +-138.6807602633806 + 21 +37.24500000000011 + 31 +0.0 + 0 +LINE + 5 +1D7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +39.68000000000012 + 30 +0.0 + 11 +-147.1129499801618 + 21 +39.68000000000012 + 31 +0.0 + 0 +LINE + 5 +1D8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +38.25500000000014 + 30 +0.0 + 11 +-138.6807602633806 + 21 +38.25500000000013 + 31 +0.0 + 0 +LINE + 5 +1D9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +47.7200000000001 + 30 +0.0 + 11 +-147.1129499801618 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +1DA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +49.14500000000007 + 30 +0.0 + 11 +-138.6807602633806 + 21 +49.14500000000009 + 31 +0.0 + 0 +LINE + 5 +1DB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +51.58000000000009 + 30 +0.0 + 11 +-147.1129499801618 + 21 +51.58000000000009 + 31 +0.0 + 0 +LINE + 5 +1DC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +50.15500000000012 + 30 +0.0 + 11 +-138.6807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +1DD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-147.1129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +1DE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-127.2751155307739 + 20 +61.04500000000005 + 30 +0.0 + 11 +-138.6807602633806 + 21 +61.04500000000007 + 31 +0.0 + 0 +LINE + 5 +1DF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +1E0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +1E1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +1E2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +1E3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +1E4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +1E5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +1E6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +1E7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +1E8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +1E9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +1EA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +1EB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +1EC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +1ED +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-126.6129499801618 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +1EE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +1.545000000000165 + 30 +0.0 + 11 +-118.1807602633806 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +1EF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +3.980000000000167 + 30 +0.0 + 11 +-126.6129499801618 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +1F0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +2.555000000000212 + 30 +0.0 + 11 +-118.1807602633806 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +1F1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-126.6129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +1F2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +13.44500000000016 + 30 +0.0 + 11 +-118.1807602633806 + 21 +13.44500000000016 + 31 +0.0 + 0 +LINE + 5 +1F3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +15.88000000000016 + 30 +0.0 + 11 +-126.6129499801618 + 21 +15.88000000000016 + 31 +0.0 + 0 +LINE + 5 +1F4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +14.4550000000002 + 30 +0.0 + 11 +-118.1807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +1F5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +23.92000000000015 + 30 +0.0 + 11 +-126.6129499801618 + 21 +23.92000000000015 + 31 +0.0 + 0 +LINE + 5 +1F6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +25.34500000000014 + 30 +0.0 + 11 +-118.1807602633806 + 21 +25.34500000000014 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +27.78000000000014 + 30 +0.0 + 11 +-126.6129499801618 + 21 +27.78000000000014 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +26.35500000000015 + 30 +0.0 + 11 +-118.1807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +1F9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +35.82000000000013 + 30 +0.0 + 11 +-126.6129499801618 + 21 +35.82000000000013 + 31 +0.0 + 0 +LINE + 5 +1FA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +37.2450000000001 + 30 +0.0 + 11 +-118.1807602633806 + 21 +37.24500000000011 + 31 +0.0 + 0 +LINE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +39.68000000000012 + 30 +0.0 + 11 +-126.6129499801618 + 21 +39.68000000000012 + 31 +0.0 + 0 +LINE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +38.25500000000014 + 30 +0.0 + 11 +-118.1807602633806 + 21 +38.25500000000013 + 31 +0.0 + 0 +LINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +47.7200000000001 + 30 +0.0 + 11 +-126.6129499801618 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +49.14500000000007 + 30 +0.0 + 11 +-118.1807602633806 + 21 +49.14500000000009 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +51.58000000000009 + 30 +0.0 + 11 +-126.6129499801618 + 21 +51.58000000000009 + 31 +0.0 + 0 +LINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +50.15500000000012 + 30 +0.0 + 11 +-118.1807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-126.6129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-106.7751155307739 + 20 +61.04500000000005 + 30 +0.0 + 11 +-118.1807602633806 + 21 +61.04500000000007 + 31 +0.0 + 0 +LINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-97.68076026338064 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-106.1129499801618 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +1.545000000000165 + 30 +0.0 + 11 +-97.68076026338064 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +3.980000000000167 + 30 +0.0 + 11 +-106.1129499801618 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +2.555000000000212 + 30 +0.0 + 11 +-97.68076026338064 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-106.1129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +13.44500000000016 + 30 +0.0 + 11 +-97.68076026338064 + 21 +13.44500000000016 + 31 +0.0 + 0 +LINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +15.88000000000016 + 30 +0.0 + 11 +-106.1129499801618 + 21 +15.88000000000016 + 31 +0.0 + 0 +LINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +14.4550000000002 + 30 +0.0 + 11 +-97.68076026338064 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +23.92000000000015 + 30 +0.0 + 11 +-106.1129499801618 + 21 +23.92000000000015 + 31 +0.0 + 0 +LINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +25.34500000000014 + 30 +0.0 + 11 +-97.68076026338064 + 21 +25.34500000000014 + 31 +0.0 + 0 +LINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +27.78000000000014 + 30 +0.0 + 11 +-106.1129499801618 + 21 +27.78000000000014 + 31 +0.0 + 0 +LINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +26.35500000000015 + 30 +0.0 + 11 +-97.68076026338064 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +35.82000000000013 + 30 +0.0 + 11 +-106.1129499801618 + 21 +35.82000000000013 + 31 +0.0 + 0 +LINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +37.2450000000001 + 30 +0.0 + 11 +-97.68076026338064 + 21 +37.24500000000011 + 31 +0.0 + 0 +LINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +39.68000000000012 + 30 +0.0 + 11 +-106.1129499801618 + 21 +39.68000000000012 + 31 +0.0 + 0 +LINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +38.25500000000014 + 30 +0.0 + 11 +-97.68076026338064 + 21 +38.25500000000013 + 31 +0.0 + 0 +LINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +47.7200000000001 + 30 +0.0 + 11 +-106.1129499801618 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +49.14500000000007 + 30 +0.0 + 11 +-97.68076026338064 + 21 +49.14500000000009 + 31 +0.0 + 0 +LINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +51.58000000000009 + 30 +0.0 + 11 +-106.1129499801618 + 21 +51.58000000000009 + 31 +0.0 + 0 +LINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +50.15500000000012 + 30 +0.0 + 11 +-97.68076026338064 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-106.1129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +61.04500000000005 + 30 +0.0 + 11 +-97.68076026338064 + 21 +61.04500000000007 + 31 +0.0 + 0 +LINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-77.18076026338064 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-85.61294998016183 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +1.545000000000165 + 30 +0.0 + 11 +-77.18076026338064 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +3.980000000000167 + 30 +0.0 + 11 +-85.61294998016183 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +2.555000000000212 + 30 +0.0 + 11 +-77.18076026338064 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +12.02000000000017 + 30 +0.0 + 11 +-85.61294998016183 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +13.44500000000014 + 30 +0.0 + 11 +-77.18076026338064 + 21 +13.44500000000016 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +15.88000000000016 + 30 +0.0 + 11 +-85.61294998016183 + 21 +15.88000000000016 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +14.45500000000019 + 30 +0.0 + 11 +-77.18076026338064 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +23.92000000000015 + 30 +0.0 + 11 +-85.61294998016183 + 21 +23.92000000000015 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +25.34500000000012 + 30 +0.0 + 11 +-77.18076026338064 + 21 +25.34500000000014 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +27.78000000000014 + 30 +0.0 + 11 +-85.61294998016183 + 21 +27.78000000000014 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +26.35500000000014 + 30 +0.0 + 11 +-77.18076026338064 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +35.82000000000013 + 30 +0.0 + 11 +-85.61294998016183 + 21 +35.82000000000013 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +37.24500000000008 + 30 +0.0 + 11 +-77.18076026338064 + 21 +37.24500000000011 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +39.68000000000012 + 30 +0.0 + 11 +-85.61294998016183 + 21 +39.68000000000012 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +38.25500000000013 + 30 +0.0 + 11 +-77.18076026338064 + 21 +38.25500000000013 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +47.7200000000001 + 30 +0.0 + 11 +-85.61294998016183 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +49.14500000000006 + 30 +0.0 + 11 +-77.18076026338064 + 21 +49.14500000000009 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +51.58000000000009 + 30 +0.0 + 11 +-85.61294998016183 + 21 +51.58000000000009 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +50.1550000000001 + 30 +0.0 + 11 +-77.18076026338064 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +59.62000000000008 + 30 +0.0 + 11 +-85.61294998016183 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-65.77511553077403 + 20 +61.04500000000005 + 30 +0.0 + 11 +-77.18076026338064 + 21 +61.04500000000007 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-56.6807602633807 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-65.11294998016182 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +1.545000000000165 + 30 +0.0 + 11 +-56.6807602633807 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +3.980000000000167 + 30 +0.0 + 11 +-65.11294998016182 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +2.555000000000212 + 30 +0.0 + 11 +-56.6807602633807 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +12.02000000000016 + 30 +0.0 + 11 +-65.11294998016182 + 21 +12.02000000000016 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +13.44500000000014 + 30 +0.0 + 11 +-56.6807602633807 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +15.88000000000014 + 30 +0.0 + 11 +-65.11294998016182 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +14.45500000000019 + 30 +0.0 + 11 +-56.6807602633807 + 21 +14.45500000000016 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +23.92000000000014 + 30 +0.0 + 11 +-65.11294998016182 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +25.34500000000012 + 30 +0.0 + 11 +-56.6807602633807 + 21 +25.34500000000012 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +27.78000000000012 + 30 +0.0 + 11 +-65.11294998016182 + 21 +27.78000000000012 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +26.35500000000014 + 30 +0.0 + 11 +-56.6807602633807 + 21 +26.35500000000014 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +35.82000000000011 + 30 +0.0 + 11 +-65.11294998016182 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +37.24500000000008 + 30 +0.0 + 11 +-56.6807602633807 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +39.6800000000001 + 30 +0.0 + 11 +-65.11294998016182 + 21 +39.6800000000001 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +38.25500000000013 + 30 +0.0 + 11 +-56.6807602633807 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +47.72000000000009 + 30 +0.0 + 11 +-65.11294998016182 + 21 +47.72000000000009 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +49.14500000000006 + 30 +0.0 + 11 +-56.6807602633807 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +51.58000000000008 + 30 +0.0 + 11 +-65.11294998016182 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +50.1550000000001 + 30 +0.0 + 11 +-56.6807602633807 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-61.26081905039632 + 20 +59.62000000000006 + 30 +0.0 + 11 +-65.11294998016182 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-45.27511553077403 + 20 +61.04500000000005 + 30 +0.0 + 11 +-56.6807602633807 + 21 +61.04500000000005 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-44.61294998016194 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-36.18076026338076 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-44.61294998016194 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +1.545000000000165 + 30 +0.0 + 11 +-36.18076026338076 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +3.980000000000167 + 30 +0.0 + 11 +-44.61294998016194 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +2.555000000000212 + 30 +0.0 + 11 +-36.18076026338076 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +12.02000000000016 + 30 +0.0 + 11 +-44.61294998016194 + 21 +12.02000000000016 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +13.44500000000014 + 30 +0.0 + 11 +-36.18076026338076 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +15.88000000000014 + 30 +0.0 + 11 +-44.61294998016194 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077409 + 20 +14.45500000000019 + 30 +0.0 + 11 +-36.18076026338076 + 21 +14.45500000000016 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +23.92000000000014 + 30 +0.0 + 11 +-44.61294998016194 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +25.34500000000012 + 30 +0.0 + 11 +-36.18076026338071 + 21 +25.34500000000012 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +27.78000000000012 + 30 +0.0 + 11 +-44.61294998016194 + 21 +27.78000000000012 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +26.35500000000014 + 30 +0.0 + 11 +-36.18076026338071 + 21 +26.35500000000014 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +35.82000000000011 + 30 +0.0 + 11 +-44.61294998016194 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +37.24500000000008 + 30 +0.0 + 11 +-36.18076026338071 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +39.6800000000001 + 30 +0.0 + 11 +-44.61294998016194 + 21 +39.6800000000001 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +38.25500000000013 + 30 +0.0 + 11 +-36.18076026338071 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +47.72000000000009 + 30 +0.0 + 11 +-44.61294998016194 + 21 +47.72000000000009 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +49.14500000000006 + 30 +0.0 + 11 +-36.18076026338071 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +51.58000000000008 + 30 +0.0 + 11 +-44.61294998016194 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +50.1550000000001 + 30 +0.0 + 11 +-36.18076026338071 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-40.76081905039643 + 20 +59.62000000000006 + 30 +0.0 + 11 +-44.61294998016194 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-24.77511553077403 + 20 +61.04500000000005 + 30 +0.0 + 11 +-36.18076026338071 + 21 +61.04500000000005 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-43.61999999999974 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-43.61999999999974 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-45.04499999999969 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-45.04499999999969 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-35.57999999999972 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-35.57999999999972 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-33.14499999999972 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-33.14499999999972 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-22.25499999999979 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-22.25499999999979 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-21.24499999999974 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-21.24499999999974 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-11.77999999999976 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-11.77999999999976 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +-7.919999999999809 + 30 +0.0 + 11 +-24.11294998016194 + 21 +-7.919999999999809 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +-9.344999999999764 + 30 +0.0 + 11 +-15.68076026338076 + 21 +-9.344999999999792 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +0.1200000000001822 + 30 +0.0 + 11 +-24.11294998016194 + 21 +0.1200000000001822 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +1.545000000000165 + 30 +0.0 + 11 +-15.68076026338076 + 21 +1.545000000000165 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +3.980000000000167 + 30 +0.0 + 11 +-24.11294998016194 + 21 +3.980000000000167 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +2.555000000000212 + 30 +0.0 + 11 +-15.68076026338076 + 21 +2.555000000000184 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +12.02000000000016 + 30 +0.0 + 11 +-24.11294998016194 + 21 +12.02000000000016 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +13.44500000000014 + 30 +0.0 + 11 +-15.68076026338076 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +15.88000000000014 + 30 +0.0 + 11 +-24.11294998016194 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +14.45500000000019 + 30 +0.0 + 11 +-15.68076026338076 + 21 +14.45500000000016 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +23.92000000000014 + 30 +0.0 + 11 +-24.11294998016194 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +25.34500000000012 + 30 +0.0 + 11 +-15.68076026338065 + 21 +25.34500000000012 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +27.78000000000012 + 30 +0.0 + 11 +-24.11294998016194 + 21 +27.78000000000012 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +26.35500000000014 + 30 +0.0 + 11 +-15.68076026338065 + 21 +26.35500000000014 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +35.82000000000011 + 30 +0.0 + 11 +-24.11294998016194 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +37.24500000000008 + 30 +0.0 + 11 +-15.68076026338065 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +39.6800000000001 + 30 +0.0 + 11 +-24.11294998016194 + 21 +39.6800000000001 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +38.25500000000013 + 30 +0.0 + 11 +-15.68076026338065 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +47.72000000000009 + 30 +0.0 + 11 +-24.11294998016194 + 21 +47.72000000000009 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +49.14500000000006 + 30 +0.0 + 11 +-15.68076026338065 + 21 +49.14500000000007 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.23213203435591 + 20 +9.612132034356029 + 10 +-24.0200000000001 + 20 +9.400000000000041 + 10 +-24.0200000000001 + 20 +6.599999999999972 + 10 +-24.23213203435603 + 20 +6.387867965644012 + 0 +LWPOLYLINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-4.267867965644086 + 20 +9.612132034356029 + 10 +-4.480000000000018 + 20 +9.400000000000041 + 10 +-4.480000000000018 + 20 +6.599999999999972 + 10 +-4.267867965644086 + 20 +6.387867965644041 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +51.58000000000008 + 30 +0.0 + 11 +-24.11294998016194 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +50.1550000000001 + 30 +0.0 + 11 +-15.68076026338065 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-20.26081905039632 + 20 +59.62000000000006 + 30 +0.0 + 11 +-24.11294998016194 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbLine + 10 +-4.275115530774087 + 20 +61.04500000000005 + 30 +0.0 + 11 +-15.68076026338065 + 21 +61.04500000000005 + 31 +0.0 + 0 +CIRCLE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbCircle + 10 +-172.0 + 20 +28.00000000000002 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-4.267867965643972 + 20 +45.31213203435611 + 10 +-4.479999999999904 + 20 +45.10000000000013 + 10 +-4.479999999999904 + 20 +42.30000000000006 + 10 +-4.267867965643972 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-4.267867965643972 + 20 +-26.08786796564393 + 10 +-4.479999999999904 + 20 +-26.29999999999992 + 10 +-4.479999999999904 + 20 +-29.09999999999999 + 10 +-4.267867965643972 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.23213203435591 + 20 +45.31213203435611 + 10 +-24.01999999999998 + 20 +45.10000000000013 + 10 +-24.01999999999998 + 20 +42.30000000000006 + 10 +-24.23213203435591 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.23213203435591 + 20 +-26.08786796564393 + 10 +-24.01999999999998 + 20 +-26.29999999999992 + 10 +-24.01999999999998 + 20 +-29.09999999999999 + 10 +-24.23213203435591 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.76786796564397 + 20 +-26.08786796564393 + 10 +-24.9799999999999 + 20 +-26.29999999999992 + 10 +-24.9799999999999 + 20 +-29.09999999999999 + 10 +-24.76786796564397 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.73213203435591 + 20 +-26.08786796564393 + 10 +-44.51999999999992 + 20 +-26.29999999999992 + 10 +-44.51999999999992 + 20 +-29.09999999999999 + 10 +-44.73213203435591 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-45.26786796564391 + 20 +-26.08786796564393 + 10 +-45.4799999999999 + 20 +-26.29999999999992 + 10 +-45.4799999999999 + 20 +-29.09999999999999 + 10 +-45.26786796564391 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.23213203435592 + 20 +-26.08786796564393 + 10 +-65.01999999999992 + 20 +-26.29999999999992 + 10 +-65.01999999999992 + 20 +-29.09999999999999 + 10 +-65.23213203435592 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.76786796564391 + 20 +-26.08786796564393 + 10 +-65.9799999999999 + 20 +-26.29999999999992 + 10 +-65.9799999999999 + 20 +-29.09999999999999 + 10 +-65.76786796564391 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.73213203435591 + 20 +-26.08786796564393 + 10 +-85.51999999999992 + 20 +-26.29999999999992 + 10 +-85.51999999999992 + 20 +-29.09999999999999 + 10 +-85.73213203435591 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-86.26786796564392 + 20 +-26.08786796564393 + 10 +-86.4799999999999 + 20 +-26.29999999999992 + 10 +-86.4799999999999 + 20 +-29.09999999999999 + 10 +-86.26786796564392 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.2321320343559 + 20 +-26.08786796564393 + 10 +-106.0199999999999 + 20 +-26.29999999999992 + 10 +-106.0199999999999 + 20 +-29.09999999999999 + 10 +-106.2321320343559 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.7678679656439 + 20 +-26.08786796564393 + 10 +-106.9799999999999 + 20 +-26.29999999999992 + 10 +-106.9799999999999 + 20 +-29.09999999999999 + 10 +-106.7678679656439 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-126.7321320343559 + 20 +-26.08786796564393 + 10 +-126.5199999999999 + 20 +-26.29999999999992 + 10 +-126.5199999999999 + 20 +-29.09999999999999 + 10 +-126.7321320343559 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-127.2678679656439 + 20 +-26.08786796564393 + 10 +-127.4799999999999 + 20 +-26.29999999999992 + 10 +-127.4799999999999 + 20 +-29.09999999999999 + 10 +-127.2678679656439 + 20 +-29.31213203435592 + 0 +LWPOLYLINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.2321320343559 + 20 +-26.0878679656439 + 10 +-147.0199999999999 + 20 +-26.29999999999989 + 10 +-147.0199999999999 + 20 +-29.09999999999996 + 10 +-147.2321320343559 + 20 +-29.31213203435589 + 0 +LWPOLYLINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.7678679656439 + 20 +-26.0878679656439 + 10 +-147.9799999999999 + 20 +-26.29999999999989 + 10 +-147.9799999999999 + 20 +-29.09999999999996 + 10 +-147.7678679656439 + 20 +-29.31213203435589 + 0 +LWPOLYLINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.7321320343559 + 20 +-26.0878679656439 + 10 +-167.5199999999999 + 20 +-26.29999999999989 + 10 +-167.5199999999999 + 20 +-29.09999999999996 + 10 +-167.7321320343559 + 20 +-29.31213203435589 + 0 +LWPOLYLINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.76786796564397 + 20 +45.31213203435611 + 10 +-24.9799999999999 + 20 +45.10000000000013 + 10 +-24.9799999999999 + 20 +42.30000000000006 + 10 +-24.76786796564397 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.73213203435591 + 20 +45.31213203435611 + 10 +-44.51999999999998 + 20 +45.10000000000013 + 10 +-44.51999999999998 + 20 +42.30000000000006 + 10 +-44.73213203435591 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-45.26786796564397 + 20 +45.31213203435611 + 10 +-45.4799999999999 + 20 +45.10000000000013 + 10 +-45.4799999999999 + 20 +42.30000000000006 + 10 +-45.26786796564397 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.23213203435592 + 20 +45.31213203435611 + 10 +-65.01999999999998 + 20 +45.10000000000013 + 10 +-65.01999999999998 + 20 +42.30000000000006 + 10 +-65.23213203435592 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.76786796564397 + 20 +45.31213203435611 + 10 +-65.9799999999999 + 20 +45.10000000000013 + 10 +-65.9799999999999 + 20 +42.30000000000006 + 10 +-65.76786796564397 + 20 +42.08786796564413 + 0 +LWPOLYLINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.73213203435591 + 20 +45.31213203435613 + 10 +-85.51999999999997 + 20 +45.10000000000014 + 10 +-85.51999999999997 + 20 +42.30000000000007 + 10 +-85.73213203435591 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-86.26786796564397 + 20 +45.31213203435613 + 10 +-86.4799999999999 + 20 +45.10000000000014 + 10 +-86.4799999999999 + 20 +42.30000000000007 + 10 +-86.26786796564397 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.2321320343559 + 20 +45.31213203435613 + 10 +-106.02 + 20 +45.10000000000014 + 10 +-106.02 + 20 +42.30000000000007 + 10 +-106.2321320343559 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.7678679656439 + 20 +45.31213203435613 + 10 +-106.9799999999999 + 20 +45.10000000000014 + 10 +-106.9799999999999 + 20 +42.30000000000007 + 10 +-106.7678679656439 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-126.7321320343559 + 20 +45.31213203435613 + 10 +-126.52 + 20 +45.10000000000014 + 10 +-126.52 + 20 +42.30000000000007 + 10 +-126.7321320343559 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-127.2678679656439 + 20 +45.31213203435613 + 10 +-127.4799999999999 + 20 +45.10000000000014 + 10 +-127.4799999999999 + 20 +42.30000000000007 + 10 +-127.2678679656439 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.2321320343559 + 20 +45.31213203435613 + 10 +-147.02 + 20 +45.10000000000014 + 10 +-147.02 + 20 +42.30000000000007 + 10 +-147.2321320343559 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.767867965644 + 20 +45.31213203435613 + 10 +-147.9799999999999 + 20 +45.10000000000014 + 10 +-147.9799999999999 + 20 +42.30000000000007 + 10 +-147.767867965644 + 20 +42.08786796564414 + 0 +LWPOLYLINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +4545 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.7321320343559 + 20 +45.31213203435613 + 10 +-167.52 + 20 +45.10000000000014 + 10 +-167.52 + 20 +42.30000000000007 + 10 +-167.7321320343559 + 20 +42.08786796564414 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E129-1.par b/LaiPuLaser/TempMarkData/E129-1.par new file mode 100644 index 0000000..9d36b5c Binary files /dev/null and b/LaiPuLaser/TempMarkData/E129-1.par differ diff --git a/LaiPuLaser/TempMarkData/E129.are b/LaiPuLaser/TempMarkData/E129.are new file mode 100644 index 0000000..bd6c84a Binary files /dev/null and b/LaiPuLaser/TempMarkData/E129.are differ diff --git a/LaiPuLaser/TempMarkData/E129.par b/LaiPuLaser/TempMarkData/E129.par new file mode 100644 index 0000000..43678e2 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E129.par differ diff --git a/LaiPuLaser/TempMarkData/E129.txt b/LaiPuLaser/TempMarkData/E129.txt new file mode 100644 index 0000000..dc7e11a --- /dev/null +++ b/LaiPuLaser/TempMarkData/E129.txt @@ -0,0 +1,8 @@ +1 +62.1 +-11.6604 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/TempMarkData/E189-3点.are b/LaiPuLaser/TempMarkData/E189-3点.are new file mode 100644 index 0000000..2f296de Binary files /dev/null and b/LaiPuLaser/TempMarkData/E189-3点.are differ diff --git a/LaiPuLaser/TempMarkData/E189-3点.dxf b/LaiPuLaser/TempMarkData/E189-3点.dxf new file mode 100644 index 0000000..9f8b396 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E189-3点.dxf @@ -0,0 +1,16902 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-173.4089213562373 + 20 +-0.2500000000000001 + 30 +0.0 + 9 +$EXTMAX + 10 +2.183921356237335 + 20 +117.2631599520985 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458952.222306088 + 9 +$TDUCREATE + 40 +2458951.888972755 + 9 +$TDUPDATE + 40 +2458952.222306053 + 9 +$TDUUPDATE + 40 +2458951.88897272 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +511 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-97.31077899210345 + 22 +34.37669853243196 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +200.3317934081074 + 41 +2.691327715527123 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +E192-B1-3MARK + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +501 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +503 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +50D +330 +503 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +504 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-58.91250000000011 + 20 +108.1249999999999 + 30 +0.0 + 11 +-58.91250000000011 + 21 +114.9714932854319 + 31 +0.0 + 0 +LINE + 5 +505 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +2.112500000000011 + 20 +108.125 + 30 +0.0 + 11 +2.112500000000011 + 21 +114.9714932854319 + 31 +0.0 + 0 +LINE + 5 +506 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-56.41250000000011 + 20 +113.7214932854319 + 30 +0.0 + 11 +-0.3874999999999891 + 21 +113.7214932854319 + 31 +0.0 + 0 +SOLID + 5 +507 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +-56.41250000000011 + 20 +114.1381599520986 + 30 +0.0 + 11 +-56.41250000000011 + 21 +113.3048266187652 + 31 +0.0 + 12 +-58.91250000000011 + 22 +113.7214932854319 + 32 +0.0 + 13 +-58.91250000000011 + 23 +113.7214932854319 + 33 +0.0 + 0 +SOLID + 5 +508 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +-0.3874999999999891 + 20 +113.3048266187652 + 30 +0.0 + 11 +-0.3874999999999891 + 21 +114.1381599520986 + 31 +0.0 + 12 +2.112500000000011 + 22 +113.7214932854319 + 32 +0.0 + 13 +2.112500000000011 + 23 +113.7214932854319 + 33 +0.0 + 0 +MTEXT + 5 +509 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +-28.40000000000005 + 20 +115.8048266187652 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +61,03 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +50A +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-58.91250000000011 + 20 +107.4999999999999 + 30 +0.0 + 0 +POINT + 5 +50B +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +2.112500000000011 + 20 +107.5 + 30 +0.0 + 0 +POINT + 5 +50C +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +2.112500000000011 + 20 +113.7214932854319 + 30 +0.0 + 0 +ENDBLK + 5 +50E +330 +503 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +107.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +99.4999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-14.71250000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +98.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +90.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-14.71250000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +89.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +81.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-14.71250000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +80.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +72.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-14.71250000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +71.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +63.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +63.49999999999996 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +63.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +62.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +62.49999999999996 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +54.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +54.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +62.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +54.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +53.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +53.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +45.49999999999988 + 30 +0.0 + 11 +-6.037499999999994 + 21 +45.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +53.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +45.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +44.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +44.49999999999996 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +36.49999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +36.49999999999999 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +44.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +36.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +35.49999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +35.49999999999999 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +27.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +35.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +27.47499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +26.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +18.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +26.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +18.47499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +17.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +9.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +17.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +9.474999999999966 + 30 +0.0 + 11 +-14.71250000000001 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +8.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-6.037499999999994 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +8.524999999999977 + 30 +0.0 + 11 +-14.71250000000001 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-14.71250000000001 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +107.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-23.66249999999999 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-32.33750000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-23.66249999999999 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-32.33750000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-32.33750000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-32.33750000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +36.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +36.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +35.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +27.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +35.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +27.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +26.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +18.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +26.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +18.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +17.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +9.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +17.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +9.474999999999966 + 30 +0.0 + 11 +-32.33750000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +8.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-23.66249999999999 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +8.524999999999977 + 30 +0.0 + 11 +-32.33750000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-32.33750000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +107.5 + 30 +0.0 + 11 +-41.28750000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-41.28750000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-49.96250000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-41.28750000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-49.96250000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-49.96250000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-49.96250000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +36.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +35.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +27.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +26.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +18.49999999999989 + 30 +0.0 + 11 +-41.28750000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +17.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +9.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-49.96250000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +8.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-41.28750000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-49.96250000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-49.96250000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +107.5 + 30 +0.0 + 11 +-58.91250000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-58.91250000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-67.5875 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-58.91250000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-67.5875 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-67.5875 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-67.5875 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +36.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +35.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +27.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +26.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +18.49999999999989 + 30 +0.0 + 11 +-58.91250000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +17.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +9.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-67.58750000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +8.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-58.91250000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-67.58750000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-67.58750000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +107.5 + 30 +0.0 + 11 +-76.53750000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-76.53750000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +107.5249999999999 + 30 +0.0 + 11 +-85.2125 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +99.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-76.53750000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +98.52499999999993 + 30 +0.0 + 11 +-85.2125 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +90.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +89.52499999999995 + 30 +0.0 + 11 +-85.2125 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +81.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +80.52499999999992 + 30 +0.0 + 11 +-85.2125 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +72.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +71.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +63.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +62.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +54.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +53.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +45.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +36.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +44.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +35.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +27.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +26.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +18.49999999999989 + 30 +0.0 + 11 +-76.53750000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +17.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +9.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-85.21250000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +8.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-76.53750000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-85.21250000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-85.21250000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +107.5 + 30 +0.0 + 11 +-94.16250000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-94.16250000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +107.5249999999999 + 30 +0.0 + 11 +-102.8375 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +99.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-94.16250000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +98.52499999999993 + 30 +0.0 + 11 +-102.8375 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +90.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +89.52499999999995 + 30 +0.0 + 11 +-102.8375 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +81.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +80.52499999999992 + 30 +0.0 + 11 +-102.8375 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +72.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +63.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +71.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +63.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +62.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +54.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +62.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +54.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +53.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +53.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +45.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +44.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +36.50000000000001 + 30 +0.0 + 11 +-94.16250000000012 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +44.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +36.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +35.50000000000001 + 30 +0.0 + 11 +-94.16250000000012 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +27.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +35.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +27.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +26.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +18.49999999999989 + 30 +0.0 + 11 +-94.16250000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +26.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +18.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +17.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +9.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +17.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-102.8375 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +8.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-94.16250000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-102.8375 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-102.8375 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +107.5 + 30 +0.0 + 11 +-111.7875 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +99.49999999999991 + 30 +0.0 + 11 +-111.7875 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +107.5249999999999 + 30 +0.0 + 11 +-120.4625 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +99.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +98.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +90.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +98.52499999999995 + 30 +0.0 + 11 +-120.4625 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +90.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +89.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +81.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +89.52499999999996 + 30 +0.0 + 11 +-120.4625 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +81.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +80.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +72.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +80.52499999999993 + 30 +0.0 + 11 +-120.4625 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +72.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +71.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +63.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +71.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +63.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +62.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +54.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +62.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +54.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +53.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +45.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +53.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +45.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +44.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +36.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +44.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +36.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +35.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +27.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +35.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +27.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +26.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +18.4999999999999 + 30 +0.0 + 11 +-111.7875 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +26.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +18.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +17.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +9.500000000000014 + 30 +0.0 + 11 +-111.7875 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +17.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +9.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +8.500000000000014 + 30 +0.0 + 11 +-111.7875 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-111.7875 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +8.524999999999991 + 30 +0.0 + 11 +-120.4625 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-120.4625 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +107.5 + 30 +0.0 + 11 +-129.4125 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +99.49999999999991 + 30 +0.0 + 11 +-129.4125 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +107.5249999999999 + 30 +0.0 + 11 +-138.0875 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +99.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +98.49999999999997 + 30 +0.0 + 11 +-129.4125 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +90.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +98.52499999999995 + 30 +0.0 + 11 +-138.0875 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +90.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +89.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +81.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +89.52499999999996 + 30 +0.0 + 11 +-138.0875 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +81.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +80.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +72.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +80.52499999999993 + 30 +0.0 + 11 +-138.0875 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +72.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +71.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +63.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +71.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +63.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +62.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +54.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +62.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +54.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +53.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +45.49999999999989 + 30 +0.0 + 11 +-129.4125 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +53.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +45.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +44.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +36.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +44.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +36.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +35.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +27.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +35.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +27.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +26.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +18.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +26.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +18.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +17.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +9.500000000000014 + 30 +0.0 + 11 +-129.4125 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +17.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +9.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +8.500000000000014 + 30 +0.0 + 11 +-129.4125 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-129.4125 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +8.524999999999991 + 30 +0.0 + 11 +-138.0875 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-138.0875 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +107.5 + 30 +0.0 + 11 +-147.0375 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +99.49999999999991 + 30 +0.0 + 11 +-147.0375 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +107.5249999999999 + 30 +0.0 + 11 +-155.7125 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +99.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +98.49999999999997 + 30 +0.0 + 11 +-147.0375 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +90.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +98.52499999999995 + 30 +0.0 + 11 +-155.7125 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +90.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +89.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +81.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +89.52499999999996 + 30 +0.0 + 11 +-155.7125 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +81.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +80.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +72.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +80.52499999999993 + 30 +0.0 + 11 +-155.7125 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +72.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +71.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +63.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +63.49999999999999 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +71.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +63.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +62.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +62.49999999999999 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +54.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +54.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +62.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +54.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +53.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +53.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +45.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +45.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +53.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +45.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +44.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +44.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +36.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +44.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +36.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +35.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +27.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +35.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +27.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +26.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +18.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +26.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +18.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +17.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +9.500000000000014 + 30 +0.0 + 11 +-147.0375 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +17.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +9.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +8.500000000000014 + 30 +0.0 + 11 +-147.0375 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-147.0375 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +8.524999999999991 + 30 +0.0 + 11 +-155.7125 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-155.7125 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +107.5 + 30 +0.0 + 11 +-164.6625 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +99.49999999999991 + 30 +0.0 + 11 +-164.6625 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +107.5249999999999 + 30 +0.0 + 11 +-173.3375 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +99.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +98.49999999999997 + 30 +0.0 + 11 +-164.6625 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +90.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +98.52499999999995 + 30 +0.0 + 11 +-173.3375 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +90.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +89.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +81.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +89.52499999999996 + 30 +0.0 + 11 +-173.3375 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +81.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +80.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +72.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +80.52499999999993 + 30 +0.0 + 11 +-173.3375 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +72.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +71.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +63.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +63.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +71.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +63.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +62.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +62.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +54.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +54.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +62.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +54.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +53.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +53.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +45.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +45.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +53.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +45.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +44.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +44.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +36.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +44.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +36.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +35.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +27.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +35.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +27.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +26.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +18.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +26.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +18.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +17.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +9.500000000000014 + 30 +0.0 + 11 +-164.6625 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +17.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +9.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +8.500000000000014 + 30 +0.0 + 11 +-164.6625 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-164.6625 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +8.524999999999991 + 30 +0.0 + 11 +-173.3375 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-173.3375 + 21 +0.4749999999999801 + 31 +0.0 + 0 +CIRCLE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +98.99999999999996 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +-158.625 + 20 +98.99999999999997 + 30 +0.0 + 40 +0.25 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E189-3点.par b/LaiPuLaser/TempMarkData/E189-3点.par new file mode 100644 index 0000000..d9101dc Binary files /dev/null and b/LaiPuLaser/TempMarkData/E189-3点.par differ diff --git a/LaiPuLaser/TempMarkData/E192 两点定位.are b/LaiPuLaser/TempMarkData/E192 两点定位.are new file mode 100644 index 0000000..b311c93 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E192 两点定位.are differ diff --git a/LaiPuLaser/TempMarkData/E192 两点定位.dxf b/LaiPuLaser/TempMarkData/E192 两点定位.dxf new file mode 100644 index 0000000..2db3c45 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E192 两点定位.dxf @@ -0,0 +1,17126 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.4999999999999 + 20 +-78.5199999999973 + 30 +0.0 + 9 +$EXTMAX + 10 +183.4999999999999 + 20 +78.51999999999728 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458960.59392588 + 9 +$TDUCREATE + 40 +2458960.260592546 + 9 +$TDUPDATE + 40 +2458960.594441157 + 9 +$TDUUPDATE + 40 +2458960.261107824 + 9 +$TDINDWG + 40 +0.0005179861 + 9 +$TDUSRTIMER + 40 +0.0005179861 + 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 +45A + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{91942A1E-301F-41C2-A941-A56AA8D1D0D1} + 9 +$VERSIONGUID + 2 +{0EDA6B5A-F369-42A0-922C-168BB92668BD} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +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 +431 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-0.7454026715320057 + 22 +0.450659896732537 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +393.036507919505 + 41 +0.4706231268731269 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3D +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +LAYER + 5 +34 +102 +{ACAD_XDICTIONARY +360 +35 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +3A + 0 +LAYER + 5 +37 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +3A + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +38 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +39 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2D + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +31 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +32 +330 +2D +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +33 +330 +2D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +182.9999999999999 + 20 +-64.99999999999469 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-78.4949999999973 + 30 +0.0 + 11 +170.5929379449557 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-70.50499999999724 + 30 +0.0 + 11 +170.5929379449557 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-78.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-70.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-69.4949999999973 + 30 +0.0 + 11 +170.5929379449557 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-61.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-61.50499999999711 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-69.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-61.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-61.47999999999728 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-60.4949999999973 + 30 +0.0 + 11 +170.5929379449557 + 21 +-60.4949999999974 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-52.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-52.50499999999712 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-60.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-60.5199999999973 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-52.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-52.47999999999728 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-51.49499999999729 + 30 +0.0 + 11 +170.5929379449557 + 21 +-51.49499999999741 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-43.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-43.50499999999711 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-51.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-51.5199999999973 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-43.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-43.47999999999728 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-42.49499999999729 + 30 +0.0 + 11 +170.5929379449557 + 21 +-42.49499999999741 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-34.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-34.50499999999712 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-42.51999999999729 + 30 +0.0 + 11 +161.9931754976122 + 21 +-42.51999999999729 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-34.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-34.47999999999728 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-33.4949999999973 + 30 +0.0 + 11 +170.5929379449557 + 21 +-33.49499999999741 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-25.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-25.50499999999712 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-33.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-33.5199999999973 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-25.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-25.47999999999728 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-24.4949999999973 + 30 +0.0 + 11 +170.5929379449557 + 21 +-24.49499999999741 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-16.50499999999723 + 30 +0.0 + 11 +170.5929379449557 + 21 +-16.50499999999711 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-24.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-24.5199999999973 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-16.47999999999728 + 30 +0.0 + 11 +161.9931754976122 + 21 +-16.47999999999728 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-15.49499999999729 + 30 +0.0 + 11 +170.5929379449557 + 21 +-15.49499999999741 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-7.504999999997232 + 30 +0.0 + 11 +170.5929379449557 + 21 +-7.504999999997118 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-15.5199999999973 + 30 +0.0 + 11 +161.9931754976122 + 21 +-15.5199999999973 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-7.479999999997282 + 30 +0.0 + 11 +161.9931754976122 + 21 +-7.479999999997281 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +-6.494999999997298 + 30 +0.0 + 11 +170.5929379449557 + 21 +-6.49499999999741 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +1.495000000002767 + 30 +0.0 + 11 +170.5929379449557 + 21 +1.495000000002882 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +-6.519999999997301 + 30 +0.0 + 11 +161.9931754976122 + 21 +-6.5199999999973 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +1.520000000002718 + 30 +0.0 + 11 +161.9931754976122 + 21 +1.520000000002718 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +2.505000000002701 + 30 +0.0 + 11 +170.5929379449557 + 21 +2.505000000002589 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +10.49500000000277 + 30 +0.0 + 11 +170.5929379449557 + 21 +10.49500000000288 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +2.480000000002697 + 30 +0.0 + 11 +161.9931754976122 + 21 +2.480000000002698 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +10.52000000000272 + 30 +0.0 + 11 +161.9931754976122 + 21 +10.52000000000272 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +11.5050000000027 + 30 +0.0 + 11 +170.5929379449557 + 21 +11.50500000000259 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +19.49500000000277 + 30 +0.0 + 11 +170.5929379449557 + 21 +19.49500000000288 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +11.4800000000027 + 30 +0.0 + 11 +161.9931754976122 + 21 +11.4800000000027 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +19.52000000000272 + 30 +0.0 + 11 +161.9931754976122 + 21 +19.52000000000272 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +20.50500000000271 + 30 +0.0 + 11 +170.5929379449557 + 21 +20.50500000000259 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +178.660208513431 + 20 +28.49500000000277 + 30 +0.0 + 11 +170.5929379449557 + 21 +28.49500000000288 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +20.4800000000027 + 30 +0.0 + 11 +161.9931754976122 + 21 +20.4800000000027 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +165.6144123191441 + 20 +28.52000000000272 + 30 +0.0 + 11 +161.9931754976122 + 21 +28.52000000000272 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-78.49499999999729 + 30 +0.0 + 11 +152.9679379449557 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-70.50499999999722 + 30 +0.0 + 11 +152.9679379449557 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-78.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-70.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-69.49499999999729 + 30 +0.0 + 11 +152.9679379449557 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-61.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-61.50499999999711 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-69.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-61.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-61.47999999999728 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-60.4949999999973 + 30 +0.0 + 11 +152.9679379449557 + 21 +-60.4949999999974 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-52.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-52.50499999999712 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-60.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-60.5199999999973 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-52.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-52.47999999999728 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-51.49499999999729 + 30 +0.0 + 11 +152.9679379449557 + 21 +-51.49499999999741 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-43.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-43.50499999999711 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-51.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-51.5199999999973 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-43.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-43.47999999999728 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-42.49499999999729 + 30 +0.0 + 11 +152.9679379449557 + 21 +-42.49499999999741 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-34.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-34.50499999999712 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-42.51999999999729 + 30 +0.0 + 11 +144.3681754976122 + 21 +-42.51999999999728 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-34.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-34.47999999999728 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-33.4949999999973 + 30 +0.0 + 11 +152.9679379449557 + 21 +-33.49499999999741 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-25.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-25.50499999999712 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-33.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-33.5199999999973 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-25.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-25.47999999999728 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-24.4949999999973 + 30 +0.0 + 11 +152.9679379449557 + 21 +-24.49499999999741 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-16.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-16.50499999999711 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-24.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-24.5199999999973 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-16.47999999999728 + 30 +0.0 + 11 +144.3681754976122 + 21 +-16.47999999999728 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-15.49499999999729 + 30 +0.0 + 11 +152.9679379449557 + 21 +-15.49499999999741 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-7.50499999999723 + 30 +0.0 + 11 +152.9679379449557 + 21 +-7.504999999997115 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-15.5199999999973 + 30 +0.0 + 11 +144.3681754976122 + 21 +-15.5199999999973 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-7.479999999997279 + 30 +0.0 + 11 +144.3681754976122 + 21 +-7.479999999997279 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +-6.494999999997296 + 30 +0.0 + 11 +152.9679379449557 + 21 +-6.494999999997408 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +1.495000000002769 + 30 +0.0 + 11 +152.9679379449557 + 21 +1.495000000002884 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +-6.519999999997299 + 30 +0.0 + 11 +144.3681754976122 + 21 +-6.519999999997299 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +1.52000000000272 + 30 +0.0 + 11 +144.3681754976122 + 21 +1.52000000000272 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +2.505000000002704 + 30 +0.0 + 11 +152.9679379449557 + 21 +2.505000000002591 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +10.49500000000277 + 30 +0.0 + 11 +152.9679379449557 + 21 +10.49500000000288 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +2.4800000000027 + 30 +0.0 + 11 +144.3681754976122 + 21 +2.4800000000027 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +10.52000000000272 + 30 +0.0 + 11 +144.3681754976122 + 21 +10.52000000000272 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +11.5050000000027 + 30 +0.0 + 11 +152.9679379449557 + 21 +11.50500000000259 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +19.49500000000277 + 30 +0.0 + 11 +152.9679379449557 + 21 +19.49500000000288 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +11.4800000000027 + 30 +0.0 + 11 +144.3681754976122 + 21 +11.4800000000027 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +19.52000000000272 + 30 +0.0 + 11 +144.3681754976122 + 21 +19.52000000000272 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +20.50500000000271 + 30 +0.0 + 11 +152.9679379449557 + 21 +20.50500000000259 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +161.035208513431 + 20 +28.49500000000277 + 30 +0.0 + 11 +152.9679379449557 + 21 +28.49500000000288 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +20.4800000000027 + 30 +0.0 + 11 +144.3681754976122 + 21 +20.4800000000027 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +147.9894123191441 + 20 +28.52000000000272 + 30 +0.0 + 11 +144.3681754976122 + 21 +28.52000000000272 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-78.49499999999729 + 30 +0.0 + 11 +135.3429379449557 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-70.50499999999722 + 30 +0.0 + 11 +135.3429379449557 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-78.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-70.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-69.49499999999729 + 30 +0.0 + 11 +135.3429379449557 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-61.50499999999722 + 30 +0.0 + 11 +135.3429379449557 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-69.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-61.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-61.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-60.4949999999973 + 30 +0.0 + 11 +135.3429379449557 + 21 +-60.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-52.50499999999722 + 30 +0.0 + 11 +135.3429379449557 + 21 +-52.50499999999712 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-60.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-60.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-52.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-52.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-51.49499999999728 + 30 +0.0 + 11 +135.3429379449557 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-43.50499999999722 + 30 +0.0 + 11 +135.3429379449557 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-51.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-51.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-43.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-43.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-42.49499999999728 + 30 +0.0 + 11 +135.3429379449557 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-34.50499999999722 + 30 +0.0 + 11 +135.3429379449557 + 21 +-34.50499999999712 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-42.51999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-42.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-34.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-34.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-33.4949999999973 + 30 +0.0 + 11 +135.3429379449557 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-25.50499999999723 + 30 +0.0 + 11 +135.3429379449557 + 21 +-25.50499999999712 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-33.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-33.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-25.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-25.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-24.4949999999973 + 30 +0.0 + 11 +135.3429379449557 + 21 +-24.49499999999741 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-16.50499999999723 + 30 +0.0 + 11 +135.3429379449557 + 21 +-16.50499999999711 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-24.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-24.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-16.47999999999728 + 30 +0.0 + 11 +126.7431754976122 + 21 +-16.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-15.49499999999729 + 30 +0.0 + 11 +135.3429379449557 + 21 +-15.49499999999741 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-7.504999999997228 + 30 +0.0 + 11 +135.3429379449557 + 21 +-7.504999999997113 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-15.5199999999973 + 30 +0.0 + 11 +126.7431754976122 + 21 +-15.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-7.479999999997277 + 30 +0.0 + 11 +126.7431754976122 + 21 +-7.479999999997276 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +-6.494999999997294 + 30 +0.0 + 11 +135.3429379449557 + 21 +-6.494999999997406 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +1.495000000002771 + 30 +0.0 + 11 +135.3429379449557 + 21 +1.495000000002886 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +-6.519999999997297 + 30 +0.0 + 11 +126.7431754976122 + 21 +-6.519999999997296 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +1.520000000002722 + 30 +0.0 + 11 +126.7431754976122 + 21 +1.520000000002723 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +2.505000000002705 + 30 +0.0 + 11 +135.3429379449557 + 21 +2.505000000002593 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +10.49500000000277 + 30 +0.0 + 11 +135.3429379449557 + 21 +10.49500000000288 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +2.480000000002702 + 30 +0.0 + 11 +126.7431754976122 + 21 +2.480000000002702 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +10.52000000000272 + 30 +0.0 + 11 +126.7431754976122 + 21 +10.52000000000272 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +11.5050000000027 + 30 +0.0 + 11 +135.3429379449557 + 21 +11.50500000000259 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +19.49500000000277 + 30 +0.0 + 11 +135.3429379449557 + 21 +19.49500000000288 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +11.4800000000027 + 30 +0.0 + 11 +126.7431754976122 + 21 +11.4800000000027 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +19.52000000000272 + 30 +0.0 + 11 +126.7431754976122 + 21 +19.52000000000272 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +20.50500000000271 + 30 +0.0 + 11 +135.3429379449557 + 21 +20.50500000000259 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +143.410208513431 + 20 +28.49500000000277 + 30 +0.0 + 11 +135.3429379449557 + 21 +28.49500000000288 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +20.4800000000027 + 30 +0.0 + 11 +126.7431754976122 + 21 +20.4800000000027 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +130.3644123191441 + 20 +28.52000000000272 + 30 +0.0 + 11 +126.7431754976122 + 21 +28.52000000000272 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-78.49499999999729 + 30 +0.0 + 11 +117.7179379449557 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-70.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-78.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-70.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-69.49499999999729 + 30 +0.0 + 11 +117.7179379449557 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-61.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-69.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-61.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-61.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-60.4949999999973 + 30 +0.0 + 11 +117.7179379449557 + 21 +-60.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-52.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-52.50499999999712 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-60.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-60.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-52.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-52.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-51.49499999999728 + 30 +0.0 + 11 +117.7179379449557 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-43.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-51.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-51.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-43.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-43.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-42.49499999999728 + 30 +0.0 + 11 +117.7179379449557 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-34.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-34.50499999999712 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-42.51999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-42.51999999999728 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-34.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-34.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-33.4949999999973 + 30 +0.0 + 11 +117.7179379449557 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-25.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-25.50499999999711 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-33.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-33.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-25.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-25.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-24.49499999999729 + 30 +0.0 + 11 +117.7179379449557 + 21 +-24.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-16.50499999999722 + 30 +0.0 + 11 +117.7179379449557 + 21 +-16.5049999999971 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-24.5199999999973 + 30 +0.0 + 11 +109.1181754976122 + 21 +-24.5199999999973 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-16.47999999999728 + 30 +0.0 + 11 +109.1181754976122 + 21 +-16.47999999999728 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-15.49499999999729 + 30 +0.0 + 11 +117.7179379449557 + 21 +-15.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-7.504999999997225 + 30 +0.0 + 11 +117.7179379449557 + 21 +-7.504999999997111 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-15.51999999999729 + 30 +0.0 + 11 +109.1181754976122 + 21 +-15.51999999999729 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-7.479999999997275 + 30 +0.0 + 11 +109.1181754976122 + 21 +-7.479999999997275 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +-6.494999999997291 + 30 +0.0 + 11 +117.7179379449557 + 21 +-6.494999999997403 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +1.495000000002774 + 30 +0.0 + 11 +117.7179379449557 + 21 +1.495000000002888 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +-6.519999999997295 + 30 +0.0 + 11 +109.1181754976122 + 21 +-6.519999999997294 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +1.520000000002724 + 30 +0.0 + 11 +109.1181754976122 + 21 +1.520000000002725 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +2.505000000002708 + 30 +0.0 + 11 +117.7179379449557 + 21 +2.505000000002596 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +10.49500000000277 + 30 +0.0 + 11 +117.7179379449557 + 21 +10.49500000000289 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +2.480000000002704 + 30 +0.0 + 11 +109.1181754976122 + 21 +2.480000000002704 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +10.52000000000273 + 30 +0.0 + 11 +109.1181754976122 + 21 +10.52000000000273 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +11.5050000000027 + 30 +0.0 + 11 +117.7179379449557 + 21 +11.5050000000026 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +19.49500000000278 + 30 +0.0 + 11 +117.7179379449557 + 21 +19.49500000000289 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +11.48000000000271 + 30 +0.0 + 11 +109.1181754976122 + 21 +11.48000000000271 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +19.52000000000272 + 30 +0.0 + 11 +109.1181754976122 + 21 +19.52000000000272 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +20.50500000000272 + 30 +0.0 + 11 +117.7179379449557 + 21 +20.5050000000026 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +125.785208513431 + 20 +28.49500000000278 + 30 +0.0 + 11 +117.7179379449557 + 21 +28.49500000000289 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +20.4800000000027 + 30 +0.0 + 11 +109.1181754976122 + 21 +20.4800000000027 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +112.7394123191441 + 20 +28.52000000000272 + 30 +0.0 + 11 +109.1181754976122 + 21 +28.52000000000272 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-78.49499999999729 + 30 +0.0 + 11 +100.0929379449557 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-70.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.11441231914408 + 20 +-78.5199999999973 + 30 +0.0 + 11 +91.49317549761223 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.11441231914408 + 20 +-70.47999999999728 + 30 +0.0 + 11 +91.49317549761223 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-69.49499999999729 + 30 +0.0 + 11 +100.0929379449557 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-61.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.11441231914408 + 20 +-69.5199999999973 + 30 +0.0 + 11 +91.49317549761223 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.11441231914408 + 20 +-61.47999999999728 + 30 +0.0 + 11 +91.49317549761223 + 21 +-61.47999999999728 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-60.4949999999973 + 30 +0.0 + 11 +100.0929379449557 + 21 +-60.4949999999974 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-52.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-52.50499999999712 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.11441231914408 + 20 +-60.5199999999973 + 30 +0.0 + 11 +91.49317549761223 + 21 +-60.5199999999973 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-52.47999999999728 + 30 +0.0 + 11 +91.49317549761224 + 21 +-52.47999999999728 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-51.49499999999728 + 30 +0.0 + 11 +100.0929379449557 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-43.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-51.5199999999973 + 30 +0.0 + 11 +91.49317549761224 + 21 +-51.5199999999973 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-43.47999999999728 + 30 +0.0 + 11 +91.49317549761224 + 21 +-43.47999999999728 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-42.49499999999728 + 30 +0.0 + 11 +100.0929379449557 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-34.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-34.50499999999712 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-42.51999999999728 + 30 +0.0 + 11 +91.49317549761224 + 21 +-42.51999999999728 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-34.47999999999728 + 30 +0.0 + 11 +91.49317549761224 + 21 +-34.47999999999728 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-33.4949999999973 + 30 +0.0 + 11 +100.0929379449557 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-25.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-25.50499999999711 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-33.5199999999973 + 30 +0.0 + 11 +91.49317549761224 + 21 +-33.5199999999973 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-25.47999999999727 + 30 +0.0 + 11 +91.49317549761224 + 21 +-25.47999999999727 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-24.49499999999729 + 30 +0.0 + 11 +100.0929379449557 + 21 +-24.4949999999974 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-16.50499999999722 + 30 +0.0 + 11 +100.0929379449557 + 21 +-16.5049999999971 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-24.51999999999729 + 30 +0.0 + 11 +91.49317549761224 + 21 +-24.51999999999729 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-16.47999999999727 + 30 +0.0 + 11 +91.49317549761224 + 21 +-16.47999999999727 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-15.49499999999728 + 30 +0.0 + 11 +100.0929379449557 + 21 +-15.4949999999974 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-7.504999999997223 + 30 +0.0 + 11 +100.0929379449557 + 21 +-7.504999999997109 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-15.51999999999729 + 30 +0.0 + 11 +91.49317549761224 + 21 +-15.51999999999729 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-7.479999999997273 + 30 +0.0 + 11 +91.49317549761224 + 21 +-7.479999999997273 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +-6.494999999997289 + 30 +0.0 + 11 +100.0929379449557 + 21 +-6.494999999997401 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +1.495000000002776 + 30 +0.0 + 11 +100.0929379449557 + 21 +1.495000000002891 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +-6.519999999997292 + 30 +0.0 + 11 +91.49317549761224 + 21 +-6.519999999997292 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +1.520000000002727 + 30 +0.0 + 11 +91.49317549761224 + 21 +1.520000000002727 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +2.50500000000271 + 30 +0.0 + 11 +100.0929379449557 + 21 +2.505000000002597 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +10.49500000000278 + 30 +0.0 + 11 +100.0929379449557 + 21 +10.49500000000289 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +2.480000000002706 + 30 +0.0 + 11 +91.49317549761224 + 21 +2.480000000002707 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +10.52000000000273 + 30 +0.0 + 11 +91.49317549761224 + 21 +10.52000000000273 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +11.50500000000271 + 30 +0.0 + 11 +100.0929379449557 + 21 +11.5050000000026 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +19.49500000000278 + 30 +0.0 + 11 +100.0929379449557 + 21 +19.49500000000289 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +11.48000000000271 + 30 +0.0 + 11 +91.49317549761224 + 21 +11.48000000000271 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +19.52000000000273 + 30 +0.0 + 11 +91.49317549761224 + 21 +19.52000000000273 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +20.50500000000272 + 30 +0.0 + 11 +100.0929379449557 + 21 +20.5050000000026 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.160208513431 + 20 +28.49500000000278 + 30 +0.0 + 11 +100.0929379449557 + 21 +28.49500000000289 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +20.48000000000271 + 30 +0.0 + 11 +91.49317549761224 + 21 +20.48000000000271 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +95.1144123191441 + 20 +28.52000000000273 + 30 +0.0 + 11 +91.49317549761224 + 21 +28.52000000000273 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343102 + 20 +-78.49499999999729 + 30 +0.0 + 11 +82.46793794495566 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343102 + 20 +-70.50499999999722 + 30 +0.0 + 11 +82.46793794495566 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.48941231914408 + 20 +-78.5199999999973 + 30 +0.0 + 11 +73.86817549761223 + 21 +-78.5199999999973 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.48941231914408 + 20 +-70.47999999999728 + 30 +0.0 + 11 +73.86817549761223 + 21 +-70.47999999999728 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343102 + 20 +-69.49499999999729 + 30 +0.0 + 11 +82.46793794495566 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343102 + 20 +-61.50499999999722 + 30 +0.0 + 11 +82.46793794495566 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.48941231914408 + 20 +-69.5199999999973 + 30 +0.0 + 11 +73.86817549761223 + 21 +-69.5199999999973 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.48941231914408 + 20 +-61.47999999999727 + 30 +0.0 + 11 +73.86817549761223 + 21 +-61.47999999999727 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343102 + 20 +-60.4949999999973 + 30 +0.0 + 11 +82.46793794495566 + 21 +-60.49499999999739 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-52.50499999999722 + 30 +0.0 + 11 +82.46793794495568 + 21 +-52.50499999999711 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.48941231914408 + 20 +-60.51999999999729 + 30 +0.0 + 11 +73.86817549761223 + 21 +-60.51999999999729 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-52.47999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-52.47999999999727 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-51.49499999999728 + 30 +0.0 + 11 +82.46793794495568 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-43.50499999999722 + 30 +0.0 + 11 +82.46793794495568 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-51.51999999999729 + 30 +0.0 + 11 +73.86817549761224 + 21 +-51.51999999999729 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-43.47999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-43.47999999999727 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-42.49499999999728 + 30 +0.0 + 11 +82.46793794495568 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-34.50499999999722 + 30 +0.0 + 11 +82.46793794495568 + 21 +-34.50499999999711 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-42.51999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-34.47999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-34.47999999999727 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-33.4949999999973 + 30 +0.0 + 11 +82.46793794495568 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-25.50499999999722 + 30 +0.0 + 11 +82.46793794495568 + 21 +-25.50499999999711 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-33.51999999999729 + 30 +0.0 + 11 +73.86817549761224 + 21 +-33.51999999999729 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-25.47999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-25.47999999999727 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-24.49499999999729 + 30 +0.0 + 11 +82.46793794495568 + 21 +-24.4949999999974 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-16.50499999999722 + 30 +0.0 + 11 +82.46793794495568 + 21 +-16.5049999999971 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-24.51999999999729 + 30 +0.0 + 11 +73.86817549761224 + 21 +-24.51999999999729 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-16.47999999999727 + 30 +0.0 + 11 +73.86817549761224 + 21 +-16.47999999999727 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-15.49499999999728 + 30 +0.0 + 11 +82.46793794495568 + 21 +-15.4949999999974 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-7.504999999997221 + 30 +0.0 + 11 +82.46793794495568 + 21 +-7.504999999997106 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-15.51999999999729 + 30 +0.0 + 11 +73.86817549761224 + 21 +-15.51999999999729 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-7.479999999997271 + 30 +0.0 + 11 +73.86817549761224 + 21 +-7.47999999999727 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +-6.494999999997287 + 30 +0.0 + 11 +82.46793794495568 + 21 +-6.494999999997399 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +1.495000000002778 + 30 +0.0 + 11 +82.46793794495568 + 21 +1.495000000002893 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +-6.519999999997291 + 30 +0.0 + 11 +73.86817549761224 + 21 +-6.51999999999729 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +1.520000000002729 + 30 +0.0 + 11 +73.86817549761224 + 21 +1.520000000002729 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +2.505000000002712 + 30 +0.0 + 11 +82.46793794495568 + 21 +2.5050000000026 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +10.49500000000278 + 30 +0.0 + 11 +82.46793794495568 + 21 +10.49500000000289 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +2.480000000002708 + 30 +0.0 + 11 +73.86817549761224 + 21 +2.480000000002709 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +10.52000000000273 + 30 +0.0 + 11 +73.86817549761224 + 21 +10.52000000000273 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +11.50500000000271 + 30 +0.0 + 11 +82.46793794495568 + 21 +11.5050000000026 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +19.49500000000278 + 30 +0.0 + 11 +82.46793794495568 + 21 +19.49500000000289 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +11.48000000000271 + 30 +0.0 + 11 +73.86817549761224 + 21 +11.48000000000271 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +19.52000000000273 + 30 +0.0 + 11 +73.86817549761224 + 21 +19.52000000000273 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +20.50500000000272 + 30 +0.0 + 11 +82.46793794495568 + 21 +20.5050000000026 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +90.53520851343103 + 20 +28.49500000000278 + 30 +0.0 + 11 +82.46793794495568 + 21 +28.49500000000289 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +20.48000000000271 + 30 +0.0 + 11 +73.86817549761224 + 21 +20.48000000000271 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +77.4894123191441 + 20 +28.52000000000273 + 30 +0.0 + 11 +73.86817549761224 + 21 +28.52000000000273 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343102 + 20 +-78.49499999999729 + 30 +0.0 + 11 +64.84293794495566 + 21 +-78.4949999999974 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343102 + 20 +-70.50499999999722 + 30 +0.0 + 11 +64.84293794495566 + 21 +-70.50499999999711 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-78.5199999999973 + 30 +0.0 + 11 +56.24317549761223 + 21 +-78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-70.47999999999728 + 30 +0.0 + 11 +56.24317549761223 + 21 +-70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343102 + 20 +-69.49499999999729 + 30 +0.0 + 11 +64.84293794495566 + 21 +-69.4949999999974 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343102 + 20 +-61.50499999999722 + 30 +0.0 + 11 +64.84293794495566 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-69.5199999999973 + 30 +0.0 + 11 +56.24317549761223 + 21 +-69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-61.47999999999727 + 30 +0.0 + 11 +56.24317549761223 + 21 +-61.47999999999727 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343102 + 20 +-60.49499999999729 + 30 +0.0 + 11 +64.84293794495566 + 21 +-60.49499999999739 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-52.50499999999722 + 30 +0.0 + 11 +64.84293794495568 + 21 +-52.50499999999711 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-60.51999999999729 + 30 +0.0 + 11 +56.24317549761223 + 21 +-60.51999999999729 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-52.47999999999727 + 30 +0.0 + 11 +56.24317549761223 + 21 +-52.47999999999727 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-51.49499999999728 + 30 +0.0 + 11 +64.84293794495568 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-43.50499999999722 + 30 +0.0 + 11 +64.84293794495568 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-51.51999999999729 + 30 +0.0 + 11 +56.24317549761223 + 21 +-51.51999999999729 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-43.47999999999727 + 30 +0.0 + 11 +56.24317549761223 + 21 +-43.47999999999727 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-42.49499999999728 + 30 +0.0 + 11 +64.84293794495568 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-34.50499999999722 + 30 +0.0 + 11 +64.84293794495568 + 21 +-34.50499999999711 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-42.51999999999727 + 30 +0.0 + 11 +56.24317549761223 + 21 +-42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-34.47999999999727 + 30 +0.0 + 11 +56.24317549761223 + 21 +-34.47999999999727 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-33.49499999999729 + 30 +0.0 + 11 +64.84293794495568 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-25.50499999999722 + 30 +0.0 + 11 +64.84293794495568 + 21 +-25.50499999999711 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914408 + 20 +-33.51999999999729 + 30 +0.0 + 11 +56.24317549761223 + 21 +-33.51999999999729 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-25.47999999999727 + 30 +0.0 + 11 +56.24317549761224 + 21 +-25.47999999999727 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-24.49499999999729 + 30 +0.0 + 11 +64.84293794495568 + 21 +-24.4949999999974 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-16.50499999999722 + 30 +0.0 + 11 +64.84293794495568 + 21 +-16.5049999999971 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-24.51999999999729 + 30 +0.0 + 11 +56.24317549761224 + 21 +-24.51999999999729 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-16.47999999999727 + 30 +0.0 + 11 +56.24317549761224 + 21 +-16.47999999999727 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-15.49499999999728 + 30 +0.0 + 11 +64.84293794495568 + 21 +-15.4949999999974 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-7.504999999997219 + 30 +0.0 + 11 +64.84293794495568 + 21 +-7.504999999997104 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-15.51999999999729 + 30 +0.0 + 11 +56.24317549761224 + 21 +-15.51999999999729 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-7.479999999997268 + 30 +0.0 + 11 +56.24317549761224 + 21 +-7.479999999997268 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +-6.494999999997285 + 30 +0.0 + 11 +64.84293794495568 + 21 +-6.494999999997397 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +1.49500000000278 + 30 +0.0 + 11 +64.84293794495568 + 21 +1.495000000002895 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +-6.519999999997288 + 30 +0.0 + 11 +56.24317549761224 + 21 +-6.519999999997288 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +1.520000000002731 + 30 +0.0 + 11 +56.24317549761224 + 21 +1.520000000002731 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +2.505000000002714 + 30 +0.0 + 11 +64.84293794495568 + 21 +2.505000000002602 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +10.49500000000278 + 30 +0.0 + 11 +64.84293794495568 + 21 +10.49500000000289 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +2.48000000000271 + 30 +0.0 + 11 +56.24317549761224 + 21 +2.480000000002711 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +10.52000000000273 + 30 +0.0 + 11 +56.24317549761224 + 21 +10.52000000000273 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +11.50500000000271 + 30 +0.0 + 11 +64.84293794495568 + 21 +11.5050000000026 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +19.49500000000278 + 30 +0.0 + 11 +64.84293794495568 + 21 +19.49500000000289 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +11.48000000000271 + 30 +0.0 + 11 +56.24317549761224 + 21 +11.48000000000271 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +19.52000000000273 + 30 +0.0 + 11 +56.24317549761224 + 21 +19.52000000000273 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +20.50500000000272 + 30 +0.0 + 11 +64.84293794495568 + 21 +20.5050000000026 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +72.91020851343103 + 20 +28.49500000000278 + 30 +0.0 + 11 +64.84293794495568 + 21 +28.49500000000289 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +20.48000000000271 + 30 +0.0 + 11 +56.24317549761224 + 21 +20.48000000000271 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +59.86441231914409 + 20 +28.52000000000273 + 30 +0.0 + 11 +56.24317549761224 + 21 +28.52000000000273 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-78.49499999999728 + 30 +0.0 + 11 +47.21793794495566 + 21 +-78.49499999999739 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-70.50499999999721 + 30 +0.0 + 11 +47.21793794495566 + 21 +-70.5049999999971 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-78.51999999999728 + 30 +0.0 + 11 +38.61817549761223 + 21 +-78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-70.47999999999726 + 30 +0.0 + 11 +38.61817549761223 + 21 +-70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-69.49499999999728 + 30 +0.0 + 11 +47.21793794495566 + 21 +-69.49499999999739 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-61.50499999999722 + 30 +0.0 + 11 +47.21793794495566 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-69.51999999999728 + 30 +0.0 + 11 +38.61817549761223 + 21 +-69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-61.47999999999727 + 30 +0.0 + 11 +38.61817549761223 + 21 +-61.47999999999727 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-60.49499999999729 + 30 +0.0 + 11 +47.21793794495566 + 21 +-60.49499999999739 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-52.50499999999722 + 30 +0.0 + 11 +47.21793794495566 + 21 +-52.50499999999711 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-60.51999999999729 + 30 +0.0 + 11 +38.61817549761223 + 21 +-60.51999999999729 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-52.47999999999727 + 30 +0.0 + 11 +38.61817549761223 + 21 +-52.47999999999727 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-51.49499999999728 + 30 +0.0 + 11 +47.21793794495566 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-43.50499999999722 + 30 +0.0 + 11 +47.21793794495566 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-51.51999999999729 + 30 +0.0 + 11 +38.61817549761223 + 21 +-51.51999999999729 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-43.47999999999727 + 30 +0.0 + 11 +38.61817549761223 + 21 +-43.47999999999727 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-42.49499999999728 + 30 +0.0 + 11 +47.21793794495566 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-34.50499999999722 + 30 +0.0 + 11 +47.21793794495566 + 21 +-34.50499999999711 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-42.51999999999727 + 30 +0.0 + 11 +38.61817549761223 + 21 +-42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-34.47999999999727 + 30 +0.0 + 11 +38.61817549761223 + 21 +-34.47999999999727 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343102 + 20 +-33.49499999999729 + 30 +0.0 + 11 +47.21793794495566 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-25.50499999999722 + 30 +0.0 + 11 +47.21793794495567 + 21 +-25.50499999999711 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914408 + 20 +-33.51999999999729 + 30 +0.0 + 11 +38.61817549761223 + 21 +-33.51999999999729 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-25.47999999999726 + 30 +0.0 + 11 +38.61817549761224 + 21 +-25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-24.49499999999729 + 30 +0.0 + 11 +47.21793794495567 + 21 +-24.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-16.50499999999722 + 30 +0.0 + 11 +47.21793794495567 + 21 +-16.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-24.51999999999729 + 30 +0.0 + 11 +38.61817549761224 + 21 +-24.51999999999729 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-16.47999999999726 + 30 +0.0 + 11 +38.61817549761224 + 21 +-16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-15.49499999999728 + 30 +0.0 + 11 +47.21793794495567 + 21 +-15.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-7.504999999997217 + 30 +0.0 + 11 +47.21793794495567 + 21 +-7.504999999997103 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-15.51999999999729 + 30 +0.0 + 11 +38.61817549761224 + 21 +-15.51999999999729 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-7.479999999997267 + 30 +0.0 + 11 +38.61817549761224 + 21 +-7.479999999997266 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +-6.494999999997283 + 30 +0.0 + 11 +47.21793794495567 + 21 +-6.494999999997395 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +1.495000000002782 + 30 +0.0 + 11 +47.21793794495567 + 21 +1.495000000002897 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +-6.519999999997286 + 30 +0.0 + 11 +38.61817549761224 + 21 +-6.519999999997285 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +1.520000000002733 + 30 +0.0 + 11 +38.61817549761224 + 21 +1.520000000002733 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +2.505000000002716 + 30 +0.0 + 11 +47.21793794495567 + 21 +2.505000000002604 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +10.49500000000278 + 30 +0.0 + 11 +47.21793794495567 + 21 +10.49500000000289 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +2.480000000002712 + 30 +0.0 + 11 +38.61817549761224 + 21 +2.480000000002713 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +10.52000000000274 + 30 +0.0 + 11 +38.61817549761224 + 21 +10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +11.50500000000271 + 30 +0.0 + 11 +47.21793794495567 + 21 +11.5050000000026 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +19.49500000000278 + 30 +0.0 + 11 +47.21793794495567 + 21 +19.49500000000289 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +11.48000000000271 + 30 +0.0 + 11 +38.61817549761224 + 21 +11.48000000000271 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +19.52000000000274 + 30 +0.0 + 11 +38.61817549761224 + 21 +19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +20.50500000000272 + 30 +0.0 + 11 +47.21793794495567 + 21 +20.5050000000026 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +55.28520851343103 + 20 +28.49500000000278 + 30 +0.0 + 11 +47.21793794495567 + 21 +28.49500000000289 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +20.48000000000271 + 30 +0.0 + 11 +38.61817549761224 + 21 +20.48000000000271 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +42.23941231914409 + 20 +28.52000000000274 + 30 +0.0 + 11 +38.61817549761224 + 21 +28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-78.49499999999728 + 30 +0.0 + 11 +29.59293794495567 + 21 +-78.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-70.50499999999721 + 30 +0.0 + 11 +29.59293794495567 + 21 +-70.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-78.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-70.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-69.49499999999728 + 30 +0.0 + 11 +29.59293794495567 + 21 +-69.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-61.50499999999722 + 30 +0.0 + 11 +29.59293794495567 + 21 +-61.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-69.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-61.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-60.49499999999729 + 30 +0.0 + 11 +29.59293794495567 + 21 +-60.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-52.50499999999722 + 30 +0.0 + 11 +29.59293794495567 + 21 +-52.50499999999711 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-60.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-52.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-51.49499999999728 + 30 +0.0 + 11 +29.59293794495567 + 21 +-51.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-43.50499999999722 + 30 +0.0 + 11 +29.59293794495568 + 21 +-43.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.61441231914409 + 20 +-51.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-43.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-42.49499999999728 + 30 +0.0 + 11 +29.59293794495568 + 21 +-42.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-34.50499999999722 + 30 +0.0 + 11 +29.59293794495568 + 21 +-34.50499999999711 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-42.51999999999727 + 30 +0.0 + 11 +20.99317549761223 + 21 +-42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-34.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343102 + 20 +-33.49499999999729 + 30 +0.0 + 11 +29.59293794495568 + 21 +-33.4949999999974 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-25.50499999999721 + 30 +0.0 + 11 +29.59293794495568 + 21 +-25.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-33.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-25.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-24.49499999999728 + 30 +0.0 + 11 +29.59293794495568 + 21 +-24.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-16.50499999999721 + 30 +0.0 + 11 +29.59293794495568 + 21 +-16.50499999999709 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-24.51999999999729 + 30 +0.0 + 11 +20.99317549761223 + 21 +-24.51999999999729 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-16.47999999999726 + 30 +0.0 + 11 +20.99317549761223 + 21 +-16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-15.49499999999728 + 30 +0.0 + 11 +29.59293794495568 + 21 +-15.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-7.504999999997215 + 30 +0.0 + 11 +29.59293794495568 + 21 +-7.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-15.51999999999728 + 30 +0.0 + 11 +20.99317549761223 + 21 +-15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-7.479999999997264 + 30 +0.0 + 11 +20.99317549761224 + 21 +-7.479999999997264 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +-6.494999999997281 + 30 +0.0 + 11 +29.59293794495568 + 21 +-6.494999999997392 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +1.495000000002784 + 30 +0.0 + 11 +29.59293794495568 + 21 +1.495000000002899 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +-6.519999999997284 + 30 +0.0 + 11 +20.99317549761224 + 21 +-6.519999999997284 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +1.520000000002735 + 30 +0.0 + 11 +20.99317549761224 + 21 +1.520000000002735 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +2.505000000002719 + 30 +0.0 + 11 +29.59293794495568 + 21 +2.505000000002606 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +10.49500000000278 + 30 +0.0 + 11 +29.59293794495568 + 21 +10.4950000000029 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +2.480000000002715 + 30 +0.0 + 11 +20.99317549761224 + 21 +2.480000000002715 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +10.52000000000274 + 30 +0.0 + 11 +20.99317549761224 + 21 +10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +11.50500000000272 + 30 +0.0 + 11 +29.59293794495568 + 21 +11.50500000000261 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +19.49500000000279 + 30 +0.0 + 11 +29.59293794495568 + 21 +19.4950000000029 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +11.48000000000272 + 30 +0.0 + 11 +20.99317549761224 + 21 +11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +19.52000000000274 + 30 +0.0 + 11 +20.99317549761224 + 21 +19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +20.50500000000273 + 30 +0.0 + 11 +29.59293794495568 + 21 +20.50500000000261 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +37.66020851343103 + 20 +28.49500000000279 + 30 +0.0 + 11 +29.59293794495568 + 21 +28.4950000000029 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +20.48000000000271 + 30 +0.0 + 11 +20.99317549761224 + 21 +20.48000000000271 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +24.6144123191441 + 20 +28.52000000000274 + 30 +0.0 + 11 +20.99317549761224 + 21 +28.52000000000274 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-78.49499999999728 + 30 +0.0 + 11 +11.96793794495567 + 21 +-78.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-70.50499999999721 + 30 +0.0 + 11 +11.96793794495567 + 21 +-70.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144083 + 20 +-78.51999999999728 + 30 +0.0 + 11 +3.368175497612231 + 21 +-78.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144084 + 20 +-70.47999999999726 + 30 +0.0 + 11 +3.368175497612233 + 21 +-70.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-69.49499999999728 + 30 +0.0 + 11 +11.96793794495567 + 21 +-69.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-61.50499999999721 + 30 +0.0 + 11 +11.96793794495567 + 21 +-61.50499999999709 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144084 + 20 +-69.51999999999728 + 30 +0.0 + 11 +3.368175497612233 + 21 +-69.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144086 + 20 +-61.47999999999726 + 30 +0.0 + 11 +3.368175497612234 + 21 +-61.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-60.49499999999728 + 30 +0.0 + 11 +11.96793794495567 + 21 +-60.49499999999738 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-52.50499999999721 + 30 +0.0 + 11 +11.96793794495567 + 21 +-52.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144086 + 20 +-60.51999999999728 + 30 +0.0 + 11 +3.368175497612234 + 21 +-60.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144087 + 20 +-52.47999999999726 + 30 +0.0 + 11 +3.368175497612235 + 21 +-52.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343102 + 20 +-51.49499999999727 + 30 +0.0 + 11 +11.96793794495567 + 21 +-51.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-43.50499999999721 + 30 +0.0 + 11 +11.96793794495568 + 21 +-43.50499999999709 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144087 + 20 +-51.51999999999728 + 30 +0.0 + 11 +3.368175497612235 + 21 +-51.51999999999728 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144088 + 20 +-43.47999999999726 + 30 +0.0 + 11 +3.368175497612236 + 21 +-43.47999999999726 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-42.49499999999727 + 30 +0.0 + 11 +11.96793794495568 + 21 +-42.49499999999739 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-34.50499999999721 + 30 +0.0 + 11 +11.96793794495568 + 21 +-34.5049999999971 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144088 + 20 +-42.51999999999727 + 30 +0.0 + 11 +3.368175497612236 + 21 +-42.51999999999727 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144089 + 20 +-34.47999999999726 + 30 +0.0 + 11 +3.368175497612237 + 21 +-34.47999999999726 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-33.49499999999728 + 30 +0.0 + 11 +11.96793794495568 + 21 +-33.49499999999739 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-25.50499999999721 + 30 +0.0 + 11 +11.96793794495568 + 21 +-25.5049999999971 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144089 + 20 +-33.51999999999728 + 30 +0.0 + 11 +3.368175497612237 + 21 +-33.51999999999728 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.98941231914409 + 20 +-25.47999999999726 + 30 +0.0 + 11 +3.368175497612238 + 21 +-25.47999999999726 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-24.49499999999728 + 30 +0.0 + 11 +11.96793794495568 + 21 +-24.49499999999739 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-16.50499999999721 + 30 +0.0 + 11 +11.96793794495568 + 21 +-16.50499999999709 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.98941231914409 + 20 +-24.51999999999728 + 30 +0.0 + 11 +3.368175497612238 + 21 +-24.51999999999728 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144091 + 20 +-16.47999999999726 + 30 +0.0 + 11 +3.368175497612239 + 21 +-16.47999999999726 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-15.49499999999727 + 30 +0.0 + 11 +11.96793794495568 + 21 +-15.49499999999739 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-7.504999999997213 + 30 +0.0 + 11 +11.96793794495568 + 21 +-7.504999999997098 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144091 + 20 +-15.51999999999728 + 30 +0.0 + 11 +3.368175497612239 + 21 +-15.51999999999728 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144092 + 20 +-7.479999999997262 + 30 +0.0 + 11 +3.36817549761224 + 21 +-7.479999999997261 + 31 +0.0 + 0 +LINE + 5 +40D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +-6.494999999997279 + 30 +0.0 + 11 +11.96793794495568 + 21 +-6.494999999997391 + 31 +0.0 + 0 +LINE + 5 +40E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +1.495000000002787 + 30 +0.0 + 11 +11.96793794495568 + 21 +1.495000000002901 + 31 +0.0 + 0 +LINE + 5 +40F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144092 + 20 +-6.519999999997282 + 30 +0.0 + 11 +3.36817549761224 + 21 +-6.519999999997281 + 31 +0.0 + 0 +LINE + 5 +410 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144093 + 20 +1.520000000002737 + 30 +0.0 + 11 +3.368175497612241 + 21 +1.520000000002738 + 31 +0.0 + 0 +LINE + 5 +411 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +2.50500000000272 + 30 +0.0 + 11 +11.96793794495568 + 21 +2.505000000002608 + 31 +0.0 + 0 +LINE + 5 +412 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +10.49500000000279 + 30 +0.0 + 11 +11.96793794495568 + 21 +10.4950000000029 + 31 +0.0 + 0 +LINE + 5 +413 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144093 + 20 +2.480000000002717 + 30 +0.0 + 11 +3.368175497612242 + 21 +2.480000000002717 + 31 +0.0 + 0 +LINE + 5 +414 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144094 + 20 +10.52000000000274 + 30 +0.0 + 11 +3.368175497612242 + 21 +10.52000000000274 + 31 +0.0 + 0 +LINE + 5 +415 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +11.50500000000272 + 30 +0.0 + 11 +11.96793794495568 + 21 +11.50500000000261 + 31 +0.0 + 0 +LINE + 5 +416 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +19.49500000000279 + 30 +0.0 + 11 +11.96793794495568 + 21 +19.4950000000029 + 31 +0.0 + 0 +LINE + 5 +417 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144095 + 20 +11.48000000000272 + 30 +0.0 + 11 +3.368175497612242 + 21 +11.48000000000272 + 31 +0.0 + 0 +LINE + 5 +418 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144096 + 20 +19.52000000000274 + 30 +0.0 + 11 +3.368175497612243 + 21 +19.52000000000274 + 31 +0.0 + 0 +LINE + 5 +419 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +20.50500000000273 + 30 +0.0 + 11 +11.96793794495568 + 21 +20.50500000000261 + 31 +0.0 + 0 +LINE + 5 +41A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +20.03520851343103 + 20 +28.49500000000279 + 30 +0.0 + 11 +11.96793794495568 + 21 +28.4950000000029 + 31 +0.0 + 0 +LINE + 5 +41B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144096 + 20 +20.48000000000272 + 30 +0.0 + 11 +3.368175497612244 + 21 +20.48000000000272 + 31 +0.0 + 0 +LINE + 5 +41C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.989412319144097 + 20 +28.52000000000274 + 30 +0.0 + 11 +3.368175497612245 + 21 +28.52000000000274 + 31 +0.0 + 0 +LWPOLYLINE + 5 +41D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +178.8571320343559 + 20 +-27.98786796564132 + 10 +178.6449999999998 + 20 +-28.1999999999973 + 10 +178.6449999999998 + 20 +-30.7999999999973 + 10 +178.8571320343559 + 20 +-31.01213203435327 + 0 +LWPOLYLINE + 5 +41E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +161.7678679656438 + 20 +-27.98786796564132 + 10 +161.9799999999999 + 20 +-28.1999999999973 + 10 +161.9799999999999 + 20 +-30.7999999999973 + 10 +161.7678679656438 + 20 +-31.01213203435327 + 0 +LWPOLYLINE + 5 +41F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +161.2321320343559 + 20 +-27.98786796564132 + 10 +161.0199999999998 + 20 +-28.1999999999973 + 10 +161.0199999999998 + 20 +-30.7999999999973 + 10 +161.2321320343559 + 20 +-31.01213203435327 + 0 +LWPOLYLINE + 5 +420 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +144.1428679656438 + 20 +-27.98786796564132 + 10 +144.3549999999999 + 20 +-28.1999999999973 + 10 +144.3549999999999 + 20 +-30.7999999999973 + 10 +144.1428679656438 + 20 +-31.01213203435327 + 0 +LWPOLYLINE + 5 +421 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +143.6071320343559 + 20 +-27.98786796564132 + 10 +143.3949999999998 + 20 +-28.1999999999973 + 10 +143.3949999999998 + 20 +-30.7999999999973 + 10 +143.6071320343559 + 20 +-31.01213203435327 + 0 +LWPOLYLINE + 5 +422 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +126.5178679656438 + 20 +-27.98786796564131 + 10 +126.7299999999999 + 20 +-28.1999999999973 + 10 +126.7299999999999 + 20 +-30.79999999999729 + 10 +126.5178679656438 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +423 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +125.9821320343559 + 20 +-27.98786796564131 + 10 +125.7699999999998 + 20 +-28.1999999999973 + 10 +125.7699999999998 + 20 +-30.79999999999729 + 10 +125.9821320343559 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +424 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +108.8928679656438 + 20 +-27.98786796564131 + 10 +109.1049999999999 + 20 +-28.1999999999973 + 10 +109.1049999999999 + 20 +-30.79999999999729 + 10 +108.8928679656438 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +425 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +108.3571320343559 + 20 +-27.98786796564131 + 10 +108.1449999999998 + 20 +-28.1999999999973 + 10 +108.1449999999998 + 20 +-30.79999999999729 + 10 +108.3571320343559 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +426 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +91.26786796564386 + 20 +-27.98786796564131 + 10 +91.4799999999999 + 20 +-28.19999999999729 + 10 +91.4799999999999 + 20 +-30.79999999999729 + 10 +91.26786796564386 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +427 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +90.73213203435591 + 20 +-27.98786796564131 + 10 +90.51999999999987 + 20 +-28.19999999999729 + 10 +90.51999999999987 + 20 +-30.79999999999729 + 10 +90.73213203435591 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +428 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +73.64286796564384 + 20 +-27.98786796564131 + 10 +73.8549999999999 + 20 +-28.19999999999729 + 10 +73.8549999999999 + 20 +-30.79999999999729 + 10 +73.64286796564384 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +429 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +73.10713203435591 + 20 +-27.98786796564131 + 10 +72.89499999999985 + 20 +-28.19999999999729 + 10 +72.89499999999985 + 20 +-30.79999999999729 + 10 +73.10713203435591 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +42A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +56.01786796564386 + 20 +-27.98786796564131 + 10 +56.2299999999999 + 20 +-28.19999999999729 + 10 +56.22999999999989 + 20 +-30.79999999999729 + 10 +56.01786796564385 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +42B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +55.48213203435591 + 20 +-27.98786796564131 + 10 +55.26999999999986 + 20 +-28.19999999999729 + 10 +55.26999999999985 + 20 +-30.79999999999729 + 10 +55.4821320343559 + 20 +-31.01213203435326 + 0 +LWPOLYLINE + 5 +42C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.39286796564386 + 20 +-27.9878679656413 + 10 +38.60499999999991 + 20 +-28.19999999999729 + 10 +38.6049999999999 + 20 +-30.79999999999728 + 10 +38.39286796564385 + 20 +-31.01213203435325 + 0 +LWPOLYLINE + 5 +42D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +37.85713203435591 + 20 +-27.9878679656413 + 10 +37.64499999999987 + 20 +-28.19999999999729 + 10 +37.64499999999986 + 20 +-30.79999999999728 + 10 +37.8571320343559 + 20 +-31.01213203435325 + 0 +LWPOLYLINE + 5 +42E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +20.76786796564386 + 20 +-27.9878679656413 + 10 +20.9799999999999 + 20 +-28.19999999999729 + 10 +20.9799999999999 + 20 +-30.79999999999728 + 10 +20.76786796564386 + 20 +-31.01213203435325 + 0 +LWPOLYLINE + 5 +42F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +20.23213203435592 + 20 +-27.9878679656413 + 10 +20.01999999999987 + 20 +-28.19999999999729 + 10 +20.01999999999987 + 20 +-30.79999999999728 + 10 +20.23213203435592 + 20 +-31.01213203435325 + 0 +LWPOLYLINE + 5 +430 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +3.142867965643855 + 20 +-27.9878679656413 + 10 +3.354999999999901 + 20 +-28.19999999999728 + 10 +3.354999999999901 + 20 +-30.79999999999728 + 10 +3.142867965643854 + 20 +-31.01213203435325 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +458 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +432 + 3 +ACAD_TABLESTYLE +350 +457 + 3 +AcDbVariableDictionary +350 +455 + 0 +DICTIONARY + 5 +3D +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +3E + 0 +DICTIONARY + 5 +35 +330 +34 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +3A + 0 +DICTIONARY + 5 +458 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +432 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +433 + 3 +A1 +350 +434 + 3 +A2 +350 +435 + 3 +A3 +350 +436 + 3 +A4 +350 +437 + 3 +A5 +350 +438 + 3 +A6 +350 +439 + 3 +A7 +350 +43A + 3 +A8 +350 +43B + 3 +A9 +350 +43C + 3 +B0 +350 +43D + 3 +B1 +350 +43E + 3 +B2 +350 +43F + 3 +B3 +350 +440 + 3 +B4 +350 +441 + 3 +B5 +350 +442 + 3 +B6 +350 +443 + 3 +B7 +350 +444 + 3 +B8 +350 +445 + 3 +B9 +350 +446 + 3 +C0 +350 +447 + 3 +C1 +350 +448 + 3 +C2 +350 +449 + 3 +C3 +350 +44A + 3 +C4 +350 +44B + 3 +C5 +350 +44C + 3 +C6 +350 +44D + 3 +C7 +350 +44E + 3 +C8 +350 +44F + 3 +C9 +350 +450 + 3 +D0 +350 +451 + 3 +D1 +350 +452 + 3 +D2 +350 +453 + 0 +DICTIONARY + 5 +457 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +455 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +456 + 0 +DICTIONARY + 5 +3E +102 +{ACAD_REACTORS +330 +3D +102 +} +330 +3D +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +431 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MATERIAL + 5 +3A +102 +{ACAD_REACTORS +330 +1B +102 +} +102 +{ACAD_XDICTIONARY +360 +3B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +433 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +434 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +435 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +436 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +437 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +438 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +439 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +43A +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +43B +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +43C +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +43D +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +43E +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +43F +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +440 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +441 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +442 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +443 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +444 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +445 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +446 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +447 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +448 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +449 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44A +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44B +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44C +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44D +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44E +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +44F +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +450 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +451 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +452 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +453 +102 +{ACAD_REACTORS +330 +432 +102 +} +330 +432 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +456 +102 +{ACAD_REACTORS +330 +455 +102 +} +330 +455 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARY + 5 +3B +330 +3A +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E192 两点定位.par b/LaiPuLaser/TempMarkData/E192 两点定位.par new file mode 100644 index 0000000..6c6f6e3 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E192 两点定位.par differ diff --git a/LaiPuLaser/TempMarkData/E192 两点定位.txt b/LaiPuLaser/TempMarkData/E192 两点定位.txt new file mode 100644 index 0000000..9181239 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E192 两点定位.txt @@ -0,0 +1,8 @@ +1 +60.971 +-7.972 +60 +50 +600 +15 +1 diff --git a/LaiPuLaser/TempMarkData/E192-3点.are b/LaiPuLaser/TempMarkData/E192-3点.are new file mode 100644 index 0000000..fd1a307 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E192-3点.are differ diff --git a/LaiPuLaser/TempMarkData/E192-3点.dxf b/LaiPuLaser/TempMarkData/E192-3点.dxf new file mode 100644 index 0000000..99e232d --- /dev/null +++ b/LaiPuLaser/TempMarkData/E192-3点.dxf @@ -0,0 +1,17686 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-173.4089213562373 + 20 +-0.2500000000000001 + 30 +0.0 + 9 +$EXTMAX + 10 +2.183921356237335 + 20 +117.2631599520985 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458952.222306088 + 9 +$TDUCREATE + 40 +2458951.888972755 + 9 +$TDUPDATE + 40 +2458952.222306053 + 9 +$TDUUPDATE + 40 +2458951.88897272 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +510 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-31.40057985227482 + 22 +82.90284758701432 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +85.57092050305303 + 41 +6.300721141374854 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +E192-B1-3MARK + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +501 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +102 +{ACAD_REACTORS +330 +502 +102 +} +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +503 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +50D +330 +503 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +504 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-58.91250000000011 + 20 +108.1249999999999 + 30 +0.0 + 11 +-58.91250000000011 + 21 +114.9714932854319 + 31 +0.0 + 0 +LINE + 5 +505 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +2.112500000000011 + 20 +108.125 + 30 +0.0 + 11 +2.112500000000011 + 21 +114.9714932854319 + 31 +0.0 + 0 +LINE + 5 +506 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-56.41250000000011 + 20 +113.7214932854319 + 30 +0.0 + 11 +-0.3874999999999891 + 21 +113.7214932854319 + 31 +0.0 + 0 +SOLID + 5 +507 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +-56.41250000000011 + 20 +114.1381599520986 + 30 +0.0 + 11 +-56.41250000000011 + 21 +113.3048266187652 + 31 +0.0 + 12 +-58.91250000000011 + 22 +113.7214932854319 + 32 +0.0 + 13 +-58.91250000000011 + 23 +113.7214932854319 + 33 +0.0 + 0 +SOLID + 5 +508 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +-0.3874999999999891 + 20 +113.3048266187652 + 30 +0.0 + 11 +-0.3874999999999891 + 21 +114.1381599520986 + 31 +0.0 + 12 +2.112500000000011 + 22 +113.7214932854319 + 32 +0.0 + 13 +2.112500000000011 + 23 +113.7214932854319 + 33 +0.0 + 0 +MTEXT + 5 +509 +330 +503 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +-28.40000000000005 + 20 +115.8048266187652 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +61,03 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +50A +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-58.91250000000011 + 20 +107.4999999999999 + 30 +0.0 + 0 +POINT + 5 +50B +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +2.112500000000011 + 20 +107.5 + 30 +0.0 + 0 +POINT + 5 +50C +330 +503 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +2.112500000000011 + 20 +113.7214932854319 + 30 +0.0 + 0 +ENDBLK + 5 +50E +330 +503 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +107.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +99.4999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-14.71250000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +98.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +90.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-14.71250000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +89.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +81.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-14.71250000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +80.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +72.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-14.71250000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-14.71250000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +71.49999999999997 + 30 +0.0 + 11 +-6.037499999999994 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +63.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +63.49999999999996 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +63.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +62.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +62.49999999999996 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +54.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +54.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +62.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +54.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +53.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +53.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +45.49999999999988 + 30 +0.0 + 11 +-6.037499999999994 + 21 +45.49999999999996 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +53.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +45.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +44.49999999999996 + 30 +0.0 + 11 +-6.037499999999994 + 21 +44.49999999999996 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +36.49999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +36.49999999999999 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +44.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +36.47499999999996 + 30 +0.0 + 11 +-14.71250000000001 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +35.49999999999999 + 30 +0.0 + 11 +-6.037499999999994 + 21 +35.49999999999999 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +27.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +35.52499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +27.47499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +26.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +18.49999999999989 + 30 +0.0 + 11 +-6.037499999999994 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +26.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +18.47499999999997 + 30 +0.0 + 11 +-14.71250000000001 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +17.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +9.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +17.52499999999998 + 30 +0.0 + 11 +-14.71250000000001 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +9.474999999999966 + 30 +0.0 + 11 +-14.71250000000001 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +8.5 + 30 +0.0 + 11 +-6.037499999999994 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +2.112500000000011 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-6.037499999999994 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +8.524999999999977 + 30 +0.0 + 11 +-14.71250000000001 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-10.91249999999999 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-14.71250000000001 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +107.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-23.66249999999999 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-32.33750000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-23.66249999999999 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-32.33750000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-32.33750000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-32.33750000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-32.33750000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-32.33750000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-23.66249999999999 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +36.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-32.33750000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +36.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +35.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +27.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +35.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +27.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +26.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +18.49999999999989 + 30 +0.0 + 11 +-23.66249999999999 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +26.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +18.47499999999997 + 30 +0.0 + 11 +-32.33750000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +17.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +9.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +17.52499999999998 + 30 +0.0 + 11 +-32.33750000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +9.474999999999966 + 30 +0.0 + 11 +-32.33750000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +8.5 + 30 +0.0 + 11 +-23.66249999999999 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-15.51249999999999 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-23.66249999999999 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +8.524999999999977 + 30 +0.0 + 11 +-32.33750000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-28.53749999999999 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-32.33750000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +107.5 + 30 +0.0 + 11 +-41.28750000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-41.28750000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-49.96250000000001 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-41.28750000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-49.96250000000001 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-49.96250000000001 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-49.96250000000001 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-49.96250000000001 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-41.28750000000011 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-49.96250000000001 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.13749999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-41.28750000000011 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +36.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16249999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-49.96250000000001 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +35.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +27.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +26.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +18.49999999999989 + 30 +0.0 + 11 +-41.28750000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-49.96250000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +17.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +9.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-49.96250000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-49.96250000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +8.5 + 30 +0.0 + 11 +-41.28750000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-33.1375 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-41.28750000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-49.96250000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-46.16250000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-49.96250000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +107.5 + 30 +0.0 + 11 +-58.91250000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-58.91250000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +107.5249999999999 + 30 +0.0 + 11 +-67.5875 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +99.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-58.91250000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +98.52499999999993 + 30 +0.0 + 11 +-67.5875 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +90.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +89.52499999999995 + 30 +0.0 + 11 +-67.5875 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +81.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +80.52499999999992 + 30 +0.0 + 11 +-67.5875 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +72.47499999999991 + 30 +0.0 + 11 +-67.5875 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +63.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +71.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +63.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +62.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +54.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +62.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +54.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +53.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-58.91250000000011 + 21 +45.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +53.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +45.47499999999997 + 30 +0.0 + 11 +-67.5875 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.76249999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-58.91250000000011 + 21 +44.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +36.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +36.5 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78749999999999 + 20 +44.52499999999998 + 30 +0.0 + 11 +-67.5875 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +35.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +35.5 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +27.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +26.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +18.49999999999989 + 30 +0.0 + 11 +-58.91250000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-67.58750000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +17.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +9.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-67.58750000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-67.58750000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +8.5 + 30 +0.0 + 11 +-58.91250000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-50.7625 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-58.91250000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-67.58750000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-63.78750000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-67.58750000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +107.5 + 30 +0.0 + 11 +-76.53750000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-76.53750000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +107.5249999999999 + 30 +0.0 + 11 +-85.2125 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +99.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +99.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-76.53750000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +98.52499999999993 + 30 +0.0 + 11 +-85.2125 + 21 +98.52499999999993 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +90.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +89.52499999999995 + 30 +0.0 + 11 +-85.2125 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +81.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +80.52499999999992 + 30 +0.0 + 11 +-85.2125 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +72.47499999999991 + 30 +0.0 + 11 +-85.2125 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +63.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +71.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +63.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +62.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +54.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +62.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +54.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +53.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-76.53750000000011 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +53.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +45.47499999999997 + 30 +0.0 + 11 +-85.2125 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.38749999999999 + 20 +44.49999999999997 + 30 +0.0 + 11 +-76.53750000000011 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +36.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.4125 + 20 +44.52499999999998 + 30 +0.0 + 11 +-85.2125 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +36.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +35.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +27.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +35.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +27.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +27.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +26.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +18.49999999999989 + 30 +0.0 + 11 +-76.53750000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +26.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +26.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +18.47499999999997 + 30 +0.0 + 11 +-85.21250000000002 + 21 +18.47499999999997 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +17.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +9.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +17.52499999999998 + 30 +0.0 + 11 +-85.21250000000002 + 21 +17.52499999999998 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-85.21250000000002 + 21 +9.474999999999966 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +8.5 + 30 +0.0 + 11 +-76.53750000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-68.3875 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-76.53750000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-85.21250000000002 + 21 +8.524999999999977 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-81.41250000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-85.21250000000002 + 21 +0.4749999999999659 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +107.5 + 30 +0.0 + 11 +-94.16250000000011 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +99.4999999999999 + 30 +0.0 + 11 +-94.16250000000011 + 21 +99.49999999999993 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +107.5249999999999 + 30 +0.0 + 11 +-102.8375 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +99.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +98.49999999999996 + 30 +0.0 + 11 +-94.16250000000011 + 21 +98.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +90.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +90.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +98.52499999999993 + 30 +0.0 + 11 +-102.8375 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +90.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +90.47499999999991 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +89.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +89.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +81.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +89.52499999999995 + 30 +0.0 + 11 +-102.8375 + 21 +89.52499999999995 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +81.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +81.47499999999991 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +80.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +72.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +80.52499999999992 + 30 +0.0 + 11 +-102.8375 + 21 +80.52499999999992 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +72.47499999999991 + 30 +0.0 + 11 +-102.8375 + 21 +72.47499999999991 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +71.49999999999997 + 30 +0.0 + 11 +-94.16250000000011 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +63.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +71.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +71.52499999999998 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +63.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +62.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +54.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +62.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +54.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +53.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +45.49999999999989 + 30 +0.0 + 11 +-94.16250000000011 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +53.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +45.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.01249999999999 + 20 +44.49999999999998 + 30 +0.0 + 11 +-94.16250000000011 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +36.50000000000001 + 30 +0.0 + 11 +-94.16250000000012 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +44.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +36.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +35.50000000000001 + 30 +0.0 + 11 +-94.16250000000012 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +27.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +27.5 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +35.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +27.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +26.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +26.5 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +18.49999999999989 + 30 +0.0 + 11 +-94.16250000000012 + 21 +18.5 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +26.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +18.47499999999997 + 30 +0.0 + 11 +-102.8375 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +17.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +17.5 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +9.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.0375 + 20 +17.52499999999998 + 30 +0.0 + 11 +-102.8375 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +9.474999999999966 + 30 +0.0 + 11 +-102.8375 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +8.5 + 30 +0.0 + 11 +-94.16250000000012 + 21 +8.5 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-86.0125 + 20 +0.4999999999998863 + 30 +0.0 + 11 +-94.16250000000012 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +8.524999999999977 + 30 +0.0 + 11 +-102.8375 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-99.03750000000001 + 20 +0.4749999999999659 + 30 +0.0 + 11 +-102.8375 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +107.5 + 30 +0.0 + 11 +-111.7875 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +99.49999999999991 + 30 +0.0 + 11 +-111.7875 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +107.5249999999999 + 30 +0.0 + 11 +-120.4625 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +99.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +98.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +90.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +98.52499999999995 + 30 +0.0 + 11 +-120.4625 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +90.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +89.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +81.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +81.49999999999994 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +89.52499999999996 + 30 +0.0 + 11 +-120.4625 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +81.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +80.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +80.49999999999994 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +72.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +72.49999999999991 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +80.52499999999993 + 30 +0.0 + 11 +-120.4625 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +72.47499999999992 + 30 +0.0 + 11 +-120.4625 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +71.49999999999997 + 30 +0.0 + 11 +-111.7875 + 21 +71.49999999999997 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +63.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +71.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +63.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +63.47499999999997 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +62.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +54.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +62.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +62.52499999999998 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +54.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +54.47499999999997 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +53.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +45.49999999999989 + 30 +0.0 + 11 +-111.7875 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +53.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +53.52499999999998 + 31 +0.0 + 0 +LINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +45.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +45.47499999999997 + 31 +0.0 + 0 +LINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +44.49999999999998 + 30 +0.0 + 11 +-111.7875 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +36.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +44.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +44.52499999999998 + 31 +0.0 + 0 +LINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +36.47499999999997 + 30 +0.0 + 11 +-120.4625 + 21 +36.47499999999997 + 31 +0.0 + 0 +LINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +35.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +27.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +35.52499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +35.52499999999998 + 31 +0.0 + 0 +LINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +27.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +26.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +18.4999999999999 + 30 +0.0 + 11 +-111.7875 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +26.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +18.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +17.50000000000001 + 30 +0.0 + 11 +-111.7875 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +9.500000000000014 + 30 +0.0 + 11 +-111.7875 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +17.52499999999999 + 30 +0.0 + 11 +-120.4625 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +9.47499999999998 + 30 +0.0 + 11 +-120.4625 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +8.500000000000014 + 30 +0.0 + 11 +-111.7875 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-103.6375 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-111.7875 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +8.524999999999991 + 30 +0.0 + 11 +-120.4625 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-116.6625 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-120.4625 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +107.5 + 30 +0.0 + 11 +-129.4125 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +99.49999999999991 + 30 +0.0 + 11 +-129.4125 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +107.5249999999999 + 30 +0.0 + 11 +-138.0875 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +99.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +98.49999999999997 + 30 +0.0 + 11 +-129.4125 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +90.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +98.52499999999995 + 30 +0.0 + 11 +-138.0875 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +90.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +89.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +81.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +89.52499999999996 + 30 +0.0 + 11 +-138.0875 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +81.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +80.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +72.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +80.52499999999993 + 30 +0.0 + 11 +-138.0875 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +72.47499999999992 + 30 +0.0 + 11 +-138.0875 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +71.49999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +63.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +63.49999999999998 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +71.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +63.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +62.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +62.49999999999998 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +54.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +54.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +62.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +54.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +53.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +53.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +45.49999999999989 + 30 +0.0 + 11 +-129.4125 + 21 +45.49999999999998 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +53.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +45.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +44.49999999999998 + 30 +0.0 + 11 +-129.4125 + 21 +44.49999999999998 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +36.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +44.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +36.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +35.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +27.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +35.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +27.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +26.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +18.4999999999999 + 30 +0.0 + 11 +-129.4125 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +26.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +18.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +17.50000000000001 + 30 +0.0 + 11 +-129.4125 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +9.500000000000014 + 30 +0.0 + 11 +-129.4125 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +17.52499999999999 + 30 +0.0 + 11 +-138.0875 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +9.47499999999998 + 30 +0.0 + 11 +-138.0875 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +8.500000000000014 + 30 +0.0 + 11 +-129.4125 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-121.2625 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-129.4125 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +8.524999999999991 + 30 +0.0 + 11 +-138.0875 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-134.2875 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-138.0875 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +107.5 + 30 +0.0 + 11 +-147.0375 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +99.49999999999991 + 30 +0.0 + 11 +-147.0375 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +107.5249999999999 + 30 +0.0 + 11 +-155.7125 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +99.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +98.49999999999997 + 30 +0.0 + 11 +-147.0375 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +90.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +98.52499999999995 + 30 +0.0 + 11 +-155.7125 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +90.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +89.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +81.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +89.52499999999996 + 30 +0.0 + 11 +-155.7125 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +81.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +80.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +72.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +80.52499999999993 + 30 +0.0 + 11 +-155.7125 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +72.47499999999992 + 30 +0.0 + 11 +-155.7125 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +71.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +63.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +63.49999999999999 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +71.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +63.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +62.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +62.49999999999999 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +54.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +54.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +62.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +54.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +53.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +53.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +45.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +45.49999999999999 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +53.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +45.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +44.49999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +44.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +36.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +44.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +36.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +35.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +27.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +35.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +27.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +26.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +18.4999999999999 + 30 +0.0 + 11 +-147.0375 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +26.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +18.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +17.50000000000001 + 30 +0.0 + 11 +-147.0375 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +9.500000000000014 + 30 +0.0 + 11 +-147.0375 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +17.52499999999999 + 30 +0.0 + 11 +-155.7125 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +9.47499999999998 + 30 +0.0 + 11 +-155.7125 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +8.500000000000014 + 30 +0.0 + 11 +-147.0375 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-138.8875 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-147.0375 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +8.524999999999991 + 30 +0.0 + 11 +-155.7125 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-151.9125 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-155.7125 + 21 +0.4749999999999801 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +107.5 + 30 +0.0 + 11 +-164.6625 + 21 +107.4999999999999 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +99.49999999999991 + 30 +0.0 + 11 +-164.6625 + 21 +99.49999999999994 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +107.5249999999999 + 30 +0.0 + 11 +-173.3375 + 21 +107.5249999999999 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +99.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +99.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +98.49999999999997 + 30 +0.0 + 11 +-164.6625 + 21 +98.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +90.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +90.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +98.52499999999995 + 30 +0.0 + 11 +-173.3375 + 21 +98.52499999999995 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +90.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +90.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +89.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +89.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +81.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +81.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +89.52499999999996 + 30 +0.0 + 11 +-173.3375 + 21 +89.52499999999996 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +81.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +81.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +80.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +80.49999999999996 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +72.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +72.49999999999993 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +80.52499999999993 + 30 +0.0 + 11 +-173.3375 + 21 +80.52499999999993 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +72.47499999999992 + 30 +0.0 + 11 +-173.3375 + 21 +72.47499999999992 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +71.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +71.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +63.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +63.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +71.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +71.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +63.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +63.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +62.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +62.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +54.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +54.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +62.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +62.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +54.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +54.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +53.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +53.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +45.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +45.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +53.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +53.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +45.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +45.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +44.49999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +44.49999999999999 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +36.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +36.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +44.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +44.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +36.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +36.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +35.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +35.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +27.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +27.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +35.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +35.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +27.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +27.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +26.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +26.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +18.4999999999999 + 30 +0.0 + 11 +-164.6625 + 21 +18.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +26.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +26.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +18.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +18.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +17.50000000000001 + 30 +0.0 + 11 +-164.6625 + 21 +17.50000000000001 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +9.500000000000014 + 30 +0.0 + 11 +-164.6625 + 21 +9.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +17.52499999999999 + 30 +0.0 + 11 +-173.3375 + 21 +17.52499999999999 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +9.47499999999998 + 30 +0.0 + 11 +-173.3375 + 21 +9.47499999999998 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +8.500000000000014 + 30 +0.0 + 11 +-164.6625 + 21 +8.500000000000014 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-156.5125 + 20 +0.4999999999999005 + 30 +0.0 + 11 +-164.6625 + 21 +0.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +8.524999999999991 + 30 +0.0 + 11 +-173.3375 + 21 +8.524999999999991 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbLine + 10 +-169.5375 + 20 +0.4749999999999801 + 30 +0.0 + 11 +-173.3375 + 21 +0.4749999999999801 + 31 +0.0 + 0 +CIRCLE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +98.99999999999996 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbCircle + 10 +-158.625 + 20 +98.99999999999997 + 30 +0.0 + 40 +0.25 + 0 +LWPOLYLINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +2.183921356237335 + 20 +48.05857864376264 + 10 +2.042500000000018 + 20 +48.1999999999999 + 10 +2.04249999999999 + 20 +50.79999999999989 + 10 +2.183921356237278 + 20 +50.94142135623718 + 0 +LWPOLYLINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-14.7839213562373 + 20 +48.05857864376264 + 10 +-14.64249999999998 + 20 +48.1999999999999 + 10 +-14.64249999999996 + 20 +50.7999999999999 + 10 +-14.78392135623724 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-32.4089213562373 + 20 +48.05857864376264 + 10 +-32.26749999999998 + 20 +48.1999999999999 + 10 +-32.26749999999996 + 20 +50.7999999999999 + 10 +-32.40892135623724 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-15.44107864376267 + 20 +48.05857864376264 + 10 +-15.58249999999998 + 20 +48.1999999999999 + 10 +-15.58250000000001 + 20 +50.7999999999999 + 10 +-15.44107864376272 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.0339213562373 + 20 +48.05857864376264 + 10 +-49.89249999999998 + 20 +48.1999999999999 + 10 +-49.89249999999996 + 20 +50.7999999999999 + 10 +-50.03392135623724 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.06607864376267 + 20 +48.05857864376264 + 10 +-33.20749999999998 + 20 +48.1999999999999 + 10 +-33.20750000000001 + 20 +50.7999999999999 + 10 +-33.06607864376272 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-67.6589213562373 + 20 +48.05857864376264 + 10 +-67.51749999999998 + 20 +48.1999999999999 + 10 +-67.51749999999996 + 20 +50.7999999999999 + 10 +-67.65892135623724 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-50.69107864376267 + 20 +48.05857864376264 + 10 +-50.83249999999998 + 20 +48.1999999999999 + 10 +-50.83250000000001 + 20 +50.7999999999999 + 10 +-50.69107864376272 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.2839213562373 + 20 +48.05857864376265 + 10 +-85.14249999999998 + 20 +48.19999999999991 + 10 +-85.14249999999996 + 20 +50.7999999999999 + 10 +-85.28392135623724 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.31607864376267 + 20 +48.05857864376264 + 10 +-68.45749999999998 + 20 +48.1999999999999 + 10 +-68.45750000000001 + 20 +50.7999999999999 + 10 +-68.31607864376272 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-102.9089213562373 + 20 +48.05857864376265 + 10 +-102.7675 + 20 +48.19999999999991 + 10 +-102.7675 + 20 +50.7999999999999 + 10 +-102.9089213562372 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.94107864376267 + 20 +48.05857864376265 + 10 +-86.08249999999998 + 20 +48.19999999999991 + 10 +-86.08250000000001 + 20 +50.7999999999999 + 10 +-85.94107864376272 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-120.5339213562373 + 20 +48.05857864376265 + 10 +-120.3925 + 20 +48.19999999999991 + 10 +-120.3925 + 20 +50.7999999999999 + 10 +-120.5339213562372 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-103.5660786437627 + 20 +48.05857864376265 + 10 +-103.7075 + 20 +48.19999999999991 + 10 +-103.7075 + 20 +50.7999999999999 + 10 +-103.5660786437627 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-138.1589213562373 + 20 +48.05857864376266 + 10 +-138.0175 + 20 +48.19999999999992 + 10 +-138.0175 + 20 +50.79999999999991 + 10 +-138.1589213562373 + 20 +50.9414213562372 + 0 +LWPOLYLINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-121.1910786437627 + 20 +48.05857864376265 + 10 +-121.3325 + 20 +48.19999999999991 + 10 +-121.3325 + 20 +50.7999999999999 + 10 +-121.1910786437627 + 20 +50.94142135623719 + 0 +LWPOLYLINE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-155.7839213562373 + 20 +48.05857864376266 + 10 +-155.6425 + 20 +48.19999999999992 + 10 +-155.6425 + 20 +50.79999999999991 + 10 +-155.7839213562373 + 20 +50.9414213562372 + 0 +LWPOLYLINE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-138.8160786437626 + 20 +48.05857864376266 + 10 +-138.9575 + 20 +48.19999999999992 + 10 +-138.9575 + 20 +50.79999999999991 + 10 +-138.8160786437628 + 20 +50.9414213562372 + 0 +LWPOLYLINE + 5 +4F9 +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-173.4089213562373 + 20 +48.05857864376266 + 10 +-173.2675 + 20 +48.19999999999992 + 10 +-173.2675 + 20 +50.79999999999991 + 10 +-173.4089213562373 + 20 +50.9414213562372 + 0 +LWPOLYLINE + 5 +4FA +330 +1F +100 +AcDbEntity + 8 +E192-B1-3MARK +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-156.4410786437626 + 20 +48.05857864376266 + 10 +-156.5825 + 20 +48.19999999999992 + 10 +-156.5825 + 20 +50.79999999999991 + 10 +-156.4410786437628 + 20 +50.9414213562372 + 0 +DIMENSION + 5 +502 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbDimension + 2 +*D1 + 10 +2.112500000000011 + 20 +113.7214932854319 + 30 +0.0 + 11 +-28.40000000000005 + 21 +115.8048266187652 + 31 +0.0 + 70 + 32 + 71 + 5 + 42 +61.02500000000013 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +ISO-25 +100 +AcDbAlignedDimension + 13 +-58.91250000000011 + 23 +107.4999999999999 + 33 +0.0 + 14 +2.112500000000011 + 24 +107.5 + 34 +0.0 +100 +AcDbRotatedDimension + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E192-3点.par b/LaiPuLaser/TempMarkData/E192-3点.par new file mode 100644 index 0000000..f61199b Binary files /dev/null and b/LaiPuLaser/TempMarkData/E192-3点.par differ diff --git a/LaiPuLaser/TempMarkData/E192-3点.txt b/LaiPuLaser/TempMarkData/E192-3点.txt new file mode 100644 index 0000000..01e0d74 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E192-3点.txt @@ -0,0 +1,8 @@ +1 +60.4705 +-7.5725 +60 +50 +600 +5 +1 diff --git a/LaiPuLaser/TempMarkData/E219 二供.are b/LaiPuLaser/TempMarkData/E219 二供.are new file mode 100644 index 0000000..b07c160 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 二供.are differ diff --git a/LaiPuLaser/TempMarkData/E219 二供.dxf b/LaiPuLaser/TempMarkData/E219 二供.dxf new file mode 100644 index 0000000..d03efe3 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219 二供.dxf @@ -0,0 +1,14362 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +207.0535267864479 + 20 +105.138858261927 + 30 +0.0 + 9 +$EXTMAX + 10 +384.9007161182554 + 20 +212.7688582619269 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458954.588433067 + 9 +$TDUCREATE + 40 +2458954.255099734 + 9 +$TDUPDATE + 40 +2458954.588433067 + 9 +$TDUUPDATE + 40 +2458954.255099734 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +452 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +308.2697276136222 + 22 +155.2329709909955 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +137.2622969394199 + 41 +3.927943214723038 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层3 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +224.2535267864479 + 20 +212.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +224.2535267864479 + 20 +114.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +382.8135267864479 + 20 +212.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +216.4135267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +236.2335267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +256.0535267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +275.8735267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +295.6935267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +315.5135267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +335.3335267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +355.153526786448 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +374.973526786448 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219 二供.par b/LaiPuLaser/TempMarkData/E219 二供.par new file mode 100644 index 0000000..82f65d3 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 二供.par differ diff --git a/LaiPuLaser/TempMarkData/E219 5-29.are b/LaiPuLaser/TempMarkData/E219 5-29.are new file mode 100644 index 0000000..ebeea4a Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 5-29.are differ diff --git a/LaiPuLaser/TempMarkData/E219 5-29.dxf b/LaiPuLaser/TempMarkData/E219 5-29.dxf new file mode 100644 index 0000000..4086d80 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219 5-29.dxf @@ -0,0 +1,19016 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +245.0055926238276 + 20 +119.8831897046744 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +226.7230777984067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081215 + 9 +$TDUCREATE + 40 +2458953.342747882 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +818 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +385.3242618187477 + 22 +192.2790349925891 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +215.3370914385615 + 41 +2.503788382663848 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +44F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 12 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +BLOCK_RECORD + 5 +5DA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 0 +BLOCK_RECORD + 5 +5E8 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D2 +340 +0 + 0 +BLOCK_RECORD + 5 +5F5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D3 +340 +0 + 0 +BLOCK_RECORD + 5 +604 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D4 +340 +0 + 0 +BLOCK_RECORD + 5 +613 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D5 +340 +0 + 0 +BLOCK_RECORD + 5 +622 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D6 +340 +0 + 0 +BLOCK_RECORD + 5 +631 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D7 +340 +0 + 0 +BLOCK_RECORD + 5 +640 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D8 +340 +0 + 0 +BLOCK_RECORD + 5 +64F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D9 +340 +0 + 0 +BLOCK_RECORD + 5 +65E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D10 +340 +0 + 0 +BLOCK_RECORD + 5 +66D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D11 +340 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5E5 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +5DB +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +250.0805179464939 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5DC +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +250.0805179464939 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5DD +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 11 +251.3305179464939 + 21 +206.2065230380077 + 31 +0.0 + 0 +LINE + 5 +5DE +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +224.2330777984067 + 30 +0.0 + 11 +251.3305179464939 + 21 +220.3731897046744 + 31 +0.0 + 0 +SOLID + 5 +5DF +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +251.7471846131606 + 20 +224.2330777984067 + 30 +0.0 + 11 +250.9138512798272 + 21 +224.2330777984067 + 31 +0.0 + 12 +251.3305179464939 + 22 +226.7330777984067 + 32 +0.0 + 13 +251.3305179464939 + 23 +226.7330777984067 + 33 +0.0 + 0 +SOLID + 5 +5E0 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.9138512798272 + 20 +220.3731897046744 + 30 +0.0 + 11 +251.7471846131606 + 21 +220.3731897046744 + 31 +0.0 + 12 +251.3305179464939 + 22 +217.8731897046744 + 32 +0.0 + 13 +251.3305179464939 + 23 +217.8731897046744 + 33 +0.0 + 0 +MTEXT + 5 +5E1 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +249.2471846131606 + 20 +210.789856371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +8,86 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5E2 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +226.7330777984067 + 30 +0.0 + 0 +POINT + 5 +5E3 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +217.8731897046744 + 30 +0.0 + 0 +POINT + 5 +5E4 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 0 +ENDBLK + 5 +5E6 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F2 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D2 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D2 + 1 + + 0 +LINE + 5 +5E9 +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.3605926238276 + 20 +173.9281897046744 + 30 +0.0 + 11 +248.3605926238276 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EA +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +267.2406929186844 + 20 +173.9281897046744 + 30 +0.0 + 11 +267.2406929186844 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EB +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +250.8605926238276 + 20 +173.9046342328305 + 30 +0.0 + 11 +264.7406929186844 + 21 +173.9046342328305 + 31 +0.0 + 0 +SOLID + 5 +5EC +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.8605926238276 + 20 +174.3213008994971 + 30 +0.0 + 11 +250.8605926238276 + 21 +173.4879675661638 + 31 +0.0 + 12 +248.3605926238276 + 22 +173.9046342328305 + 32 +0.0 + 13 +248.3605926238276 + 23 +173.9046342328305 + 33 +0.0 + 0 +SOLID + 5 +5ED +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +264.7406929186844 + 20 +173.4879675661638 + 30 +0.0 + 11 +264.7406929186844 + 21 +174.3213008994971 + 31 +0.0 + 12 +267.2406929186844 + 22 +173.9046342328305 + 32 +0.0 + 13 +267.2406929186844 + 23 +173.9046342328305 + 33 +0.0 + 0 +MTEXT + 5 +5EE +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +257.800642771256 + 20 +175.9879675661638 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +18,88 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5EF +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F0 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F1 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.9046342328305 + 30 +0.0 + 0 +ENDBLK + 5 +5F3 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +601 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D3 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D3 + 1 + + 0 +LINE + 5 +5F6 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.3756897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +174.3756897046744 + 31 +0.0 + 0 +LINE + 5 +5F7 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.2306897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5F8 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +158.8973563713411 + 31 +0.0 + 0 +LINE + 5 +5F9 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +174.3756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5FA +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +176.8756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +179.3756897046744 + 31 +0.0 + 0 +SOLID + 5 +5FB +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.564617507351 + 20 +176.8756897046744 + 30 +0.0 + 11 +250.3979508406843 + 21 +176.8756897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +174.3756897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +174.3756897046744 + 33 +0.0 + 0 +SOLID + 5 +5FC +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.3979508406843 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.564617507351 + 21 +169.7306897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +172.2306897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +172.2306897046744 + 33 +0.0 + 0 +MTEXT + 5 +5FD +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.8979508406843 + 20 +163.0640230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,15 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5FE +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.3756897046744 + 30 +0.0 + 0 +POINT + 5 +5FF +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.2306897046744 + 30 +0.0 + 0 +POINT + 5 +600 +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9812841740176 + 20 +172.2306897046744 + 30 +0.0 + 0 +ENDBLK + 5 +602 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +610 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D4 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D4 + 1 + + 0 +LINE + 5 +605 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +606 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +607 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +608 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +609 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +60A +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.9046858165279 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.7380191498613 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +60B +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.7380191498613 + 20 +169.9781897046744 + 30 +0.0 + 11 +265.9046858165279 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +60C +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.2380191498613 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +60D +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +60E +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +60F +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.3213524831946 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +611 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +61F +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D5 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D5 + 1 + + 0 +LINE + 5 +614 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +615 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +616 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +617 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +618 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +619 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.5319856654407 + 20 +177.1974397046744 + 30 +0.0 + 11 +250.365318998774 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +61A +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.365318998774 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.5319856654407 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +61B +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.865318998774 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +61C +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +61D +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +61E +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9486523321074 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +620 +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +62E +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D6 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D6 + 1 + + 0 +LINE + 5 +623 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +624 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +625 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +626 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +627 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +628 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0456228775738 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.8789562109072 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +629 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.8789562109072 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.0456228775738 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +62A +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.3789562109072 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +62B +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +62C +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +62D +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.4622895442405 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +62F +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +63D +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D7 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D7 + 1 + + 0 +LINE + 5 +632 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +633 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +634 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +635 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +636 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +637 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +248.91800703788 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.7513403712133 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +638 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.7513403712133 + 20 +169.4089397046744 + 30 +0.0 + 11 +248.91800703788 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +639 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.2513403712133 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +63A +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +63B +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +63C +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.3346737045466 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +63E +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +64C +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D8 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D8 + 1 + + 0 +LINE + 5 +641 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.6231897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +174.6231897046744 + 31 +0.0 + 0 +LINE + 5 +642 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +171.9831897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +643 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +157.8165230380078 + 31 +0.0 + 0 +LINE + 5 +644 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +174.6231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +645 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +177.1231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +179.6231897046744 + 31 +0.0 + 0 +SOLID + 5 +646 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.2419997502657 + 20 +177.1231897046744 + 30 +0.0 + 11 +266.0753330835991 + 21 +177.1231897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +174.6231897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +174.6231897046744 + 33 +0.0 + 0 +SOLID + 5 +647 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0753330835991 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.2419997502657 + 21 +169.4831897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +171.9831897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +171.9831897046744 + 33 +0.0 + 0 +MTEXT + 5 +648 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +263.575333083599 + 20 +162.3998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,64 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +649 +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.6231897046744 + 30 +0.0 + 0 +POINT + 5 +64A +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +171.9831897046744 + 30 +0.0 + 0 +POINT + 5 +64B +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +265.6586664169324 + 20 +171.9831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +64D +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +65B +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D9 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D9 + 1 + + 0 +LINE + 5 +650 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.5580147046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +174.5580147046744 + 31 +0.0 + 0 +LINE + 5 +651 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.0483647046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +652 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +158.715031371341 + 31 +0.0 + 0 +LINE + 5 +653 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +174.5580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +654 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +177.0580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +179.5580147046744 + 31 +0.0 + 0 +SOLID + 5 +655 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.2243088051252 + 20 +177.0580147046744 + 30 +0.0 + 11 +250.0576421384585 + 21 +177.0580147046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +174.5580147046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +174.5580147046744 + 33 +0.0 + 0 +SOLID + 5 +656 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.0576421384585 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.2243088051252 + 21 +169.5483647046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +172.0483647046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +172.0483647046744 + 33 +0.0 + 0 +MTEXT + 5 +657 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.5576421384585 + 20 +162.8816980380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +658 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.5580147046744 + 30 +0.0 + 0 +POINT + 5 +659 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.0483647046744 + 30 +0.0 + 0 +POINT + 5 +65A +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.6409754717919 + 20 +172.0483647046744 + 30 +0.0 + 0 +ENDBLK + 5 +65C +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +66A +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D10 + 1 + + 0 +LINE + 5 +65F +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.5571897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +174.5571897046744 + 31 +0.0 + 0 +LINE + 5 +660 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.0491897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +661 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +158.715856371341 + 31 +0.0 + 0 +LINE + 5 +662 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +174.5571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +663 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +177.0571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +179.5571897046744 + 31 +0.0 + 0 +SOLID + 5 +664 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.2558139753072 + 20 +177.0571897046744 + 30 +0.0 + 11 +267.0891473086406 + 21 +177.0571897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +174.5571897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +174.5571897046744 + 33 +0.0 + 0 +SOLID + 5 +665 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +267.0891473086406 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.2558139753072 + 21 +169.5491897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +172.0491897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +172.0491897046744 + 33 +0.0 + 0 +MTEXT + 5 +666 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.5891473086406 + 20 +162.8825230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +667 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.5571897046744 + 30 +0.0 + 0 +POINT + 5 +668 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.0491897046744 + 30 +0.0 + 0 +POINT + 5 +669 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.6724806419739 + 20 +172.0491897046744 + 30 +0.0 + 0 +ENDBLK + 5 +66B +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +678 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D11 + 1 + + 0 +LINE + 5 +66E +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +242.6711111102731 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +66F +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +242.6711111102731 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +670 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 11 +243.9211111102731 + 21 +108.2165230380077 + 31 +0.0 + 0 +LINE + 5 +671 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.9211111102731 + 21 +122.3831897046744 + 31 +0.0 + 0 +SOLID + 5 +672 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +244.3377777769397 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.5044444436064 + 21 +126.2230777984067 + 31 +0.0 + 12 +243.9211111102731 + 22 +128.7230777984067 + 32 +0.0 + 13 +243.9211111102731 + 23 +128.7230777984067 + 33 +0.0 + 0 +SOLID + 5 +673 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +243.5044444436064 + 20 +122.3831897046744 + 30 +0.0 + 11 +244.3377777769397 + 21 +122.3831897046744 + 31 +0.0 + 12 +243.9211111102731 + 22 +119.8831897046744 + 32 +0.0 + 13 +243.9211111102731 + 23 +119.8831897046744 + 33 +0.0 + 0 +MTEXT + 5 +674 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +241.8377777769397 + 20 +112.7998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +8,84 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +675 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +128.7230777984067 + 30 +0.0 + 0 +POINT + 5 +676 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +119.8831897046744 + 30 +0.0 + 0 +POINT + 5 +677 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +679 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.0289121251724 + 20 +171.6893858937714 + 10 +248.3105926238276 + 20 +172.0483647046744 + 10 +248.3105926238276 + 20 +174.5580147046744 + 10 +248.0353720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.4903032498762 + 20 +171.7054315783076 + 10 +267.1906929186844 + 20 +172.0491897046744 + 10 +267.1906929186844 + 20 +174.5571897046744 + 10 +267.4625733813669 + 20 +174.9232730476602 + 0 +LINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +67C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +67D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +680 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +681 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +682 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +683 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +684 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +685 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +686 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +687 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +688 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +689 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +68C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +68D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +690 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +691 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +692 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +693 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +694 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +695 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +696 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +697 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +698 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +699 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +69A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +69C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +69D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +69E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6AC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6AD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +700 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +701 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +702 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +703 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +704 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +705 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +706 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +707 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +708 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +709 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +70C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +70D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +710 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +711 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +712 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +713 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +714 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +715 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +716 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +717 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +718 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +719 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +71C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +71D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +720 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +721 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +722 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +723 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +724 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +725 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +726 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +727 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +728 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +729 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +72A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +72C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +72D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +72E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +730 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +731 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +732 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +733 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +734 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +735 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +736 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +737 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +738 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +739 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +73C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +73D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +740 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +741 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +742 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +743 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +744 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +745 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +746 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +747 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +748 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +749 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +74B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +74C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +74D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +74F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +750 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +751 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +752 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +753 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +754 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +755 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +756 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +757 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +758 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +759 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +75C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +75D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +760 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +761 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +762 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +763 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +764 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +765 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +766 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +767 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +768 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +769 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +76C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +76D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +770 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +771 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +772 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +773 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +774 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +775 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +776 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +777 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +778 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +779 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +77C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +77D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +780 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +781 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +782 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +783 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +784 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +785 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +786 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +787 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +788 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +789 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +78C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +78D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +790 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +791 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +792 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +793 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +794 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +795 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +796 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +797 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +798 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +799 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +79C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +79D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7AC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7AD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +263.4125926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +248.4505926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +267.1085926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +263.4125926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +257.0305926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +248.4505926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +283.2325926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +268.2705926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +286.9285926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +283.2325926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +276.8505926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +268.2705926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +303.0525926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +288.0905926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +306.7485926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +303.0525926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +296.6705926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +288.0905926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +322.8725926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +307.9105926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +326.5685926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +322.8725926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +316.4905926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +307.9105926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +342.6925926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +327.7305926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +346.3885926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +342.6925926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +336.3105926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +327.7305926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +362.5125926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +347.5505926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +366.2085926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +362.5125926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +356.1305926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +347.5505926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +382.3325926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +367.3705926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +386.0285926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +382.3325926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +375.9505926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +367.3705926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +402.1525926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +387.1905926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +405.8485926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +402.1525926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +395.7705926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +387.1905926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +421.9725926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +407.0105926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +800 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +425.6685926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +421.9725926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +801 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +415.5905926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +407.0105926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LWPOLYLINE + 5 +802 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.8489121251724 + 20 +171.6893858937714 + 10 +268.1305926238276 + 20 +172.0483647046744 + 10 +268.1305926238276 + 20 +174.5580147046744 + 10 +267.8553720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +803 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.3103032498762 + 20 +171.7054315783076 + 10 +287.0106929186844 + 20 +172.0491897046744 + 10 +287.0106929186844 + 20 +174.5571897046744 + 10 +287.2825733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +804 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.6689121251724 + 20 +171.6893858937714 + 10 +287.9505926238276 + 20 +172.0483647046744 + 10 +287.9505926238276 + 20 +174.5580147046744 + 10 +287.675372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +805 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.1303032498762 + 20 +171.7054315783076 + 10 +306.8306929186844 + 20 +172.0491897046744 + 10 +306.8306929186844 + 20 +174.5571897046744 + 10 +307.1025733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +806 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.4889121251724 + 20 +171.6893858937714 + 10 +307.7705926238276 + 20 +172.0483647046744 + 10 +307.7705926238276 + 20 +174.5580147046744 + 10 +307.495372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +807 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +326.9503032498762 + 20 +171.7054315783076 + 10 +326.6506929186844 + 20 +172.0491897046744 + 10 +326.6506929186844 + 20 +174.5571897046744 + 10 +326.9225733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +808 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.3089121251724 + 20 +171.6893858937714 + 10 +327.5905926238276 + 20 +172.0483647046744 + 10 +327.5905926238276 + 20 +174.5580147046744 + 10 +327.315372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +809 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +346.7703032498762 + 20 +171.7054315783076 + 10 +346.4706929186844 + 20 +172.0491897046744 + 10 +346.4706929186844 + 20 +174.5571897046744 + 10 +346.7425733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +347.1289121251724 + 20 +171.6893858937714 + 10 +347.4105926238276 + 20 +172.0483647046744 + 10 +347.4105926238276 + 20 +174.5580147046744 + 10 +347.1353720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.5903032498762 + 20 +171.7054315783076 + 10 +366.2906929186843 + 20 +172.0491897046744 + 10 +366.2906929186843 + 20 +174.5571897046744 + 10 +366.5625733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.9489121251724 + 20 +171.6893858937714 + 10 +367.2305926238276 + 20 +172.0483647046744 + 10 +367.2305926238276 + 20 +174.5580147046744 + 10 +366.9553720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.4103032498762 + 20 +171.7054315783076 + 10 +386.1106929186844 + 20 +172.0491897046744 + 10 +386.1106929186844 + 20 +174.5571897046744 + 10 +386.3825733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.7689121251724 + 20 +171.6893858937714 + 10 +387.0505926238277 + 20 +172.0483647046744 + 10 +387.0505926238277 + 20 +174.5580147046744 + 10 +386.7753720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.2303032498762 + 20 +171.7054315783076 + 10 +405.9306929186844 + 20 +172.0491897046744 + 10 +405.9306929186844 + 20 +174.5571897046744 + 10 +406.2025733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +810 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.5889121251724 + 20 +171.6893858937714 + 10 +406.8705926238276 + 20 +172.0483647046744 + 10 +406.8705926238276 + 20 +174.5580147046744 + 10 +406.5953720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +811 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +426.0503032498762 + 20 +171.7054315783076 + 10 +425.7506929186844 + 20 +172.0491897046744 + 10 +425.7506929186844 + 20 +174.5571897046744 + 10 +426.0225733813669 + 20 +174.9232730476602 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +1 +350 +1E + 3 +2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +102 +{ACAD_XDICTIONARY +360 +816 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +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 +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 +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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +815 + 0 +DICTIONARY + 5 +816 +330 +93 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +817 + 0 +XRECORD + 5 +815 +102 +{ACAD_REACTORS +330 +E8 +102 +} +330 +E8 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +XRECORD + 5 +817 +102 +{ACAD_REACTORS +330 +816 +102 +} +330 +816 +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 512 + 91 + 0 + 1 + + 92 + 512 + 93 + 0 + 2 + + 94 + 512 + 95 + 0 + 3 + + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219 5-29.par b/LaiPuLaser/TempMarkData/E219 5-29.par new file mode 100644 index 0000000..ad7b4e8 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 5-29.par differ diff --git a/LaiPuLaser/TempMarkData/E219 5-29.txt b/LaiPuLaser/TempMarkData/E219 5-29.txt new file mode 100644 index 0000000..d071a99 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219 5-29.txt @@ -0,0 +1,8 @@ +1 +76.7 +0.419943 +80 +50 +600 +1 +24 diff --git a/LaiPuLaser/TempMarkData/E219 二供.are b/LaiPuLaser/TempMarkData/E219 二供.are new file mode 100644 index 0000000..108321c Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 二供.are differ diff --git a/LaiPuLaser/TempMarkData/E219 二供.dxf b/LaiPuLaser/TempMarkData/E219 二供.dxf new file mode 100644 index 0000000..155c70d --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219 二供.dxf @@ -0,0 +1,12666 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-183.5256950365445 + 20 +-13.42336968544794 + 30 +-0.0015258207003583 + 9 +$EXTMAX + 10 +0.5319218762823539 + 20 +93.43789718304515 + 30 +0.0000000349246037 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458969.416921493 + 9 +$TDUCREATE + 40 +2458969.083588160 + 9 +$TDUPDATE + 40 +2458969.417473345 + 9 +$TDUUPDATE + 40 +2458969.084140012 + 9 +$TDINDWG + 40 +0.0005525810 + 9 +$TDUSRTIMER + 40 +0.0005525810 + 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 +354 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{A0A49722-0E9F-4D8E-88D6-836E88407C66} + 9 +$VERSIONGUID + 2 +{97EC79E9-43D3-4605-873D-B123D3B3627E} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +353 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-91.4968865801311 + 22 +40.0072637487986 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +112.578364137986 + 41 +1.643051771117166 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +1C5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +-13.42000000000007 + 30 +0.0 + 11 +-21.57018975928162 + 21 +-13.42000000000001 + 31 +0.0 + 0 +LINE + 5 +1C6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +-4.58000000000004 + 30 +0.0 + 11 +-21.57018975928162 + 21 +-4.580000000000097 + 31 +0.0 + 0 +LINE + 5 +1C7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +-12.84500000000008 + 30 +0.0 + 11 +-6.531001591283882 + 21 +-12.84500000000008 + 31 +0.0 + 0 +LINE + 5 +1C8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +-5.155000000000029 + 30 +0.0 + 11 +-6.531001591283882 + 21 +-5.155000000000029 + 31 +0.0 + 0 +LINE + 5 +1C9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +-3.620000000000061 + 30 +0.0 + 11 +-21.57018975928162 + 21 +-3.620000000000061 + 31 +0.0 + 0 +LINE + 5 +1CA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +5.21999999999997 + 30 +0.0 + 11 +-21.57018975928162 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +1CB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +-3.045000000000072 + 30 +0.0 + 11 +-6.531001591283882 + 21 +-3.045000000000072 + 31 +0.0 + 0 +LINE + 5 +1CC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +4.644999999999924 + 30 +0.0 + 11 +-6.531001591283882 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +1CD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +6.179999999999949 + 30 +0.0 + 11 +-21.57018975928162 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +1CE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +15.01999999999998 + 30 +0.0 + 11 +-21.57018975928162 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +1CF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +6.754999999999938 + 30 +0.0 + 11 +-6.531001591283882 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +1D0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +14.44499999999999 + 30 +0.0 + 11 +-6.531001591283882 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +1D1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +15.97999999999996 + 30 +0.0 + 11 +-21.57018975928162 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +1D2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +24.81999999999999 + 30 +0.0 + 11 +-21.57018975928162 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +1D3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +16.55499999999995 + 30 +0.0 + 11 +-6.531001591283882 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +1D4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +24.24499999999995 + 30 +0.0 + 11 +-6.531001591283882 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +1D5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +25.77999999999992 + 30 +0.0 + 11 +-21.57018975928162 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +1D6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +34.61999999999995 + 30 +0.0 + 11 +-21.57018975928162 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +1D7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +26.35499999999996 + 30 +0.0 + 11 +-6.531001591283882 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +1D8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +34.04499999999996 + 30 +0.0 + 11 +-6.531001591283882 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +1D9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +35.57999999999998 + 30 +0.0 + 11 +-21.57018975928162 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +1DA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +44.41999999999995 + 30 +0.0 + 11 +-21.57018975928162 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +1DB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +36.15499999999992 + 30 +0.0 + 11 +-6.531001591283882 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +1DC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +43.84499999999997 + 30 +0.0 + 11 +-6.531001591283882 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +1DD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +45.37999999999994 + 30 +0.0 + 11 +-21.57018975928162 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +1DE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +54.21999999999997 + 30 +0.0 + 11 +-21.57018975928162 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +1DF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +45.95499999999998 + 30 +0.0 + 11 +-6.531001591283882 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +1E0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +53.64499999999992 + 30 +0.0 + 11 +-6.531001591283882 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +1E1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +55.17999999999995 + 30 +0.0 + 11 +-21.57018975928162 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +1E2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +64.01999999999993 + 30 +0.0 + 11 +-21.57018975928162 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +1E3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +55.75499999999994 + 30 +0.0 + 11 +-6.531001591283882 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +1E4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +63.44499999999993 + 30 +0.0 + 11 +-6.531001591283882 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +1E5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +64.97999999999996 + 30 +0.0 + 11 +-21.57018975928162 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +1E6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +73.81999999999999 + 30 +0.0 + 11 +-21.57018975928162 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +1E7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +65.55499999999994 + 30 +0.0 + 11 +-6.531001591283882 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +1E8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +73.24499999999995 + 30 +0.0 + 11 +-6.531001591283882 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +1E9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +74.77999999999991 + 30 +0.0 + 11 +-21.57018975928162 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +1EA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +83.61999999999994 + 30 +0.0 + 11 +-21.57018975928162 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +1EB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +75.35499999999996 + 30 +0.0 + 11 +-6.531001591283882 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +1EC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +83.0449999999999 + 30 +0.0 + 11 +-6.531001591283882 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +1ED +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +84.57999999999993 + 30 +0.0 + 11 +-21.57018975928162 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +1EE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-12.7399607732238 + 20 +93.41999999999996 + 30 +0.0 + 11 +-21.57018975928162 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +1EF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +85.15499999999992 + 30 +0.0 + 11 +-6.531001591283882 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +1F0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-2.729291834691082 + 20 +92.84499999999997 + 30 +0.0 + 11 +-6.531001591283882 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +1F1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +-13.42000000000007 + 30 +0.0 + 11 +-41.39018975928161 + 21 +-13.42000000000001 + 31 +0.0 + 0 +LINE + 5 +1F2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +-4.58000000000004 + 30 +0.0 + 11 +-41.39018975928161 + 21 +-4.580000000000097 + 31 +0.0 + 0 +LINE + 5 +1F3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +-12.84500000000008 + 30 +0.0 + 11 +-26.35100159128388 + 21 +-12.84500000000008 + 31 +0.0 + 0 +LINE + 5 +1F4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +-5.155000000000029 + 30 +0.0 + 11 +-26.35100159128388 + 21 +-5.155000000000029 + 31 +0.0 + 0 +LINE + 5 +1F5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +-3.620000000000061 + 30 +0.0 + 11 +-41.39018975928161 + 21 +-3.620000000000061 + 31 +0.0 + 0 +LINE + 5 +1F6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +5.21999999999997 + 30 +0.0 + 11 +-41.39018975928161 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +-3.045000000000072 + 30 +0.0 + 11 +-26.35100159128388 + 21 +-3.045000000000072 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +4.644999999999924 + 30 +0.0 + 11 +-26.35100159128388 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +1F9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +6.179999999999949 + 30 +0.0 + 11 +-41.39018975928161 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +1FA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +15.01999999999998 + 30 +0.0 + 11 +-41.39018975928161 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +6.754999999999938 + 30 +0.0 + 11 +-26.35100159128388 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +14.44499999999999 + 30 +0.0 + 11 +-26.35100159128388 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +15.97999999999996 + 30 +0.0 + 11 +-41.39018975928161 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +24.81999999999999 + 30 +0.0 + 11 +-41.39018975928161 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +16.55499999999995 + 30 +0.0 + 11 +-26.35100159128388 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +24.24499999999995 + 30 +0.0 + 11 +-26.35100159128388 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +25.77999999999992 + 30 +0.0 + 11 +-41.39018975928161 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +34.61999999999995 + 30 +0.0 + 11 +-41.39018975928161 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +26.35499999999996 + 30 +0.0 + 11 +-26.35100159128388 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +34.04499999999996 + 30 +0.0 + 11 +-26.35100159128388 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +35.57999999999998 + 30 +0.0 + 11 +-41.39018975928161 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +44.41999999999995 + 30 +0.0 + 11 +-41.39018975928161 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +36.15499999999992 + 30 +0.0 + 11 +-26.35100159128388 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +43.84499999999997 + 30 +0.0 + 11 +-26.35100159128388 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +45.37999999999994 + 30 +0.0 + 11 +-41.39018975928161 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +54.21999999999997 + 30 +0.0 + 11 +-41.39018975928161 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +45.95499999999998 + 30 +0.0 + 11 +-26.35100159128388 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +53.64499999999992 + 30 +0.0 + 11 +-26.35100159128388 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +55.17999999999995 + 30 +0.0 + 11 +-41.39018975928161 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +64.01999999999993 + 30 +0.0 + 11 +-41.39018975928161 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +55.75499999999994 + 30 +0.0 + 11 +-26.35100159128388 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +63.44499999999993 + 30 +0.0 + 11 +-26.35100159128388 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +64.97999999999996 + 30 +0.0 + 11 +-41.39018975928161 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +73.81999999999999 + 30 +0.0 + 11 +-41.39018975928161 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +65.55499999999994 + 30 +0.0 + 11 +-26.35100159128388 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +73.24499999999995 + 30 +0.0 + 11 +-26.35100159128388 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +74.77999999999991 + 30 +0.0 + 11 +-41.39018975928161 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +83.61999999999994 + 30 +0.0 + 11 +-41.39018975928161 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +75.35499999999996 + 30 +0.0 + 11 +-26.35100159128388 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +83.0449999999999 + 30 +0.0 + 11 +-26.35100159128388 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +84.57999999999993 + 30 +0.0 + 11 +-41.39018975928161 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-32.55996077322379 + 20 +93.41999999999996 + 30 +0.0 + 11 +-41.39018975928161 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +85.15499999999992 + 30 +0.0 + 11 +-26.35100159128388 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-22.54929183469108 + 20 +92.84499999999997 + 30 +0.0 + 11 +-26.35100159128388 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +-13.42000000000007 + 30 +0.0 + 11 +-61.2101897592816 + 21 +-13.42000000000001 + 31 +0.0 + 0 +LINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +-4.58000000000004 + 30 +0.0 + 11 +-61.2101897592816 + 21 +-4.580000000000097 + 31 +0.0 + 0 +LINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +-12.84500000000008 + 30 +0.0 + 11 +-46.17100159128386 + 21 +-12.84500000000008 + 31 +0.0 + 0 +LINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +-5.155000000000029 + 30 +0.0 + 11 +-46.17100159128386 + 21 +-5.155000000000029 + 31 +0.0 + 0 +LINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +-3.620000000000061 + 30 +0.0 + 11 +-61.2101897592816 + 21 +-3.620000000000061 + 31 +0.0 + 0 +LINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +5.21999999999997 + 30 +0.0 + 11 +-61.2101897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +-3.045000000000072 + 30 +0.0 + 11 +-46.17100159128386 + 21 +-3.045000000000072 + 31 +0.0 + 0 +LINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +4.644999999999924 + 30 +0.0 + 11 +-46.17100159128386 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +6.179999999999949 + 30 +0.0 + 11 +-61.2101897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +15.01999999999998 + 30 +0.0 + 11 +-61.2101897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +6.754999999999938 + 30 +0.0 + 11 +-46.17100159128386 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +14.44499999999999 + 30 +0.0 + 11 +-46.17100159128386 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +15.97999999999996 + 30 +0.0 + 11 +-61.2101897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +24.81999999999999 + 30 +0.0 + 11 +-61.2101897592816 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +16.55499999999995 + 30 +0.0 + 11 +-46.17100159128386 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +24.24499999999995 + 30 +0.0 + 11 +-46.17100159128386 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +25.77999999999992 + 30 +0.0 + 11 +-61.2101897592816 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +34.61999999999995 + 30 +0.0 + 11 +-61.2101897592816 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +26.35499999999996 + 30 +0.0 + 11 +-46.17100159128386 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +34.04499999999996 + 30 +0.0 + 11 +-46.17100159128386 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +35.57999999999998 + 30 +0.0 + 11 +-61.2101897592816 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +44.41999999999995 + 30 +0.0 + 11 +-61.2101897592816 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +36.15499999999992 + 30 +0.0 + 11 +-46.17100159128386 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +43.84499999999997 + 30 +0.0 + 11 +-46.17100159128386 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +45.37999999999994 + 30 +0.0 + 11 +-61.2101897592816 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +54.21999999999997 + 30 +0.0 + 11 +-61.2101897592816 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +45.95499999999998 + 30 +0.0 + 11 +-46.17100159128386 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +53.64499999999992 + 30 +0.0 + 11 +-46.17100159128386 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +55.17999999999995 + 30 +0.0 + 11 +-61.2101897592816 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +64.01999999999993 + 30 +0.0 + 11 +-61.2101897592816 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +55.75499999999994 + 30 +0.0 + 11 +-46.17100159128386 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +63.44499999999993 + 30 +0.0 + 11 +-46.17100159128386 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +64.97999999999996 + 30 +0.0 + 11 +-61.2101897592816 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +73.81999999999999 + 30 +0.0 + 11 +-61.2101897592816 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +65.55499999999994 + 30 +0.0 + 11 +-46.17100159128386 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +73.24499999999995 + 30 +0.0 + 11 +-46.17100159128386 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +74.77999999999991 + 30 +0.0 + 11 +-61.2101897592816 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +83.61999999999994 + 30 +0.0 + 11 +-61.2101897592816 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +75.35499999999996 + 30 +0.0 + 11 +-46.17100159128386 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +83.0449999999999 + 30 +0.0 + 11 +-46.17100159128386 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +84.57999999999993 + 30 +0.0 + 11 +-61.2101897592816 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-52.37996077322378 + 20 +93.41999999999996 + 30 +0.0 + 11 +-61.2101897592816 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +85.15499999999992 + 30 +0.0 + 11 +-46.17100159128386 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-42.36929183469107 + 20 +92.84499999999997 + 30 +0.0 + 11 +-46.17100159128386 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-81.0301897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-81.0301897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +-12.84500000000008 + 30 +0.0 + 11 +-65.99100159128386 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +-5.155000000000029 + 30 +0.0 + 11 +-65.99100159128386 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-81.0301897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +5.21999999999997 + 30 +0.0 + 11 +-81.0301897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +-3.045000000000072 + 30 +0.0 + 11 +-65.99100159128386 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +4.644999999999924 + 30 +0.0 + 11 +-65.99100159128386 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +6.179999999999949 + 30 +0.0 + 11 +-81.0301897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +15.01999999999998 + 30 +0.0 + 11 +-81.0301897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +6.754999999999938 + 30 +0.0 + 11 +-65.99100159128386 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +14.44499999999999 + 30 +0.0 + 11 +-65.99100159128386 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +15.97999999999996 + 30 +0.0 + 11 +-81.0301897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +24.81999999999999 + 30 +0.0 + 11 +-81.0301897592816 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +16.55499999999995 + 30 +0.0 + 11 +-65.99100159128386 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +24.24499999999995 + 30 +0.0 + 11 +-65.99100159128386 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +25.77999999999992 + 30 +0.0 + 11 +-81.0301897592816 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +34.61999999999995 + 30 +0.0 + 11 +-81.0301897592816 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +26.35499999999996 + 30 +0.0 + 11 +-65.99100159128386 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +34.04499999999996 + 30 +0.0 + 11 +-65.99100159128386 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +35.57999999999998 + 30 +0.0 + 11 +-81.0301897592816 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +44.41999999999995 + 30 +0.0 + 11 +-81.0301897592816 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +36.15499999999992 + 30 +0.0 + 11 +-65.99100159128386 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +43.84499999999997 + 30 +0.0 + 11 +-65.99100159128386 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +45.37999999999994 + 30 +0.0 + 11 +-81.0301897592816 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +54.21999999999997 + 30 +0.0 + 11 +-81.0301897592816 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +45.95499999999998 + 30 +0.0 + 11 +-65.99100159128386 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +53.64499999999992 + 30 +0.0 + 11 +-65.99100159128386 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +55.17999999999995 + 30 +0.0 + 11 +-81.0301897592816 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +64.01999999999993 + 30 +0.0 + 11 +-81.0301897592816 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +55.75499999999994 + 30 +0.0 + 11 +-65.99100159128386 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +63.44499999999993 + 30 +0.0 + 11 +-65.99100159128386 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +64.97999999999996 + 30 +0.0 + 11 +-81.0301897592816 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +73.81999999999999 + 30 +0.0 + 11 +-81.0301897592816 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +65.55499999999994 + 30 +0.0 + 11 +-65.99100159128386 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +73.24499999999995 + 30 +0.0 + 11 +-65.99100159128386 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +74.77999999999991 + 30 +0.0 + 11 +-81.0301897592816 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +83.61999999999994 + 30 +0.0 + 11 +-81.0301897592816 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +75.35499999999996 + 30 +0.0 + 11 +-65.99100159128386 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +83.0449999999999 + 30 +0.0 + 11 +-65.99100159128386 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +84.57999999999993 + 30 +0.0 + 11 +-81.0301897592816 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-72.19996077322377 + 20 +93.41999999999996 + 30 +0.0 + 11 +-81.0301897592816 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +85.15499999999992 + 30 +0.0 + 11 +-65.99100159128386 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-62.18929183469106 + 20 +92.84499999999997 + 30 +0.0 + 11 +-65.99100159128386 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-100.8501897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-100.8501897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +-12.84500000000003 + 30 +0.0 + 11 +-85.81100159128386 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +-5.154999999999972 + 30 +0.0 + 11 +-85.81100159128386 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-100.8501897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +5.21999999999997 + 30 +0.0 + 11 +-100.8501897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +-3.045000000000015 + 30 +0.0 + 11 +-85.81100159128386 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +4.644999999999924 + 30 +0.0 + 11 +-85.81100159128386 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +6.179999999999949 + 30 +0.0 + 11 +-100.8501897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +15.01999999999998 + 30 +0.0 + 11 +-100.8501897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +6.754999999999938 + 30 +0.0 + 11 +-85.81100159128386 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +14.44499999999999 + 30 +0.0 + 11 +-85.81100159128386 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.0199607732238 + 20 +15.97999999999996 + 30 +0.0 + 11 +-100.8501897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +24.81999999999999 + 30 +0.0 + 11 +-100.8501897592815 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +16.55499999999995 + 30 +0.0 + 11 +-85.81100159128386 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +24.24499999999995 + 30 +0.0 + 11 +-85.81100159128386 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +25.77999999999992 + 30 +0.0 + 11 +-100.8501897592815 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +34.61999999999995 + 30 +0.0 + 11 +-100.8501897592815 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +26.35499999999996 + 30 +0.0 + 11 +-85.81100159128386 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +34.04499999999996 + 30 +0.0 + 11 +-85.81100159128386 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +35.57999999999998 + 30 +0.0 + 11 +-100.8501897592815 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +44.41999999999995 + 30 +0.0 + 11 +-100.8501897592815 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +36.15499999999992 + 30 +0.0 + 11 +-85.81100159128386 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +43.84499999999997 + 30 +0.0 + 11 +-85.81100159128386 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +45.37999999999994 + 30 +0.0 + 11 +-100.8501897592815 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +54.21999999999997 + 30 +0.0 + 11 +-100.8501897592815 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +45.95499999999998 + 30 +0.0 + 11 +-85.81100159128386 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +53.64499999999992 + 30 +0.0 + 11 +-85.81100159128386 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +55.17999999999995 + 30 +0.0 + 11 +-100.8501897592815 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +64.01999999999993 + 30 +0.0 + 11 +-100.8501897592815 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +55.75499999999994 + 30 +0.0 + 11 +-85.81100159128386 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +63.44499999999993 + 30 +0.0 + 11 +-85.81100159128386 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +64.97999999999996 + 30 +0.0 + 11 +-100.8501897592815 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +73.81999999999999 + 30 +0.0 + 11 +-100.8501897592815 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +65.55499999999994 + 30 +0.0 + 11 +-85.81100159128386 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +73.24499999999995 + 30 +0.0 + 11 +-85.81100159128386 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +74.77999999999991 + 30 +0.0 + 11 +-100.8501897592815 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +83.61999999999994 + 30 +0.0 + 11 +-100.8501897592815 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +75.35499999999996 + 30 +0.0 + 11 +-85.81100159128386 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +83.0449999999999 + 30 +0.0 + 11 +-85.81100159128386 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +84.57999999999993 + 30 +0.0 + 11 +-100.8501897592815 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-92.01996077322375 + 20 +93.41999999999996 + 30 +0.0 + 11 +-100.8501897592815 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +85.15499999999992 + 30 +0.0 + 11 +-85.81100159128386 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-82.00929183469105 + 20 +92.84499999999997 + 30 +0.0 + 11 +-85.81100159128386 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-120.6701897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-120.6701897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +-12.84500000000003 + 30 +0.0 + 11 +-105.6310015912838 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +-5.154999999999972 + 30 +0.0 + 11 +-105.6310015912838 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-120.6701897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +5.21999999999997 + 30 +0.0 + 11 +-120.6701897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +-3.045000000000015 + 30 +0.0 + 11 +-105.6310015912838 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +4.644999999999924 + 30 +0.0 + 11 +-105.6310015912838 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +6.179999999999949 + 30 +0.0 + 11 +-120.6701897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +15.01999999999998 + 30 +0.0 + 11 +-120.6701897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +6.754999999999938 + 30 +0.0 + 11 +-105.6310015912838 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +14.44499999999999 + 30 +0.0 + 11 +-105.6310015912838 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732238 + 20 +15.97999999999996 + 30 +0.0 + 11 +-120.6701897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +24.81999999999999 + 30 +0.0 + 11 +-120.6701897592815 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +16.55499999999995 + 30 +0.0 + 11 +-105.6310015912838 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +24.24499999999995 + 30 +0.0 + 11 +-105.6310015912838 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +25.77999999999992 + 30 +0.0 + 11 +-120.6701897592815 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +34.61999999999995 + 30 +0.0 + 11 +-120.6701897592815 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +26.35499999999996 + 30 +0.0 + 11 +-105.6310015912838 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +34.04499999999996 + 30 +0.0 + 11 +-105.6310015912838 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +35.57999999999998 + 30 +0.0 + 11 +-120.6701897592815 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +44.41999999999995 + 30 +0.0 + 11 +-120.6701897592815 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +36.15499999999992 + 30 +0.0 + 11 +-105.6310015912838 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +43.84499999999997 + 30 +0.0 + 11 +-105.6310015912838 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +45.37999999999994 + 30 +0.0 + 11 +-120.6701897592815 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +54.21999999999997 + 30 +0.0 + 11 +-120.6701897592815 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +45.95499999999998 + 30 +0.0 + 11 +-105.6310015912838 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +53.64499999999992 + 30 +0.0 + 11 +-105.6310015912838 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +55.17999999999995 + 30 +0.0 + 11 +-120.6701897592815 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +64.01999999999993 + 30 +0.0 + 11 +-120.6701897592815 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +55.75499999999994 + 30 +0.0 + 11 +-105.6310015912838 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +63.44499999999993 + 30 +0.0 + 11 +-105.6310015912838 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +64.97999999999996 + 30 +0.0 + 11 +-120.6701897592815 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +73.81999999999999 + 30 +0.0 + 11 +-120.6701897592815 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +65.55499999999994 + 30 +0.0 + 11 +-105.6310015912838 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +73.24499999999995 + 30 +0.0 + 11 +-105.6310015912838 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +74.77999999999991 + 30 +0.0 + 11 +-120.6701897592815 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +83.61999999999994 + 30 +0.0 + 11 +-120.6701897592815 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +75.35499999999996 + 30 +0.0 + 11 +-105.6310015912838 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +83.0449999999999 + 30 +0.0 + 11 +-105.6310015912838 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +84.57999999999993 + 30 +0.0 + 11 +-120.6701897592815 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-111.8399607732237 + 20 +93.41999999999996 + 30 +0.0 + 11 +-120.6701897592815 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +85.15499999999992 + 30 +0.0 + 11 +-105.6310015912838 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-101.829291834691 + 20 +92.84499999999997 + 30 +0.0 + 11 +-105.6310015912838 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-140.4901897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-140.4901897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +-12.84500000000003 + 30 +0.0 + 11 +-125.4510015912838 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +-5.154999999999972 + 30 +0.0 + 11 +-125.4510015912838 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-140.4901897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +5.21999999999997 + 30 +0.0 + 11 +-140.4901897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +-3.045000000000015 + 30 +0.0 + 11 +-125.4510015912838 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +4.644999999999924 + 30 +0.0 + 11 +-125.4510015912838 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +6.179999999999949 + 30 +0.0 + 11 +-140.4901897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +15.01999999999998 + 30 +0.0 + 11 +-140.4901897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +6.754999999999938 + 30 +0.0 + 11 +-125.4510015912838 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +14.44499999999999 + 30 +0.0 + 11 +-125.4510015912838 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732238 + 20 +15.97999999999996 + 30 +0.0 + 11 +-140.4901897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +24.81999999999999 + 30 +0.0 + 11 +-140.4901897592815 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +16.55499999999995 + 30 +0.0 + 11 +-125.4510015912838 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +24.24499999999995 + 30 +0.0 + 11 +-125.4510015912838 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +25.77999999999992 + 30 +0.0 + 11 +-140.4901897592815 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +34.61999999999995 + 30 +0.0 + 11 +-140.4901897592815 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +26.35499999999996 + 30 +0.0 + 11 +-125.4510015912838 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +34.04499999999996 + 30 +0.0 + 11 +-125.4510015912838 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +35.57999999999998 + 30 +0.0 + 11 +-140.4901897592815 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +44.41999999999995 + 30 +0.0 + 11 +-140.4901897592815 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +36.15499999999992 + 30 +0.0 + 11 +-125.4510015912838 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +43.84499999999997 + 30 +0.0 + 11 +-125.4510015912838 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +45.37999999999994 + 30 +0.0 + 11 +-140.4901897592815 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +54.21999999999997 + 30 +0.0 + 11 +-140.4901897592815 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +45.95499999999998 + 30 +0.0 + 11 +-125.4510015912838 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +53.64499999999992 + 30 +0.0 + 11 +-125.4510015912838 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +55.17999999999995 + 30 +0.0 + 11 +-140.4901897592815 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +64.01999999999993 + 30 +0.0 + 11 +-140.4901897592815 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +55.75499999999994 + 30 +0.0 + 11 +-125.4510015912838 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +63.44499999999993 + 30 +0.0 + 11 +-125.4510015912838 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +64.97999999999996 + 30 +0.0 + 11 +-140.4901897592815 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +73.81999999999999 + 30 +0.0 + 11 +-140.4901897592815 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +65.55499999999994 + 30 +0.0 + 11 +-125.4510015912838 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +73.24499999999995 + 30 +0.0 + 11 +-125.4510015912838 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +74.77999999999991 + 30 +0.0 + 11 +-140.4901897592815 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +83.61999999999994 + 30 +0.0 + 11 +-140.4901897592815 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +75.35499999999996 + 30 +0.0 + 11 +-125.4510015912838 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +83.0449999999999 + 30 +0.0 + 11 +-125.4510015912838 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +84.57999999999993 + 30 +0.0 + 11 +-140.4901897592815 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-131.6599607732237 + 20 +93.41999999999996 + 30 +0.0 + 11 +-140.4901897592815 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +85.15499999999992 + 30 +0.0 + 11 +-125.4510015912838 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-121.649291834691 + 20 +92.84499999999997 + 30 +0.0 + 11 +-125.4510015912838 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-160.3101897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-160.3101897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +-12.84500000000003 + 30 +0.0 + 11 +-145.2710015912839 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +-5.154999999999972 + 30 +0.0 + 11 +-145.2710015912839 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-160.3101897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +5.21999999999997 + 30 +0.0 + 11 +-160.3101897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +-3.045000000000015 + 30 +0.0 + 11 +-145.2710015912839 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +4.644999999999924 + 30 +0.0 + 11 +-145.2710015912839 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +6.179999999999949 + 30 +0.0 + 11 +-160.3101897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +15.01999999999998 + 30 +0.0 + 11 +-160.3101897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +6.754999999999938 + 30 +0.0 + 11 +-145.2710015912839 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +14.44499999999999 + 30 +0.0 + 11 +-145.2710015912839 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +15.97999999999996 + 30 +0.0 + 11 +-160.3101897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +24.81999999999999 + 30 +0.0 + 11 +-160.3101897592816 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.4692918346911 + 20 +16.55499999999995 + 30 +0.0 + 11 +-145.2710015912839 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +24.24499999999995 + 30 +0.0 + 11 +-145.2710015912838 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +25.77999999999992 + 30 +0.0 + 11 +-160.3101897592816 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +34.61999999999995 + 30 +0.0 + 11 +-160.3101897592816 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +26.35499999999996 + 30 +0.0 + 11 +-145.2710015912838 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +34.04499999999996 + 30 +0.0 + 11 +-145.2710015912838 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +35.57999999999998 + 30 +0.0 + 11 +-160.3101897592816 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +44.41999999999995 + 30 +0.0 + 11 +-160.3101897592816 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +36.15499999999992 + 30 +0.0 + 11 +-145.2710015912838 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +43.84499999999997 + 30 +0.0 + 11 +-145.2710015912838 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +45.37999999999994 + 30 +0.0 + 11 +-160.3101897592816 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +54.21999999999997 + 30 +0.0 + 11 +-160.3101897592816 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +45.95499999999998 + 30 +0.0 + 11 +-145.2710015912838 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +53.64499999999992 + 30 +0.0 + 11 +-145.2710015912838 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +55.17999999999995 + 30 +0.0 + 11 +-160.3101897592816 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +64.01999999999993 + 30 +0.0 + 11 +-160.3101897592816 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +55.75499999999994 + 30 +0.0 + 11 +-145.2710015912838 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +63.44499999999993 + 30 +0.0 + 11 +-145.2710015912838 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +64.97999999999996 + 30 +0.0 + 11 +-160.3101897592816 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +73.81999999999999 + 30 +0.0 + 11 +-160.3101897592816 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +65.55499999999994 + 30 +0.0 + 11 +-145.2710015912838 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +73.24499999999995 + 30 +0.0 + 11 +-145.2710015912838 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +74.77999999999991 + 30 +0.0 + 11 +-160.3101897592816 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +83.61999999999994 + 30 +0.0 + 11 +-160.3101897592816 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +75.35499999999996 + 30 +0.0 + 11 +-145.2710015912838 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +83.0449999999999 + 30 +0.0 + 11 +-145.2710015912838 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +84.57999999999993 + 30 +0.0 + 11 +-160.3101897592816 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-151.4799607732238 + 20 +93.41999999999996 + 30 +0.0 + 11 +-160.3101897592816 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +85.15499999999992 + 30 +0.0 + 11 +-145.2710015912838 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-141.469291834691 + 20 +92.84499999999997 + 30 +0.0 + 11 +-145.2710015912838 + 21 +92.84499999999997 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +-13.42000000000001 + 30 +0.0 + 11 +-180.1301897592816 + 21 +-13.41999999999996 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +-4.579999999999984 + 30 +0.0 + 11 +-180.1301897592816 + 21 +-4.58000000000004 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +-12.84500000000003 + 30 +0.0 + 11 +-165.0910015912838 + 21 +-12.84500000000003 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +-5.154999999999972 + 30 +0.0 + 11 +-165.0910015912838 + 21 +-5.154999999999972 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +-3.620000000000004 + 30 +0.0 + 11 +-180.1301897592816 + 21 +-3.620000000000004 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +5.21999999999997 + 30 +0.0 + 11 +-180.1301897592816 + 21 +5.21999999999997 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +-3.045000000000015 + 30 +0.0 + 11 +-165.0910015912838 + 21 +-3.045000000000015 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +4.644999999999924 + 30 +0.0 + 11 +-165.0910015912838 + 21 +4.644999999999981 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +6.179999999999949 + 30 +0.0 + 11 +-180.1301897592816 + 21 +6.180000000000006 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +15.01999999999998 + 30 +0.0 + 11 +-180.1301897592816 + 21 +15.01999999999992 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +6.754999999999938 + 30 +0.0 + 11 +-165.0910015912838 + 21 +6.754999999999938 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +14.44499999999999 + 30 +0.0 + 11 +-165.0910015912838 + 21 +14.44499999999999 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +15.97999999999996 + 30 +0.0 + 11 +-180.1301897592816 + 21 +15.97999999999996 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +24.81999999999999 + 30 +0.0 + 11 +-180.1301897592815 + 21 +24.81999999999999 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +16.55499999999995 + 30 +0.0 + 11 +-165.0910015912838 + 21 +16.55499999999995 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +24.24499999999995 + 30 +0.0 + 11 +-165.0910015912838 + 21 +24.24499999999995 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +25.77999999999992 + 30 +0.0 + 11 +-180.1301897592815 + 21 +25.77999999999998 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +34.61999999999995 + 30 +0.0 + 11 +-180.1301897592815 + 21 +34.61999999999995 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +26.35499999999996 + 30 +0.0 + 11 +-165.0910015912838 + 21 +26.35499999999996 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +34.04499999999996 + 30 +0.0 + 11 +-165.0910015912838 + 21 +34.04499999999996 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +35.57999999999998 + 30 +0.0 + 11 +-180.1301897592815 + 21 +35.57999999999998 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +44.41999999999995 + 30 +0.0 + 11 +-180.1301897592815 + 21 +44.41999999999995 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +36.15499999999992 + 30 +0.0 + 11 +-165.0910015912838 + 21 +36.15499999999992 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +43.84499999999997 + 30 +0.0 + 11 +-165.0910015912838 + 21 +43.84499999999997 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +45.37999999999994 + 30 +0.0 + 11 +-180.1301897592815 + 21 +45.37999999999994 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +54.21999999999997 + 30 +0.0 + 11 +-180.1301897592815 + 21 +54.21999999999997 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +45.95499999999998 + 30 +0.0 + 11 +-165.0910015912838 + 21 +45.95499999999993 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +53.64499999999992 + 30 +0.0 + 11 +-165.0910015912838 + 21 +53.64499999999992 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +55.17999999999995 + 30 +0.0 + 11 +-180.1301897592815 + 21 +55.17999999999995 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +64.01999999999993 + 30 +0.0 + 11 +-180.1301897592815 + 21 +64.01999999999993 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +55.75499999999994 + 30 +0.0 + 11 +-165.0910015912838 + 21 +55.75499999999994 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +63.44499999999993 + 30 +0.0 + 11 +-165.0910015912838 + 21 +63.445 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +64.97999999999996 + 30 +0.0 + 11 +-180.1301897592815 + 21 +64.97999999999996 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +73.81999999999999 + 30 +0.0 + 11 +-180.1301897592815 + 21 +73.81999999999994 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +65.55499999999994 + 30 +0.0 + 11 +-165.0910015912838 + 21 +65.55499999999989 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +73.24499999999995 + 30 +0.0 + 11 +-165.0910015912838 + 21 +73.24499999999995 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +74.77999999999991 + 30 +0.0 + 11 +-180.1301897592815 + 21 +74.77999999999991 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +83.61999999999994 + 30 +0.0 + 11 +-180.1301897592815 + 21 +83.61999999999994 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +75.35499999999996 + 30 +0.0 + 11 +-165.0910015912838 + 21 +75.35499999999996 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +83.0449999999999 + 30 +0.0 + 11 +-165.0910015912838 + 21 +83.04499999999995 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +84.57999999999993 + 30 +0.0 + 11 +-180.1301897592815 + 21 +84.57999999999998 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-171.2999607732237 + 20 +93.41999999999996 + 30 +0.0 + 11 +-180.1301897592815 + 21 +93.41999999999989 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +85.15499999999992 + 30 +0.0 + 11 +-165.0910015912838 + 21 +85.15499999999992 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbLine + 10 +-161.289291834691 + 20 +92.84499999999997 + 30 +0.0 + 11 +-165.0910015912838 + 21 +92.84499999999997 + 31 +0.0 + 0 +CIRCLE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +-183.0 + 20 +50.00000000000006 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219 二供.par b/LaiPuLaser/TempMarkData/E219 二供.par new file mode 100644 index 0000000..b675c87 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219 二供.par differ diff --git a/LaiPuLaser/TempMarkData/E219.are b/LaiPuLaser/TempMarkData/E219.are new file mode 100644 index 0000000..49518f0 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219.are differ diff --git a/LaiPuLaser/TempMarkData/E219.dxf b/LaiPuLaser/TempMarkData/E219.dxf new file mode 100644 index 0000000..2192df9 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219.dxf @@ -0,0 +1,18560 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +245.0055926238276 + 20 +119.8831897046744 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +226.7230777984067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081215 + 9 +$TDUCREATE + 40 +2458953.342747882 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +815 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +364.0075428040763 + 22 +190.6263969374385 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +137.2622969394196 + 41 +3.927943214723045 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +44F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 12 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5DA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5E8 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D2 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5F5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D3 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +604 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +613 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D5 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +622 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D6 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +631 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D7 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +640 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +64F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D9 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +65E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D10 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +66D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D11 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5E5 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +5DB +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +250.0805179464939 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5DC +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +250.0805179464939 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5DD +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 11 +251.3305179464939 + 21 +206.2065230380077 + 31 +0.0 + 0 +LINE + 5 +5DE +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +224.2330777984067 + 30 +0.0 + 11 +251.3305179464939 + 21 +220.3731897046744 + 31 +0.0 + 0 +SOLID + 5 +5DF +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +251.7471846131606 + 20 +224.2330777984067 + 30 +0.0 + 11 +250.9138512798272 + 21 +224.2330777984067 + 31 +0.0 + 12 +251.3305179464939 + 22 +226.7330777984067 + 32 +0.0 + 13 +251.3305179464939 + 23 +226.7330777984067 + 33 +0.0 + 0 +SOLID + 5 +5E0 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.9138512798272 + 20 +220.3731897046744 + 30 +0.0 + 11 +251.7471846131606 + 21 +220.3731897046744 + 31 +0.0 + 12 +251.3305179464939 + 22 +217.8731897046744 + 32 +0.0 + 13 +251.3305179464939 + 23 +217.8731897046744 + 33 +0.0 + 0 +MTEXT + 5 +5E1 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +249.2471846131606 + 20 +210.789856371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +8,86 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5E2 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +226.7330777984067 + 30 +0.0 + 0 +POINT + 5 +5E3 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +217.8731897046744 + 30 +0.0 + 0 +POINT + 5 +5E4 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 0 +ENDBLK + 5 +5E6 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F2 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D2 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D2 + 1 + + 0 +LINE + 5 +5E9 +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.3605926238276 + 20 +173.9281897046744 + 30 +0.0 + 11 +248.3605926238276 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EA +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +267.2406929186844 + 20 +173.9281897046744 + 30 +0.0 + 11 +267.2406929186844 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EB +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +250.8605926238276 + 20 +173.9046342328305 + 30 +0.0 + 11 +264.7406929186844 + 21 +173.9046342328305 + 31 +0.0 + 0 +SOLID + 5 +5EC +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.8605926238276 + 20 +174.3213008994971 + 30 +0.0 + 11 +250.8605926238276 + 21 +173.4879675661638 + 31 +0.0 + 12 +248.3605926238276 + 22 +173.9046342328305 + 32 +0.0 + 13 +248.3605926238276 + 23 +173.9046342328305 + 33 +0.0 + 0 +SOLID + 5 +5ED +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +264.7406929186844 + 20 +173.4879675661638 + 30 +0.0 + 11 +264.7406929186844 + 21 +174.3213008994971 + 31 +0.0 + 12 +267.2406929186844 + 22 +173.9046342328305 + 32 +0.0 + 13 +267.2406929186844 + 23 +173.9046342328305 + 33 +0.0 + 0 +MTEXT + 5 +5EE +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +257.800642771256 + 20 +175.9879675661638 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +18,88 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5EF +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F0 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F1 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.9046342328305 + 30 +0.0 + 0 +ENDBLK + 5 +5F3 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +601 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D3 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D3 + 1 + + 0 +LINE + 5 +5F6 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.3756897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +174.3756897046744 + 31 +0.0 + 0 +LINE + 5 +5F7 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.2306897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5F8 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +158.8973563713411 + 31 +0.0 + 0 +LINE + 5 +5F9 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +174.3756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5FA +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +176.8756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +179.3756897046744 + 31 +0.0 + 0 +SOLID + 5 +5FB +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.564617507351 + 20 +176.8756897046744 + 30 +0.0 + 11 +250.3979508406843 + 21 +176.8756897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +174.3756897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +174.3756897046744 + 33 +0.0 + 0 +SOLID + 5 +5FC +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.3979508406843 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.564617507351 + 21 +169.7306897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +172.2306897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +172.2306897046744 + 33 +0.0 + 0 +MTEXT + 5 +5FD +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.8979508406843 + 20 +163.0640230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,15 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5FE +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.3756897046744 + 30 +0.0 + 0 +POINT + 5 +5FF +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.2306897046744 + 30 +0.0 + 0 +POINT + 5 +600 +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9812841740176 + 20 +172.2306897046744 + 30 +0.0 + 0 +ENDBLK + 5 +602 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +610 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D4 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D4 + 1 + + 0 +LINE + 5 +605 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +606 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +607 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +608 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +609 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +60A +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.9046858165279 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.7380191498613 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +60B +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.7380191498613 + 20 +169.9781897046744 + 30 +0.0 + 11 +265.9046858165279 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +60C +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.2380191498613 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +60D +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +60E +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +60F +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.3213524831946 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +611 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +61F +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D5 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D5 + 1 + + 0 +LINE + 5 +614 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +615 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +616 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +617 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +618 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +619 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.5319856654407 + 20 +177.1974397046744 + 30 +0.0 + 11 +250.365318998774 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +61A +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.365318998774 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.5319856654407 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +61B +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.865318998774 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +61C +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +61D +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +61E +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9486523321074 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +620 +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +62E +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D6 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D6 + 1 + + 0 +LINE + 5 +623 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +624 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +625 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +626 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +627 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +628 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0456228775738 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.8789562109072 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +629 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.8789562109072 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.0456228775738 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +62A +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.3789562109072 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +62B +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +62C +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +62D +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.4622895442405 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +62F +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +63D +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D7 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D7 + 1 + + 0 +LINE + 5 +632 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +633 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +634 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +635 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +636 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +637 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +248.91800703788 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.7513403712133 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +638 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.7513403712133 + 20 +169.4089397046744 + 30 +0.0 + 11 +248.91800703788 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +639 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.2513403712133 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +63A +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +63B +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +63C +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.3346737045466 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +63E +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +64C +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D8 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D8 + 1 + + 0 +LINE + 5 +641 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.6231897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +174.6231897046744 + 31 +0.0 + 0 +LINE + 5 +642 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +171.9831897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +643 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +157.8165230380078 + 31 +0.0 + 0 +LINE + 5 +644 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +174.6231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +645 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +177.1231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +179.6231897046744 + 31 +0.0 + 0 +SOLID + 5 +646 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.2419997502657 + 20 +177.1231897046744 + 30 +0.0 + 11 +266.0753330835991 + 21 +177.1231897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +174.6231897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +174.6231897046744 + 33 +0.0 + 0 +SOLID + 5 +647 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0753330835991 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.2419997502657 + 21 +169.4831897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +171.9831897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +171.9831897046744 + 33 +0.0 + 0 +MTEXT + 5 +648 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +263.575333083599 + 20 +162.3998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,64 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +649 +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.6231897046744 + 30 +0.0 + 0 +POINT + 5 +64A +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +171.9831897046744 + 30 +0.0 + 0 +POINT + 5 +64B +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +265.6586664169324 + 20 +171.9831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +64D +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +65B +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D9 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D9 + 1 + + 0 +LINE + 5 +650 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.5580147046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +174.5580147046744 + 31 +0.0 + 0 +LINE + 5 +651 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.0483647046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +652 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +158.715031371341 + 31 +0.0 + 0 +LINE + 5 +653 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +174.5580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +654 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +177.0580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +179.5580147046744 + 31 +0.0 + 0 +SOLID + 5 +655 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.2243088051252 + 20 +177.0580147046744 + 30 +0.0 + 11 +250.0576421384585 + 21 +177.0580147046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +174.5580147046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +174.5580147046744 + 33 +0.0 + 0 +SOLID + 5 +656 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.0576421384585 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.2243088051252 + 21 +169.5483647046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +172.0483647046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +172.0483647046744 + 33 +0.0 + 0 +MTEXT + 5 +657 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.5576421384585 + 20 +162.8816980380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +658 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.5580147046744 + 30 +0.0 + 0 +POINT + 5 +659 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.0483647046744 + 30 +0.0 + 0 +POINT + 5 +65A +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.6409754717919 + 20 +172.0483647046744 + 30 +0.0 + 0 +ENDBLK + 5 +65C +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +66A +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D10 + 1 + + 0 +LINE + 5 +65F +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.5571897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +174.5571897046744 + 31 +0.0 + 0 +LINE + 5 +660 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.0491897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +661 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +158.715856371341 + 31 +0.0 + 0 +LINE + 5 +662 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +174.5571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +663 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +177.0571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +179.5571897046744 + 31 +0.0 + 0 +SOLID + 5 +664 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.2558139753072 + 20 +177.0571897046744 + 30 +0.0 + 11 +267.0891473086406 + 21 +177.0571897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +174.5571897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +174.5571897046744 + 33 +0.0 + 0 +SOLID + 5 +665 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +267.0891473086406 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.2558139753072 + 21 +169.5491897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +172.0491897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +172.0491897046744 + 33 +0.0 + 0 +MTEXT + 5 +666 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.5891473086406 + 20 +162.8825230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +667 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.5571897046744 + 30 +0.0 + 0 +POINT + 5 +668 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.0491897046744 + 30 +0.0 + 0 +POINT + 5 +669 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.6724806419739 + 20 +172.0491897046744 + 30 +0.0 + 0 +ENDBLK + 5 +66B +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +678 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D11 + 1 + + 0 +LINE + 5 +66E +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +242.6711111102731 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +66F +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +242.6711111102731 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +670 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 11 +243.9211111102731 + 21 +108.2165230380077 + 31 +0.0 + 0 +LINE + 5 +671 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.9211111102731 + 21 +122.3831897046744 + 31 +0.0 + 0 +SOLID + 5 +672 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +244.3377777769397 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.5044444436064 + 21 +126.2230777984067 + 31 +0.0 + 12 +243.9211111102731 + 22 +128.7230777984067 + 32 +0.0 + 13 +243.9211111102731 + 23 +128.7230777984067 + 33 +0.0 + 0 +SOLID + 5 +673 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +243.5044444436064 + 20 +122.3831897046744 + 30 +0.0 + 11 +244.3377777769397 + 21 +122.3831897046744 + 31 +0.0 + 12 +243.9211111102731 + 22 +119.8831897046744 + 32 +0.0 + 13 +243.9211111102731 + 23 +119.8831897046744 + 33 +0.0 + 0 +MTEXT + 5 +674 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +241.8377777769397 + 20 +112.7998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +8,84 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +675 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +128.7230777984067 + 30 +0.0 + 0 +POINT + 5 +676 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +119.8831897046744 + 30 +0.0 + 0 +POINT + 5 +677 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +679 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +67C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +67D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +680 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +681 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +682 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +683 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +684 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +685 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +686 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +687 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +688 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +689 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +68C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +68D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +690 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +691 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +692 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +693 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +694 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +695 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +696 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +697 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +698 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +699 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +69A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +69C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +69D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +69E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +700 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +701 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +702 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +703 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +704 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +705 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +706 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +707 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +708 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +709 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +70C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +70D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +710 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +711 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +712 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +713 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +714 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +715 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +716 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +717 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +718 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +719 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +71C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +71D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +720 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +721 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +722 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +723 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +724 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +725 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +726 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +727 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +728 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +729 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +72A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +72C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +72D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +72E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +730 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +731 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +732 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +733 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +734 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +735 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +736 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +737 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +738 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +739 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +73C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +73D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +740 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +741 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +742 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +743 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +744 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +745 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +746 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +747 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +748 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +749 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +74B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +74C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +74D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +74F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +750 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +751 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +752 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +753 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +754 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +755 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +756 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +757 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +758 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +759 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +75C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +75D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +760 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +761 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +762 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +763 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +764 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +765 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +766 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +767 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +768 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +769 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +76C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +76D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +770 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +771 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +772 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +773 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +774 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +775 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +776 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +777 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +778 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +779 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +77C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +77D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +780 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +781 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +782 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +783 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +784 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +785 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +786 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +787 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +788 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +789 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +78C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +78D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +790 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +791 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +792 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +793 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +794 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +795 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +796 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +797 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +798 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +799 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +79C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +79D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +800 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +801 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219.par b/LaiPuLaser/TempMarkData/E219.par new file mode 100644 index 0000000..557521d Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219.par differ diff --git a/LaiPuLaser/TempMarkData/E219.txt b/LaiPuLaser/TempMarkData/E219.txt new file mode 100644 index 0000000..53f9aa8 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219.txt @@ -0,0 +1,8 @@ +1 +67.6 +-1.66006 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/TempMarkData/E219R-A1-E-sheet-A(单只加工).dxf b/LaiPuLaser/TempMarkData/E219R-A1-E-sheet-A(单只加工).dxf new file mode 100644 index 0000000..253acbf --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219R-A1-E-sheet-A(单只加工).dxf @@ -0,0 +1,51450 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +jay + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-180.4835999999986 + 20 +-142.7430682648473 + 30 +0.0 + 9 +$EXTMAX + 10 +180.7657517464074 + 20 +113.4478117351528 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +1.75 + 9 +$DIMEXO + 40 +0.0 + 9 +$DIMDLI + 40 +1.0 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.3 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +1.75 + 9 +$DIMCEN + 40 +0.0 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 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 + 1 + 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 + 1 + 9 +$DIMCLRE + 70 + 1 + 9 +$DIMCLRT + 70 + 4 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.3 + 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 + 2 + 9 +$DIMTDEC + 70 + 2 + 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 + -1 + 9 +$DIMLWE + 70 + -1 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.5 + 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 +2453735.437114791 + 9 +$TDUCREATE + 40 +2453735.103781458 + 9 +$TDUPDATE + 40 +2458957.159486562 + 9 +$TDUUPDATE + 40 +2458956.826153229 + 9 +$TDINDWG + 40 +2.0459246759 + 9 +$TDUSRTIMER + 40 +2.0459246759 + 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 +372B1 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PEXTMAX + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + 30 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 1 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 +XIXI.ctb + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{B16A767A-1353-46BE-898A-4D2085E8C8E7} + 9 +$VERSIONGUID + 2 +{82EEF356-5BEB-4065-B15F-E56CCBE09745} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 8 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 8 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DIMASSOC + 2 +AcDbDimAssoc + 3 +"AcDbDimAssoc|Product Desc: AcDim ARX App For Dimension|Company: Autodesk, Inc.|WEB Address: www.autodesk.com" + 90 + 0 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 0 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 26 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 33 +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 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 + 1152 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACAD_EVALUATION_GRAPH + 2 +AcDbEvalGraph + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACAECUSTOBJ + 2 +AcAeEditorObj + 3 +AcAeEditorObj + 90 + 1024 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION + 2 +AcDbDynamicBlockPurgePreventer + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +AEC_REFEDIT_STATUS_TRACKER + 2 +AecDbRefEditStatusTracker + 3 +AecArchBase70|Product Desc: Autodesk Architectural Desktop 2007 |Company: Autodesk,Inc. |WEB Address: www.autodesk.com + 90 + 129 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +NPOCOLLECTION + 2 +AcDbImpNonPersistentObjectsCollection + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +EXACXREFPANELOBJECT + 2 +ExAcXREFPanelObject + 3 +EXAC_ESW + 90 + 1025 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDB_MTEXTOBJECTCONTEXTDATA_CLASS + 2 +AcDbMTextObjectContextData + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +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 +ACARRAYJIGENTITY + 2 +AcArrayJigEntity + 3 +ACAD_ARRAY + 90 + 129 + 91 + 0 +280 + 0 +281 + 1 + 0 +CLASS + 1 +ACDBASSOCNETWORK + 2 +AcDbAssocNetwork + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 2 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCACTION + 2 +AcDbAssocAction + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 2 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCARRAYACTIONBODY + 2 +AcDbAssocArrayActionBody + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 2 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCVERTEXACTIONPARAM + 2 +AcDbAssocVertexActionParam + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 6 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCDEPENDENCY + 2 +AcDbAssocDependency + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 6 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCARRAYRECTANGULARPARAMETERS + 2 +AcDbAssocArrayRectangularParameters + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBASSOCENTITYCLONEACTIONBODY + 2 +AcDbAssocEntityCloneActionBody + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SOLID_BACKGROUND + 2 +AcDbSolidBackground + 3 +SCENEOE + 90 + 4095 + 91 + 0 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +102 +{ACAD_XDICTIONARY +360 +14030 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +VPORT + 5 +372B0 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-39.06396966799811 + 22 +-15.91600165666176 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +148.634879105244 + 41 +1.656593406593406 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 10000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +25936 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 + 0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 + 65 + 73 + 4 + 40 +50.8 + 49 +31.75 + 74 + 0 + 49 +-6.349999999999999 + 74 + 0 + 49 +6.349999999999999 + 74 + 0 + 49 +-6.349999999999999 + 74 + 0 + 0 +LTYPE + 5 +283DF +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ACAD_ISO07W100 + 70 + 0 + 3 +ISO dot . . . . . . . . . . . . . . . . . . . . + 72 + 65 + 73 + 2 + 40 +3.0 + 49 +0.0 + 74 + 0 + 49 +-3.0 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 12 + 0 +LAYER + 5 +10 +102 +{ACAD_XDICTIONARY +360 +14018 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +AE +102 +{ACAD_XDICTIONARY +360 +1401A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +BOM + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +5B7 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F + 0 +LAYER + 5 +9522 +102 +{ACAD_XDICTIONARY +360 +14020 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Outline + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 30 +390 +F + 0 +LAYER + 5 +25937 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Center + 70 + 0 + 62 + 1 + 6 +CENTER +370 + -3 +390 +F + 0 +LAYER + 5 +25938 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +PCB + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +F +1001 +AcAecLayerStandard +1000 + +1000 + + 0 +LAYER + 5 +283E0 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Bhatch + 70 + 0 + 62 + 50 + 6 +Continuous +370 + -3 +390 +F +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 50 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +29571 +102 +{ACAD_XDICTIONARY +360 +29572 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +fpc + 70 + 0 + 62 + 32 + 6 +Continuous +370 + -3 +390 +F +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 32 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +29A85 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +dim + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +36D4F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + 4 + 6 +Continuous +370 + 9 +390 +F + 0 +LAYER + 5 +36D50 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ2 + 70 + 0 + 62 + 2 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +370A3 +102 +{ACAD_XDICTIONARY +360 +370A4 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 @ 1 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +1001 +AcadAnnotativeDecomposition +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 +gbcbig.shx + 0 +STYLE + 5 +AF +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STYLE1 + 70 + 0 + 40 +0.0 + 41 +0.9 + 50 +0.0 + 71 + 0 + 42 +2.0 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +STYLE + 5 +24DE0 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +1 + 70 + 0 + 40 +0.0 + 41 +0.8 + 50 +0.0 + 71 + 0 + 42 +1.199999999999999 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 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 + 22 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +14A9 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +DCO15 + 70 + 0 + 0 +APPID + 5 +13E43 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_EXEMPT_FROM_CAD_STANDARDS + 70 + 0 + 0 +APPID + 5 +13E97 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockGUID + 70 + 0 + 0 +APPID + 5 +1405D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_MLEADERVER + 70 + 0 + 0 +APPID + 5 +14105 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +APPID + 5 +1426B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAUTHENVIRON + 70 + 0 + 0 +APPID + 5 +1426E +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockTrueName + 70 + 0 + 0 +APPID + 5 +1A455 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJOGGED_JOGANGLE_SYMBOL + 70 + 0 + 0 +APPID + 5 +1C3AF +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMRADIAL_EXTENSION + 70 + 0 + 0 +APPID + 5 +1C3B0 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJAG + 70 + 0 + 0 +APPID + 5 +1C3B1 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMBREAK + 70 + 0 + 0 +APPID + 5 +1C3B2 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMTALN + 70 + 0 + 0 +APPID + 5 +25939 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadStringInfo + 70 + 0 + 0 +APPID + 5 +2593A +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_NAV_VCDISPLAY + 70 + 0 + 0 +APPID + 5 +28268 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +APPID + 5 +2A00A +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnotative + 70 + 0 + 0 +APPID + 5 +2A9F4 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnotativeDecomposition + 70 + 0 + 0 +APPID + 5 +35F66 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_PSEXT + 70 + 0 + 0 +APPID + 5 +361D0 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +GradientColor1ACI + 70 + 0 + 0 +APPID + 5 +361D1 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +GradientColor2ACI + 70 + 0 + 0 +APPID + 5 +36A9B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnoMonitorAlertIconDisabled + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 71 + 1 +340 +27 + 0 +DIMSTYLE +105 +27 +102 +{ACAD_REACTORS +330 +2B461 +330 +2B7B4 +330 +2B901 +330 +2B91B +330 +34C30 +330 +34C3E +330 +34C4E +330 +2B4AC +330 +36A2E +330 +36A3E +330 +36D67 +330 +36D6A +330 +36D6B +102 +} +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +36D51 +102 +{ACAD_REACTORS +330 +36D70 +330 +36E48 +330 +36FED +102 +} +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +STANDARD$0 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +0.6 +141 +2.0 +146 +0.6 +147 +0.2 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +36D07 + 0 +DIMSTYLE +105 +36D52 +102 +{ACAD_REACTORS +330 +36D6D +102 +} +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard$3 + 70 + 0 + 41 +0.6 + 42 +0.0 + 43 +1.0 + 44 +0.2 +140 +0.6 +141 +0.0 +147 +0.1 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 33 + 0 +BLOCK_RECORD + 5 +1F +102 +{ACAD_XDICTIONARY +360 +227 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +58 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +59 + 0 +BLOCK_RECORD + 5 +5D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +5E + 0 +BLOCK_RECORD + 5 +98 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_INFO +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF00FFFFFF +310 +FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF000000FFFFFFFFFF00FFFFFF +310 +FFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +19A +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +A3 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_BOM +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +2A3 +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +1AD +102 +{ACAD_XDICTIONARY +360 +418 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_TITLE +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFAFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000000000000000000000 +310 +0000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000 +310 +000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF000000000000000000 +310 +00000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF0000000000000000 +310 +0000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +20F +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +18F3 +102 +{ACAD_XDICTIONARY +360 +14AE8 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +tolerance +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000FF0000000000000000000000000000FFFFFFFFFF0000 +310 +FFFF000000FF00FF00FFFF00000000000000000000000000000000FFFF000000FFFF000000FF00FF0000FFFF000000000000000000000000000000000000000000FF000000FF0000FF00FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00FF00000000000000FFFFFFFFFF0000000000000000000000000000FF00FF00FF +310 +000000FFFFFF0000FFFF00FFFF000000000000000000000000000000FFFFFF00FF0000FFFFFF000000FF00FFFF0000000000000000000000000000000000000000000000FF00000000FF00FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00FF000000000000000000FFFFFFFFFFFF00000000000000000000000000FF00FF0000000000FFFFFF0000FFFF0000FFFF0000000000000000000000000000FF00 +310 +FF00000000FFFFFF000000FFFFFFFFFF00000000000000000000000000000000000000000000FF0000000000FF00FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF00FFFF00000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000FF00FFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFFFFFFFF0000FF000000000000FF00FF00FFFF00FFFF00FFFF00FFFFFFFFFFFF00FFFF000000FF000000000000FF00FF00FFFF00FF0000FF00FFFFFFFFFFFFFFFFFF00000000FF000000000000FFFFFFFFFFFF +310 +00FFFFFFFFFF00FF00FF00FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +1907 +102 +} +1001 +AcDbDynamicBlockGUID +1000 +{9CD6ACD9-AEEA-4B27-9C9E-D1E4C1462BDB} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +24ADB +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C15043304 +340 +0 +102 +{BLKREFS +331 +24AF1 +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +283CA +102 +{ACAD_XDICTIONARY +360 +283CB +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ARROW MARK +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FBFBFBFBFBFBFBFBFBFBFBFB +310 +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB00FA00000000FFFFFF00000000FAFA00000000FFFFFF00000000FFFAFB0000FB00FA000000FFFFFFFFFF0000FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FFFFFFFFFFFF +310 +0000FFFAFAFF00FFFFFFFFFFFFFFFF0000FAFB0000FB00FA0000FFFFFFFFFFFFFF00FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FF0000FFFFFF000000FAFA000000000000000000000000FAFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB000000000000000000 +310 +00000000000000000000F9F900000000000000FB0000FB000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FB00000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +283E8 +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2B3FE +102 +{ACAD_XDICTIONARY +360 +2B400 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C019D3CDB +340 +0 +102 +{BLKREFS +331 +363CF +331 +363D5 +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2B405 +102 +{ACAD_XDICTIONARY +360 +2B40D +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6704505C +340 +0 +102 +{BLKREFS +331 +363D0 +331 +363D4 +102 +} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2B462 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D9 +340 +0 + 0 +BLOCK_RECORD + 5 +2B4AD +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D10 +340 +0 + 0 +BLOCK_RECORD + 5 +2B7B5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D11 +340 +0 + 0 +BLOCK_RECORD + 5 +2B902 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D12 +340 +0 + 0 +BLOCK_RECORD + 5 +2B91C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D13 +340 +0 + 0 +BLOCK_RECORD + 5 +34C31 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D14 +340 +0 + 0 +BLOCK_RECORD + 5 +34C3F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D15 +340 +0 + 0 +BLOCK_RECORD + 5 +34C4F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D16 +340 +0 + 0 +BLOCK_RECORD + 5 +36766 +102 +{ACAD_XDICTIONARY +360 +36CBD +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C35C70825 +340 +0 +102 +{BLKREFS +331 +36C18 +331 +36C19 +331 +36C1A +331 +36C1B +331 +36C1C +331 +36C1D +331 +36C1E +331 +36C1F +331 +36C20 +331 +36C21 +331 +36C22 +331 +36C23 +331 +36C24 +331 +36C25 +331 +36C26 +331 +36C27 +331 +36C28 +331 +36C29 +331 +36C2A +331 +36C2B +331 +36C2C +331 +36C2D +331 +36C2E +331 +36C2F +331 +36C30 +331 +36C31 +331 +36C32 +331 +36C33 +331 +36C34 +331 +36C35 +331 +36C36 +331 +36C37 +331 +36C38 +331 +36C39 +331 +36C3A +331 +36C3B +331 +36C3C +331 +36C3D +331 +36C3E +331 +36C3F +331 +36C40 +331 +36C41 +331 +36C42 +331 +36C43 +331 +36C44 +331 +36C45 +331 +36C46 +331 +36C47 +331 +36C48 +331 +36C49 +331 +36C4A +331 +36C4B +331 +36C4C +331 +36C4D +331 +36C4E +331 +36C4F +331 +36C50 +331 +36C51 +331 +36C52 +331 +36C53 +331 +36C54 +331 +36C55 +331 +36C56 +331 +36C57 +331 +36C58 +331 +36C59 +331 +36C5A +331 +36C5B +331 +36C5C +331 +36C5D +331 +36C5E +331 +36C5F +331 +36C60 +331 +36C61 +331 +36C62 +331 +36C63 +331 +36C64 +331 +36C65 +331 +36C66 +331 +36C67 +331 +36C68 +331 +36C69 +331 +36C6A +331 +36C6B +331 +36C6C +331 +36C6D +331 +36C6E +331 +36C6F +331 +36C70 +331 +36C71 +331 +36C72 +331 +36C73 +331 +36C74 +331 +36C75 +331 +36C76 +331 +36C77 +331 +36C78 +331 +36C79 +331 +36C7A +102 +} +1001 +AcDbDynamicBlockGUID +1000 +{1F2B53DF-195D-436F-AAAA-D827ABCAE2FF} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +369EC +102 +{ACAD_REACTORS +330 +369FB +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U18 +340 +0 +102 +{BLKREFS +331 +369FF +331 +36A02 +331 +36A05 +331 +36A08 +331 +36A0B +331 +36A0C +331 +36A0D +331 +36A0E +331 +36A0F +102 +} + 0 +BLOCK_RECORD + 5 +369EF +102 +{ACAD_XDICTIONARY +360 +36B35 +102 +} +102 +{ACAD_REACTORS +330 +369FA +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U19 +340 +0 +102 +{BLKREFS +331 +369F2 +102 +} + 0 +BLOCK_RECORD + 5 +36A11 +102 +{ACAD_REACTORS +330 +36A27 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U20 +340 +0 +102 +{BLKREFS +331 +36A1A +331 +36A1B +331 +36A1C +331 +36A1D +331 +36A1E +331 +36A1F +331 +36A20 +331 +36A21 +331 +36A22 +102 +} + 0 +BLOCK_RECORD + 5 +36A18 +102 +{ACAD_XDICTIONARY +360 +36B38 +102 +} +102 +{ACAD_REACTORS +330 +36A26 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U21 +340 +0 +102 +{BLKREFS +331 +36A10 +102 +} + 0 +BLOCK_RECORD + 5 +36A2F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D22 +340 +0 + 0 +BLOCK_RECORD + 5 +36A3F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D23 +340 +0 + 0 +BLOCK_RECORD + 5 +36D07 +102 +{ACAD_XDICTIONARY +360 +36D08 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 0 +BLOCK_RECORD + 5 +36D71 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D25 +340 +0 + 0 +BLOCK_RECORD + 5 +36D7E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D26 +340 +0 + 0 +BLOCK_RECORD + 5 +36D8B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D27 +340 +0 + 0 +BLOCK_RECORD + 5 +36D99 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D28 +340 +0 + 0 +BLOCK_RECORD + 5 +36DBA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D29 +340 +0 + 0 +BLOCK_RECORD + 5 +36E49 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D30 +340 +0 + 0 +BLOCK_RECORD + 5 +36FEE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D31 +340 +0 + 0 +BLOCK_RECORD + 5 +37164 +102 +{ACAD_XDICTIONARY +360 +37165 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C39296DF6 +340 +0 +102 +{BLKREFS +331 +37186 +102 +} + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5A +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +5B +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F +330 +5D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +60 +330 +5D +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +99 +330 +98 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +CAD_INFO + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_INFO + 1 + + 0 +ATTDEF + 5 +9A +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-72.75800251247528 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMWIDTH + 2 +BOMWIDTH + 70 + 9 + 0 +ATTDEF + 5 +9B +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-56.23436060281256 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMHEIGHT + 2 +BOMHEIGHT + 70 + 9 + 0 +ATTDEF + 5 +9C +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-37.35019754088444 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-172,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS2 + 2 +BOMSTARTPOS2 + 70 + 9 + 0 +ATTDEF + 5 +9D +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-17.9939314797416 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-258,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS3 + 2 +BOMSTARTPOS3 + 70 + 9 + 0 +ATTDEF + 5 +9E +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-19.17419359492214 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSECONDLINE + 2 +BOMSECONDLINE + 70 + 9 + 0 +ATTDEF + 5 +9F +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-73.57758879501171 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMTHIRDLINE + 2 +BOMTHIRDLINE + 70 + 9 + 0 +ATTDEF + 5 +A0 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-54.34594552785802 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +PDMUPDATE + 2 +PDMUPDATE + 70 + 9 + 0 +ATTDEF + 5 +A1 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-37.58625057953987 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS + 2 +BOMSTARTPOS + 70 + 9 + 0 +ENDBLK + 5 +A2 +330 +98 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +A4 +330 +A3 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +CAD_BOM + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_BOM + 1 + + 0 +LWPOLYLINE + 5 +296 +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +7.92266504093115 + 20 +5.999999999999992 + 10 +7.92266504093115 + 20 +-0.0000000000000142 + 0 +LWPOLYLINE + 5 +297 +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +31.92266504093115 + 20 +5.999999999999992 + 10 +31.92266504093115 + 20 +-0.0000000000000142 + 0 +LWPOLYLINE + 5 +298 +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +39.92266504093115 + 20 +5.999999999999992 + 10 +39.92266504093115 + 20 +-0.0000000000000142 + 0 +ATTDEF + 5 +299 +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +3.768516320804707 + 20 +3.091130809550094 + 30 +0.0 + 40 +1.8 + 1 + + 72 + 4 + 11 +3.768516320804707 + 21 +3.091130809550094 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +ATTDEF + 5 +29A +330 +A3 +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +10.29814557068013 + 20 +2.307237864072746 + 30 +0.0 + 40 +1.8 + 1 + +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +ATTDEF + 5 +29B +330 +A3 +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +36.03643627252728 + 20 +2.145288592350524 + 30 +0.0 + 40 +1.8 + 1 + + 72 + 1 + 11 +36.03643627252728 + 21 +2.145288592350524 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +ATTDEF + 5 +29C +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +42.60422045577056 + 20 +2.124075603955546 + 30 +0.0 + 40 +1.8 + 1 + + 41 +0.7 +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +LINE + 5 +29D +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbLine + 10 +0.0 + 20 +5.999999999999992 + 30 +0.0 + 11 +109.0474731916058 + 21 +5.999999999999936 + 31 +0.0 + 0 +LINE + 5 +29E +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbLine + 10 +109.0474731916058 + 20 +5.999999999999936 + 30 +0.0 + 11 +109.0474731916058 + 21 +-0.0000000000000711 + 31 +0.0 + 0 +LINE + 5 +29F +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbLine + 10 +109.0474731916058 + 20 +-0.0000000000000711 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +A3 +100 +AcDbEntity + 8 +BOM +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +5.999999999999992 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +A3 +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +86.44972068186403 + 20 +5.999999999999964 + 30 +0.0 + 11 +86.44972068186403 + 21 +-0.0000000000000568 + 31 +0.0 + 0 +ATTDEF + 5 +2A2 +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +86.91609108889924 + 20 +1.939485363258803 + 30 +0.0 + 40 +1.8 + 1 + + 41 +0.5 +100 +AcDbAttributeDefinition + 3 +BOM + 2 +BOM + 70 + 0 + 0 +ENDBLK + 5 +AD +330 +A3 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1AE +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +CAD_TITLE + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_TITLE + 1 + + 0 +LWPOLYLINE + 5 +1B0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.5 + 10 +-282.0 + 20 +-0.0000000000000284 + 10 +-0.0000000000000284 + 20 +-0.0000000000000284 + 10 +-0.0000000000000284 + 20 +199.9999999999999 + 10 +-282.0 + 20 +199.9999999999999 + 0 +LWPOLYLINE + 5 +1B1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.3 + 10 +-70.00000000000001 + 20 +-0.0000000000000284 + 10 +-70.00000000000001 + 20 +32.0 + 10 +-0.0000000000000284 + 20 +32.0 + 0 +LWPOLYLINE + 5 +1B2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.00000000000001 + 20 +5.0 + 10 +-0.0000000000001421 + 20 +5.0 + 0 +TEXT + 5 +1B3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-34.09031121823912 + 20 +1.896916662222395 + 30 +0.0 + 40 +1.617047900185109 + 1 +UNIT mm +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +5.0 + 10 +-143.0 + 20 +5.0 + 0 +TEXT + 5 +1B5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-53.3920054008657 + 20 +1.86723612909536 + 30 +0.0 + 40 +1.617047900185109 + 1 +NOT IN SCALE +100 +AcDbText + 0 +TEXT + 5 +1B6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous +100 +AcDbText + 10 +-68.60340283292327 + 20 +6.640564444717014 + 30 +0.0 + 40 +1.623435805721156 + 1 +CHKD +100 +AcDbText + 0 +TEXT + 5 +1B7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-68.56441300901328 + 20 +11.66131768742559 + 30 +0.0 + 40 +1.623435805721156 + 1 +DWN +100 +AcDbText + 0 +TEXT + 5 +1B8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-68.18041322794498 + 20 +21.86656214288637 + 30 +0.0 + 40 +1.623435805721156 + 1 +PRODUCT NO. +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-35.00000000000002 + 20 +-0.0000000000000284 + 10 +-34.99999999999989 + 20 +14.99999999999997 + 0 +LWPOLYLINE + 5 +1BA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-62.69660611920497 + 20 +2.559348690284423 + 10 +-61.47902926491406 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1BB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-69.78747883220072 + 20 +2.559348690284423 + 10 +-68.78449039065903 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1BC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-63.50832402206552 + 20 +2.559348690284423 + 10 +-63.1024650706354 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1BD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-68.37863143922894 + 20 +2.559348690284423 + 10 +-67.97277248779848 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1BE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-67.56691353636828 + 20 +2.559348690284423 + 10 +-66.34933668207747 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1BF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.94347773064717 + 20 +2.559348690284423 + 10 +-65.53761877921691 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1C0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.13175982778651 + 20 +2.559348690284423 + 10 +-63.91418297349571 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1C1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.07317031348386 + 20 +2.559348690284423 + 10 +-60.6673113620534 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1C2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-60.26145241062341 + 20 +2.559348690284423 + 10 +-59.04387555633253 + 20 +2.559348690284423 + 0 +TEXT + 5 +1C3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-33.54913836335894 + 20 +6.732596412797803 + 30 +0.0 + 40 +1.623435805721156 + 1 +APPD +100 +AcDbText + 0 +TEXT + 5 +1C4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-33.52225570579925 + 20 +11.63142803396278 + 30 +0.0 + 40 +1.623435805721156 + 1 +DSN +100 +AcDbText + 0 +LWPOLYLINE + 5 +1C5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-67.50250254803441 + 20 +0.7021746622700676 + 10 +-67.50250254803441 + 20 +4.342154156640788 + 10 +-61.59694451279006 + 20 +3.75180541582408 + 10 +-61.59694451279006 + 20 +1.36689196474461 + 0 +LWPOLYLINE + 5 +1C6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520205 + 20 +3.557088282541158 + 10 +-57.58361782520205 + 20 +4.77466513683197 + 0 +CIRCLE + 5 +1C7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.58361782520205 + 20 +2.559348690284423 + 30 +0.0 + 40 +1.857174028014292 + 0 +CIRCLE + 5 +1C8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.58361782520205 + 20 +2.559348690284423 + 30 +0.0 + 40 +1.192456725539656 + 0 +LWPOLYLINE + 5 +1C9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.82629870204188 + 20 +2.559348690284423 + 10 +-56.60872184775077 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1CA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-58.63801660490199 + 20 +2.559348690284423 + 10 +-58.232157653472 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1CB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520205 + 20 +1.121934573959421 + 10 +-57.58361782520205 + 20 +2.339511428250318 + 0 +LWPOLYLINE + 5 +1CC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.29020620340861 + 20 +0.3102166710988854 + 10 +-57.29020620340861 + 20 +0.7160756225291465 + 0 +LWPOLYLINE + 5 +1CD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-55.39114499345998 + 20 +2.559348690284423 + 10 +-54.17356813916914 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1CE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-56.20286289632042 + 20 +2.559348690284423 + 10 +-55.79700394489011 + 20 +2.559348690284423 + 0 +LWPOLYLINE + 5 +1CF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520205 + 20 +2.745370379680636 + 10 +-57.58361782520205 + 20 +3.151229331110755 + 0 +TEXT + 5 +1D0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-25.0336736600657 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +DRAW NO. +100 +AcDbText + 0 +TEXT + 5 +1D1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-6.306361925780265 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +REV +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-8.000000000000028 + 20 +14.99999999999997 + 10 +-8.000000000000028 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1D3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.00000000000001 + 20 +10.0 + 10 +-0.0000000000001421 + 20 +10.0 + 0 +LWPOLYLINE + 5 +1D4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.00000000000001 + 20 +14.99999999999997 + 10 +-0.0000000000001421 + 20 +14.99999999999997 + 0 +LWPOLYLINE + 5 +1D6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-53.76082454905009 + 20 +0.0000000000001137 + 10 +-53.76082454905009 + 20 +5.0 + 0 +LWPOLYLINE + 5 +1D7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-20.79384049806642 + 20 +0.0000000000001137 + 10 +-20.79384049806642 + 20 +5.0 + 0 +TEXT + 5 +1D8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-20.09406221364954 + 20 +1.750249288090756 + 30 +0.0 + 40 +1.623435805721156 + 1 +SHEET: +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D9 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-282.0 + 20 +199.9999999999999 + 10 +-208.8975883652208 + 20 +199.9999999999999 + 10 +-208.8975883652208 + 20 +191.9999999999999 + 10 +-282.0 + 20 +191.9999999999999 + 0 +TEXT + 5 +1DA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-277.4171300080511 + 20 +195.107579051916 + 30 +0.0 + 40 +2.999999999999999 + 1 +ģͺţ + 7 +STYLE1 +100 +AcDbText + 0 +LWPOLYLINE + 5 +1E1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.00000000000001 + 20 +24.99999999999997 + 10 +-0.0000000000001421 + 20 +24.99999999999997 + 0 +LWPOLYLINE + 5 +1E2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.00000000000001 + 20 +24.69999999999997 + 10 +-0.0000000000001421 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-28.00000000000002 + 20 +14.99999999999997 + 10 +-28.00000000000002 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E4 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +-0.0000000000000284 + 10 +-86.00000000000003 + 20 +32.0 + 0 +LWPOLYLINE + 5 +1E5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +10.0 + 10 +-143.0 + 20 +10.0 + 0 +LWPOLYLINE + 5 +1E6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +14.99999999999997 + 10 +-143.0 + 20 +14.99999999999997 + 0 +LWPOLYLINE + 5 +1E7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +19.99999999999998 + 10 +-143.0 + 20 +19.99999999999998 + 0 +LWPOLYLINE + 5 +1E8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +24.99999999999997 + 10 +-143.0 + 20 +24.99999999999997 + 0 +LWPOLYLINE + 5 +1E9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +32.0 + 10 +-143.0 + 20 +32.0 + 0 +LWPOLYLINE + 5 +1EA +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +32.0 + 10 +-70.00000000000001 + 20 +32.0 + 0 +LWPOLYLINE + 5 +1EB +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.00000000000003 + 20 +24.99999999999997 + 10 +-70.00000000000001 + 20 +24.99999999999997 + 0 +LWPOLYLINE + 5 +1EC +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-143.0 + 20 +-0.0000000000000284 + 10 +-143.0 + 20 +32.0 + 0 +TEXT + 5 +1ED +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-142.6904661770419 + 20 +1.808681101476381 + 30 +0.0 + 40 +1.808288085995909 + 1 +NO. +100 +AcDbText + 0 +TEXT + 5 +1EE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-125.5555864158865 + 20 +1.53042838818429 + 30 +0.0 + 40 +1.808288085995909 + 1 +CONTENT +100 +AcDbText + 0 +TEXT + 5 +1EF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-97.46423430685107 + 20 +1.556588360975979 + 30 +0.0 + 40 +1.808288085995909 + 1 +DATE +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F0 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6548477006348 + 20 +20.49288531911981 + 10 +-138.6548477006348 + 20 +20.49288531911981 + 10 +-140.6548477006349 + 20 +24.19288531911983 + 0 +LWPOLYLINE + 5 +1F1 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.7072592865967 + 20 +15.73109000275175 + 10 +-138.7072592865967 + 20 +15.73109000275175 + 10 +-140.7072592865967 + 20 +19.43109000275174 + 0 +LWPOLYLINE + 5 +1F2 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +10.66462713107123 + 10 +-138.6407309650367 + 20 +10.66462713107123 + 10 +-140.6407309650367 + 20 +14.36462713107121 + 0 +LWPOLYLINE + 5 +1F3 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +5.664627131071227 + 10 +-138.6407309650367 + 20 +5.664627131071227 + 10 +-140.6407309650367 + 20 +9.364627131071216 + 0 +TEXT + 5 +1F4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +-120.6946939983357 + 20 +27.05146599035767 + 30 +0.0 + 40 +2.644621325769017 + 1 +AMEND +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F5 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.9999987885299 + 20 +0.0000004531573978 + 10 +-101.9999987885299 + 20 +25.00000045315741 + 0 +LINE + 5 +1F6 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-138.0 + 20 +24.99999999999997 + 30 +0.0 + 11 +-138.0 + 21 +-0.0000000000000284 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +100 +AcDbLine + 10 +-86.00000000000003 + 20 +19.99999999999998 + 30 +0.0 + 11 +-70.00000000000001 + 21 +19.99999999999998 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +100 +AcDbLine + 10 +-86.00000000000003 + 20 +10.0 + 30 +0.0 + 11 +-70.00000000000001 + 21 +10.0 + 31 +0.0 + 0 +ATTDEF + 5 +1F9 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +-79.09760034555725 + 20 +27.07756872650082 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-79.09760034555725 + 21 +27.07756872650082 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +ATTDEF + 5 +1FA +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +-65.25693255795717 + 20 +16.40895482215454 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +ͺ + 2 + + 70 + 0 + 0 +ATTDEF + 5 +1FB +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +-17.76046734238673 + 20 +16.40895482215454 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-17.76046734238673 + 21 +16.40895482215454 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +ͼ + 2 +ͼ + 70 + 0 + 0 +ATTDEF + 5 +1FC +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +-3.633452652996908 + 20 +16.40893286185853 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-3.633452652996908 + 21 +16.40893286185853 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +汾 + 2 +汾 + 70 + 0 + 0 +ATTDEF + 5 +1FD +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-44.8858312969276 + 20 +194.9963404908602 + 30 +0.0 + 40 +2.999999999999999 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +ģͺţ + 2 +ģͺţ + 70 + 0 + 0 +ATTDEF + 5 +1FE +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-56.66573838400623 + 20 +11.64946121104678 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +ͼ + 2 +ͼ + 70 + 0 + 0 +ATTDEF + 5 +1FF +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-22.68851554197283 + 20 +11.64946121104678 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 + + 2 + + 70 + 0 + 0 +ATTDEF + 5 +200 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-56.52107004136553 + 20 +6.63124715158068 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +У + 2 +У + 70 + 0 + 0 +ATTDEF + 5 +201 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-22.55630823361584 + 20 +6.63124715158068 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +׼ + 2 +׼ + 70 + 0 + 0 +ATTDEF + 5 +202 +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-10.16865380557567 + 20 +1.828358270057549 + 30 +0.0 + 40 +1.623399999999999 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +ҳ + 2 +ҳ + 70 + 0 + 0 +ATTDEF + 5 +203 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-140.7207309650367 + 20 +5.664627131071227 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +5.664627131071227 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO1 + 2 +NO1 + 70 + 0 + 0 +ATTDEF + 5 +204 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-120.1217850460963 + 20 +6.330415810882414 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1217850460963 + 21 +6.330415810882414 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT1 + 2 +CONTENT1 + 70 + 0 + 0 +ATTDEF + 5 +205 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-94.03894729766532 + 20 +6.334234442989469 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.03894729766532 + 21 +6.334234442989469 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE1 + 2 +DATE1 + 70 + 0 + 0 +ATTDEF + 5 +206 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-140.7207309650367 + 20 +10.66462713107123 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +10.66462713107123 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO2 + 2 +NO2 + 70 + 0 + 0 +ATTDEF + 5 +207 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-120.1355565871456 + 20 +11.60491085411507 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1355565871456 + 21 +11.60491085411507 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT2 + 2 +CONTENT2 + 70 + 0 + 0 +ATTDEF + 5 +208 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-94.07360627998784 + 20 +11.68424119340174 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998784 + 21 +11.68424119340174 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE2 + 2 +DATE2 + 70 + 0 + 0 +ATTDEF + 5 +209 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-140.7872592865967 + 20 +15.73109000275175 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7872592865967 + 21 +15.73109000275175 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO3 + 2 +NO3 + 70 + 0 + 0 +ATTDEF + 5 +20A +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-120.1095011938893 + 20 +16.70606779151689 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +16.70606779151689 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT3 + 2 +CONTENT3 + 70 + 0 + 0 +ATTDEF + 5 +20B +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-94.07360627998784 + 20 +16.5191018682849 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998784 + 21 +16.5191018682849 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE3 + 2 +DATE3 + 70 + 0 + 0 +ATTDEF + 5 +20C +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-140.6548477006349 + 20 +20.64088531911989 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.6548477006349 + 21 +20.64088531911989 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO4 + 2 +NO4 + 70 + 0 + 0 +ATTDEF + 5 +20D +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-120.1095011938893 + 20 +21.51659752441714 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +21.51659752441714 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT4 + 2 +CONTENT4 + 70 + 0 + 0 +ATTDEF + 5 +20E +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-94.19728740292496 + 20 +21.38413487189364 + 30 +0.0 + 40 +1.999999999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.19728740292496 + 21 +21.38413487189364 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE4 + 2 +DATE4 + 70 + 0 + 0 +INSERT + 5 +37186 +330 +1AD +100 +AcDbEntity + 8 +PCB +100 +AcDbBlockReference + 2 +A$C39296DF6 + 10 +-35.16316375149623 + 20 +28.3670156483703 + 30 +0.0 + 41 +2.347858752817429 + 42 +2.347858752817429 + 43 +2.347858752817429 + 0 +ENDBLK + 5 +1AF +330 +1AD +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +18F4 +330 +18F3 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +tolerance + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +tolerance + 1 + + 0 +TEXT + 5 +14ADE +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +70.12364294128619 + 20 +-88.88962081864635 + 30 +0.0 + 40 +0.9885382583840042 + 1 +DECIMAL +100 +AcDbText + 0 +TEXT + 5 +14ADF +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +77.83442865855315 + 20 +-99.05141414226671 + 30 +0.0 + 40 +1.138796073658373 + 1 +1/4 +100 +AcDbText + 0 +LINE + 5 +14AE0 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.85266340983662 + 20 +-98.10223553900939 + 30 +0.0 + 11 +72.3297660121882 + 21 +-98.98148076148979 + 31 +0.0 + 0 +LINE + 5 +14AE1 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.09355527219142 + 20 +-98.98148076148979 + 30 +0.0 + 11 +72.3297660121882 + 21 +-98.98148076148979 + 31 +0.0 + 0 +ARC + 5 +14AE2 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +72.3297660121882 + 20 +-98.98148076148979 + 30 +0.0 + 40 +1.150316722934907 +100 +AcDbArc + 50 +0.0 + 51 +29.99999999999891 + 0 +TEXT + 5 +14AE3 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +75.57294574334133 + 20 +-99.00987013715349 + 30 +0.0 + 40 +1.15473921868959 + 1 +%%p +100 +AcDbText + 0 +TEXT + 5 +14AE4 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +72.37773606833579 + 20 +-95.4173351316143 + 30 +0.0 + 40 +1.15473921868959 + 1 +.xx %%P .15 +100 +AcDbText + 0 +MTEXT + 5 +14AE5 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbMText + 10 +80.47481219605089 + 20 +-97.2501714103252 + 30 +0.0 + 40 +0.8435526471543505 + 41 +1.929204904041999 + 71 + 1 + 72 + 5 + 1 +\f|b0|i0|c134|p2; + 73 + 1 + 44 +1.0 + 0 +TEXT + 5 +14AE6 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +69.47109180761362 + 20 +-87.14485069751502 + 30 +0.0 + 40 +1.202576339703648 + 1 +TOLERANCE : +100 +AcDbText + 0 +TEXT + 5 +14AE7 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbText + 10 +72.50613313807358 + 20 +-92.10570918352702 + 30 +0.0 + 40 +1.15473921868959 + 1 +.x %%p .20 +100 +AcDbText + 0 +ENDBLK + 5 +18FF +330 +18F3 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24ADC +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +A$C15043304 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C15043304 + 1 + + 0 +MTEXT + 5 +24ADD +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +-45.72951682433921 + 20 +-4.454321993774428 + 30 +0.0 + 40 +1.439999999999999 + 41 +40.04346690512039 + 71 + 1 + 72 + 5 + 1 +Truly level C management standardSVHC+I + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +24ADE +330 +24ADB +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +-48.27716666122308 + 20 +-1.122032805524753 + 30 +0.0 + 40 +1.6 + 41 +47.67915549554863 + 71 + 1 + 72 + 5 + 1 +{\C3;Truly Hazardous Substance Management Standards} + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +24ADF +330 +24ADB +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +-48.82122156757873 + 20 +-10.07600261225408 + 11 +-48.82122156757873 + 21 +-12.23150981225413 + 72 + 1 + 10 +-48.82122156757873 + 20 +-12.23150981225413 + 11 +-46.66571436757857 + 21 +-12.23150981225413 + 72 + 1 + 10 +-46.66571436757857 + 20 +-12.23150981225413 + 11 +-46.66571436757857 + 21 +-10.07600261225408 + 72 + 1 + 10 +-46.66571436757857 + 20 +-10.07600261225408 + 11 +-48.82122156757873 + 21 +-10.07600261225408 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-19.19193555033189 + 20 +-141.9458648705847 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +24AE0 +330 +24ADB +100 +AcDbEntity + 8 +0 + 6 +Continuous +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-4.327983412254283 + 10 +-48.82122156757873 + 20 +-6.483490612254328 + 10 +-46.66571436757857 + 20 +-6.483490612254328 + 10 +-46.66571436757857 + 20 +-4.327983412254283 + 0 +LWPOLYLINE + 5 +24AE1 +330 +24ADB +100 +AcDbEntity + 8 +0 + 6 +Continuous +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-7.201993012254177 + 10 +-48.82122156757873 + 20 +-9.357500212254223 + 10 +-46.66571436757857 + 20 +-9.357500212254223 + 10 +-46.66571436757857 + 20 +-7.201993012254177 + 0 +LINE + 5 +24AE2 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-49.32392143476107 + 20 +-3.950703737133991 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-3.950703737133991 + 31 +0.0 + 0 +LINE + 5 +24AE3 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-49.32392143476107 + 20 +-6.830703737133987 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-6.830703737133987 + 31 +0.0 + 0 +LINE + 5 +24AE4 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-49.32392143476107 + 20 +-9.710703737133982 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-9.710703737133982 + 31 +0.0 + 0 +LWPOLYLINE + 5 +24AE5 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-49.32392143476113 + 20 +0.0 + 10 +0.0 + 20 +0.0 + 10 +0.0 + 20 +-12.96000000000001 + 10 +-49.32392143476113 + 20 +-12.96000000000001 + 0 +LWPOLYLINE + 5 +24AE6 +330 +24ADB +100 +AcDbEntity + 8 +0 + 6 +Continuous +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-10.07600261225408 + 10 +-48.82122156757873 + 20 +-12.23150981225413 + 10 +-46.66571436757857 + 20 +-12.23150981225413 + 10 +-46.66571436757857 + 20 +-10.07600261225408 + 0 +MTEXT + 5 +24AE7 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +-45.72951682433926 + 20 +-7.334321993774423 + 30 +0.0 + 40 +1.439999999999999 + 41 +42.79564328458429 + 71 + 1 + 72 + 5 + 1 +Truly level B management standardSVHC+I+II + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +24AE8 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +-45.72951682433926 + 20 +-10.58361825664045 + 30 +0.0 + 40 +1.439999999999999 + 41 +46.75066786909161 + 71 + 1 + 72 + 5 + 1 +Truly level A management standardSVHC+I+II+III + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +ENDBLK + 5 +24AE9 +330 +24ADB +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +283CD +330 +283CA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +ARROW MARK + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ARROW MARK + 1 + + 0 +CIRCLE + 5 +283CE +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +283CF +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +90.10104366884405 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +283D0 +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +283D1 +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +90.03104366884405 + 20 +-50.44631132326355 + 11 +89.73104366884408 + 21 +-49.84631132326359 + 72 + 1 + 10 +89.73104366884404 + 20 +-49.84631132326348 + 11 +89.43104366884407 + 21 +-50.44631132326344 + 72 + 1 + 10 +89.43104366884403 + 20 +-50.44631132326355 + 11 +89.58104366884404 + 21 +-50.44631132326355 + 72 + 1 + 10 +89.58104366884407 + 20 +-50.44631132326355 + 11 +89.58104366884407 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.58104366884407 + 20 +-51.94631132326356 + 11 +89.88104366884405 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.88104366884403 + 20 +-51.94631132326356 + 11 +89.88104366884403 + 21 +-50.44631132326355 + 72 + 1 + 10 +89.88104366884403 + 20 +-50.44631132326355 + 11 +90.03104366884402 + 21 +-50.44631132326355 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +68.44472972432004 + 20 +-53.24289365193789 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +LWPOLYLINE + 5 +283D2 +330 +283CA +100 +AcDbEntity + 8 +BOM + 62 + 3 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +75.78104366884407 + 20 +-47.14631132326352 + 10 +90.18104366884404 + 20 +-47.14631132326352 + 42 +-0.4142135623730951 + 10 +90.48104366884405 + 20 +-47.44631132326349 + 10 +90.48104366884405 + 20 +-54.34631132326351 + 42 +-0.4142135623730951 + 10 +90.18104366884404 + 20 +-54.64631132326352 + 10 +75.78104366884407 + 20 +-54.64631132326352 + 42 +-0.4142135623730951 + 10 +75.48104366884405 + 20 +-54.34631132326351 + 10 +75.48104366884405 + 20 +-47.44631132326349 + 42 +-0.4142135623730951 + 0 +HATCH + 5 +283D3 +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +83.43104366884402 + 20 +-54.1963113232635 + 11 +84.03104366884397 + 21 +-53.89631132326352 + 72 + 1 + 10 +84.03104366884409 + 20 +-53.89631132326352 + 11 +83.43104366884412 + 21 +-53.59631132326353 + 72 + 1 + 10 +83.43104366884402 + 20 +-53.59631132326351 + 11 +83.43104366884402 + 21 +-53.74631132326348 + 72 + 1 + 10 +83.43104366884402 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-53.74631132326354 + 72 + 1 + 10 +81.93104366884401 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-54.04631132326352 + 72 + 1 + 10 +81.93104366884401 + 20 +-54.0463113232635 + 11 +83.43104366884402 + 21 +-54.0463113232635 + 72 + 1 + 10 +83.43104366884402 + 20 +-54.0463113232635 + 11 +83.43104366884402 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +80.63446134016968 + 20 +-32.60999737873951 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +MTEXT + 5 +283D4 +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbMText + 10 +82.9107544468302 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PTop View} + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +283D5 +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +283D6 +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +92.08010551550513 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +283D7 +330 +283CA +100 +AcDbEntity + 8 +Outline + 48 +0.3 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +283D8 +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +92.15010551550511 + 20 +-50.44631132326355 + 11 +92.4501055155051 + 21 +-49.84631132326359 + 72 + 1 + 10 +92.45010551550512 + 20 +-49.84631132326348 + 11 +92.75010551550511 + 21 +-50.44631132326344 + 72 + 1 + 10 +92.75010551550513 + 20 +-50.44631132326355 + 11 +92.60010551550514 + 21 +-50.44631132326355 + 72 + 1 + 10 +92.60010551550511 + 20 +-50.44631132326355 + 11 +92.60010551550511 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.60010551550511 + 20 +-51.94631132326356 + 11 +92.30010551550511 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.30010551550515 + 20 +-51.94631132326356 + 11 +92.30010551550515 + 21 +-50.44631132326355 + 72 + 1 + 10 +92.30010551550515 + 20 +-50.44631132326355 + 11 +92.15010551550516 + 21 +-50.44631132326355 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +113.7364194600291 + 20 +-53.24289365193789 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +LWPOLYLINE + 5 +283D9 +330 +283CA +100 +AcDbEntity + 8 +BOM + 62 + 3 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +106.4001055155051 + 20 +-47.14631132326352 + 10 +92.00010551550514 + 20 +-47.14631132326352 + 42 +0.4142135623730951 + 10 +91.70010551550513 + 20 +-47.44631132326349 + 10 +91.70010551550513 + 20 +-54.34631132326351 + 42 +0.4142135623730951 + 10 +92.00010551550514 + 20 +-54.64631132326352 + 10 +106.4001055155051 + 20 +-54.64631132326352 + 42 +0.4142135623730951 + 10 +106.7001055155051 + 20 +-54.34631132326351 + 10 +106.7001055155051 + 20 +-47.44631132326349 + 42 +0.4142135623730951 + 0 +HATCH + 5 +283DA +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +98.75010551550516 + 20 +-54.1963113232635 + 11 +98.15010551550521 + 21 +-53.89631132326352 + 72 + 1 + 10 +98.15010551550509 + 20 +-53.89631132326352 + 11 +98.75010551550506 + 21 +-53.59631132326353 + 72 + 1 + 10 +98.75010551550516 + 20 +-53.59631132326351 + 11 +98.75010551550516 + 21 +-53.74631132326348 + 72 + 1 + 10 +98.75010551550516 + 20 +-53.74631132326354 + 11 +100.2501055155051 + 21 +-53.74631132326354 + 72 + 1 + 10 +100.2501055155051 + 20 +-53.74631132326354 + 11 +100.2501055155051 + 21 +-54.04631132326352 + 72 + 1 + 10 +100.2501055155051 + 20 +-54.0463113232635 + 11 +98.75010551550516 + 21 +-54.0463113232635 + 72 + 1 + 10 +98.75010551550516 + 20 +-54.0463113232635 + 11 +98.75010551550516 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +101.5466878441795 + 20 +-32.60999737873951 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +MTEXT + 5 +283DB +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbMText + 10 +99.25754528421453 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PBottom View} + 73 + 1 + 44 +1.0 + 0 +LWPOLYLINE + 5 +283DC +330 +283CA +100 +AcDbEntity + 8 +Bhatch + 6 +ACAD_ISO07W100 + 48 +0.1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +74.09321687268676 + 20 +-43.33089462095054 + 10 +108.0105727107277 + 20 +-43.33089462095054 + 10 +108.0105727107277 + 20 +-56.04821289094221 + 10 +74.09321687268676 + 20 +-56.04821289094221 + 0 +MTEXT + 5 +283DD +330 +283CA +100 +AcDbEntity + 8 +0 + 62 + 0 +100 +AcDbMText + 10 +91.36301880784648 + 20 +-45.05723351073044 + 30 +0.0 + 40 +1.5 + 41 +18.77113865339907 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\C1;Arrow Mark Design} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +4.178155625066154 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +ENDBLK + 5 +283DE +330 +283CA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B402 +330 +2B3FE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C019D3CDB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C019D3CDB + 1 + + 0 +HATCH + 5 +2B3FF +330 +2B3FE +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +5.422355840182547 + 20 +1.5 + 11 +4.422355840182547 + 21 +3.5 + 72 + 1 + 10 +4.422355840182547 + 20 +3.5 + 11 +3.422355840182547 + 21 +1.5 + 72 + 1 + 10 +3.422355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +1.5 + 72 + 1 + 10 +3.922355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +3.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +4.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +1.5 + 72 + 1 + 10 +4.922355840182547 + 20 +1.5 + 11 +5.422355840182547 + 21 +1.5 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-66.53202397489753 + 20 +-7.821941095581337 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +ENDBLK + 5 +2B403 +330 +2B3FE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B40F +330 +2B405 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C6704505C + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6704505C + 1 + + 0 +CIRCLE + 5 +2B406 +330 +2B405 +100 +AcDbEntity + 8 +0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999889 + 0 +CIRCLE + 5 +2B407 +330 +2B405 +100 +AcDbEntity + 8 +0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +HATCH + 5 +2B408 +330 +2B405 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-0.5 + 20 +0.0 + 42 +1.0 + 10 +0.5 + 20 +0.0 + 42 +1.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0130908917423903 + 98 + 1 + 10 +0.1357356229973448 + 20 +0.3037699466973436 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +ARC + 5 +2B409 +330 +2B405 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999857 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +2B40A +330 +2B405 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +2B40B +330 +2B405 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999928 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +2B40C +330 +2B405 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +2B410 +330 +2B405 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B463 +330 +2B462 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D9 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D9 + 1 + + 0 +LINE + 5 +2B46D +330 +2B462 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +0.0 + 20 +59.0 + 30 +0.0 + 11 +0.0000000000000008 + 21 +62.5 + 31 +0.0 + 0 +LINE + 5 +2B46E +330 +2B462 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +0.0000000000000008 + 20 +62.5 + 30 +0.0 + 11 +-0.0000000000000008 + 21 +61.80653734777547 + 31 +0.0 + 0 +LINE + 5 +2B46F +330 +2B462 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-0.0000000000000008 + 20 +61.80653734777547 + 30 +0.0 + 11 +0.0 + 21 +65.30653734777548 + 31 +0.0 + 0 +MTEXT + 5 +2B470 +330 +2B462 +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +-0.0000000000000103 + 20 +67.79403734777547 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;0.00 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +2B471 +330 +2B462 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +0.0 + 20 +59.0 + 30 +0.0 + 0 +POINT + 5 +2B472 +330 +2B462 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +0.0 + 20 +65.30653734777548 + 30 +0.0 + 0 +POINT + 5 +2B473 +330 +2B462 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +2B464 +330 +2B462 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B4AE +330 +2B4AD +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D10 + 1 + + 0 +LINE + 5 +36A62 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-95.0 + 20 +56.0 + 30 +0.0 + 11 +-95.0 + 21 +81.31093118753726 + 31 +0.0 + 0 +LINE + 5 +36A63 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +95.0 + 20 +56.0 + 30 +0.0 + 11 +95.0 + 21 +81.31093118753726 + 31 +0.0 + 0 +LINE + 5 +36A64 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-93.25000000000001 + 20 +81.01093118753727 + 30 +0.0 + 11 +-7.445833333333331 + 21 +81.01093118753727 + 31 +0.0 + 0 +LINE + 5 +36A65 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +93.25000000000001 + 20 +81.01093118753727 + 30 +0.0 + 11 +7.445833333333331 + 21 +81.01093118753727 + 31 +0.0 + 0 +SOLID + 5 +36A66 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-93.25000000000001 + 20 +81.30259785420394 + 30 +0.0 + 11 +-93.25000000000001 + 21 +80.7192645208706 + 31 +0.0 + 12 +-95.0 + 22 +81.01093118753727 + 32 +0.0 + 13 +-95.0 + 23 +81.01093118753727 + 33 +0.0 + 0 +SOLID + 5 +36A67 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +93.25000000000001 + 20 +81.30259785420394 + 30 +0.0 + 11 +93.25000000000001 + 21 +80.7192645208706 + 31 +0.0 + 12 +95.0 + 22 +81.01093118753727 + 32 +0.0 + 13 +95.0 + 23 +81.01093118753727 + 33 +0.0 + 0 +MTEXT + 5 +36A68 +330 +2B4AD +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +0.0 + 20 +81.01093118753727 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;190.00%%P0.50 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36A69 +330 +2B4AD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-95.0 + 20 +56.0 + 30 +0.0 + 0 +POINT + 5 +36A6A +330 +2B4AD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +95.0 + 20 +56.0 + 30 +0.0 + 0 +POINT + 5 +36A6B +330 +2B4AD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +95.0 + 20 +81.01093118753727 + 30 +0.0 + 0 +ENDBLK + 5 +2B4AF +330 +2B4AD +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B7B6 +330 +2B7B5 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D11 + 1 + + 0 +LINE + 5 +36FE3 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +91.0 + 20 +59.0 + 30 +0.0 + 11 +121.6706371783742 + 21 +58.99999999999999 + 31 +0.0 + 0 +LINE + 5 +36FE4 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +91.0 + 20 +-59.0 + 30 +0.0 + 11 +121.6706371783741 + 21 +-59.00000000000001 + 31 +0.0 + 0 +LINE + 5 +36FE5 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +121.3706371783742 + 20 +57.24999999999999 + 30 +0.0 + 11 +121.3706371783741 + 21 +7.299999999999994 + 31 +0.0 + 0 +LINE + 5 +36FE6 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +121.3706371783741 + 20 +-57.25000000000001 + 30 +0.0 + 11 +121.3706371783741 + 21 +-7.300000000000003 + 31 +0.0 + 0 +SOLID + 5 +36FE7 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +121.0789705117075 + 20 +57.24999999999999 + 30 +0.0 + 11 +121.6623038450408 + 21 +57.24999999999999 + 31 +0.0 + 12 +121.3706371783742 + 22 +58.99999999999999 + 32 +0.0 + 13 +121.3706371783742 + 23 +58.99999999999999 + 33 +0.0 + 0 +SOLID + 5 +36FE8 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +121.0789705117075 + 20 +-57.25000000000001 + 30 +0.0 + 11 +121.6623038450408 + 21 +-57.25000000000001 + 31 +0.0 + 12 +121.3706371783741 + 22 +-59.00000000000001 + 32 +0.0 + 13 +121.3706371783741 + 23 +-59.00000000000001 + 33 +0.0 + 0 +MTEXT + 5 +36FE9 +330 +2B7B5 +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +121.3706371783741 + 20 +0.0000000000000145 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36FEA +330 +2B7B5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +91.0 + 20 +59.0 + 30 +0.0 + 0 +POINT + 5 +36FEB +330 +2B7B5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +91.0 + 20 +-59.0 + 30 +0.0 + 0 +POINT + 5 +36FEC +330 +2B7B5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +121.3706371783741 + 20 +-59.00000000000001 + 30 +0.0 + 0 +ENDBLK + 5 +2B7B7 +330 +2B7B5 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B903 +330 +2B902 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D12 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D12 + 1 + + 0 +LINE + 5 +36E1F +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-86.86499999999998 + 20 +-53.89999999999997 + 30 +0.0 + 11 +-86.86499999999998 + 21 +-68.51007778480554 + 31 +0.0 + 0 +LINE + 5 +36E20 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +71.69500000000002 + 20 +-53.89999999999997 + 30 +0.0 + 11 +71.69500000000002 + 21 +-68.51007778480554 + 31 +0.0 + 0 +LINE + 5 +36E21 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-85.11499999999998 + 20 +-68.21007778480555 + 30 +0.0 + 11 +-4.344166666666634 + 21 +-68.21007778480555 + 31 +0.0 + 0 +LINE + 5 +36E22 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +69.94500000000002 + 20 +-68.21007778480555 + 30 +0.0 + 11 +10.83916666666669 + 21 +-68.21007778480555 + 31 +0.0 + 0 +SOLID + 5 +36E23 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-85.11499999999998 + 20 +-67.91841111813887 + 30 +0.0 + 11 +-85.11499999999998 + 21 +-68.50174445147222 + 31 +0.0 + 12 +-86.86499999999998 + 22 +-68.21007778480555 + 32 +0.0 + 13 +-86.86499999999998 + 23 +-68.21007778480555 + 33 +0.0 + 0 +SOLID + 5 +36E24 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +69.94500000000002 + 20 +-67.91841111813887 + 30 +0.0 + 11 +69.94500000000002 + 21 +-68.50174445147222 + 31 +0.0 + 12 +71.69500000000002 + 22 +-68.21007778480555 + 32 +0.0 + 13 +71.69500000000002 + 23 +-68.21007778480555 + 33 +0.0 + 0 +MTEXT + 5 +36E25 +330 +2B902 +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +3.24750000000003 + 20 +-68.21007778480555 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;158.56%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36E26 +330 +2B902 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-86.86499999999998 + 20 +-53.89999999999997 + 30 +0.0 + 0 +POINT + 5 +36E27 +330 +2B902 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +71.69500000000002 + 20 +-53.89999999999997 + 30 +0.0 + 0 +POINT + 5 +36E28 +330 +2B902 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +71.69500000000002 + 20 +-68.21007778480555 + 30 +0.0 + 0 +ENDBLK + 5 +2B904 +330 +2B902 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B91D +330 +2B91C +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D13 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D13 + 1 + + 0 +LINE + 5 +36AA8 +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-67.04499999999999 + 20 +-53.89999999999997 + 30 +0.0 + 11 +-67.04499999999999 + 21 +-62.81303435373631 + 31 +0.0 + 0 +LINE + 5 +36AA9 +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-47.22499999999998 + 20 +-53.89999999999997 + 30 +0.0 + 11 +-47.22499999999998 + 21 +-62.81303435373631 + 31 +0.0 + 0 +LINE + 5 +36AAA +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-68.79499999999999 + 20 +-62.51303435373632 + 30 +0.0 + 11 +-70.54499999999999 + 21 +-62.51303435373632 + 31 +0.0 + 0 +LINE + 5 +36AAB +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-45.47499999999998 + 20 +-62.51303435373632 + 30 +0.0 + 11 +-43.72499999999997 + 21 +-62.51303435373632 + 31 +0.0 + 0 +LINE + 5 +36AAC +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-67.04499999999999 + 20 +-62.51303435373632 + 30 +0.0 + 11 +-62.55833333333335 + 21 +-62.51303435373632 + 31 +0.0 + 0 +LINE + 5 +36AAD +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-47.22499999999998 + 20 +-62.51303435373632 + 30 +0.0 + 11 +-48.54166666666667 + 21 +-62.51303435373632 + 31 +0.0 + 0 +SOLID + 5 +36AAE +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-68.79499999999999 + 20 +-62.22136768706965 + 30 +0.0 + 11 +-68.79499999999999 + 21 +-62.80470102040298 + 31 +0.0 + 12 +-67.04499999999999 + 22 +-62.51303435373632 + 32 +0.0 + 13 +-67.04499999999999 + 23 +-62.51303435373632 + 33 +0.0 + 0 +SOLID + 5 +36AAF +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-45.47499999999998 + 20 +-62.22136768706965 + 30 +0.0 + 11 +-45.47499999999998 + 21 +-62.80470102040298 + 31 +0.0 + 12 +-47.22499999999998 + 22 +-62.51303435373632 + 32 +0.0 + 13 +-47.22499999999998 + 23 +-62.51303435373632 + 33 +0.0 + 0 +MTEXT + 5 +36AB0 +330 +2B91C +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +-55.55000000000001 + 20 +-62.51303435373632 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;19.82%%P0.05 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36AB1 +330 +2B91C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-67.04499999999999 + 20 +-53.89999999999997 + 30 +0.0 + 0 +POINT + 5 +36AB2 +330 +2B91C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-47.22499999999998 + 20 +-53.89999999999997 + 30 +0.0 + 0 +POINT + 5 +36AB3 +330 +2B91C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-47.22499999999998 + 20 +-62.51303435373632 + 30 +0.0 + 0 +ENDBLK + 5 +2B91E +330 +2B91C +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34C32 +330 +34C31 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D14 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D14 + 1 + + 0 +LINE + 5 +36EF8 +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-91.49999999999995 + 20 +39.99999999999997 + 30 +0.0 + 11 +-117.977972798328 + 21 +39.99999999999998 + 31 +0.0 + 0 +LINE + 5 +36EF9 +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +91.50000000000005 + 20 +-10.00000000000003 + 30 +0.0 + 11 +-117.977972798328 + 21 +-9.999999999999971 + 31 +0.0 + 0 +LINE + 5 +36EFA +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-117.677972798328 + 20 +38.24999999999998 + 30 +0.0 + 11 +-117.677972798328 + 21 +21.57083333333333 + 31 +0.0 + 0 +LINE + 5 +36EFB +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-117.677972798328 + 20 +-8.249999999999971 + 30 +0.0 + 11 +-117.677972798328 + 21 +8.429166666666668 + 31 +0.0 + 0 +SOLID + 5 +36EFC +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-117.9696394649947 + 20 +38.24999999999998 + 30 +0.0 + 11 +-117.3863061316613 + 21 +38.24999999999998 + 31 +0.0 + 12 +-117.677972798328 + 22 +39.99999999999998 + 32 +0.0 + 13 +-117.677972798328 + 23 +39.99999999999998 + 33 +0.0 + 0 +SOLID + 5 +36EFD +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-117.9696394649947 + 20 +-8.249999999999971 + 30 +0.0 + 11 +-117.3863061316613 + 21 +-8.249999999999971 + 31 +0.0 + 12 +-117.677972798328 + 22 +-9.999999999999971 + 32 +0.0 + 13 +-117.677972798328 + 23 +-9.999999999999971 + 33 +0.0 + 0 +MTEXT + 5 +36EFE +330 +34C31 +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +-117.677972798328 + 20 +14.99999999999998 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;50.00%%P0.10 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36EFF +330 +34C31 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-91.49999999999995 + 20 +39.99999999999997 + 30 +0.0 + 0 +POINT + 5 +36F00 +330 +34C31 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +91.50000000000005 + 20 +-10.00000000000003 + 30 +0.0 + 0 +POINT + 5 +36F01 +330 +34C31 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-117.677972798328 + 20 +-9.999999999999971 + 30 +0.0 + 0 +ENDBLK + 5 +34C33 +330 +34C31 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34C40 +330 +34C3F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D15 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D15 + 1 + + 0 +LINE + 5 +36AD4 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-86.86499999999998 + 20 +-24.49999999999999 + 30 +0.0 + 11 +-110.488490853443 + 21 +-24.49999999999998 + 31 +0.0 + 0 +LINE + 5 +36AD5 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-86.86499999999998 + 20 +-34.29999999999998 + 30 +0.0 + 11 +-110.488490853443 + 21 +-34.29999999999998 + 31 +0.0 + 0 +LINE + 5 +36AD6 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-110.188490853443 + 20 +-26.24999999999998 + 30 +0.0 + 11 +-110.188490853443 + 21 +-32.54999999999999 + 31 +0.0 + 0 +LINE + 5 +36AD7 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-110.188490853443 + 20 +-34.29999999999998 + 30 +0.0 + 11 +-110.188490853443 + 21 +-36.04999999999998 + 31 +0.0 + 0 +SOLID + 5 +36AD8 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-110.4801575201096 + 20 +-26.24999999999998 + 30 +0.0 + 11 +-109.8968241867763 + 21 +-26.24999999999998 + 31 +0.0 + 12 +-110.188490853443 + 22 +-24.49999999999998 + 32 +0.0 + 13 +-110.188490853443 + 23 +-24.49999999999998 + 33 +0.0 + 0 +SOLID + 5 +36AD9 +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-110.4801575201097 + 20 +-32.54999999999999 + 30 +0.0 + 11 +-109.8968241867763 + 21 +-32.54999999999999 + 31 +0.0 + 12 +-110.188490853443 + 22 +-34.29999999999998 + 32 +0.0 + 13 +-110.188490853443 + 23 +-34.29999999999998 + 33 +0.0 + 0 +MTEXT + 5 +36ADA +330 +34C3F +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +-110.188490853443 + 20 +-42.32916666666666 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;9.80%%P0.05 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36ADB +330 +34C3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-86.86499999999998 + 20 +-24.49999999999999 + 30 +0.0 + 0 +POINT + 5 +36ADC +330 +34C3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-86.86499999999998 + 20 +-34.29999999999998 + 30 +0.0 + 0 +POINT + 5 +36ADD +330 +34C3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-110.188490853443 + 20 +-34.29999999999998 + 30 +0.0 + 0 +ENDBLK + 5 +34C41 +330 +34C3F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34C50 +330 +34C4F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D16 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D16 + 1 + + 0 +LINE + 5 +369C1 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-91.49999999999995 + 20 +39.99999999999997 + 30 +0.0 + 11 +-91.49999999999995 + 21 +77.0727329160225 + 31 +0.0 + 0 +LINE + 5 +369C2 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +91.50000000000005 + 20 +-10.00000000000003 + 30 +0.0 + 11 +91.50000000000005 + 21 +77.0727329160225 + 31 +0.0 + 0 +LINE + 5 +369C3 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-89.74999999999994 + 20 +76.77273291602251 + 30 +0.0 + 11 +-7.299999999999998 + 21 +76.77273291602251 + 31 +0.0 + 0 +LINE + 5 +369C4 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +89.75000000000006 + 20 +76.77273291602251 + 30 +0.0 + 11 +7.299999999999998 + 21 +76.77273291602251 + 31 +0.0 + 0 +SOLID + 5 +369C5 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-89.74999999999994 + 20 +77.06439958268918 + 30 +0.0 + 11 +-89.74999999999994 + 21 +76.48106624935583 + 31 +0.0 + 12 +-91.49999999999995 + 22 +76.77273291602251 + 32 +0.0 + 13 +-91.49999999999995 + 23 +76.77273291602251 + 33 +0.0 + 0 +SOLID + 5 +369C6 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +89.75000000000006 + 20 +77.06439958268918 + 30 +0.0 + 11 +89.75000000000006 + 21 +76.48106624935583 + 31 +0.0 + 12 +91.50000000000005 + 22 +76.77273291602251 + 32 +0.0 + 13 +91.50000000000005 + 23 +76.77273291602251 + 33 +0.0 + 0 +MTEXT + 5 +369C7 +330 +34C4F +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +0.0 + 20 +76.77273291602251 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;183.00%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +369C8 +330 +34C4F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-91.49999999999995 + 20 +39.99999999999997 + 30 +0.0 + 0 +POINT + 5 +369C9 +330 +34C4F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +91.50000000000005 + 20 +-10.00000000000003 + 30 +0.0 + 0 +POINT + 5 +369CA +330 +34C4F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +91.50000000000005 + 20 +76.77273291602251 + 30 +0.0 + 0 +ENDBLK + 5 +34C51 +330 +34C4F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +367A8 +330 +36766 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C35C70825 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C35C70825 + 1 + + 0 +LWPOLYLINE + 5 +36C7E +330 +36766 +100 +AcDbEntity + 8 +0 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.15 + 10 +-5.0 + 20 +2.949999999999988 + 10 +-5.0 + 20 +-2.950000000000017 + 0 +ARC + 5 +36C7F +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +3.899999999999977 + 20 +3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +36C80 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +4.399999999999977 + 20 +3.900000000000005 + 30 +0.0 + 11 +4.399999999999977 + 21 +-3.900000000000005 + 31 +0.0 + 0 +ARC + 5 +36C81 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +3.899999999999977 + 20 +-3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C83 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-2.749999999999971 + 20 +-4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C84 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-3.900000000000005 + 20 +-3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C86 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-3.900000000000005 + 20 +3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36C87 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-3.900000000000005 + 20 +4.400000000000005 + 30 +0.0 + 11 +-2.749999999999971 + 21 +4.399999999999998 + 31 +0.0 + 0 +LINE + 5 +36C88 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-0.549999999999983 + 20 +4.399999999999998 + 30 +0.0 + 11 +0.5499999999999261 + 21 +4.399999999999998 + 31 +0.0 + 0 +LINE + 5 +36C89 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +2.749999999999914 + 20 +4.399999999999998 + 30 +0.0 + 11 +3.899999999999977 + 21 +4.400000000000005 + 31 +0.0 + 0 +LINE + 5 +36C8A +330 +36766 +100 +AcDbEntity + 8 +Center + 48 +0.05 +100 +AcDbLine + 10 +5.399999999999977 + 20 +0.0 + 30 +0.0 + 11 +-15.27000000000001 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36C8B +330 +36766 +100 +AcDbEntity + 8 +Center + 48 +0.05 +100 +AcDbLine + 10 +0.0 + 20 +5.400000000000005 + 30 +0.0 + 11 +-0.0000000000000284 + 21 +-5.400000000000005 + 31 +0.0 + 0 +ARC + 5 +36C96 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-13.62000000000003 + 20 +-4.324999999999992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C97 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-11.42000000000021 + 20 +-4.325000000000006 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36C98 +330 +36766 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-13.12000000000003 + 20 +-4.324999999999992 + 30 +0.0 + 11 +-13.12000000000003 + 21 +-4.899999999999977 + 31 +0.0 + 0 +LINE + 5 +36C99 +330 +36766 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-11.92000000000021 + 20 +-4.325000000000006 + 30 +0.0 + 11 +-11.92000000000021 + 21 +-4.899999999999977 + 31 +0.0 + 0 +HATCH + 5 +36C9A +330 +36766 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-12.52000000000001 + 20 +-4.899999999999977 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +36C9B + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-14.64500000000024 + 20 +-9.649999999999906 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +36C9B +102 +{ACAD_REACTORS +330 +36C9A +102 +} +330 +36766 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-12.52000000000001 + 20 +-4.899999999999977 + 30 +0.0 + 40 +0.3 + 0 +ARC + 5 +36C9C +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-13.62000000000003 + 20 +4.325000000000006 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C9D +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-11.42000000000021 + 20 +4.32500000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +36C9E +330 +36766 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-13.12000000000003 + 20 +4.325000000000006 + 30 +0.0 + 11 +-13.12000000000003 + 21 +4.899999999999977 + 31 +0.0 + 0 +LINE + 5 +36C9F +330 +36766 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-11.92000000000021 + 20 +4.32500000000002 + 30 +0.0 + 11 +-11.92000000000021 + 21 +4.899999999999977 + 31 +0.0 + 0 +ARC + 5 +36CA0 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-0.549999999999983 + 20 +-4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36CA1 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-1.049999999999982 + 20 +-4.900000000000005 + 30 +0.0 + 11 +-1.049999999999982 + 21 +-4.900000000000034 + 31 +0.0 + 0 +LINE + 5 +36CA2 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-2.249999999999971 + 20 +-4.900000000000005 + 30 +0.0 + 11 +-2.249999999999971 + 21 +-4.900000000000005 + 31 +0.0 + 0 +ARC + 5 +36CA3 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-2.749999999999971 + 20 +-4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +36CA4 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-0.549999999999983 + 20 +-4.400000000000005 + 30 +0.0 + 11 +0.5499999999999261 + 21 +-4.400000000000005 + 31 +0.0 + 0 +ARC + 5 +36CA5 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +0.5499999999999261 + 20 +-4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999968 + 51 +90.0 + 0 +LINE + 5 +36CA6 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +1.049999999999926 + 20 +-4.900000000000034 + 30 +0.0 + 11 +1.049999999999926 + 21 +-4.900000000000133 + 31 +0.0 + 0 +LINE + 5 +36CA7 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +2.249999999999914 + 20 +-4.90000000000014 + 30 +0.0 + 11 +2.249999999999914 + 21 +-4.899999999999977 + 31 +0.0 + 0 +ARC + 5 +36CA8 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +2.749999999999914 + 20 +-4.900000000000169 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999967 + 51 +269.9999999999968 + 0 +ARC + 5 +36CA9 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +2.749999999999914 + 20 +-4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +179.9999999999967 + 0 +LINE + 5 +36CAB +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-0.5500000000000114 + 20 +-5.400000000000048 + 30 +0.0 + 11 +0.5499999999998977 + 21 +-5.400000000000098 + 31 +0.0 + 0 +ARC + 5 +36CAC +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +0.5499999999999261 + 20 +-4.900000000000105 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +269.9999999999968 + 51 +359.9999999999968 + 0 +ARC + 5 +36CAD +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-0.549999999999983 + 20 +-4.900000000000034 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999968 + 0 +ARC + 5 +36CAE +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-2.749999999999971 + 20 +4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36CAF +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-0.549999999999983 + 20 +4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +36CB0 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-1.049999999999982 + 20 +4.900000000000005 + 30 +0.0 + 11 +-1.049999999999982 + 21 +4.900000000000034 + 31 +0.0 + 0 +LINE + 5 +36CB1 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-2.249999999999971 + 20 +4.900000000000005 + 30 +0.0 + 11 +-2.249999999999971 + 21 +4.900000000000005 + 31 +0.0 + 0 +ARC + 5 +36CB2 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-2.749999999999971 + 20 +4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +36CB3 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-0.549999999999983 + 20 +4.400000000000005 + 30 +0.0 + 11 +0.5499999999999261 + 21 +4.400000000000005 + 31 +0.0 + 0 +ARC + 5 +36CB4 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +0.5499999999999261 + 20 +4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0000000000032569 + 0 +LINE + 5 +36CB5 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +1.049999999999926 + 20 +4.900000000000034 + 30 +0.0 + 11 +1.049999999999926 + 21 +4.900000000000133 + 31 +0.0 + 0 +LINE + 5 +36CB6 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +2.249999999999914 + 20 +4.90000000000014 + 30 +0.0 + 11 +2.249999999999914 + 21 +4.899999999999977 + 31 +0.0 + 0 +ARC + 5 +36CB7 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +2.749999999999914 + 20 +4.900000000000169 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0000000000032 + 0 +ARC + 5 +36CB8 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +2.749999999999914 + 20 +4.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0000000000032 + 51 +270.0 + 0 +LINE + 5 +36CB9 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-0.5500000000000114 + 20 +5.400000000000048 + 30 +0.0 + 11 +0.5499999999998977 + 21 +5.400000000000098 + 31 +0.0 + 0 +ARC + 5 +36CBA +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +0.5499999999999261 + 20 +4.900000000000105 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0000000000032569 + 51 +90.00000000000325 + 0 +ARC + 5 +36CBB +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-0.549999999999983 + 20 +4.900000000000034 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0 + 0 +LWPOLYLINE + 5 +36CCC +330 +36766 +100 +AcDbEntity + 8 +fpc +100 +AcDbPolyline + 90 + 22 + 70 + 1 + 43 +0.0 + 10 +-10.66740332524422 + 20 +-3.537499999999996 + 42 +-0.290760312982222 + 10 +-10.21480665048844 + 20 +-3.249999999999994 + 10 +-4.900000000000005 + 20 +-3.249999999999998 + 42 +-0.4142135623730951 + 10 +-4.400000000000005 + 20 +-3.749999999999998 + 10 +-4.400000000000005 + 20 +-3.900000000000003 + 42 +0.414213562373093 + 10 +-3.900000000000005 + 20 +-4.4 + 10 +3.899999999999991 + 20 +-4.400000000000003 + 42 +0.4142135623730951 + 10 +4.399999999999991 + 20 +-3.900000000000003 + 10 +4.399999999999991 + 20 +3.9 + 42 +0.4142135623730951 + 10 +3.899999999999991 + 20 +4.4 + 10 +-3.900000000000005 + 20 +4.4 + 42 +0.4142135623730951 + 10 +-4.400000000000005 + 20 +3.9 + 10 +-4.400000000000005 + 20 +3.750000000000001 + 42 +-0.4142135623730951 + 10 +-4.900000000000005 + 20 +3.250000000000001 + 10 +-10.21480665048844 + 20 +3.250000000000005 + 42 +-0.2907603129822212 + 10 +-10.66740332524422 + 20 +3.537500000000006 + 42 +0.2907603129822212 + 10 +-11.12000000000002 + 20 +3.825000000000004 + 10 +-13.92000000000001 + 20 +3.825000000000004 + 42 +0.4142135623730951 + 10 +-14.42000000000001 + 20 +3.325000000000004 + 10 +-14.42000000000001 + 20 +-3.324999999999993 + 42 +0.4142135623730951 + 10 +-13.92000000000001 + 20 +-3.824999999999993 + 10 +-11.12000000000002 + 20 +-3.824999999999993 + 42 +0.2907603129822203 + 0 +HATCH + 5 +36CCE +330 +36766 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 2 + 10 +-11.12000000000002 + 20 +3.325000000000006 + 40 +0.3999999999999986 + 50 +270.0 + 51 +360.0 + 73 + 0 + 72 + 1 + 10 +-10.72000000000002 + 20 +3.325000000000006 + 11 +-10.72000000000003 + 21 +-3.324999999999992 + 72 + 2 + 10 +-11.12000000000002 + 20 +-3.324999999999992 + 40 +0.3999999999999986 + 50 +360.0 + 51 +450.0 + 73 + 0 + 72 + 1 + 10 +-11.12000000000002 + 20 +-3.72499999999999 + 11 +-13.92000000000001 + 21 +-3.72499999999999 + 72 + 2 + 10 +-13.92000000000001 + 20 +-3.324999999999992 + 40 +0.3999999999999986 + 50 +450.0 + 51 +540.0 + 73 + 0 + 72 + 1 + 10 +-14.32000000000002 + 20 +-3.324999999999992 + 11 +-14.32000000000002 + 21 +3.325000000000006 + 72 + 2 + 10 +-13.92000000000001 + 20 +3.325000000000006 + 40 +0.3999999999999986 + 50 +180.0 + 51 +270.0 + 73 + 0 + 72 + 1 + 10 +-13.92000000000001 + 20 +3.725000000000004 + 11 +-11.12000000000002 + 21 +3.725000000000004 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +-90.00000000000001 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +315.0 + 43 +-59.78732975168146 + 44 +23.18211956921298 + 45 +0.2651650429449554 + 46 +0.2651650429449552 + 79 + 0 + 53 +44.99999999999999 + 43 +-59.78732975168146 + 44 +23.18211956921298 + 45 +-0.2651650429449552 + 46 +0.2651650429449554 + 79 + 0 + 98 + 1 + 10 +-59.78732975168146 + 20 +23.18211956921298 +1001 +GradientColor1ACI +1070 + 5 +1001 +GradientColor2ACI +1070 + 2 +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +36CCF +330 +36766 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-11.12000000000002 + 20 +3.725000000000004 + 42 +-0.4142135623730929 + 10 +-10.72000000000002 + 20 +3.325000000000006 + 10 +-10.72000000000002 + 20 +-3.324999999999992 + 42 +-0.4142135623730929 + 10 +-11.12000000000002 + 20 +-3.72499999999999 + 10 +-13.92000000000001 + 20 +-3.72499999999999 + 42 +-0.4142135623730929 + 10 +-14.32000000000002 + 20 +-3.324999999999992 + 10 +-14.32000000000002 + 20 +3.325000000000006 + 42 +-0.4142135623730929 + 10 +-13.92000000000001 + 20 +3.725000000000004 + 0 +ARC + 5 +36CD8 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +3.899999999999991 + 20 +3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36CDA +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-3.899999999999991 + 20 +3.900000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36CDB +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-4.399999999999991 + 20 +3.900000000000005 + 30 +0.0 + 11 +-4.399999999999991 + 21 +-3.899999999999998 + 31 +0.0 + 0 +ARC + 5 +36CDC +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-3.899999999999991 + 20 +-3.899999999999998 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36CDE +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +3.899999999999991 + 20 +-3.899999999999998 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +36CDF +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +4.399999999999991 + 20 +-3.899999999999998 + 30 +0.0 + 11 +4.399999999999991 + 21 +3.900000000000005 + 31 +0.0 + 0 +LINE + 5 +36CE0 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-2.749999999999971 + 20 +4.399999999999998 + 30 +0.0 + 11 +-3.900000000000005 + 21 +4.400000000000005 + 31 +0.0 + 0 +LINE + 5 +36CE1 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +2.749999999999914 + 20 +4.399999999999998 + 30 +0.0 + 11 +3.899999999999977 + 21 +4.400000000000004 + 31 +0.0 + 0 +LINE + 5 +36CE2 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +2.749999999999914 + 20 +-4.400000000000005 + 30 +0.0 + 11 +3.899999999999977 + 21 +-4.400000000000005 + 31 +0.0 + 0 +LINE + 5 +36CE3 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-2.749999999999971 + 20 +-4.400000000000005 + 30 +0.0 + 11 +-3.900000000000005 + 21 +-4.400000000000005 + 31 +0.0 + 0 +ARC + 5 +36CEA +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-11.12000000000002 + 20 +3.325000000000006 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +36CEB +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-10.62000000000002 + 20 +3.325000000000006 + 30 +0.0 + 11 +-10.62000000000002 + 21 +-3.324999999999992 + 31 +0.0 + 0 +ARC + 5 +36CEC +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-11.12000000000002 + 20 +-3.324999999999992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +36CED +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-11.12000000000002 + 20 +-3.824999999999992 + 30 +0.0 + 11 +-11.42000000000021 + 21 +-3.824999999999992 + 31 +0.0 + 0 +ARC + 5 +36CEE +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-13.92000000000001 + 20 +-3.324999999999992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +36CEF +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-14.42000000000001 + 20 +-3.324999999999992 + 30 +0.0 + 11 +-14.42000000000001 + 21 +3.325000000000006 + 31 +0.0 + 0 +ARC + 5 +36CF0 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-13.92000000000001 + 20 +3.325000000000006 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36CF1 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-13.92000000000001 + 20 +3.825000000000006 + 30 +0.0 + 11 +-13.62000000000003 + 21 +3.825000000000006 + 31 +0.0 + 0 +LINE + 5 +36CF2 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-11.42000000000021 + 20 +3.825000000000006 + 30 +0.0 + 11 +-11.12000000000002 + 21 +3.825000000000006 + 31 +0.0 + 0 +LINE + 5 +36CF3 +330 +36766 +100 +AcDbEntity + 8 +PCB +100 +AcDbLine + 10 +-13.62000000000003 + 20 +-3.824999999999991 + 30 +0.0 + 11 +-13.92000000000001 + 21 +-3.824999999999992 + 31 +0.0 + 0 +ENDBLK + 5 +367A9 +330 +36766 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +369ED +330 +369EC +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*U18 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U18 + 1 + + 0 +ARC + 5 +369F3 +330 +369EC +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +1.099999999999909 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +369F4 +330 +369EC +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-1.099999999999909 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ENDBLK + 5 +369EE +330 +369EC +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +369F0 +330 +369EF +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*U19 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U19 + 1 + + 0 +INSERT + 5 +369FF +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A02 +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +19.82 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A05 +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +39.64 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A08 +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +59.46 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A0B +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +79.28 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A0C +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +99.1 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A0D +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +118.92 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A0E +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +138.74 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A0F +330 +369EF +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U18 + 10 +158.56 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +ENDBLK + 5 +369F1 +330 +369EF +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36A12 +330 +36A11 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*U20 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U20 + 1 + + 0 +ARC + 5 +36A13 +330 +36A11 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +1.099999999999909 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36A14 +330 +36A11 +100 +AcDbEntity + 8 +PCB +100 +AcDbCircle + 10 +-1.099999999999909 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ENDBLK + 5 +36A15 +330 +36A11 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36A19 +330 +36A18 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*U21 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U21 + 1 + + 0 +INSERT + 5 +36A1A +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A1B +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +19.82 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A1C +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +39.64 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A1D +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +59.46 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A1E +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +79.28 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A1F +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +99.1 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A20 +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +118.92 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A21 +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +138.74 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +INSERT + 5 +36A22 +330 +36A18 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +440 + 16777216 +370 + -2 +380 + 1 +100 +AcDbBlockReference + 2 +*U20 + 10 +158.56 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +RTMaterial +1005 +13DF9 + 0 +ENDBLK + 5 +36A23 +330 +36A18 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36A30 +330 +36A2F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D22 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D22 + 1 + + 0 +LINE + 5 +36A38 +330 +36A2F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-95.0 + 20 +0.0 + 30 +0.0 + 11 +-99.66842248402441 + 21 +0.0 + 31 +0.0 + 0 +MTEXT + 5 +36A39 +330 +36A2F +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +-102.1559224840244 + 20 +0.0 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;0.00 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36A3A +330 +36A2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-95.0 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +36A3B +330 +36A2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-99.66842248402441 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +36A3C +330 +36A2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +36A31 +330 +36A2F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36A40 +330 +36A3F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D23 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D23 + 1 + + 0 +LINE + 5 +36A48 +330 +36A3F +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +95.0 + 20 +0.0 + 30 +0.0 + 11 +97.65737405773279 + 21 +0.0 + 31 +0.0 + 0 +MTEXT + 5 +36A49 +330 +36A3F +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +100.1448740577328 + 20 +0.0 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;0.00 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36A4A +330 +36A3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +95.0 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +36A4B +330 +36A3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +97.65737405773279 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +36A4C +330 +36A3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +36A41 +330 +36A3F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D09 +330 +36D07 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +36D0A +330 +36D07 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36D0B +330 +36D07 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +36D0C +330 +36D07 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +36D0D +330 +36D07 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D72 +330 +36D71 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D25 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D25 + 1 + + 0 +LINE + 5 +36E97 +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 11 +107.7647091125723 + 21 +31.00000000000003 + 31 +0.0 + 0 +LINE + 5 +36E98 +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +92.24999999999999 + 20 +-30.99999999999997 + 30 +0.0 + 11 +107.7647091125723 + 21 +-30.99999999999998 + 31 +0.0 + 0 +LINE + 5 +36E99 +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +107.4647091125723 + 20 +29.25000000000002 + 30 +0.0 + 11 +107.4647091125723 + 21 +6.582354534277194 + 31 +0.0 + 0 +LINE + 5 +36E9A +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +107.4647091125723 + 20 +-29.24999999999998 + 30 +0.0 + 11 +107.4647091125723 + 21 +-6.850978799056137 + 31 +0.0 + 0 +SOLID + 5 +36E9B +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +107.1730424459056 + 20 +29.25000000000002 + 30 +0.0 + 11 +107.756375779239 + 21 +29.25000000000002 + 31 +0.0 + 12 +107.4647091125723 + 22 +31.00000000000003 + 32 +0.0 + 13 +107.4647091125723 + 23 +31.00000000000003 + 33 +0.0 + 0 +SOLID + 5 +36E9C +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +107.1730424459056 + 20 +-29.24999999999998 + 30 +0.0 + 11 +107.756375779239 + 21 +-29.24999999999998 + 31 +0.0 + 12 +107.4647091125723 + 22 +-30.99999999999998 + 32 +0.0 + 13 +107.4647091125723 + 23 +-30.99999999999998 + 33 +0.0 + 0 +MTEXT + 5 +36E9D +330 +36D71 +100 +AcDbEntity + 8 +0 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +107.4647091125723 + 20 +-0.1343121323894536 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36E9E +330 +36D71 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 0 +POINT + 5 +36E9F +330 +36D71 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +92.24999999999999 + 20 +-30.99999999999997 + 30 +0.0 + 0 +POINT + 5 +36EA0 +330 +36D71 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +107.4647091125723 + 20 +-30.99999999999998 + 30 +0.0 + 0 +ENDBLK + 5 +36D73 +330 +36D71 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D7F +330 +36D7E +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D26 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D26 + 1 + + 0 +LINE + 5 +36DDA +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-92.25000000000003 + 20 +14.00000000000003 + 30 +0.0 + 11 +-107.3740128702473 + 21 +14.00000000000003 + 31 +0.0 + 0 +LINE + 5 +36DDB +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-92.24999999999997 + 20 +-14.00000000000004 + 30 +0.0 + 11 +-107.3740128702473 + 21 +-14.00000000000004 + 31 +0.0 + 0 +LINE + 5 +36DDC +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-107.0740128702473 + 20 +12.25000000000003 + 30 +0.0 + 11 +-107.0740128702473 + 21 +8.837878787880368 + 31 +0.0 + 0 +LINE + 5 +36DDD +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-107.0740128702473 + 20 +-12.25000000000004 + 30 +0.0 + 11 +-107.0740128702473 + 21 +-4.595454545452961 + 31 +0.0 + 0 +SOLID + 5 +36DDE +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-107.365679536914 + 20 +12.25000000000003 + 30 +0.0 + 11 +-106.7823462035806 + 21 +12.25000000000003 + 31 +0.0 + 12 +-107.0740128702473 + 22 +14.00000000000003 + 32 +0.0 + 13 +-107.0740128702473 + 23 +14.00000000000003 + 33 +0.0 + 0 +SOLID + 5 +36DDF +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-107.365679536914 + 20 +-12.25000000000004 + 30 +0.0 + 11 +-106.7823462035806 + 21 +-12.25000000000004 + 31 +0.0 + 12 +-107.0740128702473 + 22 +-14.00000000000004 + 32 +0.0 + 13 +-107.0740128702473 + 23 +-14.00000000000004 + 33 +0.0 + 0 +MTEXT + 5 +36DE0 +330 +36D7E +100 +AcDbEntity + 8 +0 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +-107.0740128702473 + 20 +2.121212121213687 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;28.00%%P0.10 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36DE1 +330 +36D7E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-92.25000000000003 + 20 +14.00000000000003 + 30 +0.0 + 0 +POINT + 5 +36DE2 +330 +36D7E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-92.24999999999997 + 20 +-14.00000000000004 + 30 +0.0 + 0 +POINT + 5 +36DE3 +330 +36D7E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-107.0740128702473 + 20 +-14.00000000000004 + 30 +0.0 + 0 +ENDBLK + 5 +36D80 +330 +36D7E +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D8C +330 +36D8B +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D27 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D27 + 1 + + 0 +LINE + 5 +36E3D +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-92.25000000000003 + 20 +14.00000000000005 + 30 +0.0 + 11 +-92.25000000000003 + 21 +23.34397350616392 + 31 +0.0 + 0 +LINE + 5 +36E3E +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-95.00000000000003 + 20 +14.00000000000005 + 30 +0.0 + 11 +-95.00000000000003 + 21 +23.34397350616392 + 31 +0.0 + 0 +LINE + 5 +36E3F +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-90.50000000000002 + 20 +23.04397350616392 + 30 +0.0 + 11 +-88.75000000000003 + 21 +23.04397350616392 + 31 +0.0 + 0 +LINE + 5 +36E40 +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-96.75000000000004 + 20 +23.04397350616392 + 30 +0.0 + 11 +-98.50000000000003 + 21 +23.04397350616392 + 31 +0.0 + 0 +LINE + 5 +36E41 +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-92.25000000000003 + 20 +23.04397350616392 + 30 +0.0 + 11 +-95.00000000000003 + 21 +23.04397350616392 + 31 +0.0 + 0 +SOLID + 5 +36E42 +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-90.50000000000002 + 20 +23.33564017283059 + 30 +0.0 + 11 +-90.50000000000002 + 21 +22.75230683949725 + 31 +0.0 + 12 +-92.25000000000003 + 22 +23.04397350616392 + 32 +0.0 + 13 +-92.25000000000003 + 23 +23.04397350616392 + 33 +0.0 + 0 +SOLID + 5 +36E43 +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-96.75000000000004 + 20 +23.33564017283059 + 30 +0.0 + 11 +-96.75000000000004 + 21 +22.75230683949725 + 31 +0.0 + 12 +-95.00000000000003 + 22 +23.04397350616392 + 32 +0.0 + 13 +-95.00000000000003 + 23 +23.04397350616392 + 33 +0.0 + 0 +MTEXT + 5 +36E44 +330 +36D8B +100 +AcDbEntity + 8 +ͼ2 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +-101.425 + 20 +23.04397350616392 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;2.75 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36E45 +330 +36D8B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-92.25000000000003 + 20 +14.00000000000005 + 30 +0.0 + 0 +POINT + 5 +36E46 +330 +36D8B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-95.00000000000003 + 20 +14.00000000000005 + 30 +0.0 + 0 +POINT + 5 +36E47 +330 +36D8B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-95.00000000000003 + 20 +23.04397350616392 + 30 +0.0 + 0 +ENDBLK + 5 +36D8D +330 +36D8B +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D9A +330 +36D99 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D28 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D28 + 1 + + 0 +LINE + 5 +36EB5 +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-92.24999999999997 + 20 +-14.00000000000004 + 30 +0.0 + 11 +-92.24999999999997 + 21 +-72.98937224859826 + 31 +0.0 + 0 +LINE + 5 +36EB6 +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +92.24999999999999 + 20 +-30.99999999999997 + 30 +0.0 + 11 +92.24999999999999 + 21 +-72.98937224859826 + 31 +0.0 + 0 +LINE + 5 +36EB7 +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-90.49999999999997 + 20 +-72.68937224859826 + 30 +0.0 + 11 +-5.460159980897719 + 21 +-72.68937224859826 + 31 +0.0 + 0 +LINE + 5 +36EB8 +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +90.5 + 20 +-72.68937224859826 + 30 +0.0 + 11 +9.431506685768942 + 21 +-72.68937224859826 + 31 +0.0 + 0 +SOLID + 5 +36EB9 +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-90.49999999999997 + 20 +-72.39770558193159 + 30 +0.0 + 11 +-90.49999999999997 + 21 +-72.98103891526493 + 31 +0.0 + 12 +-92.24999999999997 + 22 +-72.68937224859826 + 32 +0.0 + 13 +-92.24999999999997 + 23 +-72.68937224859826 + 33 +0.0 + 0 +SOLID + 5 +36EBA +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +90.5 + 20 +-72.39770558193159 + 30 +0.0 + 11 +90.5 + 21 +-72.98103891526493 + 31 +0.0 + 12 +92.24999999999999 + 22 +-72.68937224859826 + 32 +0.0 + 13 +92.24999999999999 + 23 +-72.68937224859826 + 33 +0.0 + 0 +MTEXT + 5 +36EBB +330 +36D99 +100 +AcDbEntity + 8 +0 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +1.985673352435611 + 20 +-72.68937224859826 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;184.50%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36EBC +330 +36D99 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-92.24999999999997 + 20 +-14.00000000000004 + 30 +0.0 + 0 +POINT + 5 +36EBD +330 +36D99 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +92.24999999999999 + 20 +-30.99999999999997 + 30 +0.0 + 0 +POINT + 5 +36EBE +330 +36D99 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +92.24999999999999 + 20 +-72.68937224859826 + 30 +0.0 + 0 +ENDBLK + 5 +36D9B +330 +36D99 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36DBB +330 +36DBA +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D29 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D29 + 1 + + 0 +LINE + 5 +36E02 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-100.0801758952247 + 20 +19.14067820602371 + 30 +0.0 + 11 +-98.33017589522459 + 21 +19.14067820602371 + 31 +0.0 + 0 +LINE + 5 +36E03 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-98.33017589522459 + 20 +19.14067820602371 + 30 +0.0 + 11 +-94.15909819715777 + 21 +15.61410782589305 + 31 +0.0 + 0 +LINE + 5 +36E04 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-90.34090180284225 + 20 +12.38589217410705 + 30 +0.0 + 11 +-89.00453306483182 + 21 +11.25601669598195 + 31 +0.0 + 0 +MTEXT + 5 +36E05 +102 +{ACAD_XDICTIONARY +360 +36FD4 +102 +} +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +-108.2204536730025 + 20 +19.1406782060237 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;{\fSimSun|b0|i0|c134|p2;4-Ϳ}\U+22051.50 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +36E06 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +-91.67727054085267 + 20 +13.51576765223214 + 30 +0.0 + 11 +-92.82272945914733 + 21 +14.48423234776795 + 31 +0.0 + 0 +SOLID + 5 +36E07 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-90.15258922315473 + 20 +12.60862029710878 + 30 +0.0 + 11 +-90.52921438252978 + 21 +12.16316405110531 + 31 +0.0 + 12 +-91.67727054085267 + 22 +13.51576765223214 + 32 +0.0 + 13 +-91.67727054085267 + 23 +13.51576765223214 + 33 +0.0 + 0 +SOLID + 5 +36E08 +330 +36DBA +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +-93.97078561747026 + 20 +15.83683594889478 + 30 +0.0 + 11 +-94.34741077684529 + 21 +15.39137970289131 + 31 +0.0 + 12 +-92.82272945914733 + 22 +14.48423234776795 + 32 +0.0 + 13 +-92.82272945914733 + 23 +14.48423234776795 + 33 +0.0 + 0 +POINT + 5 +36E09 +330 +36DBA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-92.82272945914733 + 20 +14.48423234776795 + 30 +0.0 + 0 +POINT + 5 +36E0A +330 +36DBA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +-91.67727054085267 + 20 +13.51576765223214 + 30 +0.0 + 0 +ENDBLK + 5 +36DBC +330 +36DBA +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36E4A +330 +36E49 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D30 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D30 + 1 + + 0 +LINE + 5 +36E6F +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 11 +92.24999999999999 + 21 +33.53453684942353 + 31 +0.0 + 0 +LINE + 5 +36E70 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +95.0 + 20 +31.00000000000003 + 30 +0.0 + 11 +95.0 + 21 +33.53453684942353 + 31 +0.0 + 0 +LINE + 5 +36E71 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +90.5 + 20 +33.23453684942354 + 30 +0.0 + 11 +88.75 + 21 +33.23453684942354 + 31 +0.0 + 0 +LINE + 5 +36E72 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +96.75 + 20 +33.23453684942354 + 30 +0.0 + 11 +98.50000000000001 + 21 +33.23453684942354 + 31 +0.0 + 0 +LINE + 5 +36E73 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +92.24999999999999 + 20 +33.23453684942354 + 30 +0.0 + 11 +95.0 + 21 +33.23453684942354 + 31 +0.0 + 0 +SOLID + 5 +36E74 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +90.5 + 20 +33.5262035160902 + 30 +0.0 + 11 +90.5 + 21 +32.94287018275687 + 31 +0.0 + 12 +92.24999999999999 + 22 +33.23453684942354 + 32 +0.0 + 13 +92.24999999999999 + 23 +33.23453684942354 + 33 +0.0 + 0 +SOLID + 5 +36E75 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +96.75 + 20 +33.5262035160902 + 30 +0.0 + 11 +96.75 + 21 +32.94287018275687 + 31 +0.0 + 12 +95.0 + 22 +33.23453684942354 + 32 +0.0 + 13 +95.0 + 23 +33.23453684942354 + 33 +0.0 + 0 +MTEXT + 5 +36E76 +330 +36E49 +100 +AcDbEntity + 8 +ͼ2 + 62 + 2 +440 + 16777216 +100 +AcDbMText + 10 +101.425 + 20 +33.23453684942354 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;2.75 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36E77 +330 +36E49 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 0 +POINT + 5 +36E78 +330 +36E49 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +95.0 + 20 +31.00000000000003 + 30 +0.0 + 0 +POINT + 5 +36E79 +330 +36E49 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +95.0 + 20 +33.23453684942354 + 30 +0.0 + 0 +ENDBLK + 5 +36E4B +330 +36E49 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36FEF +330 +36FEE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D31 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D31 + 1 + + 0 +LINE + 5 +37044 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +71.69500000000002 + 20 +44.10000000000002 + 30 +0.0 + 11 +116.2349378861295 + 21 +44.10000000000001 + 31 +0.0 + 0 +LINE + 5 +37045 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +71.69500000000002 + 20 +-53.89999999999997 + 30 +0.0 + 11 +116.2349378861295 + 21 +-53.89999999999999 + 31 +0.0 + 0 +LINE + 5 +37046 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +115.9349378861295 + 20 +42.35000000000001 + 30 +0.0 + 11 +115.9349378861295 + 21 +1.816666666666677 + 31 +0.0 + 0 +LINE + 5 +37047 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +100 +AcDbLine + 10 +115.9349378861295 + 20 +-52.14999999999999 + 30 +0.0 + 11 +115.9349378861295 + 21 +-11.61666666666665 + 31 +0.0 + 0 +SOLID + 5 +37048 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +115.6432712194629 + 20 +42.35000000000001 + 30 +0.0 + 11 +116.2266045527962 + 21 +42.35000000000001 + 31 +0.0 + 12 +115.9349378861295 + 22 +44.10000000000001 + 32 +0.0 + 13 +115.9349378861295 + 23 +44.10000000000001 + 33 +0.0 + 0 +SOLID + 5 +37049 +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 1 +440 + 16777216 +370 + 30 +100 +AcDbTrace + 10 +115.6432712194628 + 20 +-52.14999999999999 + 30 +0.0 + 11 +116.2266045527962 + 21 +-52.14999999999999 + 31 +0.0 + 12 +115.9349378861295 + 22 +-53.89999999999999 + 32 +0.0 + 13 +115.9349378861295 + 23 +-53.89999999999999 + 33 +0.0 + 0 +MTEXT + 5 +3704A +330 +36FEE +100 +AcDbEntity + 8 +0 + 62 + 4 +440 + 16777216 +370 + 30 +100 +AcDbMText + 10 +115.9349378861295 + 20 +-4.89999999999997 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;98.00%%P0.10 + 11 +0.0000000000000001 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3704B +330 +36FEE +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +71.69500000000002 + 20 +44.10000000000002 + 30 +0.0 + 0 +POINT + 5 +3704C +330 +36FEE +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +71.69500000000002 + 20 +-53.89999999999997 + 30 +0.0 + 0 +POINT + 5 +3704D +330 +36FEE +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +440 + 16777216 +370 + 30 +100 +AcDbPoint + 10 +115.9349378861295 + 20 +-53.89999999999999 + 30 +0.0 + 0 +ENDBLK + 5 +36FF0 +330 +36FEE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +37167 +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +A$C39296DF6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C39296DF6 + 1 + + 0 +HATCH + 5 +37168 +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 1 + 10 +-6.607290536453888 + 20 +-0.75 + 11 +-6.163600744849645 + 21 +-0.75 + 72 + 1 + 10 +-6.163600744849645 + 20 +-0.75 + 11 +-5.847803482341475 + 21 +0.4285714285713383 + 72 + 1 + 10 +-5.847803482341475 + 20 +0.4285714285713383 + 11 +-5.404113690737233 + 21 +0.4285714285713383 + 72 + 1 + 10 +-5.404113690737233 + 20 +0.4285714285713383 + 11 +-5.317987164598605 + 21 +0.75 + 72 + 1 + 10 +-5.317987164598605 + 20 +0.75 + 11 +-6.649056539411617 + 21 +0.75 + 72 + 1 + 10 +-6.649056539411617 + 20 +0.75 + 11 +-6.735183065549904 + 21 +0.4285714285713383 + 72 + 1 + 10 +-6.735183065549904 + 20 +0.4285714285713383 + 11 +-6.291493273945661 + 21 +0.4285714285713383 + 72 + 1 + 10 +-6.291493273945661 + 20 +0.4285714285713383 + 11 +-6.607290536453888 + 21 +-0.75 + 97 + 1 +330 +3716E + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.371500627582861 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +37169 +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 1 + 10 +4.102037983667457 + 20 +-0.75 + 11 +4.545727775271586 + 21 +-0.75 + 72 + 1 + 10 +4.545727775271586 + 20 +-0.75 + 11 +4.86152503777987 + 21 +0.4285714285713489 + 72 + 1 + 10 +4.86152503777987 + 20 +0.4285714285713489 + 11 +5.305214829384112 + 21 +0.4285714285713489 + 72 + 1 + 10 +5.305214829384112 + 20 +0.4285714285713489 + 11 +5.391341355522683 + 21 +0.7500000000000036 + 72 + 1 + 10 +5.391341355522683 + 20 +0.7500000000000036 + 11 +4.060271980709728 + 21 +0.7500000000000036 + 72 + 1 + 10 +4.060271980709728 + 20 +0.7500000000000036 + 11 +3.974145454571385 + 21 +0.4285714285713489 + 72 + 1 + 10 +3.974145454571385 + 20 +0.4285714285713489 + 11 +4.417835246175627 + 21 +0.4285714285713489 + 72 + 1 + 10 +4.417835246175627 + 20 +0.4285714285713489 + 11 +4.102037983667457 + 21 +-0.75 + 97 + 1 +330 +37179 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.97565691937757 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +3716A +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 9 + 72 + 1 + 10 +-0.5059988773611508 + 20 +-0.2142857142857686 + 11 +-0.6417467756733686 + 21 +-0.75 + 72 + 1 + 10 +-0.6417467756733686 + 20 +-0.75 + 11 +-0.1996302025830232 + 21 +-0.75 + 72 + 1 + 10 +-0.1996302025830232 + 20 +-0.75 + 11 +-0.0638823042705781 + 21 +-0.2142857142857686 + 72 + 1 + 10 +-0.0638823042705781 + 20 +-0.2142857142857686 + 11 +0.7331096290545247 + 21 +0.7500000000000036 + 72 + 1 + 10 +0.7331096290545247 + 20 +0.7500000000000036 + 11 +0.3161040228358161 + 21 +0.7500000000000036 + 72 + 1 + 10 +0.3161040228358161 + 20 +0.7500000000000036 + 11 +-0.2676299379711509 + 21 +0.0437364911570413 + 72 + 1 + 10 +-0.2676299379711509 + 20 +0.0437364911570413 + 11 +-0.5743890057416934 + 21 +0.7500000000000036 + 72 + 1 + 10 +-0.5743890057416934 + 20 +0.7500000000000036 + 11 +-0.9248275200347393 + 21 +0.7500000000000036 + 72 + 1 + 10 +-0.9248275200347393 + 20 +0.7500000000000036 + 11 +-0.5059988773611508 + 21 +-0.2142857142857686 + 97 + 1 +330 +37172 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.742912801658292 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +3716B +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 6 + 72 + 1 + 10 +-0.9802714998962187 + 20 +-0.75 + 11 +-2.085562932622622 + 21 +-0.75 + 72 + 1 + 10 +-2.085562932622622 + 20 +-0.75 + 11 +-1.705468817347934 + 21 +0.7500000000000036 + 72 + 1 + 10 +-1.705468817347934 + 20 +0.7500000000000036 + 11 +-1.263352244257646 + 21 +0.7500000000000036 + 72 + 1 + 10 +-1.263352244257646 + 20 +0.7500000000000036 + 11 +-1.56199762054473 + 21 +-0.4285714285715017 + 72 + 1 + 10 +-1.56199762054473 + 20 +-0.4285714285715017 + 11 +-0.8988227609089562 + 21 +-0.4285714285715017 + 72 + 1 + 10 +-0.8988227609089562 + 20 +-0.4285714285715017 + 11 +-0.9802714998962187 + 21 +-0.75 + 97 + 1 +330 +37171 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.570516842619554 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +3716C +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 12 + 72 + 1 + 10 +-3.411912651894169 + 20 +0.7584646415887982 + 11 +-3.656733142657344 + 21 +-0.2076927425624504 + 72 + 2 + 10 +-3.241291875428203 + 20 +-0.3129639298397713 + 40 +0.4285714285714229 + 50 +165.7807684394565 + 51 +269.999999999997 + 73 + 1 + 72 + 1 + 10 +-3.241291875428203 + 20 +-0.7415353584111948 + 11 +-2.96593442955816 + 21 +-0.7415353584112481 + 72 + 2 + 10 +-2.965934429558103 + 20 +-0.0986782155540453 + 40 +0.6428571428572023 + 50 +269.9999999999958 + 51 +345.7807684394554 + 73 + 1 + 72 + 1 + 10 +-2.342772528714306 + 20 +-0.2565849964700568 + 11 +-2.085562932622622 + 21 +0.7584646415887982 + 72 + 1 + 10 +-2.085562932622622 + 20 +0.7584646415887982 + 11 +-2.527679505713251 + 21 +0.7584646415887982 + 72 + 1 + 10 +-2.527679505713251 + 20 +0.7584646415887982 + 11 +-2.777171074327043 + 21 +-0.2261266422062036 + 72 + 2 + 10 +-3.026435834664482 + 20 +-0.1629639298398775 + 40 +0.2571428571427549 + 50 +14.2192315605337 + 51 +89.99999999999317 + 73 + 0 + 72 + 1 + 10 +-3.026435834664425 + 20 +-0.4201067869826325 + 11 +-3.08486982451069 + 21 +-0.4201067869826965 + 72 + 2 + 10 +-3.08486982451069 + 20 +-0.2772496441255328 + 40 +0.1428571428571641 + 50 +90.00000000001014 + 51 +194.2192315605507 + 73 + 0 + 72 + 1 + 10 +-3.223350246920404 + 20 +-0.2421592483664021 + 11 +-2.96979607880354 + 21 +0.7584646415887982 + 72 + 1 + 10 +-2.96979607880354 + 20 +0.7584646415887982 + 11 +-3.411912651894169 + 21 +0.7584646415887982 + 97 + 1 +330 +37170 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.570516842619554 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +3716D +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 17 + 72 + 1 + 10 +-4.493277287250293 + 20 +-0.75 + 11 +-4.05036852245081 + 21 +-0.7500000000000071 + 72 + 2 + 10 +-4.050368522450867 + 20 +-0.7071428571428289 + 40 +0.0428571428571779 + 50 +89.99999999993589 + 51 +194.219231560477 + 73 + 0 + 72 + 1 + 10 +-4.091912649173821 + 20 +-0.6966157384151366 + 11 +-3.991222067522244 + 21 +-0.2992513320538208 + 72 + 2 + 10 +-4.157398574413889 + 20 +-0.2571428571428207 + 40 +0.1714285714285577 + 50 +345.7807684394307 + 51 +441.9688431902831 + 73 + 1 + 72 + 2 + 10 +-4.262041382767279 + 20 +0.3214285714285783 + 40 +0.4285714285714214 + 50 +287.4606773594162 + 51 +449.9999999999996 + 73 + 1 + 72 + 1 + 10 +-4.262041382767279 + 20 +0.75 + 11 +-5.034585597791249 + 21 +0.75 + 72 + 1 + 10 +-5.034585597791249 + 20 +0.75 + 11 +-5.436509386437762 + 21 +-0.75 + 72 + 1 + 10 +-5.436509386437762 + 20 +-0.75 + 11 +-4.99281959483352 + 21 +-0.75 + 72 + 1 + 10 +-4.99281959483352 + 20 +-0.75 + 11 +-4.67702233232535 + 21 +0.4285714285713383 + 72 + 1 + 10 +-4.67702233232535 + 20 +0.4285714285713383 + 11 +-4.442779475641941 + 21 +0.4285714285713383 + 72 + 2 + 10 +-4.442779475641941 + 20 +0.2678571428570731 + 40 +0.1607142857142652 + 50 +270.0 + 51 +450.0 + 73 + 0 + 72 + 1 + 10 +-4.442779475641941 + 20 +0.1071428571428079 + 11 +-4.585672941822224 + 21 +0.1071428571428434 + 72 + 1 + 10 +-4.585672941822224 + 20 +0.1071428571428434 + 11 +-4.660315931142406 + 21 +-0.1714285714286099 + 72 + 1 + 10 +-4.660315931142406 + 20 +-0.1714285714286099 + 11 +-4.589585862105934 + 21 +-0.1714285714286099 + 72 + 2 + 10 +-4.589585862105934 + 20 +-0.3214285714286085 + 40 +0.1499999999999994 + 50 +269.9999999999919 + 51 +374.9999999999914 + 73 + 0 + 72 + 1 + 10 +-4.444696988162547 + 20 +-0.3602514281939655 + 11 +-4.534674108377089 + 21 +-0.6960506123528099 + 72 + 2 + 10 +-4.49327728725035 + 20 +-0.7071428571428413 + 40 +0.0428571428571587 + 50 +165.0000000001116 + 51 +270.0000000001129 + 73 + 1 + 97 + 1 +330 +3716F + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.689039064458654 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +3716E +102 +{ACAD_REACTORS +330 +37168 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-6.607290536453888 + 20 +-0.75 + 10 +-6.163600744849645 + 20 +-0.75 + 10 +-5.847803482341475 + 20 +0.4285714285713383 + 10 +-5.404113690737233 + 20 +0.4285714285713383 + 10 +-5.317987164598605 + 20 +0.75 + 10 +-6.649056539411617 + 20 +0.75 + 10 +-6.735183065549904 + 20 +0.4285714285713383 + 10 +-6.291493273945661 + 20 +0.4285714285713383 + 0 +LWPOLYLINE + 5 +3716F +102 +{ACAD_REACTORS +330 +3716D +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 17 + 70 + 1 + 43 +0.0 + 10 +-4.493277287250293 + 20 +-0.75 + 10 +-4.05036852245081 + 20 +-0.7500000000000071 + 42 +-0.4889172735380292 + 10 +-4.091912649173821 + 20 +-0.6966157384151366 + 10 +-3.991222067522244 + 20 +-0.2992513320538208 + 42 +0.4462123483412442 + 10 +-4.133448018330341 + 20 +-0.087395615735705 + 42 +0.8581587073163973 + 10 +-4.262041382767279 + 20 +0.75 + 10 +-5.034585597791249 + 20 +0.75 + 10 +-5.436509386437762 + 20 +-0.75 + 10 +-4.99281959483352 + 20 +-0.75 + 10 +-4.67702233232535 + 20 +0.4285714285713383 + 10 +-4.442779475641941 + 20 +0.4285714285713383 + 42 +-0.9999999999999998 + 10 +-4.442779475641941 + 20 +0.1071428571428079 + 10 +-4.585672941822224 + 20 +0.1071428571428434 + 10 +-4.660315931142406 + 20 +-0.1714285714286099 + 10 +-4.589585862105934 + 20 +-0.1714285714286099 + 42 +-0.4931454260313018 + 10 +-4.444696988162547 + 20 +-0.3602514281939655 + 10 +-4.534674108377089 + 20 +-0.6960506123528099 + 42 +0.4931454260313103 + 0 +LWPOLYLINE + 5 +37170 +102 +{ACAD_REACTORS +330 +3716C +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 12 + 70 + 1 + 43 +0.0 + 10 +-3.411912651894169 + 20 +0.7584646415887982 + 10 +-3.656733142657344 + 20 +-0.2076927425624504 + 42 +0.4889172735380292 + 10 +-3.241291875428203 + 20 +-0.7415353584111948 + 10 +-2.96593442955816 + 20 +-0.7415353584112481 + 42 +0.3432579737942821 + 10 +-2.342772528714306 + 20 +-0.2565849964700568 + 10 +-2.085562932622622 + 20 +0.7584646415887982 + 10 +-2.527679505713251 + 20 +0.7584646415887982 + 10 +-2.777171074327043 + 20 +-0.2261266422062036 + 42 +-0.3432579737942821 + 10 +-3.026435834664425 + 20 +-0.4201067869826325 + 10 +-3.08486982451069 + 20 +-0.4201067869826965 + 42 +-0.4889172735380292 + 10 +-3.223350246920404 + 20 +-0.2421592483664021 + 10 +-2.96979607880354 + 20 +0.7584646415887982 + 0 +LWPOLYLINE + 5 +37171 +102 +{ACAD_REACTORS +330 +3716B +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 6 + 70 + 1 + 43 +0.0 + 10 +-0.9802714998962187 + 20 +-0.75 + 10 +-2.085562932622622 + 20 +-0.75 + 10 +-1.705468817347934 + 20 +0.7500000000000036 + 10 +-1.263352244257646 + 20 +0.7500000000000036 + 10 +-1.56199762054473 + 20 +-0.4285714285715017 + 10 +-0.8988227609089562 + 20 +-0.4285714285715017 + 0 +LWPOLYLINE + 5 +37172 +102 +{ACAD_REACTORS +330 +3716A +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 9 + 70 + 1 + 43 +0.0 + 10 +-0.5059988773611508 + 20 +-0.2142857142857686 + 10 +-0.6417467756733686 + 20 +-0.75 + 10 +-0.1996302025830232 + 20 +-0.75 + 10 +-0.0638823042705781 + 20 +-0.2142857142857686 + 10 +0.7331096290545247 + 20 +0.7500000000000036 + 10 +0.3161040228358161 + 20 +0.7500000000000036 + 10 +-0.2676299379711509 + 20 +0.0437364911570413 + 10 +-0.5743890057416934 + 20 +0.7500000000000036 + 10 +-0.9248275200347393 + 20 +0.7500000000000036 + 0 +HATCH + 5 +37173 +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 16 + 93 + 1 + 72 + 3 + 10 +1.423450090464996 + 20 +0.0463382609707175 + 11 +0.1460264594887954 + 21 +0.4559431698986089 + 40 +0.5840248966443715 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +37174 + 92 + 1 + 93 + 1 + 72 + 3 + 10 +1.434097854701917 + 20 +0.023486581086555 + 11 +-0.4943604695431759 + 21 +-0.6823949529461899 + 40 +0.7238985945326135 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +37175 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.984570756647428 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ELLIPSE + 5 +37174 +102 +{ACAD_REACTORS +330 +37173 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbEllipse + 10 +1.423450090464996 + 20 +0.0463382609707175 + 30 +0.0 + 11 +0.1460264594887954 + 21 +0.4559431698986089 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.5840248966443715 + 41 +0.0 + 42 +6.283185307179586 + 0 +ELLIPSE + 5 +37175 +102 +{ACAD_REACTORS +330 +37173 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbEllipse + 10 +1.434097854701917 + 20 +0.023486581086555 + 30 +0.0 + 11 +-0.4943604695431758 + 21 +-0.6823949529461896 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +0.9999999999999998 + 40 +0.7238985945326135 + 41 +0.0 + 42 +6.283185307179586 + 0 +HATCH + 5 +37176 +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 16 + 93 + 7 + 72 + 2 + 10 +3.142908788119257 + 20 +0.1782716930502701 + 40 +0.2645629607002351 + 50 +56.87534388037177 + 51 +86.40822169352878 + 73 + 1 + 72 + 1 + 10 +3.159482944984858 + 20 +0.4423149802186224 + 11 +2.977075005890071 + 21 +0.4423149802186224 + 72 + 1 + 10 +2.977075005890071 + 20 +0.4423149802186224 + 11 +2.879720204705961 + 21 +0.0863993151615006 + 72 + 2 + 10 +2.941312083299351 + 20 +0.974267435736305 + 40 +0.8900018871000762 + 50 +266.0317189659976 + 51 +283.7306133465793 + 73 + 1 + 72 + 2 + 10 +3.093486123893569 + 20 +0.351241771959474 + 40 +0.2486611775085489 + 50 +283.7431385048097 + 51 +314.0431238812516 + 73 + 1 + 72 + 2 + 10 +3.130186627594014 + 20 +0.313294486579899 + 40 +0.1958698577718045 + 50 +314.0431238812562 + 51 +369.0575739057379 + 73 + 1 + 72 + 2 + 10 +3.24271716152316 + 20 +0.3312335040897345 + 40 +0.0819184233113326 + 50 +9.057573905764185 + 51 +56.87534388040318 + 73 + 1 + 97 + 1 +330 +37178 + 92 + 1 + 93 + 10 + 72 + 1 + 10 +2.627069418971814 + 20 +0.7504794616639004 + 11 +2.221342478711505 + 21 +-0.75 + 72 + 1 + 10 +2.221342478711505 + 20 +-0.75 + 11 +2.653724696312281 + 21 +-0.75 + 72 + 1 + 10 +2.653724696312281 + 20 +-0.75 + 11 +2.798283144529705 + 21 +-0.2212102368802071 + 72 + 1 + 10 +2.798283144529705 + 20 +-0.2212102368802071 + 11 +3.060726965539515 + 21 +-0.2214313130130741 + 72 + 2 + 10 +3.061431261487769 + 20 +0.6146522450631196 + 40 +0.8360838547168164 + 50 +269.9517354749692 + 51 +300.1434776980142 + 73 + 1 + 72 + 2 + 10 +3.202690231952715 + 20 +0.3713933628267991 + 40 +0.5547851157866765 + 50 +300.1434776980167 + 51 +331.9180495295729 + 73 + 1 + 72 + 2 + 10 +3.100175587616945 + 20 +0.4260895903557121 + 40 +0.6709786165050265 + 50 +331.9180495295637 + 51 +363.6303544461221 + 73 + 1 + 72 + 2 + 10 +3.547258886665701 + 20 +0.4544554908809478 + 40 +0.2229963617215101 + 50 +3.630354446141239 + 51 +52.57145036559345 + 73 + 1 + 72 + 2 + 10 +3.333306737003624 + 20 +0.1782644247117808 + 40 +0.5723606481338194 + 50 +52.36715159965942 + 51 +88.70756319306121 + 73 + 1 + 72 + 1 + 10 +3.346216540179852 + 20 +0.7504794616639004 + 11 +2.627069418971814 + 21 +0.7504794616639004 + 97 + 1 +330 +37177 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-8.112247779249457 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +37177 +102 +{ACAD_REACTORS +330 +37176 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 10 + 70 + 1 + 43 +0.0 + 10 +2.627069418971814 + 20 +0.7504794616639004 + 10 +2.221342478711505 + 20 +-0.75 + 10 +2.653724696312281 + 20 +-0.75 + 10 +2.798283144529705 + 20 +-0.2212102368802071 + 10 +3.060726965539515 + 20 +-0.2214313130130741 + 42 +0.132503725667184 + 10 +3.481285061717642 + 20 +-0.1083685005248895 + 42 +0.1395379289645411 + 10 +3.692163382138119 + 20 +0.1102371644588338 + 42 +0.1392609587437038 + 10 +3.769807766693304 + 20 +0.4685754533272011 + 42 +0.2168521647898301 + 10 +3.68278974429495 + 20 +0.6315395499356989 + 42 +0.1599073858347573 + 10 +3.346216540179852 + 20 +0.7504794616639004 + 0 +LWPOLYLINE + 5 +37178 +102 +{ACAD_REACTORS +330 +37176 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbPolyline + 90 + 7 + 70 + 1 + 43 +0.0 + 10 +3.287482500248302 + 20 +0.3998388429974326 + 42 +0.1295795189821438 + 10 +3.159482944984858 + 20 +0.4423149802186224 + 10 +2.977075005890071 + 20 +0.4423149802186224 + 10 +2.879720204705961 + 20 +0.0863993151615006 + 42 +0.0773798838730818 + 10 +3.152560452136469 + 20 +0.1096996328975983 + 42 +0.1329843479164933 + 10 +3.266355271905524 + 20 +0.1724999501450064 + 42 +0.2447652696592742 + 10 +3.323614115190366 + 20 +0.3441296649597163 + 42 +0.2117256493055502 + 0 +LWPOLYLINE + 5 +37179 +102 +{ACAD_REACTORS +330 +37169 +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.102037983667457 + 20 +-0.75 + 10 +4.545727775271586 + 20 +-0.75 + 10 +4.86152503777987 + 20 +0.4285714285713489 + 10 +5.305214829384112 + 20 +0.4285714285713489 + 10 +5.391341355522683 + 20 +0.7500000000000036 + 10 +4.060271980709728 + 20 +0.7500000000000036 + 10 +3.974145454571385 + 20 +0.4285714285713489 + 10 +4.417835246175627 + 20 +0.4285714285713489 + 0 +HATCH + 5 +3717A +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 1 + 93 + 1 + 72 + 3 + 10 +6.036449051179658 + 20 +0.023486581086555 + 11 +-0.4943604695431759 + 21 +-0.6823949529461899 + 40 +0.7238985945326135 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +3717C + 92 + 16 + 93 + 1 + 72 + 3 + 10 +6.025801286942794 + 20 +0.046338260970721 + 11 +0.1460264594887954 + 21 +0.4559431698986089 + 40 +0.5840248966443715 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +3717B + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-8.230855908133662 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632569 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ELLIPSE + 5 +3717B +102 +{ACAD_REACTORS +330 +3717A +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbEllipse + 10 +6.025801286942794 + 20 +0.046338260970721 + 30 +0.0 + 11 +0.1460264594887954 + 21 +0.4559431698986089 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.5840248966443715 + 41 +0.0 + 42 +6.283185307179586 + 0 +ELLIPSE + 5 +3717C +102 +{ACAD_REACTORS +330 +3717A +102 +} +330 +37164 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbEllipse + 10 +6.036449051179658 + 20 +0.023486581086555 + 30 +0.0 + 11 +-0.4943604695431758 + 21 +-0.6823949529461896 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +0.9999999999999998 + 40 +0.7238985945326135 + 41 +0.0 + 42 +6.283185307179586 + 0 +ENDBLK + 5 +3717D +330 +37164 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 5 +19A +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_INFO + 10 +289.0253894472404 + 20 +70.76773749452383 + 30 +0.0 + 0 +ATTRIB + 5 +19B +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +216.2673869347651 + 20 +79.71776286829442 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMWIDTH + 70 + 1 + 0 +ATTRIB + 5 +19C +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +232.7910288444278 + 20 +79.71776286829442 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMHEIGHT + 70 + 1 + 0 +ATTRIB + 5 +19D +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +251.6751919063559 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-218,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS2 + 70 + 1 + 0 +ATTRIB + 5 +19E +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +271.0314579674988 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-327,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS3 + 70 + 1 + 0 +ATTRIB + 5 +19F +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +269.8511958523182 + 20 +79.71776286829442 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSECONDLINE + 70 + 1 + 0 +ATTRIB + 5 +1A0 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +215.4478006522287 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMTHIRDLINE + 70 + 1 + 0 +ATTRIB + 5 +1A1 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +234.6794439193824 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +PDMUPDATE + 70 + 1 + 0 +ATTRIB + 5 +1A2 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +251.4391388677005 + 20 +79.71776286829442 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS + 70 + 1 + 0 +SEQEND + 5 +1A3 +330 +19A +100 +AcDbEntity + 8 +0 + 0 +INSERT + 5 +20F +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_TITLE + 10 +180.1641600000015 + 20 +-142.4236282648472 + 30 +0.0 + 41 +1.27776 + 42 +1.27776 + 43 +1.27776 + 0 +ATTRIB + 5 +211 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +71.89278774150228 + 20 +-107.8249940488735 + 30 +0.0 + 40 +3.751886688000001 + 1 +ƴͼ + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +79.09641018246228 + 21 +-107.8249940488735 + 31 +0.0 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +212 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +96.7814618547462 + 20 +-121.456922151291 + 30 +0.0 + 40 +3.751886688000001 + 1 +E219R-A1-E + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +213 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +157.4705452485934 + 20 +-121.456922151291 + 30 +0.0 + 40 +3.751886688000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +157.4705452485934 + 21 +-121.456922151291 + 31 +0.0 +100 +AcDbAttribute + 2 +ͼ + 70 + 0 + 0 +ATTRIB + 5 +214 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbText + 10 +174.3208757979482 + 20 +-121.4569502112788 + 30 +0.0 + 40 +3.751886688000001 + 1 +A + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +175.5214795381082 + 21 +-121.4569502112788 + 31 +0.0 +100 +AcDbAttribute + 2 +汾 + 70 + 0 + 0 +ATTRIB + 5 +215 +330 +20F +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +-147.2367444049608 + 20 +106.7348957607543 + 30 +0.0 + 40 +3.833280000000001 + 1 +CME219-B12BA-E + 7 +STYLE1 +100 +AcDbAttribute + 2 +ģͺţ + 70 + 0 + 0 +ATTRIB + 5 +216 +330 +20F +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +104.9412684629843 + 20 +-127.53841270782 + 30 +0.0 + 40 +2.555520000000001 + 1 +־ 20190821 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +ͼ + 70 + 0 + 0 +ATTRIB + 5 +217 +330 +20F +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +146.8235018328889 + 20 +-127.53841270782 + 30 +0.0 + 40 +2.555520000000001 + 1 +־ 20190821 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +218 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +104.9412684629843 + 20 +-133.9504859044435 + 30 +0.0 + 40 +2.555520000000001 + 1 +Τ 20190821 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +У + 70 + 0 + 0 +ATTRIB + 5 +219 +330 +20F +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +146.8235018328889 + 20 +-133.9504859044435 + 30 +0.0 + 40 +2.555520000000001 + 1 + 20190821 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +׼ + 70 + 0 + 0 +ATTRIB + 5 +21A +330 +20F +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +167.1710609133891 + 20 +-140.0874252016985 + 30 +0.0 + 40 +2.074315584 + 1 +1/1 + 7 +STYLE1 +100 +AcDbAttribute + 2 +ҳ + 70 + 0 + 0 +ATTRIB + 5 +21B +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +-0.8164945312171186 + 20 +-135.1855943018497 + 30 +0.0 + 40 +3.3 + 1 +A + 7 +STYLE1 + 72 + 1 + 11 +0.356838802116215 + 21 +-135.1855943018497 + 31 +0.0 +100 +AcDbAttribute + 2 +NO1 + 70 + 0 + 0 +ATTRIB + 5 +21C +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +20.76374793950143 + 20 +-134.3348761583341 + 30 +0.0 + 40 +2.31 + 1 +淢 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +26.67734793950143 + 21 +-134.3348761583341 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT1 + 70 + 0 + 0 +ATTRIB + 5 +21D +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +53.46282350093665 + 20 +-134.3299968629729 + 30 +0.0 + 40 +2.555520000000001 + 1 +20190821 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +60.00495470093665 + 21 +-134.3299968629729 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE1 + 70 + 0 + 0 +ATTRIB + 5 +21E +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +0.4590596021162128 + 20 +-128.7967943018496 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +0.4590596021162128 + 21 +-128.7967943018496 + 31 +0.0 +100 +AcDbAttribute + 2 +NO2 + 70 + 0 + 0 +ATTRIB + 5 +21F +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +26.77747404903997 + 20 +-127.5953373718932 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +26.77747404903997 + 21 +-127.5953373718932 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT2 + 70 + 0 + 0 +ATTRIB + 5 +220 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +59.96066883968428 + 20 +-127.4939722375662 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +59.96066883968428 + 21 +-127.4939722375662 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE2 + 70 + 0 + 0 +ATTRIB + 5 +221 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +0.2718315739596733 + 20 +-122.3230707029311 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +0.2718315739596733 + 21 +-122.3230707029311 + 31 +0.0 +100 +AcDbAttribute + 2 +NO3 + 70 + 0 + 0 +ATTRIB + 5 +222 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +26.69304375449752 + 20 +-121.0772830835586 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +26.69304375449752 + 21 +-121.0772830835586 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT3 + 70 + 0 + 0 +ATTRIB + 5 +223 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +59.96066883968428 + 20 +-121.3161806616275 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +59.96066883968428 + 21 +-121.3161806616275 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE3 + 70 + 0 + 0 +ATTRIB + 5 +224 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +0.4410218020383354 + 20 +-116.0495306394885 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +0.4410218020383354 + 21 +-116.0495306394885 + 31 +0.0 +100 +AcDbAttribute + 2 +NO4 + 70 + 0 + 0 +ATTRIB + 5 +225 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +26.69304375449752 + 20 +-114.9305806120479 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +26.69304375449752 + 21 +-114.9305806120479 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT4 + 70 + 0 + 0 +ATTRIB + 5 +226 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +59.80263404804015 + 20 +-115.0998360909364 + 30 +0.0 + 40 +2.555520000000001 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +59.80263404804015 + 21 +-115.0998360909364 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE4 + 70 + 0 + 0 +SEQEND + 5 +210 +330 +20F +100 +AcDbEntity + 8 +0 + 0 +INSERT + 5 +2A3 +330 +1F +100 +AcDbEntity + 8 +BOM +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_BOM + 10 +40.82766065469522 + 20 +-101.5353082648471 + 30 +0.0 + 41 +1.27776 + 42 +1.27776 + 43 +1.27776 + 0 +ATTRIB + 5 +2A5 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +43.34295206876664 + 20 +-98.73556896163638 + 30 +0.0 + 40 +2.299968000000001 + 1 +NO. + 72 + 4 + 11 +45.64292006876664 + 21 +-97.58558496163637 + 31 +0.0 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +2A6 +330 +2A3 +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +53.98621913908744 + 20 +-98.58721201164954 + 30 +0.0 + 40 +2.299968000000001 + 1 +NAME +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +2A7 +330 +2A3 +100 +AcDbEntity + 8 +0 +100 +AcDbText + 10 +83.80695346627966 + 20 +-98.79414431308534 + 30 +0.0 + 40 +2.299968000000001 + 1 +QTY + 72 + 1 + 11 +86.87357746627967 + 21 +-98.79414431308534 + 31 +0.0 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +2A8 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +95.26562938426065 + 20 +-98.82124942113689 + 30 +0.0 + 40 +2.299968000000001 + 1 +Part No. + 41 +0.7 +100 +AcDbAttribute + 2 + + 70 + 0 + 0 +ATTRIB + 5 +2A9 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +100 +AcDbText + 10 +151.8855652044472 + 20 +-99.05711144708952 + 30 +0.0 + 40 +2.299968000000001 + 1 +VENDER + 41 +0.5 +100 +AcDbAttribute + 2 +BOM + 70 + 0 + 0 +SEQEND + 5 +2A4 +330 +2A3 +100 +AcDbEntity + 8 +BOM + 0 +INSERT + 5 +1907 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockReference + 2 +tolerance + 10 +-17.70928281219974 + 20 +-2.16282528809846 + 30 +0.0 + 41 +1.27776 + 42 +1.27776 + 43 +1.27776 + 0 +INSERT + 5 +24AF1 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockReference + 2 +A$C15043304 + 10 +180.1641600000015 + 20 +113.1283717351528 + 30 +0.0 + 41 +2.00475 + 42 +2.00475 + 43 +2.00475 + 0 +INSERT + 5 +283E8 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockReference + 2 +ARROW MARK + 10 +0.0 + 20 +0.0000000000000142 + 30 +0.0 + 41 +1.65 + 42 +1.65 + 43 +1.65 + 0 +LINE + 5 +29157 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-179.8498729934251 + 20 +-83.41649401296862 + 30 +0.0 + 11 +-118.179555659411 + 21 +-83.41649401296862 + 31 +0.0 + 0 +LINE + 5 +29158 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbLine + 10 +-118.179555659411 + 20 +-83.41649401296862 + 30 +0.0 + 11 +-118.179555659411 + 21 +-142.4236282648473 + 31 +0.0 + 0 +MTEXT + 5 +2915A +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.5138340202459 + 20 +-87.19592055153636 + 30 +0.0 + 40 +2.148447857164285 + 41 +48.53200479476976 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;\H1.157x;NOTE\fSimSun|b0|i0|c134|p2;}\P{\fArial|b0|i0|c0|p32;1.}Unlabeled chamfering {\fArial|b0|i0|c0|p32;is} {\fArial|b0|i0|c0|p32;R0.2mm;} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +2915B +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +100 +AcDbCircle + 10 +-170.0084505626224 + 20 +-97.1963716608014 + 30 +0.0 + 40 +0.8525586734778922 + 0 +CIRCLE + 5 +2915C +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +100 +AcDbCircle + 10 +-169.6584881229171 + 20 +-106.4801249081193 + 30 +0.0 + 40 +1.705117346955784 + 0 +CIRCLE + 5 +2915D +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +100 +AcDbCircle + 10 +-169.6584881229171 + 20 +-106.4801249081193 + 30 +0.0 + 40 +0.8525586734778922 + 0 +HATCH + 5 +2915E +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-170.0084505626224 + 20 +-97.19637166080136 + 40 +0.8525586734778922 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-1453.327335557364 + 20 +301.5345916876634 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +HATCH + 5 +2915F +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 + 48 +0.3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-169.6584881229171 + 20 +-106.4801249081193 + 40 +0.8525586734778922 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-1453.103451966136 + 20 +301.5850566354394 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +MTEXT + 5 +29160 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.5599783282688 + 20 +-96.0364987543358 + 30 +0.0 + 40 +2.148447857164285 + 41 +53.50234790037737 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;2. The sheet markpoint}{\fTimes New Roman|b0|i0|c0|p18;central PAD diameter %%c1.0mm}{\fTimes New Roman|b0|i0|c0|p18;Periphery diameter %%C2.0mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +29161 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-175.0029834192542 + 20 +-110.6355478051157 + 30 +0.0 + 40 +2.148447857164285 + 41 +58.81427162507636 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18; diameter %%C\fTimes New Roman|b0|i0|c238|p18;0.6\fTimes New Roman|b0|i0|c0|p18;mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +29162 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.4214165588689 + 20 +-105.4550911198704 + 30 +0.0 + 40 +2.148447857164285 + 41 +67.34667882924314 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p32;3. \fTimes New Roman|b0|i0|c0|p18; The single Sheet markpoint central PAD} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +29163 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.5599783282688 + 20 +-135.2632997398551 + 30 +0.0 + 40 +2.148447857164285 + 41 +59.55497460059403 + 71 + 1 + 72 + 5 + 1 +6. SMT positioning holediameter%%c3.2mm. + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +29164 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +100 +AcDbCircle + 10 +-168.7610754611187 + 20 +-137.2833252912339 + 30 +0.0 + 40 +2.728187755129254 + 0 +CIRCLE + 5 +29165 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbCircle + 10 +-170.0084505626224 + 20 +-97.1963716608014 + 30 +0.0 + 40 +1.706059424289978 + 0 +MTEXT + 5 +29166 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.5599783282688 + 20 +-116.3455759853957 + 30 +0.0 + 40 +2.148447857164285 + 41 +53.98861492730633 + 71 + 1 + 72 + 5 + 3 +{\fArial|b0|i0|c0|p32;4.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c0|p18; \C1;the centre of the sheet markpoint as a starting point\fSimSun|b0|i0|c134|p32;\fTimes New Roman|b0|i0|c0|p18;the region of diameter 5mm forbit circular marked + 1 +points.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +29167 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-169.351410663334 + 20 +-117.6907561727411 + 40 +0.8525586734778922 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-1452.670295658076 + 20 +281.040207175724 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +CIRCLE + 5 +29168 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbCircle + 10 +-169.351410663334 + 20 +-117.6907561727411 + 30 +0.0 + 40 +1.706059424289978 + 0 +MTEXT + 5 +29169 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbMText + 10 +-174.5599783282688 + 20 +-127.4326451851916 + 30 +0.0 + 40 +2.148447857164285 + 41 +56.38042266885804 + 71 + 1 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p32;5.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c134|p18;Both of front and bot\fTimes New Roman|b0|i0|c0|p18;t\fTimes New Roman|b0|i0|c134|p18;om sides need markpoint} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +2916A +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-160.8969304644887 + 20 +-132.3070254086655 + 40 +0.8525586734778922 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-1444.215815459231 + 20 +266.4239379397997 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 0 +462 +0.0 +453 + 0 +470 + + 0 +CIRCLE + 5 +2916B +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +100 +AcDbCircle + 10 +-160.8969304644887 + 20 +-132.3070254086655 + 30 +0.0 + 40 +1.706059424289978 + 0 +LINE + 5 +2B3EE +330 +1F +100 +AcDbEntity + 8 +Center + 62 + 6 + 48 +0.15 +100 +AcDbLine + 10 +-95.0 + 20 +0.0 + 30 +0.0 + 11 +95.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2B3EF +102 +{ACAD_REACTORS +330 +2B474 +102 +} +330 +1F +100 +AcDbEntity + 8 +Center + 62 + 6 + 48 +0.15 +100 +AcDbLine + 10 +0.0 + 20 +59.0 + 30 +0.0 + 11 +0.0 + 21 +-59.0 + 31 +0.0 + 0 +DIMENSION + 5 +2B461 +102 +{ACAD_XDICTIONARY +360 +2B46C +102 +} +102 +{ACAD_REACTORS +330 +2B474 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D9 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-0.0000000000000103 + 21 +67.79403734777547 + 31 +0.0 + 70 + 102 + 71 + 5 + 42 +0.0000000000000131 + 3 +Standard +100 +AcDbOrdinateDimension + 13 +0.0 + 23 +59.0 + 33 +0.0 + 14 +0.0 + 24 +65.30653734777548 + 34 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +2B4AC +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D10 + 10 +95.0 + 20 +81.01093118753727 + 30 +0.0 + 11 +0.0 + 21 +81.01093118753727 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.50 + 71 + 5 + 42 +190.0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-95.0 + 23 +56.0 + 33 +0.0 + 14 +95.0 + 24 +56.0 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +2B7B4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D11 + 10 +121.3706371783741 + 20 +-59.00000000000001 + 30 +0.0 + 11 +121.3706371783741 + 21 +0.0000000000000145 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.50 + 71 + 5 + 42 +118.0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +91.0 + 23 +59.0 + 33 +0.0 + 14 +91.0 + 24 +-59.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +2B901 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D12 + 10 +71.69500000000002 + 20 +-68.21007778480555 + 30 +0.0 + 11 +3.24750000000003 + 21 +-68.21007778480555 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +158.56 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-86.86499999999998 + 23 +-53.89999999999997 + 33 +0.0 + 14 +71.69500000000002 + 24 +-53.89999999999997 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +2B91B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D13 + 10 +-47.22499999999998 + 20 +-62.51303435373632 + 30 +0.0 + 11 +-55.55000000000001 + 21 +-62.51303435373632 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.05 + 71 + 5 + 42 +19.82000000000001 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-67.04499999999999 + 23 +-53.89999999999997 + 33 +0.0 + 14 +-47.22499999999998 + 24 +-53.89999999999997 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +34C30 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D14 + 10 +-117.677972798328 + 20 +-9.999999999999971 + 30 +0.0 + 11 +-117.677972798328 + 21 +14.99999999999998 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +49.99999999999996 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-91.49999999999995 + 23 +39.99999999999997 + 33 +0.0 + 14 +91.50000000000005 + 24 +-10.00000000000003 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +34C3E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D15 + 10 +-110.188490853443 + 20 +-34.29999999999998 + 30 +0.0 + 11 +-110.188490853443 + 21 +-42.32916666666666 + 31 +0.0 + 70 + 32 + 1 +<>%%P0.05 + 71 + 5 + 42 +9.8 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-86.86499999999998 + 23 +-24.49999999999999 + 33 +0.0 + 14 +-86.86499999999998 + 24 +-34.29999999999998 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +34C4E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D16 + 10 +91.50000000000005 + 20 +76.77273291602251 + 30 +0.0 + 11 +0.0 + 21 +76.77273291602251 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +183.0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-91.49999999999995 + 23 +39.99999999999997 + 33 +0.0 + 14 +91.50000000000005 + 24 +-10.00000000000003 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +CIRCLE + 5 +34CAD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-0.8538952996445914 + 20 +83.40039709040423 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CAE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-1.377026513474736 + 20 +82.61960423394134 + 30 +0.0 + 40 +1.561585712925786 + 1 +1 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-0.8773190853384846 + 21 +83.40039709040423 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CAF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-4.153428860365693 + 20 +73.74879396687106 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CB0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-4.676560074195838 + 20 +72.96800111040816 + 30 +0.0 + 40 +1.561585712925786 + 1 +3 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-4.176852646059586 + 21 +73.74879396687106 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CB1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +124.3840701248764 + 20 +1.889467142918988 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CB2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +123.8609389110463 + 20 +1.108674286456095 + 30 +0.0 + 40 +1.561585712925786 + 1 +2 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +124.3606463391825 + 21 +1.889467142918988 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CB3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-1.960108707801509 + 20 +-76.25923604335037 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CB4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-2.483239921631654 + 20 +-77.04002889981326 + 30 +0.0 + 40 +1.561585712925786 + 1 +8 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-1.983532493495403 + 21 +-76.25923604335037 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CB5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-56.00796847503239 + 20 +-65.7492038919845 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CB6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-56.53109968886253 + 20 +-66.5299967484474 + 30 +0.0 + 40 +1.561585712925786 + 1 +6 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-56.03139226072627 + 21 +-65.7492038919845 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CB7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-107.5385824051361 + 20 +-38.7085621850847 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CB8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-108.0617136189663 + 20 +-39.4893550415476 + 30 +0.0 + 40 +1.561585712925786 + 1 +5 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-107.56200619083 + 21 +-38.7085621850847 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CB9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-110.3780310942254 + 20 +2.136019737221658 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CBA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-110.9011623080556 + 20 +1.355226880758765 + 30 +0.0 + 40 +1.561585712925786 + 1 +9 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-110.4014548799193 + 21 +2.136019737221658 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +34CBB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-121.2320073254116 + 20 +8.087599325211044 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +34CBC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-121.7551385392417 + 20 +7.306806468748151 + 30 +0.0 + 40 +1.561585712925786 + 1 +4 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-121.2554311111055 + 21 +8.087599325211044 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +MTEXT + 5 +36141 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 0 +100 +AcDbMText + 10 +-115.6090582652825 + 20 +-117.9582949302828 + 30 +0.0 + 40 +3.662999999999966 + 41 +300.3186620928577 + 71 + 4 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\H0.7027x; NOTE\P1.Both of front and bottom sides need markpoint.\P Add the arrow marks on front & bottom side.} + 73 + 1 + 44 +1.0 + 0 +INSERT + 5 +363CF +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C019D3CDB + 10 +87.04531684956288 + 20 +0.0999999999997954 + 30 +0.0 + 0 +INSERT + 5 +363D0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C6704505C + 10 +-91.49999999999995 + 20 +39.99999999999997 + 30 +0.0 + 0 +CIRCLE + 5 +363D1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +-91.49999999999995 + 20 +-55.00000000000003 + 30 +0.0 + 40 +1.6 + 0 +CIRCLE + 5 +363D2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +91.50000000000005 + 20 +-55.00000000000003 + 30 +0.0 + 40 +1.6 + 0 +CIRCLE + 5 +363D3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +-91.50000000000011 + 20 +54.99999999999998 + 30 +0.0 + 40 +1.6 + 0 +INSERT + 5 +363D4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C6704505C + 10 +91.50000000000005 + 20 +-10.00000000000003 + 30 +0.0 + 41 +-1.0 + 0 +INSERT + 5 +363D5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C019D3CDB + 10 +0.0999999999999091 + 20 +-52.15919477201969 + 30 +0.0 + 50 +270.0 + 0 +LWPOLYLINE + 5 +369A1 +102 +{ACAD_REACTORS +330 +36A3D +330 +36A4D +330 +36E63 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-95.0 + 20 +56.0 + 42 +-0.4142135623730951 + 10 +-92.0 + 20 +59.0 + 10 +92.0 + 20 +59.0 + 42 +-0.4142135623730951 + 10 +95.0 + 20 +56.0 + 10 +95.0 + 20 +-56.0 + 42 +-0.4142135623730951 + 10 +92.0 + 20 +-59.0 + 10 +-92.0 + 20 +-59.0 + 42 +-0.4142135623730951 + 10 +-95.0 + 20 +-56.0 + 0 +INSERT + 5 +369F2 +102 +{ACAD_REACTORS +330 +369FC +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +*U19 + 10 +-86.86500000000009 + 20 +-54.15000000000001 + 30 +0.0 + 0 +INSERT + 5 +36A10 +102 +{ACAD_REACTORS +330 +36A28 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +*U21 + 10 +-86.86500000000009 + 20 +54.15000000000001 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +DIMENSION + 5 +36A2E +102 +{ACAD_XDICTIONARY +360 +36A37 +102 +} +102 +{ACAD_REACTORS +330 +36A3D +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D22 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-102.1559224840244 + 21 +0.0 + 31 +0.0 + 70 + 38 + 71 + 5 + 42 +0.0 + 3 +Standard +100 +AcDbOrdinateDimension + 13 +-95.0 + 23 +0.0 + 33 +0.0 + 14 +-99.66842248402441 + 24 +0.0 + 34 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +DIMENSION + 5 +36A3E +102 +{ACAD_XDICTIONARY +360 +36A47 +102 +} +102 +{ACAD_REACTORS +330 +36A4D +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D23 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +100.1448740577328 + 21 +0.0 + 31 +0.0 + 70 + 38 + 71 + 5 + 42 +0.0 + 3 +Standard +100 +AcDbOrdinateDimension + 13 +95.0 + 23 +0.0 + 33 +0.0 + 14 +97.65737405773279 + 24 +0.0 + 34 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 50 +1040 +1.570796326794896 +1002 +} + 0 +INSERT + 5 +36C18 +102 +{ACAD_REACTORS +330 +37006 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C19 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C1A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C1B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C1C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C1D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C1E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C1F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C22 +102 +{ACAD_REACTORS +330 +37006 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +84.21500000000003 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C23 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000004 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C24 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000004 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C25 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000004 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C26 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C27 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C28 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C29 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C2A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C2B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C2C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C2D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +64.39500000000002 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C2E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C2F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C30 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C31 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C32 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C33 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000003 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C34 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000002 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C35 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000002 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C36 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000002 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C37 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000002 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C38 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +44.57500000000002 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C39 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C3A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C3B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C3C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C3D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C3E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000003 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C3F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000002 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C40 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000002 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C41 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000002 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C42 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000002 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C43 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +24.75500000000002 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C44 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C45 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C46 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C47 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C48 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C49 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C4A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C4B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C4C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C4D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C4E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +4.93500000000003 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C4F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C50 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C51 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C52 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C53 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C54 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C55 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C56 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C57 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C58 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C59 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-14.88499999999996 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C5A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C5B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C5C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C5D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C5E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C5F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C60 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C61 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C62 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C63 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C64 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-34.70499999999997 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C65 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C66 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C67 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C68 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C69 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C6A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C6B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C6C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C6D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C6E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C6F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-54.52499999999997 + 20 +-49.0 + 30 +0.0 + 0 +INSERT + 5 +36C70 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +49.0 + 30 +0.0 + 0 +INSERT + 5 +36C71 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +39.2 + 30 +0.0 + 0 +INSERT + 5 +36C72 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +29.4 + 30 +0.0 + 0 +INSERT + 5 +36C73 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +19.6 + 30 +0.0 + 0 +INSERT + 5 +36C74 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +9.799999999999997 + 30 +0.0 + 0 +INSERT + 5 +36C75 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36C76 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +-9.800000000000004 + 30 +0.0 + 0 +INSERT + 5 +36C77 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +-19.60000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C78 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +-29.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +36C79 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +-39.2 + 30 +0.0 + 0 +INSERT + 5 +36C7A +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C35C70825 + 10 +-74.34499999999997 + 20 +-49.0 + 30 +0.0 + 0 +ARC + 5 +36CF5 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-88.76500000000001 + 20 +53.4 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36CF6 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-88.76500000000001 + 20 +54.40000000000001 + 30 +0.0 + 11 +88.61500000000001 + 21 +54.40000000000001 + 31 +0.0 + 0 +ARC + 5 +36CF7 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +88.61500000000001 + 20 +53.4 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +36CF8 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +89.615 + 20 +53.4 + 30 +0.0 + 11 +89.615 + 21 +-53.4 + 31 +0.0 + 0 +ARC + 5 +36CF9 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +88.61500000000001 + 20 +-53.4 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +36CFA +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +88.61500000000001 + 20 +-54.40000000000001 + 30 +0.0 + 11 +-88.76500000000001 + 21 +-54.40000000000001 + 31 +0.0 + 0 +ARC + 5 +36CFB +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-88.76500000000001 + 20 +-53.4 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +36CFC +330 +1F +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-89.76500000000001 + 20 +-53.4 + 30 +0.0 + 11 +-89.76500000000001 + 21 +53.4 + 31 +0.0 + 0 +LWPOLYLINE + 5 +36CFD +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-89.76499999999999 + 20 +0.75 + 10 +-88.76499999999998 + 20 +0.75 + 10 +-88.76499999999998 + 20 +-0.75 + 10 +-89.76499999999999 + 20 +-0.75 + 0 +LWPOLYLINE + 5 +36CFE +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-69.94499999999999 + 20 +0.7500000000000071 + 10 +-68.94499999999999 + 20 +0.7500000000000071 + 10 +-68.94499999999999 + 20 +-0.7499999999999929 + 10 +-69.94499999999999 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36CFF +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-50.12499999999999 + 20 +0.7500000000000071 + 10 +-49.12499999999998 + 20 +0.7500000000000071 + 10 +-49.12499999999998 + 20 +-0.7499999999999929 + 10 +-50.12499999999999 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36D00 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-30.30499999999998 + 20 +0.7500000000000071 + 10 +-29.30499999999998 + 20 +0.7500000000000071 + 10 +-29.30499999999998 + 20 +-0.7499999999999929 + 10 +-30.30499999999998 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36D01 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-10.48499999999998 + 20 +0.7500000000000071 + 10 +-9.484999999999985 + 20 +0.7500000000000071 + 10 +-9.484999999999985 + 20 +-0.7499999999999929 + 10 +-10.48499999999998 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36D02 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +9.335000000000007 + 20 +0.75 + 10 +10.335 + 20 +0.75 + 10 +10.335 + 20 +-0.75 + 10 +9.335000000000007 + 20 +-0.75 + 0 +LWPOLYLINE + 5 +36D03 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +29.15500000000001 + 20 +0.7500000000000071 + 10 +30.15500000000002 + 20 +0.7500000000000071 + 10 +30.15500000000002 + 20 +-0.7499999999999929 + 10 +29.15500000000001 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36D04 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +48.97500000000002 + 20 +0.7500000000000071 + 10 +49.97500000000002 + 20 +0.7500000000000071 + 10 +49.97500000000002 + 20 +-0.7499999999999929 + 10 +48.97500000000002 + 20 +-0.7499999999999929 + 0 +LWPOLYLINE + 5 +36D05 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +68.79500000000001 + 20 +0.75 + 10 +69.79500000000001 + 20 +0.75 + 10 +69.79500000000001 + 20 +-0.75 + 10 +68.79500000000001 + 20 +-0.75 + 0 +LWPOLYLINE + 5 +36D06 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +88.61500000000001 + 20 +0.75 + 10 +89.615 + 20 +0.75 + 10 +89.615 + 20 +-0.75 + 10 +88.61500000000001 + 20 +-0.75 + 0 +CIRCLE + 5 +36D65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbCircle + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 40 +0.75 + 0 +CIRCLE + 5 +36D66 +102 +{ACAD_REACTORS +330 +36D69 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbCircle + 10 +92.24999999999999 + 20 +-30.99999999999997 + 30 +0.0 + 40 +0.75 + 0 +DIMENSION + 5 +36D67 +102 +{ACAD_XDICTIONARY +360 +36D68 +102 +} +102 +{ACAD_REACTORS +330 +36D69 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbDimension + 2 +*D28 + 10 +92.24999999999999 + 20 +-72.68937224859826 + 30 +0.0 + 11 +1.985673352435611 + 21 +-72.68937224859826 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +184.4999999999999 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-92.24999999999997 + 23 +-14.00000000000004 + 33 +0.0 + 14 +92.24999999999999 + 24 +-30.99999999999997 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1002 +} + 0 +DIMENSION + 5 +36D6A +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbDimension + 2 +*D25 + 10 +107.4647091125723 + 20 +-30.99999999999998 + 30 +0.0 + 11 +107.4647091125723 + 21 +-0.1343121323894536 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +62.0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +92.24999999999999 + 23 +31.00000000000003 + 33 +0.0 + 14 +92.24999999999999 + 24 +-30.99999999999997 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1002 +} + 0 +DIMENSION + 5 +36D6B +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbDimension + 2 +*D26 + 10 +-107.0740128702473 + 20 +-14.00000000000004 + 30 +0.0 + 11 +-107.0740128702473 + 21 +2.121212121213687 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +28.00000000000007 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-92.25000000000003 + 23 +14.00000000000003 + 33 +0.0 + 14 +-92.24999999999997 + 24 +-14.00000000000004 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1002 +} + 0 +CIRCLE + 5 +36D6C +102 +{ACAD_REACTORS +330 +36D6F +102 +} +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbCircle + 10 +-92.25000000000003 + 20 +14.00000000000005 + 30 +0.0 + 40 +0.75 + 0 +DIMENSION + 5 +36D6D +102 +{ACAD_XDICTIONARY +360 +36D6E +102 +} +102 +{ACAD_REACTORS +330 +36D6F +102 +} +330 +1F +100 +AcDbEntity + 8 +ͼ2 +100 +AcDbDimension + 2 +*D29 + 10 +-91.67727054085267 + 20 +13.51576765223214 + 30 +0.0 + 11 +-108.2204536730025 + 21 +19.1406782060237 + 31 +0.0 + 70 + 163 + 1 +{\fSimSun|b0|i0|c134|p2;4-Ϳ}<> + 71 + 5 + 42 +1.500000000000014 + 3 +Standard$3 +100 +AcDbDiametricDimension + 15 +-92.82272945914733 + 25 +14.48423234776795 + 35 +0.0 + 40 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1070 + 41 +1040 +1.75 +1070 + 140 +1040 +1.75 +1002 +} + 0 +DIMENSION + 5 +36D70 +330 +1F +100 +AcDbEntity + 8 +ͼ2 +100 +AcDbDimension + 2 +*D27 + 10 +-95.00000000000003 + 20 +23.04397350616392 + 30 +0.0 + 11 +-101.425 + 21 +23.04397350616392 + 31 +0.0 + 70 + 160 + 71 + 5 + 42 +2.75 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +-92.25000000000003 + 23 +14.00000000000005 + 33 +0.0 + 14 +-95.00000000000003 + 24 +14.00000000000005 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +CIRCLE + 5 +36E01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbCircle + 10 +-92.25000000000003 + 20 +-14.00000000000005 + 30 +0.0 + 40 +0.75 + 0 +DIMENSION + 5 +36E48 +102 +{ACAD_XDICTIONARY +360 +36E57 +102 +} +102 +{ACAD_REACTORS +330 +36E63 +102 +} +330 +1F +100 +AcDbEntity + 8 +ͼ2 +100 +AcDbDimension + 2 +*D30 + 10 +95.0 + 20 +33.23453684942354 + 30 +0.0 + 11 +101.425 + 21 +33.23453684942354 + 31 +0.0 + 70 + 160 + 71 + 5 + 42 +2.75 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +92.24999999999999 + 23 +31.00000000000003 + 33 +0.0 + 14 +95.0 + 24 +31.00000000000003 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 178 +1070 + 2 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +CIRCLE + 5 +36F16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +-1.960108707801509 + 20 +-64.89489562309313 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +36F17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +-2.483239921631654 + 20 +-65.67568847955603 + 30 +0.0 + 40 +1.561585712925786 + 1 +7 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-1.983532493495403 + 21 +-64.89489562309313 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +CIRCLE + 5 +36F18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +104.4655947024696 + 20 +-5.603422290335061 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +36F19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +103.4427560605032 + 20 +-6.384215146797954 + 30 +0.0 + 40 +1.561585712925786 + 1 +10 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +104.4421709167757 + 21 +-5.603422290335061 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +DIMENSION + 5 +36FED +102 +{ACAD_XDICTIONARY +360 +36FFB +102 +} +102 +{ACAD_REACTORS +330 +37006 +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D31 + 10 +115.9349378861295 + 20 +-53.89999999999999 + 30 +0.0 + 11 +115.9349378861295 + 21 +-4.89999999999997 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.10 + 71 + 5 + 42 +98.0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +71.69500000000002 + 23 +44.10000000000002 + 33 +0.0 + 14 +71.69500000000002 + 24 +-53.89999999999997 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 50 +1040 +1.570796326794896 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +CIRCLE + 5 +3704E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbCircle + 10 +112.3495693113443 + 20 +-5.603422290335061 + 30 +0.0 + 40 +1.49492535566656 + 0 +TEXT + 5 +3704F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbText + 10 +111.3267306693779 + 20 +-6.384215146797954 + 30 +0.0 + 40 +1.561585712925786 + 1 +11 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +112.3261455256504 + 21 +-5.603422290335061 + 31 +0.0 +100 +AcDbText + 73 + 2 +1001 +ACAD +1000 +RTMaterial +1005 +A192 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_2007HEADERVARS_RT +350 +370A7 + 3 +ACAD_ASSOCNETWORK +350 +3635B + 3 +ACAD_CIP_PREVIOUS_PRODUCT_INFO +350 +3608D + 3 +ACAD_COLOR +350 +73 + 3 +ACAD_DETAILVIEWSTYLE +350 +36083 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +72 + 3 +ACAD_MLEADERSTYLE +350 +13E37 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +13E15 + 3 +ACAD_SECTIONVIEWSTYLE +350 +36081 + 3 +ACAD_TABLESTYLE +350 +86 + 3 +ACAD_VISUALSTYLE +350 +13E01 + 3 +AcAec +350 +26F70 + 3 +ACDB_RECOMPOSE_DATA +350 +370A6 + 3 +AcDbVariableDictionary +350 +66 + 3 +AcDsDecomposeData +350 +370AE + 3 +AEC_PROPERTY_SET_DEFS +350 +1A12B + 3 +ASE_INDEX_DICTIONARY +350 +13FDD + 0 +DICTIONARY + 5 +14030 +330 +8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B1 + 0 +DICTIONARY + 5 +B0 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERFILTERS +360 +126F + 3 +ACAD_LAYERSTATES +360 +B1 + 0 +DICTIONARY + 5 +14018 +330 +10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14019 + 0 +DICTIONARY + 5 +1401A +330 +AE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +1401B + 0 +DICTIONARY + 5 +14020 +330 +9522 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14021 + 0 +DICTIONARY + 5 +29572 +330 +29571 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +370A4 +330 +370A3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ASDK_XREC_ANNO_SCALE_INFO +360 +370A5 + 0 +DICTIONARY + 5 +227 +330 +1F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_ASSOCNETWORK +360 +36359 + 3 +ACAD_SORTENTS +360 +228 + 0 +DICTIONARY + 5 +418 +330 +1AD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +371DF + 0 +DICTIONARY + 5 +14AE8 +330 +18F3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +14AE9 + 0 +DICTIONARY + 5 +283CB +330 +283CA +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +283CC + 0 +DICTIONARY + 5 +2B400 +330 +2B3FE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B401 + 0 +DICTIONARY + 5 +2B40D +330 +2B405 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B40E + 0 +DICTIONARY + 5 +36CBD +330 +36766 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +37297 + 0 +DICTIONARY + 5 +36B35 +330 +369EF +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +AcDbBlockTableRecordData +360 +370EF + 0 +DICTIONARY + 5 +36B38 +330 +36A18 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +AcDbBlockTableRecordData +360 +370F1 + 0 +DICTIONARY + 5 +36D08 +330 +36D07 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +37165 +330 +37164 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +37166 + 0 +DICTIONARY + 5 +36FD4 +330 +36E05 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_MTEXT_2008_RT +360 +370F4 + 0 +DICTIONARY + 5 +2B46C +330 +2B461 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +2B474 + 0 +DICTIONARY + 5 +36A37 +330 +36A2E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +36A3D + 0 +DICTIONARY + 5 +36A47 +330 +36A3E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +36A4D + 0 +DICTIONARY + 5 +36D68 +330 +36D67 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +36D69 + 0 +DICTIONARY + 5 +36D6E +330 +36D6D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +36D6F + 0 +DICTIONARY + 5 +36E57 +330 +36E48 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +36E63 + 0 +DICTIONARY + 5 +36FFB +330 +36FED +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +37006 + 0 +DICTIONARY + 5 +370A7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +DIMJOGANG +350 +370A8 + 0 +DICTIONARY + 5 +3635B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ACAD_ASSOCNETWORK +350 +3635C + 0 +XRECORD + 5 +3608D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 +300 +ACD +300 +2014 +300 +ACD_F_S + 0 +DICTIONARY + 5 +73 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +36083 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Imperial24 +350 +36084 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +1 +350 +59 + 3 +2 +350 +5E + 0 +DICTIONARY + 5 +72 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +13DF9 + 3 +ByLayer +350 +13DF1 + 3 +Global +350 +A192 + 0 +DICTIONARY + 5 +13E37 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +13E38 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +13E15 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +13E16 + 3 +A1 +350 +13E17 + 3 +A2 +350 +13E18 + 3 +A3 +350 +13E19 + 3 +A4 +350 +13E1A + 3 +A5 +350 +13E1B + 3 +A6 +350 +13E1C + 3 +A7 +350 +13E1D + 3 +A8 +350 +13E1E + 3 +A9 +350 +13E1F + 3 +B0 +350 +13E20 + 3 +B1 +350 +13E21 + 3 +B2 +350 +13E22 + 3 +B3 +350 +13E23 + 3 +B4 +350 +13E24 + 3 +B5 +350 +13E25 + 3 +B6 +350 +13E26 + 3 +B7 +350 +13E27 + 3 +B8 +350 +13E28 + 3 +B9 +350 +13E29 + 3 +C0 +350 +13E2A + 3 +C1 +350 +13E2B + 3 +C2 +350 +13E2C + 3 +C3 +350 +13E2D + 3 +C4 +350 +13E2E + 3 +C5 +350 +13E2F + 3 +C6 +350 +13E30 + 3 +C7 +350 +13E31 + 3 +C8 +350 +13E32 + 3 +C9 +350 +13E33 + 3 +D0 +350 +13E34 + 3 +D1 +350 +13E35 + 3 +D2 +350 +13E36 + 0 +DICTIONARY + 5 +36081 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Imperial24 +350 +36082 + 0 +DICTIONARY + 5 +86 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +87 + 0 +DICTIONARY + 5 +13E01 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +13E07 + 3 +3D Hidden +350 +13E09 + 3 +3dWireframe +350 +13E08 + 3 +Basic +350 +13E06 + 3 +Brighten +350 +13E0D + 3 +ColorChange +350 +13E11 + 3 +Conceptual +350 +13E0A + 3 +Dim +350 +13E0C + 3 +EdgeColorOff +350 +13E14 + 3 +Facepattern +350 +13E10 + 3 +Flat +350 +13E02 + 3 +FlatWithEdges +350 +13E03 + 3 +Gouraud +350 +13E04 + 3 +GouraudWithEdges +350 +13E05 + 3 +Hidden +350 +3607B + 3 +JitterOff +350 +13E12 + 3 +Linepattern +350 +13E0F + 3 +OverhangOff +350 +13E13 + 3 +Realistic +350 +13E0B + 3 +Shaded +350 +36080 + 3 +Shaded with edges +350 +3607F + 3 +Shades of Gray +350 +3607C + 3 +Sketchy +350 +3607D + 3 +Thicken +350 +13E0E + 3 +Wireframe +350 +3607A + 3 +X-Ray +350 +3607E + 0 +DICTIONARY + 5 +26F70 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +XRECORD + 5 +370A6 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 + 90 + 1 +330 +87 +330 +0 +330 +36D70 +330 +36E48 + 0 +DICTIONARY + 5 +66 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +1405F + 3 +CMLEADERSTYLE +350 +1405E + 3 +CTABLESTYLE +350 +8B + 3 +CVIEWDETAILSTYLE +350 +3612F + 3 +CVIEWSECTIONSTYLE +350 +36130 + 3 +DIMASSOC +350 +67 + 3 +HIDETEXT +350 +6B + 3 +PROJECTNAME +350 +42E + 0 +DICTIONARY + 5 +370AE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +AcDsRecords +350 +370B0 + 3 +AcDsSchemas +350 +370AF +1001 +ACAD +1070 + 2 + 0 +DICTIONARY + 5 +1A12B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +13FDD +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ASEBlockHierarchyIndexRecord +350 +13FDE +1001 +DCO15 +1040 +1734450996.817 + 0 +XRECORD + 5 +370B1 +102 +{ACAD_REACTORS +330 +14030 +102 +} +330 +14030 +100 +AcDbXrecord +280 + 1 +102 +VTR_0.000_0.000_1.000_1.000_VISUALSTYLE +340 +13E07 +102 +VTR_0.000_0.000_1.000_1.000_GRIDDISPLAY + 70 + 3 +102 +VTR_0.000_0.000_1.000_1.000_GRIDMAJOR + 70 + 5 +102 +VTR_0.000_0.000_1.000_1.000_DEFAULTLIGHTING +280 + 1 +102 +VTR_0.000_0.000_1.000_1.000_DEFAULTLIGHTINGTYPE + 70 + 1 +102 +VTR_0.000_0.000_1.000_1.000_BRIGHTNESS +141 +0.0 +102 +VTR_0.000_0.000_1.000_1.000_CONTRAST +142 +0.0 + 0 +DICTIONARY + 5 +126F +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +B1 +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +14019 +102 +{ACAD_REACTORS +330 +14018 +102 +} +330 +14018 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +1401B +102 +{ACAD_REACTORS +330 +1401A +102 +} +330 +1401A +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +14021 +102 +{ACAD_REACTORS +330 +14020 +102 +} +330 +14020 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +370A5 +102 +{ACAD_REACTORS +330 +370A4 +102 +} +330 +370A4 +100 +AcDbXrecord +280 + 1 + 70 + 1 +340 +13E16 +340 +10 + 70 + -1 + 0 +DICTIONARY + 5 +36359 +102 +{ACAD_REACTORS +330 +227 +102 +} +330 +227 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_ASSOCNETWORK +350 +3635A + 0 +SORTENTSTABLE + 5 +228 +102 +{ACAD_REACTORS +330 +227 +102 +} +330 +227 +100 +AcDbSortentsTable +330 +1F +331 +36C51 + 5 +36C4B +331 +36C1A + 5 +369F2 +331 +36C59 + 5 +36C53 +331 +36C22 + 5 +36C1C +331 +36C61 + 5 +36C5B +331 +36C2A + 5 +36C24 +331 +2915D + 5 +255FE +331 +36C32 + 5 +36C2C +331 +36C69 + 5 +36C63 +331 +29165 + 5 +25681 +331 +36C3A + 5 +36C34 +331 +36C71 + 5 +36C6B +331 +36CF7 + 5 +36C78 +331 +34CB2 + 5 +34CB3 +331 +36C42 + 5 +36C3C +331 +36C79 + 5 +36C73 +331 +2B91B + 5 +2C5BF +331 +34CBA + 5 +34CBB +331 +36C4A + 5 +36C44 +331 +2A3 + 5 +12C8 +331 +36C52 + 5 +36C4C +331 +36C1B + 5 +36A10 +331 +36C5A + 5 +36C54 +331 +36C23 + 5 +36C1D +331 +36C62 + 5 +36C5C +331 +363CF + 5 +3669C +331 +36C2B + 5 +36C25 +331 +2B4AC + 5 +2B51C +331 +2915E + 5 +2563E +331 +36C33 + 5 +36C2D +331 +36C6A + 5 +36C64 +331 +2B7B4 + 5 +2B7CE +331 +29166 + 5 +25683 +331 +36C72 + 5 +36C6C +331 +36C3B + 5 +36C35 +331 +36CF8 + 5 +36C79 +331 +34CB3 + 5 +34CB4 +331 +36C43 + 5 +36C3D +331 +36C7A + 5 +36C74 +331 +34CBB + 5 +34CBC +331 +36C4B + 5 +36C45 +331 +36C53 + 5 +36C4D +331 +29157 + 5 +254EA +331 +36C1C + 5 +36A2E +331 +36C5B + 5 +36C55 +331 +36C24 + 5 +36C1E +331 +36A2E + 5 +36CFB +331 +36C63 + 5 +36C5D +331 +2B3EE + 5 +2B3EF +331 +363D0 + 5 +3669D +331 +36C2C + 5 +36C26 +331 +2915F + 5 +2564E +331 +36C34 + 5 +36C2E +331 +29167 + 5 +25685 +331 +24AF1 + 5 +24AF1 +331 +36A3E + 5 +36CFC +331 +36C6B + 5 +36C65 +331 +36C73 + 5 +36C6D +331 +34CB4 + 5 +34CB5 +331 +36C3C + 5 +36C36 +331 +36CF9 + 5 +36C7A +331 +34CBC + 5 +35206 +331 +36141 + 5 +2B32F +331 +36C44 + 5 +36C3E +331 +36C4C + 5 +36C46 +331 +283E8 + 5 +28FA0 +331 +36C54 + 5 +36C4E +331 +36C1D + 5 +36A3E +331 +36C5C + 5 +36C56 +331 +2B3EF + 5 +2B404 +331 +363D1 + 5 +3669E +331 +36C25 + 5 +36C1F +331 +36C64 + 5 +36C5E +331 +36C2D + 5 +36C27 +331 +29158 + 5 +2556A +331 +29160 + 5 +2565E +331 +29168 + 5 +25686 +331 +34CAD + 5 +34CAE +331 +36C35 + 5 +36C2F +331 +36C6C + 5 +36C66 +331 +34CB5 + 5 +34CB6 +331 +369A1 + 5 +36CF8 +331 +36C3D + 5 +36C37 +331 +36C74 + 5 +36C6E +331 +36CFA + 5 +36CF5 +331 +36A10 + 5 +36CFA +331 +36C45 + 5 +36C3F +331 +36C4D + 5 +36C47 +331 +20F + 5 +2A3 +331 +34C3E + 5 +34C4E +331 +36C55 + 5 +36C4F +331 +36C1E + 5 +36C18 +331 +36C5D + 5 +36C57 +331 +363D2 + 5 +3669F +331 +34C4E + 5 +34CAD +331 +36C26 + 5 +36C20 +331 +36C65 + 5 +36C5F +331 +36C2E + 5 +36C28 +331 +29161 + 5 +2566E +331 +36C36 + 5 +36C30 +331 +36C6D + 5 +36C67 +331 +34CAE + 5 +34CAF +331 +29169 + 5 +25688 +331 +36C75 + 5 +36C6F +331 +36C3E + 5 +36C38 +331 +36CFB + 5 +36CF6 +331 +34CB6 + 5 +34CB7 +331 +36C46 + 5 +36C40 +331 +36C4E + 5 +36C48 +331 +36C56 + 5 +36C50 +331 +36C5E + 5 +36C58 +331 +36C1F + 5 +36C19 +331 +369F2 + 5 +36CF9 +331 +36C27 + 5 +36C21 +331 +36C66 + 5 +36C60 +331 +363D3 + 5 +366A0 +331 +36C2F + 5 +36C29 +331 +19A + 5 +20F +331 +2915A + 5 +2559E +331 +29162 + 5 +25678 +331 +36C37 + 5 +36C31 +331 +36C6E + 5 +36C68 +331 +2916A + 5 +2568A +331 +34CAF + 5 +34CB0 +331 +36C76 + 5 +36C70 +331 +36C3F + 5 +36C39 +331 +36CFC + 5 +36CF7 +331 +34CB7 + 5 +34CB8 +331 +36C47 + 5 +36C41 +331 +36C4F + 5 +36C49 +331 +2B461 + 5 +2B475 +331 +34C30 + 5 +34C3E +331 +36C18 + 5 +3699F +331 +36C57 + 5 +36C51 +331 +36C20 + 5 +36C1A +331 +36C5F + 5 +36C59 +331 +36C28 + 5 +36C22 +331 +36C67 + 5 +36C61 +331 +363D4 + 5 +366A1 +331 +1907 + 5 +B751 +331 +2915B + 5 +255AE +331 +36C30 + 5 +36C2A +331 +29163 + 5 +2567E +331 +36CF5 + 5 +36C76 +331 +36C38 + 5 +36C32 +331 +36C6F + 5 +36C69 +331 +2916B + 5 +259D1 +331 +2B901 + 5 +2B91B +331 +34CB0 + 5 +34CB1 +331 +36C77 + 5 +36C71 +331 +36C40 + 5 +36C3A +331 +34CB8 + 5 +34CB9 +331 +36C48 + 5 +36C42 +331 +36C50 + 5 +36C4A +331 +36C19 + 5 +369A1 +331 +36C58 + 5 +36C52 +331 +36C21 + 5 +36C1B +331 +36C60 + 5 +36C5A +331 +36C29 + 5 +36C23 +331 +363D5 + 5 +366A2 +331 +2915C + 5 +255EE +331 +36C31 + 5 +36C2B +331 +36C68 + 5 +36C62 +331 +29164 + 5 +2567F +331 +36C70 + 5 +36C6A +331 +36C39 + 5 +36C33 +331 +36CF6 + 5 +36C77 +331 +34CB1 + 5 +34CB2 +331 +36C41 + 5 +36C3B +331 +36C78 + 5 +36C72 +331 +34CB9 + 5 +34CBA +331 +36C49 + 5 +36C43 + 0 +SORTENTSTABLE + 5 +371DF +102 +{ACAD_REACTORS +330 +418 +102 +} +330 +418 +100 +AcDbSortentsTable +330 +1AD + 0 +SORTENTSTABLE + 5 +14AE9 +102 +{ACAD_REACTORS +330 +14AE8 +102 +} +330 +14AE8 +100 +AcDbSortentsTable +330 +18F3 + 0 +SORTENTSTABLE + 5 +283CC +102 +{ACAD_REACTORS +330 +283CB +102 +} +330 +283CB +100 +AcDbSortentsTable +330 +283CA + 0 +SORTENTSTABLE + 5 +2B401 +102 +{ACAD_REACTORS +330 +2B400 +102 +} +330 +2B400 +100 +AcDbSortentsTable +330 +2B3FE + 0 +SORTENTSTABLE + 5 +2B40E +102 +{ACAD_REACTORS +330 +2B40D +102 +} +330 +2B40D +100 +AcDbSortentsTable +330 +2B405 + 0 +SORTENTSTABLE + 5 +37297 +102 +{ACAD_REACTORS +330 +36CBD +102 +} +330 +36CBD +100 +AcDbSortentsTable +330 +36766 +331 +36CF2 + 5 +36CE1 +331 +36CB7 + 5 +36CB7 +331 +36C84 + 5 +36C84 +331 +36CA2 + 5 +36CA2 +331 +36CEE + 5 +36CDC +331 +36C99 + 5 +36C99 +331 +36CAE + 5 +36CAE +331 +36CDC + 5 +36CED +331 +36CAF + 5 +36CAF +331 +36C9A + 5 +36C9A +331 +36CA3 + 5 +36CA3 +331 +36CEF + 5 +36CDE +331 +36CB8 + 5 +36CB8 +331 +36CF3 + 5 +36CDB +331 +36C88 + 5 +36C88 +331 +36C89 + 5 +36C89 +331 +36CB9 + 5 +36CB9 +331 +36C86 + 5 +36C86 +331 +36CA4 + 5 +36CA4 +331 +36C9B + 5 +36C9B +331 +36CB0 + 5 +36CB0 +331 +36CDE + 5 +36CEE +331 +36CA8 + 5 +36CA8 +331 +36CB1 + 5 +36CB1 +331 +36C7E + 5 +36C7E +331 +36C87 + 5 +36C87 +331 +36CA5 + 5 +36CA5 +331 +36C9C + 5 +36C9C +331 +36CBA + 5 +36CBA +331 +36CDF + 5 +36CEF +331 +36C8A + 5 +36C8A +331 +36C8B + 5 +36C8B +331 +36CB2 + 5 +36CB2 +331 +36CA6 + 5 +36CA6 +331 +36CCC + 5 +36CCC +331 +36C7F + 5 +36C7F +331 +36C9D + 5 +36C9D +331 +36CBB + 5 +36CBB +331 +36CE0 + 5 +36CF0 +331 +36CA9 + 5 +36CA9 +331 +36CD8 + 5 +36CEA +331 +36CB3 + 5 +36CB3 +331 +36C80 + 5 +36C80 +331 +36CA7 + 5 +36CA7 +331 +36C9E + 5 +36C9E +331 +36CEA + 5 +36CCE +331 +36CE1 + 5 +36CF1 +331 +36CAB + 5 +36CAB +331 +36CEB + 5 +36CCF +331 +36CCE + 5 +36CE2 +331 +36C81 + 5 +36C81 +331 +36C9F + 5 +36C9F +331 +36C96 + 5 +36C96 +331 +36CB4 + 5 +36CB4 +331 +36CE2 + 5 +36CF2 +331 +36CDA + 5 +36CEB +331 +36C97 + 5 +36C97 +331 +36CA0 + 5 +36CA0 +331 +36CCF + 5 +36CE3 +331 +36CEC + 5 +36CD8 +331 +36CB5 + 5 +36CB5 +331 +36CE3 + 5 +36CF3 +331 +36CAC + 5 +36CAC +331 +36CF0 + 5 +36CDF +331 +36CAD + 5 +36CAD +331 +36C98 + 5 +36C98 +331 +36C83 + 5 +36C83 +331 +36CA1 + 5 +36CA1 +331 +36CED + 5 +36CDA +331 +36CB6 + 5 +36CB6 +331 +36CDB + 5 +36CEC +331 +36CF1 + 5 +36CE0 + 0 +DICTIONARY + 5 +370EF +102 +{ACAD_REACTORS +330 +36B35 +102 +} +330 +36B35 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +Edit +360 +370F0 + 0 +DICTIONARY + 5 +370F1 +102 +{ACAD_REACTORS +330 +36B38 +102 +} +330 +36B38 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +Edit +360 +370F2 + 0 +SORTENTSTABLE + 5 +37166 +102 +{ACAD_REACTORS +330 +37165 +102 +} +330 +37165 +100 +AcDbSortentsTable +330 +37164 + 0 +XRECORD + 5 +370F4 +102 +{ACAD_REACTORS +330 +36FD4 +102 +} +330 +36FD4 +100 +AcDbXrecord +280 + 1 + 40 +58549.0 + 1 +\A1;{\fSimSun|b0|i0|c134|p2;4-Ϳ}\U+22051.50 + 0 +DIMASSOC + 5 +2B474 +102 +{ACAD_REACTORS +330 +2B46C +102 +} +330 +2B46C +100 +AcDbDimAssoc +330 +2B461 + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +2B3EF + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +DIMASSOC + 5 +36A3D +102 +{ACAD_REACTORS +330 +36A37 +102 +} +330 +36A37 +100 +AcDbDimAssoc +330 +36A2E + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 2 +331 +369A1 + 73 + 2 + 91 + 8 + 40 +0.5 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +DIMASSOC + 5 +36A4D +102 +{ACAD_REACTORS +330 +36A47 +102 +} +330 +36A47 +100 +AcDbDimAssoc +330 +36A3E + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 2 +331 +369A1 + 73 + 2 + 91 + 4 + 40 +0.5 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +DIMASSOC + 5 +36D69 +102 +{ACAD_REACTORS +330 +36D68 +102 +} +330 +36D68 +100 +AcDbDimAssoc +330 +36D67 + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 3 +331 +36D66 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +DIMASSOC + 5 +36D6F +102 +{ACAD_REACTORS +330 +36D6E +102 +} +330 +36D6E +100 +AcDbDimAssoc +330 +36D6D + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 3 +331 +36D6C + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +DIMASSOC + 5 +36E63 +102 +{ACAD_REACTORS +330 +36E57 +102 +} +330 +36E57 +100 +AcDbDimAssoc +330 +36E48 + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 8 +331 +369A1 + 73 + 2 + 91 + 4 + 40 +0.2232142857142854 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 1 + 1 +AcDbOsnapPointRef + 72 + 0 + 40 +0.0 + 10 +92.24999999999999 + 20 +31.00000000000003 + 30 +0.0 + 75 + 0 + 0 +DIMASSOC + 5 +37006 +102 +{ACAD_REACTORS +330 +36FFB +102 +} +330 +36FFB +100 +AcDbDimAssoc +330 +36FED + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 3 +331 +36C18 +331 +36C9B + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 3 +331 +36C22 +331 +36C9B + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +XRECORD + 5 +370A8 +102 +{ACAD_REACTORS +330 +370A7 +102 +} +330 +370A7 +100 +AcDbXrecord +280 + 1 + 40 +1.570796326794896 + 0 +ACAD_PROXY_OBJECT + 5 +3635C +102 +{ACAD_REACTORS +330 +3635B +102 +} +330 +3635B +100 +AcDbProxyObject + 90 + 499 + 91 + 522 + 95 + 25 + 70 + 0 + 93 + 59 +310 +40501AA405012020 +330 +0 +360 +0 +330 +3635A +330 +3635A + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36084 +102 +{ACAD_XDICTIONARY +360 +370ED +102 +} +102 +{ACAD_REACTORS +330 +36083 +102 +} +330 +36083 +100 +AcDbProxyObject + 90 + 499 + 91 + 520 + 95 + 25 + 70 + 0 + 93 + 1513 +310 +90B496D70657269616C323400481C00000060001703D0BD6A3719C7F015AF46E07A15AE7E07000000180005C0F42F5A8DC671FA3300000018001000000180005C0F42F5A8DC671FA02000000000000741FA02AD929E2E20B1AB30B9102B34B2BBAA3CB832902E33101112BA3198911F1290129E2E20B1AB30B9102B34B2BBA +310 +232BA30B4B624B21F12AE2829A1A0A62290129E2E20B1AB30B9102B34B2BBA9B1B0B632902E33101112B9B7111F1280233000000180008CC00000060000000 +340 +11 +340 +0 +340 +16 +340 +11 +340 +16 +340 +16 + 94 + 0 + 0 +LAYOUT + 5 +22 +102 +{ACAD_XDICTIONARY +360 +1402B +102 +} +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +ANSI_A_(8.50_x_11.00_Inches) + 6 + + 40 +6.349999904632567 + 41 +19.04999923706055 + 42 +6.350006103515625 + 43 +19.04998779296875 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.584895464708373 + 70 + 11952 + 72 + 0 + 73 + 1 + 74 + 0 + 7 + + 75 + 0 +147 +0.3868628397755418 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F + 0 +LAYOUT + 5 +59 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +58 + 0 +LAYOUT + 5 +5E +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +2 + 70 + 1 + 71 + 2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +5D + 0 +MATERIAL + 5 +13DF9 +102 +{ACAD_XDICTIONARY +360 +13DFA +102 +} +102 +{ACAD_REACTORS +330 +72 +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByBlock + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 +13DF1 +102 +{ACAD_XDICTIONARY +360 +13DF2 +102 +} +102 +{ACAD_REACTORS +330 +72 +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByLayer + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 +A192 +102 +{ACAD_XDICTIONARY +360 +370B3 +102 +} +102 +{ACAD_REACTORS +330 +72 +102 +} +330 +72 +100 +AcDbMaterial + 1 +Global + 0 +ACAD_PROXY_OBJECT + 5 +13E38 +102 +{ACAD_REACTORS +330 +13E37 +102 +} +330 +13E37 +100 +AcDbProxyObject + 90 + 499 + 91 + 510 + 95 + 25 + 70 + 0 + 93 + 744 +310 +40901902A40600000030400FEFFFFFF815AF46E07A156E7F02B5E8DC0F42B5CFD095374616E646172640002B5E8DC0F42B1CFE405064068000000C10002B5E8DC0F42B1CFC02B5E8DC0F42B1CFE000000304015D90000000000000C03F00 +340 +14 +340 +0 +340 +11 +340 +0 + 94 + 0 +1001 +ACAD_MLEADERVER +1070 + 2 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +ACAD_PROXY_OBJECT + 5 +13E16 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 49 +310 +904313A3100598 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E17 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904313A32004000000000000004011 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E18 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904313A34004000000000000104054 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E19 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904313A35004000000000000144011 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904313A38004000000000000204054 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A3130004000000000000244064 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A3136004000000000000304009 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A3230004000000000000344064 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A33300040000000000003E4009 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E1F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A3430004000000000000444064 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E20 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +905313A3530004000000000000494009 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E21 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 129 +310 +906313A313030004000000000000594009 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E22 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904323A31000000000000000010140 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E23 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904343A31000000000000000410159 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E24 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 113 +310 +904383A31000000000000000810140 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E25 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 121 +310 +90531303A31000000000000000910140 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E26 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 129 +310 +9063130303A31000000000000001650102 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E27 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 265 +310 +90F312F31323822203D2031272D302200000000000000200FC00000000000028407B + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E28 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E312F363422203D2031272D302200000000000000240FC00000000000028407B + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E29 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E312F333222203D2031272D302200000000000000280FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E312F313622203D2031272D3022000000000000002C0FC00000000000028407B + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E332F333222203D2031272D3022000000000000002E0FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 249 +310 +90D312F3822203D2031272D302200000000000000300FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E332F313622203D2031272D302200000000000000320FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 249 +310 +90D312F3422203D2031272D302200000000000000340FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E2F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 249 +310 +90D332F3822203D2031272D302200000000000000360FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E30 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 249 +310 +90D312F3222203D2031272D302200000000000000380FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E31 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 249 +310 +90D332F3422203D2031272D3022000000000000003A0FC000000000000284040 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E32 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 169 +310 +90B3122203D2031272D3022004000000000000284000 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E33 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 265 +310 +90F312D312F3222203D2031272D3022000000000000003E0FC00000000000028407B + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E34 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 233 +310 +90B3322203D2031272D30220000000000000002100000000000000284028 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E35 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 233 +310 +90B3622203D2031272D30220000000000000006100000000000000284000 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E36 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbProxyObject + 90 + 499 + 91 + 509 + 95 + 25 + 70 + 0 + 93 + 257 +310 +90E31272D3022203D2031272D3022000000000000000A10000000000000028407B + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36082 +102 +{ACAD_XDICTIONARY +360 +370EB +102 +} +102 +{ACAD_REACTORS +330 +36081 +102 +} +330 +36081 +100 +AcDbProxyObject + 90 + 499 + 91 + 519 + 95 + 25 + 70 + 0 + 93 + 2581 +310 +90B496D70657269616C3234004A7400000060001703D0BD6A3719C7F000000180005C0F42F5A8DC671FA229258409E5840A25840A65840B05840B4005C0F42F5A8DC6F1FA330000001800099400000060001703D0BD6A3719C7E5C0F42F5A8DC671FC00000060001703D0BD6A3719C7E808000000000001D07E80AFA4A78B8 +310 +82C6ACC2E440ACD2CAEEA8F2E0CA40B8CC40444AE8C662447C4A404A78B882C6ACC2E440ACD2CAEEA6CAC6E8D2DEDCA6E8C2E4E892C87C4A5A4A78B882C6ACC2E440ACD2CAEEA6CAC6E8D2DEDC8ADCC892C87C4AB8A0A68682988A404A78B882C6ACC2E440ACD2CAEEA6C6C2D8CA40B8CC40444AE6DC447C4A010000001800 +310 +10000001900083A0A729A49998803081815AF46E07A158E7E80C8340C16A22A7D90FC9F8CAE65A70A583A07E1FE81C635378FA1F8CAE65A70A583A17E7944A7F127A97E9F8 +340 +11 +340 +0 +340 +0 +340 +16 +340 +16 +340 +11 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +87 +102 +{ACAD_XDICTIONARY +360 +1402D +102 +} +102 +{ACAD_REACTORS +330 +86 +102 +} +330 +86 +100 +AcDbProxyObject + 90 + 499 + 91 + 502 + 95 + 25 + 70 + 0 + 93 + 1849 +310 +4254DD185B99185C990028B81E85EB51B8AE3F2E07A17AD46E2B8FC02B5E8DC0F42B1CFD028000000C1008070000C3001FDFF8000000C1003FBFF000000182007F7FE00000030400FEFFC00000060801FDFF8000000C1003FBFF00000018200000000000000681FA0B0000001820100E000186003FBFF000000182007F7FE0 +310 +0000030400FEFFC00000060801FDFF8000000C1003FBFF000000182007F7FE000000304000AD7A3703D0AC73F4160000003040201C00030C007F7FE00000030400FEFFC00000060801FDFF8000000C1003FBFF000000182007F7FE00000030400FEFFC000000608000 +340 +11 +340 +11 +340 +11 + 94 + 0 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +ACAD_PROXY_OBJECT + 5 +13E07 +102 +{ACAD_XDICTIONARY +360 +370C1 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 598 +310 +430C9915DA5C99599C985B59401049028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C800405A000000320014050640A01C00030C010500920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E09 +102 +{ACAD_XDICTIONARY +360 +370C5 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 662 +310 +428CD108121A5919195B8010640502408333333333333E3BF0000000000000FB023FFFFFF0802409028070000C3008000000C8004080000000000606640A000000320014050640A01C00030C010300920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E08 +102 +{ACAD_XDICTIONARY +360 +370C3 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 598 +310 +430CD915DA5C99599C985B59401059028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C800405A000000320014050640A01C00030C010500920280D3 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E06 +102 +{ACAD_XDICTIONARY +360 +370BF +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 558 +310 +4190985CDA58C0107406404333333333333E3BF0000000000000FB023FFFFFF08029048070000C3008000000C80040542201C00030C014050640A01C00030C010500920280D6 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0D +102 +{ACAD_XDICTIONARY +360 +370CD +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 598 +310 +42509C9A59DA1D195B8010C409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542201C00030C014050640A01C00030C010500920280A657 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E11 +102 +{ACAD_XDICTIONARY +360 +370D5 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 622 +310 +4310DBDB1BDC90DA185B99D9401104090240C333333333333E3BF0000000000000FB0220202030802405048070000C3008000000C800405422202020308014050640A01C00030C010500920280D7 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0A +102 +{ACAD_XDICTIONARY +360 +370C7 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 670 +310 +42D0DBDB98D95C1D1D585B0010940D028333333333333E3BF0000000000000FB023FFFFFF0802409028070000C3008000000C800404000000000060664042201C00030C014050640A01C00030C010300920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0C +102 +{ACAD_XDICTIONARY +360 +370CB +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 582 +310 +41111A5B4010B409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542201C00030C014050640A01C00030C01050092028099DFFFFFF4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E14 +102 +{ACAD_XDICTIONARY +360 +370DB +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 622 +310 +43515919D950DBDB1BDC93D99980116409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542201C00030C014050640A01C00030C010500920280D4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E10 +102 +{ACAD_XDICTIONARY +360 +370D3 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 614 +310 +43119858D95C185D1D195C9B8010F409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542201C00030C014050640A01C00030C010500920280D4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E02 +102 +{ACAD_XDICTIONARY +360 +370B7 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 558 +310 +41519B185D00240901404333333333333E3BF0000000000000F9023FFFFFF0801029048070000C3008000000C80040542201C00030C014050640A01C00030C010500920286D6 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E03 +102 +{ACAD_XDICTIONARY +360 +370B9 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 638 +310 +43919B185D15DA5D1A115919D95CC010140901404333333333333E3BF0000000000000F9023FFFFFF080102405048070000C3008000000C800405A000000320014050640A01C00030C010500920286D5 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E04 +102 +{ACAD_XDICTIONARY +360 +370BB +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 582 +310 +4211DBDD5C985D590010240902404333333333333E3BF0000000000000F9023FFFFFF0801029048070000C3008000000C800405A01C00030C014050640A01C00030C010500920286D6 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E05 +102 +{ACAD_XDICTIONARY +360 +370BD +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 662 +310 +4451DBDD5C985D5915DA5D1A115919D95CC010340902404333333333333E3BF0000000000000F9023FFFFFF080102405048070000C3008000000C800405A000000320014050640A01C00030C010500920286D4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607B +102 +{ACAD_XDICTIONARY +360 +370DF +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 638 +310 +41D21A5919195B8010640502408333333333333E3BF0000000000000FB023FFFFFF0802409028070000C3008000000C8004080000000000004440A000000320014050640A01C00030C010300920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E12 +102 +{ACAD_XDICTIONARY +360 +370D7 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 598 +310 +42929A5D1D195C93D99980114409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542A01C00030C014050640A01C00030C010500920280D6 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0F +102 +{ACAD_XDICTIONARY +360 +370D1 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 614 +310 +43131A5B995C185D1D195C9B8010E409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80041D42201C00030C014050640A01C00030C010500920E80D5 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E13 +102 +{ACAD_XDICTIONARY +360 +370D9 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 614 +310 +4313DD995C9A185B99D3D99980115409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040542601C00030C014050640A01C00030C010500920280D4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0B +102 +{ACAD_XDICTIONARY +360 +370C9 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 590 +310 +429499585B1A5CDD1A58C0108409028333333333333E3BF0000000000000FB023FFFFFF08024068070000C3008000000C8004054221E1E1E308014050640A01C00030C010500920286D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36080 +102 +{ACAD_XDICTIONARY +360 +370E9 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 582 +310 +41D4DA185919590011B40902404333333333333E3BF0000000000000F9023FFFFFF0801029048070000C3008000000C800405422000000320014050640A1E1E1E308010300920282D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607F +102 +{ACAD_XDICTIONARY +360 +370E7 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 678 +310 +4494DA18591959081DDA5D1A08195919D95CC011A40902404333333333333E3BF0000000000000F9023FFFFFF0801024050A8070000C3008000000C800409422000000320014050640A01C00030C010300920282D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607C +102 +{ACAD_XDICTIONARY +360 +370E1 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 710 +310 +43D4DA1859195CC81BD98811DC985E401174090240C333333333333E3BF0000000000000FB023FFFFFF0802409028070000C3008070000C300404000000000000444042201C00030C014050640A01C00030C010300920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607D +102 +{ACAD_XDICTIONARY +360 +370E3 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 654 +310 +4214DAD95D18DA1E4011840502408333333333333E3BF0000000000000FB023FFFFFF0802409028070000C3008070000C300404000000000000444042E01C00030C014050640A01C00030C010600920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +13E0E +102 +{ACAD_XDICTIONARY +360 +370CF +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 582 +310 +42151A1A58DAD95B8010D409028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C80040543201C00030C014050640A01C00030C010500920280D4 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607A +102 +{ACAD_XDICTIONARY +360 +370DD +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 582 +310 +4295DA5C99599C985B59401059028333333333333E3BF0000000000000FB023FFFFFF0802405048070000C3008000000C800405A000000320014050640A01C00030C010300920280D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +3607E +102 +{ACAD_XDICTIONARY +360 +370E5 +102 +} +102 +{ACAD_REACTORS +330 +13E01 +102 +} +330 +13E01 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 25 + 70 + 0 + 93 + 574 +310 +41960B54985E4011940902404000000000000E03F0000000000000FB023FFFFFF0801014068070000C3008000000C80040542201C00030C014050640A01C00030C010300920286D0 + 94 + 0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +DICTIONARYVAR + 5 +1405F +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +1405E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +DICTIONARYVAR + 5 +8B +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +DICTIONARYVAR + 5 +3612F +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +Imperial24 + 0 +DICTIONARYVAR + 5 +36130 +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +Imperial24 + 0 +DICTIONARYVAR + 5 +67 +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +6B +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +42E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +370B0 +102 +{ACAD_REACTORS +330 +370AE +102 +} +330 +370AE +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +370AF +102 +{ACAD_REACTORS +330 +370AE +102 +} +330 +370AE +100 +AcDbDictionary +281 + 1 + 3 +2129847944 +350 +370A9 + 3 +2129847952 +350 +370AA + 3 +2129847960 +350 +370AB + 3 +2129847968 +350 +370AC + 3 +2129847976 +350 +370AD + 0 +XRECORD + 5 +13FDE +102 +{ACAD_REACTORS +330 +13FDD +102 +} +330 +13FDD +100 +AcDbXrecord +280 + 1 +330 +19A +330 +20F +330 +2A3 +330 +0 +330 +1907 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 + 0 +ACAD_PROXY_OBJECT + 5 +3635A +102 +{ACAD_REACTORS +330 +36359 +102 +} +330 +36359 +100 +AcDbProxyObject + 90 + 499 + 91 + 522 + 95 + 25 + 70 + 0 + 93 + 68 +310 +40501406A42102D020 +330 +3635C +360 +0 +360 +369F6 +360 +36A24 +330 +369F6 +330 +36A24 + 94 + 0 + 0 +XRECORD + 5 +370F0 +102 +{ACAD_REACTORS +330 +370EF +102 +} +330 +370EF +100 +AcDbXrecord +280 + 1 +1070 + 0 +1070 + 1 +1070 + 1 + 0 +XRECORD + 5 +370F2 +102 +{ACAD_REACTORS +330 +370F1 +102 +} +330 +370F1 +100 +AcDbXrecord +280 + 1 +1070 + 0 +1070 + 1 +1070 + 1 + 0 +DICTIONARY + 5 +370ED +330 +36084 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370EE + 0 +DICTIONARY + 5 +1402B +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYOUTTHUMBNAIL +360 +1402C + 0 +DICTIONARY + 5 +13DFA +330 +13DF9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B6 + 3 +BUMPTILE +360 +13DFC + 3 +DIFFUSETILE +360 +13DFB + 3 +OPACITYTILE +360 +13DFF + 3 +REFLECTIONTILE +360 +13DFE + 3 +REFRACTIONTILE +360 +13E00 + 3 +SPECULARTILE +360 +13DFD + 0 +DICTIONARY + 5 +13DF2 +330 +13DF1 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B5 + 3 +BUMPTILE +360 +13DF4 + 3 +DIFFUSETILE +360 +13DF3 + 3 +OPACITYTILE +360 +13DF7 + 3 +REFLECTIONTILE +360 +13DF6 + 3 +REFRACTIONTILE +360 +13DF8 + 3 +SPECULARTILE +360 +13DF5 + 0 +DICTIONARY + 5 +370B3 +330 +A192 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B4 + 0 +DICTIONARY + 5 +370EB +330 +36082 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370EC + 0 +DICTIONARY + 5 +1402D +330 +87 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_ROUNDTRIP_2008_TABLESTYLE_CELLSTYLEMAP +360 +370A2 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B2 + 0 +DICTIONARY + 5 +370C1 +330 +13E07 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370C2 + 0 +DICTIONARY + 5 +370C5 +330 +13E09 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370C6 + 0 +DICTIONARY + 5 +370C3 +330 +13E08 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370C4 + 0 +DICTIONARY + 5 +370BF +330 +13E06 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370C0 + 0 +DICTIONARY + 5 +370CD +330 +13E0D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370CE + 0 +DICTIONARY + 5 +370D5 +330 +13E11 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370D6 + 0 +DICTIONARY + 5 +370C7 +330 +13E0A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370C8 + 0 +DICTIONARY + 5 +370CB +330 +13E0C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370CC + 0 +DICTIONARY + 5 +370DB +330 +13E14 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370DC + 0 +DICTIONARY + 5 +370D3 +330 +13E10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370D4 + 0 +DICTIONARY + 5 +370B7 +330 +13E02 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370B8 + 0 +DICTIONARY + 5 +370B9 +330 +13E03 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370BA + 0 +DICTIONARY + 5 +370BB +330 +13E04 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370BC + 0 +DICTIONARY + 5 +370BD +330 +13E05 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370BE + 0 +DICTIONARY + 5 +370DF +330 +3607B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370E0 + 0 +DICTIONARY + 5 +370D7 +330 +13E12 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370D8 + 0 +DICTIONARY + 5 +370D1 +330 +13E0F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370D2 + 0 +DICTIONARY + 5 +370D9 +330 +13E13 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370DA + 0 +DICTIONARY + 5 +370C9 +330 +13E0B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370CA + 0 +DICTIONARY + 5 +370E9 +330 +36080 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370EA + 0 +DICTIONARY + 5 +370E7 +330 +3607F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370E8 + 0 +DICTIONARY + 5 +370E1 +330 +3607C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370E2 + 0 +DICTIONARY + 5 +370E3 +330 +3607D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370E4 + 0 +DICTIONARY + 5 +370CF +330 +13E0E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370D0 + 0 +DICTIONARY + 5 +370DD +330 +3607A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370DE + 0 +DICTIONARY + 5 +370E5 +330 +3607E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +370E6 + 0 +XRECORD + 5 +370A9 +102 +{ACAD_REACTORS +330 +370AF +102 +} +330 +370AF +100 +AcDbXrecord +280 + 1 + 1 +AcDb_Thumbnail_Schema +102 +{ATTRRECORD +341 +370AA + 2 +AcDbDs::TreatedAsObjectData +280 + 1 +291 + 1 +102 +ATTRRECORD} +102 +{ATTRRECORD +341 +370AB + 2 +AcDbDs::Legacy +280 + 1 +291 + 1 +102 +ATTRRECORD} + 2 +AcDbDs::ID +280 + 10 + 91 + 8 +102 +{ATTRRECORD +341 +370AC + 2 +AcDs:Indexable +280 + 1 +291 + 1 +102 +ATTRRECORD} +102 +{ATTRRECORD +341 +370AD + 2 +AcDbDs::HandleAttribute +280 + 7 +282 + 1 +102 +ATTRRECORD} + 2 +Thumbnail_Data +280 + 15 + 91 + 0 + 0 +XRECORD + 5 +370AA +102 +{ACAD_REACTORS +330 +370AF +102 +} +330 +370AF +100 +AcDbXrecord +280 + 1 + 1 +AcDbDs::TreatedAsObjectDataSchema + 2 +AcDbDs::TreatedAsObjectData +280 + 1 + 91 + 0 + 0 +XRECORD + 5 +370AB +102 +{ACAD_REACTORS +330 +370AF +102 +} +330 +370AF +100 +AcDbXrecord +280 + 1 + 1 +AcDbDs::LegacySchema + 2 +AcDbDs::Legacy +280 + 1 + 91 + 0 + 0 +XRECORD + 5 +370AC +102 +{ACAD_REACTORS +330 +370AF +102 +} +330 +370AF +100 +AcDbXrecord +280 + 1 + 1 +AcDbDs::IndexedPropertySchema + 2 +AcDs:Indexable +280 + 1 + 91 + 0 + 0 +XRECORD + 5 +370AD +102 +{ACAD_REACTORS +330 +370AF +102 +} +330 +370AF +100 +AcDbXrecord +280 + 1 + 1 +AcDbDs::HandleAttributeSchema + 2 +AcDbDs::HandleAttribute +280 + 7 + 91 + 1 +284 + 1 + 0 +ACAD_PROXY_OBJECT + 5 +369F6 +330 +3635A +100 +AcDbProxyObject + 90 + 499 + 91 + 523 + 95 + 25 + 70 + 0 + 93 + 53 +310 +405014190340F8 +330 +3635A +360 +369F7 +360 +369FA +360 +369FB +360 +369FC + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A24 +330 +3635A +100 +AcDbProxyObject + 90 + 499 + 91 + 523 + 95 + 25 + 70 + 0 + 93 + 53 +310 +405014210340F8 +330 +3635A +360 +36A25 +360 +36A26 +360 +36A27 +360 +36A28 + 94 + 0 + 0 +XRECORD + 5 +370EE +102 +{ACAD_REACTORS +330 +370ED +102 +} +330 +370ED +100 +AcDbXrecord +280 + 1 +102 +DISPLAYNAME + 1 +Imperial24 +102 +FLAGS + 90 + 0 + 0 +XRECORD + 5 +1402C +102 +{ACAD_REACTORS +330 +1402B +102 +} +330 +1402B +100 +AcDbXrecord +280 + 1 +310 +28000000000100006400000001000800000000000064000001000000010000000001000000000000000000FF000000FFC8C8C8FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF330000FF660000FF990000FFCC0000FFFF0000FF003300FF333300FF663300FF993300FFCC3300FFFF3300 +310 +FF006600FF336600FF666600FF996600FFCC6600FFFF6600FF009900FF339900FF669900FF999900FFCC9900FFFF9900FF00CC00FF33CC00FF66CC00FF99CC00FFCCCC00FFFFCC00FF00FF00FF33FF00FF66FF00FF99FF00FFCCFF00FFFFFF00FF000033FF330033FF660033FF990033FFCC0033FFFF0033FF003333FF3333 +310 +33FF663333FF993333FFCC3333FFFF3333FF006633FF336633FF666633FF996633FFCC6633FFFF6633FF009933FF339933FF669933FF999933FFCC9933FFFF9933FF00CC33FF33CC33FF66CC33FF99CC33FFCCCC33FFFFCC33FF00FF33FF33FF33FF66FF33FF99FF33FFCCFF33FFFFFF33FF000066FF330066FF660066FF99 +310 +0066FFCC0066FFFF0066FF003366FF333366FF663366FF993366FFCC3366FFFF3366FF006666FF336666FF666666FF996666FFCC6666FFFF6666FF009966FF339966FF669966FF999966FFCC9966FFFF9966FF00CC66FF33CC66FF66CC66FF99CC66FFCCCC66FFFFCC66FF00FF66FF33FF66FF66FF66FF99FF66FFCCFF66FF +310 +FFFF66FF000099FF330099FF660099FF990099FFCC0099FFFF0099FF003399FF333399FF663399FF993399FFCC3399FFFF3399FF006699FF336699FF666699FF996699FFCC6699FFFF6699FF009999FF339999FF669999FF999999FFCC9999FFFF9999FF00CC99FF33CC99FF66CC99FF99CC99FFCCCC99FFFFCC99FF00FF99 +310 +FF33FF99FF66FF99FF99FF99FFCCFF99FFFFFF99FF0000CCFF3300CCFF6600CCFF9900CCFFCC00CCFFFF00CCFF0033CCFF3333CCFF6633CCFF9933CCFFCC33CCFFFF33CCFF0066CCFF3366CCFF6666CCFF9966CCFFCC66CCFFFF66CCFF0099CCFF3399CCFF6699CCFF9999CCFFCC99CCFFFF99CCFF00CCCCFF33CCCCFF66CC +310 +CCFF99CCCCFFCCCCCCFFFFCCCCFF00FFCCFF33FFCCFF66FFCCFF99FFCCFFCCFFCCFFFFFFCCFF0000FFFF3300FFFF6600FFFF9900FFFFCC00FFFFFF00FFFF0033FFFF3333FFFF6633FFFF9933FFFFCC33FFFFFF33FFFF0066FFFF3366FFFF6666FFFF9966FFFFCC66FFFFFF66FFFF0099FFFF3399FFFF6699FFFF9999FFFFCC +310 +99FFFFFF99FFFF00CCFFFF33CCFFFF66CCFFFF99CCFFFFCCCCFFFFFFCCFFFF00FFFFFF33FFFFFF66FFFFFF99FFFFFFCCFFFFFFFFFFFFFF000000FF0D0D0DFF1A1A1AFF282828FF353535FF434343FF505050FF5D5D5DFF6B6B6BFF787878FF868686FF939393FFA1A1A1FFAEAEAEFFBBBBBBFFC9C9C9FFD6D6D6FFE4E4E4FF +310 +F1F1F1FFFFFFFFFF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F500F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F50000000000F5F5F5F5F5F5F50000000000F500F5F5F5F50000F5000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500F5F5F5F5F50000000000F500000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000F5F5F5000000000000000000 +310 +0000000000F5F50000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000F5F5F500F5F5000000F5 +310 +0000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F50000000000F5F5F5F5F500000000000000F5F5F5F5F5F50000F5000000000000F5F5F5F5F500F5F5F5F5F5F5F5F5F5000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000F5 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F50000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F52828282828F5F528F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F50000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F50000F5F5F5F5F5F5F5F5F5F5F5F5000000F5F5F5F5F5F50000F5F5F5F5F5F5F5F5F5F5F5F500F5F5F5F5F5F5F5F5F5000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500BEBEBEBEBE +310 +BE00000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000F500BEF50000000000000000000000000000000000F500000000000000F5000000000000F5F5F5F5F500000000000000000000000000F5F5F5F50000000000000000 +310 +0000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500BEBEBE +310 +BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE0000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000F5BEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500F5F5F5BEBEBEBEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5BEBEBEBEBEBE +310 +BEBEBEF5F5BEBEF50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500F5 +310 +00F5F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE00F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000F500BEF50000000000000000000000000000000000F500000000000000F5F5F5F5F5F500F5F500BEBEBEBEBEBEBEBEBE000000000000000000F5BEBEBEBE +310 +BEBEBEBEBEF500BEBEF50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5 +310 +00F5F5F5F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE00F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000F5F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F52828F5F5F5F52828F500000000000000000000000000000000000000F50000 +310 +00000000000000F5000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00F5000000F5F5000000000000000000000000000000000000F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000F5BEBEF50000000000000000000000000000000000F500000000000000F5F5F5F5000000F5F5F5F5F5F5F500F5F50000000000000000000000F5 +310 +00F5F5F5F5F5F50000F5F5F5F5F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000F500F5F5F5F5F5F5F5F50000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500BEF50000000000000000000000000000000000F500000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000 +310 +00F500F5F5F5F5F5F50000F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000F50000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5BEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000F5F5F5F5F5F5F5F500000000000000000000BEBEBEBEBEBE00F5F5BEBEBEBEBEBEBEBEBEBEF5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000F50000F528F5F50000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000F5F5F5F5F5F5F500000000000000000000BEBEBEBEBEBE00F5F5BEBEBEBEBEBEBEBEBEBEBEBE +310 +000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5000000000000F5F5F5F5F5F5F5F5F5F5F50000 +310 +0000000000000000000000000000F5F5F5F500000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5000000000000F5F5F5F5F5F5F5F5F5F500 +310 +00000000000000000000000000000000F5F5F5F500000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000F500F5F5F5F5F50000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCF50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000F500F5F5F5F5F50000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000DC28282828F5F52828282828282828F5F528282828DCF5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000DC0000F5F5F5F50000F5282800F5F5F5F5F5000028DCF500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000DC0000F5F5F5F50000F5282800F5F5F5F5F5000028DCF50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000DC0000000000000000002828000000000000000028DCF5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3C300000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000DC2828282828282828282828282828282828282828DCF500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3C30000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000DC00000000BEBEBEBEBEBEBEBEBEBEBE0000000000DCF50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEDCDCDCDCDCDCDCBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEBEBEBEBEBEBEBEBEF50000000000000000000000DC0000000000000000000000000000000000000000DCF5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BE000000000000000000000000000000000000000000000000000000000000000000DCDCDCDCDCDC000000000000000000000000000000000000 +310 +00000000000000000000000000BE0000000000000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCF500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BE00BEBEBEBEBEBEBEBEBEBEBEC3C3BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEC3C32D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEBEBEBEBEF500000000000000BE000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BE00BE00000000000000000000C3C300000000000000000000000000000000000000C3C3000000000000000000000000000000000000 +310 +000000000000000000BE00000000000000BE000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BE00BE0000000000BEBEBE2D2D2D2D2D2DF5BEBE0000000000000000000000000000C3C300000000000000000000000000000000 +310 +0000000000000000000000BE00000000000000BE000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5BEBEBEBEBEBEBEBEBEBEBEF500000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE00BE00000000000000BE000000000000BE00000000000000000000000000000000F5F5F5F500000000000000000000 +310 +000000000000000000000000000000BE000000000000F5BEF5000000000000000000BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +2828282828282828282828282828282828F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEF500BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA628 +310 +28A628282D2DA62828A6282D2DA6A628A628282D2DA62828A62828BEF500000000000000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DF528BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2D +310 +F528BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE28BEF500000000000000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000002D0000000000F5BE282D2D002800BE282D2D00F528BE00282D2D002800BE00282D2D002800BE282D2D00F528BE0028 +310 +2D2D002800BE00282D2D002800BE282D2D00F528BE00282D2D002800BE0028BEF500000000000000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000002D0000000000F5BE282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A6 +310 +28282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A62828BEF500000000000000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000002DC300000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A6 +310 +28BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000000000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000C3C3C3000000F5BE282D2DF528BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DF528BEBE28BE2D +310 +BEBE28BEBE282D2DF528BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE28BEF500000000000000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000C3C300000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE28 +310 +2D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000000000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000F5BEBEBEBEBEF5BE282D2D002828A6282D2D000028A628282D2D002828A628282D28002828 +310 +A6282D2D00C328A628282D2D002828A628282D28002828A6282D2D000028A628282D2D002828A62828BEF500000000000000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000BE0000000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA6 +310 +2800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028F5BEBEBEBEBEF50000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000BE0000000000F5BE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D +310 +2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE28DCF500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000BE0000000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00 +310 +282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE002800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000BEBEBEBEBEBEF5BE28282DA62828A6282828A6A628A62828282DA62828 +310 +A62828282DA62828A6282828A6A628A62828282DA62828A62828282DA62828A6282828A6A628A62828282DA62828A6282800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DF52800BE282D2D00F528BE00282D2D00 +310 +2800BE00282D2DF52800BE282D2D00F528BE00282D2DF52800BE00282D2DF52800BE282D2D00F528BE00282D2DF52800BE002800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DBE28BEBE28BE2DBEBE28BEBE282D +310 +2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE2800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5DC282D2DA62828A6282D2DA6A628A628 +310 +282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A6282800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000F5BEBEBEBEBEDC282D2DA6282828282D2DA6A628 +310 +2828282D2DA628282828282D2DA6282828282D2DA6A6282828282D2DA628282828282D2DA6282828282D2DA6A6282828282D2DA6282828282800F500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000F5BEBEBEBEBEBEBEBEF5BE282D2DF528BEBE28BE2DBE +310 +BE28BEBE282D2DBE28BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE28F5F500000000BE00002D00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000BE000000BE00000000F500282D2D002800BE282D +310 +2D00F528BE00282D2D002800BE00282D2D002800BE282D2D00F528BE00282D2D002800BE00282D2D002800BE282D2D00F528BE00282D2D002800BE0028F5F50000C3C3BEC3C32D002D2D000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000BE000000DC00000000F500282D2DA62828A6 +310 +282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A62828BEF50000C3C3DCC3C32D002D2D000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000BE000000DC00000000F500282D2DA628 +310 +00BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028F5F5000000C3DC00C32D002D2D000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000BE0000C3DC2D2DF5BEF5C3F52D2D +310 +F528BEBEF5F52DBEBE28BEBEF52D2DBE28BEBEBEF52D2DF528BEBEF5F52DBEF528BEBEF52D2DF528BEBEBEF52D2DF528BEBEF5F52DBEBE28BEBEF52D2DF528BEBEBEF5F5F5F52D2D00DC00002D002DC3C30000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000BE00C3C3DC00000000F50028 +310 +2D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028F5F500000000DC00002D002DC3C30000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000C3C3BE0000C3DC00000000F5 +310 +00282D2D002828A6282D2D000028A628282D2D002828A628282D2D002828A6282D2D00C328A628282D2D002828A628282D28002828A6282D2D000028A628282D2D002828A62828BEF500000000DC0000BE002D2D000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000C3C32D000000DC000000 +310 +00F500282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000DC0000BE002D2D000000000000000000000000000000000000000000F500000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000C3C32D000000BE00 +310 +000000F500BE2D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE28BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000002D000000 +310 +BEBEBEBEBEDCDCBE2D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F5000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000002D00 +310 +00000000000000BEBE28282DA62828A6282828A6A628A62828282DA62828A62828282DA62828A6282828A6A628A62828282DA62828A62828282DA62828A6282828A6A628A62828282DA62828A62828BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F500000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000 +310 +2DDCDCDCDCDCDCDCBEBEBE282D2DF52800BE282D2D00F528BE00282D2D002800BE00282D2DF52800BE282D2D00F528BE00282D2DF52800BE00282D2DF52800BE282D2D00F528BE00282D2DF52800BE0028BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000 +310 +00002D000000DCDCDCDC00BEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE28BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F5000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000 +310 +00000000BE00000000DCDCDCBEDCBEBE2D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A62828BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F500000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000 +310 +000000000000BE0000000000000000F50028282DA6282828282828A6A628282828282DA62828282828282DA6282828282828A6A628282828282DA62828282828282DA6282828282828A6A628282828282DA62828282828BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F50000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000 +310 +0000000000000000BE0000000000000000F500282D2DF528BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE28BEF500000000BE0000BE00BE00000000000000000000000000000000000000000000F5000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000 +310 +00000000000000000000BE0000000000000000F500282D2D002800BE282D2D00F528BE00282D2D002800BE00282D2D002800BE282D2D00F528BE00282D2D002800BE00282D2D002800BE282D2D00F528BE00282D2D002800BE0028DCDCBEBEBEBEBE0000BE00BE00000000000000000000000000000000000000000000F500 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000 +310 +000000000000000000000000BE0000000000000000F500282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A628282D2DA62828A6282D2DA6A628A628282D2DA62828A628BEBEDCBEDCDCDC000000BE00BE00000000000000000000000000000000000000000000 +310 +F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000 +310 +0000000000000000000000000000BE0000000000000000F500282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000000000BE00BE0000000000000000000000000000000000000000 +310 +0000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000 +310 +00000000000000000000000000000000BEBEBEBEBEBEBEBEBEF5F5282D2DF528BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE282D2DF528BEBE28BE2DBEBE28BEBE282D2DF528BEBEBE28BEF500000000000000BE00BE000000000000000000000000000000000000 +310 +00000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000 +310 +000000000000000000000000000000000000000000000000000000F5F5282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF500000000000000BE00BE00000000000000000000000000000000 +310 +000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5000000 +310 +0000000000000000000000000000000000000000000000000000000000F5BE282D2D002828A6282D2D000028A628282D2D002828A628282D2D002828A6282D2D00C328A628282D2D002828A628282D28002828A6282D2D000028A62828F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE00BE0000000000000000000000000000 +310 +0000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500 +310 +00000000000000000000000000000000000000000000000000000000000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF5000000000000000000BE000000000000000000000000 +310 +00000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE282D2DBE28BEBE28BE2DBEBE28BEBE282D2DBE28BEBEBE28BEF5000000000000000000BE00000000000000000000 +310 +000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000F50000000000000000000000000000000000000000000000000000000000000000F5BE282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE00282D2DA62800BE282D2DA6A628BE00282D2DA62800BE0028BEF5000000000000000000BE0000000000000000 +310 +0000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000F50000000000000000000000000000000000000000000000000000000000000000F5F528282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828BEF5000000000000000000BE000000000000 +310 +00000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000F50000000000000000000000000000000000000000000000000000000000000000F5F5F5000000000000000000000000000000000000000000000000000000000000000000C30000000000000000000000000000000000000000000000000000000000000000000000BEF5000000000000000000BE00000000 +310 +000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000F50000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5BEBEBEBEBEBEBEBEBEBE0000 +310 +0000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBE00000000000000000000000000000000000000000000000000000000000000000000BE0000000000000000000000000000000000000000000000000000000000000000000000BEBE00000000000000000000 +310 +00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBE00000000000000000000000000000000000000000000000000000000000000000000F52D00000000000000000000000000000000000000000000000000000000000000000000BEBE0000000000000000 +310 +000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBE000000000000000000000000000000000000000000000000000000000000000000002D2D00000000000000000000000000000000000000000000000000000000000000000000BEBE000000000000 +310 +0000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBE000000000000000000000000000000000000000000000000000000000000000000C32D2D00000000000000000000000000000000000000000000000000000000000000000000BEBE00000000 +310 +00000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBE0000000000000000000000000000000000000000000000000000000000000000C3C3000000000000000000000000000000000000000000000000000000000000000000000000BEBE0000 +310 +000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBEBE00000000000000000000000000000000000000000000000000000000000000C3C32D2D2D2D00000000000000000000000000000000000000000000000000000000000000BEBEBE +310 +0000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2D2D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +F5BE0000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2D2DC32D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEF50000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D2DC3C32D2D00000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C30000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000F5BEF50000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F50000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000F528282828282828282828282828282828282828282828282828282828282828282828282800F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F500F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000F528282828282828282828282828282828282828282828282828282828282828282828282800F50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0 +XRECORD + 5 +370B6 +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 127 +282 + 0 + 72 + 0 + 77 + 0 +171 + 0 +175 + 0 +179 + 0 +273 + 0 + 0 +XRECORD + 5 +13DFC +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFB +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFF +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFE +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13E00 +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFD +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +370B5 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 127 +282 + 0 + 72 + 0 + 77 + 0 +171 + 0 +175 + 0 +179 + 0 +273 + 0 + 0 +XRECORD + 5 +13DF4 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF3 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF7 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF6 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF8 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF5 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +370B4 +102 +{ACAD_REACTORS +330 +370B3 +102 +} +330 +370B3 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +XRECORD + 5 +370EC +102 +{ACAD_REACTORS +330 +370EB +102 +} +330 +370EB +100 +AcDbXrecord +280 + 1 +102 +DISPLAYNAME + 1 +Imperial24 +102 +FLAGS + 90 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +370A2 +102 +{ACAD_REACTORS +330 +1402D +102 +} +330 +1402D +100 +AcDbProxyObject + 90 + 499 + 91 + 511 + 95 + 25 + 70 + 0 + 93 + 5232 +310 +40D054060020000020000003200101A412A5058000000C100000000000000340FD012E07A17AD46E2B8FCB81E85EB51B8AE3F2E07A17AD46E2B8FCB81E85EB51B8AE3F02B5E8DC0F42B1CFC0AD7A3703D0AC73F419019018000000C1003FBFFFFFE02B5E8DC0F42A9CFD029018000000C1003FBFFFFFE02B5E8DC0F42A9CFD +310 +049018000000C1003FBFFFFFE02B5E8DC0F42A9CFD089018000000C1003FBFFFFFE02B5E8DC0F42A9CFD109018000000C1003FBFFFFFE02B5E8DC0F42A9CFD209018000000C1003FBFFFFFE02B5E8DC0F42A9CFD01405075F5449544C450041501A8000000C800406904A9416000000304000AD7A3703D0AC73F404B81E85E +310 +B51B8AE3F2E07A17AD46E2B8FCB81E85EB51B8AE3F2E07A17AD46E2B8FC0AD7A3703D0AC73F02B5E8DC0F42B1CFD0640640600000030400FEFFFFFF80AD7A3703D0AA73F40A40600000030400FEFFFFFF80AD7A3703D0AA73F41240600000030400FEFFFFFF80AD7A3703D0AA73F42240600000030400FEFFFFFF80AD7A370 +310 +3D0AA73F44240600000030400FEFFFFFF80AD7A3703D0AA73F48240600000030400FEFFFFFF80AD7A3703D0AA73F409014217D2115051115480105406A0000003200101A412A5028000000C10002B5E8DC0F42B1CFD012E07A17AD46E2B8FCB81E85EB51B8AE3F2E07A17AD46E2B8FCB81E85EB51B8AE3F02B5E8DC0F42B1C +310 +FC0AD7A3703D0AC73F419019018000000C1003FBFFFFFE02B5E8DC0F42A9CFD029018000000C1003FBFFFFFE02B5E8DC0F42A9CFD049018000000C1003FBFFFFFE02B5E8DC0F42A9CFD089018000000C1003FBFFFFFE02B5E8DC0F42A9CFD109018000000C1003FBFFFFFE02B5E8DC0F42A9CFD209018000000C1003FBFFFF +310 +FE02B5E8DC0F42A9CFD03409065F444154410000 +340 +11 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 +340 +11 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 +340 +11 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 +340 +0 + 94 + 0 + 0 +XRECORD + 5 +370B2 +102 +{ACAD_REACTORS +330 +1402D +102 +} +330 +1402D +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 4 + 91 + 0 + 1 + + 92 + 4 + 93 + 0 + 2 + + 94 + 4 + 95 + 0 + 3 + + 0 +XRECORD + 5 +370C2 +102 +{ACAD_REACTORS +330 +370C1 +102 +} +330 +370C1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 1 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 0 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370C6 +102 +{ACAD_REACTORS +330 +370C5 +102 +} +330 +370C5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370C4 +102 +{ACAD_REACTORS +330 +370C3 +102 +} +330 +370C3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370C0 +102 +{ACAD_REACTORS +330 +370BF +102 +} +330 +370BF +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370CE +102 +{ACAD_REACTORS +330 +370CD +102 +} +330 +370CD +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370D6 +102 +{ACAD_REACTORS +330 +370D5 +102 +} +330 +370D5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370C8 +102 +{ACAD_REACTORS +330 +370C7 +102 +} +330 +370C7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370CC +102 +{ACAD_REACTORS +330 +370CB +102 +} +330 +370CB +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370DC +102 +{ACAD_REACTORS +330 +370DB +102 +} +330 +370DB +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370D4 +102 +{ACAD_REACTORS +330 +370D3 +102 +} +330 +370D3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370B8 +102 +{ACAD_REACTORS +330 +370B7 +102 +} +330 +370B7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370BA +102 +{ACAD_REACTORS +330 +370B9 +102 +} +330 +370B9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370BC +102 +{ACAD_REACTORS +330 +370BB +102 +} +330 +370BB +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370BE +102 +{ACAD_REACTORS +330 +370BD +102 +} +330 +370BD +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370E0 +102 +{ACAD_REACTORS +330 +370DF +102 +} +330 +370DF +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370D8 +102 +{ACAD_REACTORS +330 +370D7 +102 +} +330 +370D7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370D2 +102 +{ACAD_REACTORS +330 +370D1 +102 +} +330 +370D1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370DA +102 +{ACAD_REACTORS +330 +370D9 +102 +} +330 +370D9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370CA +102 +{ACAD_REACTORS +330 +370C9 +102 +} +330 +370C9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370EA +102 +{ACAD_REACTORS +330 +370E9 +102 +} +330 +370E9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370E8 +102 +{ACAD_REACTORS +330 +370E7 +102 +} +330 +370E7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370E2 +102 +{ACAD_REACTORS +330 +370E1 +102 +} +330 +370E1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370E4 +102 +{ACAD_REACTORS +330 +370E3 +102 +} +330 +370E3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370D0 +102 +{ACAD_REACTORS +330 +370CF +102 +} +330 +370CF +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370DE +102 +{ACAD_REACTORS +330 +370DD +102 +} +330 +370DD +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +XRECORD + 5 +370E6 +102 +{ACAD_REACTORS +330 +370E5 +102 +} +330 +370E5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPost2010Prop28 +280 + 0 +102 +RTVSPost2010PropOp28 + 70 + 1 +102 +RTVSPost2010Prop29 +280 + 1 +102 +RTVSPost2010PropOp29 + 70 + 1 +102 +RTVSPost2010Prop30 +280 + 1 +102 +RTVSPost2010PropOp30 + 70 + 1 +102 +RTVSPost2010Prop31 +280 + 0 +102 +RTVSPost2010PropOp31 + 70 + 1 +102 +RTVSPost2010Prop32 +280 + 0 +102 +RTVSPost2010PropOp32 + 70 + 1 +102 +RTVSPost2010Prop33 +280 + 0 +102 +RTVSPost2010PropOp33 + 70 + 1 +102 +RTVSPost2010Prop34 +280 + 0 +102 +RTVSPost2010PropOp34 + 70 + 1 +102 +RTVSPost2010Prop35 +280 + 0 +102 +RTVSPost2010PropOp35 + 70 + 1 +102 +RTVSPost2010Prop36 +280 + 0 +102 +RTVSPost2010PropOp36 + 70 + 1 +102 +RTVSPost2010Prop37 + 90 + 50 +102 +RTVSPost2010PropOp37 + 70 + 1 +102 +RTVSPost2010Prop38 +140 +0.0 +102 +RTVSPost2010PropOp38 + 70 + 1 +102 +RTVSPost2010Prop39 +140 +1.0 +102 +RTVSPost2010PropOp39 + 70 + 1 +102 +RTVSPost2010Prop40 + 90 + 0 +102 +RTVSPost2010PropOp40 + 70 + 1 +102 +RTVSPost2010Prop41ColorIndex + 90 + 18 +102 +RTVSPost2010Prop41ColorRGB + 90 + 0 +102 +RTVSPost2010PropOp41 + 70 + 1 +102 +RTVSPost2010Prop42 + 90 + 50 +102 +RTVSPost2010PropOp42 + 70 + 1 +102 +RTVSPost2010Prop43 + 90 + 3 +102 +RTVSPost2010PropOp43 + 70 + 1 +102 +RTVSPost2010Prop44ColorIndex + 90 + 5 +102 +RTVSPost2010Prop44ColorRGB + 90 + 255 +102 +RTVSPost2010PropOp44 + 70 + 1 +102 +RTVSPost2010Prop45 +280 + 0 +102 +RTVSPost2010PropOp45 + 70 + 1 +102 +RTVSPost2010Prop46 + 90 + 50 +102 +RTVSPost2010PropOp46 + 70 + 1 +102 +RTVSPost2010Prop47 + 90 + 50 +102 +RTVSPost2010PropOp47 + 70 + 1 +102 +RTVSPost2010Prop48 + 90 + 50 +102 +RTVSPost2010PropOp48 + 70 + 1 +102 +RTVSPost2010Prop49 +280 + 0 +102 +RTVSPost2010PropOp49 + 70 + 1 +102 +RTVSPost2010Prop50 + 90 + 50 +102 +RTVSPost2010PropOp50 + 70 + 1 +102 +RTVSPost2010Prop51ColorIndex + 90 + 256 +102 +RTVSPost2010Prop51ColorRGB + 90 +-16777216 +102 +RTVSPost2010PropOp51 + 70 + 0 +102 +RTVSPost2010Prop52 +140 +1.0 +102 +RTVSPost2010PropOp52 + 70 + 0 +102 +RTVSPost2010Prop53 + 90 + 2 +102 +RTVSPost2010PropOp53 + 70 + 1 +102 +RTVSPost2010Prop54 + 1 +strokes_ogs.tif +102 +RTVSPost2010PropOp54 + 70 + 1 +102 +RTVSPost2010Prop55 +280 + 0 +102 +RTVSPost2010PropOp55 + 70 + 1 +102 +RTVSPost2010Prop56 +140 +1.0 +102 +RTVSPost2010PropOp56 + 70 + 1 +102 +RTVSPost2010Prop57 +140 +1.0 +102 +RTVSPost2010PropOp57 + 70 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 +102 +RTVSPropertyOp28 + 70 + 1 +102 +RTVSPropertyOp29 + 70 + 1 +102 +RTVSPropertyOp30 + 70 + 1 +102 +RTVSPropertyOp31 + 70 + 1 +102 +RTVSPropertyOp32 + 70 + 1 +102 +RTVSPropertyOp33 + 70 + 1 +102 +RTVSPropertyOp34 + 70 + 1 +102 +RTVSPropertyOp35 + 70 + 1 +102 +RTVSPropertyOp36 + 70 + 1 +102 +RTVSPropertyOp37 + 70 + 1 +102 +RTVSPropertyOp38 + 70 + 1 +102 +RTVSPropertyOp39 + 70 + 1 +102 +RTVSPropertyOp40 + 70 + 1 +102 +RTVSPropertyOp41 + 70 + 1 +102 +RTVSPropertyOp42 + 70 + 1 +102 +RTVSPropertyOp43 + 70 + 1 +102 +RTVSPropertyOp44 + 70 + 1 +102 +RTVSPropertyOp45 + 70 + 1 +102 +RTVSPropertyOp46 + 70 + 1 +102 +RTVSPropertyOp47 + 70 + 1 +102 +RTVSPropertyOp48 + 70 + 1 +102 +RTVSPropertyOp49 + 70 + 1 +102 +RTVSPropertyOp50 + 70 + 1 +102 +RTVSPropertyOp51 + 70 + 0 +102 +RTVSPropertyOp52 + 70 + 0 +102 +RTVSPropertyOp53 + 70 + 1 +102 +RTVSPropertyOp54 + 70 + 1 +102 +RTVSPropertyOp55 + 70 + 1 +102 +RTVSPropertyOp56 + 70 + 1 +102 +RTVSPropertyOp57 + 70 + 1 +102 +RTVSPropertyOp58 + 70 + 1 +102 +RTVSPropertyOp59 + 70 + 1 +102 +RTVSPropertyOp60 + 70 + 1 +102 +RTVSPropertyOp61 + 70 + 1 +102 +RTVSPropertyOp62 + 70 + 1 + 0 +ACAD_PROXY_OBJECT + 5 +369F7 +330 +369F6 +100 +AcDbProxyObject + 90 + 499 + 91 + 524 + 95 + 25 + 70 + 0 + 93 + 2818 +310 +40690390990B416C69676E4974656D730090156A90A41786573416E676C6500409014A0182D4454FB21F93F90C4974656D53706163696E6700405014A052B81E85EBD133409064974656D73009015690990D4C6576656C53706163696E6700405014A0402B1B100000E83F9074C6576656C73009015690190D526F77456C65 +310 +766174696F6E00405014A290B526F7753706163696E6700405014A0402B1B100000E83F905526F7773009015690140524416344624173736F63417272617952656374616E67756C6172506172616D65746572730090944D058D118905CDCDBD8D05C9C985E525D195B402A908AA40690814AE07A17AF44CD02A40A90814AE0 +310 +7A17AF450D02A40E9081EC52B91F86E93502A41290814AE07A17AF454D02A4169081999999999B196102A41A9081EC52B91F86E97502A41E90812385E852B95D8502A42290814AE07A17AF458D029A25B0BD4A172DD570260D4CCCCCCCC4D2F029AA40 +360 +369F8 +360 +369F9 +360 +369FD +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +369FF +330 +36A02 +330 +36A05 +330 +36A08 +330 +36A0B +330 +36A0C +330 +36A0D +330 +36A0E +330 +36A0F + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369FA +330 +369F6 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 37 +310 +4090178808 +330 +369EF +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369FB +330 +369F6 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 37 +310 +40901B8816 +330 +369EC +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369FC +330 +369F6 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 61 +310 +40AF000000200818 +330 +369F2 +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A25 +330 +36A24 +100 +AcDbProxyObject + 90 + 499 + 91 + 524 + 95 + 25 + 70 + 0 + 93 + 3010 +310 +40690390990B416C69676E4974656D730090156A90A41786573416E676C6500409014A0182D4454FB21F93F90C4974656D53706163696E6700405014A052B81E85EBD133409064974656D73009015690990D4C6576656C53706163696E6700405014A0402B1B100000E83F9074C6576656C73009015690190D526F77456C65 +310 +766174696F6E00405014A290B526F7753706163696E6700405014A0402B1B100000E83F905526F7773009015690140524416344624173736F63417272617952656374616E67756C6172506172616D65746572730090944D058D118905CDCDBD8D05C9C985E525D195B402A908AA40690814AE07A17AF44CD02A40A90814AE0 +310 +7A17AF450D02A40E9081EC52B91F86E93502A41290814AE07A17AF454D02A4169081999999999B196102A41A9081EC52B91F86E97502A41E90812385E852B95D8502A42290814AE07A17AF458D029000000000029A86F225B0BD4A172DD57000000000000A6A1BC0000000000003C2FE0D4CCCCCCCC4D2D029AA40 +360 +36A29 +360 +36A2A +360 +36A2B +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +36A1A +330 +36A1B +330 +36A1C +330 +36A1D +330 +36A1E +330 +36A1F +330 +36A20 +330 +36A21 +330 +36A22 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A26 +330 +36A24 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 37 +310 +409017880E +330 +36A18 +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A27 +330 +36A24 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 37 +310 +40901B8816 +330 +36A11 +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A28 +330 +36A24 +100 +AcDbProxyObject + 90 + 499 + 91 + 526 + 95 + 25 + 70 + 0 + 93 + 61 +310 +40AF000000200818 +330 +36A10 +330 +0 +330 +0 +360 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369F8 +330 +369F7 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 110 +310 +90B426173654E6F726D616C00AA5 +330 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369F9 +330 +369F7 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 78 +310 +9074F726967696E00AAB +330 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +369FD +330 +369F7 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 102 +310 +90A62617365506F696E7400AA8 +330 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A29 +330 +36A25 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 110 +310 +90B426173654E6F726D616C00AA4 +330 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A2A +330 +36A25 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 78 +310 +9074F726967696E00AA8 +330 +0 + 94 + 0 + 0 +ACAD_PROXY_OBJECT + 5 +36A2B +330 +36A25 +100 +AcDbProxyObject + 90 + 499 + 91 + 525 + 95 + 25 + 70 + 0 + 93 + 102 +310 +90A62617365506F696E7400AAA +330 +0 + 94 + 0 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219R-二供.are b/LaiPuLaser/TempMarkData/E219R-二供.are new file mode 100644 index 0000000..d8be28c Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219R-二供.are differ diff --git a/LaiPuLaser/TempMarkData/E219R-二供.dxf b/LaiPuLaser/TempMarkData/E219R-二供.dxf new file mode 100644 index 0000000..d05fe92 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219R-二供.dxf @@ -0,0 +1,18220 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-174.1744115828687 + 20 +-9.469261229525273 + 30 +0.0 + 9 +$EXTMAX + 10 +242.916458465556 + 20 +203.9782216473629 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458957.957066863 + 9 +$TDUCREATE + 40 +2458957.62373353 + 9 +$TDUPDATE + 40 +2458957.957066863 + 9 +$TDUUPDATE + 40 +2458957.62373353 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +430 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +263.1925764626786 + 22 +62.09260699741156 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +1169.430845988836 + 41 +0.4610435150995154 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +ͼ1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +29D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +97.09442135623733 + 10 +1.30000000000004 + 20 +96.95299999999999 + 10 +-1.299999999999784 + 20 +96.95300000000005 + 10 +-1.4414213562371 + 20 +97.09442135623733 + 0 +LWPOLYLINE + 5 +29E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +89.10557864376274 + 10 +1.30000000000004 + 20 +89.24700000000003 + 10 +-1.299999999999784 + 20 +89.24700000000003 + 10 +-1.4414213562371 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +29F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +97.66926122952533 + 10 +-9.57299022663156 + 20 +97.52783987328804 + 10 +-15.47299022663145 + 20 +97.52783987328804 + 10 +-15.61441158286877 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2A0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +88.53073877047471 + 10 +-9.57299022663156 + 20 +88.67216012671203 + 10 +-15.47299022663145 + 20 +88.67216012671203 + 10 +-15.61441158286877 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2A1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +88.53073877047471 + 10 +-29.39299022663155 + 20 +88.67216012671203 + 10 +-35.29299022663145 + 20 +88.67216012671203 + 10 +-35.43441158286876 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2A2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +89.10557864376274 + 10 +-18.51999999999995 + 20 +89.24700000000003 + 10 +-21.11999999999978 + 20 +89.24700000000003 + 10 +-21.26142135623709 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +2A3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +97.66926122952533 + 10 +-29.39299022663155 + 20 +97.52783987328804 + 10 +-35.29299022663145 + 20 +97.52783987328804 + 10 +-35.43441158286876 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2A4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +97.09442135623733 + 10 +-18.51999999999995 + 20 +96.95300000000002 + 10 +-21.11999999999978 + 20 +96.95300000000005 + 10 +-21.26142135623709 + 20 +97.09442135623733 + 0 +LWPOLYLINE + 5 +2A5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +88.53073877047471 + 10 +-49.21299022663155 + 20 +88.67216012671203 + 10 +-55.11299022663144 + 20 +88.67216012671203 + 10 +-55.25441158286876 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2A6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +89.10557864376274 + 10 +-38.33999999999995 + 20 +89.24700000000003 + 10 +-40.93999999999977 + 20 +89.24700000000003 + 10 +-41.08142135623709 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +2A7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +97.66926122952533 + 10 +-49.21299022663155 + 20 +97.52783987328804 + 10 +-55.11299022663144 + 20 +97.52783987328804 + 10 +-55.25441158286876 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2A8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +97.09442135623733 + 10 +-38.33999999999995 + 20 +96.95300000000002 + 10 +-40.93999999999977 + 20 +96.95300000000005 + 10 +-41.08142135623709 + 20 +97.09442135623733 + 0 +LWPOLYLINE + 5 +2A9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +88.53073877047474 + 10 +-69.03299022663154 + 20 +88.67216012671203 + 10 +-74.93299022663143 + 20 +88.67216012671203 + 10 +-75.07441158286875 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2AA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +89.10557864376274 + 10 +-58.15999999999994 + 20 +89.24700000000003 + 10 +-60.75999999999976 + 20 +89.24700000000003 + 10 +-60.90142135623708 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +2AB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +97.66926122952533 + 10 +-69.03299022663154 + 20 +97.52783987328804 + 10 +-74.93299022663143 + 20 +97.52783987328804 + 10 +-75.07441158286875 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2AC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +97.09442135623733 + 10 +-58.15999999999994 + 20 +96.95300000000005 + 10 +-60.75999999999976 + 20 +96.95300000000005 + 10 +-60.90142135623708 + 20 +97.09442135623736 + 0 +LWPOLYLINE + 5 +2AD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +88.53073877047474 + 10 +-88.85299022663153 + 20 +88.67216012671203 + 10 +-94.75299022663143 + 20 +88.67216012671203 + 10 +-94.89441158286874 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2AE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +89.10557864376274 + 10 +-77.97999999999993 + 20 +89.24700000000003 + 10 +-80.57999999999976 + 20 +89.24700000000003 + 10 +-80.72142135623707 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +97.66926122952533 + 10 +-88.85299022663153 + 20 +97.52783987328804 + 10 +-94.75299022663143 + 20 +97.52783987328804 + 10 +-94.89441158286874 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +97.09442135623733 + 10 +-77.97999999999993 + 20 +96.95300000000005 + 10 +-80.57999999999976 + 20 +96.95300000000005 + 10 +-80.72142135623707 + 20 +97.09442135623736 + 0 +LWPOLYLINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +88.53073877047474 + 10 +-108.6729902266315 + 20 +88.67216012671203 + 10 +-114.5729902266314 + 20 +88.67216012671203 + 10 +-114.7144115828687 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +89.10557864376274 + 10 +-97.79999999999993 + 20 +89.24700000000003 + 10 +-100.3999999999997 + 20 +89.24700000000003 + 10 +-100.5414213562371 + 20 +89.10557864376268 + 0 +LWPOLYLINE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +97.66926122952533 + 10 +-108.6729902266315 + 20 +97.52783987328804 + 10 +-114.5729902266314 + 20 +97.52783987328804 + 10 +-114.7144115828687 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +97.09442135623733 + 10 +-97.79999999999993 + 20 +96.95300000000005 + 10 +-100.3999999999997 + 20 +96.95300000000005 + 10 +-100.5414213562371 + 20 +97.09442135623736 + 0 +LWPOLYLINE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +88.53073877047474 + 10 +-128.4929902266315 + 20 +88.67216012671203 + 10 +-134.3929902266314 + 20 +88.67216012671203 + 10 +-134.5344115828687 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +89.10557864376274 + 10 +-117.6199999999999 + 20 +89.24700000000003 + 10 +-120.2199999999997 + 20 +89.24700000000003 + 10 +-120.3614213562371 + 20 +89.10557864376271 + 0 +LWPOLYLINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +97.66926122952536 + 10 +-128.4929902266315 + 20 +97.52783987328804 + 10 +-134.3929902266314 + 20 +97.52783987328804 + 10 +-134.5344115828687 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +97.09442135623733 + 10 +-117.6199999999999 + 20 +96.95300000000005 + 10 +-120.2199999999997 + 20 +96.95300000000005 + 10 +-120.3614213562371 + 20 +97.09442135623739 + 0 +LWPOLYLINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +88.53073877047474 + 10 +-148.3129902266315 + 20 +88.67216012671203 + 10 +-154.2129902266314 + 20 +88.67216012671203 + 10 +-154.3544115828687 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +89.10557864376274 + 10 +-137.4399999999999 + 20 +89.24700000000003 + 10 +-140.0399999999997 + 20 +89.24700000000003 + 10 +-140.1814213562371 + 20 +89.10557864376271 + 0 +LWPOLYLINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +97.66926122952536 + 10 +-148.3129902266315 + 20 +97.52783987328804 + 10 +-154.2129902266314 + 20 +97.52783987328804 + 10 +-154.3544115828687 + 20 +97.66926122952533 + 0 +LWPOLYLINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +97.09442135623733 + 10 +-137.4399999999999 + 20 +96.95300000000005 + 10 +-140.0399999999997 + 20 +96.95300000000005 + 10 +-140.1814213562371 + 20 +97.09442135623739 + 0 +LWPOLYLINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +88.53073877047474 + 10 +-168.1329902266315 + 20 +88.67216012671203 + 10 +-174.0329902266314 + 20 +88.67216012671203 + 10 +-174.1744115828687 + 20 +88.53073877047474 + 0 +LWPOLYLINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +89.10557864376274 + 10 +-157.2599999999999 + 20 +89.24700000000003 + 10 +-159.8599999999997 + 20 +89.24700000000003 + 10 +-160.001421356237 + 20 +89.10557864376271 + 0 +LWPOLYLINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +97.66926122952536 + 10 +-168.1329902266315 + 20 +97.52783987328804 + 10 +-174.0329902266314 + 20 +97.52783987328804 + 10 +-174.1744115828687 + 20 +97.66926122952536 + 0 +LWPOLYLINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +97.09442135623733 + 10 +-157.2599999999999 + 20 +96.95300000000005 + 10 +-159.8599999999997 + 20 +96.95300000000005 + 10 +-160.001421356237 + 20 +97.09442135623739 + 0 +LWPOLYLINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +78.73073877047473 + 10 +-9.57299022663156 + 20 +78.87216012671202 + 10 +-15.47299022663145 + 20 +78.87216012671202 + 10 +-15.61441158286877 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +79.30557864376273 + 10 +1.30000000000004 + 20 +79.44700000000002 + 10 +-1.299999999999784 + 20 +79.44700000000002 + 10 +-1.4414213562371 + 20 +79.3055786437627 + 0 +LWPOLYLINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +87.86926122952535 + 10 +-9.57299022663156 + 20 +87.72783987328803 + 10 +-15.47299022663145 + 20 +87.72783987328803 + 10 +-15.61441158286877 + 20 +87.86926122952532 + 0 +LWPOLYLINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +87.29442135623732 + 10 +1.30000000000004 + 20 +87.15300000000003 + 10 +-1.299999999999784 + 20 +87.15300000000003 + 10 +-1.4414213562371 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +78.73073877047473 + 10 +-29.39299022663155 + 20 +78.87216012671202 + 10 +-35.29299022663145 + 20 +78.87216012671202 + 10 +-35.43441158286876 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +79.30557864376273 + 10 +-18.51999999999995 + 20 +79.44700000000002 + 10 +-21.11999999999978 + 20 +79.44700000000002 + 10 +-21.26142135623709 + 20 +79.3055786437627 + 0 +LWPOLYLINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +87.86926122952535 + 10 +-29.39299022663155 + 20 +87.72783987328803 + 10 +-35.29299022663145 + 20 +87.72783987328803 + 10 +-35.43441158286876 + 20 +87.86926122952532 + 0 +LWPOLYLINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +87.29442135623732 + 10 +-18.51999999999995 + 20 +87.15300000000003 + 10 +-21.11999999999978 + 20 +87.15300000000003 + 10 +-21.26142135623709 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +78.73073877047473 + 10 +-49.21299022663155 + 20 +78.87216012671202 + 10 +-55.11299022663144 + 20 +78.87216012671202 + 10 +-55.25441158286876 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +79.30557864376273 + 10 +-38.33999999999995 + 20 +79.44700000000002 + 10 +-40.93999999999977 + 20 +79.44700000000002 + 10 +-41.08142135623709 + 20 +79.3055786437627 + 0 +LWPOLYLINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +87.86926122952535 + 10 +-49.21299022663155 + 20 +87.72783987328803 + 10 +-55.11299022663144 + 20 +87.72783987328803 + 10 +-55.25441158286876 + 20 +87.86926122952532 + 0 +LWPOLYLINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +87.29442135623732 + 10 +-38.33999999999995 + 20 +87.15300000000003 + 10 +-40.93999999999977 + 20 +87.15300000000003 + 10 +-41.08142135623709 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +78.73073877047473 + 10 +-69.03299022663154 + 20 +78.87216012671202 + 10 +-74.93299022663143 + 20 +78.87216012671202 + 10 +-75.07441158286875 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +79.30557864376273 + 10 +-58.15999999999994 + 20 +79.44700000000005 + 10 +-60.75999999999976 + 20 +79.44700000000002 + 10 +-60.90142135623708 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +87.86926122952538 + 10 +-69.03299022663154 + 20 +87.72783987328803 + 10 +-74.93299022663143 + 20 +87.72783987328803 + 10 +-75.07441158286875 + 20 +87.86926122952535 + 0 +LWPOLYLINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +87.29442135623732 + 10 +-58.15999999999994 + 20 +87.15300000000003 + 10 +-60.75999999999976 + 20 +87.15300000000003 + 10 +-60.90142135623708 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +78.73073877047473 + 10 +-88.85299022663153 + 20 +78.87216012671202 + 10 +-94.75299022663143 + 20 +78.87216012671202 + 10 +-94.89441158286874 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +79.30557864376273 + 10 +-77.97999999999993 + 20 +79.44700000000005 + 10 +-80.57999999999976 + 20 +79.44700000000002 + 10 +-80.72142135623707 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +87.86926122952538 + 10 +-88.85299022663153 + 20 +87.72783987328803 + 10 +-94.75299022663143 + 20 +87.72783987328803 + 10 +-94.89441158286874 + 20 +87.86926122952535 + 0 +LWPOLYLINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +87.29442135623732 + 10 +-77.97999999999993 + 20 +87.15300000000003 + 10 +-80.57999999999976 + 20 +87.15300000000003 + 10 +-80.72142135623707 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +78.73073877047473 + 10 +-108.6729902266315 + 20 +78.87216012671202 + 10 +-114.5729902266314 + 20 +78.87216012671202 + 10 +-114.7144115828687 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +79.30557864376273 + 10 +-97.79999999999993 + 20 +79.44700000000005 + 10 +-100.3999999999997 + 20 +79.44700000000002 + 10 +-100.5414213562371 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +87.86926122952538 + 10 +-108.6729902266315 + 20 +87.72783987328803 + 10 +-114.5729902266314 + 20 +87.72783987328803 + 10 +-114.7144115828687 + 20 +87.86926122952535 + 0 +LWPOLYLINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +87.29442135623732 + 10 +-97.79999999999993 + 20 +87.15300000000003 + 10 +-100.3999999999997 + 20 +87.15300000000003 + 10 +-100.5414213562371 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +78.73073877047473 + 10 +-128.4929902266315 + 20 +78.87216012671202 + 10 +-134.3929902266314 + 20 +78.87216012671202 + 10 +-134.5344115828687 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +79.30557864376273 + 10 +-117.6199999999999 + 20 +79.44700000000007 + 10 +-120.2199999999997 + 20 +79.44700000000002 + 10 +-120.3614213562371 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +87.86926122952538 + 10 +-128.4929902266315 + 20 +87.72783987328803 + 10 +-134.3929902266314 + 20 +87.72783987328803 + 10 +-134.5344115828687 + 20 +87.86926122952538 + 0 +LWPOLYLINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +87.29442135623732 + 10 +-117.6199999999999 + 20 +87.15300000000003 + 10 +-120.2199999999997 + 20 +87.15300000000003 + 10 +-120.3614213562371 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +78.73073877047473 + 10 +-148.3129902266315 + 20 +78.87216012671202 + 10 +-154.2129902266314 + 20 +78.87216012671202 + 10 +-154.3544115828687 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +79.30557864376273 + 10 +-137.4399999999999 + 20 +79.44700000000007 + 10 +-140.0399999999997 + 20 +79.44700000000002 + 10 +-140.1814213562371 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +87.86926122952538 + 10 +-148.3129902266315 + 20 +87.72783987328803 + 10 +-154.2129902266314 + 20 +87.72783987328803 + 10 +-154.3544115828687 + 20 +87.86926122952538 + 0 +LWPOLYLINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +87.29442135623732 + 10 +-137.4399999999999 + 20 +87.15300000000003 + 10 +-140.0399999999997 + 20 +87.15300000000003 + 10 +-140.1814213562371 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +78.73073877047473 + 10 +-168.1329902266315 + 20 +78.87216012671202 + 10 +-174.0329902266314 + 20 +78.87216012671205 + 10 +-174.1744115828687 + 20 +78.73073877047473 + 0 +LWPOLYLINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +79.30557864376273 + 10 +-157.2599999999999 + 20 +79.44700000000007 + 10 +-159.8599999999997 + 20 +79.44700000000002 + 10 +-160.001421356237 + 20 +79.30557864376273 + 0 +LWPOLYLINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +87.86926122952538 + 10 +-168.1329902266315 + 20 +87.72783987328803 + 10 +-174.0329902266314 + 20 +87.72783987328806 + 10 +-174.1744115828687 + 20 +87.86926122952538 + 0 +LWPOLYLINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +87.29442135623732 + 10 +-157.2599999999999 + 20 +87.15300000000003 + 10 +-159.8599999999997 + 20 +87.15300000000003 + 10 +-160.001421356237 + 20 +87.29442135623738 + 0 +LWPOLYLINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +68.93073877047472 + 10 +-9.57299022663156 + 20 +69.072160126712 + 10 +-15.47299022663145 + 20 +69.072160126712 + 10 +-15.61441158286877 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +69.50557864376272 + 10 +1.30000000000004 + 20 +69.64700000000003 + 10 +-1.299999999999784 + 20 +69.647 + 10 +-1.4414213562371 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +78.06926122952537 + 10 +-9.57299022663156 + 20 +77.92783987328802 + 10 +-15.47299022663145 + 20 +77.92783987328802 + 10 +-15.61441158286877 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +77.49442135623731 + 10 +1.30000000000004 + 20 +77.35300000000002 + 10 +-1.299999999999784 + 20 +77.35300000000002 + 10 +-1.4414213562371 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +68.93073877047472 + 10 +-29.39299022663155 + 20 +69.072160126712 + 10 +-35.29299022663145 + 20 +69.072160126712 + 10 +-35.43441158286876 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +69.50557864376272 + 10 +-18.51999999999995 + 20 +69.64700000000006 + 10 +-21.11999999999978 + 20 +69.647 + 10 +-21.26142135623709 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +78.06926122952537 + 10 +-29.39299022663155 + 20 +77.92783987328802 + 10 +-35.29299022663145 + 20 +77.92783987328802 + 10 +-35.43441158286876 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +77.49442135623731 + 10 +-18.51999999999995 + 20 +77.35300000000002 + 10 +-21.11999999999978 + 20 +77.35300000000002 + 10 +-21.26142135623709 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +68.93073877047472 + 10 +-49.21299022663155 + 20 +69.07216012671203 + 10 +-55.11299022663144 + 20 +69.07216012671203 + 10 +-55.25441158286876 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +69.50557864376272 + 10 +-38.33999999999995 + 20 +69.64700000000006 + 10 +-40.93999999999977 + 20 +69.647 + 10 +-41.08142135623709 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +78.06926122952537 + 10 +-49.21299022663155 + 20 +77.92783987328802 + 10 +-55.11299022663144 + 20 +77.92783987328802 + 10 +-55.25441158286876 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +77.49442135623731 + 10 +-38.33999999999995 + 20 +77.35300000000002 + 10 +-40.93999999999977 + 20 +77.35300000000002 + 10 +-41.08142135623709 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +68.93073877047472 + 10 +-69.03299022663154 + 20 +69.07216012671203 + 10 +-74.93299022663143 + 20 +69.07216012671203 + 10 +-75.07441158286875 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +69.50557864376272 + 10 +-58.15999999999994 + 20 +69.64700000000006 + 10 +-60.75999999999976 + 20 +69.647 + 10 +-60.90142135623708 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +78.06926122952537 + 10 +-69.03299022663154 + 20 +77.92783987328805 + 10 +-74.93299022663143 + 20 +77.92783987328805 + 10 +-75.07441158286875 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +77.49442135623734 + 10 +-58.15999999999994 + 20 +77.35300000000002 + 10 +-60.75999999999976 + 20 +77.35300000000005 + 10 +-60.90142135623708 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +68.93073877047472 + 10 +-88.85299022663153 + 20 +69.07216012671203 + 10 +-94.75299022663143 + 20 +69.07216012671203 + 10 +-94.89441158286874 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +69.50557864376272 + 10 +-77.97999999999993 + 20 +69.64700000000006 + 10 +-80.57999999999976 + 20 +69.647 + 10 +-80.72142135623707 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +78.06926122952537 + 10 +-88.85299022663153 + 20 +77.92783987328805 + 10 +-94.75299022663143 + 20 +77.92783987328805 + 10 +-94.89441158286874 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +77.49442135623734 + 10 +-77.97999999999993 + 20 +77.35300000000002 + 10 +-80.57999999999976 + 20 +77.35300000000005 + 10 +-80.72142135623707 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +68.93073877047472 + 10 +-108.6729902266315 + 20 +69.07216012671203 + 10 +-114.5729902266314 + 20 +69.07216012671203 + 10 +-114.7144115828687 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +69.50557864376272 + 10 +-97.79999999999993 + 20 +69.64700000000006 + 10 +-100.3999999999997 + 20 +69.647 + 10 +-100.5414213562371 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +78.06926122952537 + 10 +-108.6729902266315 + 20 +77.92783987328805 + 10 +-114.5729902266314 + 20 +77.92783987328805 + 10 +-114.7144115828687 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +77.49442135623734 + 10 +-97.79999999999993 + 20 +77.35300000000002 + 10 +-100.3999999999997 + 20 +77.35300000000005 + 10 +-100.5414213562371 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +68.93073877047472 + 10 +-128.4929902266315 + 20 +69.07216012671203 + 10 +-134.3929902266314 + 20 +69.07216012671206 + 10 +-134.5344115828687 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +69.50557864376275 + 10 +-117.6199999999999 + 20 +69.64700000000006 + 10 +-120.2199999999997 + 20 +69.64700000000003 + 10 +-120.3614213562371 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +78.06926122952537 + 10 +-128.4929902266315 + 20 +77.92783987328808 + 10 +-134.3929902266314 + 20 +77.92783987328808 + 10 +-134.5344115828687 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +77.49442135623737 + 10 +-117.6199999999999 + 20 +77.35300000000002 + 10 +-120.2199999999997 + 20 +77.35300000000008 + 10 +-120.3614213562371 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +68.93073877047472 + 10 +-148.3129902266315 + 20 +69.07216012671206 + 10 +-154.2129902266314 + 20 +69.07216012671206 + 10 +-154.3544115828687 + 20 +68.93073877047472 + 0 +LWPOLYLINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +69.50557864376275 + 10 +-137.4399999999999 + 20 +69.64700000000006 + 10 +-140.0399999999997 + 20 +69.64700000000003 + 10 +-140.1814213562371 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +78.06926122952537 + 10 +-148.3129902266315 + 20 +77.92783987328808 + 10 +-154.2129902266314 + 20 +77.92783987328808 + 10 +-154.3544115828687 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +77.49442135623737 + 10 +-137.4399999999999 + 20 +77.35300000000002 + 10 +-140.0399999999997 + 20 +77.35300000000008 + 10 +-140.1814213562371 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +68.93073877047472 + 10 +-168.1329902266315 + 20 +69.07216012671206 + 10 +-174.0329902266314 + 20 +69.07216012671206 + 10 +-174.1744115828687 + 20 +68.93073877047475 + 0 +LWPOLYLINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +69.50557864376275 + 10 +-157.2599999999999 + 20 +69.64700000000006 + 10 +-159.8599999999997 + 20 +69.64700000000003 + 10 +-160.001421356237 + 20 +69.50557864376272 + 0 +LWPOLYLINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +78.06926122952537 + 10 +-168.1329902266315 + 20 +77.92783987328808 + 10 +-174.0329902266314 + 20 +77.92783987328808 + 10 +-174.1744115828687 + 20 +78.06926122952537 + 0 +LWPOLYLINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +77.49442135623737 + 10 +-157.2599999999999 + 20 +77.35300000000002 + 10 +-159.8599999999997 + 20 +77.35300000000008 + 10 +-160.001421356237 + 20 +77.49442135623737 + 0 +LWPOLYLINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +59.13073877047471 + 10 +-9.57299022663156 + 20 +59.27216012671202 + 10 +-15.47299022663145 + 20 +59.27216012671202 + 10 +-15.61441158286877 + 20 +59.13073877047471 + 0 +LWPOLYLINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +59.70557864376273 + 10 +1.30000000000004 + 20 +59.84700000000005 + 10 +-1.299999999999784 + 20 +59.84700000000002 + 10 +-1.4414213562371 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +68.26926122952536 + 10 +-9.57299022663156 + 20 +68.12783987328804 + 10 +-15.47299022663145 + 20 +68.12783987328807 + 10 +-15.61441158286877 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +67.69442135623733 + 10 +1.30000000000004 + 20 +67.55300000000001 + 10 +-1.299999999999784 + 20 +67.55300000000004 + 10 +-1.4414213562371 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +59.13073877047471 + 10 +-29.39299022663155 + 20 +59.27216012671205 + 10 +-35.29299022663145 + 20 +59.27216012671205 + 10 +-35.43441158286876 + 20 +59.13073877047471 + 0 +LWPOLYLINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +59.70557864376273 + 10 +-18.51999999999995 + 20 +59.84700000000005 + 10 +-21.11999999999978 + 20 +59.84700000000002 + 10 +-21.26142135623709 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +68.26926122952536 + 10 +-29.39299022663155 + 20 +68.12783987328807 + 10 +-35.29299022663145 + 20 +68.12783987328807 + 10 +-35.43441158286876 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +67.69442135623736 + 10 +-18.51999999999995 + 20 +67.55300000000001 + 10 +-21.11999999999978 + 20 +67.55300000000007 + 10 +-21.26142135623709 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +59.13073877047471 + 10 +-49.21299022663155 + 20 +59.27216012671205 + 10 +-55.11299022663144 + 20 +59.27216012671205 + 10 +-55.25441158286876 + 20 +59.13073877047474 + 0 +LWPOLYLINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +59.70557864376273 + 10 +-38.33999999999995 + 20 +59.84700000000005 + 10 +-40.93999999999977 + 20 +59.84700000000002 + 10 +-41.08142135623709 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +68.26926122952536 + 10 +-49.21299022663155 + 20 +68.12783987328807 + 10 +-55.11299022663144 + 20 +68.12783987328807 + 10 +-55.25441158286876 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +67.69442135623736 + 10 +-38.33999999999995 + 20 +67.55300000000001 + 10 +-40.93999999999977 + 20 +67.55300000000007 + 10 +-41.08142135623709 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +59.13073877047471 + 10 +-69.03299022663154 + 20 +59.27216012671205 + 10 +-74.93299022663143 + 20 +59.27216012671205 + 10 +-75.07441158286875 + 20 +59.13073877047474 + 0 +LWPOLYLINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +59.70557864376273 + 10 +-58.15999999999994 + 20 +59.84700000000005 + 10 +-60.75999999999976 + 20 +59.84700000000002 + 10 +-60.90142135623708 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +68.26926122952536 + 10 +-69.03299022663154 + 20 +68.12783987328807 + 10 +-74.93299022663143 + 20 +68.12783987328807 + 10 +-75.07441158286875 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +67.69442135623736 + 10 +-58.15999999999994 + 20 +67.55300000000001 + 10 +-60.75999999999976 + 20 +67.55300000000007 + 10 +-60.90142135623708 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +59.13073877047471 + 10 +-88.85299022663153 + 20 +59.27216012671205 + 10 +-94.75299022663143 + 20 +59.27216012671205 + 10 +-94.89441158286874 + 20 +59.13073877047474 + 0 +LWPOLYLINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +59.70557864376273 + 10 +-77.97999999999993 + 20 +59.84700000000005 + 10 +-80.57999999999976 + 20 +59.84700000000005 + 10 +-80.72142135623707 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +68.26926122952536 + 10 +-88.85299022663153 + 20 +68.12783987328807 + 10 +-94.75299022663143 + 20 +68.12783987328807 + 10 +-94.89441158286874 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +67.69442135623736 + 10 +-77.97999999999993 + 20 +67.55300000000001 + 10 +-80.57999999999976 + 20 +67.55300000000007 + 10 +-80.72142135623707 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +59.13073877047474 + 10 +-108.6729902266315 + 20 +59.27216012671205 + 10 +-114.5729902266314 + 20 +59.27216012671205 + 10 +-114.7144115828687 + 20 +59.13073877047474 + 0 +LWPOLYLINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +59.70557864376276 + 10 +-97.79999999999993 + 20 +59.84700000000005 + 10 +-100.3999999999997 + 20 +59.84700000000005 + 10 +-100.5414213562371 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +68.26926122952536 + 10 +-108.6729902266315 + 20 +68.12783987328807 + 10 +-114.5729902266314 + 20 +68.12783987328807 + 10 +-114.7144115828687 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +67.69442135623736 + 10 +-97.79999999999993 + 20 +67.55300000000001 + 10 +-100.3999999999997 + 20 +67.55300000000007 + 10 +-100.5414213562371 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +59.13073877047474 + 10 +-128.4929902266315 + 20 +59.27216012671205 + 10 +-134.3929902266314 + 20 +59.27216012671205 + 10 +-134.5344115828687 + 20 +59.13073877047474 + 0 +LWPOLYLINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +59.70557864376276 + 10 +-117.6199999999999 + 20 +59.84700000000005 + 10 +-120.2199999999997 + 20 +59.84700000000005 + 10 +-120.3614213562371 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +68.26926122952536 + 10 +-128.4929902266315 + 20 +68.12783987328807 + 10 +-134.3929902266314 + 20 +68.12783987328807 + 10 +-134.5344115828687 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +67.69442135623736 + 10 +-117.6199999999999 + 20 +67.55300000000004 + 10 +-120.2199999999997 + 20 +67.55300000000007 + 10 +-120.3614213562371 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +59.13073877047474 + 10 +-148.3129902266315 + 20 +59.27216012671205 + 10 +-154.2129902266314 + 20 +59.27216012671205 + 10 +-154.3544115828687 + 20 +59.13073877047476 + 0 +LWPOLYLINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +59.70557864376276 + 10 +-137.4399999999999 + 20 +59.84700000000005 + 10 +-140.0399999999997 + 20 +59.84700000000005 + 10 +-140.1814213562371 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +68.26926122952536 + 10 +-148.3129902266315 + 20 +68.12783987328807 + 10 +-154.2129902266314 + 20 +68.12783987328807 + 10 +-154.3544115828687 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +67.69442135623736 + 10 +-137.4399999999999 + 20 +67.55300000000004 + 10 +-140.0399999999997 + 20 +67.55300000000007 + 10 +-140.1814213562371 + 20 +67.69442135623736 + 0 +LWPOLYLINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +59.13073877047474 + 10 +-168.1329902266315 + 20 +59.27216012671205 + 10 +-174.0329902266314 + 20 +59.27216012671205 + 10 +-174.1744115828687 + 20 +59.13073877047476 + 0 +LWPOLYLINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +59.70557864376276 + 10 +-157.2599999999999 + 20 +59.84700000000005 + 10 +-159.8599999999997 + 20 +59.84700000000005 + 10 +-160.001421356237 + 20 +59.70557864376271 + 0 +LWPOLYLINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +68.26926122952536 + 10 +-168.1329902266315 + 20 +68.12783987328807 + 10 +-174.0329902266314 + 20 +68.12783987328807 + 10 +-174.1744115828687 + 20 +68.26926122952536 + 0 +LWPOLYLINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +67.69442135623736 + 10 +-157.2599999999999 + 20 +67.55300000000004 + 10 +-159.8599999999997 + 20 +67.55300000000007 + 10 +-160.001421356237 + 20 +67.69442135623738 + 0 +LWPOLYLINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +49.33073877047472 + 10 +-9.57299022663156 + 20 +49.47216012671204 + 10 +-15.47299022663145 + 20 +49.47216012671204 + 10 +-15.61441158286877 + 20 +49.33073877047472 + 0 +LWPOLYLINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +49.90557864376275 + 10 +1.30000000000004 + 20 +50.04700000000004 + 10 +-1.299999999999784 + 20 +50.04700000000004 + 10 +-1.4414213562371 + 20 +49.90557864376269 + 0 +LWPOLYLINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +58.46926122952534 + 10 +-9.57299022663156 + 20 +58.32783987328806 + 10 +-15.47299022663145 + 20 +58.32783987328806 + 10 +-15.61441158286877 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +57.89442135623734 + 10 +1.30000000000004 + 20 +57.75300000000003 + 10 +-1.299999999999784 + 20 +57.75300000000006 + 10 +-1.4414213562371 + 20 +57.89442135623734 + 0 +LWPOLYLINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +49.33073877047472 + 10 +-29.39299022663155 + 20 +49.47216012671204 + 10 +-35.29299022663145 + 20 +49.47216012671204 + 10 +-35.43441158286876 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +49.90557864376275 + 10 +-18.51999999999995 + 20 +50.04700000000004 + 10 +-21.11999999999978 + 20 +50.04700000000004 + 10 +-21.26142135623709 + 20 +49.90557864376269 + 0 +LWPOLYLINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +58.46926122952534 + 10 +-29.39299022663155 + 20 +58.32783987328806 + 10 +-35.29299022663145 + 20 +58.32783987328806 + 10 +-35.43441158286876 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +57.89442135623734 + 10 +-18.51999999999995 + 20 +57.75300000000003 + 10 +-21.11999999999978 + 20 +57.75300000000006 + 10 +-21.26142135623709 + 20 +57.89442135623734 + 0 +LWPOLYLINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +49.33073877047472 + 10 +-49.21299022663155 + 20 +49.47216012671204 + 10 +-55.11299022663144 + 20 +49.47216012671204 + 10 +-55.25441158286876 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +49.90557864376275 + 10 +-38.33999999999995 + 20 +50.04700000000004 + 10 +-40.93999999999977 + 20 +50.04700000000004 + 10 +-41.08142135623709 + 20 +49.90557864376269 + 0 +LWPOLYLINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +58.46926122952534 + 10 +-49.21299022663155 + 20 +58.32783987328806 + 10 +-55.11299022663144 + 20 +58.32783987328806 + 10 +-55.25441158286876 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +57.89442135623734 + 10 +-38.33999999999995 + 20 +57.75300000000003 + 10 +-40.93999999999977 + 20 +57.75300000000006 + 10 +-41.08142135623709 + 20 +57.89442135623737 + 0 +LWPOLYLINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +49.33073877047472 + 10 +-69.03299022663154 + 20 +49.47216012671204 + 10 +-74.93299022663143 + 20 +49.47216012671204 + 10 +-75.07441158286875 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +49.90557864376275 + 10 +-58.15999999999994 + 20 +50.04700000000004 + 10 +-60.75999999999976 + 20 +50.04700000000004 + 10 +-60.90142135623708 + 20 +49.90557864376269 + 0 +LWPOLYLINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +58.46926122952534 + 10 +-69.03299022663154 + 20 +58.32783987328806 + 10 +-74.93299022663143 + 20 +58.32783987328806 + 10 +-75.07441158286875 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +57.89442135623734 + 10 +-58.15999999999994 + 20 +57.75300000000003 + 10 +-60.75999999999976 + 20 +57.75300000000006 + 10 +-60.90142135623708 + 20 +57.89442135623737 + 0 +LWPOLYLINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +49.33073877047475 + 10 +-88.85299022663153 + 20 +49.47216012671204 + 10 +-94.75299022663143 + 20 +49.47216012671204 + 10 +-94.89441158286874 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +49.90557864376275 + 10 +-77.97999999999993 + 20 +50.04700000000004 + 10 +-80.57999999999976 + 20 +50.04700000000004 + 10 +-80.72142135623707 + 20 +49.90557864376269 + 0 +LWPOLYLINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +58.46926122952534 + 10 +-88.85299022663153 + 20 +58.32783987328806 + 10 +-94.75299022663143 + 20 +58.32783987328806 + 10 +-94.89441158286874 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +57.89442135623734 + 10 +-77.97999999999993 + 20 +57.75300000000003 + 10 +-80.57999999999976 + 20 +57.75300000000006 + 10 +-80.72142135623707 + 20 +57.89442135623737 + 0 +LWPOLYLINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +49.33073877047475 + 10 +-108.6729902266315 + 20 +49.47216012671204 + 10 +-114.5729902266314 + 20 +49.47216012671204 + 10 +-114.7144115828687 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +49.90557864376275 + 10 +-97.79999999999993 + 20 +50.04700000000004 + 10 +-100.3999999999997 + 20 +50.04700000000004 + 10 +-100.5414213562371 + 20 +49.90557864376272 + 0 +LWPOLYLINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +58.46926122952537 + 10 +-108.6729902266315 + 20 +58.32783987328806 + 10 +-114.5729902266314 + 20 +58.32783987328806 + 10 +-114.7144115828687 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +57.89442135623734 + 10 +-97.79999999999993 + 20 +57.75300000000006 + 10 +-100.3999999999997 + 20 +57.75300000000006 + 10 +-100.5414213562371 + 20 +57.89442135623737 + 0 +LWPOLYLINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +49.33073877047475 + 10 +-128.4929902266315 + 20 +49.47216012671204 + 10 +-134.3929902266314 + 20 +49.47216012671204 + 10 +-134.5344115828687 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +49.90557864376275 + 10 +-117.6199999999999 + 20 +50.04700000000004 + 10 +-120.2199999999997 + 20 +50.04700000000004 + 10 +-120.3614213562371 + 20 +49.90557864376272 + 0 +LWPOLYLINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +58.46926122952537 + 10 +-128.4929902266315 + 20 +58.32783987328806 + 10 +-134.3929902266314 + 20 +58.32783987328806 + 10 +-134.5344115828687 + 20 +58.46926122952534 + 0 +LWPOLYLINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +57.89442135623734 + 10 +-117.6199999999999 + 20 +57.75300000000006 + 10 +-120.2199999999997 + 20 +57.75300000000006 + 10 +-120.3614213562371 + 20 +57.89442135623737 + 0 +LWPOLYLINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +49.33073877047475 + 10 +-148.3129902266315 + 20 +49.47216012671204 + 10 +-154.2129902266314 + 20 +49.47216012671204 + 10 +-154.3544115828687 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +49.90557864376275 + 10 +-137.4399999999999 + 20 +50.04700000000004 + 10 +-140.0399999999997 + 20 +50.04700000000004 + 10 +-140.1814213562371 + 20 +49.90557864376272 + 0 +LWPOLYLINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +58.46926122952537 + 10 +-148.3129902266315 + 20 +58.32783987328806 + 10 +-154.2129902266314 + 20 +58.32783987328806 + 10 +-154.3544115828687 + 20 +58.46926122952537 + 0 +LWPOLYLINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +57.89442135623734 + 10 +-137.4399999999999 + 20 +57.75300000000006 + 10 +-140.0399999999997 + 20 +57.75300000000006 + 10 +-140.1814213562371 + 20 +57.8944213562374 + 0 +LWPOLYLINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +49.33073877047475 + 10 +-168.1329902266315 + 20 +49.47216012671204 + 10 +-174.0329902266314 + 20 +49.47216012671204 + 10 +-174.1744115828687 + 20 +49.33073877047475 + 0 +LWPOLYLINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +49.90557864376275 + 10 +-157.2599999999999 + 20 +50.04700000000007 + 10 +-159.8599999999997 + 20 +50.04700000000004 + 10 +-160.001421356237 + 20 +49.90557864376272 + 0 +LWPOLYLINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +58.46926122952537 + 10 +-168.1329902266315 + 20 +58.32783987328806 + 10 +-174.0329902266314 + 20 +58.32783987328806 + 10 +-174.1744115828687 + 20 +58.46926122952537 + 0 +LWPOLYLINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +57.89442135623734 + 10 +-157.2599999999999 + 20 +57.75300000000006 + 10 +-159.8599999999997 + 20 +57.75300000000006 + 10 +-160.001421356237 + 20 +57.8944213562374 + 0 +LWPOLYLINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +39.53073877047474 + 10 +-9.57299022663156 + 20 +39.67216012671203 + 10 +-15.47299022663145 + 20 +39.67216012671203 + 10 +-15.61441158286877 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +40.10557864376274 + 10 +1.30000000000004 + 20 +40.24700000000003 + 10 +-1.299999999999784 + 20 +40.24700000000003 + 10 +-1.4414213562371 + 20 +40.10557864376271 + 0 +LWPOLYLINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +48.66926122952536 + 10 +-9.57299022663156 + 20 +48.52783987328804 + 10 +-15.47299022663145 + 20 +48.52783987328804 + 10 +-15.61441158286877 + 20 +48.66926122952533 + 0 +LWPOLYLINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +48.09442135623733 + 10 +1.30000000000004 + 20 +47.95300000000005 + 10 +-1.299999999999784 + 20 +47.95300000000005 + 10 +-1.4414213562371 + 20 +48.09442135623736 + 0 +LWPOLYLINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +39.53073877047474 + 10 +-29.39299022663155 + 20 +39.67216012671203 + 10 +-35.29299022663145 + 20 +39.67216012671203 + 10 +-35.43441158286876 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +40.10557864376274 + 10 +-18.51999999999995 + 20 +40.24700000000003 + 10 +-21.11999999999978 + 20 +40.24700000000003 + 10 +-21.26142135623709 + 20 +40.10557864376271 + 0 +LWPOLYLINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +48.66926122952536 + 10 +-29.39299022663155 + 20 +48.52783987328804 + 10 +-35.29299022663145 + 20 +48.52783987328804 + 10 +-35.43441158286876 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +48.09442135623733 + 10 +-18.51999999999995 + 20 +47.95300000000005 + 10 +-21.11999999999978 + 20 +47.95300000000005 + 10 +-21.26142135623709 + 20 +48.09442135623736 + 0 +LWPOLYLINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +39.53073877047474 + 10 +-49.21299022663155 + 20 +39.67216012671203 + 10 +-55.11299022663144 + 20 +39.67216012671203 + 10 +-55.25441158286876 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +40.10557864376274 + 10 +-38.33999999999995 + 20 +40.24700000000006 + 10 +-40.93999999999977 + 20 +40.24700000000003 + 10 +-41.08142135623709 + 20 +40.10557864376271 + 0 +LWPOLYLINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +48.66926122952536 + 10 +-49.21299022663155 + 20 +48.52783987328804 + 10 +-55.11299022663144 + 20 +48.52783987328804 + 10 +-55.25441158286876 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +48.09442135623733 + 10 +-38.33999999999995 + 20 +47.95300000000005 + 10 +-40.93999999999977 + 20 +47.95300000000005 + 10 +-41.08142135623709 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +39.53073877047474 + 10 +-69.03299022663154 + 20 +39.67216012671203 + 10 +-74.93299022663143 + 20 +39.67216012671203 + 10 +-75.07441158286875 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +40.10557864376274 + 10 +-58.15999999999994 + 20 +40.24700000000006 + 10 +-60.75999999999976 + 20 +40.24700000000003 + 10 +-60.90142135623708 + 20 +40.10557864376271 + 0 +LWPOLYLINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +48.66926122952536 + 10 +-69.03299022663154 + 20 +48.52783987328804 + 10 +-74.93299022663143 + 20 +48.52783987328804 + 10 +-75.07441158286875 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +48.09442135623733 + 10 +-58.15999999999994 + 20 +47.95300000000005 + 10 +-60.75999999999976 + 20 +47.95300000000005 + 10 +-60.90142135623708 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +39.53073877047474 + 10 +-88.85299022663153 + 20 +39.67216012671203 + 10 +-94.75299022663143 + 20 +39.67216012671203 + 10 +-94.89441158286874 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +40.10557864376274 + 10 +-77.97999999999993 + 20 +40.24700000000006 + 10 +-80.57999999999976 + 20 +40.24700000000003 + 10 +-80.72142135623707 + 20 +40.10557864376271 + 0 +LWPOLYLINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +48.66926122952539 + 10 +-88.85299022663153 + 20 +48.52783987328804 + 10 +-94.75299022663143 + 20 +48.52783987328804 + 10 +-94.89441158286874 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +48.09442135623733 + 10 +-77.97999999999993 + 20 +47.95300000000005 + 10 +-80.57999999999976 + 20 +47.95300000000005 + 10 +-80.72142135623707 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +39.53073877047474 + 10 +-108.6729902266315 + 20 +39.67216012671203 + 10 +-114.5729902266314 + 20 +39.67216012671203 + 10 +-114.7144115828687 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +40.10557864376274 + 10 +-97.79999999999993 + 20 +40.24700000000006 + 10 +-100.3999999999997 + 20 +40.24700000000003 + 10 +-100.5414213562371 + 20 +40.10557864376274 + 0 +LWPOLYLINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +48.66926122952539 + 10 +-108.6729902266315 + 20 +48.52783987328804 + 10 +-114.5729902266314 + 20 +48.52783987328804 + 10 +-114.7144115828687 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +48.09442135623733 + 10 +-97.79999999999993 + 20 +47.95300000000005 + 10 +-100.3999999999997 + 20 +47.95300000000005 + 10 +-100.5414213562371 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +39.53073877047474 + 10 +-128.4929902266315 + 20 +39.67216012671203 + 10 +-134.3929902266314 + 20 +39.67216012671203 + 10 +-134.5344115828687 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +40.10557864376274 + 10 +-117.6199999999999 + 20 +40.24700000000006 + 10 +-120.2199999999997 + 20 +40.24700000000003 + 10 +-120.3614213562371 + 20 +40.10557864376274 + 0 +LWPOLYLINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +48.66926122952539 + 10 +-128.4929902266315 + 20 +48.52783987328804 + 10 +-134.3929902266314 + 20 +48.52783987328804 + 10 +-134.5344115828687 + 20 +48.66926122952536 + 0 +LWPOLYLINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +48.09442135623733 + 10 +-117.6199999999999 + 20 +47.95300000000005 + 10 +-120.2199999999997 + 20 +47.95300000000005 + 10 +-120.3614213562371 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +39.53073877047474 + 10 +-148.3129902266315 + 20 +39.67216012671203 + 10 +-154.2129902266314 + 20 +39.67216012671206 + 10 +-154.3544115828687 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +40.10557864376274 + 10 +-137.4399999999999 + 20 +40.24700000000006 + 10 +-140.0399999999997 + 20 +40.24700000000003 + 10 +-140.1814213562371 + 20 +40.10557864376274 + 0 +LWPOLYLINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +48.66926122952539 + 10 +-148.3129902266315 + 20 +48.52783987328804 + 10 +-154.2129902266314 + 20 +48.52783987328807 + 10 +-154.3544115828687 + 20 +48.66926122952539 + 0 +LWPOLYLINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +48.09442135623733 + 10 +-137.4399999999999 + 20 +47.95300000000005 + 10 +-140.0399999999997 + 20 +47.95300000000005 + 10 +-140.1814213562371 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +39.53073877047474 + 10 +-168.1329902266315 + 20 +39.67216012671206 + 10 +-174.0329902266314 + 20 +39.67216012671206 + 10 +-174.1744115828687 + 20 +39.53073877047474 + 0 +LWPOLYLINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +40.10557864376274 + 10 +-157.2599999999999 + 20 +40.24700000000009 + 10 +-159.8599999999997 + 20 +40.24700000000003 + 10 +-160.001421356237 + 20 +40.10557864376274 + 0 +LWPOLYLINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +48.66926122952539 + 10 +-168.1329902266315 + 20 +48.52783987328807 + 10 +-174.0329902266314 + 20 +48.52783987328807 + 10 +-174.1744115828687 + 20 +48.66926122952539 + 0 +LWPOLYLINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +48.09442135623736 + 10 +-157.2599999999999 + 20 +47.95300000000005 + 10 +-159.8599999999997 + 20 +47.95300000000007 + 10 +-160.001421356237 + 20 +48.09442135623739 + 0 +LWPOLYLINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +29.73073877047473 + 10 +-9.57299022663156 + 20 +29.87216012671202 + 10 +-15.47299022663145 + 20 +29.87216012671202 + 10 +-15.61441158286877 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +30.30557864376273 + 10 +1.30000000000004 + 20 +30.44700000000005 + 10 +-1.299999999999784 + 20 +30.44700000000002 + 10 +-1.4414213562371 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +38.86926122952538 + 10 +-9.57299022663156 + 20 +38.72783987328803 + 10 +-15.47299022663145 + 20 +38.72783987328803 + 10 +-15.61441158286877 + 20 +38.86926122952535 + 0 +LWPOLYLINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +38.29442135623732 + 10 +1.30000000000004 + 20 +38.15300000000003 + 10 +-1.299999999999784 + 20 +38.15300000000003 + 10 +-1.4414213562371 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +29.73073877047473 + 10 +-29.39299022663155 + 20 +29.87216012671202 + 10 +-35.29299022663145 + 20 +29.87216012671202 + 10 +-35.43441158286876 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +30.30557864376273 + 10 +-18.51999999999995 + 20 +30.44700000000005 + 10 +-21.11999999999978 + 20 +30.44700000000002 + 10 +-21.26142135623709 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +38.86926122952538 + 10 +-29.39299022663155 + 20 +38.72783987328803 + 10 +-35.29299022663145 + 20 +38.72783987328806 + 10 +-35.43441158286876 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +38.29442135623732 + 10 +-18.51999999999995 + 20 +38.15300000000003 + 10 +-21.11999999999978 + 20 +38.15300000000003 + 10 +-21.26142135623709 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +29.73073877047473 + 10 +-49.21299022663155 + 20 +29.87216012671205 + 10 +-55.11299022663144 + 20 +29.87216012671205 + 10 +-55.25441158286876 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +30.30557864376273 + 10 +-38.33999999999995 + 20 +30.44700000000007 + 10 +-40.93999999999977 + 20 +30.44700000000002 + 10 +-41.08142135623709 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +38.86926122952538 + 10 +-49.21299022663155 + 20 +38.72783987328806 + 10 +-55.11299022663144 + 20 +38.72783987328806 + 10 +-55.25441158286876 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +38.29442135623735 + 10 +-38.33999999999995 + 20 +38.15300000000003 + 10 +-40.93999999999977 + 20 +38.15300000000006 + 10 +-41.08142135623709 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +29.73073877047473 + 10 +-69.03299022663154 + 20 +29.87216012671205 + 10 +-74.93299022663143 + 20 +29.87216012671205 + 10 +-75.07441158286875 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +30.30557864376273 + 10 +-58.15999999999994 + 20 +30.44700000000007 + 10 +-60.75999999999976 + 20 +30.44700000000002 + 10 +-60.90142135623708 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +38.86926122952538 + 10 +-69.03299022663154 + 20 +38.72783987328806 + 10 +-74.93299022663143 + 20 +38.72783987328806 + 10 +-75.07441158286875 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +38.29442135623735 + 10 +-58.15999999999994 + 20 +38.15300000000003 + 10 +-60.75999999999976 + 20 +38.15300000000006 + 10 +-60.90142135623708 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +29.73073877047473 + 10 +-88.85299022663153 + 20 +29.87216012671205 + 10 +-94.75299022663143 + 20 +29.87216012671205 + 10 +-94.89441158286874 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +30.30557864376273 + 10 +-77.97999999999996 + 20 +30.44700000000007 + 10 +-80.57999999999976 + 20 +30.44700000000002 + 10 +-80.72142135623707 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +38.86926122952538 + 10 +-88.85299022663153 + 20 +38.72783987328806 + 10 +-94.75299022663143 + 20 +38.72783987328806 + 10 +-94.89441158286874 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +38.29442135623735 + 10 +-77.97999999999993 + 20 +38.15300000000003 + 10 +-80.57999999999976 + 20 +38.15300000000006 + 10 +-80.72142135623707 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +29.73073877047473 + 10 +-108.6729902266315 + 20 +29.87216012671205 + 10 +-114.5729902266314 + 20 +29.87216012671205 + 10 +-114.7144115828687 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +30.30557864376276 + 10 +-97.79999999999995 + 20 +30.44700000000007 + 10 +-100.3999999999997 + 20 +30.44700000000005 + 10 +-100.5414213562371 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +38.86926122952538 + 10 +-108.6729902266315 + 20 +38.72783987328806 + 10 +-114.5729902266314 + 20 +38.72783987328806 + 10 +-114.7144115828687 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +38.29442135623735 + 10 +-97.79999999999993 + 20 +38.15300000000003 + 10 +-100.3999999999997 + 20 +38.15300000000006 + 10 +-100.5414213562371 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +29.73073877047473 + 10 +-128.4929902266315 + 20 +29.87216012671205 + 10 +-134.3929902266314 + 20 +29.87216012671205 + 10 +-134.5344115828687 + 20 +29.73073877047473 + 0 +LWPOLYLINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +30.30557864376276 + 10 +-117.6199999999999 + 20 +30.44700000000007 + 10 +-120.2199999999997 + 20 +30.44700000000005 + 10 +-120.3614213562371 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +38.86926122952538 + 10 +-128.4929902266315 + 20 +38.72783987328806 + 10 +-134.3929902266314 + 20 +38.72783987328806 + 10 +-134.5344115828687 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +38.29442135623735 + 10 +-117.6199999999999 + 20 +38.15300000000003 + 10 +-120.2199999999997 + 20 +38.15300000000006 + 10 +-120.3614213562371 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +29.73073877047473 + 10 +-148.3129902266315 + 20 +29.87216012671207 + 10 +-154.2129902266314 + 20 +29.87216012671207 + 10 +-154.3544115828687 + 20 +29.73073877047476 + 0 +LWPOLYLINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +30.30557864376276 + 10 +-137.4399999999999 + 20 +30.44700000000007 + 10 +-140.0399999999997 + 20 +30.44700000000005 + 10 +-140.1814213562371 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +38.86926122952538 + 10 +-148.3129902266315 + 20 +38.72783987328809 + 10 +-154.2129902266314 + 20 +38.72783987328809 + 10 +-154.3544115828687 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +38.29442135623735 + 10 +-137.4399999999999 + 20 +38.15300000000003 + 10 +-140.0399999999997 + 20 +38.15300000000006 + 10 +-140.1814213562371 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +29.73073877047473 + 10 +-168.1329902266315 + 20 +29.87216012671207 + 10 +-174.0329902266314 + 20 +29.87216012671207 + 10 +-174.1744115828687 + 20 +29.73073877047476 + 0 +LWPOLYLINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +30.30557864376276 + 10 +-157.2599999999999 + 20 +30.44700000000007 + 10 +-159.8599999999997 + 20 +30.44700000000005 + 10 +-160.001421356237 + 20 +30.30557864376273 + 0 +LWPOLYLINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +38.86926122952538 + 10 +-168.1329902266315 + 20 +38.72783987328809 + 10 +-174.0329902266314 + 20 +38.72783987328809 + 10 +-174.1744115828687 + 20 +38.86926122952538 + 0 +LWPOLYLINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +38.29442135623738 + 10 +-157.2599999999999 + 20 +38.15300000000003 + 10 +-159.8599999999997 + 20 +38.15300000000009 + 10 +-160.001421356237 + 20 +38.29442135623738 + 0 +LWPOLYLINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +19.93073877047473 + 10 +-9.57299022663156 + 20 +20.07216012671203 + 10 +-15.47299022663145 + 20 +20.07216012671205 + 10 +-15.61441158286877 + 20 +19.93073877047473 + 0 +LWPOLYLINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +20.50557864376275 + 10 +1.30000000000004 + 20 +20.64700000000005 + 10 +-1.299999999999784 + 20 +20.64700000000003 + 10 +-1.4414213562371 + 20 +20.50557864376272 + 0 +LWPOLYLINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +29.06926122952537 + 10 +-9.57299022663156 + 20 +28.92783987328805 + 10 +-15.47299022663145 + 20 +28.92783987328805 + 10 +-15.61441158286877 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +28.49442135623734 + 10 +1.30000000000004 + 20 +28.35300000000002 + 10 +-1.299999999999784 + 20 +28.35300000000005 + 10 +-1.4414213562371 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +19.93073877047473 + 10 +-29.39299022663155 + 20 +20.07216012671205 + 10 +-35.29299022663145 + 20 +20.07216012671205 + 10 +-35.43441158286876 + 20 +19.93073877047473 + 0 +LWPOLYLINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +20.50557864376275 + 10 +-18.51999999999995 + 20 +20.64700000000005 + 10 +-21.11999999999978 + 20 +20.64700000000003 + 10 +-21.26142135623709 + 20 +20.50557864376272 + 0 +LWPOLYLINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +29.06926122952537 + 10 +-29.39299022663155 + 20 +28.92783987328808 + 10 +-35.29299022663145 + 20 +28.92783987328808 + 10 +-35.43441158286876 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +28.49442135623734 + 10 +-18.51999999999995 + 20 +28.35300000000002 + 10 +-21.11999999999978 + 20 +28.35300000000005 + 10 +-21.26142135623709 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +19.93073877047473 + 10 +-49.21299022663155 + 20 +20.07216012671205 + 10 +-55.11299022663144 + 20 +20.07216012671205 + 10 +-55.25441158286876 + 20 +19.93073877047475 + 0 +LWPOLYLINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +20.50557864376275 + 10 +-38.33999999999995 + 20 +20.64700000000005 + 10 +-40.93999999999977 + 20 +20.64700000000003 + 10 +-41.08142135623709 + 20 +20.50557864376272 + 0 +LWPOLYLINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +29.06926122952537 + 10 +-49.21299022663155 + 20 +28.92783987328808 + 10 +-55.11299022663144 + 20 +28.92783987328808 + 10 +-55.25441158286876 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +28.49442135623737 + 10 +-38.33999999999995 + 20 +28.35300000000002 + 10 +-40.93999999999977 + 20 +28.35300000000008 + 10 +-41.08142135623709 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +19.93073877047473 + 10 +-69.03299022663154 + 20 +20.07216012671205 + 10 +-74.93299022663143 + 20 +20.07216012671205 + 10 +-75.07441158286875 + 20 +19.93073877047475 + 0 +LWPOLYLINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +20.50557864376275 + 10 +-58.15999999999997 + 20 +20.64700000000006 + 10 +-60.75999999999976 + 20 +20.64700000000003 + 10 +-60.90142135623708 + 20 +20.50557864376272 + 0 +LWPOLYLINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +29.06926122952537 + 10 +-69.03299022663154 + 20 +28.92783987328808 + 10 +-74.93299022663143 + 20 +28.92783987328808 + 10 +-75.07441158286875 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +28.49442135623737 + 10 +-58.15999999999997 + 20 +28.35300000000002 + 10 +-60.75999999999976 + 20 +28.35300000000008 + 10 +-60.90142135623708 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +19.93073877047473 + 10 +-88.85299022663153 + 20 +20.07216012671205 + 10 +-94.75299022663143 + 20 +20.07216012671205 + 10 +-94.89441158286874 + 20 +19.93073877047475 + 0 +LWPOLYLINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +20.50557864376276 + 10 +-77.97999999999996 + 20 +20.64700000000006 + 10 +-80.57999999999976 + 20 +20.64700000000005 + 10 +-80.72142135623707 + 20 +20.50557864376273 + 0 +LWPOLYLINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +29.06926122952537 + 10 +-88.85299022663153 + 20 +28.92783987328808 + 10 +-94.75299022663143 + 20 +28.92783987328808 + 10 +-94.89441158286874 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +28.49442135623737 + 10 +-77.97999999999996 + 20 +28.35300000000002 + 10 +-80.57999999999976 + 20 +28.35300000000008 + 10 +-80.72142135623707 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +19.93073877047475 + 10 +-108.6729902266315 + 20 +20.07216012671205 + 10 +-114.5729902266314 + 20 +20.07216012671205 + 10 +-114.7144115828687 + 20 +19.93073877047475 + 0 +LWPOLYLINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +20.50557864376276 + 10 +-97.79999999999995 + 20 +20.64700000000006 + 10 +-100.3999999999997 + 20 +20.64700000000005 + 10 +-100.5414213562371 + 20 +20.50557864376273 + 0 +LWPOLYLINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +29.06926122952537 + 10 +-108.6729902266315 + 20 +28.92783987328808 + 10 +-114.5729902266314 + 20 +28.92783987328808 + 10 +-114.7144115828687 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +28.49442135623737 + 10 +-97.79999999999995 + 20 +28.35300000000005 + 10 +-100.3999999999997 + 20 +28.35300000000008 + 10 +-100.5414213562371 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +19.93073877047475 + 10 +-128.4929902266315 + 20 +20.07216012671205 + 10 +-134.3929902266314 + 20 +20.07216012671205 + 10 +-134.5344115828687 + 20 +19.93073877047476 + 0 +LWPOLYLINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +20.50557864376276 + 10 +-117.6199999999999 + 20 +20.64700000000006 + 10 +-120.2199999999997 + 20 +20.64700000000005 + 10 +-120.3614213562371 + 20 +20.50557864376273 + 0 +LWPOLYLINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +29.06926122952537 + 10 +-128.4929902266315 + 20 +28.92783987328808 + 10 +-134.3929902266314 + 20 +28.92783987328808 + 10 +-134.5344115828687 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +28.49442135623737 + 10 +-117.6199999999999 + 20 +28.35300000000005 + 10 +-120.2199999999997 + 20 +28.35300000000008 + 10 +-120.3614213562371 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +19.93073877047475 + 10 +-148.3129902266315 + 20 +20.07216012671205 + 10 +-154.2129902266314 + 20 +20.07216012671205 + 10 +-154.3544115828687 + 20 +19.93073877047476 + 0 +LWPOLYLINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +20.50557864376276 + 10 +-137.4399999999999 + 20 +20.64700000000008 + 10 +-140.0399999999997 + 20 +20.64700000000005 + 10 +-140.1814213562371 + 20 +20.50557864376273 + 0 +LWPOLYLINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +29.06926122952537 + 10 +-148.3129902266315 + 20 +28.92783987328808 + 10 +-154.2129902266314 + 20 +28.92783987328808 + 10 +-154.3544115828687 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +28.49442135623737 + 10 +-137.4399999999999 + 20 +28.35300000000005 + 10 +-140.0399999999997 + 20 +28.35300000000008 + 10 +-140.1814213562371 + 20 +28.49442135623737 + 0 +LWPOLYLINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +19.93073877047475 + 10 +-168.1329902266315 + 20 +20.07216012671206 + 10 +-174.0329902266314 + 20 +20.07216012671206 + 10 +-174.1744115828687 + 20 +19.93073877047476 + 0 +LWPOLYLINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +20.50557864376276 + 10 +-157.2599999999999 + 20 +20.64700000000008 + 10 +-159.8599999999997 + 20 +20.64700000000005 + 10 +-160.001421356237 + 20 +20.50557864376273 + 0 +LWPOLYLINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +29.06926122952537 + 10 +-168.1329902266315 + 20 +28.92783987328808 + 10 +-174.0329902266314 + 20 +28.92783987328808 + 10 +-174.1744115828687 + 20 +29.06926122952537 + 0 +LWPOLYLINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +28.49442135623737 + 10 +-157.2599999999999 + 20 +28.35300000000005 + 10 +-159.8599999999997 + 20 +28.35300000000008 + 10 +-160.001421356237 + 20 +28.4944213562374 + 0 +LWPOLYLINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +10.13073877047474 + 10 +-9.57299022663156 + 20 +10.27216012671204 + 10 +-15.47299022663145 + 20 +10.27216012671204 + 10 +-15.61441158286877 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +10.70557864376275 + 10 +1.30000000000004 + 20 +10.84700000000005 + 10 +-1.299999999999784 + 20 +10.84700000000004 + 10 +-1.4414213562371 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +19.26926122952537 + 10 +-9.57299022663156 + 20 +19.12783987328805 + 10 +-15.47299022663145 + 20 +19.12783987328805 + 10 +-15.61441158286877 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +18.69442135623734 + 10 +1.30000000000004 + 20 +18.55300000000004 + 10 +-1.299999999999784 + 20 +18.55300000000005 + 10 +-1.4414213562371 + 20 +18.69442135623737 + 0 +LWPOLYLINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +10.13073877047474 + 10 +-29.39299022663155 + 20 +10.27216012671204 + 10 +-35.29299022663145 + 20 +10.27216012671204 + 10 +-35.43441158286876 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +10.70557864376275 + 10 +-18.51999999999995 + 20 +10.84700000000007 + 10 +-21.11999999999978 + 20 +10.84700000000004 + 10 +-21.26142135623709 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +19.26926122952537 + 10 +-29.39299022663155 + 20 +19.12783987328805 + 10 +-35.29299022663145 + 20 +19.12783987328805 + 10 +-35.43441158286876 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +18.69442135623734 + 10 +-18.51999999999995 + 20 +18.55300000000004 + 10 +-21.11999999999978 + 20 +18.55300000000005 + 10 +-21.26142135623709 + 20 +18.69442135623737 + 0 +LWPOLYLINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +10.13073877047474 + 10 +-49.21299022663155 + 20 +10.27216012671204 + 10 +-55.11299022663144 + 20 +10.27216012671204 + 10 +-55.25441158286876 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +10.70557864376275 + 10 +-38.33999999999997 + 20 +10.84700000000007 + 10 +-40.93999999999977 + 20 +10.84700000000004 + 10 +-41.08142135623709 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +19.26926122952537 + 10 +-49.21299022663155 + 20 +19.12783987328807 + 10 +-55.11299022663144 + 20 +19.12783987328807 + 10 +-55.25441158286876 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +18.69442135623734 + 10 +-38.33999999999995 + 20 +18.55300000000004 + 10 +-40.93999999999977 + 20 +18.55300000000005 + 10 +-41.08142135623709 + 20 +18.69442135623737 + 0 +LWPOLYLINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +10.13073877047475 + 10 +-69.03299022663154 + 20 +10.27216012671205 + 10 +-74.93299022663143 + 20 +10.27216012671205 + 10 +-75.07441158286875 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +10.70557864376275 + 10 +-58.15999999999997 + 20 +10.84700000000007 + 10 +-60.75999999999976 + 20 +10.84700000000004 + 10 +-60.90142135623708 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +19.26926122952537 + 10 +-69.03299022663154 + 20 +19.12783987328807 + 10 +-74.93299022663143 + 20 +19.12783987328807 + 10 +-75.07441158286875 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +18.69442135623736 + 10 +-58.15999999999997 + 20 +18.55300000000004 + 10 +-60.75999999999976 + 20 +18.55300000000007 + 10 +-60.90142135623708 + 20 +18.69442135623738 + 0 +LWPOLYLINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +10.13073877047475 + 10 +-88.85299022663153 + 20 +10.27216012671205 + 10 +-94.75299022663143 + 20 +10.27216012671205 + 10 +-94.89441158286874 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +10.70557864376275 + 10 +-77.97999999999996 + 20 +10.84700000000007 + 10 +-80.57999999999976 + 20 +10.84700000000004 + 10 +-80.72142135623707 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +19.26926122952537 + 10 +-88.85299022663153 + 20 +19.12783987328807 + 10 +-94.75299022663143 + 20 +19.12783987328807 + 10 +-94.89441158286874 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +18.69442135623736 + 10 +-77.97999999999996 + 20 +18.55300000000005 + 10 +-80.57999999999976 + 20 +18.55300000000007 + 10 +-80.72142135623707 + 20 +18.69442135623738 + 0 +LWPOLYLINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +10.13073877047475 + 10 +-108.6729902266315 + 20 +10.27216012671205 + 10 +-114.5729902266314 + 20 +10.27216012671205 + 10 +-114.7144115828687 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +10.70557864376275 + 10 +-97.79999999999995 + 20 +10.84700000000007 + 10 +-100.3999999999997 + 20 +10.84700000000004 + 10 +-100.5414213562371 + 20 +10.70557864376272 + 0 +LWPOLYLINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +19.26926122952538 + 10 +-108.6729902266315 + 20 +19.12783987328807 + 10 +-114.5729902266314 + 20 +19.12783987328807 + 10 +-114.7144115828687 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +18.69442135623736 + 10 +-97.79999999999995 + 20 +18.55300000000005 + 10 +-100.3999999999997 + 20 +18.55300000000007 + 10 +-100.5414213562371 + 20 +18.69442135623738 + 0 +LWPOLYLINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +10.13073877047475 + 10 +-128.4929902266315 + 20 +10.27216012671207 + 10 +-134.3929902266314 + 20 +10.27216012671207 + 10 +-134.5344115828687 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +10.70557864376276 + 10 +-117.6199999999999 + 20 +10.84700000000007 + 10 +-120.2199999999997 + 20 +10.84700000000005 + 10 +-120.3614213562371 + 20 +10.70557864376273 + 0 +LWPOLYLINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +19.26926122952538 + 10 +-128.4929902266315 + 20 +19.12783987328807 + 10 +-134.3929902266314 + 20 +19.12783987328808 + 10 +-134.5344115828687 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +18.69442135623736 + 10 +-117.6199999999999 + 20 +18.55300000000005 + 10 +-120.2199999999997 + 20 +18.55300000000007 + 10 +-120.3614213562371 + 20 +18.69442135623738 + 0 +LWPOLYLINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +10.13073877047475 + 10 +-148.3129902266315 + 20 +10.27216012671207 + 10 +-154.2129902266314 + 20 +10.27216012671207 + 10 +-154.3544115828687 + 20 +10.13073877047475 + 0 +LWPOLYLINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +10.70557864376276 + 10 +-137.4399999999999 + 20 +10.84700000000007 + 10 +-140.0399999999997 + 20 +10.84700000000005 + 10 +-140.1814213562371 + 20 +10.70557864376273 + 0 +LWPOLYLINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +19.26926122952538 + 10 +-148.3129902266315 + 20 +19.12783987328808 + 10 +-154.2129902266314 + 20 +19.12783987328808 + 10 +-154.3544115828687 + 20 +19.26926122952537 + 0 +LWPOLYLINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +18.69442135623737 + 10 +-137.4399999999999 + 20 +18.55300000000005 + 10 +-140.0399999999997 + 20 +18.55300000000008 + 10 +-140.1814213562371 + 20 +18.6944213562374 + 0 +LWPOLYLINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +10.13073877047475 + 10 +-168.1329902266315 + 20 +10.27216012671207 + 10 +-174.0329902266314 + 20 +10.27216012671207 + 10 +-174.1744115828687 + 20 +10.13073877047476 + 0 +LWPOLYLINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +10.70557864376276 + 10 +-157.2599999999999 + 20 +10.84700000000007 + 10 +-159.8599999999997 + 20 +10.84700000000005 + 10 +-160.001421356237 + 20 +10.70557864376273 + 0 +LWPOLYLINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +19.26926122952538 + 10 +-168.1329902266315 + 20 +19.12783987328808 + 10 +-174.0329902266314 + 20 +19.12783987328808 + 10 +-174.1744115828687 + 20 +19.26926122952538 + 0 +LWPOLYLINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +18.69442135623737 + 10 +-157.2599999999999 + 20 +18.55300000000005 + 10 +-159.8599999999997 + 20 +18.55300000000008 + 10 +-160.001421356237 + 20 +18.6944213562374 + 0 +LWPOLYLINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +0.3307387704747384 + 10 +-9.57299022663156 + 20 +0.4721601267120548 + 10 +-15.47299022663145 + 20 +0.4721601267120548 + 10 +-15.61441158286877 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +0.9055786437627376 + 10 +1.30000000000004 + 20 +1.047000000000054 + 10 +-1.299999999999784 + 20 +1.047000000000025 + 10 +-1.4414213562371 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +9.469261229525372 + 10 +-9.57299022663156 + 20 +9.32783987328807 + 10 +-15.47299022663145 + 20 +9.32783987328807 + 10 +-15.61441158286877 + 20 +9.469261229525358 + 0 +LWPOLYLINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +8.894421356237345 + 10 +1.30000000000004 + 20 +8.753000000000043 + 10 +-1.299999999999784 + 20 +8.753000000000071 + 10 +-1.4414213562371 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +0.3307387704747384 + 10 +-29.39299022663155 + 20 +0.4721601267120548 + 10 +-35.29299022663145 + 20 +0.4721601267120548 + 10 +-35.43441158286876 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +0.9055786437627376 + 10 +-18.51999999999995 + 20 +1.047000000000054 + 10 +-21.11999999999978 + 20 +1.047000000000025 + 10 +-21.26142135623709 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +9.469261229525372 + 10 +-29.39299022663155 + 20 +9.32783987328807 + 10 +-35.29299022663145 + 20 +9.32783987328807 + 10 +-35.43441158286876 + 20 +9.469261229525358 + 0 +LWPOLYLINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +8.894421356237359 + 10 +-18.51999999999995 + 20 +8.753000000000043 + 10 +-21.11999999999978 + 20 +8.753000000000071 + 10 +-21.26142135623709 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +0.3307387704747384 + 10 +-49.21299022663155 + 20 +0.4721601267120548 + 10 +-55.11299022663144 + 20 +0.4721601267120548 + 10 +-55.25441158286876 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +0.9055786437627376 + 10 +-38.33999999999997 + 20 +1.047000000000054 + 10 +-40.93999999999977 + 20 +1.047000000000025 + 10 +-41.08142135623709 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +9.469261229525372 + 10 +-49.21299022663155 + 20 +9.32783987328807 + 10 +-55.11299022663144 + 20 +9.32783987328807 + 10 +-55.25441158286876 + 20 +9.469261229525358 + 0 +LWPOLYLINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +8.894421356237359 + 10 +-38.33999999999997 + 20 +8.753000000000043 + 10 +-40.93999999999977 + 20 +8.753000000000071 + 10 +-41.08142135623709 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +0.3307387704747384 + 10 +-69.03299022663154 + 20 +0.4721601267120548 + 10 +-74.93299022663143 + 20 +0.4721601267120548 + 10 +-75.07441158286875 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +0.905578643762766 + 10 +-58.15999999999997 + 20 +1.047000000000082 + 10 +-60.75999999999976 + 20 +1.047000000000054 + 10 +-60.90142135623708 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +9.469261229525387 + 10 +-69.03299022663154 + 20 +9.32783987328807 + 10 +-74.93299022663143 + 20 +9.32783987328807 + 10 +-75.07441158286875 + 20 +9.469261229525372 + 0 +LWPOLYLINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +8.894421356237359 + 10 +-58.15999999999997 + 20 +8.753000000000043 + 10 +-60.75999999999976 + 20 +8.753000000000071 + 10 +-60.90142135623708 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +0.3307387704747384 + 10 +-88.85299022663153 + 20 +0.4721601267120548 + 10 +-94.75299022663143 + 20 +0.4721601267120548 + 10 +-94.89441158286874 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +0.905578643762766 + 10 +-77.97999999999996 + 20 +1.047000000000082 + 10 +-80.57999999999976 + 20 +1.047000000000054 + 10 +-80.72142135623707 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +9.469261229525387 + 10 +-88.85299022663153 + 20 +9.32783987328807 + 10 +-94.75299022663143 + 20 +9.32783987328807 + 10 +-94.89441158286874 + 20 +9.469261229525372 + 0 +LWPOLYLINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +8.894421356237359 + 10 +-77.97999999999996 + 20 +8.753000000000043 + 10 +-80.57999999999976 + 20 +8.753000000000071 + 10 +-80.72142135623707 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +0.3307387704747384 + 10 +-108.6729902266315 + 20 +0.4721601267120548 + 10 +-114.5729902266314 + 20 +0.4721601267120548 + 10 +-114.7144115828687 + 20 +0.3307387704747384 + 0 +LWPOLYLINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +0.905578643762766 + 10 +-97.79999999999995 + 20 +1.047000000000082 + 10 +-100.3999999999997 + 20 +1.047000000000054 + 10 +-100.5414213562371 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +9.469261229525387 + 10 +-108.6729902266315 + 20 +9.32783987328807 + 10 +-114.5729902266314 + 20 +9.32783987328807 + 10 +-114.7144115828687 + 20 +9.469261229525372 + 0 +LWPOLYLINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +8.894421356237359 + 10 +-97.79999999999995 + 20 +8.753000000000043 + 10 +-100.3999999999997 + 20 +8.753000000000071 + 10 +-100.5414213562371 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +0.3307387704747384 + 10 +-128.4929902266315 + 20 +0.4721601267120548 + 10 +-134.3929902266314 + 20 +0.4721601267120548 + 10 +-134.5344115828687 + 20 +0.3307387704747669 + 0 +LWPOLYLINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +0.905578643762766 + 10 +-117.6199999999999 + 20 +1.047000000000082 + 10 +-120.2199999999997 + 20 +1.047000000000054 + 10 +-120.3614213562371 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +9.469261229525387 + 10 +-128.4929902266315 + 20 +9.32783987328807 + 10 +-134.3929902266314 + 20 +9.32783987328807 + 10 +-134.5344115828687 + 20 +9.469261229525387 + 0 +LWPOLYLINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +8.894421356237359 + 10 +-117.6199999999999 + 20 +8.753000000000057 + 10 +-120.2199999999997 + 20 +8.753000000000071 + 10 +-120.3614213562371 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +0.3307387704747384 + 10 +-148.3129902266315 + 20 +0.4721601267120548 + 10 +-154.2129902266314 + 20 +0.4721601267120548 + 10 +-154.3544115828687 + 20 +0.3307387704747669 + 0 +LWPOLYLINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +0.905578643762766 + 10 +-137.4399999999999 + 20 +1.047000000000082 + 10 +-140.0399999999997 + 20 +1.047000000000054 + 10 +-140.1814213562371 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +9.469261229525387 + 10 +-148.3129902266315 + 20 +9.32783987328807 + 10 +-154.2129902266314 + 20 +9.32783987328807 + 10 +-154.3544115828687 + 20 +9.469261229525387 + 0 +LWPOLYLINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +8.894421356237359 + 10 +-137.4399999999999 + 20 +8.753000000000057 + 10 +-140.0399999999997 + 20 +8.753000000000071 + 10 +-140.1814213562371 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +0.3307387704747384 + 10 +-168.1329902266315 + 20 +0.4721601267120548 + 10 +-174.0329902266314 + 20 +0.4721601267120832 + 10 +-174.1744115828687 + 20 +0.3307387704747669 + 0 +LWPOLYLINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +0.905578643762766 + 10 +-157.2599999999999 + 20 +1.047000000000082 + 10 +-159.8599999999997 + 20 +1.047000000000054 + 10 +-160.001421356237 + 20 +0.9055786437627376 + 0 +LWPOLYLINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +9.469261229525387 + 10 +-168.1329902266315 + 20 +9.32783987328807 + 10 +-174.0329902266314 + 20 +9.327839873288085 + 10 +-174.1744115828687 + 20 +9.469261229525387 + 0 +LWPOLYLINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +8.894421356237359 + 10 +-157.2599999999999 + 20 +8.753000000000057 + 10 +-159.8599999999997 + 20 +8.753000000000071 + 10 +-160.001421356237 + 20 +8.894421356237387 + 0 +LWPOLYLINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +-9.469261229525273 + 10 +-9.57299022663156 + 20 +-9.327839873287957 + 10 +-15.47299022663145 + 20 +-9.327839873287957 + 10 +-15.61441158286877 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +-8.894421356237245 + 10 +1.30000000000004 + 20 +-8.752999999999929 + 10 +-1.299999999999784 + 20 +-8.752999999999957 + 10 +-1.4414213562371 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-9.431568870394244 + 20 +-0.3307387704746247 + 10 +-9.57299022663156 + 20 +-0.4721601267119411 + 10 +-15.47299022663145 + 20 +-0.4721601267119411 + 10 +-15.61441158286877 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.441421356237328 + 20 +-0.9055786437626523 + 10 +1.30000000000004 + 20 +-1.046999999999969 + 10 +-1.299999999999784 + 20 +-1.04699999999994 + 10 +-1.4414213562371 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +-9.469261229525273 + 10 +-29.39299022663155 + 20 +-9.327839873287957 + 10 +-35.29299022663145 + 20 +-9.327839873287957 + 10 +-35.43441158286876 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +-8.894421356237245 + 10 +-18.51999999999995 + 20 +-8.752999999999929 + 10 +-21.11999999999978 + 20 +-8.752999999999957 + 10 +-21.26142135623709 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.25156887039424 + 20 +-0.3307387704746247 + 10 +-29.39299022663155 + 20 +-0.4721601267119411 + 10 +-35.29299022663145 + 20 +-0.4721601267119411 + 10 +-35.43441158286876 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-18.37857864376267 + 20 +-0.9055786437626523 + 10 +-18.51999999999995 + 20 +-1.046999999999969 + 10 +-21.11999999999978 + 20 +-1.04699999999994 + 10 +-21.26142135623709 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +-9.469261229525273 + 10 +-49.21299022663155 + 20 +-9.327839873287957 + 10 +-55.11299022663144 + 20 +-9.327839873287957 + 10 +-55.25441158286876 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +-8.894421356237245 + 10 +-38.33999999999997 + 20 +-8.752999999999929 + 10 +-40.93999999999977 + 20 +-8.752999999999957 + 10 +-41.08142135623709 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-49.07156887039423 + 20 +-0.3307387704746247 + 10 +-49.21299022663155 + 20 +-0.4721601267119411 + 10 +-55.11299022663144 + 20 +-0.4721601267119411 + 10 +-55.25441158286876 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-38.19857864376266 + 20 +-0.9055786437626523 + 10 +-38.33999999999997 + 20 +-1.046999999999969 + 10 +-40.93999999999977 + 20 +-1.04699999999994 + 10 +-41.08142135623709 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +-9.469261229525245 + 10 +-69.03299022663154 + 20 +-9.327839873287928 + 10 +-74.93299022663143 + 20 +-9.327839873287928 + 10 +-75.07441158286875 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +-8.894421356237245 + 10 +-58.15999999999997 + 20 +-8.752999999999929 + 10 +-60.75999999999976 + 20 +-8.752999999999957 + 10 +-60.90142135623708 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-68.89156887039422 + 20 +-0.3307387704746247 + 10 +-69.03299022663154 + 20 +-0.4721601267119127 + 10 +-74.93299022663143 + 20 +-0.4721601267119127 + 10 +-75.07441158286875 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-58.01857864376265 + 20 +-0.9055786437626239 + 10 +-58.15999999999997 + 20 +-1.04699999999994 + 10 +-60.75999999999976 + 20 +-1.046999999999912 + 10 +-60.90142135623708 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +-9.469261229525245 + 10 +-88.85299022663153 + 20 +-9.327839873287928 + 10 +-94.75299022663143 + 20 +-9.327839873287928 + 10 +-94.89441158286874 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +-8.894421356237245 + 10 +-77.97999999999996 + 20 +-8.752999999999929 + 10 +-80.57999999999976 + 20 +-8.752999999999957 + 10 +-80.72142135623707 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-88.71156887039422 + 20 +-0.3307387704746247 + 10 +-88.85299022663153 + 20 +-0.4721601267119127 + 10 +-94.75299022663143 + 20 +-0.4721601267119127 + 10 +-94.89441158286874 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-77.83857864376265 + 20 +-0.9055786437626239 + 10 +-77.97999999999996 + 20 +-1.04699999999994 + 10 +-80.57999999999976 + 20 +-1.046999999999912 + 10 +-80.72142135623707 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +-9.469261229525245 + 10 +-108.6729902266315 + 20 +-9.327839873287928 + 10 +-114.5729902266314 + 20 +-9.327839873287928 + 10 +-114.7144115828687 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +-8.894421356237245 + 10 +-97.79999999999995 + 20 +-8.752999999999929 + 10 +-100.3999999999997 + 20 +-8.752999999999957 + 10 +-100.5414213562371 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-108.5315688703942 + 20 +-0.3307387704746247 + 10 +-108.6729902266315 + 20 +-0.4721601267119127 + 10 +-114.5729902266314 + 20 +-0.4721601267119127 + 10 +-114.7144115828687 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-97.65857864376264 + 20 +-0.9055786437626239 + 10 +-97.79999999999995 + 20 +-1.04699999999994 + 10 +-100.3999999999997 + 20 +-1.046999999999912 + 10 +-100.5414213562371 + 20 +-0.9055786437626239 + 0 +LWPOLYLINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +-9.469261229525245 + 10 +-128.4929902266315 + 20 +-9.327839873287928 + 10 +-134.3929902266314 + 20 +-9.327839873287928 + 10 +-134.5344115828687 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +-8.894421356237217 + 10 +-117.6199999999999 + 20 +-8.752999999999929 + 10 +-120.2199999999997 + 20 +-8.752999999999929 + 10 +-120.3614213562371 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-128.3515688703942 + 20 +-0.3307387704746247 + 10 +-128.4929902266315 + 20 +-0.4721601267119127 + 10 +-134.3929902266314 + 20 +-0.4721601267119127 + 10 +-134.5344115828687 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-117.4785786437626 + 20 +-0.9055786437626239 + 10 +-117.6199999999999 + 20 +-1.04699999999994 + 10 +-120.2199999999997 + 20 +-1.046999999999912 + 10 +-120.3614213562371 + 20 +-0.9055786437625954 + 0 +LWPOLYLINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +-9.469261229525245 + 10 +-148.3129902266315 + 20 +-9.327839873287928 + 10 +-154.2129902266314 + 20 +-9.327839873287928 + 10 +-154.3544115828687 + 20 +-9.469261229525245 + 0 +LWPOLYLINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +-8.894421356237217 + 10 +-137.4399999999999 + 20 +-8.752999999999929 + 10 +-140.0399999999997 + 20 +-8.752999999999929 + 10 +-140.1814213562371 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-148.1715688703942 + 20 +-0.3307387704746247 + 10 +-148.3129902266315 + 20 +-0.4721601267119127 + 10 +-154.2129902266314 + 20 +-0.4721601267119127 + 10 +-154.3544115828687 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-137.2985786437626 + 20 +-0.9055786437626239 + 10 +-137.4399999999999 + 20 +-1.04699999999994 + 10 +-140.0399999999997 + 20 +-1.046999999999912 + 10 +-140.1814213562371 + 20 +-0.9055786437625954 + 0 +LWPOLYLINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +-9.469261229525245 + 10 +-168.1329902266315 + 20 +-9.327839873287928 + 10 +-174.0329902266314 + 20 +-9.327839873287928 + 10 +-174.1744115828687 + 20 +-9.469261229525216 + 0 +LWPOLYLINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +-8.894421356237217 + 10 +-157.2599999999999 + 20 +-8.752999999999929 + 10 +-159.8599999999997 + 20 +-8.752999999999929 + 10 +-160.001421356237 + 20 +-8.894421356237274 + 0 +LWPOLYLINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.9915688703942 + 20 +-0.3307387704746247 + 10 +-168.1329902266315 + 20 +-0.4721601267119127 + 10 +-174.0329902266314 + 20 +-0.4721601267119127 + 10 +-174.1744115828687 + 20 +-0.3307387704746247 + 0 +LWPOLYLINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-157.1185786437626 + 20 +-0.9055786437626239 + 10 +-157.2599999999999 + 20 +-1.04699999999994 + 10 +-159.8599999999997 + 20 +-1.046999999999912 + 10 +-160.001421356237 + 20 +-0.9055786437625954 + 0 +CIRCLE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +98.00000000000001 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +ͼ1 +370 + 30 +100 +AcDbCircle + 10 +-158.56 + 20 +98.00000000000001 + 30 +0.0 + 40 +0.3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +1 +350 +1E + 3 +2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +102 +{ACAD_XDICTIONARY +360 +42E +102 +} +330 +92 +100 +AcDbTableStyle + 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 +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 +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 +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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +42D + 0 +DICTIONARY + 5 +42E +330 +93 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +42F + 0 +XRECORD + 5 +42D +102 +{ACAD_REACTORS +330 +E8 +102 +} +330 +E8 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +XRECORD + 5 +42F +102 +{ACAD_REACTORS +330 +42E +102 +} +330 +42E +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 512 + 91 + 0 + 1 + + 92 + 512 + 93 + 0 + 2 + + 94 + 512 + 95 + 0 + 3 + + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219R-二供.par b/LaiPuLaser/TempMarkData/E219R-二供.par new file mode 100644 index 0000000..69405ec Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219R-二供.par differ diff --git a/LaiPuLaser/TempMarkData/E219R-二供.txt b/LaiPuLaser/TempMarkData/E219R-二供.txt new file mode 100644 index 0000000..6961921 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219R-二供.txt @@ -0,0 +1,8 @@ +1 +62.4 +-11.9601 +80 +50 +300 +1 +1 diff --git a/LaiPuLaser/TempMarkData/E219ttttt3.are b/LaiPuLaser/TempMarkData/E219ttttt3.are new file mode 100644 index 0000000..d8f20a5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219ttttt3.are differ diff --git a/LaiPuLaser/TempMarkData/E219ttttt3.dxf b/LaiPuLaser/TempMarkData/E219ttttt3.dxf new file mode 100644 index 0000000..31d9c0f --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219ttttt3.dxf @@ -0,0 +1,15010 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +384.9007161182554 + 20 +212.7688582619269 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458954.588433067 + 9 +$TDUCREATE + 40 +2458954.255099734 + 9 +$TDUPDATE + 40 +2458954.588433067 + 9 +$TDUUPDATE + 40 +2458954.255099734 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +451 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层3 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +224.2535267864479 + 20 +212.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +224.2535267864479 + 20 +114.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbCircle + 10 +382.8135267864479 + 20 +212.4688582619269 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +211.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +203.1388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +211.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +203.7138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +211.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +211.9985671677616 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +211.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +211.4235671677616 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +203.1388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +203.1388582619269 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +203.7138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +203.7138582619269 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +202.1985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +193.3388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +201.6235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +193.9138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +202.1985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +202.1985671677616 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +201.6235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +201.6235671677616 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +193.3388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +193.3388582619269 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +193.9138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +193.9138582619269 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +192.3985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +183.5388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +191.8235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +184.1138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +192.3985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +192.3985671677616 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +191.8235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +191.8235671677616 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +183.5388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +183.5388582619269 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +184.1138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +184.1138582619269 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +182.5985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +173.7388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +182.0235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +174.313858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +182.5985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +182.5985671677616 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +182.0235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +182.0235671677616 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +173.7388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +173.7388582619269 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +174.313858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +174.313858261927 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +172.7985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +163.938858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +172.2235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +164.5138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +172.7985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +172.7985671677616 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +172.2235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +172.2235671677616 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +163.938858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +163.938858261927 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +164.5138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +164.5138582619269 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +162.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +154.1388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +162.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +154.7138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +162.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +162.9985671677616 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +162.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +162.4235671677616 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +154.1388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +154.1388582619269 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +154.7138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +154.7138582619269 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +225.9335267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +245.7535267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +265.5735267864479 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +285.393526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +153.1985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +144.338858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +305.213526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +325.033526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +152.6235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +144.9138582619269 + 30 +0.0 + 11 +344.853526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +364.673526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +153.1985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +153.1985671677616 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +152.6235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +152.6235671677616 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +144.338858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +144.338858261927 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +144.9138582619269 + 30 +0.0 + 11 +384.493526786448 + 21 +144.9138582619269 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +216.4135267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +216.4135267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +236.2335267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +236.2335267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +256.0535267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +256.0535267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +275.8735267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +275.8735267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +143.3985671677617 + 30 +0.0 + 11 +295.6935267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +134.5388582619269 + 30 +0.0 + 11 +295.6935267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +315.5135267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +315.5135267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +335.3335267864479 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +142.8235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +335.3335267864479 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +135.113858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +355.153526786448 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +355.153526786448 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +143.3985671677617 + 30 +0.0 + 11 +374.973526786448 + 21 +143.3985671677617 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +142.8235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +142.8235671677616 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +134.5388582619269 + 30 +0.0 + 11 +374.973526786448 + 21 +134.5388582619269 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +135.113858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +135.113858261927 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +133.5985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +124.738858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +133.0235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +125.313858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +133.5985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +133.5985671677616 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +133.0235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +133.0235671677616 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +124.738858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +124.738858261927 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +125.313858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +125.313858261927 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +123.7985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +114.938858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +123.2235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +115.513858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +123.7985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +123.7985671677616 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +123.2235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +123.2235671677616 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +114.938858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +114.938858261927 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +115.513858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +115.513858261927 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +216.4135267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +225.9335267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +207.0535267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +216.4135267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +222.5735267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +225.9335267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +236.2335267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +245.7535267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +226.8735267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +236.2335267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +242.3935267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +245.7535267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +256.0535267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +265.5735267864479 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +246.6935267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +256.0535267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +262.2135267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +265.5735267864479 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +275.8735267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +285.393526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +266.5135267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +275.8735267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +282.033526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +285.393526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +113.9985671677616 + 30 +0.0 + 11 +295.6935267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +305.213526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +286.3335267864479 + 20 +105.138858261927 + 30 +0.0 + 11 +295.6935267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +301.853526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +305.213526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +315.5135267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +325.033526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +306.153526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +315.5135267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +321.673526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +325.033526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +335.3335267864479 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +113.4235671677616 + 30 +0.0 + 11 +344.853526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +325.973526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +335.3335267864479 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +341.4935267864479 + 20 +105.713858261927 + 30 +0.0 + 11 +344.853526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +355.153526786448 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +364.673526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +345.793526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +355.153526786448 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +361.313526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +364.673526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +113.9985671677616 + 30 +0.0 + 11 +374.973526786448 + 21 +113.9985671677616 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +113.4235671677616 + 30 +0.0 + 11 +384.493526786448 + 21 +113.4235671677616 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +365.613526786448 + 20 +105.138858261927 + 30 +0.0 + 11 +374.973526786448 + 21 +105.138858261927 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbLine + 10 +381.133526786448 + 20 +105.713858261927 + 30 +0.0 + 11 +384.493526786448 + 21 +105.713858261927 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +207.1374649166879 + 20 +159.8179022875576 + 10 +207.3135267864479 + 20 +159.5749985658557 + 10 +207.3135267864479 + 20 +157.3767538128097 + 10 +207.1725711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.3407161182554 + 20 +159.9823489293606 + 10 +226.1735267864479 + 20 +159.7332551170533 + 10 +226.1735267864479 + 20 +157.3234915993564 + 10 +226.3389137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +246.1607161182554 + 20 +159.9823489293606 + 10 +245.9935267864479 + 20 +159.7332551170533 + 10 +245.9935267864479 + 20 +157.3234915993564 + 10 +246.1589137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9574649166879 + 20 +159.8179022875576 + 10 +227.1335267864479 + 20 +159.5749985658557 + 10 +227.1335267864479 + 20 +157.3767538128097 + 10 +226.9925711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +265.9807161182554 + 20 +159.9823489293606 + 10 +265.8135267864479 + 20 +159.7332551170533 + 10 +265.8135267864479 + 20 +157.3234915993564 + 10 +265.9789137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +246.7774649166879 + 20 +159.8179022875576 + 10 +246.9535267864479 + 20 +159.5749985658557 + 10 +246.9535267864479 + 20 +157.3767538128097 + 10 +246.8125711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +285.8007161182554 + 20 +159.9823489293606 + 10 +285.6335267864479 + 20 +159.7332551170533 + 10 +285.6335267864479 + 20 +157.3234915993564 + 10 +285.7989137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +266.597464916688 + 20 +159.8179022875576 + 10 +266.7735267864479 + 20 +159.5749985658557 + 10 +266.7735267864479 + 20 +157.3767538128097 + 10 +266.6325711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +305.6207161182554 + 20 +159.9823489293606 + 10 +305.4535267864479 + 20 +159.7332551170533 + 10 +305.4535267864479 + 20 +157.3234915993564 + 10 +305.6189137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +286.4174649166879 + 20 +159.8179022875576 + 10 +286.5935267864479 + 20 +159.5749985658557 + 10 +286.5935267864479 + 20 +157.3767538128097 + 10 +286.4525711766707 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +325.4407161182554 + 20 +159.9823489293606 + 10 +325.2735267864479 + 20 +159.7332551170533 + 10 +325.2735267864479 + 20 +157.3234915993564 + 10 +325.4389137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +306.2374649166879 + 20 +159.8179022875576 + 10 +306.4135267864479 + 20 +159.5749985658557 + 10 +306.4135267864479 + 20 +157.3767538128097 + 10 +306.2725711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +345.2607161182553 + 20 +159.9823489293606 + 10 +345.0935267864479 + 20 +159.7332551170533 + 10 +345.0935267864479 + 20 +157.3234915993564 + 10 +345.2589137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +326.0574649166879 + 20 +159.8179022875576 + 10 +326.2335267864479 + 20 +159.5749985658557 + 10 +326.2335267864479 + 20 +157.3767538128097 + 10 +326.0925711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +365.0807161182554 + 20 +159.9823489293606 + 10 +364.9135267864479 + 20 +159.7332551170533 + 10 +364.9135267864479 + 20 +157.3234915993564 + 10 +365.0789137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +345.8774649166879 + 20 +159.8179022875576 + 10 +346.0535267864479 + 20 +159.5749985658557 + 10 +346.0535267864479 + 20 +157.3767538128097 + 10 +345.9125711766708 + 20 +157.111930256319 + 0 +LWPOLYLINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +384.9007161182554 + 20 +159.9823489293606 + 10 +384.7335267864479 + 20 +159.7332551170533 + 10 +384.7335267864479 + 20 +157.3234915993564 + 10 +384.8989137732725 + 20 +157.0731974831869 + 0 +LWPOLYLINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +图层3 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +365.6974649166879 + 20 +159.8179022875576 + 10 +365.8735267864479 + 20 +159.5749985658557 + 10 +365.8735267864479 + 20 +157.3767538128097 + 10 +365.7325711766708 + 20 +157.111930256319 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219ttttt3.par b/LaiPuLaser/TempMarkData/E219ttttt3.par new file mode 100644 index 0000000..3a2b21e Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219ttttt3.par differ diff --git a/LaiPuLaser/TempMarkData/E219yt-11.are b/LaiPuLaser/TempMarkData/E219yt-11.are new file mode 100644 index 0000000..f9da8b4 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-11.are differ diff --git a/LaiPuLaser/TempMarkData/E219yt-11.dxf b/LaiPuLaser/TempMarkData/E219yt-11.dxf new file mode 100644 index 0000000..4f88092 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219yt-11.dxf @@ -0,0 +1,15014 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +245.0055926238276 + 20 +119.8731897046744 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +229.7358154668179 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081215 + 9 +$TDUCREATE + 40 +2458953.342747882 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +5D9 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +296.624648399971 + 22 +215.6582351821654 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +219.6196751030716 + 41 +2.454964509201901 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +44F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +425.997804978679 + 20 +172.252033042591 + 10 +425.8006929186844 + 20 +172.4781897046744 + 10 +425.8006929186844 + 20 +174.1281897046744 + 10 +425.9795616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.7353983446329 + 20 +172.242174707368 + 10 +406.9205926238276 + 20 +172.4781897046744 + 10 +406.9205926238276 + 20 +174.1281897046744 + 10 +406.739645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.9153983446329 + 20 +172.242174707368 + 10 +387.1005926238277 + 20 +172.4781897046744 + 10 +387.1005926238277 + 20 +174.1281897046744 + 10 +386.9196454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.177804978679 + 20 +172.252033042591 + 10 +405.9806929186844 + 20 +172.4781897046744 + 10 +405.9806929186844 + 20 +174.1281897046744 + 10 +406.1595616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +367.0953983446328 + 20 +172.242174707368 + 10 +367.2805926238276 + 20 +172.4781897046744 + 10 +367.2805926238276 + 20 +174.1281897046744 + 10 +367.0996454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.357804978679 + 20 +172.252033042591 + 10 +386.1606929186844 + 20 +172.4781897046744 + 10 +386.1606929186844 + 20 +174.1281897046744 + 10 +386.3395616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +347.2753983446328 + 20 +172.242174707368 + 10 +347.4605926238276 + 20 +172.4781897046744 + 10 +347.4605926238276 + 20 +174.1281897046744 + 10 +347.2796454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.537804978679 + 20 +172.252033042591 + 10 +366.3406929186845 + 20 +172.4781897046744 + 10 +366.3406929186845 + 20 +174.1281897046744 + 10 +366.5195616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.4553983446328 + 20 +172.242174707368 + 10 +327.6405926238276 + 20 +172.4781897046744 + 10 +327.6405926238276 + 20 +174.1281897046744 + 10 +327.4596454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +346.717804978679 + 20 +172.252033042591 + 10 +346.5206929186845 + 20 +172.4781897046744 + 10 +346.5206929186845 + 20 +174.1281897046744 + 10 +346.6995616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.6353983446328 + 20 +172.242174707368 + 10 +307.8205926238276 + 20 +172.4781897046744 + 10 +307.8205926238276 + 20 +174.1281897046744 + 10 +307.6396454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +326.897804978679 + 20 +172.252033042591 + 10 +326.7006929186845 + 20 +172.4781897046744 + 10 +326.7006929186845 + 20 +174.1281897046744 + 10 +326.8795616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.8153983446329 + 20 +172.242174707368 + 10 +288.0005926238276 + 20 +172.4781897046744 + 10 +288.0005926238276 + 20 +174.1281897046744 + 10 +287.819645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.077804978679 + 20 +172.252033042591 + 10 +306.8806929186844 + 20 +172.4781897046744 + 10 +306.8806929186844 + 20 +174.1281897046744 + 10 +307.0595616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.9953983446329 + 20 +172.242174707368 + 10 +268.1805926238276 + 20 +172.4781897046744 + 10 +268.1805926238276 + 20 +174.1281897046744 + 10 +267.999645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.257804978679 + 20 +172.252033042591 + 10 +287.0606929186844 + 20 +172.4781897046744 + 10 +287.0606929186844 + 20 +174.1281897046744 + 10 +287.2395616441333 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.1753983446329 + 20 +172.242174707368 + 10 +248.3605926238276 + 20 +172.4781897046744 + 10 +248.3605926238276 + 20 +174.1281897046744 + 10 +248.179645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.437804978679 + 20 +172.252033042591 + 10 +267.2406929186844 + 20 +172.4781897046744 + 10 +267.2406929186844 + 20 +174.1281897046744 + 10 +267.4195616441334 + 20 +174.3690340092703 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +500 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +501 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +502 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +503 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +504 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +505 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +506 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +507 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +508 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +509 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +50A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +50B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +50C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +50D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +50E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +50F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +510 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +511 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +512 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +513 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +514 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +515 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +516 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +517 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +518 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +519 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +51A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +51B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +51C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +51D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +51E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +51F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +520 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +521 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +522 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +523 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +524 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +525 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +526 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +527 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +528 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +529 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +52A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +52B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +52C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +52D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +52E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +52F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +530 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +531 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +532 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +533 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +534 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +535 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +536 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +537 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +538 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +539 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +53A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +53B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +53C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +53D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +53E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +53F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +540 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +541 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +542 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +543 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +544 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +545 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +546 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +547 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +548 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +549 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +54A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +54B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +54C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +54D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +54E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +54F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +550 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +551 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +552 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +553 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +554 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +555 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +556 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +557 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +558 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +559 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +55A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +55B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +55C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +55D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +55E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +55F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +560 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +561 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +562 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +563 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +564 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +565 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +566 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +567 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +568 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +569 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +56A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +56B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +56C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +56D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +56E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +56F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +570 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +571 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +572 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +573 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +574 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +575 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +576 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +577 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +578 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +579 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +57A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +57B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +57C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +57D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +57E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +57F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +580 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +581 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +582 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +583 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +584 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +585 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +586 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +587 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +588 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +589 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +58A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +58B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +58C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +58D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +58E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +58F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +590 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +591 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +592 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +593 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +594 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +595 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +596 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +597 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +598 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +599 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +59A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +59B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +59C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +59D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +59E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +59F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219yt-11.par b/LaiPuLaser/TempMarkData/E219yt-11.par new file mode 100644 index 0000000..77b19d5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-11.par differ diff --git a/LaiPuLaser/TempMarkData/E219yt-12.are b/LaiPuLaser/TempMarkData/E219yt-12.are new file mode 100644 index 0000000..0fb6b2e Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-12.are differ diff --git a/LaiPuLaser/TempMarkData/E219yt-12.dxf b/LaiPuLaser/TempMarkData/E219yt-12.dxf new file mode 100644 index 0000000..31bacd8 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219yt-12.dxf @@ -0,0 +1,15014 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +245.0055926238276 + 20 +119.8731897046744 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +226.7330777984067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081215 + 9 +$TDUCREATE + 40 +2458953.342747882 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +638 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +348.9233487007534 + 22 +182.7618971172942 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +562.2263682638619 + 41 +0.9589705114069949 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +44F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +4FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +4FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +4FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +4FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +500 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +501 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +502 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +503 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +504 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +505 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +506 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +507 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +508 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +509 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +50A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +50B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +50C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +50D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +50E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +50F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +510 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +511 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +512 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +513 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +514 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +515 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +516 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +517 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +518 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +519 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +51A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +51B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +51C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +51D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +51E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +51F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +520 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +521 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +522 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +523 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +524 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +525 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +526 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +527 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +528 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +529 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +52A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +52B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +52C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +52D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +52E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +52F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +530 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +531 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +532 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +533 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +534 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +535 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +536 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +537 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +538 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +539 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +53A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +53B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +53C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +53D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +53E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +53F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +540 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +541 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +542 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +543 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +544 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +545 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +546 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +547 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +548 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +549 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +54A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +54B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +54C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +54D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +54E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +54F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +550 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +551 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +552 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +553 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +554 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +555 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +556 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +557 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +558 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +559 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +55A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +55B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +55C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +55D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +55E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +55F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +560 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +561 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +562 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +563 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +564 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +565 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +566 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +567 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +568 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +569 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +56A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +56B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +56C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +56D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +56E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +56F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +570 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +571 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +572 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +573 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +574 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +575 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +576 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +577 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +578 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +579 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +57A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +57B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +57C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +57D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +57E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +57F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +580 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +581 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +582 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +583 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +584 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +585 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +586 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +587 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +588 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +589 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +58A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +58B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +58C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +58D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +58E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +58F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +590 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +591 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +592 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +593 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +594 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +595 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +596 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +597 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +598 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +599 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +59A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +59B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +59C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +59D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +59E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +59F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +5B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +5B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +5B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +303.1025926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +303.1025926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +322.9225926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +322.9225926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +362.5625926238275 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +362.5625926238275 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +5D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +5D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LWPOLYLINE + 5 +625 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.2373345997149 + 20 +172.0396801810892 + 10 +248.3605926238276 + 20 +172.3131897046744 + 10 +248.3605926238276 + 20 +174.2931897046744 + 10 +248.2376702299981 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +626 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.3877305547877 + 20 +172.051694133834 + 10 +267.2406929186844 + 20 +172.3131897046744 + 10 +267.2406929186844 + 20 +174.2931897046744 + 10 +267.3688025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +627 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +268.0573345997149 + 20 +172.0396801810892 + 10 +268.1805926238276 + 20 +172.3131897046744 + 10 +268.1805926238276 + 20 +174.2931897046744 + 10 +268.0576702299982 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +628 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.2077305547877 + 20 +172.051694133834 + 10 +287.0606929186844 + 20 +172.3131897046744 + 10 +287.0606929186844 + 20 +174.2931897046744 + 10 +287.1888025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +629 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.8773345997149 + 20 +172.0396801810892 + 10 +288.0005926238276 + 20 +172.3131897046744 + 10 +288.0005926238276 + 20 +174.2931897046744 + 10 +287.8776702299982 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +62A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.0277305547877 + 20 +172.051694133834 + 10 +306.8806929186844 + 20 +172.3131897046744 + 10 +306.8806929186844 + 20 +174.2931897046744 + 10 +307.0088025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +62B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.6973345997148 + 20 +172.0396801810892 + 10 +307.8205926238276 + 20 +172.3131897046744 + 10 +307.8205926238276 + 20 +174.2931897046744 + 10 +307.6976702299982 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +62C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +326.8477305547877 + 20 +172.051694133834 + 10 +326.7006929186844 + 20 +172.3131897046744 + 10 +326.7006929186844 + 20 +174.2931897046744 + 10 +326.8288025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +62D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.5173345997149 + 20 +172.0396801810892 + 10 +327.6405926238276 + 20 +172.3131897046744 + 10 +327.6405926238276 + 20 +174.2931897046744 + 10 +327.5176702299981 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +62E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +346.6677305547877 + 20 +172.051694133834 + 10 +346.5206929186844 + 20 +172.3131897046744 + 10 +346.5206929186844 + 20 +174.2931897046744 + 10 +346.6488025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +62F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +347.3373345997148 + 20 +172.0396801810892 + 10 +347.4605926238277 + 20 +172.3131897046744 + 10 +347.4605926238277 + 20 +174.2931897046744 + 10 +347.3376702299981 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +630 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.4877305547877 + 20 +172.051694133834 + 10 +366.3406929186843 + 20 +172.3131897046744 + 10 +366.3406929186843 + 20 +174.2931897046744 + 10 +366.4688025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +631 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +367.1573345997149 + 20 +172.0396801810892 + 10 +367.2805926238277 + 20 +172.3131897046744 + 10 +367.2805926238277 + 20 +174.2931897046744 + 10 +367.1576702299981 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +632 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.3077305547877 + 20 +172.051694133834 + 10 +386.1606929186844 + 20 +172.3131897046744 + 10 +386.1606929186844 + 20 +174.2931897046744 + 10 +386.2888025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +633 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.9773345997149 + 20 +172.0396801810892 + 10 +387.1005926238277 + 20 +172.3131897046744 + 10 +387.1005926238277 + 20 +174.2931897046744 + 10 +386.9776702299981 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +634 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.1277305547877 + 20 +172.051694133834 + 10 +405.9806929186844 + 20 +172.3131897046744 + 10 +405.9806929186844 + 20 +174.2931897046744 + 10 +406.1088025943086 + 20 +174.564460622783 + 0 +LWPOLYLINE + 5 +635 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.7973345997149 + 20 +172.0396801810892 + 10 +406.9205926238276 + 20 +172.3131897046744 + 10 +406.9205926238276 + 20 +174.2931897046744 + 10 +406.7976702299982 + 20 +174.5668502336062 + 0 +LWPOLYLINE + 5 +636 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +425.9477305547877 + 20 +172.051694133834 + 10 +425.8006929186844 + 20 +172.3131897046744 + 10 +425.8006929186844 + 20 +174.2931897046744 + 10 +425.9288025943086 + 20 +174.564460622783 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219yt-12.par b/LaiPuLaser/TempMarkData/E219yt-12.par new file mode 100644 index 0000000..80f3fc3 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-12.par differ diff --git a/LaiPuLaser/TempMarkData/E219yt-3.are b/LaiPuLaser/TempMarkData/E219yt-3.are new file mode 100644 index 0000000..06e0110 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-3.are differ diff --git a/LaiPuLaser/TempMarkData/E219yt-3.dxf b/LaiPuLaser/TempMarkData/E219yt-3.dxf new file mode 100644 index 0000000..bb1723e --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219yt-3.dxf @@ -0,0 +1,19212 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +240.2424889270241 + 20 +108.2165230380077 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +226.7330777984067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081215 + 9 +$TDUCREATE + 40 +2458953.342747882 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +814 + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 5 +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 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +290.5906207629155 + 22 +207.7315931364984 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +85.78893558713726 + 41 +6.284709143556872 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +44F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +102 +{ACAD_REACTORS +102 +} +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 12 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5DA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5E8 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D2 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5F5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D3 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +604 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +613 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D5 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +622 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D6 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +631 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D7 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +640 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +64F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D9 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +65E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D10 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +66D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D11 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5E5 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +5DB +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +250.0805179464939 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +5DC +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +252.1655926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +250.0805179464939 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +5DD +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 11 +251.3305179464939 + 21 +206.2065230380077 + 31 +0.0 + 0 +LINE + 5 +5DE +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +251.3305179464939 + 20 +224.2330777984067 + 30 +0.0 + 11 +251.3305179464939 + 21 +220.3731897046744 + 31 +0.0 + 0 +SOLID + 5 +5DF +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +251.7471846131606 + 20 +224.2330777984067 + 30 +0.0 + 11 +250.9138512798272 + 21 +224.2330777984067 + 31 +0.0 + 12 +251.3305179464939 + 22 +226.7330777984067 + 32 +0.0 + 13 +251.3305179464939 + 23 +226.7330777984067 + 33 +0.0 + 0 +SOLID + 5 +5E0 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.9138512798272 + 20 +220.3731897046744 + 30 +0.0 + 11 +251.7471846131606 + 21 +220.3731897046744 + 31 +0.0 + 12 +251.3305179464939 + 22 +217.8731897046744 + 32 +0.0 + 13 +251.3305179464939 + 23 +217.8731897046744 + 33 +0.0 + 0 +MTEXT + 5 +5E1 +330 +5DA +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +249.2471846131606 + 20 +210.789856371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +8,86 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5E2 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +226.7330777984067 + 30 +0.0 + 0 +POINT + 5 +5E3 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +252.7905926238276 + 20 +217.8731897046744 + 30 +0.0 + 0 +POINT + 5 +5E4 +330 +5DA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +251.3305179464939 + 20 +217.8731897046744 + 30 +0.0 + 0 +ENDBLK + 5 +5E6 +330 +5DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F2 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D2 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D2 + 1 + + 0 +LINE + 5 +5E9 +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.3605926238276 + 20 +173.9281897046744 + 30 +0.0 + 11 +248.3605926238276 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EA +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +267.2406929186844 + 20 +173.9281897046744 + 30 +0.0 + 11 +267.2406929186844 + 21 +175.1546342328305 + 31 +0.0 + 0 +LINE + 5 +5EB +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +250.8605926238276 + 20 +173.9046342328305 + 30 +0.0 + 11 +264.7406929186844 + 21 +173.9046342328305 + 31 +0.0 + 0 +SOLID + 5 +5EC +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.8605926238276 + 20 +174.3213008994971 + 30 +0.0 + 11 +250.8605926238276 + 21 +173.4879675661638 + 31 +0.0 + 12 +248.3605926238276 + 22 +173.9046342328305 + 32 +0.0 + 13 +248.3605926238276 + 23 +173.9046342328305 + 33 +0.0 + 0 +SOLID + 5 +5ED +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +264.7406929186844 + 20 +173.4879675661638 + 30 +0.0 + 11 +264.7406929186844 + 21 +174.3213008994971 + 31 +0.0 + 12 +267.2406929186844 + 22 +173.9046342328305 + 32 +0.0 + 13 +267.2406929186844 + 23 +173.9046342328305 + 33 +0.0 + 0 +MTEXT + 5 +5EE +330 +5E8 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +257.800642771256 + 20 +175.9879675661638 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +18,88 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5EF +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F0 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.3031897046744 + 30 +0.0 + 0 +POINT + 5 +5F1 +330 +5E8 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +173.9046342328305 + 30 +0.0 + 0 +ENDBLK + 5 +5F3 +330 +5E8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +601 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D3 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D3 + 1 + + 0 +LINE + 5 +5F6 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.3756897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +174.3756897046744 + 31 +0.0 + 0 +LINE + 5 +5F7 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.2306897046744 + 30 +0.0 + 11 +251.2312841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5F8 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +158.8973563713411 + 31 +0.0 + 0 +LINE + 5 +5F9 +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +174.3756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +172.2306897046744 + 31 +0.0 + 0 +LINE + 5 +5FA +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9812841740176 + 20 +176.8756897046744 + 30 +0.0 + 11 +249.9812841740176 + 21 +179.3756897046744 + 31 +0.0 + 0 +SOLID + 5 +5FB +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.564617507351 + 20 +176.8756897046744 + 30 +0.0 + 11 +250.3979508406843 + 21 +176.8756897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +174.3756897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +174.3756897046744 + 33 +0.0 + 0 +SOLID + 5 +5FC +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.3979508406843 + 20 +169.7306897046744 + 30 +0.0 + 11 +249.564617507351 + 21 +169.7306897046744 + 31 +0.0 + 12 +249.9812841740176 + 22 +172.2306897046744 + 32 +0.0 + 13 +249.9812841740176 + 23 +172.2306897046744 + 33 +0.0 + 0 +MTEXT + 5 +5FD +330 +5F5 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.8979508406843 + 20 +163.0640230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,15 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +5FE +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.3756897046744 + 30 +0.0 + 0 +POINT + 5 +5FF +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.2306897046744 + 30 +0.0 + 0 +POINT + 5 +600 +330 +5F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9812841740176 + 20 +172.2306897046744 + 30 +0.0 + 0 +ENDBLK + 5 +602 +330 +5F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +610 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D4 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D4 + 1 + + 0 +LINE + 5 +605 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +606 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.0713524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +607 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +608 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +609 +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.3213524831946 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.3213524831946 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +60A +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.9046858165279 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.7380191498613 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +60B +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.7380191498613 + 20 +169.9781897046744 + 30 +0.0 + 11 +265.9046858165279 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.3213524831946 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.3213524831946 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +60C +330 +604 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.2380191498613 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +60D +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +60E +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +60F +330 +604 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.3213524831946 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +611 +330 +604 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +61F +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D5 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D5 + 1 + + 0 +LINE + 5 +614 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +615 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +251.1986523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +616 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +617 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +618 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.9486523321074 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.9486523321074 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +619 +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.5319856654407 + 20 +177.1974397046744 + 30 +0.0 + 11 +250.365318998774 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +61A +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.365318998774 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.5319856654407 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.9486523321074 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.9486523321074 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +61B +330 +613 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.865318998774 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +61C +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +61D +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +61E +330 +613 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.9486523321074 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +620 +330 +613 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +62E +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D6 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D6 + 1 + + 0 +LINE + 5 +623 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.1281897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +174.1281897046744 + 31 +0.0 + 0 +LINE + 5 +624 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.4781897046744 + 30 +0.0 + 11 +265.2122895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +625 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +159.144856371341 + 31 +0.0 + 0 +LINE + 5 +626 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +174.1281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +172.4781897046744 + 31 +0.0 + 0 +LINE + 5 +627 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.4622895442405 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.4622895442405 + 21 +179.1281897046744 + 31 +0.0 + 0 +SOLID + 5 +628 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0456228775738 + 20 +176.6281897046744 + 30 +0.0 + 11 +266.8789562109072 + 21 +176.6281897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +174.1281897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +174.1281897046744 + 33 +0.0 + 0 +SOLID + 5 +629 +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.8789562109072 + 20 +169.9781897046744 + 30 +0.0 + 11 +266.0456228775738 + 21 +169.9781897046744 + 31 +0.0 + 12 +266.4622895442405 + 22 +172.4781897046744 + 32 +0.0 + 13 +266.4622895442405 + 23 +172.4781897046744 + 33 +0.0 + 0 +MTEXT + 5 +62A +330 +622 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.3789562109072 + 20 +163.3115230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +1,65 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +62B +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.1281897046744 + 30 +0.0 + 0 +POINT + 5 +62C +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.4781897046744 + 30 +0.0 + 0 +POINT + 5 +62D +330 +622 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.4622895442405 + 20 +172.4781897046744 + 30 +0.0 + 0 +ENDBLK + 5 +62F +330 +622 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +63D +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D7 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D7 + 1 + + 0 +LINE + 5 +632 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.6974397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +174.6974397046744 + 31 +0.0 + 0 +LINE + 5 +633 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +171.9089397046744 + 30 +0.0 + 11 +250.5846737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +634 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +169.4089397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +157.7422730380077 + 31 +0.0 + 0 +LINE + 5 +635 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +174.6974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +171.9089397046744 + 31 +0.0 + 0 +LINE + 5 +636 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.3346737045466 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.3346737045466 + 21 +179.6974397046744 + 31 +0.0 + 0 +SOLID + 5 +637 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +248.91800703788 + 20 +177.1974397046744 + 30 +0.0 + 11 +249.7513403712133 + 21 +177.1974397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +174.6974397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +174.6974397046744 + 33 +0.0 + 0 +SOLID + 5 +638 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.7513403712133 + 20 +169.4089397046744 + 30 +0.0 + 11 +248.91800703788 + 21 +169.4089397046744 + 31 +0.0 + 12 +249.3346737045466 + 22 +171.9089397046744 + 32 +0.0 + 13 +249.3346737045466 + 23 +171.9089397046744 + 33 +0.0 + 0 +MTEXT + 5 +639 +330 +631 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.2513403712133 + 20 +162.325606371341 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,79 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +63A +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.6974397046744 + 30 +0.0 + 0 +POINT + 5 +63B +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +171.9089397046744 + 30 +0.0 + 0 +POINT + 5 +63C +330 +631 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.3346737045466 + 20 +171.9089397046744 + 30 +0.0 + 0 +ENDBLK + 5 +63E +330 +631 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +64C +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D8 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D8 + 1 + + 0 +LINE + 5 +641 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.6231897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +174.6231897046744 + 31 +0.0 + 0 +LINE + 5 +642 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +171.9831897046744 + 30 +0.0 + 11 +264.4086664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +643 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +157.8165230380078 + 31 +0.0 + 0 +LINE + 5 +644 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +174.6231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +171.9831897046744 + 31 +0.0 + 0 +LINE + 5 +645 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +265.6586664169324 + 20 +177.1231897046744 + 30 +0.0 + 11 +265.6586664169324 + 21 +179.6231897046744 + 31 +0.0 + 0 +SOLID + 5 +646 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +265.2419997502657 + 20 +177.1231897046744 + 30 +0.0 + 11 +266.0753330835991 + 21 +177.1231897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +174.6231897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +174.6231897046744 + 33 +0.0 + 0 +SOLID + 5 +647 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.0753330835991 + 20 +169.4831897046744 + 30 +0.0 + 11 +265.2419997502657 + 21 +169.4831897046744 + 31 +0.0 + 12 +265.6586664169324 + 22 +171.9831897046744 + 32 +0.0 + 13 +265.6586664169324 + 23 +171.9831897046744 + 33 +0.0 + 0 +MTEXT + 5 +648 +330 +640 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +263.575333083599 + 20 +162.3998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,64 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +649 +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.6231897046744 + 30 +0.0 + 0 +POINT + 5 +64A +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +171.9831897046744 + 30 +0.0 + 0 +POINT + 5 +64B +330 +640 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +265.6586664169324 + 20 +171.9831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +64D +330 +640 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +65B +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D9 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D9 + 1 + + 0 +LINE + 5 +650 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +174.5580147046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +174.5580147046744 + 31 +0.0 + 0 +LINE + 5 +651 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +248.9855926238276 + 20 +172.0483647046744 + 30 +0.0 + 11 +250.8909754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +652 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +158.715031371341 + 31 +0.0 + 0 +LINE + 5 +653 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +174.5580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +172.0483647046744 + 31 +0.0 + 0 +LINE + 5 +654 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +249.6409754717919 + 20 +177.0580147046744 + 30 +0.0 + 11 +249.6409754717919 + 21 +179.5580147046744 + 31 +0.0 + 0 +SOLID + 5 +655 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +249.2243088051252 + 20 +177.0580147046744 + 30 +0.0 + 11 +250.0576421384585 + 21 +177.0580147046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +174.5580147046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +174.5580147046744 + 33 +0.0 + 0 +SOLID + 5 +656 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +250.0576421384585 + 20 +169.5483647046744 + 30 +0.0 + 11 +249.2243088051252 + 21 +169.5483647046744 + 31 +0.0 + 12 +249.6409754717919 + 22 +172.0483647046744 + 32 +0.0 + 13 +249.6409754717919 + 23 +172.0483647046744 + 33 +0.0 + 0 +MTEXT + 5 +657 +330 +64F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +247.5576421384585 + 20 +162.8816980380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +658 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +174.5580147046744 + 30 +0.0 + 0 +POINT + 5 +659 +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.3605926238276 + 20 +172.0483647046744 + 30 +0.0 + 0 +POINT + 5 +65A +330 +64F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +249.6409754717919 + 20 +172.0483647046744 + 30 +0.0 + 0 +ENDBLK + 5 +65C +330 +64F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +66A +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D10 + 1 + + 0 +LINE + 5 +65F +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +174.5571897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +174.5571897046744 + 31 +0.0 + 0 +LINE + 5 +660 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6156929186844 + 20 +172.0491897046744 + 30 +0.0 + 11 +265.4224806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +661 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +158.715856371341 + 31 +0.0 + 0 +LINE + 5 +662 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +174.5571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +172.0491897046744 + 31 +0.0 + 0 +LINE + 5 +663 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +266.6724806419739 + 20 +177.0571897046744 + 30 +0.0 + 11 +266.6724806419739 + 21 +179.5571897046744 + 31 +0.0 + 0 +SOLID + 5 +664 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +266.2558139753072 + 20 +177.0571897046744 + 30 +0.0 + 11 +267.0891473086406 + 21 +177.0571897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +174.5571897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +174.5571897046744 + 33 +0.0 + 0 +SOLID + 5 +665 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +267.0891473086406 + 20 +169.5491897046744 + 30 +0.0 + 11 +266.2558139753072 + 21 +169.5491897046744 + 31 +0.0 + 12 +266.6724806419739 + 22 +172.0491897046744 + 32 +0.0 + 13 +266.6724806419739 + 23 +172.0491897046744 + 33 +0.0 + 0 +MTEXT + 5 +666 +330 +65E +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +264.5891473086406 + 20 +162.8825230380077 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +2,51 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +667 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +174.5571897046744 + 30 +0.0 + 0 +POINT + 5 +668 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +267.2406929186844 + 20 +172.0491897046744 + 30 +0.0 + 0 +POINT + 5 +669 +330 +65E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +266.6724806419739 + 20 +172.0491897046744 + 30 +0.0 + 0 +ENDBLK + 5 +66B +330 +65E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +678 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D11 + 1 + + 0 +LINE + 5 +66E +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +242.6711111102731 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +66F +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +247.8755926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +242.6711111102731 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +670 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 11 +243.9211111102731 + 21 +108.2165230380077 + 31 +0.0 + 0 +LINE + 5 +671 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +243.9211111102731 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.9211111102731 + 21 +122.3831897046744 + 31 +0.0 + 0 +SOLID + 5 +672 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +244.3377777769397 + 20 +126.2230777984067 + 30 +0.0 + 11 +243.5044444436064 + 21 +126.2230777984067 + 31 +0.0 + 12 +243.9211111102731 + 22 +128.7230777984067 + 32 +0.0 + 13 +243.9211111102731 + 23 +128.7230777984067 + 33 +0.0 + 0 +SOLID + 5 +673 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbTrace + 10 +243.5044444436064 + 20 +122.3831897046744 + 30 +0.0 + 11 +244.3377777769397 + 21 +122.3831897046744 + 31 +0.0 + 12 +243.9211111102731 + 22 +119.8831897046744 + 32 +0.0 + 13 +243.9211111102731 + 23 +119.8831897046744 + 33 +0.0 + 0 +MTEXT + 5 +674 +330 +66D +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +241.8377777769397 + 20 +112.7998563713411 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +8,84 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +675 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +128.7230777984067 + 30 +0.0 + 0 +POINT + 5 +676 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +248.5005926238276 + 20 +119.8831897046744 + 30 +0.0 + 0 +POINT + 5 +677 +330 +66D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +243.9211111102731 + 20 +119.8831897046744 + 30 +0.0 + 0 +ENDBLK + 5 +679 +330 +66D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.0789121251724 + 20 +171.6893858937714 + 10 +248.3605926238276 + 20 +172.0483647046744 + 10 +248.3605926238276 + 20 +174.5580147046744 + 10 +248.0853720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.5403032498762 + 20 +171.7054315783076 + 10 +267.2406929186844 + 20 +172.0491897046744 + 10 +267.2406929186844 + 20 +174.5571897046744 + 10 +267.5125733813669 + 20 +174.9232730476602 + 0 +LINE + 5 +5B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +67C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +67D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +67E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +67F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +680 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +681 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +682 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +683 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +684 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +685 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +686 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +687 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +688 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +689 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +68C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +68D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +68E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +68F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +690 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +691 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +692 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +693 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +694 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +695 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +696 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +120.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +120.4581897046744 + 31 +0.0 + 0 +LINE + 5 +697 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +119.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +119.8831897046744 + 31 +0.0 + 0 +LINE + 5 +698 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +128.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +128.1480777984067 + 31 +0.0 + 0 +LINE + 5 +699 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +128.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +128.7230777984067 + 31 +0.0 + 0 +LINE + 5 +69A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +69C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +69D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +69E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +69F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +130.2581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +130.2581897046744 + 31 +0.0 + 0 +LINE + 5 +6BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +129.6831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +129.6831897046744 + 31 +0.0 + 0 +LINE + 5 +6BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +137.9480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +137.9480777984067 + 31 +0.0 + 0 +LINE + 5 +6BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +138.5230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +138.5230777984067 + 31 +0.0 + 0 +LINE + 5 +6BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +140.0581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +140.0581897046744 + 31 +0.0 + 0 +LINE + 5 +6DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +139.4831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +139.4831897046744 + 31 +0.0 + 0 +LINE + 5 +6E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +147.7480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +147.7480777984067 + 31 +0.0 + 0 +LINE + 5 +6E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +148.3230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +148.3230777984067 + 31 +0.0 + 0 +LINE + 5 +6E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +6FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +6FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +6FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +6FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +700 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +701 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +702 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +149.8581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +149.8581897046744 + 31 +0.0 + 0 +LINE + 5 +703 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +149.2831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +149.2831897046744 + 31 +0.0 + 0 +LINE + 5 +704 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +157.5480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +157.5480777984067 + 31 +0.0 + 0 +LINE + 5 +705 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +158.1230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +158.1230777984067 + 31 +0.0 + 0 +LINE + 5 +706 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +707 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +708 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +709 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +70C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +70D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +70E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +70F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +710 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +711 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +712 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +713 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +714 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +715 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +716 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +717 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +718 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +719 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +71C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +71D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +71E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +71F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +720 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +721 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +722 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +723 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +724 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +725 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +726 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +159.6581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +159.6581897046744 + 31 +0.0 + 0 +LINE + 5 +727 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +159.0831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +159.0831897046744 + 31 +0.0 + 0 +LINE + 5 +728 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +167.3480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +167.3480777984067 + 31 +0.0 + 0 +LINE + 5 +729 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +167.9230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +167.9230777984067 + 31 +0.0 + 0 +LINE + 5 +72A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +72C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +72D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +72E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +72F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +730 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +731 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +732 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +733 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +734 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +735 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +736 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +737 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +738 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +739 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +73C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +73D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +73E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +73F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +740 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +741 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +742 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +743 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +744 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +745 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +746 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +747 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +748 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +749 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +169.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +169.4581897046744 + 31 +0.0 + 0 +LINE + 5 +74B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +168.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +168.8831897046744 + 31 +0.0 + 0 +LINE + 5 +74C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +177.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +177.1480777984067 + 31 +0.0 + 0 +LINE + 5 +74D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +177.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +177.7230777984067 + 31 +0.0 + 0 +LINE + 5 +74E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +74F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +750 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +751 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +752 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +753 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +754 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +755 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +756 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +757 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +758 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +759 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +75C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +75D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +75E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +75F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +760 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +761 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +762 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +763 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +764 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +765 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +766 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +767 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +768 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +769 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +76C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +76D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +76E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +179.2581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +179.2581897046744 + 31 +0.0 + 0 +LINE + 5 +76F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +178.6831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +178.6831897046744 + 31 +0.0 + 0 +LINE + 5 +770 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +186.9480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +186.9480777984067 + 31 +0.0 + 0 +LINE + 5 +771 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +187.5230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +187.5230777984067 + 31 +0.0 + 0 +LINE + 5 +772 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +773 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +774 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +775 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +776 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +777 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +778 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +779 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +77C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +77D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +77E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +77F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +780 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +781 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +782 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +783 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +784 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +785 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +786 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +787 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +788 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +789 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +78C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +78D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +78E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +78F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +790 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +791 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +792 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +189.0581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +189.0581897046744 + 31 +0.0 + 0 +LINE + 5 +793 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +188.4831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +188.4831897046744 + 31 +0.0 + 0 +LINE + 5 +794 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +196.7480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +196.7480777984067 + 31 +0.0 + 0 +LINE + 5 +795 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +197.3230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +197.3230777984067 + 31 +0.0 + 0 +LINE + 5 +796 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +797 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +798 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +799 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +79C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +79D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +79E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +79F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +198.8581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +198.8581897046744 + 31 +0.0 + 0 +LINE + 5 +7B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +198.2831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +198.2831897046744 + 31 +0.0 + 0 +LINE + 5 +7B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +206.5480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +206.5480777984067 + 31 +0.0 + 0 +LINE + 5 +7B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +207.1230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +207.1230777984067 + 31 +0.0 + 0 +LINE + 5 +7BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +208.6581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +208.6581897046744 + 31 +0.0 + 0 +LINE + 5 +7DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +208.0831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +208.0831897046744 + 31 +0.0 + 0 +LINE + 5 +7DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +216.3480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +216.3480777984067 + 31 +0.0 + 0 +LINE + 5 +7DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +216.9230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +216.9230777984067 + 31 +0.0 + 0 +LINE + 5 +7DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +263.4625926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +267.1585926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +263.4625926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +283.2825926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.9785926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +283.2825926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +303.1025926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.7985926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +303.1025926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +322.9225926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.6185926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +322.9225926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +342.7425926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.4385926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +342.7425926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +362.5625926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +366.2585926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +362.5625926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +347.6005926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +382.3825926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +386.0785926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +382.3825926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +402.2025926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +7FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.8985926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +402.2025926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +7FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LINE + 5 +7FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +218.4581897046744 + 30 +0.0 + 11 +422.0225926238276 + 21 +218.4581897046744 + 31 +0.0 + 0 +LINE + 5 +7FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +217.8831897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +217.8831897046744 + 31 +0.0 + 0 +LINE + 5 +800 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.7185926238277 + 20 +226.1480777984067 + 30 +0.0 + 11 +422.0225926238276 + 21 +226.1480777984067 + 31 +0.0 + 0 +LINE + 5 +801 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +226.7230777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +226.7230777984067 + 31 +0.0 + 0 +LWPOLYLINE + 5 +802 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.8989121251724 + 20 +171.6893858937714 + 10 +268.1805926238276 + 20 +172.0483647046744 + 10 +268.1805926238276 + 20 +174.5580147046744 + 10 +267.9053720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +803 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.3603032498762 + 20 +171.7054315783076 + 10 +287.0606929186844 + 20 +172.0491897046744 + 10 +287.0606929186844 + 20 +174.5571897046744 + 10 +287.3325733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +804 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.7189121251724 + 20 +171.6893858937714 + 10 +288.0005926238276 + 20 +172.0483647046744 + 10 +288.0005926238276 + 20 +174.5580147046744 + 10 +287.725372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +805 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.1803032498762 + 20 +171.7054315783076 + 10 +306.8806929186844 + 20 +172.0491897046744 + 10 +306.8806929186844 + 20 +174.5571897046744 + 10 +307.1525733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +806 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.5389121251724 + 20 +171.6893858937714 + 10 +307.8205926238276 + 20 +172.0483647046744 + 10 +307.8205926238276 + 20 +174.5580147046744 + 10 +307.545372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +807 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.0003032498762 + 20 +171.7054315783076 + 10 +326.7006929186844 + 20 +172.0491897046744 + 10 +326.7006929186844 + 20 +174.5571897046744 + 10 +326.9725733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +808 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.3589121251724 + 20 +171.6893858937714 + 10 +327.6405926238276 + 20 +172.0483647046744 + 10 +327.6405926238276 + 20 +174.5580147046744 + 10 +327.365372022542 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +809 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +346.8203032498762 + 20 +171.7054315783076 + 10 +346.5206929186844 + 20 +172.0491897046744 + 10 +346.5206929186844 + 20 +174.5571897046744 + 10 +346.7925733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +347.1789121251724 + 20 +171.6893858937714 + 10 +347.4605926238276 + 20 +172.0483647046744 + 10 +347.4605926238276 + 20 +174.5580147046744 + 10 +347.1853720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.6403032498762 + 20 +171.7054315783076 + 10 +366.3406929186843 + 20 +172.0491897046744 + 10 +366.3406929186843 + 20 +174.5571897046744 + 10 +366.6125733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.9989121251724 + 20 +171.6893858937714 + 10 +367.2805926238276 + 20 +172.0483647046744 + 10 +367.2805926238276 + 20 +174.5580147046744 + 10 +367.0053720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.4603032498762 + 20 +171.7054315783076 + 10 +386.1606929186844 + 20 +172.0491897046744 + 10 +386.1606929186844 + 20 +174.5571897046744 + 10 +386.4325733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +80E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.8189121251724 + 20 +171.6893858937714 + 10 +387.1005926238277 + 20 +172.0483647046744 + 10 +387.1005926238277 + 20 +174.5580147046744 + 10 +386.8253720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +80F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.2803032498762 + 20 +171.7054315783076 + 10 +405.9806929186844 + 20 +172.0491897046744 + 10 +405.9806929186844 + 20 +174.5571897046744 + 10 +406.2525733813669 + 20 +174.9232730476602 + 0 +LWPOLYLINE + 5 +810 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.6389121251724 + 20 +171.6893858937714 + 10 +406.9205926238276 + 20 +172.0483647046744 + 10 +406.9205926238276 + 20 +174.5580147046744 + 10 +406.6453720225421 + 20 +174.921969798921 + 0 +LWPOLYLINE + 5 +811 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +426.1003032498762 + 20 +171.7054315783076 + 10 +425.8006929186844 + 20 +172.0491897046744 + 10 +425.8006929186844 + 20 +174.5571897046744 + 10 +426.0725733813669 + 20 +174.9232730476602 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219yt-3.par b/LaiPuLaser/TempMarkData/E219yt-3.par new file mode 100644 index 0000000..78a0107 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt-3.par differ diff --git a/LaiPuLaser/TempMarkData/E219yt.are b/LaiPuLaser/TempMarkData/E219yt.are new file mode 100644 index 0000000..a4d6aa6 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt.are differ diff --git a/LaiPuLaser/TempMarkData/E219yt.dxf b/LaiPuLaser/TempMarkData/E219yt.dxf new file mode 100644 index 0000000..9adf7a3 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219yt.dxf @@ -0,0 +1,14988 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0000000000000073 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +429.0055926238276 + 20 +226.7330777984067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458953.676081227 + 9 +$TDUCREATE + 40 +2458953.342747894 + 9 +$TDUPDATE + 40 +2458953.676081227 + 9 +$TDUUPDATE + 40 +2458953.342747894 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +44F + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +LAYER + 5 +E6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 210 + 6 +Continuous +370 + -3 +390 +F +347 +E7 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +2AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +CIRCLE + 5 +2B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +428.5055926238276 + 20 +133.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +2B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +245.5055926238276 + 20 +183.3031897046744 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +2B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +347.6005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +120.4481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +128.1580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +120.4481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +120.4481897046744 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +119.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +119.8731897046744 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +128.1580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +128.1580777984067 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +128.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +128.7330777984067 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +137.9580777984066 + 30 +0.0 + 11 +422.3305926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +130.2481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +137.9580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +130.2481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +130.2481897046744 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +129.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +129.6731897046744 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +137.9580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +137.9580777984067 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +138.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +138.5330777984067 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +422.3305926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +402.5105926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +300 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +301 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +302 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +382.6905926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +303 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +362.8705926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +343.0505926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +323.2305926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +147.7580777984066 + 30 +0.0 + 11 +303.4105926238276 + 21 +147.7580777984066 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +140.0481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +147.7580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +140.0481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +140.0481897046744 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +139.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +139.4731897046744 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +147.7580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +147.7580777984067 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +148.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +148.3330777984067 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +158.1330777984066 + 30 +0.0 + 11 +407.0605926238276 + 21 +158.1330777984066 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +158.1330777984066 + 30 +0.0 + 11 +387.2405926238276 + 21 +158.1330777984066 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +158.1330777984066 + 30 +0.0 + 11 +367.4205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +149.8481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +157.5580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +149.8481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +149.8481897046744 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +149.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +149.2731897046744 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +157.5580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +157.5580777984067 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +158.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +158.1330777984067 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +159.0731897046743 + 30 +0.0 + 11 +407.0605926238276 + 21 +159.0731897046743 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +159.6481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +167.3580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +159.6481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +159.6481897046744 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +159.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +159.0731897046744 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +167.3580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +167.3580777984067 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +167.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +167.9330777984067 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +169.4481897046743 + 30 +0.0 + 11 +422.3305926238276 + 21 +169.4481897046743 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +169.4481897046743 + 30 +0.0 + 11 +402.5105926238276 + 21 +169.4481897046743 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +327.7805926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +169.4481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +177.1580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +169.4481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +169.4481897046744 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +168.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +168.8731897046744 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +177.1580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +177.1580777984067 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +177.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +177.7330777984067 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +186.9580777984066 + 30 +0.0 + 11 +422.3305926238276 + 21 +186.9580777984066 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +327.7805926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +327.7805926238277 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +307.9605926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +307.9605926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +179.2481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +186.9580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +179.2481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +179.2481897046744 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +178.6731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +178.6731897046744 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +186.9580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +186.9580777984067 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +187.5330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +187.5330777984067 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +196.7580777984066 + 30 +0.0 + 11 +422.3305926238276 + 21 +196.7580777984066 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +196.7580777984066 + 30 +0.0 + 11 +402.5105926238276 + 21 +196.7580777984066 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +196.7580777984066 + 30 +0.0 + 11 +382.6905926238276 + 21 +196.7580777984066 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +196.7580777984066 + 30 +0.0 + 11 +362.8705926238276 + 21 +196.7580777984066 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +327.7805926238277 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +196.7580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +327.7805926238277 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +307.9605926238277 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +196.7580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +307.9605926238277 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +196.7580777984067 + 30 +0.0 + 11 +303.4105926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +189.0481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +196.7580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +189.0481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +189.0481897046744 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +188.4731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +188.4731897046744 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +196.7580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +196.7580777984067 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +197.3330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +197.3330777984067 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +327.7805926238277 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +327.7805926238277 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +307.9605926238277 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +307.9605926238277 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +303.4105926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +303.4105926238277 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +198.8481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +206.5580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +198.8481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +198.8481897046744 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +198.2731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +198.2731897046744 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +206.5580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +206.5580777984067 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +207.1330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +207.1330777984067 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +422.3305926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +216.3580777984066 + 30 +0.0 + 11 +422.3305926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +327.7805926238277 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +327.7805926238277 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +307.9605926238277 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +307.9605926238277 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +303.4105926238277 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +303.4105926238277 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +208.6481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +216.3580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +208.6481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +208.6481897046744 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +208.0731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +208.0731897046744 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +216.3580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +216.3580777984067 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +216.9330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +216.9330777984067 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +218.4481897046743 + 30 +0.0 + 11 +422.3305926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +407.0605926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +425.4105926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +422.3305926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +415.6405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +407.0605926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +402.5105926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +387.2405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +405.5905926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +402.5105926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +395.8205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +387.2405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +382.6905926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +367.4205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +385.7705926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +382.6905926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +376.0005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +367.4205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +362.8705926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +347.6005926238277 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +365.9505926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +362.8705926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +356.1805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +347.6005926238277 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +343.0505926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +327.7805926238277 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +346.1305926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +343.0505926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +336.3605926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +327.7805926238277 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +323.2305926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +307.9605926238277 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +326.3105926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +323.2305926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +316.5405926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +307.9605926238277 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +303.4105926238277 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +288.1405926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +306.4905926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +303.4105926238277 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +296.7205926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +288.1405926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +218.4481897046744 + 30 +0.0 + 11 +283.5905926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +268.3205926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +286.6705926238276 + 20 +226.1580777984067 + 30 +0.0 + 11 +283.5905926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +276.9005926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +268.3205926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +218.4481897046744 + 30 +0.0 + 11 +263.7705926238276 + 21 +218.4481897046744 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +217.8731897046744 + 30 +0.0 + 11 +248.5005926238276 + 21 +217.8731897046744 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +266.8505926238277 + 20 +226.1580777984067 + 30 +0.0 + 11 +263.7705926238276 + 21 +226.1580777984067 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +257.0805926238276 + 20 +226.7330777984067 + 30 +0.0 + 11 +248.5005926238276 + 21 +226.7330777984067 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +425.997804978679 + 20 +172.252033042591 + 10 +425.8006929186844 + 20 +172.4781897046744 + 10 +425.8006929186844 + 20 +174.1281897046744 + 10 +425.9795616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.7353983446329 + 20 +172.242174707368 + 10 +406.9205926238276 + 20 +172.4781897046744 + 10 +406.9205926238276 + 20 +174.1281897046744 + 10 +406.739645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.9153983446329 + 20 +172.242174707368 + 10 +387.1005926238277 + 20 +172.4781897046744 + 10 +387.1005926238277 + 20 +174.1281897046744 + 10 +386.9196454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +406.177804978679 + 20 +172.252033042591 + 10 +405.9806929186844 + 20 +172.4781897046744 + 10 +405.9806929186844 + 20 +174.1281897046744 + 10 +406.1595616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +367.0953983446328 + 20 +172.242174707368 + 10 +367.2805926238276 + 20 +172.4781897046744 + 10 +367.2805926238276 + 20 +174.1281897046744 + 10 +367.0996454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +386.357804978679 + 20 +172.252033042591 + 10 +386.1606929186844 + 20 +172.4781897046744 + 10 +386.1606929186844 + 20 +174.1281897046744 + 10 +386.3395616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +347.2753983446328 + 20 +172.242174707368 + 10 +347.4605926238276 + 20 +172.4781897046744 + 10 +347.4605926238276 + 20 +174.1281897046744 + 10 +347.2796454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +366.537804978679 + 20 +172.252033042591 + 10 +366.3406929186845 + 20 +172.4781897046744 + 10 +366.3406929186845 + 20 +174.1281897046744 + 10 +366.5195616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +327.4553983446328 + 20 +172.242174707368 + 10 +327.6405926238276 + 20 +172.4781897046744 + 10 +327.6405926238276 + 20 +174.1281897046744 + 10 +327.4596454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +346.717804978679 + 20 +172.252033042591 + 10 +346.5206929186845 + 20 +172.4781897046744 + 10 +346.5206929186845 + 20 +174.1281897046744 + 10 +346.6995616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.6353983446328 + 20 +172.242174707368 + 10 +307.8205926238276 + 20 +172.4781897046744 + 10 +307.8205926238276 + 20 +174.1281897046744 + 10 +307.6396454829431 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +326.897804978679 + 20 +172.252033042591 + 10 +326.7006929186845 + 20 +172.4781897046744 + 10 +326.7006929186845 + 20 +174.1281897046744 + 10 +326.8795616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.8153983446329 + 20 +172.242174707368 + 10 +288.0005926238276 + 20 +172.4781897046744 + 10 +288.0005926238276 + 20 +174.1281897046744 + 10 +287.819645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +307.077804978679 + 20 +172.252033042591 + 10 +306.8806929186844 + 20 +172.4781897046744 + 10 +306.8806929186844 + 20 +174.1281897046744 + 10 +307.0595616441334 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.9953983446329 + 20 +172.242174707368 + 10 +268.1805926238276 + 20 +172.4781897046744 + 10 +268.1805926238276 + 20 +174.1281897046744 + 10 +267.999645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +287.257804978679 + 20 +172.252033042591 + 10 +287.0606929186844 + 20 +172.4781897046744 + 10 +287.0606929186844 + 20 +174.1281897046744 + 10 +287.2395616441333 + 20 +174.3690340092703 + 0 +LWPOLYLINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +248.1753983446329 + 20 +172.242174707368 + 10 +248.3605926238276 + 20 +172.4781897046744 + 10 +248.3605926238276 + 20 +174.1281897046744 + 10 +248.179645482943 + 20 +174.3674764201554 + 0 +LWPOLYLINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +267.437804978679 + 20 +172.252033042591 + 10 +267.2406929186844 + 20 +172.4781897046744 + 10 +267.2406929186844 + 20 +174.1281897046744 + 10 +267.4195616441334 + 20 +174.3690340092703 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E7 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E7 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E8 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E8 +330 +E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E219yt.par b/LaiPuLaser/TempMarkData/E219yt.par new file mode 100644 index 0000000..2fff9fb Binary files /dev/null and b/LaiPuLaser/TempMarkData/E219yt.par differ diff --git a/LaiPuLaser/TempMarkData/E219二供3D.dxf b/LaiPuLaser/TempMarkData/E219二供3D.dxf new file mode 100644 index 0000000..d656af6 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E219二供3D.dxf @@ -0,0 +1,13942 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-175.5218293374064 + 20 +-9.319999999999993 + 30 +0.0 + 9 +$EXTMAX + 10 +1.941696607692194 + 20 +98.29999999999988 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458969.407880625 + 9 +$TDUCREATE + 40 +2458969.074547292 + 9 +$TDUPDATE + 40 +2458969.408423067 + 9 +$TDUUPDATE + 40 +2458969.075089734 + 9 +$TDINDWG + 40 +0.0005444444 + 9 +$TDUSRTIMER + 40 +0.0005442477 + 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 +37D + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{3B62DF1A-68B8-4C8F-BC63-E2CA8B6952D2} + 9 +$VERSIONGUID + 2 +{5EF2683A-5D51-4781-B8E5-7DE6450FD30B} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +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 +355 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-86.7900663648571 + 22 +44.48999999999995 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +109.7723999999999 + 41 +4.156942593213809 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +1C6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +-9.319999999999993 + 30 +0.0 + 11 +-16.96182933740641 + 21 +-9.319999999999894 + 31 +0.0 + 0 +LINE + 5 +1C7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +-0.4799999999999756 + 30 +0.0 + 11 +-16.96182933740641 + 21 +-0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +1C8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-1.893779989205115 + 21 +-8.745000000000005 + 31 +0.0 + 0 +LINE + 5 +1C9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-1.893779989205115 + 21 +-1.054999999999964 + 31 +0.0 + 0 +CIRCLE + 5 +1CA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +LINE + 5 +1CB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +0.4800000000000182 + 30 +0.0 + 11 +-16.96182933740641 + 21 +0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +1CC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +9.320000000000022 + 30 +0.0 + 11 +-16.96182933740641 + 21 +9.320000000000022 + 31 +0.0 + 0 +LINE + 5 +1CD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +1.055000000000007 + 30 +0.0 + 11 +-1.893779989205115 + 21 +1.055000000000007 + 31 +0.0 + 0 +LINE + 5 +1CE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +8.745000000000005 + 30 +0.0 + 11 +-1.893779989205115 + 21 +8.745000000000033 + 31 +0.0 + 0 +LINE + 5 +1CF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +10.28 + 30 +0.0 + 11 +-16.96182933740641 + 21 +10.28000000000004 + 31 +0.0 + 0 +LINE + 5 +1D0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +19.12000000000003 + 30 +0.0 + 11 +-16.96182933740641 + 21 +19.12 + 31 +0.0 + 0 +LINE + 5 +1D1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +10.855 + 30 +0.0 + 11 +-1.893779989205115 + 21 +10.85499999999999 + 31 +0.0 + 0 +LINE + 5 +1D2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +18.54500000000002 + 30 +0.0 + 11 +-1.893779989205115 + 21 +18.54500000000002 + 31 +0.0 + 0 +LINE + 5 +1D3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +20.08000000000003 + 30 +0.0 + 11 +-16.96182933740641 + 21 +20.08000000000003 + 31 +0.0 + 0 +LINE + 5 +1D4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +28.92000000000002 + 30 +0.0 + 11 +-16.96182933740641 + 21 +28.92000000000002 + 31 +0.0 + 0 +LINE + 5 +1D5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +20.655 + 30 +0.0 + 11 +-1.893779989205115 + 21 +20.655 + 31 +0.0 + 0 +LINE + 5 +1D6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +28.345 + 30 +0.0 + 11 +-1.893779989205115 + 21 +28.34500000000003 + 31 +0.0 + 0 +LINE + 5 +1D7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +29.88 + 30 +0.0 + 11 +-16.96182933740641 + 21 +29.88000000000002 + 31 +0.0 + 0 +LINE + 5 +1D8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +38.72000000000002 + 30 +0.0 + 11 +-16.96182933740641 + 21 +38.72 + 31 +0.0 + 0 +LINE + 5 +1D9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +30.45500000000001 + 30 +0.0 + 11 +-1.893779989205115 + 21 +30.45499999999998 + 31 +0.0 + 0 +LINE + 5 +1DA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +38.145 + 30 +0.0 + 11 +-1.893779989205115 + 21 +38.145 + 31 +0.0 + 0 +LINE + 5 +1DB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +39.68 + 30 +0.0 + 11 +-16.96182933740641 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +1DC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +48.52 + 30 +0.0 + 11 +-16.96182933740641 + 21 +48.52000000000001 + 31 +0.0 + 0 +LINE + 5 +1DD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +40.255 + 30 +0.0 + 11 +-1.893779989205115 + 21 +40.255 + 31 +0.0 + 0 +LINE + 5 +1DE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +47.94499999999999 + 30 +0.0 + 11 +-1.893779989205115 + 21 +47.94500000000002 + 31 +0.0 + 0 +LINE + 5 +1DF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +49.47999999999998 + 30 +0.0 + 11 +-16.96182933740641 + 21 +49.48000000000002 + 31 +0.0 + 0 +LINE + 5 +1E0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +58.32000000000001 + 30 +0.0 + 11 +-16.96182933740641 + 21 +58.31999999999999 + 31 +0.0 + 0 +LINE + 5 +1E1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +50.055 + 30 +0.0 + 11 +-1.893779989205115 + 21 +50.05499999999999 + 31 +0.0 + 0 +LINE + 5 +1E2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +57.74499999999999 + 30 +0.0 + 11 +-1.893779989205115 + 21 +57.74499999999999 + 31 +0.0 + 0 +LINE + 5 +1E3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +59.27999999999999 + 30 +0.0 + 11 +-16.96182933740641 + 21 +59.28 + 31 +0.0 + 0 +LINE + 5 +1E4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +68.12 + 30 +0.0 + 11 +-16.96182933740641 + 21 +68.12 + 31 +0.0 + 0 +LINE + 5 +1E5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +59.85499999999998 + 30 +0.0 + 11 +-1.893779989205115 + 21 +59.85499999999998 + 31 +0.0 + 0 +LINE + 5 +1E6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +67.54499999999999 + 30 +0.0 + 11 +-1.893779989205115 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +1E7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +69.07999999999998 + 30 +0.0 + 11 +-16.96182933740641 + 21 +69.08000000000001 + 31 +0.0 + 0 +LINE + 5 +1E8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +77.92000000000002 + 30 +0.0 + 11 +-16.96182933740641 + 21 +77.91999999999999 + 31 +0.0 + 0 +LINE + 5 +1E9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +69.655 + 30 +0.0 + 11 +-1.893779989205115 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +1EA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +77.345 + 30 +0.0 + 11 +-1.893779989205115 + 21 +77.345 + 31 +0.0 + 0 +LINE + 5 +1EB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +78.88 + 30 +0.0 + 11 +-16.96182933740641 + 21 +78.88 + 31 +0.0 + 0 +LINE + 5 +1EC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +87.72 + 30 +0.0 + 11 +-16.96182933740641 + 21 +87.72 + 31 +0.0 + 0 +LINE + 5 +1ED +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +79.45499999999998 + 30 +0.0 + 11 +-1.893779989205115 + 21 +79.45499999999998 + 31 +0.0 + 0 +LINE + 5 +1EE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +87.14499999999998 + 30 +0.0 + 11 +-1.893779989205115 + 21 +87.14500000000001 + 31 +0.0 + 0 +LINE + 5 +1EF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +88.67999999999998 + 30 +0.0 + 11 +-16.96182933740641 + 21 +88.68 + 31 +0.0 + 0 +LINE + 5 +1F0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-8.074020052570802 + 20 +97.52000000000001 + 30 +0.0 + 11 +-16.96182933740641 + 21 +97.51999999999998 + 31 +0.0 + 0 +LINE + 5 +1F1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +89.255 + 30 +0.0 + 11 +-1.893779989205115 + 21 +89.25499999999997 + 31 +0.0 + 0 +LINE + 5 +1F2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +1.941696607692194 + 20 +96.945 + 30 +0.0 + 11 +-1.893779989205115 + 21 +96.945 + 31 +0.0 + 0 +LINE + 5 +1F3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +-9.319999999999993 + 30 +0.0 + 11 +-36.78182933740642 + 21 +-9.319999999999894 + 31 +0.0 + 0 +LINE + 5 +1F4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +-0.4799999999999756 + 30 +0.0 + 11 +-36.78182933740642 + 21 +-0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +1F5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-21.71377998920499 + 21 +-8.745000000000005 + 31 +0.0 + 0 +LINE + 5 +1F6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-21.71377998920499 + 21 +-1.054999999999964 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +0.4800000000000182 + 30 +0.0 + 11 +-36.78182933740642 + 21 +0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +9.320000000000022 + 30 +0.0 + 11 +-36.78182933740642 + 21 +9.320000000000022 + 31 +0.0 + 0 +LINE + 5 +1F9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +1.055000000000007 + 30 +0.0 + 11 +-21.71377998920499 + 21 +1.055000000000007 + 31 +0.0 + 0 +LINE + 5 +1FA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +8.745000000000005 + 30 +0.0 + 11 +-21.71377998920499 + 21 +8.745000000000033 + 31 +0.0 + 0 +LINE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +10.28 + 30 +0.0 + 11 +-36.78182933740642 + 21 +10.28000000000004 + 31 +0.0 + 0 +LINE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +19.12000000000003 + 30 +0.0 + 11 +-36.78182933740642 + 21 +19.12 + 31 +0.0 + 0 +LINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +10.855 + 30 +0.0 + 11 +-21.71377998920499 + 21 +10.85499999999999 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +18.54500000000002 + 30 +0.0 + 11 +-21.71377998920499 + 21 +18.54500000000002 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +20.08000000000003 + 30 +0.0 + 11 +-36.78182933740642 + 21 +20.08000000000003 + 31 +0.0 + 0 +LINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +28.92000000000002 + 30 +0.0 + 11 +-36.78182933740642 + 21 +28.92000000000002 + 31 +0.0 + 0 +LINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +20.655 + 30 +0.0 + 11 +-21.71377998920499 + 21 +20.655 + 31 +0.0 + 0 +LINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +28.345 + 30 +0.0 + 11 +-21.71377998920499 + 21 +28.34500000000003 + 31 +0.0 + 0 +LINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +29.88 + 30 +0.0 + 11 +-36.78182933740642 + 21 +29.88000000000002 + 31 +0.0 + 0 +LINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +38.72000000000003 + 30 +0.0 + 11 +-36.78182933740642 + 21 +38.72 + 31 +0.0 + 0 +LINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +30.45500000000001 + 30 +0.0 + 11 +-21.71377998920499 + 21 +30.45499999999998 + 31 +0.0 + 0 +LINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +38.14500000000001 + 30 +0.0 + 11 +-21.71377998920499 + 21 +38.14500000000001 + 31 +0.0 + 0 +LINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +39.68000000000001 + 30 +0.0 + 11 +-36.78182933740642 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +48.52000000000001 + 30 +0.0 + 11 +-36.78182933740641 + 21 +48.52000000000001 + 31 +0.0 + 0 +LINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +40.255 + 30 +0.0 + 11 +-21.71377998920499 + 21 +40.255 + 31 +0.0 + 0 +LINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +47.94499999999999 + 30 +0.0 + 11 +-21.71377998920499 + 21 +47.94500000000003 + 31 +0.0 + 0 +LINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +49.47999999999999 + 30 +0.0 + 11 +-36.78182933740641 + 21 +49.48000000000002 + 31 +0.0 + 0 +LINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +58.32000000000002 + 30 +0.0 + 11 +-36.78182933740641 + 21 +58.31999999999999 + 31 +0.0 + 0 +LINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +50.05500000000001 + 30 +0.0 + 11 +-21.71377998920499 + 21 +50.05499999999999 + 31 +0.0 + 0 +LINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +57.745 + 30 +0.0 + 11 +-21.71377998920499 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +59.28 + 30 +0.0 + 11 +-36.78182933740641 + 21 +59.28 + 31 +0.0 + 0 +LINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +68.12 + 30 +0.0 + 11 +-36.78182933740641 + 21 +68.12000000000002 + 31 +0.0 + 0 +LINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +59.85499999999999 + 30 +0.0 + 11 +-21.71377998920499 + 21 +59.85499999999999 + 31 +0.0 + 0 +LINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +67.54499999999999 + 30 +0.0 + 11 +-21.71377998920499 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +69.07999999999998 + 30 +0.0 + 11 +-36.78182933740641 + 21 +69.08000000000001 + 31 +0.0 + 0 +LINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +77.92000000000002 + 30 +0.0 + 11 +-36.78182933740641 + 21 +77.91999999999999 + 31 +0.0 + 0 +LINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +69.655 + 30 +0.0 + 11 +-21.71377998920499 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +77.345 + 30 +0.0 + 11 +-21.71377998920499 + 21 +77.345 + 31 +0.0 + 0 +LINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +78.88 + 30 +0.0 + 11 +-36.78182933740641 + 21 +78.88 + 31 +0.0 + 0 +LINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +87.72 + 30 +0.0 + 11 +-36.78182933740641 + 21 +87.72 + 31 +0.0 + 0 +LINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +79.45499999999998 + 30 +0.0 + 11 +-21.71377998920499 + 21 +79.45499999999998 + 31 +0.0 + 0 +LINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +87.14499999999998 + 30 +0.0 + 11 +-21.71377998920499 + 21 +87.14500000000001 + 31 +0.0 + 0 +LINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +88.67999999999998 + 30 +0.0 + 11 +-36.78182933740641 + 21 +88.68 + 31 +0.0 + 0 +LINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-27.8940200525708 + 20 +97.52000000000001 + 30 +0.0 + 11 +-36.78182933740641 + 21 +97.51999999999998 + 31 +0.0 + 0 +LINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +89.255 + 30 +0.0 + 11 +-21.71377998920499 + 21 +89.25499999999997 + 31 +0.0 + 0 +LINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-17.8783033923078 + 20 +96.945 + 30 +0.0 + 11 +-21.71377998920499 + 21 +96.945 + 31 +0.0 + 0 +LINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +-9.319999999999993 + 30 +0.0 + 11 +-56.60182933740641 + 21 +-9.319999999999894 + 31 +0.0 + 0 +LINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +-0.4799999999999756 + 30 +0.0 + 11 +-56.60182933740641 + 21 +-0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-41.53377998920502 + 21 +-8.745000000000005 + 31 +0.0 + 0 +LINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-41.53377998920502 + 21 +-1.054999999999964 + 31 +0.0 + 0 +LINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +0.4800000000000182 + 30 +0.0 + 11 +-56.60182933740641 + 21 +0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +9.320000000000022 + 30 +0.0 + 11 +-56.60182933740641 + 21 +9.320000000000022 + 31 +0.0 + 0 +LINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +1.055000000000007 + 30 +0.0 + 11 +-41.53377998920502 + 21 +1.055000000000007 + 31 +0.0 + 0 +LINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +8.745000000000005 + 30 +0.0 + 11 +-41.53377998920502 + 21 +8.745000000000033 + 31 +0.0 + 0 +LINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +10.28 + 30 +0.0 + 11 +-56.60182933740641 + 21 +10.28000000000004 + 31 +0.0 + 0 +LINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +19.12000000000003 + 30 +0.0 + 11 +-56.60182933740641 + 21 +19.12 + 31 +0.0 + 0 +LINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +10.855 + 30 +0.0 + 11 +-41.53377998920502 + 21 +10.85499999999999 + 31 +0.0 + 0 +LINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +18.54500000000002 + 30 +0.0 + 11 +-41.53377998920502 + 21 +18.54500000000002 + 31 +0.0 + 0 +LINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +20.08000000000003 + 30 +0.0 + 11 +-56.60182933740641 + 21 +20.08000000000003 + 31 +0.0 + 0 +LINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +28.92000000000002 + 30 +0.0 + 11 +-56.60182933740641 + 21 +28.92000000000002 + 31 +0.0 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +20.655 + 30 +0.0 + 11 +-41.53377998920502 + 21 +20.655 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +28.345 + 30 +0.0 + 11 +-41.53377998920502 + 21 +28.34500000000003 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +29.88 + 30 +0.0 + 11 +-56.60182933740641 + 21 +29.88000000000002 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +38.72000000000003 + 30 +0.0 + 11 +-56.60182933740641 + 21 +38.72 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +30.45500000000001 + 30 +0.0 + 11 +-41.53377998920502 + 21 +30.45499999999998 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230782 + 20 +38.14500000000001 + 30 +0.0 + 11 +-41.53377998920502 + 21 +38.14500000000001 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.71402005257082 + 20 +39.68000000000001 + 30 +0.0 + 11 +-56.60182933740641 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +48.52000000000001 + 30 +0.0 + 11 +-56.6018293374064 + 21 +48.52000000000001 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +40.255 + 30 +0.0 + 11 +-41.533779989205 + 21 +40.255 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +47.94499999999999 + 30 +0.0 + 11 +-41.533779989205 + 21 +47.94500000000003 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +49.47999999999999 + 30 +0.0 + 11 +-56.6018293374064 + 21 +49.48000000000002 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +58.32000000000002 + 30 +0.0 + 11 +-56.6018293374064 + 21 +58.31999999999999 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +50.05500000000001 + 30 +0.0 + 11 +-41.533779989205 + 21 +50.05499999999999 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +57.745 + 30 +0.0 + 11 +-41.533779989205 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +59.28 + 30 +0.0 + 11 +-56.6018293374064 + 21 +59.28 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +68.12000000000002 + 30 +0.0 + 11 +-56.6018293374064 + 21 +68.12000000000002 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +59.85499999999999 + 30 +0.0 + 11 +-41.533779989205 + 21 +59.85499999999999 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +67.54499999999999 + 30 +0.0 + 11 +-41.533779989205 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +69.07999999999998 + 30 +0.0 + 11 +-56.6018293374064 + 21 +69.08000000000001 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +77.92000000000002 + 30 +0.0 + 11 +-56.6018293374064 + 21 +77.91999999999999 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +69.655 + 30 +0.0 + 11 +-41.533779989205 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +77.345 + 30 +0.0 + 11 +-41.533779989205 + 21 +77.345 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +78.88 + 30 +0.0 + 11 +-56.6018293374064 + 21 +78.88 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +87.72 + 30 +0.0 + 11 +-56.6018293374064 + 21 +87.72 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +79.455 + 30 +0.0 + 11 +-41.533779989205 + 21 +79.455 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +87.14499999999998 + 30 +0.0 + 11 +-41.533779989205 + 21 +87.14500000000001 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +88.67999999999998 + 30 +0.0 + 11 +-56.6018293374064 + 21 +88.68 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-47.7140200525708 + 20 +97.52000000000001 + 30 +0.0 + 11 +-56.6018293374064 + 21 +97.51999999999998 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +89.255 + 30 +0.0 + 11 +-41.533779989205 + 21 +89.25499999999997 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-37.69830339230781 + 20 +96.945 + 30 +0.0 + 11 +-41.533779989205 + 21 +96.945 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +-9.319999999999993 + 30 +0.0 + 11 +-76.42182933740641 + 21 +-9.319999999999894 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +-0.4799999999999756 + 30 +0.0 + 11 +-76.42182933740641 + 21 +-0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-61.35377998920502 + 21 +-8.745000000000005 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-61.35377998920502 + 21 +-1.054999999999964 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +0.4800000000000182 + 30 +0.0 + 11 +-76.42182933740641 + 21 +0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +9.320000000000022 + 30 +0.0 + 11 +-76.42182933740641 + 21 +9.320000000000022 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +1.055000000000007 + 30 +0.0 + 11 +-61.35377998920502 + 21 +1.055000000000007 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +8.745000000000005 + 30 +0.0 + 11 +-61.35377998920502 + 21 +8.745000000000033 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +10.28 + 30 +0.0 + 11 +-76.42182933740641 + 21 +10.28000000000004 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +19.12000000000003 + 30 +0.0 + 11 +-76.42182933740641 + 21 +19.12 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +10.855 + 30 +0.0 + 11 +-61.35377998920502 + 21 +10.85499999999999 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +18.54500000000002 + 30 +0.0 + 11 +-61.35377998920502 + 21 +18.54500000000002 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +20.08000000000003 + 30 +0.0 + 11 +-76.42182933740641 + 21 +20.08000000000003 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +28.92000000000002 + 30 +0.0 + 11 +-76.42182933740641 + 21 +28.92000000000002 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +20.655 + 30 +0.0 + 11 +-61.35377998920502 + 21 +20.655 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +28.345 + 30 +0.0 + 11 +-61.35377998920502 + 21 +28.34500000000003 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +29.88 + 30 +0.0 + 11 +-76.42182933740641 + 21 +29.88000000000002 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +38.72000000000003 + 30 +0.0 + 11 +-76.42182933740641 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +30.45500000000001 + 30 +0.0 + 11 +-61.35377998920502 + 21 +30.45499999999998 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.51830339230781 + 20 +38.14500000000001 + 30 +0.0 + 11 +-61.35377998920502 + 21 +38.14500000000001 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.5340200525708 + 20 +39.68000000000001 + 30 +0.0 + 11 +-76.42182933740641 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +48.52000000000001 + 30 +0.0 + 11 +-76.4218293374064 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +40.255 + 30 +0.0 + 11 +-61.35377998920501 + 21 +40.255 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +47.94499999999999 + 30 +0.0 + 11 +-61.35377998920501 + 21 +47.94500000000003 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +49.47999999999999 + 30 +0.0 + 11 +-76.4218293374064 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +58.32000000000002 + 30 +0.0 + 11 +-76.4218293374064 + 21 +58.32 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +50.05500000000001 + 30 +0.0 + 11 +-61.35377998920501 + 21 +50.05499999999999 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +57.745 + 30 +0.0 + 11 +-61.35377998920501 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +59.28 + 30 +0.0 + 11 +-76.4218293374064 + 21 +59.28000000000001 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +68.12000000000002 + 30 +0.0 + 11 +-76.4218293374064 + 21 +68.12000000000002 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +59.85499999999999 + 30 +0.0 + 11 +-61.35377998920501 + 21 +59.85499999999999 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +67.545 + 30 +0.0 + 11 +-61.35377998920501 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +69.07999999999998 + 30 +0.0 + 11 +-76.4218293374064 + 21 +69.08000000000001 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +77.92000000000002 + 30 +0.0 + 11 +-76.4218293374064 + 21 +77.92 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +69.655 + 30 +0.0 + 11 +-61.35377998920501 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +77.345 + 30 +0.0 + 11 +-61.35377998920501 + 21 +77.345 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +78.88000000000001 + 30 +0.0 + 11 +-76.4218293374064 + 21 +78.88000000000001 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +87.72000000000001 + 30 +0.0 + 11 +-76.4218293374064 + 21 +87.72000000000001 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +79.455 + 30 +0.0 + 11 +-61.35377998920501 + 21 +79.455 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +87.14499999999998 + 30 +0.0 + 11 +-61.35377998920501 + 21 +87.14500000000001 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +88.67999999999998 + 30 +0.0 + 11 +-76.4218293374064 + 21 +88.68 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-67.53402005257078 + 20 +97.52000000000001 + 30 +0.0 + 11 +-76.4218293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +89.255 + 30 +0.0 + 11 +-61.35377998920501 + 21 +89.25499999999997 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-57.5183033923078 + 20 +96.945 + 30 +0.0 + 11 +-61.35377998920501 + 21 +96.945 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +-9.319999999999993 + 30 +0.0 + 11 +-96.24182933740641 + 21 +-9.319999999999894 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +-0.4799999999999756 + 30 +0.0 + 11 +-96.24182933740641 + 21 +-0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-81.17377998920502 + 21 +-8.745000000000005 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-81.17377998920502 + 21 +-1.054999999999964 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +0.4800000000000182 + 30 +0.0 + 11 +-96.24182933740641 + 21 +0.4800000000000182 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +9.320000000000022 + 30 +0.0 + 11 +-96.24182933740641 + 21 +9.320000000000022 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +1.055000000000007 + 30 +0.0 + 11 +-81.17377998920502 + 21 +1.055000000000007 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +8.745000000000005 + 30 +0.0 + 11 +-81.17377998920502 + 21 +8.745000000000033 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +10.28 + 30 +0.0 + 11 +-96.24182933740641 + 21 +10.28000000000004 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +19.12000000000003 + 30 +0.0 + 11 +-96.24182933740641 + 21 +19.12 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +10.855 + 30 +0.0 + 11 +-81.17377998920502 + 21 +10.85499999999999 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +18.54500000000002 + 30 +0.0 + 11 +-81.17377998920502 + 21 +18.54500000000002 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +20.08000000000003 + 30 +0.0 + 11 +-96.24182933740641 + 21 +20.08000000000003 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +28.92000000000002 + 30 +0.0 + 11 +-96.24182933740641 + 21 +28.92000000000002 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +20.655 + 30 +0.0 + 11 +-81.17377998920502 + 21 +20.655 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +28.345 + 30 +0.0 + 11 +-81.17377998920502 + 21 +28.34500000000003 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +29.88 + 30 +0.0 + 11 +-96.24182933740641 + 21 +29.88000000000002 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +38.72000000000003 + 30 +0.0 + 11 +-96.24182933740641 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +30.45500000000001 + 30 +0.0 + 11 +-81.17377998920502 + 21 +30.45499999999998 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230776 + 20 +38.14500000000002 + 30 +0.0 + 11 +-81.17377998920502 + 21 +38.14500000000002 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.3540200525708 + 20 +39.68000000000001 + 30 +0.0 + 11 +-96.24182933740641 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +48.52000000000002 + 30 +0.0 + 11 +-96.24182933740641 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +40.25500000000001 + 30 +0.0 + 11 +-81.173779989205 + 21 +40.25500000000001 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +47.945 + 30 +0.0 + 11 +-81.173779989205 + 21 +47.94500000000004 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +49.48 + 30 +0.0 + 11 +-96.24182933740641 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +58.32000000000003 + 30 +0.0 + 11 +-96.24182933740641 + 21 +58.32 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +50.05500000000001 + 30 +0.0 + 11 +-81.173779989205 + 21 +50.055 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +57.745 + 30 +0.0 + 11 +-81.173779989205 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +59.28000000000001 + 30 +0.0 + 11 +-96.24182933740641 + 21 +59.28000000000001 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +68.12000000000002 + 30 +0.0 + 11 +-96.24182933740641 + 21 +68.12000000000002 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +59.855 + 30 +0.0 + 11 +-81.173779989205 + 21 +59.855 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +67.545 + 30 +0.0 + 11 +-81.173779989205 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +69.07999999999998 + 30 +0.0 + 11 +-96.2418293374064 + 21 +69.08000000000001 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +77.92000000000002 + 30 +0.0 + 11 +-96.2418293374064 + 21 +77.92 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +69.655 + 30 +0.0 + 11 +-81.173779989205 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +77.345 + 30 +0.0 + 11 +-81.173779989205 + 21 +77.345 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +78.88000000000001 + 30 +0.0 + 11 +-96.2418293374064 + 21 +78.88000000000001 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +87.72000000000001 + 30 +0.0 + 11 +-96.2418293374064 + 21 +87.72000000000001 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +79.455 + 30 +0.0 + 11 +-81.173779989205 + 21 +79.455 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +87.14499999999998 + 30 +0.0 + 11 +-81.173779989205 + 21 +87.14500000000002 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +88.67999999999999 + 30 +0.0 + 11 +-96.2418293374064 + 21 +88.68000000000002 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-87.35402005257079 + 20 +97.52000000000002 + 30 +0.0 + 11 +-96.2418293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +89.255 + 30 +0.0 + 11 +-81.173779989205 + 21 +89.25499999999998 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-77.33830339230775 + 20 +96.94500000000001 + 30 +0.0 + 11 +-81.173779989205 + 21 +96.94500000000001 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +-9.319999999999979 + 30 +0.0 + 11 +-116.0618293374064 + 21 +-9.31999999999988 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +-0.4799999999999613 + 30 +0.0 + 11 +-116.0618293374064 + 21 +-0.480000000000004 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230777 + 20 +-8.745000000000005 + 30 +0.0 + 11 +-100.993779989205 + 21 +-8.74499999999999 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230777 + 20 +-1.054999999999964 + 30 +0.0 + 11 +-100.993779989205 + 21 +-1.05499999999995 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +0.4800000000000324 + 30 +0.0 + 11 +-116.0618293374064 + 21 +0.4800000000000324 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +9.320000000000036 + 30 +0.0 + 11 +-116.0618293374064 + 21 +9.320000000000036 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230777 + 20 +1.055000000000007 + 30 +0.0 + 11 +-100.993779989205 + 21 +1.055000000000021 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230777 + 20 +8.745000000000005 + 30 +0.0 + 11 +-100.993779989205 + 21 +8.745000000000047 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +10.28000000000002 + 30 +0.0 + 11 +-116.0618293374064 + 21 +10.28000000000006 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +19.12000000000005 + 30 +0.0 + 11 +-116.0618293374064 + 21 +19.12000000000002 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230777 + 20 +10.855 + 30 +0.0 + 11 +-100.993779989205 + 21 +10.855 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +18.54500000000002 + 30 +0.0 + 11 +-100.993779989205 + 21 +18.54500000000003 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +20.08000000000004 + 30 +0.0 + 11 +-116.0618293374064 + 21 +20.08000000000004 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +28.92000000000003 + 30 +0.0 + 11 +-116.0618293374064 + 21 +28.92000000000003 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +20.655 + 30 +0.0 + 11 +-100.993779989205 + 21 +20.65500000000002 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +28.345 + 30 +0.0 + 11 +-100.993779989205 + 21 +28.34500000000004 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +29.88000000000001 + 30 +0.0 + 11 +-116.0618293374064 + 21 +29.88000000000004 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +38.72000000000003 + 30 +0.0 + 11 +-116.0618293374064 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +30.45500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +30.455 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +38.14500000000002 + 30 +0.0 + 11 +-100.993779989205 + 21 +38.14500000000002 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +39.68000000000001 + 30 +0.0 + 11 +-116.0618293374064 + 21 +39.68000000000001 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +48.52000000000002 + 30 +0.0 + 11 +-116.0618293374064 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +40.25500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +40.25500000000001 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +47.945 + 30 +0.0 + 11 +-100.993779989205 + 21 +47.94500000000004 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +49.48 + 30 +0.0 + 11 +-116.0618293374064 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +58.32000000000003 + 30 +0.0 + 11 +-116.0618293374064 + 21 +58.32 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +50.05500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +50.055 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +57.745 + 30 +0.0 + 11 +-100.993779989205 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +59.28000000000001 + 30 +0.0 + 11 +-116.0618293374064 + 21 +59.28000000000001 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +68.12000000000002 + 30 +0.0 + 11 +-116.0618293374064 + 21 +68.12000000000003 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +59.855 + 30 +0.0 + 11 +-100.993779989205 + 21 +59.855 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230776 + 20 +67.545 + 30 +0.0 + 11 +-100.993779989205 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +69.07999999999998 + 30 +0.0 + 11 +-116.0618293374064 + 21 +69.08000000000003 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +77.92000000000002 + 30 +0.0 + 11 +-116.0618293374064 + 21 +77.92 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +69.65500000000002 + 30 +0.0 + 11 +-100.993779989205 + 21 +69.65499999999997 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +77.34500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +77.34500000000001 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +78.88000000000001 + 30 +0.0 + 11 +-116.0618293374064 + 21 +78.88000000000001 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +87.72000000000001 + 30 +0.0 + 11 +-116.0618293374064 + 21 +87.72000000000001 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +79.455 + 30 +0.0 + 11 +-100.993779989205 + 21 +79.455 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +87.145 + 30 +0.0 + 11 +-100.993779989205 + 21 +87.14500000000002 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +88.67999999999999 + 30 +0.0 + 11 +-116.0618293374064 + 21 +88.68000000000002 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-107.1740200525708 + 20 +97.52000000000002 + 30 +0.0 + 11 +-116.0618293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +89.25500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +89.25499999999998 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-97.15830339230774 + 20 +96.94500000000001 + 30 +0.0 + 11 +-100.993779989205 + 21 +96.94500000000001 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +-9.319999999999979 + 30 +0.0 + 11 +-135.8818293374064 + 21 +-9.31999999999988 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +-0.4799999999999613 + 30 +0.0 + 11 +-135.8818293374064 + 21 +-0.480000000000004 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +-8.74499999999999 + 30 +0.0 + 11 +-120.813779989205 + 21 +-8.74499999999999 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +-1.05499999999995 + 30 +0.0 + 11 +-120.813779989205 + 21 +-1.05499999999995 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +0.4800000000000324 + 30 +0.0 + 11 +-135.8818293374064 + 21 +0.4800000000000324 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +9.320000000000036 + 30 +0.0 + 11 +-135.8818293374064 + 21 +9.320000000000036 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +1.055000000000021 + 30 +0.0 + 11 +-120.813779989205 + 21 +1.055000000000021 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +8.745000000000019 + 30 +0.0 + 11 +-120.813779989205 + 21 +8.745000000000047 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +10.28000000000002 + 30 +0.0 + 11 +-135.8818293374064 + 21 +10.28000000000006 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +19.12000000000005 + 30 +0.0 + 11 +-135.8818293374064 + 21 +19.12000000000002 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +10.85500000000002 + 30 +0.0 + 11 +-120.813779989205 + 21 +10.855 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +18.54500000000003 + 30 +0.0 + 11 +-120.813779989205 + 21 +18.54500000000003 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +20.08000000000004 + 30 +0.0 + 11 +-135.8818293374064 + 21 +20.08000000000004 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +28.92000000000003 + 30 +0.0 + 11 +-135.8818293374064 + 21 +28.92000000000003 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +20.65500000000002 + 30 +0.0 + 11 +-120.813779989205 + 21 +20.65500000000002 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +28.34500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +28.34500000000004 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +29.88000000000001 + 30 +0.0 + 11 +-135.8818293374064 + 21 +29.88000000000004 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +38.72000000000003 + 30 +0.0 + 11 +-135.8818293374064 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +30.45500000000003 + 30 +0.0 + 11 +-120.813779989205 + 21 +30.455 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +38.14500000000002 + 30 +0.0 + 11 +-120.813779989205 + 21 +38.14500000000002 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +39.68000000000001 + 30 +0.0 + 11 +-135.8818293374064 + 21 +39.68000000000002 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +48.52000000000002 + 30 +0.0 + 11 +-135.8818293374064 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +40.25500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +40.25500000000001 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +47.945 + 30 +0.0 + 11 +-120.813779989205 + 21 +47.94500000000004 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +49.48 + 30 +0.0 + 11 +-135.8818293374064 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +58.32000000000003 + 30 +0.0 + 11 +-135.8818293374064 + 21 +58.32000000000001 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +50.05500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +50.055 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +57.745 + 30 +0.0 + 11 +-120.813779989205 + 21 +57.745 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +59.28000000000001 + 30 +0.0 + 11 +-135.8818293374064 + 21 +59.28000000000002 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +68.12000000000003 + 30 +0.0 + 11 +-135.8818293374064 + 21 +68.12000000000003 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +59.855 + 30 +0.0 + 11 +-120.813779989205 + 21 +59.855 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +67.545 + 30 +0.0 + 11 +-120.813779989205 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +69.08 + 30 +0.0 + 11 +-135.8818293374064 + 21 +69.08000000000003 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +77.92000000000002 + 30 +0.0 + 11 +-135.8818293374064 + 21 +77.92 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +69.65500000000002 + 30 +0.0 + 11 +-120.813779989205 + 21 +69.65499999999999 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +77.34500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +77.34500000000001 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +78.88000000000001 + 30 +0.0 + 11 +-135.8818293374064 + 21 +78.88000000000001 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +87.72000000000001 + 30 +0.0 + 11 +-135.8818293374064 + 21 +87.72000000000001 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +79.45500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +79.45500000000001 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +87.145 + 30 +0.0 + 11 +-120.813779989205 + 21 +87.14500000000002 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +88.67999999999999 + 30 +0.0 + 11 +-135.8818293374064 + 21 +88.68000000000002 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-126.9940200525708 + 20 +97.52000000000002 + 30 +0.0 + 11 +-135.8818293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +89.25500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +89.25499999999998 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-116.9783033923078 + 20 +96.94500000000001 + 30 +0.0 + 11 +-120.813779989205 + 21 +96.94500000000001 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +-9.319999999999979 + 30 +0.0 + 11 +-155.7018293374065 + 21 +-9.31999999999988 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +-0.4799999999999613 + 30 +0.0 + 11 +-155.7018293374065 + 21 +-0.480000000000004 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +-8.74499999999999 + 30 +0.0 + 11 +-140.6337799892051 + 21 +-8.74499999999999 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +-1.05499999999995 + 30 +0.0 + 11 +-140.6337799892051 + 21 +-1.05499999999995 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +0.4800000000000324 + 30 +0.0 + 11 +-155.7018293374065 + 21 +0.4800000000000324 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +9.320000000000036 + 30 +0.0 + 11 +-155.7018293374065 + 21 +9.320000000000036 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +1.055000000000021 + 30 +0.0 + 11 +-140.6337799892051 + 21 +1.055000000000021 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +8.745000000000019 + 30 +0.0 + 11 +-140.6337799892051 + 21 +8.745000000000047 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +10.28000000000002 + 30 +0.0 + 11 +-155.7018293374065 + 21 +10.28000000000006 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +19.12000000000005 + 30 +0.0 + 11 +-155.7018293374065 + 21 +19.12000000000002 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +10.85500000000002 + 30 +0.0 + 11 +-140.6337799892051 + 21 +10.855 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +18.54500000000003 + 30 +0.0 + 11 +-140.6337799892051 + 21 +18.54500000000003 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +20.08000000000004 + 30 +0.0 + 11 +-155.7018293374064 + 21 +20.08000000000004 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +28.92000000000003 + 30 +0.0 + 11 +-155.7018293374064 + 21 +28.92000000000003 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +20.65500000000002 + 30 +0.0 + 11 +-140.6337799892051 + 21 +20.65500000000002 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +28.34500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +28.34500000000004 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +29.88000000000001 + 30 +0.0 + 11 +-155.7018293374064 + 21 +29.88000000000004 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +38.72000000000004 + 30 +0.0 + 11 +-155.7018293374064 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +30.45500000000003 + 30 +0.0 + 11 +-140.633779989205 + 21 +30.455 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +38.14500000000002 + 30 +0.0 + 11 +-140.633779989205 + 21 +38.14500000000002 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +39.68000000000002 + 30 +0.0 + 11 +-155.7018293374064 + 21 +39.68000000000002 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +48.52000000000002 + 30 +0.0 + 11 +-155.7018293374064 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +40.25500000000002 + 30 +0.0 + 11 +-140.633779989205 + 21 +40.25500000000002 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +47.94500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +47.94500000000004 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +49.48 + 30 +0.0 + 11 +-155.7018293374064 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +58.32000000000004 + 30 +0.0 + 11 +-155.7018293374064 + 21 +58.32000000000001 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +50.05500000000002 + 30 +0.0 + 11 +-140.633779989205 + 21 +50.05500000000001 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +57.74500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +57.74500000000001 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +59.28000000000002 + 30 +0.0 + 11 +-155.7018293374064 + 21 +59.28000000000002 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +68.12000000000003 + 30 +0.0 + 11 +-155.7018293374064 + 21 +68.12000000000003 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +59.855 + 30 +0.0 + 11 +-140.633779989205 + 21 +59.855 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +67.545 + 30 +0.0 + 11 +-140.633779989205 + 21 +67.54500000000002 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +69.08 + 30 +0.0 + 11 +-155.7018293374064 + 21 +69.08000000000003 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +77.92000000000003 + 30 +0.0 + 11 +-155.7018293374064 + 21 +77.92000000000002 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +69.65500000000002 + 30 +0.0 + 11 +-140.633779989205 + 21 +69.65499999999999 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +77.34500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +77.34500000000001 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +78.88000000000002 + 30 +0.0 + 11 +-155.7018293374064 + 21 +78.88000000000002 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +87.72000000000001 + 30 +0.0 + 11 +-155.7018293374064 + 21 +87.72000000000001 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +79.45500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +79.45500000000001 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +87.145 + 30 +0.0 + 11 +-140.633779989205 + 21 +87.14500000000002 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +88.67999999999999 + 30 +0.0 + 11 +-155.7018293374064 + 21 +88.68000000000002 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-146.8140200525708 + 20 +97.52000000000002 + 30 +0.0 + 11 +-155.7018293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +89.25500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +89.25499999999998 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-136.7983033923078 + 20 +96.94500000000001 + 30 +0.0 + 11 +-140.633779989205 + 21 +96.94500000000001 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525708 + 20 +-9.319999999999979 + 30 +0.0 + 11 +-175.5218293374064 + 21 +-9.31999999999988 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525708 + 20 +-0.4799999999999613 + 30 +0.0 + 11 +-175.5218293374064 + 21 +-0.480000000000004 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923078 + 20 +-8.74499999999999 + 30 +0.0 + 11 +-160.453779989205 + 21 +-8.74499999999999 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923078 + 20 +-1.05499999999995 + 30 +0.0 + 11 +-160.453779989205 + 21 +-1.05499999999995 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525708 + 20 +0.4800000000000324 + 30 +0.0 + 11 +-175.5218293374064 + 21 +0.4800000000000324 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525708 + 20 +9.320000000000036 + 30 +0.0 + 11 +-175.5218293374064 + 21 +9.320000000000036 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923078 + 20 +1.055000000000021 + 30 +0.0 + 11 +-160.453779989205 + 21 +1.055000000000021 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923078 + 20 +8.745000000000019 + 30 +0.0 + 11 +-160.453779989205 + 21 +8.745000000000047 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525708 + 20 +10.28000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +10.28000000000006 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +19.12000000000005 + 30 +0.0 + 11 +-175.5218293374064 + 21 +19.12000000000002 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923078 + 20 +10.85500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +10.855 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +18.54500000000003 + 30 +0.0 + 11 +-160.453779989205 + 21 +18.54500000000003 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +20.08000000000004 + 30 +0.0 + 11 +-175.5218293374064 + 21 +20.08000000000004 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +28.92000000000003 + 30 +0.0 + 11 +-175.5218293374064 + 21 +28.92000000000003 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +20.65500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +20.65500000000002 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +28.34500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +28.34500000000004 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +29.88000000000001 + 30 +0.0 + 11 +-175.5218293374064 + 21 +29.88000000000004 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +38.72000000000004 + 30 +0.0 + 11 +-175.5218293374064 + 21 +38.72000000000001 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +30.45500000000003 + 30 +0.0 + 11 +-160.453779989205 + 21 +30.455 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +38.14500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +38.14500000000002 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +39.68000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +39.68000000000002 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +48.52000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +48.52000000000002 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +40.25500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +40.25500000000002 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +47.94500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +47.94500000000004 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +49.48 + 30 +0.0 + 11 +-175.5218293374064 + 21 +49.48000000000003 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +58.32000000000004 + 30 +0.0 + 11 +-175.5218293374064 + 21 +58.32000000000001 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +50.05500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +50.05500000000001 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +57.74500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +57.74500000000001 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +59.28000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +59.28000000000002 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +68.12000000000003 + 30 +0.0 + 11 +-175.5218293374064 + 21 +68.12000000000003 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +59.855 + 30 +0.0 + 11 +-160.453779989205 + 21 +59.855 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +67.54500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +67.54500000000003 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +69.08 + 30 +0.0 + 11 +-175.5218293374064 + 21 +69.08000000000003 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +77.92000000000003 + 30 +0.0 + 11 +-175.5218293374064 + 21 +77.92000000000002 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +69.65500000000002 + 30 +0.0 + 11 +-160.453779989205 + 21 +69.65499999999999 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +77.34500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +77.34500000000001 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +78.88000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +78.88000000000002 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +87.72000000000003 + 30 +0.0 + 11 +-175.5218293374064 + 21 +87.72000000000003 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +79.45500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +79.45500000000001 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +87.145 + 30 +0.0 + 11 +-160.453779989205 + 21 +87.14500000000002 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +88.67999999999999 + 30 +0.0 + 11 +-175.5218293374064 + 21 +88.68000000000002 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-166.6340200525707 + 20 +97.52000000000002 + 30 +0.0 + 11 +-175.5218293374064 + 21 +97.52 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +89.25500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +89.25499999999998 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbLine + 10 +-156.6183033923077 + 20 +96.94500000000001 + 30 +0.0 + 11 +-160.453779989205 + 21 +96.94500000000001 + 31 +0.0 + 0 +CIRCLE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +-158.56 + 20 +0.0000000000000142 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +图层1 +370 + 30 +100 +AcDbCircle + 10 +-158.56 + 20 +98.00000000000001 + 30 +0.0 + 40 +0.3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +37C + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +356 + 3 +ACAD_TABLESTYLE +350 +37B + 3 +AcDbVariableDictionary +350 +379 + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +37C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +356 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +357 + 3 +A1 +350 +358 + 3 +A2 +350 +359 + 3 +A3 +350 +35A + 3 +A4 +350 +35B + 3 +A5 +350 +35C + 3 +A6 +350 +35D + 3 +A7 +350 +35E + 3 +A8 +350 +35F + 3 +A9 +350 +360 + 3 +B0 +350 +361 + 3 +B1 +350 +362 + 3 +B2 +350 +363 + 3 +B3 +350 +364 + 3 +B4 +350 +365 + 3 +B5 +350 +366 + 3 +B6 +350 +367 + 3 +B7 +350 +368 + 3 +B8 +350 +369 + 3 +B9 +350 +36A + 3 +C0 +350 +36B + 3 +C1 +350 +36C + 3 +C2 +350 +36D + 3 +C3 +350 +36E + 3 +C4 +350 +36F + 3 +C5 +350 +370 + 3 +C6 +350 +371 + 3 +C7 +350 +372 + 3 +C8 +350 +373 + 3 +C9 +350 +374 + 3 +D0 +350 +375 + 3 +D1 +350 +376 + 3 +D2 +350 +377 + 0 +DICTIONARY + 5 +37B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +379 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +37A + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +355 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +357 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +358 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +359 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +35A +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +35B +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +35C +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +35D +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +35E +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +35F +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +360 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +361 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +362 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +363 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +364 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +365 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +366 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +367 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +368 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +369 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36A +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36B +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36C +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36D +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36E +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +36F +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +370 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +371 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +372 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +373 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +374 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +375 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +376 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +377 +102 +{ACAD_REACTORS +330 +356 +102 +} +330 +356 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +37A +102 +{ACAD_REACTORS +330 +379 +102 +} +330 +379 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E279.are b/LaiPuLaser/TempMarkData/E279.are new file mode 100644 index 0000000..eb41596 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E279.are differ diff --git a/LaiPuLaser/TempMarkData/E279.dxf b/LaiPuLaser/TempMarkData/E279.dxf new file mode 100644 index 0000000..84b87bc --- /dev/null +++ b/LaiPuLaser/TempMarkData/E279.dxf @@ -0,0 +1,19252 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +Administrator + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-0.5950852890813252 + 20 +-71.74155927482755 + 30 +0.0 + 9 +$EXTMAX + 10 +173.4049147109185 + 20 +31.79844072517251 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +1.570796326794896 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458843.39573625 + 9 +$TDUCREATE + 40 +2458843.062402917 + 9 +$TDUPDATE + 40 +2458843.396145984 + 9 +$TDUUPDATE + 40 +2458843.062812651 + 9 +$TDINDWG + 40 +0.0004104745 + 9 +$TDUSRTIMER + 40 +0.0004104745 + 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 +479 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{B441FBB3-4BC9-4F47-9ACD-45E9DD6061DE} + 9 +$VERSIONGUID + 2 +{52E0E768-B8C0-4E9A-9FF7-FCC0EFF49A32} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +1E + 9 +$INTERFEREVPVS +346 +1B + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 20 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +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 +28 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +86.40491471091858 + 22 +-19.97155927482752 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +105.8959514783926 + 41 +15.7242747688072 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 +348 +1A + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 250 +421 + 3355443 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +26 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2A +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2B +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +50 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +13 + 0 +LAYER + 5 +49 +102 +{ACAD_XDICTIONARY +360 +4A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + 4 + 6 +Continuous +370 + 9 +390 +F +347 +13 + 0 +LAYER + 5 +4C +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +13 +1001 +AcAecLayerStandard +1000 + +1000 + + 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 +27 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +4F +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +3F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 50 +90.0 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +26 + 0 +DIMSTYLE +105 +4D +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +26 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +4E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.2 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +26 +341 +42 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +37 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +3A + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +36 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +3E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +42 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +38 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +39 +330 +37 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +35 +330 +33 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +3D +330 +3B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +45 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +46 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +47 +330 +42 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +48 +330 +42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +254 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +172.9049147109185 + 20 +-27.97155927482755 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +255 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +-0.0950852890813252 + 20 +0.028440725172473 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +256 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-71.74155927482755 + 30 +0.0 + 11 +162.1230972863999 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +257 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-63.20155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-63.20155927482751 + 31 +0.0 + 0 +LINE + 5 +258 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-71.2665592748275 + 30 +0.0 + 11 +155.8756977856546 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +259 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-63.22655927482754 + 30 +0.0 + 11 +155.8756977856546 + 21 +-63.22655927482754 + 31 +0.0 + 0 +LINE + 5 +25A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-62.24155927482756 + 30 +0.0 + 11 +162.1230972863999 + 21 +-62.24155927482753 + 31 +0.0 + 0 +LINE + 5 +25B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-53.70155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-53.70155927482751 + 31 +0.0 + 0 +LINE + 5 +25C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-61.76655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-61.76655927482751 + 31 +0.0 + 0 +LINE + 5 +25D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-53.72655927482754 + 30 +0.0 + 11 +155.8756977856546 + 21 +-53.72655927482754 + 31 +0.0 + 0 +LINE + 5 +25E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-52.74155927482756 + 30 +0.0 + 11 +162.1230972863999 + 21 +-52.74155927482753 + 31 +0.0 + 0 +LINE + 5 +25F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-44.20155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-44.20155927482751 + 31 +0.0 + 0 +LINE + 5 +260 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-52.26655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-52.26655927482751 + 31 +0.0 + 0 +LINE + 5 +261 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-44.22655927482754 + 30 +0.0 + 11 +155.8756977856546 + 21 +-44.22655927482754 + 31 +0.0 + 0 +LINE + 5 +262 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-43.24155927482755 + 30 +0.0 + 11 +162.1230972863999 + 21 +-43.24155927482753 + 31 +0.0 + 0 +LINE + 5 +263 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-34.70155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-34.70155927482751 + 31 +0.0 + 0 +LINE + 5 +264 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-42.76655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-42.76655927482751 + 31 +0.0 + 0 +LINE + 5 +265 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-34.72655927482755 + 30 +0.0 + 11 +155.8756977856546 + 21 +-34.72655927482755 + 31 +0.0 + 0 +LINE + 5 +266 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-33.74155927482756 + 30 +0.0 + 11 +162.1230972863999 + 21 +-33.74155927482753 + 31 +0.0 + 0 +LINE + 5 +267 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-25.20155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-25.20155927482751 + 31 +0.0 + 0 +LINE + 5 +268 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-33.26655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-33.26655927482751 + 31 +0.0 + 0 +LINE + 5 +269 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-25.22655927482755 + 30 +0.0 + 11 +155.8756977856546 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +26A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-24.24155927482756 + 30 +0.0 + 11 +162.1230972863999 + 21 +-24.24155927482753 + 31 +0.0 + 0 +LINE + 5 +26B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-15.70155927482754 + 30 +0.0 + 11 +162.1230972864 + 21 +-15.70155927482751 + 31 +0.0 + 0 +LINE + 5 +26C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-23.76655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +26D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-15.72655927482754 + 30 +0.0 + 11 +155.8756977856546 + 21 +-15.72655927482754 + 31 +0.0 + 0 +LINE + 5 +26E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-14.74155927482756 + 30 +0.0 + 11 +162.1230972863999 + 21 +-14.74155927482753 + 31 +0.0 + 0 +LINE + 5 +26F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +-6.201559274827536 + 30 +0.0 + 11 +162.1230972864 + 21 +-6.201559274827508 + 31 +0.0 + 0 +LINE + 5 +270 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-14.26655927482751 + 30 +0.0 + 11 +155.8756977856546 + 21 +-14.26655927482751 + 31 +0.0 + 0 +LINE + 5 +271 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-6.226559274827541 + 30 +0.0 + 11 +155.8756977856546 + 21 +-6.226559274827541 + 31 +0.0 + 0 +LINE + 5 +272 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +-5.241559274827558 + 30 +0.0 + 11 +162.1230972863999 + 21 +-5.241559274827527 + 31 +0.0 + 0 +LINE + 5 +273 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +3.298440725172462 + 30 +0.0 + 11 +162.1230972864 + 21 +3.298440725172491 + 31 +0.0 + 0 +LINE + 5 +274 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +-4.766559274827506 + 30 +0.0 + 11 +155.8756977856546 + 21 +-4.766559274827506 + 31 +0.0 + 0 +LINE + 5 +275 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +3.273440725172458 + 30 +0.0 + 11 +155.8756977856546 + 21 +3.273440725172458 + 31 +0.0 + 0 +LINE + 5 +276 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +4.258440725172441 + 30 +0.0 + 11 +162.1230972863999 + 21 +4.258440725172472 + 31 +0.0 + 0 +LINE + 5 +277 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +12.79844072517246 + 30 +0.0 + 11 +162.1230972864 + 21 +12.79844072517249 + 31 +0.0 + 0 +LINE + 5 +278 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +4.733440725172493 + 30 +0.0 + 11 +155.8756977856546 + 21 +4.733440725172493 + 31 +0.0 + 0 +LINE + 5 +279 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +12.77344072517245 + 30 +0.0 + 11 +155.8756977856546 + 21 +12.77344072517245 + 31 +0.0 + 0 +LINE + 5 +27A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +13.75844072517244 + 30 +0.0 + 11 +162.1230972863999 + 21 +13.75844072517247 + 31 +0.0 + 0 +LINE + 5 +27B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +22.29844072517246 + 30 +0.0 + 11 +162.1230972864 + 21 +22.29844072517249 + 31 +0.0 + 0 +LINE + 5 +27C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +14.23344072517249 + 30 +0.0 + 11 +155.8756977856546 + 21 +14.23344072517249 + 31 +0.0 + 0 +LINE + 5 +27D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +22.27344072517245 + 30 +0.0 + 11 +155.8756977856546 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +27E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738931 + 20 +23.25844072517244 + 30 +0.0 + 11 +162.1230972863999 + 21 +23.25844072517247 + 31 +0.0 + 0 +LINE + 5 +27F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +170.3323727738932 + 20 +31.79844072517246 + 30 +0.0 + 11 +162.1230972864 + 21 +31.79844072517249 + 31 +0.0 + 0 +LINE + 5 +280 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +23.73344072517249 + 30 +0.0 + 11 +155.8756977856546 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +281 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +159.5932993871099 + 20 +31.77344072517245 + 30 +0.0 + 11 +155.8756977856546 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +282 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-71.74155927482755 + 30 +0.0 + 11 +146.7880972863999 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +283 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-63.20155927482754 + 30 +0.0 + 11 +146.7880972863999 + 21 +-63.20155927482751 + 31 +0.0 + 0 +LINE + 5 +284 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-71.2665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +285 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-63.22655927482753 + 30 +0.0 + 11 +140.5406977856545 + 21 +-63.22655927482753 + 31 +0.0 + 0 +LINE + 5 +286 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-62.24155927482756 + 30 +0.0 + 11 +146.7880972863999 + 21 +-62.24155927482753 + 31 +0.0 + 0 +LINE + 5 +287 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-53.70155927482754 + 30 +0.0 + 11 +146.7880972863999 + 21 +-53.70155927482751 + 31 +0.0 + 0 +LINE + 5 +288 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-61.7665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-61.7665592748275 + 31 +0.0 + 0 +LINE + 5 +289 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-53.72655927482753 + 30 +0.0 + 11 +140.5406977856545 + 21 +-53.72655927482753 + 31 +0.0 + 0 +LINE + 5 +28A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-52.74155927482756 + 30 +0.0 + 11 +146.7880972863999 + 21 +-52.74155927482753 + 31 +0.0 + 0 +LINE + 5 +28B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-44.20155927482754 + 30 +0.0 + 11 +146.7880972863999 + 21 +-44.20155927482751 + 31 +0.0 + 0 +LINE + 5 +28C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-52.2665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-52.2665592748275 + 31 +0.0 + 0 +LINE + 5 +28D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-44.22655927482753 + 30 +0.0 + 11 +140.5406977856545 + 21 +-44.22655927482753 + 31 +0.0 + 0 +LINE + 5 +28E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-43.24155927482755 + 30 +0.0 + 11 +146.7880972863999 + 21 +-43.24155927482753 + 31 +0.0 + 0 +LINE + 5 +28F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-34.70155927482754 + 30 +0.0 + 11 +146.7880972863999 + 21 +-34.70155927482751 + 31 +0.0 + 0 +LINE + 5 +290 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-42.7665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-42.7665592748275 + 31 +0.0 + 0 +LINE + 5 +291 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-34.72655927482754 + 30 +0.0 + 11 +140.5406977856545 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +292 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-33.74155927482756 + 30 +0.0 + 11 +146.7880972863999 + 21 +-33.74155927482753 + 31 +0.0 + 0 +LINE + 5 +293 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-25.20155927482753 + 30 +0.0 + 11 +146.7880972863999 + 21 +-25.20155927482751 + 31 +0.0 + 0 +LINE + 5 +294 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-33.2665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-33.2665592748275 + 31 +0.0 + 0 +LINE + 5 +295 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-25.22655927482754 + 30 +0.0 + 11 +140.5406977856545 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +296 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-24.24155927482756 + 30 +0.0 + 11 +146.7880972863999 + 21 +-24.24155927482752 + 31 +0.0 + 0 +LINE + 5 +297 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-15.70155927482754 + 30 +0.0 + 11 +146.7880972863999 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +298 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-23.7665592748275 + 30 +0.0 + 11 +140.5406977856545 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +299 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-15.72655927482753 + 30 +0.0 + 11 +140.5406977856545 + 21 +-15.72655927482753 + 31 +0.0 + 0 +LINE + 5 +29A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-14.74155927482756 + 30 +0.0 + 11 +146.7880972863999 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +29B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-6.201559274827535 + 30 +0.0 + 11 +146.7880972863999 + 21 +-6.201559274827506 + 31 +0.0 + 0 +LINE + 5 +29C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-14.26655927482751 + 30 +0.0 + 11 +140.5406977856545 + 21 +-14.26655927482751 + 31 +0.0 + 0 +LINE + 5 +29D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-6.226559274827539 + 30 +0.0 + 11 +140.5406977856545 + 21 +-6.226559274827538 + 31 +0.0 + 0 +LINE + 5 +29E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +-5.241559274827556 + 30 +0.0 + 11 +146.7880972863999 + 21 +-5.241559274827526 + 31 +0.0 + 0 +LINE + 5 +29F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +3.298440725172464 + 30 +0.0 + 11 +146.7880972863999 + 21 +3.298440725172493 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +-4.766559274827504 + 30 +0.0 + 11 +140.5406977856545 + 21 +-4.766559274827503 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +3.273440725172459 + 30 +0.0 + 11 +140.5406977856545 + 21 +3.27344072517246 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +4.258440725172443 + 30 +0.0 + 11 +146.7880972863999 + 21 +4.258440725172473 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +12.79844072517246 + 30 +0.0 + 11 +146.7880972863999 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +4.733440725172495 + 30 +0.0 + 11 +140.5406977856545 + 21 +4.733440725172496 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +12.77344072517245 + 30 +0.0 + 11 +140.5406977856545 + 21 +12.77344072517245 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +13.75844072517244 + 30 +0.0 + 11 +146.7880972863999 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +22.29844072517247 + 30 +0.0 + 11 +146.7880972863999 + 21 +22.29844072517249 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +14.23344072517249 + 30 +0.0 + 11 +140.5406977856545 + 21 +14.23344072517249 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +22.27344072517246 + 30 +0.0 + 11 +140.5406977856545 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +23.25844072517244 + 30 +0.0 + 11 +146.7880972863999 + 21 +23.25844072517248 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +154.9973727738931 + 20 +31.79844072517247 + 30 +0.0 + 11 +146.7880972863999 + 21 +31.79844072517249 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +23.7334407251725 + 30 +0.0 + 11 +140.5406977856545 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +144.2582993871098 + 20 +31.77344072517246 + 30 +0.0 + 11 +140.5406977856545 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-71.74155927482755 + 30 +0.0 + 11 +131.4530972863998 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-63.20155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-71.2665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-63.22655927482753 + 30 +0.0 + 11 +125.2056977856545 + 21 +-63.22655927482753 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-62.24155927482755 + 30 +0.0 + 11 +131.4530972863998 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-53.70155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-61.7665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-61.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-53.72655927482753 + 30 +0.0 + 11 +125.2056977856545 + 21 +-53.72655927482753 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-52.74155927482755 + 30 +0.0 + 11 +131.4530972863998 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-44.20155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-52.2665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-52.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-44.22655927482753 + 30 +0.0 + 11 +125.2056977856545 + 21 +-44.22655927482753 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-43.24155927482754 + 30 +0.0 + 11 +131.4530972863998 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-34.70155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-42.7665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-42.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-34.72655927482754 + 30 +0.0 + 11 +125.2056977856545 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-33.74155927482755 + 30 +0.0 + 11 +131.4530972863998 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-25.20155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-25.20155927482751 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-33.2665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-33.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-25.22655927482754 + 30 +0.0 + 11 +125.2056977856545 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-24.24155927482756 + 30 +0.0 + 11 +131.4530972863998 + 21 +-24.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-15.70155927482753 + 30 +0.0 + 11 +131.4530972863998 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-23.7665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-15.72655927482753 + 30 +0.0 + 11 +125.2056977856545 + 21 +-15.72655927482753 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-14.74155927482756 + 30 +0.0 + 11 +131.4530972863998 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-6.201559274827533 + 30 +0.0 + 11 +131.4530972863998 + 21 +-6.201559274827504 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-14.2665592748275 + 30 +0.0 + 11 +125.2056977856545 + 21 +-14.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-6.226559274827538 + 30 +0.0 + 11 +125.2056977856545 + 21 +-6.226559274827537 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +-5.241559274827554 + 30 +0.0 + 11 +131.4530972863998 + 21 +-5.241559274827524 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +3.298440725172465 + 30 +0.0 + 11 +131.4530972863998 + 21 +3.298440725172495 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +-4.766559274827502 + 30 +0.0 + 11 +125.2056977856545 + 21 +-4.766559274827501 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +3.273440725172461 + 30 +0.0 + 11 +125.2056977856545 + 21 +3.273440725172462 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +4.258440725172445 + 30 +0.0 + 11 +131.4530972863998 + 21 +4.258440725172475 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +12.79844072517247 + 30 +0.0 + 11 +131.4530972863998 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +4.733440725172497 + 30 +0.0 + 11 +125.2056977856545 + 21 +4.733440725172498 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +12.77344072517246 + 30 +0.0 + 11 +125.2056977856545 + 21 +12.77344072517246 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +13.75844072517244 + 30 +0.0 + 11 +131.4530972863998 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +22.29844072517247 + 30 +0.0 + 11 +131.4530972863998 + 21 +22.29844072517249 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +14.2334407251725 + 30 +0.0 + 11 +125.2056977856545 + 21 +14.2334407251725 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +22.27344072517246 + 30 +0.0 + 11 +125.2056977856545 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +23.25844072517244 + 30 +0.0 + 11 +131.4530972863998 + 21 +23.25844072517248 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +139.662372773893 + 20 +31.79844072517247 + 30 +0.0 + 11 +131.4530972863998 + 21 +31.79844072517249 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +23.7334407251725 + 30 +0.0 + 11 +125.2056977856545 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +128.9232993871098 + 20 +31.77344072517246 + 30 +0.0 + 11 +125.2056977856545 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-71.74155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-63.20155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-71.2665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-63.22655927482753 + 30 +0.0 + 11 +109.8706977856545 + 21 +-63.22655927482753 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-62.24155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-53.70155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-61.7665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-61.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-53.72655927482753 + 30 +0.0 + 11 +109.8706977856545 + 21 +-53.72655927482753 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-52.74155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-44.20155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-52.2665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-52.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-44.22655927482753 + 30 +0.0 + 11 +109.8706977856545 + 21 +-44.22655927482753 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-43.24155927482754 + 30 +0.0 + 11 +116.1180972863998 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-34.70155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-42.7665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-42.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-34.72655927482754 + 30 +0.0 + 11 +109.8706977856545 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-33.74155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-25.20155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-25.2015592748275 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-33.2665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-33.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-25.22655927482754 + 30 +0.0 + 11 +109.8706977856545 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-24.24155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-24.24155927482752 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-15.70155927482753 + 30 +0.0 + 11 +116.1180972863998 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-23.7665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-15.72655927482753 + 30 +0.0 + 11 +109.8706977856545 + 21 +-15.72655927482753 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-14.74155927482755 + 30 +0.0 + 11 +116.1180972863998 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-6.201559274827531 + 30 +0.0 + 11 +116.1180972863998 + 21 +-6.201559274827503 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-14.2665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-14.2665592748275 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-6.226559274827536 + 30 +0.0 + 11 +109.8706977856545 + 21 +-6.226559274827535 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +-5.241559274827552 + 30 +0.0 + 11 +116.1180972863998 + 21 +-5.241559274827522 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +3.298440725172468 + 30 +0.0 + 11 +116.1180972863998 + 21 +3.298440725172497 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +-4.7665592748275 + 30 +0.0 + 11 +109.8706977856545 + 21 +-4.766559274827499 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +3.273440725172463 + 30 +0.0 + 11 +109.8706977856545 + 21 +3.273440725172464 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +4.258440725172447 + 30 +0.0 + 11 +116.1180972863998 + 21 +4.258440725172477 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +12.79844072517247 + 30 +0.0 + 11 +116.1180972863998 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +4.733440725172499 + 30 +0.0 + 11 +109.8706977856545 + 21 +4.7334407251725 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +12.77344072517246 + 30 +0.0 + 11 +109.8706977856545 + 21 +12.77344072517246 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +13.75844072517245 + 30 +0.0 + 11 +116.1180972863998 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +22.29844072517247 + 30 +0.0 + 11 +116.1180972863998 + 21 +22.2984407251725 + 31 +0.0 + 0 +LINE + 5 +300 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +14.2334407251725 + 30 +0.0 + 11 +109.8706977856545 + 21 +14.2334407251725 + 31 +0.0 + 0 +LINE + 5 +301 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +22.27344072517246 + 30 +0.0 + 11 +109.8706977856545 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +302 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +23.25844072517245 + 30 +0.0 + 11 +116.1180972863998 + 21 +23.25844072517248 + 31 +0.0 + 0 +LINE + 5 +303 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +124.327372773893 + 20 +31.79844072517247 + 30 +0.0 + 11 +116.1180972863998 + 21 +31.7984407251725 + 31 +0.0 + 0 +LINE + 5 +304 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +23.7334407251725 + 30 +0.0 + 11 +109.8706977856545 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +305 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +113.5882993871097 + 20 +31.77344072517246 + 30 +0.0 + 11 +109.8706977856545 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +306 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-71.74155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +307 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-63.20155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +308 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710968 + 20 +-71.2665592748275 + 30 +0.0 + 11 +94.5356977856544 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +309 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710968 + 20 +-63.22655927482753 + 30 +0.0 + 11 +94.5356977856544 + 21 +-63.22655927482753 + 31 +0.0 + 0 +LINE + 5 +30A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-62.24155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +30B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-53.70155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +30C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710968 + 20 +-61.7665592748275 + 30 +0.0 + 11 +94.5356977856544 + 21 +-61.7665592748275 + 31 +0.0 + 0 +LINE + 5 +30D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-53.72655927482753 + 30 +0.0 + 11 +94.53569778565442 + 21 +-53.72655927482753 + 31 +0.0 + 0 +LINE + 5 +30E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-52.74155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +30F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-44.20155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +310 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-52.2665592748275 + 30 +0.0 + 11 +94.53569778565442 + 21 +-52.2665592748275 + 31 +0.0 + 0 +LINE + 5 +311 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-44.22655927482753 + 30 +0.0 + 11 +94.53569778565442 + 21 +-44.22655927482753 + 31 +0.0 + 0 +LINE + 5 +312 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-43.24155927482754 + 30 +0.0 + 11 +100.7830972863998 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +313 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-34.70155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +314 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-42.7665592748275 + 30 +0.0 + 11 +94.53569778565442 + 21 +-42.7665592748275 + 31 +0.0 + 0 +LINE + 5 +315 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-34.72655927482754 + 30 +0.0 + 11 +94.53569778565442 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +316 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-33.74155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +317 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-25.20155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-25.2015592748275 + 31 +0.0 + 0 +LINE + 5 +318 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-33.2665592748275 + 30 +0.0 + 11 +94.53569778565442 + 21 +-33.2665592748275 + 31 +0.0 + 0 +LINE + 5 +319 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-25.22655927482754 + 30 +0.0 + 11 +94.53569778565442 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +31A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-24.24155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-24.24155927482752 + 31 +0.0 + 0 +LINE + 5 +31B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-15.70155927482753 + 30 +0.0 + 11 +100.7830972863998 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +31C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-23.7665592748275 + 30 +0.0 + 11 +94.53569778565442 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +31D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-15.72655927482753 + 30 +0.0 + 11 +94.53569778565442 + 21 +-15.72655927482753 + 31 +0.0 + 0 +LINE + 5 +31E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-14.74155927482755 + 30 +0.0 + 11 +100.7830972863998 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +31F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-6.201559274827529 + 30 +0.0 + 11 +100.7830972863998 + 21 +-6.201559274827501 + 31 +0.0 + 0 +LINE + 5 +320 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-14.2665592748275 + 30 +0.0 + 11 +94.53569778565442 + 21 +-14.2665592748275 + 31 +0.0 + 0 +LINE + 5 +321 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-6.226559274827534 + 30 +0.0 + 11 +94.53569778565442 + 21 +-6.226559274827533 + 31 +0.0 + 0 +LINE + 5 +322 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +-5.241559274827551 + 30 +0.0 + 11 +100.7830972863998 + 21 +-5.24155927482752 + 31 +0.0 + 0 +LINE + 5 +323 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +3.298440725172469 + 30 +0.0 + 11 +100.7830972863998 + 21 +3.298440725172499 + 31 +0.0 + 0 +LINE + 5 +324 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +-4.766559274827499 + 30 +0.0 + 11 +94.53569778565442 + 21 +-4.766559274827498 + 31 +0.0 + 0 +LINE + 5 +325 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +3.273440725172465 + 30 +0.0 + 11 +94.53569778565442 + 21 +3.273440725172466 + 31 +0.0 + 0 +LINE + 5 +326 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +4.258440725172449 + 30 +0.0 + 11 +100.7830972863998 + 21 +4.258440725172479 + 31 +0.0 + 0 +LINE + 5 +327 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +12.79844072517247 + 30 +0.0 + 11 +100.7830972863998 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +328 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +4.733440725172501 + 30 +0.0 + 11 +94.53569778565442 + 21 +4.733440725172501 + 31 +0.0 + 0 +LINE + 5 +329 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +12.77344072517246 + 30 +0.0 + 11 +94.53569778565442 + 21 +12.77344072517246 + 31 +0.0 + 0 +LINE + 5 +32A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +13.75844072517245 + 30 +0.0 + 11 +100.7830972863998 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +32B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +22.29844072517247 + 30 +0.0 + 11 +100.7830972863998 + 21 +22.2984407251725 + 31 +0.0 + 0 +LINE + 5 +32C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +14.2334407251725 + 30 +0.0 + 11 +94.53569778565442 + 21 +14.2334407251725 + 31 +0.0 + 0 +LINE + 5 +32D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +22.27344072517246 + 30 +0.0 + 11 +94.53569778565442 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +32E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +23.25844072517245 + 30 +0.0 + 11 +100.7830972863998 + 21 +23.25844072517248 + 31 +0.0 + 0 +LINE + 5 +32F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +108.992372773893 + 20 +31.79844072517247 + 30 +0.0 + 11 +100.7830972863998 + 21 +31.7984407251725 + 31 +0.0 + 0 +LINE + 5 +330 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +23.7334407251725 + 30 +0.0 + 11 +94.53569778565442 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +331 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +98.25329938710969 + 20 +31.77344072517246 + 30 +0.0 + 11 +94.53569778565442 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +332 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389292 + 20 +-71.74155927482755 + 30 +0.0 + 11 +85.44809728639973 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +333 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389297 + 20 +-63.20155927482753 + 30 +0.0 + 11 +85.44809728639979 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +334 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710964 + 20 +-71.2665592748275 + 30 +0.0 + 11 +79.20069778565437 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +335 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710964 + 20 +-63.22655927482752 + 30 +0.0 + 11 +79.20069778565437 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +336 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389292 + 20 +-62.24155927482755 + 30 +0.0 + 11 +85.44809728639973 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +337 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-53.70155927482753 + 30 +0.0 + 11 +85.4480972863998 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +338 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710964 + 20 +-61.76655927482749 + 30 +0.0 + 11 +79.20069778565437 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +339 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-53.72655927482752 + 30 +0.0 + 11 +79.20069778565438 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +33A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-52.74155927482755 + 30 +0.0 + 11 +85.44809728639974 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +33B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-44.20155927482753 + 30 +0.0 + 11 +85.4480972863998 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +33C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-52.26655927482749 + 30 +0.0 + 11 +79.20069778565438 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +33D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-44.22655927482752 + 30 +0.0 + 11 +79.20069778565438 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +33E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-43.24155927482754 + 30 +0.0 + 11 +85.44809728639974 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +33F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-34.70155927482753 + 30 +0.0 + 11 +85.4480972863998 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +340 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-42.76655927482749 + 30 +0.0 + 11 +79.20069778565438 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +341 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-34.72655927482754 + 30 +0.0 + 11 +79.20069778565438 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +342 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-33.74155927482755 + 30 +0.0 + 11 +85.44809728639974 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +343 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-25.20155927482753 + 30 +0.0 + 11 +85.4480972863998 + 21 +-25.2015592748275 + 31 +0.0 + 0 +LINE + 5 +344 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-33.26655927482749 + 30 +0.0 + 11 +79.20069778565438 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +345 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-25.22655927482754 + 30 +0.0 + 11 +79.20069778565438 + 21 +-25.22655927482754 + 31 +0.0 + 0 +LINE + 5 +346 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-24.24155927482755 + 30 +0.0 + 11 +85.44809728639974 + 21 +-24.24155927482752 + 31 +0.0 + 0 +LINE + 5 +347 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-15.70155927482753 + 30 +0.0 + 11 +85.4480972863998 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +348 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-23.7665592748275 + 30 +0.0 + 11 +79.20069778565438 + 21 +-23.7665592748275 + 31 +0.0 + 0 +LINE + 5 +349 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-15.72655927482753 + 30 +0.0 + 11 +79.20069778565438 + 21 +-15.72655927482753 + 31 +0.0 + 0 +LINE + 5 +34A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-14.74155927482755 + 30 +0.0 + 11 +85.44809728639974 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +34B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +-6.201559274827527 + 30 +0.0 + 11 +85.4480972863998 + 21 +-6.201559274827499 + 31 +0.0 + 0 +LINE + 5 +34C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-14.2665592748275 + 30 +0.0 + 11 +79.20069778565438 + 21 +-14.2665592748275 + 31 +0.0 + 0 +LINE + 5 +34D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-6.226559274827531 + 30 +0.0 + 11 +79.20069778565438 + 21 +-6.226559274827531 + 31 +0.0 + 0 +LINE + 5 +34E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +-5.241559274827549 + 30 +0.0 + 11 +85.44809728639974 + 21 +-5.241559274827519 + 31 +0.0 + 0 +LINE + 5 +34F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +3.298440725172471 + 30 +0.0 + 11 +85.4480972863998 + 21 +3.298440725172501 + 31 +0.0 + 0 +LINE + 5 +350 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +-4.766559274827496 + 30 +0.0 + 11 +79.20069778565438 + 21 +-4.766559274827496 + 31 +0.0 + 0 +LINE + 5 +351 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +3.273440725172467 + 30 +0.0 + 11 +79.20069778565438 + 21 +3.273440725172467 + 31 +0.0 + 0 +LINE + 5 +352 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +4.25844072517245 + 30 +0.0 + 11 +85.44809728639974 + 21 +4.258440725172481 + 31 +0.0 + 0 +LINE + 5 +353 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +12.79844072517247 + 30 +0.0 + 11 +85.4480972863998 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +354 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +4.733440725172503 + 30 +0.0 + 11 +79.20069778565438 + 21 +4.733440725172503 + 31 +0.0 + 0 +LINE + 5 +355 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +12.77344072517246 + 30 +0.0 + 11 +79.20069778565438 + 21 +12.77344072517246 + 31 +0.0 + 0 +LINE + 5 +356 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +13.75844072517245 + 30 +0.0 + 11 +85.44809728639974 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +357 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +22.29844072517247 + 30 +0.0 + 11 +85.4480972863998 + 21 +22.2984407251725 + 31 +0.0 + 0 +LINE + 5 +358 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +14.2334407251725 + 30 +0.0 + 11 +79.20069778565438 + 21 +14.2334407251725 + 31 +0.0 + 0 +LINE + 5 +359 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +22.27344072517246 + 30 +0.0 + 11 +79.20069778565438 + 21 +22.27344072517246 + 31 +0.0 + 0 +LINE + 5 +35A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389293 + 20 +23.25844072517245 + 30 +0.0 + 11 +85.44809728639974 + 21 +23.25844072517248 + 31 +0.0 + 0 +LINE + 5 +35B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +93.65737277389299 + 20 +31.79844072517247 + 30 +0.0 + 11 +85.4480972863998 + 21 +31.7984407251725 + 31 +0.0 + 0 +LINE + 5 +35C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +23.7334407251725 + 30 +0.0 + 11 +79.20069778565438 + 21 +23.7334407251725 + 31 +0.0 + 0 +LINE + 5 +35D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +82.91829938710966 + 20 +31.77344072517246 + 30 +0.0 + 11 +79.20069778565438 + 21 +31.77344072517246 + 31 +0.0 + 0 +LINE + 5 +35E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389288 + 20 +-71.74155927482755 + 30 +0.0 + 11 +70.1130972863997 + 21 +-71.74155927482752 + 31 +0.0 + 0 +LINE + 5 +35F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389294 + 20 +-63.20155927482752 + 30 +0.0 + 11 +70.11309728639975 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +360 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.5832993871096 + 20 +-71.2665592748275 + 30 +0.0 + 11 +63.86569778565434 + 21 +-71.2665592748275 + 31 +0.0 + 0 +LINE + 5 +361 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.5832993871096 + 20 +-63.22655927482752 + 30 +0.0 + 11 +63.86569778565434 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +362 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389288 + 20 +-62.24155927482754 + 30 +0.0 + 11 +70.1130972863997 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +363 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-53.70155927482752 + 30 +0.0 + 11 +70.11309728639976 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +364 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.5832993871096 + 20 +-61.76655927482749 + 30 +0.0 + 11 +63.86569778565434 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +365 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-53.72655927482752 + 30 +0.0 + 11 +63.86569778565434 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +366 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-52.74155927482754 + 30 +0.0 + 11 +70.11309728639971 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +367 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-44.20155927482752 + 30 +0.0 + 11 +70.11309728639976 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +368 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-52.26655927482749 + 30 +0.0 + 11 +63.86569778565434 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +369 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-44.22655927482752 + 30 +0.0 + 11 +63.86569778565434 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +36A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-43.24155927482754 + 30 +0.0 + 11 +70.11309728639971 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +36B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-34.70155927482752 + 30 +0.0 + 11 +70.11309728639976 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +36C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-42.76655927482749 + 30 +0.0 + 11 +63.86569778565434 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +36D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-34.72655927482754 + 30 +0.0 + 11 +63.86569778565434 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +36E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-33.74155927482754 + 30 +0.0 + 11 +70.11309728639971 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +36F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-25.20155927482753 + 30 +0.0 + 11 +70.11309728639976 + 21 +-25.2015592748275 + 31 +0.0 + 0 +LINE + 5 +370 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-33.26655927482749 + 30 +0.0 + 11 +63.86569778565434 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +371 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-25.22655927482753 + 30 +0.0 + 11 +63.86569778565435 + 21 +-25.22655927482753 + 31 +0.0 + 0 +LINE + 5 +372 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-24.24155927482755 + 30 +0.0 + 11 +70.11309728639971 + 21 +-24.24155927482751 + 31 +0.0 + 0 +LINE + 5 +373 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-15.70155927482753 + 30 +0.0 + 11 +70.11309728639976 + 21 +-15.7015592748275 + 31 +0.0 + 0 +LINE + 5 +374 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-23.76655927482749 + 30 +0.0 + 11 +63.86569778565435 + 21 +-23.76655927482749 + 31 +0.0 + 0 +LINE + 5 +375 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-15.72655927482753 + 30 +0.0 + 11 +63.86569778565435 + 21 +-15.72655927482752 + 31 +0.0 + 0 +LINE + 5 +376 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-14.74155927482755 + 30 +0.0 + 11 +70.11309728639971 + 21 +-14.74155927482752 + 31 +0.0 + 0 +LINE + 5 +377 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +-6.201559274827526 + 30 +0.0 + 11 +70.11309728639976 + 21 +-6.201559274827497 + 31 +0.0 + 0 +LINE + 5 +378 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-14.2665592748275 + 30 +0.0 + 11 +63.86569778565435 + 21 +-14.26655927482749 + 31 +0.0 + 0 +LINE + 5 +379 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-6.22655927482753 + 30 +0.0 + 11 +63.86569778565435 + 21 +-6.22655927482753 + 31 +0.0 + 0 +LINE + 5 +37A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +-5.241559274827547 + 30 +0.0 + 11 +70.11309728639971 + 21 +-5.241559274827517 + 31 +0.0 + 0 +LINE + 5 +37B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +3.298440725172473 + 30 +0.0 + 11 +70.11309728639976 + 21 +3.298440725172503 + 31 +0.0 + 0 +LINE + 5 +37C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +-4.766559274827494 + 30 +0.0 + 11 +63.86569778565435 + 21 +-4.766559274827494 + 31 +0.0 + 0 +LINE + 5 +37D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +3.273440725172469 + 30 +0.0 + 11 +63.86569778565435 + 21 +3.273440725172469 + 31 +0.0 + 0 +LINE + 5 +37E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +4.258440725172452 + 30 +0.0 + 11 +70.11309728639971 + 21 +4.258440725172482 + 31 +0.0 + 0 +LINE + 5 +37F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +12.79844072517247 + 30 +0.0 + 11 +70.11309728639976 + 21 +12.7984407251725 + 31 +0.0 + 0 +LINE + 5 +380 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +4.733440725172505 + 30 +0.0 + 11 +63.86569778565435 + 21 +4.733440725172505 + 31 +0.0 + 0 +LINE + 5 +381 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +12.77344072517246 + 30 +0.0 + 11 +63.86569778565435 + 21 +12.77344072517247 + 31 +0.0 + 0 +LINE + 5 +382 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +13.75844072517245 + 30 +0.0 + 11 +70.11309728639971 + 21 +13.75844072517248 + 31 +0.0 + 0 +LINE + 5 +383 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +22.29844072517247 + 30 +0.0 + 11 +70.11309728639976 + 21 +22.2984407251725 + 31 +0.0 + 0 +LINE + 5 +384 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +14.2334407251725 + 30 +0.0 + 11 +63.86569778565435 + 21 +14.23344072517251 + 31 +0.0 + 0 +LINE + 5 +385 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +22.27344072517247 + 30 +0.0 + 11 +63.86569778565435 + 21 +22.27344072517247 + 31 +0.0 + 0 +LINE + 5 +386 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.3223727738929 + 20 +23.25844072517245 + 30 +0.0 + 11 +70.11309728639971 + 21 +23.25844072517249 + 31 +0.0 + 0 +LINE + 5 +387 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +78.32237277389295 + 20 +31.79844072517247 + 30 +0.0 + 11 +70.11309728639976 + 21 +31.7984407251725 + 31 +0.0 + 0 +LINE + 5 +388 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +23.73344072517251 + 30 +0.0 + 11 +63.86569778565435 + 21 +23.73344072517251 + 31 +0.0 + 0 +LINE + 5 +389 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +67.58329938710962 + 20 +31.77344072517247 + 30 +0.0 + 11 +63.86569778565435 + 21 +31.77344072517247 + 31 +0.0 + 0 +LINE + 5 +38A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389285 + 20 +-71.74155927482755 + 30 +0.0 + 11 +54.77809728639967 + 21 +-71.74155927482751 + 31 +0.0 + 0 +LINE + 5 +38B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-63.20155927482752 + 30 +0.0 + 11 +54.77809728639972 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +38C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-71.26655927482749 + 30 +0.0 + 11 +48.5306977856543 + 21 +-71.26655927482749 + 31 +0.0 + 0 +LINE + 5 +38D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-63.22655927482752 + 30 +0.0 + 11 +48.5306977856543 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +38E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389285 + 20 +-62.24155927482754 + 30 +0.0 + 11 +54.77809728639967 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +38F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-53.70155927482752 + 30 +0.0 + 11 +54.77809728639972 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +390 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-61.76655927482749 + 30 +0.0 + 11 +48.5306977856543 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +391 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-53.72655927482752 + 30 +0.0 + 11 +48.5306977856543 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +392 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389285 + 20 +-52.74155927482754 + 30 +0.0 + 11 +54.77809728639967 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +393 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-44.20155927482752 + 30 +0.0 + 11 +54.77809728639972 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +394 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-52.26655927482749 + 30 +0.0 + 11 +48.5306977856543 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +395 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-44.22655927482752 + 30 +0.0 + 11 +48.5306977856543 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +396 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389285 + 20 +-43.24155927482754 + 30 +0.0 + 11 +54.77809728639967 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +397 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-34.70155927482752 + 30 +0.0 + 11 +54.77809728639972 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +398 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-42.76655927482749 + 30 +0.0 + 11 +48.5306977856543 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +399 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-34.72655927482754 + 30 +0.0 + 11 +48.5306977856543 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +39A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389285 + 20 +-33.74155927482754 + 30 +0.0 + 11 +54.77809728639967 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +39B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-25.20155927482752 + 30 +0.0 + 11 +54.77809728639973 + 21 +-25.2015592748275 + 31 +0.0 + 0 +LINE + 5 +39C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-33.26655927482749 + 30 +0.0 + 11 +48.5306977856543 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +39D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-25.22655927482753 + 30 +0.0 + 11 +48.53069778565431 + 21 +-25.22655927482753 + 31 +0.0 + 0 +LINE + 5 +39E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +-24.24155927482754 + 30 +0.0 + 11 +54.77809728639968 + 21 +-24.24155927482751 + 31 +0.0 + 0 +LINE + 5 +39F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-15.70155927482752 + 30 +0.0 + 11 +54.77809728639973 + 21 +-15.70155927482749 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-23.76655927482749 + 30 +0.0 + 11 +48.53069778565431 + 21 +-23.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-15.72655927482752 + 30 +0.0 + 11 +48.53069778565431 + 21 +-15.72655927482752 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +-14.74155927482754 + 30 +0.0 + 11 +54.77809728639968 + 21 +-14.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +-6.201559274827524 + 30 +0.0 + 11 +54.77809728639973 + 21 +-6.201559274827495 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-14.26655927482749 + 30 +0.0 + 11 +48.53069778565431 + 21 +-14.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-6.226559274827528 + 30 +0.0 + 11 +48.53069778565431 + 21 +-6.226559274827528 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +-5.241559274827545 + 30 +0.0 + 11 +54.77809728639968 + 21 +-5.241559274827515 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +3.298440725172475 + 30 +0.0 + 11 +54.77809728639973 + 21 +3.298440725172505 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +-4.766559274827492 + 30 +0.0 + 11 +48.53069778565431 + 21 +-4.766559274827492 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +3.273440725172471 + 30 +0.0 + 11 +48.53069778565431 + 21 +3.273440725172471 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +4.258440725172454 + 30 +0.0 + 11 +54.77809728639968 + 21 +4.258440725172484 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +12.79844072517248 + 30 +0.0 + 11 +54.77809728639973 + 21 +12.79844072517251 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +4.733440725172507 + 30 +0.0 + 11 +48.53069778565431 + 21 +4.733440725172507 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +12.77344072517247 + 30 +0.0 + 11 +48.53069778565431 + 21 +12.77344072517247 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +13.75844072517246 + 30 +0.0 + 11 +54.77809728639968 + 21 +13.75844072517249 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389291 + 20 +22.29844072517248 + 30 +0.0 + 11 +54.77809728639973 + 21 +22.2984407251725 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +14.23344072517251 + 30 +0.0 + 11 +48.53069778565431 + 21 +14.23344072517251 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +22.27344072517247 + 30 +0.0 + 11 +48.53069778565431 + 21 +22.27344072517247 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389286 + 20 +23.25844072517246 + 30 +0.0 + 11 +54.77809728639968 + 21 +23.25844072517249 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +62.98737277389292 + 20 +31.79844072517248 + 30 +0.0 + 11 +54.77809728639973 + 21 +31.7984407251725 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710958 + 20 +23.73344072517251 + 30 +0.0 + 11 +48.53069778565431 + 21 +23.73344072517251 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +52.24829938710959 + 20 +31.77344072517247 + 30 +0.0 + 11 +48.53069778565432 + 21 +31.77344072517247 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-71.74155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-71.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389286 + 20 +-63.20155927482752 + 30 +0.0 + 11 +39.44309728639968 + 21 +-63.2015592748275 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-71.26655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-71.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-63.22655927482752 + 30 +0.0 + 11 +33.19569778565427 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-62.24155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-62.24155927482752 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389286 + 20 +-53.70155927482752 + 30 +0.0 + 11 +39.44309728639968 + 21 +-53.7015592748275 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-61.76655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-53.72655927482752 + 30 +0.0 + 11 +33.19569778565427 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-52.74155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-52.74155927482752 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389286 + 20 +-44.20155927482752 + 30 +0.0 + 11 +39.44309728639968 + 21 +-44.2015592748275 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-52.26655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-44.22655927482752 + 30 +0.0 + 11 +33.19569778565427 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-43.24155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-43.24155927482752 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389286 + 20 +-34.70155927482752 + 30 +0.0 + 11 +39.44309728639968 + 21 +-34.7015592748275 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-42.76655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-34.72655927482754 + 30 +0.0 + 11 +33.19569778565427 + 21 +-34.72655927482754 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-33.74155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-33.74155927482752 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +-25.20155927482752 + 30 +0.0 + 11 +39.44309728639969 + 21 +-25.20155927482749 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710954 + 20 +-33.26655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-25.22655927482753 + 30 +0.0 + 11 +33.19569778565427 + 21 +-25.22655927482753 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-24.24155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-24.24155927482751 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +-15.70155927482752 + 30 +0.0 + 11 +39.44309728639969 + 21 +-15.70155927482749 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-23.76655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-23.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-15.72655927482752 + 30 +0.0 + 11 +33.19569778565427 + 21 +-15.72655927482752 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-14.74155927482754 + 30 +0.0 + 11 +39.44309728639963 + 21 +-14.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +-6.201559274827522 + 30 +0.0 + 11 +39.44309728639969 + 21 +-6.201559274827493 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-14.26655927482749 + 30 +0.0 + 11 +33.19569778565427 + 21 +-14.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-6.226559274827526 + 30 +0.0 + 11 +33.19569778565427 + 21 +-6.226559274827526 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +-5.241559274827543 + 30 +0.0 + 11 +39.44309728639963 + 21 +-5.241559274827512 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +3.298440725172477 + 30 +0.0 + 11 +39.44309728639969 + 21 +3.298440725172506 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +-4.766559274827491 + 30 +0.0 + 11 +33.19569778565427 + 21 +-4.766559274827491 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +3.273440725172473 + 30 +0.0 + 11 +33.19569778565427 + 21 +3.273440725172473 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +4.258440725172456 + 30 +0.0 + 11 +39.44309728639963 + 21 +4.258440725172487 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +12.79844072517248 + 30 +0.0 + 11 +39.44309728639969 + 21 +12.79844072517251 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +4.733440725172509 + 30 +0.0 + 11 +33.19569778565427 + 21 +4.733440725172509 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +12.77344072517247 + 30 +0.0 + 11 +33.19569778565427 + 21 +12.77344072517247 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +13.75844072517246 + 30 +0.0 + 11 +39.44309728639963 + 21 +13.75844072517249 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389287 + 20 +22.29844072517248 + 30 +0.0 + 11 +39.44309728639969 + 21 +22.29844072517251 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +14.23344072517251 + 30 +0.0 + 11 +33.19569778565427 + 21 +14.23344072517251 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +22.27344072517247 + 30 +0.0 + 11 +33.19569778565427 + 21 +22.27344072517247 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389281 + 20 +23.25844072517246 + 30 +0.0 + 11 +39.44309728639963 + 21 +23.25844072517249 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +47.65237277389288 + 20 +31.79844072517248 + 30 +0.0 + 11 +39.4430972863997 + 21 +31.79844072517251 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +23.73344072517251 + 30 +0.0 + 11 +33.19569778565427 + 21 +23.73344072517251 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +36.91329938710955 + 20 +31.77344072517247 + 30 +0.0 + 11 +33.19569778565428 + 21 +31.77344072517247 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389278 + 20 +-71.74155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-71.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389283 + 20 +-63.20155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-63.20155927482749 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-71.26655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-71.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-63.22655927482752 + 30 +0.0 + 11 +17.86069778565423 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389278 + 20 +-62.24155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-62.24155927482751 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389283 + 20 +-53.70155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-53.70155927482749 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-61.76655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-53.72655927482752 + 30 +0.0 + 11 +17.86069778565423 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389278 + 20 +-52.74155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-52.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389283 + 20 +-44.20155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-44.20155927482749 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-52.26655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-44.22655927482752 + 30 +0.0 + 11 +17.86069778565423 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389278 + 20 +-43.24155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-43.24155927482751 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389283 + 20 +-34.70155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-34.70155927482749 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-42.76655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-34.72655927482753 + 30 +0.0 + 11 +17.86069778565423 + 21 +-34.72655927482753 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389278 + 20 +-33.74155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-33.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +-25.20155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-25.20155927482749 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-33.26655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-25.22655927482753 + 30 +0.0 + 11 +17.86069778565423 + 21 +-25.22655927482753 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +-24.24155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-24.24155927482751 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +-15.70155927482752 + 30 +0.0 + 11 +24.10809728639965 + 21 +-15.70155927482749 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-23.76655927482749 + 30 +0.0 + 11 +17.86069778565423 + 21 +-23.76655927482749 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.5782993871095 + 20 +-15.72655927482752 + 30 +0.0 + 11 +17.86069778565423 + 21 +-15.72655927482752 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +-14.74155927482754 + 30 +0.0 + 11 +24.1080972863996 + 21 +-14.74155927482751 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +-6.201559274827519 + 30 +0.0 + 11 +24.10809728639965 + 21 +-6.201559274827491 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +-14.26655927482749 + 30 +0.0 + 11 +17.86069778565424 + 21 +-14.26655927482749 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +-6.226559274827524 + 30 +0.0 + 11 +17.86069778565424 + 21 +-6.226559274827523 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +-5.241559274827541 + 30 +0.0 + 11 +24.10809728639961 + 21 +-5.241559274827511 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +3.298440725172479 + 30 +0.0 + 11 +24.10809728639965 + 21 +3.298440725172508 + 31 +0.0 + 0 +LINE + 5 +400 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +-4.766559274827489 + 30 +0.0 + 11 +17.86069778565424 + 21 +-4.766559274827488 + 31 +0.0 + 0 +LINE + 5 +401 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +3.273440725172474 + 30 +0.0 + 11 +17.86069778565424 + 21 +3.273440725172475 + 31 +0.0 + 0 +LINE + 5 +402 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +4.258440725172458 + 30 +0.0 + 11 +24.10809728639961 + 21 +4.258440725172489 + 31 +0.0 + 0 +LINE + 5 +403 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +12.79844072517248 + 30 +0.0 + 11 +24.10809728639965 + 21 +12.79844072517251 + 31 +0.0 + 0 +LINE + 5 +404 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +4.73344072517251 + 30 +0.0 + 11 +17.86069778565424 + 21 +4.733440725172511 + 31 +0.0 + 0 +LINE + 5 +405 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +12.77344072517247 + 30 +0.0 + 11 +17.86069778565424 + 21 +12.77344072517247 + 31 +0.0 + 0 +LINE + 5 +406 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +13.75844072517246 + 30 +0.0 + 11 +24.10809728639961 + 21 +13.75844072517249 + 31 +0.0 + 0 +LINE + 5 +407 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389284 + 20 +22.29844072517248 + 30 +0.0 + 11 +24.10809728639966 + 21 +22.29844072517251 + 31 +0.0 + 0 +LINE + 5 +408 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +14.23344072517251 + 30 +0.0 + 11 +17.86069778565424 + 21 +14.23344072517251 + 31 +0.0 + 0 +LINE + 5 +409 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +22.27344072517247 + 30 +0.0 + 11 +17.86069778565424 + 21 +22.27344072517247 + 31 +0.0 + 0 +LINE + 5 +40A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389279 + 20 +23.25844072517246 + 30 +0.0 + 11 +24.10809728639961 + 21 +23.25844072517249 + 31 +0.0 + 0 +LINE + 5 +40B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +32.31737277389285 + 20 +31.79844072517248 + 30 +0.0 + 11 +24.10809728639966 + 21 +31.79844072517251 + 31 +0.0 + 0 +LINE + 5 +40C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +23.73344072517251 + 30 +0.0 + 11 +17.86069778565424 + 21 +23.73344072517251 + 31 +0.0 + 0 +LINE + 5 +40D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +21.57829938710951 + 20 +31.77344072517247 + 30 +0.0 + 11 +17.86069778565424 + 21 +31.77344072517247 + 31 +0.0 + 0 +LINE + 5 +40E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-71.74155927482754 + 30 +0.0 + 11 +8.773097286399551 + 21 +-71.74155927482751 + 31 +0.0 + 0 +LINE + 5 +40F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-63.20155927482752 + 30 +0.0 + 11 +8.773097286399612 + 21 +-63.20155927482749 + 31 +0.0 + 0 +LINE + 5 +410 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109464 + 20 +-71.26655927482749 + 30 +0.0 + 11 +2.525697785654193 + 21 +-71.26655927482749 + 31 +0.0 + 0 +LINE + 5 +411 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109465 + 20 +-63.22655927482752 + 30 +0.0 + 11 +2.525697785654194 + 21 +-63.22655927482752 + 31 +0.0 + 0 +LINE + 5 +412 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-62.24155927482754 + 30 +0.0 + 11 +8.773097286399553 + 21 +-62.24155927482751 + 31 +0.0 + 0 +LINE + 5 +413 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-53.70155927482752 + 30 +0.0 + 11 +8.773097286399612 + 21 +-53.70155927482749 + 31 +0.0 + 0 +LINE + 5 +414 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109465 + 20 +-61.76655927482749 + 30 +0.0 + 11 +2.525697785654194 + 21 +-61.76655927482749 + 31 +0.0 + 0 +LINE + 5 +415 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109467 + 20 +-53.72655927482752 + 30 +0.0 + 11 +2.525697785654195 + 21 +-53.72655927482752 + 31 +0.0 + 0 +LINE + 5 +416 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-52.74155927482754 + 30 +0.0 + 11 +8.773097286399553 + 21 +-52.74155927482751 + 31 +0.0 + 0 +LINE + 5 +417 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-44.20155927482752 + 30 +0.0 + 11 +8.773097286399613 + 21 +-44.20155927482749 + 31 +0.0 + 0 +LINE + 5 +418 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109467 + 20 +-52.26655927482749 + 30 +0.0 + 11 +2.525697785654196 + 21 +-52.26655927482749 + 31 +0.0 + 0 +LINE + 5 +419 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109468 + 20 +-44.22655927482752 + 30 +0.0 + 11 +2.525697785654196 + 21 +-44.22655927482752 + 31 +0.0 + 0 +LINE + 5 +41A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-43.24155927482753 + 30 +0.0 + 11 +8.773097286399555 + 21 +-43.24155927482751 + 31 +0.0 + 0 +LINE + 5 +41B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-34.70155927482752 + 30 +0.0 + 11 +8.773097286399615 + 21 +-34.70155927482749 + 31 +0.0 + 0 +LINE + 5 +41C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109468 + 20 +-42.76655927482749 + 30 +0.0 + 11 +2.525697785654196 + 21 +-42.76655927482749 + 31 +0.0 + 0 +LINE + 5 +41D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109468 + 20 +-34.72655927482753 + 30 +0.0 + 11 +2.525697785654197 + 21 +-34.72655927482753 + 31 +0.0 + 0 +LINE + 5 +41E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-33.74155927482754 + 30 +0.0 + 11 +8.773097286399556 + 21 +-33.74155927482751 + 31 +0.0 + 0 +LINE + 5 +41F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-25.20155927482752 + 30 +0.0 + 11 +8.773097286399615 + 21 +-25.20155927482749 + 31 +0.0 + 0 +LINE + 5 +420 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109468 + 20 +-33.26655927482749 + 30 +0.0 + 11 +2.525697785654198 + 21 +-33.26655927482749 + 31 +0.0 + 0 +LINE + 5 +421 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.24329938710947 + 20 +-25.22655927482753 + 30 +0.0 + 11 +2.525697785654199 + 21 +-25.22655927482753 + 31 +0.0 + 0 +LINE + 5 +422 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-24.24155927482754 + 30 +0.0 + 11 +8.773097286399556 + 21 +-24.24155927482751 + 31 +0.0 + 0 +LINE + 5 +423 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.9823727738928 + 20 +-15.70155927482752 + 30 +0.0 + 11 +8.773097286399617 + 21 +-15.70155927482749 + 31 +0.0 + 0 +LINE + 5 +424 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.24329938710947 + 20 +-23.76655927482749 + 30 +0.0 + 11 +2.525697785654199 + 21 +-23.76655927482749 + 31 +0.0 + 0 +LINE + 5 +425 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109471 + 20 +-15.72655927482752 + 30 +0.0 + 11 +2.5256977856542 + 21 +-15.72655927482752 + 31 +0.0 + 0 +LINE + 5 +426 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389274 + 20 +-14.74155927482754 + 30 +0.0 + 11 +8.773097286399558 + 21 +-14.74155927482751 + 31 +0.0 + 0 +LINE + 5 +427 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389281 + 20 +-6.201559274827518 + 30 +0.0 + 11 +8.773097286399619 + 21 +-6.201559274827489 + 31 +0.0 + 0 +LINE + 5 +428 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109471 + 20 +-14.26655927482749 + 30 +0.0 + 11 +2.5256977856542 + 21 +-14.26655927482749 + 31 +0.0 + 0 +LINE + 5 +429 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109472 + 20 +-6.226559274827522 + 30 +0.0 + 11 +2.525697785654201 + 21 +-6.226559274827522 + 31 +0.0 + 0 +LINE + 5 +42A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389275 + 20 +-5.241559274827539 + 30 +0.0 + 11 +8.77309728639956 + 21 +-5.241559274827509 + 31 +0.0 + 0 +LINE + 5 +42B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389281 + 20 +3.298440725172481 + 30 +0.0 + 11 +8.773097286399619 + 21 +3.29844072517251 + 31 +0.0 + 0 +LINE + 5 +42C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109472 + 20 +-4.766559274827487 + 30 +0.0 + 11 +2.525697785654201 + 21 +-4.766559274827486 + 31 +0.0 + 0 +LINE + 5 +42D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109473 + 20 +3.273440725172476 + 30 +0.0 + 11 +2.525697785654202 + 21 +3.273440725172477 + 31 +0.0 + 0 +LINE + 5 +42E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389275 + 20 +4.25844072517246 + 30 +0.0 + 11 +8.77309728639956 + 21 +4.25844072517249 + 31 +0.0 + 0 +LINE + 5 +42F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389281 + 20 +12.79844072517248 + 30 +0.0 + 11 +8.77309728639962 + 21 +12.79844072517251 + 31 +0.0 + 0 +LINE + 5 +430 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109474 + 20 +4.733440725172512 + 30 +0.0 + 11 +2.525697785654202 + 21 +4.733440725172513 + 31 +0.0 + 0 +LINE + 5 +431 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109475 + 20 +12.77344072517247 + 30 +0.0 + 11 +2.525697785654204 + 21 +12.77344072517247 + 31 +0.0 + 0 +LINE + 5 +432 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389275 + 20 +13.75844072517246 + 30 +0.0 + 11 +8.773097286399562 + 21 +13.75844072517249 + 31 +0.0 + 0 +LINE + 5 +433 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389281 + 20 +22.29844072517248 + 30 +0.0 + 11 +8.773097286399622 + 21 +22.29844072517251 + 31 +0.0 + 0 +LINE + 5 +434 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109475 + 20 +14.23344072517251 + 30 +0.0 + 11 +2.525697785654204 + 21 +14.23344072517251 + 31 +0.0 + 0 +LINE + 5 +435 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109476 + 20 +22.27344072517247 + 30 +0.0 + 11 +2.525697785654204 + 21 +22.27344072517247 + 31 +0.0 + 0 +LINE + 5 +436 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389275 + 20 +23.25844072517246 + 30 +0.0 + 11 +8.773097286399564 + 21 +23.25844072517249 + 31 +0.0 + 0 +LINE + 5 +437 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +16.98237277389281 + 20 +31.79844072517248 + 30 +0.0 + 11 +8.773097286399622 + 21 +31.79844072517251 + 31 +0.0 + 0 +LINE + 5 +438 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109476 + 20 +23.73344072517251 + 30 +0.0 + 11 +2.525697785654205 + 21 +23.73344072517251 + 31 +0.0 + 0 +LINE + 5 +439 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +6.243299387109476 + 20 +31.77344072517247 + 30 +0.0 + 11 +2.525697785654206 + 21 +31.77344072517247 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +170.4795467452747 + 20 +-18.23442724047168 + 10 +170.2674147109187 + 20 +-18.44655927482765 + 10 +170.2674147109187 + 20 +-18.74655927482765 + 10 +170.2674147109186 + 20 +-20.74655927482766 + 10 +170.2674147109186 + 20 +-21.04655927482765 + 10 +170.4795467452745 + 20 +-21.25869130918361 + 0 +LWPOLYLINE + 5 +43B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +155.6802826765628 + 20 +-18.23442724047167 + 10 +155.8924147109187 + 20 +-18.44655927482765 + 10 +155.8924147109187 + 20 +-18.74655927482765 + 10 +155.8924147109189 + 20 +-20.74655927482765 + 10 +155.8924147109189 + 20 +-21.04655927482764 + 10 +155.6802826765628 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +43C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +155.1445467452746 + 20 +-18.23442724047167 + 10 +154.9324147109187 + 20 +-18.44655927482765 + 10 +154.9324147109187 + 20 +-18.74655927482765 + 10 +154.9324147109186 + 20 +-20.74655927482765 + 10 +154.9324147109186 + 20 +-21.04655927482764 + 10 +155.1445467452746 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +43D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +140.3452826765626 + 20 +-18.23442724047167 + 10 +140.5574147109187 + 20 +-18.44655927482765 + 10 +140.5574147109187 + 20 +-18.74655927482765 + 10 +140.5574147109187 + 20 +-20.74655927482765 + 10 +140.5574147109187 + 20 +-21.04655927482764 + 10 +140.3452826765628 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +43E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +139.8095467452746 + 20 +-18.23442724047167 + 10 +139.5974147109187 + 20 +-18.44655927482765 + 10 +139.5974147109187 + 20 +-18.74655927482765 + 10 +139.5974147109186 + 20 +-20.74655927482765 + 10 +139.5974147109186 + 20 +-21.04655927482764 + 10 +139.8095467452746 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +43F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +125.0102826765627 + 20 +-18.23442724047167 + 10 +125.2224147109187 + 20 +-18.44655927482764 + 10 +125.2224147109187 + 20 +-18.74655927482764 + 10 +125.2224147109188 + 20 +-20.74655927482765 + 10 +125.2224147109188 + 20 +-21.04655927482764 + 10 +125.0102826765627 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +440 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +124.4745467452746 + 20 +-18.23442724047167 + 10 +124.2624147109186 + 20 +-18.44655927482764 + 10 +124.2624147109186 + 20 +-18.74655927482764 + 10 +124.2624147109185 + 20 +-20.74655927482765 + 10 +124.2624147109185 + 20 +-21.04655927482764 + 10 +124.4745467452745 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +441 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +109.6752826765626 + 20 +-18.23442724047167 + 10 +109.8874147109186 + 20 +-18.44655927482764 + 10 +109.8874147109186 + 20 +-18.74655927482764 + 10 +109.8874147109187 + 20 +-20.74655927482765 + 10 +109.8874147109187 + 20 +-21.04655927482764 + 10 +109.6752826765627 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +442 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +109.1395467452745 + 20 +-18.23442724047167 + 10 +108.9274147109186 + 20 +-18.44655927482764 + 10 +108.9274147109186 + 20 +-18.74655927482764 + 10 +108.9274147109185 + 20 +-20.74655927482765 + 10 +108.9274147109185 + 20 +-21.04655927482764 + 10 +109.1395467452745 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +443 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +94.34028267656261 + 20 +-18.23442724047167 + 10 +94.55241471091861 + 20 +-18.44655927482764 + 10 +94.55241471091861 + 20 +-18.74655927482764 + 10 +94.55241471091871 + 20 +-20.74655927482765 + 10 +94.55241471091871 + 20 +-21.04655927482764 + 10 +94.34028267656268 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +444 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +93.80454674527455 + 20 +-18.23442724047167 + 10 +93.59241471091856 + 20 +-18.44655927482764 + 10 +93.59241471091856 + 20 +-18.74655927482764 + 10 +93.59241471091845 + 20 +-20.74655927482765 + 10 +93.59241471091845 + 20 +-21.04655927482764 + 10 +93.80454674527442 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +445 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +79.00528267656257 + 20 +-18.23442724047167 + 10 +79.21741471091856 + 20 +-18.44655927482764 + 10 +79.21741471091856 + 20 +-18.74655927482764 + 10 +79.21741471091867 + 20 +-20.74655927482765 + 10 +79.21741471091867 + 20 +-21.04655927482764 + 10 +79.00528267656269 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +446 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +78.46954674527451 + 20 +-18.23442724047167 + 10 +78.25741471091852 + 20 +-18.44655927482764 + 10 +78.25741471091852 + 20 +-18.74655927482764 + 10 +78.25741471091841 + 20 +-20.74655927482765 + 10 +78.25741471091841 + 20 +-21.04655927482764 + 10 +78.4695467452744 + 20 +-21.2586913091836 + 0 +LWPOLYLINE + 5 +447 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +63.67028267656254 + 20 +-18.23442724047166 + 10 +63.88241471091852 + 20 +-18.44655927482764 + 10 +63.88241471091852 + 20 +-18.74655927482764 + 10 +63.88241471091863 + 20 +-20.74655927482764 + 10 +63.88241471091863 + 20 +-21.04655927482763 + 10 +63.67028267656266 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +448 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +63.13454674527448 + 20 +-18.23442724047166 + 10 +62.92241471091848 + 20 +-18.44655927482764 + 10 +62.92241471091848 + 20 +-18.74655927482764 + 10 +62.92241471091837 + 20 +-20.74655927482764 + 10 +62.92241471091837 + 20 +-21.04655927482763 + 10 +63.13454674527436 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +449 +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +48.33528267656251 + 20 +-18.23442724047166 + 10 +48.54741471091848 + 20 +-18.44655927482764 + 10 +48.54741471091848 + 20 +-18.74655927482764 + 10 +48.5474147109186 + 20 +-20.74655927482764 + 10 +48.5474147109186 + 20 +-21.04655927482763 + 10 +48.33528267656261 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44A +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +47.79954674527443 + 20 +-18.23442724047166 + 10 +47.58741471091844 + 20 +-18.44655927482764 + 10 +47.58741471091844 + 20 +-18.74655927482764 + 10 +47.58741471091834 + 20 +-20.74655927482764 + 10 +47.58741471091834 + 20 +-21.04655927482763 + 10 +47.79954674527433 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44B +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +33.00028267656246 + 20 +-18.23442724047166 + 10 +33.21241471091845 + 20 +-18.44655927482763 + 10 +33.21241471091845 + 20 +-18.74655927482763 + 10 +33.21241471091857 + 20 +-20.74655927482764 + 10 +33.21241471091857 + 20 +-21.04655927482763 + 10 +33.00028267656258 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44C +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +32.4645467452744 + 20 +-18.23442724047166 + 10 +32.25241471091842 + 20 +-18.44655927482763 + 10 +32.25241471091842 + 20 +-18.74655927482763 + 10 +32.2524147109183 + 20 +-20.74655927482764 + 10 +32.2524147109183 + 20 +-21.04655927482763 + 10 +32.46454674527435 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44D +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +17.66528267656248 + 20 +-18.23442724047166 + 10 +17.87741471091841 + 20 +-18.44655927482763 + 10 +17.87741471091841 + 20 +-18.74655927482763 + 10 +17.87741471091852 + 20 +-20.74655927482764 + 10 +17.87741471091852 + 20 +-21.04655927482763 + 10 +17.66528267656253 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44E +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +17.12954674527436 + 20 +-18.23442724047166 + 10 +16.91741471091837 + 20 +-18.44655927482763 + 10 +16.91741471091837 + 20 +-18.74655927482763 + 10 +16.91741471091826 + 20 +-20.74655927482764 + 10 +16.91741471091826 + 20 +-21.04655927482763 + 10 +17.1295467452743 + 20 +-21.25869130918359 + 0 +LWPOLYLINE + 5 +44F +330 +37 +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +2.330282676562445 + 20 +-18.23442724047166 + 10 +2.542414710918377 + 20 +-18.44655927482763 + 10 +2.542414710918377 + 20 +-18.74655927482763 + 10 +2.54241471091849 + 20 +-20.74655927482764 + 10 +2.54241471091849 + 20 +-21.04655927482763 + 10 +2.330282676562501 + 20 +-21.25869130918359 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +30 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +2F + 3 +ACAD_MATERIAL +350 +10 + 3 +ACAD_MLEADERSTYLE +350 +476 + 3 +ACAD_MLINESTYLE +350 +2C + 3 +ACAD_PLOTSETTINGS +350 +2E + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +452 + 3 +ACAD_TABLESTYLE +350 +31 + 3 +ACAD_VISUALSTYLE +350 +14 + 3 +AcDbVariableDictionary +350 +450 + 0 +DICTIONARY + 5 +50 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +51 + 0 +DICTIONARY + 5 +4A +330 +49 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +4B + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +3A + 3 +布局1 +350 +36 + 3 +布局2 +350 +3E + 0 +DICTIONARY + 5 +10 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +12 + 3 +ByLayer +350 +11 + 3 +Global +350 +13 + 0 +DICTIONARY + 5 +476 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +2D + 0 +DICTIONARY + 5 +2E +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 +452 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +453 + 3 +A1 +350 +454 + 3 +A2 +350 +455 + 3 +A3 +350 +456 + 3 +A4 +350 +457 + 3 +A5 +350 +458 + 3 +A6 +350 +459 + 3 +A7 +350 +45A + 3 +A8 +350 +45B + 3 +A9 +350 +45C + 3 +B0 +350 +45D + 3 +B1 +350 +45E + 3 +B2 +350 +45F + 3 +B3 +350 +460 + 3 +B4 +350 +461 + 3 +B5 +350 +462 + 3 +B6 +350 +463 + 3 +B7 +350 +464 + 3 +B8 +350 +465 + 3 +B9 +350 +466 + 3 +C0 +350 +467 + 3 +C1 +350 +468 + 3 +C2 +350 +469 + 3 +C3 +350 +46A + 3 +C4 +350 +46B + 3 +C5 +350 +46C + 3 +C6 +350 +46D + 3 +C7 +350 +46E + 3 +C8 +350 +46F + 3 +C9 +350 +470 + 3 +D0 +350 +471 + 3 +D1 +350 +472 + 3 +D2 +350 +473 + 0 +DICTIONARY + 5 +31 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +32 + 0 +DICTIONARY + 5 +14 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +1A + 3 +3D Hidden +350 +1C + 3 +3dWireframe +350 +1B + 3 +Basic +350 +19 + 3 +Brighten +350 +20 + 3 +ColorChange +350 +24 + 3 +Conceptual +350 +1D + 3 +Dim +350 +1F + 3 +Facepattern +350 +23 + 3 +Flat +350 +15 + 3 +FlatWithEdges +350 +16 + 3 +Gouraud +350 +17 + 3 +GouraudWithEdges +350 +18 + 3 +Linepattern +350 +22 + 3 +Realistic +350 +1E + 3 +Thicken +350 +21 + 0 +DICTIONARY + 5 +450 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +475 + 3 +CTABLESTYLE +350 +451 + 0 +DICTIONARY + 5 +51 +102 +{ACAD_REACTORS +330 +50 +102 +} +330 +50 +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +4B +102 +{ACAD_REACTORS +330 +4A +102 +} +330 +4A +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +LAYOUT + 5 +3A +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +37 +331 +28 + 0 +LAYOUT + 5 +36 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +33 + 0 +LAYOUT + 5 +3E +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +3B + 0 +MATERIAL + 5 +12 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByBlock + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +11 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByLayer + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +13 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2C +102 +} +330 +2C +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 +453 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +454 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +455 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +456 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +457 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +458 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +459 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +45A +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +45B +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +45C +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +45D +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +45E +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +45F +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +460 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +461 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +462 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +463 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +464 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +465 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +466 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +467 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +468 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +469 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46A +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46B +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46C +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46D +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46E +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46F +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +470 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +471 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +472 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +473 +102 +{ACAD_REACTORS +330 +452 +102 +} +330 +452 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +31 +102 +} +330 +31 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 8 + 40 +1.5 + 41 +1.5 +280 + 0 +281 + 0 + 7 +Standard +140 +4.5 +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 +6.0 +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 +4.5 +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 +1A +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1C +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1B +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +19 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +20 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +24 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1D +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1F +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +23 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +15 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +16 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +17 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +1E +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +21 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +475 +102 +{ACAD_REACTORS +330 +450 +102 +} +330 +450 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +451 +102 +{ACAD_REACTORS +330 +450 +102 +} +330 +450 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E279.par b/LaiPuLaser/TempMarkData/E279.par new file mode 100644 index 0000000..a1b208c Binary files /dev/null and b/LaiPuLaser/TempMarkData/E279.par differ diff --git a/LaiPuLaser/TempMarkData/E279.txt b/LaiPuLaser/TempMarkData/E279.txt new file mode 100644 index 0000000..7149e60 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E279.txt @@ -0,0 +1,8 @@ +1 +62.02 +-11.621 +80 +50 +600 +1 +1 diff --git a/LaiPuLaser/TempMarkData/E279微连点切割.are b/LaiPuLaser/TempMarkData/E279微连点切割.are new file mode 100644 index 0000000..2d9cd52 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E279微连点切割.are differ diff --git a/LaiPuLaser/TempMarkData/E279微连点切割.dxf b/LaiPuLaser/TempMarkData/E279微连点切割.dxf new file mode 100644 index 0000000..7c8a1d6 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E279微连点切割.dxf @@ -0,0 +1,31364 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-173.7499999999999 + 20 +-65.93142135623737 + 30 +0.0 + 9 +$EXTMAX + 10 +436.6788752444686 + 20 +264.6635494457173 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458983.590216181 + 9 +$TDUCREATE + 40 +2458983.256882847 + 9 +$TDUPDATE + 40 +2458983.590216181 + 9 +$TDUUPDATE + 40 +2458983.256882847 + 9 +$TDINDWG + 40 +0.0076372454 + 9 +$TDUSRTIMER + 40 +0.0076111806 + 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 +FEF + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-107.8327337543744 + 22 +145.3337842794458 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +219.6196751030717 + 41 +2.454964509201901 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +3D5 +102 +{ACAD_XDICTIONARY +360 +3D6 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + 9 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 3 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +3D8 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.2 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +3DA + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3DA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3DB +330 +3DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +3DC +330 +3DA +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +3DA +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +3DA +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +3DF +330 +3DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +CEA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +85.846008244393 + 10 +-59.79299031006288 + 20 +85.98742960063029 + 10 +-57.39299031006284 + 20 +85.98742960063032 + 10 +-57.25156895382553 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +CEB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +86.3160082443928 + 10 +-63.89049031006297 + 20 +86.45742960063015 + 10 +-66.29049031006298 + 20 +86.45742960063015 + 10 +-66.43191166630032 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +CEC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +85.846008244393 + 10 +-53.36799031006304 + 20 +85.98742960063029 + 10 +-55.76799031006307 + 20 +85.98742960063032 + 10 +-55.90941166630039 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +CED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +94.69885095686759 + 10 +-53.36799031006304 + 20 +94.5574296006303 + 10 +-55.76799031006307 + 20 +94.55742960063027 + 10 +-55.90941166630039 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +CEE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +94.69885095686759 + 10 +-59.79299031006288 + 20 +94.5574296006303 + 10 +-57.39299031006284 + 20 +94.55742960063027 + 10 +-57.25156895382553 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +CEF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +94.67885095686778 + 10 +-63.89049031006297 + 20 +94.53742960063043 + 10 +-66.29049031006298 + 20 +94.53742960063043 + 10 +-66.43191166630032 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D04 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-67.06691166630019 + 20 +136.5610082443928 + 10 +-66.9254903100629 + 20 +136.7024296006302 + 10 +-66.92549031006298 + 20 +139.3024296006301 + 10 +-67.0669116663003 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D05 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-52.37906895382578 + 20 +136.5610082443928 + 10 +-52.52049031006307 + 20 +136.7024296006302 + 10 +-52.52049031006298 + 20 +139.3024296006301 + 10 +-52.37906895382567 + 20 +139.4438509568675 + 0 +CIRCLE + 5 +D06 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +98.78200968993691 + 20 +95.0274296006303 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +D07 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +98.78200968993697 + 20 +190.0274296006302 + 30 +0.0 + 40 +0.3 + 0 +CIRCLE + 5 +D08 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +-54.56799031006308 + 20 +190.0274296006303 + 30 +0.0 + 40 +0.3 + 0 +LWPOLYLINE + 5 +D0A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-51.73191166630019 + 20 +136.5610082443928 + 10 +-51.5904903100629 + 20 +136.7024296006302 + 10 +-51.59049031006298 + 20 +139.3024296006301 + 10 +-51.7319116663003 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D0B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.04406895382578 + 20 +136.5610082443928 + 10 +-37.18549031006307 + 20 +136.7024296006302 + 10 +-37.18549031006298 + 20 +139.3024296006301 + 10 +-37.04406895382566 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D0C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-36.39691166630018 + 20 +136.5610082443928 + 10 +-36.2554903100629 + 20 +136.7024296006302 + 10 +-36.25549031006298 + 20 +139.3024296006301 + 10 +-36.3969116663003 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D0D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-21.70906895382578 + 20 +136.5610082443928 + 10 +-21.85049031006307 + 20 +136.7024296006302 + 10 +-21.85049031006298 + 20 +139.3024296006301 + 10 +-21.70906895382566 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D0E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-21.06191166630018 + 20 +136.5610082443928 + 10 +-20.9204903100629 + 20 +136.7024296006302 + 10 +-20.92049031006298 + 20 +139.3024296006301 + 10 +-21.0619116663003 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D0F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-6.374068953825777 + 20 +136.5610082443928 + 10 +-6.515490310063065 + 20 +136.7024296006302 + 10 +-6.51549031006298 + 20 +139.3024296006301 + 10 +-6.374068953825663 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D10 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.726911666300182 + 20 +136.5610082443928 + 10 +-5.585490310062895 + 20 +136.7024296006302 + 10 +-5.58549031006298 + 20 +139.3024296006301 + 10 +-5.726911666300296 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D11 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.960931046174224 + 20 +136.5610082443928 + 10 +8.819509689936936 + 20 +136.7024296006302 + 10 +8.819509689937021 + 20 +139.3024296006301 + 10 +8.960931046174338 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D12 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +9.608088333699826 + 20 +136.5610082443928 + 10 +9.749509689937113 + 20 +136.7024296006302 + 10 +9.749509689937028 + 20 +139.3024296006301 + 10 +9.608088333699712 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D13 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +24.29593104617423 + 20 +136.5610082443928 + 10 +24.15450968993694 + 20 +136.7024296006302 + 10 +24.15450968993703 + 20 +139.3024296006301 + 10 +24.29593104617435 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D14 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +24.94308833369982 + 20 +136.5610082443928 + 10 +25.08450968993711 + 20 +136.7024296006302 + 10 +25.08450968993702 + 20 +139.3024296006301 + 10 +24.94308833369971 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D15 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +39.63093104617423 + 20 +136.5610082443928 + 10 +39.48950968993694 + 20 +136.7024296006302 + 10 +39.48950968993702 + 20 +139.3024296006301 + 10 +39.63093104617434 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D16 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +40.27808833369981 + 20 +136.5610082443928 + 10 +40.4195096899371 + 20 +136.7024296006302 + 10 +40.41950968993702 + 20 +139.3024296006301 + 10 +40.2780883336997 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D17 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.96593104617422 + 20 +136.5610082443928 + 10 +54.82450968993693 + 20 +136.7024296006302 + 10 +54.82450968993702 + 20 +139.3024296006301 + 10 +54.96593104617433 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D18 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +55.61308833369982 + 20 +136.5610082443928 + 10 +55.75450968993711 + 20 +136.7024296006302 + 10 +55.75450968993702 + 20 +139.3024296006301 + 10 +55.61308833369971 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D19 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.30093104617423 + 20 +136.5610082443928 + 10 +70.15950968993694 + 20 +136.7024296006302 + 10 +70.15950968993702 + 20 +139.3024296006301 + 10 +70.30093104617434 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D1A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +70.94808833369983 + 20 +136.5610082443928 + 10 +71.08950968993712 + 20 +136.7024296006302 + 10 +71.08950968993703 + 20 +139.3024296006301 + 10 +70.94808833369972 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D1B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +85.63593104617424 + 20 +136.5610082443928 + 10 +85.49450968993695 + 20 +136.7024296006302 + 10 +85.49450968993703 + 20 +139.3024296006301 + 10 +85.63593104617435 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D1C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +86.28308833369984 + 20 +136.5610082443928 + 10 +86.42450968993712 + 20 +136.7024296006302 + 10 +86.42450968993704 + 20 +139.3024296006301 + 10 +86.28308833369972 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D1D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.9709310461742 + 20 +136.5610082443928 + 10 +100.829509689937 + 20 +136.7024296006302 + 10 +100.829509689937 + 20 +139.3024296006301 + 10 +100.9709310461744 + 20 +139.4438509568675 + 0 +LWPOLYLINE + 5 +D1E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +85.846008244393 + 10 +-44.45799031006288 + 20 +85.98742960063029 + 10 +-42.05799031006284 + 20 +85.98742960063032 + 10 +-41.91656895382553 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D1F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +86.3160082443928 + 10 +-48.55549031006297 + 20 +86.45742960063015 + 10 +-50.95549031006298 + 20 +86.45742960063015 + 10 +-51.09691166630032 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D20 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +85.846008244393 + 10 +-38.03299031006303 + 20 +85.98742960063029 + 10 +-40.43299031006307 + 20 +85.98742960063032 + 10 +-40.57441166630039 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D21 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +94.69885095686759 + 10 +-38.03299031006303 + 20 +94.5574296006303 + 10 +-40.43299031006307 + 20 +94.55742960063027 + 10 +-40.57441166630039 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D22 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +94.69885095686759 + 10 +-44.45799031006288 + 20 +94.5574296006303 + 10 +-42.05799031006284 + 20 +94.55742960063027 + 10 +-41.91656895382553 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D23 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +94.67885095686778 + 10 +-48.55549031006297 + 20 +94.53742960063043 + 10 +-50.95549031006298 + 20 +94.53742960063043 + 10 +-51.09691166630032 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D24 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +85.846008244393 + 10 +-29.12299031006287 + 20 +85.98742960063029 + 10 +-26.72299031006284 + 20 +85.98742960063032 + 10 +-26.58156895382552 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D25 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +86.3160082443928 + 10 +-33.22049031006297 + 20 +86.45742960063015 + 10 +-35.62049031006298 + 20 +86.45742960063015 + 10 +-35.76191166630032 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D26 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +85.846008244393 + 10 +-22.69799031006303 + 20 +85.98742960063029 + 10 +-25.09799031006307 + 20 +85.98742960063032 + 10 +-25.23941166630038 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D27 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +94.69885095686759 + 10 +-22.69799031006303 + 20 +94.5574296006303 + 10 +-25.09799031006307 + 20 +94.55742960063027 + 10 +-25.23941166630038 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D28 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +94.69885095686759 + 10 +-29.12299031006287 + 20 +94.5574296006303 + 10 +-26.72299031006284 + 20 +94.55742960063027 + 10 +-26.58156895382552 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D29 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +94.67885095686778 + 10 +-33.22049031006297 + 20 +94.53742960063043 + 10 +-35.62049031006298 + 20 +94.53742960063043 + 10 +-35.76191166630032 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D2A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +85.846008244393 + 10 +-13.78799031006287 + 20 +85.98742960063029 + 10 +-11.38799031006284 + 20 +85.98742960063032 + 10 +-11.24656895382552 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D2B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +86.3160082443928 + 10 +-17.88549031006297 + 20 +86.45742960063015 + 10 +-20.28549031006298 + 20 +86.45742960063015 + 10 +-20.42691166630032 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D2C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +85.846008244393 + 10 +-7.362990310063033 + 20 +85.98742960063029 + 10 +-9.762990310063067 + 20 +85.98742960063032 + 10 +-9.904411666300383 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D2D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +94.69885095686759 + 10 +-7.362990310063033 + 20 +94.5574296006303 + 10 +-9.762990310063067 + 20 +94.55742960063027 + 10 +-9.904411666300383 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D2E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +94.69885095686759 + 10 +-13.78799031006287 + 20 +94.5574296006303 + 10 +-11.38799031006284 + 20 +94.55742960063027 + 10 +-11.24656895382552 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D2F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +94.67885095686778 + 10 +-17.88549031006297 + 20 +94.53742960063043 + 10 +-20.28549031006298 + 20 +94.53742960063043 + 10 +-20.42691166630032 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D30 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +85.846008244393 + 10 +1.547009689937127 + 20 +85.98742960063029 + 10 +3.947009689937161 + 20 +85.98742960063032 + 10 +4.088431046174478 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D31 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +86.3160082443928 + 10 +-2.550490310062969 + 20 +86.45742960063015 + 10 +-4.950490310062975 + 20 +86.45742960063015 + 10 +-5.091911666300319 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D32 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +85.846008244393 + 10 +7.972009689936968 + 20 +85.98742960063029 + 10 +5.572009689936934 + 20 +85.98742960063032 + 10 +5.430588333699617 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D33 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +94.69885095686759 + 10 +7.972009689936968 + 20 +94.5574296006303 + 10 +5.572009689936934 + 20 +94.55742960063027 + 10 +5.430588333699617 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D34 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +94.69885095686759 + 10 +1.547009689937127 + 20 +94.5574296006303 + 10 +3.947009689937161 + 20 +94.55742960063027 + 10 +4.088431046174478 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D35 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +94.67885095686778 + 10 +-2.550490310062969 + 20 +94.53742960063043 + 10 +-4.950490310062975 + 20 +94.53742960063043 + 10 +-5.091911666300319 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D36 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +85.846008244393 + 10 +16.88200968993714 + 20 +85.98742960063029 + 10 +19.28200968993717 + 20 +85.98742960063032 + 10 +19.42343104617449 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D37 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +86.3160082443928 + 10 +12.78450968993704 + 20 +86.45742960063015 + 10 +10.38450968993703 + 20 +86.45742960063015 + 10 +10.24308833369969 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D38 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +85.846008244393 + 10 +23.30700968993698 + 20 +85.98742960063029 + 10 +20.90700968993694 + 20 +85.98742960063032 + 10 +20.76558833369963 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D39 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +94.69885095686759 + 10 +23.30700968993698 + 20 +94.5574296006303 + 10 +20.90700968993694 + 20 +94.55742960063027 + 10 +20.76558833369963 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D3A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +94.69885095686759 + 10 +16.88200968993714 + 20 +94.5574296006303 + 10 +19.28200968993717 + 20 +94.55742960063027 + 10 +19.42343104617449 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D3B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +94.67885095686778 + 10 +12.78450968993704 + 20 +94.53742960063043 + 10 +10.38450968993703 + 20 +94.53742960063043 + 10 +10.24308833369969 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D3C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +85.846008244393 + 10 +32.21700968993713 + 20 +85.98742960063029 + 10 +34.61700968993716 + 20 +85.98742960063032 + 10 +34.75843104617448 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D3D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +86.3160082443928 + 10 +28.11950968993703 + 20 +86.45742960063015 + 10 +25.71950968993703 + 20 +86.45742960063015 + 10 +25.57808833369968 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D3E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +85.846008244393 + 10 +38.64200968993697 + 20 +85.98742960063029 + 10 +36.24200968993694 + 20 +85.98742960063032 + 10 +36.10058833369962 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D3F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +94.69885095686759 + 10 +38.64200968993697 + 20 +94.5574296006303 + 10 +36.24200968993694 + 20 +94.55742960063027 + 10 +36.10058833369962 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D40 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +94.69885095686759 + 10 +32.21700968993713 + 20 +94.5574296006303 + 10 +34.61700968993716 + 20 +94.55742960063027 + 10 +34.75843104617448 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D41 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +94.67885095686778 + 10 +28.11950968993703 + 20 +94.53742960063043 + 10 +25.71950968993703 + 20 +94.53742960063043 + 10 +25.57808833369968 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D42 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +85.846008244393 + 10 +47.55200968993712 + 20 +85.98742960063029 + 10 +49.95200968993716 + 20 +85.98742960063032 + 10 +50.09343104617447 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D43 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +86.3160082443928 + 10 +43.45450968993703 + 20 +86.45742960063015 + 10 +41.05450968993702 + 20 +86.45742960063015 + 10 +40.91308833369968 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D44 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +85.846008244393 + 10 +53.97700968993696 + 20 +85.98742960063029 + 10 +51.57700968993693 + 20 +85.98742960063032 + 10 +51.43558833369961 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D45 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +94.69885095686759 + 10 +53.97700968993696 + 20 +94.5574296006303 + 10 +51.57700968993693 + 20 +94.55742960063027 + 10 +51.43558833369961 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D46 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +94.69885095686759 + 10 +47.55200968993712 + 20 +94.5574296006303 + 10 +49.95200968993716 + 20 +94.55742960063027 + 10 +50.09343104617447 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D47 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +94.67885095686778 + 10 +43.45450968993703 + 20 +94.53742960063043 + 10 +41.05450968993702 + 20 +94.53742960063043 + 10 +40.91308833369968 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D48 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +85.846008244393 + 10 +62.88700968993713 + 20 +85.98742960063029 + 10 +65.28700968993716 + 20 +85.98742960063032 + 10 +65.42843104617448 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D49 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +86.3160082443928 + 10 +58.78950968993703 + 20 +86.45742960063015 + 10 +56.38950968993703 + 20 +86.45742960063015 + 10 +56.24808833369968 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D4A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +85.846008244393 + 10 +69.31200968993697 + 20 +85.98742960063029 + 10 +66.91200968993694 + 20 +85.98742960063032 + 10 +66.77058833369962 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D4B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +94.69885095686759 + 10 +69.31200968993697 + 20 +94.5574296006303 + 10 +66.91200968993694 + 20 +94.55742960063027 + 10 +66.77058833369962 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D4C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +94.69885095686759 + 10 +62.88700968993713 + 20 +94.5574296006303 + 10 +65.28700968993716 + 20 +94.55742960063027 + 10 +65.42843104617448 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D4D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +94.67885095686778 + 10 +58.78950968993703 + 20 +94.53742960063043 + 10 +56.38950968993703 + 20 +94.53742960063043 + 10 +56.24808833369968 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D4E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +85.846008244393 + 10 +78.22200968993714 + 20 +85.98742960063029 + 10 +80.62200968993717 + 20 +85.98742960063032 + 10 +80.76343104617449 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D4F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +86.3160082443928 + 10 +74.12450968993704 + 20 +86.45742960063015 + 10 +71.72450968993704 + 20 +86.45742960063015 + 10 +71.58308833369969 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D50 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +85.846008244393 + 10 +84.64700968993698 + 20 +85.98742960063029 + 10 +82.24700968993695 + 20 +85.98742960063032 + 10 +82.10558833369963 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D51 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +94.69885095686759 + 10 +84.64700968993698 + 20 +94.5574296006303 + 10 +82.24700968993695 + 20 +94.55742960063027 + 10 +82.10558833369963 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D52 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +94.69885095686759 + 10 +78.22200968993714 + 20 +94.5574296006303 + 10 +80.62200968993717 + 20 +94.55742960063027 + 10 +80.76343104617449 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D53 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +94.67885095686778 + 10 +74.12450968993704 + 20 +94.53742960063043 + 10 +71.72450968993704 + 20 +94.53742960063043 + 10 +71.58308833369969 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D54 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +85.846008244393 + 10 +93.55700968993715 + 20 +85.98742960063029 + 10 +95.95700968993718 + 20 +85.98742960063032 + 10 +96.0984310461745 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D55 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +86.3160082443928 + 10 +89.45950968993705 + 20 +86.45742960063015 + 10 +87.05950968993704 + 20 +86.45742960063015 + 10 +86.9180883336997 + 20 +86.31600824439283 + 0 +LWPOLYLINE + 5 +D56 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +85.846008244393 + 10 +99.98200968993699 + 20 +85.98742960063029 + 10 +97.58200968993695 + 20 +85.98742960063032 + 10 +97.44058833369964 + 20 +85.846008244393 + 0 +LWPOLYLINE + 5 +D57 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +94.69885095686759 + 10 +99.98200968993699 + 20 +94.5574296006303 + 10 +97.58200968993695 + 20 +94.55742960063027 + 10 +97.44058833369964 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D58 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +94.69885095686759 + 10 +93.55700968993715 + 20 +94.5574296006303 + 10 +95.95700968993718 + 20 +94.55742960063027 + 10 +96.0984310461745 + 20 +94.69885095686759 + 0 +LWPOLYLINE + 5 +D59 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +94.67885095686778 + 10 +89.45950968993705 + 20 +94.53742960063043 + 10 +87.05950968993704 + 20 +94.53742960063043 + 10 +86.9180883336997 + 20 +94.67885095686775 + 0 +LWPOLYLINE + 5 +D5A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +95.346008244393 + 10 +-59.79299031006288 + 20 +95.48742960063029 + 10 +-57.39299031006284 + 20 +95.48742960063032 + 10 +-57.25156895382553 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D5B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +95.8160082443928 + 10 +-63.89049031006297 + 20 +95.95742960063015 + 10 +-66.29049031006298 + 20 +95.95742960063015 + 10 +-66.43191166630032 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D5C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +95.346008244393 + 10 +-53.36799031006304 + 20 +95.48742960063029 + 10 +-55.76799031006307 + 20 +95.48742960063032 + 10 +-55.90941166630039 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D5D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +104.1988509568676 + 10 +-53.36799031006304 + 20 +104.0574296006303 + 10 +-55.76799031006307 + 20 +104.0574296006303 + 10 +-55.90941166630039 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D5E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +104.1988509568676 + 10 +-59.79299031006288 + 20 +104.0574296006303 + 10 +-57.39299031006284 + 20 +104.0574296006303 + 10 +-57.25156895382553 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D5F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +104.1788509568678 + 10 +-63.89049031006297 + 20 +104.0374296006304 + 10 +-66.29049031006298 + 20 +104.0374296006304 + 10 +-66.43191166630032 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D60 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +95.346008244393 + 10 +-44.45799031006288 + 20 +95.48742960063029 + 10 +-42.05799031006284 + 20 +95.48742960063032 + 10 +-41.91656895382553 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D61 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +95.8160082443928 + 10 +-48.55549031006297 + 20 +95.95742960063015 + 10 +-50.95549031006298 + 20 +95.95742960063015 + 10 +-51.09691166630032 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D62 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +95.346008244393 + 10 +-38.03299031006303 + 20 +95.48742960063029 + 10 +-40.43299031006307 + 20 +95.48742960063032 + 10 +-40.57441166630039 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D63 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +104.1988509568676 + 10 +-38.03299031006303 + 20 +104.0574296006303 + 10 +-40.43299031006307 + 20 +104.0574296006303 + 10 +-40.57441166630039 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D64 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +104.1988509568676 + 10 +-44.45799031006288 + 20 +104.0574296006303 + 10 +-42.05799031006284 + 20 +104.0574296006303 + 10 +-41.91656895382553 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D65 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +104.1788509568678 + 10 +-48.55549031006297 + 20 +104.0374296006304 + 10 +-50.95549031006298 + 20 +104.0374296006304 + 10 +-51.09691166630032 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D66 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +95.346008244393 + 10 +-29.12299031006287 + 20 +95.48742960063029 + 10 +-26.72299031006284 + 20 +95.48742960063032 + 10 +-26.58156895382552 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D67 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +95.8160082443928 + 10 +-33.22049031006297 + 20 +95.95742960063015 + 10 +-35.62049031006298 + 20 +95.95742960063015 + 10 +-35.76191166630032 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D68 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +95.346008244393 + 10 +-22.69799031006303 + 20 +95.48742960063029 + 10 +-25.09799031006307 + 20 +95.48742960063032 + 10 +-25.23941166630038 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D69 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +104.1988509568676 + 10 +-22.69799031006303 + 20 +104.0574296006303 + 10 +-25.09799031006307 + 20 +104.0574296006303 + 10 +-25.23941166630038 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D6A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +104.1988509568676 + 10 +-29.12299031006287 + 20 +104.0574296006303 + 10 +-26.72299031006284 + 20 +104.0574296006303 + 10 +-26.58156895382552 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D6B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +104.1788509568678 + 10 +-33.22049031006297 + 20 +104.0374296006304 + 10 +-35.62049031006298 + 20 +104.0374296006304 + 10 +-35.76191166630032 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D6C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +95.346008244393 + 10 +-13.78799031006287 + 20 +95.48742960063029 + 10 +-11.38799031006284 + 20 +95.48742960063032 + 10 +-11.24656895382552 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D6D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +95.8160082443928 + 10 +-17.88549031006297 + 20 +95.95742960063015 + 10 +-20.28549031006298 + 20 +95.95742960063015 + 10 +-20.42691166630032 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D6E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +95.346008244393 + 10 +-7.362990310063033 + 20 +95.48742960063029 + 10 +-9.762990310063067 + 20 +95.48742960063032 + 10 +-9.904411666300383 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D6F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +104.1988509568676 + 10 +-7.362990310063033 + 20 +104.0574296006303 + 10 +-9.762990310063067 + 20 +104.0574296006303 + 10 +-9.904411666300383 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D70 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +104.1988509568676 + 10 +-13.78799031006287 + 20 +104.0574296006303 + 10 +-11.38799031006284 + 20 +104.0574296006303 + 10 +-11.24656895382552 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D71 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +104.1788509568678 + 10 +-17.88549031006297 + 20 +104.0374296006304 + 10 +-20.28549031006298 + 20 +104.0374296006304 + 10 +-20.42691166630032 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D72 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +95.346008244393 + 10 +1.547009689937127 + 20 +95.48742960063029 + 10 +3.947009689937161 + 20 +95.48742960063032 + 10 +4.088431046174478 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D73 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +95.8160082443928 + 10 +-2.550490310062969 + 20 +95.95742960063015 + 10 +-4.950490310062975 + 20 +95.95742960063015 + 10 +-5.091911666300319 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D74 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +95.346008244393 + 10 +7.972009689936968 + 20 +95.48742960063029 + 10 +5.572009689936934 + 20 +95.48742960063032 + 10 +5.430588333699617 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D75 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +104.1988509568676 + 10 +7.972009689936968 + 20 +104.0574296006303 + 10 +5.572009689936934 + 20 +104.0574296006303 + 10 +5.430588333699617 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D76 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +104.1988509568676 + 10 +1.547009689937127 + 20 +104.0574296006303 + 10 +3.947009689937161 + 20 +104.0574296006303 + 10 +4.088431046174478 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D77 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +104.1788509568678 + 10 +-2.550490310062969 + 20 +104.0374296006304 + 10 +-4.950490310062975 + 20 +104.0374296006304 + 10 +-5.091911666300319 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D78 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +95.346008244393 + 10 +16.88200968993714 + 20 +95.48742960063029 + 10 +19.28200968993717 + 20 +95.48742960063032 + 10 +19.42343104617449 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D79 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +95.8160082443928 + 10 +12.78450968993704 + 20 +95.95742960063015 + 10 +10.38450968993703 + 20 +95.95742960063015 + 10 +10.24308833369969 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D7A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +95.346008244393 + 10 +23.30700968993698 + 20 +95.48742960063029 + 10 +20.90700968993694 + 20 +95.48742960063032 + 10 +20.76558833369963 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D7B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +104.1988509568676 + 10 +23.30700968993698 + 20 +104.0574296006303 + 10 +20.90700968993694 + 20 +104.0574296006303 + 10 +20.76558833369963 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D7C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +104.1988509568676 + 10 +16.88200968993714 + 20 +104.0574296006303 + 10 +19.28200968993717 + 20 +104.0574296006303 + 10 +19.42343104617449 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D7D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +104.1788509568678 + 10 +12.78450968993704 + 20 +104.0374296006304 + 10 +10.38450968993703 + 20 +104.0374296006304 + 10 +10.24308833369969 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D7E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +95.346008244393 + 10 +32.21700968993713 + 20 +95.48742960063029 + 10 +34.61700968993716 + 20 +95.48742960063032 + 10 +34.75843104617448 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D7F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +95.8160082443928 + 10 +28.11950968993703 + 20 +95.95742960063015 + 10 +25.71950968993703 + 20 +95.95742960063015 + 10 +25.57808833369968 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D80 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +95.346008244393 + 10 +38.64200968993697 + 20 +95.48742960063029 + 10 +36.24200968993694 + 20 +95.48742960063032 + 10 +36.10058833369962 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D81 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +104.1988509568676 + 10 +38.64200968993697 + 20 +104.0574296006303 + 10 +36.24200968993694 + 20 +104.0574296006303 + 10 +36.10058833369962 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D82 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +104.1988509568676 + 10 +32.21700968993713 + 20 +104.0574296006303 + 10 +34.61700968993716 + 20 +104.0574296006303 + 10 +34.75843104617448 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D83 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +104.1788509568678 + 10 +28.11950968993703 + 20 +104.0374296006304 + 10 +25.71950968993703 + 20 +104.0374296006304 + 10 +25.57808833369968 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D84 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +95.346008244393 + 10 +47.55200968993712 + 20 +95.48742960063029 + 10 +49.95200968993716 + 20 +95.48742960063032 + 10 +50.09343104617447 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D85 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +95.8160082443928 + 10 +43.45450968993703 + 20 +95.95742960063015 + 10 +41.05450968993702 + 20 +95.95742960063015 + 10 +40.91308833369968 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D86 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +95.346008244393 + 10 +53.97700968993696 + 20 +95.48742960063029 + 10 +51.57700968993693 + 20 +95.48742960063032 + 10 +51.43558833369961 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D87 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +104.1988509568676 + 10 +53.97700968993696 + 20 +104.0574296006303 + 10 +51.57700968993693 + 20 +104.0574296006303 + 10 +51.43558833369961 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D88 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +104.1988509568676 + 10 +47.55200968993712 + 20 +104.0574296006303 + 10 +49.95200968993716 + 20 +104.0574296006303 + 10 +50.09343104617447 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D89 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +104.1788509568678 + 10 +43.45450968993703 + 20 +104.0374296006304 + 10 +41.05450968993702 + 20 +104.0374296006304 + 10 +40.91308833369968 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D8A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +95.346008244393 + 10 +62.88700968993713 + 20 +95.48742960063029 + 10 +65.28700968993716 + 20 +95.48742960063032 + 10 +65.42843104617448 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D8B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +95.8160082443928 + 10 +58.78950968993703 + 20 +95.95742960063015 + 10 +56.38950968993703 + 20 +95.95742960063015 + 10 +56.24808833369968 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D8C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +95.346008244393 + 10 +69.31200968993697 + 20 +95.48742960063029 + 10 +66.91200968993694 + 20 +95.48742960063032 + 10 +66.77058833369962 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D8D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +104.1988509568676 + 10 +69.31200968993697 + 20 +104.0574296006303 + 10 +66.91200968993694 + 20 +104.0574296006303 + 10 +66.77058833369962 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D8E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +104.1988509568676 + 10 +62.88700968993713 + 20 +104.0574296006303 + 10 +65.28700968993716 + 20 +104.0574296006303 + 10 +65.42843104617448 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D8F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +104.1788509568678 + 10 +58.78950968993703 + 20 +104.0374296006304 + 10 +56.38950968993703 + 20 +104.0374296006304 + 10 +56.24808833369968 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D90 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +95.346008244393 + 10 +78.22200968993714 + 20 +95.48742960063029 + 10 +80.62200968993717 + 20 +95.48742960063032 + 10 +80.76343104617449 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D91 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +95.8160082443928 + 10 +74.12450968993704 + 20 +95.95742960063015 + 10 +71.72450968993704 + 20 +95.95742960063015 + 10 +71.58308833369969 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D92 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +95.346008244393 + 10 +84.64700968993698 + 20 +95.48742960063029 + 10 +82.24700968993695 + 20 +95.48742960063032 + 10 +82.10558833369963 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D93 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +104.1988509568676 + 10 +84.64700968993698 + 20 +104.0574296006303 + 10 +82.24700968993695 + 20 +104.0574296006303 + 10 +82.10558833369963 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D94 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +104.1988509568676 + 10 +78.22200968993714 + 20 +104.0574296006303 + 10 +80.62200968993717 + 20 +104.0574296006303 + 10 +80.76343104617449 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D95 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +104.1788509568678 + 10 +74.12450968993704 + 20 +104.0374296006304 + 10 +71.72450968993704 + 20 +104.0374296006304 + 10 +71.58308833369969 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D96 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +95.346008244393 + 10 +93.55700968993715 + 20 +95.48742960063029 + 10 +95.95700968993718 + 20 +95.48742960063032 + 10 +96.0984310461745 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D97 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +95.8160082443928 + 10 +89.45950968993705 + 20 +95.95742960063015 + 10 +87.05950968993704 + 20 +95.95742960063015 + 10 +86.9180883336997 + 20 +95.81600824439283 + 0 +LWPOLYLINE + 5 +D98 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +95.346008244393 + 10 +99.98200968993699 + 20 +95.48742960063029 + 10 +97.58200968993695 + 20 +95.48742960063032 + 10 +97.44058833369964 + 20 +95.346008244393 + 0 +LWPOLYLINE + 5 +D99 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +104.1988509568676 + 10 +99.98200968993699 + 20 +104.0574296006303 + 10 +97.58200968993695 + 20 +104.0574296006303 + 10 +97.44058833369964 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D9A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +104.1988509568676 + 10 +93.55700968993715 + 20 +104.0574296006303 + 10 +95.95700968993718 + 20 +104.0574296006303 + 10 +96.0984310461745 + 20 +104.1988509568676 + 0 +LWPOLYLINE + 5 +D9B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +104.1788509568678 + 10 +89.45950968993705 + 20 +104.0374296006304 + 10 +87.05950968993704 + 20 +104.0374296006304 + 10 +86.9180883336997 + 20 +104.1788509568677 + 0 +LWPOLYLINE + 5 +D9C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +104.846008244393 + 10 +-59.79299031006288 + 20 +104.9874296006303 + 10 +-57.39299031006284 + 20 +104.9874296006303 + 10 +-57.25156895382553 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +D9D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +105.3160082443928 + 10 +-63.89049031006297 + 20 +105.4574296006301 + 10 +-66.29049031006298 + 20 +105.4574296006301 + 10 +-66.43191166630032 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +D9E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +104.846008244393 + 10 +-53.36799031006304 + 20 +104.9874296006303 + 10 +-55.76799031006307 + 20 +104.9874296006303 + 10 +-55.90941166630039 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +D9F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +113.6988509568676 + 10 +-53.36799031006304 + 20 +113.5574296006303 + 10 +-55.76799031006307 + 20 +113.5574296006303 + 10 +-55.90941166630039 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DA0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +113.6988509568676 + 10 +-59.79299031006288 + 20 +113.5574296006303 + 10 +-57.39299031006284 + 20 +113.5574296006303 + 10 +-57.25156895382553 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DA1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +113.6788509568678 + 10 +-63.89049031006297 + 20 +113.5374296006304 + 10 +-66.29049031006298 + 20 +113.5374296006304 + 10 +-66.43191166630032 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DA2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +104.846008244393 + 10 +-44.45799031006288 + 20 +104.9874296006303 + 10 +-42.05799031006284 + 20 +104.9874296006303 + 10 +-41.91656895382553 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DA3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +105.3160082443928 + 10 +-48.55549031006297 + 20 +105.4574296006301 + 10 +-50.95549031006298 + 20 +105.4574296006301 + 10 +-51.09691166630032 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DA4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +104.846008244393 + 10 +-38.03299031006303 + 20 +104.9874296006303 + 10 +-40.43299031006307 + 20 +104.9874296006303 + 10 +-40.57441166630039 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DA5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +113.6988509568676 + 10 +-38.03299031006303 + 20 +113.5574296006303 + 10 +-40.43299031006307 + 20 +113.5574296006303 + 10 +-40.57441166630039 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DA6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +113.6988509568676 + 10 +-44.45799031006288 + 20 +113.5574296006303 + 10 +-42.05799031006284 + 20 +113.5574296006303 + 10 +-41.91656895382553 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DA7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +113.6788509568678 + 10 +-48.55549031006297 + 20 +113.5374296006304 + 10 +-50.95549031006298 + 20 +113.5374296006304 + 10 +-51.09691166630032 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DA8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +104.846008244393 + 10 +-29.12299031006287 + 20 +104.9874296006303 + 10 +-26.72299031006284 + 20 +104.9874296006303 + 10 +-26.58156895382552 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DA9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +105.3160082443928 + 10 +-33.22049031006297 + 20 +105.4574296006301 + 10 +-35.62049031006298 + 20 +105.4574296006301 + 10 +-35.76191166630032 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DAA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +104.846008244393 + 10 +-22.69799031006303 + 20 +104.9874296006303 + 10 +-25.09799031006307 + 20 +104.9874296006303 + 10 +-25.23941166630038 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DAB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +113.6988509568676 + 10 +-22.69799031006303 + 20 +113.5574296006303 + 10 +-25.09799031006307 + 20 +113.5574296006303 + 10 +-25.23941166630038 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DAC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +113.6988509568676 + 10 +-29.12299031006287 + 20 +113.5574296006303 + 10 +-26.72299031006284 + 20 +113.5574296006303 + 10 +-26.58156895382552 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DAD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +113.6788509568678 + 10 +-33.22049031006297 + 20 +113.5374296006304 + 10 +-35.62049031006298 + 20 +113.5374296006304 + 10 +-35.76191166630032 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DAE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +104.846008244393 + 10 +-13.78799031006287 + 20 +104.9874296006303 + 10 +-11.38799031006284 + 20 +104.9874296006303 + 10 +-11.24656895382552 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DAF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +105.3160082443928 + 10 +-17.88549031006297 + 20 +105.4574296006301 + 10 +-20.28549031006298 + 20 +105.4574296006301 + 10 +-20.42691166630032 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DB0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +104.846008244393 + 10 +-7.362990310063033 + 20 +104.9874296006303 + 10 +-9.762990310063067 + 20 +104.9874296006303 + 10 +-9.904411666300383 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DB1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +113.6988509568676 + 10 +-7.362990310063033 + 20 +113.5574296006303 + 10 +-9.762990310063067 + 20 +113.5574296006303 + 10 +-9.904411666300383 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DB2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +113.6988509568676 + 10 +-13.78799031006287 + 20 +113.5574296006303 + 10 +-11.38799031006284 + 20 +113.5574296006303 + 10 +-11.24656895382552 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DB3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +113.6788509568678 + 10 +-17.88549031006297 + 20 +113.5374296006304 + 10 +-20.28549031006298 + 20 +113.5374296006304 + 10 +-20.42691166630032 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DB4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +104.846008244393 + 10 +1.547009689937127 + 20 +104.9874296006303 + 10 +3.947009689937161 + 20 +104.9874296006303 + 10 +4.088431046174478 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DB5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +105.3160082443928 + 10 +-2.550490310062969 + 20 +105.4574296006301 + 10 +-4.950490310062975 + 20 +105.4574296006301 + 10 +-5.091911666300319 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DB6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +104.846008244393 + 10 +7.972009689936968 + 20 +104.9874296006303 + 10 +5.572009689936934 + 20 +104.9874296006303 + 10 +5.430588333699617 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DB7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +113.6988509568676 + 10 +7.972009689936968 + 20 +113.5574296006303 + 10 +5.572009689936934 + 20 +113.5574296006303 + 10 +5.430588333699617 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DB8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +113.6988509568676 + 10 +1.547009689937127 + 20 +113.5574296006303 + 10 +3.947009689937161 + 20 +113.5574296006303 + 10 +4.088431046174478 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DB9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +113.6788509568678 + 10 +-2.550490310062969 + 20 +113.5374296006304 + 10 +-4.950490310062975 + 20 +113.5374296006304 + 10 +-5.091911666300319 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DBA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +104.846008244393 + 10 +16.88200968993714 + 20 +104.9874296006303 + 10 +19.28200968993717 + 20 +104.9874296006303 + 10 +19.42343104617449 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DBB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +105.3160082443928 + 10 +12.78450968993704 + 20 +105.4574296006301 + 10 +10.38450968993703 + 20 +105.4574296006301 + 10 +10.24308833369969 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DBC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +104.846008244393 + 10 +23.30700968993698 + 20 +104.9874296006303 + 10 +20.90700968993694 + 20 +104.9874296006303 + 10 +20.76558833369963 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DBD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +113.6988509568676 + 10 +23.30700968993698 + 20 +113.5574296006303 + 10 +20.90700968993694 + 20 +113.5574296006303 + 10 +20.76558833369963 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DBE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +113.6988509568676 + 10 +16.88200968993714 + 20 +113.5574296006303 + 10 +19.28200968993717 + 20 +113.5574296006303 + 10 +19.42343104617449 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DBF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +113.6788509568678 + 10 +12.78450968993704 + 20 +113.5374296006304 + 10 +10.38450968993703 + 20 +113.5374296006304 + 10 +10.24308833369969 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DC0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +104.846008244393 + 10 +32.21700968993713 + 20 +104.9874296006303 + 10 +34.61700968993716 + 20 +104.9874296006303 + 10 +34.75843104617448 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DC1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +105.3160082443928 + 10 +28.11950968993703 + 20 +105.4574296006301 + 10 +25.71950968993703 + 20 +105.4574296006301 + 10 +25.57808833369968 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DC2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +104.846008244393 + 10 +38.64200968993697 + 20 +104.9874296006303 + 10 +36.24200968993694 + 20 +104.9874296006303 + 10 +36.10058833369962 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DC3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +113.6988509568676 + 10 +38.64200968993697 + 20 +113.5574296006303 + 10 +36.24200968993694 + 20 +113.5574296006303 + 10 +36.10058833369962 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DC4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +113.6988509568676 + 10 +32.21700968993713 + 20 +113.5574296006303 + 10 +34.61700968993716 + 20 +113.5574296006303 + 10 +34.75843104617448 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DC5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +113.6788509568678 + 10 +28.11950968993703 + 20 +113.5374296006304 + 10 +25.71950968993703 + 20 +113.5374296006304 + 10 +25.57808833369968 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DC6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +104.846008244393 + 10 +47.55200968993712 + 20 +104.9874296006303 + 10 +49.95200968993716 + 20 +104.9874296006303 + 10 +50.09343104617447 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DC7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +105.3160082443928 + 10 +43.45450968993703 + 20 +105.4574296006301 + 10 +41.05450968993702 + 20 +105.4574296006301 + 10 +40.91308833369968 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DC8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +104.846008244393 + 10 +53.97700968993696 + 20 +104.9874296006303 + 10 +51.57700968993693 + 20 +104.9874296006303 + 10 +51.43558833369961 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DC9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +113.6988509568676 + 10 +53.97700968993696 + 20 +113.5574296006303 + 10 +51.57700968993693 + 20 +113.5574296006303 + 10 +51.43558833369961 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DCA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +113.6988509568676 + 10 +47.55200968993712 + 20 +113.5574296006303 + 10 +49.95200968993716 + 20 +113.5574296006303 + 10 +50.09343104617447 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DCB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +113.6788509568678 + 10 +43.45450968993703 + 20 +113.5374296006304 + 10 +41.05450968993702 + 20 +113.5374296006304 + 10 +40.91308833369968 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DCC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +104.846008244393 + 10 +62.88700968993713 + 20 +104.9874296006303 + 10 +65.28700968993716 + 20 +104.9874296006303 + 10 +65.42843104617448 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DCD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +105.3160082443928 + 10 +58.78950968993703 + 20 +105.4574296006301 + 10 +56.38950968993703 + 20 +105.4574296006301 + 10 +56.24808833369968 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DCE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +104.846008244393 + 10 +69.31200968993697 + 20 +104.9874296006303 + 10 +66.91200968993694 + 20 +104.9874296006303 + 10 +66.77058833369962 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DCF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +113.6988509568676 + 10 +69.31200968993697 + 20 +113.5574296006303 + 10 +66.91200968993694 + 20 +113.5574296006303 + 10 +66.77058833369962 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DD0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +113.6988509568676 + 10 +62.88700968993713 + 20 +113.5574296006303 + 10 +65.28700968993716 + 20 +113.5574296006303 + 10 +65.42843104617448 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DD1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +113.6788509568678 + 10 +58.78950968993703 + 20 +113.5374296006304 + 10 +56.38950968993703 + 20 +113.5374296006304 + 10 +56.24808833369968 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DD2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +104.846008244393 + 10 +78.22200968993714 + 20 +104.9874296006303 + 10 +80.62200968993717 + 20 +104.9874296006303 + 10 +80.76343104617449 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DD3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +105.3160082443928 + 10 +74.12450968993704 + 20 +105.4574296006301 + 10 +71.72450968993704 + 20 +105.4574296006301 + 10 +71.58308833369969 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DD4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +104.846008244393 + 10 +84.64700968993698 + 20 +104.9874296006303 + 10 +82.24700968993695 + 20 +104.9874296006303 + 10 +82.10558833369963 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DD5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +113.6988509568676 + 10 +84.64700968993698 + 20 +113.5574296006303 + 10 +82.24700968993695 + 20 +113.5574296006303 + 10 +82.10558833369963 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DD6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +113.6988509568676 + 10 +78.22200968993714 + 20 +113.5574296006303 + 10 +80.62200968993717 + 20 +113.5574296006303 + 10 +80.76343104617449 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DD7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +113.6788509568678 + 10 +74.12450968993704 + 20 +113.5374296006304 + 10 +71.72450968993704 + 20 +113.5374296006304 + 10 +71.58308833369969 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DD8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +104.846008244393 + 10 +93.55700968993715 + 20 +104.9874296006303 + 10 +95.95700968993718 + 20 +104.9874296006303 + 10 +96.0984310461745 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DD9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +105.3160082443928 + 10 +89.45950968993705 + 20 +105.4574296006301 + 10 +87.05950968993704 + 20 +105.4574296006301 + 10 +86.9180883336997 + 20 +105.3160082443928 + 0 +LWPOLYLINE + 5 +DDA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +104.846008244393 + 10 +99.98200968993699 + 20 +104.9874296006303 + 10 +97.58200968993695 + 20 +104.9874296006303 + 10 +97.44058833369964 + 20 +104.846008244393 + 0 +LWPOLYLINE + 5 +DDB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +113.6988509568676 + 10 +99.98200968993699 + 20 +113.5574296006303 + 10 +97.58200968993695 + 20 +113.5574296006303 + 10 +97.44058833369964 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DDC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +113.6988509568676 + 10 +93.55700968993715 + 20 +113.5574296006303 + 10 +95.95700968993718 + 20 +113.5574296006303 + 10 +96.0984310461745 + 20 +113.6988509568676 + 0 +LWPOLYLINE + 5 +DDD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +113.6788509568678 + 10 +89.45950968993705 + 20 +113.5374296006304 + 10 +87.05950968993704 + 20 +113.5374296006304 + 10 +86.9180883336997 + 20 +113.6788509568677 + 0 +LWPOLYLINE + 5 +DDE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +114.346008244393 + 10 +-59.79299031006288 + 20 +114.4874296006303 + 10 +-57.39299031006284 + 20 +114.4874296006303 + 10 +-57.25156895382553 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DDF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +114.8160082443928 + 10 +-63.89049031006297 + 20 +114.9574296006301 + 10 +-66.29049031006298 + 20 +114.9574296006301 + 10 +-66.43191166630032 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DE0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +114.346008244393 + 10 +-53.36799031006304 + 20 +114.4874296006303 + 10 +-55.76799031006307 + 20 +114.4874296006303 + 10 +-55.90941166630039 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DE1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +123.1988509568676 + 10 +-53.36799031006304 + 20 +123.0574296006303 + 10 +-55.76799031006307 + 20 +123.0574296006303 + 10 +-55.90941166630039 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DE2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +123.1988509568676 + 10 +-59.79299031006288 + 20 +123.0574296006303 + 10 +-57.39299031006284 + 20 +123.0574296006303 + 10 +-57.25156895382553 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DE3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +123.1788509568678 + 10 +-63.89049031006297 + 20 +123.0374296006304 + 10 +-66.29049031006298 + 20 +123.0374296006304 + 10 +-66.43191166630032 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +DE4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +114.346008244393 + 10 +-44.45799031006288 + 20 +114.4874296006303 + 10 +-42.05799031006284 + 20 +114.4874296006303 + 10 +-41.91656895382553 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DE5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +114.8160082443928 + 10 +-48.55549031006297 + 20 +114.9574296006301 + 10 +-50.95549031006298 + 20 +114.9574296006301 + 10 +-51.09691166630032 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DE6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +114.346008244393 + 10 +-38.03299031006303 + 20 +114.4874296006303 + 10 +-40.43299031006307 + 20 +114.4874296006303 + 10 +-40.57441166630039 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DE7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +123.1988509568676 + 10 +-38.03299031006303 + 20 +123.0574296006303 + 10 +-40.43299031006307 + 20 +123.0574296006303 + 10 +-40.57441166630039 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DE8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +123.1988509568676 + 10 +-44.45799031006288 + 20 +123.0574296006303 + 10 +-42.05799031006284 + 20 +123.0574296006303 + 10 +-41.91656895382553 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DE9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +123.1788509568678 + 10 +-48.55549031006297 + 20 +123.0374296006304 + 10 +-50.95549031006298 + 20 +123.0374296006304 + 10 +-51.09691166630032 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +DEA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +114.346008244393 + 10 +-29.12299031006287 + 20 +114.4874296006303 + 10 +-26.72299031006284 + 20 +114.4874296006303 + 10 +-26.58156895382552 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DEB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +114.8160082443928 + 10 +-33.22049031006297 + 20 +114.9574296006301 + 10 +-35.62049031006298 + 20 +114.9574296006301 + 10 +-35.76191166630032 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DEC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +114.346008244393 + 10 +-22.69799031006303 + 20 +114.4874296006303 + 10 +-25.09799031006307 + 20 +114.4874296006303 + 10 +-25.23941166630038 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +123.1988509568676 + 10 +-22.69799031006303 + 20 +123.0574296006303 + 10 +-25.09799031006307 + 20 +123.0574296006303 + 10 +-25.23941166630038 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DEE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +123.1988509568676 + 10 +-29.12299031006287 + 20 +123.0574296006303 + 10 +-26.72299031006284 + 20 +123.0574296006303 + 10 +-26.58156895382552 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DEF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +123.1788509568678 + 10 +-33.22049031006297 + 20 +123.0374296006304 + 10 +-35.62049031006298 + 20 +123.0374296006304 + 10 +-35.76191166630032 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +DF0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +114.346008244393 + 10 +-13.78799031006287 + 20 +114.4874296006303 + 10 +-11.38799031006284 + 20 +114.4874296006303 + 10 +-11.24656895382552 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DF1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +114.8160082443928 + 10 +-17.88549031006297 + 20 +114.9574296006301 + 10 +-20.28549031006298 + 20 +114.9574296006301 + 10 +-20.42691166630032 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DF2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +114.346008244393 + 10 +-7.362990310063033 + 20 +114.4874296006303 + 10 +-9.762990310063067 + 20 +114.4874296006303 + 10 +-9.904411666300383 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DF3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +123.1988509568676 + 10 +-7.362990310063033 + 20 +123.0574296006303 + 10 +-9.762990310063067 + 20 +123.0574296006303 + 10 +-9.904411666300383 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DF4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +123.1988509568676 + 10 +-13.78799031006287 + 20 +123.0574296006303 + 10 +-11.38799031006284 + 20 +123.0574296006303 + 10 +-11.24656895382552 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DF5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +123.1788509568678 + 10 +-17.88549031006297 + 20 +123.0374296006304 + 10 +-20.28549031006298 + 20 +123.0374296006304 + 10 +-20.42691166630032 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +DF6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +114.346008244393 + 10 +1.547009689937127 + 20 +114.4874296006303 + 10 +3.947009689937161 + 20 +114.4874296006303 + 10 +4.088431046174478 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DF7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +114.8160082443928 + 10 +-2.550490310062969 + 20 +114.9574296006301 + 10 +-4.950490310062975 + 20 +114.9574296006301 + 10 +-5.091911666300319 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DF8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +114.346008244393 + 10 +7.972009689936968 + 20 +114.4874296006303 + 10 +5.572009689936934 + 20 +114.4874296006303 + 10 +5.430588333699617 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DF9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +123.1988509568676 + 10 +7.972009689936968 + 20 +123.0574296006303 + 10 +5.572009689936934 + 20 +123.0574296006303 + 10 +5.430588333699617 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DFA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +123.1988509568676 + 10 +1.547009689937127 + 20 +123.0574296006303 + 10 +3.947009689937161 + 20 +123.0574296006303 + 10 +4.088431046174478 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +DFB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +123.1788509568678 + 10 +-2.550490310062969 + 20 +123.0374296006304 + 10 +-4.950490310062975 + 20 +123.0374296006304 + 10 +-5.091911666300319 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +DFC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +114.346008244393 + 10 +16.88200968993714 + 20 +114.4874296006303 + 10 +19.28200968993717 + 20 +114.4874296006303 + 10 +19.42343104617449 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DFD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +114.8160082443928 + 10 +12.78450968993704 + 20 +114.9574296006301 + 10 +10.38450968993703 + 20 +114.9574296006301 + 10 +10.24308833369969 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +DFE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +114.346008244393 + 10 +23.30700968993698 + 20 +114.4874296006303 + 10 +20.90700968993694 + 20 +114.4874296006303 + 10 +20.76558833369963 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +DFF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +123.1988509568676 + 10 +23.30700968993698 + 20 +123.0574296006303 + 10 +20.90700968993694 + 20 +123.0574296006303 + 10 +20.76558833369963 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E00 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +123.1988509568676 + 10 +16.88200968993714 + 20 +123.0574296006303 + 10 +19.28200968993717 + 20 +123.0574296006303 + 10 +19.42343104617449 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E01 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +123.1788509568678 + 10 +12.78450968993704 + 20 +123.0374296006304 + 10 +10.38450968993703 + 20 +123.0374296006304 + 10 +10.24308833369969 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E02 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +114.346008244393 + 10 +32.21700968993713 + 20 +114.4874296006303 + 10 +34.61700968993716 + 20 +114.4874296006303 + 10 +34.75843104617448 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E03 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +114.8160082443928 + 10 +28.11950968993703 + 20 +114.9574296006301 + 10 +25.71950968993703 + 20 +114.9574296006301 + 10 +25.57808833369968 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +E04 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +114.346008244393 + 10 +38.64200968993697 + 20 +114.4874296006303 + 10 +36.24200968993694 + 20 +114.4874296006303 + 10 +36.10058833369962 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E05 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +123.1988509568676 + 10 +38.64200968993697 + 20 +123.0574296006303 + 10 +36.24200968993694 + 20 +123.0574296006303 + 10 +36.10058833369962 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E06 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +123.1988509568676 + 10 +32.21700968993713 + 20 +123.0574296006303 + 10 +34.61700968993716 + 20 +123.0574296006303 + 10 +34.75843104617448 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E07 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +123.1788509568678 + 10 +28.11950968993703 + 20 +123.0374296006304 + 10 +25.71950968993703 + 20 +123.0374296006304 + 10 +25.57808833369968 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E08 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +114.346008244393 + 10 +47.55200968993712 + 20 +114.4874296006303 + 10 +49.95200968993716 + 20 +114.4874296006303 + 10 +50.09343104617447 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E09 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +114.8160082443928 + 10 +43.45450968993703 + 20 +114.9574296006301 + 10 +41.05450968993702 + 20 +114.9574296006301 + 10 +40.91308833369968 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +E0A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +114.346008244393 + 10 +53.97700968993696 + 20 +114.4874296006303 + 10 +51.57700968993693 + 20 +114.4874296006303 + 10 +51.43558833369961 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E0B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +123.1988509568676 + 10 +53.97700968993696 + 20 +123.0574296006303 + 10 +51.57700968993693 + 20 +123.0574296006303 + 10 +51.43558833369961 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E0C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +123.1988509568676 + 10 +47.55200968993712 + 20 +123.0574296006303 + 10 +49.95200968993716 + 20 +123.0574296006303 + 10 +50.09343104617447 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E0D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +123.1788509568678 + 10 +43.45450968993703 + 20 +123.0374296006304 + 10 +41.05450968993702 + 20 +123.0374296006304 + 10 +40.91308833369968 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E0E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +114.346008244393 + 10 +62.88700968993713 + 20 +114.4874296006303 + 10 +65.28700968993716 + 20 +114.4874296006303 + 10 +65.42843104617448 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E0F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +114.8160082443928 + 10 +58.78950968993703 + 20 +114.9574296006301 + 10 +56.38950968993703 + 20 +114.9574296006301 + 10 +56.24808833369968 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +E10 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +114.346008244393 + 10 +69.31200968993697 + 20 +114.4874296006303 + 10 +66.91200968993694 + 20 +114.4874296006303 + 10 +66.77058833369962 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E11 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +123.1988509568676 + 10 +69.31200968993697 + 20 +123.0574296006303 + 10 +66.91200968993694 + 20 +123.0574296006303 + 10 +66.77058833369962 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E12 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +123.1988509568676 + 10 +62.88700968993713 + 20 +123.0574296006303 + 10 +65.28700968993716 + 20 +123.0574296006303 + 10 +65.42843104617448 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E13 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +123.1788509568678 + 10 +58.78950968993703 + 20 +123.0374296006304 + 10 +56.38950968993703 + 20 +123.0374296006304 + 10 +56.24808833369968 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E14 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +114.346008244393 + 10 +78.22200968993714 + 20 +114.4874296006303 + 10 +80.62200968993717 + 20 +114.4874296006303 + 10 +80.76343104617449 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E15 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +114.8160082443928 + 10 +74.12450968993704 + 20 +114.9574296006301 + 10 +71.72450968993704 + 20 +114.9574296006301 + 10 +71.58308833369969 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +E16 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +114.346008244393 + 10 +84.64700968993698 + 20 +114.4874296006303 + 10 +82.24700968993695 + 20 +114.4874296006303 + 10 +82.10558833369963 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E17 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +123.1988509568676 + 10 +84.64700968993698 + 20 +123.0574296006303 + 10 +82.24700968993695 + 20 +123.0574296006303 + 10 +82.10558833369963 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E18 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +123.1988509568676 + 10 +78.22200968993714 + 20 +123.0574296006303 + 10 +80.62200968993717 + 20 +123.0574296006303 + 10 +80.76343104617449 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E19 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +123.1788509568678 + 10 +74.12450968993704 + 20 +123.0374296006304 + 10 +71.72450968993704 + 20 +123.0374296006304 + 10 +71.58308833369969 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E1A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +114.346008244393 + 10 +93.55700968993715 + 20 +114.4874296006303 + 10 +95.95700968993718 + 20 +114.4874296006303 + 10 +96.0984310461745 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E1B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +114.8160082443928 + 10 +89.45950968993705 + 20 +114.9574296006301 + 10 +87.05950968993704 + 20 +114.9574296006301 + 10 +86.9180883336997 + 20 +114.8160082443928 + 0 +LWPOLYLINE + 5 +E1C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +114.346008244393 + 10 +99.98200968993699 + 20 +114.4874296006303 + 10 +97.58200968993695 + 20 +114.4874296006303 + 10 +97.44058833369964 + 20 +114.346008244393 + 0 +LWPOLYLINE + 5 +E1D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +123.1988509568676 + 10 +99.98200968993699 + 20 +123.0574296006303 + 10 +97.58200968993695 + 20 +123.0574296006303 + 10 +97.44058833369964 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E1E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +123.1988509568676 + 10 +93.55700968993715 + 20 +123.0574296006303 + 10 +95.95700968993718 + 20 +123.0574296006303 + 10 +96.0984310461745 + 20 +123.1988509568676 + 0 +LWPOLYLINE + 5 +E1F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +123.1788509568678 + 10 +89.45950968993705 + 20 +123.0374296006304 + 10 +87.05950968993704 + 20 +123.0374296006304 + 10 +86.9180883336997 + 20 +123.1788509568677 + 0 +LWPOLYLINE + 5 +E20 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +123.846008244393 + 10 +-59.79299031006288 + 20 +123.9874296006303 + 10 +-57.39299031006284 + 20 +123.9874296006303 + 10 +-57.25156895382553 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E21 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +124.3160082443928 + 10 +-63.89049031006297 + 20 +124.4574296006301 + 10 +-66.29049031006298 + 20 +124.4574296006301 + 10 +-66.43191166630032 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E22 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +123.846008244393 + 10 +-53.36799031006304 + 20 +123.9874296006303 + 10 +-55.76799031006307 + 20 +123.9874296006303 + 10 +-55.90941166630039 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E23 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +132.6988509568676 + 10 +-53.36799031006304 + 20 +132.5574296006303 + 10 +-55.76799031006307 + 20 +132.5574296006303 + 10 +-55.90941166630039 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E24 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +132.6988509568676 + 10 +-59.79299031006288 + 20 +132.5574296006303 + 10 +-57.39299031006284 + 20 +132.5574296006303 + 10 +-57.25156895382553 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E25 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +132.6788509568678 + 10 +-63.89049031006297 + 20 +132.5374296006304 + 10 +-66.29049031006298 + 20 +132.5374296006304 + 10 +-66.43191166630032 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E26 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +123.846008244393 + 10 +-44.45799031006288 + 20 +123.9874296006303 + 10 +-42.05799031006284 + 20 +123.9874296006303 + 10 +-41.91656895382553 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E27 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +124.3160082443928 + 10 +-48.55549031006297 + 20 +124.4574296006301 + 10 +-50.95549031006298 + 20 +124.4574296006301 + 10 +-51.09691166630032 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E28 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +123.846008244393 + 10 +-38.03299031006303 + 20 +123.9874296006303 + 10 +-40.43299031006307 + 20 +123.9874296006303 + 10 +-40.57441166630039 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E29 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +132.6988509568676 + 10 +-38.03299031006303 + 20 +132.5574296006303 + 10 +-40.43299031006307 + 20 +132.5574296006303 + 10 +-40.57441166630039 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E2A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +132.6988509568676 + 10 +-44.45799031006288 + 20 +132.5574296006303 + 10 +-42.05799031006284 + 20 +132.5574296006303 + 10 +-41.91656895382553 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E2B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +132.6788509568678 + 10 +-48.55549031006297 + 20 +132.5374296006304 + 10 +-50.95549031006298 + 20 +132.5374296006304 + 10 +-51.09691166630032 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E2C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +123.846008244393 + 10 +-29.12299031006287 + 20 +123.9874296006303 + 10 +-26.72299031006284 + 20 +123.9874296006303 + 10 +-26.58156895382552 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E2D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +124.3160082443928 + 10 +-33.22049031006297 + 20 +124.4574296006301 + 10 +-35.62049031006298 + 20 +124.4574296006301 + 10 +-35.76191166630032 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E2E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +123.846008244393 + 10 +-22.69799031006303 + 20 +123.9874296006303 + 10 +-25.09799031006307 + 20 +123.9874296006303 + 10 +-25.23941166630038 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E2F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +132.6988509568676 + 10 +-22.69799031006303 + 20 +132.5574296006303 + 10 +-25.09799031006307 + 20 +132.5574296006303 + 10 +-25.23941166630038 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E30 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +132.6988509568676 + 10 +-29.12299031006287 + 20 +132.5574296006303 + 10 +-26.72299031006284 + 20 +132.5574296006303 + 10 +-26.58156895382552 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E31 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +132.6788509568678 + 10 +-33.22049031006297 + 20 +132.5374296006304 + 10 +-35.62049031006298 + 20 +132.5374296006304 + 10 +-35.76191166630032 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E32 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +123.846008244393 + 10 +-13.78799031006287 + 20 +123.9874296006303 + 10 +-11.38799031006284 + 20 +123.9874296006303 + 10 +-11.24656895382552 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E33 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +124.3160082443928 + 10 +-17.88549031006297 + 20 +124.4574296006301 + 10 +-20.28549031006298 + 20 +124.4574296006301 + 10 +-20.42691166630032 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E34 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +123.846008244393 + 10 +-7.362990310063033 + 20 +123.9874296006303 + 10 +-9.762990310063067 + 20 +123.9874296006303 + 10 +-9.904411666300383 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E35 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +132.6988509568676 + 10 +-7.362990310063033 + 20 +132.5574296006303 + 10 +-9.762990310063067 + 20 +132.5574296006303 + 10 +-9.904411666300383 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E36 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +132.6988509568676 + 10 +-13.78799031006287 + 20 +132.5574296006303 + 10 +-11.38799031006284 + 20 +132.5574296006303 + 10 +-11.24656895382552 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E37 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +132.6788509568678 + 10 +-17.88549031006297 + 20 +132.5374296006304 + 10 +-20.28549031006298 + 20 +132.5374296006304 + 10 +-20.42691166630032 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E38 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +123.846008244393 + 10 +1.547009689937127 + 20 +123.9874296006303 + 10 +3.947009689937161 + 20 +123.9874296006303 + 10 +4.088431046174478 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E39 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +124.3160082443928 + 10 +-2.550490310062969 + 20 +124.4574296006301 + 10 +-4.950490310062975 + 20 +124.4574296006301 + 10 +-5.091911666300319 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E3A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +123.846008244393 + 10 +7.972009689936968 + 20 +123.9874296006303 + 10 +5.572009689936934 + 20 +123.9874296006303 + 10 +5.430588333699617 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E3B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +132.6988509568676 + 10 +7.972009689936968 + 20 +132.5574296006303 + 10 +5.572009689936934 + 20 +132.5574296006303 + 10 +5.430588333699617 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E3C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +132.6988509568676 + 10 +1.547009689937127 + 20 +132.5574296006303 + 10 +3.947009689937161 + 20 +132.5574296006303 + 10 +4.088431046174478 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E3D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +132.6788509568678 + 10 +-2.550490310062969 + 20 +132.5374296006304 + 10 +-4.950490310062975 + 20 +132.5374296006304 + 10 +-5.091911666300319 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E3E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +123.846008244393 + 10 +16.88200968993714 + 20 +123.9874296006303 + 10 +19.28200968993717 + 20 +123.9874296006303 + 10 +19.42343104617449 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E3F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +124.3160082443928 + 10 +12.78450968993704 + 20 +124.4574296006301 + 10 +10.38450968993703 + 20 +124.4574296006301 + 10 +10.24308833369969 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E40 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +123.846008244393 + 10 +23.30700968993698 + 20 +123.9874296006303 + 10 +20.90700968993694 + 20 +123.9874296006303 + 10 +20.76558833369963 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E41 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +132.6988509568676 + 10 +23.30700968993698 + 20 +132.5574296006303 + 10 +20.90700968993694 + 20 +132.5574296006303 + 10 +20.76558833369963 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E42 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +132.6988509568676 + 10 +16.88200968993714 + 20 +132.5574296006303 + 10 +19.28200968993717 + 20 +132.5574296006303 + 10 +19.42343104617449 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E43 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +132.6788509568678 + 10 +12.78450968993704 + 20 +132.5374296006304 + 10 +10.38450968993703 + 20 +132.5374296006304 + 10 +10.24308833369969 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E44 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +123.846008244393 + 10 +32.21700968993713 + 20 +123.9874296006303 + 10 +34.61700968993716 + 20 +123.9874296006303 + 10 +34.75843104617448 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E45 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +124.3160082443928 + 10 +28.11950968993703 + 20 +124.4574296006301 + 10 +25.71950968993703 + 20 +124.4574296006301 + 10 +25.57808833369968 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E46 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +123.846008244393 + 10 +38.64200968993697 + 20 +123.9874296006303 + 10 +36.24200968993694 + 20 +123.9874296006303 + 10 +36.10058833369962 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E47 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +132.6988509568676 + 10 +38.64200968993697 + 20 +132.5574296006303 + 10 +36.24200968993694 + 20 +132.5574296006303 + 10 +36.10058833369962 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E48 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +132.6988509568676 + 10 +32.21700968993713 + 20 +132.5574296006303 + 10 +34.61700968993716 + 20 +132.5574296006303 + 10 +34.75843104617448 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E49 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +132.6788509568678 + 10 +28.11950968993703 + 20 +132.5374296006304 + 10 +25.71950968993703 + 20 +132.5374296006304 + 10 +25.57808833369968 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E4A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +123.846008244393 + 10 +47.55200968993712 + 20 +123.9874296006303 + 10 +49.95200968993716 + 20 +123.9874296006303 + 10 +50.09343104617447 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E4B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +124.3160082443928 + 10 +43.45450968993703 + 20 +124.4574296006301 + 10 +41.05450968993702 + 20 +124.4574296006301 + 10 +40.91308833369968 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E4C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +123.846008244393 + 10 +53.97700968993696 + 20 +123.9874296006303 + 10 +51.57700968993693 + 20 +123.9874296006303 + 10 +51.43558833369961 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E4D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +132.6988509568676 + 10 +53.97700968993696 + 20 +132.5574296006303 + 10 +51.57700968993693 + 20 +132.5574296006303 + 10 +51.43558833369961 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E4E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +132.6988509568676 + 10 +47.55200968993712 + 20 +132.5574296006303 + 10 +49.95200968993716 + 20 +132.5574296006303 + 10 +50.09343104617447 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E4F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +132.6788509568678 + 10 +43.45450968993703 + 20 +132.5374296006304 + 10 +41.05450968993702 + 20 +132.5374296006304 + 10 +40.91308833369968 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E50 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +123.846008244393 + 10 +62.88700968993713 + 20 +123.9874296006303 + 10 +65.28700968993716 + 20 +123.9874296006303 + 10 +65.42843104617448 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E51 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +124.3160082443928 + 10 +58.78950968993703 + 20 +124.4574296006301 + 10 +56.38950968993703 + 20 +124.4574296006301 + 10 +56.24808833369968 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E52 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +123.846008244393 + 10 +69.31200968993697 + 20 +123.9874296006303 + 10 +66.91200968993694 + 20 +123.9874296006303 + 10 +66.77058833369962 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E53 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +132.6988509568676 + 10 +69.31200968993697 + 20 +132.5574296006303 + 10 +66.91200968993694 + 20 +132.5574296006303 + 10 +66.77058833369962 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E54 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +132.6988509568676 + 10 +62.88700968993713 + 20 +132.5574296006303 + 10 +65.28700968993716 + 20 +132.5574296006303 + 10 +65.42843104617448 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E55 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +132.6788509568678 + 10 +58.78950968993703 + 20 +132.5374296006304 + 10 +56.38950968993703 + 20 +132.5374296006304 + 10 +56.24808833369968 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E56 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +123.846008244393 + 10 +78.22200968993714 + 20 +123.9874296006303 + 10 +80.62200968993717 + 20 +123.9874296006303 + 10 +80.76343104617449 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E57 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +124.3160082443928 + 10 +74.12450968993704 + 20 +124.4574296006301 + 10 +71.72450968993704 + 20 +124.4574296006301 + 10 +71.58308833369969 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E58 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +123.846008244393 + 10 +84.64700968993698 + 20 +123.9874296006303 + 10 +82.24700968993695 + 20 +123.9874296006303 + 10 +82.10558833369963 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E59 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +132.6988509568676 + 10 +84.64700968993698 + 20 +132.5574296006303 + 10 +82.24700968993695 + 20 +132.5574296006303 + 10 +82.10558833369963 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E5A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +132.6988509568676 + 10 +78.22200968993714 + 20 +132.5574296006303 + 10 +80.62200968993717 + 20 +132.5574296006303 + 10 +80.76343104617449 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E5B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +132.6788509568678 + 10 +74.12450968993704 + 20 +132.5374296006304 + 10 +71.72450968993704 + 20 +132.5374296006304 + 10 +71.58308833369969 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E5C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +123.846008244393 + 10 +93.55700968993715 + 20 +123.9874296006303 + 10 +95.95700968993718 + 20 +123.9874296006303 + 10 +96.0984310461745 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E5D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +124.3160082443928 + 10 +89.45950968993705 + 20 +124.4574296006301 + 10 +87.05950968993704 + 20 +124.4574296006301 + 10 +86.9180883336997 + 20 +124.3160082443928 + 0 +LWPOLYLINE + 5 +E5E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +123.846008244393 + 10 +99.98200968993699 + 20 +123.9874296006303 + 10 +97.58200968993695 + 20 +123.9874296006303 + 10 +97.44058833369964 + 20 +123.846008244393 + 0 +LWPOLYLINE + 5 +E5F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +132.6988509568676 + 10 +99.98200968993699 + 20 +132.5574296006303 + 10 +97.58200968993695 + 20 +132.5574296006303 + 10 +97.44058833369964 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E60 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +132.6988509568676 + 10 +93.55700968993715 + 20 +132.5574296006303 + 10 +95.95700968993718 + 20 +132.5574296006303 + 10 +96.0984310461745 + 20 +132.6988509568676 + 0 +LWPOLYLINE + 5 +E61 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +132.6788509568678 + 10 +89.45950968993705 + 20 +132.5374296006304 + 10 +87.05950968993704 + 20 +132.5374296006304 + 10 +86.9180883336997 + 20 +132.6788509568677 + 0 +LWPOLYLINE + 5 +E62 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +133.346008244393 + 10 +-59.79299031006288 + 20 +133.4874296006303 + 10 +-57.39299031006284 + 20 +133.4874296006303 + 10 +-57.25156895382553 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E63 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +133.8160082443928 + 10 +-63.89049031006297 + 20 +133.9574296006301 + 10 +-66.29049031006298 + 20 +133.9574296006301 + 10 +-66.43191166630032 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E64 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +133.346008244393 + 10 +-53.36799031006304 + 20 +133.4874296006303 + 10 +-55.76799031006307 + 20 +133.4874296006303 + 10 +-55.90941166630039 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E65 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +142.1988509568676 + 10 +-53.36799031006304 + 20 +142.0574296006303 + 10 +-55.76799031006307 + 20 +142.0574296006303 + 10 +-55.90941166630039 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E66 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +142.1988509568676 + 10 +-59.79299031006288 + 20 +142.0574296006303 + 10 +-57.39299031006284 + 20 +142.0574296006303 + 10 +-57.25156895382553 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E67 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +142.1788509568678 + 10 +-63.89049031006297 + 20 +142.0374296006304 + 10 +-66.29049031006298 + 20 +142.0374296006304 + 10 +-66.43191166630032 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E68 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +133.346008244393 + 10 +-44.45799031006288 + 20 +133.4874296006303 + 10 +-42.05799031006284 + 20 +133.4874296006303 + 10 +-41.91656895382553 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E69 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +133.8160082443928 + 10 +-48.55549031006297 + 20 +133.9574296006301 + 10 +-50.95549031006298 + 20 +133.9574296006301 + 10 +-51.09691166630032 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E6A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +133.346008244393 + 10 +-38.03299031006303 + 20 +133.4874296006303 + 10 +-40.43299031006307 + 20 +133.4874296006303 + 10 +-40.57441166630039 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E6B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +142.1988509568676 + 10 +-38.03299031006303 + 20 +142.0574296006303 + 10 +-40.43299031006307 + 20 +142.0574296006303 + 10 +-40.57441166630039 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E6C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +142.1988509568676 + 10 +-44.45799031006288 + 20 +142.0574296006303 + 10 +-42.05799031006284 + 20 +142.0574296006303 + 10 +-41.91656895382553 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E6D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +142.1788509568678 + 10 +-48.55549031006297 + 20 +142.0374296006304 + 10 +-50.95549031006298 + 20 +142.0374296006304 + 10 +-51.09691166630032 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E6E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +133.346008244393 + 10 +-29.12299031006287 + 20 +133.4874296006303 + 10 +-26.72299031006284 + 20 +133.4874296006303 + 10 +-26.58156895382552 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E6F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +133.8160082443928 + 10 +-33.22049031006297 + 20 +133.9574296006301 + 10 +-35.62049031006298 + 20 +133.9574296006301 + 10 +-35.76191166630032 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E70 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +133.346008244393 + 10 +-22.69799031006303 + 20 +133.4874296006303 + 10 +-25.09799031006307 + 20 +133.4874296006303 + 10 +-25.23941166630038 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E71 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +142.1988509568676 + 10 +-22.69799031006303 + 20 +142.0574296006303 + 10 +-25.09799031006307 + 20 +142.0574296006303 + 10 +-25.23941166630038 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E72 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +142.1988509568676 + 10 +-29.12299031006287 + 20 +142.0574296006303 + 10 +-26.72299031006284 + 20 +142.0574296006303 + 10 +-26.58156895382552 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E73 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +142.1788509568678 + 10 +-33.22049031006297 + 20 +142.0374296006304 + 10 +-35.62049031006298 + 20 +142.0374296006304 + 10 +-35.76191166630032 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E74 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +133.346008244393 + 10 +-13.78799031006287 + 20 +133.4874296006303 + 10 +-11.38799031006284 + 20 +133.4874296006303 + 10 +-11.24656895382552 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E75 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +133.8160082443928 + 10 +-17.88549031006297 + 20 +133.9574296006301 + 10 +-20.28549031006298 + 20 +133.9574296006301 + 10 +-20.42691166630032 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E76 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +133.346008244393 + 10 +-7.362990310063033 + 20 +133.4874296006303 + 10 +-9.762990310063067 + 20 +133.4874296006303 + 10 +-9.904411666300383 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E77 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +142.1988509568676 + 10 +-7.362990310063033 + 20 +142.0574296006303 + 10 +-9.762990310063067 + 20 +142.0574296006303 + 10 +-9.904411666300383 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E78 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +142.1988509568676 + 10 +-13.78799031006287 + 20 +142.0574296006303 + 10 +-11.38799031006284 + 20 +142.0574296006303 + 10 +-11.24656895382552 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E79 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +142.1788509568678 + 10 +-17.88549031006297 + 20 +142.0374296006304 + 10 +-20.28549031006298 + 20 +142.0374296006304 + 10 +-20.42691166630032 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E7A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +133.346008244393 + 10 +1.547009689937127 + 20 +133.4874296006303 + 10 +3.947009689937161 + 20 +133.4874296006303 + 10 +4.088431046174478 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E7B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +133.8160082443928 + 10 +-2.550490310062969 + 20 +133.9574296006301 + 10 +-4.950490310062975 + 20 +133.9574296006301 + 10 +-5.091911666300319 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E7C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +133.346008244393 + 10 +7.972009689936968 + 20 +133.4874296006303 + 10 +5.572009689936934 + 20 +133.4874296006303 + 10 +5.430588333699617 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E7D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +142.1988509568676 + 10 +7.972009689936968 + 20 +142.0574296006303 + 10 +5.572009689936934 + 20 +142.0574296006303 + 10 +5.430588333699617 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E7E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +142.1988509568676 + 10 +1.547009689937127 + 20 +142.0574296006303 + 10 +3.947009689937161 + 20 +142.0574296006303 + 10 +4.088431046174478 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E7F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +142.1788509568678 + 10 +-2.550490310062969 + 20 +142.0374296006304 + 10 +-4.950490310062975 + 20 +142.0374296006304 + 10 +-5.091911666300319 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E80 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +133.346008244393 + 10 +16.88200968993714 + 20 +133.4874296006303 + 10 +19.28200968993717 + 20 +133.4874296006303 + 10 +19.42343104617449 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E81 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +133.8160082443928 + 10 +12.78450968993704 + 20 +133.9574296006301 + 10 +10.38450968993703 + 20 +133.9574296006301 + 10 +10.24308833369969 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E82 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +133.346008244393 + 10 +23.30700968993698 + 20 +133.4874296006303 + 10 +20.90700968993694 + 20 +133.4874296006303 + 10 +20.76558833369963 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E83 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +142.1988509568676 + 10 +23.30700968993698 + 20 +142.0574296006303 + 10 +20.90700968993694 + 20 +142.0574296006303 + 10 +20.76558833369963 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E84 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +142.1988509568676 + 10 +16.88200968993714 + 20 +142.0574296006303 + 10 +19.28200968993717 + 20 +142.0574296006303 + 10 +19.42343104617449 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E85 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +142.1788509568678 + 10 +12.78450968993704 + 20 +142.0374296006304 + 10 +10.38450968993703 + 20 +142.0374296006304 + 10 +10.24308833369969 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E86 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +133.346008244393 + 10 +32.21700968993713 + 20 +133.4874296006303 + 10 +34.61700968993716 + 20 +133.4874296006303 + 10 +34.75843104617448 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E87 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +133.8160082443928 + 10 +28.11950968993703 + 20 +133.9574296006301 + 10 +25.71950968993703 + 20 +133.9574296006301 + 10 +25.57808833369968 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E88 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +133.346008244393 + 10 +38.64200968993697 + 20 +133.4874296006303 + 10 +36.24200968993694 + 20 +133.4874296006303 + 10 +36.10058833369962 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E89 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +142.1988509568676 + 10 +38.64200968993697 + 20 +142.0574296006303 + 10 +36.24200968993694 + 20 +142.0574296006303 + 10 +36.10058833369962 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E8A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +142.1988509568676 + 10 +32.21700968993713 + 20 +142.0574296006303 + 10 +34.61700968993716 + 20 +142.0574296006303 + 10 +34.75843104617448 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E8B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +142.1788509568678 + 10 +28.11950968993703 + 20 +142.0374296006304 + 10 +25.71950968993703 + 20 +142.0374296006304 + 10 +25.57808833369968 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E8C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +133.346008244393 + 10 +47.55200968993712 + 20 +133.4874296006303 + 10 +49.95200968993716 + 20 +133.4874296006303 + 10 +50.09343104617447 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E8D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +133.8160082443928 + 10 +43.45450968993703 + 20 +133.9574296006301 + 10 +41.05450968993702 + 20 +133.9574296006301 + 10 +40.91308833369968 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E8E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +133.346008244393 + 10 +53.97700968993696 + 20 +133.4874296006303 + 10 +51.57700968993693 + 20 +133.4874296006303 + 10 +51.43558833369961 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E8F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +142.1988509568676 + 10 +53.97700968993696 + 20 +142.0574296006303 + 10 +51.57700968993693 + 20 +142.0574296006303 + 10 +51.43558833369961 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E90 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +142.1988509568676 + 10 +47.55200968993712 + 20 +142.0574296006303 + 10 +49.95200968993716 + 20 +142.0574296006303 + 10 +50.09343104617447 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E91 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +142.1788509568678 + 10 +43.45450968993703 + 20 +142.0374296006304 + 10 +41.05450968993702 + 20 +142.0374296006304 + 10 +40.91308833369968 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E92 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +133.346008244393 + 10 +62.88700968993713 + 20 +133.4874296006303 + 10 +65.28700968993716 + 20 +133.4874296006303 + 10 +65.42843104617448 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E93 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +133.8160082443928 + 10 +58.78950968993703 + 20 +133.9574296006301 + 10 +56.38950968993703 + 20 +133.9574296006301 + 10 +56.24808833369968 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E94 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +133.346008244393 + 10 +69.31200968993697 + 20 +133.4874296006303 + 10 +66.91200968993694 + 20 +133.4874296006303 + 10 +66.77058833369962 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E95 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +142.1988509568676 + 10 +69.31200968993697 + 20 +142.0574296006303 + 10 +66.91200968993694 + 20 +142.0574296006303 + 10 +66.77058833369962 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E96 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +142.1988509568676 + 10 +62.88700968993713 + 20 +142.0574296006303 + 10 +65.28700968993716 + 20 +142.0574296006303 + 10 +65.42843104617448 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E97 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +142.1788509568678 + 10 +58.78950968993703 + 20 +142.0374296006304 + 10 +56.38950968993703 + 20 +142.0374296006304 + 10 +56.24808833369968 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E98 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +133.346008244393 + 10 +78.22200968993714 + 20 +133.4874296006303 + 10 +80.62200968993717 + 20 +133.4874296006303 + 10 +80.76343104617449 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E99 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +133.8160082443928 + 10 +74.12450968993704 + 20 +133.9574296006301 + 10 +71.72450968993704 + 20 +133.9574296006301 + 10 +71.58308833369969 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +E9A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +133.346008244393 + 10 +84.64700968993698 + 20 +133.4874296006303 + 10 +82.24700968993695 + 20 +133.4874296006303 + 10 +82.10558833369963 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E9B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +142.1988509568676 + 10 +84.64700968993698 + 20 +142.0574296006303 + 10 +82.24700968993695 + 20 +142.0574296006303 + 10 +82.10558833369963 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E9C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +142.1988509568676 + 10 +78.22200968993714 + 20 +142.0574296006303 + 10 +80.62200968993717 + 20 +142.0574296006303 + 10 +80.76343104617449 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +E9D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +142.1788509568678 + 10 +74.12450968993704 + 20 +142.0374296006304 + 10 +71.72450968993704 + 20 +142.0374296006304 + 10 +71.58308833369969 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +E9E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +133.346008244393 + 10 +93.55700968993715 + 20 +133.4874296006303 + 10 +95.95700968993718 + 20 +133.4874296006303 + 10 +96.0984310461745 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +E9F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +133.8160082443928 + 10 +89.45950968993705 + 20 +133.9574296006301 + 10 +87.05950968993704 + 20 +133.9574296006301 + 10 +86.9180883336997 + 20 +133.8160082443928 + 0 +LWPOLYLINE + 5 +EA0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +133.346008244393 + 10 +99.98200968993699 + 20 +133.4874296006303 + 10 +97.58200968993695 + 20 +133.4874296006303 + 10 +97.44058833369964 + 20 +133.346008244393 + 0 +LWPOLYLINE + 5 +EA1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +142.1988509568676 + 10 +99.98200968993699 + 20 +142.0574296006303 + 10 +97.58200968993695 + 20 +142.0574296006303 + 10 +97.44058833369964 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +EA2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +142.1988509568676 + 10 +93.55700968993715 + 20 +142.0574296006303 + 10 +95.95700968993718 + 20 +142.0574296006303 + 10 +96.0984310461745 + 20 +142.1988509568676 + 0 +LWPOLYLINE + 5 +EA3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +142.1788509568678 + 10 +89.45950968993705 + 20 +142.0374296006304 + 10 +87.05950968993704 + 20 +142.0374296006304 + 10 +86.9180883336997 + 20 +142.1788509568677 + 0 +LWPOLYLINE + 5 +EA4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +142.846008244393 + 10 +-59.79299031006288 + 20 +142.9874296006303 + 10 +-57.39299031006284 + 20 +142.9874296006303 + 10 +-57.25156895382553 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EA5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +143.3160082443928 + 10 +-63.89049031006297 + 20 +143.4574296006301 + 10 +-66.29049031006298 + 20 +143.4574296006301 + 10 +-66.43191166630032 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EA6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +142.846008244393 + 10 +-53.36799031006304 + 20 +142.9874296006303 + 10 +-55.76799031006307 + 20 +142.9874296006303 + 10 +-55.90941166630039 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EA7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +151.6988509568676 + 10 +-53.36799031006304 + 20 +151.5574296006303 + 10 +-55.76799031006307 + 20 +151.5574296006303 + 10 +-55.90941166630039 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EA8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +151.6988509568676 + 10 +-59.79299031006288 + 20 +151.5574296006303 + 10 +-57.39299031006284 + 20 +151.5574296006303 + 10 +-57.25156895382553 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EA9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +151.6788509568678 + 10 +-63.89049031006297 + 20 +151.5374296006304 + 10 +-66.29049031006298 + 20 +151.5374296006304 + 10 +-66.43191166630032 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EAA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +142.846008244393 + 10 +-44.45799031006288 + 20 +142.9874296006303 + 10 +-42.05799031006284 + 20 +142.9874296006303 + 10 +-41.91656895382553 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EAB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +143.3160082443928 + 10 +-48.55549031006297 + 20 +143.4574296006301 + 10 +-50.95549031006298 + 20 +143.4574296006301 + 10 +-51.09691166630032 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EAC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +142.846008244393 + 10 +-38.03299031006303 + 20 +142.9874296006303 + 10 +-40.43299031006307 + 20 +142.9874296006303 + 10 +-40.57441166630039 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EAD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +151.6988509568676 + 10 +-38.03299031006303 + 20 +151.5574296006303 + 10 +-40.43299031006307 + 20 +151.5574296006303 + 10 +-40.57441166630039 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EAE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +151.6988509568676 + 10 +-44.45799031006288 + 20 +151.5574296006303 + 10 +-42.05799031006284 + 20 +151.5574296006303 + 10 +-41.91656895382553 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EAF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +151.6788509568678 + 10 +-48.55549031006297 + 20 +151.5374296006304 + 10 +-50.95549031006298 + 20 +151.5374296006304 + 10 +-51.09691166630032 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EB0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +142.846008244393 + 10 +-29.12299031006287 + 20 +142.9874296006303 + 10 +-26.72299031006284 + 20 +142.9874296006303 + 10 +-26.58156895382552 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EB1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +143.3160082443928 + 10 +-33.22049031006297 + 20 +143.4574296006301 + 10 +-35.62049031006298 + 20 +143.4574296006301 + 10 +-35.76191166630032 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EB2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +142.846008244393 + 10 +-22.69799031006303 + 20 +142.9874296006303 + 10 +-25.09799031006307 + 20 +142.9874296006303 + 10 +-25.23941166630038 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EB3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +151.6988509568676 + 10 +-22.69799031006303 + 20 +151.5574296006303 + 10 +-25.09799031006307 + 20 +151.5574296006303 + 10 +-25.23941166630038 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EB4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +151.6988509568676 + 10 +-29.12299031006287 + 20 +151.5574296006303 + 10 +-26.72299031006284 + 20 +151.5574296006303 + 10 +-26.58156895382552 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EB5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +151.6788509568678 + 10 +-33.22049031006297 + 20 +151.5374296006304 + 10 +-35.62049031006298 + 20 +151.5374296006304 + 10 +-35.76191166630032 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EB6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +142.846008244393 + 10 +-13.78799031006287 + 20 +142.9874296006303 + 10 +-11.38799031006284 + 20 +142.9874296006303 + 10 +-11.24656895382552 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EB7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +143.3160082443928 + 10 +-17.88549031006297 + 20 +143.4574296006301 + 10 +-20.28549031006298 + 20 +143.4574296006301 + 10 +-20.42691166630032 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EB8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +142.846008244393 + 10 +-7.362990310063033 + 20 +142.9874296006303 + 10 +-9.762990310063067 + 20 +142.9874296006303 + 10 +-9.904411666300383 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EB9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +151.6988509568676 + 10 +-7.362990310063033 + 20 +151.5574296006303 + 10 +-9.762990310063067 + 20 +151.5574296006303 + 10 +-9.904411666300383 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EBA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +151.6988509568676 + 10 +-13.78799031006287 + 20 +151.5574296006303 + 10 +-11.38799031006284 + 20 +151.5574296006303 + 10 +-11.24656895382552 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EBB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +151.6788509568678 + 10 +-17.88549031006297 + 20 +151.5374296006304 + 10 +-20.28549031006298 + 20 +151.5374296006304 + 10 +-20.42691166630032 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EBC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +142.846008244393 + 10 +1.547009689937127 + 20 +142.9874296006303 + 10 +3.947009689937161 + 20 +142.9874296006303 + 10 +4.088431046174478 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EBD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +143.3160082443928 + 10 +-2.550490310062969 + 20 +143.4574296006301 + 10 +-4.950490310062975 + 20 +143.4574296006301 + 10 +-5.091911666300319 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EBE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +142.846008244393 + 10 +7.972009689936968 + 20 +142.9874296006303 + 10 +5.572009689936934 + 20 +142.9874296006303 + 10 +5.430588333699617 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EBF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +151.6988509568676 + 10 +7.972009689936968 + 20 +151.5574296006303 + 10 +5.572009689936934 + 20 +151.5574296006303 + 10 +5.430588333699617 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EC0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +151.6988509568676 + 10 +1.547009689937127 + 20 +151.5574296006303 + 10 +3.947009689937161 + 20 +151.5574296006303 + 10 +4.088431046174478 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EC1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +151.6788509568678 + 10 +-2.550490310062969 + 20 +151.5374296006304 + 10 +-4.950490310062975 + 20 +151.5374296006304 + 10 +-5.091911666300319 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EC2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +142.846008244393 + 10 +16.88200968993714 + 20 +142.9874296006303 + 10 +19.28200968993717 + 20 +142.9874296006303 + 10 +19.42343104617449 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EC3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +143.3160082443928 + 10 +12.78450968993704 + 20 +143.4574296006301 + 10 +10.38450968993703 + 20 +143.4574296006301 + 10 +10.24308833369969 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EC4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +142.846008244393 + 10 +23.30700968993698 + 20 +142.9874296006303 + 10 +20.90700968993694 + 20 +142.9874296006303 + 10 +20.76558833369963 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EC5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +151.6988509568676 + 10 +23.30700968993698 + 20 +151.5574296006303 + 10 +20.90700968993694 + 20 +151.5574296006303 + 10 +20.76558833369963 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EC6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +151.6988509568676 + 10 +16.88200968993714 + 20 +151.5574296006303 + 10 +19.28200968993717 + 20 +151.5574296006303 + 10 +19.42343104617449 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EC7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +151.6788509568678 + 10 +12.78450968993704 + 20 +151.5374296006304 + 10 +10.38450968993703 + 20 +151.5374296006304 + 10 +10.24308833369969 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EC8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +142.846008244393 + 10 +32.21700968993713 + 20 +142.9874296006303 + 10 +34.61700968993716 + 20 +142.9874296006303 + 10 +34.75843104617448 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EC9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +143.3160082443928 + 10 +28.11950968993703 + 20 +143.4574296006301 + 10 +25.71950968993703 + 20 +143.4574296006301 + 10 +25.57808833369968 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +ECA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +142.846008244393 + 10 +38.64200968993697 + 20 +142.9874296006303 + 10 +36.24200968993694 + 20 +142.9874296006303 + 10 +36.10058833369962 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +ECB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +151.6988509568676 + 10 +38.64200968993697 + 20 +151.5574296006303 + 10 +36.24200968993694 + 20 +151.5574296006303 + 10 +36.10058833369962 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ECC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +151.6988509568676 + 10 +32.21700968993713 + 20 +151.5574296006303 + 10 +34.61700968993716 + 20 +151.5574296006303 + 10 +34.75843104617448 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ECD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +151.6788509568678 + 10 +28.11950968993703 + 20 +151.5374296006304 + 10 +25.71950968993703 + 20 +151.5374296006304 + 10 +25.57808833369968 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +ECE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +142.846008244393 + 10 +47.55200968993712 + 20 +142.9874296006303 + 10 +49.95200968993716 + 20 +142.9874296006303 + 10 +50.09343104617447 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +ECF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +143.3160082443928 + 10 +43.45450968993703 + 20 +143.4574296006301 + 10 +41.05450968993702 + 20 +143.4574296006301 + 10 +40.91308833369968 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +ED0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +142.846008244393 + 10 +53.97700968993696 + 20 +142.9874296006303 + 10 +51.57700968993693 + 20 +142.9874296006303 + 10 +51.43558833369961 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +ED1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +151.6988509568676 + 10 +53.97700968993696 + 20 +151.5574296006303 + 10 +51.57700968993693 + 20 +151.5574296006303 + 10 +51.43558833369961 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ED2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +151.6988509568676 + 10 +47.55200968993712 + 20 +151.5574296006303 + 10 +49.95200968993716 + 20 +151.5574296006303 + 10 +50.09343104617447 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ED3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +151.6788509568678 + 10 +43.45450968993703 + 20 +151.5374296006304 + 10 +41.05450968993702 + 20 +151.5374296006304 + 10 +40.91308833369968 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +ED4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +142.846008244393 + 10 +62.88700968993713 + 20 +142.9874296006303 + 10 +65.28700968993716 + 20 +142.9874296006303 + 10 +65.42843104617448 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +ED5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +143.3160082443928 + 10 +58.78950968993703 + 20 +143.4574296006301 + 10 +56.38950968993703 + 20 +143.4574296006301 + 10 +56.24808833369968 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +ED6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +142.846008244393 + 10 +69.31200968993697 + 20 +142.9874296006303 + 10 +66.91200968993694 + 20 +142.9874296006303 + 10 +66.77058833369962 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +ED7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +151.6988509568676 + 10 +69.31200968993697 + 20 +151.5574296006303 + 10 +66.91200968993694 + 20 +151.5574296006303 + 10 +66.77058833369962 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ED8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +151.6988509568676 + 10 +62.88700968993713 + 20 +151.5574296006303 + 10 +65.28700968993716 + 20 +151.5574296006303 + 10 +65.42843104617448 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +ED9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +151.6788509568678 + 10 +58.78950968993703 + 20 +151.5374296006304 + 10 +56.38950968993703 + 20 +151.5374296006304 + 10 +56.24808833369968 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EDA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +142.846008244393 + 10 +78.22200968993714 + 20 +142.9874296006303 + 10 +80.62200968993717 + 20 +142.9874296006303 + 10 +80.76343104617449 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EDB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +143.3160082443928 + 10 +74.12450968993704 + 20 +143.4574296006301 + 10 +71.72450968993704 + 20 +143.4574296006301 + 10 +71.58308833369969 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EDC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +142.846008244393 + 10 +84.64700968993698 + 20 +142.9874296006303 + 10 +82.24700968993695 + 20 +142.9874296006303 + 10 +82.10558833369963 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EDD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +151.6988509568676 + 10 +84.64700968993698 + 20 +151.5574296006303 + 10 +82.24700968993695 + 20 +151.5574296006303 + 10 +82.10558833369963 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EDE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +151.6988509568676 + 10 +78.22200968993714 + 20 +151.5574296006303 + 10 +80.62200968993717 + 20 +151.5574296006303 + 10 +80.76343104617449 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EDF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +151.6788509568678 + 10 +74.12450968993704 + 20 +151.5374296006304 + 10 +71.72450968993704 + 20 +151.5374296006304 + 10 +71.58308833369969 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EE0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +142.846008244393 + 10 +93.55700968993715 + 20 +142.9874296006303 + 10 +95.95700968993718 + 20 +142.9874296006303 + 10 +96.0984310461745 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EE1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +143.3160082443928 + 10 +89.45950968993705 + 20 +143.4574296006301 + 10 +87.05950968993704 + 20 +143.4574296006301 + 10 +86.9180883336997 + 20 +143.3160082443928 + 0 +LWPOLYLINE + 5 +EE2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +142.846008244393 + 10 +99.98200968993699 + 20 +142.9874296006303 + 10 +97.58200968993695 + 20 +142.9874296006303 + 10 +97.44058833369964 + 20 +142.846008244393 + 0 +LWPOLYLINE + 5 +EE3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +151.6988509568676 + 10 +99.98200968993699 + 20 +151.5574296006303 + 10 +97.58200968993695 + 20 +151.5574296006303 + 10 +97.44058833369964 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EE4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +151.6988509568676 + 10 +93.55700968993715 + 20 +151.5574296006303 + 10 +95.95700968993718 + 20 +151.5574296006303 + 10 +96.0984310461745 + 20 +151.6988509568676 + 0 +LWPOLYLINE + 5 +EE5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +151.6788509568678 + 10 +89.45950968993705 + 20 +151.5374296006304 + 10 +87.05950968993704 + 20 +151.5374296006304 + 10 +86.9180883336997 + 20 +151.6788509568677 + 0 +LWPOLYLINE + 5 +EE6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +152.346008244393 + 10 +-59.79299031006288 + 20 +152.4874296006303 + 10 +-57.39299031006284 + 20 +152.4874296006303 + 10 +-57.25156895382553 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EE7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +152.8160082443928 + 10 +-63.89049031006297 + 20 +152.9574296006301 + 10 +-66.29049031006298 + 20 +152.9574296006301 + 10 +-66.43191166630032 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +EE8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +152.346008244393 + 10 +-53.36799031006304 + 20 +152.4874296006303 + 10 +-55.76799031006307 + 20 +152.4874296006303 + 10 +-55.90941166630039 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EE9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +161.1988509568676 + 10 +-53.36799031006304 + 20 +161.0574296006303 + 10 +-55.76799031006307 + 20 +161.0574296006303 + 10 +-55.90941166630039 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EEA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +161.1988509568676 + 10 +-59.79299031006288 + 20 +161.0574296006303 + 10 +-57.39299031006284 + 20 +161.0574296006303 + 10 +-57.25156895382553 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EEB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +161.1788509568678 + 10 +-63.89049031006297 + 20 +161.0374296006304 + 10 +-66.29049031006298 + 20 +161.0374296006304 + 10 +-66.43191166630032 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +EEC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +152.346008244393 + 10 +-44.45799031006288 + 20 +152.4874296006303 + 10 +-42.05799031006284 + 20 +152.4874296006303 + 10 +-41.91656895382553 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +152.8160082443928 + 10 +-48.55549031006297 + 20 +152.9574296006301 + 10 +-50.95549031006298 + 20 +152.9574296006301 + 10 +-51.09691166630032 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +EEE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +152.346008244393 + 10 +-38.03299031006303 + 20 +152.4874296006303 + 10 +-40.43299031006307 + 20 +152.4874296006303 + 10 +-40.57441166630039 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EEF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +161.1988509568676 + 10 +-38.03299031006303 + 20 +161.0574296006303 + 10 +-40.43299031006307 + 20 +161.0574296006303 + 10 +-40.57441166630039 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EF0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +161.1988509568676 + 10 +-44.45799031006288 + 20 +161.0574296006303 + 10 +-42.05799031006284 + 20 +161.0574296006303 + 10 +-41.91656895382553 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EF1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +161.1788509568678 + 10 +-48.55549031006297 + 20 +161.0374296006304 + 10 +-50.95549031006298 + 20 +161.0374296006304 + 10 +-51.09691166630032 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +EF2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +152.346008244393 + 10 +-29.12299031006287 + 20 +152.4874296006303 + 10 +-26.72299031006284 + 20 +152.4874296006303 + 10 +-26.58156895382552 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EF3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +152.8160082443928 + 10 +-33.22049031006297 + 20 +152.9574296006301 + 10 +-35.62049031006298 + 20 +152.9574296006301 + 10 +-35.76191166630032 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +EF4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +152.346008244393 + 10 +-22.69799031006303 + 20 +152.4874296006303 + 10 +-25.09799031006307 + 20 +152.4874296006303 + 10 +-25.23941166630038 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EF5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +161.1988509568676 + 10 +-22.69799031006303 + 20 +161.0574296006303 + 10 +-25.09799031006307 + 20 +161.0574296006303 + 10 +-25.23941166630038 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EF6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +161.1988509568676 + 10 +-29.12299031006287 + 20 +161.0574296006303 + 10 +-26.72299031006284 + 20 +161.0574296006303 + 10 +-26.58156895382552 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EF7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +161.1788509568678 + 10 +-33.22049031006297 + 20 +161.0374296006304 + 10 +-35.62049031006298 + 20 +161.0374296006304 + 10 +-35.76191166630032 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +EF8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +152.346008244393 + 10 +-13.78799031006287 + 20 +152.4874296006303 + 10 +-11.38799031006284 + 20 +152.4874296006303 + 10 +-11.24656895382552 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EF9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +152.8160082443928 + 10 +-17.88549031006297 + 20 +152.9574296006301 + 10 +-20.28549031006298 + 20 +152.9574296006301 + 10 +-20.42691166630032 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +EFA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +152.346008244393 + 10 +-7.362990310063033 + 20 +152.4874296006303 + 10 +-9.762990310063067 + 20 +152.4874296006303 + 10 +-9.904411666300383 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EFB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +161.1988509568676 + 10 +-7.362990310063033 + 20 +161.0574296006303 + 10 +-9.762990310063067 + 20 +161.0574296006303 + 10 +-9.904411666300383 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EFC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +161.1988509568676 + 10 +-13.78799031006287 + 20 +161.0574296006303 + 10 +-11.38799031006284 + 20 +161.0574296006303 + 10 +-11.24656895382552 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +EFD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +161.1788509568678 + 10 +-17.88549031006297 + 20 +161.0374296006304 + 10 +-20.28549031006298 + 20 +161.0374296006304 + 10 +-20.42691166630032 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +EFE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +152.346008244393 + 10 +1.547009689937127 + 20 +152.4874296006303 + 10 +3.947009689937161 + 20 +152.4874296006303 + 10 +4.088431046174478 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +EFF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +152.8160082443928 + 10 +-2.550490310062969 + 20 +152.9574296006301 + 10 +-4.950490310062975 + 20 +152.9574296006301 + 10 +-5.091911666300319 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F00 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +152.346008244393 + 10 +7.972009689936968 + 20 +152.4874296006303 + 10 +5.572009689936934 + 20 +152.4874296006303 + 10 +5.430588333699617 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F01 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +161.1988509568676 + 10 +7.972009689936968 + 20 +161.0574296006303 + 10 +5.572009689936934 + 20 +161.0574296006303 + 10 +5.430588333699617 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F02 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +161.1988509568676 + 10 +1.547009689937127 + 20 +161.0574296006303 + 10 +3.947009689937161 + 20 +161.0574296006303 + 10 +4.088431046174478 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F03 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +161.1788509568678 + 10 +-2.550490310062969 + 20 +161.0374296006304 + 10 +-4.950490310062975 + 20 +161.0374296006304 + 10 +-5.091911666300319 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F04 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +152.346008244393 + 10 +16.88200968993714 + 20 +152.4874296006303 + 10 +19.28200968993717 + 20 +152.4874296006303 + 10 +19.42343104617449 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F05 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +152.8160082443928 + 10 +12.78450968993704 + 20 +152.9574296006301 + 10 +10.38450968993703 + 20 +152.9574296006301 + 10 +10.24308833369969 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F06 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +152.346008244393 + 10 +23.30700968993698 + 20 +152.4874296006303 + 10 +20.90700968993694 + 20 +152.4874296006303 + 10 +20.76558833369963 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F07 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +161.1988509568676 + 10 +23.30700968993698 + 20 +161.0574296006303 + 10 +20.90700968993694 + 20 +161.0574296006303 + 10 +20.76558833369963 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F08 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +161.1988509568676 + 10 +16.88200968993714 + 20 +161.0574296006303 + 10 +19.28200968993717 + 20 +161.0574296006303 + 10 +19.42343104617449 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F09 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +161.1788509568678 + 10 +12.78450968993704 + 20 +161.0374296006304 + 10 +10.38450968993703 + 20 +161.0374296006304 + 10 +10.24308833369969 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F0A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +152.346008244393 + 10 +32.21700968993713 + 20 +152.4874296006303 + 10 +34.61700968993716 + 20 +152.4874296006303 + 10 +34.75843104617448 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F0B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +152.8160082443928 + 10 +28.11950968993703 + 20 +152.9574296006301 + 10 +25.71950968993703 + 20 +152.9574296006301 + 10 +25.57808833369968 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F0C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +152.346008244393 + 10 +38.64200968993697 + 20 +152.4874296006303 + 10 +36.24200968993694 + 20 +152.4874296006303 + 10 +36.10058833369962 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F0D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +161.1988509568676 + 10 +38.64200968993697 + 20 +161.0574296006303 + 10 +36.24200968993694 + 20 +161.0574296006303 + 10 +36.10058833369962 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F0E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +161.1988509568676 + 10 +32.21700968993713 + 20 +161.0574296006303 + 10 +34.61700968993716 + 20 +161.0574296006303 + 10 +34.75843104617448 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F0F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +161.1788509568678 + 10 +28.11950968993703 + 20 +161.0374296006304 + 10 +25.71950968993703 + 20 +161.0374296006304 + 10 +25.57808833369968 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F10 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +152.346008244393 + 10 +47.55200968993712 + 20 +152.4874296006303 + 10 +49.95200968993716 + 20 +152.4874296006303 + 10 +50.09343104617447 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F11 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +152.8160082443928 + 10 +43.45450968993703 + 20 +152.9574296006301 + 10 +41.05450968993702 + 20 +152.9574296006301 + 10 +40.91308833369968 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F12 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +152.346008244393 + 10 +53.97700968993696 + 20 +152.4874296006303 + 10 +51.57700968993693 + 20 +152.4874296006303 + 10 +51.43558833369961 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F13 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +161.1988509568676 + 10 +53.97700968993696 + 20 +161.0574296006303 + 10 +51.57700968993693 + 20 +161.0574296006303 + 10 +51.43558833369961 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F14 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +161.1988509568676 + 10 +47.55200968993712 + 20 +161.0574296006303 + 10 +49.95200968993716 + 20 +161.0574296006303 + 10 +50.09343104617447 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F15 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +161.1788509568678 + 10 +43.45450968993703 + 20 +161.0374296006304 + 10 +41.05450968993702 + 20 +161.0374296006304 + 10 +40.91308833369968 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F16 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +152.346008244393 + 10 +62.88700968993713 + 20 +152.4874296006303 + 10 +65.28700968993716 + 20 +152.4874296006303 + 10 +65.42843104617448 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F17 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +152.8160082443928 + 10 +58.78950968993703 + 20 +152.9574296006301 + 10 +56.38950968993703 + 20 +152.9574296006301 + 10 +56.24808833369968 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F18 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +152.346008244393 + 10 +69.31200968993697 + 20 +152.4874296006303 + 10 +66.91200968993694 + 20 +152.4874296006303 + 10 +66.77058833369962 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F19 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +161.1988509568676 + 10 +69.31200968993697 + 20 +161.0574296006303 + 10 +66.91200968993694 + 20 +161.0574296006303 + 10 +66.77058833369962 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F1A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +161.1988509568676 + 10 +62.88700968993713 + 20 +161.0574296006303 + 10 +65.28700968993716 + 20 +161.0574296006303 + 10 +65.42843104617448 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F1B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +161.1788509568678 + 10 +58.78950968993703 + 20 +161.0374296006304 + 10 +56.38950968993703 + 20 +161.0374296006304 + 10 +56.24808833369968 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F1C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +152.346008244393 + 10 +78.22200968993714 + 20 +152.4874296006303 + 10 +80.62200968993717 + 20 +152.4874296006303 + 10 +80.76343104617449 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F1D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +152.8160082443928 + 10 +74.12450968993704 + 20 +152.9574296006301 + 10 +71.72450968993704 + 20 +152.9574296006301 + 10 +71.58308833369969 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F1E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +152.346008244393 + 10 +84.64700968993698 + 20 +152.4874296006303 + 10 +82.24700968993695 + 20 +152.4874296006303 + 10 +82.10558833369963 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F1F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +161.1988509568676 + 10 +84.64700968993698 + 20 +161.0574296006303 + 10 +82.24700968993695 + 20 +161.0574296006303 + 10 +82.10558833369963 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F20 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +161.1988509568676 + 10 +78.22200968993714 + 20 +161.0574296006303 + 10 +80.62200968993717 + 20 +161.0574296006303 + 10 +80.76343104617449 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F21 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +161.1788509568678 + 10 +74.12450968993704 + 20 +161.0374296006304 + 10 +71.72450968993704 + 20 +161.0374296006304 + 10 +71.58308833369969 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F22 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +152.346008244393 + 10 +93.55700968993715 + 20 +152.4874296006303 + 10 +95.95700968993718 + 20 +152.4874296006303 + 10 +96.0984310461745 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F23 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +152.8160082443928 + 10 +89.45950968993705 + 20 +152.9574296006301 + 10 +87.05950968993704 + 20 +152.9574296006301 + 10 +86.9180883336997 + 20 +152.8160082443928 + 0 +LWPOLYLINE + 5 +F24 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +152.346008244393 + 10 +99.98200968993699 + 20 +152.4874296006303 + 10 +97.58200968993695 + 20 +152.4874296006303 + 10 +97.44058833369964 + 20 +152.346008244393 + 0 +LWPOLYLINE + 5 +F25 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +161.1988509568676 + 10 +99.98200968993699 + 20 +161.0574296006303 + 10 +97.58200968993695 + 20 +161.0574296006303 + 10 +97.44058833369964 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F26 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +161.1988509568676 + 10 +93.55700968993715 + 20 +161.0574296006303 + 10 +95.95700968993718 + 20 +161.0574296006303 + 10 +96.0984310461745 + 20 +161.1988509568676 + 0 +LWPOLYLINE + 5 +F27 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +161.1788509568678 + 10 +89.45950968993705 + 20 +161.0374296006304 + 10 +87.05950968993704 + 20 +161.0374296006304 + 10 +86.9180883336997 + 20 +161.1788509568677 + 0 +LWPOLYLINE + 5 +F28 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +161.846008244393 + 10 +-59.79299031006288 + 20 +161.9874296006303 + 10 +-57.39299031006284 + 20 +161.9874296006303 + 10 +-57.25156895382553 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F29 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +162.3160082443928 + 10 +-63.89049031006297 + 20 +162.4574296006301 + 10 +-66.29049031006298 + 20 +162.4574296006301 + 10 +-66.43191166630032 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F2A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +161.846008244393 + 10 +-53.36799031006304 + 20 +161.9874296006303 + 10 +-55.76799031006307 + 20 +161.9874296006303 + 10 +-55.90941166630039 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F2B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +170.6988509568676 + 10 +-53.36799031006304 + 20 +170.5574296006303 + 10 +-55.76799031006307 + 20 +170.5574296006303 + 10 +-55.90941166630039 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F2C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +170.6988509568676 + 10 +-59.79299031006288 + 20 +170.5574296006303 + 10 +-57.39299031006284 + 20 +170.5574296006303 + 10 +-57.25156895382553 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F2D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +170.6788509568678 + 10 +-63.89049031006297 + 20 +170.5374296006304 + 10 +-66.29049031006298 + 20 +170.5374296006304 + 10 +-66.43191166630032 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F2E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +161.846008244393 + 10 +-44.45799031006288 + 20 +161.9874296006303 + 10 +-42.05799031006284 + 20 +161.9874296006303 + 10 +-41.91656895382553 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F2F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +162.3160082443928 + 10 +-48.55549031006297 + 20 +162.4574296006301 + 10 +-50.95549031006298 + 20 +162.4574296006301 + 10 +-51.09691166630032 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F30 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +161.846008244393 + 10 +-38.03299031006303 + 20 +161.9874296006303 + 10 +-40.43299031006307 + 20 +161.9874296006303 + 10 +-40.57441166630039 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F31 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +170.6988509568676 + 10 +-38.03299031006303 + 20 +170.5574296006303 + 10 +-40.43299031006307 + 20 +170.5574296006303 + 10 +-40.57441166630039 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F32 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +170.6988509568676 + 10 +-44.45799031006288 + 20 +170.5574296006303 + 10 +-42.05799031006284 + 20 +170.5574296006303 + 10 +-41.91656895382553 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F33 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +170.6788509568678 + 10 +-48.55549031006297 + 20 +170.5374296006304 + 10 +-50.95549031006298 + 20 +170.5374296006304 + 10 +-51.09691166630032 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F34 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +161.846008244393 + 10 +-29.12299031006287 + 20 +161.9874296006303 + 10 +-26.72299031006284 + 20 +161.9874296006303 + 10 +-26.58156895382552 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F35 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +162.3160082443928 + 10 +-33.22049031006297 + 20 +162.4574296006301 + 10 +-35.62049031006298 + 20 +162.4574296006301 + 10 +-35.76191166630032 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F36 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +161.846008244393 + 10 +-22.69799031006303 + 20 +161.9874296006303 + 10 +-25.09799031006307 + 20 +161.9874296006303 + 10 +-25.23941166630038 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F37 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +170.6988509568676 + 10 +-22.69799031006303 + 20 +170.5574296006303 + 10 +-25.09799031006307 + 20 +170.5574296006303 + 10 +-25.23941166630038 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F38 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +170.6988509568676 + 10 +-29.12299031006287 + 20 +170.5574296006303 + 10 +-26.72299031006284 + 20 +170.5574296006303 + 10 +-26.58156895382552 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F39 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +170.6788509568678 + 10 +-33.22049031006297 + 20 +170.5374296006304 + 10 +-35.62049031006298 + 20 +170.5374296006304 + 10 +-35.76191166630032 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F3A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +161.846008244393 + 10 +-13.78799031006287 + 20 +161.9874296006303 + 10 +-11.38799031006284 + 20 +161.9874296006303 + 10 +-11.24656895382552 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F3B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +162.3160082443928 + 10 +-17.88549031006297 + 20 +162.4574296006301 + 10 +-20.28549031006298 + 20 +162.4574296006301 + 10 +-20.42691166630032 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F3C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +161.846008244393 + 10 +-7.362990310063033 + 20 +161.9874296006303 + 10 +-9.762990310063067 + 20 +161.9874296006303 + 10 +-9.904411666300383 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F3D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +170.6988509568676 + 10 +-7.362990310063033 + 20 +170.5574296006303 + 10 +-9.762990310063067 + 20 +170.5574296006303 + 10 +-9.904411666300383 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F3E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +170.6988509568676 + 10 +-13.78799031006287 + 20 +170.5574296006303 + 10 +-11.38799031006284 + 20 +170.5574296006303 + 10 +-11.24656895382552 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F3F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +170.6788509568678 + 10 +-17.88549031006297 + 20 +170.5374296006304 + 10 +-20.28549031006298 + 20 +170.5374296006304 + 10 +-20.42691166630032 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F40 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +161.846008244393 + 10 +1.547009689937127 + 20 +161.9874296006303 + 10 +3.947009689937161 + 20 +161.9874296006303 + 10 +4.088431046174478 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F41 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +162.3160082443928 + 10 +-2.550490310062969 + 20 +162.4574296006301 + 10 +-4.950490310062975 + 20 +162.4574296006301 + 10 +-5.091911666300319 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F42 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +161.846008244393 + 10 +7.972009689936968 + 20 +161.9874296006303 + 10 +5.572009689936934 + 20 +161.9874296006303 + 10 +5.430588333699617 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F43 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +170.6988509568676 + 10 +7.972009689936968 + 20 +170.5574296006303 + 10 +5.572009689936934 + 20 +170.5574296006303 + 10 +5.430588333699617 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F44 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +170.6988509568676 + 10 +1.547009689937127 + 20 +170.5574296006303 + 10 +3.947009689937161 + 20 +170.5574296006303 + 10 +4.088431046174478 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F45 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +170.6788509568678 + 10 +-2.550490310062969 + 20 +170.5374296006304 + 10 +-4.950490310062975 + 20 +170.5374296006304 + 10 +-5.091911666300319 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F46 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +161.846008244393 + 10 +16.88200968993714 + 20 +161.9874296006303 + 10 +19.28200968993717 + 20 +161.9874296006303 + 10 +19.42343104617449 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F47 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +162.3160082443928 + 10 +12.78450968993704 + 20 +162.4574296006301 + 10 +10.38450968993703 + 20 +162.4574296006301 + 10 +10.24308833369969 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F48 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +161.846008244393 + 10 +23.30700968993698 + 20 +161.9874296006303 + 10 +20.90700968993694 + 20 +161.9874296006303 + 10 +20.76558833369963 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F49 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +170.6988509568676 + 10 +23.30700968993698 + 20 +170.5574296006303 + 10 +20.90700968993694 + 20 +170.5574296006303 + 10 +20.76558833369963 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F4A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +170.6988509568676 + 10 +16.88200968993714 + 20 +170.5574296006303 + 10 +19.28200968993717 + 20 +170.5574296006303 + 10 +19.42343104617449 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F4B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +170.6788509568678 + 10 +12.78450968993704 + 20 +170.5374296006304 + 10 +10.38450968993703 + 20 +170.5374296006304 + 10 +10.24308833369969 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F4C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +161.846008244393 + 10 +32.21700968993713 + 20 +161.9874296006303 + 10 +34.61700968993716 + 20 +161.9874296006303 + 10 +34.75843104617448 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F4D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +162.3160082443928 + 10 +28.11950968993703 + 20 +162.4574296006301 + 10 +25.71950968993703 + 20 +162.4574296006301 + 10 +25.57808833369968 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F4E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +161.846008244393 + 10 +38.64200968993697 + 20 +161.9874296006303 + 10 +36.24200968993694 + 20 +161.9874296006303 + 10 +36.10058833369962 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F4F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +170.6988509568676 + 10 +38.64200968993697 + 20 +170.5574296006303 + 10 +36.24200968993694 + 20 +170.5574296006303 + 10 +36.10058833369962 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F50 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +170.6988509568676 + 10 +32.21700968993713 + 20 +170.5574296006303 + 10 +34.61700968993716 + 20 +170.5574296006303 + 10 +34.75843104617448 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F51 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +170.6788509568678 + 10 +28.11950968993703 + 20 +170.5374296006304 + 10 +25.71950968993703 + 20 +170.5374296006304 + 10 +25.57808833369968 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F52 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +161.846008244393 + 10 +47.55200968993712 + 20 +161.9874296006303 + 10 +49.95200968993716 + 20 +161.9874296006303 + 10 +50.09343104617447 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F53 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +162.3160082443928 + 10 +43.45450968993703 + 20 +162.4574296006301 + 10 +41.05450968993702 + 20 +162.4574296006301 + 10 +40.91308833369968 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F54 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +161.846008244393 + 10 +53.97700968993696 + 20 +161.9874296006303 + 10 +51.57700968993693 + 20 +161.9874296006303 + 10 +51.43558833369961 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F55 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +170.6988509568676 + 10 +53.97700968993696 + 20 +170.5574296006303 + 10 +51.57700968993693 + 20 +170.5574296006303 + 10 +51.43558833369961 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F56 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +170.6988509568676 + 10 +47.55200968993712 + 20 +170.5574296006303 + 10 +49.95200968993716 + 20 +170.5574296006303 + 10 +50.09343104617447 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F57 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +170.6788509568678 + 10 +43.45450968993703 + 20 +170.5374296006304 + 10 +41.05450968993702 + 20 +170.5374296006304 + 10 +40.91308833369968 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F58 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +161.846008244393 + 10 +62.88700968993713 + 20 +161.9874296006303 + 10 +65.28700968993716 + 20 +161.9874296006303 + 10 +65.42843104617448 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F59 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +162.3160082443928 + 10 +58.78950968993703 + 20 +162.4574296006301 + 10 +56.38950968993703 + 20 +162.4574296006301 + 10 +56.24808833369968 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F5A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +161.846008244393 + 10 +69.31200968993697 + 20 +161.9874296006303 + 10 +66.91200968993694 + 20 +161.9874296006303 + 10 +66.77058833369962 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F5B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +170.6988509568676 + 10 +69.31200968993697 + 20 +170.5574296006303 + 10 +66.91200968993694 + 20 +170.5574296006303 + 10 +66.77058833369962 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F5C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +170.6988509568676 + 10 +62.88700968993713 + 20 +170.5574296006303 + 10 +65.28700968993716 + 20 +170.5574296006303 + 10 +65.42843104617448 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F5D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +170.6788509568678 + 10 +58.78950968993703 + 20 +170.5374296006304 + 10 +56.38950968993703 + 20 +170.5374296006304 + 10 +56.24808833369968 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F5E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +161.846008244393 + 10 +78.22200968993714 + 20 +161.9874296006303 + 10 +80.62200968993717 + 20 +161.9874296006303 + 10 +80.76343104617449 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F5F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +162.3160082443928 + 10 +74.12450968993704 + 20 +162.4574296006301 + 10 +71.72450968993704 + 20 +162.4574296006301 + 10 +71.58308833369969 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F60 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +161.846008244393 + 10 +84.64700968993698 + 20 +161.9874296006303 + 10 +82.24700968993695 + 20 +161.9874296006303 + 10 +82.10558833369963 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F61 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +170.6988509568676 + 10 +84.64700968993698 + 20 +170.5574296006303 + 10 +82.24700968993695 + 20 +170.5574296006303 + 10 +82.10558833369963 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F62 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +170.6988509568676 + 10 +78.22200968993714 + 20 +170.5574296006303 + 10 +80.62200968993717 + 20 +170.5574296006303 + 10 +80.76343104617449 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F63 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +170.6788509568678 + 10 +74.12450968993704 + 20 +170.5374296006304 + 10 +71.72450968993704 + 20 +170.5374296006304 + 10 +71.58308833369969 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F64 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +161.846008244393 + 10 +93.55700968993715 + 20 +161.9874296006303 + 10 +95.95700968993718 + 20 +161.9874296006303 + 10 +96.0984310461745 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F65 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +162.3160082443928 + 10 +89.45950968993705 + 20 +162.4574296006301 + 10 +87.05950968993704 + 20 +162.4574296006301 + 10 +86.9180883336997 + 20 +162.3160082443928 + 0 +LWPOLYLINE + 5 +F66 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +161.846008244393 + 10 +99.98200968993699 + 20 +161.9874296006303 + 10 +97.58200968993695 + 20 +161.9874296006303 + 10 +97.44058833369964 + 20 +161.846008244393 + 0 +LWPOLYLINE + 5 +F67 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +170.6988509568676 + 10 +99.98200968993699 + 20 +170.5574296006303 + 10 +97.58200968993695 + 20 +170.5574296006303 + 10 +97.44058833369964 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F68 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +170.6988509568676 + 10 +93.55700968993715 + 20 +170.5574296006303 + 10 +95.95700968993718 + 20 +170.5574296006303 + 10 +96.0984310461745 + 20 +170.6988509568676 + 0 +LWPOLYLINE + 5 +F69 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +170.6788509568678 + 10 +89.45950968993705 + 20 +170.5374296006304 + 10 +87.05950968993704 + 20 +170.5374296006304 + 10 +86.9180883336997 + 20 +170.6788509568677 + 0 +LWPOLYLINE + 5 +F6A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +171.346008244393 + 10 +-59.79299031006288 + 20 +171.4874296006303 + 10 +-57.39299031006284 + 20 +171.4874296006303 + 10 +-57.25156895382553 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F6B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +171.8160082443928 + 10 +-63.89049031006297 + 20 +171.9574296006301 + 10 +-66.29049031006298 + 20 +171.9574296006301 + 10 +-66.43191166630032 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F6C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +171.346008244393 + 10 +-53.36799031006304 + 20 +171.4874296006303 + 10 +-55.76799031006307 + 20 +171.4874296006303 + 10 +-55.90941166630039 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F6D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +180.1988509568676 + 10 +-53.36799031006304 + 20 +180.0574296006303 + 10 +-55.76799031006307 + 20 +180.0574296006303 + 10 +-55.90941166630039 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F6E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +180.1988509568676 + 10 +-59.79299031006288 + 20 +180.0574296006303 + 10 +-57.39299031006284 + 20 +180.0574296006303 + 10 +-57.25156895382553 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F6F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +180.1788509568678 + 10 +-63.89049031006297 + 20 +180.0374296006304 + 10 +-66.29049031006298 + 20 +180.0374296006304 + 10 +-66.43191166630032 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F70 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +171.346008244393 + 10 +-44.45799031006288 + 20 +171.4874296006303 + 10 +-42.05799031006284 + 20 +171.4874296006303 + 10 +-41.91656895382553 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F71 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +171.8160082443928 + 10 +-48.55549031006297 + 20 +171.9574296006301 + 10 +-50.95549031006298 + 20 +171.9574296006301 + 10 +-51.09691166630032 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F72 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +171.346008244393 + 10 +-38.03299031006303 + 20 +171.4874296006303 + 10 +-40.43299031006307 + 20 +171.4874296006303 + 10 +-40.57441166630039 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F73 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +180.1988509568676 + 10 +-38.03299031006303 + 20 +180.0574296006303 + 10 +-40.43299031006307 + 20 +180.0574296006303 + 10 +-40.57441166630039 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F74 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +180.1988509568676 + 10 +-44.45799031006288 + 20 +180.0574296006303 + 10 +-42.05799031006284 + 20 +180.0574296006303 + 10 +-41.91656895382553 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F75 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +180.1788509568678 + 10 +-48.55549031006297 + 20 +180.0374296006304 + 10 +-50.95549031006298 + 20 +180.0374296006304 + 10 +-51.09691166630032 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F76 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +171.346008244393 + 10 +-29.12299031006287 + 20 +171.4874296006303 + 10 +-26.72299031006284 + 20 +171.4874296006303 + 10 +-26.58156895382552 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F77 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +171.8160082443928 + 10 +-33.22049031006297 + 20 +171.9574296006301 + 10 +-35.62049031006298 + 20 +171.9574296006301 + 10 +-35.76191166630032 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F78 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +171.346008244393 + 10 +-22.69799031006303 + 20 +171.4874296006303 + 10 +-25.09799031006307 + 20 +171.4874296006303 + 10 +-25.23941166630038 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F79 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +180.1988509568676 + 10 +-22.69799031006303 + 20 +180.0574296006303 + 10 +-25.09799031006307 + 20 +180.0574296006303 + 10 +-25.23941166630038 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F7A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +180.1988509568676 + 10 +-29.12299031006287 + 20 +180.0574296006303 + 10 +-26.72299031006284 + 20 +180.0574296006303 + 10 +-26.58156895382552 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F7B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +180.1788509568678 + 10 +-33.22049031006297 + 20 +180.0374296006304 + 10 +-35.62049031006298 + 20 +180.0374296006304 + 10 +-35.76191166630032 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F7C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +171.346008244393 + 10 +-13.78799031006287 + 20 +171.4874296006303 + 10 +-11.38799031006284 + 20 +171.4874296006303 + 10 +-11.24656895382552 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F7D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +171.8160082443928 + 10 +-17.88549031006297 + 20 +171.9574296006301 + 10 +-20.28549031006298 + 20 +171.9574296006301 + 10 +-20.42691166630032 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F7E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +171.346008244393 + 10 +-7.362990310063033 + 20 +171.4874296006303 + 10 +-9.762990310063067 + 20 +171.4874296006303 + 10 +-9.904411666300383 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F7F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +180.1988509568676 + 10 +-7.362990310063033 + 20 +180.0574296006303 + 10 +-9.762990310063067 + 20 +180.0574296006303 + 10 +-9.904411666300383 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F80 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +180.1988509568676 + 10 +-13.78799031006287 + 20 +180.0574296006303 + 10 +-11.38799031006284 + 20 +180.0574296006303 + 10 +-11.24656895382552 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F81 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +180.1788509568678 + 10 +-17.88549031006297 + 20 +180.0374296006304 + 10 +-20.28549031006298 + 20 +180.0374296006304 + 10 +-20.42691166630032 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F82 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +171.346008244393 + 10 +1.547009689937127 + 20 +171.4874296006303 + 10 +3.947009689937161 + 20 +171.4874296006303 + 10 +4.088431046174478 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F83 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +171.8160082443928 + 10 +-2.550490310062969 + 20 +171.9574296006301 + 10 +-4.950490310062975 + 20 +171.9574296006301 + 10 +-5.091911666300319 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F84 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +171.346008244393 + 10 +7.972009689936968 + 20 +171.4874296006303 + 10 +5.572009689936934 + 20 +171.4874296006303 + 10 +5.430588333699617 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F85 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +180.1988509568676 + 10 +7.972009689936968 + 20 +180.0574296006303 + 10 +5.572009689936934 + 20 +180.0574296006303 + 10 +5.430588333699617 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F86 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +180.1988509568676 + 10 +1.547009689937127 + 20 +180.0574296006303 + 10 +3.947009689937161 + 20 +180.0574296006303 + 10 +4.088431046174478 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F87 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +180.1788509568678 + 10 +-2.550490310062969 + 20 +180.0374296006304 + 10 +-4.950490310062975 + 20 +180.0374296006304 + 10 +-5.091911666300319 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F88 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +171.346008244393 + 10 +16.88200968993714 + 20 +171.4874296006303 + 10 +19.28200968993717 + 20 +171.4874296006303 + 10 +19.42343104617449 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F89 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +171.8160082443928 + 10 +12.78450968993704 + 20 +171.9574296006301 + 10 +10.38450968993703 + 20 +171.9574296006301 + 10 +10.24308833369969 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F8A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +171.346008244393 + 10 +23.30700968993698 + 20 +171.4874296006303 + 10 +20.90700968993694 + 20 +171.4874296006303 + 10 +20.76558833369963 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F8B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +180.1988509568676 + 10 +23.30700968993698 + 20 +180.0574296006303 + 10 +20.90700968993694 + 20 +180.0574296006303 + 10 +20.76558833369963 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F8C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +180.1988509568676 + 10 +16.88200968993714 + 20 +180.0574296006303 + 10 +19.28200968993717 + 20 +180.0574296006303 + 10 +19.42343104617449 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F8D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +180.1788509568678 + 10 +12.78450968993704 + 20 +180.0374296006304 + 10 +10.38450968993703 + 20 +180.0374296006304 + 10 +10.24308833369969 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F8E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +171.346008244393 + 10 +32.21700968993713 + 20 +171.4874296006303 + 10 +34.61700968993716 + 20 +171.4874296006303 + 10 +34.75843104617448 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F8F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +171.8160082443928 + 10 +28.11950968993703 + 20 +171.9574296006301 + 10 +25.71950968993703 + 20 +171.9574296006301 + 10 +25.57808833369968 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F90 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +171.346008244393 + 10 +38.64200968993697 + 20 +171.4874296006303 + 10 +36.24200968993694 + 20 +171.4874296006303 + 10 +36.10058833369962 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F91 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +180.1988509568676 + 10 +38.64200968993697 + 20 +180.0574296006303 + 10 +36.24200968993694 + 20 +180.0574296006303 + 10 +36.10058833369962 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F92 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +180.1988509568676 + 10 +32.21700968993713 + 20 +180.0574296006303 + 10 +34.61700968993716 + 20 +180.0574296006303 + 10 +34.75843104617448 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F93 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +180.1788509568678 + 10 +28.11950968993703 + 20 +180.0374296006304 + 10 +25.71950968993703 + 20 +180.0374296006304 + 10 +25.57808833369968 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F94 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +171.346008244393 + 10 +47.55200968993712 + 20 +171.4874296006303 + 10 +49.95200968993716 + 20 +171.4874296006303 + 10 +50.09343104617447 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F95 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +171.8160082443928 + 10 +43.45450968993703 + 20 +171.9574296006301 + 10 +41.05450968993702 + 20 +171.9574296006301 + 10 +40.91308833369968 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F96 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +171.346008244393 + 10 +53.97700968993696 + 20 +171.4874296006303 + 10 +51.57700968993693 + 20 +171.4874296006303 + 10 +51.43558833369961 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F97 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +180.1988509568676 + 10 +53.97700968993696 + 20 +180.0574296006303 + 10 +51.57700968993693 + 20 +180.0574296006303 + 10 +51.43558833369961 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F98 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +180.1988509568676 + 10 +47.55200968993712 + 20 +180.0574296006303 + 10 +49.95200968993716 + 20 +180.0574296006303 + 10 +50.09343104617447 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F99 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +180.1788509568678 + 10 +43.45450968993703 + 20 +180.0374296006304 + 10 +41.05450968993702 + 20 +180.0374296006304 + 10 +40.91308833369968 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +F9A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +171.346008244393 + 10 +62.88700968993713 + 20 +171.4874296006303 + 10 +65.28700968993716 + 20 +171.4874296006303 + 10 +65.42843104617448 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F9B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +171.8160082443928 + 10 +58.78950968993703 + 20 +171.9574296006301 + 10 +56.38950968993703 + 20 +171.9574296006301 + 10 +56.24808833369968 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +F9C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +171.346008244393 + 10 +69.31200968993697 + 20 +171.4874296006303 + 10 +66.91200968993694 + 20 +171.4874296006303 + 10 +66.77058833369962 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +F9D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +180.1988509568676 + 10 +69.31200968993697 + 20 +180.0574296006303 + 10 +66.91200968993694 + 20 +180.0574296006303 + 10 +66.77058833369962 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F9E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +180.1988509568676 + 10 +62.88700968993713 + 20 +180.0574296006303 + 10 +65.28700968993716 + 20 +180.0574296006303 + 10 +65.42843104617448 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +F9F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +180.1788509568678 + 10 +58.78950968993703 + 20 +180.0374296006304 + 10 +56.38950968993703 + 20 +180.0374296006304 + 10 +56.24808833369968 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +FA0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +171.346008244393 + 10 +78.22200968993714 + 20 +171.4874296006303 + 10 +80.62200968993717 + 20 +171.4874296006303 + 10 +80.76343104617449 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +FA1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +171.8160082443928 + 10 +74.12450968993704 + 20 +171.9574296006301 + 10 +71.72450968993704 + 20 +171.9574296006301 + 10 +71.58308833369969 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +FA2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +171.346008244393 + 10 +84.64700968993698 + 20 +171.4874296006303 + 10 +82.24700968993695 + 20 +171.4874296006303 + 10 +82.10558833369963 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +FA3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +180.1988509568676 + 10 +84.64700968993698 + 20 +180.0574296006303 + 10 +82.24700968993695 + 20 +180.0574296006303 + 10 +82.10558833369963 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +FA4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +180.1988509568676 + 10 +78.22200968993714 + 20 +180.0574296006303 + 10 +80.62200968993717 + 20 +180.0574296006303 + 10 +80.76343104617449 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +FA5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +180.1788509568678 + 10 +74.12450968993704 + 20 +180.0374296006304 + 10 +71.72450968993704 + 20 +180.0374296006304 + 10 +71.58308833369969 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +FA6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +171.346008244393 + 10 +93.55700968993715 + 20 +171.4874296006303 + 10 +95.95700968993718 + 20 +171.4874296006303 + 10 +96.0984310461745 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +FA7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +171.8160082443928 + 10 +89.45950968993705 + 20 +171.9574296006301 + 10 +87.05950968993704 + 20 +171.9574296006301 + 10 +86.9180883336997 + 20 +171.8160082443928 + 0 +LWPOLYLINE + 5 +FA8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +171.346008244393 + 10 +99.98200968993699 + 20 +171.4874296006303 + 10 +97.58200968993695 + 20 +171.4874296006303 + 10 +97.44058833369964 + 20 +171.346008244393 + 0 +LWPOLYLINE + 5 +FA9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +180.1988509568676 + 10 +99.98200968993699 + 20 +180.0574296006303 + 10 +97.58200968993695 + 20 +180.0574296006303 + 10 +97.44058833369964 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +FAA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +180.1988509568676 + 10 +93.55700968993715 + 20 +180.0574296006303 + 10 +95.95700968993718 + 20 +180.0574296006303 + 10 +96.0984310461745 + 20 +180.1988509568676 + 0 +LWPOLYLINE + 5 +FAB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +180.1788509568678 + 10 +89.45950968993705 + 20 +180.0374296006304 + 10 +87.05950968993704 + 20 +180.0374296006304 + 10 +86.9180883336997 + 20 +180.1788509568677 + 0 +LWPOLYLINE + 5 +FAC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +180.846008244393 + 10 +-59.79299031006288 + 20 +180.9874296006303 + 10 +-57.39299031006284 + 20 +180.9874296006303 + 10 +-57.25156895382553 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FAD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +181.3160082443928 + 10 +-63.89049031006297 + 20 +181.4574296006301 + 10 +-66.29049031006298 + 20 +181.4574296006301 + 10 +-66.43191166630032 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FAE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +180.846008244393 + 10 +-53.36799031006304 + 20 +180.9874296006303 + 10 +-55.76799031006307 + 20 +180.9874296006303 + 10 +-55.90941166630039 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FAF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-53.22656895382572 + 20 +189.6988509568676 + 10 +-53.36799031006304 + 20 +189.5574296006303 + 10 +-55.76799031006307 + 20 +189.5574296006303 + 10 +-55.90941166630039 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FB0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-59.93441166630019 + 20 +189.6988509568676 + 10 +-59.79299031006288 + 20 +189.5574296006303 + 10 +-57.39299031006284 + 20 +189.5574296006303 + 10 +-57.25156895382553 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FB1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-63.74906895382566 + 20 +189.6788509568678 + 10 +-63.89049031006297 + 20 +189.5374296006304 + 10 +-66.29049031006298 + 20 +189.5374296006304 + 10 +-66.43191166630032 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FB2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +180.846008244393 + 10 +-44.45799031006288 + 20 +180.9874296006303 + 10 +-42.05799031006284 + 20 +180.9874296006303 + 10 +-41.91656895382553 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FB3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +181.3160082443928 + 10 +-48.55549031006297 + 20 +181.4574296006301 + 10 +-50.95549031006298 + 20 +181.4574296006301 + 10 +-51.09691166630032 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FB4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +180.846008244393 + 10 +-38.03299031006303 + 20 +180.9874296006303 + 10 +-40.43299031006307 + 20 +180.9874296006303 + 10 +-40.57441166630039 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FB5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-37.89156895382572 + 20 +189.6988509568676 + 10 +-38.03299031006303 + 20 +189.5574296006303 + 10 +-40.43299031006307 + 20 +189.5574296006303 + 10 +-40.57441166630039 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FB6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.59941166630019 + 20 +189.6988509568676 + 10 +-44.45799031006288 + 20 +189.5574296006303 + 10 +-42.05799031006284 + 20 +189.5574296006303 + 10 +-41.91656895382553 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FB7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-48.41406895382566 + 20 +189.6788509568678 + 10 +-48.55549031006297 + 20 +189.5374296006304 + 10 +-50.95549031006298 + 20 +189.5374296006304 + 10 +-51.09691166630032 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FB8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +180.846008244393 + 10 +-29.12299031006287 + 20 +180.9874296006303 + 10 +-26.72299031006284 + 20 +180.9874296006303 + 10 +-26.58156895382552 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FB9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +181.3160082443928 + 10 +-33.22049031006297 + 20 +181.4574296006301 + 10 +-35.62049031006298 + 20 +181.4574296006301 + 10 +-35.76191166630032 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FBA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +180.846008244393 + 10 +-22.69799031006303 + 20 +180.9874296006303 + 10 +-25.09799031006307 + 20 +180.9874296006303 + 10 +-25.23941166630038 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FBB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-22.55656895382572 + 20 +189.6988509568676 + 10 +-22.69799031006303 + 20 +189.5574296006303 + 10 +-25.09799031006307 + 20 +189.5574296006303 + 10 +-25.23941166630038 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FBC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-29.26441166630019 + 20 +189.6988509568676 + 10 +-29.12299031006287 + 20 +189.5574296006303 + 10 +-26.72299031006284 + 20 +189.5574296006303 + 10 +-26.58156895382552 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FBD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-33.07906895382565 + 20 +189.6788509568678 + 10 +-33.22049031006297 + 20 +189.5374296006304 + 10 +-35.62049031006298 + 20 +189.5374296006304 + 10 +-35.76191166630032 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FBE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +180.846008244393 + 10 +-13.78799031006287 + 20 +180.9874296006303 + 10 +-11.38799031006284 + 20 +180.9874296006303 + 10 +-11.24656895382552 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FBF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +181.3160082443928 + 10 +-17.88549031006297 + 20 +181.4574296006301 + 10 +-20.28549031006298 + 20 +181.4574296006301 + 10 +-20.42691166630032 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FC0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +180.846008244393 + 10 +-7.362990310063033 + 20 +180.9874296006303 + 10 +-9.762990310063067 + 20 +180.9874296006303 + 10 +-9.904411666300383 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FC1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-7.221568953825717 + 20 +189.6988509568676 + 10 +-7.362990310063033 + 20 +189.5574296006303 + 10 +-9.762990310063067 + 20 +189.5574296006303 + 10 +-9.904411666300383 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FC2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-13.92941166630019 + 20 +189.6988509568676 + 10 +-13.78799031006287 + 20 +189.5574296006303 + 10 +-11.38799031006284 + 20 +189.5574296006303 + 10 +-11.24656895382552 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FC3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-17.74406895382565 + 20 +189.6788509568678 + 10 +-17.88549031006297 + 20 +189.5374296006304 + 10 +-20.28549031006298 + 20 +189.5374296006304 + 10 +-20.42691166630032 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FC4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +180.846008244393 + 10 +1.547009689937127 + 20 +180.9874296006303 + 10 +3.947009689937161 + 20 +180.9874296006303 + 10 +4.088431046174478 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FC5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +181.3160082443928 + 10 +-2.550490310062969 + 20 +181.4574296006301 + 10 +-4.950490310062975 + 20 +181.4574296006301 + 10 +-5.091911666300319 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FC6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +180.846008244393 + 10 +7.972009689936968 + 20 +180.9874296006303 + 10 +5.572009689936934 + 20 +180.9874296006303 + 10 +5.430588333699617 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FC7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +8.113431046174284 + 20 +189.6988509568676 + 10 +7.972009689936968 + 20 +189.5574296006303 + 10 +5.572009689936934 + 20 +189.5574296006303 + 10 +5.430588333699617 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FC8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +1.405588333699811 + 20 +189.6988509568676 + 10 +1.547009689937127 + 20 +189.5574296006303 + 10 +3.947009689937161 + 20 +189.5574296006303 + 10 +4.088431046174478 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FC9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-2.409068953825653 + 20 +189.6788509568678 + 10 +-2.550490310062969 + 20 +189.5374296006304 + 10 +-4.950490310062975 + 20 +189.5374296006304 + 10 +-5.091911666300319 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FCA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +180.846008244393 + 10 +16.88200968993714 + 20 +180.9874296006303 + 10 +19.28200968993717 + 20 +180.9874296006303 + 10 +19.42343104617449 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FCB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +181.3160082443928 + 10 +12.78450968993704 + 20 +181.4574296006301 + 10 +10.38450968993703 + 20 +181.4574296006301 + 10 +10.24308833369969 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FCC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +180.846008244393 + 10 +23.30700968993698 + 20 +180.9874296006303 + 10 +20.90700968993694 + 20 +180.9874296006303 + 10 +20.76558833369963 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FCD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +23.44843104617429 + 20 +189.6988509568676 + 10 +23.30700968993698 + 20 +189.5574296006303 + 10 +20.90700968993694 + 20 +189.5574296006303 + 10 +20.76558833369963 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FCE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +16.74058833369982 + 20 +189.6988509568676 + 10 +16.88200968993714 + 20 +189.5574296006303 + 10 +19.28200968993717 + 20 +189.5574296006303 + 10 +19.42343104617449 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FCF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +12.92593104617436 + 20 +189.6788509568678 + 10 +12.78450968993704 + 20 +189.5374296006304 + 10 +10.38450968993703 + 20 +189.5374296006304 + 10 +10.24308833369969 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FD0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +180.846008244393 + 10 +32.21700968993713 + 20 +180.9874296006303 + 10 +34.61700968993716 + 20 +180.9874296006303 + 10 +34.75843104617448 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FD1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +181.3160082443928 + 10 +28.11950968993703 + 20 +181.4574296006301 + 10 +25.71950968993703 + 20 +181.4574296006301 + 10 +25.57808833369968 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FD2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +180.846008244393 + 10 +38.64200968993697 + 20 +180.9874296006303 + 10 +36.24200968993694 + 20 +180.9874296006303 + 10 +36.10058833369962 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FD3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +38.78343104617429 + 20 +189.6988509568676 + 10 +38.64200968993697 + 20 +189.5574296006303 + 10 +36.24200968993694 + 20 +189.5574296006303 + 10 +36.10058833369962 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FD4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +32.07558833369981 + 20 +189.6988509568676 + 10 +32.21700968993713 + 20 +189.5574296006303 + 10 +34.61700968993716 + 20 +189.5574296006303 + 10 +34.75843104617448 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FD5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +28.26093104617435 + 20 +189.6788509568678 + 10 +28.11950968993703 + 20 +189.5374296006304 + 10 +25.71950968993703 + 20 +189.5374296006304 + 10 +25.57808833369968 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FD6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +180.846008244393 + 10 +47.55200968993712 + 20 +180.9874296006303 + 10 +49.95200968993716 + 20 +180.9874296006303 + 10 +50.09343104617447 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FD7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +181.3160082443928 + 10 +43.45450968993703 + 20 +181.4574296006301 + 10 +41.05450968993702 + 20 +181.4574296006301 + 10 +40.91308833369968 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FD8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +180.846008244393 + 10 +53.97700968993696 + 20 +180.9874296006303 + 10 +51.57700968993693 + 20 +180.9874296006303 + 10 +51.43558833369961 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FD9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +54.11843104617428 + 20 +189.6988509568676 + 10 +53.97700968993696 + 20 +189.5574296006303 + 10 +51.57700968993693 + 20 +189.5574296006303 + 10 +51.43558833369961 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FDA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +47.41058833369981 + 20 +189.6988509568676 + 10 +47.55200968993712 + 20 +189.5574296006303 + 10 +49.95200968993716 + 20 +189.5574296006303 + 10 +50.09343104617447 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FDB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +43.59593104617434 + 20 +189.6788509568678 + 10 +43.45450968993703 + 20 +189.5374296006304 + 10 +41.05450968993702 + 20 +189.5374296006304 + 10 +40.91308833369968 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FDC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +180.846008244393 + 10 +62.88700968993713 + 20 +180.9874296006303 + 10 +65.28700968993716 + 20 +180.9874296006303 + 10 +65.42843104617448 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FDD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +181.3160082443928 + 10 +58.78950968993703 + 20 +181.4574296006301 + 10 +56.38950968993703 + 20 +181.4574296006301 + 10 +56.24808833369968 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FDE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +180.846008244393 + 10 +69.31200968993697 + 20 +180.9874296006303 + 10 +66.91200968993694 + 20 +180.9874296006303 + 10 +66.77058833369962 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FDF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +69.45343104617429 + 20 +189.6988509568676 + 10 +69.31200968993697 + 20 +189.5574296006303 + 10 +66.91200968993694 + 20 +189.5574296006303 + 10 +66.77058833369962 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FE0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +62.74558833369981 + 20 +189.6988509568676 + 10 +62.88700968993713 + 20 +189.5574296006303 + 10 +65.28700968993716 + 20 +189.5574296006303 + 10 +65.42843104617448 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FE1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +58.93093104617435 + 20 +189.6788509568678 + 10 +58.78950968993703 + 20 +189.5374296006304 + 10 +56.38950968993703 + 20 +189.5374296006304 + 10 +56.24808833369968 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FE2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +180.846008244393 + 10 +78.22200968993714 + 20 +180.9874296006303 + 10 +80.62200968993717 + 20 +180.9874296006303 + 10 +80.76343104617449 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FE3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +181.3160082443928 + 10 +74.12450968993704 + 20 +181.4574296006301 + 10 +71.72450968993704 + 20 +181.4574296006301 + 10 +71.58308833369969 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FE4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +180.846008244393 + 10 +84.64700968993698 + 20 +180.9874296006303 + 10 +82.24700968993695 + 20 +180.9874296006303 + 10 +82.10558833369963 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FE5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +84.7884310461743 + 20 +189.6988509568676 + 10 +84.64700968993698 + 20 +189.5574296006303 + 10 +82.24700968993695 + 20 +189.5574296006303 + 10 +82.10558833369963 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FE6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +78.08058833369982 + 20 +189.6988509568676 + 10 +78.22200968993714 + 20 +189.5574296006303 + 10 +80.62200968993717 + 20 +189.5574296006303 + 10 +80.76343104617449 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FE7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +74.26593104617436 + 20 +189.6788509568678 + 10 +74.12450968993704 + 20 +189.5374296006304 + 10 +71.72450968993704 + 20 +189.5374296006304 + 10 +71.58308833369969 + 20 +189.6788509568677 + 0 +LWPOLYLINE + 5 +FE8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +180.846008244393 + 10 +93.55700968993715 + 20 +180.9874296006303 + 10 +95.95700968993718 + 20 +180.9874296006303 + 10 +96.0984310461745 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FE9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +181.3160082443928 + 10 +89.45950968993705 + 20 +181.4574296006301 + 10 +87.05950968993704 + 20 +181.4574296006301 + 10 +86.9180883336997 + 20 +181.3160082443928 + 0 +LWPOLYLINE + 5 +FEA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +180.846008244393 + 10 +99.98200968993699 + 20 +180.9874296006303 + 10 +97.58200968993695 + 20 +180.9874296006303 + 10 +97.44058833369964 + 20 +180.846008244393 + 0 +LWPOLYLINE + 5 +FEB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +100.1234310461743 + 20 +189.6988509568676 + 10 +99.98200968993699 + 20 +189.5574296006303 + 10 +97.58200968993695 + 20 +189.5574296006303 + 10 +97.44058833369964 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FEC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +93.41558833369983 + 20 +189.6988509568676 + 10 +93.55700968993715 + 20 +189.5574296006303 + 10 +95.95700968993718 + 20 +189.5574296006303 + 10 +96.0984310461745 + 20 +189.6988509568676 + 0 +LWPOLYLINE + 5 +FED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +89.60093104617437 + 20 +189.6788509568678 + 10 +89.45950968993705 + 20 +189.5374296006304 + 10 +87.05950968993704 + 20 +189.5374296006304 + 10 +86.9180883336997 + 20 +189.6788509568677 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +3D6 +330 +3D5 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +3D7 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +XRECORD + 5 +3D7 +102 +{ACAD_REACTORS +330 +3D6 +102 +} +330 +3D6 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +102 +{ACAD_XDICTIONARY +360 +6F4 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +6F3 + 0 +DICTIONARY + 5 +6F4 +330 +93 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +6F5 + 0 +XRECORD + 5 +6F3 +102 +{ACAD_REACTORS +330 +E7 +102 +} +330 +E7 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 1 + 77 + 1 +171 + 1 +175 + 1 +179 + 1 +273 + 0 + 0 +XRECORD + 5 +6F5 +102 +{ACAD_REACTORS +330 +6F4 +102 +} +330 +6F4 +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 512 + 91 + 0 + 1 + + 92 + 512 + 93 + 0 + 2 + + 94 + 512 + 95 + 0 + 3 + + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E279微连点切割.par b/LaiPuLaser/TempMarkData/E279微连点切割.par new file mode 100644 index 0000000..17ff796 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E279微连点切割.par differ diff --git a/LaiPuLaser/TempMarkData/E341 原图.are b/LaiPuLaser/TempMarkData/E341 原图.are new file mode 100644 index 0000000..a83ca5a Binary files /dev/null and b/LaiPuLaser/TempMarkData/E341 原图.are differ diff --git a/LaiPuLaser/TempMarkData/E341 原图.dxf b/LaiPuLaser/TempMarkData/E341 原图.dxf new file mode 100644 index 0000000..cf325c0 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E341 原图.dxf @@ -0,0 +1,19336 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +ADVANTECH + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-177.5000000000001 + 20 +-18.57290449624695 + 30 +0.0 + 9 +$EXTMAX + 10 +0.5 + 20 +88.48709550375298 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2458977.684718299 + 9 +$TDUCREATE + 40 +2458977.351384965 + 9 +$TDUPDATE + 40 +2458998.95079515 + 9 +$TDUUPDATE + 40 +2458998.617461817 + 9 +$TDINDWG + 40 +0.0066626273 + 9 +$TDUSRTIMER + 40 +0.0066246181 + 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 +46F + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{BB02C2F7-7323-4DA9-A7E0-07DC0F17A207} + 9 +$VERSIONGUID + 2 +{4607BC5C-56FE-4915-B72B-BE2F368083A2} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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 +410 + 9 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +41D + 9 +$INTERFEREVPVS +346 +41A + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 20 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +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 +40D +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-73.28714317241388 + 22 +62.03006733517064 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +174.7219199999999 + 41 +1.428727220647325 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 +348 +419 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 250 +421 + 3355443 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +41 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +412 + 0 +LAYER + 5 +39 +102 +{ACAD_XDICTIONARY +360 +3A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + -3 +390 +F +347 +412 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 4 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +3C +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层2 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +412 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +40 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 4 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +3D +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +3E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +副本Standard + 70 + 0 + 41 +0.5 + 42 +0.0 + 44 +0.2 + 73 + 0 + 74 + 0 +140 +0.6 +141 +0.0 +147 +0.1 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +340 +11 +341 +2D +342 +2D + 0 +DIMSTYLE +105 +3F +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +32 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_Dot +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +32 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E +330 +2D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +_Dot + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_Dot + 1 + + 0 +LWPOLYLINE + 5 +2F +330 +2D +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.5 + 10 +-0.25 + 20 +0.0 + 42 +1.0 + 10 +0.25 + 20 +0.0 + 42 +1.0 + 0 +LINE + 5 +30 +330 +2D +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-0.5 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +0.0 + 31 +0.0 + 0 +ENDBLK + 5 +31 +330 +2D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34 +330 +32 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +35 +330 +32 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36 +330 +32 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +LINE + 5 +37 +330 +32 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666666 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666666 + 31 +0.0 + 0 +ENDBLK + 5 +38 +330 +32 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-177.0000000000001 + 20 +45.00000000000297 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-10.82892509570112 + 21 +-17.82290449624689 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-10.82892509570112 + 21 +-11.28290449624695 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +-18.57290449624695 + 30 +0.0 + 11 +-20.25372306995871 + 21 +-18.57290449624695 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +-10.53290449624703 + 30 +0.0 + 11 +-20.25372306995871 + 21 +-10.53290449624698 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +-8.822904496246984 + 30 +0.0 + 11 +-10.82892509570112 + 21 +-8.822904496246885 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +-2.282904496246871 + 30 +0.0 + 11 +-10.82892509570112 + 21 +-2.28290449624695 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +-9.572904496246949 + 30 +0.0 + 11 +-20.25372306995871 + 21 +-9.572904496246984 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +-1.532904496247021 + 30 +0.0 + 11 +-20.25372306995871 + 21 +-1.532904496246978 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +0.1770955037530584 + 30 +0.0 + 11 +-10.82892509570112 + 21 +0.1770955037531294 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +6.717095503753121 + 30 +0.0 + 11 +-10.82892509570112 + 21 +6.717095503753008 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +-0.5729044962469416 + 30 +0.0 + 11 +-20.25372306995871 + 21 +-0.57290449624697 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +7.467095503752972 + 30 +0.0 + 11 +-20.25372306995871 + 21 +7.467095503752972 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +9.17709550375298 + 30 +0.0 + 11 +-10.82892509570112 + 21 +9.17709550375308 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +15.71709550375311 + 30 +0.0 + 11 +-10.82892509570112 + 21 +15.71709550375302 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +8.427095503753009 + 30 +0.0 + 11 +-20.25372306995871 + 21 +8.42709550375298 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +16.46709550375295 + 30 +0.0 + 11 +-20.25372306995871 + 21 +16.467095503753 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +18.19709550375302 + 30 +0.0 + 11 +-10.82892509570112 + 21 +18.19709550375308 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +24.73709550375313 + 30 +0.0 + 11 +-10.82892509570112 + 21 +24.73709550375304 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +17.44709550375302 + 30 +0.0 + 11 +-20.25372306995871 + 21 +17.447095503753 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +25.48709550375299 + 30 +0.0 + 11 +-20.25372306995871 + 21 +25.48709550375302 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +27.19709550375303 + 30 +0.0 + 11 +-10.82892509570112 + 21 +27.1970955037531 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +33.73709550375312 + 30 +0.0 + 11 +-10.82892509570112 + 21 +33.73709550375305 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +26.44709550375306 + 30 +0.0 + 11 +-20.25372306995871 + 21 +26.44709550375303 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +34.48709550375299 + 30 +0.0 + 11 +-20.25372306995871 + 21 +34.48709550375302 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +36.19709550375302 + 30 +0.0 + 11 +-10.82892509570112 + 21 +36.1970955037531 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +42.73709550375312 + 30 +0.0 + 11 +-10.82892509570112 + 21 +42.73709550375304 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +35.44709550375305 + 30 +0.0 + 11 +-20.25372306995871 + 21 +35.44709550375302 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +43.48709550375298 + 30 +0.0 + 11 +-20.25372306995871 + 21 +43.48709550375301 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +45.19709550375301 + 30 +0.0 + 11 +-10.82892509570112 + 21 +45.1970955037531 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +51.73709550375312 + 30 +0.0 + 11 +-10.82892509570112 + 21 +51.73709550375303 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +44.44709550375304 + 30 +0.0 + 11 +-20.25372306995871 + 21 +44.44709550375301 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +52.48709550375297 + 30 +0.0 + 11 +-20.25372306995871 + 21 +52.487095503753 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +54.19709550375301 + 30 +0.0 + 11 +-10.82892509570112 + 21 +54.19709550375309 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +60.7370955037531 + 30 +0.0 + 11 +-10.82892509570112 + 21 +60.73709550375302 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +53.44709550375303 + 30 +0.0 + 11 +-20.25372306995871 + 21 +53.44709550375301 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +61.48709550375297 + 30 +0.0 + 11 +-20.25372306995871 + 21 +61.48709550375301 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +63.197095503753 + 30 +0.0 + 11 +-10.82892509570112 + 21 +63.19709550375309 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +69.73709550375312 + 30 +0.0 + 11 +-10.82892509570112 + 21 +69.73709550375304 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +62.44709550375304 + 30 +0.0 + 11 +-20.25372306995871 + 21 +62.447095503753 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +70.48709550375298 + 30 +0.0 + 11 +-20.25372306995871 + 21 +70.48709550375301 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +72.19709550375302 + 30 +0.0 + 11 +-10.82892509570112 + 21 +72.19709550375312 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +78.73709550375312 + 30 +0.0 + 11 +-10.82892509570112 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +71.44709550375302 + 30 +0.0 + 11 +-20.25372306995871 + 21 +71.44709550375302 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +79.48709550375298 + 30 +0.0 + 11 +-20.25372306995871 + 21 +79.48709550375301 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +81.19709550375302 + 30 +0.0 + 11 +-10.82892509570112 + 21 +81.19709550375308 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.195305670767027 + 20 +87.73709550375307 + 30 +0.0 + 11 +-10.82892509570112 + 21 +87.73709550375301 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +80.44709550375306 + 30 +0.0 + 11 +-20.25372306995871 + 21 +80.44709550375302 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-16.18073225633071 + 20 +88.48709550375293 + 30 +0.0 + 11 +-20.25372306995871 + 21 +88.48709550375295 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-27.78892509570122 + 21 +-17.82290449624689 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-27.78892509570122 + 21 +-11.28290449624695 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +-18.57290449624694 + 30 +0.0 + 11 +-37.2137230699586 + 21 +-18.57290449624694 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +-10.53290449624702 + 30 +0.0 + 11 +-37.2137230699586 + 21 +-10.53290449624697 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +-8.822904496246984 + 30 +0.0 + 11 +-27.78892509570122 + 21 +-8.822904496246885 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +-2.282904496246871 + 30 +0.0 + 11 +-27.78892509570122 + 21 +-2.28290449624695 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +-9.572904496246942 + 30 +0.0 + 11 +-37.2137230699586 + 21 +-9.572904496246977 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +-1.532904496247014 + 30 +0.0 + 11 +-37.2137230699586 + 21 +-1.532904496246971 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +0.1770955037530584 + 30 +0.0 + 11 +-27.78892509570122 + 21 +0.1770955037531294 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +6.717095503753121 + 30 +0.0 + 11 +-27.78892509570122 + 21 +6.717095503753008 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +-0.5729044962469345 + 30 +0.0 + 11 +-37.2137230699586 + 21 +-0.5729044962469629 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +7.467095503752979 + 30 +0.0 + 11 +-37.2137230699586 + 21 +7.467095503752979 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +9.17709550375298 + 30 +0.0 + 11 +-27.78892509570122 + 21 +9.17709550375308 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +15.71709550375311 + 30 +0.0 + 11 +-27.78892509570122 + 21 +15.71709550375302 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +8.427095503753016 + 30 +0.0 + 11 +-37.2137230699586 + 21 +8.427095503752987 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +16.46709550375295 + 30 +0.0 + 11 +-37.2137230699586 + 21 +16.467095503753 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +18.19709550375302 + 30 +0.0 + 11 +-27.78892509570122 + 21 +18.19709550375308 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +24.73709550375313 + 30 +0.0 + 11 +-27.78892509570122 + 21 +24.73709550375304 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +17.44709550375302 + 30 +0.0 + 11 +-37.2137230699586 + 21 +17.447095503753 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +25.48709550375299 + 30 +0.0 + 11 +-37.2137230699586 + 21 +25.48709550375302 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +27.19709550375303 + 30 +0.0 + 11 +-27.78892509570122 + 21 +27.1970955037531 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +33.73709550375312 + 30 +0.0 + 11 +-27.78892509570122 + 21 +33.73709550375305 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +26.44709550375306 + 30 +0.0 + 11 +-37.2137230699586 + 21 +26.44709550375303 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +34.487095503753 + 30 +0.0 + 11 +-37.2137230699586 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +36.19709550375302 + 30 +0.0 + 11 +-27.78892509570122 + 21 +36.1970955037531 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +42.73709550375312 + 30 +0.0 + 11 +-27.78892509570122 + 21 +42.73709550375304 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +35.44709550375305 + 30 +0.0 + 11 +-37.2137230699586 + 21 +35.44709550375302 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +43.48709550375298 + 30 +0.0 + 11 +-37.2137230699586 + 21 +43.48709550375301 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +45.19709550375301 + 30 +0.0 + 11 +-27.78892509570122 + 21 +45.1970955037531 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +51.73709550375312 + 30 +0.0 + 11 +-27.78892509570122 + 21 +51.73709550375303 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +44.44709550375304 + 30 +0.0 + 11 +-37.2137230699586 + 21 +44.44709550375302 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +52.48709550375298 + 30 +0.0 + 11 +-37.2137230699586 + 21 +52.487095503753 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +54.19709550375301 + 30 +0.0 + 11 +-27.78892509570122 + 21 +54.19709550375309 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +60.7370955037531 + 30 +0.0 + 11 +-27.78892509570122 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +53.44709550375303 + 30 +0.0 + 11 +-37.2137230699586 + 21 +53.44709550375301 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +61.48709550375297 + 30 +0.0 + 11 +-37.2137230699586 + 21 +61.48709550375301 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +63.19709550375301 + 30 +0.0 + 11 +-27.78892509570122 + 21 +63.19709550375309 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +69.73709550375312 + 30 +0.0 + 11 +-27.78892509570122 + 21 +69.73709550375304 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +62.44709550375305 + 30 +0.0 + 11 +-37.2137230699586 + 21 +62.447095503753 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +70.487095503753 + 30 +0.0 + 11 +-37.2137230699586 + 21 +70.48709550375301 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +72.19709550375302 + 30 +0.0 + 11 +-27.78892509570122 + 21 +72.19709550375312 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +78.73709550375312 + 30 +0.0 + 11 +-27.78892509570122 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +71.44709550375302 + 30 +0.0 + 11 +-37.2137230699586 + 21 +71.44709550375302 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +79.48709550375298 + 30 +0.0 + 11 +-37.2137230699586 + 21 +79.48709550375303 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +81.19709550375302 + 30 +0.0 + 11 +-27.78892509570122 + 21 +81.19709550375308 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-21.15530567076701 + 20 +87.73709550375307 + 30 +0.0 + 11 +-27.78892509570122 + 21 +87.73709550375301 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +80.44709550375308 + 30 +0.0 + 11 +-37.2137230699586 + 21 +80.44709550375303 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-33.14073225633052 + 20 +88.48709550375293 + 30 +0.0 + 11 +-37.2137230699586 + 21 +88.48709550375297 + 31 +0.0 + 0 +LINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-44.74892509570103 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-44.74892509570103 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633063 + 20 +-18.57290449624694 + 30 +0.0 + 11 +-54.17372306995873 + 21 +-18.57290449624694 + 31 +0.0 + 0 +LINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +-10.53290449624702 + 30 +0.0 + 11 +-54.17372306995871 + 21 +-10.53290449624697 + 31 +0.0 + 0 +LINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +-8.822904496246977 + 30 +0.0 + 11 +-44.74892509570103 + 21 +-8.822904496246878 + 31 +0.0 + 0 +LINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +-2.282904496246864 + 30 +0.0 + 11 +-44.74892509570103 + 21 +-2.282904496246942 + 31 +0.0 + 0 +LINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +-9.572904496246942 + 30 +0.0 + 11 +-54.17372306995871 + 21 +-9.572904496246977 + 31 +0.0 + 0 +LINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +-1.532904496247014 + 30 +0.0 + 11 +-54.17372306995871 + 21 +-1.532904496246971 + 31 +0.0 + 0 +LINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +0.1770955037530655 + 30 +0.0 + 11 +-44.74892509570103 + 21 +0.1770955037531365 + 31 +0.0 + 0 +LINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +6.717095503753129 + 30 +0.0 + 11 +-44.74892509570103 + 21 +6.717095503753015 + 31 +0.0 + 0 +LINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +-0.5729044962469345 + 30 +0.0 + 11 +-54.17372306995871 + 21 +-0.5729044962469629 + 31 +0.0 + 0 +LINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +7.467095503752979 + 30 +0.0 + 11 +-54.17372306995871 + 21 +7.467095503752979 + 31 +0.0 + 0 +LINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +9.177095503752987 + 30 +0.0 + 11 +-44.74892509570103 + 21 +9.177095503753087 + 31 +0.0 + 0 +LINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +15.71709550375311 + 30 +0.0 + 11 +-44.74892509570103 + 21 +15.71709550375302 + 31 +0.0 + 0 +LINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +8.427095503753016 + 30 +0.0 + 11 +-54.17372306995871 + 21 +8.427095503752987 + 31 +0.0 + 0 +LINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +16.46709550375295 + 30 +0.0 + 11 +-54.17372306995871 + 21 +16.467095503753 + 31 +0.0 + 0 +LINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +18.19709550375302 + 30 +0.0 + 11 +-44.74892509570103 + 21 +18.19709550375308 + 31 +0.0 + 0 +LINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +24.73709550375313 + 30 +0.0 + 11 +-44.74892509570103 + 21 +24.73709550375304 + 31 +0.0 + 0 +LINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +17.44709550375303 + 30 +0.0 + 11 +-54.17372306995871 + 21 +17.447095503753 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +25.487095503753 + 30 +0.0 + 11 +-54.17372306995871 + 21 +25.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +27.19709550375303 + 30 +0.0 + 11 +-44.74892509570103 + 21 +27.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +33.73709550375312 + 30 +0.0 + 11 +-44.74892509570103 + 21 +33.73709550375305 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +26.44709550375307 + 30 +0.0 + 11 +-54.17372306995871 + 21 +26.44709550375304 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +34.487095503753 + 30 +0.0 + 11 +-54.17372306995871 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +36.19709550375302 + 30 +0.0 + 11 +-44.74892509570103 + 21 +36.19709550375311 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +42.73709550375312 + 30 +0.0 + 11 +-44.74892509570103 + 21 +42.73709550375304 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +35.44709550375305 + 30 +0.0 + 11 +-54.17372306995871 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +43.48709550375299 + 30 +0.0 + 11 +-54.17372306995871 + 21 +43.48709550375302 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +45.19709550375302 + 30 +0.0 + 11 +-44.74892509570103 + 21 +45.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +51.73709550375312 + 30 +0.0 + 11 +-44.74892509570103 + 21 +51.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +44.44709550375305 + 30 +0.0 + 11 +-54.17372306995871 + 21 +44.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +52.48709550375298 + 30 +0.0 + 11 +-54.17372306995871 + 21 +52.487095503753 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +54.19709550375301 + 30 +0.0 + 11 +-44.74892509570103 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +60.7370955037531 + 30 +0.0 + 11 +-44.74892509570103 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +53.44709550375303 + 30 +0.0 + 11 +-54.17372306995871 + 21 +53.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +61.48709550375298 + 30 +0.0 + 11 +-54.17372306995871 + 21 +61.48709550375301 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +63.19709550375301 + 30 +0.0 + 11 +-44.74892509570103 + 21 +63.19709550375309 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +69.73709550375312 + 30 +0.0 + 11 +-44.74892509570103 + 21 +69.73709550375304 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +62.44709550375305 + 30 +0.0 + 11 +-54.17372306995871 + 21 +62.447095503753 + 31 +0.0 + 0 +LINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +70.487095503753 + 30 +0.0 + 11 +-54.17372306995871 + 21 +70.48709550375301 + 31 +0.0 + 0 +LINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +72.19709550375302 + 30 +0.0 + 11 +-44.74892509570103 + 21 +72.19709550375312 + 31 +0.0 + 0 +LINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +78.73709550375314 + 30 +0.0 + 11 +-44.74892509570103 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +71.44709550375302 + 30 +0.0 + 11 +-54.17372306995871 + 21 +71.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +79.48709550375298 + 30 +0.0 + 11 +-54.17372306995871 + 21 +79.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +81.19709550375302 + 30 +0.0 + 11 +-44.74892509570103 + 21 +81.19709550375308 + 31 +0.0 + 0 +LINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-38.1153056707669 + 20 +87.73709550375307 + 30 +0.0 + 11 +-44.74892509570103 + 21 +87.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +80.44709550375308 + 30 +0.0 + 11 +-54.17372306995871 + 21 +80.44709550375303 + 31 +0.0 + 0 +LINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-50.10073225633062 + 20 +88.48709550375293 + 30 +0.0 + 11 +-54.17372306995871 + 21 +88.48709550375297 + 31 +0.0 + 0 +LINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076702 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-61.70892509570103 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-61.70892509570102 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633052 + 20 +-18.57290449624694 + 30 +0.0 + 11 +-71.13372306995873 + 21 +-18.57290449624694 + 31 +0.0 + 0 +LINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +-10.53290449624702 + 30 +0.0 + 11 +-71.13372306995872 + 21 +-10.53290449624697 + 31 +0.0 + 0 +LINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +-8.822904496246977 + 30 +0.0 + 11 +-61.70892509570102 + 21 +-8.822904496246878 + 31 +0.0 + 0 +LINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +-2.282904496246864 + 30 +0.0 + 11 +-61.70892509570102 + 21 +-2.282904496246942 + 31 +0.0 + 0 +LINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +-9.572904496246942 + 30 +0.0 + 11 +-71.13372306995872 + 21 +-9.572904496246977 + 31 +0.0 + 0 +LINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +-1.532904496247014 + 30 +0.0 + 11 +-71.13372306995872 + 21 +-1.532904496246971 + 31 +0.0 + 0 +LINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +0.1770955037530655 + 30 +0.0 + 11 +-61.70892509570102 + 21 +0.1770955037531365 + 31 +0.0 + 0 +LINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +6.717095503753129 + 30 +0.0 + 11 +-61.70892509570102 + 21 +6.717095503753015 + 31 +0.0 + 0 +LINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +-0.5729044962469345 + 30 +0.0 + 11 +-71.13372306995872 + 21 +-0.5729044962469629 + 31 +0.0 + 0 +LINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +7.467095503752979 + 30 +0.0 + 11 +-71.13372306995872 + 21 +7.467095503752979 + 31 +0.0 + 0 +LINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +9.177095503752987 + 30 +0.0 + 11 +-61.70892509570102 + 21 +9.177095503753087 + 31 +0.0 + 0 +LINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +15.71709550375311 + 30 +0.0 + 11 +-61.70892509570102 + 21 +15.71709550375303 + 31 +0.0 + 0 +LINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +8.427095503753016 + 30 +0.0 + 11 +-71.13372306995872 + 21 +8.427095503752987 + 31 +0.0 + 0 +LINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +16.46709550375295 + 30 +0.0 + 11 +-71.13372306995872 + 21 +16.467095503753 + 31 +0.0 + 0 +LINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +18.19709550375303 + 30 +0.0 + 11 +-61.70892509570102 + 21 +18.19709550375309 + 31 +0.0 + 0 +LINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +24.73709550375314 + 30 +0.0 + 11 +-61.70892509570102 + 21 +24.73709550375305 + 31 +0.0 + 0 +LINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +17.44709550375303 + 30 +0.0 + 11 +-71.13372306995872 + 21 +17.447095503753 + 31 +0.0 + 0 +LINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +25.487095503753 + 30 +0.0 + 11 +-71.13372306995872 + 21 +25.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +27.19709550375304 + 30 +0.0 + 11 +-61.70892509570102 + 21 +27.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +33.73709550375312 + 30 +0.0 + 11 +-61.70892509570102 + 21 +33.73709550375305 + 31 +0.0 + 0 +LINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +26.44709550375307 + 30 +0.0 + 11 +-71.13372306995872 + 21 +26.44709550375304 + 31 +0.0 + 0 +LINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +34.487095503753 + 30 +0.0 + 11 +-71.13372306995872 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +36.19709550375303 + 30 +0.0 + 11 +-61.70892509570102 + 21 +36.19709550375311 + 31 +0.0 + 0 +LINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +42.73709550375313 + 30 +0.0 + 11 +-61.70892509570102 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +35.44709550375305 + 30 +0.0 + 11 +-71.13372306995872 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +43.48709550375299 + 30 +0.0 + 11 +-71.13372306995872 + 21 +43.48709550375302 + 31 +0.0 + 0 +LINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +45.19709550375302 + 30 +0.0 + 11 +-61.70892509570102 + 21 +45.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +51.73709550375312 + 30 +0.0 + 11 +-61.70892509570102 + 21 +51.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +44.44709550375305 + 30 +0.0 + 11 +-71.13372306995872 + 21 +44.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +52.48709550375298 + 30 +0.0 + 11 +-71.13372306995872 + 21 +52.48709550375301 + 31 +0.0 + 0 +LINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +54.19709550375302 + 30 +0.0 + 11 +-61.70892509570102 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +60.7370955037531 + 30 +0.0 + 11 +-61.70892509570102 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +53.44709550375303 + 30 +0.0 + 11 +-71.13372306995872 + 21 +53.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +61.48709550375298 + 30 +0.0 + 11 +-71.13372306995872 + 21 +61.48709550375301 + 31 +0.0 + 0 +LINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +63.19709550375302 + 30 +0.0 + 11 +-61.70892509570102 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +69.73709550375312 + 30 +0.0 + 11 +-61.70892509570102 + 21 +69.73709550375304 + 31 +0.0 + 0 +LINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +62.44709550375305 + 30 +0.0 + 11 +-71.13372306995872 + 21 +62.447095503753 + 31 +0.0 + 0 +LINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +70.487095503753 + 30 +0.0 + 11 +-71.13372306995872 + 21 +70.48709550375301 + 31 +0.0 + 0 +LINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +72.19709550375302 + 30 +0.0 + 11 +-61.70892509570102 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +78.73709550375314 + 30 +0.0 + 11 +-61.70892509570102 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +71.44709550375302 + 30 +0.0 + 11 +-71.13372306995872 + 21 +71.44709550375302 + 31 +0.0 + 0 +LINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +79.48709550375298 + 30 +0.0 + 11 +-71.13372306995872 + 21 +79.48709550375303 + 31 +0.0 + 0 +LINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +81.19709550375302 + 30 +0.0 + 11 +-61.70892509570102 + 21 +81.19709550375308 + 31 +0.0 + 0 +LINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-55.07530567076701 + 20 +87.73709550375307 + 30 +0.0 + 11 +-61.70892509570102 + 21 +87.73709550375303 + 31 +0.0 + 0 +LINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +80.44709550375308 + 30 +0.0 + 11 +-71.13372306995872 + 21 +80.44709550375303 + 31 +0.0 + 0 +LINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-67.06073225633051 + 20 +88.48709550375293 + 30 +0.0 + 11 +-71.13372306995872 + 21 +88.48709550375297 + 31 +0.0 + 0 +LINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076693 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-78.66892509570094 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-78.66892509570093 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633043 + 20 +-18.57290449624694 + 30 +0.0 + 11 +-88.0937230699586 + 21 +-18.57290449624694 + 31 +0.0 + 0 +LINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +-10.53290449624702 + 30 +0.0 + 11 +-88.09372306995859 + 21 +-10.53290449624697 + 31 +0.0 + 0 +LINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +-8.822904496246977 + 30 +0.0 + 11 +-78.66892509570093 + 21 +-8.822904496246878 + 31 +0.0 + 0 +LINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +-2.282904496246864 + 30 +0.0 + 11 +-78.66892509570093 + 21 +-2.282904496246942 + 31 +0.0 + 0 +LINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +-9.572904496246942 + 30 +0.0 + 11 +-88.09372306995859 + 21 +-9.572904496246977 + 31 +0.0 + 0 +LINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +-1.532904496247014 + 30 +0.0 + 11 +-88.09372306995859 + 21 +-1.532904496246971 + 31 +0.0 + 0 +LINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +0.1770955037530655 + 30 +0.0 + 11 +-78.66892509570093 + 21 +0.1770955037531365 + 31 +0.0 + 0 +LINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +6.717095503753129 + 30 +0.0 + 11 +-78.66892509570093 + 21 +6.717095503753015 + 31 +0.0 + 0 +LINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +-0.5729044962469345 + 30 +0.0 + 11 +-88.09372306995859 + 21 +-0.5729044962469629 + 31 +0.0 + 0 +LINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +7.467095503752979 + 30 +0.0 + 11 +-88.09372306995859 + 21 +7.467095503752979 + 31 +0.0 + 0 +LINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +9.177095503752987 + 30 +0.0 + 11 +-78.66892509570093 + 21 +9.177095503753087 + 31 +0.0 + 0 +LINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +15.71709550375311 + 30 +0.0 + 11 +-78.66892509570093 + 21 +15.71709550375303 + 31 +0.0 + 0 +LINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +8.427095503753016 + 30 +0.0 + 11 +-88.09372306995859 + 21 +8.427095503752987 + 31 +0.0 + 0 +LINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +16.46709550375296 + 30 +0.0 + 11 +-88.09372306995859 + 21 +16.46709550375301 + 31 +0.0 + 0 +LINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +18.19709550375303 + 30 +0.0 + 11 +-78.66892509570093 + 21 +18.19709550375309 + 31 +0.0 + 0 +LINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +24.73709550375314 + 30 +0.0 + 11 +-78.66892509570093 + 21 +24.73709550375305 + 31 +0.0 + 0 +LINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +17.44709550375303 + 30 +0.0 + 11 +-88.09372306995859 + 21 +17.44709550375301 + 31 +0.0 + 0 +LINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +25.487095503753 + 30 +0.0 + 11 +-88.09372306995859 + 21 +25.48709550375303 + 31 +0.0 + 0 +LINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +27.19709550375304 + 30 +0.0 + 11 +-78.66892509570093 + 21 +27.19709550375311 + 31 +0.0 + 0 +LINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +33.73709550375312 + 30 +0.0 + 11 +-78.66892509570093 + 21 +33.73709550375305 + 31 +0.0 + 0 +LINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +26.44709550375307 + 30 +0.0 + 11 +-88.09372306995859 + 21 +26.44709550375304 + 31 +0.0 + 0 +LINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +34.487095503753 + 30 +0.0 + 11 +-88.09372306995859 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +36.19709550375303 + 30 +0.0 + 11 +-78.66892509570093 + 21 +36.19709550375311 + 31 +0.0 + 0 +LINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +42.73709550375313 + 30 +0.0 + 11 +-78.66892509570093 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +35.44709550375306 + 30 +0.0 + 11 +-88.09372306995859 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +43.48709550375299 + 30 +0.0 + 11 +-88.09372306995859 + 21 +43.48709550375302 + 31 +0.0 + 0 +LINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +45.19709550375302 + 30 +0.0 + 11 +-78.66892509570093 + 21 +45.1970955037531 + 31 +0.0 + 0 +LINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +51.73709550375312 + 30 +0.0 + 11 +-78.66892509570093 + 21 +51.73709550375303 + 31 +0.0 + 0 +LINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +44.44709550375305 + 30 +0.0 + 11 +-88.09372306995859 + 21 +44.44709550375302 + 31 +0.0 + 0 +LINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +52.48709550375298 + 30 +0.0 + 11 +-88.09372306995859 + 21 +52.48709550375301 + 31 +0.0 + 0 +LINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +54.19709550375302 + 30 +0.0 + 11 +-78.66892509570093 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +60.73709550375311 + 30 +0.0 + 11 +-78.66892509570093 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +53.44709550375304 + 30 +0.0 + 11 +-88.09372306995859 + 21 +53.44709550375302 + 31 +0.0 + 0 +LINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +61.48709550375298 + 30 +0.0 + 11 +-88.09372306995859 + 21 +61.48709550375302 + 31 +0.0 + 0 +LINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +63.19709550375302 + 30 +0.0 + 11 +-78.66892509570093 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +69.73709550375312 + 30 +0.0 + 11 +-78.66892509570093 + 21 +69.73709550375305 + 31 +0.0 + 0 +LINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +62.44709550375305 + 30 +0.0 + 11 +-88.09372306995859 + 21 +62.447095503753 + 31 +0.0 + 0 +LINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +70.487095503753 + 30 +0.0 + 11 +-88.09372306995859 + 21 +70.48709550375301 + 31 +0.0 + 0 +LINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +72.19709550375302 + 30 +0.0 + 11 +-78.66892509570093 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +78.73709550375314 + 30 +0.0 + 11 +-78.66892509570093 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +71.44709550375303 + 30 +0.0 + 11 +-88.09372306995859 + 21 +71.44709550375303 + 31 +0.0 + 0 +LINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +79.48709550375298 + 30 +0.0 + 11 +-88.09372306995859 + 21 +79.48709550375303 + 31 +0.0 + 0 +LINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +81.19709550375302 + 30 +0.0 + 11 +-78.66892509570093 + 21 +81.19709550375308 + 31 +0.0 + 0 +LINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.03530567076692 + 20 +87.73709550375307 + 30 +0.0 + 11 +-78.66892509570093 + 21 +87.73709550375303 + 31 +0.0 + 0 +LINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +80.44709550375308 + 30 +0.0 + 11 +-88.09372306995859 + 21 +80.44709550375303 + 31 +0.0 + 0 +LINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-84.02073225633042 + 20 +88.48709550375293 + 30 +0.0 + 11 +-88.09372306995859 + 21 +88.48709550375297 + 31 +0.0 + 0 +LINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076685 + 20 +-17.82290449624698 + 30 +0.0 + 11 +-95.62892509570096 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +-11.28290449624686 + 30 +0.0 + 11 +-95.62892509570095 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +-18.57290449624693 + 30 +0.0 + 11 +-105.0537230699586 + 21 +-18.57290449624693 + 31 +0.0 + 0 +LINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +-10.53290449624701 + 30 +0.0 + 11 +-105.0537230699586 + 21 +-10.53290449624696 + 31 +0.0 + 0 +LINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +-8.822904496246977 + 30 +0.0 + 11 +-95.62892509570095 + 21 +-8.82290449624687 + 31 +0.0 + 0 +LINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +-2.282904496246864 + 30 +0.0 + 11 +-95.62892509570095 + 21 +-2.282904496246935 + 31 +0.0 + 0 +LINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +-9.572904496246935 + 30 +0.0 + 11 +-105.0537230699586 + 21 +-9.57290449624697 + 31 +0.0 + 0 +LINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +-1.532904496247006 + 30 +0.0 + 11 +-105.0537230699586 + 21 +-1.532904496246964 + 31 +0.0 + 0 +LINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +0.1770955037530655 + 30 +0.0 + 11 +-95.62892509570095 + 21 +0.1770955037531436 + 31 +0.0 + 0 +LINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +6.717095503753129 + 30 +0.0 + 11 +-95.62892509570095 + 21 +6.717095503753022 + 31 +0.0 + 0 +LINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +-0.5729044962469274 + 30 +0.0 + 11 +-105.0537230699586 + 21 +-0.5729044962469558 + 31 +0.0 + 0 +LINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +7.467095503752986 + 30 +0.0 + 11 +-105.0537230699586 + 21 +7.467095503752986 + 31 +0.0 + 0 +LINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +9.177095503752987 + 30 +0.0 + 11 +-95.62892509570095 + 21 +9.177095503753094 + 31 +0.0 + 0 +LINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +15.71709550375312 + 30 +0.0 + 11 +-95.62892509570095 + 21 +15.71709550375303 + 31 +0.0 + 0 +LINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +8.427095503753023 + 30 +0.0 + 11 +-105.0537230699586 + 21 +8.427095503752994 + 31 +0.0 + 0 +LINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +16.46709550375296 + 30 +0.0 + 11 +-105.0537230699586 + 21 +16.46709550375301 + 31 +0.0 + 0 +LINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +18.19709550375303 + 30 +0.0 + 11 +-95.62892509570095 + 21 +18.19709550375309 + 31 +0.0 + 0 +LINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +24.73709550375314 + 30 +0.0 + 11 +-95.62892509570095 + 21 +24.73709550375305 + 31 +0.0 + 0 +LINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +17.44709550375303 + 30 +0.0 + 11 +-105.0537230699586 + 21 +17.44709550375301 + 31 +0.0 + 0 +LINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +25.487095503753 + 30 +0.0 + 11 +-105.0537230699586 + 21 +25.48709550375303 + 31 +0.0 + 0 +LINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +27.19709550375304 + 30 +0.0 + 11 +-95.62892509570095 + 21 +27.19709550375311 + 31 +0.0 + 0 +LINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +33.73709550375313 + 30 +0.0 + 11 +-95.62892509570095 + 21 +33.73709550375306 + 31 +0.0 + 0 +LINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +26.44709550375307 + 30 +0.0 + 11 +-105.0537230699586 + 21 +26.44709550375304 + 31 +0.0 + 0 +LINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +34.487095503753 + 30 +0.0 + 11 +-105.0537230699586 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +36.19709550375303 + 30 +0.0 + 11 +-95.62892509570095 + 21 +36.19709550375312 + 31 +0.0 + 0 +LINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +42.73709550375313 + 30 +0.0 + 11 +-95.62892509570095 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +35.44709550375306 + 30 +0.0 + 11 +-105.0537230699586 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +43.48709550375299 + 30 +0.0 + 11 +-105.0537230699586 + 21 +43.48709550375303 + 31 +0.0 + 0 +LINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +45.19709550375302 + 30 +0.0 + 11 +-95.62892509570095 + 21 +45.19709550375311 + 31 +0.0 + 0 +LINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +51.73709550375312 + 30 +0.0 + 11 +-95.62892509570095 + 21 +51.73709550375304 + 31 +0.0 + 0 +LINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +44.44709550375305 + 30 +0.0 + 11 +-105.0537230699586 + 21 +44.44709550375303 + 31 +0.0 + 0 +LINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +52.48709550375298 + 30 +0.0 + 11 +-105.0537230699586 + 21 +52.48709550375301 + 31 +0.0 + 0 +LINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +54.19709550375302 + 30 +0.0 + 11 +-95.62892509570095 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +60.73709550375311 + 30 +0.0 + 11 +-95.62892509570095 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +53.44709550375304 + 30 +0.0 + 11 +-105.0537230699586 + 21 +53.44709550375302 + 31 +0.0 + 0 +LINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +61.48709550375298 + 30 +0.0 + 11 +-105.0537230699586 + 21 +61.48709550375303 + 31 +0.0 + 0 +LINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +63.19709550375302 + 30 +0.0 + 11 +-95.62892509570095 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +69.73709550375312 + 30 +0.0 + 11 +-95.62892509570095 + 21 +69.73709550375305 + 31 +0.0 + 0 +LINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +62.44709550375305 + 30 +0.0 + 11 +-105.0537230699586 + 21 +62.44709550375301 + 31 +0.0 + 0 +LINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +70.487095503753 + 30 +0.0 + 11 +-105.0537230699586 + 21 +70.48709550375303 + 31 +0.0 + 0 +LINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +72.19709550375303 + 30 +0.0 + 11 +-95.62892509570095 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +78.73709550375314 + 30 +0.0 + 11 +-95.62892509570095 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +71.44709550375303 + 30 +0.0 + 11 +-105.0537230699586 + 21 +71.44709550375303 + 31 +0.0 + 0 +LINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +79.48709550375298 + 30 +0.0 + 11 +-105.0537230699586 + 21 +79.48709550375304 + 31 +0.0 + 0 +LINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +81.19709550375302 + 30 +0.0 + 11 +-95.62892509570095 + 21 +81.19709550375309 + 31 +0.0 + 0 +LINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-88.99530567076684 + 20 +87.73709550375307 + 30 +0.0 + 11 +-95.62892509570095 + 21 +87.73709550375304 + 31 +0.0 + 0 +LINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +80.44709550375308 + 30 +0.0 + 11 +-105.0537230699586 + 21 +80.44709550375305 + 31 +0.0 + 0 +LINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-100.9807322563304 + 20 +88.48709550375293 + 30 +0.0 + 11 +-105.0537230699586 + 21 +88.48709550375298 + 31 +0.0 + 0 +LINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +-17.82290449624697 + 30 +0.0 + 11 +-112.5889250957009 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +-11.28290449624685 + 30 +0.0 + 11 +-112.5889250957009 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +-18.57290449624693 + 30 +0.0 + 11 +-122.0137230699585 + 21 +-18.57290449624693 + 31 +0.0 + 0 +LINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +-10.53290449624701 + 30 +0.0 + 11 +-122.0137230699585 + 21 +-10.53290449624696 + 31 +0.0 + 0 +LINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +-8.82290449624697 + 30 +0.0 + 11 +-112.5889250957009 + 21 +-8.82290449624687 + 31 +0.0 + 0 +LINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +-2.282904496246857 + 30 +0.0 + 11 +-112.5889250957009 + 21 +-2.282904496246935 + 31 +0.0 + 0 +LINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +-9.572904496246935 + 30 +0.0 + 11 +-122.0137230699585 + 21 +-9.57290449624697 + 31 +0.0 + 0 +LINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +-1.532904496247006 + 30 +0.0 + 11 +-122.0137230699585 + 21 +-1.532904496246964 + 31 +0.0 + 0 +LINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +0.1770955037530726 + 30 +0.0 + 11 +-112.5889250957009 + 21 +0.1770955037531436 + 31 +0.0 + 0 +LINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +6.717095503753136 + 30 +0.0 + 11 +-112.5889250957009 + 21 +6.717095503753022 + 31 +0.0 + 0 +LINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +-0.5729044962469274 + 30 +0.0 + 11 +-122.0137230699585 + 21 +-0.5729044962469558 + 31 +0.0 + 0 +LINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +7.467095503752986 + 30 +0.0 + 11 +-122.0137230699585 + 21 +7.467095503752986 + 31 +0.0 + 0 +LINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +9.177095503752994 + 30 +0.0 + 11 +-112.5889250957009 + 21 +9.177095503753094 + 31 +0.0 + 0 +LINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +15.71709550375312 + 30 +0.0 + 11 +-112.5889250957009 + 21 +15.71709550375303 + 31 +0.0 + 0 +LINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +8.427095503753023 + 30 +0.0 + 11 +-122.0137230699585 + 21 +8.427095503752994 + 31 +0.0 + 0 +LINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +16.46709550375296 + 30 +0.0 + 11 +-122.0137230699585 + 21 +16.46709550375301 + 31 +0.0 + 0 +LINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +18.19709550375303 + 30 +0.0 + 11 +-112.5889250957009 + 21 +18.19709550375309 + 31 +0.0 + 0 +LINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +24.73709550375314 + 30 +0.0 + 11 +-112.5889250957009 + 21 +24.73709550375305 + 31 +0.0 + 0 +LINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +17.44709550375303 + 30 +0.0 + 11 +-122.0137230699585 + 21 +17.44709550375301 + 31 +0.0 + 0 +LINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +25.487095503753 + 30 +0.0 + 11 +-122.0137230699585 + 21 +25.48709550375303 + 31 +0.0 + 0 +LINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +27.19709550375304 + 30 +0.0 + 11 +-112.5889250957009 + 21 +27.19709550375311 + 31 +0.0 + 0 +LINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +33.73709550375313 + 30 +0.0 + 11 +-112.5889250957009 + 21 +33.73709550375306 + 31 +0.0 + 0 +LINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +26.44709550375307 + 30 +0.0 + 11 +-122.0137230699585 + 21 +26.44709550375304 + 31 +0.0 + 0 +LINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +34.487095503753 + 30 +0.0 + 11 +-122.0137230699585 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +36.19709550375303 + 30 +0.0 + 11 +-112.5889250957009 + 21 +36.19709550375312 + 31 +0.0 + 0 +LINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +42.73709550375314 + 30 +0.0 + 11 +-112.5889250957009 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +35.44709550375306 + 30 +0.0 + 11 +-122.0137230699585 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +43.487095503753 + 30 +0.0 + 11 +-122.0137230699585 + 21 +43.48709550375303 + 31 +0.0 + 0 +LINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +45.19709550375303 + 30 +0.0 + 11 +-112.5889250957009 + 21 +45.19709550375311 + 31 +0.0 + 0 +LINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +51.73709550375312 + 30 +0.0 + 11 +-112.5889250957009 + 21 +51.73709550375304 + 31 +0.0 + 0 +LINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +44.44709550375305 + 30 +0.0 + 11 +-122.0137230699585 + 21 +44.44709550375303 + 31 +0.0 + 0 +LINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +52.48709550375298 + 30 +0.0 + 11 +-122.0137230699585 + 21 +52.48709550375301 + 31 +0.0 + 0 +LINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +54.19709550375302 + 30 +0.0 + 11 +-112.5889250957009 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +60.73709550375311 + 30 +0.0 + 11 +-112.5889250957009 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +53.44709550375304 + 30 +0.0 + 11 +-122.0137230699585 + 21 +53.44709550375303 + 31 +0.0 + 0 +LINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +61.48709550375298 + 30 +0.0 + 11 +-122.0137230699585 + 21 +61.48709550375303 + 31 +0.0 + 0 +LINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +63.19709550375302 + 30 +0.0 + 11 +-112.5889250957009 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +69.73709550375312 + 30 +0.0 + 11 +-112.5889250957009 + 21 +69.73709550375305 + 31 +0.0 + 0 +LINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +62.44709550375305 + 30 +0.0 + 11 +-122.0137230699585 + 21 +62.44709550375301 + 31 +0.0 + 0 +LINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +70.48709550375301 + 30 +0.0 + 11 +-122.0137230699585 + 21 +70.48709550375303 + 31 +0.0 + 0 +LINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +72.19709550375303 + 30 +0.0 + 11 +-112.5889250957009 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +78.73709550375315 + 30 +0.0 + 11 +-112.5889250957009 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +71.44709550375303 + 30 +0.0 + 11 +-122.0137230699585 + 21 +71.44709550375303 + 31 +0.0 + 0 +LINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +79.48709550375298 + 30 +0.0 + 11 +-122.0137230699585 + 21 +79.48709550375304 + 31 +0.0 + 0 +LINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +81.19709550375302 + 30 +0.0 + 11 +-112.5889250957009 + 21 +81.19709550375309 + 31 +0.0 + 0 +LINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-105.9553056707668 + 20 +87.73709550375308 + 30 +0.0 + 11 +-112.5889250957009 + 21 +87.73709550375304 + 31 +0.0 + 0 +LINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +80.44709550375308 + 30 +0.0 + 11 +-122.0137230699585 + 21 +80.44709550375305 + 31 +0.0 + 0 +LINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-117.9407322563304 + 20 +88.48709550375293 + 30 +0.0 + 11 +-122.0137230699585 + 21 +88.48709550375298 + 31 +0.0 + 0 +LINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +-17.82290449624697 + 30 +0.0 + 11 +-129.5489250957009 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +-11.28290449624685 + 30 +0.0 + 11 +-129.5489250957009 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +-18.57290449624693 + 30 +0.0 + 11 +-138.9737230699585 + 21 +-18.57290449624693 + 31 +0.0 + 0 +LINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +-10.53290449624701 + 30 +0.0 + 11 +-138.9737230699585 + 21 +-10.53290449624696 + 31 +0.0 + 0 +LINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +-8.82290449624697 + 30 +0.0 + 11 +-129.5489250957009 + 21 +-8.82290449624687 + 31 +0.0 + 0 +LINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +-2.282904496246857 + 30 +0.0 + 11 +-129.5489250957009 + 21 +-2.282904496246935 + 31 +0.0 + 0 +LINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +-9.572904496246935 + 30 +0.0 + 11 +-138.9737230699585 + 21 +-9.57290449624697 + 31 +0.0 + 0 +LINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +-1.532904496247006 + 30 +0.0 + 11 +-138.9737230699585 + 21 +-1.532904496246964 + 31 +0.0 + 0 +LINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +0.1770955037530726 + 30 +0.0 + 11 +-129.5489250957009 + 21 +0.1770955037531436 + 31 +0.0 + 0 +LINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +6.717095503753136 + 30 +0.0 + 11 +-129.5489250957009 + 21 +6.717095503753022 + 31 +0.0 + 0 +LINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +-0.5729044962469274 + 30 +0.0 + 11 +-138.9737230699585 + 21 +-0.5729044962469558 + 31 +0.0 + 0 +LINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +7.467095503752986 + 30 +0.0 + 11 +-138.9737230699585 + 21 +7.467095503752986 + 31 +0.0 + 0 +LINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +9.177095503752994 + 30 +0.0 + 11 +-129.5489250957009 + 21 +9.177095503753094 + 31 +0.0 + 0 +LINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +15.71709550375312 + 30 +0.0 + 11 +-129.5489250957009 + 21 +15.71709550375303 + 31 +0.0 + 0 +LINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +8.427095503753023 + 30 +0.0 + 11 +-138.9737230699585 + 21 +8.427095503752994 + 31 +0.0 + 0 +LINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +16.46709550375297 + 30 +0.0 + 11 +-138.9737230699585 + 21 +16.46709550375301 + 31 +0.0 + 0 +LINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +18.19709550375303 + 30 +0.0 + 11 +-129.5489250957009 + 21 +18.19709550375309 + 31 +0.0 + 0 +LINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +24.73709550375314 + 30 +0.0 + 11 +-129.5489250957009 + 21 +24.73709550375305 + 31 +0.0 + 0 +LINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +17.44709550375304 + 30 +0.0 + 11 +-138.9737230699585 + 21 +17.44709550375302 + 31 +0.0 + 0 +LINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +25.48709550375301 + 30 +0.0 + 11 +-138.9737230699585 + 21 +25.48709550375304 + 31 +0.0 + 0 +LINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +27.19709550375304 + 30 +0.0 + 11 +-129.5489250957009 + 21 +27.19709550375311 + 31 +0.0 + 0 +LINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +33.73709550375313 + 30 +0.0 + 11 +-129.5489250957009 + 21 +33.73709550375307 + 31 +0.0 + 0 +LINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +26.44709550375308 + 30 +0.0 + 11 +-138.9737230699585 + 21 +26.44709550375305 + 31 +0.0 + 0 +LINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +34.487095503753 + 30 +0.0 + 11 +-138.9737230699585 + 21 +34.48709550375303 + 31 +0.0 + 0 +LINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +36.19709550375303 + 30 +0.0 + 11 +-129.5489250957009 + 21 +36.19709550375312 + 31 +0.0 + 0 +LINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +42.73709550375314 + 30 +0.0 + 11 +-129.5489250957009 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +35.44709550375306 + 30 +0.0 + 11 +-138.9737230699585 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +43.487095503753 + 30 +0.0 + 11 +-138.9737230699585 + 21 +43.48709550375303 + 31 +0.0 + 0 +LINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +45.19709550375303 + 30 +0.0 + 11 +-129.5489250957009 + 21 +45.19709550375311 + 31 +0.0 + 0 +LINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +51.73709550375313 + 30 +0.0 + 11 +-129.5489250957009 + 21 +51.73709550375304 + 31 +0.0 + 0 +LINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +44.44709550375305 + 30 +0.0 + 11 +-138.9737230699585 + 21 +44.44709550375303 + 31 +0.0 + 0 +LINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +52.48709550375298 + 30 +0.0 + 11 +-138.9737230699585 + 21 +52.48709550375302 + 31 +0.0 + 0 +LINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +54.19709550375303 + 30 +0.0 + 11 +-129.5489250957009 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +60.73709550375311 + 30 +0.0 + 11 +-129.5489250957009 + 21 +60.73709550375303 + 31 +0.0 + 0 +LINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +53.44709550375305 + 30 +0.0 + 11 +-138.9737230699585 + 21 +53.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +61.48709550375298 + 30 +0.0 + 11 +-138.9737230699585 + 21 +61.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +63.19709550375302 + 30 +0.0 + 11 +-129.5489250957009 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +69.73709550375312 + 30 +0.0 + 11 +-129.5489250957009 + 21 +69.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +62.44709550375306 + 30 +0.0 + 11 +-138.9737230699585 + 21 +62.44709550375302 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +70.48709550375301 + 30 +0.0 + 11 +-138.9737230699585 + 21 +70.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +72.19709550375303 + 30 +0.0 + 11 +-129.5489250957009 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +78.73709550375315 + 30 +0.0 + 11 +-129.5489250957009 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +71.44709550375303 + 30 +0.0 + 11 +-138.9737230699585 + 21 +71.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +79.48709550375298 + 30 +0.0 + 11 +-138.9737230699585 + 21 +79.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +81.19709550375302 + 30 +0.0 + 11 +-129.5489250957009 + 21 +81.19709550375309 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-122.9153056707668 + 20 +87.73709550375308 + 30 +0.0 + 11 +-129.5489250957009 + 21 +87.73709550375304 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +80.44709550375308 + 30 +0.0 + 11 +-138.9737230699585 + 21 +80.44709550375305 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-134.9007322563303 + 20 +88.48709550375293 + 30 +0.0 + 11 +-138.9737230699585 + 21 +88.48709550375298 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +-17.82290449624697 + 30 +0.0 + 11 +-146.5089250957008 + 21 +-17.82290449624688 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +-11.28290449624685 + 30 +0.0 + 11 +-146.5089250957008 + 21 +-11.28290449624694 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +-18.57290449624693 + 30 +0.0 + 11 +-155.9337230699585 + 21 +-18.57290449624693 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +-10.53290449624701 + 30 +0.0 + 11 +-155.9337230699585 + 21 +-10.53290449624696 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +-8.82290449624697 + 30 +0.0 + 11 +-146.5089250957008 + 21 +-8.82290449624687 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +-2.282904496246857 + 30 +0.0 + 11 +-146.5089250957008 + 21 +-2.282904496246935 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +-9.572904496246927 + 30 +0.0 + 11 +-155.9337230699585 + 21 +-9.572904496246963 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +-1.532904496246999 + 30 +0.0 + 11 +-155.9337230699585 + 21 +-1.532904496246957 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +0.1770955037530726 + 30 +0.0 + 11 +-146.5089250957008 + 21 +0.1770955037531436 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +6.717095503753136 + 30 +0.0 + 11 +-146.5089250957008 + 21 +6.717095503753022 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +-0.5729044962469203 + 30 +0.0 + 11 +-155.9337230699585 + 21 +-0.5729044962469487 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +7.467095503752994 + 30 +0.0 + 11 +-155.9337230699585 + 21 +7.467095503752994 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +9.177095503752994 + 30 +0.0 + 11 +-146.5089250957008 + 21 +9.177095503753094 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +15.71709550375313 + 30 +0.0 + 11 +-146.5089250957008 + 21 +15.71709550375304 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +8.42709550375303 + 30 +0.0 + 11 +-155.9337230699585 + 21 +8.427095503753002 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +16.46709550375297 + 30 +0.0 + 11 +-155.9337230699585 + 21 +16.46709550375301 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +18.19709550375304 + 30 +0.0 + 11 +-146.5089250957008 + 21 +18.1970955037531 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +24.73709550375315 + 30 +0.0 + 11 +-146.5089250957008 + 21 +24.73709550375306 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +17.44709550375304 + 30 +0.0 + 11 +-155.9337230699585 + 21 +17.44709550375302 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +25.48709550375301 + 30 +0.0 + 11 +-155.9337230699585 + 21 +25.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +27.19709550375305 + 30 +0.0 + 11 +-146.5089250957008 + 21 +27.19709550375311 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +33.73709550375314 + 30 +0.0 + 11 +-146.5089250957008 + 21 +33.73709550375307 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +26.44709550375308 + 30 +0.0 + 11 +-155.9337230699585 + 21 +26.44709550375305 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +34.48709550375301 + 30 +0.0 + 11 +-155.9337230699585 + 21 +34.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +36.19709550375303 + 30 +0.0 + 11 +-146.5089250957008 + 21 +36.19709550375312 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +42.73709550375314 + 30 +0.0 + 11 +-146.5089250957008 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +35.44709550375307 + 30 +0.0 + 11 +-155.9337230699585 + 21 +35.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +43.487095503753 + 30 +0.0 + 11 +-155.9337230699585 + 21 +43.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +45.19709550375303 + 30 +0.0 + 11 +-146.5089250957008 + 21 +45.19709550375311 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +51.73709550375313 + 30 +0.0 + 11 +-146.5089250957008 + 21 +51.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +44.44709550375306 + 30 +0.0 + 11 +-155.9337230699585 + 21 +44.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +52.48709550375299 + 30 +0.0 + 11 +-155.9337230699585 + 21 +52.48709550375302 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +54.19709550375303 + 30 +0.0 + 11 +-146.5089250957008 + 21 +54.1970955037531 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +60.73709550375311 + 30 +0.0 + 11 +-146.5089250957008 + 21 +60.73709550375304 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +53.44709550375305 + 30 +0.0 + 11 +-155.9337230699585 + 21 +53.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +61.48709550375298 + 30 +0.0 + 11 +-155.9337230699585 + 21 +61.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +63.19709550375303 + 30 +0.0 + 11 +-146.5089250957008 + 21 +63.1970955037531 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +69.73709550375314 + 30 +0.0 + 11 +-146.5089250957008 + 21 +69.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +62.44709550375306 + 30 +0.0 + 11 +-155.9337230699585 + 21 +62.44709550375302 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +70.48709550375301 + 30 +0.0 + 11 +-155.9337230699585 + 21 +70.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707668 + 20 +72.19709550375303 + 30 +0.0 + 11 +-146.5089250957008 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707667 + 20 +78.73709550375315 + 30 +0.0 + 11 +-146.5089250957008 + 21 +78.73709550375307 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +71.44709550375303 + 30 +0.0 + 11 +-155.9337230699585 + 21 +71.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +79.487095503753 + 30 +0.0 + 11 +-155.9337230699585 + 21 +79.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707667 + 20 +81.19709550375302 + 30 +0.0 + 11 +-146.5089250957008 + 21 +81.19709550375309 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-139.8753056707667 + 20 +87.73709550375308 + 30 +0.0 + 11 +-146.5089250957008 + 21 +87.73709550375304 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +80.44709550375308 + 30 +0.0 + 11 +-155.9337230699585 + 21 +80.44709550375305 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-151.8607322563303 + 20 +88.48709550375294 + 30 +0.0 + 11 +-155.9337230699585 + 21 +88.48709550375298 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +-17.82290449624696 + 30 +0.0 + 11 +-163.4689250957008 + 21 +-17.82290449624687 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +-11.28290449624684 + 30 +0.0 + 11 +-163.4689250957008 + 21 +-11.28290449624693 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +-18.57290449624693 + 30 +0.0 + 11 +-172.8937230699585 + 21 +-18.57290449624693 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +-10.53290449624701 + 30 +0.0 + 11 +-172.8937230699585 + 21 +-10.53290449624696 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +-8.822904496246963 + 30 +0.0 + 11 +-163.4689250957008 + 21 +-8.822904496246863 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +-2.28290449624685 + 30 +0.0 + 11 +-163.4689250957008 + 21 +-2.282904496246928 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +-9.572904496246927 + 30 +0.0 + 11 +-172.8937230699585 + 21 +-9.572904496246963 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +-1.532904496246999 + 30 +0.0 + 11 +-172.8937230699585 + 21 +-1.532904496246957 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +0.1770955037530797 + 30 +0.0 + 11 +-163.4689250957008 + 21 +0.1770955037531508 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +6.717095503753143 + 30 +0.0 + 11 +-163.4689250957008 + 21 +6.717095503753029 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +-0.5729044962469203 + 30 +0.0 + 11 +-172.8937230699585 + 21 +-0.5729044962469487 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +7.467095503752994 + 30 +0.0 + 11 +-172.8937230699585 + 21 +7.467095503752994 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +9.177095503753002 + 30 +0.0 + 11 +-163.4689250957008 + 21 +9.177095503753101 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +15.71709550375313 + 30 +0.0 + 11 +-163.4689250957008 + 21 +15.71709550375304 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +8.42709550375303 + 30 +0.0 + 11 +-172.8937230699585 + 21 +8.427095503753002 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +16.46709550375297 + 30 +0.0 + 11 +-172.8937230699585 + 21 +16.46709550375302 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +18.19709550375304 + 30 +0.0 + 11 +-163.4689250957008 + 21 +18.1970955037531 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +24.73709550375315 + 30 +0.0 + 11 +-163.4689250957008 + 21 +24.73709550375306 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +17.44709550375304 + 30 +0.0 + 11 +-172.8937230699585 + 21 +17.44709550375302 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +25.48709550375301 + 30 +0.0 + 11 +-172.8937230699585 + 21 +25.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707668 + 20 +27.19709550375305 + 30 +0.0 + 11 +-163.4689250957008 + 21 +27.19709550375312 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +33.73709550375314 + 30 +0.0 + 11 +-163.4689250957008 + 21 +33.73709550375307 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +26.44709550375308 + 30 +0.0 + 11 +-172.8937230699585 + 21 +26.44709550375305 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +34.48709550375301 + 30 +0.0 + 11 +-172.8937230699585 + 21 +34.48709550375304 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +36.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +36.19709550375313 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +42.73709550375314 + 30 +0.0 + 11 +-163.4689250957008 + 21 +42.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +35.44709550375307 + 30 +0.0 + 11 +-172.8937230699585 + 21 +35.44709550375304 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +43.487095503753 + 30 +0.0 + 11 +-172.8937230699585 + 21 +43.48709550375303 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +45.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +45.19709550375312 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +51.73709550375313 + 30 +0.0 + 11 +-163.4689250957008 + 21 +51.73709550375305 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +44.44709550375306 + 30 +0.0 + 11 +-172.8937230699585 + 21 +44.44709550375303 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +52.48709550375299 + 30 +0.0 + 11 +-172.8937230699585 + 21 +52.48709550375302 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +54.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +54.19709550375311 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +60.73709550375312 + 30 +0.0 + 11 +-163.4689250957008 + 21 +60.73709550375304 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +53.44709550375305 + 30 +0.0 + 11 +-172.8937230699585 + 21 +53.44709550375303 + 31 +0.0 + 0 +LINE + 5 +400 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +61.48709550375299 + 30 +0.0 + 11 +-172.8937230699585 + 21 +61.48709550375303 + 31 +0.0 + 0 +LINE + 5 +401 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +63.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +63.19709550375311 + 31 +0.0 + 0 +LINE + 5 +402 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +69.73709550375314 + 30 +0.0 + 11 +-163.4689250957008 + 21 +69.73709550375307 + 31 +0.0 + 0 +LINE + 5 +403 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +62.44709550375306 + 30 +0.0 + 11 +-172.8937230699585 + 21 +62.44709550375302 + 31 +0.0 + 0 +LINE + 5 +404 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +70.48709550375301 + 30 +0.0 + 11 +-172.8937230699585 + 21 +70.48709550375303 + 31 +0.0 + 0 +LINE + 5 +405 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +72.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +72.19709550375313 + 31 +0.0 + 0 +LINE + 5 +406 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +78.73709550375315 + 30 +0.0 + 11 +-163.4689250957008 + 21 +78.73709550375308 + 31 +0.0 + 0 +LINE + 5 +407 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +71.44709550375305 + 30 +0.0 + 11 +-172.8937230699585 + 21 +71.44709550375305 + 31 +0.0 + 0 +LINE + 5 +408 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +79.487095503753 + 30 +0.0 + 11 +-172.8937230699585 + 21 +79.48709550375304 + 31 +0.0 + 0 +LINE + 5 +409 +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +81.19709550375303 + 30 +0.0 + 11 +-163.4689250957008 + 21 +81.1970955037531 + 31 +0.0 + 0 +LINE + 5 +40A +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-156.8353056707667 + 20 +87.7370955037531 + 30 +0.0 + 11 +-163.4689250957008 + 21 +87.73709550375304 + 31 +0.0 + 0 +LINE + 5 +40B +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +80.44709550375308 + 30 +0.0 + 11 +-172.8937230699585 + 21 +80.44709550375305 + 31 +0.0 + 0 +LINE + 5 +40C +330 +21 +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-168.8207322563303 + 20 +88.48709550375294 + 30 +0.0 + 11 +-172.8937230699585 + 21 +88.48709550375298 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +46E + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +44A + 3 +ACAD_TABLESTYLE +350 +424 + 3 +ACAD_VISUALSTYLE +350 +413 + 3 +AcDbVariableDictionary +350 +428 + 0 +DICTIONARY + 5 +41 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +42 + 0 +DICTIONARY + 5 +3A +330 +39 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +3B + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +411 + 3 +ByLayer +350 +410 + 3 +Global +350 +412 + 0 +DICTIONARY + 5 +46E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +44A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +44B + 3 +A1 +350 +44C + 3 +A2 +350 +44D + 3 +A3 +350 +44E + 3 +A4 +350 +44F + 3 +A5 +350 +450 + 3 +A6 +350 +451 + 3 +A7 +350 +452 + 3 +A8 +350 +453 + 3 +A9 +350 +454 + 3 +B0 +350 +455 + 3 +B1 +350 +456 + 3 +B2 +350 +457 + 3 +B3 +350 +458 + 3 +B4 +350 +459 + 3 +B5 +350 +45A + 3 +B6 +350 +45B + 3 +B7 +350 +45C + 3 +B8 +350 +45D + 3 +B9 +350 +45E + 3 +C0 +350 +45F + 3 +C1 +350 +460 + 3 +C2 +350 +461 + 3 +C3 +350 +462 + 3 +C4 +350 +463 + 3 +C5 +350 +464 + 3 +C6 +350 +465 + 3 +C7 +350 +466 + 3 +C8 +350 +467 + 3 +C9 +350 +468 + 3 +D0 +350 +469 + 3 +D1 +350 +46A + 3 +D2 +350 +46B + 0 +DICTIONARY + 5 +424 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +425 + 0 +DICTIONARY + 5 +413 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +419 + 3 +3D Hidden +350 +41B + 3 +3dWireframe +350 +41A + 3 +Basic +350 +418 + 3 +Brighten +350 +41F + 3 +ColorChange +350 +423 + 3 +Conceptual +350 +41C + 3 +Dim +350 +41E + 3 +Facepattern +350 +422 + 3 +Flat +350 +414 + 3 +FlatWithEdges +350 +415 + 3 +Gouraud +350 +416 + 3 +GouraudWithEdges +350 +417 + 3 +Linepattern +350 +421 + 3 +Realistic +350 +41D + 3 +Thicken +350 +420 + 0 +DICTIONARY + 5 +428 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +46D + 3 +CTABLESTYLE +350 +429 + 0 +DICTIONARY + 5 +42 +102 +{ACAD_REACTORS +330 +41 +102 +} +330 +41 +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +3B +102 +{ACAD_REACTORS +330 +3A +102 +} +330 +3A +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +40D + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MATERIAL + 5 +411 +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +ByBlock + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +410 +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +ByLayer + 72 + 1 + 94 + 63 + 0 +MATERIAL + 5 +412 +102 +{ACAD_REACTORS +330 +1B +102 +} +330 +1B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +44B +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +44C +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +44D +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +44E +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +44F +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +450 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +451 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +452 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +453 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +454 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +455 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +456 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +457 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +458 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +459 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +45A +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +45B +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +45C +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +45D +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +45E +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +45F +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +460 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +461 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +462 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +463 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +464 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +465 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +466 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +467 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +468 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +469 +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46A +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46B +102 +{ACAD_REACTORS +330 +44A +102 +} +330 +44A +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +425 +102 +{ACAD_REACTORS +330 +424 +102 +} +330 +424 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 0 + 40 +1.5 + 41 +1.5 +280 + 0 +281 + 0 + 7 +Standard +140 +4.5 +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 +6.0 +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 +4.5 +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 +419 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41B +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41A +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +418 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41F +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +423 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41C +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41E +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +422 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +414 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +415 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +416 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +417 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +421 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +41D +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +420 +102 +{ACAD_REACTORS +330 +413 +102 +} +330 +413 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +46D +102 +{ACAD_REACTORS +330 +428 +102 +} +330 +428 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +429 +102 +{ACAD_REACTORS +330 +428 +102 +} +330 +428 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E341 原图.par b/LaiPuLaser/TempMarkData/E341 原图.par new file mode 100644 index 0000000..d43f2b5 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E341 原图.par differ diff --git a/LaiPuLaser/TempMarkData/E341 原图.txt b/LaiPuLaser/TempMarkData/E341 原图.txt new file mode 100644 index 0000000..fc43b7f --- /dev/null +++ b/LaiPuLaser/TempMarkData/E341 原图.txt @@ -0,0 +1,8 @@ +1 +60.271 +3.5281 +60 +50 +600 +35 +1 diff --git a/LaiPuLaser/TempMarkData/E407.are b/LaiPuLaser/TempMarkData/E407.are new file mode 100644 index 0000000..d96ef07 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E407.are differ diff --git a/LaiPuLaser/TempMarkData/E407.dxf b/LaiPuLaser/TempMarkData/E407.dxf new file mode 100644 index 0000000..da68b33 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E407.dxf @@ -0,0 +1,18224 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +147.1787688728837 + 20 +90.01814546358859 + 30 +0.0 + 9 +$EXTMAX + 10 +314.1787688728838 + 20 +193.3009881760634 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2459001.745674352 + 9 +$TDUCREATE + 40 +2459001.412341019 + 9 +$TDUPDATE + 40 +2459001.745865324 + 9 +$TDUUPDATE + 40 +2459001.412531991 + 9 +$TDINDWG + 40 +0.0001925926 + 9 +$TDUSRTIMER + 40 +0.0001925926 + 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 +3AD + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{F0B79875-6107-486C-B2C0-3D1F71E801DB} + 9 +$VERSIONGUID + 2 +{B79CB42B-67B3-48E0-8FA2-E213AEDB09D7} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +3AC +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +241.0376850605652 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +297.0 + 41 +1.62314939434724 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +30 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +E407 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +2F +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +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 +23 +330 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +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 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +1F2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +90.01814546358861 + 10 +154.4287688728835 + 20 +90.15956681982592 + 10 +160.6287688728835 + 20 +90.15956681982592 + 10 +160.7701902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +1F3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +98.80098817606322 + 10 +154.4287688728835 + 20 +98.65956681982591 + 10 +160.6287688728835 + 20 +98.65956681982591 + 10 +160.7701902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +1F4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +90.2431454635886 + 10 +164.7787688728834 + 20 +90.38456681982593 + 10 +167.3787688728834 + 20 +90.38456681982591 + 10 +167.5201902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +1F5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +98.57598817606323 + 10 +164.7787688728834 + 20 +98.43456681982591 + 10 +167.3787688728834 + 20 +98.43456681982592 + 10 +167.5201902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +1F6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +99.46814546358863 + 10 +154.4287688728835 + 20 +99.60956681982594 + 10 +160.6287688728835 + 20 +99.60956681982594 + 10 +160.7701902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +1F7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +108.2509881760632 + 10 +154.4287688728835 + 20 +108.1095668198259 + 10 +160.6287688728835 + 20 +108.1095668198259 + 10 +160.7701902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +1F8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +99.69314546358862 + 10 +164.7787688728834 + 20 +99.83456681982595 + 10 +167.3787688728834 + 20 +99.83456681982593 + 10 +167.5201902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +1F9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +108.0259881760632 + 10 +164.7787688728834 + 20 +107.8845668198259 + 10 +167.3787688728834 + 20 +107.8845668198259 + 10 +167.5201902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +1FA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +108.9181454635886 + 10 +154.4287688728835 + 20 +109.0595668198259 + 10 +160.6287688728835 + 20 +109.0595668198259 + 10 +160.7701902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +117.7009881760632 + 10 +154.4287688728835 + 20 +117.5595668198259 + 10 +160.6287688728835 + 20 +117.5595668198259 + 10 +160.7701902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +109.1431454635886 + 10 +164.7787688728834 + 20 +109.2845668198259 + 10 +167.3787688728834 + 20 +109.2845668198259 + 10 +167.5201902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +117.4759881760632 + 10 +164.7787688728834 + 20 +117.3345668198259 + 10 +167.3787688728834 + 20 +117.3345668198259 + 10 +167.5201902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +118.3681454635886 + 10 +154.4287688728835 + 20 +118.5095668198259 + 10 +160.6287688728835 + 20 +118.5095668198259 + 10 +160.7701902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +127.1509881760632 + 10 +154.4287688728835 + 20 +127.0095668198259 + 10 +160.6287688728835 + 20 +127.0095668198259 + 10 +160.7701902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +118.5931454635886 + 10 +164.7787688728834 + 20 +118.7345668198259 + 10 +167.3787688728834 + 20 +118.7345668198259 + 10 +167.5201902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +126.9259881760632 + 10 +164.7787688728834 + 20 +126.7845668198259 + 10 +167.3787688728834 + 20 +126.7845668198259 + 10 +167.5201902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +127.8181454635886 + 10 +154.4287688728835 + 20 +127.9595668198259 + 10 +160.6287688728835 + 20 +127.9595668198259 + 10 +160.7701902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +136.6009881760632 + 10 +154.4287688728835 + 20 +136.4595668198259 + 10 +160.6287688728835 + 20 +136.4595668198259 + 10 +160.7701902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +128.0431454635887 + 10 +164.7787688728834 + 20 +128.184566819826 + 10 +167.3787688728834 + 20 +128.1845668198259 + 10 +167.5201902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +136.3759881760633 + 10 +164.7787688728834 + 20 +136.2345668198259 + 10 +167.3787688728834 + 20 +136.2345668198259 + 10 +167.5201902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +137.2681454635886 + 10 +154.4287688728835 + 20 +137.409566819826 + 10 +160.6287688728835 + 20 +137.409566819826 + 10 +160.7701902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +146.0509881760633 + 10 +154.4287688728835 + 20 +145.909566819826 + 10 +160.6287688728835 + 20 +145.909566819826 + 10 +160.7701902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +137.4931454635887 + 10 +164.7787688728834 + 20 +137.6345668198259 + 10 +167.3787688728834 + 20 +137.6345668198259 + 10 +167.5201902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +145.8259881760633 + 10 +164.7787688728834 + 20 +145.684566819826 + 10 +167.3787688728834 + 20 +145.684566819826 + 10 +167.5201902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +146.7181454635887 + 10 +154.4287688728835 + 20 +146.859566819826 + 10 +160.6287688728835 + 20 +146.859566819826 + 10 +160.7701902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +155.5009881760633 + 10 +154.4287688728835 + 20 +155.359566819826 + 10 +160.6287688728835 + 20 +155.359566819826 + 10 +160.7701902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +146.9431454635887 + 10 +164.7787688728834 + 20 +147.084566819826 + 10 +167.3787688728834 + 20 +147.084566819826 + 10 +167.5201902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +155.2759881760633 + 10 +164.7787688728834 + 20 +155.134566819826 + 10 +167.3787688728834 + 20 +155.134566819826 + 10 +167.5201902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +156.1681454635887 + 10 +154.4287688728835 + 20 +156.309566819826 + 10 +160.6287688728835 + 20 +156.309566819826 + 10 +160.7701902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +164.9509881760633 + 10 +154.4287688728835 + 20 +164.809566819826 + 10 +160.6287688728835 + 20 +164.809566819826 + 10 +160.7701902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +156.3931454635887 + 10 +164.7787688728834 + 20 +156.534566819826 + 10 +167.3787688728834 + 20 +156.534566819826 + 10 +167.5201902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +164.7259881760633 + 10 +164.7787688728834 + 20 +164.584566819826 + 10 +167.3787688728834 + 20 +164.584566819826 + 10 +167.5201902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +165.6181454635887 + 10 +154.4287688728835 + 20 +165.759566819826 + 10 +160.6287688728835 + 20 +165.759566819826 + 10 +160.7701902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +174.4009881760633 + 10 +154.4287688728835 + 20 +174.259566819826 + 10 +160.6287688728835 + 20 +174.259566819826 + 10 +160.7701902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +165.8431454635887 + 10 +164.7787688728834 + 20 +165.984566819826 + 10 +167.3787688728834 + 20 +165.984566819826 + 10 +167.5201902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +174.1759881760633 + 10 +164.7787688728834 + 20 +174.034566819826 + 10 +167.3787688728834 + 20 +174.034566819826 + 10 +167.5201902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +175.0681454635887 + 10 +154.4287688728835 + 20 +175.209566819826 + 10 +160.6287688728835 + 20 +175.209566819826 + 10 +160.7701902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +183.8509881760634 + 10 +154.4287688728835 + 20 +183.709566819826 + 10 +160.6287688728835 + 20 +183.709566819826 + 10 +160.7701902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +175.2931454635887 + 10 +164.7787688728834 + 20 +175.434566819826 + 10 +167.3787688728834 + 20 +175.434566819826 + 10 +167.5201902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +183.6259881760633 + 10 +164.7787688728834 + 20 +183.484566819826 + 10 +167.3787688728834 + 20 +183.484566819826 + 10 +167.5201902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +184.5181454635887 + 10 +154.4287688728835 + 20 +184.659566819826 + 10 +160.6287688728835 + 20 +184.659566819826 + 10 +160.7701902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +154.2873475166462 + 20 +193.3009881760634 + 10 +154.4287688728835 + 20 +193.159566819826 + 10 +160.6287688728835 + 20 +193.159566819826 + 10 +160.7701902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +184.7431454635887 + 10 +164.7787688728834 + 20 +184.884566819826 + 10 +167.3787688728834 + 20 +184.884566819826 + 10 +167.5201902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +164.6373475166461 + 20 +193.0759881760634 + 10 +164.7787688728834 + 20 +192.934566819826 + 10 +167.3787688728834 + 20 +192.934566819826 + 10 +167.5201902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +90.01814546358861 + 10 +170.0037688728835 + 20 +90.15956681982592 + 10 +176.2037688728834 + 20 +90.15956681982592 + 10 +176.3451902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +98.80098817606322 + 10 +170.0037688728835 + 20 +98.65956681982591 + 10 +176.2037688728834 + 20 +98.65956681982591 + 10 +176.3451902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +90.2431454635886 + 10 +180.3537688728834 + 20 +90.38456681982593 + 10 +182.9537688728834 + 20 +90.38456681982591 + 10 +183.0951902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +98.57598817606323 + 10 +180.3537688728834 + 20 +98.43456681982591 + 10 +182.9537688728834 + 20 +98.43456681982592 + 10 +183.0951902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +99.46814546358863 + 10 +170.0037688728835 + 20 +99.60956681982594 + 10 +176.2037688728834 + 20 +99.60956681982594 + 10 +176.3451902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +108.2509881760632 + 10 +170.0037688728835 + 20 +108.1095668198259 + 10 +176.2037688728834 + 20 +108.1095668198259 + 10 +176.3451902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +99.69314546358862 + 10 +180.3537688728834 + 20 +99.83456681982595 + 10 +182.9537688728834 + 20 +99.83456681982593 + 10 +183.0951902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +108.0259881760632 + 10 +180.3537688728834 + 20 +107.8845668198259 + 10 +182.9537688728834 + 20 +107.8845668198259 + 10 +183.0951902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +108.9181454635886 + 10 +170.0037688728835 + 20 +109.0595668198259 + 10 +176.2037688728834 + 20 +109.0595668198259 + 10 +176.3451902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +117.7009881760632 + 10 +170.0037688728835 + 20 +117.5595668198259 + 10 +176.2037688728834 + 20 +117.5595668198259 + 10 +176.3451902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +109.1431454635886 + 10 +180.3537688728834 + 20 +109.2845668198259 + 10 +182.9537688728834 + 20 +109.2845668198259 + 10 +183.0951902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +117.4759881760632 + 10 +180.3537688728834 + 20 +117.3345668198259 + 10 +182.9537688728834 + 20 +117.3345668198259 + 10 +183.0951902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +118.3681454635886 + 10 +170.0037688728835 + 20 +118.5095668198259 + 10 +176.2037688728834 + 20 +118.5095668198259 + 10 +176.3451902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +127.1509881760632 + 10 +170.0037688728835 + 20 +127.0095668198259 + 10 +176.2037688728834 + 20 +127.0095668198259 + 10 +176.3451902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +118.5931454635886 + 10 +180.3537688728834 + 20 +118.7345668198259 + 10 +182.9537688728834 + 20 +118.7345668198259 + 10 +183.0951902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +126.9259881760632 + 10 +180.3537688728834 + 20 +126.7845668198259 + 10 +182.9537688728834 + 20 +126.7845668198259 + 10 +183.0951902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +127.8181454635886 + 10 +170.0037688728835 + 20 +127.9595668198259 + 10 +176.2037688728834 + 20 +127.9595668198259 + 10 +176.3451902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +136.6009881760632 + 10 +170.0037688728835 + 20 +136.4595668198259 + 10 +176.2037688728834 + 20 +136.4595668198259 + 10 +176.3451902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +128.0431454635887 + 10 +180.3537688728834 + 20 +128.184566819826 + 10 +182.9537688728834 + 20 +128.1845668198259 + 10 +183.0951902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +136.3759881760633 + 10 +180.3537688728834 + 20 +136.2345668198259 + 10 +182.9537688728834 + 20 +136.2345668198259 + 10 +183.0951902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +137.2681454635886 + 10 +170.0037688728835 + 20 +137.409566819826 + 10 +176.2037688728834 + 20 +137.409566819826 + 10 +176.3451902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +146.0509881760633 + 10 +170.0037688728835 + 20 +145.909566819826 + 10 +176.2037688728834 + 20 +145.909566819826 + 10 +176.3451902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +137.4931454635887 + 10 +180.3537688728834 + 20 +137.6345668198259 + 10 +182.9537688728834 + 20 +137.6345668198259 + 10 +183.0951902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +145.8259881760633 + 10 +180.3537688728834 + 20 +145.684566819826 + 10 +182.9537688728834 + 20 +145.684566819826 + 10 +183.0951902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +146.7181454635887 + 10 +170.0037688728835 + 20 +146.859566819826 + 10 +176.2037688728834 + 20 +146.859566819826 + 10 +176.3451902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +155.5009881760633 + 10 +170.0037688728835 + 20 +155.359566819826 + 10 +176.2037688728834 + 20 +155.359566819826 + 10 +176.3451902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +146.9431454635887 + 10 +180.3537688728834 + 20 +147.084566819826 + 10 +182.9537688728834 + 20 +147.084566819826 + 10 +183.0951902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +155.2759881760633 + 10 +180.3537688728834 + 20 +155.134566819826 + 10 +182.9537688728834 + 20 +155.134566819826 + 10 +183.0951902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +156.1681454635887 + 10 +170.0037688728835 + 20 +156.309566819826 + 10 +176.2037688728834 + 20 +156.309566819826 + 10 +176.3451902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +164.9509881760633 + 10 +170.0037688728835 + 20 +164.809566819826 + 10 +176.2037688728834 + 20 +164.809566819826 + 10 +176.3451902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +156.3931454635887 + 10 +180.3537688728834 + 20 +156.534566819826 + 10 +182.9537688728834 + 20 +156.534566819826 + 10 +183.0951902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +164.7259881760633 + 10 +180.3537688728834 + 20 +164.584566819826 + 10 +182.9537688728834 + 20 +164.584566819826 + 10 +183.0951902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +165.6181454635887 + 10 +170.0037688728835 + 20 +165.759566819826 + 10 +176.2037688728834 + 20 +165.759566819826 + 10 +176.3451902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +174.4009881760633 + 10 +170.0037688728835 + 20 +174.259566819826 + 10 +176.2037688728834 + 20 +174.259566819826 + 10 +176.3451902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +165.8431454635887 + 10 +180.3537688728834 + 20 +165.984566819826 + 10 +182.9537688728834 + 20 +165.984566819826 + 10 +183.0951902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +174.1759881760633 + 10 +180.3537688728834 + 20 +174.034566819826 + 10 +182.9537688728834 + 20 +174.034566819826 + 10 +183.0951902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +175.0681454635887 + 10 +170.0037688728835 + 20 +175.209566819826 + 10 +176.2037688728834 + 20 +175.209566819826 + 10 +176.3451902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +183.8509881760634 + 10 +170.0037688728835 + 20 +183.709566819826 + 10 +176.2037688728834 + 20 +183.709566819826 + 10 +176.3451902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +175.2931454635887 + 10 +180.3537688728834 + 20 +175.434566819826 + 10 +182.9537688728834 + 20 +175.434566819826 + 10 +183.0951902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +183.6259881760633 + 10 +180.3537688728834 + 20 +183.484566819826 + 10 +182.9537688728834 + 20 +183.484566819826 + 10 +183.0951902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +184.5181454635887 + 10 +170.0037688728835 + 20 +184.659566819826 + 10 +176.2037688728834 + 20 +184.659566819826 + 10 +176.3451902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +169.8623475166462 + 20 +193.3009881760634 + 10 +170.0037688728835 + 20 +193.159566819826 + 10 +176.2037688728834 + 20 +193.159566819826 + 10 +176.3451902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +184.7431454635887 + 10 +180.3537688728834 + 20 +184.884566819826 + 10 +182.9537688728834 + 20 +184.884566819826 + 10 +183.0951902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +180.2123475166461 + 20 +193.0759881760634 + 10 +180.3537688728834 + 20 +192.934566819826 + 10 +182.9537688728834 + 20 +192.934566819826 + 10 +183.0951902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +90.01814546358861 + 10 +185.5787688728835 + 20 +90.15956681982592 + 10 +191.7787688728834 + 20 +90.15956681982592 + 10 +191.9201902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +98.80098817606322 + 10 +185.5787688728835 + 20 +98.65956681982591 + 10 +191.7787688728834 + 20 +98.65956681982591 + 10 +191.9201902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +90.2431454635886 + 10 +195.9287688728834 + 20 +90.38456681982593 + 10 +198.5287688728834 + 20 +90.38456681982591 + 10 +198.6701902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +98.57598817606323 + 10 +195.9287688728834 + 20 +98.43456681982591 + 10 +198.5287688728834 + 20 +98.43456681982592 + 10 +198.6701902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +99.46814546358863 + 10 +185.5787688728835 + 20 +99.60956681982594 + 10 +191.7787688728834 + 20 +99.60956681982594 + 10 +191.9201902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +108.2509881760632 + 10 +185.5787688728835 + 20 +108.1095668198259 + 10 +191.7787688728834 + 20 +108.1095668198259 + 10 +191.9201902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +99.69314546358862 + 10 +195.9287688728834 + 20 +99.83456681982595 + 10 +198.5287688728834 + 20 +99.83456681982593 + 10 +198.6701902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +108.0259881760632 + 10 +195.9287688728834 + 20 +107.8845668198259 + 10 +198.5287688728834 + 20 +107.8845668198259 + 10 +198.6701902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +108.9181454635886 + 10 +185.5787688728835 + 20 +109.0595668198259 + 10 +191.7787688728834 + 20 +109.0595668198259 + 10 +191.9201902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +117.7009881760632 + 10 +185.5787688728835 + 20 +117.5595668198259 + 10 +191.7787688728834 + 20 +117.5595668198259 + 10 +191.9201902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +109.1431454635886 + 10 +195.9287688728834 + 20 +109.2845668198259 + 10 +198.5287688728834 + 20 +109.2845668198259 + 10 +198.6701902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +117.4759881760632 + 10 +195.9287688728834 + 20 +117.3345668198259 + 10 +198.5287688728834 + 20 +117.3345668198259 + 10 +198.6701902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +118.3681454635886 + 10 +185.5787688728835 + 20 +118.5095668198259 + 10 +191.7787688728834 + 20 +118.5095668198259 + 10 +191.9201902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +127.1509881760632 + 10 +185.5787688728835 + 20 +127.0095668198259 + 10 +191.7787688728834 + 20 +127.0095668198259 + 10 +191.9201902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +118.5931454635886 + 10 +195.9287688728834 + 20 +118.7345668198259 + 10 +198.5287688728834 + 20 +118.7345668198259 + 10 +198.6701902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +126.9259881760632 + 10 +195.9287688728834 + 20 +126.7845668198259 + 10 +198.5287688728834 + 20 +126.7845668198259 + 10 +198.6701902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +127.8181454635886 + 10 +185.5787688728835 + 20 +127.9595668198259 + 10 +191.7787688728834 + 20 +127.9595668198259 + 10 +191.9201902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +136.6009881760632 + 10 +185.5787688728835 + 20 +136.4595668198259 + 10 +191.7787688728834 + 20 +136.4595668198259 + 10 +191.9201902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +128.0431454635887 + 10 +195.9287688728834 + 20 +128.184566819826 + 10 +198.5287688728834 + 20 +128.1845668198259 + 10 +198.6701902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +136.3759881760633 + 10 +195.9287688728834 + 20 +136.2345668198259 + 10 +198.5287688728834 + 20 +136.2345668198259 + 10 +198.6701902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +137.2681454635886 + 10 +185.5787688728835 + 20 +137.409566819826 + 10 +191.7787688728834 + 20 +137.409566819826 + 10 +191.9201902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +146.0509881760633 + 10 +185.5787688728835 + 20 +145.909566819826 + 10 +191.7787688728834 + 20 +145.909566819826 + 10 +191.9201902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +137.4931454635887 + 10 +195.9287688728834 + 20 +137.6345668198259 + 10 +198.5287688728834 + 20 +137.6345668198259 + 10 +198.6701902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +145.8259881760633 + 10 +195.9287688728834 + 20 +145.684566819826 + 10 +198.5287688728834 + 20 +145.684566819826 + 10 +198.6701902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +146.7181454635887 + 10 +185.5787688728835 + 20 +146.859566819826 + 10 +191.7787688728834 + 20 +146.859566819826 + 10 +191.9201902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +155.5009881760633 + 10 +185.5787688728835 + 20 +155.359566819826 + 10 +191.7787688728834 + 20 +155.359566819826 + 10 +191.9201902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +146.9431454635887 + 10 +195.9287688728834 + 20 +147.084566819826 + 10 +198.5287688728834 + 20 +147.084566819826 + 10 +198.6701902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +155.2759881760633 + 10 +195.9287688728834 + 20 +155.134566819826 + 10 +198.5287688728834 + 20 +155.134566819826 + 10 +198.6701902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +156.1681454635887 + 10 +185.5787688728835 + 20 +156.309566819826 + 10 +191.7787688728834 + 20 +156.309566819826 + 10 +191.9201902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +164.9509881760633 + 10 +185.5787688728835 + 20 +164.809566819826 + 10 +191.7787688728834 + 20 +164.809566819826 + 10 +191.9201902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +156.3931454635887 + 10 +195.9287688728834 + 20 +156.534566819826 + 10 +198.5287688728834 + 20 +156.534566819826 + 10 +198.6701902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +164.7259881760633 + 10 +195.9287688728834 + 20 +164.584566819826 + 10 +198.5287688728834 + 20 +164.584566819826 + 10 +198.6701902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +165.6181454635887 + 10 +185.5787688728835 + 20 +165.759566819826 + 10 +191.7787688728834 + 20 +165.759566819826 + 10 +191.9201902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +174.4009881760633 + 10 +185.5787688728835 + 20 +174.259566819826 + 10 +191.7787688728834 + 20 +174.259566819826 + 10 +191.9201902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +165.8431454635887 + 10 +195.9287688728834 + 20 +165.984566819826 + 10 +198.5287688728834 + 20 +165.984566819826 + 10 +198.6701902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +174.1759881760633 + 10 +195.9287688728834 + 20 +174.034566819826 + 10 +198.5287688728834 + 20 +174.034566819826 + 10 +198.6701902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +175.0681454635887 + 10 +185.5787688728835 + 20 +175.209566819826 + 10 +191.7787688728834 + 20 +175.209566819826 + 10 +191.9201902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +183.8509881760634 + 10 +185.5787688728835 + 20 +183.709566819826 + 10 +191.7787688728834 + 20 +183.709566819826 + 10 +191.9201902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +175.2931454635887 + 10 +195.9287688728834 + 20 +175.434566819826 + 10 +198.5287688728834 + 20 +175.434566819826 + 10 +198.6701902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +183.6259881760633 + 10 +195.9287688728834 + 20 +183.484566819826 + 10 +198.5287688728834 + 20 +183.484566819826 + 10 +198.6701902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +184.5181454635887 + 10 +185.5787688728835 + 20 +184.659566819826 + 10 +191.7787688728834 + 20 +184.659566819826 + 10 +191.9201902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +185.4373475166462 + 20 +193.3009881760634 + 10 +185.5787688728835 + 20 +193.159566819826 + 10 +191.7787688728834 + 20 +193.159566819826 + 10 +191.9201902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +184.7431454635887 + 10 +195.9287688728834 + 20 +184.884566819826 + 10 +198.5287688728834 + 20 +184.884566819826 + 10 +198.6701902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +195.7873475166461 + 20 +193.0759881760634 + 10 +195.9287688728834 + 20 +192.934566819826 + 10 +198.5287688728834 + 20 +192.934566819826 + 10 +198.6701902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +90.01814546358861 + 10 +201.1537688728835 + 20 +90.15956681982592 + 10 +207.3537688728834 + 20 +90.15956681982592 + 10 +207.4951902291207 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +98.80098817606322 + 10 +201.1537688728835 + 20 +98.65956681982591 + 10 +207.3537688728834 + 20 +98.65956681982591 + 10 +207.4951902291207 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +90.2431454635886 + 10 +211.5037688728834 + 20 +90.38456681982593 + 10 +214.1037688728834 + 20 +90.38456681982591 + 10 +214.2451902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +98.57598817606323 + 10 +211.5037688728834 + 20 +98.43456681982591 + 10 +214.1037688728834 + 20 +98.43456681982592 + 10 +214.2451902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +99.46814546358863 + 10 +201.1537688728835 + 20 +99.60956681982594 + 10 +207.3537688728834 + 20 +99.60956681982594 + 10 +207.4951902291207 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +108.2509881760632 + 10 +201.1537688728835 + 20 +108.1095668198259 + 10 +207.3537688728834 + 20 +108.1095668198259 + 10 +207.4951902291207 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +99.69314546358862 + 10 +211.5037688728834 + 20 +99.83456681982595 + 10 +214.1037688728834 + 20 +99.83456681982593 + 10 +214.2451902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +108.0259881760632 + 10 +211.5037688728834 + 20 +107.8845668198259 + 10 +214.1037688728834 + 20 +107.8845668198259 + 10 +214.2451902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +108.9181454635886 + 10 +201.1537688728835 + 20 +109.0595668198259 + 10 +207.3537688728834 + 20 +109.0595668198259 + 10 +207.4951902291207 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +117.7009881760632 + 10 +201.1537688728835 + 20 +117.5595668198259 + 10 +207.3537688728834 + 20 +117.5595668198259 + 10 +207.4951902291207 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +109.1431454635886 + 10 +211.5037688728834 + 20 +109.2845668198259 + 10 +214.1037688728834 + 20 +109.2845668198259 + 10 +214.2451902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +117.4759881760632 + 10 +211.5037688728834 + 20 +117.3345668198259 + 10 +214.1037688728834 + 20 +117.3345668198259 + 10 +214.2451902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +118.3681454635886 + 10 +201.1537688728835 + 20 +118.5095668198259 + 10 +207.3537688728834 + 20 +118.5095668198259 + 10 +207.4951902291207 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +127.1509881760632 + 10 +201.1537688728835 + 20 +127.0095668198259 + 10 +207.3537688728834 + 20 +127.0095668198259 + 10 +207.4951902291207 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +118.5931454635886 + 10 +211.5037688728834 + 20 +118.7345668198259 + 10 +214.1037688728834 + 20 +118.7345668198259 + 10 +214.2451902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +126.9259881760632 + 10 +211.5037688728834 + 20 +126.7845668198259 + 10 +214.1037688728834 + 20 +126.7845668198259 + 10 +214.2451902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +127.8181454635886 + 10 +201.1537688728835 + 20 +127.9595668198259 + 10 +207.3537688728834 + 20 +127.9595668198259 + 10 +207.4951902291207 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +136.6009881760632 + 10 +201.1537688728835 + 20 +136.4595668198259 + 10 +207.3537688728834 + 20 +136.4595668198259 + 10 +207.4951902291207 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +128.0431454635887 + 10 +211.5037688728834 + 20 +128.184566819826 + 10 +214.1037688728834 + 20 +128.1845668198259 + 10 +214.2451902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +136.3759881760633 + 10 +211.5037688728834 + 20 +136.2345668198259 + 10 +214.1037688728834 + 20 +136.2345668198259 + 10 +214.2451902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +137.2681454635886 + 10 +201.1537688728835 + 20 +137.409566819826 + 10 +207.3537688728834 + 20 +137.409566819826 + 10 +207.4951902291207 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +146.0509881760633 + 10 +201.1537688728835 + 20 +145.909566819826 + 10 +207.3537688728834 + 20 +145.909566819826 + 10 +207.4951902291207 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +137.4931454635887 + 10 +211.5037688728834 + 20 +137.6345668198259 + 10 +214.1037688728834 + 20 +137.6345668198259 + 10 +214.2451902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +145.8259881760633 + 10 +211.5037688728834 + 20 +145.684566819826 + 10 +214.1037688728834 + 20 +145.684566819826 + 10 +214.2451902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +146.7181454635887 + 10 +201.1537688728835 + 20 +146.859566819826 + 10 +207.3537688728834 + 20 +146.859566819826 + 10 +207.4951902291207 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +155.5009881760633 + 10 +201.1537688728835 + 20 +155.359566819826 + 10 +207.3537688728834 + 20 +155.359566819826 + 10 +207.4951902291207 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +146.9431454635887 + 10 +211.5037688728834 + 20 +147.084566819826 + 10 +214.1037688728834 + 20 +147.084566819826 + 10 +214.2451902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +155.2759881760633 + 10 +211.5037688728834 + 20 +155.134566819826 + 10 +214.1037688728834 + 20 +155.134566819826 + 10 +214.2451902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +156.1681454635887 + 10 +201.1537688728835 + 20 +156.309566819826 + 10 +207.3537688728834 + 20 +156.309566819826 + 10 +207.4951902291207 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +164.9509881760633 + 10 +201.1537688728835 + 20 +164.809566819826 + 10 +207.3537688728834 + 20 +164.809566819826 + 10 +207.4951902291207 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +156.3931454635887 + 10 +211.5037688728834 + 20 +156.534566819826 + 10 +214.1037688728834 + 20 +156.534566819826 + 10 +214.2451902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +164.7259881760633 + 10 +211.5037688728834 + 20 +164.584566819826 + 10 +214.1037688728834 + 20 +164.584566819826 + 10 +214.2451902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +165.6181454635887 + 10 +201.1537688728835 + 20 +165.759566819826 + 10 +207.3537688728834 + 20 +165.759566819826 + 10 +207.4951902291207 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +174.4009881760633 + 10 +201.1537688728835 + 20 +174.259566819826 + 10 +207.3537688728834 + 20 +174.259566819826 + 10 +207.4951902291207 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +165.8431454635887 + 10 +211.5037688728834 + 20 +165.984566819826 + 10 +214.1037688728834 + 20 +165.984566819826 + 10 +214.2451902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +174.1759881760633 + 10 +211.5037688728834 + 20 +174.034566819826 + 10 +214.1037688728834 + 20 +174.034566819826 + 10 +214.2451902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +175.0681454635887 + 10 +201.1537688728835 + 20 +175.209566819826 + 10 +207.3537688728834 + 20 +175.209566819826 + 10 +207.4951902291207 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +29B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +183.8509881760634 + 10 +201.1537688728835 + 20 +183.709566819826 + 10 +207.3537688728834 + 20 +183.709566819826 + 10 +207.4951902291207 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +29C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +175.2931454635887 + 10 +211.5037688728834 + 20 +175.434566819826 + 10 +214.1037688728834 + 20 +175.434566819826 + 10 +214.2451902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +29D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +183.6259881760633 + 10 +211.5037688728834 + 20 +183.484566819826 + 10 +214.1037688728834 + 20 +183.484566819826 + 10 +214.2451902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +29E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +184.5181454635887 + 10 +201.1537688728835 + 20 +184.659566819826 + 10 +207.3537688728834 + 20 +184.659566819826 + 10 +207.4951902291207 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +29F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +201.0123475166462 + 20 +193.3009881760634 + 10 +201.1537688728835 + 20 +193.159566819826 + 10 +207.3537688728834 + 20 +193.159566819826 + 10 +207.4951902291207 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +2A0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +184.7431454635887 + 10 +211.5037688728834 + 20 +184.884566819826 + 10 +214.1037688728834 + 20 +184.884566819826 + 10 +214.2451902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +2A1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +211.3623475166461 + 20 +193.0759881760634 + 10 +211.5037688728834 + 20 +192.934566819826 + 10 +214.1037688728834 + 20 +192.934566819826 + 10 +214.2451902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +2A2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +90.01814546358861 + 10 +216.7287688728835 + 20 +90.15956681982592 + 10 +222.9287688728835 + 20 +90.15956681982592 + 10 +223.0701902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +2A3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +98.80098817606322 + 10 +216.7287688728835 + 20 +98.65956681982591 + 10 +222.9287688728835 + 20 +98.65956681982591 + 10 +223.0701902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +2A4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +90.2431454635886 + 10 +227.0787688728834 + 20 +90.38456681982593 + 10 +229.6787688728834 + 20 +90.38456681982591 + 10 +229.8201902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +2A5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +98.57598817606323 + 10 +227.0787688728834 + 20 +98.43456681982591 + 10 +229.6787688728834 + 20 +98.43456681982592 + 10 +229.8201902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +2A6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +99.46814546358863 + 10 +216.7287688728835 + 20 +99.60956681982594 + 10 +222.9287688728835 + 20 +99.60956681982594 + 10 +223.0701902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +2A7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +108.2509881760632 + 10 +216.7287688728835 + 20 +108.1095668198259 + 10 +222.9287688728835 + 20 +108.1095668198259 + 10 +223.0701902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +2A8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +99.69314546358862 + 10 +227.0787688728834 + 20 +99.83456681982595 + 10 +229.6787688728834 + 20 +99.83456681982593 + 10 +229.8201902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +2A9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +108.0259881760632 + 10 +227.0787688728834 + 20 +107.8845668198259 + 10 +229.6787688728834 + 20 +107.8845668198259 + 10 +229.8201902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +2AA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +108.9181454635886 + 10 +216.7287688728835 + 20 +109.0595668198259 + 10 +222.9287688728835 + 20 +109.0595668198259 + 10 +223.0701902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +2AB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +117.7009881760632 + 10 +216.7287688728835 + 20 +117.5595668198259 + 10 +222.9287688728835 + 20 +117.5595668198259 + 10 +223.0701902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +2AC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +109.1431454635886 + 10 +227.0787688728834 + 20 +109.2845668198259 + 10 +229.6787688728834 + 20 +109.2845668198259 + 10 +229.8201902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +2AD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +117.4759881760632 + 10 +227.0787688728834 + 20 +117.3345668198259 + 10 +229.6787688728834 + 20 +117.3345668198259 + 10 +229.8201902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +2AE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +118.3681454635886 + 10 +216.7287688728835 + 20 +118.5095668198259 + 10 +222.9287688728835 + 20 +118.5095668198259 + 10 +223.0701902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +2AF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +127.1509881760632 + 10 +216.7287688728835 + 20 +127.0095668198259 + 10 +222.9287688728835 + 20 +127.0095668198259 + 10 +223.0701902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +2B0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +118.5931454635886 + 10 +227.0787688728834 + 20 +118.7345668198259 + 10 +229.6787688728834 + 20 +118.7345668198259 + 10 +229.8201902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +2B1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +126.9259881760632 + 10 +227.0787688728834 + 20 +126.7845668198259 + 10 +229.6787688728834 + 20 +126.7845668198259 + 10 +229.8201902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +2B2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +127.8181454635886 + 10 +216.7287688728835 + 20 +127.9595668198259 + 10 +222.9287688728835 + 20 +127.9595668198259 + 10 +223.0701902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +2B3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +136.6009881760632 + 10 +216.7287688728835 + 20 +136.4595668198259 + 10 +222.9287688728835 + 20 +136.4595668198259 + 10 +223.0701902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +2B4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +128.0431454635887 + 10 +227.0787688728834 + 20 +128.184566819826 + 10 +229.6787688728834 + 20 +128.1845668198259 + 10 +229.8201902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +2B5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +136.3759881760633 + 10 +227.0787688728834 + 20 +136.2345668198259 + 10 +229.6787688728834 + 20 +136.2345668198259 + 10 +229.8201902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +2B6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +137.2681454635886 + 10 +216.7287688728835 + 20 +137.409566819826 + 10 +222.9287688728835 + 20 +137.409566819826 + 10 +223.0701902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +2B7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +146.0509881760633 + 10 +216.7287688728835 + 20 +145.909566819826 + 10 +222.9287688728835 + 20 +145.909566819826 + 10 +223.0701902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +2B8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +137.4931454635887 + 10 +227.0787688728834 + 20 +137.6345668198259 + 10 +229.6787688728834 + 20 +137.6345668198259 + 10 +229.8201902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +2B9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +145.8259881760633 + 10 +227.0787688728834 + 20 +145.684566819826 + 10 +229.6787688728834 + 20 +145.684566819826 + 10 +229.8201902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +2BA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +146.7181454635887 + 10 +216.7287688728835 + 20 +146.859566819826 + 10 +222.9287688728835 + 20 +146.859566819826 + 10 +223.0701902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +2BB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +155.5009881760633 + 10 +216.7287688728835 + 20 +155.359566819826 + 10 +222.9287688728835 + 20 +155.359566819826 + 10 +223.0701902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +2BC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +146.9431454635887 + 10 +227.0787688728834 + 20 +147.084566819826 + 10 +229.6787688728834 + 20 +147.084566819826 + 10 +229.8201902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +2BD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +155.2759881760633 + 10 +227.0787688728834 + 20 +155.134566819826 + 10 +229.6787688728834 + 20 +155.134566819826 + 10 +229.8201902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +2BE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +156.1681454635887 + 10 +216.7287688728835 + 20 +156.309566819826 + 10 +222.9287688728835 + 20 +156.309566819826 + 10 +223.0701902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +2BF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +164.9509881760633 + 10 +216.7287688728835 + 20 +164.809566819826 + 10 +222.9287688728835 + 20 +164.809566819826 + 10 +223.0701902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +2C0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +156.3931454635887 + 10 +227.0787688728834 + 20 +156.534566819826 + 10 +229.6787688728834 + 20 +156.534566819826 + 10 +229.8201902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +2C1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +164.7259881760633 + 10 +227.0787688728834 + 20 +164.584566819826 + 10 +229.6787688728834 + 20 +164.584566819826 + 10 +229.8201902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +2C2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +165.6181454635887 + 10 +216.7287688728835 + 20 +165.759566819826 + 10 +222.9287688728835 + 20 +165.759566819826 + 10 +223.0701902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +2C3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +174.4009881760633 + 10 +216.7287688728835 + 20 +174.259566819826 + 10 +222.9287688728835 + 20 +174.259566819826 + 10 +223.0701902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +2C4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +165.8431454635887 + 10 +227.0787688728834 + 20 +165.984566819826 + 10 +229.6787688728834 + 20 +165.984566819826 + 10 +229.8201902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +2C5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +174.1759881760633 + 10 +227.0787688728834 + 20 +174.034566819826 + 10 +229.6787688728834 + 20 +174.034566819826 + 10 +229.8201902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +2C6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +175.0681454635887 + 10 +216.7287688728835 + 20 +175.209566819826 + 10 +222.9287688728835 + 20 +175.209566819826 + 10 +223.0701902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +2C7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +183.8509881760634 + 10 +216.7287688728835 + 20 +183.709566819826 + 10 +222.9287688728835 + 20 +183.709566819826 + 10 +223.0701902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +2C8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +175.2931454635887 + 10 +227.0787688728834 + 20 +175.434566819826 + 10 +229.6787688728834 + 20 +175.434566819826 + 10 +229.8201902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +2C9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +183.6259881760633 + 10 +227.0787688728834 + 20 +183.484566819826 + 10 +229.6787688728834 + 20 +183.484566819826 + 10 +229.8201902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +2CA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +184.5181454635887 + 10 +216.7287688728835 + 20 +184.659566819826 + 10 +222.9287688728835 + 20 +184.659566819826 + 10 +223.0701902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +2CB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +216.5873475166462 + 20 +193.3009881760634 + 10 +216.7287688728835 + 20 +193.159566819826 + 10 +222.9287688728835 + 20 +193.159566819826 + 10 +223.0701902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +2CC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +184.7431454635887 + 10 +227.0787688728834 + 20 +184.884566819826 + 10 +229.6787688728834 + 20 +184.884566819826 + 10 +229.8201902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +2CD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +226.9373475166461 + 20 +193.0759881760634 + 10 +227.0787688728834 + 20 +192.934566819826 + 10 +229.6787688728834 + 20 +192.934566819826 + 10 +229.8201902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +2CE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +90.01814546358861 + 10 +232.3037688728835 + 20 +90.15956681982592 + 10 +238.5037688728834 + 20 +90.15956681982592 + 10 +238.6451902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +2CF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +98.80098817606322 + 10 +232.3037688728835 + 20 +98.65956681982591 + 10 +238.5037688728834 + 20 +98.65956681982591 + 10 +238.6451902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +2D0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +90.2431454635886 + 10 +242.6537688728834 + 20 +90.38456681982593 + 10 +245.2537688728834 + 20 +90.38456681982591 + 10 +245.3951902291207 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +2D1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +98.57598817606323 + 10 +242.6537688728834 + 20 +98.43456681982591 + 10 +245.2537688728834 + 20 +98.43456681982592 + 10 +245.3951902291207 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +2D2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +99.46814546358863 + 10 +232.3037688728835 + 20 +99.60956681982594 + 10 +238.5037688728834 + 20 +99.60956681982594 + 10 +238.6451902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +2D3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +108.2509881760632 + 10 +232.3037688728835 + 20 +108.1095668198259 + 10 +238.5037688728834 + 20 +108.1095668198259 + 10 +238.6451902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +2D4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +99.69314546358862 + 10 +242.6537688728834 + 20 +99.83456681982595 + 10 +245.2537688728834 + 20 +99.83456681982593 + 10 +245.3951902291207 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +2D5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +108.0259881760632 + 10 +242.6537688728834 + 20 +107.8845668198259 + 10 +245.2537688728834 + 20 +107.8845668198259 + 10 +245.3951902291207 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +2D6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +108.9181454635886 + 10 +232.3037688728835 + 20 +109.0595668198259 + 10 +238.5037688728834 + 20 +109.0595668198259 + 10 +238.6451902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +2D7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +117.7009881760632 + 10 +232.3037688728835 + 20 +117.5595668198259 + 10 +238.5037688728834 + 20 +117.5595668198259 + 10 +238.6451902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +2D8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +109.1431454635886 + 10 +242.6537688728834 + 20 +109.2845668198259 + 10 +245.2537688728834 + 20 +109.2845668198259 + 10 +245.3951902291207 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +2D9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +117.4759881760632 + 10 +242.6537688728834 + 20 +117.3345668198259 + 10 +245.2537688728834 + 20 +117.3345668198259 + 10 +245.3951902291207 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +2DA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +118.3681454635886 + 10 +232.3037688728835 + 20 +118.5095668198259 + 10 +238.5037688728834 + 20 +118.5095668198259 + 10 +238.6451902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +2DB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +127.1509881760632 + 10 +232.3037688728835 + 20 +127.0095668198259 + 10 +238.5037688728834 + 20 +127.0095668198259 + 10 +238.6451902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +2DC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +118.5931454635886 + 10 +242.6537688728834 + 20 +118.7345668198259 + 10 +245.2537688728834 + 20 +118.7345668198259 + 10 +245.3951902291207 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +2DD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +126.9259881760632 + 10 +242.6537688728834 + 20 +126.7845668198259 + 10 +245.2537688728834 + 20 +126.7845668198259 + 10 +245.3951902291207 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +2DE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +127.8181454635886 + 10 +232.3037688728835 + 20 +127.9595668198259 + 10 +238.5037688728834 + 20 +127.9595668198259 + 10 +238.6451902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +2DF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +136.6009881760632 + 10 +232.3037688728835 + 20 +136.4595668198259 + 10 +238.5037688728834 + 20 +136.4595668198259 + 10 +238.6451902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +2E0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +128.0431454635887 + 10 +242.6537688728834 + 20 +128.184566819826 + 10 +245.2537688728834 + 20 +128.1845668198259 + 10 +245.3951902291207 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +2E1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +136.3759881760633 + 10 +242.6537688728834 + 20 +136.2345668198259 + 10 +245.2537688728834 + 20 +136.2345668198259 + 10 +245.3951902291207 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +2E2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +137.2681454635886 + 10 +232.3037688728835 + 20 +137.409566819826 + 10 +238.5037688728834 + 20 +137.409566819826 + 10 +238.6451902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +2E3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +146.0509881760633 + 10 +232.3037688728835 + 20 +145.909566819826 + 10 +238.5037688728834 + 20 +145.909566819826 + 10 +238.6451902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +2E4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +137.4931454635887 + 10 +242.6537688728834 + 20 +137.6345668198259 + 10 +245.2537688728834 + 20 +137.6345668198259 + 10 +245.3951902291207 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +2E5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +145.8259881760633 + 10 +242.6537688728834 + 20 +145.684566819826 + 10 +245.2537688728834 + 20 +145.684566819826 + 10 +245.3951902291207 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +2E6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +146.7181454635887 + 10 +232.3037688728835 + 20 +146.859566819826 + 10 +238.5037688728834 + 20 +146.859566819826 + 10 +238.6451902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +2E7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +155.5009881760633 + 10 +232.3037688728835 + 20 +155.359566819826 + 10 +238.5037688728834 + 20 +155.359566819826 + 10 +238.6451902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +2E8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +146.9431454635887 + 10 +242.6537688728834 + 20 +147.084566819826 + 10 +245.2537688728834 + 20 +147.084566819826 + 10 +245.3951902291207 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +2E9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +155.2759881760633 + 10 +242.6537688728834 + 20 +155.134566819826 + 10 +245.2537688728834 + 20 +155.134566819826 + 10 +245.3951902291207 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +2EA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +156.1681454635887 + 10 +232.3037688728835 + 20 +156.309566819826 + 10 +238.5037688728834 + 20 +156.309566819826 + 10 +238.6451902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +2EB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +164.9509881760633 + 10 +232.3037688728835 + 20 +164.809566819826 + 10 +238.5037688728834 + 20 +164.809566819826 + 10 +238.6451902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +2EC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +156.3931454635887 + 10 +242.6537688728834 + 20 +156.534566819826 + 10 +245.2537688728834 + 20 +156.534566819826 + 10 +245.3951902291207 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +2ED +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +164.7259881760633 + 10 +242.6537688728834 + 20 +164.584566819826 + 10 +245.2537688728834 + 20 +164.584566819826 + 10 +245.3951902291207 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +2EE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +165.6181454635887 + 10 +232.3037688728835 + 20 +165.759566819826 + 10 +238.5037688728834 + 20 +165.759566819826 + 10 +238.6451902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +2EF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +174.4009881760633 + 10 +232.3037688728835 + 20 +174.259566819826 + 10 +238.5037688728834 + 20 +174.259566819826 + 10 +238.6451902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +2F0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +165.8431454635887 + 10 +242.6537688728834 + 20 +165.984566819826 + 10 +245.2537688728834 + 20 +165.984566819826 + 10 +245.3951902291207 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +2F1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +174.1759881760633 + 10 +242.6537688728834 + 20 +174.034566819826 + 10 +245.2537688728834 + 20 +174.034566819826 + 10 +245.3951902291207 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +2F2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +175.0681454635887 + 10 +232.3037688728835 + 20 +175.209566819826 + 10 +238.5037688728834 + 20 +175.209566819826 + 10 +238.6451902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +2F3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +183.8509881760634 + 10 +232.3037688728835 + 20 +183.709566819826 + 10 +238.5037688728834 + 20 +183.709566819826 + 10 +238.6451902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +2F4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +175.2931454635887 + 10 +242.6537688728834 + 20 +175.434566819826 + 10 +245.2537688728834 + 20 +175.434566819826 + 10 +245.3951902291207 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +2F5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +183.6259881760633 + 10 +242.6537688728834 + 20 +183.484566819826 + 10 +245.2537688728834 + 20 +183.484566819826 + 10 +245.3951902291207 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +2F6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +184.5181454635887 + 10 +232.3037688728835 + 20 +184.659566819826 + 10 +238.5037688728834 + 20 +184.659566819826 + 10 +238.6451902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +2F7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +232.1623475166461 + 20 +193.3009881760634 + 10 +232.3037688728835 + 20 +193.159566819826 + 10 +238.5037688728834 + 20 +193.159566819826 + 10 +238.6451902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +2F8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +184.7431454635887 + 10 +242.6537688728834 + 20 +184.884566819826 + 10 +245.2537688728834 + 20 +184.884566819826 + 10 +245.3951902291207 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +2F9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +242.512347516646 + 20 +193.0759881760634 + 10 +242.6537688728834 + 20 +192.934566819826 + 10 +245.2537688728834 + 20 +192.934566819826 + 10 +245.3951902291207 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +2FA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +90.01814546358861 + 10 +247.8787688728834 + 20 +90.15956681982592 + 10 +254.0787688728834 + 20 +90.15956681982592 + 10 +254.2201902291207 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +2FB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +98.80098817606322 + 10 +247.8787688728834 + 20 +98.65956681982591 + 10 +254.0787688728834 + 20 +98.65956681982591 + 10 +254.2201902291207 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +2FC +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +90.2431454635886 + 10 +258.2287688728834 + 20 +90.38456681982593 + 10 +260.8287688728834 + 20 +90.38456681982591 + 10 +260.9701902291206 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +2FD +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +98.57598817606323 + 10 +258.2287688728834 + 20 +98.43456681982591 + 10 +260.8287688728834 + 20 +98.43456681982592 + 10 +260.9701902291206 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +2FE +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +99.46814546358863 + 10 +247.8787688728834 + 20 +99.60956681982594 + 10 +254.0787688728834 + 20 +99.60956681982594 + 10 +254.2201902291207 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +2FF +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +108.2509881760632 + 10 +247.8787688728834 + 20 +108.1095668198259 + 10 +254.0787688728834 + 20 +108.1095668198259 + 10 +254.2201902291207 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +300 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +99.69314546358862 + 10 +258.2287688728834 + 20 +99.83456681982595 + 10 +260.8287688728834 + 20 +99.83456681982593 + 10 +260.9701902291206 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +301 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +108.0259881760632 + 10 +258.2287688728834 + 20 +107.8845668198259 + 10 +260.8287688728834 + 20 +107.8845668198259 + 10 +260.9701902291206 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +302 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +108.9181454635886 + 10 +247.8787688728834 + 20 +109.0595668198259 + 10 +254.0787688728834 + 20 +109.0595668198259 + 10 +254.2201902291207 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +303 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +117.7009881760632 + 10 +247.8787688728834 + 20 +117.5595668198259 + 10 +254.0787688728834 + 20 +117.5595668198259 + 10 +254.2201902291207 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +304 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +109.1431454635886 + 10 +258.2287688728834 + 20 +109.2845668198259 + 10 +260.8287688728834 + 20 +109.2845668198259 + 10 +260.9701902291206 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +305 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +117.4759881760632 + 10 +258.2287688728834 + 20 +117.3345668198259 + 10 +260.8287688728834 + 20 +117.3345668198259 + 10 +260.9701902291206 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +306 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +118.3681454635886 + 10 +247.8787688728834 + 20 +118.5095668198259 + 10 +254.0787688728834 + 20 +118.5095668198259 + 10 +254.2201902291207 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +307 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +127.1509881760632 + 10 +247.8787688728834 + 20 +127.0095668198259 + 10 +254.0787688728834 + 20 +127.0095668198259 + 10 +254.2201902291207 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +308 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +118.5931454635886 + 10 +258.2287688728834 + 20 +118.7345668198259 + 10 +260.8287688728834 + 20 +118.7345668198259 + 10 +260.9701902291206 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +309 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +126.9259881760632 + 10 +258.2287688728834 + 20 +126.7845668198259 + 10 +260.8287688728834 + 20 +126.7845668198259 + 10 +260.9701902291206 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +30A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +127.8181454635886 + 10 +247.8787688728834 + 20 +127.9595668198259 + 10 +254.0787688728834 + 20 +127.9595668198259 + 10 +254.2201902291207 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +30B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +136.6009881760632 + 10 +247.8787688728834 + 20 +136.4595668198259 + 10 +254.0787688728834 + 20 +136.4595668198259 + 10 +254.2201902291207 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +30C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +128.0431454635887 + 10 +258.2287688728834 + 20 +128.184566819826 + 10 +260.8287688728834 + 20 +128.1845668198259 + 10 +260.9701902291206 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +30D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +136.3759881760633 + 10 +258.2287688728834 + 20 +136.2345668198259 + 10 +260.8287688728834 + 20 +136.2345668198259 + 10 +260.9701902291206 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +30E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +137.2681454635886 + 10 +247.8787688728834 + 20 +137.409566819826 + 10 +254.0787688728834 + 20 +137.409566819826 + 10 +254.2201902291207 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +30F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +146.0509881760633 + 10 +247.8787688728834 + 20 +145.909566819826 + 10 +254.0787688728834 + 20 +145.909566819826 + 10 +254.2201902291207 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +310 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +137.4931454635887 + 10 +258.2287688728834 + 20 +137.6345668198259 + 10 +260.8287688728834 + 20 +137.6345668198259 + 10 +260.9701902291206 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +311 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +145.8259881760633 + 10 +258.2287688728834 + 20 +145.684566819826 + 10 +260.8287688728834 + 20 +145.684566819826 + 10 +260.9701902291206 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +312 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +146.7181454635887 + 10 +247.8787688728834 + 20 +146.859566819826 + 10 +254.0787688728834 + 20 +146.859566819826 + 10 +254.2201902291207 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +313 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +155.5009881760633 + 10 +247.8787688728834 + 20 +155.359566819826 + 10 +254.0787688728834 + 20 +155.359566819826 + 10 +254.2201902291207 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +314 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +146.9431454635887 + 10 +258.2287688728834 + 20 +147.084566819826 + 10 +260.8287688728834 + 20 +147.084566819826 + 10 +260.9701902291206 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +315 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +155.2759881760633 + 10 +258.2287688728834 + 20 +155.134566819826 + 10 +260.8287688728834 + 20 +155.134566819826 + 10 +260.9701902291206 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +316 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +156.1681454635887 + 10 +247.8787688728834 + 20 +156.309566819826 + 10 +254.0787688728834 + 20 +156.309566819826 + 10 +254.2201902291207 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +317 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +164.9509881760633 + 10 +247.8787688728834 + 20 +164.809566819826 + 10 +254.0787688728834 + 20 +164.809566819826 + 10 +254.2201902291207 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +318 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +156.3931454635887 + 10 +258.2287688728834 + 20 +156.534566819826 + 10 +260.8287688728834 + 20 +156.534566819826 + 10 +260.9701902291206 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +319 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +164.7259881760633 + 10 +258.2287688728834 + 20 +164.584566819826 + 10 +260.8287688728834 + 20 +164.584566819826 + 10 +260.9701902291206 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +31A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +165.6181454635887 + 10 +247.8787688728834 + 20 +165.759566819826 + 10 +254.0787688728834 + 20 +165.759566819826 + 10 +254.2201902291207 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +31B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +174.4009881760633 + 10 +247.8787688728834 + 20 +174.259566819826 + 10 +254.0787688728834 + 20 +174.259566819826 + 10 +254.2201902291207 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +31C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +165.8431454635887 + 10 +258.2287688728834 + 20 +165.984566819826 + 10 +260.8287688728834 + 20 +165.984566819826 + 10 +260.9701902291206 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +31D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +174.1759881760633 + 10 +258.2287688728834 + 20 +174.034566819826 + 10 +260.8287688728834 + 20 +174.034566819826 + 10 +260.9701902291206 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +31E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +175.0681454635887 + 10 +247.8787688728834 + 20 +175.209566819826 + 10 +254.0787688728834 + 20 +175.209566819826 + 10 +254.2201902291207 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +31F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +183.8509881760634 + 10 +247.8787688728834 + 20 +183.709566819826 + 10 +254.0787688728834 + 20 +183.709566819826 + 10 +254.2201902291207 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +320 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +175.2931454635887 + 10 +258.2287688728834 + 20 +175.434566819826 + 10 +260.8287688728834 + 20 +175.434566819826 + 10 +260.9701902291206 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +321 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +183.6259881760633 + 10 +258.2287688728834 + 20 +183.484566819826 + 10 +260.8287688728834 + 20 +183.484566819826 + 10 +260.9701902291206 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +322 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +184.5181454635887 + 10 +247.8787688728834 + 20 +184.659566819826 + 10 +254.0787688728834 + 20 +184.659566819826 + 10 +254.2201902291207 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +323 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +247.7373475166461 + 20 +193.3009881760634 + 10 +247.8787688728834 + 20 +193.159566819826 + 10 +254.0787688728834 + 20 +193.159566819826 + 10 +254.2201902291207 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +324 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +184.7431454635887 + 10 +258.2287688728834 + 20 +184.884566819826 + 10 +260.8287688728834 + 20 +184.884566819826 + 10 +260.9701902291206 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +325 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +258.087347516646 + 20 +193.0759881760634 + 10 +258.2287688728834 + 20 +192.934566819826 + 10 +260.8287688728834 + 20 +192.934566819826 + 10 +260.9701902291206 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +326 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +90.01814546358861 + 10 +263.4537688728834 + 20 +90.15956681982592 + 10 +269.6537688728834 + 20 +90.15956681982592 + 10 +269.7951902291208 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +327 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +98.80098817606322 + 10 +263.4537688728834 + 20 +98.65956681982591 + 10 +269.6537688728834 + 20 +98.65956681982591 + 10 +269.7951902291208 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +328 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +90.2431454635886 + 10 +273.8037688728833 + 20 +90.38456681982593 + 10 +276.4037688728834 + 20 +90.38456681982591 + 10 +276.5451902291206 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +329 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +98.57598817606323 + 10 +273.8037688728833 + 20 +98.43456681982591 + 10 +276.4037688728834 + 20 +98.43456681982592 + 10 +276.5451902291206 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +32A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +99.46814546358863 + 10 +263.4537688728834 + 20 +99.60956681982594 + 10 +269.6537688728834 + 20 +99.60956681982594 + 10 +269.7951902291208 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +32B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +108.2509881760632 + 10 +263.4537688728834 + 20 +108.1095668198259 + 10 +269.6537688728834 + 20 +108.1095668198259 + 10 +269.7951902291208 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +32C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +99.69314546358862 + 10 +273.8037688728833 + 20 +99.83456681982595 + 10 +276.4037688728834 + 20 +99.83456681982593 + 10 +276.5451902291206 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +32D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +108.0259881760632 + 10 +273.8037688728833 + 20 +107.8845668198259 + 10 +276.4037688728834 + 20 +107.8845668198259 + 10 +276.5451902291206 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +32E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +108.9181454635886 + 10 +263.4537688728834 + 20 +109.0595668198259 + 10 +269.6537688728834 + 20 +109.0595668198259 + 10 +269.7951902291208 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +32F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +117.7009881760632 + 10 +263.4537688728834 + 20 +117.5595668198259 + 10 +269.6537688728834 + 20 +117.5595668198259 + 10 +269.7951902291208 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +330 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +109.1431454635886 + 10 +273.8037688728833 + 20 +109.2845668198259 + 10 +276.4037688728834 + 20 +109.2845668198259 + 10 +276.5451902291206 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +331 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +117.4759881760632 + 10 +273.8037688728833 + 20 +117.3345668198259 + 10 +276.4037688728834 + 20 +117.3345668198259 + 10 +276.5451902291206 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +332 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +118.3681454635886 + 10 +263.4537688728834 + 20 +118.5095668198259 + 10 +269.6537688728834 + 20 +118.5095668198259 + 10 +269.7951902291208 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +333 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +127.1509881760632 + 10 +263.4537688728834 + 20 +127.0095668198259 + 10 +269.6537688728834 + 20 +127.0095668198259 + 10 +269.7951902291208 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +334 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +118.5931454635886 + 10 +273.8037688728833 + 20 +118.7345668198259 + 10 +276.4037688728834 + 20 +118.7345668198259 + 10 +276.5451902291206 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +335 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +126.9259881760632 + 10 +273.8037688728833 + 20 +126.7845668198259 + 10 +276.4037688728834 + 20 +126.7845668198259 + 10 +276.5451902291206 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +336 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +127.8181454635886 + 10 +263.4537688728834 + 20 +127.9595668198259 + 10 +269.6537688728834 + 20 +127.9595668198259 + 10 +269.7951902291208 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +337 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +136.6009881760632 + 10 +263.4537688728834 + 20 +136.4595668198259 + 10 +269.6537688728834 + 20 +136.4595668198259 + 10 +269.7951902291208 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +338 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +128.0431454635887 + 10 +273.8037688728833 + 20 +128.184566819826 + 10 +276.4037688728834 + 20 +128.1845668198259 + 10 +276.5451902291206 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +339 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +136.3759881760633 + 10 +273.8037688728833 + 20 +136.2345668198259 + 10 +276.4037688728834 + 20 +136.2345668198259 + 10 +276.5451902291206 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +33A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +137.2681454635886 + 10 +263.4537688728834 + 20 +137.409566819826 + 10 +269.6537688728834 + 20 +137.409566819826 + 10 +269.7951902291208 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +33B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +146.0509881760633 + 10 +263.4537688728834 + 20 +145.909566819826 + 10 +269.6537688728834 + 20 +145.909566819826 + 10 +269.7951902291208 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +33C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +137.4931454635887 + 10 +273.8037688728833 + 20 +137.6345668198259 + 10 +276.4037688728834 + 20 +137.6345668198259 + 10 +276.5451902291206 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +33D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +145.8259881760633 + 10 +273.8037688728833 + 20 +145.684566819826 + 10 +276.4037688728834 + 20 +145.684566819826 + 10 +276.5451902291206 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +33E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +146.7181454635887 + 10 +263.4537688728834 + 20 +146.859566819826 + 10 +269.6537688728834 + 20 +146.859566819826 + 10 +269.7951902291208 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +33F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +155.5009881760633 + 10 +263.4537688728834 + 20 +155.359566819826 + 10 +269.6537688728834 + 20 +155.359566819826 + 10 +269.7951902291208 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +340 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +146.9431454635887 + 10 +273.8037688728833 + 20 +147.084566819826 + 10 +276.4037688728834 + 20 +147.084566819826 + 10 +276.5451902291206 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +341 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +155.2759881760633 + 10 +273.8037688728833 + 20 +155.134566819826 + 10 +276.4037688728834 + 20 +155.134566819826 + 10 +276.5451902291206 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +342 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +156.1681454635887 + 10 +263.4537688728834 + 20 +156.309566819826 + 10 +269.6537688728834 + 20 +156.309566819826 + 10 +269.7951902291208 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +343 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +164.9509881760633 + 10 +263.4537688728834 + 20 +164.809566819826 + 10 +269.6537688728834 + 20 +164.809566819826 + 10 +269.7951902291208 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +344 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +156.3931454635887 + 10 +273.8037688728833 + 20 +156.534566819826 + 10 +276.4037688728834 + 20 +156.534566819826 + 10 +276.5451902291206 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +345 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +164.7259881760633 + 10 +273.8037688728833 + 20 +164.584566819826 + 10 +276.4037688728834 + 20 +164.584566819826 + 10 +276.5451902291206 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +346 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +165.6181454635887 + 10 +263.4537688728834 + 20 +165.759566819826 + 10 +269.6537688728834 + 20 +165.759566819826 + 10 +269.7951902291208 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +347 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +174.4009881760633 + 10 +263.4537688728834 + 20 +174.259566819826 + 10 +269.6537688728834 + 20 +174.259566819826 + 10 +269.7951902291208 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +348 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +165.8431454635887 + 10 +273.8037688728833 + 20 +165.984566819826 + 10 +276.4037688728834 + 20 +165.984566819826 + 10 +276.5451902291206 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +349 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +174.1759881760633 + 10 +273.8037688728833 + 20 +174.034566819826 + 10 +276.4037688728834 + 20 +174.034566819826 + 10 +276.5451902291206 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +34A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +175.0681454635887 + 10 +263.4537688728834 + 20 +175.209566819826 + 10 +269.6537688728834 + 20 +175.209566819826 + 10 +269.7951902291208 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +34B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +183.8509881760634 + 10 +263.4537688728834 + 20 +183.709566819826 + 10 +269.6537688728834 + 20 +183.709566819826 + 10 +269.7951902291208 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +34C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +175.2931454635887 + 10 +273.8037688728833 + 20 +175.434566819826 + 10 +276.4037688728834 + 20 +175.434566819826 + 10 +276.5451902291206 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +34D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +183.6259881760633 + 10 +273.8037688728833 + 20 +183.484566819826 + 10 +276.4037688728834 + 20 +183.484566819826 + 10 +276.5451902291206 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +34E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +184.5181454635887 + 10 +263.4537688728834 + 20 +184.659566819826 + 10 +269.6537688728834 + 20 +184.659566819826 + 10 +269.7951902291208 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +34F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +263.3123475166461 + 20 +193.3009881760634 + 10 +263.4537688728834 + 20 +193.159566819826 + 10 +269.6537688728834 + 20 +193.159566819826 + 10 +269.7951902291208 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +350 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +184.7431454635887 + 10 +273.8037688728833 + 20 +184.884566819826 + 10 +276.4037688728834 + 20 +184.884566819826 + 10 +276.5451902291206 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +351 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +273.662347516646 + 20 +193.0759881760634 + 10 +273.8037688728833 + 20 +192.934566819826 + 10 +276.4037688728834 + 20 +192.934566819826 + 10 +276.5451902291206 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +352 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +90.01814546358861 + 10 +279.0287688728835 + 20 +90.15956681982592 + 10 +285.2287688728834 + 20 +90.15956681982592 + 10 +285.3701902291207 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +353 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +98.80098817606322 + 10 +279.0287688728835 + 20 +98.65956681982591 + 10 +285.2287688728834 + 20 +98.65956681982591 + 10 +285.3701902291207 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +354 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +90.2431454635886 + 10 +289.3787688728833 + 20 +90.38456681982593 + 10 +291.9787688728833 + 20 +90.38456681982591 + 10 +292.1201902291206 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +355 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +98.57598817606323 + 10 +289.3787688728833 + 20 +98.43456681982591 + 10 +291.9787688728833 + 20 +98.43456681982592 + 10 +292.1201902291206 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +356 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +99.46814546358863 + 10 +279.0287688728835 + 20 +99.60956681982594 + 10 +285.2287688728834 + 20 +99.60956681982594 + 10 +285.3701902291207 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +357 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +108.2509881760632 + 10 +279.0287688728835 + 20 +108.1095668198259 + 10 +285.2287688728834 + 20 +108.1095668198259 + 10 +285.3701902291207 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +358 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +99.69314546358862 + 10 +289.3787688728833 + 20 +99.83456681982595 + 10 +291.9787688728833 + 20 +99.83456681982593 + 10 +292.1201902291206 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +359 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +108.0259881760632 + 10 +289.3787688728833 + 20 +107.8845668198259 + 10 +291.9787688728833 + 20 +107.8845668198259 + 10 +292.1201902291206 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +35A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +108.9181454635886 + 10 +279.0287688728835 + 20 +109.0595668198259 + 10 +285.2287688728834 + 20 +109.0595668198259 + 10 +285.3701902291207 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +35B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +117.7009881760632 + 10 +279.0287688728835 + 20 +117.5595668198259 + 10 +285.2287688728834 + 20 +117.5595668198259 + 10 +285.3701902291207 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +35C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +109.1431454635886 + 10 +289.3787688728833 + 20 +109.2845668198259 + 10 +291.9787688728833 + 20 +109.2845668198259 + 10 +292.1201902291206 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +35D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +117.4759881760632 + 10 +289.3787688728833 + 20 +117.3345668198259 + 10 +291.9787688728833 + 20 +117.3345668198259 + 10 +292.1201902291206 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +35E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +118.3681454635886 + 10 +279.0287688728835 + 20 +118.5095668198259 + 10 +285.2287688728834 + 20 +118.5095668198259 + 10 +285.3701902291207 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +35F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +127.1509881760632 + 10 +279.0287688728835 + 20 +127.0095668198259 + 10 +285.2287688728834 + 20 +127.0095668198259 + 10 +285.3701902291207 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +360 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +118.5931454635886 + 10 +289.3787688728833 + 20 +118.7345668198259 + 10 +291.9787688728833 + 20 +118.7345668198259 + 10 +292.1201902291206 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +361 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +126.9259881760632 + 10 +289.3787688728833 + 20 +126.7845668198259 + 10 +291.9787688728833 + 20 +126.7845668198259 + 10 +292.1201902291206 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +362 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +127.8181454635886 + 10 +279.0287688728835 + 20 +127.9595668198259 + 10 +285.2287688728834 + 20 +127.9595668198259 + 10 +285.3701902291207 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +363 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +136.6009881760632 + 10 +279.0287688728835 + 20 +136.4595668198259 + 10 +285.2287688728834 + 20 +136.4595668198259 + 10 +285.3701902291207 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +364 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +128.0431454635887 + 10 +289.3787688728833 + 20 +128.184566819826 + 10 +291.9787688728833 + 20 +128.1845668198259 + 10 +292.1201902291206 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +365 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +136.3759881760633 + 10 +289.3787688728833 + 20 +136.2345668198259 + 10 +291.9787688728833 + 20 +136.2345668198259 + 10 +292.1201902291206 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +366 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +137.2681454635886 + 10 +279.0287688728835 + 20 +137.409566819826 + 10 +285.2287688728834 + 20 +137.409566819826 + 10 +285.3701902291207 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +367 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +146.0509881760633 + 10 +279.0287688728835 + 20 +145.909566819826 + 10 +285.2287688728834 + 20 +145.909566819826 + 10 +285.3701902291207 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +368 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +137.4931454635887 + 10 +289.3787688728833 + 20 +137.6345668198259 + 10 +291.9787688728833 + 20 +137.6345668198259 + 10 +292.1201902291206 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +369 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +145.8259881760633 + 10 +289.3787688728833 + 20 +145.684566819826 + 10 +291.9787688728833 + 20 +145.684566819826 + 10 +292.1201902291206 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +36A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +146.7181454635887 + 10 +279.0287688728835 + 20 +146.859566819826 + 10 +285.2287688728834 + 20 +146.859566819826 + 10 +285.3701902291207 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +36B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +155.5009881760633 + 10 +279.0287688728835 + 20 +155.359566819826 + 10 +285.2287688728834 + 20 +155.359566819826 + 10 +285.3701902291207 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +36C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +146.9431454635887 + 10 +289.3787688728833 + 20 +147.084566819826 + 10 +291.9787688728833 + 20 +147.084566819826 + 10 +292.1201902291206 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +36D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +155.2759881760633 + 10 +289.3787688728833 + 20 +155.134566819826 + 10 +291.9787688728833 + 20 +155.134566819826 + 10 +292.1201902291206 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +36E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +156.1681454635887 + 10 +279.0287688728835 + 20 +156.309566819826 + 10 +285.2287688728834 + 20 +156.309566819826 + 10 +285.3701902291207 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +36F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +164.9509881760633 + 10 +279.0287688728835 + 20 +164.809566819826 + 10 +285.2287688728834 + 20 +164.809566819826 + 10 +285.3701902291207 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +370 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +156.3931454635887 + 10 +289.3787688728833 + 20 +156.534566819826 + 10 +291.9787688728833 + 20 +156.534566819826 + 10 +292.1201902291206 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +371 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +164.7259881760633 + 10 +289.3787688728833 + 20 +164.584566819826 + 10 +291.9787688728833 + 20 +164.584566819826 + 10 +292.1201902291206 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +372 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +165.6181454635887 + 10 +279.0287688728835 + 20 +165.759566819826 + 10 +285.2287688728834 + 20 +165.759566819826 + 10 +285.3701902291207 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +373 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +174.4009881760633 + 10 +279.0287688728835 + 20 +174.259566819826 + 10 +285.2287688728834 + 20 +174.259566819826 + 10 +285.3701902291207 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +374 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +165.8431454635887 + 10 +289.3787688728833 + 20 +165.984566819826 + 10 +291.9787688728833 + 20 +165.984566819826 + 10 +292.1201902291206 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +375 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +174.1759881760633 + 10 +289.3787688728833 + 20 +174.034566819826 + 10 +291.9787688728833 + 20 +174.034566819826 + 10 +292.1201902291206 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +376 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +175.0681454635887 + 10 +279.0287688728835 + 20 +175.209566819826 + 10 +285.2287688728834 + 20 +175.209566819826 + 10 +285.3701902291207 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +377 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +183.8509881760634 + 10 +279.0287688728835 + 20 +183.709566819826 + 10 +285.2287688728834 + 20 +183.709566819826 + 10 +285.3701902291207 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +378 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +175.2931454635887 + 10 +289.3787688728833 + 20 +175.434566819826 + 10 +291.9787688728833 + 20 +175.434566819826 + 10 +292.1201902291206 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +379 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +183.6259881760633 + 10 +289.3787688728833 + 20 +183.484566819826 + 10 +291.9787688728833 + 20 +183.484566819826 + 10 +292.1201902291206 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +37A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +184.5181454635887 + 10 +279.0287688728835 + 20 +184.659566819826 + 10 +285.2287688728834 + 20 +184.659566819826 + 10 +285.3701902291207 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +37B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +278.8873475166461 + 20 +193.3009881760634 + 10 +279.0287688728835 + 20 +193.159566819826 + 10 +285.2287688728834 + 20 +193.159566819826 + 10 +285.3701902291207 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +37C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +184.7431454635887 + 10 +289.3787688728833 + 20 +184.884566819826 + 10 +291.9787688728833 + 20 +184.884566819826 + 10 +292.1201902291206 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +37D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +289.237347516646 + 20 +193.0759881760634 + 10 +289.3787688728833 + 20 +192.934566819826 + 10 +291.9787688728833 + 20 +192.934566819826 + 10 +292.1201902291206 + 20 +193.0759881760634 + 0 +LWPOLYLINE + 5 +37E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +90.01814546358861 + 10 +294.6037688728834 + 20 +90.15956681982592 + 10 +300.8037688728834 + 20 +90.15956681982592 + 10 +300.9451902291207 + 20 +90.01814546358859 + 0 +LWPOLYLINE + 5 +37F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +98.80098817606322 + 10 +294.6037688728834 + 20 +98.65956681982591 + 10 +300.8037688728834 + 20 +98.65956681982591 + 10 +300.9451902291207 + 20 +98.80098817606324 + 0 +LWPOLYLINE + 5 +380 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +90.2431454635886 + 10 +304.9537688728833 + 20 +90.38456681982593 + 10 +307.5537688728833 + 20 +90.38456681982591 + 10 +307.6951902291206 + 20 +90.24314546358858 + 0 +LWPOLYLINE + 5 +381 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +98.57598817606323 + 10 +304.9537688728833 + 20 +98.43456681982591 + 10 +307.5537688728833 + 20 +98.43456681982592 + 10 +307.6951902291206 + 20 +98.57598817606323 + 0 +LWPOLYLINE + 5 +382 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +99.46814546358863 + 10 +294.6037688728834 + 20 +99.60956681982594 + 10 +300.8037688728834 + 20 +99.60956681982594 + 10 +300.9451902291207 + 20 +99.46814546358861 + 0 +LWPOLYLINE + 5 +383 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +108.2509881760632 + 10 +294.6037688728834 + 20 +108.1095668198259 + 10 +300.8037688728834 + 20 +108.1095668198259 + 10 +300.9451902291207 + 20 +108.2509881760632 + 0 +LWPOLYLINE + 5 +384 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +99.69314546358862 + 10 +304.9537688728833 + 20 +99.83456681982595 + 10 +307.5537688728833 + 20 +99.83456681982593 + 10 +307.6951902291206 + 20 +99.69314546358861 + 0 +LWPOLYLINE + 5 +385 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +108.0259881760632 + 10 +304.9537688728833 + 20 +107.8845668198259 + 10 +307.5537688728833 + 20 +107.8845668198259 + 10 +307.6951902291206 + 20 +108.0259881760632 + 0 +LWPOLYLINE + 5 +386 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +108.9181454635886 + 10 +294.6037688728834 + 20 +109.0595668198259 + 10 +300.8037688728834 + 20 +109.0595668198259 + 10 +300.9451902291207 + 20 +108.9181454635886 + 0 +LWPOLYLINE + 5 +387 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +117.7009881760632 + 10 +294.6037688728834 + 20 +117.5595668198259 + 10 +300.8037688728834 + 20 +117.5595668198259 + 10 +300.9451902291207 + 20 +117.7009881760632 + 0 +LWPOLYLINE + 5 +388 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +109.1431454635886 + 10 +304.9537688728833 + 20 +109.2845668198259 + 10 +307.5537688728833 + 20 +109.2845668198259 + 10 +307.6951902291206 + 20 +109.1431454635886 + 0 +LWPOLYLINE + 5 +389 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +117.4759881760632 + 10 +304.9537688728833 + 20 +117.3345668198259 + 10 +307.5537688728833 + 20 +117.3345668198259 + 10 +307.6951902291206 + 20 +117.4759881760632 + 0 +LWPOLYLINE + 5 +38A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +118.3681454635886 + 10 +294.6037688728834 + 20 +118.5095668198259 + 10 +300.8037688728834 + 20 +118.5095668198259 + 10 +300.9451902291207 + 20 +118.3681454635886 + 0 +LWPOLYLINE + 5 +38B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +127.1509881760632 + 10 +294.6037688728834 + 20 +127.0095668198259 + 10 +300.8037688728834 + 20 +127.0095668198259 + 10 +300.9451902291207 + 20 +127.1509881760632 + 0 +LWPOLYLINE + 5 +38C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +118.5931454635886 + 10 +304.9537688728833 + 20 +118.7345668198259 + 10 +307.5537688728833 + 20 +118.7345668198259 + 10 +307.6951902291206 + 20 +118.5931454635886 + 0 +LWPOLYLINE + 5 +38D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +126.9259881760632 + 10 +304.9537688728833 + 20 +126.7845668198259 + 10 +307.5537688728833 + 20 +126.7845668198259 + 10 +307.6951902291206 + 20 +126.9259881760632 + 0 +LWPOLYLINE + 5 +38E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +127.8181454635886 + 10 +294.6037688728834 + 20 +127.9595668198259 + 10 +300.8037688728834 + 20 +127.9595668198259 + 10 +300.9451902291207 + 20 +127.8181454635886 + 0 +LWPOLYLINE + 5 +38F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +136.6009881760632 + 10 +294.6037688728834 + 20 +136.4595668198259 + 10 +300.8037688728834 + 20 +136.4595668198259 + 10 +300.9451902291207 + 20 +136.6009881760632 + 0 +LWPOLYLINE + 5 +390 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +128.0431454635887 + 10 +304.9537688728833 + 20 +128.184566819826 + 10 +307.5537688728833 + 20 +128.1845668198259 + 10 +307.6951902291206 + 20 +128.0431454635886 + 0 +LWPOLYLINE + 5 +391 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +136.3759881760633 + 10 +304.9537688728833 + 20 +136.2345668198259 + 10 +307.5537688728833 + 20 +136.2345668198259 + 10 +307.6951902291206 + 20 +136.3759881760633 + 0 +LWPOLYLINE + 5 +392 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +137.2681454635886 + 10 +294.6037688728834 + 20 +137.409566819826 + 10 +300.8037688728834 + 20 +137.409566819826 + 10 +300.9451902291207 + 20 +137.2681454635886 + 0 +LWPOLYLINE + 5 +393 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +146.0509881760633 + 10 +294.6037688728834 + 20 +145.909566819826 + 10 +300.8037688728834 + 20 +145.909566819826 + 10 +300.9451902291207 + 20 +146.0509881760633 + 0 +LWPOLYLINE + 5 +394 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +137.4931454635887 + 10 +304.9537688728833 + 20 +137.6345668198259 + 10 +307.5537688728833 + 20 +137.6345668198259 + 10 +307.6951902291206 + 20 +137.4931454635886 + 0 +LWPOLYLINE + 5 +395 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +145.8259881760633 + 10 +304.9537688728833 + 20 +145.684566819826 + 10 +307.5537688728833 + 20 +145.684566819826 + 10 +307.6951902291206 + 20 +145.8259881760633 + 0 +LWPOLYLINE + 5 +396 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +146.7181454635887 + 10 +294.6037688728834 + 20 +146.859566819826 + 10 +300.8037688728834 + 20 +146.859566819826 + 10 +300.9451902291207 + 20 +146.7181454635887 + 0 +LWPOLYLINE + 5 +397 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +155.5009881760633 + 10 +294.6037688728834 + 20 +155.359566819826 + 10 +300.8037688728834 + 20 +155.359566819826 + 10 +300.9451902291207 + 20 +155.5009881760633 + 0 +LWPOLYLINE + 5 +398 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +146.9431454635887 + 10 +304.9537688728833 + 20 +147.084566819826 + 10 +307.5537688728833 + 20 +147.084566819826 + 10 +307.6951902291206 + 20 +146.9431454635887 + 0 +LWPOLYLINE + 5 +399 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +155.2759881760633 + 10 +304.9537688728833 + 20 +155.134566819826 + 10 +307.5537688728833 + 20 +155.134566819826 + 10 +307.6951902291206 + 20 +155.2759881760633 + 0 +LWPOLYLINE + 5 +39A +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +156.1681454635887 + 10 +294.6037688728834 + 20 +156.309566819826 + 10 +300.8037688728834 + 20 +156.309566819826 + 10 +300.9451902291207 + 20 +156.1681454635887 + 0 +LWPOLYLINE + 5 +39B +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +164.9509881760633 + 10 +294.6037688728834 + 20 +164.809566819826 + 10 +300.8037688728834 + 20 +164.809566819826 + 10 +300.9451902291207 + 20 +164.9509881760633 + 0 +LWPOLYLINE + 5 +39C +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +156.3931454635887 + 10 +304.9537688728833 + 20 +156.534566819826 + 10 +307.5537688728833 + 20 +156.534566819826 + 10 +307.6951902291206 + 20 +156.3931454635887 + 0 +LWPOLYLINE + 5 +39D +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +164.7259881760633 + 10 +304.9537688728833 + 20 +164.584566819826 + 10 +307.5537688728833 + 20 +164.584566819826 + 10 +307.6951902291206 + 20 +164.7259881760633 + 0 +LWPOLYLINE + 5 +39E +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +165.6181454635887 + 10 +294.6037688728834 + 20 +165.759566819826 + 10 +300.8037688728834 + 20 +165.759566819826 + 10 +300.9451902291207 + 20 +165.6181454635887 + 0 +LWPOLYLINE + 5 +39F +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +174.4009881760633 + 10 +294.6037688728834 + 20 +174.259566819826 + 10 +300.8037688728834 + 20 +174.259566819826 + 10 +300.9451902291207 + 20 +174.4009881760633 + 0 +LWPOLYLINE + 5 +3A0 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +165.8431454635887 + 10 +304.9537688728833 + 20 +165.984566819826 + 10 +307.5537688728833 + 20 +165.984566819826 + 10 +307.6951902291206 + 20 +165.8431454635887 + 0 +LWPOLYLINE + 5 +3A1 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +174.1759881760633 + 10 +304.9537688728833 + 20 +174.034566819826 + 10 +307.5537688728833 + 20 +174.034566819826 + 10 +307.6951902291206 + 20 +174.1759881760633 + 0 +LWPOLYLINE + 5 +3A2 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +175.0681454635887 + 10 +294.6037688728834 + 20 +175.209566819826 + 10 +300.8037688728834 + 20 +175.209566819826 + 10 +300.9451902291207 + 20 +175.0681454635887 + 0 +LWPOLYLINE + 5 +3A3 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +183.8509881760634 + 10 +294.6037688728834 + 20 +183.709566819826 + 10 +300.8037688728834 + 20 +183.709566819826 + 10 +300.9451902291207 + 20 +183.8509881760634 + 0 +LWPOLYLINE + 5 +3A4 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +175.2931454635887 + 10 +304.9537688728833 + 20 +175.434566819826 + 10 +307.5537688728833 + 20 +175.434566819826 + 10 +307.6951902291206 + 20 +175.2931454635887 + 0 +LWPOLYLINE + 5 +3A5 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +183.6259881760633 + 10 +304.9537688728833 + 20 +183.484566819826 + 10 +307.5537688728833 + 20 +183.484566819826 + 10 +307.6951902291206 + 20 +183.6259881760634 + 0 +LWPOLYLINE + 5 +3A6 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +184.5181454635887 + 10 +294.6037688728834 + 20 +184.659566819826 + 10 +300.8037688728834 + 20 +184.659566819826 + 10 +300.9451902291207 + 20 +184.5181454635887 + 0 +LWPOLYLINE + 5 +3A7 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +294.4623475166461 + 20 +193.3009881760634 + 10 +294.6037688728834 + 20 +193.159566819826 + 10 +300.8037688728834 + 20 +193.159566819826 + 10 +300.9451902291207 + 20 +193.3009881760634 + 0 +LWPOLYLINE + 5 +3A8 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +184.7431454635887 + 10 +304.9537688728833 + 20 +184.884566819826 + 10 +307.5537688728833 + 20 +184.884566819826 + 10 +307.6951902291206 + 20 +184.7431454635887 + 0 +LWPOLYLINE + 5 +3A9 +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +304.812347516646 + 20 +193.0759881760634 + 10 +304.9537688728833 + 20 +192.934566819826 + 10 +307.5537688728833 + 20 +192.934566819826 + 10 +307.6951902291206 + 20 +193.0759881760634 + 0 +CIRCLE + 5 +3AA +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbCircle + 10 +147.6787688728837 + 20 +177.6595668198259 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +3AB +330 +21 +100 +AcDbEntity + 8 +E407 +370 + 30 +100 +AcDbCircle + 10 +313.6787688728838 + 20 +131.659566819823 + 30 +0.0 + 40 +0.5 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 0 +DICTIONARY + 5 +30 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +31 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +1 +350 +20 + 3 +2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +31 +102 +{ACAD_REACTORS +330 +30 +102 +} +330 +30 +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +21 + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 +2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/E407.par b/LaiPuLaser/TempMarkData/E407.par new file mode 100644 index 0000000..a558875 Binary files /dev/null and b/LaiPuLaser/TempMarkData/E407.par differ diff --git a/LaiPuLaser/TempMarkData/E407.txt b/LaiPuLaser/TempMarkData/E407.txt new file mode 100644 index 0000000..2e16680 --- /dev/null +++ b/LaiPuLaser/TempMarkData/E407.txt @@ -0,0 +1,8 @@ +1 +58.32 +-11.621 +80 +50 +600 +22 +1 diff --git a/LaiPuLaser/TempMarkData/FillRect.mak b/LaiPuLaser/TempMarkData/FillRect.mak new file mode 100644 index 0000000..40e6a3c Binary files /dev/null and b/LaiPuLaser/TempMarkData/FillRect.mak differ diff --git a/LaiPuLaser/TempMarkData/LANB.dxf b/LaiPuLaser/TempMarkData/LANB.dxf new file mode 100644 index 0000000..1d67c66 --- /dev/null +++ b/LaiPuLaser/TempMarkData/LANB.dxf @@ -0,0 +1,4688 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMAX + 10 +280.8943678808241 + 20 +178.9106987165179 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2459034.650554456 + 9 +$TDUCREATE + 40 +2459034.317221123 + 9 +$TDUPDATE + 40 +2459034.650554456 + 9 +$TDUUPDATE + 40 +2459034.317221123 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +13D + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层2 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +100 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +125 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +178.2209222506229 + 30 +0.0 + 11 +269.0073678808241 + 21 +178.2209222506229 + 31 +0.0 + 0 +LINE + 5 +126 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +177.4709222506229 + 30 +0.0 + 11 +280.8943678808241 + 21 +177.4709222506229 + 31 +0.0 + 0 +LINE + 5 +127 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +170.1610262552172 + 30 +0.0 + 11 +269.0073678808241 + 21 +170.1610262552172 + 31 +0.0 + 0 +LINE + 5 +128 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +170.9110262552172 + 30 +0.0 + 11 +280.8943678808239 + 21 +170.9110262552172 + 31 +0.0 + 0 +LINE + 5 +129 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +169.2209222506229 + 30 +0.0 + 11 +269.0073678808241 + 21 +169.2209222506229 + 31 +0.0 + 0 +LINE + 5 +12A +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +168.4709222506229 + 30 +0.0 + 11 +280.8943678808241 + 21 +168.4709222506229 + 31 +0.0 + 0 +LINE + 5 +12B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +161.1610262552172 + 30 +0.0 + 11 +269.0073678808241 + 21 +161.1610262552172 + 31 +0.0 + 0 +LINE + 5 +12C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +161.9110262552172 + 30 +0.0 + 11 +280.8943678808239 + 21 +161.9110262552172 + 31 +0.0 + 0 +LINE + 5 +12D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +160.2209222506229 + 30 +0.0 + 11 +269.0073678808241 + 21 +160.2209222506229 + 31 +0.0 + 0 +LINE + 5 +12E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +159.4709222506229 + 30 +0.0 + 11 +280.8943678808241 + 21 +159.4709222506229 + 31 +0.0 + 0 +LINE + 5 +12F +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +152.1610262552173 + 30 +0.0 + 11 +269.0073678808241 + 21 +152.1610262552173 + 31 +0.0 + 0 +LINE + 5 +130 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +152.9110262552173 + 30 +0.0 + 11 +280.8943678808239 + 21 +152.9110262552173 + 31 +0.0 + 0 +LINE + 5 +131 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +151.220922250623 + 30 +0.0 + 11 +269.0073678808241 + 21 +151.220922250623 + 31 +0.0 + 0 +LINE + 5 +132 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +150.470922250623 + 30 +0.0 + 11 +280.8943678808241 + 21 +150.470922250623 + 31 +0.0 + 0 +LINE + 5 +133 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +143.1610262552173 + 30 +0.0 + 11 +269.0073678808241 + 21 +143.1610262552173 + 31 +0.0 + 0 +LINE + 5 +134 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +143.9110262552173 + 30 +0.0 + 11 +280.8943678808239 + 21 +143.9110262552173 + 31 +0.0 + 0 +LINE + 5 +135 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +142.220922250623 + 30 +0.0 + 11 +269.0073678808241 + 21 +142.220922250623 + 31 +0.0 + 0 +LINE + 5 +136 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +141.470922250623 + 30 +0.0 + 11 +280.8943678808241 + 21 +141.470922250623 + 31 +0.0 + 0 +LINE + 5 +137 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +264.6513678808241 + 20 +134.1610262552173 + 30 +0.0 + 11 +269.0073678808241 + 21 +134.1610262552173 + 31 +0.0 + 0 +LINE + 5 +138 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +274.184367880824 + 20 +134.9110262552173 + 30 +0.0 + 11 +280.8943678808239 + 21 +134.9110262552173 + 31 +0.0 + 0 +CIRCLE + 5 +139 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +266.8154627738953 + 20 +178.7106987165179 + 30 +0.0 + 40 +0.2 + 0 +CIRCLE + 5 +13A +330 +1F +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +266.8154627738953 + 20 +178.7106987165179 + 30 +0.0 + 40 +0.2 + 0 +CIRCLE + 5 +13B +330 +1F +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +266.8267795725572 + 20 +151.7092514284399 + 30 +0.0 + 40 +0.2 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/LANB.txt b/LaiPuLaser/TempMarkData/LANB.txt new file mode 100644 index 0000000..efc7162 --- /dev/null +++ b/LaiPuLaser/TempMarkData/LANB.txt @@ -0,0 +1,8 @@ +1 +53.8204 +4.87917 +80 +50 +600 +35 +1 diff --git a/LaiPuLaser/TempMarkData/MarkFile.are b/LaiPuLaser/TempMarkData/MarkFile.are new file mode 100644 index 0000000..984be6e Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile.are differ diff --git a/LaiPuLaser/TempMarkData/MarkFile.mak b/LaiPuLaser/TempMarkData/MarkFile.mak new file mode 100644 index 0000000..7b7a16a Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile.mak differ diff --git a/LaiPuLaser/TempMarkData/MarkFile.par b/LaiPuLaser/TempMarkData/MarkFile.par new file mode 100644 index 0000000..3df8efc Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile.par differ diff --git a/LaiPuLaser/TempMarkData/MarkFile2.are b/LaiPuLaser/TempMarkData/MarkFile2.are new file mode 100644 index 0000000..bc36aca Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile2.are differ diff --git a/LaiPuLaser/TempMarkData/MarkFile2.mak b/LaiPuLaser/TempMarkData/MarkFile2.mak new file mode 100644 index 0000000..5503946 Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile2.mak differ diff --git a/LaiPuLaser/TempMarkData/MarkFile2.par b/LaiPuLaser/TempMarkData/MarkFile2.par new file mode 100644 index 0000000..3efd3cc Binary files /dev/null and b/LaiPuLaser/TempMarkData/MarkFile2.par differ diff --git a/LaiPuLaser/TempMarkData/TempProductInfo.inf b/LaiPuLaser/TempMarkData/TempProductInfo.inf new file mode 100644 index 0000000..9db0245 Binary files /dev/null and b/LaiPuLaser/TempMarkData/TempProductInfo.inf differ diff --git a/LaiPuLaser/TempMarkData/TempSelObjIdxArry.txt b/LaiPuLaser/TempMarkData/TempSelObjIdxArry.txt new file mode 100644 index 0000000..8669492 Binary files /dev/null and b/LaiPuLaser/TempMarkData/TempSelObjIdxArry.txt differ diff --git a/LaiPuLaser/TempMarkData/e114-3D.are b/LaiPuLaser/TempMarkData/e114-3D.are new file mode 100644 index 0000000..c14e856 Binary files /dev/null and b/LaiPuLaser/TempMarkData/e114-3D.are differ diff --git a/LaiPuLaser/TempMarkData/e114-3D.dxf b/LaiPuLaser/TempMarkData/e114-3D.dxf new file mode 100644 index 0000000..886043f --- /dev/null +++ b/LaiPuLaser/TempMarkData/e114-3D.dxf @@ -0,0 +1,17266 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +fottrem + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +0.0 + 20 +-0.0000000000000401 + 30 +0.0 + 9 +$EXTMAX + 10 +478.3502169572008 + 20 +218.2767969683805 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$LTSCALE + 40 +15.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.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 +10.0 + 9 +$CHAMFERB + 40 +10.0 + 9 +$CHAMFERC + 40 +20.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2458975.610965753 + 9 +$TDUCREATE + 40 +2458975.277632419 + 9 +$TDUPDATE + 40 +2458975.610965753 + 9 +$TDUUPDATE + 40 +2458975.277632419 + 9 +$TDINDWG + 40 +0.0076372685 + 9 +$TDUSRTIMER + 40 +0.0076112037 + 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 +4FC + 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 + 2 + 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 + 16 + 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 +-20.0 + 20 +-7.5 + 9 +$PLIMMAX + 10 +277.0 + 20 +202.5 + 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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{707AFEF9-EF83-425C-B180-281970873DC9} + 9 +$VERSIONGUID + 2 +{C3566288-392E-4DE9-A545-498C63227FA5} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 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 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +WIPEOUTVARIABLES + 2 +AcDbWipeoutVariables + 3 +WipeOut|AutoCAD Express Tool|expresstools@autodesk.com + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 71 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 8 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +VPORT + 5 +AD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +269.5628116950732 + 22 +175.2385563380282 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +351.391480164915 + 41 +1.534352818251186 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +LAYER + 5 +E5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + 220 + 6 +Continuous +370 + -3 +390 +F +347 +E6 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +11 + 0 +DIMSTYLE +105 +9C +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +73 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +76 +330 +73 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9A +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +9B +330 +23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +304 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +305 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +306 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +307 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LWPOLYLINE + 5 +308 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +302.6034337182037 + 20 +158.8327142419608 + 10 +302.8135969553522 + 20 +159.0467969683805 + 10 +302.8135969553522 + 20 +161.4467969683805 + 10 +302.6114605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +309 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +319.7252169572008 + 20 +158.8502177864661 + 10 +319.4985969553521 + 20 +159.0467969683805 + 10 +319.4985969553521 + 20 +161.4467969683805 + 10 +319.7095603597165 + 20 +161.6600912299512 + 0 +CIRCLE + 5 +30A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +317.4560969553522 + 20 +209.7467969683805 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +30B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +317.4560969553522 + 20 +110.7467969683805 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +30C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbCircle + 10 +476.0810969553522 + 20 +110.7467969683805 + 30 +0.0 + 40 +0.25 + 0 +LINE + 5 +30D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +30E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +30F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +310 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +311 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +312 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +313 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +314 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +315 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +316 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +317 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +318 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +319 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +31A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +31B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +31C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +31D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +31E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +31F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +320 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +321 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +322 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +323 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +324 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +325 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +326 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +327 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +328 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +329 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +32A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +32B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +32C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +32D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +218.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +218.2767969683805 + 31 +0.0 + 0 +LINE + 5 +32E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +218.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +218.2517969683805 + 31 +0.0 + 0 +LINE + 5 +32F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +210.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +210.2167969683805 + 31 +0.0 + 0 +LINE + 5 +330 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +210.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +210.2417969683805 + 31 +0.0 + 0 +LINE + 5 +331 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +332 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +333 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +334 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +335 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +336 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +337 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +338 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +339 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +33A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +33B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +33C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +33D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +33E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +33F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +340 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +341 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +342 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +343 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +344 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +345 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +346 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +347 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +348 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +349 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +34A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +34B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +34C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +34D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +34E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +34F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +350 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +351 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +352 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +353 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +354 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +355 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +209.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +209.2767969683805 + 31 +0.0 + 0 +LINE + 5 +356 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +209.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +209.2517969683805 + 31 +0.0 + 0 +LINE + 5 +357 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +201.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +201.2167969683805 + 31 +0.0 + 0 +LINE + 5 +358 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +201.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +201.2417969683805 + 31 +0.0 + 0 +LINE + 5 +359 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +35A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +35B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +35C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +35D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +35E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +35F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +360 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +361 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +362 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +363 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +364 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +365 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +366 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +367 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +368 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +369 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +36A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +36B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +36C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +36D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +36E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +36F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +370 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +371 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +372 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +373 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +374 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +375 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +376 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +377 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +378 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +379 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +37A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +37B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +37C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +37D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +200.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +200.2767969683805 + 31 +0.0 + 0 +LINE + 5 +37E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +200.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +200.2517969683805 + 31 +0.0 + 0 +LINE + 5 +37F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +192.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +192.2167969683805 + 31 +0.0 + 0 +LINE + 5 +380 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +192.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +192.2417969683805 + 31 +0.0 + 0 +LINE + 5 +381 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +382 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +383 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +384 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +385 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +386 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +387 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +388 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +389 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +38A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +38B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +38C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +38D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +38E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +38F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +390 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +391 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +392 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +393 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +394 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +395 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +396 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +397 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +398 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +399 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +39A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +39B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +39C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +39D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +39E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +39F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +191.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +191.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +191.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +191.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +183.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +183.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +183.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +183.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +182.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +182.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +182.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +182.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +174.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +174.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +174.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +174.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +173.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +173.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +173.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +173.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +165.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +165.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +165.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +165.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +400 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +401 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +402 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +403 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +404 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +405 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +406 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +407 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +408 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +409 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +40A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +40B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +40C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +40D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +40E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +40F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +410 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +411 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +412 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +413 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +414 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +415 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +416 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +417 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +418 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +419 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +41A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +41B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +41C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +41D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +164.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +164.2767969683805 + 31 +0.0 + 0 +LINE + 5 +41E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +164.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +164.2517969683805 + 31 +0.0 + 0 +LINE + 5 +41F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +156.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +156.2167969683805 + 31 +0.0 + 0 +LINE + 5 +420 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +156.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +156.2417969683805 + 31 +0.0 + 0 +LINE + 5 +421 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +422 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +423 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +424 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +425 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +426 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +427 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +428 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +429 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +42A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +42B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +42C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +42D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +42E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +42F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +430 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +431 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +432 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +433 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +434 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +435 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +436 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +437 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +438 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +439 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +43A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +43B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +43C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +43D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +43E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +43F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +440 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +441 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +442 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +443 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +444 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +445 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +155.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +155.2767969683805 + 31 +0.0 + 0 +LINE + 5 +446 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +155.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +155.2517969683805 + 31 +0.0 + 0 +LINE + 5 +447 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +147.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +147.2167969683805 + 31 +0.0 + 0 +LINE + 5 +448 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +147.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +147.2417969683805 + 31 +0.0 + 0 +LINE + 5 +449 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +44A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +44B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +44C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +44D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +44E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +44F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +450 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +451 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +452 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +453 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +454 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +455 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +456 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +457 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +458 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +459 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +45A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +45B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +45C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +45D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +45E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +45F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +460 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +461 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +462 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +463 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +464 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +465 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +466 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +467 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +468 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +469 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +46A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +46B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +46C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +46D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +146.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +146.2767969683805 + 31 +0.0 + 0 +LINE + 5 +46E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +146.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +146.2517969683805 + 31 +0.0 + 0 +LINE + 5 +46F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +138.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +138.2167969683805 + 31 +0.0 + 0 +LINE + 5 +470 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +138.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +138.2417969683805 + 31 +0.0 + 0 +LINE + 5 +471 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +472 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +473 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +474 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +475 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +476 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +477 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +478 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +479 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +47A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +47B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +47C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +47D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +47E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +47F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +480 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +481 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +482 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +483 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +484 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +485 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +486 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +487 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +488 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +489 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +48A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +48B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +48C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +48D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +48E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +48F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +490 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +491 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +492 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +493 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +494 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +495 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +137.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +137.2767969683805 + 31 +0.0 + 0 +LINE + 5 +496 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +137.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +137.2517969683805 + 31 +0.0 + 0 +LINE + 5 +497 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +129.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +129.2167969683805 + 31 +0.0 + 0 +LINE + 5 +498 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +129.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +129.2417969683805 + 31 +0.0 + 0 +LINE + 5 +499 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +49A +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +49B +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +49C +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +49D +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +49E +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +49F +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4A9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +128.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +128.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +128.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +128.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +120.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +120.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +120.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +120.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +311.3410969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +306.4585969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +302.8285969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +319.6460969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +311.3410969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +328.9660969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +324.0835969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +320.4535969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +337.2710969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +328.9660969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +346.5910969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +341.7085969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +338.0785969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +354.8960969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +346.5910969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +364.2160969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +359.3335969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +355.7035969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +372.5210969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +364.2160969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +381.8410969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +376.9585969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +373.3285969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +390.1460969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +381.8410969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +399.4660969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +394.5835969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +390.9535969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +407.7710969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +399.4660969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +417.0910969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +412.2085969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +408.5785969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +425.3960969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +417.0910969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +434.7160969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +429.8335969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +426.2035969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +443.0210969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +434.7160969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +452.3410969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +447.4585969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +443.8285969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4E4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +460.6460969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +452.3410969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LINE + 5 +4E5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +119.2767969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +119.2767969683805 + 31 +0.0 + 0 +LINE + 5 +4E6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +119.2517969683805 + 30 +0.0 + 11 +469.9660969553522 + 21 +119.2517969683805 + 31 +0.0 + 0 +LINE + 5 +4E7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +465.0835969553522 + 20 +111.2167969683805 + 30 +0.0 + 11 +461.4535969553522 + 21 +111.2167969683805 + 31 +0.0 + 0 +LINE + 5 +4E8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbLine + 10 +478.2710969553522 + 20 +111.2417969683804 + 30 +0.0 + 11 +469.9660969553522 + 21 +111.2417969683805 + 31 +0.0 + 0 +LWPOLYLINE + 5 +4E9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +320.2284337182037 + 20 +158.8327142419608 + 10 +320.4385969553522 + 20 +159.0467969683805 + 10 +320.4385969553522 + 20 +161.4467969683805 + 10 +320.2364605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4EA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +337.3502169572008 + 20 +158.8502177864661 + 10 +337.1235969553522 + 20 +159.0467969683805 + 10 +337.1235969553522 + 20 +161.4467969683805 + 10 +337.3345603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4EB +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +337.8534337182037 + 20 +158.8327142419608 + 10 +338.0635969553522 + 20 +159.0467969683805 + 10 +338.0635969553522 + 20 +161.4467969683805 + 10 +337.8614605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4EC +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +354.9752169572008 + 20 +158.8502177864661 + 10 +354.7485969553522 + 20 +159.0467969683805 + 10 +354.7485969553522 + 20 +161.4467969683805 + 10 +354.9595603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4ED +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +355.4784337182037 + 20 +158.8327142419608 + 10 +355.6885969553522 + 20 +159.0467969683805 + 10 +355.6885969553522 + 20 +161.4467969683805 + 10 +355.4864605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4EE +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +372.6002169572008 + 20 +158.8502177864661 + 10 +372.3735969553522 + 20 +159.0467969683805 + 10 +372.3735969553522 + 20 +161.4467969683805 + 10 +372.5845603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4EF +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +373.1034337182037 + 20 +158.8327142419608 + 10 +373.3135969553522 + 20 +159.0467969683805 + 10 +373.3135969553522 + 20 +161.4467969683805 + 10 +373.1114605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4F0 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +390.2252169572008 + 20 +158.8502177864661 + 10 +389.9985969553522 + 20 +159.0467969683805 + 10 +389.9985969553522 + 20 +161.4467969683805 + 10 +390.2095603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4F1 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +390.7284337182037 + 20 +158.8327142419608 + 10 +390.9385969553522 + 20 +159.0467969683805 + 10 +390.9385969553522 + 20 +161.4467969683805 + 10 +390.7364605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4F2 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +407.8502169572008 + 20 +158.8502177864661 + 10 +407.6235969553522 + 20 +159.0467969683805 + 10 +407.6235969553522 + 20 +161.4467969683805 + 10 +407.8345603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4F3 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +408.3534337182037 + 20 +158.8327142419608 + 10 +408.5635969553522 + 20 +159.0467969683805 + 10 +408.5635969553522 + 20 +161.4467969683805 + 10 +408.3614605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4F4 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +425.4752169572008 + 20 +158.8502177864661 + 10 +425.2485969553522 + 20 +159.0467969683805 + 10 +425.2485969553522 + 20 +161.4467969683805 + 10 +425.4595603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4F5 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +425.9784337182037 + 20 +158.8327142419608 + 10 +426.1885969553522 + 20 +159.0467969683805 + 10 +426.1885969553522 + 20 +161.4467969683805 + 10 +425.9864605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4F6 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +443.1002169572008 + 20 +158.8502177864661 + 10 +442.8735969553522 + 20 +159.0467969683805 + 10 +442.8735969553522 + 20 +161.4467969683805 + 10 +443.0845603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4F7 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +443.6034337182037 + 20 +158.8327142419608 + 10 +443.8135969553522 + 20 +159.0467969683805 + 10 +443.8135969553522 + 20 +161.4467969683805 + 10 +443.6114605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4F8 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +460.7252169572008 + 20 +158.8502177864661 + 10 +460.4985969553522 + 20 +159.0467969683805 + 10 +460.4985969553522 + 20 +161.4467969683805 + 10 +460.7095603597165 + 20 +161.6600912299512 + 0 +LWPOLYLINE + 5 +4F9 +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +461.2284337182037 + 20 +158.8327142419608 + 10 +461.4385969553522 + 20 +159.0467969683805 + 10 +461.4385969553522 + 20 +161.4467969683805 + 10 +461.2364605294613 + 20 +161.6684743585854 + 0 +LWPOLYLINE + 5 +4FA +330 +1F +100 +AcDbEntity + 8 +图层1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +478.3502169572008 + 20 +158.8502177864661 + 10 +478.1235969553522 + 20 +159.0467969683805 + 10 +478.1235969553522 + 20 +161.4467969683805 + 10 +478.3345603597165 + 20 +161.6600912299512 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +6C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +6B + 3 +ACAD_MLEADERSTYLE +350 +DE + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +B7 + 3 +ACAD_TABLESTYLE +350 +92 + 3 +ACAD_WIPEOUT_VARS +350 +99 + 3 +AcDbVariableDictionary +350 +59 + 0 +DICTIONARY + 5 +6C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +1E + 3 +布局2 +350 +26 + 0 +DICTIONARY + 5 +6B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Global +350 +E6 + 0 +DICTIONARY + 5 +DE +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +B7 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +B8 + 3 +A1 +350 +B9 + 3 +A2 +350 +BA + 3 +A3 +350 +BB + 3 +A4 +350 +BC + 3 +A5 +350 +BD + 3 +A6 +350 +BE + 3 +A7 +350 +BF + 3 +A8 +350 +C0 + 3 +A9 +350 +C1 + 3 +B0 +350 +C2 + 3 +B1 +350 +C3 + 3 +B2 +350 +C4 + 3 +B3 +350 +C5 + 3 +B4 +350 +C6 + 3 +B5 +350 +C7 + 3 +B6 +350 +C8 + 3 +B7 +350 +C9 + 3 +B8 +350 +CA + 3 +B9 +350 +CB + 3 +C0 +350 +CC + 3 +C1 +350 +CD + 3 +C2 +350 +CE + 3 +C3 +350 +CF + 3 +C4 +350 +D0 + 3 +C5 +350 +D1 + 3 +C6 +350 +D2 + 3 +C7 +350 +D3 + 3 +C8 +350 +D4 + 3 +C9 +350 +D5 + 3 +D0 +350 +D6 + 3 +D1 +350 +D7 + 3 +D2 +350 +D8 + 0 +DICTIONARY + 5 +92 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +93 + 0 +WIPEOUTVARIABLES + 5 +99 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbWipeoutVariables + 70 + 1 + 0 +DICTIONARY + 5 +59 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +DD + 3 +CTABLESTYLE +350 +98 + 3 +DIMASSOC +350 +43 + 3 +HIDETEXT +350 +5E + 3 +PROJECTNAME +350 +B6 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B2 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +none_user_media + 6 + + 40 +6.349999904632568 + 41 +6.349999904632568 + 42 +6.350006103515625 + 43 +6.350006103515625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +67.3 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.653339271834874 + 70 + 10261 + 72 + 1 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3768835785965909 +148 +0.0164422551733878 +149 +0.0106888522248596 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +AD + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 1 + 73 + 1 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +-20.0 + 20 +-7.5 + 11 +277.0 + 21 +202.5 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +73 + 0 +LAYOUT + 5 +26 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +B4 +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +23 + 0 +MATERIAL + 5 +E6 +102 +{ACAD_REACTORS +330 +6B +330 +6B +102 +} +102 +{ACAD_XDICTIONARY +360 +E7 +102 +} +330 +6B +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 18 + 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 +B8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +B9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +BA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +BB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +BC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +BD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +BE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +BF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +C0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +C1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +C2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +C3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +C4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +C9 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CA +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CB +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CC +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CD +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CE +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +CF +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D0 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D1 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D2 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D3 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D4 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D5 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D6 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D7 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +D8 +102 +{ACAD_REACTORS +330 +B7 +102 +} +330 +B7 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +93 +102 +{ACAD_REACTORS +330 +92 +102 +} +330 +92 +100 +AcDbTableStyle + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +DICTIONARYVAR + 5 +DD +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +98 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +43 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +5E +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +B6 +102 +{ACAD_REACTORS +330 +59 +102 +} +330 +59 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +DICTIONARY + 5 +B2 +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B0 +330 +1E +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +B4 +330 +26 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +E7 +330 +E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/e114-3D.par b/LaiPuLaser/TempMarkData/e114-3D.par new file mode 100644 index 0000000..52fc471 Binary files /dev/null and b/LaiPuLaser/TempMarkData/e114-3D.par differ diff --git a/LaiPuLaser/TempMarkData/e129.dxf b/LaiPuLaser/TempMarkData/e129.dxf new file mode 100644 index 0000000..ba362de --- /dev/null +++ b/LaiPuLaser/TempMarkData/e129.dxf @@ -0,0 +1,11688 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-172.5 + 20 +-139.1349999999998 + 30 +0.0 + 9 +$EXTMAX + 10 +146.8615205267613 + 20 +73.0449999999997 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.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 +2.5 + 9 +$TRACEWID + 40 +1.0 + 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 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 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 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 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 +2459014.460096077 + 9 +$TDUCREATE + 40 +2459014.126762743 + 9 +$TDUPDATE + 40 +2459014.460518877 + 9 +$TDUUPDATE + 40 +2459014.127185544 + 9 +$TDINDWG + 40 +0.0004244213 + 9 +$TDUSRTIMER + 40 +0.0004244213 + 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 +2C3 + 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 +420.0 + 20 +297.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 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{72B61E04-16ED-415D-A19F-43B5D20F3D49} + 9 +$VERSIONGUID + 2 +{8A47CD33-3819-405E-ADC8-163A8FFF1C0C} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +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 +29B +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-86.05815646221198 + 22 +6.229952896856762 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +157.6600816259493 + 41 +2.597039030955584 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +2F +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +LAYER + 5 +2D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +4545 + 70 + 0 + 62 + 1 + 6 +Continuous +370 + -3 +390 +F +347 +0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +29 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +2E +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +24 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +20 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +25 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +28 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +22 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +23 +330 +21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1F +330 +1D +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +26 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +27 +330 +25 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +CIRCLE + 5 +169 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +CIRCLE + 5 +16A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbCircle + 10 +-172.0 + 20 +28.00000000000001 + 30 +0.0 + 40 +0.5 + 0 +LINE + 5 +16B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +61.04500000000002 + 30 +0.0 + 11 +-15.68076026338071 + 21 +61.04500000000003 + 31 +0.0 + 0 +LINE + 5 +16C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +59.62000000000006 + 30 +0.0 + 11 +-24.11294998016189 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +16D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +50.15500000000009 + 30 +0.0 + 11 +-15.68076026338071 + 21 +50.15500000000009 + 31 +0.0 + 0 +LINE + 5 +16E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +51.58000000000007 + 30 +0.0 + 11 +-24.11294998016189 + 21 +51.58000000000007 + 31 +0.0 + 0 +LWPOLYLINE + 5 +16F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-4.267867965644001 + 20 +9.612132034356009 + 10 +-4.47999999999999 + 20 +9.400000000000034 + 10 +-4.47999999999999 + 20 +6.599999999999952 + 10 +-4.267867965644001 + 20 +6.38786796564402 + 0 +LWPOLYLINE + 5 +170 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.23213203435591 + 20 +9.612132034356023 + 10 +-24.02000000000001 + 20 +9.400000000000034 + 10 +-24.02000000000001 + 20 +6.599999999999952 + 10 +-24.232132034356 + 20 +6.387867965644006 + 0 +LINE + 5 +171 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +49.14500000000004 + 30 +0.0 + 11 +-15.68076026338071 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +172 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +47.72000000000008 + 30 +0.0 + 11 +-24.11294998016189 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +173 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +38.25500000000011 + 30 +0.0 + 11 +-15.68076026338071 + 21 +38.2550000000001 + 31 +0.0 + 0 +LINE + 5 +174 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +39.68000000000008 + 30 +0.0 + 11 +-24.11294998016189 + 21 +39.68000000000008 + 31 +0.0 + 0 +LINE + 5 +175 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +37.24500000000007 + 30 +0.0 + 11 +-15.68076026338071 + 21 +37.24500000000008 + 31 +0.0 + 0 +LINE + 5 +176 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +35.8200000000001 + 30 +0.0 + 11 +-24.11294998016189 + 21 +35.8200000000001 + 31 +0.0 + 0 +LINE + 5 +177 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +26.35500000000013 + 30 +0.0 + 11 +-15.68076026338071 + 21 +26.35500000000013 + 31 +0.0 + 0 +LINE + 5 +178 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +27.78000000000011 + 30 +0.0 + 11 +-24.11294998016189 + 21 +27.78000000000011 + 31 +0.0 + 0 +LINE + 5 +179 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +25.34500000000011 + 30 +0.0 + 11 +-15.68076026338071 + 21 +25.34500000000011 + 31 +0.0 + 0 +LINE + 5 +17A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +23.92000000000013 + 30 +0.0 + 11 +-24.11294998016189 + 21 +23.92000000000013 + 31 +0.0 + 0 +LINE + 5 +17B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +14.45500000000017 + 30 +0.0 + 11 +-15.68076026338071 + 21 +14.45500000000015 + 31 +0.0 + 0 +LINE + 5 +17C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +15.88000000000014 + 30 +0.0 + 11 +-24.11294998016189 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +17D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +13.44500000000014 + 30 +0.0 + 11 +-15.68076026338071 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +17E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +12.02000000000015 + 30 +0.0 + 11 +-24.11294998016189 + 21 +12.02000000000015 + 31 +0.0 + 0 +LINE + 5 +17F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +2.555000000000192 + 30 +0.0 + 11 +-15.68076026338071 + 21 +2.555000000000177 + 31 +0.0 + 0 +LINE + 5 +180 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +3.98000000000016 + 30 +0.0 + 11 +-24.11294998016189 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +181 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +1.545000000000158 + 30 +0.0 + 11 +-15.68076026338071 + 21 +1.545000000000158 + 31 +0.0 + 0 +LINE + 5 +182 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +0.1200000000001751 + 30 +0.0 + 11 +-24.11294998016189 + 21 +0.1200000000001751 + 31 +0.0 + 0 +LINE + 5 +183 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +184 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +185 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +186 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-11.77999999999979 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-11.77999999999979 + 31 +0.0 + 0 +LINE + 5 +187 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +188 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +189 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-22.2549999999998 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-22.2549999999998 + 31 +0.0 + 0 +LINE + 5 +18A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +18B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-33.14499999999973 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-33.14499999999973 + 31 +0.0 + 0 +LINE + 5 +18C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +18D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +18E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +18F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-4.275115530774002 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-15.68076026338071 + 21 +-45.0449999999997 + 31 +0.0 + 0 +LINE + 5 +190 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-20.26081905039629 + 20 +-43.61999999999975 + 30 +0.0 + 11 +-24.11294998016189 + 21 +-43.61999999999975 + 31 +0.0 + 0 +LINE + 5 +191 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +61.04500000000002 + 30 +0.0 + 11 +-36.18076026338071 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +192 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +59.62000000000006 + 30 +0.0 + 11 +-44.6129499801619 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +193 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +50.1550000000001 + 30 +0.0 + 11 +-36.18076026338071 + 21 +50.15500000000009 + 31 +0.0 + 0 +LINE + 5 +194 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +51.58000000000007 + 30 +0.0 + 11 +-44.6129499801619 + 21 +51.58000000000007 + 31 +0.0 + 0 +LINE + 5 +195 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +49.14500000000005 + 30 +0.0 + 11 +-36.18076026338071 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +196 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +47.72000000000008 + 30 +0.0 + 11 +-44.6129499801619 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +197 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +38.25500000000012 + 30 +0.0 + 11 +-36.18076026338071 + 21 +38.25500000000011 + 31 +0.0 + 0 +LINE + 5 +198 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +39.68000000000009 + 30 +0.0 + 11 +-44.6129499801619 + 21 +39.68000000000009 + 31 +0.0 + 0 +LINE + 5 +199 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +37.24500000000008 + 30 +0.0 + 11 +-36.18076026338071 + 21 +37.24500000000009 + 31 +0.0 + 0 +LINE + 5 +19A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +35.82000000000011 + 30 +0.0 + 11 +-44.6129499801619 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +19B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +26.35500000000013 + 30 +0.0 + 11 +-36.18076026338071 + 21 +26.35500000000013 + 31 +0.0 + 0 +LINE + 5 +19C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +27.78000000000011 + 30 +0.0 + 11 +-44.6129499801619 + 21 +27.78000000000011 + 31 +0.0 + 0 +LINE + 5 +19D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +25.34500000000011 + 30 +0.0 + 11 +-36.18076026338071 + 21 +25.34500000000011 + 31 +0.0 + 0 +LINE + 5 +19E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +23.92000000000013 + 30 +0.0 + 11 +-44.6129499801619 + 21 +23.92000000000013 + 31 +0.0 + 0 +LINE + 5 +19F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-36.18076026338071 + 21 +14.45500000000015 + 31 +0.0 + 0 +LINE + 5 +1A0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +15.88000000000014 + 30 +0.0 + 11 +-44.6129499801619 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +1A1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +13.44500000000014 + 30 +0.0 + 11 +-36.18076026338071 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +1A2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +12.02000000000015 + 30 +0.0 + 11 +-44.6129499801619 + 21 +12.02000000000015 + 31 +0.0 + 0 +LINE + 5 +1A3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +2.555000000000192 + 30 +0.0 + 11 +-36.18076026338071 + 21 +2.555000000000177 + 31 +0.0 + 0 +LINE + 5 +1A4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +3.98000000000016 + 30 +0.0 + 11 +-44.6129499801619 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +1A5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +1.545000000000158 + 30 +0.0 + 11 +-36.18076026338071 + 21 +1.545000000000158 + 31 +0.0 + 0 +LINE + 5 +1A6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +0.1200000000001751 + 30 +0.0 + 11 +-44.6129499801619 + 21 +0.1200000000001751 + 31 +0.0 + 0 +LINE + 5 +1A7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +1A8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-44.6129499801619 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +1A9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +1AA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-44.6129499801619 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +1AB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +1AC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-44.6129499801619 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +1AD +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-22.2549999999998 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-22.2549999999998 + 31 +0.0 + 0 +LINE + 5 +1AE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-44.6129499801619 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +1AF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-33.14499999999973 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-33.14499999999973 + 31 +0.0 + 0 +LINE + 5 +1B0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-44.61294998016191 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +1B1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +1B2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-44.61294998016191 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +1B3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-24.775115530774 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-36.18076026338071 + 21 +-45.0449999999997 + 31 +0.0 + 0 +LINE + 5 +1B4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-40.76081905039641 + 20 +-43.61999999999975 + 30 +0.0 + 11 +-44.61294998016191 + 21 +-43.61999999999975 + 31 +0.0 + 0 +LINE + 5 +1B5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +61.04500000000003 + 30 +0.0 + 11 +-56.68076026338071 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +1B6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +59.62000000000006 + 30 +0.0 + 11 +-65.1129499801618 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +1B7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +50.1550000000001 + 30 +0.0 + 11 +-56.68076026338071 + 21 +50.15500000000009 + 31 +0.0 + 0 +LINE + 5 +1B8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +51.58000000000007 + 30 +0.0 + 11 +-65.1129499801618 + 21 +51.58000000000007 + 31 +0.0 + 0 +LINE + 5 +1B9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +49.14500000000005 + 30 +0.0 + 11 +-56.68076026338071 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +1BA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +47.72000000000008 + 30 +0.0 + 11 +-65.1129499801618 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +1BB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +38.25500000000012 + 30 +0.0 + 11 +-56.68076026338071 + 21 +38.25500000000011 + 31 +0.0 + 0 +LINE + 5 +1BC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +39.68000000000009 + 30 +0.0 + 11 +-65.1129499801618 + 21 +39.68000000000009 + 31 +0.0 + 0 +LINE + 5 +1BD +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +37.24500000000008 + 30 +0.0 + 11 +-56.68076026338071 + 21 +37.24500000000009 + 31 +0.0 + 0 +LINE + 5 +1BE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +35.82000000000011 + 30 +0.0 + 11 +-65.1129499801618 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +1BF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +26.35500000000013 + 30 +0.0 + 11 +-56.68076026338071 + 21 +26.35500000000013 + 31 +0.0 + 0 +LINE + 5 +1C0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +27.78000000000011 + 30 +0.0 + 11 +-65.1129499801618 + 21 +27.78000000000011 + 31 +0.0 + 0 +LINE + 5 +1C1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +25.34500000000011 + 30 +0.0 + 11 +-56.68076026338071 + 21 +25.34500000000011 + 31 +0.0 + 0 +LINE + 5 +1C2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +23.92000000000013 + 30 +0.0 + 11 +-65.1129499801618 + 21 +23.92000000000013 + 31 +0.0 + 0 +LINE + 5 +1C3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-56.68076026338071 + 21 +14.45500000000015 + 31 +0.0 + 0 +LINE + 5 +1C4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +15.88000000000014 + 30 +0.0 + 11 +-65.1129499801618 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +1C5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +13.44500000000014 + 30 +0.0 + 11 +-56.68076026338071 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +1C6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +12.02000000000015 + 30 +0.0 + 11 +-65.1129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +1C7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +2.555000000000206 + 30 +0.0 + 11 +-56.68076026338071 + 21 +2.555000000000177 + 31 +0.0 + 0 +LINE + 5 +1C8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +3.98000000000016 + 30 +0.0 + 11 +-65.1129499801618 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +1C9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +1.545000000000158 + 30 +0.0 + 11 +-56.68076026338071 + 21 +1.545000000000158 + 31 +0.0 + 0 +LINE + 5 +1CA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +0.1200000000001751 + 30 +0.0 + 11 +-65.1129499801618 + 21 +0.1200000000001751 + 31 +0.0 + 0 +LINE + 5 +1CB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-56.68076026338071 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +1CC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-65.1129499801618 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +1CD +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-56.68076026338071 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +1CE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-65.1129499801618 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +1CF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-56.68076026338071 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +1D0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-65.1129499801618 + 21 +-19.81999999999979 + 31 +0.0 + 0 +LINE + 5 +1D1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.275115530774 + 20 +-22.2549999999998 + 30 +0.0 + 11 +-56.68076026338071 + 21 +-22.2549999999998 + 31 +0.0 + 0 +LINE + 5 +1D2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039629 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-65.1129499801618 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +1D3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.27511553077402 + 20 +-33.14499999999973 + 30 +0.0 + 11 +-56.68076026338072 + 21 +-33.14499999999973 + 31 +0.0 + 0 +LINE + 5 +1D4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039631 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +1D5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.27511553077402 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-56.68076026338072 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +1D6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039631 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +1D7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-45.27511553077402 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-56.68076026338072 + 21 +-45.0449999999997 + 31 +0.0 + 0 +LINE + 5 +1D8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-61.26081905039631 + 20 +-43.61999999999975 + 30 +0.0 + 11 +-65.11294998016182 + 21 +-43.61999999999975 + 31 +0.0 + 0 +LINE + 5 +1D9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +61.04500000000003 + 30 +0.0 + 11 +-77.18076026338065 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +1DA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +59.62000000000006 + 30 +0.0 + 11 +-85.61294998016183 + 21 +59.62000000000006 + 31 +0.0 + 0 +LINE + 5 +1DB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +50.1550000000001 + 30 +0.0 + 11 +-77.18076026338065 + 21 +50.15500000000009 + 31 +0.0 + 0 +LINE + 5 +1DC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +51.58000000000007 + 30 +0.0 + 11 +-85.61294998016183 + 21 +51.58000000000007 + 31 +0.0 + 0 +LINE + 5 +1DD +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +49.14500000000005 + 30 +0.0 + 11 +-77.18076026338065 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +1DE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +47.72000000000008 + 30 +0.0 + 11 +-85.61294998016183 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +1DF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +38.25500000000012 + 30 +0.0 + 11 +-77.18076026338065 + 21 +38.25500000000011 + 31 +0.0 + 0 +LINE + 5 +1E0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +39.68000000000009 + 30 +0.0 + 11 +-85.61294998016183 + 21 +39.68000000000009 + 31 +0.0 + 0 +LINE + 5 +1E1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +37.24500000000008 + 30 +0.0 + 11 +-77.18076026338065 + 21 +37.24500000000009 + 31 +0.0 + 0 +LINE + 5 +1E2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +35.82000000000011 + 30 +0.0 + 11 +-85.61294998016183 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +1E3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +26.35500000000013 + 30 +0.0 + 11 +-77.18076026338065 + 21 +26.35500000000013 + 31 +0.0 + 0 +LINE + 5 +1E4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +27.78000000000011 + 30 +0.0 + 11 +-85.61294998016183 + 21 +27.78000000000011 + 31 +0.0 + 0 +LINE + 5 +1E5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +25.34500000000011 + 30 +0.0 + 11 +-77.18076026338065 + 21 +25.34500000000011 + 31 +0.0 + 0 +LINE + 5 +1E6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +23.92000000000013 + 30 +0.0 + 11 +-85.61294998016183 + 21 +23.92000000000013 + 31 +0.0 + 0 +LINE + 5 +1E7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-77.18076026338065 + 21 +14.45500000000015 + 31 +0.0 + 0 +LINE + 5 +1E8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +15.88000000000014 + 30 +0.0 + 11 +-85.61294998016183 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +1E9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +13.44500000000014 + 30 +0.0 + 11 +-77.18076026338065 + 21 +13.44500000000014 + 31 +0.0 + 0 +LINE + 5 +1EA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +12.02000000000017 + 30 +0.0 + 11 +-85.61294998016183 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +1EB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +2.555000000000206 + 30 +0.0 + 11 +-77.18076026338065 + 21 +2.555000000000177 + 31 +0.0 + 0 +LINE + 5 +1EC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +3.98000000000016 + 30 +0.0 + 11 +-85.61294998016183 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +1ED +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +1.545000000000158 + 30 +0.0 + 11 +-77.18076026338065 + 21 +1.545000000000158 + 31 +0.0 + 0 +LINE + 5 +1EE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +0.1200000000001751 + 30 +0.0 + 11 +-85.61294998016183 + 21 +0.1200000000001751 + 31 +0.0 + 0 +LINE + 5 +1EF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-77.18076026338065 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +1F0 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +1F1 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-77.18076026338065 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +1F2 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +1F3 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-77.18076026338065 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +1F4 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-19.81999999999979 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-19.81999999999978 + 31 +0.0 + 0 +LINE + 5 +1F5 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.775115530774 + 20 +-22.2549999999998 + 30 +0.0 + 11 +-77.18076026338065 + 21 +-22.2549999999998 + 31 +0.0 + 0 +LINE + 5 +1F6 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039632 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-85.61294998016183 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.77511553077402 + 20 +-33.14499999999973 + 30 +0.0 + 11 +-77.18076026338066 + 21 +-33.14499999999973 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039634 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-85.61294998016184 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +1F9 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.77511553077402 + 20 +-34.15499999999977 + 30 +0.0 + 11 +-77.18076026338066 + 21 +-34.15499999999977 + 31 +0.0 + 0 +LINE + 5 +1FA +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039634 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-85.61294998016184 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +1FB +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-65.77511553077402 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-77.18076026338066 + 21 +-45.0449999999997 + 31 +0.0 + 0 +LINE + 5 +1FC +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-81.76081905039634 + 20 +-43.61999999999975 + 30 +0.0 + 11 +-85.61294998016184 + 21 +-43.61999999999975 + 31 +0.0 + 0 +LINE + 5 +1FD +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +61.04500000000004 + 30 +0.0 + 11 +-97.68076026338065 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +59.62000000000007 + 30 +0.0 + 11 +-106.1129499801618 + 21 +59.62000000000007 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +50.1550000000001 + 30 +0.0 + 11 +-97.68076026338065 + 21 +50.15500000000009 + 31 +0.0 + 0 +LINE + 5 +200 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +51.58000000000008 + 30 +0.0 + 11 +-106.1129499801618 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +201 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +49.14500000000005 + 30 +0.0 + 11 +-97.68076026338065 + 21 +49.14500000000007 + 31 +0.0 + 0 +LINE + 5 +202 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +47.72000000000008 + 30 +0.0 + 11 +-106.1129499801618 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +203 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +38.25500000000012 + 30 +0.0 + 11 +-97.68076026338065 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +204 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +39.68000000000009 + 30 +0.0 + 11 +-106.1129499801618 + 21 +39.68000000000009 + 31 +0.0 + 0 +LINE + 5 +205 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +37.24500000000008 + 30 +0.0 + 11 +-97.68076026338065 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +206 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +35.82000000000011 + 30 +0.0 + 11 +-106.1129499801618 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +207 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +26.35500000000013 + 30 +0.0 + 11 +-97.68076026338065 + 21 +26.35500000000013 + 31 +0.0 + 0 +LINE + 5 +208 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +27.78000000000011 + 30 +0.0 + 11 +-106.1129499801618 + 21 +27.78000000000011 + 31 +0.0 + 0 +LINE + 5 +209 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +25.34500000000011 + 30 +0.0 + 11 +-97.68076026338065 + 21 +25.34500000000011 + 31 +0.0 + 0 +LINE + 5 +20A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +23.92000000000013 + 30 +0.0 + 11 +-106.1129499801618 + 21 +23.92000000000013 + 31 +0.0 + 0 +LINE + 5 +20B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +14.45500000000018 + 30 +0.0 + 11 +-97.68076026338065 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +20C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +15.88000000000014 + 30 +0.0 + 11 +-106.1129499801618 + 21 +15.88000000000014 + 31 +0.0 + 0 +LINE + 5 +20D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +13.44500000000015 + 30 +0.0 + 11 +-97.68076026338065 + 21 +13.44500000000015 + 31 +0.0 + 0 +LINE + 5 +20E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-106.1129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +20F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +2.555000000000206 + 30 +0.0 + 11 +-97.68076026338065 + 21 +2.555000000000177 + 31 +0.0 + 0 +LINE + 5 +210 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +3.98000000000016 + 30 +0.0 + 11 +-106.1129499801618 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +211 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +1.545000000000158 + 30 +0.0 + 11 +-97.68076026338065 + 21 +1.545000000000158 + 31 +0.0 + 0 +LINE + 5 +212 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +0.1200000000001893 + 30 +0.0 + 11 +-106.1129499801618 + 21 +0.1200000000001893 + 31 +0.0 + 0 +LINE + 5 +213 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-97.68076026338065 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +214 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +215 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-97.68076026338065 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +216 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +217 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-97.68076026338065 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +218 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-19.81999999999978 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-19.81999999999978 + 31 +0.0 + 0 +LINE + 5 +219 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077397 + 20 +-22.25499999999978 + 30 +0.0 + 11 +-97.68076026338065 + 21 +-22.25499999999978 + 31 +0.0 + 0 +LINE + 5 +21A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +21B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077399 + 20 +-33.14499999999971 + 30 +0.0 + 11 +-97.68076026338066 + 21 +-33.14499999999971 + 31 +0.0 + 0 +LINE + 5 +21C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +21D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077399 + 20 +-34.15499999999975 + 30 +0.0 + 11 +-97.68076026338066 + 21 +-34.15499999999975 + 31 +0.0 + 0 +LINE + 5 +21E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +21F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-86.27511553077399 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-97.68076026338066 + 21 +-45.0449999999997 + 31 +0.0 + 0 +LINE + 5 +220 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-102.2608190503963 + 20 +-43.61999999999975 + 30 +0.0 + 11 +-106.1129499801618 + 21 +-43.61999999999975 + 31 +0.0 + 0 +LINE + 5 +221 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +61.04500000000004 + 30 +0.0 + 11 +-118.1807602633806 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +222 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +59.62000000000007 + 30 +0.0 + 11 +-126.6129499801618 + 21 +59.62000000000007 + 31 +0.0 + 0 +LINE + 5 +223 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +50.15500000000011 + 30 +0.0 + 11 +-118.1807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +224 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +51.58000000000008 + 30 +0.0 + 11 +-126.6129499801618 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +225 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +49.14500000000005 + 30 +0.0 + 11 +-118.1807602633806 + 21 +49.14500000000008 + 31 +0.0 + 0 +LINE + 5 +226 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +47.72000000000008 + 30 +0.0 + 11 +-126.6129499801618 + 21 +47.72000000000008 + 31 +0.0 + 0 +LINE + 5 +227 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +38.25500000000012 + 30 +0.0 + 11 +-118.1807602633806 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +228 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +39.6800000000001 + 30 +0.0 + 11 +-126.6129499801618 + 21 +39.6800000000001 + 31 +0.0 + 0 +LINE + 5 +229 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +37.24500000000008 + 30 +0.0 + 11 +-118.1807602633806 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +22A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +35.82000000000011 + 30 +0.0 + 11 +-126.6129499801618 + 21 +35.82000000000011 + 31 +0.0 + 0 +LINE + 5 +22B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +26.35500000000013 + 30 +0.0 + 11 +-118.1807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +22C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +27.78000000000013 + 30 +0.0 + 11 +-126.6129499801618 + 21 +27.78000000000013 + 31 +0.0 + 0 +LINE + 5 +22D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +25.34500000000011 + 30 +0.0 + 11 +-118.1807602633806 + 21 +25.34500000000013 + 31 +0.0 + 0 +LINE + 5 +22E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +23.92000000000014 + 30 +0.0 + 11 +-126.6129499801618 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +22F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-118.1807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +230 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +15.88000000000015 + 30 +0.0 + 11 +-126.6129499801618 + 21 +15.88000000000015 + 31 +0.0 + 0 +LINE + 5 +231 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +13.44500000000015 + 30 +0.0 + 11 +-118.1807602633806 + 21 +13.44500000000015 + 31 +0.0 + 0 +LINE + 5 +232 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-126.6129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +233 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +2.555000000000206 + 30 +0.0 + 11 +-118.1807602633806 + 21 +2.555000000000192 + 31 +0.0 + 0 +LINE + 5 +234 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +3.98000000000016 + 30 +0.0 + 11 +-126.6129499801618 + 21 +3.98000000000016 + 31 +0.0 + 0 +LINE + 5 +235 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +1.545000000000172 + 30 +0.0 + 11 +-118.1807602633806 + 21 +1.545000000000172 + 31 +0.0 + 0 +LINE + 5 +236 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +0.1200000000001893 + 30 +0.0 + 11 +-126.6129499801618 + 21 +0.1200000000001893 + 31 +0.0 + 0 +LINE + 5 +237 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +238 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-7.919999999999817 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-7.919999999999817 + 31 +0.0 + 0 +LINE + 5 +239 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +23A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +23B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +23C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-19.81999999999978 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-19.81999999999978 + 31 +0.0 + 0 +LINE + 5 +23D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-22.25499999999978 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-22.25499999999978 + 31 +0.0 + 0 +LINE + 5 +23E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-23.67999999999975 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-23.67999999999975 + 31 +0.0 + 0 +LINE + 5 +23F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-33.14499999999971 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-33.14499999999971 + 31 +0.0 + 0 +LINE + 5 +240 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-31.71999999999977 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-31.71999999999977 + 31 +0.0 + 0 +LINE + 5 +241 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-34.15499999999975 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-34.15499999999975 + 31 +0.0 + 0 +LINE + 5 +242 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-35.57999999999973 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-35.57999999999973 + 31 +0.0 + 0 +LINE + 5 +243 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-106.775115530774 + 20 +-45.0449999999997 + 30 +0.0 + 11 +-118.1807602633806 + 21 +-45.04499999999967 + 31 +0.0 + 0 +LINE + 5 +244 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-122.7608190503963 + 20 +-43.61999999999972 + 30 +0.0 + 11 +-126.6129499801618 + 21 +-43.61999999999972 + 31 +0.0 + 0 +LINE + 5 +245 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +61.04500000000004 + 30 +0.0 + 11 +-138.6807602633806 + 21 +61.04500000000004 + 31 +0.0 + 0 +LINE + 5 +246 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-147.1129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +247 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +50.15500000000011 + 30 +0.0 + 11 +-138.6807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +248 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +51.58000000000008 + 30 +0.0 + 11 +-147.1129499801618 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +249 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +49.14500000000005 + 30 +0.0 + 11 +-138.6807602633806 + 21 +49.14500000000008 + 31 +0.0 + 0 +LINE + 5 +24A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +47.72000000000009 + 30 +0.0 + 11 +-147.1129499801618 + 21 +47.72000000000009 + 31 +0.0 + 0 +LINE + 5 +24B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +38.25500000000013 + 30 +0.0 + 11 +-138.6807602633806 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +24C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +39.6800000000001 + 30 +0.0 + 11 +-147.1129499801618 + 21 +39.6800000000001 + 31 +0.0 + 0 +LINE + 5 +24D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +37.24500000000008 + 30 +0.0 + 11 +-138.6807602633806 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +24E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +35.82000000000011 + 30 +0.0 + 11 +-147.1129499801618 + 21 +35.82000000000012 + 31 +0.0 + 0 +LINE + 5 +24F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +26.35500000000015 + 30 +0.0 + 11 +-138.6807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +250 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +27.78000000000013 + 30 +0.0 + 11 +-147.1129499801618 + 21 +27.78000000000013 + 31 +0.0 + 0 +LINE + 5 +251 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +25.34500000000013 + 30 +0.0 + 11 +-138.6807602633806 + 21 +25.34500000000013 + 31 +0.0 + 0 +LINE + 5 +252 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +23.92000000000014 + 30 +0.0 + 11 +-147.1129499801618 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +253 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-138.6807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +254 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +15.88000000000015 + 30 +0.0 + 11 +-147.1129499801618 + 21 +15.88000000000015 + 31 +0.0 + 0 +LINE + 5 +255 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +13.44500000000015 + 30 +0.0 + 11 +-138.6807602633806 + 21 +13.44500000000015 + 31 +0.0 + 0 +LINE + 5 +256 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-147.1129499801618 + 21 +12.02000000000017 + 31 +0.0 + 0 +LINE + 5 +257 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +2.555000000000206 + 30 +0.0 + 11 +-138.6807602633806 + 21 +2.555000000000192 + 31 +0.0 + 0 +LINE + 5 +258 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +3.980000000000175 + 30 +0.0 + 11 +-147.1129499801618 + 21 +3.980000000000175 + 31 +0.0 + 0 +LINE + 5 +259 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +1.545000000000172 + 30 +0.0 + 11 +-138.6807602633806 + 21 +1.545000000000172 + 31 +0.0 + 0 +LINE + 5 +25A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +0.1200000000001893 + 30 +0.0 + 11 +-147.1129499801618 + 21 +0.1200000000001893 + 31 +0.0 + 0 +LINE + 5 +25B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-9.344999999999771 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-9.3449999999998 + 31 +0.0 + 0 +LINE + 5 +25C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-7.919999999999803 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-7.919999999999803 + 31 +0.0 + 0 +LINE + 5 +25D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-10.35499999999982 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-10.35499999999982 + 31 +0.0 + 0 +LINE + 5 +25E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +25F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-21.24499999999975 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-21.24499999999975 + 31 +0.0 + 0 +LINE + 5 +260 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-19.81999999999977 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-19.81999999999977 + 31 +0.0 + 0 +LINE + 5 +261 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-22.25499999999978 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-22.25499999999978 + 31 +0.0 + 0 +LINE + 5 +262 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-23.67999999999974 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-23.67999999999974 + 31 +0.0 + 0 +LINE + 5 +263 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-33.14499999999971 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-33.14499999999971 + 31 +0.0 + 0 +LINE + 5 +264 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-31.71999999999976 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-31.71999999999976 + 31 +0.0 + 0 +LINE + 5 +265 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-34.15499999999975 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-34.15499999999975 + 31 +0.0 + 0 +LINE + 5 +266 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-35.5799999999997 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-35.5799999999997 + 31 +0.0 + 0 +LINE + 5 +267 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-127.275115530774 + 20 +-45.04499999999967 + 30 +0.0 + 11 +-138.6807602633806 + 21 +-45.04499999999967 + 31 +0.0 + 0 +LINE + 5 +268 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-143.2608190503963 + 20 +-43.61999999999972 + 30 +0.0 + 11 +-147.1129499801618 + 21 +-43.61999999999972 + 31 +0.0 + 0 +LINE + 5 +269 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +61.04500000000004 + 30 +0.0 + 11 +-159.1807602633806 + 21 +61.04500000000005 + 31 +0.0 + 0 +LINE + 5 +26A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +59.62000000000008 + 30 +0.0 + 11 +-167.6129499801618 + 21 +59.62000000000008 + 31 +0.0 + 0 +LINE + 5 +26B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +50.15500000000011 + 30 +0.0 + 11 +-159.1807602633806 + 21 +50.1550000000001 + 31 +0.0 + 0 +LINE + 5 +26C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +51.58000000000008 + 30 +0.0 + 11 +-167.6129499801618 + 21 +51.58000000000008 + 31 +0.0 + 0 +LINE + 5 +26D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +49.14500000000006 + 30 +0.0 + 11 +-159.1807602633806 + 21 +49.14500000000008 + 31 +0.0 + 0 +LINE + 5 +26E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +47.7200000000001 + 30 +0.0 + 11 +-167.6129499801618 + 21 +47.7200000000001 + 31 +0.0 + 0 +LINE + 5 +26F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +38.25500000000013 + 30 +0.0 + 11 +-159.1807602633806 + 21 +38.25500000000012 + 31 +0.0 + 0 +LINE + 5 +270 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +39.68000000000011 + 30 +0.0 + 11 +-167.6129499801618 + 21 +39.68000000000011 + 31 +0.0 + 0 +LINE + 5 +271 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +37.24500000000009 + 30 +0.0 + 11 +-159.1807602633806 + 21 +37.2450000000001 + 31 +0.0 + 0 +LINE + 5 +272 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +35.82000000000012 + 30 +0.0 + 11 +-167.6129499801618 + 21 +35.82000000000012 + 31 +0.0 + 0 +LINE + 5 +273 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +26.35500000000015 + 30 +0.0 + 11 +-159.1807602633806 + 21 +26.35500000000015 + 31 +0.0 + 0 +LINE + 5 +274 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +27.78000000000013 + 30 +0.0 + 11 +-167.6129499801618 + 21 +27.78000000000013 + 31 +0.0 + 0 +LINE + 5 +275 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +25.34500000000013 + 30 +0.0 + 11 +-159.1807602633806 + 21 +25.34500000000013 + 31 +0.0 + 0 +LINE + 5 +276 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +23.92000000000014 + 30 +0.0 + 11 +-167.6129499801618 + 21 +23.92000000000014 + 31 +0.0 + 0 +LINE + 5 +277 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +14.45500000000018 + 30 +0.0 + 11 +-159.1807602633806 + 21 +14.45500000000017 + 31 +0.0 + 0 +LINE + 5 +278 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +15.88000000000015 + 30 +0.0 + 11 +-167.6129499801618 + 21 +15.88000000000015 + 31 +0.0 + 0 +LINE + 5 +279 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +13.44500000000015 + 30 +0.0 + 11 +-159.1807602633806 + 21 +13.44500000000015 + 31 +0.0 + 0 +LINE + 5 +27A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +12.02000000000017 + 30 +0.0 + 11 +-167.6129499801618 + 21 +12.02000000000018 + 31 +0.0 + 0 +LINE + 5 +27B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +2.555000000000206 + 30 +0.0 + 11 +-159.1807602633806 + 21 +2.555000000000192 + 31 +0.0 + 0 +LINE + 5 +27C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +3.980000000000175 + 30 +0.0 + 11 +-167.6129499801618 + 21 +3.980000000000175 + 31 +0.0 + 0 +LINE + 5 +27D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +1.545000000000172 + 30 +0.0 + 11 +-159.1807602633806 + 21 +1.545000000000172 + 31 +0.0 + 0 +LINE + 5 +27E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +0.1200000000001893 + 30 +0.0 + 11 +-167.6129499801618 + 21 +0.1200000000001893 + 31 +0.0 + 0 +LINE + 5 +27F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-9.344999999999757 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-9.344999999999786 + 31 +0.0 + 0 +LINE + 5 +280 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-7.919999999999803 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-7.919999999999803 + 31 +0.0 + 0 +LINE + 5 +281 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-10.35499999999981 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-10.35499999999981 + 31 +0.0 + 0 +LINE + 5 +282 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-11.77999999999977 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-11.77999999999977 + 31 +0.0 + 0 +LINE + 5 +283 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-21.24499999999973 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-21.24499999999973 + 31 +0.0 + 0 +LINE + 5 +284 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-19.81999999999977 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-19.81999999999977 + 31 +0.0 + 0 +LINE + 5 +285 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-22.25499999999977 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-22.25499999999977 + 31 +0.0 + 0 +LINE + 5 +286 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-23.67999999999974 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-23.67999999999974 + 31 +0.0 + 0 +LINE + 5 +287 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-33.1449999999997 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-33.1449999999997 + 31 +0.0 + 0 +LINE + 5 +288 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-31.71999999999976 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-31.71999999999976 + 31 +0.0 + 0 +LINE + 5 +289 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-34.15499999999975 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-34.15499999999975 + 31 +0.0 + 0 +LINE + 5 +28A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-35.5799999999997 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-35.5799999999997 + 31 +0.0 + 0 +LINE + 5 +28B +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-147.775115530774 + 20 +-45.04499999999967 + 30 +0.0 + 11 +-159.1807602633806 + 21 +-45.04499999999967 + 31 +0.0 + 0 +LINE + 5 +28C +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbLine + 10 +-163.7608190503963 + 20 +-43.61999999999972 + 30 +0.0 + 11 +-167.6129499801618 + 21 +-43.61999999999972 + 31 +0.0 + 0 +LWPOLYLINE + 5 +28D +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-24.767867965644 + 20 +9.612132034356023 + 10 +-24.97999999999999 + 20 +9.400000000000034 + 10 +-24.97999999999999 + 20 +6.599999999999952 + 10 +-24.767867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +28E +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-44.7321320343559 + 20 +9.612132034356023 + 10 +-44.52 + 20 +9.400000000000034 + 10 +-44.52 + 20 +6.599999999999966 + 10 +-44.732132034356 + 20 +6.387867965644006 + 0 +LWPOLYLINE + 5 +28F +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-45.267867965644 + 20 +9.612132034356023 + 10 +-45.48 + 20 +9.400000000000034 + 10 +-45.48 + 20 +6.599999999999966 + 10 +-45.267867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +290 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.2321320343559 + 20 +9.612132034356023 + 10 +-65.02 + 20 +9.400000000000034 + 10 +-65.02 + 20 +6.599999999999966 + 10 +-65.232132034356 + 20 +6.387867965644006 + 0 +LWPOLYLINE + 5 +291 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-65.767867965644 + 20 +9.612132034356023 + 10 +-65.98 + 20 +9.400000000000034 + 10 +-65.98 + 20 +6.599999999999966 + 10 +-65.767867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +292 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-85.73213203435591 + 20 +9.612132034356023 + 10 +-85.52 + 20 +9.400000000000048 + 10 +-85.52 + 20 +6.599999999999966 + 10 +-85.73213203435591 + 20 +6.387867965644006 + 0 +LWPOLYLINE + 5 +293 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-86.26786796564397 + 20 +9.612132034356023 + 10 +-86.4799999999999 + 20 +9.400000000000048 + 10 +-86.4799999999999 + 20 +6.599999999999966 + 10 +-86.26786796564397 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +294 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.2321320343559 + 20 +9.612132034356023 + 10 +-106.02 + 20 +9.400000000000048 + 10 +-106.02 + 20 +6.599999999999966 + 10 +-106.2321320343559 + 20 +6.38786796564402 + 0 +LWPOLYLINE + 5 +295 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-106.767867965644 + 20 +9.612132034356023 + 10 +-106.9799999999999 + 20 +9.400000000000048 + 10 +-106.9799999999999 + 20 +6.599999999999966 + 10 +-106.767867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +296 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-126.7321320343559 + 20 +9.612132034356023 + 10 +-126.52 + 20 +9.400000000000048 + 10 +-126.52 + 20 +6.599999999999966 + 10 +-126.7321320343559 + 20 +6.38786796564402 + 0 +LWPOLYLINE + 5 +297 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-127.267867965644 + 20 +9.612132034356023 + 10 +-127.4799999999999 + 20 +9.400000000000048 + 10 +-127.4799999999999 + 20 +6.599999999999966 + 10 +-127.267867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +298 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.2321320343559 + 20 +9.612132034356023 + 10 +-147.02 + 20 +9.400000000000048 + 10 +-147.02 + 20 +6.599999999999966 + 10 +-147.2321320343559 + 20 +6.38786796564402 + 0 +LWPOLYLINE + 5 +299 +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-147.767867965644 + 20 +9.612132034356023 + 10 +-147.9799999999999 + 20 +9.400000000000048 + 10 +-147.9799999999999 + 20 +6.599999999999966 + 10 +-147.767867965644 + 20 +6.387867965644034 + 0 +LWPOLYLINE + 5 +29A +330 +21 +100 +AcDbEntity + 8 +4545 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-167.7321320343559 + 20 +9.612132034356037 + 10 +-167.52 + 20 +9.400000000000063 + 10 +-167.52 + 20 +6.599999999999966 + 10 +-167.7321320343559 + 20 +6.38786796564402 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +1C + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +1B + 3 +ACAD_MLEADERSTYLE +350 +2C2 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +29C + 3 +ACAD_TABLESTYLE +350 +2C1 + 3 +AcDbVariableDictionary +350 +2BF + 0 +DICTIONARY + 5 +2F +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERSTATES +360 +30 + 0 +DICTIONARY + 5 +1C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +24 + 3 +布局1 +350 +20 + 3 +布局2 +350 +28 + 0 +DICTIONARY + 5 +1B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2C2 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +29C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +29D + 3 +A1 +350 +29E + 3 +A2 +350 +29F + 3 +A3 +350 +2A0 + 3 +A4 +350 +2A1 + 3 +A5 +350 +2A2 + 3 +A6 +350 +2A3 + 3 +A7 +350 +2A4 + 3 +A8 +350 +2A5 + 3 +A9 +350 +2A6 + 3 +B0 +350 +2A7 + 3 +B1 +350 +2A8 + 3 +B2 +350 +2A9 + 3 +B3 +350 +2AA + 3 +B4 +350 +2AB + 3 +B5 +350 +2AC + 3 +B6 +350 +2AD + 3 +B7 +350 +2AE + 3 +B8 +350 +2AF + 3 +B9 +350 +2B0 + 3 +C0 +350 +2B1 + 3 +C1 +350 +2B2 + 3 +C2 +350 +2B3 + 3 +C3 +350 +2B4 + 3 +C4 +350 +2B5 + 3 +C5 +350 +2B6 + 3 +C6 +350 +2B7 + 3 +C7 +350 +2B8 + 3 +C8 +350 +2B9 + 3 +C9 +350 +2BA + 3 +D0 +350 +2BB + 3 +D1 +350 +2BC + 3 +D2 +350 +2BD + 0 +DICTIONARY + 5 +2C1 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +2BF +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +2C0 + 0 +DICTIONARY + 5 +30 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +24 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +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 +21 +331 +29B + 0 +LAYOUT + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +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 +1D + 0 +LAYOUT + 5 +28 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +Microsoft XPS Document Writer + 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 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 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 +25 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +29D +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +29E +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +29F +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +2A0 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +2A1 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +2A2 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +2A3 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +2A4 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +2A5 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +2A6 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +2A7 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +2A8 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +2A9 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +2AA +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +2AB +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +2AC +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +2AD +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +2AE +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2AF +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B0 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B1 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B2 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B3 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B4 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B5 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B6 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B7 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B8 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2B9 +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2BA +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2BB +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2BC +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +2BD +102 +{ACAD_REACTORS +330 +29C +102 +} +330 +29C +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +DICTIONARYVAR + 5 +2C0 +102 +{ACAD_REACTORS +330 +2BF +102 +} +330 +2BF +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/jiaozhuntu.are b/LaiPuLaser/TempMarkData/jiaozhuntu.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/TempMarkData/jiaozhuntu.are differ diff --git a/LaiPuLaser/TempMarkData/jiaozhuntu.mak b/LaiPuLaser/TempMarkData/jiaozhuntu.mak new file mode 100644 index 0000000..b284e44 Binary files /dev/null and b/LaiPuLaser/TempMarkData/jiaozhuntu.mak differ diff --git a/LaiPuLaser/TempMarkData/jiaozhuntu.par b/LaiPuLaser/TempMarkData/jiaozhuntu.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/jiaozhuntu.par differ diff --git a/LaiPuLaser/TempMarkData/jiaozhuntu123.mak b/LaiPuLaser/TempMarkData/jiaozhuntu123.mak new file mode 100644 index 0000000..ef582fe Binary files /dev/null and b/LaiPuLaser/TempMarkData/jiaozhuntu123.mak differ diff --git a/LaiPuLaser/TempMarkData/lanban.dxf b/LaiPuLaser/TempMarkData/lanban.dxf new file mode 100644 index 0000000..86d53b5 --- /dev/null +++ b/LaiPuLaser/TempMarkData/lanban.dxf @@ -0,0 +1,146436 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +jay + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +104.0220000000008 + 20 +44.27650234662973 + 30 +0.0 + 9 +$EXTMAX + 10 +120.2650000000008 + 20 +152.0261748079301 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +图层2 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +5.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +1.75 + 9 +$DIMEXO + 40 +0.0 + 9 +$DIMDLI + 40 +1.0 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.3 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +1.75 + 9 +$DIMCEN + 40 +0.0 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 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 + 1 + 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 + 1 + 9 +$DIMCLRE + 70 + 1 + 9 +$DIMCLRT + 70 + 4 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.3 + 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 + 2 + 9 +$DIMTDEC + 70 + 2 + 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 + -1 + 9 +$DIMLWE + 70 + -1 + 9 +$DIMTMOVE + 70 + 0 + 9 +$DIMFXL + 40 +1.0 + 9 +$DIMFXLON + 70 + 0 + 9 +$DIMJOGANG + 40 +1.570796326794896 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +1.2 + 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 +2453735.43711478 + 9 +$TDUCREATE + 40 +2453735.103781447 + 9 +$TDUPDATE + 40 +2459029.359892546 + 9 +$TDUUPDATE + 40 +2459029.026559213 + 9 +$TDINDWG + 40 +12.2196906481 + 9 +$TDUSRTIMER + 40 +12.2196906481 + 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 +46A87 + 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 +-141.0 + 20 +117.8064582119144 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PEXTMAX + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 1 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{B16A767A-1353-46BE-898A-4D2085E8C8E7} + 9 +$VERSIONGUID + 2 +{6AB8E573-8E4E-46B0-9A17-C44D5B262F06} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DIMASSOC + 2 +AcDbDimAssoc + 3 +"AcDbDimAssoc|Product Desc: AcDim ARX App For Dimension|Company: Autodesk, Inc.|WEB Address: www.autodesk.com" + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 23 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 + 1152 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACAD_EVALUATION_GRAPH + 2 +AcDbEvalGraph + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +ACAECUSTOBJ + 2 +AcAeEditorObj + 3 +AcAeEditorObj + 90 + 1024 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION + 2 +AcDbDynamicBlockPurgePreventer + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +AEC_REFEDIT_STATUS_TRACKER + 2 +AecDbRefEditStatusTracker + 3 +AecArchBase60|Product Desc: Autodesk Architectural Desktop 2007 |Company: Autodesk,Inc. |WEB Address: www.autodesk.com + 90 + 129 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +NPOCOLLECTION + 2 +AcDbImpNonPersistentObjectsCollection + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +VPORT + 5 +467B6 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +79.36520164452148 + 22 +90.02160491797463 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +214.5824889312307 + 41 +2.662729302350215 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +-141.0 +120 +117.8064582119144 +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 +348 +13E07 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 +gbcbig.shx + 0 +STYLE + 5 +AF +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STYLE1 + 70 + 0 + 40 +0.0 + 41 +0.9 + 50 +0.0 + 71 + 0 + 42 +2.0 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +STYLE + 5 +2321D +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +1 + 70 + 0 + 40 +0.0 + 41 +0.8 + 50 +0.0 + 71 + 0 + 42 +1.2 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +STYLE + 5 +2CC47 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 + + 70 + 1 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +ltypeshp.shx + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 7 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +1A085 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 + 0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 + 65 + 73 + 4 + 40 +50.8 + 49 +31.75 + 74 + 0 + 49 +-6.35 + 74 + 0 + 49 +6.35 + 74 + 0 + 49 +-6.35 + 74 + 0 + 0 +LTYPE + 5 +24084 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ACAD_ISO07W100 + 70 + 0 + 3 +ISO dot . . . . . . . . . . . . . . . . . . . . + 72 + 65 + 73 + 2 + 40 +3.0 + 49 +0.0 + 74 + 0 + 49 +-3.0 + 74 + 0 + 0 +LTYPE + 5 +2CC48 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 + 0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 + 65 + 73 + 4 + 40 +4.0 + 49 +2.5 + 74 + 0 + 49 +-0.5 + 74 + 0 + 49 +0.5 + 74 + 0 + 49 +-0.5 + 74 + 0 + 0 +LTYPE + 5 +2CC4C +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 + 0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 + 65 + 73 + 4 + 40 +1.125 + 49 +0.75 + 74 + 0 + 49 +-0.125 + 74 + 0 + 49 +0.125 + 74 + 0 + 49 +-0.125 + 74 + 0 + 0 +LTYPE + 5 +2E1BE +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ACAD_ISO02W100 + 70 + 0 + 3 +ISO dash __ __ __ __ __ __ __ __ __ __ __ __ __ + 72 + 65 + 73 + 2 + 40 +15.0 + 49 +12.0 + 74 + 0 + 49 +-3.0 + 74 + 0 + 0 +LTYPE + 5 +31167 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AM_ISO08W050 + 70 + 0 + 3 +____ . ____ . ____ . ____ . ____ . ____ . ____ + 72 + 65 + 73 + 4 + 40 +18.0 + 49 +12.0 + 74 + 0 + 49 +-1.5 + 74 + 0 + 49 +3.0 + 74 + 0 + 49 +-1.5 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 23 + 0 +LAYER + 5 +10 +102 +{ACAD_XDICTIONARY +360 +14018 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + -7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 7 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +AE +102 +{ACAD_XDICTIONARY +360 +1401A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +BOM + 70 + 0 + 62 + -7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 7 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +5B7 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + -7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 7 +1000 +Continuous +1071 + -3 +1071 + 0 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +9522 +102 +{ACAD_XDICTIONARY +360 +14020 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Outline + 70 + 0 + 62 + -7 + 6 +Continuous +370 + 30 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 7 +1000 +Continuous +1071 + 30 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +1A086 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +dim + 70 + 0 + 62 + -3 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 3 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +1A087 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Center + 70 + 0 + 62 + -1 + 6 +CENTER +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 1 +1000 +CENTER +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +20865 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Bhatch + 70 + 0 + 62 + -50 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 50 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +27F19 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +FPC + 70 + 0 + 62 + -32 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 32 +1000 +Continuous +1070 + 1 +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +28E83 +102 +{ACAD_XDICTIONARY +360 +28E84 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +PCB + 70 + 0 + 62 + -3 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 3 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +28E87 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +PAD + 70 + 0 + 62 + -2 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 2 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +2A971 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +EMI + 70 + 0 + 62 + -5 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 5 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +2E1BF +102 +{ACAD_XDICTIONARY +360 +2E1C0 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + -4 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 4 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +2E1C2 +102 +{ACAD_XDICTIONARY +360 +2E1C3 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层1 + 70 + 0 + 62 + -7 + 6 +ACAD_ISO02W100 +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +2E1C5 +102 +{ACAD_XDICTIONARY +360 +2E1C6 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +可见 (ISO) + 70 + 0 + 62 + -7 + 6 +Continuous +370 + 50 +390 +F +347 +A192 + 0 +LAYER + 5 +31168 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +02___PRT_ALL_AXES + 70 + 0 + 62 + -7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +31169 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +文字序号-AM_7 + 70 + 0 + 62 + 4 + 6 +AM_ISO08W050 +370 + 25 +390 +F +347 +A192 +1001 +AcAecLayerStandard +1000 + +1000 + + 0 +LAYER + 5 +334B9 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +GTO + 70 + 0 + 62 + -1 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +363BD +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +zj + 70 + 0 + 62 + -5 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 5 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +36D85 +102 +{ACAD_XDICTIONARY +360 +36D86 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 @ 1 + 70 + 0 + 62 + -7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +AcadAnnotativeDecomposition +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +LAYER + 5 +36D89 +102 +{ACAD_XDICTIONARY +360 +36D8A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TIE-BAR + 70 + 0 + 62 + -170 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +44C24 +102 +{ACAD_XDICTIONARY +360 +44C25 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +2 + 70 + 0 + 62 + -7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +AcAecLayerStandard +1000 + +1000 + + 0 +LAYER + 5 +45F38 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +T + 70 + 0 + 62 + -2 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +RAK +1000 +{ACET-LAYISO +1070 + 0 +1070 + 2 +1000 +Continuous +1071 + -3 +1071 + 1 +1005 +F +1000 +ACET-LAYISO} + 0 +LAYER + 5 +46896 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +图层2 + 70 + 0 + 62 + 6 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 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 + 18 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +14A9 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +DCO15 + 70 + 0 + 0 +APPID + 5 +13E43 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_EXEMPT_FROM_CAD_STANDARDS + 70 + 0 + 0 +APPID + 5 +13E97 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockGUID + 70 + 0 + 0 +APPID + 5 +1405D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_MLEADERVER + 70 + 0 + 0 +APPID + 5 +14105 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +APPID + 5 +1426B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAUTHENVIRON + 70 + 0 + 0 +APPID + 5 +1426E +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockTrueName + 70 + 0 + 0 +APPID + 5 +1A455 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJOGGED_JOGANGLE_SYMBOL + 70 + 0 + 0 +APPID + 5 +2379F +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +APPID + 5 +256B7 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJAG + 70 + 0 + 0 +APPID + 5 +256B8 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMTALN + 70 + 0 + 0 +APPID + 5 +27FD5 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbBlockRepETag + 70 + 0 + 0 +APPID + 5 +2E1CB +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_PSEXT + 70 + 0 + 0 +APPID + 5 +36D8C +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMRADIAL_EXTENSION + 70 + 0 + 0 +APPID + 5 +36D8D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMBREAK + 70 + 0 + 0 +APPID + 5 +36D8E +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnotative + 70 + 0 + 0 +APPID + 5 +36D8F +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnotativeDecomposition + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 9 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +1C349 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard$4 + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 +140 +1.75 +141 +0.0 +147 +0.3 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +2BBBC +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +副本Standard + 70 + 0 + 41 +0.5 + 42 +0.0 + 44 +0.2 + 73 + 0 + 74 + 0 +140 +0.6 +141 +0.0 +147 +0.1 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +340 +11 +341 +2CD81 +342 +2CD81 + 0 +DIMSTYLE +105 +2E1C8 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +STANDARD$0 + 70 + 0 + 41 +0.5 + 42 +0.0 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +0.6 +141 +2.0 +146 +0.6 +147 +0.2 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2E009 + 0 +DIMSTYLE +105 +2E1C9 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +0.5 + 70 + 0 + 41 +0.5 + 42 +0.0 + 44 +0.2 + 73 + 0 + 74 + 0 +140 +0.6 +141 +0.0 +144 +0.5 +147 +0.1 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +340 +11 + 0 +DIMSTYLE +105 +2E1CA +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard$3 + 70 + 0 + 41 +0.5 + 42 +0.0 + 44 +0.2 +140 +0.6 +141 +0.0 +147 +0.1 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +340 +11 + 0 +DIMSTYLE +105 +363BE +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard$2 + 70 + 0 + 41 +0.6 + 42 +0.0 + 43 +1.0 + 44 +0.2 +140 +0.6 +141 +0.0 +147 +0.2 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +288 + 1 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +3652A +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +11 + 0 +DIMSTYLE +105 +4652D +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2E009 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 158 + 0 +BLOCK_RECORD + 5 +1F +102 +{ACAD_XDICTIONARY +360 +227 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +58 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +59 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +5E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +98 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_INFO +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF00FFFFFF +310 +FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF000000FFFFFFFFFF00FFFFFF +310 +FFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +19A +102 +} + 70 + 4 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +A3 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_BOM +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +2A3 +102 +} + 70 + 4 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +1AD +102 +{ACAD_XDICTIONARY +360 +418 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_TITLE +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFAFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000000000000000000000 +310 +0000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000 +310 +000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF000000000000000000 +310 +00000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF0000000000000000 +310 +0000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +20F +102 +} + 70 + 4 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +18F3 +102 +{ACAD_XDICTIONARY +360 +14AE8 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +tolerance +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000FF0000000000000000000000000000FFFFFFFFFF0000 +310 +FFFF000000FF00FF00FFFF00000000000000000000000000000000FFFF000000FFFF000000FF00FF0000FFFF000000000000000000000000000000000000000000FF000000FF0000FF00FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00FF00000000000000FFFFFFFFFF0000000000000000000000000000FF00FF00FF +310 +000000FFFFFF0000FFFF00FFFF000000000000000000000000000000FFFFFF00FF0000FFFFFF000000FF00FFFF0000000000000000000000000000000000000000000000FF00000000FF00FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00FF000000000000000000FFFFFFFFFFFF00000000000000000000000000FF00FF0000000000FFFFFF0000FFFF0000FFFF0000000000000000000000000000FF00 +310 +FF00000000FFFFFF000000FFFFFFFFFF00000000000000000000000000000000000000000000FF0000000000FF00FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF00FFFF00000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000FF00FFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFFFFFFFF0000FF000000000000FF00FF00FFFF00FFFF00FFFF00FFFFFFFFFFFF00FFFF000000FF000000000000FF00FF00FFFF00FF0000FF00FFFFFFFFFFFFFFFFFF00000000FF000000000000FFFFFFFFFFFF +310 +00FFFFFFFFFF00FF00FF00FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +1907 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +AcDbDynamicBlockGUID +1000 +{9CD6ACD9-AEEA-4B27-9C9E-D1E4C1462BDB} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +20927 +102 +{ACAD_XDICTIONARY +360 +20928 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4A4D7E8D +340 +0 +102 +{BLKREFS +331 +2093F +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +231FE +102 +{ACAD_XDICTIONARY +360 +231FF +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +注释 +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000FF00FF000000FFFFFF00FF00FFFFFF0000000000000000000000000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FF00FF00FFFFFFFFFFFFFFFF +310 +FF00FFFFFFFFFFFFFFFFFFFF0000000000000000000000FF0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFF000000FFFFFF +310 +FFFFFFFFFFFF0000000000000000000000000000000000FF000000FFFFFF000000FF000000FF00000000FF00FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFF +310 +FFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000FFFFFFFFFBFFFFFFFFFF +310 +FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF000000000000FFFF00FFFBFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00000000000000000000FF000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFF000000 +310 +00000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +2321B +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +23215 +102 +{ACAD_XDICTIONARY +360 +23216 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C138073A3 +340 +0 +102 +{BLKREFS +331 +23227 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +23797 +102 +{ACAD_XDICTIONARY +360 +23798 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7B2656CB +340 +0 +102 +{BLKREFS +331 +2D5BC +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2406F +102 +{ACAD_XDICTIONARY +360 +24070 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ARROW MARK +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FBFBFBFBFBFBFBFBFBFBFBFB +310 +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB00FA00000000FFFFFF00000000FAFA00000000FFFFFF00000000FFFAFB0000FB00FA000000FFFFFFFFFF0000FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FFFFFFFFFFFF +310 +0000FFFAFAFF00FFFFFFFFFFFFFFFF0000FAFB0000FB00FA0000FFFFFFFFFFFFFF00FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FF0000FFFFFF000000FAFA000000000000000000000000FAFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB000000000000000000 +310 +00000000000000000000F9F900000000000000FB0000FB000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FB00000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +24093 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +28E23 +102 +{ACAD_XDICTIONARY +360 +28E24 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4B9F04D9-2 +340 +0 +102 +{BLKREFS +331 +29849 +331 +29B52 +331 +29F9D +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2A972 +102 +{ACAD_XDICTIONARY +360 +2A97F +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C592A087B +340 +0 +102 +{BLKREFS +331 +2A9AA +331 +2A9AB +331 +2A9AC +331 +2A9AD +331 +2A9AE +331 +2A9AF +331 +2A9B0 +331 +2A9B1 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2A9A9 +102 +{ACAD_XDICTIONARY +360 +2A9B2 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C728B1303 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2AC39 +102 +{ACAD_XDICTIONARY +360 +2AC3B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C1E324020 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2AF05 +102 +{ACAD_XDICTIONARY +360 +2AF08 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C2C2F0A83 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B443 +102 +{ACAD_XDICTIONARY +360 +2B44C +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C35233E67 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2BC9F +102 +{ACAD_XDICTIONARY +360 +2BCA3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C037227F7 +340 +0 +102 +{BLKREFS +331 +2C0DA +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C0D9 +102 +{ACAD_XDICTIONARY +360 +2C0DB +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C16D37AA3 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C34D +102 +{ACAD_XDICTIONARY +360 +2C351 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3AD46B64 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C357 +102 +{ACAD_XDICTIONARY +360 +2C35B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4CD72AC6 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C461 +102 +{ACAD_XDICTIONARY +360 +2C464 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3A792A30 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C897 +102 +{ACAD_XDICTIONARY +360 +2C8A8 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C1943156E +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C8DA +102 +{ACAD_XDICTIONARY +360 +2C8ED +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C789D3C31 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2C9BA +102 +{ACAD_XDICTIONARY +360 +2C9C1 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C234653A6 +340 +0 +102 +{BLKREFS +331 +2CA53 +331 +2CA54 +331 +2CA55 +331 +2CA56 +331 +2CA57 +331 +2CA58 +331 +2CA59 +331 +2CA5A +331 +2CA5B +331 +2CA5C +331 +2CA5D +331 +2CA5E +331 +2CA5F +331 +2CA60 +331 +2CA61 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CA52 +102 +{ACAD_XDICTIONARY +360 +2CA62 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C771E3180 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CB2E +102 +{ACAD_XDICTIONARY +360 +2CB31 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C0E6B29F0 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CB47 +102 +{ACAD_XDICTIONARY +360 +2CB4A +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C1FB47A18 +340 +0 +102 +{BLKREFS +331 +2CB7A +331 +3384D +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CB79 +102 +{ACAD_XDICTIONARY +360 +2CB7B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C74A913EC +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CC51 +102 +{ACAD_XDICTIONARY +360 +2CC56 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C159B3B9F +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CD81 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_Dot +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2CDB4 +102 +{ACAD_XDICTIONARY +360 +2CDB9 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C39675EAF +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D03E +102 +{ACAD_XDICTIONARY +360 +2D040 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7B642FDC +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D358 +102 +{ACAD_XDICTIONARY +360 +2D359 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +150silk +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2D5BB +102 +{ACAD_XDICTIONARY +360 +2D5BD +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C42970C40 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E009 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E010 +102 +{ACAD_XDICTIONARY +360 +2E011 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C413E6C87 +340 +0 +102 +{BLKREFS +331 +2E31D +331 +2E7ED +331 +2EB4B +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E0B1 +102 +{ACAD_XDICTIONARY +360 +2E0B2 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C355472B6 +340 +0 +102 +{BLKREFS +331 +2E31C +331 +2E7EC +331 +2EB4A +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E0F0 +102 +{ACAD_XDICTIONARY +360 +2E0F1 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C507F7010 +340 +0 +102 +{BLKREFS +331 +2E328 +331 +2E7F0 +331 +2EB4D +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E117 +102 +{ACAD_XDICTIONARY +360 +2E118 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C012B0CA2 +340 +0 +102 +{BLKREFS +331 +2E32A +331 +2E7F2 +331 +2EB4F +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E317 +102 +{ACAD_XDICTIONARY +360 +2E33C +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C514F3EE3 +340 +0 +102 +{BLKREFS +331 +2E679 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E678 +102 +{ACAD_XDICTIONARY +360 +2E67A +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C1B6D40E1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2E7E7 +102 +{ACAD_XDICTIONARY +360 +2E804 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C77A03D3F +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2EB45 +102 +{ACAD_XDICTIONARY +360 +2EB62 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6B334C17 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2F181 +102 +{ACAD_XDICTIONARY +360 +2F196 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C136F2365 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2F1B0 +102 +{ACAD_XDICTIONARY +360 +2F1C4 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C0FB65098 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2F2B8 +102 +{ACAD_XDICTIONARY +360 +2F2CB +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C5EFE3A1C +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30615 +102 +{ACAD_XDICTIONARY +360 +30627 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C676D66B4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30642 +102 +{ACAD_XDICTIONARY +360 +3064F +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C257A5785 +340 +0 +102 +{BLKREFS +331 +306AD +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30655 +102 +{ACAD_XDICTIONARY +360 +3065C +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C49BA1FCA +340 +0 +102 +{BLKREFS +331 +306AE +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30686 +102 +{ACAD_XDICTIONARY +360 +3069B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3A7F01DE +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +306AC +102 +{ACAD_XDICTIONARY +360 +306AF +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C43592A53 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +307D3 +102 +{ACAD_XDICTIONARY +360 +307E0 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C78362B9A +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30807 +102 +{ACAD_XDICTIONARY +360 +3080E +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C25294DFB +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3094A +102 +{ACAD_XDICTIONARY +360 +30951 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C5D8D7720 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +30F9F +102 +{ACAD_XDICTIONARY +360 +30FA0 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C0199744A +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +310E2 +102 +{ACAD_XDICTIONARY +360 +310E3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3D1B05CC +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31152 +102 +{ACAD_XDICTIONARY +360 +31153 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4DDA4BE6 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31191 +102 +{ACAD_XDICTIONARY +360 +3119B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C050476C0 +340 +0 +102 +{BLKREFS +331 +3543C +331 +36817 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31D13 +102 +{ACAD_XDICTIONARY +360 +31D20 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C5F430495 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31D6A +102 +{ACAD_XDICTIONARY +360 +31D8B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C5D993AEE +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31DB3 +102 +{ACAD_XDICTIONARY +360 +31DB6 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C16BF434C +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31DBC +102 +{ACAD_XDICTIONARY +360 +31DC3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6B556118 +340 +0 +102 +{BLKREFS +331 +31EAA +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31DC9 +102 +{ACAD_XDICTIONARY +360 +31DD8 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C11697A1A +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31EA9 +102 +{ACAD_XDICTIONARY +360 +31EAB +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3E8E4252 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31ED1 +102 +{ACAD_XDICTIONARY +360 +31EE0 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C197029C7 +340 +0 +102 +{BLKREFS +331 +31EF8 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31EE8 +102 +{ACAD_XDICTIONARY +360 +31EEF +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C40DF47AB +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +31EF7 +102 +{ACAD_XDICTIONARY +360 +31EF9 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C21B8102E +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3315D +102 +{ACAD_XDICTIONARY +360 +33172 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4187400E +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +334BA +102 +{ACAD_XDICTIONARY +360 +33534 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7CD475E8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33701 +102 +{ACAD_XDICTIONARY +360 +33716 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C25C3036A +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3378A +102 +{ACAD_XDICTIONARY +360 +33799 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C704D0EF1 +340 +0 +102 +{BLKREFS +331 +36818 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3380D +102 +{ACAD_XDICTIONARY +360 +33810 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C1BF76826 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3383D +102 +{ACAD_XDICTIONARY +360 +33840 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4D20605B +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3384C +102 +{ACAD_XDICTIONARY +360 +3384E +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C10814AB3 +340 +0 +102 +{BLKREFS +331 +35EF4 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +33BD4 +102 +{ACAD_XDICTIONARY +360 +33BD6 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6AFE44E4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3400A +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +D10 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3400E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +D17 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34012 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +D32 +340 +0 +102 +{BLKREFS +331 +34618 +331 +34619 +331 +3461B +331 +3461C +331 +3461E +331 +3461F +331 +34621 +331 +34623 +331 +34625 +331 +34627 +331 +34629 +331 +3462A +331 +3462C +331 +3462D +331 +3462F +331 +34630 +331 +34632 +331 +34633 +331 +34635 +331 +34637 +331 +34639 +331 +3463B +331 +3463D +331 +3463E +331 +34640 +331 +34641 +331 +34643 +331 +34644 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +350A3 +102 +{ACAD_XDICTIONARY +360 +353A2 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +DFGDGDF +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000FA0000FAFA00FAFA00FAFA00FAFA00FAFA00FAFA00FAFA0000FA000000FAFAFA00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA00FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA000000000000000000000000 +310 +00000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA0000000000000000000000 +310 +0000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000 +310 +000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA000000000000000000 +310 +00000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA0000000000000000 +310 +0000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000000000000000000000000000000000000000000000FA0000FA00000000000000 +310 +000000000000000000000000000000000000000000FA0000FAFAFA00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA00FA0000000000FA0000FAFA00FAFA00FAFA00FAFA00FAFA00FAFA00FAFA0000FA000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +3543B +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +3543A +102 +{ACAD_XDICTIONARY +360 +3543D +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C13983F57 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +35F5E +102 +{ACAD_XDICTIONARY +360 +35F61 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6C5846A4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36304 +102 +{ACAD_XDICTIONARY +360 +36305 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C203734BA +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36591 +102 +{ACAD_XDICTIONARY +360 +368FE +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ftsdyer +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FF0000000000 +310 +00000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF00000000 +310 +0000000000000000FF00000000000000000000000000000000000000FFFF0000000000000000FFFF000000000000000000000000000000000000000000FF000000000000FFFF0000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00 +310 +0000000000FF000000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000 +310 +FF000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FFFF000000000000FF00000000000000000000000000000000000000000000 +310 +0000FF000000000000FF000000000000000000000000000000000000000000000000FF000000000000FF0000000000000000000000000000000000000000000000FFFF0000F9000000FFFF00000000000000000000000000000000000000000000FF000000F900000000FF0000000000000000000000000000000000000000 +310 +0000FF000000F900000000FF00000000000000000000000000000000000000000000FF000000F900000000FF00000000000000000000000000000000000000000000FF000000F900000000FF00000000000000000000000000000000000000000000F9F9F9F9F9F9F9F9F9F900000000000000000000000000000000000000 +310 +000000FF000000F900000000FF00000000000000000000000000000000000000000000FF000000F900000000FF00000000000000000000000000000000000000000000FF000000F900000000FF00000000000000000000000000000000000000000000FF000000F900000000FF000000000000000000000000000000000000 +310 +00000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +36816 +102 +{ACAD_XDICTIONARY +360 +36819 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C78AD1BA8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3686F +102 +{ACAD_XDICTIONARY +360 +36884 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4DCB55A9 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36A1A +102 +{ACAD_XDICTIONARY +360 +36A23 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C22D74584 +340 +0 +102 +{BLKREFS +331 +44542 +331 +4458C +331 +445EB +331 +445EC +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36B1D +102 +{ACAD_XDICTIONARY +360 +36B32 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C22C954A2 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36B8F +102 +{ACAD_XDICTIONARY +360 +36BA4 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3BD15C35 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36BC2 +102 +{ACAD_XDICTIONARY +360 +36BC3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C019D3CDB +340 +0 +102 +{BLKREFS +331 +45E0C +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +36BC8 +102 +{ACAD_XDICTIONARY +360 +36BC9 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C6704505C +340 +0 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +36BF8 +102 +{ACAD_XDICTIONARY +360 +36BF9 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C2DC843BC +340 +0 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +36C99 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +SQUARE_3 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36C9D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +SQUARE_4 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CA1 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ROUND_6 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CA5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ROUND_8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CA9 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +SQUARE_37 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CAD +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +SQUARE_47 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CB1 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +SQUARE_48 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CB5 +102 +{ACAD_XDICTIONARY +360 +36CB6 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C218D5DF8 +340 +0 +102 +{BLKREFS +331 +45E0D +331 +45E0E +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +AcDbDynamicBlockGUID +1000 +{4DC71052-2E35-4175-A842-2CD36F7F93B9} +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +36CBC +102 +{ACAD_XDICTIONARY +360 +36CBD +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3E133D25 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CC8 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U104 +340 +0 +102 +{BLKREFS +331 +36CC0 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CCC +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U105 +340 +0 +102 +{BLKREFS +331 +36CC1 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CD0 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U106 +340 +0 +102 +{BLKREFS +331 +36CC2 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36CD4 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U107 +340 +0 +102 +{BLKREFS +331 +36CC3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36D7B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U109 +340 +0 +102 +{BLKREFS +331 +36CC5 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +36D80 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U110 +340 +0 +102 +{BLKREFS +331 +36CC6 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +443A4 +102 +{ACAD_XDICTIONARY +360 +443A7 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7D75011B +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +443E9 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +123dfgsdrg +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FF0000000000 +310 +00000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF00000000 +310 +0000000000000000FF000000000000000000000000000000000000FFFFFAFAFAFAFAFAFAFAFAFFFFFF0000000000000000000000000000000000000000FF000000000000FFFF0000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00 +310 +0000000000FF000000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000 +310 +FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000 +310 +0000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF00000000000000000000000000000000000000000000FAFAFAFAFAFAFAFAFAFAFF000000000000000000000000000000000000000000FF000000000000000000FF00000000000000000000000000000000000000 +310 +0000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF000000000000000000000000000000000000 +310 +000000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000FF0000000000000000000000000000000000 +310 +00000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +443FD +102 +{ACAD_XDICTIONARY +360 +44484 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +678gfd +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FF0000000000 +310 +00000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF000000000000000000000000FF000000000000000000000000000000000000FF00000000 +310 +0000000000000000FF000000000000000000000000000000000000FFFAFAFAFAFAFAFAFAFAFAFAFFFF0000000000000000000000000000000000000000FF000000000000FFFF0000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00 +310 +0000000000FF000000000000000000000000000000000000000000000000FF000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000 +310 +FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000 +310 +0000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF00000000000000000000000000000000000000000000FFFAFAFAFAF9FAFAFAFFFF000000000000000000000000000000000000000000FF00000000F900000000FF00000000000000000000000000000000000000 +310 +0000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FF000000000000000000000000000000000000000000F9F9F9F9F9F9F9F9F9F9F9000000000000000000000000000000000000 +310 +000000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FF0000000000000000000000000000000000 +310 +00000000FFFFFFFFFFF9FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +44639 +331 +4463A +331 +4463B +331 +4463C +331 +4463D +331 +4463E +331 +4463F +331 +44640 +331 +44641 +331 +44642 +331 +44643 +331 +44644 +331 +44645 +331 +44646 +331 +44647 +331 +44648 +331 +44649 +331 +4464A +331 +4464B +331 +4464C +331 +4464D +331 +4464E +331 +4464F +331 +44650 +331 +44651 +331 +44652 +331 +44653 +331 +44654 +331 +44655 +331 +44656 +331 +44657 +331 +44658 +331 +44659 +331 +4465A +331 +4465B +331 +4465C +331 +4465D +331 +4465E +331 +4465F +331 +44660 +331 +44661 +331 +44662 +331 +44663 +331 +44664 +331 +44665 +331 +44666 +331 +44667 +331 +4461D +331 +4461E +331 +4461F +331 +44620 +331 +44621 +331 +44622 +331 +44623 +331 +44624 +331 +44625 +331 +44626 +331 +44627 +331 +44628 +331 +44629 +331 +4462A +331 +4462B +331 +4462C +331 +4462D +331 +4462E +331 +4462F +331 +44630 +331 +44631 +331 +44632 +331 +44633 +331 +44634 +331 +44635 +331 +44636 +331 +44637 +331 +44638 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +4456E +102 +{ACAD_XDICTIONARY +360 +44B57 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +999fgxdgxf +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FF0000000000 +310 +000000000000FFFA000000000000000000000000000000000000FF0000000000000000000000FFFA000000000000000000000000000000000000FF0000000000000000000000FFFA000000000000000000000000000000000000FF0000000000000000000000FFFA000000000000000000000000000000000000FF00000000 +310 +00000000000000FFFA000000000000000000000000000000000000FFFAFAFAFAFAFAFAFAFAFFFFFF0000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF0000 +310 +0000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000FF +310 +00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF00000000000000000000000000000000000000000000 +310 +00FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF00000000000000000000000000000000000000000000FFFFFAFAFAF9FAFAFAFFFF000000000000000000000000000000000000000000FF00000000F900000000FFFD00000000000000000000000000000000000000 +310 +00FF00000000F900000000FFFA0000000000000000000000000000000000000000FF00000000F900000000FFFA0000000000000000000000000000000000000000FF00000000F900000000FFFD0000000000000000000000000000000000000000F9F9F9F9F9F9F9F9F9F9F9FD000000000000000000000000000000000000 +310 +0000FF00000000F900000000FFFA0000000000000000000000000000000000000000FF00000000F900000000FF000000000000000000000000000000000000000000FF00000000F900000000FFFA0000000000000000000000000000000000000000FF00000000F900000000FFFD0000000000000000000000000000000000 +310 +00000000FFFFFFFFF9FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +4466C +331 +4466D +331 +4466E +331 +4466F +331 +44670 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +445CD +102 +{ACAD_XDICTIONARY +360 +44AC6 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +456yuftyfvh +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FAFF000000000000 +310 +0000000000FF00FA00000000000000000000000000000000FAFF0000000000000000000000FFFA000000000000000000000000000000000000FF0000000000000000000000FFFAFA00000000000000000000000000000000FAFF0000000000000000000000FFFA0000000000000000000000000000000000FAFF0000000000 +310 +000000000000FF00FA0000000000000000000000000000000000FFFFFAFAFAFAFAFAFAFAFFFFFF0000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF000000 +310 +00000000FF0000000000000000000000000000000000000000000000FF00000000000000FF0000000000000000000000000000000000000000000000FF0000000000000000FF00000000000000000000000000000000000000000000FF0000000000000000FF0000000000000000000000000000000000000000000000FF00 +310 +00000000000000FF00000000000000000000000000000000000000000000FF0000000000000000FF0000000000000000000000000000000000000000000000FF00000000000000FF000000000000000000000000000000000000000000000000FF000000000000FF0000000000000000000000000000000000000000000000 +310 +00FF000000000000FF000000000000000000000000000000000000000000000000FF000000000000FF0000000000000000000000000000000000000000000000FFFAFAFAF9FAFAFAFAFF000000000000000000000000000000000000FD000000FF000000F900000000FF000000FD0000000000000000000000000000FAFAFA +310 +FAFF000000F900000000FFFAFAFAFA0000000000000000000000000000FAFAFAFAFF000000F900000000FFFAFAFAFA0000000000000000000000000000FD000000FF000000F900000000FF000000FD0000000000000000000000000000FD000000F9F9F9F9F9F9F9F9F9F9000000FD0000000000000000000000000000FAFA +310 +FAFAFF000000F900000000FFFAFAFAFA000000000000000000000000000000000000FF000000F900000000FF000000000000000000000000000000000000FAFAFAFAFF000000F900000000FFFAFAFAFA0000000000000000000000000000FD000000FF000000F900000000FF000000FD000000000000000000000000000000 +310 +000000FFFFFFFFF9FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +44671 +331 +44672 +331 +44673 +331 +44674 +331 +44675 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +4461A +102 +{ACAD_XDICTIONARY +360 +44750 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ghcftfc +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB000000000000000000000000000000000000000000000000000000 +310 +00000000FB0000000000000000000000000000000000000000FFFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFFFF000000000000000000FFFAFAF9F9FAFFFAF9FAFAFAF9F9FAFFFAF9F9FAFAFDFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF000000000000000000FFFAFAFAFAFA +310 +FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFF000000000000000000FFFAFAF9F9FAFFFAF9FAFAFAF9F9FAF9FAF9F9FAFAFDFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF000000FBFBFBFBFBFBFFFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFFFB0000000000000000FFFAFAF9F9 +310 +FAFAFAF9FAFAFAF9F9FAF9FAF9F9FAFAFDFF000000000000000000FFFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFDFF000000000000000000FFFAF9F9F9FAFFF9F9FAFAF9F9F9FAFFF9F9F9FAF9F9FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF000000000000000000FFFAFAFA +310 +FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFF000000000000000000FFFAFAF9F9FAFFFAF9FAFAFAF9F9FAFFFAF9F9FAFAFDFF000000000000000000FFF9FAF9F9F9FAFAF9F9F9FAF9F9F9F9FAF9F9F9FAFDFF0000000000000000000000000000000000000000FB0000000000000000000000000000000000000000000000 +310 +0000000000000000FB00000000000000000000000000000000000000000000000000000000000000FB00000000000000000000000000000000000000000000000000000000000000FB00000000000000000000000000000000000000000000000000000000000000FB00000000000000000000000000000000000000000000 +310 +000000000000000000FB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +44A54 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +44A51 +102 +{ACAD_XDICTIONARY +360 +44A55 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C29E31674 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +44C0F +102 +{ACAD_XDICTIONARY +360 +44C10 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C2F884FB3 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +44CAB +102 +{ACAD_XDICTIONARY +360 +44CAC +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C74366CC6 +340 +0 +102 +{BLKREFS +331 +44CED +331 +44CEE +331 +44CF1 +331 +44CF2 +331 +450FA +331 +450FB +331 +450FC +331 +450FD +331 +45186 +331 +45187 +331 +45188 +331 +45189 +331 +45497 +331 +4549E +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +450F4 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +VBNJFGYJGYU +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF0000FF0000 +310 +00FF00000000000000FF00FAFAFF0000000000000000FF000000FFF900FF000000FF0000000000000000FFFAFA0000000000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA0000000000FAFAFAFAFAFAFA000000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000 +310 +000000FAFFFFFFFFFFFA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F90000 +310 +00000000FA0000000000FA000000000000FA000000F9F9FAF9F9F9F9F9F9F9F9F9F9F9F9FAF9F9F9F9F9FAF9F9F9F9F9F9FAF900000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F900 +310 +0000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FAFFFFFFFFFFFA000000000000FA0000000000FA0000000000F9 +310 +000000000000FA0000000000FA000000000000FA0000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA0000000000FAFAFAFAFAFAFA00000000000000FF000000FFF900FF000000FF0000000000000000000000000000000000000000FF000000FF0000FF000000FF00000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +4510C +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +4510B +102 +{ACAD_XDICTIONARY +360 +4510D +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C127B04C8 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45180 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +FHCFGJHCVGJHFGU +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF0000FF0000 +310 +00FF00000000000000FF00000000FF00000000000000FF000000FFF900FF000000FF00000000000000FF00FAFA00FF000000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA0000000000FAFAFAFAFAFAFA000000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000 +310 +000000FAFFFFFFFFFFFA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F90000 +310 +00000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA000000F9F9FAF9F9F9F9F9F9F9F9F9F9F9F9FAF9F9F9F9F9FAF9F9F9F9F9F9FAF900000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F900 +310 +0000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FA0000000000FA000000000000FA0000000000FA0000000000F9000000000000FAFFFFFFFFFFFA000000000000FA0000000000FA0000000000F9 +310 +000000000000FA0000000000FA000000000000FA0000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA0000000000FAFAFAFAFAFAFAFA000000000000FF000000FFF900FF000000FF0000000000000000FF00FF000000000000000000FF000000FF0000FF000000FF00000000000000FF000000FF00000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +4548E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +987fgsdrtgse +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000FFFFFF000000FFFFFF000000000000000000000000FFFAFAFAFF000000000000FF00FF000000FF00FF0000000000000000000000FFFFFFFFFFFFFF0000000000FF00FF000000FF00FF00000000000000000000FF00000000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFF +310 +FF0000000000000000FF00000000000000FF0000FF0000000000000000000000FAFFFFFFFFFFFFFFFFFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF00000000000000000000 +310 +00FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF000000000000000000 +310 +0000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FA00FCFCFCFCFCFCFCFA00000000000000FF0000FF0000000000000000000000FAFFFFFFFFFFFFFFFFFA00000000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FF00000000000000FF00000000FF00FF000000FF +310 +00FF00000000000000000000FF00000000000000FF00000000FF00FF000000FF00FF0000000000000000000000FFFFFFFFFFFFFF0000000000FFFFFF000000FFFFFF000000000000000000000000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +45577 +331 +45578 +331 +45579 +331 +4557A +331 +4557B +331 +4557C +331 +4557D +331 +4557E +331 +4557F +331 +45580 +331 +45581 +331 +45582 +331 +45583 +331 +45584 +331 +45585 +331 +45586 +331 +45587 +331 +45588 +331 +45589 +331 +4558A +331 +4558B +331 +4558C +331 +4558D +331 +4558E +331 +4558F +331 +45590 +331 +45591 +331 +45592 +331 +45593 +331 +45594 +331 +45595 +331 +45596 +331 +45597 +331 +45598 +331 +45599 +331 +4559A +331 +4559B +331 +4559C +331 +4559D +331 +4559E +331 +4559F +331 +455A0 +331 +455A1 +331 +455A2 +331 +455A3 +331 +455A4 +331 +455A5 +331 +455A6 +331 +455A7 +331 +455A8 +331 +455A9 +331 +455AA +331 +455AB +331 +455AC +331 +455AD +331 +455AE +331 +455AF +331 +455B0 +331 +455B1 +331 +455B2 +331 +455B3 +331 +455B4 +331 +455B5 +331 +455B6 +331 +455B7 +331 +455B8 +331 +455B9 +331 +455BA +331 +455BB +331 +455BC +331 +455BD +331 +455BE +331 +455BF +331 +455C0 +331 +455C1 +331 +455C2 +331 +455C3 +331 +455C4 +331 +455C5 +331 +455C6 +331 +455C7 +331 +455C8 +331 +455C9 +331 +455CA +331 +455CB +331 +455CC +331 +455CD +331 +455CE +331 +455CF +331 +455D0 +331 +455D1 +331 +455D2 +331 +455D3 +331 +455D4 +331 +455D5 +331 +455D6 +331 +455D7 +331 +455D8 +331 +455D9 +331 +455DA +331 +455DB +331 +455DC +331 +455DD +331 +455DE +331 +455DF +331 +455E0 +331 +455E1 +331 +455E2 +331 +455E3 +331 +455E4 +331 +455E5 +331 +455E6 +331 +455E7 +331 +455E8 +331 +455E9 +331 +455EA +331 +455EB +331 +455EC +331 +455ED +331 +455EE +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +45576 +102 +{ACAD_XDICTIONARY +360 +455F2 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7C6044F2 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45A46 +102 +{ACAD_XDICTIONARY +360 +45FB3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +236656 +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FAFAFAFAFAFAFA00000000000000000000000000000000000000000000000000FA000000000000FA0000FAFAFAFAFAFAFAFAFAFAFAFA +310 +FA000000000000000000FA000000000000FA0000FA0000000000000000000000FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA00000000000000000000 +310 +00FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA000000000000000000 +310 +0000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000000000000000FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FAFAFAFAFAFAFAFAFAFAFAFAFA000000000000000000FA000000000000FA0000000000000000000000 +310 +00000000000000000000000000FA000000000000FA000000000000000000000000000000000000000000000000FAFAFAFAFAFAFA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +45A8A +331 +45A8B +331 +45A8C +331 +45A8D +331 +45A8E +331 +45A8F +331 +45A90 +331 +45A91 +331 +45A92 +331 +45A93 +331 +45A94 +331 +45A95 +331 +45A96 +331 +45A97 +331 +45A98 +331 +45A99 +331 +45A9A +331 +45A9B +331 +45A9C +331 +45A9D +331 +45A9E +331 +45A9F +331 +45AA0 +331 +45AA1 +331 +45AA2 +331 +45AA3 +331 +45AA4 +331 +45AA5 +331 +45AA6 +331 +45AA7 +331 +45AA8 +331 +45AA9 +331 +45AAA +331 +45AAB +331 +45AAC +331 +45AAD +331 +45AAE +331 +45AAF +331 +45AB0 +331 +45AB1 +331 +45AB2 +331 +45AB3 +331 +45AB4 +331 +45AB5 +331 +45AB6 +331 +45AB7 +331 +45AB8 +331 +45AB9 +331 +45ABA +331 +45ABB +331 +45ABC +331 +45ABD +331 +45ABE +331 +45ABF +331 +45AC0 +331 +45AC1 +331 +45AC2 +331 +45AC3 +331 +45AC4 +331 +45AC5 +331 +45AC6 +331 +45AC7 +331 +45AC8 +331 +45AC9 +331 +45ACA +331 +45ACB +331 +45ACC +331 +45ACD +331 +45ACE +331 +45ACF +331 +45AD0 +331 +45AD1 +331 +45AD2 +331 +45AD3 +331 +45AD4 +331 +45AD5 +331 +45AD6 +331 +45AD7 +331 +45AD8 +331 +45AD9 +331 +45ADA +331 +45ADB +331 +45ADC +331 +45ADD +331 +45ADE +331 +45ADF +331 +45AE0 +331 +45AE1 +331 +45AE2 +331 +45AE3 +331 +45AFF +331 +45B00 +331 +45B01 +331 +45B02 +331 +45B03 +331 +45B04 +331 +45B05 +331 +45B06 +331 +45B07 +331 +45B08 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +45BCD +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D126 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45BDA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D127 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45CBC +102 +{ACAD_XDICTIONARY +360 +45CBD +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C39296DF6 +340 +0 +102 +{BLKREFS +331 +45D38 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45D56 +102 +{ACAD_XDICTIONARY +360 +45D5B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C4EFA4BC1 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45D7B +102 +{ACAD_XDICTIONARY +360 +45D7C +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C01CC1A43 +340 +0 +102 +{BLKREFS +331 +45E0B +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +45D81 +102 +{ACAD_XDICTIONARY +360 +45D82 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C5B8B49D5 +340 +0 +102 +{BLKREFS +331 +45E10 +331 +45E11 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +45E1C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D133 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E29 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D134 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E36 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D135 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E44 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D136 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E51 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D137 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E5E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D138 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E6B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D139 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45E78 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D140 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45EFE +102 +{ACAD_XDICTIONARY +360 +45EFF +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +rgeger +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FAFAFAFAFAFAFAFAFAFAFAFA00000000000000000000000000000000000000FA0000000000 +310 +00FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA00000000 +310 +0000FA0000000000FA00000000000000000000000000000000000000FAFAFAFAFAFAFAFAFAFAFAFA000000000000000000000000000000000000000000FA00000000FA000000FA00000000000000000000000000000000000000000000FA00000000FA000000FA00000000000000000000000000000000000000000000FA00 +310 +000000FA000000FA00000000000000000000000000000000000000000000FA00000000FA000000FA00000000000000000000000000000000000000000000FA00000000FA000000FA00000000000000000000000000000000000000000000FA00000000FA000000FA00000000000000000000000000000000000000000000FA +310 +00000000FA000000FA00000000000000000000000000000000000000000000FA00000000FA000000FA0000000000000000000000000000000000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA00 +310 +0000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA +310 +000000000000FA0000000000FA000000000000000000000000000000000000FAFAFAFAFAFAFAFAFAFAFAFAFAFA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000 +310 +FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA000000000000000000000000000000000000FA000000000000FA0000000000FA0000000000000000000000000000000000 +310 +00FAFAFAFAFAFAFAFAFAFAFAFAFAFA0000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +45F2A +102 +{ACAD_XDICTIONARY +360 +45F2B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ERERWE +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FBFB000000000000000000000000000000000000000000000000000000000000 +310 +FBFB000000000000000000000000000000000000000000000000000000000000FBFB000000000000000000000000000000000000000000000000000000000000FBFB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000FBFB000000000000000000000000000000000000000000000000000000000000FBFB000000000000000000000000000000000000000000000000000000000000FBFB0000000000000000000000000000000000000000000000 +310 +00000000000000FBFB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +45F36 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45F32 +102 +{ACAD_XDICTIONARY +360 +45F33 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3B02768B +340 +0 +102 +{BLKREFS +331 +45F26 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +45FE8 +102 +{ACAD_XDICTIONARY +360 +45FEE +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C07524055 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +4618D +102 +{ACAD_XDICTIONARY +360 +4634F +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +esrfsaease45 +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA0000FA00FA000000FA00 +310 +00000000000000000000FA00FA00FA00000000000000FAFA000000FA00FA00000000000000000000000000FAFAFA0000000000000000FAFA000000FA00FA0000000000000000000000FAFAFAFAFAFAFAFA0000FAFAFAFAFAFAFAFAFAFAFAFAFA000000000000000000FA000000000000FA0000FA0000000000F90000000000 +310 +FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F900000000 +310 +00FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FAF9F9F9F9F9F9F9F9F9F9F9FAF9FCFCFCFCFCFCFCFCFAF9F9F9F9F9F9FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F9000000 +310 +0000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA000000000000000000FA000000000000FA000000FAFAFAFAFAFAFAFAFAFAFAFA000000000000000000FA000000000000FA0000000000FAFA000000FA +310 +00FA0000000000000000000000FAFAFAFAFAFAFAFA0000000000FAFA000000FA00FA00000000000000000000000000FA00FA0000000000000000FAFA000000FA00FA000000000000000000000000FA000000FA000000000000FA0000FA00FA000000FA00000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +461DB +331 +461DC +331 +461DD +331 +461DE +331 +461DF +331 +461E0 +331 +461E1 +331 +461E2 +331 +461E3 +331 +461E4 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +46273 +102 +{ACAD_XDICTIONARY +360 +4645A +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +efaserfsaerqa +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA0000FA00FA000000FA00 +310 +00000000000000000000000000000000000000000000FAFA000000FA00FA000000000000000000000000FA000000FA00000000000000FAFA000000FA00FA00000000000000000000000000FAFAFA0000000000000000FAFA000000FA00FA0000000000000000000000FAFAFAFAFAFAFAFA000000FAFAFAFAFAFAFAFAFAFAFA +310 +FA000000000000000000FA000000000000FA0000FA0000000000F90000000000FA000000000000000000FA000000000000FA0000FA0000000000F90000000000FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F900000000 +310 +00FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FAF9F9F9F9F9F9F9F9F9F9F9FAF9FCFCFCFCFCFCFCFCFAF9F9F9F9F9F9FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F9000000 +310 +0000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FA00FCFCFCFCFCFCFCFCFA000000000000FA0000FA0000000000F90000000000FAFFFCFCFCFCFCFCFCFCFA000000000000FA0000FAFAFAFAFAFAFAFAFA +310 +FAFAFAFA000000000000000000FA000000000000FA0000000000FAFA000000FA00FA0000000000000000000000FAFAFAFAFAFAFAFA0000000000FAFA000000FA00FA00000000000000000000000000FA00FA00000000000000FA0000FA00FA000000FA0000000000000000000000FA000000FA000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +462C2 +331 +462C3 +331 +462C4 +331 +462C5 +331 +462C6 +331 +462C7 +331 +462C8 +331 +462C9 +331 +462CA +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +4661C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D149 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +46692 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D150 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +4669D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D151 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +466D3 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D152 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +467B7 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D153 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +467C5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D154 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +467D2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D155 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +467DF +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D156 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +467ED +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D157 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5A +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +5B +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F +330 +5D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +60 +330 +5D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +99 +330 +98 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +CAD_INFO + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_INFO + 1 + + 0 +ATTDEF + 5 +9A +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-72.75800251247529 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMWIDTH + 2 +BOMWIDTH + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9B +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-56.23436060281256 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMHEIGHT + 2 +BOMHEIGHT + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9C +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-37.35019754088444 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-172,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS2 + 2 +BOMSTARTPOS2 + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9D +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-17.9939314797416 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-258,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS3 + 2 +BOMSTARTPOS3 + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9E +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-19.17419359492214 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSECONDLINE + 2 +BOMSECONDLINE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9F +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-73.5775887950117 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMTHIRDLINE + 2 +BOMTHIRDLINE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +A0 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-54.34594552785802 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +PDMUPDATE + 2 +PDMUPDATE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +A1 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-37.58625057953986 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS + 2 +BOMSTARTPOS + 70 + 9 +280 + 0 + 0 +ENDBLK + 5 +A2 +330 +98 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +A4 +330 +A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +CAD_BOM + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_BOM + 1 + + 0 +LWPOLYLINE + 5 +296 +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +7.92266504093115 + 20 +5.999999999999993 + 10 +7.92266504093115 + 20 +-0.0000000000000142 + 0 +LWPOLYLINE + 5 +297 +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +31.92266504093115 + 20 +5.999999999999993 + 10 +31.92266504093115 + 20 +-0.0000000000000142 + 0 +LWPOLYLINE + 5 +298 +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +39.92266504093115 + 20 +5.999999999999993 + 10 +39.92266504093115 + 20 +-0.0000000000000142 + 0 +ATTDEF + 5 +299 +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +3.768516320804707 + 20 +3.091130809550094 + 30 +0.0 + 40 +1.8 + 1 + + 72 + 4 + 11 +3.768516320804707 + 21 +3.091130809550094 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +序号 + 2 +序号 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +29A +330 +A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +10.29814557068013 + 20 +2.307237864072746 + 30 +0.0 + 40 +1.8 + 1 + +100 +AcDbAttributeDefinition + 3 +名称 + 2 +名称 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +29B +330 +A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +36.03643627252728 + 20 +2.145288592350525 + 30 +0.0 + 40 +1.8 + 1 + + 72 + 1 + 11 +36.03643627252728 + 21 +2.145288592350525 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +数量 + 2 +数量 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +29C +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +42.60422045577056 + 20 +2.124075603955546 + 30 +0.0 + 40 +1.8 + 1 + + 41 +0.7 +100 +AcDbAttributeDefinition + 3 +规格 + 2 +规格 + 70 + 0 +280 + 0 + 0 +LINE + 5 +29D +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +5.999999999999993 + 30 +0.0 + 11 +109.0474731916058 + 21 +5.999999999999936 + 31 +0.0 + 0 +LINE + 5 +29E +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbLine + 10 +109.0474731916058 + 20 +5.999999999999936 + 30 +0.0 + 11 +109.0474731916058 + 21 +-0.0000000000000711 + 31 +0.0 + 0 +LINE + 5 +29F +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbLine + 10 +109.0474731916058 + 20 +-0.0000000000000711 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +A3 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +5.999999999999993 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +86.44972068186402 + 20 +5.999999999999964 + 30 +0.0 + 11 +86.44972068186402 + 21 +-0.0000000000000568 + 31 +0.0 + 0 +ATTDEF + 5 +2A2 +330 +A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +86.91609108889924 + 20 +1.939485363258804 + 30 +0.0 + 40 +1.8 + 1 + + 41 +0.5 +100 +AcDbAttributeDefinition + 3 +BOM描述 + 2 +BOM描述 + 70 + 0 +280 + 0 + 0 +ENDBLK + 5 +AD +330 +A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1AE +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +CAD_TITLE + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_TITLE + 1 + + 0 +LWPOLYLINE + 5 +1B0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.4999999999999999 + 10 +-281.9999999999999 + 20 +-0.0000000000000142 + 10 +0.0 + 20 +-0.0000000000000142 + 10 +0.0 + 20 +199.9999999999999 + 10 +-281.9999999999999 + 20 +199.9999999999999 + 0 +LWPOLYLINE + 5 +1B1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.3 + 10 +-70.0 + 20 +-0.0000000000000142 + 10 +-70.0 + 20 +31.99999999999999 + 10 +0.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1B2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +4.999999999999998 + 10 +-0.0000000000001066 + 20 +4.999999999999998 + 0 +TEXT + 5 +1B3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-34.0903112182391 + 20 +1.896916662222395 + 30 +0.0 + 40 +1.61704790018511 + 1 +UNIT mm +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +4.999999999999998 + 10 +-143.0 + 20 +4.999999999999998 + 0 +TEXT + 5 +1B5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-53.39200540086567 + 20 +1.867236129095367 + 30 +0.0 + 40 +1.61704790018511 + 1 +NOT IN SCALE +100 +AcDbText + 0 +TEXT + 5 +1B6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbText + 10 +-68.60340283292325 + 20 +6.640564444717022 + 30 +0.0 + 40 +1.623435805721156 + 1 +CHKD +100 +AcDbText + 0 +TEXT + 5 +1B7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-68.56441300901326 + 20 +11.66131768742559 + 30 +0.0 + 40 +1.623435805721156 + 1 +DWN +100 +AcDbText + 0 +TEXT + 5 +1B8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-68.18041322794497 + 20 +21.86656214288637 + 30 +0.0 + 40 +1.623435805721156 + 1 +PRODUCT NO. +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.99999999999999 + 20 +-0.0000000000000142 + 10 +-34.99999999999986 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1BA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-62.69660611920495 + 20 +2.559348690284408 + 10 +-61.47902926491403 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1BB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-69.78747883220069 + 20 +2.559348690284408 + 10 +-68.78449039065902 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1BC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-63.50832402206549 + 20 +2.559348690284408 + 10 +-63.10246507063538 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1BD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-68.37863143922891 + 20 +2.559348690284408 + 10 +-67.97277248779847 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1BE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-67.56691353636825 + 20 +2.559348690284408 + 10 +-66.34933668207745 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1BF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.94347773064715 + 20 +2.559348690284408 + 10 +-65.5376187792169 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1C0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.13175982778648 + 20 +2.559348690284408 + 10 +-63.91418297349569 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1C1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.07317031348383 + 20 +2.559348690284408 + 10 +-60.66731136205338 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1C2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-60.26145241062338 + 20 +2.559348690284408 + 10 +-59.0438755563325 + 20 +2.559348690284408 + 0 +TEXT + 5 +1C3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-33.54913836335891 + 20 +6.732596412797809 + 30 +0.0 + 40 +1.623435805721156 + 1 +APPD +100 +AcDbText + 0 +TEXT + 5 +1C4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-33.52225570579925 + 20 +11.63142803396278 + 30 +0.0 + 40 +1.623435805721156 + 1 +DSN +100 +AcDbText + 0 +LWPOLYLINE + 5 +1C5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-67.50250254803439 + 20 +0.7021746622700658 + 10 +-67.50250254803439 + 20 +4.342154156640786 + 10 +-61.59694451279003 + 20 +3.75180541582408 + 10 +-61.59694451279003 + 20 +1.366891964744621 + 0 +LWPOLYLINE + 5 +1C6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +3.557088282541143 + 10 +-57.58361782520203 + 20 +4.774665136831954 + 0 +CIRCLE + 5 +1C7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-57.58361782520203 + 20 +2.559348690284408 + 30 +0.0 + 40 +1.857174028014293 + 0 +CIRCLE + 5 +1C8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-57.58361782520203 + 20 +2.559348690284408 + 30 +0.0 + 40 +1.192456725539657 + 0 +LWPOLYLINE + 5 +1C9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.82629870204185 + 20 +2.559348690284408 + 10 +-56.60872184775074 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1CA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-58.63801660490196 + 20 +2.559348690284408 + 10 +-58.23215765347197 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1CB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +1.121934573959429 + 10 +-57.58361782520203 + 20 +2.339511428250311 + 0 +LWPOLYLINE + 5 +1CC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.29020620340858 + 20 +0.3102166710988783 + 10 +-57.29020620340858 + 20 +0.7160756225291536 + 0 +LWPOLYLINE + 5 +1CD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-55.39114499345997 + 20 +2.559348690284408 + 10 +-54.17356813916911 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1CE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-56.2028628963204 + 20 +2.559348690284408 + 10 +-55.79700394489009 + 20 +2.559348690284408 + 0 +LWPOLYLINE + 5 +1CF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +2.745370379680637 + 10 +-57.58361782520203 + 20 +3.151229331110748 + 0 +TEXT + 5 +1D0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-25.03367366006568 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +DRAW NO. +100 +AcDbText + 0 +TEXT + 5 +1D1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-6.306361925780255 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +REV +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-8.000000000000004 + 20 +14.99999999999998 + 10 +-8.000000000000004 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1D3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +9.999999999999993 + 10 +-0.0000000000001066 + 20 +9.999999999999993 + 0 +LWPOLYLINE + 5 +1D4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +14.99999999999998 + 10 +-0.0000000000001066 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1D6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-53.76082454905006 + 20 +0.0000000000001066 + 10 +-53.76082454905006 + 20 +4.999999999999998 + 0 +LWPOLYLINE + 5 +1D7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-20.79384049806639 + 20 +0.0000000000001066 + 10 +-20.79384049806639 + 20 +4.999999999999998 + 0 +TEXT + 5 +1D8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-20.09406221364952 + 20 +1.750249288090743 + 30 +0.0 + 40 +1.623435805721156 + 1 +SHEET: +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D9 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-281.9999999999999 + 20 +199.9999999999999 + 10 +-208.8975883652207 + 20 +199.9999999999999 + 10 +-208.8975883652207 + 20 +191.9999999999999 + 10 +-281.9999999999999 + 20 +191.9999999999999 + 0 +TEXT + 5 +1DA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-277.4171300080511 + 20 +195.107579051916 + 30 +0.0 + 40 +2.999999999999999 + 1 +模块型号: + 7 +STYLE1 +100 +AcDbText + 0 +LWPOLYLINE + 5 +1E1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +24.99999999999998 + 10 +-0.0000000000001066 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1E2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +24.69999999999997 + 10 +-0.0000000000001066 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-27.99999999999999 + 20 +14.99999999999998 + 10 +-27.99999999999999 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E4 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +-0.0000000000000142 + 10 +-86.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1E5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +9.999999999999993 + 10 +-143.0 + 20 +9.999999999999993 + 0 +LWPOLYLINE + 5 +1E6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +14.99999999999998 + 10 +-143.0 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1E7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +19.99999999999999 + 10 +-143.0 + 20 +19.99999999999999 + 0 +LWPOLYLINE + 5 +1E8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +24.99999999999998 + 10 +-143.0 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1E9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +31.99999999999999 + 10 +-143.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1EA +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +31.99999999999999 + 10 +-70.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1EB +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +24.99999999999998 + 10 +-70.0 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1EC +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-143.0 + 20 +-0.0000000000000142 + 10 +-143.0 + 20 +31.99999999999999 + 0 +TEXT + 5 +1ED +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-142.6904661770419 + 20 +1.808681101476388 + 30 +0.0 + 40 +1.808288085995909 + 1 +NO. +100 +AcDbText + 0 +TEXT + 5 +1EE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-125.5555864158865 + 20 +1.530428388184298 + 30 +0.0 + 40 +1.808288085995909 + 1 +CONTENT +100 +AcDbText + 0 +TEXT + 5 +1EF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-97.46423430685104 + 20 +1.556588360975979 + 30 +0.0 + 40 +1.808288085995909 + 1 +DATE +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F0 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6548477006348 + 20 +20.49288531911981 + 10 +-138.6548477006348 + 20 +20.49288531911981 + 10 +-140.6548477006349 + 20 +24.19288531911982 + 0 +LWPOLYLINE + 5 +1F1 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.7072592865967 + 20 +15.73109000275174 + 10 +-138.7072592865967 + 20 +15.73109000275174 + 10 +-140.7072592865967 + 20 +19.43109000275174 + 0 +LWPOLYLINE + 5 +1F2 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +10.66462713107122 + 10 +-138.6407309650367 + 20 +10.66462713107122 + 10 +-140.6407309650366 + 20 +14.36462713107121 + 0 +LWPOLYLINE + 5 +1F3 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +5.664627131071221 + 10 +-138.6407309650367 + 20 +5.664627131071221 + 10 +-140.6407309650366 + 20 +9.364627131071217 + 0 +TEXT + 5 +1F4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.6946939983357 + 20 +27.05146599035766 + 30 +0.0 + 40 +2.644621325769017 + 1 +AMEND +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F5 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.9999987885299 + 20 +0.0000004531573978 + 10 +-101.9999987885299 + 20 +25.0000004531574 + 0 +LINE + 5 +1F6 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-138.0 + 20 +24.99999999999998 + 30 +0.0 + 11 +-138.0 + 21 +-0.0000000000000142 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-86.0 + 20 +19.99999999999999 + 30 +0.0 + 11 +-70.0 + 21 +19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-86.0 + 20 +9.999999999999993 + 30 +0.0 + 11 +-70.0 + 21 +9.999999999999993 + 31 +0.0 + 0 +ATTDEF + 5 +1F9 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-79.09760034555723 + 20 +27.07756872650082 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-79.09760034555723 + 21 +27.07756872650082 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +名称 + 2 +名称 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FA +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-65.25693255795716 + 20 +16.40895482215455 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +型号 + 2 +规格 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FB +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-17.76046734238672 + 20 +16.40895482215455 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-17.76046734238672 + 21 +16.40895482215455 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +图号 + 2 +图号 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FC +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-3.63345265299688 + 20 +16.40893286185854 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-3.63345265299688 + 21 +16.40893286185854 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +版本 + 2 +版本 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FD +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-44.88583129692758 + 20 +194.9963404908602 + 30 +0.0 + 40 +2.999999999999999 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +模块型号: + 2 +模块型号: + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FE +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-56.6657383840062 + 20 +11.64946121104678 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +出图人 + 2 +出图人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FF +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-22.68851554197283 + 20 +11.64946121104678 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +设计人 + 2 +设计人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +200 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-56.52107004136551 + 20 +6.631247151580673 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +校对人 + 2 +校对人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +201 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-22.55630823361582 + 20 +6.631247151580673 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +批准人 + 2 +批准人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +202 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-10.16865380557565 + 20 +1.828358270057549 + 30 +0.0 + 40 +1.6234 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +分页号 + 2 +分页号 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +203 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7207309650367 + 20 +5.664627131071221 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +5.664627131071221 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO1 + 2 +NO1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +204 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1217850460963 + 20 +6.330415810882412 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1217850460963 + 21 +6.330415810882412 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT1 + 2 +CONTENT1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +205 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.03894729766529 + 20 +6.334234442989484 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.03894729766529 + 21 +6.334234442989484 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE1 + 2 +DATE1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +206 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7207309650367 + 20 +10.66462713107122 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +10.66462713107122 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO2 + 2 +NO2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +207 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1355565871456 + 20 +11.60491085411507 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1355565871456 + 21 +11.60491085411507 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT2 + 2 +CONTENT2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +208 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.07360627998781 + 20 +11.68424119340175 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998781 + 21 +11.68424119340175 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE2 + 2 +DATE2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +209 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7872592865967 + 20 +15.73109000275174 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7872592865967 + 21 +15.73109000275174 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO3 + 2 +NO3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20A +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1095011938893 + 20 +16.70606779151688 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +16.70606779151688 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT3 + 2 +CONTENT3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20B +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.07360627998781 + 20 +16.5191018682849 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998781 + 21 +16.5191018682849 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE3 + 2 +DATE3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20C +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.6548477006349 + 20 +20.6408853191199 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.6548477006349 + 21 +20.6408853191199 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO4 + 2 +NO4 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20D +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1095011938893 + 20 +21.51659752441713 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +21.51659752441713 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT4 + 2 +CONTENT4 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20E +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.19728740292493 + 20 +21.38413487189364 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.19728740292493 + 21 +21.38413487189364 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE4 + 2 +DATE4 + 70 + 0 +280 + 0 + 0 +INSERT + 5 +45D38 +330 +1AD +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbBlockReference + 2 +A$C39296DF6 + 10 +-35.00000000000015 + 20 +28.49999999999993 + 30 +0.0 + 41 +2.800000000000023 + 42 +2.800000000000023 + 43 +2.800000000000023 + 0 +ENDBLK + 5 +1AF +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +18F4 +330 +18F3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +tolerance + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +tolerance + 1 + + 0 +TEXT + 5 +14ADE +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +70.12364294128619 + 20 +-88.88962081864635 + 30 +0.0 + 40 +0.9885382583840043 + 1 +DECIMAL +100 +AcDbText + 0 +TEXT + 5 +14ADF +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +77.83442865855315 + 20 +-99.05141414226671 + 30 +0.0 + 40 +1.138796073658373 + 1 +1/4 +100 +AcDbText + 0 +LINE + 5 +14AE0 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +73.85266340983662 + 20 +-98.10223553900938 + 30 +0.0 + 11 +72.3297660121882 + 21 +-98.98148076148979 + 31 +0.0 + 0 +LINE + 5 +14AE1 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +74.09355527219142 + 20 +-98.98148076148979 + 30 +0.0 + 11 +72.3297660121882 + 21 +-98.98148076148979 + 31 +0.0 + 0 +ARC + 5 +14AE2 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +72.3297660121882 + 20 +-98.98148076148979 + 30 +0.0 + 40 +1.150316722934908 +100 +AcDbArc + 50 +0.0 + 51 +29.99999999999891 + 0 +TEXT + 5 +14AE3 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +75.57294574334134 + 20 +-99.00987013715348 + 30 +0.0 + 40 +1.15473921868959 + 1 +%%p +100 +AcDbText + 0 +TEXT + 5 +14AE4 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +72.37773606833579 + 20 +-95.41733513161431 + 30 +0.0 + 40 +1.15473921868959 + 1 +.xx %%P .15 +100 +AcDbText + 0 +MTEXT + 5 +14AE5 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbMText + 10 +80.47481219605089 + 20 +-97.2501714103252 + 30 +0.0 + 40 +0.8435526471543506 + 41 +1.929204904041999 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +\f宋体|b0|i0|c134|p2;。 + 73 + 1 + 44 +1.0 + 0 +TEXT + 5 +14AE6 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +69.47109180761362 + 20 +-87.14485069751501 + 30 +0.0 + 40 +1.202576339703648 + 1 +TOLERANCE : +100 +AcDbText + 0 +TEXT + 5 +14AE7 +330 +18F3 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +72.50613313807358 + 20 +-92.10570918352703 + 30 +0.0 + 40 +1.15473921868959 + 1 +.x %%p .20 +100 +AcDbText + 0 +ENDBLK + 5 +18FF +330 +18F3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2092A +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4A4D7E8D + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4A4D7E8D + 1 + + 0 +MTEXT + 5 +2092B +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-43.40559538957824 + 20 +-11.19999999999999 + 30 +0.0 + 40 +1.44 + 41 +43.40559538957814 + 46 +0.0 + 71 + 4 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\H1x;Truly level A management standard\fSimSun|b0|i0|c134|p2;(\fArial|b0|i0|c0|p34;SVHC+I+II+III\fSimSun|b0|i0|c134|p2;)} + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +MTEXT + 5 +2092C +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-43.40559538957824 + 20 +-8.299999999999926 + 30 +0.0 + 40 +1.44 + 41 +43.40559538957814 + 46 +0.0 + 71 + 4 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Truly level B management standard}({\fArial|b0|i0|c0|p34;SVHC+I+II}) + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LWPOLYLINE + 5 +2092D +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-47.0000000000001 + 20 +0.0000000000000284 + 10 +0.0 + 20 +0.0000000000000284 + 10 +-0.0000000000001705 + 20 +-12.64999999999995 + 10 +-47.0000000000001 + 20 +-12.64999999999995 + 0 +LINE + 5 +2092E +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-47.00000000000003 + 20 +-9.749999999999972 + 30 +0.0 + 11 +-0.0000000000000853 + 21 +-9.749999999999972 + 31 +0.0 + 0 +LINE + 5 +2092F +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-47.00000000000003 + 20 +-6.849999999999994 + 30 +0.0 + 11 +-0.0000000000000853 + 21 +-6.849999999999994 + 31 +0.0 + 0 +LINE + 5 +20930 +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-47.00000000000003 + 20 +-3.949999999999989 + 30 +0.0 + 11 +-0.0000000000000853 + 21 +-3.949999999999989 + 31 +0.0 + 0 +MTEXT + 5 +20931 +330 +20927 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbMText + 10 +-23.50000000000003 + 20 +-1.974999999999994 + 30 +0.0 + 40 +1.52 + 41 +48.96977692673755 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\C3;Truly Hazardous Substance Management Standards} + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +20932 +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-43.40559538957817 + 20 +-5.399999999999949 + 30 +0.0 + 40 +1.44 + 41 +43.40559538957808 + 46 +0.0 + 71 + 4 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Truly level C management standard}({\fArial|b0|i0|c0|p34;SVHC+I}) + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LWPOLYLINE + 5 +20933 +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-46.49179293281753 + 20 +-6.474999999999994 + 10 +-44.34179293281753 + 20 +-6.474999999999994 + 10 +-44.34179293281753 + 20 +-4.324999999999989 + 10 +-46.49179293281753 + 20 +-4.324999999999989 + 0 +LWPOLYLINE + 5 +20934 +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-46.49179293281753 + 20 +-9.374999999999972 + 10 +-44.34179293281753 + 20 +-9.374999999999972 + 10 +-44.34179293281753 + 20 +-7.224999999999994 + 10 +-46.49179293281753 + 20 +-7.224999999999994 + 0 +LWPOLYLINE + 5 +20935 +102 +{ACAD_REACTORS +330 +20936 +102 +} +330 +20927 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-46.49179293281753 + 20 +-12.27499999999995 + 10 +-44.34179293281753 + 20 +-12.27499999999995 + 10 +-44.34179293281753 + 20 +-10.12499999999997 + 10 +-46.49179293281753 + 20 +-10.12499999999997 + 0 +HATCH + 5 +20936 +330 +20927 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +-46.49179293281753 + 20 +-12.27499999999995 + 11 +-44.34179293281753 + 21 +-12.27499999999995 + 72 + 1 + 10 +-44.34179293281753 + 20 +-12.27499999999995 + 11 +-44.34179293281753 + 21 +-10.12499999999995 + 72 + 1 + 10 +-44.34179293281753 + 20 +-10.12499999999997 + 11 +-46.49179293281753 + 21 +-10.12499999999997 + 72 + 1 + 10 +-46.49179293281753 + 20 +-10.12499999999997 + 11 +-46.49179293281753 + 21 +-12.27499999999997 + 97 + 1 +330 +20935 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-262.1148637559897 + 20 +-64.44378937800053 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +20937 +330 +20927 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +23201 +330 +231FE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +注释 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +注释 + 1 + + 0 +MTEXT + 5 +23202 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.90197900399872 + 20 +-16.46167674102622 + 30 +0.0 + 40 +1.259999999999999 + 41 +28.46255999999997 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;\H1.157x;NOTE\fSimSun|b0|i0|c134|p2;:}\P{\fArial|b0|i0|c0|p32;1.}Unlabeled chamfering {\fArial|b0|i0|c0|p32;is} {\fArial|b0|i0|c0|p32;R0.2mm;} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +23203 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.25970721803222 + 20 +-22.3266403032815 + 30 +0.0 + 40 +0.5000000000000002 + 0 +CIRCLE + 5 +23204 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.05446478100572 + 20 +-27.77128214209255 + 30 +0.0 + 40 +1.0 + 0 +CIRCLE + 5 +23205 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.05446478100572 + 20 +-27.77128214209255 + 30 +0.0 + 40 +0.5000000000000002 + 0 +HATCH + 5 +23206 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-23.25970721803222 + 20 +-22.32664030328148 + 40 +0.5000000000000002 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.8876054010536 + 20 +211.5170679085525 + 0 +HATCH + 5 +23207 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-23.05446478100572 + 20 +-27.77128214209255 + 40 +0.5000000000000002 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.7563044136887 + 20 +211.5466640814295 + 0 +MTEXT + 5 +23208 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171174 + 20 +-21.64640975578494 + 30 +0.0 + 40 +1.259999999999999 + 41 +31.37751662423545 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;2. The sheet markpoint},{\fTimes New Roman|b0|i0|c0|p18;central PAD diameter %%c1.0mm},{\fTimes New Roman|b0|i0|c0|p18;Periphery diameter %%C2.0mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +23209 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-26.18885040313248 + 20 +-30.20831259305548 + 30 +0.0 + 40 +1.259999999999999 + 41 +34.49279999999994 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18; diameter \C1;%%c0.6\C256;mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +2320A +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.84777894466444 + 20 +-27.17013067877596 + 30 +0.0 + 40 +1.259999999999999 + 41 +39.49679999999994 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p32;3. \fTimes New Roman|b0|i0|c0|p18; The single Sheet markpoint central PAD} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +2320B +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171174 + 20 +-44.65174780806184 + 30 +0.0 + 40 +1.259999999999999 + 41 +34.92719999999998 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +6. SMT positioning hole,diameter%%c3.2mm. + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +2320C +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-22.52815926695962 + 20 +-45.83643199122689 + 30 +0.0 + 40 +1.599999999999999 + 0 +CIRCLE + 5 +2320D +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.25970721803222 + 20 +-22.3266403032815 + 30 +0.0 + 40 +1.000552500000001 + 0 +MTEXT + 5 +2320E +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171174 + 20 +-33.55707224908407 + 30 +0.0 + 40 +1.259999999999999 + 41 +31.66269759890393 + 46 +0.0 + 71 + 1 + 72 + 5 + 3 +{\fArial|b0|i0|c0|p32;4.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c0|p18; \C1;the centre of the sheet markpoint as a starting point\fSimSun|b0|i0|c134|p32;,\fTimes New Roman|b0|i0|c0|p18;the region of diameter 5mm forbit circular marked p + 1 +oints.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +2320F +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-22.87437309398416 + 20 +-34.34597993907208 + 40 +0.5000000000000002 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.5022712770057 + 20 +199.4977282727622 + 0 +CIRCLE + 5 +23210 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-22.87437309398416 + 20 +-34.34597993907208 + 30 +0.0 + 40 +1.000552500000001 + 0 +MTEXT + 5 +23211 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171174 + 20 +-40.05930461425828 + 30 +0.0 + 40 +1.259999999999999 + 41 +33.06542084597071 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p32;5.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c134|p18;Both of front and bot\fTimes New Roman|b0|i0|c0|p18;t\fTimes New Roman|b0|i0|c134|p18;om sides need markpoint} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +23212 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-17.91607493700417 + 20 +-42.91798189660276 + 40 +0.5000000000000002 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-770.543973120026 + 20 +190.9257263152317 + 0 +CIRCLE + 5 +23213 +330 +231FE +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-17.91607493700417 + 20 +-42.91798189660276 + 30 +0.0 + 40 +1.000552500000001 + 0 +ENDBLK + 5 +23214 +330 +231FE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +23218 +330 +23215 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C138073A3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C138073A3 + 1 + + 0 +LINE + 5 +23219 +330 +23215 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +0.242725753842592 + 20 +45.57156625574859 + 30 +0.0 + 11 +47.87108439270656 + 21 +45.57156625574859 + 31 +0.0 + 0 +LINE + 5 +2321A +330 +23215 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +47.87108439270656 + 20 +45.57156625574859 + 30 +0.0 + 11 +47.87108439270656 + 21 +0.0 + 31 +0.0 + 0 +INSERT + 5 +2321B +330 +23215 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +注释 + 10 +38.47338286940274 + 20 +64.33062052643255 + 30 +0.0 + 41 +1.316872427983526 + 42 +1.31687242798354 + 43 +1.316872427983538 + 0 +ENDBLK + 5 +2321C +330 +23215 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2379A +330 +23797 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7B2656CB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7B2656CB + 1 + + 0 +MTEXT + 5 +2379B +330 +23797 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +-0.0000000000000853 + 20 +12.23509869487616 + 30 +0.0 + 40 +1.849999999999999 + 41 +151.6760919660911 + 46 +0.0 + 71 + 4 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\H0.7027x; NOTE\P1.Both of front and bottom sides need markpoint.\P Add the arrow marks on front & bottom side.\P\C6;\P\C2;2.The dimensions in yellow rectangle can be ignored in manufacture.} + 73 + 1 + 44 +1.0 + 0 +ENDBLK + 5 +2379E +330 +23797 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24072 +330 +2406F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +ARROW MARK + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ARROW MARK + 1 + + 0 +CIRCLE + 5 +24073 +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +24074 +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +90.10104366884406 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +24075 +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +24076 +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +90.03104366884406 + 20 +-50.44631132326356 + 11 +89.73104366884408 + 21 +-49.84631132326359 + 72 + 1 + 10 +89.73104366884405 + 20 +-49.84631132326348 + 11 +89.43104366884407 + 21 +-50.44631132326344 + 72 + 1 + 10 +89.43104366884404 + 20 +-50.44631132326356 + 11 +89.58104366884403 + 21 +-50.44631132326356 + 72 + 1 + 10 +89.58104366884407 + 20 +-50.44631132326356 + 11 +89.58104366884407 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.58104366884407 + 20 +-51.94631132326356 + 11 +89.88104366884406 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.88104366884403 + 20 +-51.94631132326356 + 11 +89.88104366884403 + 21 +-50.44631132326356 + 72 + 1 + 10 +89.88104366884403 + 20 +-50.44631132326356 + 11 +90.03104366884402 + 21 +-50.44631132326356 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +68.44472972432004 + 20 +-53.24289365193789 + 0 +LWPOLYLINE + 5 +24077 +330 +2406F +100 +AcDbEntity + 8 +BOM + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +75.78104366884406 + 20 +-47.14631132326352 + 10 +90.18104366884404 + 20 +-47.14631132326352 + 42 +-0.414213562373095 + 10 +90.48104366884405 + 20 +-47.4463113232635 + 10 +90.48104366884405 + 20 +-54.34631132326351 + 42 +-0.414213562373095 + 10 +90.18104366884404 + 20 +-54.64631132326352 + 10 +75.78104366884406 + 20 +-54.64631132326352 + 42 +-0.414213562373095 + 10 +75.48104366884405 + 20 +-54.34631132326351 + 10 +75.48104366884405 + 20 +-47.4463113232635 + 42 +-0.414213562373095 + 0 +HATCH + 5 +24078 +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +83.43104366884401 + 20 +-54.1963113232635 + 11 +84.03104366884398 + 21 +-53.89631132326352 + 72 + 1 + 10 +84.03104366884409 + 20 +-53.89631132326352 + 11 +83.43104366884413 + 21 +-53.59631132326354 + 72 + 1 + 10 +83.43104366884401 + 20 +-53.59631132326351 + 11 +83.43104366884401 + 21 +-53.74631132326348 + 72 + 1 + 10 +83.43104366884401 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-53.74631132326354 + 72 + 1 + 10 +81.93104366884401 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-54.04631132326352 + 72 + 1 + 10 +81.93104366884401 + 20 +-54.0463113232635 + 11 +83.43104366884401 + 21 +-54.0463113232635 + 72 + 1 + 10 +83.43104366884401 + 20 +-54.0463113232635 + 11 +83.43104366884401 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +80.63446134016968 + 20 +-32.60999737873951 + 0 +MTEXT + 5 +24079 +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbMText + 10 +82.9107544468302 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PTop View} + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +2407A +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +2407B +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +92.08010551550512 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +2407C +330 +2406F +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +2407D +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +92.15010551550512 + 20 +-50.44631132326356 + 11 +92.4501055155051 + 21 +-49.84631132326359 + 72 + 1 + 10 +92.45010551550513 + 20 +-49.84631132326348 + 11 +92.75010551550511 + 21 +-50.44631132326344 + 72 + 1 + 10 +92.75010551550514 + 20 +-50.44631132326356 + 11 +92.60010551550515 + 21 +-50.44631132326356 + 72 + 1 + 10 +92.6001055155051 + 20 +-50.44631132326356 + 11 +92.6001055155051 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.6001055155051 + 20 +-51.94631132326356 + 11 +92.30010551550512 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.30010551550515 + 20 +-51.94631132326356 + 11 +92.30010551550515 + 21 +-50.44631132326356 + 72 + 1 + 10 +92.30010551550515 + 20 +-50.44631132326356 + 11 +92.15010551550516 + 21 +-50.44631132326356 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +113.7364194600292 + 20 +-53.24289365193789 + 0 +LWPOLYLINE + 5 +2407E +330 +2406F +100 +AcDbEntity + 8 +BOM + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +106.4001055155051 + 20 +-47.14631132326352 + 10 +92.00010551550514 + 20 +-47.14631132326352 + 42 +0.414213562373095 + 10 +91.70010551550513 + 20 +-47.4463113232635 + 10 +91.70010551550513 + 20 +-54.34631132326351 + 42 +0.414213562373095 + 10 +92.00010551550514 + 20 +-54.64631132326352 + 10 +106.4001055155051 + 20 +-54.64631132326352 + 42 +0.414213562373095 + 10 +106.7001055155051 + 20 +-54.34631132326351 + 10 +106.7001055155051 + 20 +-47.4463113232635 + 42 +0.414213562373095 + 0 +HATCH + 5 +2407F +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +98.75010551550517 + 20 +-54.1963113232635 + 11 +98.1501055155052 + 21 +-53.89631132326352 + 72 + 1 + 10 +98.15010551550509 + 20 +-53.89631132326352 + 11 +98.75010551550506 + 21 +-53.59631132326354 + 72 + 1 + 10 +98.75010551550517 + 20 +-53.59631132326351 + 11 +98.75010551550517 + 21 +-53.74631132326348 + 72 + 1 + 10 +98.75010551550517 + 20 +-53.74631132326354 + 11 +100.2501055155052 + 21 +-53.74631132326354 + 72 + 1 + 10 +100.2501055155052 + 20 +-53.74631132326354 + 11 +100.2501055155052 + 21 +-54.04631132326352 + 72 + 1 + 10 +100.2501055155052 + 20 +-54.0463113232635 + 11 +98.75010551550517 + 21 +-54.0463113232635 + 72 + 1 + 10 +98.75010551550517 + 20 +-54.0463113232635 + 11 +98.75010551550517 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +101.5466878441795 + 20 +-32.60999737873951 + 0 +MTEXT + 5 +24080 +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbMText + 10 +99.25754528421453 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PBottom View} + 73 + 1 + 44 +1.0 + 0 +LWPOLYLINE + 5 +24081 +330 +2406F +100 +AcDbEntity + 8 +Bhatch + 6 +ACAD_ISO07W100 + 48 +0.1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +74.09321687268675 + 20 +-43.33089462095055 + 10 +108.0105727107277 + 20 +-43.33089462095055 + 10 +108.0105727107277 + 20 +-56.04821289094221 + 10 +74.09321687268675 + 20 +-56.04821289094221 + 0 +MTEXT + 5 +24082 +330 +2406F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +91.36301880784649 + 20 +-45.05723351073044 + 30 +0.0 + 40 +1.5 + 41 +18.77113865339908 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\C1;Arrow Mark Design} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +4.178155625066155 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +ENDBLK + 5 +24083 +330 +2406F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +28E26 +330 +28E23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4B9F04D9-2 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4B9F04D9-2 + 1 + + 0 +ENDBLK + 5 +28E2A +330 +28E23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2A981 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C592A087B + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C592A087B + 1 + + 0 +LINE + 5 +2A973 +330 +2A972 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +3.850016644807596 + 20 +0.0 + 30 +0.0 + 11 +-3.849999999999994 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2A974 +330 +2A972 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +-3.849999999999994 + 30 +0.0 + 11 +0.0 + 21 +3.849999999999994 + 31 +0.0 + 0 +LINE + 5 +2A975 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-2.174979831275323 + 20 +-3.949980720159203 + 30 +0.0 + 11 +2.225020168704702 + 21 +-3.949980720159203 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2A976 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +3.350016644807596 + 20 +3.150000000000006 + 10 +3.350016644807596 + 20 +-3.150000000000006 + 0 +LWPOLYLINE + 5 +2A977 +330 +2A972 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 32 + 70 + 1 + 43 +0.0 + 10 +-2.475000000000023 + 20 +-4.883752173371306 + 42 +0.0775441610629511 + 10 +-2.284874262136896 + 20 +-6.102299713152547 + 10 +-1.692594303397357 + 20 +-7.954104502965151 + 42 +-0.0775441610629507 + 10 +-1.550000000000011 + 20 +-8.868015157801096 + 10 +-1.550000000000011 + 20 +-8.900000000000006 + 42 +-0.4142135623730953 + 10 +-2.050000000000011 + 20 +-9.400000000000006 + 10 +-2.25 + 20 +-9.400000000000006 + 42 +0.4142135623730929 + 10 +-2.75 + 20 +-9.900000000000006 + 10 +-2.75 + 20 +-12.90000000000001 + 42 +0.4142135623730943 + 10 +-2.25 + 20 +-13.40000000000001 + 10 +4.150000000000006 + 20 +-13.40000000000001 + 42 +0.4142135623730951 + 10 +4.650000000000006 + 20 +-12.90000000000001 + 10 +4.650000000000006 + 20 +-9.900000000000006 + 42 +0.4142135623730961 + 10 +4.150000000000006 + 20 +-9.400000000000006 + 10 +3.949999999999989 + 20 +-9.400000000000006 + 42 +-0.4142135623730953 + 10 +3.449999999999989 + 20 +-8.900000000000006 + 10 +3.449999999999989 + 20 +-8.868015156879807 + 42 +0.0775441611310613 + 10 +3.307405696355147 + 20 +-7.954104501270052 + 10 +2.715125738193109 + 20 +-6.102299714991432 + 42 +-0.0775441611310612 + 10 +2.525000000000006 + 20 +-4.883752174178397 + 10 +2.525000000000006 + 20 +-3.849999999999994 + 42 +-0.4142135623730951 + 10 +3.025000000000006 + 20 +-3.349999999999994 + 10 +3.150000000000006 + 20 +-3.349999999999994 + 42 +0.4142135623730951 + 10 +3.349999999999994 + 20 +-3.150000000000006 + 10 +3.349999999999994 + 20 +3.150000000000006 + 42 +0.4142135623730964 + 10 +3.150000000000006 + 20 +3.349999999999994 + 10 +-3.150000000000006 + 20 +3.349999999999994 + 42 +0.4142135623730964 + 10 +-3.349999999999994 + 20 +3.150000000000006 + 10 +-3.349999999999994 + 20 +-3.150000000000006 + 42 +0.4142135623730977 + 10 +-3.150000000000006 + 20 +-3.349999999999994 + 10 +-2.974999999999994 + 20 +-3.349999999999994 + 42 +-0.4142135623730964 + 10 +-2.474999999999994 + 20 +-3.849999999999994 + 0 +LINE + 5 +2A978 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-2.175000000000011 + 20 +-3.949999999999989 + 30 +0.0 + 11 +2.224999999999994 + 21 +-3.950000000000017 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2A979 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.2 + 10 +-2.174979831275323 + 20 +-3.949980720159203 + 10 +2.224999999999994 + 20 +-3.950000000000017 + 0 +LWPOLYLINE + 5 +2A97A +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +3.150000000000006 + 20 +-3.349999999999994 + 42 +0.414213562373095 + 10 +3.349999999999994 + 20 +-3.150000000000006 + 10 +3.349999999999994 + 20 +3.150000000000006 + 42 +0.414213562373095 + 10 +3.150000000000006 + 20 +3.349999999999994 + 10 +-3.150000000000006 + 20 +3.349999999999994 + 42 +0.4142135623730938 + 10 +-3.349999999999994 + 20 +3.150000000000006 + 10 +-3.349999999999994 + 20 +-3.150000000000006 + 42 +0.4142135623730963 + 10 +-3.150000000000006 + 20 +-3.349999999999994 + 0 +LWPOLYLINE + 5 +2A97B +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.150000000000006 + 20 +-9.400000000000006 + 10 +-2.25 + 20 +-9.400000000000006 + 42 +0.414213562373094 + 10 +-2.75 + 20 +-9.900000000000006 + 10 +-2.75 + 20 +-12.90000000000001 + 42 +0.4142135623730935 + 10 +-2.25 + 20 +-13.40000000000001 + 10 +4.150000000000006 + 20 +-13.40000000000001 + 42 +0.414213562373095 + 10 +4.650000000000006 + 20 +-12.90000000000001 + 10 +4.650000000000006 + 20 +-9.900000000000006 + 42 +0.414213562373095 + 0 +LINE + 5 +2A97C +330 +2A972 +100 +AcDbEntity + 8 +EMI +370 + -1 +100 +AcDbLine + 10 +-1.56010205144338 + 20 +-9.0 + 30 +0.0 + 11 +3.460102051443357 + 21 +-9.0 + 31 +0.0 + 0 +LINE + 5 +2A97D +330 +2A972 +100 +AcDbEntity + 8 +EMI +370 + -1 +100 +AcDbLine + 10 +2.525000000000006 + 20 +-4.150000000000006 + 30 +0.0 + 11 +-2.475000000000023 + 21 +-4.150000000000006 + 31 +0.0 + 0 +HATCH + 5 +2A97E +330 +2A972 +100 +AcDbEntity + 8 +EMI +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 14 + 10 +-2.475000000000023 + 20 +-4.150000000000006 + 42 +0.0 + 10 +-2.475000000000023 + 20 +-4.883752173371306 + 42 +0.0775441610629492 + 10 +-2.284874262136896 + 20 +-6.102299713152519 + 42 +0.0 + 10 +-1.692594303397357 + 20 +-7.954104502965151 + 42 +-0.0775441610629513 + 10 +-1.550000000000011 + 20 +-8.868015157801096 + 42 +0.0 + 10 +-1.550000000000011 + 20 +-8.900000000000006 + 42 +-0.0503820444848887 + 10 +-1.56010205144338 + 20 +-9.0 + 42 +0.0 + 10 +3.460102051443357 + 20 +-9.0 + 42 +-0.050382044484896 + 10 +3.449999999999989 + 20 +-8.899999999999977 + 42 +0.0 + 10 +3.449999999999989 + 20 +-8.868015156879807 + 42 +0.0775441611310632 + 10 +3.307405696355147 + 20 +-7.954104501270024 + 42 +0.0 + 10 +2.715125738193109 + 20 +-6.102299714991432 + 42 +-0.0775441611310612 + 10 +2.525000000000006 + 20 +-4.883752174178397 + 42 +0.0 + 10 +2.525000000000006 + 20 +-4.150000000000006 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +5.0 + 77 + 0 + 78 + 2 + 53 +44.99999999999998 + 43 +-29.76041657750544 + 44 +-57.90625946838287 + 45 +-0.4419417382415922 + 46 +0.4419417382415922 + 79 + 0 + 53 +135.0 + 43 +-29.76041657750544 + 44 +-57.90625946838287 + 45 +-0.4419417382415922 + 46 +-0.4419417382415922 + 79 + 0 + 47 +0.0273635504150937 + 98 + 1 + 10 +1.235376689315558 + 20 +-4.708985212688106 + 0 +ARC + 5 +2B123 +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +5.150000000000006 + 20 +-10.15000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B124 +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +5.150000000000006 + 20 +-10.15000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B125 +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +5.150000000000006 + 20 +-12.65000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B126 +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +5.150000000000006 + 20 +-12.65000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +CIRCLE + 5 +2B127 +102 +{ACAD_REACTORS +330 +2B128 +102 +} +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -3 +100 +AcDbCircle + 10 +5.150000000000006 + 20 +-11.40000000000001 + 30 +0.0 + 40 +0.3 + 0 +HATCH + 5 +2B128 +330 +2A972 +100 +AcDbEntity + 8 +PCB +370 + -3 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +5.150000000000006 + 20 +-11.40000000000001 + 40 +0.3 + 50 +270.0 + 51 +630.0 + 73 + 1 + 97 + 1 +330 +2B127 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-28.10000000000031 + 20 +-64.75000000000009 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +2A982 +330 +2A972 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2A9B5 +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C728B1303 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C728B1303 + 1 + + 0 +INSERT + 5 +2A9AA +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +0.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9AB +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-8.400000000000006 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9AC +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-16.80000000000001 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9AD +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-25.2 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9AE +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-33.59999999999999 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9AF +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-42.0 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9B0 +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-50.40000000000001 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +2A9B1 +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C592A087B + 10 +0.0 + 20 +-58.8 + 30 +0.0 + 50 +90.0 + 0 +LINE + 5 +2ABD1 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +12.90000000000001 + 20 +5.650000000000006 + 30 +0.0 + 11 +12.65000000000001 + 21 +5.650000000000006 + 31 +0.0 + 0 +ARC + 5 +2ABD2 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +9.900000000000006 + 20 +4.150000000000006 + 30 +0.0 + 40 +1.5 +100 +AcDbArc + 50 +90.0 + 51 +158.8316995070284 + 0 +ARC + 5 +2ABD3 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +8.868015156879238 + 20 +0.4500000000001592 + 30 +0.0 + 40 +3.999999999999624 +100 +AcDbArc + 50 +100.6684218005835 + 51 +107.7363193909796 + 0 +LINE + 5 +2ABD4 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +7.649467616066858 + 20 +4.259874261806857 + 30 +0.0 + 11 +5.797662829788209 + 21 +3.667594303644819 + 31 +0.0 + 0 +ARC + 5 +2ABD5 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.883752174178511 + 20 +6.52499999999992 + 30 +0.0 + 40 +2.999999999999922 +100 +AcDbArc + 50 +269.9999999999984 + 51 +287.7363193909884 + 0 +LINE + 5 +2ABD6 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +4.883752174178454 + 20 +3.525000000000006 + 30 +0.0 + 11 +4.607523584714755 + 21 +3.525000000000006 + 31 +0.0 + 0 +ARC + 5 +2ABD7 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.150000000000119 + 20 +3.149999999999977 + 30 +0.0 + 40 +1.199999999999958 +100 +AcDbArc + 50 +30.97779778063707 + 51 +90.00000000001954 + 0 +LINE + 5 +2ABD8 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +3.149999999999721 + 20 +4.349999999999966 + 30 +0.0 + 11 +2.75 + 21 +4.349999999999966 + 31 +0.0 + 0 +ARC + 5 +2ABD9 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.607523584714755 + 20 +4.025000000000006 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +210.9777977806334 + 51 +270.0 + 0 +ARC + 5 +2ABDA +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +8.034952537595956 + 20 +4.872217393158195 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +280.6684218005835 + 51 +338.8316995070285 + 0 +ARC + 5 +2ABDB +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +12.90000000000001 + 20 +4.150000000000006 + 30 +0.0 + 40 +1.5 +100 +AcDbArc + 50 +20.48731511472239 + 51 +90.0 + 0 +ARC + 5 +2ADC7 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.883752173371249 + 20 +-57.27500000000008 + 30 +0.0 + 40 +4.999999999999943 +100 +AcDbArc + 50 +270.0 + 51 +287.7363193754725 + 0 +LINE + 5 +2ADC8 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +6.406936598097843 + 20 +-62.03734282767111 + 30 +0.0 + 11 +7.991399448136576 + 21 +-61.53056932940173 + 31 +0.0 + 0 +ARC + 5 +2ADC9 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +9.899999999994634 + 20 +-61.04999999999579 + 30 +0.0 + 40 +1.500000000004186 +100 +AcDbArc + 50 +208.5810733789953 + 51 +270.0000000002036 + 0 +LINE + 5 +2ADCB +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.149999999999693 + 20 +-63.14999999999996 + 30 +0.0 + 11 +-2.75 + 21 +-63.14999999999999 + 31 +0.0 + 0 +ARC + 5 +2ADCC +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.150000000000205 + 20 +-61.95000000000014 + 30 +0.0 + 40 +1.199999999999847 +100 +AcDbArc + 50 +269.9999999999886 + 51 +330.9682560080727 + 0 +LINE + 5 +2ADCD +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +4.636396649619599 + 20 +-62.27499999999999 + 30 +0.0 + 11 +4.883752173371306 + 21 +-62.27500000000002 + 31 +0.0 + 0 +ARC + 5 +2ADCF +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.636396649619542 + 20 +-62.77500000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999349 + 51 +150.9682560080726 + 0 +ARC + 5 +2ADD0 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +8.143717890609253 + 20 +-62.00680361216884 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +28.58107337899531 + 51 +107.7363193754741 + 0 +LINE + 5 +2AEE7 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +9.900000000000006 + 20 +-62.55 + 30 +0.0 + 11 +10.15000000000001 + 21 +-62.55 + 31 +0.0 + 0 +LINE + 5 +2B165 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +10.15000000000001 + 20 +5.650000000000006 + 30 +0.0 + 11 +9.900000000000006 + 21 +5.650000000000006 + 31 +0.0 + 0 +LINE + 5 +2B5DB +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.25 + 20 +4.349999999999994 + 30 +0.0 + 11 +-0.25 + 21 +4.349999999999994 + 31 +0.0 + 0 +LINE + 5 +2B5DC +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.75 + 20 +4.349999999999994 + 30 +0.0 + 11 +-2.976500600480506 + 21 +4.349999999999994 + 31 +0.0 + 0 +LINE + 5 +2B627 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.75 + 20 +-63.14999999999999 + 30 +0.0 + 11 +3.149999999999977 + 21 +-63.14999999999999 + 31 +0.0 + 0 +LINE + 5 +2B628 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.25 + 20 +-63.15000000000001 + 30 +0.0 + 11 +0.25 + 21 +-63.14999999999999 + 31 +0.0 + 0 +ARC + 5 +2BB13 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +10.15000000000001 + 20 +-62.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2BB14 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +10.15000000000001 + 20 +-62.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2BB15 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +12.65000000000001 + 20 +-62.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2BB16 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +12.65000000000001 + 20 +-62.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +2BB17 +330 +2A9A9 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +12.65000000000001 + 20 +-62.55 + 30 +0.0 + 11 +12.90000000000001 + 21 +-62.55 + 31 +0.0 + 0 +ENDBLK + 5 +2A9B6 +330 +2A9A9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2AC3D +330 +2AC39 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C1E324020 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C1E324020 + 1 + + 0 +ARC + 5 +2AC3A +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +14.77349939951949 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC4B +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +32.52349939951949 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC4C +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +50.27349939951949 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC4D +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +68.0234993995195 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC4E +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +85.7734993995195 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC4F +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +103.5234993995195 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC50 +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +121.2734993995195 + 20 +4.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +200.4873151147239 + 51 +270.0 + 0 +ARC + 5 +2AC6E +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.150000000000148 + 20 +3.150000000000119 + 30 +0.0 + 40 +1.199999999999875 +100 +AcDbArc + 50 +89.99999999999186 + 51 +179.9999999999984 + 0 +LINE + 5 +2AC6F +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.149999999999977 + 20 +4.349999999999994 + 30 +0.0 + 11 +-2.976500600480506 + 21 +4.349999999999994 + 31 +0.0 + 0 +ARC + 5 +2ACAE +330 +2AC39 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +137.15 + 20 +4.150000000000006 + 30 +0.0 + 40 +1.5 +100 +AcDbArc + 50 +0.0 + 51 +20.48731511472086 + 0 +ENDBLK + 5 +2AC3E +330 +2AC39 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2AF0A +330 +2AF05 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C2C2F0A83 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C2C2F0A83 + 1 + + 0 +ARC + 5 +2AF06 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.200000000000045 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF07 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.903851860318753 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF14 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +1.903851860318753 + 20 +-1.0 + 30 +0.0 + 11 +1.5 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF89 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +20.95000000000005 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF8A +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +19.65385186031875 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF8B +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +19.65385186031875 + 20 +-1.0 + 30 +0.0 + 11 +19.25 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF8C +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +38.70000000000005 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF8D +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +37.40385186031875 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF8E +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +37.40385186031875 + 20 +-1.0 + 30 +0.0 + 11 +37.0 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF8F +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +56.45000000000005 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF90 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +55.15385186031875 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF91 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +55.15385186031875 + 20 +-1.0 + 30 +0.0 + 11 +54.75 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF92 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +74.20000000000005 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF93 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +72.90385186031875 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF94 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +72.90385186031875 + 20 +-1.0 + 30 +0.0 + 11 +72.5 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF95 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +91.95000000000005 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF96 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +90.65385186031875 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF97 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +90.65385186031875 + 20 +-1.0 + 30 +0.0 + 11 +90.25 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AF98 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +109.7 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +220.3202150699787 + 51 +270.000000000013 + 0 +ARC + 5 +2AF99 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +108.4038518603188 + 20 +-1.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +40.32021506998101 + 51 +90.0 + 0 +LINE + 5 +2AF9A +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +108.4038518603188 + 20 +-1.0 + 30 +0.0 + 11 +108.0 + 21 +-1.0 + 31 +0.0 + 0 +ARC + 5 +2AFF7 +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-14.54999999999998 + 20 +-0.3999999999999204 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0000000000041 + 51 +270.000000000013 + 0 +ARC + 5 +2B0AF +330 +2AF05 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +125.75 + 20 +0.5 + 30 +0.0 + 40 +1.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ENDBLK + 5 +2AF0B +330 +2AF05 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B44E +330 +2B443 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C35233E67 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C35233E67 + 1 + + 0 +ARC + 5 +2B444 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B445 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B446 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B447 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B448 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +3.849999999999966 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B449 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +3.849999999999966 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B44A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B44B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +ARC + 5 +2B540 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-4.550000000000011 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B541 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B542 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-4.550000000000011 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B543 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B544 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-4.55000000000004 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B545 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-3.850000000000023 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B546 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-4.550000000000011 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B547 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-3.849999999999994 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B548 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-4.550000000000011 + 30 +0.0 + 11 +-2.25 + 21 +-3.849999999999994 + 31 +0.0 + 0 +LINE + 5 +2B549 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-4.550000000000011 + 30 +0.0 + 11 +-0.75 + 21 +-3.849999999999994 + 31 +0.0 + 0 +LINE + 5 +2B54A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-4.55000000000004 + 30 +0.0 + 11 +0.75 + 21 +-3.850000000000023 + 31 +0.0 + 0 +LINE + 5 +2B54B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-4.55000000000004 + 30 +0.0 + 11 +2.25 + 21 +-3.850000000000023 + 31 +0.0 + 0 +ARC + 5 +2B54C +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-12.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B54D +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-12.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B54E +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-12.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B54F +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-12.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B550 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-12.95000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B551 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-12.25000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B552 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-12.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B553 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-12.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B554 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-12.95000000000002 + 30 +0.0 + 11 +-2.25 + 21 +-12.25 + 31 +0.0 + 0 +LINE + 5 +2B555 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-12.95000000000002 + 30 +0.0 + 11 +-0.75 + 21 +-12.25 + 31 +0.0 + 0 +LINE + 5 +2B556 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-12.95000000000005 + 30 +0.0 + 11 +0.75 + 21 +-12.25000000000003 + 31 +0.0 + 0 +LINE + 5 +2B557 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-12.95000000000005 + 30 +0.0 + 11 +2.25 + 21 +-12.25000000000003 + 31 +0.0 + 0 +ARC + 5 +2B558 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-21.35000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B559 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-20.64999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B55A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-21.35000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B55B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-20.64999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B55C +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-21.35000000000004 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B55D +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-20.65000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B55E +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-21.35000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B55F +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-20.64999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B560 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-21.35000000000001 + 30 +0.0 + 11 +-2.25 + 21 +-20.64999999999999 + 31 +0.0 + 0 +LINE + 5 +2B561 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-21.35000000000001 + 30 +0.0 + 11 +-0.75 + 21 +-20.64999999999999 + 31 +0.0 + 0 +LINE + 5 +2B562 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-21.35000000000004 + 30 +0.0 + 11 +0.75 + 21 +-20.65000000000002 + 31 +0.0 + 0 +LINE + 5 +2B563 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-21.35000000000004 + 30 +0.0 + 11 +2.25 + 21 +-20.65000000000002 + 31 +0.0 + 0 +ARC + 5 +2B564 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-29.75000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B565 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-29.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B566 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-29.75000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B567 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-29.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B568 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-29.75000000000004 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B569 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-29.05000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B56A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-29.75000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B56B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-29.05 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B56C +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-29.75000000000001 + 30 +0.0 + 11 +-2.25 + 21 +-29.05 + 31 +0.0 + 0 +LINE + 5 +2B56D +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-29.75000000000001 + 30 +0.0 + 11 +-0.75 + 21 +-29.05 + 31 +0.0 + 0 +LINE + 5 +2B56E +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-29.75000000000004 + 30 +0.0 + 11 +0.75 + 21 +-29.05000000000003 + 31 +0.0 + 0 +LINE + 5 +2B56F +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-29.75000000000004 + 30 +0.0 + 11 +2.25 + 21 +-29.05000000000003 + 31 +0.0 + 0 +ARC + 5 +2B570 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-38.15000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B571 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-37.44999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B572 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-38.15000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B573 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-37.44999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B574 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-38.15000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B575 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-37.45000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B576 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-38.15000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B577 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-37.44999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B578 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-38.15000000000001 + 30 +0.0 + 11 +-2.25 + 21 +-37.44999999999999 + 31 +0.0 + 0 +LINE + 5 +2B579 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-38.15000000000001 + 30 +0.0 + 11 +-0.75 + 21 +-37.44999999999999 + 31 +0.0 + 0 +LINE + 5 +2B57A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-38.15000000000003 + 30 +0.0 + 11 +0.75 + 21 +-37.45000000000002 + 31 +0.0 + 0 +LINE + 5 +2B57B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-38.15000000000003 + 30 +0.0 + 11 +2.25 + 21 +-37.45000000000002 + 31 +0.0 + 0 +ARC + 5 +2B57C +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-46.55000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B57D +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-45.84999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B57E +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-46.55000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B57F +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-45.84999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B580 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-46.55000000000004 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B581 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-45.85000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B582 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-46.55000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B583 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-45.84999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B584 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-46.55000000000001 + 30 +0.0 + 11 +-2.25 + 21 +-45.84999999999999 + 31 +0.0 + 0 +LINE + 5 +2B585 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-46.55000000000001 + 30 +0.0 + 11 +-0.75 + 21 +-45.84999999999999 + 31 +0.0 + 0 +LINE + 5 +2B586 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-46.55000000000004 + 30 +0.0 + 11 +0.75 + 21 +-45.85000000000002 + 31 +0.0 + 0 +LINE + 5 +2B587 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-46.55000000000004 + 30 +0.0 + 11 +2.25 + 21 +-45.85000000000002 + 31 +0.0 + 0 +ARC + 5 +2B588 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-54.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B589 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-54.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B58A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-54.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B58B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-54.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B58C +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-54.95000000000005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B58D +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-54.25000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B58E +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-54.95000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B58F +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-54.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +LINE + 5 +2B590 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-2.25 + 20 +-54.95000000000002 + 30 +0.0 + 11 +-2.25 + 21 +-54.25 + 31 +0.0 + 0 +LINE + 5 +2B591 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-54.95000000000002 + 30 +0.0 + 11 +-0.75 + 21 +-54.25 + 31 +0.0 + 0 +LINE + 5 +2B592 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-54.95000000000005 + 30 +0.0 + 11 +0.75 + 21 +-54.25000000000003 + 31 +0.0 + 0 +LINE + 5 +2B593 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +2.25 + 20 +-54.95000000000005 + 30 +0.0 + 11 +2.25 + 21 +-54.25000000000003 + 31 +0.0 + 0 +ARC + 5 +2B594 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2B595 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-2.75 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2B596 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2B597 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-0.25 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B598 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-62.64999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +ARC + 5 +2B599 +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +2.75 + 20 +-62.64999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999675 + 51 +179.9999999999984 + 0 +ARC + 5 +2B59A +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999984 + 0 +ARC + 5 +2B59B +330 +2B443 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.25 + 20 +-62.64999999999996 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +359.9999999999984 + 51 +89.99999999999675 + 0 +ENDBLK + 5 +2B44F +330 +2B443 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2BCA5 +330 +2BC9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C037227F7 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C037227F7 + 1 + + 0 +LWPOLYLINE + 5 +2BCA0 +330 +2BC9F +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +6.5 + 20 +-3.050000000000011 + 42 +-0.414213562373095 + 10 +6.299999999999955 + 20 +-3.25 + 10 +0.1999999999999886 + 20 +-3.25 + 42 +-0.414213562373095 + 10 +0.0 + 20 +-3.050000000000011 + 10 +0.0 + 20 +3.050000000000011 + 42 +-0.4142135623731054 + 10 +0.1999999999999886 + 20 +3.25 + 10 +6.299999999999955 + 20 +3.25 + 42 +-0.4142135623731054 + 10 +6.5 + 20 +3.050000000000011 + 10 +6.5 + 20 +3.0 + 42 +0.414213562373095 + 10 +7.0 + 20 +2.5 + 10 +10.83999999999997 + 20 +2.5 + 42 +0.4142135623730959 + 10 +11.33999999999997 + 20 +3.0 + 10 +11.33999999999997 + 20 +3.800000000000011 + 42 +-0.4142135623731054 + 10 +11.53999999999996 + 20 +4.0 + 10 +14.74000000000001 + 20 +4.0 + 42 +-0.4142135623731054 + 10 +14.94 + 20 +3.800000000000011 + 10 +14.94 + 20 +-3.800000000000011 + 42 +-0.4142135623730742 + 10 +14.74000000000001 + 20 +-4.0 + 10 +11.53999999999996 + 20 +-4.0 + 42 +-0.4142135623730742 + 10 +11.33999999999997 + 20 +-3.800000000000011 + 10 +11.34000000000003 + 20 +-3.0 + 42 +0.414213562373095 + 10 +10.84000000000003 + 20 +-2.5 + 10 +7.0 + 20 +-2.5 + 42 +0.414213562373095 + 10 +6.5 + 20 +-3.0 + 0 +LWPOLYLINE + 5 +2BCA1 +330 +2BC9F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +14.74000000000001 + 20 +-4.0 + 42 +0.414213562373095 + 10 +14.94 + 20 +-3.800000000000011 + 10 +14.94 + 20 +3.800000000000011 + 42 +0.414213562373095 + 10 +14.74000000000001 + 20 +4.0 + 10 +11.53999999999996 + 20 +4.0 + 42 +0.414213562373095 + 10 +11.33999999999997 + 20 +3.800000000000011 + 10 +11.33999999999997 + 20 +-3.800000000000011 + 42 +0.414213562373095 + 10 +11.53999999999996 + 20 +-4.0 + 0 +LWPOLYLINE + 5 +2BCA2 +330 +2BC9F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +6.300000000000011 + 20 +3.25 + 10 +0.2000000000000455 + 20 +3.25 + 42 +0.414213562373095 + 10 +0.0 + 20 +3.050000000000011 + 10 +0.0 + 20 +-3.050000000000011 + 42 +0.414213562373095 + 10 +0.1999999999999886 + 20 +-3.25 + 10 +6.300000000000011 + 20 +-3.25 + 42 +0.414213562373095 + 10 +6.5 + 20 +-3.050000000000011 + 10 +6.5 + 20 +3.050000000000011 + 42 +0.414213562373095 + 0 +ENDBLK + 5 +2BCA6 +330 +2BC9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C0DE +330 +2C0D9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C16D37AA3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C16D37AA3 + 1 + + 0 +INSERT + 5 +2C0DA +330 +2C0D9 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C037227F7 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +2C0DF +330 +2C0D9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C353 +330 +2C34D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3AD46B64 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3AD46B64 + 1 + + 0 +HATCH + 5 +2C34E +330 +2C34D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +1.799999999997182 + 20 +4.340000000002618 + 10 +1.799999999997182 + 20 +4.140000000002573 + 10 +6.199999999997173 + 20 +4.140000000002573 + 10 +6.199999999997173 + 20 +4.340000000002618 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0138492469657315 + 98 + 1 + 10 +5.05462348430771 + 20 +4.273919421516297 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +2C34F +330 +2C34D +100 +AcDbEntity + 8 +0 + 62 + 13 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +6.500000000000023 + 20 +3.740000000002595 + 10 +1.500000000000012 + 20 +3.740000000002595 + 10 +1.500000000000012 + 20 +1.200000000000017 + 10 +6.500000000000023 + 20 +1.200000000000017 + 0 +HATCH + 5 +2C350 +330 +2C34D +100 +AcDbEntity + 8 +0 + 62 + 13 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 2 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +6.500000000000023 + 20 +3.740000000002595 + 10 +1.500000000000016 + 20 +3.74000000000261 + 10 +1.500000000000012 + 20 +1.200000000000017 + 10 +6.500000000000023 + 20 +1.200000000000017 + 97 + 0 + 92 + 24 + 93 + 4 + 72 + 1 + 10 +1.850000000000014 + 20 +2.570845379377943 + 11 +6.150000000000015 + 21 +2.570845379377943 + 72 + 1 + 10 +6.150000000000015 + 20 +2.570845379377943 + 11 +6.150000000000015 + 21 +1.670845379377937 + 72 + 1 + 10 +6.150000000000015 + 20 +1.670845379377937 + 11 +1.850000000000014 + 21 +1.670845379377937 + 72 + 1 + 10 +1.850000000000014 + 20 +1.670845379377937 + 11 +1.850000000000014 + 21 +2.570845379377943 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-15.28160189847601 + 44 +-66.36176022531845 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +45.0 + 43 +-15.10482520347601 + 44 +-66.36176022531845 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 2 + 49 +0.125 + 49 +-0.0625 + 47 +0.0085853511315457 + 98 + 1 + 10 +4.127913907042638 + 20 +3.22915280909649 + 0 +ENDBLK + 5 +2C354 +330 +2C34D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C35D +330 +2C357 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4CD72AC6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4CD72AC6 + 1 + + 0 +HATCH + 5 +2C358 +330 +2C357 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +-2.200000000002831 + 20 +4.14000000000263 + 10 +-2.200000000002831 + 20 +3.940000000002584 + 10 +2.199999999997175 + 20 +3.940000000002584 + 10 +2.199999999997175 + 20 +4.14000000000263 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0138492469657315 + 98 + 1 + 10 +1.054623484307712 + 20 +4.073919421516308 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +2C359 +330 +2C357 +100 +AcDbEntity + 8 +0 + 62 + 13 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.500000000000028 + 20 +3.540000000002607 + 10 +-2.5 + 20 +3.540000000002607 + 10 +-2.5 + 20 +1.000000000000028 + 10 +2.500000000000028 + 20 +1.000000000000028 + 0 +HATCH + 5 +2C35A +330 +2C357 +100 +AcDbEntity + 8 +BOM + 62 + 13 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.500000000000028 + 20 +3.540000000002607 + 10 +-2.5 + 20 +3.540000000002607 + 10 +-2.5 + 20 +1.000000000000028 + 10 +2.500000000000028 + 20 +1.000000000000028 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +66.58235209016414 + 44 +-20.79000000000161 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +45.0 + 43 +66.75912878516414 + 44 +-20.79000000000161 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 2 + 49 +0.125 + 49 +-0.0625 + 47 +0.0190055047558449 + 98 + 1 + 10 +-1.040378922718901 + 20 +2.251221308030182 + 0 +ENDBLK + 5 +2C35E +330 +2C357 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C466 +330 +2C461 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3A792A30 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3A792A30 + 1 + + 0 +ARC + 5 +2C462 +330 +2C461 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +2C463 +330 +2C461 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ENDBLK + 5 +2C467 +330 +2C461 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C8AA +330 +2C897 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C1943156E + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C1943156E + 1 + + 0 +LINE + 5 +2C898 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.749999999999972 + 20 +5.839999999999975 + 30 +0.0 + 11 +-4.500000000000171 + 21 +5.839999999999975 + 31 +0.0 + 0 +LINE + 5 +2C899 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.749999999999972 + 20 +10.34 + 30 +0.0 + 11 +-4.500000000000171 + 21 +10.33999999999997 + 31 +0.0 + 0 +LINE + 5 +2C89A +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-4.169368572010711 + 20 +8.839999999999975 + 30 +0.0 + 11 +-3.749999999999972 + 21 +8.839999999999975 + 31 +0.0 + 0 +LINE + 5 +2C89B +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-4.169368572010711 + 20 +7.339999999999975 + 30 +0.0 + 11 +-3.75 + 21 +7.339999999999975 + 31 +0.0 + 0 +LINE + 5 +2C89C +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-4.169368572010711 + 20 +8.839999999999975 + 30 +0.0 + 11 +-4.500000000000199 + 21 +8.840000000000003 + 31 +0.0 + 0 +ARC + 5 +2C89D +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.749999999999972 + 20 +10.83999999999997 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C89E +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.500000000000171 + 20 +10.83999999999997 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2C89F +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.749999999999972 + 20 +8.339999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2C8A0 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.500000000000171 + 20 +8.339999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2C8A1 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.75 + 20 +7.839999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +2C8A2 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-4.169368572010711 + 20 +7.339999999999975 + 30 +0.0 + 11 +-4.500000000000171 + 21 +7.339999999999975 + 31 +0.0 + 0 +ARC + 5 +2C8A3 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.500000000000171 + 20 +7.839999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2C8A4 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.749999999999972 + 20 +5.339999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2C8A5 +330 +2C897 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.500000000000171 + 20 +5.339999999999975 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2D31D +330 +2C897 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.5 + 20 +-0.5500000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +2D31E +330 +2C897 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.5 + 20 +-3.050000000000011 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +2C8AB +330 +2C897 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C8EF +330 +2C8DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C789D3C31 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C789D3C31 + 1 + + 0 +LINE + 5 +2C8DB +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-5.75 + 20 +3.999999999999972 + 30 +0.0 + 11 +-3.75 + 21 +3.999999999999943 + 31 +0.0 + 0 +LINE + 5 +2C8DC +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-5.750000000000028 + 20 +2.499999999999972 + 30 +0.0 + 11 +-3.75 + 21 +2.499999999999972 + 31 +0.0 + 0 +LINE + 5 +2C8DD +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-5.75 + 20 +5.499999999999972 + 30 +0.0 + 11 +-3.749999999999972 + 21 +5.499999999999972 + 31 +0.0 + 0 +LINE + 5 +2C8DE +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-5.750000000000028 + 20 +0.9999999999999716 + 30 +0.0 + 11 +-3.750000000000057 + 21 +0.9999999999999716 + 31 +0.0 + 0 +ARC + 5 +2C8DF +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.75 + 20 +5.999999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +273.4819956243836 + 0 +ARC + 5 +2C8E0 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.749999999999972 + 20 +5.999999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C8E1 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.750000000000028 + 20 +3.499999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +84.32988739466973 + 51 +180.0 + 0 +ARC + 5 +2C8E2 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.75 + 20 +3.499999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +91.97945891087227 + 0 +ARC + 5 +2C8E3 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.750000000000057 + 20 +3.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2C8E4 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.750000000000028 + 20 +3.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C8E5 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.75 + 20 +0.4999999999999716 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2C8E6 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.750000000000057 + 20 +0.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +2C8E7 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-5.0 + 20 +-5.889999999999986 + 30 +0.0 + 11 +-4.5 + 21 +-5.889999999999986 + 31 +0.0 + 0 +LINE + 5 +2C8E8 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-4.5 + 20 +-7.390000000000015 + 30 +0.0 + 11 +-5.0 + 21 +-7.390000000000015 + 31 +0.0 + 0 +ARC + 5 +2C8E9 +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.5 + 20 +-5.389999999999986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C8EA +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-5.389999999999986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2C8EB +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-7.890000000000015 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +178.3222303527252 + 0 +ARC + 5 +2C8EC +330 +2C8DA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-4.5 + 20 +-7.890000000000015 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +2C8F0 +330 +2C8DA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2C9C3 +330 +2C9BA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C234653A6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C234653A6 + 1 + + 0 +LINE + 5 +2C9BB +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +1.0 + 30 +0.0 + 11 +-0.75 + 21 +0.5000000000000284 + 31 +0.0 + 0 +LINE + 5 +2C9BC +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +1.0 + 30 +0.0 + 11 +0.75 + 21 +0.5000000000000284 + 31 +0.0 + 0 +ARC + 5 +2C9BD +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +1.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +89.90139248239059 + 0 +ARC + 5 +2C9BE +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C9BF +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.250000000000028 + 20 +1.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2C9C0 +330 +2C9BA +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.4304674423541 + 0 +ENDBLK + 5 +2C9C4 +330 +2C9BA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CA65 +330 +2CA52 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C771E3180 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C771E3180 + 1 + + 0 +INSERT + 5 +2CA53 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +9.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA54 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +19.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA55 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +28.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA56 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +38.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA57 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +47.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA58 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +57.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA59 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +66.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5A +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +76.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5B +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +85.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5C +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +95.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5D +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +104.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5E +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +114.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA5F +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +123.5 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA60 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +133.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2CA61 +330 +2CA52 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C234653A6 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +2CA66 +330 +2CA52 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CB33 +330 +2CB2E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C0E6B29F0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C0E6B29F0 + 1 + + 0 +CIRCLE + 5 +2CB2F +330 +2CB2E +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +HATCH + 5 +2CB30 +330 +2CB2E +100 +AcDbEntity + 8 +BOM + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +0.3000000000000114 + 20 +0.0 + 42 +1.0 + 10 +-0.3000000000000114 + 20 +0.0 + 42 +1.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0042862505929125 + 98 + 1 + 10 +-0.147086687489832 + 20 +-0.0498109650555421 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +2CB34 +330 +2CB2E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CB4C +330 +2CB47 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C1FB47A18 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C1FB47A18 + 1 + + 0 +CIRCLE + 5 +2CB48 +102 +{ACAD_REACTORS +330 +2CB49 +102 +} +330 +2CB47 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.3 + 0 +HATCH + 5 +2CB49 +330 +2CB47 +100 +AcDbEntity + 8 +PCB + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +0.0 + 20 +0.0 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +2CB48 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +67.64327986052763 + 20 +-12.98028607409728 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +2CB4D +330 +2CB47 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CB7E +330 +2CB79 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C74A913EC + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C74A913EC + 1 + + 0 +INSERT + 5 +2CB7A +330 +2CB79 +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C1FB47A18 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +2CB7F +330 +2CB79 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CC58 +330 +2CC51 +100 +AcDbEntity + 8 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C159B3B9F + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C159B3B9F + 1 + + 0 +LINE + 5 +2CC52 +330 +2CC51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +-6.991600260267802 + 31 +0.0 + 0 +LINE + 5 +2CC53 +330 +2CC51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +0.3675286975793313 + 31 +0.0 + 0 +LINE + 5 +2CC54 +330 +2CC51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-3.25 + 20 +-3.25 + 30 +0.0 + 11 +3.667066020375501 + 21 +-3.25 + 31 +0.0 + 0 +LINE + 5 +2CC55 +330 +2CC51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-3.25 + 20 +-3.25 + 30 +0.0 + 11 +-3.701789933179953 + 21 +-3.25 + 31 +0.0 + 0 +ENDBLK + 5 +2CC59 +330 +2CC51 +100 +AcDbEntity + 8 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CD84 +330 +2CD81 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +_Dot + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_Dot + 1 + + 0 +LWPOLYLINE + 5 +2CD82 +330 +2CD81 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.5 + 10 +-0.25 + 20 +0.0 + 42 +1.0 + 10 +0.25 + 20 +0.0 + 42 +1.0 + 0 +LINE + 5 +2CD83 +330 +2CD81 +100 +AcDbEntity + 8 +0 + 6 +ByBlock + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-0.5 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +0.0 + 31 +0.0 + 0 +ENDBLK + 5 +2CD85 +330 +2CD81 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2CDBB +330 +2CDB4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C39675EAF + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C39675EAF + 1 + + 0 +MTEXT + 5 +2CDB5 +330 +2CDB4 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-10.41087637840934 + 20 +1.090797888148813 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;31.20 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +2CDB6 +330 +2CDB4 +100 +AcDbEntity + 8 +BOM + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-4.42055325718502 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2CDB7 +330 +2CDB4 +100 +AcDbEntity + 8 +BOM + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.42055325718502 + 20 +0.0 + 30 +0.0 + 11 +-5.865350169418434 + 21 +1.033361979106957 + 31 +0.0 + 0 +LINE + 5 +2CDB8 +330 +2CDB4 +100 +AcDbEntity + 8 +BOM + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.865350169418434 + 20 +1.033361979106957 + 30 +0.0 + 11 +-6.941548574766614 + 21 +1.033361979106957 + 31 +0.0 + 0 +ENDBLK + 5 +2CDBC +330 +2CDB4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2D042 +330 +2D03E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7B642FDC + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7B642FDC + 1 + + 0 +LWPOLYLINE + 5 +2D03F +330 +2D03E +100 +AcDbEntity + 8 +dim + 62 + 2 + 48 +2.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +0.0 + 20 +0.0 + 10 +-8.0 + 20 +0.0 + 10 +-8.0 + 20 +-3.249999999999972 + 10 +0.0 + 20 +-3.249999999999972 + 0 +ENDBLK + 5 +2D043 +330 +2D03E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2D35B +330 +2D358 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +150silk + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +150silk + 1 + + 0 +DIMENSION + 5 +2D35C +330 +2D358 +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D153 + 10 +-3.799999999999841 + 20 +8.30707855610558 + 30 +0.0 + 11 +-13.43333333333317 + 21 +8.30707855610558 + 31 +0.0 + 70 + 32 + 1 +{\Ftxt.shx|c1;<>%%p0.30} + 71 + 5 + 42 +2.999999999998096 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +-0.8000000000017451 + 23 +10.99999999999997 + 33 +0.0 + 14 +-3.799999999999841 + 24 +10.99999999999997 + 34 +0.0 +100 +AcDbRotatedDimension + 0 +HATCH + 5 +2D35D +330 +2D358 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +148.2000000000021 + 20 +48.5 + 40 +1.0 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +61.20000000000016 + 20 +38.49999999999994 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +DIMENSION + 5 +2D35E +330 +2D358 +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D154 + 10 +-19.70008577599117 + 20 +10.99999999999998 + 30 +0.0 + 11 +-19.70008577599117 + 21 +-8.175000000000026 + 31 +0.0 + 70 + 160 + 1 +{\Ftxt.shx|c0;<>%%p0.30} + 71 + 5 + 42 +10.99999999999997 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +0.0 + 23 +0.0 + 33 +0.0 + 14 +-0.8000000000017451 + 24 +10.99999999999997 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +2D35F +330 +2D358 +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D155 + 10 +163.3184373834098 + 20 +48.5 + 30 +0.0 + 11 +163.3184373834098 + 21 +24.25000000000002 + 31 +0.0 + 70 + 32 + 1 +{\Ftxt.shx|c0;<>%%p0.30} + 71 + 5 + 42 +48.5 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +147.4000000000001 + 23 +0.0 + 33 +0.0 + 14 +148.2000000000021 + 24 +48.5 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension + 0 +HATCH + 5 +2D360 +330 +2D358 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-0.8000000000017451 + 20 +10.99999999999997 + 40 +1.0 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +86.20000000000016 + 20 +31.19999999999993 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +DIMENSION + 5 +2D361 +330 +2D358 +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D156 + 10 +151.2000000000002 + 20 +51.30834336316263 + 30 +0.0 + 11 +160.8333333333335 + 21 +51.30834336316263 + 31 +0.0 + 70 + 32 + 1 +{\Ftxt.shx|c1;<>%%p0.30} + 71 + 5 + 42 +2.999999999998067 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +148.2000000000021 + 23 +48.5 + 33 +0.0 + 14 +151.2000000000002 + 24 +48.5 + 34 +0.0 +100 +AcDbRotatedDimension + 0 +ENDBLK + 5 +2D362 +330 +2D358 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2D5C0 +330 +2D5BB +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C42970C40 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C42970C40 + 1 + + 0 +INSERT + 5 +2D5BC +330 +2D5BB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7B2656CB + 10 +-37.38774566633319 + 20 +-22.89019246027933 + 30 +0.0 + 41 +1.199999999999989 + 42 +1.199999999999996 + 43 +1.2 + 0 +ENDBLK + 5 +2D5C1 +330 +2D5BB +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E00B +330 +2E009 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +2E00C +330 +2E009 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666667 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2E00D +330 +2E009 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666667 + 31 +0.0 + 0 +LINE + 5 +2E00E +330 +2E009 +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666667 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666667 + 31 +0.0 + 0 +ENDBLK + 5 +2E00F +330 +2E009 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E013 +330 +2E010 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C413E6C87 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C413E6C87 + 1 + + 0 +SPLINE + 5 +2E014 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2296047028 + 40 +0.4999959321 + 40 +0.7703871614 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-3.256493160699989 + 20 +1.282700532999982 + 30 +0.0 + 10 +-3.291155092100013 + 20 +1.297386793999991 + 30 +0.0 + 10 +-3.382163880000007 + 20 +1.2883584243 + 30 +0.0 + 10 +-3.493556611000002 + 20 +1.139329127499991 + 30 +0.0 + 10 +-3.491439625299989 + 20 +0.9532798843000023 + 30 +0.0 + 10 +-3.423248838600017 + 20 +0.8923337664999877 + 30 +0.0 + 10 +-3.386591249100007 + 20 +0.8837627988999941 + 30 +0.0 + 0 +SPLINE + 5 +2E015 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2295990905 + 40 +0.4999984605 + 40 +0.7703978306 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.282698723600021 + 20 +3.256503025000001 + 30 +0.0 + 10 +1.29738213409999 + 20 +3.2911638434 + 30 +0.0 + 10 +1.288351802400001 + 20 +3.382169886599996 + 30 +0.0 + 10 +1.139324924100009 + 20 +3.493560815999999 + 30 +0.0 + 10 +0.9532799165000085 + 20 +3.491443877599991 + 30 +0.0 + 10 +0.8923338401999956 + 20 +3.423257831899988 + 30 +0.0 + 10 +0.883760558299997 + 20 +3.386603864999998 + 30 +0.0 + 0 +SPLINE + 5 +2E016 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2296163949 + 40 +0.4999997584 + 40 +0.770383122 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +3.25648484040002 + 20 +-1.282688589300008 + 30 +0.0 + 10 +3.291148403999983 + 20 +-1.297379039400013 + 30 +0.0 + 10 +3.382161223499992 + 20 +-1.288353560400012 + 30 +0.0 + 10 +3.493556611000002 + 20 +-1.139320709600014 + 30 +0.0 + 10 +3.491439595799989 + 20 +-0.9532688777000118 + 30 +0.0 + 10 +3.423245914799992 + 20 +-0.8923227354000147 + 30 +0.0 + 10 +3.386586115100016 + 20 +-0.8837531806999976 + 30 +0.0 + 0 +SPLINE + 5 +2E017 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2296219821 + 40 +0.4999972195 + 40 +0.7703724569 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.2826904028 + 20 +-3.256474970600024 + 30 +0.0 + 10 +-1.297383700899985 + 20 +-3.291139643500003 + 30 +0.0 + 10 +-1.288360187400002 + 20 +-3.382155203600007 + 30 +0.0 + 10 +-1.139324920599989 + 20 +-3.493552397100018 + 30 +0.0 + 10 +-0.9532688456999949 + 20 +-3.491435333800013 + 30 +0.0 + 10 +-0.892322663300007 + 20 +-3.423236909400003 + 30 +0.0 + 10 +-0.8837554243999932 + 20 +-3.386573487600003 + 30 +0.0 + 0 +ARC + 5 +2E018 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.200000000000017 + 20 +4.207094756099977 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +0.0000000007002309 + 51 +90.00000000899878 + 0 +ARC + 5 +2E019 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.24152849639998 + 20 +3.450721098999992 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +314.9932996622005 + 51 +135.0000000398005 + 0 +ARC + 5 +2E01A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.443610024399987 + 20 +2.248639572599998 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +315.0000000397009 + 51 +135.0070438361013 + 0 +ARC + 5 +2E01B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +1.899531111000016 + 20 +3.532987787399989 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +241.6868734101997 + 51 +315.0000000403002 + 0 +ARC + 5 +2E01C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.525876707700007 + 20 +1.90664219289998 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +135.0000000397009 + 51 +208.3131265271994 + 0 +ARC + 5 +2E01D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.299999999999983 + 20 +2.284257838199991 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +0.0 + 51 +45.00000800289929 + 0 +ARC + 5 +2E01E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.277157287499989 + 20 +4.30710054779999 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +44.99998994970063 + 51 +90.0 + 0 +ARC + 5 +2E01F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.337664842099997 + 20 +1.086344732599997 + 30 +0.0 + 40 +0.2210721118 +100 +AcDbArc + 50 +283.6319985880997 + 51 +112.4253794178995 + 0 +ARC + 5 +2E020 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.337664842099997 + 20 +1.08633683459999 + 30 +0.0 + 40 +0.225 +100 +AcDbArc + 50 +283.6451595360011 + 51 +112.4122194175998 + 0 +ARC + 5 +2E021 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.200000000000017 + 20 +4.207084225399981 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +0.0 + 51 +90.00000000009933 + 0 +ARC + 5 +2E022 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0071110844999822 + 30 +0.0 + 40 +3.855 +100 +AcDbArc + 50 +241.6868734130003 + 51 +267.0271228393996 + 0 +ARC + 5 +2E023 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0071110844999822 + 30 +0.0 + 40 +3.855 +100 +AcDbArc + 50 +151.6868734793001 + 51 +208.3131265205005 + 0 +ARC + 5 +2E024 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0071110844999822 + 30 +0.0 + 40 +3.855 +100 +AcDbArc + 50 +61.6868734130003 + 51 +118.3131265868999 + 0 +ARC + 5 +2E025 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0071110844999822 + 30 +0.0 + 40 +3.855 +100 +AcDbArc + 50 +331.6868734793001 + 51 +28.31312652050062 + 0 +ARC + 5 +2E026 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0071110844999822 + 30 +0.0 + 40 +3.855 +100 +AcDbArc + 50 +272.9728771606004 + 51 +298.3131265868999 + 0 +ARC + 5 +2E027 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.525876707700007 + 20 +-1.892420023900016 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +151.6868734769001 + 51 +224.9999999608006 + 0 +ARC + 5 +2E028 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.200000000000017 + 20 +-4.192905232300006 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +270.0000000040988 + 51 +359.9999999942996 + 0 +ARC + 5 +2E029 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.443610024399987 + 20 +-2.234417413900019 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +225.0068268973007 + 51 +44.9999999603999 + 0 +ARC + 5 +2E02A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.24152849639998 + 20 +-3.436498940200011 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +224.9999999601005 + 51 +44.99353047199953 + 0 +ARC + 5 +2E02B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.277157287499989 + 20 +-4.292899440200003 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +270.0 + 51 +315.0000080823995 + 0 +ARC + 5 +2E02C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.299999999999983 + 20 +-2.270056730600018 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +314.9999900291996 + 51 +0.0 + 0 +ARC + 5 +2E02D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +4.200000000000017 + 20 +-4.192915763000016 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +270.0000000004999 + 51 +0.0 + 0 +CIRCLE + 5 +2E02E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +3.25 + 0 +CIRCLE + 5 +2E02F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000052652999898 + 30 +0.0 + 40 +3.35 + 0 +ARC + 5 +2E030 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +165.3753837767001 + 51 +194.3536444144998 + 0 +ARC + 5 +2E031 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +111.703734501199 + 51 +158.5000670127997 + 0 +ARC + 5 +2E032 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +75.37538313460037 + 51 +104.3536444526002 + 0 +ARC + 5 +2E033 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +21.70373444659998 + 51 +68.50006757060017 + 0 +ARC + 5 +2E034 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +345.3753837767 + 51 +14.35364441449981 + 0 +ARC + 5 +2E035 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +291.703734501199 + 51 +338.5000670131996 + 0 +ARC + 5 +2E036 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +255.3753837383998 + 51 +284.3536444526002 + 0 +ARC + 5 +2E037 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0000157960999871 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +201.7037344465999 + 51 +248.5000669595009 + 0 +ARC + 5 +2E038 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.000023694099994 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +284.417950321299 + 51 +291.6394286244991 + 0 +ARC + 5 +2E039 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.000023694099994 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +14.41795028380076 + 51 +21.63942857009964 + 0 +ARC + 5 +2E03A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.000023694099994 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +104.417950321299 + 51 +111.6394286245009 + 0 +ARC + 5 +2E03B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.000023694099994 + 30 +0.0 + 40 +3.5 +100 +AcDbArc + 50 +194.4179502838008 + 51 +201.6394285700992 + 0 +ARC + 5 +2E03C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +1.899531111000016 + 20 +-3.518765618300009 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +44.99999996019954 + 51 +118.313126592301 + 0 +ARC + 5 +2E03D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +-3.847888910100011 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +178.5135614237997 + 51 +1.4864385762003 + 0 +ARC + 5 +2E03E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +1.086321040000001 + 20 +-3.337641143300004 + 30 +0.0 + 40 +0.2210721118 +100 +AcDbArc + 50 +193.6319985521001 + 51 +22.4253793619001 + 0 +ARC + 5 +2E03F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +1.086321040000001 + 20 +-3.337649041400013 + 30 +0.0 + 40 +0.225 +100 +AcDbArc + 50 +193.6451594995994 + 51 +22.41221936169963 + 0 +ARC + 5 +2E040 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.200000000000017 + 20 +4.207094756099977 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +90.00000000950034 + 51 +179.9999999763998 + 0 +ARC + 5 +2E041 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.443610024399987 + 20 +2.248639572599998 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +44.99330226909957 + 51 +224.9999999601995 + 0 +ARC + 5 +2E042 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.241528496400008 + 20 +3.450721098999992 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +44.99999996019954 + 51 +225.0070443241004 + 0 +ARC + 5 +2E043 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.525876707799995 + 20 +1.90664219289998 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +331.6868734768006 + 51 +44.9999999611 + 0 +ARC + 5 +2E044 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.899531111000016 + 20 +3.532987787399989 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +224.9999999601995 + 51 +298.313126592499 + 0 +ARC + 5 +2E045 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.277157287499989 + 20 +4.30710054779999 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +90.0 + 51 +135.0000080823004 + 0 +ARC + 5 +2E046 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.299999999999983 + 20 +2.284257838199991 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +134.9999900291996 + 51 +180.0 + 0 +ARC + 5 +2E047 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.086321040000001 + 20 +3.337688531499992 + 30 +0.0 + 40 +0.2210721118 +100 +AcDbArc + 50 +13.6319985521001 + 51 +202.4253793619002 + 0 +ARC + 5 +2E048 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.086321040000001 + 20 +3.3376806335 + 30 +0.0 + 40 +0.225 +100 +AcDbArc + 50 +13.64515949959944 + 51 +202.4122193616991 + 0 +ARC + 5 +2E049 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.200000000000017 + 20 +4.207084225399981 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +89.99999999970036 + 51 +180.0000000013997 + 0 +ARC + 5 +2E04A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.200000000000017 + 20 +-4.192905232300006 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +180.0000000053999 + 51 +269.9999999895991 + 0 +ARC + 5 +2E04B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.443610024399987 + 20 +-2.234417413900019 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +135.0000000393997 + 51 +314.9935184369998 + 0 +ARC + 5 +2E04C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.241528496400008 + 20 +-3.436498940200011 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +135.0068250854993 + 51 +315.0000000396001 + 0 +ARC + 5 +2E04D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.899531111000016 + 20 +-3.518765618300009 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +61.68687341029974 + 51 +135.0000000404009 + 0 +ARC + 5 +2E04E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.525876707799995 + 20 +-1.892420023900016 + 30 +0.0 + 40 +0.15 +100 +AcDbArc + 50 +315.0000000396001 + 51 +28.31312652719938 + 0 +ARC + 5 +2E04F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.299999999999983 + 20 +-2.270056730600018 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +180.0 + 51 +225.0000080030001 + 0 +ARC + 5 +2E050 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.277157287499989 + 20 +-4.292899440200003 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +224.9999899497006 + 51 +270.0 + 0 +ARC + 5 +2E051 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.337664842099997 + 20 +-1.086297344400009 + 30 +0.0 + 40 +0.2210721118 +100 +AcDbArc + 50 +103.6319985880997 + 51 +292.4253794178995 + 0 +ARC + 5 +2E052 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.337664842099997 + 20 +-1.086305242500003 + 30 +0.0 + 40 +0.225 +100 +AcDbArc + 50 +103.6451595361 + 51 +292.4122194175998 + 0 +ARC + 5 +2E053 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-4.200000000000017 + 20 +-4.192915763000016 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +180.0000000006001 + 51 +270.0000000009999 + 0 +LINE + 5 +2E054 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.418578668500004 + 20 +4.448521879200001 + 30 +0.0 + 11 +4.441421336399998 + 21 +2.425679214100001 + 31 +0.0 + 0 +LINE + 5 +2E055 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.441421331499981 + 20 +-2.411478111300013 + 30 +0.0 + 11 +2.418578663600016 + 21 +-4.434320776400014 + 31 +0.0 + 0 +LINE + 5 +2E056 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.277157283899982 + 20 +4.307111082099993 + 30 +0.0 + 11 +4.300000007099982 + 21 +2.284268361800002 + 31 +0.0 + 0 +LINE + 5 +2E057 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +4.507084225200003 + 30 +0.0 + 11 +-4.200000000000017 + 21 +4.507084225200003 + 31 +0.0 + 0 +LINE + 5 +2E058 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.277157283899982 + 20 +4.307111082099993 + 30 +0.0 + 11 +-2.27715728390001 + 21 +4.307111082099993 + 31 +0.0 + 0 +LINE + 5 +2E059 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.560000000000002 + 20 +4.307094755899996 + 30 +0.0 + 11 +-4.200000000000017 + 21 +4.307094755899996 + 31 +0.0 + 0 +LINE + 5 +2E05A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +4.307094755899996 + 30 +0.0 + 11 +2.560000000000002 + 21 +4.307094755899996 + 31 +0.0 + 0 +LINE + 5 +2E05B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.300000007099982 + 20 +-2.270046206800004 + 30 +0.0 + 11 +2.277157280400019 + 21 +-4.292888916600006 + 31 +0.0 + 0 +LINE + 5 +2E05C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.5 + 20 +4.207084225399981 + 30 +0.0 + 11 +4.5 + 21 +-4.192915763000016 + 31 +0.0 + 0 +LINE + 5 +2E05D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.299999999999983 + 20 +2.567094758400003 + 30 +0.0 + 11 +4.299999999999983 + 21 +4.207094756099977 + 31 +0.0 + 0 +LINE + 5 +2E05E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.300000007099982 + 20 +-2.270046206800004 + 30 +0.0 + 11 +4.300000007099982 + 21 +2.284268361800002 + 31 +0.0 + 0 +LINE + 5 +2E05F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.299999999999983 + 20 +-4.192905232300006 + 30 +0.0 + 11 +4.299999999999983 + 21 +-2.552905234600019 + 31 +0.0 + 0 +LINE + 5 +2E060 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.344851542300006 + 20 +2.361541141000004 + 30 +0.0 + 11 +2.354429797999984 + 21 +3.351962413699979 + 31 +0.0 + 0 +LINE + 5 +2E061 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.5 + 20 +4.207084225399981 + 30 +0.0 + 11 +4.299999999999983 + 21 +4.207094756099977 + 31 +0.0 + 0 +LINE + 5 +2E062 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.299999999999983 + 20 +4.207094756099977 + 30 +0.0 + 11 +-4.5 + 21 +4.207084225399981 + 31 +0.0 + 0 +LINE + 5 +2E063 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.3544300991 + 20 +-3.337740501100015 + 30 +0.0 + 11 +3.344851307499994 + 21 +-2.347318709300012 + 31 +0.0 + 0 +LINE + 5 +2E064 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +4.307094755899996 + 30 +0.0 + 11 +4.200000000000017 + 21 +4.507084225200003 + 31 +0.0 + 0 +LINE + 5 +2E065 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +-4.492915762600006 + 30 +0.0 + 11 +4.200000000000017 + 21 +-4.292905232100011 + 31 +0.0 + 0 +LINE + 5 +2E066 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.389768247099994 + 20 +0.8715001587999893 + 30 +0.0 + 11 +3.390744130099989 + 21 +0.8676875322999962 + 31 +0.0 + 0 +LINE + 5 +2E067 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.251879703500009 + 20 +1.294341253399992 + 30 +0.0 + 11 +3.2533302171 + 21 +1.290698902499997 + 31 +0.0 + 0 +LINE + 5 +2E068 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.203193718800009 + 20 +2.220344775800001 + 30 +0.0 + 11 +2.213244225099999 + 21 +3.210294268099986 + 31 +0.0 + 0 +LINE + 5 +2E069 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +3.700015790899997 + 30 +0.0 + 11 +0.5 + 21 +3.700015790899997 + 31 +0.0 + 0 +LINE + 5 +2E06A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8714764659000025 + 20 +3.389791936599991 + 30 +0.0 + 11 +-0.867671737400002 + 21 +3.390759921499992 + 31 +0.0 + 0 +LINE + 5 +2E06B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.294325459100008 + 20 +-3.251863902900013 + 30 +0.0 + 11 +1.290675210200021 + 21 +-3.253306518500011 + 31 +0.0 + 0 +LINE + 5 +2E06C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.203193718899996 + 20 +-2.20614366800001 + 30 +0.0 + 11 +2.213244225199986 + 21 +-3.196093160200007 + 31 +0.0 + 0 +LINE + 5 +2E06D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.700000000000017 + 20 +0.5000157953999889 + 30 +0.0 + 11 +3.700000000000017 + 21 +-0.4999842032000004 + 31 +0.0 + 0 +LINE + 5 +2E06E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.5 + 20 +2.284257838199991 + 30 +0.0 + 11 +4.299999999999983 + 21 +2.284268368899987 + 31 +0.0 + 0 +LINE + 5 +2E06F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.299999999999983 + 20 +2.284268368899987 + 30 +0.0 + 11 +-4.5 + 21 +2.284257838199991 + 31 +0.0 + 0 +LINE + 5 +2E070 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.277157287499989 + 20 +4.307111078599988 + 30 +0.0 + 11 +2.277157287499989 + 21 +4.507100547799979 + 31 +0.0 + 0 +LINE + 5 +2E071 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.277157287499989 + 20 +-4.492899440000002 + 30 +0.0 + 11 +2.277157287499989 + 21 +-4.292888909500007 + 31 +0.0 + 0 +LINE + 5 +2E072 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.441421364799993 + 20 +-2.411478078000016 + 30 +0.0 + 11 +4.300000008599994 + 21 +-2.270046191300011 + 31 +0.0 + 0 +LINE + 5 +2E073 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.277157287499989 + 20 +4.307111078599988 + 30 +0.0 + 11 +-2.4185786436 + 21 +4.448521904099991 + 31 +0.0 + 0 +LINE + 5 +2E074 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.299999999999983 + 20 +2.284268368899987 + 30 +0.0 + 11 +4.441421356099994 + 21 +2.425679194499978 + 31 +0.0 + 0 +LINE + 5 +2E075 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.418578635100005 + 20 +-4.434320804799995 + 30 +0.0 + 11 +-2.277157278900006 + 21 +-4.292888918100019 + 31 +0.0 + 0 +LINE + 5 +2E076 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.00559712819998 + 20 +3.426921770299984 + 30 +0.0 + 11 +-2.135462479200015 + 21 +3.556787121099987 + 31 +0.0 + 0 +LINE + 5 +2E077 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.549676041600009 + 20 +-2.128351391700008 + 30 +0.0 + 11 +3.419810690599974 + 21 +-1.998486040900005 + 31 +0.0 + 0 +LINE + 5 +2E078 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.419810690599974 + 20 +2.012708209899998 + 30 +0.0 + 11 +3.549676041600009 + 21 +2.142573560699987 + 31 +0.0 + 0 +LINE + 5 +2E079 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.135462479200015 + 20 +-3.542564952100008 + 30 +0.0 + 11 +-2.00559712819998 + 21 +-3.412699601300019 + 31 +0.0 + 0 +LINE + 5 +2E07A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.213244225099999 + 20 +3.210294268099986 + 30 +0.0 + 11 +-2.347593990299998 + 21 +3.3446545507 + 31 +0.0 + 0 +LINE + 5 +2E07B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.337544127900003 + 20 +-2.340483559700019 + 30 +0.0 + 11 +3.203193761199998 + 21 +-2.206143710300012 + 31 +0.0 + 0 +LINE + 5 +2E07C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.46410161510002 + 20 +0.5000157953999889 + 30 +0.0 + 11 +-3.700000000000017 + 21 +0.5000157953999889 + 31 +0.0 + 0 +LINE + 5 +2E07D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.700000000000017 + 20 +0.5000157953999889 + 30 +0.0 + 11 +3.464101615099992 + 21 +0.5000157953999889 + 31 +0.0 + 0 +LINE + 5 +2E07E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.203193718800009 + 20 +2.220344775800001 + 30 +0.0 + 11 +3.33754348810001 + 21 +2.354705062500003 + 31 +0.0 + 0 +LINE + 5 +2E07F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.347594627800021 + 20 +-3.330433045500016 + 30 +0.0 + 11 +-2.213244267600004 + 21 +-3.196093202600011 + 31 +0.0 + 0 +LINE + 5 +2E080 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5 + 20 +3.464117406399993 + 30 +0.0 + 11 +0.5 + 21 +3.700015790899997 + 31 +0.0 + 0 +LINE + 5 +2E081 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5 + 20 +-3.69998419880001 + 30 +0.0 + 11 +0.5 + 21 +-3.464085814300006 + 31 +0.0 + 0 +LINE + 5 +2E082 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.213244267500016 + 20 +-3.196093202500009 + 30 +0.0 + 11 +2.347593969599984 + 21 +-3.330432387299993 + 31 +0.0 + 0 +LINE + 5 +2E083 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.337544128699989 + 20 +2.354705703099995 + 30 +0.0 + 11 +-3.203193718800009 + 21 +2.220344775800001 + 31 +0.0 + 0 +LINE + 5 +2E084 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.464101615099992 + 20 +-0.4999842032000004 + 30 +0.0 + 11 +3.700000000000017 + 21 +-0.4999842032000004 + 31 +0.0 + 0 +LINE + 5 +2E085 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.700000000000017 + 20 +-0.4999842032000004 + 30 +0.0 + 11 +-3.46410161510002 + 21 +-0.4999842032000004 + 31 +0.0 + 0 +LINE + 5 +2E086 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.203193761199998 + 20 +-2.20614371020001 + 30 +0.0 + 11 +-3.337543488600005 + 21 +-2.340482920300005 + 31 +0.0 + 0 +LINE + 5 +2E087 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.347594627099994 + 20 +3.344655187499995 + 30 +0.0 + 11 +2.213244225099999 + 21 +3.210294268099986 + 31 +0.0 + 0 +LINE + 5 +2E088 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +-3.464085814300006 + 30 +0.0 + 11 +-0.5 + 21 +-3.69998419880001 + 31 +0.0 + 0 +LINE + 5 +2E089 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +3.700015790899997 + 30 +0.0 + 11 +-0.5 + 21 +3.464117406399993 + 31 +0.0 + 0 +LINE + 5 +2E08A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.00559712819998 + 20 +-3.412699601300019 + 30 +0.0 + 11 +2.135462479200015 + 21 +-3.542564952100008 + 31 +0.0 + 0 +LINE + 5 +2E08B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.549676041600009 + 20 +2.142573560699987 + 30 +0.0 + 11 +-3.419810690600002 + 21 +2.012708209899998 + 31 +0.0 + 0 +LINE + 5 +2E08C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.419810690600002 + 20 +-1.998486040900005 + 30 +0.0 + 11 +-3.549676041600009 + 21 +-2.128351391700008 + 31 +0.0 + 0 +LINE + 5 +2E08D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.135462479200015 + 20 +3.556787121099987 + 30 +0.0 + 11 +2.00559712819998 + 21 +3.426921770299984 + 31 +0.0 + 0 +LINE + 5 +2E08E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.277157287499989 + 20 +-4.292888909500007 + 30 +0.0 + 11 +2.418578643699988 + 21 +-4.434320796300014 + 31 +0.0 + 0 +LINE + 5 +2E08F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.441421364600018 + 20 +2.425679185799993 + 30 +0.0 + 11 +-4.300000008599994 + 21 +2.28426836029999 + 31 +0.0 + 0 +LINE + 5 +2E090 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.418578635100005 + 20 +4.448521912700002 + 30 +0.0 + 11 +2.277157278899978 + 21 +4.307111087099983 + 31 +0.0 + 0 +LINE + 5 +2E091 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.299999999999983 + 20 +-2.270046199900008 + 30 +0.0 + 11 +-4.441421356199982 + 21 +-2.411478086499997 + 31 +0.0 + 0 +LINE + 5 +2E092 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.299999999999983 + 20 +-2.270046199900008 + 30 +0.0 + 11 +4.5 + 21 +-2.270056730600018 + 31 +0.0 + 0 +LINE + 5 +2E093 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.5 + 20 +-2.270056730600018 + 30 +0.0 + 11 +-4.299999999999983 + 21 +-2.270046199900008 + 31 +0.0 + 0 +LINE + 5 +2E094 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.277157287499989 + 20 +-4.292888909500007 + 30 +0.0 + 11 +-2.277157287499989 + 21 +-4.492899440000002 + 31 +0.0 + 0 +LINE + 5 +2E095 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.277157287499989 + 20 +4.507100547799979 + 30 +0.0 + 11 +-2.277157287499989 + 21 +4.307111078599988 + 31 +0.0 + 0 +LINE + 5 +2E096 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.38976824720001 + 20 +-0.8714527706000155 + 30 +0.0 + 11 +-3.390744130099989 + 21 +-0.8676559402000095 + 31 +0.0 + 0 +LINE + 5 +2E097 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.251879703500009 + 20 +-1.294309661200018 + 30 +0.0 + 11 +-3.2533302171 + 21 +-1.290651514300009 + 31 +0.0 + 0 +LINE + 5 +2E098 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5 + 20 +-3.69998419880001 + 30 +0.0 + 11 +-0.5 + 21 +-3.69998419880001 + 31 +0.0 + 0 +LINE + 5 +2E099 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8714764659000025 + 20 +-3.389744548400003 + 30 +0.0 + 11 +0.867671737400002 + 21 +-3.390728329400005 + 31 +0.0 + 0 +LINE + 5 +2E09A +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.294325459100008 + 20 +3.251895494999999 + 30 +0.0 + 11 +-1.290675210200021 + 21 +3.253353906699999 + 31 +0.0 + 0 +LINE + 5 +2E09B +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.700000000000017 + 20 +-0.4999842032000004 + 30 +0.0 + 11 +-3.700000000000017 + 21 +0.5000157953999889 + 31 +0.0 + 0 +LINE + 5 +2E09C +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.203193718800009 + 20 +-2.206143668199999 + 30 +0.0 + 11 +-2.213244225099999 + 21 +-3.196093160500013 + 31 +0.0 + 0 +LINE + 5 +2E09D +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.344851542899988 + 20 +-2.347318972500005 + 30 +0.0 + 11 +-2.354429798399991 + 21 +-3.337740245100008 + 31 +0.0 + 0 +LINE + 5 +2E09E +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.213244225099999 + 20 +3.210294268099986 + 30 +0.0 + 11 +-3.203193718800009 + 21 +2.220344775800001 + 31 +0.0 + 0 +LINE + 5 +2E09F +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.354430065300022 + 20 +3.351962626800002 + 30 +0.0 + 11 +-3.344851308000017 + 21 +2.361540878799985 + 31 +0.0 + 0 +LINE + 5 +2E0A0 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.299999999999983 + 20 +-4.192905232300006 + 30 +0.0 + 11 +4.5 + 21 +-4.192915763000016 + 31 +0.0 + 0 +LINE + 5 +2E0A1 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.5 + 20 +-4.192915763000016 + 30 +0.0 + 11 +-4.299999999999983 + 21 +-4.192905232300006 + 31 +0.0 + 0 +LINE + 5 +2E0A2 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.2771572945 + 20 +-4.292888916600006 + 30 +0.0 + 11 +2.277157280400019 + 21 +-4.292888916600006 + 31 +0.0 + 0 +LINE + 5 +2E0A3 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.560000000000002 + 20 +-4.292905232100011 + 30 +0.0 + 11 +4.200000000000017 + 21 +-4.292905232100011 + 31 +0.0 + 0 +LINE + 5 +2E0A4 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.200000000000017 + 20 +-4.292905232100011 + 30 +0.0 + 11 +-2.560000000000002 + 21 +-4.292905232100011 + 31 +0.0 + 0 +LINE + 5 +2E0A5 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +-4.492915762600006 + 30 +0.0 + 11 +-4.200000000000017 + 21 +-4.492915762600006 + 31 +0.0 + 0 +LINE + 5 +2E0A6 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.200000000000017 + 20 +-4.292905232100011 + 30 +0.0 + 11 +-4.200000000000017 + 21 +-4.492915762600006 + 31 +0.0 + 0 +LINE + 5 +2E0A7 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.200000000000017 + 20 +4.507084225200003 + 30 +0.0 + 11 +-4.200000000000017 + 21 +4.307094755899996 + 31 +0.0 + 0 +LINE + 5 +2E0A8 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.299999999999983 + 20 +-2.552905234600019 + 30 +0.0 + 11 +-4.299999999999983 + 21 +-4.192905232300006 + 31 +0.0 + 0 +LINE + 5 +2E0A9 +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.30000000710001 + 20 +2.284268375899998 + 30 +0.0 + 11 +-4.30000000710001 + 21 +-2.270046192700008 + 31 +0.0 + 0 +LINE + 5 +2E0AA +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.299999999999983 + 20 +4.207094756099977 + 30 +0.0 + 11 +-4.299999999999983 + 21 +2.567094758400003 + 31 +0.0 + 0 +LINE + 5 +2E0AB +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.5 + 20 +-4.192915763000016 + 30 +0.0 + 11 +-4.5 + 21 +4.207084225399981 + 31 +0.0 + 0 +LINE + 5 +2E0AC +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.2771572945 + 20 +-4.292888916600006 + 30 +0.0 + 11 +-4.30000000710001 + 21 +-2.270046192700008 + 31 +0.0 + 0 +LINE + 5 +2E0AD +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.418578668500004 + 20 +-4.434320771599999 + 30 +0.0 + 11 +-4.441421336399998 + 21 +-2.411478106499999 + 31 +0.0 + 0 +LINE + 5 +2E0AE +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-4.30000000710001 + 20 +2.284268375899998 + 30 +0.0 + 11 +-2.27715728390001 + 21 +4.307111082099993 + 31 +0.0 + 0 +LINE + 5 +2E0AF +330 +2E010 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.4185786436 + 20 +4.448521904099991 + 30 +0.0 + 11 +-4.441421364600018 + 21 +2.425679185799993 + 31 +0.0 + 0 +ENDBLK + 5 +2E0B0 +330 +2E010 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E0B4 +330 +2E0B1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C355472B6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C355472B6 + 1 + + 0 +ARC + 5 +2E0B5 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.74999954253434 +100 +AcDbArc + 50 +23.59987221433792 + 51 +336.4001277856648 + 0 +CIRCLE + 5 +2E0B6 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +3.185 + 0 +LINE + 5 +2E0B7 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.205000000000041 + 20 +-0.4395452195167309 + 30 +0.0 + 11 +3.205000000000041 + 21 +0.4395452195167309 + 31 +0.0 + 0 +ARC + 5 +2E0B8 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +3.234999999999999 +100 +AcDbArc + 50 +187.8090339128 + 51 +352.1909660871996 + 0 +LINE + 5 +2E0B9 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-3.204999999999984 + 20 +0.4395452195167309 + 30 +0.0 + 11 +-3.204999999999984 + 21 +-0.4395452195167309 + 31 +0.0 + 0 +ARC + 5 +2E0BA +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +3.234999999999999 +100 +AcDbArc + 50 +7.809033912799988 + 51 +172.1909660872 + 0 +CIRCLE + 5 +2E0BB +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +1.15000001713634 + 0 +CIRCLE + 5 +2E0BC +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.8700000000000001 + 0 +SPLINE + 5 +2E0BD +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 24 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0196208288048653 + 40 +-0.0196208288048653 + 40 +-0.0196208288048653 + 40 +-0.0196208288048653 + 40 +-0.0116470269279613 + 40 +-0.0116470269279613 + 40 +-0.0036732250510573 + 40 +-0.0036732250510573 + 40 +-0.0011890506976551 + 40 +-0.0011890506976551 + 40 +-0.0005279357043978 + 40 +-0.0005279357043978 + 40 +-0.0002483060242766 + 40 +-0.0002483060242766 + 40 +-0.0002483060242766 + 40 +-0.0002483060242766 + 10 +2.56999954253439 + 20 +0.6014942434323984 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.6280735830220863 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.6572239723425639 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.714430853185803 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7425704731068379 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7742341779692481 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.782848214757621 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7894318362663739 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7908203122010775 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7919203318934933 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7922053686705226 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.7923835478010517 + 30 +0.0 + 0 +LINE + 5 +2E0BE +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.519999542534379 + 20 +-1.100954036082243 + 30 +0.0 + 11 +2.519999542534379 + 21 +-0.9693295803349429 + 31 +0.0 + 0 +LINE + 5 +2E0BF +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.519999542534379 + 20 +0.9693295803349429 + 30 +0.0 + 11 +2.519999542534379 + 21 +1.100954036082243 + 31 +0.0 + 0 +SPLINE + 5 +2E0C0 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 10 +-2.539053960901924 + 20 +0.8865519268950095 + 30 +0.0 + 10 +-2.538824880937 + 20 +0.8864678002255744 + 30 +0.0 + 10 +-2.537969233241483 + 20 +0.8861562175798099 + 30 +0.0 + 10 +-2.536545640630209 + 20 +0.8856116677233388 + 30 +0.0 + 10 +-2.534837703194626 + 20 +0.8849583508417709 + 30 +0.0 + 10 +-2.532261438745309 + 20 +0.8839487333556235 + 30 +0.0 + 10 +-2.529066920179957 + 20 +0.8825765915463251 + 30 +0.0 + 10 +-2.525882227265583 + 20 +0.8812086701496469 + 30 +0.0 + 10 +-2.521995061636403 + 20 +0.8794366462377639 + 30 +0.0 + 10 +-2.517785035755878 + 20 +0.8773088901773463 + 30 +0.0 + 10 +-2.513619593900955 + 20 +0.8752036669785639 + 30 +0.0 + 10 +-2.509026945968458 + 20 +0.8726884912561559 + 30 +0.0 + 10 +-2.504431928701536 + 20 +0.8699071884120713 + 30 +0.0 + 10 +-2.501050865821469 + 20 +0.8678606760142884 + 30 +0.0 + 10 +-2.497609911174436 + 20 +0.8656366939726468 + 30 +0.0 + 10 +-2.494266021121859 + 20 +0.863324961637062 + 30 +0.0 + 0 +SPLINE + 5 +2E0C1 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0079445041355387 + 40 +-0.0079445041355387 + 40 +-0.0079445041355387 + 40 +-0.0079445041355387 + 40 +-0.0077875211517976 + 40 +-0.0077875211517976 + 40 +-0.0058415343539829 + 40 +-0.0058415343539829 + 40 +-0.0039046270669924 + 40 +-0.0039046270669924 + 40 +-0.0019532754811321 + 40 +-0.0019532754811321 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 10 +-2.591760218906416 + 20 +0.4994716620620352 + 30 +0.0 + 10 +-2.59228175562157 + 20 +0.4994291754232734 + 30 +0.0 + 10 +-2.59280375101514 + 20 +0.4993887121632383 + 30 +0.0 + 10 +-2.599800441315665 + 20 +0.4988740042171003 + 30 +0.0 + 10 +-2.606179223411687 + 20 +0.4987306301992476 + 30 +0.0 + 10 +-2.618080039263475 + 20 +0.4989772833124562 + 30 +0.0 + 10 +-2.62344557902577 + 20 +0.4993570346027525 + 30 +0.0 + 10 +-2.632509879854979 + 20 +0.500266264570854 + 30 +0.0 + 10 +-2.636093629295431 + 20 +0.5007789641807108 + 30 +0.0 + 10 +-2.640649647865587 + 20 +0.5014828074047273 + 30 +0.0 + 10 +-2.641871111757268 + 20 +0.5017002019450274 + 30 +0.0 + 10 +-2.642161195168114 + 20 +0.5017504899858523 + 30 +0.0 + 0 +ARC + 5 +2E0C2 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.749999542534338 +100 +AcDbArc + 50 +336.4001277856621 + 51 +23.59987221433626 + 0 +SPLINE + 5 +2E0C3 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 10 +-2.681994318329544 + 20 +0.1991878809098466 + 30 +0.0 + 10 +-2.681751270490793 + 20 +0.1991659110449859 + 30 +0.0 + 10 +-2.680844134760662 + 20 +0.1990864032398747 + 30 +0.0 + 10 +-2.67932811001748 + 20 +0.1989288613500833 + 30 +0.0 + 10 +-2.677509278287289 + 20 +0.1987398524375976 + 30 +0.0 + 10 +-2.674759489686664 + 20 +0.1984314231377766 + 30 +0.0 + 10 +-2.671318685269 + 20 +0.1979328381714822 + 30 +0.0 + 10 +-2.667888464024543 + 20 +0.1974357867451317 + 30 +0.0 + 10 +-2.663675116815512 + 20 +0.1967302155801747 + 30 +0.0 + 10 +-2.659057840296441 + 20 +0.1957645959275851 + 30 +0.0 + 10 +-2.65448946057279 + 20 +0.1948092021531238 + 30 +0.0 + 10 +-2.649402327944927 + 20 +0.1935683937175554 + 30 +0.0 + 10 +-2.644244027948389 + 20 +0.1920711394510022 + 30 +0.0 + 10 +-2.640448495607643 + 20 +0.1909694437382541 + 30 +0.0 + 10 +-2.636549179738608 + 20 +0.1897118266429914 + 30 +0.0 + 10 +-2.632720909620957 + 20 +0.1883443271069325 + 30 +0.0 + 0 +ARC + 5 +2E0C4 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-2.607999289102395 + 20 +-0.6988113033754928 + 30 +0.0 + 40 +0.1999999999999885 +100 +AcDbArc + 50 +304.6572778461651 + 51 +85.34272215381176 + 0 +ARC + 5 +2E0C5 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-2.699999542533988 + 20 +0.0 + 30 +0.0 + 40 +0.200000000000003 +100 +AcDbArc + 50 +289.6572778461615 + 51 +70.34272215383837 + 0 +ARC + 5 +2E0C6 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-2.607999289102395 + 20 +0.6988113033759191 + 30 +0.0 + 40 +0.1999999999999891 +100 +AcDbArc + 50 +274.6572778462079 + 51 +55.34272215378893 + 0 +LINE + 5 +2E0C7 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.56999954253439 + 20 +0.3559182548228819 + 30 +0.0 + 11 +2.56999954253439 + 21 +0.6014942434323984 + 31 +0.0 + 0 +LINE + 5 +2E0C8 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.56999954253439 + 20 +-0.6014942434323984 + 30 +0.0 + 11 +2.56999954253439 + 21 +-0.3559182548228819 + 31 +0.0 + 0 +LINE + 5 +2E0C9 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.669999542629398 + 20 +-0.3559182548228819 + 30 +0.0 + 11 +2.669999542629398 + 21 +0.3559182548228819 + 31 +0.0 + 0 +LINE + 5 +2E0CA +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.669999542629398 + 20 +-0.3559182548228819 + 30 +0.0 + 11 +2.669999542629398 + 21 +-0.3999999999999773 + 31 +0.0 + 0 +LINE + 5 +2E0CB +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.56999954253439 + 20 +-0.3999999999999773 + 30 +0.0 + 11 +2.669999542629398 + 21 +-0.3999999999999773 + 31 +0.0 + 0 +LINE + 5 +2E0CC +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.56999954253439 + 20 +-0.3559182548228819 + 30 +0.0 + 11 +2.669999542629398 + 21 +-0.3559182548228819 + 31 +0.0 + 0 +SPLINE + 5 +2E0CD +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 24 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0002483060240279 + 40 +0.0002483060240279 + 40 +0.0002483060240279 + 40 +0.0002483060240279 + 40 +0.0005279357043978 + 40 +0.0005279357043978 + 40 +0.0011890506976551 + 40 +0.0011890506976551 + 40 +0.0036732250510573 + 40 +0.0036732250510573 + 40 +0.0116470269279613 + 40 +0.0116470269279613 + 40 +0.0196208288048654 + 40 +0.0196208288048654 + 40 +0.0196208288048654 + 40 +0.0196208288048654 + 10 +2.56999954253439 + 20 +-0.7923835478015633 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7922053686710058 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7919203318937775 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7908203122010775 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7894318362663739 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.782848214757621 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7742341779692481 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7425704731068379 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.714430853185803 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.6572239723425639 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.6280735830220863 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.6014942434323984 + 30 +0.0 + 0 +ARC + 5 +2E0CE +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.6988113033759191 + 20 +-2.607999289102111 + 30 +0.0 + 40 +0.2000000000000031 +100 +AcDbArc + 50 +34.65727784610807 + 51 +175.3427221539033 + 0 +SPLINE + 5 +2E0CF +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0079445041355335 + 40 +-0.0079445041355335 + 40 +-0.0079445041355335 + 40 +-0.0079445041355335 + 40 +-0.007787521151792 + 40 +-0.007787521151792 + 40 +-0.0058415343539792 + 40 +-0.0058415343539792 + 40 +-0.0039046270669901 + 40 +-0.0039046270669901 + 40 +-0.001953275481131 + 40 +-0.001953275481131 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 10 +0.8633249616373178 + 20 +-2.494266021121831 + 30 +0.0 + 10 +0.8636225245033415 + 20 +-2.49469644184677 + 30 +0.0 + 10 +0.8639185644112217 + 20 +-2.495128271488284 + 30 +0.0 + 10 +0.8678626597183552 + 20 +-2.500930229057843 + 30 +0.0 + 10 +0.8711762163080721 + 20 +-2.506382729389287 + 30 +0.0 + 10 +0.8769130163719865 + 20 +-2.51681246479933 + 30 +0.0 + 10 +0.8792669119886227 + 20 +-2.521649034183639 + 30 +0.0 + 10 +0.8830116461529656 + 20 +-2.529953563953342 + 30 +0.0 + 10 +0.8843595099864956 + 20 +-2.533313531814514 + 30 +0.0 + 10 +0.8860279731592868 + 20 +-2.537611081248372 + 30 +0.0 + 10 +0.8864504359106036 + 20 +-2.538777597278539 + 30 +0.0 + 10 +0.8865519268951516 + 20 +-2.539053960901924 + 30 +0.0 + 0 +CIRCLE + 5 +2E0D0 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.34999954253434 + 0 +SPLINE + 5 +2E0D1 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0079445041355377 + 40 +-0.0079445041355377 + 40 +-0.0079445041355377 + 40 +-0.0079445041355377 + 40 +-0.0077875211517967 + 40 +-0.0077875211517967 + 40 +-0.0058415343539825 + 40 +-0.0058415343539825 + 40 +-0.0039046270669922 + 40 +-0.0039046270669922 + 40 +-0.001953275481132 + 40 +-0.001953275481132 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 10 +-2.632720909620957 + 20 +-0.1883443271069041 + 30 +0.0 + 10 +-2.633213679052233 + 20 +-0.1885203496831309 + 30 +0.0 + 10 +-2.63370741522175 + 20 +-0.1886945365403108 + 30 +0.0 + 10 +-2.640332482862391 + 20 +-0.1910025829409108 + 30 +0.0 + 10 +-2.646456805302876 + 20 +-0.1927920218986117 + 30 +0.0 + 10 +-2.65801594921129 + 20 +-0.1956339310811188 + 30 +0.0 + 10 +-2.663296949505991 + 20 +-0.1966558233800129 + 30 +0.0 + 10 +-2.672287717806284 + 20 +-0.198123588356907 + 30 +0.0 + 10 +-2.675882050369239 + 20 +-0.1985559011706357 + 30 +0.0 + 10 +-2.680464994402314 + 20 +-0.1990552251987197 + 30 +0.0 + 10 +-2.681701103768489 + 20 +-0.1991613763158284 + 30 +0.0 + 10 +-2.681994318329544 + 20 +-0.1991878809097898 + 30 +0.0 + 0 +SPLINE + 5 +2E0D2 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 40 +0.0000789874975713 + 10 +-2.642161195168171 + 20 +-0.5017504899854259 + 30 +0.0 + 10 +-2.641920742764285 + 20 +-0.5017088058357899 + 30 +0.0 + 10 +-2.641023938800402 + 20 +-0.5015508204746766 + 30 +0.0 + 10 +-2.639518796506195 + 20 +-0.5013106181783655 + 30 +0.0 + 10 +-2.637713020858087 + 20 +-0.5010224384767241 + 30 +0.0 + 10 +-2.634977101655011 + 20 +-0.5006086606431666 + 30 +0.0 + 10 +-2.631524496519944 + 20 +-0.5001997110249476 + 30 +0.0 + 10 +-2.628082510854483 + 20 +-0.4997920192476784 + 30 +0.0 + 10 +-2.623830114714963 + 20 +-0.4993830541568514 + 30 +0.0 + 10 +-2.619120247321689 + 20 +-0.4991207320179853 + 30 +0.0 + 10 +-2.614460257257917 + 20 +-0.4988611878613369 + 30 +0.0 + 10 +-2.609225319616485 + 20 +-0.4987430699656556 + 30 +0.0 + 10 +-2.603855266510493 + 20 +-0.4988542402508074 + 30 +0.0 + 10 +-2.599903923965655 + 20 +-0.4989360405363641 + 30 +0.0 + 10 +-2.595811978807262 + 20 +-0.4991415881584942 + 30 +0.0 + 10 +-2.591760218906529 + 20 +-0.499471662061552 + 30 +0.0 + 0 +SPLINE + 5 +2E0D3 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0079445041355396 + 40 +-0.0079445041355396 + 40 +-0.0079445041355396 + 40 +-0.0079445041355396 + 40 +-0.0077875211517985 + 40 +-0.0077875211517985 + 40 +-0.0058415343539836 + 40 +-0.0058415343539836 + 40 +-0.003904627066993 + 40 +-0.003904627066993 + 40 +-0.0019532754811321 + 40 +-0.0019532754811321 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 40 +-0.0002621070435904 + 10 +-2.49426602112203 + 20 +-0.8633249616367493 + 30 +0.0 + 10 +-2.494696441846941 + 20 +-0.8636225245027447 + 30 +0.0 + 10 +-2.495128271488454 + 20 +-0.8639185644106533 + 30 +0.0 + 10 +-2.500930229057985 + 20 +-0.8678626597177868 + 30 +0.0 + 10 +-2.506382729389486 + 20 +-0.8711762163075321 + 30 +0.0 + 10 +-2.5168124647995 + 20 +-0.876913016371418 + 30 +0.0 + 10 +-2.521649034183781 + 20 +-0.8792669119881111 + 30 +0.0 + 10 +-2.529953563953484 + 20 +-0.8830116461524256 + 30 +0.0 + 10 +-2.533313531814656 + 20 +-0.884359509985984 + 30 +0.0 + 10 +-2.537611081248542 + 20 +-0.8860279731587468 + 30 +0.0 + 10 +-2.538777597278681 + 20 +-0.886450435910092 + 30 +0.0 + 10 +-2.539053960902095 + 20 +-0.8865519268946116 + 30 +0.0 + 0 +SPLINE + 5 +2E0D4 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 10 +0.5017504899859091 + 20 +-2.642161195168114 + 30 +0.0 + 10 +0.5017088058363015 + 20 +-2.641920742764228 + 30 +0.0 + 10 +0.5015508204751882 + 20 +-2.641023938800345 + 30 +0.0 + 10 +0.5013106181788771 + 20 +-2.639518796506138 + 30 +0.0 + 10 +0.5010224384772073 + 20 +-2.63771302085803 + 30 +0.0 + 10 +0.5006086606436497 + 20 +-2.634977101654982 + 30 +0.0 + 10 +0.5001997110254024 + 20 +-2.631524496519859 + 30 +0.0 + 10 +0.4997920192481047 + 20 +-2.628082510854426 + 30 +0.0 + 10 +0.4993830541573061 + 20 +-2.623830114714906 + 30 +0.0 + 10 +0.4991207320184685 + 20 +-2.619120247321632 + 30 +0.0 + 10 +0.4988611878617917 + 20 +-2.614460257257861 + 30 +0.0 + 10 +0.4987430699660536 + 20 +-2.609225319616428 + 30 +0.0 + 10 +0.4988542402512621 + 20 +-2.603855266510465 + 30 +0.0 + 10 +0.498936040536762 + 20 +-2.599903923965627 + 30 +0.0 + 10 +0.4991415881589205 + 20 +-2.595811978807234 + 30 +0.0 + 10 +0.4994716620619783 + 20 +-2.591760218906472 + 30 +0.0 + 0 +SPLINE + 5 +2E0D5 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000027899093933 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000167713472724 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000335454025523 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000502678644515 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000668132360691 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 40 +0.0000789874975712 + 10 +-0.8865519268947537 + 20 +-2.539053960902066 + 30 +0.0 + 10 +-0.8864678002253186 + 20 +-2.538824880937085 + 30 +0.0 + 10 +-0.8861562175795257 + 20 +-2.537969233241597 + 30 +0.0 + 10 +-0.885611667723083 + 20 +-2.536545640630294 + 30 +0.0 + 10 +-0.8849583508414867 + 20 +-2.534837703194682 + 30 +0.0 + 10 +-0.8839487333553961 + 20 +-2.532261438745394 + 30 +0.0 + 10 +-0.8825765915460693 + 20 +-2.529066920180043 + 30 +0.0 + 10 +-0.8812086701494195 + 20 +-2.52588222726564 + 30 +0.0 + 10 +-0.8794366462375365 + 20 +-2.521995061636488 + 30 +0.0 + 10 +-0.8773088901771189 + 20 +-2.517785035755963 + 30 +0.0 + 10 +-0.8752036669783365 + 20 +-2.513619593901069 + 30 +0.0 + 10 +-0.8726884912559285 + 20 +-2.509026945968486 + 30 +0.0 + 10 +-0.8699071884118439 + 20 +-2.504431928701621 + 30 +0.0 + 10 +-0.8678606760141179 + 20 +-2.501050865821526 + 30 +0.0 + 10 +-0.8656366939724762 + 20 +-2.497609911174521 + 30 +0.0 + 10 +-0.8633249616369199 + 20 +-2.494266021121945 + 30 +0.0 + 0 +ARC + 5 +2E0D6 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.6988113033755212 + 20 +-2.607999289102111 + 30 +0.0 + 40 +0.200000000000005 +100 +AcDbArc + 50 +4.657277846075484 + 51 +145.3427221539344 + 0 +SPLINE + 5 +2E0D7 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +-0.0079445041355358 + 40 +-0.0079445041355358 + 40 +-0.0079445041355358 + 40 +-0.0079445041355358 + 40 +-0.0077875211517957 + 40 +-0.0077875211517957 + 40 +-0.0058415343539823 + 40 +-0.0058415343539823 + 40 +-0.003904627066992 + 40 +-0.003904627066992 + 40 +-0.0019532754811318 + 40 +-0.0019532754811318 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 40 +-0.0002621070435905 + 10 +-0.4994716620615236 + 20 +-2.591760218906558 + 30 +0.0 + 10 +-0.4994291754227334 + 20 +-2.592281755621684 + 30 +0.0 + 10 +-0.4993887121627267 + 20 +-2.592803751015254 + 30 +0.0 + 10 +-0.4988740042165887 + 20 +-2.599800441315722 + 30 +0.0 + 10 +-0.4987306301987928 + 20 +-2.6061792234118 + 30 +0.0 + 10 +-0.4989772833120583 + 20 +-2.618080039263589 + 30 +0.0 + 10 +-0.4993570346023262 + 20 +-2.623445579025912 + 30 +0.0 + 10 +-0.5002662645704277 + 20 +-2.632509879855093 + 30 +0.0 + 10 +-0.5007789641803129 + 20 +-2.636093629295544 + 30 +0.0 + 10 +-0.5014828074043294 + 20 +-2.640649647865672 + 30 +0.0 + 10 +-0.5017002019446295 + 20 +-2.641871111757382 + 30 +0.0 + 10 +-0.5017504899854544 + 20 +-2.642161195168171 + 30 +0.0 + 0 +LINE + 5 +2E0D8 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.669999542629398 + 20 +0.3559182548228819 + 30 +0.0 + 11 +2.669999542629398 + 21 +0.3999999999999773 + 31 +0.0 + 0 +LINE + 5 +2E0D9 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.669999542629398 + 20 +0.3559182548228819 + 30 +0.0 + 11 +2.56999954253439 + 21 +0.3559182548228819 + 31 +0.0 + 0 +LINE + 5 +2E0DA +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.669999542629398 + 20 +0.3999999999999773 + 30 +0.0 + 11 +2.56999954253439 + 21 +0.3999999999999773 + 31 +0.0 + 0 +LINE + 5 +2E0DB +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.5017739641158414 + 20 +-2.642296328876853 + 30 +0.0 + 11 +0.5017504899859091 + 21 +-2.642161195168114 + 31 +0.0 + 0 +ARC + 5 +2E0DC +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000000000003411 + 20 +0.0000000000003979 + 30 +0.0 + 40 +2.689517986677585 +100 +AcDbArc + 50 +280.7524766229679 + 51 +289.247523377018 + 0 +LINE + 5 +2E0DD +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.8865519268951516 + 20 +-2.539053960901924 + 30 +0.0 + 11 +0.8865991645566282 + 21 +-2.539182727191616 + 31 +0.0 + 0 +SPLINE + 5 +2E0DE +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 24 + 71 + 3 + 72 + 8 + 73 + 4 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0053773617432585 + 40 +0.0053773617432585 + 40 +0.0053773617432585 + 40 +0.0053773617432585 + 40 +0.005582847793268 + 40 +0.005582847793268 + 40 +0.005582847793268 + 40 +0.005582847793268 + 10 +2.56999954253439 + 20 +-0.8277076060171566 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.816155203556832 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.804388935220004 + 30 +0.0 + 10 +2.56999954253439 + 20 +-0.7923835478015633 + 30 +0.0 + 0 +ARC + 5 +2E0DF +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000000000003979 + 20 +-0.0000000000001421 + 30 +0.0 + 40 +2.699999542533915 +100 +AcDbArc + 50 +338.9605284160028 + 51 +342.1480529487717 + 0 +ARC + 5 +2E0E0 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.69999954253434 +100 +AcDbArc + 50 +21.03947158399712 + 51 +338.9605284160045 + 0 +ARC + 5 +2E0E1 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000000000006821 + 20 +0.0000000000002558 + 30 +0.0 + 40 +2.69999954253362 +100 +AcDbArc + 50 +17.85194705122828 + 51 +21.03947158399712 + 0 +SPLINE + 5 +2E0E2 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 24 + 71 + 3 + 72 + 8 + 73 + 4 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0011383071783998 + 40 +0.0011383071783998 + 40 +0.0011383071783998 + 40 +0.0011383071783998 + 40 +0.0013439095208164 + 40 +0.0013439095208164 + 40 +0.0013439095208164 + 40 +0.0013439095208164 + 10 +2.56999954253439 + 20 +0.7923835478010517 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.8043889352169913 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.816155203551375 + 30 +0.0 + 10 +2.56999954253439 + 20 +0.8277076060093123 + 30 +0.0 + 0 +LINE + 5 +2E0E3 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.539182727191985 + 20 +0.8865991645566282 + 30 +0.0 + 11 +-2.539053960901981 + 21 +0.8865519268950095 + 31 +0.0 + 0 +ARC + 5 +2E0E4 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000000003411 + 20 +0.0000000000003979 + 30 +0.0 + 40 +2.689517986677164 +100 +AcDbArc + 50 +160.7524766229789 + 51 +169.2475233770321 + 0 +LINE + 5 +2E0E5 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.642161195168114 + 20 +0.5017504899858523 + 30 +0.0 + 11 +-2.642296328877137 + 21 +0.5017739641158698 + 31 +0.0 + 0 +LINE + 5 +2E0E6 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.682130923020964 + 20 +0.1992001818189522 + 30 +0.0 + 11 +-2.681994318329544 + 21 +0.1991878809098466 + 31 +0.0 + 0 +ARC + 5 +2E0E7 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000000000002274 + 20 +0.0 + 30 +0.0 + 40 +2.689517986677693 +100 +AcDbArc + 50 +175.7524766229755 + 51 +184.2475233770266 + 0 +LINE + 5 +2E0E8 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.681994318329544 + 20 +-0.1991878809097898 + 30 +0.0 + 11 +-2.682130923020964 + 21 +-0.1992001818189237 + 31 +0.0 + 0 +LINE + 5 +2E0E9 +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.642296328877137 + 20 +-0.5017739641154435 + 30 +0.0 + 11 +-2.642161195168171 + 21 +-0.5017504899854259 + 31 +0.0 + 0 +ARC + 5 +2E0EA +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000000003411 + 20 +0.0000000000000568 + 30 +0.0 + 40 +2.689517986677205 +100 +AcDbArc + 50 +190.7524766229679 + 51 +199.2475233770193 + 0 +LINE + 5 +2E0EB +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.539053960902095 + 20 +-0.8865519268946116 + 30 +0.0 + 11 +-2.539182727191985 + 21 +-0.8865991645561735 + 31 +0.0 + 0 +LINE + 5 +2E0EC +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-0.8865991645561735 + 20 +-2.539182727191616 + 30 +0.0 + 11 +-0.8865519268947537 + 21 +-2.539053960902066 + 31 +0.0 + 0 +ARC + 5 +2E0ED +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000000000001137 + 20 +0.0000000000003126 + 30 +0.0 + 40 +2.689517986677524 +100 +AcDbArc + 50 +250.752476622982 + 51 +259.2475233770321 + 0 +LINE + 5 +2E0EE +330 +2E0B1 +100 +AcDbEntity + 8 +可见 (ISO) + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-0.5017504899854544 + 20 +-2.642161195168171 + 30 +0.0 + 11 +-0.5017739641154435 + 21 +-2.642296328876853 + 31 +0.0 + 0 +ENDBLK + 5 +2E0EF +330 +2E0B1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E0F3 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C507F7010 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C507F7010 + 1 + + 0 +MTEXT + 5 +2E0F4 +330 +2E0F0 +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbMText + 10 +-0.6040812348255855 + 20 +-0.4688405501630797 + 30 +0.0 + 40 +0.5 + 41 +3.412520540442358 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\C1;+} + 11 +-1.0 + 21 +6.123031769111886E-16 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LWPOLYLINE + 5 +2E0F5 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 5 + 70 + 1 + 43 +0.0 + 10 +0.0 + 20 +0.4750000000000227 + 10 +-0.9500000000000313 + 20 +0.4750000000000227 + 42 +0.414213562373095 + 10 +-1.050000000000026 + 20 +0.3750000000000284 + 10 +-1.050000000000011 + 20 +0.0 + 10 +0.0 + 20 +0.0 + 0 +LINE + 5 +2E0F6 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.9452221531992144 + 20 +0.0974849196254581 + 30 +0.0 + 11 +-0.9452221531992144 + 21 +0.0974849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0F7 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.9452221531992144 + 20 +0.2224849196254581 + 30 +0.0 + 11 +-0.9452221531992144 + 21 +0.2224849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0F8 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.9452221531992144 + 20 +0.3474849196254581 + 30 +0.0 + 11 +-0.9452221531992144 + 21 +0.3474849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0F9 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.9452221531992144 + 20 +0.4724849196254581 + 30 +0.0 + 11 +-0.9452221531992144 + 21 +0.4724849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FA +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8202221531992144 + 20 +0.0349849196254581 + 30 +0.0 + 11 +-0.8202221531992144 + 21 +0.0349849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FB +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8202221531992144 + 20 +0.1599849196254581 + 30 +0.0 + 11 +-0.8202221531992144 + 21 +0.1599849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FC +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8202221531992144 + 20 +0.2849849196254581 + 30 +0.0 + 11 +-0.8202221531992144 + 21 +0.2849849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FD +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8202221531992144 + 20 +0.4099849196254581 + 30 +0.0 + 11 +-0.8202221531992144 + 21 +0.4099849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FE +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.6952221531992144 + 20 +0.0974849196254581 + 30 +0.0 + 11 +-0.6952221531992144 + 21 +0.0974849196254581 + 31 +0.0 + 0 +LINE + 5 +2E0FF +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.6952221531992144 + 20 +0.2224849196254581 + 30 +0.0 + 11 +-0.6952221531992144 + 21 +0.2224849196254581 + 31 +0.0 + 0 +LINE + 5 +2E100 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.6952221531992144 + 20 +0.3474849196254581 + 30 +0.0 + 11 +-0.6952221531992144 + 21 +0.3474849196254581 + 31 +0.0 + 0 +LINE + 5 +2E101 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.6952221531992144 + 20 +0.4724849196254581 + 30 +0.0 + 11 +-0.6952221531992144 + 21 +0.4724849196254581 + 31 +0.0 + 0 +LINE + 5 +2E102 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.5702221531992144 + 20 +0.0349849196254581 + 30 +0.0 + 11 +-0.5702221531992144 + 21 +0.0349849196254581 + 31 +0.0 + 0 +LINE + 5 +2E103 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.5702221531992144 + 20 +0.1599849196254581 + 30 +0.0 + 11 +-0.5702221531992144 + 21 +0.1599849196254581 + 31 +0.0 + 0 +LINE + 5 +2E104 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.5702221531992144 + 20 +0.2849849196254581 + 30 +0.0 + 11 +-0.5702221531992144 + 21 +0.2849849196254581 + 31 +0.0 + 0 +LINE + 5 +2E105 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.5702221531992144 + 20 +0.4099849196254581 + 30 +0.0 + 11 +-0.5702221531992144 + 21 +0.4099849196254581 + 31 +0.0 + 0 +LINE + 5 +2E106 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.4452221531992144 + 20 +0.0974849196254581 + 30 +0.0 + 11 +-0.4452221531992144 + 21 +0.0974849196254581 + 31 +0.0 + 0 +LINE + 5 +2E107 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.4452221531992144 + 20 +0.2224849196254581 + 30 +0.0 + 11 +-0.4452221531992144 + 21 +0.2224849196254581 + 31 +0.0 + 0 +LINE + 5 +2E108 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.4452221531992144 + 20 +0.3474849196254581 + 30 +0.0 + 11 +-0.4452221531992144 + 21 +0.3474849196254581 + 31 +0.0 + 0 +LINE + 5 +2E109 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.4452221531992144 + 20 +0.4724849196254581 + 30 +0.0 + 11 +-0.4452221531992144 + 21 +0.4724849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10A +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.3202221531992144 + 20 +0.0349849196254581 + 30 +0.0 + 11 +-0.3202221531992144 + 21 +0.0349849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10B +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.3202221531992144 + 20 +0.1599849196254581 + 30 +0.0 + 11 +-0.3202221531992144 + 21 +0.1599849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10C +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.3202221531992144 + 20 +0.2849849196254581 + 30 +0.0 + 11 +-0.3202221531992144 + 21 +0.2849849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10D +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.3202221531992144 + 20 +0.4099849196254581 + 30 +0.0 + 11 +-0.3202221531992144 + 21 +0.4099849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10E +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.1952221531992144 + 20 +0.0974849196254581 + 30 +0.0 + 11 +-0.1952221531992144 + 21 +0.0974849196254581 + 31 +0.0 + 0 +LINE + 5 +2E10F +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.1952221531992144 + 20 +0.2224849196254581 + 30 +0.0 + 11 +-0.1952221531992144 + 21 +0.2224849196254581 + 31 +0.0 + 0 +LINE + 5 +2E110 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.1952221531992144 + 20 +0.3474849196254581 + 30 +0.0 + 11 +-0.1952221531992144 + 21 +0.3474849196254581 + 31 +0.0 + 0 +LINE + 5 +2E111 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.1952221531992144 + 20 +0.4724849196254581 + 30 +0.0 + 11 +-0.1952221531992144 + 21 +0.4724849196254581 + 31 +0.0 + 0 +LINE + 5 +2E112 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.0702221531992144 + 20 +0.0349849196254581 + 30 +0.0 + 11 +-0.0702221531992144 + 21 +0.0349849196254581 + 31 +0.0 + 0 +LINE + 5 +2E113 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.0702221531992144 + 20 +0.1599849196254581 + 30 +0.0 + 11 +-0.0702221531992144 + 21 +0.1599849196254581 + 31 +0.0 + 0 +LINE + 5 +2E114 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.0702221531992144 + 20 +0.2849849196254581 + 30 +0.0 + 11 +-0.0702221531992144 + 21 +0.2849849196254581 + 31 +0.0 + 0 +LINE + 5 +2E115 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.0702221531992144 + 20 +0.4099849196254581 + 30 +0.0 + 11 +-0.0702221531992144 + 21 +0.4099849196254581 + 31 +0.0 + 0 +ENDBLK + 5 +2E116 +330 +2E0F0 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E11A +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C012B0CA2 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C012B0CA2 + 1 + + 0 +LINE + 5 +2E11B +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.1047778468007969 + 20 +0.097484919625451 + 30 +0.0 + 11 +0.1047778468007969 + 21 +0.097484919625451 + 31 +0.0 + 0 +LINE + 5 +2E11C +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.1047778468007969 + 20 +0.222484919625451 + 30 +0.0 + 11 +0.1047778468007969 + 21 +0.222484919625451 + 31 +0.0 + 0 +LINE + 5 +2E11D +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.1047778468007969 + 20 +0.347484919625451 + 30 +0.0 + 11 +0.1047778468007969 + 21 +0.347484919625451 + 31 +0.0 + 0 +LINE + 5 +2E11E +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.1047778468007969 + 20 +0.472484919625451 + 30 +0.0 + 11 +0.1047778468007969 + 21 +0.472484919625451 + 31 +0.0 + 0 +LINE + 5 +2E11F +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.2297778468007969 + 20 +0.034984919625451 + 30 +0.0 + 11 +0.2297778468007969 + 21 +0.034984919625451 + 31 +0.0 + 0 +LINE + 5 +2E120 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.2297778468007969 + 20 +0.159984919625451 + 30 +0.0 + 11 +0.2297778468007969 + 21 +0.159984919625451 + 31 +0.0 + 0 +LINE + 5 +2E121 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.2297778468007969 + 20 +0.284984919625451 + 30 +0.0 + 11 +0.2297778468007969 + 21 +0.284984919625451 + 31 +0.0 + 0 +LINE + 5 +2E122 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.2297778468007969 + 20 +0.409984919625451 + 30 +0.0 + 11 +0.2297778468007969 + 21 +0.409984919625451 + 31 +0.0 + 0 +LINE + 5 +2E123 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.3547778468007969 + 20 +0.097484919625451 + 30 +0.0 + 11 +0.3547778468007969 + 21 +0.097484919625451 + 31 +0.0 + 0 +LINE + 5 +2E124 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.3547778468007969 + 20 +0.222484919625451 + 30 +0.0 + 11 +0.3547778468007969 + 21 +0.222484919625451 + 31 +0.0 + 0 +LINE + 5 +2E125 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.3547778468007969 + 20 +0.347484919625451 + 30 +0.0 + 11 +0.3547778468007969 + 21 +0.347484919625451 + 31 +0.0 + 0 +LINE + 5 +2E126 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.3547778468007969 + 20 +0.472484919625451 + 30 +0.0 + 11 +0.3547778468007969 + 21 +0.472484919625451 + 31 +0.0 + 0 +LINE + 5 +2E127 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.4797778468007969 + 20 +0.034984919625451 + 30 +0.0 + 11 +0.4797778468007969 + 21 +0.034984919625451 + 31 +0.0 + 0 +LINE + 5 +2E128 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.4797778468007969 + 20 +0.159984919625451 + 30 +0.0 + 11 +0.4797778468007969 + 21 +0.159984919625451 + 31 +0.0 + 0 +LINE + 5 +2E129 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.4797778468007969 + 20 +0.284984919625451 + 30 +0.0 + 11 +0.4797778468007969 + 21 +0.284984919625451 + 31 +0.0 + 0 +LINE + 5 +2E12A +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.4797778468007969 + 20 +0.409984919625451 + 30 +0.0 + 11 +0.4797778468007969 + 21 +0.409984919625451 + 31 +0.0 + 0 +LINE + 5 +2E12B +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6047778468007969 + 20 +0.097484919625451 + 30 +0.0 + 11 +0.6047778468007969 + 21 +0.097484919625451 + 31 +0.0 + 0 +LINE + 5 +2E12C +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6047778468007969 + 20 +0.222484919625451 + 30 +0.0 + 11 +0.6047778468007969 + 21 +0.222484919625451 + 31 +0.0 + 0 +LINE + 5 +2E12D +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6047778468007969 + 20 +0.347484919625451 + 30 +0.0 + 11 +0.6047778468007969 + 21 +0.347484919625451 + 31 +0.0 + 0 +LINE + 5 +2E12E +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6047778468007969 + 20 +0.472484919625451 + 30 +0.0 + 11 +0.6047778468007969 + 21 +0.472484919625451 + 31 +0.0 + 0 +LINE + 5 +2E12F +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.7297778468007969 + 20 +0.034984919625451 + 30 +0.0 + 11 +0.7297778468007969 + 21 +0.034984919625451 + 31 +0.0 + 0 +LINE + 5 +2E130 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.7297778468007969 + 20 +0.159984919625451 + 30 +0.0 + 11 +0.7297778468007969 + 21 +0.159984919625451 + 31 +0.0 + 0 +LINE + 5 +2E131 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.7297778468007969 + 20 +0.284984919625451 + 30 +0.0 + 11 +0.7297778468007969 + 21 +0.284984919625451 + 31 +0.0 + 0 +LINE + 5 +2E132 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.7297778468007969 + 20 +0.409984919625451 + 30 +0.0 + 11 +0.7297778468007969 + 21 +0.409984919625451 + 31 +0.0 + 0 +LINE + 5 +2E133 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.8547778468007969 + 20 +0.097484919625451 + 30 +0.0 + 11 +0.8547778468007969 + 21 +0.097484919625451 + 31 +0.0 + 0 +LINE + 5 +2E134 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.8547778468007969 + 20 +0.222484919625451 + 30 +0.0 + 11 +0.8547778468007969 + 21 +0.222484919625451 + 31 +0.0 + 0 +LINE + 5 +2E135 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.8547778468007969 + 20 +0.347484919625451 + 30 +0.0 + 11 +0.8547778468007969 + 21 +0.347484919625451 + 31 +0.0 + 0 +LINE + 5 +2E136 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.8547778468007969 + 20 +0.472484919625451 + 30 +0.0 + 11 +0.8547778468007969 + 21 +0.472484919625451 + 31 +0.0 + 0 +LINE + 5 +2E137 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.9797778468007969 + 20 +0.034984919625451 + 30 +0.0 + 11 +0.9797778468007969 + 21 +0.034984919625451 + 31 +0.0 + 0 +LINE + 5 +2E138 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.9797778468007969 + 20 +0.159984919625451 + 30 +0.0 + 11 +0.9797778468007969 + 21 +0.159984919625451 + 31 +0.0 + 0 +LINE + 5 +2E139 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.9797778468007969 + 20 +0.284984919625451 + 30 +0.0 + 11 +0.9797778468007969 + 21 +0.284984919625451 + 31 +0.0 + 0 +LINE + 5 +2E13A +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.9797778468007969 + 20 +0.409984919625451 + 30 +0.0 + 11 +0.9797778468007969 + 21 +0.409984919625451 + 31 +0.0 + 0 +LINE + 5 +2E13B +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.4750000000000227 + 30 +0.0 + 11 +0.9500000000000313 + 21 +0.4750000000000227 + 31 +0.0 + 0 +ARC + 5 +2E13C +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbCircle + 10 +0.9500000000000313 + 20 +0.3750000000000284 + 30 +0.0 + 40 +0.0999999999999943 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +2E13D +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.050000000000026 + 20 +0.3750000000000284 + 30 +0.0 + 11 +1.050000000000011 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2E13E +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.050000000000011 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2E13F +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +0.4750000000000227 + 31 +0.0 + 0 +TEXT + 5 +2E140 +330 +2E117 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbText + 10 +0.7430417043509543 + 20 +-0.2188405501630797 + 30 +0.0 + 40 +0.5 + 1 +- + 50 +180.0 +100 +AcDbText + 0 +ENDBLK + 5 +2E141 +330 +2E117 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E342 +330 +2E317 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C514F3EE3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C514F3EE3 + 1 + + 0 +LWPOLYLINE + 5 +2E318 +330 +2E317 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +-4.5 + 10 +3.5 + 20 +-4.5 + 42 +0.414213562373095 + 10 +3.0 + 20 +-5.0 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.4142135623730966 + 10 +3.5 + 20 +-20.49999999999999 + 10 +4.799999999999983 + 20 +-20.49999999999997 + 42 +-0.414213562373095 + 10 +5.000000000000028 + 20 +-20.69999999999997 + 10 +5.000000000000028 + 20 +-23.79999999999997 + 42 +-0.414213562373095 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 42 +-0.414213562373095 + 10 +-5.0 + 20 +-23.79999999999997 + 10 +-5.0 + 20 +-20.69999999999997 + 42 +-0.414213562373095 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.4142135623730948 + 10 +-3.0 + 20 +-19.99999999999999 + 10 +-3.0 + 20 +-5.0 + 42 +0.414213562373095 + 10 +-3.5 + 20 +-4.5 + 10 +-4.299999999999983 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-4.5 + 20 +-4.299999999999983 + 10 +-4.5 + 20 +4.300000000000011 + 42 +-0.414213562373095 + 10 +-4.299999999999983 + 20 +4.5 + 10 +4.300000000000011 + 20 +4.5 + 42 +-0.414213562373095 + 10 +4.5 + 20 +4.300000000000011 + 10 +4.5 + 20 +-4.299999999999983 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +2E319 +330 +2E317 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +4.5 + 10 +-4.299999999999983 + 20 +4.500000000000028 + 42 +0.414213562373095 + 10 +-4.499999999999972 + 20 +4.300000000000011 + 10 +-4.499999999999972 + 20 +-4.299999999999983 + 42 +0.414213562373095 + 10 +-4.299999999999983 + 20 +-4.5 + 10 +4.300000000000011 + 20 +-4.5 + 42 +0.4142135623730948 + 10 +4.500000000000028 + 20 +-4.299999999999983 + 10 +4.500000000000028 + 20 +4.300000000000011 + 42 +0.4142135623730948 + 0 +LWPOLYLINE + 5 +2E31A +330 +2E317 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.0 + 20 +0.0 + 10 +-4.5 + 20 +0.0 + 10 +4.5 + 20 +0.0 + 10 +5.000000000000028 + 20 +0.0 + 0 +LWPOLYLINE + 5 +2E31B +330 +2E317 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +0.0000000000000284 + 20 +5.0 + 10 +0.0000000000000284 + 20 +4.5 + 10 +0.0000000000000284 + 20 +-4.5 + 10 +0.0000000000000284 + 20 +-4.558527528398798 + 0 +INSERT + 5 +2E31C +330 +2E317 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C355472B6 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2E31D +330 +2E317 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C413E6C87 + 10 +0.0 + 20 +-0.0070842373999938 + 30 +0.0 + 0 +LINE + 5 +2E31E +330 +2E317 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.299999999999983 + 30 +0.0 + 11 +-3.0 + 21 +-5.299999999999983 + 31 +0.0 + 0 +LINE + 5 +2E31F +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +4.5 + 30 +0.0 + 11 +4.200000000000017 + 21 +4.550000000000011 + 31 +0.0 + 0 +LINE + 5 +2E320 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.200000000000017 + 20 +4.550000000000011 + 30 +0.0 + 11 +-3.499999999999972 + 21 +4.550000000000011 + 31 +0.0 + 0 +LINE + 5 +2E321 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +-4.549999999999983 + 20 +3.49999998780001 + 30 +0.0 + 11 +-4.549999999999983 + 21 +-3.500000000400007 + 31 +0.0 + 0 +LINE + 5 +2E322 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.550000000000011 + 20 +3.49999998780001 + 30 +0.0 + 11 +4.550000000000011 + 21 +-3.5 + 31 +0.0 + 0 +LINE + 5 +2E323 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.550000000000011 + 20 +-3.5 + 30 +0.0 + 11 +4.500000000000028 + 21 +-3.5 + 31 +0.0 + 0 +LINE + 5 +2E324 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.550000000000011 + 20 +3.49999998780001 + 30 +0.0 + 11 +4.500000000000028 + 21 +3.49999998780001 + 31 +0.0 + 0 +LINE + 5 +2E325 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +-3.499999999999972 + 20 +4.550000000000011 + 30 +0.0 + 11 +-3.499999999999972 + 21 +4.500000000000028 + 31 +0.0 + 0 +LINE + 5 +2E326 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +-4.549999999999983 + 20 +3.49999998780001 + 30 +0.0 + 11 +-4.499999999999972 + 21 +3.49999998780001 + 31 +0.0 + 0 +LINE + 5 +2E327 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +-4.549999999999983 + 20 +-3.500000000400007 + 30 +0.0 + 11 +-4.5 + 21 +-3.500000000400007 + 31 +0.0 + 0 +INSERT + 5 +2E328 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C507F7010 + 10 +4.400015492133065 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LINE + 5 +2E329 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.400000000000006 + 20 +-4.200000000399996 + 30 +0.0 + 11 +4.400000000000006 + 21 +-3.913458329485024 + 31 +0.0 + 0 +INSERT + 5 +2E32A +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C012B0CA2 + 10 +-4.400000000000006 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LWPOLYLINE + 5 +2E32B +330 +2E317 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.501429185022658 + 20 +-20.77075160784293 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784293 + 10 +-0.2985708149773245 + 20 +-23.47075160784291 + 42 +0.414213562373095 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.4142135623730956 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730941 + 0 +LWPOLYLINE + 5 +2E32C +102 +{ACAD_REACTORS +330 +2E32D +102 +} +330 +2E317 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-0.7985708149773245 + 20 +-23.57075160784292 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.67075160784292 + 10 +-4.598570814977336 + 20 +-20.67075160784292 + 42 +0.4142135623730953 + 10 +-4.798570814977325 + 20 +-20.87075160784292 + 10 +-4.798570814977325 + 20 +-23.57075160784292 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784291 + 10 +-0.9985708149773416 + 20 +-23.77075160784291 + 42 +0.4142135623730951 + 0 +HATCH + 5 +2E32D +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +-4.598570814977336 + 20 +-20.6707516078429 + 42 +0.4142135623730537 + 10 +-4.798570814977325 + 20 +-20.87075160784289 + 42 +0.0 + 10 +-4.798570814977325 + 20 +-23.57075160784294 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784293 + 42 +0.0 + 10 +-0.9985708149773416 + 20 +-23.77075160784293 + 42 +0.4142135623730951 + 10 +-0.7985708149773245 + 20 +-23.57075160784294 + 42 +0.0 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.6707516078429 + 42 +0.0 + 97 + 1 +330 +2E32C + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0220003874822458 + 98 + 1 + 10 +-2.185425833674287 + 20 +-22.08882761072869 + 0 +HATCH + 5 +2E32E +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.414213562373106 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 42 +0.0 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730838 + 10 +4.501429185022658 + 20 +-20.77075160784294 + 42 +0.0 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784293 + 42 +0.0 + 10 +-0.2985708149773245 + 20 +-23.47075160784293 + 42 +0.4142135623730899 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0220003874822458 + 98 + 1 + 10 +1.601654566784873 + 20 +-22.28683086794331 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +2E32F +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.700000000000017 + 20 +-5.199999999999974 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.199999999999974 + 0 +HATCH + 5 +2E330 +330 +2E317 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +2.700000000000017 + 20 +-5.199999999999974 + 10 +-2.699999999999989 + 20 +-5.199999999999974 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0226955741454481 + 98 + 1 + 10 +-0.3808287956823051 + 20 +-5.341873238159934 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +HATCH + 5 +2E331 +330 +2E317 +100 +AcDbEntity + 8 +PCB + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0058299147843965 + 98 + 1 + 10 +-0.796711248247135 + 20 +-4.953621094124472 + 0 +LWPOLYLINE + 5 +2E332 +330 +2E317 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.799999999999983 + 20 +-20.49999999999999 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 42 +0.414213562373095 + 10 +-5.0 + 20 +-20.69999999999999 + 10 +-5.0 + 20 +-23.79999999999998 + 42 +0.414213562373095 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 42 +0.414213562373095 + 10 +5.000000000000028 + 20 +-23.79999999999998 + 10 +5.000000000000028 + 20 +-20.7 + 42 +0.414213562373095 + 0 +LINE + 5 +2E333 +102 +{ACAD_REACTORS +330 +2E33B +102 +} +330 +2E317 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-5.799999999999997 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2E334 +102 +{ACAD_REACTORS +330 +2E33B +102 +} +330 +2E317 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2E335 +102 +{ACAD_REACTORS +330 +2E33B +102 +} +330 +2E317 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-5.799999999999997 + 31 +0.0 + 0 +LINE + 5 +2E336 +102 +{ACAD_REACTORS +330 +2E33B +102 +} +330 +2E317 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.799999999999997 + 30 +0.0 + 11 +-3.0 + 21 +-5.799999999999997 + 31 +0.0 + 0 +LINE + 5 +2E337 +330 +2E317 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-16.49999999999999 + 30 +0.0 + 11 +-3.0 + 21 +-16.49999999999999 + 31 +0.0 + 0 +LINE + 5 +2E338 +330 +2E317 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-8.5 + 30 +0.0 + 11 +-3.0 + 21 +-8.5 + 31 +0.0 + 0 +HATCH + 5 +2E339 +330 +2E317 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-8.5 + 42 +0.0 + 10 +3.0 + 20 +-8.5 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-107.9271451710543 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 0 + 53 +45.0 + 43 +-107.5735917810543 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 2 + 49 +0.25 + 49 +-0.125 + 47 +0.0509351677920455 + 98 + 1 + 10 +-0.4216246991767321 + 20 +-6.86651833214944 + 0 +HATCH + 5 +2E33A +330 +2E317 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.0 + 20 +-16.49999999999999 + 42 +0.0 + 10 +-3.0 + 20 +-16.49999999999999 + 42 +0.0 + 10 +-3.0 + 20 +-19.99999999999999 + 42 +-0.4142135623730948 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.0 + 10 +3.5 + 20 +-20.49999999999999 + 42 +-0.4142135623731008 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 0 + 53 +45.0 + 43 +-30.47195737949696 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 2 + 49 +0.25 + 49 +-0.125 + 47 +0.0376640943501183 + 98 + 1 + 10 +-0.1301319715452678 + 20 +-18.45029545642147 + 0 +HATCH + 5 +2E33B +330 +2E317 +100 +AcDbEntity + 8 +EMI + 6 +ByBlock + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +3.0 + 20 +-5.799999999999997 + 11 +-3.0 + 21 +-5.799999999999997 + 72 + 1 + 10 +-3.0 + 20 +-5.799999999999997 + 11 +-3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +-3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-5.799999999999997 + 97 + 4 +330 +2E336 +330 +2E333 +330 +2E334 +330 +2E335 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +-0.1767766952966369 + 79 + 0 + 98 + 1 + 10 +-30.82551076949696 + 20 +-77.98722186438528 + 0 +ENDBLK + 5 +2E343 +330 +2E317 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E681 +330 +2E678 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C1B6D40E1 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C1B6D40E1 + 1 + + 0 +INSERT + 5 +2E679 +330 +2E678 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C514F3EE3 + 10 +-5.000000000000028 + 20 +22.25 + 30 +0.0 + 0 +ENDBLK + 5 +2E682 +330 +2E678 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2E80A +330 +2E7E7 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C77A03D3F + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C77A03D3F + 1 + + 0 +LWPOLYLINE + 5 +2E7E8 +330 +2E7E7 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +-4.5 + 10 +3.5 + 20 +-4.5 + 42 +0.414213562373095 + 10 +3.0 + 20 +-5.0 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.4142135623730966 + 10 +3.5 + 20 +-20.49999999999999 + 10 +4.799999999999983 + 20 +-20.49999999999997 + 42 +-0.414213562373095 + 10 +5.000000000000028 + 20 +-20.69999999999997 + 10 +5.000000000000028 + 20 +-23.79999999999997 + 42 +-0.414213562373095 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 42 +-0.414213562373095 + 10 +-5.0 + 20 +-23.79999999999997 + 10 +-5.0 + 20 +-20.69999999999997 + 42 +-0.414213562373095 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.4142135623730948 + 10 +-3.0 + 20 +-19.99999999999999 + 10 +-3.0 + 20 +-5.0 + 42 +0.414213562373095 + 10 +-3.5 + 20 +-4.5 + 10 +-4.299999999999983 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-4.5 + 20 +-4.299999999999983 + 10 +-4.5 + 20 +4.300000000000011 + 42 +-0.414213562373095 + 10 +-4.299999999999983 + 20 +4.5 + 10 +4.300000000000011 + 20 +4.5 + 42 +-0.414213562373095 + 10 +4.5 + 20 +4.300000000000011 + 10 +4.5 + 20 +-4.299999999999983 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +2E7E9 +330 +2E7E7 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +4.5 + 10 +-4.299999999999983 + 20 +4.500000000000028 + 42 +0.414213562373095 + 10 +-4.499999999999972 + 20 +4.300000000000011 + 10 +-4.499999999999972 + 20 +-4.299999999999983 + 42 +0.414213562373095 + 10 +-4.299999999999983 + 20 +-4.5 + 10 +4.300000000000011 + 20 +-4.5 + 42 +0.4142135623730948 + 10 +4.500000000000028 + 20 +-4.299999999999983 + 10 +4.500000000000028 + 20 +4.300000000000011 + 42 +0.4142135623730948 + 0 +LWPOLYLINE + 5 +2E7EA +330 +2E7E7 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.0 + 20 +0.0 + 10 +-4.5 + 20 +0.0 + 10 +4.5 + 20 +0.0 + 10 +5.000000000000028 + 20 +0.0 + 0 +LWPOLYLINE + 5 +2E7EB +330 +2E7E7 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +0.0000000000000284 + 20 +5.0 + 10 +0.0000000000000284 + 20 +4.5 + 10 +0.0000000000000284 + 20 +-4.5 + 10 +0.0000000000000284 + 20 +-4.558527528398798 + 0 +INSERT + 5 +2E7EC +330 +2E7E7 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C355472B6 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2E7ED +330 +2E7E7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C413E6C87 + 10 +0.0 + 20 +-0.0070842373999938 + 30 +0.0 + 0 +LINE + 5 +2E7EE +330 +2E7E7 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.299999999999983 + 30 +0.0 + 11 +-3.0 + 21 +-5.299999999999983 + 31 +0.0 + 0 +LINE + 5 +2E7EF +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.550000000000011 + 20 +-3.5 + 30 +0.0 + 11 +4.500000000000028 + 21 +-3.5 + 31 +0.0 + 0 +INSERT + 5 +2E7F0 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C507F7010 + 10 +4.400015492133065 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LINE + 5 +2E7F1 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.400000000000006 + 20 +-4.200000000399996 + 30 +0.0 + 11 +4.400000000000006 + 21 +-3.913458329485024 + 31 +0.0 + 0 +INSERT + 5 +2E7F2 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C012B0CA2 + 10 +-4.400000000000006 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LWPOLYLINE + 5 +2E7F3 +330 +2E7E7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.501429185022658 + 20 +-20.77075160784293 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784293 + 10 +-0.2985708149773245 + 20 +-23.47075160784291 + 42 +0.414213562373095 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.4142135623730956 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730941 + 0 +LWPOLYLINE + 5 +2E7F4 +102 +{ACAD_REACTORS +330 +2E7F5 +102 +} +330 +2E7E7 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-0.7985708149773245 + 20 +-23.57075160784292 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.67075160784292 + 10 +-4.598570814977336 + 20 +-20.67075160784292 + 42 +0.4142135623730953 + 10 +-4.798570814977325 + 20 +-20.87075160784292 + 10 +-4.798570814977325 + 20 +-23.57075160784292 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784291 + 10 +-0.9985708149773416 + 20 +-23.77075160784291 + 42 +0.4142135623730951 + 0 +HATCH + 5 +2E7F5 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +-4.598570814977336 + 20 +-20.6707516078429 + 42 +0.4142135623730537 + 10 +-4.798570814977325 + 20 +-20.87075160784289 + 42 +0.0 + 10 +-4.798570814977325 + 20 +-23.57075160784294 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784293 + 42 +0.0 + 10 +-0.9985708149773416 + 20 +-23.77075160784293 + 42 +0.4142135623730951 + 10 +-0.7985708149773245 + 20 +-23.57075160784294 + 42 +0.0 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.6707516078429 + 42 +0.0 + 97 + 1 +330 +2E7F4 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0220003874822458 + 98 + 1 + 10 +-2.185425833674287 + 20 +-22.08882761072869 + 0 +HATCH + 5 +2E7F6 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.414213562373106 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 42 +0.0 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730838 + 10 +4.501429185022658 + 20 +-20.77075160784294 + 42 +0.0 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784293 + 42 +0.0 + 10 +-0.2985708149773245 + 20 +-23.47075160784293 + 42 +0.4142135623730899 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0220003874822458 + 98 + 1 + 10 +1.601654566784873 + 20 +-22.28683086794331 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +2E7F7 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.700000000000017 + 20 +-5.199999999999989 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.199999999999989 + 0 +HATCH + 5 +2E7F8 +330 +2E7E7 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +2.700000000000017 + 20 +-5.199999999999989 + 10 +-2.699999999999989 + 20 +-5.199999999999989 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0226955741454481 + 98 + 1 + 10 +-0.3808287956823051 + 20 +-5.341873238159934 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +HATCH + 5 +2E7F9 +330 +2E7E7 +100 +AcDbEntity + 8 +PCB + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0058299147843965 + 98 + 1 + 10 +-0.796711248247135 + 20 +-4.953621094124458 + 0 +LWPOLYLINE + 5 +2E7FA +330 +2E7E7 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.799999999999983 + 20 +-20.49999999999999 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 42 +0.414213562373095 + 10 +-5.0 + 20 +-20.69999999999999 + 10 +-5.0 + 20 +-23.79999999999998 + 42 +0.414213562373095 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 42 +0.414213562373095 + 10 +5.000000000000028 + 20 +-23.79999999999998 + 10 +5.000000000000028 + 20 +-20.7 + 42 +0.414213562373095 + 0 +LINE + 5 +2E7FB +102 +{ACAD_REACTORS +330 +2E803 +102 +} +330 +2E7E7 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2E7FC +102 +{ACAD_REACTORS +330 +2E803 +102 +} +330 +2E7E7 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2E7FD +102 +{ACAD_REACTORS +330 +2E803 +102 +} +330 +2E7E7 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2E7FE +102 +{ACAD_REACTORS +330 +2E803 +102 +} +330 +2E7E7 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.0 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2E7FF +330 +2E7E7 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-16.49999999999999 + 30 +0.0 + 11 +-3.0 + 21 +-16.49999999999999 + 31 +0.0 + 0 +LINE + 5 +2E800 +330 +2E7E7 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-8.5 + 30 +0.0 + 11 +-3.0 + 21 +-8.5 + 31 +0.0 + 0 +HATCH + 5 +2E801 +330 +2E7E7 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-8.5 + 42 +0.0 + 10 +3.0 + 20 +-8.5 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-107.9271451710543 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 0 + 53 +45.0 + 43 +-107.5735917810543 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 2 + 49 +0.25 + 49 +-0.125 + 47 +0.0509351677920455 + 98 + 1 + 10 +-0.4216246991767321 + 20 +-6.86651833214944 + 0 +HATCH + 5 +2E802 +330 +2E7E7 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.0 + 20 +-16.49999999999999 + 42 +0.0 + 10 +-3.0 + 20 +-16.49999999999999 + 42 +0.0 + 10 +-3.0 + 20 +-19.99999999999999 + 42 +-0.4142135623730948 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.0 + 10 +3.5 + 20 +-20.49999999999999 + 42 +-0.4142135623731008 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 0 + 53 +45.0 + 43 +-30.47195737949696 + 44 +-77.98722186438528 + 45 +-0.3535533905932737 + 46 +0.3535533905932738 + 79 + 2 + 49 +0.25 + 49 +-0.125 + 47 +0.0376640943501183 + 98 + 1 + 10 +-0.1301319715452678 + 20 +-18.45029545642147 + 0 +HATCH + 5 +2E803 +330 +2E7E7 +100 +AcDbEntity + 8 +EMI + 6 +ByBlock + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +3.0 + 20 +-5.800000000000011 + 11 +-3.0 + 21 +-5.800000000000011 + 72 + 1 + 10 +-3.0 + 20 +-5.800000000000011 + 11 +-3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +-3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-5.800000000000011 + 97 + 4 +330 +2E7FE +330 +2E7FB +330 +2E7FC +330 +2E7FD + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +-0.1767766952966369 + 79 + 0 + 98 + 1 + 10 +-30.82551076949696 + 20 +-77.98722186438528 + 0 +ENDBLK + 5 +2E80B +330 +2E7E7 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2EB68 +330 +2EB45 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C6B334C17 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6B334C17 + 1 + + 0 +LWPOLYLINE + 5 +2EB46 +330 +2EB45 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +-4.5 + 10 +3.5 + 20 +-4.5 + 42 +0.414213562373095 + 10 +3.0 + 20 +-5.0 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.4142135623730966 + 10 +3.5 + 20 +-20.49999999999999 + 10 +4.799999999999983 + 20 +-20.49999999999997 + 42 +-0.414213562373095 + 10 +5.000000000000028 + 20 +-20.69999999999997 + 10 +5.000000000000028 + 20 +-23.79999999999997 + 42 +-0.414213562373095 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 42 +-0.414213562373095 + 10 +-5.0 + 20 +-23.79999999999997 + 10 +-5.0 + 20 +-20.69999999999997 + 42 +-0.414213562373095 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.4142135623730948 + 10 +-3.0 + 20 +-19.99999999999999 + 10 +-3.0 + 20 +-5.0 + 42 +0.414213562373095 + 10 +-3.5 + 20 +-4.5 + 10 +-4.299999999999983 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-4.5 + 20 +-4.299999999999983 + 10 +-4.5 + 20 +4.300000000000011 + 42 +-0.414213562373095 + 10 +-4.299999999999983 + 20 +4.5 + 10 +4.300000000000011 + 20 +4.5 + 42 +-0.414213562373095 + 10 +4.5 + 20 +4.300000000000011 + 10 +4.5 + 20 +-4.299999999999983 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +2EB47 +330 +2EB45 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +4.5 + 10 +-4.299999999999983 + 20 +4.500000000000028 + 42 +0.414213562373095 + 10 +-4.499999999999972 + 20 +4.300000000000011 + 10 +-4.499999999999972 + 20 +-4.299999999999983 + 42 +0.414213562373095 + 10 +-4.299999999999983 + 20 +-4.5 + 10 +4.300000000000011 + 20 +-4.5 + 42 +0.4142135623730948 + 10 +4.500000000000028 + 20 +-4.299999999999983 + 10 +4.500000000000028 + 20 +4.300000000000011 + 42 +0.4142135623730948 + 0 +LWPOLYLINE + 5 +2EB48 +330 +2EB45 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.0 + 20 +0.0 + 10 +-4.5 + 20 +0.0 + 10 +4.5 + 20 +0.0 + 10 +5.000000000000028 + 20 +0.0 + 0 +LWPOLYLINE + 5 +2EB49 +330 +2EB45 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +0.0000000000000284 + 20 +5.0 + 10 +0.0000000000000284 + 20 +4.5 + 10 +0.0000000000000284 + 20 +-4.5 + 10 +0.0000000000000284 + 20 +-4.558527528398798 + 0 +INSERT + 5 +2EB4A +330 +2EB45 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C355472B6 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2EB4B +330 +2EB45 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C413E6C87 + 10 +0.0 + 20 +-0.0070842373999938 + 30 +0.0 + 0 +LINE + 5 +2EB4C +330 +2EB45 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.299999999999983 + 30 +0.0 + 11 +-3.0 + 21 +-5.299999999999983 + 31 +0.0 + 0 +INSERT + 5 +2EB4D +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C507F7010 + 10 +4.400015492133065 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LINE + 5 +2EB4E +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.400000000000006 + 20 +-4.200000000399996 + 30 +0.0 + 11 +4.400000000000006 + 21 +-3.913458329485024 + 31 +0.0 + 0 +INSERT + 5 +2EB4F +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbBlockReference + 2 +A$C012B0CA2 + 10 +-4.400000000000006 + 20 +-4.39999999959997 + 30 +0.0 + 0 +LWPOLYLINE + 5 +2EB50 +330 +2EB45 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.501429185022658 + 20 +-20.77075160784293 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784293 + 10 +-0.2985708149773245 + 20 +-23.47075160784291 + 42 +0.414213562373095 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.4142135623730956 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730941 + 0 +LWPOLYLINE + 5 +2EB51 +102 +{ACAD_REACTORS +330 +2EB52 +102 +} +330 +2EB45 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-0.7985708149773245 + 20 +-23.57075160784292 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.67075160784293 + 10 +-4.598570814977336 + 20 +-20.67075160784293 + 42 +0.4142135623730953 + 10 +-4.798570814977325 + 20 +-20.87075160784292 + 10 +-4.798570814977325 + 20 +-23.57075160784292 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784293 + 10 +-0.9985708149773416 + 20 +-23.77075160784293 + 42 +0.4142135623730951 + 0 +HATCH + 5 +2EB52 +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +-4.598570814977336 + 20 +-20.67075160784293 + 42 +0.4142135623730953 + 10 +-4.798570814977325 + 20 +-20.87075160784292 + 42 +0.0 + 10 +-4.798570814977325 + 20 +-23.57075160784294 + 42 +0.414213562373095 + 10 +-4.598570814977336 + 20 +-23.77075160784293 + 42 +0.0 + 10 +-0.9985708149773416 + 20 +-23.77075160784293 + 42 +0.4142135623730951 + 10 +-0.7985708149773245 + 20 +-23.57075160784294 + 42 +0.0 + 10 +-0.7985708149773245 + 20 +-20.87075160784292 + 42 +0.4142135623730949 + 10 +-0.9985708149773416 + 20 +-20.67075160784293 + 42 +0.0 + 97 + 1 +330 +2EB51 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-15.79994734203856 + 44 +-56.8475705354999 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0220003874822458 + 98 + 1 + 10 +-2.185425833674287 + 20 +-22.08882761072869 + 0 +HATCH + 5 +2EB53 +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +4.501429185022658 + 20 +-23.67075160784292 + 42 +0.414213562373106 + 10 +4.701429185022675 + 20 +-23.47075160784291 + 42 +0.0 + 10 +4.701429185022675 + 20 +-20.97075160784293 + 42 +0.4142135623730838 + 10 +4.501429185022658 + 20 +-20.77075160784293 + 42 +0.0 + 10 +-0.0985708149773359 + 20 +-20.77075160784293 + 42 +0.4142135623730953 + 10 +-0.2985708149773245 + 20 +-20.97075160784291 + 42 +0.0 + 10 +-0.2985708149773245 + 20 +-23.47075160784291 + 42 +0.4142135623730899 + 10 +-0.0985708149773359 + 20 +-23.67075160784292 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0220003874822458 + 98 + 1 + 10 +1.601654566784873 + 20 +-22.28683086794331 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +2EB54 +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.700000000000017 + 20 +-5.199999999999974 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.199999999999974 + 0 +HATCH + 5 +2EB55 +330 +2EB45 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.700000000000017 + 20 +-5.399999999999977 + 10 +2.700000000000017 + 20 +-5.199999999999974 + 10 +-2.699999999999989 + 20 +-5.199999999999974 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0226955741454481 + 98 + 1 + 10 +-0.3808287956823051 + 20 +-5.341873238159934 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +HATCH + 5 +2EB56 +330 +2EB45 +100 +AcDbEntity + 8 +PCB + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0058299147843965 + 98 + 1 + 10 +-0.796711248247135 + 20 +-4.953621094124472 + 0 +LWPOLYLINE + 5 +2EB57 +330 +2EB45 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.799999999999983 + 20 +-20.5 + 10 +-4.799999999999983 + 20 +-20.49999999999999 + 42 +0.414213562373095 + 10 +-5.0 + 20 +-20.69999999999999 + 10 +-5.0 + 20 +-23.79999999999998 + 42 +0.414213562373095 + 10 +-4.799999999999983 + 20 +-23.99999999999999 + 10 +4.799999999999983 + 20 +-23.99999999999999 + 42 +0.414213562373095 + 10 +5.000000000000028 + 20 +-23.79999999999998 + 10 +5.000000000000028 + 20 +-20.69999999999999 + 42 +0.414213562373095 + 0 +LINE + 5 +2EB58 +102 +{ACAD_REACTORS +330 +2EB61 +102 +} +330 +2EB45 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-5.799999999999997 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2EB59 +102 +{ACAD_REACTORS +330 +2EB61 +102 +} +330 +2EB45 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2EB5A +102 +{ACAD_REACTORS +330 +2EB61 +102 +} +330 +2EB45 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-5.799999999999997 + 31 +0.0 + 0 +LINE + 5 +2EB5B +102 +{ACAD_REACTORS +330 +2EB61 +102 +} +330 +2EB45 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.799999999999997 + 30 +0.0 + 11 +-3.0 + 21 +-5.799999999999997 + 31 +0.0 + 0 +LINE + 5 +2EB5C +330 +2EB45 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-15.99999999999999 + 30 +0.0 + 11 +3.000000000000028 + 21 +-15.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2EB5D +330 +2EB45 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.000000000000057 + 20 +-8.999999999999986 + 30 +0.0 + 11 +-3.0 + 21 +-8.999999999999986 + 31 +0.0 + 0 +LINE + 5 +2EB5E +330 +2EB45 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2EB5F +330 +2EB45 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-4.999999999999986 + 30 +0.0 + 11 +-3.0 + 21 +-4.999999999999986 + 31 +0.0 + 0 +HATCH + 5 +2EB60 +330 +2EB45 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 2 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +3.0 + 20 +-4.999999999999986 + 10 +-3.0 + 20 +-4.999999999999986 + 10 +-3.0 + 20 +-8.999999999999986 + 10 +3.0 + 20 +-8.999999999999986 + 97 + 0 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +3.0 + 20 +-15.99999999999999 + 10 +-3.0 + 20 +-15.99999999999999 + 10 +-3.0 + 20 +-19.99999999999999 + 10 +3.0 + 20 +-19.99999999999997 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-107.9271451710543 + 44 +-77.98722186438525 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +45.0 + 43 +-107.7503684760543 + 44 +-77.98722186438525 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 2 + 49 +0.125 + 49 +-0.0625 + 47 +0.029179538615595 + 98 + 2 + 10 +0.6650941297596091 + 20 +-6.759999590534861 + 10 +-0.3302086308358412 + 20 +-18.19557460053733 + 0 +HATCH + 5 +2EB61 +330 +2EB45 +100 +AcDbEntity + 8 +EMI + 6 +ByBlock + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +3.0 + 20 +-5.799999999999997 + 11 +-3.0 + 21 +-5.799999999999997 + 72 + 1 + 10 +-3.0 + 20 +-5.799999999999997 + 11 +-3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +-3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-5.799999999999997 + 97 + 4 +330 +2EB5B +330 +2EB58 +330 +2EB59 +330 +2EB5A + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949696 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +-0.1767766952966369 + 79 + 0 + 98 + 1 + 10 +-30.82551076949696 + 20 +-77.98722186438528 + 0 +ENDBLK + 5 +2EB69 +330 +2EB45 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F198 +330 +2F181 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C136F2365 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C136F2365 + 1 + + 0 +LWPOLYLINE + 5 +2F182 +330 +2F181 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +4.299999999999955 + 20 +-4.5 + 10 +3.499999999999943 + 20 +-4.5 + 42 +0.414213562373095 + 10 +2.999999999999943 + 20 +-5.0 + 10 +2.999999999999943 + 20 +-19.99999999999999 + 42 +0.4142135623730966 + 10 +3.499999999999943 + 20 +-20.49999999999999 + 10 +4.799999999999955 + 20 +-20.49999999999997 + 42 +-0.414213562373095 + 10 +5.0 + 20 +-20.69999999999997 + 10 +5.0 + 20 +-23.79999999999997 + 42 +-0.414213562373095 + 10 +4.799999999999955 + 20 +-23.99999999999999 + 10 +-4.800000000000068 + 20 +-23.99999999999999 + 42 +-0.414213562373095 + 10 +-5.000000000000057 + 20 +-23.79999999999997 + 10 +-5.000000000000057 + 20 +-20.69999999999997 + 42 +-0.414213562373095 + 10 +-4.800000000000068 + 20 +-20.49999999999999 + 10 +-3.500000000000057 + 20 +-20.49999999999999 + 42 +0.4142135623730948 + 10 +-3.000000000000057 + 20 +-19.99999999999999 + 10 +-3.000000000000057 + 20 +-5.0 + 42 +0.414213562373095 + 10 +-3.500000000000057 + 20 +-4.5 + 10 +-4.300000000000068 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-4.500000000000057 + 20 +-4.299999999999983 + 10 +-4.500000000000057 + 20 +4.300000000000011 + 42 +-0.414213562373095 + 10 +-4.300000000000068 + 20 +4.5 + 10 +4.299999999999955 + 20 +4.5 + 42 +-0.414213562373095 + 10 +4.499999999999943 + 20 +4.300000000000011 + 10 +4.499999999999943 + 20 +-4.299999999999983 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +2F183 +330 +2F181 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.299999999999955 + 20 +4.5 + 10 +-4.300000000000068 + 20 +4.500000000000028 + 42 +0.414213562373095 + 10 +-4.5 + 20 +4.300000000000011 + 10 +-4.5 + 20 +-4.299999999999983 + 42 +0.414213562373095 + 10 +-4.300000000000068 + 20 +-4.5 + 10 +4.299999999999955 + 20 +-4.5 + 42 +0.4142135623730948 + 10 +4.5 + 20 +-4.299999999999983 + 10 +4.5 + 20 +4.300000000000011 + 42 +0.4142135623730948 + 0 +LWPOLYLINE + 5 +2F184 +330 +2F181 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.000000000000057 + 20 +0.0 + 10 +-4.500000000000057 + 20 +0.0 + 10 +4.499999999999943 + 20 +0.0 + 10 +5.0 + 20 +0.0 + 0 +LWPOLYLINE + 5 +2F185 +330 +2F181 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +0.0 + 20 +5.0 + 10 +0.0 + 20 +4.5 + 10 +0.0 + 20 +-4.5 + 10 +0.0 + 20 +-4.558527528398798 + 0 +LINE + 5 +2F186 +330 +2F181 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbLine + 10 +2.999999999999943 + 20 +-5.299999999999983 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-5.299999999999983 + 31 +0.0 + 0 +LINE + 5 +2F187 +330 +2F181 +100 +AcDbEntity + 8 +hatch + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +4.399999999999977 + 20 +-4.200000000399996 + 30 +0.0 + 11 +4.399999999999977 + 21 +-3.913458329485024 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2F188 +330 +2F181 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.699999999999932 + 20 +-5.199999999999989 + 10 +2.699999999999932 + 20 +-5.399999999999977 + 10 +-2.700000000000045 + 20 +-5.399999999999977 + 10 +-2.700000000000045 + 20 +-5.199999999999989 + 0 +HATCH + 5 +2F189 +330 +2F181 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.699999999999932 + 20 +-5.399999999999977 + 10 +2.699999999999932 + 20 +-5.199999999999989 + 10 +-2.700000000000045 + 20 +-5.199999999999989 + 10 +-2.700000000000045 + 20 +-5.399999999999977 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0226955741454481 + 98 + 1 + 10 +-0.3808287956823619 + 20 +-5.341873238159934 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +HATCH + 5 +2F18A +330 +2F181 +100 +AcDbEntity + 8 +PCB + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.499999999999943 + 20 +-4.5 + 42 +0.0 + 10 +-3.500000000000057 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.000000000000057 + 20 +-5.0 + 42 +0.0 + 10 +-3.000000000000057 + 20 +-5.299999999999983 + 42 +0.0 + 10 +2.999999999999943 + 20 +-5.299999999999983 + 42 +0.0 + 10 +2.999999999999943 + 20 +-5.0 + 42 +-0.414213562373095 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949699 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949699 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0058299147843965 + 98 + 1 + 10 +-0.7967112482472203 + 20 +-4.953621094124458 + 0 +LWPOLYLINE + 5 +2F18B +330 +2F181 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.799999999999955 + 20 +-20.5 + 10 +-4.800000000000068 + 20 +-20.49999999999999 + 42 +0.414213562373095 + 10 +-5.000000000000057 + 20 +-20.69999999999999 + 10 +-5.000000000000057 + 20 +-23.79999999999998 + 42 +0.414213562373095 + 10 +-4.800000000000068 + 20 +-23.99999999999999 + 10 +4.799999999999955 + 20 +-23.99999999999999 + 42 +0.414213562373095 + 10 +5.0 + 20 +-23.79999999999998 + 10 +5.0 + 20 +-20.69999999999999 + 42 +0.414213562373095 + 0 +LINE + 5 +2F18C +102 +{ACAD_REACTORS +330 +2F195 +102 +} +330 +2F181 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.000000000000057 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F18D +102 +{ACAD_REACTORS +330 +2F195 +102 +} +330 +2F181 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.000000000000057 + 20 +-19.99999999999999 + 30 +0.0 + 11 +2.999999999999943 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F18E +102 +{ACAD_REACTORS +330 +2F195 +102 +} +330 +2F181 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +2.999999999999943 + 20 +-19.99999999999999 + 30 +0.0 + 11 +2.999999999999943 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2F18F +102 +{ACAD_REACTORS +330 +2F195 +102 +} +330 +2F181 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +2.999999999999943 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2F190 +330 +2F181 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-3.000000000000057 + 20 +-16.0 + 30 +0.0 + 11 +3.0 + 21 +-16.0 + 31 +0.0 + 0 +LINE + 5 +2F191 +330 +2F181 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-9.0 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-9.0 + 31 +0.0 + 0 +LINE + 5 +2F192 +330 +2F181 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.999999999999943 + 20 +-19.99999999999999 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F193 +330 +2F181 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.999999999999943 + 20 +-5.0 + 30 +0.0 + 11 +-3.000000000000057 + 21 +-5.0 + 31 +0.0 + 0 +HATCH + 5 +2F194 +330 +2F181 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI33 + 70 + 0 + 71 + 0 + 91 + 2 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.999999999999943 + 20 +-5.0 + 10 +-3.000000000000057 + 20 +-5.0 + 10 +-3.000000000000057 + 20 +-9.0 + 10 +2.999999999999943 + 20 +-9.0 + 97 + 0 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.999999999999943 + 20 +-16.0 + 10 +-3.000000000000057 + 20 +-16.0 + 10 +-3.000000000000057 + 20 +-19.99999999999999 + 10 +2.999999999999943 + 20 +-19.99999999999997 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-107.9271451710544 + 44 +-77.98722186438525 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +45.0 + 43 +-107.7503684760544 + 44 +-77.98722186438525 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 2 + 49 +0.125 + 49 +-0.0625 + 47 +0.029179538615595 + 98 + 2 + 10 +0.6650941297595523 + 20 +-6.759999590534846 + 10 +-0.330208630835898 + 20 +-18.19557460053733 + 0 +HATCH + 5 +2F195 +330 +2F181 +100 +AcDbEntity + 8 +EMI + 6 +ByBlock + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +2.999999999999943 + 20 +-5.800000000000011 + 11 +-3.000000000000057 + 21 +-5.800000000000011 + 72 + 1 + 10 +-3.000000000000057 + 20 +-5.800000000000011 + 11 +-3.000000000000057 + 21 +-19.99999999999999 + 72 + 1 + 10 +-3.000000000000057 + 20 +-19.99999999999999 + 11 +2.999999999999943 + 21 +-19.99999999999999 + 72 + 1 + 10 +2.999999999999943 + 20 +-19.99999999999999 + 11 +2.999999999999943 + 21 +-5.800000000000011 + 97 + 4 +330 +2F18F +330 +2F18C +330 +2F18D +330 +2F18E + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949699 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949699 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +-0.1767766952966369 + 79 + 0 + 98 + 1 + 10 +-30.82551076949699 + 20 +-77.98722186438528 + 0 +ENDBLK + 5 +2F199 +330 +2F181 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F1C6 +330 +2F1B0 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C0FB65098 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C0FB65098 + 1 + + 0 +LWPOLYLINE + 5 +2F1B1 +330 +2F1B0 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +-4.5 + 10 +3.5 + 20 +-4.5 + 42 +0.414213562373095 + 10 +3.0 + 20 +-5.0 + 10 +3.0 + 20 +-19.99999999999999 + 42 +0.4142135623730966 + 10 +3.5 + 20 +-20.49999999999999 + 10 +4.800000000000011 + 20 +-20.49999999999997 + 42 +-0.414213562373095 + 10 +5.000000000000057 + 20 +-20.69999999999997 + 10 +5.000000000000057 + 20 +-23.79999999999997 + 42 +-0.414213562373095 + 10 +4.800000000000011 + 20 +-23.99999999999999 + 10 +-4.800000000000011 + 20 +-23.99999999999999 + 42 +-0.414213562373095 + 10 +-5.0 + 20 +-23.79999999999997 + 10 +-5.0 + 20 +-20.69999999999997 + 42 +-0.414213562373095 + 10 +-4.800000000000011 + 20 +-20.49999999999999 + 10 +-3.5 + 20 +-20.49999999999999 + 42 +0.4142135623730948 + 10 +-3.0 + 20 +-19.99999999999999 + 10 +-3.0 + 20 +-5.0 + 42 +0.414213562373095 + 10 +-3.5 + 20 +-4.5 + 10 +-4.300000000000011 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-4.5 + 20 +-4.299999999999983 + 10 +-4.5 + 20 +4.300000000000011 + 42 +-0.414213562373095 + 10 +-4.300000000000011 + 20 +4.5 + 10 +4.300000000000011 + 20 +4.5 + 42 +-0.414213562373095 + 10 +4.5 + 20 +4.300000000000011 + 10 +4.5 + 20 +-4.299999999999983 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +2F1B2 +330 +2F1B0 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.300000000000011 + 20 +4.5 + 10 +-4.300000000000011 + 20 +4.500000000000028 + 42 +0.414213562373095 + 10 +-4.499999999999943 + 20 +4.300000000000011 + 10 +-4.499999999999943 + 20 +-4.299999999999983 + 42 +0.414213562373095 + 10 +-4.300000000000011 + 20 +-4.5 + 10 +4.300000000000011 + 20 +-4.5 + 42 +0.4142135623730948 + 10 +4.500000000000057 + 20 +-4.299999999999983 + 10 +4.500000000000057 + 20 +4.300000000000011 + 42 +0.4142135623730948 + 0 +LWPOLYLINE + 5 +2F1B3 +330 +2F1B0 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +-5.0 + 20 +0.0 + 10 +-4.5 + 20 +0.0 + 10 +4.5 + 20 +0.0 + 10 +5.000000000000057 + 20 +0.0 + 0 +LWPOLYLINE + 5 +2F1B4 +330 +2F1B0 +100 +AcDbEntity + 8 +Center + 6 +CENTER2 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +0.0000000000000568 + 20 +5.0 + 10 +0.0000000000000568 + 20 +4.5 + 10 +0.0000000000000568 + 20 +-4.5 + 10 +0.0000000000000568 + 20 +-4.558527528398798 + 0 +LINE + 5 +2F1B5 +330 +2F1B0 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.299999999999983 + 30 +0.0 + 11 +-3.0 + 21 +-5.299999999999983 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2F1B6 +330 +2F1B0 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +2.699999999999989 + 20 +-5.199999999999989 + 10 +2.699999999999989 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 10 +-2.699999999999989 + 20 +-5.199999999999989 + 0 +HATCH + 5 +2F1B7 +330 +2F1B0 +100 +AcDbEntity + 8 +hatch + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.699999999999989 + 20 +-5.399999999999977 + 10 +2.699999999999989 + 20 +-5.199999999999989 + 10 +-2.699999999999989 + 20 +-5.199999999999989 + 10 +-2.699999999999989 + 20 +-5.399999999999977 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0226955741454481 + 98 + 1 + 10 +-0.3808287956823051 + 20 +-5.341873238159934 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +HATCH + 5 +2F1B8 +330 +2F1B0 +100 +AcDbEntity + 8 +PCB + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 6 + 10 +3.5 + 20 +-4.5 + 42 +0.0 + 10 +-3.5 + 20 +-4.5 + 42 +-0.414213562373095 + 10 +-3.0 + 20 +-5.0 + 42 +0.0 + 10 +-3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.299999999999983 + 42 +0.0 + 10 +3.0 + 20 +-5.0 + 42 +-0.414213562373095 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949693 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949693 + 44 +-77.98722186438528 + 45 +-0.0883883476483184 + 46 +-0.0883883476483184 + 79 + 0 + 47 +0.0058299147843965 + 98 + 1 + 10 +-0.7967112482471634 + 20 +-4.953621094124458 + 0 +LWPOLYLINE + 5 +2F1B9 +330 +2F1B0 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.800000000000011 + 20 +-20.5 + 10 +-4.800000000000011 + 20 +-20.49999999999999 + 42 +0.414213562373095 + 10 +-5.0 + 20 +-20.69999999999999 + 10 +-5.0 + 20 +-23.79999999999998 + 42 +0.414213562373095 + 10 +-4.800000000000011 + 20 +-23.99999999999999 + 10 +4.800000000000011 + 20 +-23.99999999999999 + 42 +0.414213562373095 + 10 +5.000000000000057 + 20 +-23.79999999999998 + 10 +5.000000000000057 + 20 +-20.69999999999999 + 42 +0.414213562373095 + 0 +LINE + 5 +2F1BA +102 +{ACAD_REACTORS +330 +2F1C3 +102 +} +330 +2F1B0 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F1BB +102 +{ACAD_REACTORS +330 +2F1C3 +102 +} +330 +2F1B0 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F1BC +102 +{ACAD_REACTORS +330 +2F1C3 +102 +} +330 +2F1B0 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +3.0 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2F1BD +102 +{ACAD_REACTORS +330 +2F1C3 +102 +} +330 +2F1B0 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.800000000000011 + 30 +0.0 + 11 +-3.0 + 21 +-5.800000000000011 + 31 +0.0 + 0 +LINE + 5 +2F1BE +330 +2F1B0 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-3.0 + 20 +-16.0 + 30 +0.0 + 11 +3.000000000000057 + 21 +-16.0 + 31 +0.0 + 0 +LINE + 5 +2F1BF +330 +2F1B0 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.000000000000057 + 20 +-9.0 + 30 +0.0 + 11 +-3.0 + 21 +-9.0 + 31 +0.0 + 0 +LINE + 5 +2F1C0 +330 +2F1B0 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-19.99999999999999 + 30 +0.0 + 11 +-3.0 + 21 +-19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +2F1C1 +330 +2F1B0 +100 +AcDbEntity + 8 +图层1 + 6 +ByBlock + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +3.0 + 20 +-5.0 + 30 +0.0 + 11 +-3.0 + 21 +-5.0 + 31 +0.0 + 0 +HATCH + 5 +2F1C3 +330 +2F1B0 +100 +AcDbEntity + 8 +EMI + 6 +ByBlock + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +3.0 + 20 +-5.800000000000011 + 11 +-3.0 + 21 +-5.800000000000011 + 72 + 1 + 10 +-3.0 + 20 +-5.800000000000011 + 11 +-3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +-3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-19.99999999999999 + 72 + 1 + 10 +3.0 + 20 +-19.99999999999999 + 11 +3.0 + 21 +-5.800000000000011 + 97 + 4 +330 +2F1BD +330 +2F1BA +330 +2F1BB +330 +2F1BC + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +2.0 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-30.82551076949693 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +0.1767766952966369 + 79 + 0 + 53 +135.0 + 43 +-30.82551076949693 + 44 +-77.98722186438528 + 45 +-0.1767766952966369 + 46 +-0.1767766952966369 + 79 + 0 + 98 + 1 + 10 +-30.82551076949693 + 20 +-77.98722186438528 + 0 +ENDBLK + 5 +2F1C7 +330 +2F1B0 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2F2CD +330 +2F2B8 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C5EFE3A1C + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C5EFE3A1C + 1 + + 0 +LINE + 5 +2F2B9 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.500000000000057 + 20 +-3.75 + 30 +0.0 + 11 +-5.0 + 21 +-3.75 + 31 +0.0 + 0 +LINE + 5 +2F2BA +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.500000000000057 + 20 +-5.25 + 30 +0.0 + 11 +-5.000000000000057 + 21 +-5.25 + 31 +0.0 + 0 +LINE + 5 +2F2C5 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +0.9999999999999432 + 30 +0.0 + 11 +-0.75 + 21 +0.5000000000000284 + 31 +0.0 + 0 +ARC + 5 +2F2C7 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2F2C8 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +0.9999999999999432 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +3053F +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +-3.75 + 30 +0.0 + 11 +-5.0 + 21 +-3.75 + 31 +0.0 + 0 +LINE + 5 +30540 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +-5.25 + 30 +0.0 + 11 +-5.000000000000057 + 21 +-5.25 + 31 +0.0 + 0 +LINE + 5 +30541 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +-2.25 + 30 +0.0 + 11 +-5.000000000000057 + 21 +-2.25 + 31 +0.0 + 0 +LINE + 5 +30542 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +-6.75 + 30 +0.0 + 11 +-5.000000000000057 + 21 +-6.75 + 31 +0.0 + 0 +ARC + 5 +30543 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.5 + 20 +-4.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.00000000000651 + 51 +180.0 + 0 +ARC + 5 +30544 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-4.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +30545 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.5 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +ARC + 5 +30546 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000057 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +30547 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.5 + 20 +-1.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +174.360847335493 + 51 +270.0 + 0 +ARC + 5 +30548 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000057 + 20 +-1.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +1.056204736055247 + 0 +ARC + 5 +30549 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.5 + 20 +-7.250000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +188.146964850987 + 0 +ARC + 5 +3054A +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000057 + 20 +-7.250000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +30945 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +0.9999999999999432 + 30 +0.0 + 11 +0.75 + 21 +0.5000000000000284 + 31 +0.0 + 0 +ARC + 5 +30946 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +30947 +330 +2F2B8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +0.9999999999999432 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ENDBLK + 5 +2F2CE +330 +2F2B8 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +30629 +330 +30615 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C676D66B4 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C676D66B4 + 1 + + 0 +LINE + 5 +30616 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.000000000000057 + 20 +0.75 + 30 +0.0 + 11 +-0.5 + 21 +0.75 + 31 +0.0 + 0 +LINE + 5 +30617 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.000000000000057 + 20 +-0.75 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +30618 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.0 + 20 +0.75 + 30 +0.0 + 11 +-0.5 + 21 +0.75 + 31 +0.0 + 0 +LINE + 5 +30619 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.0 + 20 +-0.75 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +3061A +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.0 + 20 +2.25 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +2.25 + 31 +0.0 + 0 +LINE + 5 +3061B +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.0 + 20 +-2.25 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +-2.25 + 31 +0.0 + 0 +ARC + 5 +3061C +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.0 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.00000000000651 + 51 +180.0 + 0 +ARC + 5 +3061D +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +3061E +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.0 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +ARC + 5 +3061F +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +30620 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.0 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +174.3608473354929 + 51 +270.0 + 0 +ARC + 5 +30621 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +1.056204736055253 + 0 +ARC + 5 +30622 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.0 + 20 +-2.750000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +188.1469648509869 + 0 +ARC + 5 +30623 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +-2.750000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +30624 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.25 + 20 +0.75 + 30 +0.0 + 11 +-1.249999999999943 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +30625 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.25 + 20 +0.0 + 30 +0.0 + 11 +1.423298797072448 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +30626 +330 +30615 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.25 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-0.25 + 31 +0.0 + 0 +ENDBLK + 5 +3062A +330 +30615 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +30651 +330 +30642 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C257A5785 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C257A5785 + 1 + + 0 +LINE + 5 +30643 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.000000000000028 + 20 +0.75 + 30 +0.0 + 11 +-5.0 + 21 +0.75 + 31 +0.0 + 0 +LINE + 5 +30644 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.0 + 20 +-0.75 + 30 +0.0 + 11 +-5.0 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +30645 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.000000000000028 + 20 +2.25 + 30 +0.0 + 11 +-5.000000000000057 + 21 +2.25 + 31 +0.0 + 0 +LINE + 5 +30646 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.000000000000028 + 20 +-2.25 + 30 +0.0 + 11 +-5.000000000000057 + 21 +-2.25 + 31 +0.0 + 0 +ARC + 5 +30647 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +30648 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.000000000000028 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +30649 +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.0 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +3064A +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +3064B +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.000000000000028 + 20 +-2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3064C +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000057 + 20 +-2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +3064D +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.000000000000028 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +3064E +330 +30642 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000057 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ENDBLK + 5 +30652 +330 +30642 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3065E +330 +30655 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C49BA1FCA + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C49BA1FCA + 1 + + 0 +LINE + 5 +30656 +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.999999999999943 + 20 +-0.9999999999999716 + 30 +0.0 + 11 +-5.499999999999972 + 21 +-0.9999999999999716 + 31 +0.0 + 0 +LINE + 5 +30657 +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.0 + 20 +-2.499999999999972 + 30 +0.0 + 11 +-5.499999999999943 + 21 +-2.499999999999972 + 31 +0.0 + 0 +ARC + 5 +30658 +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.999999999999943 + 20 +-0.4999999999999716 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +30659 +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.499999999999972 + 20 +-0.4999999999999716 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +3065A +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.0 + 20 +-2.999999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3065B +330 +30655 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.499999999999943 + 20 +-2.999999999999972 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +3065F +330 +30655 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3069D +330 +30686 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3A7F01DE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3A7F01DE + 1 + + 0 +LINE + 5 +30687 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +0.75 + 30 +0.0 + 11 +-4.999999999999943 + 21 +0.75 + 31 +0.0 + 0 +LINE + 5 +30688 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.5 + 20 +-0.75 + 30 +0.0 + 11 +-5.0 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +3068F +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.499999999999943 + 20 +0.75 + 30 +0.0 + 11 +-4.999999999999943 + 21 +0.75 + 31 +0.0 + 0 +LINE + 5 +30690 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.499999999999943 + 20 +-0.75 + 30 +0.0 + 11 +-5.0 + 21 +-0.75 + 31 +0.0 + 0 +LINE + 5 +30691 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.499999999999943 + 20 +2.25 + 30 +0.0 + 11 +-5.0 + 21 +2.25 + 31 +0.0 + 0 +LINE + 5 +30692 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-6.499999999999943 + 20 +-2.25 + 30 +0.0 + 11 +-5.0 + 21 +-2.25 + 31 +0.0 + 0 +ARC + 5 +30693 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.499999999999943 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.00000000000651 + 51 +180.0 + 0 +ARC + 5 +30694 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.999999999999943 + 20 +0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +30695 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.499999999999943 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +ARC + 5 +30696 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-0.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +30697 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.499999999999943 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +174.3608473354931 + 51 +270.0 + 0 +ARC + 5 +30698 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +1.056204736055247 + 0 +ARC + 5 +30699 +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-6.499999999999943 + 20 +-2.750000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +188.1469648509871 + 0 +ARC + 5 +3069A +330 +30686 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.0 + 20 +-2.750000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +3069E +330 +30686 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +306B3 +330 +306AC +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C43592A53 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C43592A53 + 1 + + 0 +INSERT + 5 +306AD +330 +306AC +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C257A5785 + 10 +-0.0000000000000568 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +306AE +330 +306AC +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C49BA1FCA + 10 +-0.0000000000000568 + 20 +-20.5 + 30 +0.0 + 0 +ENDBLK + 5 +306B4 +330 +306AC +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +307E2 +330 +307D3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C78362B9A + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C78362B9A + 1 + + 0 +LINE + 5 +307D4 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-4.789999999999978 + 30 +0.0 + 11 +-0.75 + 21 +-5.289999999999964 + 31 +0.0 + 0 +LINE + 5 +307D5 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-5.289999999999978 + 30 +0.0 + 11 +0.75 + 21 +-4.789999999999978 + 31 +0.0 + 0 +ARC + 5 +307D6 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-0.4999999999999858 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +307D7 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-1.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +307D8 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-0.4999999999999858 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +182.6019313131822 + 0 +ARC + 5 +307D9 +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-1.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +307DA +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-4.789999999999978 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +307DB +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-5.289999999999964 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +274.7325011113869 + 51 +0.0 + 0 +ARC + 5 +307DC +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-4.789999999999978 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +186.6861326981766 + 0 +ARC + 5 +307DD +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-5.289999999999978 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +307DE +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-1.0 + 30 +0.0 + 11 +-0.75 + 21 +-0.4999999999999858 + 31 +0.0 + 0 +LINE + 5 +307DF +330 +307D3 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-1.0 + 30 +0.0 + 11 +0.75 + 21 +-0.4999999999999858 + 31 +0.0 + 0 +ENDBLK + 5 +307E3 +330 +307D3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +30810 +330 +30807 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C25294DFB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C25294DFB + 1 + + 0 +LINE + 5 +30808 +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +-0.5 + 30 +0.0 + 11 +-0.75 + 21 +-1.080000006098459 + 31 +0.0 + 0 +LINE + 5 +30809 +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.75 + 20 +-0.5 + 30 +0.0 + 11 +0.75 + 21 +-1.080000006098473 + 31 +0.0 + 0 +ARC + 5 +3080A +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-0.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +3080B +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +-1.080000006098459 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +1.150984751406273 + 0 +ARC + 5 +3080C +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-0.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +185.6103425590063 + 0 +ARC + 5 +3080D +330 +30807 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.25 + 20 +-1.080000006098473 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ENDBLK + 5 +30811 +330 +30807 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +30953 +330 +3094A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C5D8D7720 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C5D8D7720 + 1 + + 0 +LINE + 5 +3094B +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.75 + 20 +5.5 + 30 +0.0 + 11 +-0.75 + 21 +5.000000000000028 + 31 +0.0 + 0 +ARC + 5 +3094C +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +5.000000000000028 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +3094D +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.25 + 20 +5.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +3094E +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7499999999999432 + 20 +5.499999999999943 + 30 +0.0 + 11 +0.7499999999999147 + 21 +4.999999999999972 + 31 +0.0 + 0 +ARC + 5 +3094F +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.249999999999915 + 20 +4.999999999999943 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +179.9999999999959 + 51 +269.9999999999951 + 0 +ARC + 5 +30950 +330 +3094A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.249999999999943 + 20 +5.499999999999915 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +89.99999999999511 + 51 +179.9999999999959 + 0 +ENDBLK + 5 +30954 +330 +3094A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +30FA2 +330 +30F9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C0199744A + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C0199744A + 1 + + 0 +LINE + 5 +30FA3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.106066017980311 + 20 +0.6410660161849933 + 30 +0.0 + 11 +3.050000001079979 + 21 +0.584999999285003 + 31 +0.0 + 0 +LINE + 5 +30FA4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.149999999200418 + 20 +0.5350000002249544 + 30 +0.0 + 11 +3.149999999200418 + 21 +-0.5350000009950122 + 31 +0.0 + 0 +LINE + 5 +30FA5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.050000001079979 + 20 +-0.585000000055004 + 30 +0.0 + 11 +3.050000001079979 + 21 +0.584999999285003 + 31 +0.0 + 0 +LINE + 5 +30FA6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.945000000260507 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +2.945000000260507 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +30FA7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.945000000260507 + 20 +0.6849999999450347 + 30 +0.0 + 11 +2.945000000260507 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +30FA8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.844999999600304 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +2.844999999600304 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +30FA9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.844999999600304 + 20 +0.6849999999450347 + 30 +0.0 + 11 +2.844999999600304 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +30FAA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.674999999240072 + 20 +0.1049999991649884 + 30 +0.0 + 11 +2.674999999240072 + 21 +-0.1049999999349325 + 31 +0.0 + 0 +LINE + 5 +30FAB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +0.7399999991650361 + 30 +0.0 + 11 +2.534999999840011 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +30FAC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +0.1049999991649884 + 30 +0.0 + 11 +2.534999999840011 + 21 +-0.1049999999349325 + 31 +0.0 + 0 +LINE + 5 +30FAD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +2.534999999840011 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FAE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.495000001100152 + 20 +-0.1049999999349325 + 30 +0.0 + 11 +2.494999650580439 + 21 +0.1049999991649884 + 31 +0.0 + 0 +LINE + 5 +30FAF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +0.5649999986450212 + 30 +0.0 + 11 +2.385000000120044 + 21 +0.2150000001450394 + 31 +0.0 + 0 +LINE + 5 +30FB0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +-0.2150000009149267 + 30 +0.0 + 11 +2.385000000120044 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +30FB1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.320000000580194 + 20 +0.2549999988850118 + 30 +0.0 + 11 +2.320000000580194 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FB2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.320000000580194 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FB3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.274999999140391 + 20 +1.035000000985008 + 30 +0.0 + 11 +2.274999999140391 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FB4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.274999999140391 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +2.274999999140391 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FB5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.12499999941997 + 20 +-1.034999999214961 + 30 +0.0 + 11 +2.12499999941997 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FB6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.12499999941997 + 20 +0.7399999991650361 + 30 +0.0 + 11 +2.12499999941997 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FB7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +0.6150000002450611 + 30 +0.0 + 11 +2.080000000519931 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FB8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +2.080000000519931 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FB9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.920000000480059 + 20 +0.2549999988850118 + 30 +0.0 + 11 +1.920000000480059 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FBA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.920000000480059 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FBB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.87500000158002 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.87500000158002 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FBC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.87500000158002 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +1.87500000158002 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FBD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.049999998539761 + 20 +-0.585000000055004 + 30 +0.0 + 11 +-3.106066017979856 + 21 +-0.6410660169549942 + 31 +0.0 + 0 +LINE + 5 +30FBE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.724999999320289 + 20 +-1.034999999214961 + 30 +0.0 + 11 +1.724999999320289 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FBF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.724999999320289 + 20 +0.7399999991650361 + 30 +0.0 + 11 +1.724999999320289 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FC0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +0.6150000002450611 + 30 +0.0 + 11 +1.68000000042025 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FC1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +1.68000000042025 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FC2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.520000000379923 + 20 +0.2549999988850118 + 30 +0.0 + 11 +1.520000000379923 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FC3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.520000000379923 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +1.520000000379923 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FC4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.475000001479884 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.475000001479884 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FC5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.475000001479884 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +1.475000001479884 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FC6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.324999999220154 + 20 +-1.034999999214961 + 30 +0.0 + 11 +1.324999999220154 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FC7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.324999999220154 + 20 +0.7399999991650361 + 30 +0.0 + 11 +1.324999999220154 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FC8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +0.6150000002450611 + 30 +0.0 + 11 +1.280000000320115 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FC9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +1.280000000320115 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FCA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.120000000280243 + 20 +0.2549999988850118 + 30 +0.0 + 11 +1.120000000280243 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FCB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.120000000280243 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +1.120000000280243 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FCC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.075000001380204 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.075000001380204 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FCD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.075000001380204 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +1.075000001380204 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FCE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.9250000016597824 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.9250000016597824 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FCF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.9250000016597824 + 20 +0.7399999991650361 + 30 +0.0 + 11 +0.9250000016597824 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FD0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +0.6150000002450611 + 30 +0.0 + 11 +0.8800000002204342 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FD1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +0.8800000002204342 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FD2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.7200000001801072 + 20 +0.2549999988850118 + 30 +0.0 + 11 +0.7200000001801072 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FD3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.7200000001801072 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +0.7200000001801072 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FD4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.6750000012805231 + 20 +1.035000000985008 + 30 +0.0 + 11 +0.6750000012805231 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FD5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.6750000012805231 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +0.6750000012805231 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FD6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5250000015601017 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.5250000015601017 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FD7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5250000015601017 + 20 +0.7399999991650361 + 30 +0.0 + 11 +0.5250000015601017 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FD8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +0.6150000002450611 + 30 +0.0 + 11 +0.4800000001198441 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FD9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +0.4800000001198441 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FDA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.3200000000799719 + 20 +0.2549999988850118 + 30 +0.0 + 11 +0.3200000000799719 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FDB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.3200000000799719 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +0.3200000000799719 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FDC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.275000001179933 + 20 +1.035000000985008 + 30 +0.0 + 11 +0.275000001179933 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FDD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.275000001179933 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +0.275000001179933 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FDE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.1250000014599664 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.1250000014599664 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FDF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.1250000014599664 + 20 +0.7399999991650361 + 30 +0.0 + 11 +0.1250000014599664 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FE0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +0.6150000002450611 + 30 +0.0 + 11 +0.0800000000201635 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FE1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +0.0800000000201635 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FE2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.0800000000197088 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FE3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.0800000000197088 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FE4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.1249999989197477 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.1249999989197477 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FE5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.1249999989197477 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-0.1249999989197477 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FE6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.2749999986397142 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-0.2749999986397142 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FE7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.2749999986397142 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-0.2749999986397142 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FE8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-0.3200000000799719 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FE9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-0.3200000000799719 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FEA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.4800000001198441 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FEB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.4800000001198441 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FEC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.524999999019883 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.524999999019883 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FED +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.524999999019883 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-0.524999999019883 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FEE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.6749999987398496 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-0.6749999987398496 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FEF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.6749999987398496 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-0.6749999987398496 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FF0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-0.7200000001801072 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FF1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-0.7200000001801072 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FF2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8800000002199795 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FF3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8800000002199795 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FF4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.9249999991200184 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.9249999991200184 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FF5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.9249999991200184 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-0.9249999991200184 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FF6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.074999998839985 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.074999998839985 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FF7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.074999998839985 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-1.074999998839985 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +30FF8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-1.120000000279788 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +30FF9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-1.120000000279788 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FFA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.28000000031966 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-1.28000000031966 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +30FFB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.28000000031966 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-1.28000000031966 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +30FFC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.324999999219699 + 20 +1.035000000985008 + 30 +0.0 + 11 +-1.324999999219699 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +30FFD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.324999999219699 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-1.324999999219699 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +30FFE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.474999998939666 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.474999998939666 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +30FFF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.474999998939666 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-1.474999998939666 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31000 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-1.520000000379923 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +31001 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-1.520000000379923 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +31002 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.680000000419795 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-1.680000000419795 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31003 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.680000000419795 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-1.680000000419795 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +31004 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.724999999319834 + 20 +1.035000000985008 + 30 +0.0 + 11 +-1.724999999319834 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +31005 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.724999999319834 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-1.724999999319834 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +31006 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.874999999039801 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.874999999039801 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +31007 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.874999999039801 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-1.874999999039801 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31008 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-1.920000000479604 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +31009 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-1.920000000479604 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +3100A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.080000000519931 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-2.080000000519931 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +3100B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.080000000519931 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-2.080000000519931 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +3100C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.12499999941997 + 20 +1.035000000985008 + 30 +0.0 + 11 +-2.12499999941997 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +3100D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.12499999941997 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-2.12499999941997 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +3100E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.274999999139936 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-2.274999999139936 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +3100F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.274999999139936 + 20 +0.7399999991650361 + 30 +0.0 + 11 +-2.274999999139936 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31010 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-2.320000000579739 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +31011 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-2.320000000579739 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +31012 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.385000000119589 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-2.385000000119589 + 21 +0.2150000001450394 + 31 +0.0 + 0 +LINE + 5 +31013 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.385000000119589 + 20 +-0.2150000009149267 + 30 +0.0 + 11 +-2.385000000119589 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +31014 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.494999998559933 + 20 +0.1049999991649884 + 30 +0.0 + 11 +-2.494999650579985 + 21 +-0.1049999999349325 + 31 +0.0 + 0 +LINE + 5 +31015 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-2.534999999840011 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31016 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +-0.1049999999349325 + 30 +0.0 + 11 +-2.534999999840011 + 21 +0.1049999991649884 + 31 +0.0 + 0 +LINE + 5 +31017 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-2.534999999840011 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +31018 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.106066017980311 + 20 +-0.6410660169549942 + 30 +0.0 + 11 +3.050000001079979 + 21 +-0.585000000055004 + 31 +0.0 + 0 +LINE + 5 +31019 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.674999999239617 + 20 +-0.1049999999349325 + 30 +0.0 + 11 +-2.674999999239617 + 21 +0.1049999991649884 + 31 +0.0 + 0 +LINE + 5 +3101A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.84499999959985 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +-2.84499999959985 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +3101B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.84499999959985 + 20 +0.6849999999450347 + 30 +0.0 + 11 +-2.84499999959985 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +3101C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.945000000260052 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +-2.945000000260052 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +3101D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.945000000260052 + 20 +0.6849999999450347 + 30 +0.0 + 11 +-2.945000000260052 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +3101E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.049999998539761 + 20 +0.584999999285003 + 30 +0.0 + 11 +-3.049999998539761 + 21 +-0.585000000055004 + 31 +0.0 + 0 +LINE + 5 +3101F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.149999999199963 + 20 +-0.5350000009950122 + 30 +0.0 + 11 +-3.149999999199963 + 21 +0.5350000002249544 + 31 +0.0 + 0 +LINE + 5 +31020 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.274999999139936 + 20 +1.035000000985008 + 30 +0.0 + 11 +-2.12499999941997 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31021 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.874999999039801 + 20 +1.035000000985008 + 30 +0.0 + 11 +-1.724999999319834 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31022 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.474999998939666 + 20 +1.035000000985008 + 30 +0.0 + 11 +-1.324999999219699 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31023 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.074999998839985 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.9249999991200184 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31024 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.6749999987398496 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.524999999019883 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31025 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.2749999986397142 + 20 +1.035000000985008 + 30 +0.0 + 11 +-0.1249999989197477 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31026 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.1250000014599664 + 20 +1.035000000985008 + 30 +0.0 + 11 +0.275000001179933 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31027 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.5250000015601017 + 20 +1.035000000985008 + 30 +0.0 + 11 +0.6750000012805231 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31028 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.9250000016597824 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.075000001380204 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +31029 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.324999999220154 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.475000001479884 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +3102A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.724999999320289 + 20 +1.035000000985008 + 30 +0.0 + 11 +1.87500000158002 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +3102B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.12499999941997 + 20 +1.035000000985008 + 30 +0.0 + 11 +2.274999999140391 + 21 +1.035000000985008 + 31 +0.0 + 0 +LINE + 5 +3102C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.945000000260507 + 20 +0.7499999994850555 + 30 +0.0 + 11 +2.844999999600304 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +3102D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.84499999959985 + 20 +0.7499999994850555 + 30 +0.0 + 11 +-2.945000000260052 + 21 +0.7499999994850555 + 31 +0.0 + 0 +LINE + 5 +3102E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +0.7399999991650361 + 30 +0.0 + 11 +2.534999999840011 + 21 +0.7399999991650361 + 31 +0.0 + 0 +LINE + 5 +3102F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.999999999479542 + 20 +0.6849999999450347 + 30 +0.0 + 11 +-2.534999999840011 + 21 +0.6849999999450347 + 31 +0.0 + 0 +LINE + 5 +31030 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +0.6849999999450347 + 30 +0.0 + 11 +2.999999999479996 + 21 +0.6849999999450347 + 31 +0.0 + 0 +LINE + 5 +31031 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-2.080000000519931 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31032 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-1.680000000419795 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31033 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-1.28000000031966 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31034 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31035 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31036 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +0.6150000002450611 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31037 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +0.6150000002450611 + 30 +0.0 + 11 +0.3200000000799719 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31038 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +0.6150000002450611 + 30 +0.0 + 11 +0.7200000001801072 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +31039 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +0.6150000002450611 + 30 +0.0 + 11 +1.120000000280243 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +3103A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +0.6150000002450611 + 30 +0.0 + 11 +1.520000000379923 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +3103B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +0.6150000002450611 + 30 +0.0 + 11 +1.920000000480059 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +3103C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +0.6150000002450611 + 30 +0.0 + 11 +2.320000000580194 + 21 +0.6150000002450611 + 31 +0.0 + 0 +LINE + 5 +3103D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.050000001079979 + 20 +0.584999999285003 + 30 +0.0 + 11 +2.534999999840011 + 21 +0.584999999285003 + 31 +0.0 + 0 +LINE + 5 +3103E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +0.584999999285003 + 30 +0.0 + 11 +-3.049999998539761 + 21 +0.584999999285003 + 31 +0.0 + 0 +LINE + 5 +3103F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-2.320000000579739 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31040 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +0.5649999986450212 + 30 +0.0 + 11 +2.320000000580194 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31041 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +0.5649999986450212 + 30 +0.0 + 11 +1.920000000480059 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31042 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +0.5649999986450212 + 30 +0.0 + 11 +1.520000000379923 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31043 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +0.5649999986450212 + 30 +0.0 + 11 +1.120000000280243 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31044 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +0.5649999986450212 + 30 +0.0 + 11 +0.7200000001801072 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31045 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +0.5649999986450212 + 30 +0.0 + 11 +0.3200000000799719 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31046 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31047 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31048 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +31049 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-1.28000000031966 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +3104A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-1.680000000419795 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +3104B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +0.5649999986450212 + 30 +0.0 + 11 +-2.080000000519931 + 21 +0.5649999986450212 + 31 +0.0 + 0 +LINE + 5 +3104C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.320000000580194 + 20 +0.4750000008450002 + 30 +0.0 + 11 +2.080000000519931 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +3104D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.920000000480059 + 20 +0.4750000008450002 + 30 +0.0 + 11 +1.68000000042025 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +3104E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.520000000379923 + 20 +0.4750000008450002 + 30 +0.0 + 11 +1.280000000320115 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +3104F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.120000000280243 + 20 +0.4750000008450002 + 30 +0.0 + 11 +0.8800000002204342 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31050 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.7200000001801072 + 20 +0.4750000008450002 + 30 +0.0 + 11 +0.4800000001198441 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31051 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.3200000000799719 + 20 +0.4750000008450002 + 30 +0.0 + 11 +0.0800000000201635 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31052 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.0800000000197088 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-0.3200000000799719 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31053 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.4800000001198441 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-0.7200000001801072 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31054 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8800000002199795 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-1.120000000279788 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31055 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.28000000031966 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-1.520000000379923 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31056 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.680000000419795 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-1.920000000479604 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31057 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.080000000519931 + 20 +0.4750000008450002 + 30 +0.0 + 11 +-2.320000000579739 + 21 +0.4750000008450002 + 31 +0.0 + 0 +LINE + 5 +31058 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-2.320000000579739 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31059 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.080000000519931 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-1.920000000479604 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.680000000419795 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-1.520000000379923 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.28000000031966 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-1.120000000279788 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8800000002199795 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-0.7200000001801072 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.4800000001198441 + 20 +0.4249999992450739 + 30 +0.0 + 11 +-0.3200000000799719 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.0800000000197088 + 20 +0.4249999992450739 + 30 +0.0 + 11 +0.0800000000201635 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +3105F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.3200000000799719 + 20 +0.4249999992450739 + 30 +0.0 + 11 +0.4800000001198441 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31060 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.7200000001801072 + 20 +0.4249999992450739 + 30 +0.0 + 11 +0.8800000002204342 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31061 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.120000000280243 + 20 +0.4249999992450739 + 30 +0.0 + 11 +1.280000000320115 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31062 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.520000000379923 + 20 +0.4249999992450739 + 30 +0.0 + 11 +1.68000000042025 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31063 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.920000000480059 + 20 +0.4249999992450739 + 30 +0.0 + 11 +2.080000000519931 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31064 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.320000000580194 + 20 +0.4249999992450739 + 30 +0.0 + 11 +2.534999999840011 + 21 +0.4249999992450739 + 31 +0.0 + 0 +LINE + 5 +31065 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +0.3950000008250072 + 30 +0.0 + 11 +-2.385000000119589 + 21 +0.3950000008250072 + 31 +0.0 + 0 +LINE + 5 +31066 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +0.3050000004850517 + 30 +0.0 + 11 +2.320000000580194 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31067 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +0.3050000004850517 + 30 +0.0 + 11 +1.920000000480059 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31068 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +0.3050000004850517 + 30 +0.0 + 11 +1.520000000379923 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31069 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +0.3050000004850517 + 30 +0.0 + 11 +1.120000000280243 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +0.3050000004850517 + 30 +0.0 + 11 +0.7200000001801072 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +0.3050000004850517 + 30 +0.0 + 11 +0.3200000000799719 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +3106F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-1.28000000031966 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31070 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-1.680000000419795 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31071 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-2.080000000519931 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31072 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +0.3050000004850517 + 30 +0.0 + 11 +-2.385000000119589 + 21 +0.3050000004850517 + 31 +0.0 + 0 +LINE + 5 +31073 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +0.2549999988850118 + 30 +0.0 + 11 +-2.385000000119589 + 21 +0.2549999988850118 + 31 +0.0 + 0 +LINE + 5 +31074 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +0.2149996496250424 + 30 +0.0 + 11 +-2.385000000119589 + 21 +0.2149996496250424 + 31 +0.0 + 0 +LINE + 5 +31075 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.495000001100152 + 20 +0.1049999991649884 + 30 +0.0 + 11 +2.674999999240072 + 21 +0.1049999991649884 + 31 +0.0 + 0 +LINE + 5 +31076 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.494999998559933 + 20 +0.1049999991649884 + 30 +0.0 + 11 +-2.674999999239617 + 21 +0.1049999991649884 + 31 +0.0 + 0 +LINE + 5 +31077 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.674999999240072 + 20 +-0.1049999999349325 + 30 +0.0 + 11 +2.495000001100152 + 21 +-0.1049999999349325 + 31 +0.0 + 0 +LINE + 5 +31078 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.494999998559933 + 20 +-0.1049999999349325 + 30 +0.0 + 11 +-2.674999999239617 + 21 +-0.1049999999349325 + 31 +0.0 + 0 +LINE + 5 +31079 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.385000000119589 + 20 +-0.2150000009149267 + 30 +0.0 + 11 +2.385000000120044 + 21 +-0.2149996503949865 + 31 +0.0 + 0 +LINE + 5 +3107A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +-0.2549999996550127 + 30 +0.0 + 11 +-2.385000000119589 + 21 +-0.2549999996550127 + 31 +0.0 + 0 +LINE + 5 +3107B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +3107C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +3107D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +1.520000000379923 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +3107E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +1.120000000280243 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +3107F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +0.7200000001801072 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31080 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +0.3200000000799719 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31081 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31082 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31083 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31084 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-1.28000000031966 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31085 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-1.680000000419795 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31086 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-2.080000000519931 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31087 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.3050000012549958 + 30 +0.0 + 11 +-2.385000000119589 + 21 +-0.3050000012549958 + 31 +0.0 + 0 +LINE + 5 +31088 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.385000000120044 + 20 +-0.39499999905496 + 30 +0.0 + 11 +-2.385000000119589 + 21 +-0.39499999905496 + 31 +0.0 + 0 +LINE + 5 +31089 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +1.520000000379923 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +1.120000000280243 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +0.7200000001801072 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +0.3200000000799719 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +3108F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31090 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31091 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31092 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-1.28000000031966 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31093 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-1.680000000419795 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31094 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-2.080000000519931 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31095 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.4250000000149612 + 30 +0.0 + 11 +-2.534999999840011 + 21 +-0.4250000000149612 + 31 +0.0 + 0 +LINE + 5 +31096 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-2.080000000519931 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +31097 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-1.680000000419795 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +31098 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-1.28000000031966 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +31099 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109A +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109B +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109C +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +0.3200000000799719 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109D +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +0.7200000001801072 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109E +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +1.120000000280243 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +3109F +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +1.520000000379923 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +310A0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +310A1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.4749999990750098 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.4749999990750098 + 31 +0.0 + 0 +LINE + 5 +310A2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.080000000519931 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-1.920000000479604 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.680000000419795 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-1.520000000379923 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.28000000031966 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-1.120000000279788 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.8800000002199795 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-0.7200000001801072 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.4800000001198441 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-0.3200000000799719 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.0800000000197088 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +0.0800000000201635 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.3200000000799719 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +0.4800000001198441 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310A9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.7200000001801072 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +0.8800000002204342 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.120000000280243 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +1.280000000320115 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.520000000379923 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +1.68000000042025 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.5649999994150221 + 30 +0.0 + 11 +-2.534999999840011 + 21 +-0.5649999994150221 + 31 +0.0 + 0 +LINE + 5 +310AF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.049999998539761 + 20 +-0.585000000055004 + 30 +0.0 + 11 +-2.534999999840011 + 21 +-0.585000000055004 + 31 +0.0 + 0 +LINE + 5 +310B0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +-0.585000000055004 + 30 +0.0 + 11 +3.050000001079979 + 21 +-0.585000000055004 + 31 +0.0 + 0 +LINE + 5 +310B1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.106066017979856 + 20 +0.6410660161849933 + 30 +0.0 + 11 +-3.049999998539761 + 21 +0.584999999285003 + 31 +0.0 + 0 +LINE + 5 +310B2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.320000000579739 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-2.080000000519931 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.920000000479604 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-1.680000000419795 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.520000000379923 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-1.28000000031966 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.120000000279788 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-0.8800000002199795 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.7200000001801072 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-0.4800000001198441 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.3200000000799719 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +-0.0800000000197088 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.0800000000201635 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +0.3200000000799719 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310B9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.4800000001198441 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +0.7200000001801072 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310BA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.8800000002204342 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +1.120000000280243 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310BB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.280000000320115 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +1.520000000379923 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310BC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.68000000042025 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +1.920000000480059 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310BD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.080000000519931 + 20 +-0.6150000010150052 + 30 +0.0 + 11 +2.320000000580194 + 21 +-0.6150000010150052 + 31 +0.0 + 0 +LINE + 5 +310BE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.999999999479996 + 20 +-0.6850000007149788 + 30 +0.0 + 11 +2.534999999840011 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +310BF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.534999999840011 + 20 +-0.6850000007149788 + 30 +0.0 + 11 +-2.999999999479542 + 21 +-0.6850000007149788 + 31 +0.0 + 0 +LINE + 5 +310C0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.534999999840011 + 20 +-0.7399999999349802 + 30 +0.0 + 11 +-2.534999999840011 + 21 +-0.7399999999349802 + 31 +0.0 + 0 +LINE + 5 +310C1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.945000000260052 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +-2.84499999959985 + 21 +-0.7500000002549996 + 31 +0.0 + 0 +LINE + 5 +310C2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.844999999600304 + 20 +-0.7500000002549996 + 30 +0.0 + 11 +2.945000000260507 + 21 +-0.7500000002549996 + 31 +0.0 + 0 +LINE + 5 +310C3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +2.274999999140391 + 20 +-1.034999999214961 + 30 +0.0 + 11 +2.12499999941997 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.87500000158002 + 20 +-1.034999999214961 + 30 +0.0 + 11 +1.724999999320289 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.475000001479884 + 20 +-1.034999999214961 + 30 +0.0 + 11 +1.324999999220154 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +1.075000001380204 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.9250000016597824 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.6750000012805231 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.5250000015601017 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +0.275000001179933 + 20 +-1.034999999214961 + 30 +0.0 + 11 +0.1250000014599664 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310C9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.1249999989197477 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-0.2749999986397142 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310CA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.524999999019883 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-0.6749999987398496 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310CB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-0.9249999991200184 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.074999998839985 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310CC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.324999999219699 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.474999998939666 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310CD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-1.724999999319834 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-1.874999999039801 + 21 +-1.034999999214961 + 31 +0.0 + 0 +LINE + 5 +310CE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-2.12499999941997 + 20 +-1.034999999214961 + 30 +0.0 + 11 +-2.274999999139936 + 21 +-1.034999999214961 + 31 +0.0 + 0 +ARC + 5 +310CF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.880000000720202 + 20 +0.0000000008849952 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +334.1580656511977 + 51 +25.84193276320096 + 0 +ARC + 5 +310D0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.28999999912 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +310D1 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.28999999912 +100 +AcDbArc + 50 +359.9999999913986 + 51 +90.0 + 0 +ARC + 5 +310D2 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +310D3 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +310D4 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.999999999479996 + 20 +-0.5350000009950122 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +310D5 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.999999999479996 + 20 +0.5350000002249544 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +310D6 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.10999965046 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +310D7 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +2.385000000120044 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.10999965046 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +310D8 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.880000000719747 + 20 +0.0000000008849952 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +154.1580664107003 + 51 +205.841932763201 + 0 +ARC + 5 +310D9 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.28999999912 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +310DA +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.28999999912 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +310DB +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +310DC +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +310DD +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.999999999479542 + 20 +0.5350000002249544 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +310DE +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.999999999479542 + 20 +-0.5350000009950122 + 30 +0.0 + 40 +0.14999999972 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +310DF +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +0.1049999991649884 + 30 +0.0 + 40 +0.10999965046 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +310E0 +330 +30F9F +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-2.385000000119589 + 20 +-0.1049999999349325 + 30 +0.0 + 40 +0.10999965046 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ENDBLK + 5 +310E1 +330 +30F9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +310E5 +330 +310E2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3D1B05CC + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3D1B05CC + 1 + + 0 +LINE + 5 +310E6 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-0.3840356385999826 + 20 +-2.44294876289996 + 30 +0.0 + 11 +0.384035638499995 + 21 +-2.44294876289996 + 31 +0.0 + 0 +LINE + 5 +310E7 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.4769696007000448 + 20 +-2.25 + 30 +0.0 + 11 +-0.476969600699988 + 21 +-2.25 + 31 +0.0 + 0 +LINE + 5 +310E8 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.691952488199945 + 20 +0.8838783343000216 + 30 +0.0 + 11 +-1.716923351699961 + 21 +0.7656275479000101 + 31 +0.0 + 0 +LINE + 5 +310E9 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.624738115699984 + 20 +1.187797051200022 + 30 +0.0 + 11 +-1.680922534599972 + 21 +0.9217327562000435 + 31 +0.0 + 0 +LINE + 5 +310EA +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.827064327500011 + 20 +1.006107759600042 + 30 +0.0 + 11 +-1.624738115699984 + 21 +1.187797051200022 + 31 +0.0 + 0 +LINE + 5 +310EB +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.944255012799999 + 20 +0.8968775435000396 + 30 +0.0 + 11 +-1.85433225349999 + 21 +0.977628335500043 + 31 +0.0 + 0 +LINE + 5 +310EC +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.638065127099935 + 20 +1.23971397300005 + 30 +0.0 + 11 +-1.992968941799973 + 21 +0.9250025435000282 + 31 +0.0 + 0 +LINE + 5 +310ED +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.1999964756000168 + 20 +-1.849999999999994 + 30 +0.0 + 11 +-0.2000035244000173 + 21 +-1.849999999999994 + 31 +0.0 + 0 +LINE + 5 +310EE +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.668209422699988 + 20 +0.7375025479000215 + 30 +0.0 + 11 +-1.573113225499981 + 21 +1.20221397520001 + 31 +0.0 + 0 +LINE + 5 +310EF +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.579923559499946 + 20 +0.6234961924999993 + 30 +0.0 + 11 +-1.329923559499946 + 21 +1.056508894400025 + 31 +0.0 + 0 +LINE + 5 +310F0 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.728361300000017 + 20 +1.517487138800021 + 30 +0.0 + 11 +1.403128640200009 + 21 +1.329713975200008 + 31 +0.0 + 0 +LINE + 5 +310F1 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.178361908999989 + 20 +0.7380646270000284 + 30 +0.0 + 11 +-1.853128640299985 + 21 +0.5502911117000338 + 31 +0.0 + 0 +LINE + 5 +310F2 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-0.4000035243999491 + 20 +-2.049999999999983 + 30 +0.0 + 11 +-0.4000035243999491 + 21 +-2.25 + 31 +0.0 + 0 +LINE + 5 +310F3 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.651152431600053 + 20 +1.226244928600011 + 30 +0.0 + 11 +1.602438502600023 + 21 +1.198119928600022 + 31 +0.0 + 0 +LINE + 5 +310F4 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.098863048799956 + 20 +-1.903286631099974 + 30 +0.0 + 11 +-1.02763598309997 + 21 +-1.779917734399987 + 31 +0.0 + 0 +LINE + 5 +310F5 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.027635983000039 + 20 +1.779917734400044 + 30 +0.0 + 11 +1.098863048800013 + 21 +1.903286631000043 + 31 +0.0 + 0 +LINE + 5 +310F6 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.472950066200042 + 20 +0.0 + 30 +0.0 + 11 +2.337600066200025 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +310F7 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +2.197726097500038 + 20 +0.0 + 30 +0.0 + 11 +2.055271966100008 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +310F8 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-2.055271966199939 + 20 +0.0 + 30 +0.0 + 11 +-2.197726097599968 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +310F9 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.992968941799973 + 20 +0.9250025435000282 + 30 +0.0 + 11 +-1.944255012799999 + 21 +0.8968775435000396 + 31 +0.0 + 0 +LINE + 5 +310FA +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.716923351699961 + 20 +0.7656275479000101 + 30 +0.0 + 11 +-1.668209422699988 + 21 +0.7375025479000215 + 31 +0.0 + 0 +LINE + 5 +310FB +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.85433225349999 + 20 +0.977628335500043 + 30 +0.0 + 11 +-1.691952488199945 + 21 +0.8838783343000216 + 31 +0.0 + 0 +LINE + 5 +310FC +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.680922534599972 + 20 +0.9217327562000435 + 30 +0.0 + 11 +-1.827064327500011 + 21 +1.006107759600042 + 31 +0.0 + 0 +LINE + 5 +310FD +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.098863048799956 + 20 +1.903286631000043 + 30 +0.0 + 11 +-1.02763598309997 + 21 +1.779917734400044 + 31 +0.0 + 0 +LINE + 5 +310FE +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.027635983000039 + 20 +-1.779917734399987 + 30 +0.0 + 11 +1.098863048800013 + 21 +-1.903286631099974 + 31 +0.0 + 0 +LINE + 5 +310FF +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.827438502600046 + 20 +0.8084084969000287 + 30 +0.0 + 11 +1.876152431600019 + 21 +0.8365334969000457 + 31 +0.0 + 0 +LINE + 5 +31100 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.573113225499981 + 20 +1.20221397520001 + 30 +0.0 + 11 +-1.638065127099935 + 21 +1.23971397300005 + 31 +0.0 + 0 +LINE + 5 +31101 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.3999964756000054 + 20 +-2.25 + 30 +0.0 + 11 +0.3999964756000054 + 21 +-2.049999999999983 + 31 +0.0 + 0 +LINE + 5 +31102 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.853128640199998 + 20 +0.5502911117000338 + 30 +0.0 + 11 +2.178361908900001 + 21 +0.7380646270000284 + 31 +0.0 + 0 +LINE + 5 +31103 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.403128640299997 + 20 +1.329713975200008 + 30 +0.0 + 11 +-1.728361300100005 + 21 +1.517487138800021 + 31 +0.0 + 0 +LINE + 5 +31104 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.602438502600023 + 20 +1.198119928600022 + 30 +0.0 + 11 +1.587235208000038 + 21 +1.11195280740003 + 31 +0.0 + 0 +LINE + 5 +31105 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.625533089200019 + 20 +1.045618931300027 + 30 +0.0 + 11 +1.64073637040002 + 21 +1.131786075800022 + 31 +0.0 + 0 +LINE + 5 +31106 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.329923559400015 + 20 +1.056508894400025 + 30 +0.0 + 11 +1.579923559400015 + 21 +0.6234961924999993 + 31 +0.0 + 0 +LINE + 5 +31107 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.587235208000038 + 20 +1.11195280740003 + 30 +0.0 + 11 +1.625533089200019 + 21 +1.045618931300027 + 31 +0.0 + 0 +LINE + 5 +31108 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.64073637040002 + 20 +1.131786075800022 + 30 +0.0 + 11 +1.827438502600046 + 21 +0.8084084969000287 + 31 +0.0 + 0 +LINE + 5 +31109 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.876152431600019 + 20 +0.8365334969000457 + 30 +0.0 + 11 +1.651152431600053 + 21 +1.226244928600011 + 31 +0.0 + 0 +LINE + 5 +3110A +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.384035638499995 + 20 +2.442948762900016 + 30 +0.0 + 11 +-0.3840356385999826 + 21 +2.442948762900016 + 31 +0.0 + 0 +ARC + 5 +3110B +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.2000035244000173 + 20 +-2.049999999999983 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3110C +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-2.254768772799935 + 20 +-0.1128363163999779 + 30 +0.0 + 40 +0.1127482312 +100 +AcDbArc + 50 +62.62704309480019 + 51 +74.51137039049891 + 0 +ARC + 5 +3110D +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.012260508499992 + 20 +-1.953286631099957 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +149.9999999999989 + 51 +242.605251265101 + 0 +ARC + 5 +3110E +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.0000054089999821 + 20 +0.0000046250000025 + 30 +0.0 + 40 +2.4729554751 +100 +AcDbArc + 50 +278.9339860556019 + 51 +359.9998928422995 + 0 +ARC + 5 +3110F +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000430999876 + 20 +0.0000015132000044 + 30 +0.0 + 40 +2.472948578 +100 +AcDbArc + 50 +1.563913702600241 + 51 +81.06611467180024 + 0 +CIRCLE + 5 +31110 +330 +310E2 +100 +AcDbEntity + 8 +02___PRT_ALL_AXES + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.3376000662 + 0 +ARC + 5 +31111 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.3 +100 +AcDbArc + 50 +2.605251265100584 + 51 +57.39474873489963 + 0 +ARC + 5 +31112 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.3 +100 +AcDbArc + 50 +122.6052512651004 + 51 +177.3947487348994 + 0 +ARC + 5 +31113 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.3 +100 +AcDbArc + 50 +281.9687455547017 + 51 +297.3947487348991 + 0 +ARC + 5 +31114 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.3 +100 +AcDbArc + 50 +242.605251265101 + 51 +258.0312544452982 + 0 +ARC + 5 +31115 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.15 +100 +AcDbArc + 50 +302.5554468201 + 51 +357.4445531794995 + 0 +ARC + 5 +31116 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.15 +100 +AcDbArc + 50 +62.55544682039895 + 51 +117.4445531794985 + 0 +ARC + 5 +31117 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.15 +100 +AcDbArc + 50 +182.5554468204008 + 51 +237.4445531794983 + 0 +ARC + 5 +31118 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +1.95 +100 +AcDbArc + 50 +302.8058228381995 + 51 +357.1941771618 + 0 +ARC + 5 +31119 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +1.95 +100 +AcDbArc + 50 +62.80582283819953 + 51 +117.1941771618005 + 0 +ARC + 5 +3111A +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +1.95 +100 +AcDbArc + 50 +182.8058228381006 + 51 +237.1941771618005 + 0 +CIRCLE + 5 +3111B +330 +310E2 +100 +AcDbEntity + 8 +02___PRT_ALL_AXES + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5208709159 + 0 +CIRCLE + 5 +3111C +330 +310E2 +100 +AcDbEntity + 8 +02___PRT_ALL_AXES + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.489019756 + 0 +CIRCLE + 5 +3111D +330 +310E2 +100 +AcDbEntity + 8 +02___PRT_ALL_AXES + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.4630389939 + 0 +CIRCLE + 5 +3111E +330 +310E2 +100 +AcDbEntity + 8 +02___PRT_ALL_AXES + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.4306571909 + 0 +ARC + 5 +3111F +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.753128640299963 + 20 +0.7234961924999936 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +240.000000001399 + 51 +330.0000000013995 + 0 +ARC + 5 +31120 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.503128640299963 + 20 +1.156508894400019 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +330.0000000013995 + 51 +60.00000000139912 + 0 +ARC + 5 +31121 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.029664839599945 + 20 +2.009105796500023 + 30 +0.0 + 40 +0.1127489585 +100 +AcDbArc + 50 +225.4887002254011 + 51 +237.371817924401 + 0 +ARC + 5 +31122 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.031333659300003 + 20 +2.006639829300013 + 30 +0.0 + 40 +0.1097723757 +100 +AcDbArc + 50 +237.4114057774008 + 51 +239.4156508508021 + 0 +ARC + 5 +31123 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-2.197726097599968 + 20 +0.0999999999999943 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +177.3947487348994 + 51 +270.0 + 0 +ARC + 5 +31124 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.185465589199964 + 20 +1.853286631000032 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +30.00000000000107 + 51 +122.6052512651004 + 0 +ARC + 5 +31125 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.1999964756000168 + 20 +-2.049999999999983 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31126 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +2.254769063700053 + 20 +-0.1128369640999836 + 30 +0.0 + 40 +0.1127489288 +100 +AcDbArc + 50 +105.4887004233001 + 51 +117.3718172926996 + 0 +ARC + 5 +31127 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.012260508400004 + 20 +-1.953286631099957 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +297.3947487348991 + 51 +30.00000000000107 + 0 +ARC + 5 +31128 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0000025251000579 + 20 +0.0 + 30 +0.0 + 40 +2.4729504583 +100 +AcDbArc + 50 +98.93393669370055 + 51 +261.0660633062994 + 0 +ARC + 5 +31129 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.236475033100021 + 20 +0.0 + 30 +0.0 + 40 +1.2364750331 +100 +AcDbArc + 50 +0.0 + 51 +38.08816835780163 + 0 +ARC + 5 +3112A +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.503128640200032 + 20 +1.156508894400019 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +120.0000000010004 + 51 +210.0000000009996 + 0 +ARC + 5 +3112B +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.753128640200032 + 20 +0.7234961924999936 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +210.0000000009996 + 51 +300.0000000010003 + 0 +ARC + 5 +3112C +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.029665803700027 + 20 +2.009104376700037 + 30 +0.0 + 40 +0.1127472723 +100 +AcDbArc + 50 +302.6239390037981 + 51 +314.5114642640006 + 0 +ARC + 5 +3112D +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.031327110500001 + 20 +2.006650975200017 + 30 +0.0 + 40 +0.1097853292 +100 +AcDbArc + 50 +300.6641613892 + 51 +302.5840075730991 + 0 +ARC + 5 +3112E +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +1.185465589100033 + 20 +1.853286631000032 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +57.39474873489963 + 51 +149.9999999999989 + 0 +ARC + 5 +3112F +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +2.197726097500038 + 20 +0.0999999999999943 + 30 +0.0 + 40 +0.1 +100 +AcDbArc + 50 +270.0 + 51 +2.605251265100584 + 0 +SPLINE + 5 +31130 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500038843 + 40 +0.5000007329999999 + 40 +0.7499792416 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.115952178300006 + 20 +-1.924520486199981 + 30 +0.0 + 10 +1.118752266700028 + 20 +-1.935345997799971 + 30 +0.0 + 10 +1.12067965570003 + 20 +-1.958134210999987 + 30 +0.0 + 10 +1.112082425100027 + 20 +-1.991194602500002 + 30 +0.0 + 10 +1.093135484200047 + 20 +-2.019611535399974 + 30 +0.0 + 10 +1.074905521300025 + 20 +-2.033396933099965 + 30 +0.0 + 10 +1.064994038600048 + 20 +-2.038574923599953 + 30 +0.0 + 0 +SPLINE + 5 +31131 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500427215 + 40 +0.5000339145 + 40 +0.7500057938 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.064994012499994 + 20 +-2.038574942299988 + 30 +0.0 + 10 +-1.074906377799948 + 20 +-2.033396492899954 + 30 +0.0 + 10 +-1.09313760729998 + 20 +-2.019609917399976 + 30 +0.0 + 10 +-1.11208352259996 + 20 +-1.991191646999965 + 30 +0.0 + 10 +-1.120679738799936 + 20 +-1.958132144399968 + 30 +0.0 + 10 +-1.11875215799995 + 20 +-1.935345520799984 + 30 +0.0 + 10 +-1.115952170199989 + 20 +-1.924520417399975 + 30 +0.0 + 0 +SPLINE + 5 +31132 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2499431707 + 40 +0.4997369097 + 40 +0.6251656898 + 40 +0.7505687709000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.027635983000039 + 20 +1.779917734400044 + 30 +0.0 + 10 +1.021058993900056 + 20 +1.768526054900036 + 30 +0.0 + 10 +1.003886794500033 + 20 +1.747825243199998 + 30 +0.0 + 10 +0.9747796715000163 + 20 +1.730913468800026 + 30 +0.0 + 10 +0.9490612527000621 + 20 +1.724507518000024 + 30 +0.0 + 10 +0.9226443434999965 + 20 +1.723193000500032 + 30 +0.0 + 10 +0.9028407044000346 + 20 +1.728453349500029 + 30 +0.0 + 10 +0.8911646939000093 + 20 +1.73445250390003 + 30 +0.0 + 0 +SPLINE + 5 +31133 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2566008318 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.108707345500022 + 20 +1.928703031700024 + 30 +0.0 + 10 +1.108197541300001 + 20 +1.926422950000017 + 30 +0.0 + 10 +1.105882527600045 + 20 +1.917614362900025 + 30 +0.0 + 10 +1.102247400500005 + 20 +1.909148537200025 + 30 +0.0 + 10 +1.098863048700025 + 20 +1.903286631000043 + 30 +0.0 + 0 +SPLINE + 5 +31134 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.249433254 + 40 +0.3748374046 + 40 +0.5002680195 + 40 +0.7500570320000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-0.89116469399994 + 20 +1.73445250390003 + 30 +0.0 + 10 +-0.9028408002000106 + 20 +1.728453300300032 + 30 +0.0 + 10 +-0.9226446202999341 + 20 +1.723192818900031 + 30 +0.0 + 10 +-0.9490617731999578 + 20 +1.724507675200016 + 30 +0.0 + 10 +-0.9747801052999421 + 20 +1.730913577000024 + 30 +0.0 + 10 +-1.003886950499975 + 20 +1.747825490300045 + 30 +0.0 + 10 +-1.021058998699971 + 20 +1.768526063199999 + 30 +0.0 + 10 +-1.02763598309997 + 20 +1.779917734400044 + 30 +0.0 + 0 +SPLINE + 5 +31135 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2455306358 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.098863048799956 + 20 +1.903286631000043 + 30 +0.0 + 10 +-1.099980867099987 + 20 +1.905222693000042 + 30 +0.0 + 10 +-1.104226706600002 + 20 +1.913282179600031 + 30 +0.0 + 10 +-1.107208661499953 + 20 +1.921998962700002 + 30 +0.0 + 10 +-1.108707345399978 + 20 +1.928703031000026 + 30 +0.0 + 0 +SPLINE + 5 +31136 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2494311264 + 40 +0.3748329857 + 40 +0.5002611914 + 40 +0.7500558740000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.947662277000063 + 20 +-0.0954549880999593 + 30 +0.0 + 10 +1.948304861900056 + 20 +-0.082343694699972 + 30 +0.0 + 10 +1.953651015300011 + 20 +-0.062563113599964 + 30 +0.0 + 10 +1.967997854900034 + 20 +-0.0403427664999754 + 30 +0.0 + 10 +1.98640467640007 + 20 +-0.0212729069999682 + 30 +0.0 + 10 +2.015604312600033 + 20 +-0.0045212046999552 + 30 +0.0 + 10 +2.04211793760004 + 20 +0.0 + 30 +0.0 + 10 +2.055271966100008 + 20 +0.0 + 30 +0.0 + 0 +SPLINE + 5 +31137 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2455306358 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +2.197726097500038 + 20 +0.0 + 30 +0.0 + 10 +2.199961685500057 + 20 +0.0000000280000449 + 30 +0.0 + 10 +2.209064325300005 + 20 +-0.0003527103999659 + 30 +0.0 + 10 +2.21810425839999 + 20 +-0.0021286532999625 + 30 +0.0 + 10 +2.224659493900049 + 20 +-0.0041827889999695 + 30 +0.0 + 0 +SPLINE + 5 +31138 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2498612086 + 40 +0.4997843542 + 40 +0.7498252773 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.156948392700031 + 20 +-1.81217284409999 + 30 +0.0 + 10 +1.148010207200059 + 20 +-1.817879264099986 + 30 +0.0 + 10 +1.131989003400008 + 20 +-1.832519781099961 + 30 +0.0 + 10 +1.116647679200014 + 20 +-1.861022143099973 + 30 +0.0 + 10 +1.110841249100019 + 20 +-1.892811051099955 + 30 +0.0 + 10 +1.113293329399994 + 20 +-1.914241026399992 + 30 +0.0 + 10 +1.115952178300006 + 20 +-1.924520486199981 + 30 +0.0 + 0 +SPLINE + 5 +31139 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500828976 + 40 +0.500097793 + 40 +0.7500741103 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +2.202931274600019 + 20 +-0.0127112202999911 + 30 +0.0 + 10 +2.195222840900044 + 20 +-0.0167091372999835 + 30 +0.0 + 10 +2.180692384700023 + 20 +-0.0265770476999876 + 30 +0.0 + 10 +2.163240395800017 + 20 +-0.0462824637999688 + 30 +0.0 + 10 +2.151495211100041 + 20 +-0.0698656326999867 + 30 +0.0 + 10 +2.14824883670002 + 20 +-0.0871908517999884 + 30 +0.0 + 10 +2.147861915400028 + 20 +-0.0958602768999697 + 30 +0.0 + 0 +SPLINE + 5 +3113A +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2499353601 + 40 +0.499930646 + 40 +0.7499596282 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +0.9909135226999979 + 20 +1.908033121000017 + 30 +0.0 + 10 +0.9983447541000032 + 20 +1.904173802400038 + 30 +0.0 + 10 +1.014343888600024 + 20 +1.898454404700033 + 30 +0.0 + 10 +1.039673538700015 + 20 +1.896524561900037 + 30 +0.0 + 10 +1.064651870000034 + 20 +1.901031942299994 + 30 +0.0 + 10 +1.08011226900004 + 20 +1.90794460470002 + 30 +0.0 + 10 +1.087318175000007 + 20 +1.91221676950002 + 30 +0.0 + 0 +SPLINE + 5 +3113B +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500467896 + 40 +0.5000705373 + 40 +0.7500634062 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.087186533199997 + 20 +1.912138871900027 + 30 +0.0 + 10 +-1.079985378799961 + 20 +1.907883097200028 + 30 +0.0 + 10 +-1.064540034699974 + 20 +1.901000437100038 + 30 +0.0 + 10 +-1.039595856699975 + 20 +1.89652375190002 + 30 +0.0 + 10 +-1.014306640499967 + 20 +1.898465826000034 + 30 +0.0 + 10 +-0.9983335669999747 + 20 +1.904179612299998 + 30 +0.0 + 10 +-0.9909135226999979 + 20 +1.908033121000017 + 30 +0.0 + 0 +SPLINE + 5 +3113C +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2499245795 + 40 +0.499902705 + 40 +0.7499185138 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-2.147861915499959 + 20 +-0.0958602768999697 + 30 +0.0 + 10 +-2.148248826599968 + 20 +-0.0871910789999788 + 30 +0.0 + 10 +-2.151495081399958 + 20 +-0.069866212699992 + 30 +0.0 + 10 +-2.163239798099994 + 20 +-0.0462833789999593 + 30 +0.0 + 10 +-2.180691221399968 + 20 +-0.0265781459000038 + 30 +0.0 + 10 +-2.195221169499973 + 20 +-0.0167101979999984 + 30 +0.0 + 10 +-2.202929312899983 + 20 +-0.0127122230999817 + 30 +0.0 + 0 +SPLINE + 5 +3113D +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2501550509 + 40 +0.5001847534 + 40 +0.7501302377 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.115952170199989 + 20 +-1.924520417399975 + 30 +0.0 + 10 +-1.11329353299999 + 20 +-1.914241776499978 + 30 +0.0 + 10 +-1.110841357399977 + 20 +-1.892813236099954 + 30 +0.0 + 10 +-1.116646754899989 + 20 +-1.861024576799991 + 30 +0.0 + 10 +-1.131987974999959 + 20 +-1.83252115039997 + 30 +0.0 + 10 +-1.148009910499979 + 20 +-1.817879453599971 + 30 +0.0 + 10 +-1.156948392799961 + 20 +-1.81217284409999 + 30 +0.0 + 0 +SPLINE + 5 +3113E +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2499431707 + 40 +0.4997369097 + 40 +0.6251656898 + 40 +0.7505687709000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.027635983000039 + 20 +-1.779917734399987 + 30 +0.0 + 10 +1.021058993900056 + 20 +-1.768526054999995 + 30 +0.0 + 10 +1.011717664700029 + 20 +-1.743304088199977 + 30 +0.0 + 10 +1.011625199900038 + 20 +-1.709640693099971 + 30 +0.0 + 10 +1.018936693200033 + 20 +-1.684164913699988 + 30 +0.0 + 10 +1.03100674220002 + 20 +-1.660629940399957 + 30 +0.0 + 10 +1.045464157700053 + 20 +-1.646109660399958 + 30 +0.0 + 10 +1.056497583000009 + 20 +-1.638997515900002 + 30 +0.0 + 0 +SPLINE + 5 +3113F +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2566008318 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.115952149000009 + 20 +-1.924520242499995 + 30 +0.0 + 10 +1.114232442400009 + 20 +-1.922938698199999 + 30 +0.0 + 10 +1.107761489100028 + 20 +-1.916529543999957 + 30 +0.0 + 10 +1.102247432500008 + 20 +-1.909148518799952 + 30 +0.0 + 10 +1.098863048700025 + 20 +-1.903286631099974 + 30 +0.0 + 0 +SPLINE + 5 +31140 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2494132713 + 40 +0.3748006214 + 40 +0.5002263937 + 40 +0.7500382504 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.05649758309994 + 20 +-1.638997515900002 + 30 +0.0 + 10 +-1.045464950999985 + 20 +-1.646109149099999 + 30 +0.0 + 10 +-1.031008174699991 + 20 +-1.660627450399971 + 30 +0.0 + 10 +-1.018938793100006 + 20 +-1.684160578299981 + 30 +0.0 + 10 +-1.011625704399989 + 20 +-1.709635803999959 + 30 +0.0 + 10 +-1.011716698399994 + 20 +-1.743301216600003 + 30 +0.0 + 10 +-1.021058504400003 + 20 +-1.768525206999954 + 30 +0.0 + 10 +-1.02763598309997 + 20 +-1.779917734399987 + 30 +0.0 + 0 +SPLINE + 5 +31141 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2455306358 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.098863048799956 + 20 +-1.903286631099974 + 30 +0.0 + 10 +-1.099980818599988 + 20 +-1.90522272109996 + 30 +0.0 + 10 +-1.104837618899978 + 20 +-1.91292946919998 + 30 +0.0 + 10 +-1.110895596999967 + 20 +-1.91987030949997 + 30 +0.0 + 10 +-1.115952148599945 + 20 +-1.924520241999971 + 30 +0.0 + 0 +SPLINE + 5 +31142 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500038868 + 40 +0.5000007342 + 40 +0.7499792423999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-2.224659680299965 + 20 +-0.0041827098999647 + 30 +0.0 + 10 +-2.235434896299978 + 20 +-0.0011949006999998 + 30 +0.0 + 10 +-2.256133771299972 + 20 +0.0085300346000281 + 30 +0.0 + 10 +-2.28046631090001 + 20 +0.0325056514000437 + 30 +0.0 + 10 +-2.295602635699993 + 20 +0.0631226583000171 + 30 +0.0 + 10 +-2.298426160999952 + 20 +0.0858029757000054 + 30 +0.0 + 10 +-2.297954690799997 + 20 +0.0969755705000352 + 30 +0.0 + 0 +SPLINE + 5 +31143 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 12 + 73 + 8 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2499431769 + 40 +0.4997369127 + 40 +0.6251656877 + 40 +0.7505687718 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-2.055271966199939 + 20 +0.0 + 30 +0.0 + 10 +-2.042117987499978 + 20 +0.0 + 30 +0.0 + 10 +-2.015604458799999 + 20 +-0.0045211550999795 + 30 +0.0 + 10 +-1.986404871399941 + 20 +-0.0212727761999929 + 30 +0.0 + 10 +-1.967997945799993 + 20 +-0.0403426043000081 + 30 +0.0 + 10 +-1.953651086299942 + 20 +-0.0625630602000058 + 30 +0.0 + 10 +-1.948304862199961 + 20 +-0.0823436891999734 + 30 +0.0 + 10 +-1.947662277099994 + 20 +-0.0954549879999718 + 30 +0.0 + 0 +SPLINE + 5 +31144 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2566008317 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-2.224659494599962 + 20 +-0.0041827892999891 + 30 +0.0 + 10 +-2.222429983899985 + 20 +-0.0034842517999891 + 30 +0.0 + 10 +-2.213644016800004 + 20 +-0.001084818899983 + 30 +0.0 + 10 +-2.204494833199988 + 20 +-0.0000000184999749 + 30 +0.0 + 10 +-2.197726097599968 + 20 +0.0 + 30 +0.0 + 0 +SPLINE + 5 +31145 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500422858 + 40 +0.5000350428 + 40 +0.7500072729999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-1.232960681399959 + 20 +1.941599340700009 + 30 +0.0 + 10 +-1.223519846999977 + 20 +1.947594465400016 + 30 +0.0 + 10 +-1.202464674799955 + 20 +1.956489969300009 + 30 +0.0 + 10 +-1.16838069819994 + 20 +1.95868828920004 + 30 +0.0 + 10 +-1.135452176299964 + 20 +1.949603200000013 + 30 +0.0 + 10 +-1.116682260599987 + 20 +1.936540503600014 + 30 +0.0 + 10 +-1.108707487599986 + 20 +1.928703138300023 + 30 +0.0 + 0 +LINE + 5 +31146 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.947662276999949 + 20 +-0.0954549880999593 + 30 +0.0 + 11 +-2.147861915299984 + 21 +-0.0958602774999804 + 31 +0.0 + 0 +LINE + 5 +31147 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-1.056497583199985 + 20 +-1.638997515799986 + 30 +0.0 + 11 +-1.156948393199968 + 21 +-1.812172843699983 + 31 +0.0 + 0 +SPLINE + 5 +31148 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500038573 + 40 +0.5000006976 + 40 +0.7499791344 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +1.108707500400044 + 20 +1.928703147900023 + 30 +0.0 + 10 +1.116682626600038 + 20 +1.93654085350002 + 30 +0.0 + 10 +1.135454104400026 + 20 +1.949604136700032 + 30 +0.0 + 10 +1.168383862500036 + 20 +1.958688932499996 + 30 +0.0 + 10 +1.202467134100004 + 20 +1.95648887300004 + 30 +0.0 + 10 +1.223520631600024 + 20 +1.947593959600027 + 30 +0.0 + 10 +1.232960652000031 + 20 +1.941599354099992 + 30 +0.0 + 0 +LINE + 5 +31149 +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.947662277000063 + 20 +-0.0954549880999593 + 30 +0.0 + 11 +2.147861915300041 + 21 +-0.0958602774999804 + 31 +0.0 + 0 +LINE + 5 +3114A +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +1.056497583099997 + 20 +-1.638997515799986 + 30 +0.0 + 11 +1.156948393200025 + 21 +-1.812172843699983 + 31 +0.0 + 0 +SPLINE + 5 +3114B +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2500207307 + 40 +0.4999992822 + 40 +0.7499960844 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +2.297954693600047 + 20 +0.0969756021000308 + 30 +0.0 + 10 +2.298426166000013 + 20 +0.0858030027000041 + 30 +0.0 + 10 +2.29560275419999 + 20 +0.0631226565000134 + 30 +0.0 + 10 +2.280466323100029 + 20 +0.0325056518000224 + 30 +0.0 + 10 +2.256133719400054 + 20 +0.0085301098000059 + 30 +0.0 + 10 +2.23543487500001 + 20 +-0.0011949159999745 + 30 +0.0 + 10 +2.224659650700005 + 20 +-0.0041827225999782 + 30 +0.0 + 0 +LINE + 5 +3114C +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +0.8911646938000217 + 20 +1.73445250390003 + 30 +0.0 + 11 +0.9909135221000156 + 21 +1.908033121200049 + 31 +0.0 + 0 +LINE + 5 +3114D +330 +310E2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +370 + -1 +100 +AcDbLine + 10 +-0.8911646938999525 + 20 +1.73445250390003 + 30 +0.0 + 11 +-0.9909135220999588 + 21 +1.908033121200049 + 31 +0.0 + 0 +ARC + 5 +3114E +330 +310E2 +100 +AcDbEntity + 8 +文字序号-AM_7 + 62 + 6 + 48 +0.1 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000430999876 + 20 +0.0000015132000044 + 30 +0.0 + 40 +2.472948578000004 +100 +AcDbArc + 50 +81.0661146718002 + 51 +98.93388335748014 + 0 +ARC + 5 +3114F +330 +310E2 +100 +AcDbEntity + 8 +文字序号-AM_7 + 62 + 6 + 48 +0.1 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000430999876 + 20 +-0.000001513200008 + 30 +0.0 + 40 +2.472948578000004 +100 +AcDbArc + 50 +261.0661166425166 + 51 +278.9338853281998 + 0 +ARC + 5 +31150 +330 +310E2 +100 +AcDbEntity + 8 +文字序号-AM_7 + 62 + 6 + 48 +0.1 +370 + -1 +100 +AcDbCircle + 10 +-0.0000035243770071 + 20 +0.000002034800012 + 30 +0.0 + 40 +2.300001259688162 +100 +AcDbArc + 50 +258.0313508451948 + 51 +281.9688209306279 + 0 +ENDBLK + 5 +31151 +330 +310E2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31155 +330 +31152 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4DDA4BE6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4DDA4BE6 + 1 + + 0 +CIRCLE + 5 +31156 +330 +31152 +100 +AcDbEntity + 8 +Center +370 + 0 +100 +AcDbCircle + 10 +-0.0000000000002274 + 20 +0.0 + 30 +0.0 + 40 +0.0000000000000071 + 0 +CIRCLE + 5 +31157 +330 +31152 +100 +AcDbEntity + 8 +Center +370 + 0 +100 +AcDbCircle + 10 +-0.0000000000003411 + 20 +-0.0000000000001137 + 30 +0.0 + 40 +0.0000000000000071 + 0 +CIRCLE + 5 +31158 +330 +31152 +100 +AcDbEntity + 8 +Center +370 + 0 +100 +AcDbCircle + 10 +-0.0000000000003411 + 20 +-0.0000000000001137 + 30 +0.0 + 40 +0.0000000000000071 + 0 +CIRCLE + 5 +31159 +330 +31152 +100 +AcDbEntity + 8 +Center +370 + 0 +100 +AcDbCircle + 10 +-0.0000000000004547 + 20 +-0.0000000000001137 + 30 +0.0 + 40 +0.0000000000000071 + 0 +CIRCLE + 5 +3115A +330 +31152 +100 +AcDbEntity + 8 +Center +370 + 0 +100 +AcDbCircle + 10 +-0.0000000000005684 + 20 +-0.0000000000003411 + 30 +0.0 + 40 +0.0000000000000071 + 0 +CIRCLE + 5 +3115B +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +0.0015944619501624 + 20 +0.0000004237172817 + 30 +0.0 + 40 +3.0 + 0 +LINE + 5 +3115C +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +3.001594464649997 + 20 +0.0000000000004263 + 30 +0.0 + 11 +3.001594464649997 + 21 +2.800000000000423 + 31 +0.0 + 0 +LINE + 5 +3115D +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +2.801594464650009 + 20 +3.000000000000426 + 30 +0.0 + 11 +-2.798405535349957 + 21 +3.000000000000426 + 31 +0.0 + 0 +LINE + 5 +3115E +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +-2.998405535350003 + 20 +2.800000000000423 + 30 +0.0 + 11 +-2.998405535350003 + 21 +-2.799999999999571 + 31 +0.0 + 0 +LINE + 5 +3115F +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +-2.798405535349957 + 20 +-2.999999999999574 + 30 +0.0 + 11 +2.801594464650009 + 21 +-2.999999999999574 + 31 +0.0 + 0 +LINE + 5 +31160 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +3.001594464649997 + 20 +-2.799999999999571 + 30 +0.0 + 11 +3.001594464649997 + 21 +0.0000000000004263 + 31 +0.0 + 0 +ARC + 5 +31161 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +2.801594464650009 + 20 +2.800000000000423 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31162 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +-2.798405535349957 + 20 +2.800000000000423 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31163 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +-2.798405535349957 + 20 +-2.799999999999571 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31164 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +2.801594464650009 + 20 +-2.799999999999571 + 30 +0.0 + 40 +0.2 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +CIRCLE + 5 +31165 +330 +31152 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-0.0000000027004035 + 20 +0.0108330177681921 + 30 +0.0 + 40 +2.7 + 0 +ENDBLK + 5 +31166 +330 +31152 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3119D +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C050476C0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C050476C0 + 1 + + 0 +LWPOLYLINE + 5 +31195 +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +3.749999999999147 + 20 +-6.550000000001774 + 10 +3.749999999999233 + 20 +-10.1500000000018 + 42 +-0.414213562373095 + 10 +3.549999999999244 + 20 +-10.35000000000178 + 10 +-3.550000000000779 + 20 +-10.35000000000178 + 42 +-0.414213562373095 + 10 +-3.750000000000767 + 20 +-10.1500000000018 + 10 +-3.750000000000853 + 20 +-6.550000000001774 + 42 +-0.414213562373095 + 10 +-3.550000000000864 + 20 +-6.350000000001785 + 10 +3.549999999999159 + 20 +-6.350000000001785 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +31196 +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-2.800000000000864 + 20 +2.999999999998181 + 10 +2.799999999999159 + 20 +2.999999999998238 + 42 +-0.414213562373095 + 10 +2.999999999999147 + 20 +2.799999999998249 + 10 +2.999999999999147 + 20 +-2.800000000001774 + 42 +-0.414213562373095 + 10 +2.799999999999159 + 20 +-3.000000000001762 + 10 +-2.800000000000807 + 20 +-3.000000000001762 + 42 +-0.414213562373095 + 10 +-3.000000000000796 + 20 +-2.800000000001774 + 10 +-3.000000000000853 + 20 +2.799999999998192 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +31197 +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbPolyline + 90 + 19 + 70 + 0 + 43 +0.0 + 10 +2.749999999999147 + 20 +-3.000000000001819 + 10 +2.749999999999147 + 20 +-3.000000000001819 + 42 +0.414213562373095 + 10 +2.249999999999147 + 20 +-3.500000000001819 + 10 +2.249999999999147 + 20 +-5.850000000001842 + 42 +0.414213562373095 + 10 +2.749999999999147 + 20 +-6.350000000001842 + 10 +3.549999999999159 + 20 +-6.350000000001842 + 42 +-0.414213562373095 + 10 +3.749999999999147 + 20 +-6.55000000000183 + 10 +3.749999999999233 + 20 +-10.15000000000185 + 42 +-0.414213562373095 + 10 +3.549999999999244 + 20 +-10.35000000000184 + 10 +-0.0000000000007674 + 20 +-10.35000000000184 + 10 +-3.550000000000779 + 20 +-10.35000000000184 + 42 +-0.414213562373095 + 10 +-3.750000000000767 + 20 +-10.15000000000185 + 10 +-3.750000000000853 + 20 +-6.55000000000183 + 42 +-0.414213562373095 + 10 +-3.550000000000864 + 20 +-6.350000000001842 + 10 +-2.750000000000853 + 20 +-6.350000000001842 + 42 +0.414213562373095 + 10 +-2.250000000000853 + 20 +-5.850000000001842 + 10 +-2.250000000000853 + 20 +-3.500000000001876 + 42 +0.414213562373095 + 10 +-2.750000000000853 + 20 +-3.000000000001876 + 10 +-2.750000000000853 + 20 +-3.000000000001876 + 0 +LWPOLYLINE + 5 +31199 +102 +{ACAD_REACTORS +330 +3119A +102 +} +330 +31191 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-2.250000000000853 + 20 +-4.001594464649997 + 10 +2.249999999999147 + 20 +-4.001594464649997 + 10 +2.249999999999147 + 20 +-5.850000000001785 + 10 +-2.250000000000853 + 20 +-5.850000000001785 + 0 +HATCH + 5 +3119A +330 +31191 +100 +AcDbEntity + 8 +EMI + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +-2.250000000000853 + 20 +-4.001594464649997 + 11 +2.249999999999147 + 21 +-4.001594464649997 + 72 + 1 + 10 +2.249999999999147 + 20 +-4.001594464649997 + 11 +2.249999999999147 + 21 +-5.850000000001785 + 72 + 1 + 10 +2.249999999999147 + 20 +-5.850000000001785 + 11 +-2.250000000000853 + 21 +-5.850000000001785 + 72 + 1 + 10 +-2.250000000000853 + 20 +-5.850000000001785 + 11 +-2.250000000000853 + 21 +-4.001594464649997 + 97 + 1 +330 +31199 + 75 + 0 + 76 + 1 + 52 +-90.00000000000001 + 41 +2.0 + 77 + 0 + 78 + 1 + 53 +315.0 + 43 +-121.0292511939318 + 44 +-375.5946785749161 + 45 +0.1767766952966369 + 46 +0.1767766952966368 + 79 + 0 + 98 + 1 + 10 +-121.0292511939318 + 20 +-375.5946785749161 + 0 +LWPOLYLINE + 5 +319CB +330 +31191 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +4.349999999999966 + 20 +-8.350000000001785 + 10 +-4.349999999999966 + 20 +-8.350000000001785 + 0 +LWPOLYLINE + 5 +319CC +330 +31191 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +0.0000001449999445 + 20 +3.821641039399992 + 10 +0.0000001450001434 + 20 +-10.35000000000178 + 0 +LWPOLYLINE + 5 +319CD +330 +31191 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +3.75 + 20 +-0.0000000000001137 + 10 +-3.749999999999886 + 20 +0.0000000000001137 + 0 +LWPOLYLINE + 5 +319CE +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 0 + 43 +0.0 + 10 +2.799999999999159 + 20 +-3.000000000001819 + 42 +0.414213562373095 + 10 +2.999999999999147 + 20 +-2.80000000000183 + 10 +2.999999999999147 + 20 +2.799999999998192 + 42 +0.414213562373095 + 10 +2.799999999999159 + 20 +2.999999999998181 + 10 +-2.800000000000864 + 20 +2.999999999998124 + 42 +0.414213562373095 + 10 +-3.000000000000853 + 20 +2.799999999998136 + 10 +-3.000000000000796 + 20 +-2.80000000000183 + 42 +0.414213562373095 + 10 +-2.800000000000807 + 20 +-3.000000000001819 + 0 +LWPOLYLINE + 5 +319FC +102 +{ACAD_REACTORS +330 +319FD +102 +} +330 +31191 +100 +AcDbEntity + 8 +BOM + 62 + 7 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-2.050000000000836 + 20 +-3.900000000001768 + 10 +-2.050000000000836 + 20 +-3.700000000001779 + 10 +2.049999999999159 + 20 +-3.700000000001779 + 10 +2.049999999999159 + 20 +-3.900000000001768 + 0 +HATCH + 5 +319FD +330 +31191 +100 +AcDbEntity + 8 +BOM + 62 + 7 + 48 +5.0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +-2.050000000000836 + 20 +-3.900000000001768 + 11 +-2.050000000000836 + 21 +-3.700000000001779 + 72 + 1 + 10 +-2.050000000000836 + 20 +-3.700000000001779 + 11 +2.049999999999159 + 21 +-3.700000000001779 + 72 + 1 + 10 +2.049999999999159 + 20 +-3.700000000001779 + 11 +2.049999999999159 + 21 +-3.900000000001768 + 72 + 1 + 10 +2.049999999999159 + 20 +-3.900000000001768 + 11 +-2.050000000000836 + 21 +-3.900000000001768 + 97 + 1 +330 +319FC + 75 + 0 + 76 + 1 + 98 + 1 + 10 +63.37499999999935 + 20 +-25.36000000610019 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +LWPOLYLINE + 5 +33611 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3757778436261106 + 20 +-5.089573720528364 + 10 +0.3986369216433161 + 20 +-5.058332980571464 + 10 +0.4667061761834361 + 20 +-5.027092240614706 + 0 +LWPOLYLINE + 5 +33612 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6259577530364311 + 20 +-4.80840706091692 + 10 +0.3986369216433161 + 20 +-4.80840706091692 + 10 +0.3757778436261106 + 20 +-5.089573720528364 + 0 +LWPOLYLINE + 5 +33613 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.146933073700211 + 20 +-5.152055200441993 + 10 +-0.169538161961583 + 20 +-5.246031410068213 + 0 +LWPOLYLINE + 5 +33614 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1014689074215767 + 20 +-5.089573720528364 + 10 +-0.146933073700211 + 20 +-5.152055200441993 + 0 +LWPOLYLINE + 5 +33615 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0105405748643363 + 20 +-5.058332980571464 + 10 +-0.0331456631257083 + 20 +-5.058332980571464 + 10 +-0.1014689074215767 + 20 +-5.089573720528364 + 0 +LWPOLYLINE + 5 +33616 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1258519239715952 + 20 +-5.246031410068213 + 10 +0.1032468357101095 + 20 +-5.152055200441993 + 10 +0.0577826694316173 + 20 +-5.089573720528364 + 10 +-0.0105405748643363 + 20 +-5.058332980571464 + 0 +LWPOLYLINE + 5 +33617 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1258519239715952 + 20 +-5.277272150025027 + 10 +0.1258519239715952 + 20 +-5.246031410068213 + 0 +LWPOLYLINE + 5 +33618 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1032468357101095 + 20 +-5.37099436989547 + 10 +0.1258519239715952 + 20 +-5.277272150025027 + 0 +LWPOLYLINE + 5 +33619 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.0577826694316173 + 20 +-5.433475849809128 + 10 +0.1032468357101095 + 20 +-5.37099436989547 + 0 +LWPOLYLINE + 5 +3361A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0105405748643363 + 20 +-5.464716589765885 + 10 +0.0577826694316173 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +3361B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0331456631257083 + 20 +-5.464716589765885 + 10 +-0.0105405748643363 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +3361C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1014689074215767 + 20 +-5.433475849809128 + 10 +-0.0331456631257083 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +3361D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.146933073700211 + 20 +-5.370994369895442 + 10 +-0.1014689074215767 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +3361E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.169538161961583 + 20 +-5.246031410068213 + 10 +-0.146933073700211 + 20 +-5.370994369895442 + 0 +LWPOLYLINE + 5 +3361F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.146933073700211 + 20 +-4.933370020744263 + 10 +-0.169538161961583 + 20 +-5.089573720528364 + 10 +-0.169538161961583 + 20 +-5.246031410068213 + 0 +LWPOLYLINE + 5 +33620 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1014689074215767 + 20 +-4.839647800873792 + 10 +-0.146933073700211 + 20 +-4.933370020744263 + 0 +LWPOLYLINE + 5 +33621 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.0803877576929892 + 20 +-4.839647800873792 + 10 +0.0123185031528692 + 20 +-4.80840706091692 + 10 +-0.0331456631257083 + 20 +-4.80840706091692 + 10 +-0.1014689074215767 + 20 +-4.839647800873792 + 0 +LWPOLYLINE + 5 +33622 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1032468357101095 + 20 +-4.902129280787364 + 10 +0.0803877576929892 + 20 +-4.839647800873792 + 0 +LWPOLYLINE + 5 +33623 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6696439910264758 + 20 +-5.402235109852313 + 10 +-0.6922490792879614 + 20 +-5.339753629938684 + 0 +LWPOLYLINE + 5 +33624 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6467849130093555 + 20 +-5.433475849809128 + 10 +-0.6696439910264758 + 20 +-5.402235109852313 + 0 +LWPOLYLINE + 5 +33625 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5787156584692354 + 20 +-5.464716589765885 + 10 +-0.6467849130093555 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +33626 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5103924141733955 + 20 +-5.464716589765885 + 10 +-0.5787156584692354 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33627 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.4423231596333892 + 20 +-5.433475849809128 + 10 +-0.5103924141733955 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33628 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933546696 + 20 +-5.370994369895442 + 10 +-0.4423231596333892 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +33629 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3739999153375493 + 20 +-5.277272150024999 + 10 +-0.3968589933546696 + 20 +-5.370994369895442 + 0 +LWPOLYLINE + 5 +3362A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933546696 + 20 +-5.120814460485121 + 10 +-0.3739999153375493 + 20 +-5.214536680355565 + 10 +-0.3739999153375493 + 20 +-5.277272150024999 + 0 +LWPOLYLINE + 5 +3362B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5332514921906295 + 20 +-5.058332980571464 + 10 +-0.4649282478947896 + 20 +-5.058332980571464 + 10 +-0.4194640816161552 + 20 +-5.089573720528364 + 10 +-0.3968589933546696 + 20 +-5.120814460485121 + 0 +LWPOLYLINE + 5 +3362C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933546696 + 20 +-4.80840706091692 + 10 +-0.5332514921906295 + 20 +-5.058332980571464 + 0 +LWPOLYLINE + 5 +3362D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6467849130093555 + 20 +-4.80840706091692 + 10 +-0.3968589933546696 + 20 +-4.80840706091692 + 0 +LWPOLYLINE + 5 +3362E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.055962409516923 + 20 +-5.464716589765885 + 10 +-1.214959996614283 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +3362F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9876391652210827 + 20 +-5.433475849809128 + 10 +-1.055962409516923 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33630 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9421749989424768 + 20 +-5.370994369895442 + 10 +-0.9876391652210827 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +33631 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9195699106810764 + 20 +-5.308512889981785 + 10 +-0.9421749989424768 + 20 +-5.370994369895442 + 0 +LWPOLYLINE + 5 +33632 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9195699106810764 + 20 +-4.964610760701021 + 10 +-0.8967108326638424 + 20 +-5.058332980571464 + 10 +-0.8967108326638424 + 20 +-5.214536680355565 + 10 +-0.9195699106810764 + 20 +-5.308512889981785 + 0 +LWPOLYLINE + 5 +33633 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.055962409516923 + 20 +-4.80840706091692 + 10 +-0.9876391652210827 + 20 +-4.839647800873792 + 10 +-0.9421749989424768 + 20 +-4.902129280787364 + 10 +-0.9195699106810764 + 20 +-4.964610760701021 + 0 +LWPOLYLINE + 5 +33634 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.214959996614283 + 20 +-4.80840706091692 + 10 +-1.055962409516923 + 20 +-4.80840706091692 + 0 +LWPOLYLINE + 5 +33635 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.214959996614283 + 20 +-4.80840706091692 + 10 +-1.214959996614283 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33636 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.471743639672354 + 20 +-4.003513524956247 + 10 +1.244422808279239 + 20 +-4.003513524956247 + 0 +LWPOLYLINE + 5 +33637 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8126402235101864 + 20 +-4.003513524956247 + 10 +0.7445709689700664 + 20 +-4.034754264913062 + 0 +LWPOLYLINE + 5 +33638 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8581043897887923 + 20 +-4.003513524956247 + 10 +0.8126402235101864 + 20 +-4.003513524956247 + 0 +LWPOLYLINE + 5 +33639 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9264276340846322 + 20 +-4.034754264913062 + 10 +0.8581043897887923 + 20 +-4.003513524956247 + 0 +LWPOLYLINE + 5 +3363A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223460326 + 20 +-4.097235744826662 + 10 +0.9264276340846322 + 20 +-4.034754264913062 + 0 +LWPOLYLINE + 5 +3363B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1990009736265392 + 20 +-4.003513524956247 + 10 +0.4491808830368598 + 20 +-4.003513524956247 + 0 +LWPOLYLINE + 5 +3363C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.141853278585188 + 20 +-4.034754264913033 + 10 +-0.0963891123065537 + 20 +-4.097235744826662 + 0 +LWPOLYLINE + 5 +3363D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.2099225331252796 + 20 +-4.003513524956219 + 10 +-0.141853278585188 + 20 +-4.034754264913033 + 0 +LWPOLYLINE + 5 +3363E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3691741099783599 + 20 +-4.003513524956219 + 10 +-0.2099225331252796 + 20 +-4.003513524956219 + 0 +LWPOLYLINE + 5 +3363F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.232739279516494 + 20 +-4.034754264913033 + 10 +-1.187275113237888 + 20 +-4.097235744826662 + 0 +LWPOLYLINE + 5 +33640 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.300808534056614 + 20 +-4.003513524956219 + 10 +-1.232739279516494 + 20 +-4.034754264913033 + 0 +LWPOLYLINE + 5 +33641 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.460060110909609 + 20 +-4.003513524956219 + 10 +-1.300808534056614 + 20 +-4.003513524956219 + 0 +LWPOLYLINE + 5 +3364D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.198958642000633 + 20 +-4.597087584135892 + 10 +1.176353553739233 + 20 +-4.534606104222235 + 0 +LWPOLYLINE + 5 +3364E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.289886974557874 + 20 +-4.659569064049464 + 10 +1.221817720017839 + 20 +-4.628328324092649 + 10 +1.198958642000633 + 20 +-4.597087584135892 + 0 +LWPOLYLINE + 5 +3364F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.42627947339372 + 20 +-4.628328324092649 + 10 +1.358210218853714 + 20 +-4.659569064049464 + 10 +1.289886974557874 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33650 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.471743639672354 + 20 +-4.565846844179021 + 10 +1.42627947339372 + 20 +-4.628328324092649 + 0 +LWPOLYLINE + 5 +33651 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.51720780595096 + 20 +-4.409643144394892 + 10 +1.49460271768956 + 20 +-4.472124624308549 + 10 +1.471743639672354 + 20 +-4.565846844179021 + 0 +LWPOLYLINE + 5 +33652 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.380815307115114 + 20 +-4.222198704654005 + 10 +1.449138551410954 + 20 +-4.253439444610791 + 10 +1.49460271768956 + 20 +-4.315920924524448 + 10 +1.51720780595096 + 20 +-4.409643144394892 + 0 +LWPOLYLINE + 5 +33653 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.244422808279239 + 20 +-4.253439444610791 + 10 +1.312746052574994 + 20 +-4.222198704654005 + 10 +1.380815307115114 + 20 +-4.222198704654005 + 0 +LWPOLYLINE + 5 +33654 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.244422808279239 + 20 +-4.003513524956247 + 10 +1.221817720017839 + 20 +-4.284680184567691 + 10 +1.244422808279239 + 20 +-4.253439444610791 + 0 +LWPOLYLINE + 5 +33655 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8126402235101864 + 20 +-4.253439444610791 + 10 +0.7445709689700664 + 20 +-4.284680184567691 + 10 +0.6991068026915457 + 20 +-4.347161664481263 + 10 +0.6762477246743117 + 20 +-4.440883884351791 + 0 +LWPOLYLINE + 5 +33656 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9035685560674267 + 20 +-4.284680184567691 + 10 +0.8354993015273067 + 20 +-4.253439444610791 + 10 +0.8126402235101864 + 20 +-4.253439444610791 + 0 +LWPOLYLINE + 5 +33657 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223460326 + 20 +-4.347161664481263 + 10 +0.9035685560674267 + 20 +-4.284680184567691 + 0 +LWPOLYLINE + 5 +33658 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223460326 + 20 +-4.565846844179021 + 10 +0.9718918003632666 + 20 +-4.472124624308549 + 10 +0.9718918003632666 + 20 +-4.440883884351791 + 10 +0.9490327223460326 + 20 +-4.347161664481263 + 0 +LWPOLYLINE + 5 +33659 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9035685560674267 + 20 +-4.628328324092649 + 10 +0.9490327223460326 + 20 +-4.565846844179021 + 0 +LWPOLYLINE + 5 +3365A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8126402235101864 + 20 +-4.659569064049464 + 10 +0.8354993015273067 + 20 +-4.659569064049464 + 10 +0.9035685560674267 + 20 +-4.628328324092649 + 0 +LWPOLYLINE + 5 +3365B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6762477246743117 + 20 +-4.440883884351791 + 10 +0.6991068026915457 + 20 +-4.565846844179021 + 10 +0.7445709689700664 + 20 +-4.628328324092649 + 10 +0.8126402235101864 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +3365C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6762477246743117 + 20 +-4.284680184567691 + 10 +0.6762477246743117 + 20 +-4.440883884351791 + 0 +LWPOLYLINE + 5 +3365D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6991068026915457 + 20 +-4.12847648478359 + 10 +0.6762477246743117 + 20 +-4.284680184567691 + 0 +LWPOLYLINE + 5 +3365E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.7445709689700664 + 20 +-4.034754264913062 + 10 +0.6991068026915457 + 20 +-4.12847648478359 + 0 +LWPOLYLINE + 5 +3365F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1990009736265392 + 20 +-4.628328324092649 + 10 +0.1763958853651673 + 20 +-4.597087584135892 + 10 +0.1535368073479333 + 20 +-4.534606104222235 + 0 +LWPOLYLINE + 5 +33660 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3353934724624992 + 20 +-4.659569064049464 + 10 +0.2673242179223791 + 20 +-4.659569064049464 + 10 +0.1990009736265392 + 20 +-4.628328324092649 + 0 +LWPOLYLINE + 5 +33661 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4717859712983454 + 20 +-4.472124624308549 + 10 +0.4491808830368598 + 20 +-4.565846844179021 + 10 +0.4037167167582538 + 20 +-4.628328324092649 + 10 +0.3353934724624992 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33662 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4717859712983454 + 20 +-4.409643144394892 + 10 +0.4717859712983454 + 20 +-4.472124624308549 + 0 +LWPOLYLINE + 5 +33663 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4263218050196542 + 20 +-4.284680184567691 + 10 +0.4491808830368598 + 20 +-4.315920924524448 + 10 +0.4717859712983454 + 20 +-4.409643144394892 + 0 +LWPOLYLINE + 5 +33664 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3808576387411051 + 20 +-4.253439444610791 + 10 +0.4263218050196542 + 20 +-4.284680184567691 + 0 +LWPOLYLINE + 5 +33665 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4491808830368598 + 20 +-4.003513524956247 + 10 +0.3127883842010135 + 20 +-4.253439444610791 + 10 +0.3808576387411051 + 20 +-4.253439444610791 + 0 +LWPOLYLINE + 5 +33666 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.141853278585188 + 20 +-4.628328324092649 + 10 +-0.2099225331252796 + 20 +-4.659569064049464 + 10 +-0.3691741099783599 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33667 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0963891123065537 + 20 +-4.565846844179021 + 10 +-0.141853278585188 + 20 +-4.628328324092649 + 0 +LWPOLYLINE + 5 +33668 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.050924946028033 + 20 +-4.409643144394863 + 10 +-0.0735300342894334 + 20 +-4.503365364265363 + 10 +-0.0963891123065537 + 20 +-4.565846844179021 + 0 +LWPOLYLINE + 5 +33669 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.050924946028033 + 20 +-4.253439444610763 + 10 +-0.050924946028033 + 20 +-4.409643144394863 + 0 +LWPOLYLINE + 5 +3366A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0735300342894334 + 20 +-4.159717224740348 + 10 +-0.050924946028033 + 20 +-4.253439444610763 + 0 +LWPOLYLINE + 5 +3366B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0963891123065537 + 20 +-4.097235744826662 + 10 +-0.0735300342894334 + 20 +-4.159717224740348 + 0 +LWPOLYLINE + 5 +3366C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3691741099783599 + 20 +-4.003513524956219 + 10 +-0.3691741099783599 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +3366D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5736358633543261 + 20 +-4.003513524956219 + 10 +-0.5736358633543261 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +3366E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5736358633543261 + 20 +-4.003513524956219 + 10 +-0.7554925284688068 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +3366F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9373491935832874 + 20 +-4.003513524956219 + 10 +-0.7554925284688068 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33670 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9373491935832874 + 20 +-4.003513524956219 + 10 +-0.9373491935832874 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33671 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.232739279516494 + 20 +-4.628328324092649 + 10 +-1.300808534056614 + 20 +-4.659569064049464 + 10 +-1.460060110909609 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33672 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.187275113237888 + 20 +-4.565846844179021 + 10 +-1.232739279516494 + 20 +-4.628328324092649 + 0 +LWPOLYLINE + 5 +33673 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.141810946959254 + 20 +-4.409643144394863 + 10 +-1.164416035220739 + 20 +-4.503365364265363 + 10 +-1.187275113237888 + 20 +-4.565846844179021 + 0 +LWPOLYLINE + 5 +33674 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.141810946959254 + 20 +-4.253439444610763 + 10 +-1.141810946959254 + 20 +-4.409643144394863 + 0 +LWPOLYLINE + 5 +33675 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.164416035220739 + 20 +-4.159717224740319 + 10 +-1.141810946959254 + 20 +-4.253439444610763 + 0 +LWPOLYLINE + 5 +33676 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.187275113237888 + 20 +-4.097235744826662 + 10 +-1.164416035220739 + 20 +-4.159717224740319 + 0 +LWPOLYLINE + 5 +33677 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.460060110909609 + 20 +-4.003513524956219 + 10 +-1.460060110909609 + 20 +-4.659569064049464 + 0 +LWPOLYLINE + 5 +33678 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699480158 + 20 +-6.234559539433633 + 10 +0.6853913558811371 + 20 +-6.234559539433633 + 0 +LWPOLYLINE + 5 +33679 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699480158 + 20 +-5.890911399908617 + 10 +0.5718579350624964 + 20 +-5.890911399908617 + 0 +LWPOLYLINE + 5 +3367A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699480158 + 20 +-5.578504000340388 + 10 +0.6853913558811371 + 20 +-5.578504000340388 + 0 +LWPOLYLINE + 5 +3367B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699480158 + 20 +-5.578504000340388 + 10 +0.3900012699480158 + 20 +-6.234559539433633 + 0 +LWPOLYLINE + 5 +3367C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.2236379799356314 + 20 +-5.953392879822275 + 10 +0.1855395165720495 + 20 +-5.953392879822275 + 0 +LWPOLYLINE + 5 +3367D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.4280997333115977 + 20 +-5.578504000340388 + 10 +-0.4280997333115977 + 20 +-6.234559539433633 + 0 +LWPOLYLINE + 5 +3367E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.4964229776073523 + 20 +-5.672226220210831 + 10 +-0.4280997333115977 + 20 +-5.578504000340388 + 0 +LWPOLYLINE + 5 +3367F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5418871438859583 + 20 +-5.703466960167646 + 10 +-0.4964229776073523 + 20 +-5.672226220210831 + 0 +LWPOLYLINE + 5 +33683 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.39859459001741 + 20 +-5.183295940398807 + 10 +1.807772086525063 + 20 +-5.183295940398807 + 0 +LWPOLYLINE + 5 +33684 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.034881259788364 + 20 +-5.12081446048515 + 10 +1.194132836641444 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33685 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.08034542606697 + 20 +-5.12081446048515 + 10 +0.8758836726910033 + 20 +-5.12081446048515 + 0 +LWPOLYLINE + 5 +33686 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.171273758624295 + 20 +-5.058332980571464 + 10 +1.14866867036281 + 20 +-5.089573720528364 + 10 +1.08034542606697 + 20 +-5.12081446048515 + 0 +LWPOLYLINE + 5 +33687 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.171273758624295 + 20 +-4.870888540830606 + 10 +1.194132836641444 + 20 +-4.933370020744263 + 10 +1.194132836641444 + 20 +-4.995851500657892 + 10 +1.171273758624295 + 20 +-5.058332980571464 + 0 +LWPOLYLINE + 5 +33688 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.08034542606697 + 20 +-4.80840706091692 + 10 +1.14866867036281 + 20 +-4.839647800873792 + 10 +1.171273758624295 + 20 +-4.870888540830606 + 0 +LWPOLYLINE + 5 +33689 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8758836726910033 + 20 +-4.80840706091692 + 10 +1.08034542606697 + 20 +-4.80840706091692 + 0 +LWPOLYLINE + 5 +3368A +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.8758836726910033 + 20 +-4.80840706091692 + 10 +0.8758836726910033 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +3368B +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3531727553647102 + 20 +-5.402235109852313 + 10 +0.3305676671033382 + 20 +-5.339753629938684 + 0 +LWPOLYLINE + 5 +3368C +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3757778436261106 + 20 +-5.433475849809128 + 10 +0.3531727553647102 + 20 +-5.402235109852313 + 0 +LWPOLYLINE + 5 +3368D +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4441010879219505 + 20 +-5.464716589765885 + 10 +0.3757778436261106 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +3368E +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.5121703424620421 + 20 +-5.464716589765885 + 10 +0.4441010879219505 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +3368F +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.5804935867577967 + 20 +-5.433475849809128 + 10 +0.5121703424620421 + 20 +-5.464716589765885 + 0 +LWPOLYLINE + 5 +33690 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6259577530364311 + 20 +-5.37099436989547 + 10 +0.5804935867577967 + 20 +-5.433475849809128 + 0 +LWPOLYLINE + 5 +33691 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6485628412979167 + 20 +-5.277272150025027 + 10 +0.6259577530364311 + 20 +-5.37099436989547 + 0 +LWPOLYLINE + 5 +33692 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6485628412979167 + 20 +-5.12081446048515 + 10 +0.671421919315037 + 20 +-5.214536680355565 + 10 +0.6485628412979167 + 20 +-5.277272150025027 + 0 +LWPOLYLINE + 5 +33693 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6030986750192824 + 20 +-5.058332980571464 + 10 +0.6485628412979167 + 20 +-5.12081446048515 + 0 +LWPOLYLINE + 5 +33694 +330 +31191 +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4667061761834361 + 20 +-5.027092240614706 + 10 +0.535029420479276 + 20 +-5.027092240614706 + 10 +0.6030986750192824 + 20 +-5.058332980571464 + 0 +INSERT + 5 +34618 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-1.110002000000861 + 20 +-6.234991000001855 + 30 +0.0 + 0 +INSERT + 5 +34619 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-6.234991000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3461A +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.9054620000007958 + 20 +-6.234991000001855 + 10 +-1.110002000000861 + 20 +-6.234991000001855 + 0 +INSERT + 5 +3461B +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-6.234991000001855 + 30 +0.0 + 0 +INSERT + 5 +3461C +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-6.203741000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3461D +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8372820000008119 + 20 +-6.203741000001855 + 10 +-0.9054620000007958 + 20 +-6.234991000001855 + 0 +INSERT + 5 +3461E +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-6.203741000001855 + 30 +0.0 + 0 +INSERT + 5 +3461F +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8145520000008446 + 20 +-6.172491000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34620 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8145520000008446 + 20 +-6.172491000001855 + 10 +-0.8372820000008119 + 20 +-6.203741000001855 + 0 +INSERT + 5 +34621 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.7918220000008773 + 20 +-6.109991000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34622 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.7918220000008773 + 20 +-6.109991000001855 + 10 +-0.8145520000008446 + 20 +-6.172491000001855 + 0 +INSERT + 5 +34623 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.7918220000008773 + 20 +-6.016241000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34624 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.7918220000008773 + 20 +-6.016241000001855 + 10 +-0.7918220000008773 + 20 +-6.109991000001855 + 0 +INSERT + 5 +34625 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8145520000008446 + 20 +-5.953741000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34626 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8145520000008446 + 20 +-5.953741000001855 + 10 +-0.7918220000008773 + 20 +-6.016241000001855 + 0 +INSERT + 5 +34627 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.922491000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34628 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8372820000008119 + 20 +-5.922491000001855 + 10 +-0.8145520000008446 + 20 +-5.953741000001855 + 0 +INSERT + 5 +34629 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.922491000001855 + 30 +0.0 + 0 +INSERT + 5 +3462A +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3462B +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 10 +-0.8372820000008119 + 20 +-5.922491000001855 + 0 +INSERT + 5 +3462C +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 30 +0.0 + 0 +INSERT + 5 +3462D +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-1.110002000000861 + 20 +-5.891241000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3462E +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-1.110002000000861 + 20 +-5.891241000001855 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 0 +INSERT + 5 +3462F +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 30 +0.0 + 0 +INSERT + 5 +34630 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.859991000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34631 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8372820000008119 + 20 +-5.859991000001855 + 10 +-0.9054620000007958 + 20 +-5.891241000001855 + 0 +INSERT + 5 +34632 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.859991000001855 + 30 +0.0 + 0 +INSERT + 5 +34633 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8145520000008446 + 20 +-5.828741000001855 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34634 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8145520000008446 + 20 +-5.828741000001855 + 10 +-0.8372820000008119 + 20 +-5.859991000001855 + 0 +INSERT + 5 +34635 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.7918220000008773 + 20 +-5.766240000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34636 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.7918220000008773 + 20 +-5.766240000001858 + 10 +-0.8145520000008446 + 20 +-5.828741000001855 + 0 +INSERT + 5 +34637 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.7918220000008773 + 20 +-5.703740000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34638 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.7918220000008773 + 20 +-5.703740000001858 + 10 +-0.7918220000008773 + 20 +-5.766240000001858 + 0 +INSERT + 5 +34639 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8145520000008446 + 20 +-5.641240000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3463A +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8145520000008446 + 20 +-5.641240000001858 + 10 +-0.7918220000008773 + 20 +-5.703740000001858 + 0 +INSERT + 5 +3463B +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.609990000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3463C +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.8372820000008119 + 20 +-5.609990000001858 + 10 +-0.8145520000008446 + 20 +-5.641240000001858 + 0 +INSERT + 5 +3463D +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.8372820000008119 + 20 +-5.609990000001858 + 30 +0.0 + 0 +INSERT + 5 +3463E +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-5.578740000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3463F +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-0.9054620000007958 + 20 +-5.578740000001858 + 10 +-0.8372820000008119 + 20 +-5.609990000001858 + 0 +INSERT + 5 +34640 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-0.9054620000007958 + 20 +-5.578740000001858 + 30 +0.0 + 0 +INSERT + 5 +34641 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-1.110002000000861 + 20 +-5.578740000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34642 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-1.110002000000861 + 20 +-5.578740000001858 + 10 +-0.9054620000007958 + 20 +-5.578740000001858 + 0 +INSERT + 5 +34643 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-1.110002000000861 + 20 +-6.234991000001855 + 30 +0.0 + 0 +INSERT + 5 +34644 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +D32 + 10 +-1.110002000000861 + 20 +-5.578740000001858 + 30 +0.0 + 0 +LWPOLYLINE + 5 +34645 +330 +31191 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0762 + 10 +-1.110002000000861 + 20 +-5.578740000001858 + 10 +-1.110002000000861 + 20 +-6.234991000001855 + 0 +INSERT + 5 +35EF4 +330 +31191 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C10814AB3 + 10 +4.249999854999231 + 20 +-8.350000000001842 + 30 +0.0 + 50 +270.0 + 0 +ENDBLK + 5 +3119E +330 +31191 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31D22 +330 +31D13 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C5F430495 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C5F430495 + 1 + + 0 +LINE + 5 +31D14 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-3.500000145000797 + 20 +0.7500000000001137 + 30 +0.0 + 11 +-4.250000145000826 + 21 +0.7500000000001137 + 31 +0.0 + 0 +LINE + 5 +31D15 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000145000826 + 20 +-0.7499999999998863 + 30 +0.0 + 11 +-3.500000145000797 + 21 +-0.7499999999998863 + 31 +0.0 + 0 +LINE + 5 +31D16 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000145000826 + 20 +2.250000000000114 + 30 +0.0 + 11 +-3.500000145000826 + 21 +2.250000000000114 + 31 +0.0 + 0 +LINE + 5 +31D17 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000145000826 + 20 +-2.249999999999886 + 30 +0.0 + 11 +-3.500000145000769 + 21 +-2.249999999999886 + 31 +0.0 + 0 +ARC + 5 +31D18 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000145000826 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D19 +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000145000797 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31D1A +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000145000826 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31D1B +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000145000797 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D1C +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000145000826 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31D1D +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000145000826 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D1E +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000145000826 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D1F +330 +31D13 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000145000769 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.7426637338786761 + 51 +90.0 + 0 +ENDBLK + 5 +31D23 +330 +31D13 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31D8D +330 +31D6A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C5D993AEE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C5D993AEE + 1 + + 0 +LINE + 5 +31D6B +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.7499998550001123 + 20 +3.999999999998153 + 30 +0.0 + 11 +-0.7499998550001123 + 21 +3.499999999998181 + 31 +0.0 + 0 +LINE + 5 +31D6C +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7500001449998877 + 20 +3.999999999998181 + 30 +0.0 + 11 +0.7500001449998877 + 21 +3.499999999998153 + 31 +0.0 + 0 +ARC + 5 +31D6D +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.999999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31D6E +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.499999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D6F +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.999999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D70 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.499999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.4558249931802 + 0 +LINE + 5 +31D71 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-3.500000000000881 + 20 +0.7500000000001137 + 30 +0.0 + 11 +-4.250000000000909 + 21 +0.7500000000001137 + 31 +0.0 + 0 +LINE + 5 +31D72 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +-0.7499999999998863 + 30 +0.0 + 11 +-3.500000000000881 + 21 +-0.7499999999998863 + 31 +0.0 + 0 +LINE + 5 +31D73 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +2.250000000000114 + 30 +0.0 + 11 +-3.500000000000909 + 21 +2.250000000000114 + 31 +0.0 + 0 +LINE + 5 +31D74 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +-2.249999999999886 + 30 +0.0 + 11 +-3.500000000000853 + 21 +-2.249999999999886 + 31 +0.0 + 0 +ARC + 5 +31D75 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D76 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31D77 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31D78 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D79 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31D7A +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D7B +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D7C +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000853 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.7426637338786761 + 51 +90.0 + 0 +ARC + 5 +31D7D +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-7.100000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +31D7E +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-9.600000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +LINE + 5 +31D7F +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +3.499999999999034 + 20 +0.7500000000001137 + 30 +0.0 + 11 +4.999999999999119 + 21 +0.7500000000001137 + 31 +0.0 + 0 +LINE + 5 +31D80 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +3.499999999999091 + 20 +-0.7499999999998863 + 30 +0.0 + 11 +4.999999999999119 + 21 +-0.7499999999998863 + 31 +0.0 + 0 +LINE + 5 +31D81 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +3.499999999999034 + 20 +-2.249999999999886 + 30 +0.0 + 11 +4.999999999999147 + 21 +-2.249999999999886 + 31 +0.0 + 0 +LINE + 5 +31D82 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +3.499999999999091 + 20 +2.250000000000114 + 30 +0.0 + 11 +4.999999999999091 + 21 +2.250000000000114 + 31 +0.0 + 0 +ARC + 5 +31D83 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +3.499999999999091 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31D84 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +4.999999999999091 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D85 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +3.499999999999034 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D86 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +4.999999999999147 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31D87 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +3.499999999999091 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +181.5511216548056 + 51 +270.0 + 0 +ARC + 5 +31D88 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +4.999999999999119 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31D89 +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +3.499999999999034 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31D8A +330 +31D6A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +4.999999999999119 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +31D8E +330 +31D6A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31DB8 +330 +31DB3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C16BF434C + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C16BF434C + 1 + + 0 +ARC + 5 +31DB4 +330 +31DB3 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000938 + 20 +1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +31DB5 +330 +31DB3 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000938 + 20 +-1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +31DB9 +330 +31DB3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31DC5 +330 +31DBC +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C6B556118 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6B556118 + 1 + + 0 +LINE + 5 +31DBD +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.7499998550001123 + 20 +3.999999999998153 + 30 +0.0 + 11 +-0.7499998550001123 + 21 +3.499999999998181 + 31 +0.0 + 0 +LINE + 5 +31DBE +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7500001449998877 + 20 +3.999999999998181 + 30 +0.0 + 11 +0.7500001449998877 + 21 +3.499999999998153 + 31 +0.0 + 0 +ARC + 5 +31DBF +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.999999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31DC0 +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.499999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31DC1 +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.999999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31DC2 +330 +31DBC +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.499999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.4558249931802 + 0 +ENDBLK + 5 +31DC6 +330 +31DBC +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31DDC +330 +31DC9 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C11697A1A + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C11697A1A + 1 + + 0 +LINE + 5 +31DCA +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.000000000000966 + 20 +0.7500000000001137 + 30 +0.0 + 11 +-3.500000000000881 + 21 +0.7500000000001137 + 31 +0.0 + 0 +LINE + 5 +31DCB +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.000000000000909 + 20 +-0.7499999999998863 + 30 +0.0 + 11 +-3.500000000000881 + 21 +-0.7499999999998863 + 31 +0.0 + 0 +LINE + 5 +31DCC +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.000000000000966 + 20 +-2.249999999999886 + 30 +0.0 + 11 +-3.500000000000853 + 21 +-2.249999999999886 + 31 +0.0 + 0 +LINE + 5 +31DCD +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-5.000000000000909 + 20 +2.250000000000114 + 30 +0.0 + 11 +-3.500000000000909 + 21 +2.250000000000114 + 31 +0.0 + 0 +ARC + 5 +31DCE +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31DCF +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31DD0 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000966 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31DD1 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000853 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31DD2 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000909 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +181.5511216548048 + 51 +270.0 + 0 +ARC + 5 +31DD3 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31DD4 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-5.000000000000966 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31DD5 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +31F48 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.7499998550001123 + 20 +3.999999999998209 + 30 +0.0 + 11 +-0.7499998550001123 + 21 +3.499999999998238 + 31 +0.0 + 0 +LINE + 5 +31F49 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7500001449998877 + 20 +3.999999999998238 + 30 +0.0 + 11 +0.7500001449998877 + 21 +3.499999999998209 + 31 +0.0 + 0 +ARC + 5 +31F4A +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.999999999998209 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31F4B +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.499999999998238 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31F4C +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.999999999998238 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31F4D +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.499999999998209 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.4558249931802 + 0 +ARC + 5 +31F97 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-7.100000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +31F98 +330 +31DC9 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-9.600000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +31DDD +330 +31DC9 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31EAE +330 +31EA9 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3E8E4252 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3E8E4252 + 1 + + 0 +INSERT + 5 +31EAA +330 +31EA9 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C6B556118 + 10 +0.0000000000013642 + 20 +-4.499999999998096 + 30 +0.0 + 0 +ENDBLK + 5 +31EAF +330 +31EA9 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31EE2 +330 +31ED1 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C197029C7 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C197029C7 + 1 + + 0 +LINE + 5 +31ED2 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-3.500000000000881 + 20 +0.7500000000001137 + 30 +0.0 + 11 +-4.250000000000909 + 21 +0.7500000000001137 + 31 +0.0 + 0 +LINE + 5 +31ED3 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +-0.7499999999998863 + 30 +0.0 + 11 +-3.500000000000881 + 21 +-0.7499999999998863 + 31 +0.0 + 0 +LINE + 5 +31ED4 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +2.250000000000114 + 30 +0.0 + 11 +-3.500000000000909 + 21 +2.250000000000114 + 31 +0.0 + 0 +LINE + 5 +31ED5 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-4.250000000000909 + 20 +-2.249999999999886 + 30 +0.0 + 11 +-3.500000000000853 + 21 +-2.249999999999886 + 31 +0.0 + 0 +ARC + 5 +31ED6 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31ED7 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +0.2500000000001137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31ED8 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31ED9 +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000881 + 20 +-0.2499999999998863 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31EDA +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +31EDB +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000909 + 20 +2.750000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31EDC +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000909 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31EDD +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.500000000000853 + 20 +-2.749999999999886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.7426637338786868 + 51 +90.0 + 0 +ARC + 5 +31EDE +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-7.100000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +31EDF +330 +31ED1 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-4.250000000000881 + 20 +-9.600000000001785 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +31EE3 +330 +31ED1 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31EF1 +330 +31EE8 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C40DF47AB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C40DF47AB + 1 + + 0 +LINE + 5 +31EE9 +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.7499998550001123 + 20 +3.999999999998153 + 30 +0.0 + 11 +-0.7499998550001123 + 21 +3.499999999998181 + 31 +0.0 + 0 +LINE + 5 +31EEA +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7500001449998877 + 20 +3.999999999998181 + 30 +0.0 + 11 +0.7500001449998877 + 21 +3.499999999998153 + 31 +0.0 + 0 +ARC + 5 +31EEB +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.999999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +31EEC +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.249999855000112 + 20 +3.499999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +31EED +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.999999999998181 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +31EEE +330 +31EE8 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +1.250000144999888 + 20 +3.499999999998153 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.4558249931802 + 0 +ENDBLK + 5 +31EF2 +330 +31EE8 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +31EFC +330 +31EF7 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C21B8102E + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C21B8102E + 1 + + 0 +INSERT + 5 +31EF8 +330 +31EF7 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C197029C7 + 10 +145.7499995987302 + 20 +-108.2064579879709 + 30 +0.0 + 0 +ENDBLK + 5 +31EFD +330 +31EF7 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33174 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4187400E + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4187400E + 1 + + 0 +ARC + 5 +3315E +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +10.54999999999995 + 20 +6.350000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3315F +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +14.14999999999998 + 20 +6.350000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +30.00000000001561 + 51 +90.0 + 0 +LINE + 5 +33160 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +14.14999999999998 + 20 +7.550000000000011 + 30 +0.0 + 11 +10.54999999999995 + 21 +7.550000000000011 + 31 +0.0 + 0 +ARC + 5 +33161 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +10.54999999999995 + 20 +6.350000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +33162 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +9.349999999999966 + 20 +6.350000000000023 + 30 +0.0 + 11 +9.349999999999966 + 21 +6.349999999999994 + 31 +0.0 + 0 +ARC + 5 +33163 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +9.049999999999955 + 20 +6.349999999999994 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0000000000049 + 51 +0.0 + 0 +LINE + 5 +33164 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +9.049999999999983 + 20 +6.049999999999983 + 30 +0.0 + 11 +8.099038105677835 + 21 +6.049999999999955 + 31 +0.0 + 0 +ARC + 5 +33165 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +6.799999999999983 + 20 +5.599999999999994 + 30 +0.0 + 40 +1.200000000000021 +100 +AcDbArc + 50 +29.99999999997587 + 51 +90.00000000000162 + 0 +LINE + 5 +33166 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +6.799999999999955 + 20 +6.800000000000011 + 30 +0.0 + 11 +1.199999999999932 + 21 +6.800000000000011 + 31 +0.0 + 0 +ARC + 5 +33167 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +1.199999999999932 + 20 +5.600000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +33168 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +-0.0000000000000568 + 20 +5.600000000000023 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +ARC + 5 +33169 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +21.14999999999995 + 20 +5.600000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +30.00000000000506 + 51 +90.0 + 0 +LINE + 5 +3316A +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +21.14999999999995 + 20 +6.800000000000011 + 30 +0.0 + 11 +15.44903810567584 + 21 +6.799999999999983 + 31 +0.0 + 0 +ARC + 5 +3316B +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +15.44903810567584 + 20 +7.100000000000023 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +210.0000000000131 + 51 +270.0 + 0 +LINE + 5 +3316C +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +22.44903810567635 + 20 +6.050000000000011 + 30 +0.0 + 11 +23.39999999999995 + 21 +6.050000000000011 + 31 +0.0 + 0 +LINE + 5 +3316D +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +23.69999999999996 + 20 +6.350000000000023 + 30 +0.0 + 11 +23.69999999999996 + 21 +6.350000000000023 + 31 +0.0 + 0 +ARC + 5 +3316E +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +24.89999999999995 + 20 +6.350000000000023 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +3316F +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbLine + 10 +24.89999999999995 + 20 +7.550000000000011 + 30 +0.0 + 11 +28.49999999999997 + 21 +7.550000000000011 + 31 +0.0 + 0 +ARC + 5 +33170 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +22.44903810567635 + 20 +6.350000000000023 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +210.0000000000056 + 51 +270.0 + 0 +ARC + 5 +33171 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 25 +370 + -1 +100 +AcDbCircle + 10 +23.39999999999995 + 20 +6.350000000000023 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ENDBLK + 5 +33175 +330 +3315D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33536 +330 +334BA +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7CD475E8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7CD475E8 + 1 + + 0 +LWPOLYLINE + 5 +334BB +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.198958642001486 + 20 +-7.597087584134037 + 10 +1.176353553740086 + 20 +-7.534606104220373 + 0 +LWPOLYLINE + 5 +334BC +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.289886974558726 + 20 +-7.659569064047616 + 10 +1.221817720018691 + 20 +-7.628328324090802 + 10 +1.198958642001486 + 20 +-7.597087584134037 + 0 +LWPOLYLINE + 5 +334BD +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.426279473394573 + 20 +-7.628328324090802 + 10 +1.358210218854566 + 20 +-7.659569064047616 + 10 +1.289886974558726 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334BE +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.471743639673207 + 20 +-7.565846844177173 + 10 +1.426279473394573 + 20 +-7.628328324090802 + 0 +LWPOLYLINE + 5 +334BF +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.517207805951813 + 20 +-7.40964314439303 + 10 +1.494602717690412 + 20 +-7.472124624306701 + 10 +1.471743639673207 + 20 +-7.565846844177173 + 0 +LWPOLYLINE + 5 +334C0 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.380815307115967 + 20 +-7.222198704652158 + 10 +1.449138551411806 + 20 +-7.253439444608929 + 10 +1.494602717690412 + 20 +-7.315920924522601 + 10 +1.517207805951813 + 20 +-7.40964314439303 + 0 +LWPOLYLINE + 5 +334C1 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.244422808280092 + 20 +-7.253439444608929 + 10 +1.312746052575847 + 20 +-7.222198704652158 + 10 +1.380815307115967 + 20 +-7.222198704652158 + 0 +LWPOLYLINE + 5 +334C2 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.244422808280092 + 20 +-7.003513524954386 + 10 +1.221817720018691 + 20 +-7.284680184565829 + 10 +1.244422808280092 + 20 +-7.253439444608929 + 0 +LWPOLYLINE + 5 +334C3 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.812640223511039 + 20 +-7.253439444608929 + 10 +0.744570968970919 + 20 +-7.284680184565829 + 10 +0.6991068026923983 + 20 +-7.347161664479408 + 10 +0.6762477246751644 + 20 +-7.440883884349937 + 0 +LWPOLYLINE + 5 +334C4 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9035685560682793 + 20 +-7.284680184565829 + 10 +0.8354993015281593 + 20 +-7.253439444608929 + 10 +0.812640223511039 + 20 +-7.253439444608929 + 0 +LWPOLYLINE + 5 +334C5 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223468853 + 20 +-7.347161664479408 + 10 +0.9035685560682793 + 20 +-7.284680184565829 + 0 +LWPOLYLINE + 5 +334C6 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223468853 + 20 +-7.565846844177173 + 10 +0.9718918003641193 + 20 +-7.472124624306701 + 10 +0.9718918003641193 + 20 +-7.440883884349937 + 10 +0.9490327223468853 + 20 +-7.347161664479408 + 0 +LWPOLYLINE + 5 +334C7 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9035685560682793 + 20 +-7.628328324090802 + 10 +0.9490327223468853 + 20 +-7.565846844177173 + 0 +LWPOLYLINE + 5 +334C8 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.812640223511039 + 20 +-7.659569064047616 + 10 +0.8354993015281593 + 20 +-7.659569064047616 + 10 +0.9035685560682793 + 20 +-7.628328324090802 + 0 +LWPOLYLINE + 5 +334C9 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6762477246751644 + 20 +-7.440883884349937 + 10 +0.6991068026923983 + 20 +-7.565846844177173 + 10 +0.744570968970919 + 20 +-7.628328324090802 + 10 +0.812640223511039 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334CA +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6762477246751644 + 20 +-7.284680184565829 + 10 +0.6762477246751644 + 20 +-7.440883884349937 + 0 +LWPOLYLINE + 5 +334CB +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6991068026923983 + 20 +-7.128476484781729 + 10 +0.6762477246751644 + 20 +-7.284680184565829 + 0 +LWPOLYLINE + 5 +334CC +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.744570968970919 + 20 +-7.0347542649112 + 10 +0.6991068026923983 + 20 +-7.128476484781729 + 0 +LWPOLYLINE + 5 +334CD +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1990009736273919 + 20 +-7.628328324090802 + 10 +0.1763958853660199 + 20 +-7.597087584134037 + 10 +0.1535368073487859 + 20 +-7.534606104220373 + 0 +LWPOLYLINE + 5 +334CE +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3353934724633518 + 20 +-7.659569064047616 + 10 +0.2673242179232318 + 20 +-7.659569064047616 + 10 +0.1990009736273919 + 20 +-7.628328324090802 + 0 +LWPOLYLINE + 5 +334CF +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4717859712991981 + 20 +-7.472124624306701 + 10 +0.4491808830377124 + 20 +-7.565846844177173 + 10 +0.4037167167591065 + 20 +-7.628328324090802 + 10 +0.3353934724633518 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334D0 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4717859712991981 + 20 +-7.40964314439303 + 10 +0.4717859712991981 + 20 +-7.472124624306701 + 0 +LWPOLYLINE + 5 +334D1 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4263218050205069 + 20 +-7.284680184565829 + 10 +0.4491808830377124 + 20 +-7.315920924522601 + 10 +0.4717859712991981 + 20 +-7.40964314439303 + 0 +LWPOLYLINE + 5 +334D2 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3808576387419578 + 20 +-7.253439444608929 + 10 +0.4263218050205069 + 20 +-7.284680184565829 + 0 +LWPOLYLINE + 5 +334D3 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4491808830377124 + 20 +-7.003513524954386 + 10 +0.3127883842018662 + 20 +-7.253439444608929 + 10 +0.3808576387419578 + 20 +-7.253439444608929 + 0 +LWPOLYLINE + 5 +334D4 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1418532785843354 + 20 +-7.628328324090802 + 10 +-0.209922533124427 + 20 +-7.659569064047616 + 10 +-0.3691741099775072 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334D5 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.096389112305701 + 20 +-7.565846844177173 + 10 +-0.1418532785843354 + 20 +-7.628328324090802 + 0 +LWPOLYLINE + 5 +334D6 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0509249460271803 + 20 +-7.40964314439303 + 10 +-0.0735300342885807 + 20 +-7.503365364263509 + 10 +-0.096389112305701 + 20 +-7.565846844177173 + 0 +LWPOLYLINE + 5 +334D7 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0509249460271803 + 20 +-7.253439444608929 + 10 +-0.0509249460271803 + 20 +-7.40964314439303 + 0 +LWPOLYLINE + 5 +334D8 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0735300342885807 + 20 +-7.159717224738486 + 10 +-0.0509249460271803 + 20 +-7.253439444608929 + 0 +LWPOLYLINE + 5 +334D9 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.096389112305701 + 20 +-7.097235744824822 + 10 +-0.0735300342885807 + 20 +-7.159717224738486 + 0 +LWPOLYLINE + 5 +334DA +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3691741099775072 + 20 +-7.003513524954386 + 10 +-0.3691741099775072 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334DB +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5736358633534735 + 20 +-7.003513524954386 + 10 +-0.5736358633534735 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334DC +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5736358633534735 + 20 +-7.003513524954386 + 10 +-0.7554925284679541 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334DD +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9373491935824347 + 20 +-7.003513524954386 + 10 +-0.7554925284679541 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334DE +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9373491935824347 + 20 +-7.003513524954386 + 10 +-0.9373491935824347 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334DF +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.232739279515641 + 20 +-7.628328324090802 + 10 +-1.300808534055761 + 20 +-7.659569064047616 + 10 +-1.460060110908756 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334E0 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.187275113237035 + 20 +-7.565846844177173 + 10 +-1.232739279515641 + 20 +-7.628328324090802 + 0 +LWPOLYLINE + 5 +334E1 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.141810946958401 + 20 +-7.40964314439303 + 10 +-1.164416035219887 + 20 +-7.503365364263509 + 10 +-1.187275113237035 + 20 +-7.565846844177173 + 0 +LWPOLYLINE + 5 +334E2 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.141810946958401 + 20 +-7.253439444608929 + 10 +-1.141810946958401 + 20 +-7.40964314439303 + 0 +LWPOLYLINE + 5 +334E3 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.164416035219887 + 20 +-7.159717224738486 + 10 +-1.141810946958401 + 20 +-7.253439444608929 + 0 +LWPOLYLINE + 5 +334E4 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.187275113237035 + 20 +-7.097235744824822 + 10 +-1.164416035219887 + 20 +-7.159717224738486 + 0 +LWPOLYLINE + 5 +334E5 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.460060110908756 + 20 +-7.003513524954386 + 10 +-1.460060110908756 + 20 +-7.659569064047616 + 0 +LWPOLYLINE + 5 +334E6 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699488684 + 20 +-9.234559539431778 + 10 +0.6853913558819897 + 20 +-9.234559539431778 + 0 +LWPOLYLINE + 5 +334E7 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699488684 + 20 +-8.890911399906756 + 10 +0.571857935063349 + 20 +-8.890911399906756 + 0 +LWPOLYLINE + 5 +334E8 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699488684 + 20 +-8.578504000338548 + 10 +0.6853913558819897 + 20 +-8.578504000338548 + 0 +LWPOLYLINE + 5 +334E9 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3900012699488684 + 20 +-8.578504000338548 + 10 +0.3900012699488684 + 20 +-9.234559539431778 + 0 +LWPOLYLINE + 5 +334EA +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.2236379799347787 + 20 +-8.953392879820427 + 10 +0.1855395165729021 + 20 +-8.953392879820427 + 0 +LWPOLYLINE + 5 +334EB +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.428099733310745 + 20 +-8.578504000338548 + 10 +-0.428099733310745 + 20 +-9.234559539431778 + 0 +LWPOLYLINE + 5 +334EC +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.4964229776064997 + 20 +-8.67222622020899 + 10 +-0.428099733310745 + 20 +-8.578504000338548 + 0 +LWPOLYLINE + 5 +334ED +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5418871438851056 + 20 +-8.703466960165798 + 10 +-0.4964229776064997 + 20 +-8.67222622020899 + 0 +LWPOLYLINE + 5 +334EE +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.041738983194278 + 20 +-9.015874359734013 + 10 +-0.8144181518011919 + 20 +-9.015874359734013 + 0 +LWPOLYLINE + 5 +334EF +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9282055623755525 + 20 +-8.578504000338548 + 10 +-0.7463488972610719 + 20 +-9.234559539431778 + 0 +LWPOLYLINE + 5 +334F0 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9282055623755525 + 20 +-8.578504000338548 + 10 +-1.110062227490118 + 20 +-9.234559539431778 + 0 +LWPOLYLINE + 5 +334F1 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.398594590018263 + 20 +-8.18329594039696 + 10 +1.807772086525915 + 20 +-8.18329594039696 + 0 +LWPOLYLINE + 5 +334F2 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.034881259789216 + 20 +-8.120814460483288 + 10 +1.194132836642297 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +334F3 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.080345426067822 + 20 +-8.120814460483288 + 10 +0.875883672691856 + 20 +-8.120814460483288 + 0 +LWPOLYLINE + 5 +334F4 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.171273758625148 + 20 +-8.058332980569617 + 10 +1.148668670363662 + 20 +-8.089573720526516 + 10 +1.080345426067822 + 20 +-8.120814460483288 + 0 +LWPOLYLINE + 5 +334F5 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.171273758625148 + 20 +-7.870888540828744 + 10 +1.194132836642297 + 20 +-7.933370020742416 + 10 +1.194132836642297 + 20 +-7.995851500656045 + 10 +1.171273758625148 + 20 +-8.058332980569617 + 0 +LWPOLYLINE + 5 +334F6 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.080345426067822 + 20 +-7.80840706091508 + 10 +1.148668670363662 + 20 +-7.839647800871944 + 10 +1.171273758625148 + 20 +-7.870888540828744 + 0 +LWPOLYLINE + 5 +334F7 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.875883672691856 + 20 +-7.80840706091508 + 10 +1.080345426067822 + 20 +-7.80840706091508 + 0 +LWPOLYLINE + 5 +334F8 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.875883672691856 + 20 +-7.80840706091508 + 10 +0.875883672691856 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +334F9 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3531727553655628 + 20 +-8.402235109850466 + 10 +0.3305676671041908 + 20 +-8.339753629936837 + 0 +LWPOLYLINE + 5 +334FA +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3757778436269632 + 20 +-8.43347584980728 + 10 +0.3531727553655628 + 20 +-8.402235109850466 + 0 +LWPOLYLINE + 5 +334FB +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4441010879228031 + 20 +-8.464716589764045 + 10 +0.3757778436269632 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +334FC +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.5121703424628947 + 20 +-8.464716589764045 + 10 +0.4441010879228031 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +334FD +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.5804935867586494 + 20 +-8.43347584980728 + 10 +0.5121703424628947 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +334FE +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6259577530372837 + 20 +-8.370994369893609 + 10 +0.5804935867586494 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +334FF +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6485628412987694 + 20 +-8.277272150023165 + 10 +0.6259577530372837 + 20 +-8.370994369893609 + 0 +LWPOLYLINE + 5 +33500 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6485628412987694 + 20 +-8.120814460483288 + 10 +0.6714219193158897 + 20 +-8.214536680353724 + 10 +0.6485628412987694 + 20 +-8.277272150023165 + 0 +LWPOLYLINE + 5 +33501 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.603098675020135 + 20 +-8.058332980569617 + 10 +0.6485628412987694 + 20 +-8.120814460483288 + 0 +LWPOLYLINE + 5 +33502 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.4667061761842888 + 20 +-8.027092240612845 + 10 +0.5350294204801287 + 20 +-8.027092240612845 + 10 +0.603098675020135 + 20 +-8.058332980569617 + 0 +LWPOLYLINE + 5 +33503 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.3757778436269632 + 20 +-8.089573720526516 + 10 +0.3986369216441688 + 20 +-8.058332980569617 + 10 +0.4667061761842888 + 20 +-8.027092240612845 + 0 +LWPOLYLINE + 5 +33504 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.6259577530372837 + 20 +-7.80840706091508 + 10 +0.3986369216441688 + 20 +-7.80840706091508 + 10 +0.3757778436269632 + 20 +-8.089573720526516 + 0 +LWPOLYLINE + 5 +33505 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1469330736993584 + 20 +-8.152055200440145 + 10 +-0.1695381619607303 + 20 +-8.246031410066365 + 0 +LWPOLYLINE + 5 +33506 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.101468907420724 + 20 +-8.089573720526516 + 10 +-0.1469330736993584 + 20 +-8.152055200440145 + 0 +LWPOLYLINE + 5 +33507 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0105405748634837 + 20 +-8.058332980569617 + 10 +-0.0331456631248557 + 20 +-8.058332980569617 + 10 +-0.101468907420724 + 20 +-8.089573720526516 + 0 +LWPOLYLINE + 5 +33508 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1258519239724478 + 20 +-8.246031410066365 + 10 +0.1032468357109622 + 20 +-8.152055200440145 + 10 +0.0577826694324699 + 20 +-8.089573720526516 + 10 +-0.0105405748634837 + 20 +-8.058332980569617 + 0 +LWPOLYLINE + 5 +33509 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1258519239724478 + 20 +-8.277272150023165 + 10 +0.1258519239724478 + 20 +-8.246031410066365 + 0 +LWPOLYLINE + 5 +3350A +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1032468357109622 + 20 +-8.370994369893609 + 10 +0.1258519239724478 + 20 +-8.277272150023165 + 0 +LWPOLYLINE + 5 +3350B +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.0577826694324699 + 20 +-8.43347584980728 + 10 +0.1032468357109622 + 20 +-8.370994369893609 + 0 +LWPOLYLINE + 5 +3350C +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0105405748634837 + 20 +-8.464716589764045 + 10 +0.0577826694324699 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +3350D +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.0331456631248557 + 20 +-8.464716589764045 + 10 +-0.0105405748634837 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +3350E +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.101468907420724 + 20 +-8.43347584980728 + 10 +-0.0331456631248557 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +3350F +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1469330736993584 + 20 +-8.370994369893609 + 10 +-0.101468907420724 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +33510 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1695381619607303 + 20 +-8.246031410066365 + 10 +-0.1469330736993584 + 20 +-8.370994369893609 + 0 +LWPOLYLINE + 5 +33511 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1469330736993584 + 20 +-7.933370020742416 + 10 +-0.1695381619607303 + 20 +-8.089573720526516 + 10 +-0.1695381619607303 + 20 +-8.246031410066365 + 0 +LWPOLYLINE + 5 +33512 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.101468907420724 + 20 +-7.839647800871944 + 10 +-0.1469330736993584 + 20 +-7.933370020742416 + 0 +LWPOLYLINE + 5 +33513 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.0803877576938419 + 20 +-7.839647800871944 + 10 +0.0123185031537218 + 20 +-7.80840706091508 + 10 +-0.0331456631248557 + 20 +-7.80840706091508 + 10 +-0.101468907420724 + 20 +-7.839647800871944 + 0 +LWPOLYLINE + 5 +33514 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1032468357109622 + 20 +-7.902129280785516 + 10 +0.0803877576938419 + 20 +-7.839647800871944 + 0 +LWPOLYLINE + 5 +33515 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6696439910256231 + 20 +-8.402235109850466 + 10 +-0.6922490792871088 + 20 +-8.339753629936837 + 0 +LWPOLYLINE + 5 +33516 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6467849130085028 + 20 +-8.43347584980728 + 10 +-0.6696439910256231 + 20 +-8.402235109850466 + 0 +LWPOLYLINE + 5 +33517 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5787156584683828 + 20 +-8.464716589764045 + 10 +-0.6467849130085028 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +33518 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5103924141725429 + 20 +-8.464716589764045 + 10 +-0.5787156584683828 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +33519 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.4423231596325365 + 20 +-8.43347584980728 + 10 +-0.5103924141725429 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +3351A +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933538169 + 20 +-8.370994369893609 + 10 +-0.4423231596325365 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +3351B +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3739999153366966 + 20 +-8.277272150023165 + 10 +-0.3968589933538169 + 20 +-8.370994369893609 + 0 +LWPOLYLINE + 5 +3351C +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933538169 + 20 +-8.120814460483288 + 10 +-0.3739999153366966 + 20 +-8.214536680353724 + 10 +-0.3739999153366966 + 20 +-8.277272150023165 + 0 +LWPOLYLINE + 5 +3351D +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.5332514921897769 + 20 +-8.058332980569617 + 10 +-0.4649282478939369 + 20 +-8.058332980569617 + 10 +-0.4194640816153026 + 20 +-8.089573720526516 + 10 +-0.3968589933538169 + 20 +-8.120814460483288 + 0 +LWPOLYLINE + 5 +3351E +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3968589933538169 + 20 +-7.80840706091508 + 10 +-0.5332514921897769 + 20 +-8.058332980569617 + 0 +LWPOLYLINE + 5 +3351F +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.6467849130085028 + 20 +-7.80840706091508 + 10 +-0.3968589933538169 + 20 +-7.80840706091508 + 0 +LWPOLYLINE + 5 +33520 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.05596240951607 + 20 +-8.464716589764045 + 10 +-1.21495999661343 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +33521 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9876391652202301 + 20 +-8.43347584980728 + 10 +-1.05596240951607 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +33522 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9421749989416242 + 20 +-8.370994369893609 + 10 +-0.9876391652202301 + 20 +-8.43347584980728 + 0 +LWPOLYLINE + 5 +33523 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9195699106802238 + 20 +-8.308512889979937 + 10 +-0.9421749989416242 + 20 +-8.370994369893609 + 0 +LWPOLYLINE + 5 +33524 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.9195699106802238 + 20 +-7.964610760699181 + 10 +-0.8967108326629898 + 20 +-8.058332980569617 + 10 +-0.8967108326629898 + 20 +-8.214536680353724 + 10 +-0.9195699106802238 + 20 +-8.308512889979937 + 0 +LWPOLYLINE + 5 +33525 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.05596240951607 + 20 +-7.80840706091508 + 10 +-0.9876391652202301 + 20 +-7.839647800871944 + 10 +-0.9421749989416242 + 20 +-7.902129280785516 + 10 +-0.9195699106802238 + 20 +-7.964610760699181 + 0 +LWPOLYLINE + 5 +33526 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.21495999661343 + 20 +-7.80840706091508 + 10 +-1.05596240951607 + 20 +-7.80840706091508 + 0 +LWPOLYLINE + 5 +33527 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.21495999661343 + 20 +-7.80840706091508 + 10 +-1.21495999661343 + 20 +-8.464716589764045 + 0 +LWPOLYLINE + 5 +33528 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +1.471743639673207 + 20 +-7.003513524954386 + 10 +1.244422808280092 + 20 +-7.003513524954386 + 0 +LWPOLYLINE + 5 +33529 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.812640223511039 + 20 +-7.003513524954386 + 10 +0.744570968970919 + 20 +-7.0347542649112 + 0 +LWPOLYLINE + 5 +3352A +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.858104389789645 + 20 +-7.003513524954386 + 10 +0.812640223511039 + 20 +-7.003513524954386 + 0 +LWPOLYLINE + 5 +3352B +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9264276340854849 + 20 +-7.0347542649112 + 10 +0.858104389789645 + 20 +-7.003513524954386 + 0 +LWPOLYLINE + 5 +3352C +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.9490327223468853 + 20 +-7.097235744824822 + 10 +0.9264276340854849 + 20 +-7.0347542649112 + 0 +LWPOLYLINE + 5 +3352D +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +0.1990009736273919 + 20 +-7.003513524954386 + 10 +0.4491808830377124 + 20 +-7.003513524954386 + 0 +LWPOLYLINE + 5 +3352E +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.1418532785843354 + 20 +-7.0347542649112 + 10 +-0.096389112305701 + 20 +-7.097235744824822 + 0 +LWPOLYLINE + 5 +3352F +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.209922533124427 + 20 +-7.003513524954386 + 10 +-0.1418532785843354 + 20 +-7.0347542649112 + 0 +LWPOLYLINE + 5 +33530 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-0.3691741099775072 + 20 +-7.003513524954386 + 10 +-0.209922533124427 + 20 +-7.003513524954386 + 0 +LWPOLYLINE + 5 +33531 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.232739279515641 + 20 +-7.0347542649112 + 10 +-1.187275113237035 + 20 +-7.097235744824822 + 0 +LWPOLYLINE + 5 +33532 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.300808534055761 + 20 +-7.003513524954386 + 10 +-1.232739279515641 + 20 +-7.0347542649112 + 0 +LWPOLYLINE + 5 +33533 +330 +334BA +100 +AcDbEntity + 8 +GTO + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0761969267239546 + 10 +-1.460060110908756 + 20 +-7.003513524954386 + 10 +-1.300808534055761 + 20 +-7.003513524954386 + 0 +ENDBLK + 5 +33537 +330 +334BA +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33718 +330 +33701 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C25C3036A + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C25C3036A + 1 + + 0 +ARC + 5 +33702 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +7.100000000001785 + 20 +4.250000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +33703 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +9.600000000001785 + 20 +4.250000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ARC + 5 +33704 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.2499999999982379 + 20 +3.500000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ARC + 5 +33705 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.2500000000017621 + 20 +3.500000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +33706 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.749999999998238 + 20 +3.500000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +33707 +330 +33701 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +2.750000000001762 + 20 +3.500000144999007 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ENDBLK + 5 +33719 +330 +33701 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3379B +330 +3378A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C704D0EF1 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C704D0EF1 + 1 + + 0 +LINE + 5 +3378B +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.7500000000017621 + 20 +-3.500000000000853 + 30 +0.0 + 11 +0.7500000000017621 + 21 +-5.000000000000909 + 31 +0.0 + 0 +LINE + 5 +3378C +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.7499999999982379 + 20 +-3.500000000000881 + 30 +0.0 + 11 +-0.7499999999982379 + 21 +-5.000000000000909 + 31 +0.0 + 0 +LINE + 5 +3378D +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +2.250000000001762 + 20 +-3.500000000000853 + 30 +0.0 + 11 +2.250000000001762 + 21 +-5.000000000000909 + 31 +0.0 + 0 +LINE + 5 +3378E +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.249999999998238 + 20 +-5.000000000000909 + 30 +0.0 + 11 +-2.249999999998238 + 21 +-3.500000000000909 + 31 +0.0 + 0 +ARC + 5 +3378F +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.749999999998238 + 20 +-3.500000000000909 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +88.14979249515419 + 0 +ARC + 5 +33790 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.749999999998238 + 20 +-5.000000000000909 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +33791 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.2499999999982379 + 20 +-3.500000000000881 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +176.9562761284349 + 0 +ARC + 5 +33792 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.2499999999982379 + 20 +-5.000000000000909 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +175.6980926792679 + 51 +270.0161079836736 + 0 +ARC + 5 +33793 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.2500000000017621 + 20 +-3.500000000000853 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +357.800978510985 + 51 +89.96653913088652 + 0 +ARC + 5 +33794 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.2500000000017621 + 20 +-5.000000000000909 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.4313959039429 + 51 +0.4313959039429247 + 0 +ARC + 5 +33795 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +2.750000000001762 + 20 +-3.500000000000853 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +33796 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +2.750000000001762 + 20 +-5.000000000000909 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +33797 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +7.100000000001842 + 20 +-4.249999855000993 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +33798 +330 +3378A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +9.600000000001842 + 20 +-4.249999855000993 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ENDBLK + 5 +3379C +330 +3378A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33812 +330 +3380D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C1BF76826 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C1BF76826 + 1 + + 0 +ARC + 5 +3380E +330 +3380D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.499999999998209 + 20 +1.249999854999174 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +3380F +330 +3380D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-3.499999999998124 + 20 +-1.250000145000826 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +33813 +330 +3380D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33842 +330 +3383D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4D20605B + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4D20605B + 1 + + 0 +ARC + 5 +3383E +330 +3383D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +2.500000000000014 + 20 +1.249999999999176 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ARC + 5 +3383F +330 +3383D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +2.500000000000099 + 20 +-1.250000000000824 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +33843 +330 +3383D +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33851 +330 +3384C +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C10814AB3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C10814AB3 + 1 + + 0 +INSERT + 5 +3384D +330 +3384C +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 2 +A$C1FB47A18 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +33852 +330 +3384C +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +33BD8 +330 +33BD4 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C6AFE44E4 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6AFE44E4 + 1 + + 0 +LWPOLYLINE + 5 +33BD5 +330 +33BD4 +100 +AcDbEntity + 8 +dim + 62 + 25 + 48 +2.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +0.0 + 20 +1.624999999999943 + 10 +-8.0 + 20 +1.624999999999943 + 10 +-8.0 + 20 +-1.624999999999943 + 10 +0.0 + 20 +-1.624999999999943 + 0 +ENDBLK + 5 +33BD9 +330 +33BD4 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3400B +330 +3400A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +D10 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +D10 + 1 + + 0 +LWPOLYLINE + 5 +3400C +330 +3400A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.0127 + 10 +-0.00635 + 20 +0.0 + 42 +1.0 + 10 +0.00635 + 20 +0.0 + 42 +1.0 + 0 +ENDBLK + 5 +3400D +330 +3400A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3400F +330 +3400E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +D17 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +D17 + 1 + + 0 +LWPOLYLINE + 5 +34010 +330 +3400E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.09906 + 10 +-0.04953 + 20 +0.0 + 42 +1.0 + 10 +0.04953 + 20 +0.0 + 42 +1.0 + 0 +ENDBLK + 5 +34011 +330 +3400E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34013 +330 +34012 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +D32 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +D32 + 1 + + 0 +LWPOLYLINE + 5 +34014 +330 +34012 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.04953 + 10 +-0.024765 + 20 +0.0 + 42 +1.0 + 10 +0.024765 + 20 +0.0 + 42 +1.0 + 0 +ENDBLK + 5 +34015 +330 +34012 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +350A4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +DFGDGDF + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +DFGDGDF + 1 + + 0 +ARC + 5 +350A6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +516.329821783411 + 20 +-3.158488398766593 + 30 +0.0 + 40 +1.20000000000005 +100 +AcDbArc + 50 +29.99999999997499 + 51 +90.0 + 0 +LINE + 5 +350A7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +516.329821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +510.729821783412 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +350A8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +510.729821783412 + 20 +-3.158488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0 + 0 +LINE + 5 +350A9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +509.529821783412 + 20 +-3.158488398766565 + 30 +0.0 + 11 +509.5298217834113 + 21 +-110.7584883987665 + 31 +0.0 + 0 +ARC + 5 +350AA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +510.7298217834114 + 20 +-110.7584883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999968 + 0 +LINE + 5 +350AB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +510.7298217834113 + 20 +-111.9584883987665 + 30 +0.0 + 11 +516.3298217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350AC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +516.3298217834108 + 20 +-110.7584883987668 + 30 +0.0 + 40 +1.199999999999733 +100 +AcDbArc + 50 +270.0000000000196 + 51 +330.0000000000119 + 0 +ARC + 5 +350AD +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +517.6288598890874 + 20 +-111.5084883987664 + 30 +0.0 + 40 +0.3000000000000149 +100 +AcDbArc + 50 +90.00000000000978 + 51 +149.9999999999973 + 0 +LINE + 5 +350AE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +517.6288598890874 + 20 +-111.2084883987664 + 30 +0.0 + 11 +518.5798217834114 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350AF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +518.5798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999972 +100 +AcDbArc + 50 +359.9999999999976 + 51 +89.99999999998697 + 0 +LINE + 5 +350B0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +518.8798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 11 +518.8798217834113 + 21 +-111.5084883987665 + 31 +0.0 + 0 +ARC + 5 +350B1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +520.0798217834114 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999968 + 0 +LINE + 5 +350B2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +520.0798217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +523.6798217834114 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350B3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +523.6798217834107 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350B4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +524.9788598890873 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000184 +100 +AcDbArc + 50 +90.00000000000978 + 51 +149.9999999999966 + 0 +LINE + 5 +350B5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +524.9788598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +530.6798217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350B6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +530.6798217834112 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999918 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000032 + 0 +ARC + 5 +350B7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +531.9788598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999966 + 0 +LINE + 5 +350B8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +531.9788598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +532.9298217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350B9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +532.9298217834114 + 20 +-111.5084883987666 + 30 +0.0 + 40 +0.3000000000000327 +100 +AcDbArc + 50 +0.0000000000065138 + 51 +90.00000000000978 + 0 +ARC + 5 +350BA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +534.4298217834113 + 20 +-111.5084883987666 + 30 +0.0 + 40 +1.199999999999932 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +LINE + 5 +350BB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +534.4298217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +538.0298217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350BC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +538.0298217834107 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350BD +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +539.3288598890872 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000433 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999856 + 0 +LINE + 5 +350BE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +539.3288598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +545.0298217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350BF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +545.0298217834111 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999918 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000032 + 0 +ARC + 5 +350C0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +546.3288598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999479 +100 +AcDbArc + 50 +90.0 + 51 +149.999999999998 + 0 +LINE + 5 +350C1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +546.3288598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +547.2798217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350C2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +547.2798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +ARC + 5 +350C3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +548.7798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +350C4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +548.7798217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +552.3798217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350C5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +552.3798217834108 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350C6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +553.6788598890872 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000433 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999856 + 0 +LINE + 5 +350C7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +553.6788598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +559.3798217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350C8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +559.3798217834112 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000039 + 0 +ARC + 5 +350C9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +560.6788598890878 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999971 +100 +AcDbArc + 50 +90.00000000000978 + 51 +150.0000000000032 + 0 +LINE + 5 +350CA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +560.6788598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +561.6298217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350CB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +561.6298217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999758 +100 +AcDbArc + 50 +359.9999999999959 + 51 +90.0 + 0 +ARC + 5 +350CC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +563.1298217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0000000000016 + 51 +270.0 + 0 +LINE + 5 +350CD +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +563.1298217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +566.7298217834114 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350CE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +566.7298217834108 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350CF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +568.0288598890872 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.2999999999999692 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999908 + 0 +LINE + 5 +350D0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +568.0288598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +573.7298217834114 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350D1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +573.7298217834111 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000098 + 51 +330.0000000000046 + 0 +ARC + 5 +350D2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +575.0288598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999966 + 0 +LINE + 5 +350D3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +575.0288598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +575.9798217834114 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350D4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +575.9798217834114 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.00000000000978 + 0 +ARC + 5 +350D5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +577.4798217834114 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999968 + 0 +LINE + 5 +350D6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +577.4798217834114 + 20 +-112.7084883987665 + 30 +0.0 + 11 +581.0798217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350D7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +581.0798217834108 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350D8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +582.3788598890872 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000184 +100 +AcDbArc + 50 +90.00000000000978 + 51 +149.9999999999966 + 0 +LINE + 5 +350D9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +582.3788598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +588.0798217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350DA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +588.079821783411 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999918 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000032 + 0 +ARC + 5 +350DB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +589.3788598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999966 + 0 +LINE + 5 +350DC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +589.3788598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +590.3298217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350DD +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +590.3298217834113 + 20 +-111.5084883987666 + 30 +0.0 + 40 +0.3000000000000327 +100 +AcDbArc + 50 +0.0000000000065138 + 51 +90.00000000000978 + 0 +ARC + 5 +350DE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +591.8298217834113 + 20 +-111.5084883987666 + 30 +0.0 + 40 +1.199999999999932 +100 +AcDbArc + 50 +179.9999999999984 + 51 +270.0 + 0 +LINE + 5 +350DF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +591.8298217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +595.4298217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350E0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +595.4298217834107 + 20 +-111.5084883987668 + 30 +0.0 + 40 +1.19999999999969 +100 +AcDbArc + 50 +270.0000000000228 + 51 +330.0000000000105 + 0 +ARC + 5 +350E1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +596.7288598890873 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000184 +100 +AcDbArc + 50 +90.00000000000978 + 51 +149.9999999999966 + 0 +LINE + 5 +350E2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +596.7288598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +602.4298217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350E3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +602.4298217834112 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000039 + 0 +ARC + 5 +350E4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +603.7288598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999966 + 0 +LINE + 5 +350E5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +603.7288598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +604.6798217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350E6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +604.6798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +ARC + 5 +350E7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +606.1798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +350E8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +606.1798217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +609.7798217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350E9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +609.7798217834107 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350EA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +611.0788598890872 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.3000000000000433 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999856 + 0 +LINE + 5 +350EB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +611.0788598890872 + 20 +-111.9584883987665 + 30 +0.0 + 11 +616.7798217834113 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350EC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +616.7798217834111 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000039 + 0 +ARC + 5 +350ED +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +618.0788598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999971 +100 +AcDbArc + 50 +90.00000000000978 + 51 +150.0000000000032 + 0 +LINE + 5 +350EE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +618.0788598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +619.0298217834113 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350EF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +619.0298217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.2999999999999758 +100 +AcDbArc + 50 +359.9999999999959 + 51 +90.0 + 0 +ARC + 5 +350F0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +620.5298217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0000000000016 + 51 +270.0 + 0 +LINE + 5 +350F1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +620.5298217834113 + 20 +-112.7084883987665 + 30 +0.0 + 11 +624.1298217834113 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350F2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +624.1298217834108 + 20 +-111.5084883987669 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000119 + 0 +ARC + 5 +350F3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +625.4288598890871 + 20 +-112.2584883987665 + 30 +0.0 + 40 +0.2999999999999692 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999908 + 0 +LINE + 5 +350F4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +625.4288598890871 + 20 +-111.9584883987665 + 30 +0.0 + 11 +631.1298217834112 + 21 +-111.9584883987665 + 31 +0.0 + 0 +ARC + 5 +350F5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +631.129821783411 + 20 +-110.7584883987666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000098 + 51 +330.0000000000046 + 0 +ARC + 5 +350F6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +632.4288598890877 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999966 + 0 +LINE + 5 +350F7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +632.4288598890877 + 20 +-111.2084883987665 + 30 +0.0 + 11 +633.3798217834112 + 21 +-111.2084883987665 + 31 +0.0 + 0 +ARC + 5 +350F8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +633.3798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.00000000000978 + 0 +ARC + 5 +350F9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +634.8798217834113 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999968 + 0 +LINE + 5 +350FA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +634.8798217834112 + 20 +-112.7084883987665 + 30 +0.0 + 11 +638.479821783411 + 21 +-112.7084883987665 + 31 +0.0 + 0 +ARC + 5 +350FB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +681.529821783411 + 20 +-111.5084883987665 + 30 +0.0 + 40 +1.200000000000024 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999992 + 0 +LINE + 5 +350FC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +682.729821783411 + 20 +-111.5084883987665 + 30 +0.0 + 11 +682.729821783411 + 21 +-2.408488398766565 + 31 +0.0 + 0 +ARC + 5 +350FD +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +681.529821783411 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +LINE + 5 +350FE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +638.479821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +634.879821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +350FF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +634.879821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +35100 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +633.379821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +35101 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +633.379821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +632.4288598890873 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35102 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +632.4288598890876 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35103 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +631.129821783411 + 20 +-3.158488398766579 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.00000000000325 + 0 +LINE + 5 +35104 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +631.129821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +625.4288598890869 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35105 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +625.4288598890874 + 20 +-1.658488398766906 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998976 + 51 +269.9999999998893 + 0 +ARC + 5 +35106 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +624.129821783411 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.20000000000004 +100 +AcDbArc + 50 +30.00000000001649 + 51 +90.0 + 0 +LINE + 5 +35107 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +624.129821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +620.529821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35108 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +620.529821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +35109 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +619.029821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +3510A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +619.029821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +618.0788598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +3510B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +618.0788598890877 + 20 +-2.40848839876665 + 30 +0.0 + 40 +0.2999999999999261 +100 +AcDbArc + 50 +209.9999999999706 + 51 +269.9999999999674 + 0 +ARC + 5 +3510C +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +616.7798217834111 + 20 +-3.158488398766579 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.00000000000325 + 0 +LINE + 5 +3510D +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +616.779821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +611.0788598890869 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +3510E +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +611.0788598890874 + 20 +-1.658488398766934 + 30 +0.0 + 40 +0.2999999999996419 +100 +AcDbArc + 50 +209.9999999998925 + 51 +269.9999999998795 + 0 +ARC + 5 +3510F +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +609.7798217834111 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.19999999999999 +100 +AcDbArc + 50 +30.00000000002094 + 51 +90.00000000000325 + 0 +LINE + 5 +35110 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +609.7798217834111 + 20 +-1.208488398766576 + 30 +0.0 + 11 +606.179821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35111 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +606.1798217834111 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0 + 0 +ARC + 5 +35112 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +604.6798217834111 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.2999999999999545 +100 +AcDbArc + 50 +269.999999999987 + 51 +0.0 + 0 +LINE + 5 +35113 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +604.679821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +603.7288598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35114 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +603.7288598890876 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35115 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +602.429821783411 + 20 +-3.158488398766579 + 30 +0.0 + 40 +1.200000000000017 +100 +AcDbArc + 50 +30.00000000000336 + 51 +90.0 + 0 +LINE + 5 +35116 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +602.429821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +596.7288598890868 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35117 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +596.7288598890875 + 20 +-1.658488398766906 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998918 + 51 +269.9999999998795 + 0 +ARC + 5 +35118 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +595.4298217834111 + 20 +-2.408488398766536 + 30 +0.0 + 40 +1.199999999999962 +100 +AcDbArc + 50 +30.00000000001578 + 51 +90.0 + 0 +LINE + 5 +35119 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +595.4298217834111 + 20 +-1.208488398766576 + 30 +0.0 + 11 +591.829821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +3511A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +591.829821783411 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.200000000000017 +100 +AcDbArc + 50 +90.0 + 51 +179.9999999999984 + 0 +ARC + 5 +3511B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +590.329821783411 + 20 +-2.408488398766593 + 30 +0.0 + 40 +0.2999999999999545 +100 +AcDbArc + 50 +270.0 + 51 +0.0000000000056996 + 0 +LINE + 5 +3511C +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +590.329821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +589.3788598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +3511D +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +589.3788598890876 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +3511E +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +588.079821783411 + 20 +-3.158488398766536 + 30 +0.0 + 40 +1.199999999999947 +100 +AcDbArc + 50 +30.00000000000336 + 51 +90.0 + 0 +LINE + 5 +3511F +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +588.079821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +582.3788598890869 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35120 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +582.3788598890875 + 20 +-1.658488398766849 + 30 +0.0 + 40 +0.2999999999997272 +100 +AcDbArc + 50 +209.9999999999035 + 51 +269.9999999998893 + 0 +ARC + 5 +35121 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +581.079821783411 + 20 +-2.408488398766536 + 30 +0.0 + 40 +1.199999999999962 +100 +AcDbArc + 50 +30.00000000001578 + 51 +90.0 + 0 +LINE + 5 +35122 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +581.079821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +577.479821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35123 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +577.479821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +35124 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +575.979821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +35125 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +575.979821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +575.0288598890875 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35126 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +575.0288598890877 + 20 +-2.40848839876665 + 30 +0.0 + 40 +0.2999999999999261 +100 +AcDbArc + 50 +209.9999999999684 + 51 +269.9999999999544 + 0 +ARC + 5 +35127 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +573.729821783411 + 20 +-3.158488398766536 + 30 +0.0 + 40 +1.199999999999947 +100 +AcDbArc + 50 +30.00000000000336 + 51 +90.0 + 0 +LINE + 5 +35128 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +573.729821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +568.0288598890869 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35129 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +568.0288598890875 + 20 +-1.658488398766906 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998976 + 51 +269.9999999998893 + 0 +ARC + 5 +3512A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +566.729821783411 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.20000000000004 +100 +AcDbArc + 50 +30.00000000001649 + 51 +90.0 + 0 +LINE + 5 +3512B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +566.729821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +563.129821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +3512C +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +563.129821783411 + 20 +-2.408488398766536 + 30 +0.0 + 40 +1.19999999999996 +100 +AcDbArc + 50 +90.0 + 51 +180.0000000000016 + 0 +ARC + 5 +3512D +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +561.629821783411 + 20 +-2.408488398766536 + 30 +0.0 + 40 +0.3000000000000682 +100 +AcDbArc + 50 +270.0 + 51 +359.9999999999943 + 0 +LINE + 5 +3512E +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +561.629821783411 + 20 +-2.708488398766576 + 30 +0.0 + 11 +560.6788598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +3512F +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +560.6788598890876 + 20 +-2.40848839876665 + 30 +0.0 + 40 +0.2999999999999261 +100 +AcDbArc + 50 +209.9999999999706 + 51 +269.9999999999674 + 0 +ARC + 5 +35130 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +559.379821783411 + 20 +-3.158488398766579 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.00000000000325 + 0 +LINE + 5 +35131 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +559.379821783411 + 20 +-1.958488398766576 + 30 +0.0 + 11 +553.6788598890869 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35132 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +553.6788598890876 + 20 +-1.658488398766934 + 30 +0.0 + 40 +0.2999999999996419 +100 +AcDbArc + 50 +209.9999999998925 + 51 +269.9999999998795 + 0 +ARC + 5 +35133 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +552.3798217834111 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.19999999999999 +100 +AcDbArc + 50 +30.00000000002094 + 51 +90.00000000000325 + 0 +LINE + 5 +35134 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +552.379821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +548.7798217834111 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35135 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +548.7798217834111 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0 + 0 +ARC + 5 +35136 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +547.2798217834111 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.2999999999999545 +100 +AcDbArc + 50 +269.999999999987 + 51 +0.0 + 0 +LINE + 5 +35137 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +547.2798217834111 + 20 +-2.708488398766576 + 30 +0.0 + 11 +546.3288598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35138 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +546.3288598890877 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35139 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +545.0298217834111 + 20 +-3.158488398766579 + 30 +0.0 + 40 +1.200000000000017 +100 +AcDbArc + 50 +30.00000000000336 + 51 +90.0 + 0 +LINE + 5 +3513A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +545.0298217834111 + 20 +-1.958488398766576 + 30 +0.0 + 11 +539.328859889087 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +3513B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +539.3288598890875 + 20 +-1.658488398766906 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998918 + 51 +269.9999999998795 + 0 +ARC + 5 +3513C +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +538.0298217834111 + 20 +-2.408488398766536 + 30 +0.0 + 40 +1.199999999999962 +100 +AcDbArc + 50 +30.00000000001578 + 51 +90.0 + 0 +LINE + 5 +3513D +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +538.0298217834111 + 20 +-1.208488398766576 + 30 +0.0 + 11 +534.4298217834111 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +3513E +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +534.4298217834111 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.200000000000017 +100 +AcDbArc + 50 +90.0 + 51 +179.9999999999984 + 0 +ARC + 5 +3513F +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +532.9298217834111 + 20 +-2.408488398766593 + 30 +0.0 + 40 +0.2999999999999545 +100 +AcDbArc + 50 +270.0 + 51 +0.0000000000056996 + 0 +LINE + 5 +35140 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +532.9298217834111 + 20 +-2.708488398766576 + 30 +0.0 + 11 +531.9788598890874 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35141 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +531.9788598890876 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35142 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +530.6798217834111 + 20 +-3.158488398766536 + 30 +0.0 + 40 +1.199999999999947 +100 +AcDbArc + 50 +30.00000000000336 + 51 +90.0 + 0 +LINE + 5 +35143 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +530.6798217834111 + 20 +-1.958488398766576 + 30 +0.0 + 11 +524.978859889087 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35144 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +524.9788598890875 + 20 +-1.658488398766849 + 30 +0.0 + 40 +0.2999999999997272 +100 +AcDbArc + 50 +209.9999999999056 + 51 +269.9999999998893 + 0 +ARC + 5 +35145 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +523.6798217834111 + 20 +-2.408488398766536 + 30 +0.0 + 40 +1.199999999999948 +100 +AcDbArc + 50 +30.00000000001508 + 51 +90.0 + 0 +LINE + 5 +35146 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +523.6798217834111 + 20 +-1.208488398766576 + 30 +0.0 + 11 +520.079821783411 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35147 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +520.079821783411 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +35148 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +518.879821783411 + 20 +-2.408488398766565 + 30 +0.0 + 11 +518.879821783411 + 21 +-2.408488398766593 + 31 +0.0 + 0 +ARC + 5 +35149 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +518.579821783411 + 20 +-2.408488398766579 + 30 +0.0 + 40 +0.3000000000000682 +100 +AcDbArc + 50 +270.0000000000098 + 51 +359.9999999999976 + 0 +LINE + 5 +3514A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +518.579821783411 + 20 +-2.708488398766605 + 30 +0.0 + 11 +517.628859889089 + 21 +-2.708488398766633 + 31 +0.0 + 0 +ARC + 5 +3514B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +517.6288598890881 + 20 +-2.408488398766139 + 30 +0.0 + 40 +0.3000000000004945 +100 +AcDbArc + 50 +210.0000000001398 + 51 +270.0000000001629 + 0 +ARC + 5 +355E0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +638.4798217834107 + 20 +-111.5084885437668 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000112 + 0 +ARC + 5 +355E1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +639.778859889087 + 20 +-112.2584885437664 + 30 +0.0 + 40 +0.2999999999999692 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999901 + 0 +LINE + 5 +355E2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +639.778859889087 + 20 +-111.9584885437664 + 30 +0.0 + 11 +645.4798217834111 + 21 +-111.9584885437665 + 31 +0.0 + 0 +ARC + 5 +355E3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +645.4798217834109 + 20 +-110.7584885437666 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000053 + 0 +ARC + 5 +355E4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +646.7788598890877 + 20 +-111.5084885437665 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999973 + 0 +LINE + 5 +355E5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +646.7788598890877 + 20 +-111.2084885437665 + 30 +0.0 + 11 +647.7298217834111 + 21 +-111.2084885437665 + 31 +0.0 + 0 +ARC + 5 +355E6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +647.7298217834114 + 20 +-111.5084885437665 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.00000000000651 + 0 +ARC + 5 +355E7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +649.2298217834114 + 20 +-111.5084885437665 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +LINE + 5 +355E8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +649.2298217834111 + 20 +-112.7084885437665 + 30 +0.0 + 11 +652.829821783411 + 21 +-112.7084885437665 + 31 +0.0 + 0 +ARC + 5 +355E9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +652.8298217834108 + 20 +-111.5084885437673 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000112 + 0 +ARC + 5 +355EA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +654.1288598890872 + 20 +-112.2584885437669 + 30 +0.0 + 40 +0.2999999999999692 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999901 + 0 +LINE + 5 +355EB +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +654.1288598890872 + 20 +-111.9584885437669 + 30 +0.0 + 11 +659.8298217834113 + 21 +-111.9584885437669 + 31 +0.0 + 0 +ARC + 5 +355EC +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +659.829821783411 + 20 +-110.758488543767 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000053 + 0 +ARC + 5 +355ED +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +661.1288598890876 + 20 +-111.5084885437669 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999973 + 0 +LINE + 5 +355EE +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +661.1288598890876 + 20 +-111.2084885437669 + 30 +0.0 + 11 +662.0798217834113 + 21 +-111.2084885437669 + 31 +0.0 + 0 +ARC + 5 +355EF +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +662.0798217834113 + 20 +-111.5084885437669 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.00000000000651 + 0 +ARC + 5 +355F0 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +663.5798217834113 + 20 +-111.5084885437669 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +LINE + 5 +355F1 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +663.5798217834113 + 20 +-112.7084885437669 + 30 +0.0 + 11 +667.179821783411 + 21 +-112.7084885437669 + 31 +0.0 + 0 +ARC + 5 +355F2 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +667.1798217834107 + 20 +-111.5084885437681 + 30 +0.0 + 40 +1.199999999999648 +100 +AcDbArc + 50 +270.000000000026 + 51 +330.0000000000112 + 0 +ARC + 5 +355F3 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +668.4788598890871 + 20 +-112.2584885437678 + 30 +0.0 + 40 +0.2999999999999692 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999901 + 0 +LINE + 5 +355F4 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +668.4788598890871 + 20 +-111.9584885437677 + 30 +0.0 + 11 +674.1798217834112 + 21 +-111.9584885437678 + 31 +0.0 + 0 +ARC + 5 +355F5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +674.179821783411 + 20 +-110.7584885437679 + 30 +0.0 + 40 +1.199999999999868 +100 +AcDbArc + 50 +270.0000000000065 + 51 +330.0000000000053 + 0 +ARC + 5 +355F6 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +675.4788598890876 + 20 +-111.5084885437678 + 30 +0.0 + 40 +0.300000000000022 +100 +AcDbArc + 50 +90.0 + 51 +149.9999999999973 + 0 +LINE + 5 +355F7 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +675.4788598890876 + 20 +-111.2084885437678 + 30 +0.0 + 11 +676.4298217834112 + 21 +-111.2084885437678 + 31 +0.0 + 0 +ARC + 5 +355F8 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +676.4298217834113 + 20 +-111.5084885437678 + 30 +0.0 + 40 +0.3000000000000043 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.00000000000651 + 0 +ARC + 5 +355F9 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +677.9298217834113 + 20 +-111.5084885437678 + 30 +0.0 + 40 +1.200000000000045 +100 +AcDbArc + 50 +180.0 + 51 +269.9999999999935 + 0 +LINE + 5 +355FA +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +677.9298217834112 + 20 +-112.7084885437678 + 30 +0.0 + 11 +681.529821783411 + 21 +-112.7084885437678 + 31 +0.0 + 0 +LINE + 5 +35940 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +652.829821783411 + 20 +-1.208488398766576 + 30 +0.0 + 11 +649.2298217834109 + 21 +-1.208488398766576 + 31 +0.0 + 0 +ARC + 5 +35941 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +649.2298217834109 + 20 +-2.408488398766565 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +35942 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +647.7298217834109 + 20 +-2.408488398766565 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +35943 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +647.7298217834109 + 20 +-2.708488398766576 + 30 +0.0 + 11 +646.7788598890872 + 21 +-2.708488398766576 + 31 +0.0 + 0 +ARC + 5 +35944 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +646.7788598890875 + 20 +-2.408488398766707 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35945 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +645.4798217834109 + 20 +-3.158488398766593 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.0 + 0 +LINE + 5 +35946 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +645.4798217834109 + 20 +-1.958488398766576 + 30 +0.0 + 11 +639.7788598890868 + 21 +-1.958488398766576 + 31 +0.0 + 0 +ARC + 5 +35947 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +639.7788598890875 + 20 +-1.658488398766906 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998983 + 51 +269.9999999998893 + 0 +ARC + 5 +35948 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +638.4798217834109 + 20 +-2.408488398766593 + 30 +0.0 + 40 +1.20000000000004 +100 +AcDbArc + 50 +30.00000000001649 + 51 +90.0 + 0 +LINE + 5 +35949 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +667.179821783411 + 20 +-1.208488253766632 + 30 +0.0 + 11 +663.579821783411 + 21 +-1.208488253766632 + 31 +0.0 + 0 +ARC + 5 +3594A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +663.579821783411 + 20 +-2.40848825376662 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3594B +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +662.079821783411 + 20 +-2.40848825376662 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +3594C +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +662.079821783411 + 20 +-2.708488253766632 + 30 +0.0 + 11 +661.1288598890874 + 21 +-2.708488253766632 + 31 +0.0 + 0 +ARC + 5 +3594D +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +661.1288598890876 + 20 +-2.408488253766762 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +3594E +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +659.829821783411 + 20 +-3.158488253766649 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.0 + 0 +LINE + 5 +3594F +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +659.829821783411 + 20 +-1.958488253766632 + 30 +0.0 + 11 +654.1288598890869 + 21 +-1.958488253766632 + 31 +0.0 + 0 +ARC + 5 +35950 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +654.1288598890874 + 20 +-1.658488253766961 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998983 + 51 +269.9999999998893 + 0 +ARC + 5 +35951 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +652.829821783411 + 20 +-2.408488253766649 + 30 +0.0 + 40 +1.20000000000004 +100 +AcDbArc + 50 +30.00000000001649 + 51 +90.0 + 0 +LINE + 5 +35952 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +681.529821783411 + 20 +-1.208488398767884 + 30 +0.0 + 11 +677.929821783411 + 21 +-1.208488398767884 + 31 +0.0 + 0 +ARC + 5 +35953 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +677.929821783411 + 20 +-2.408488398767872 + 30 +0.0 + 40 +1.199999999999989 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +35954 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +676.429821783411 + 20 +-2.408488398767872 + 30 +0.0 + 40 +0.3000000000000114 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +35955 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +676.429821783411 + 20 +-2.708488398767884 + 30 +0.0 + 11 +675.4788598890873 + 21 +-2.708488398767884 + 31 +0.0 + 0 +ARC + 5 +35956 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +675.4788598890875 + 20 +-2.408488398768014 + 30 +0.0 + 40 +0.2999999999998693 +100 +AcDbArc + 50 +209.9999999999626 + 51 +269.9999999999544 + 0 +ARC + 5 +35957 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +674.179821783411 + 20 +-3.158488398767901 + 30 +0.0 + 40 +1.199999999999968 +100 +AcDbArc + 50 +30.00000000000782 + 51 +90.0 + 0 +LINE + 5 +35958 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +674.179821783411 + 20 +-1.958488398767884 + 30 +0.0 + 11 +668.4788598890868 + 21 +-1.958488398767884 + 31 +0.0 + 0 +ARC + 5 +35959 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +668.4788598890874 + 20 +-1.658488398768213 + 30 +0.0 + 40 +0.2999999999996703 +100 +AcDbArc + 50 +209.9999999998983 + 51 +269.9999999998893 + 0 +ARC + 5 +3595A +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +667.179821783411 + 20 +-2.408488398767901 + 30 +0.0 + 40 +1.20000000000004 +100 +AcDbArc + 50 +30.00000000001649 + 51 +90.0 + 0 +ENDBLK + 5 +350A5 +330 +350A3 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +35441 +330 +3543A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C13983F57 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C13983F57 + 1 + + 0 +INSERT + 5 +3543B +330 +3543A +100 +AcDbEntity + 8 +BOM + 62 + 6 +370 + -1 +100 +AcDbBlockReference + 2 +DFGDGDF + 10 +-628.3298217834092 + 20 +107.9584885437656 + 30 +0.0 + 0 +INSERT + 5 +3543C +330 +3543A +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C050476C0 + 10 +0.0 + 20 +-0.0000000000000568 + 30 +0.0 + 50 +90.0 + 0 +ENDBLK + 5 +35442 +330 +3543A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +35F63 +330 +35F5E +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C6C5846A4 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6C5846A4 + 1 + + 0 +CIRCLE + 5 +35F5F +330 +35F5E +100 +AcDbEntity + 8 +dim + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-1.868656694583194 + 20 +0.0 + 30 +0.0 + 40 +1.868656694583201 + 0 +MTEXT + 5 +35F60 +330 +35F5E +100 +AcDbEntity + 8 +dim + 62 + 6 +370 + -1 +100 +AcDbMText + 10 +-1.868656694583194 + 20 +0.0 + 30 +0.0 + 40 +1.5 + 41 +2.558937642170491 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\Ftxt.shx|c0;3} + 73 + 1 + 44 +1.0 + 0 +ENDBLK + 5 +35F64 +330 +35F5E +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36307 +330 +36304 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C203734BA + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C203734BA + 1 + + 0 +ARC + 5 +36308 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.299999998920001 + 20 +3.299999998920029 + 30 +0.0 + 40 +0.19869101994 +100 +AcDbArc + 50 +0.0 + 51 +90.0000002316999 + 0 +ARC + 5 +36309 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +3.299999998920001 + 20 +-3.300000001459992 + 30 +0.0 + 40 +0.19869101994 +100 +AcDbArc + 50 +270.0000072291995 + 51 +0.0 + 0 +ARC + 5 +3630A +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.199999998260012 + 20 +3.19999999826004 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +3630B +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.199999998260012 + 20 +-3.200000000799974 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +3630C +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +2.999999999480039 + 20 +-3.85000000127998 + 30 +0.0 + 40 +0.35000000104 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3630D +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +4.84308895236002 + 20 +-4.928376411959974 + 30 +0.0 + 40 +2.19308897932 +100 +AcDbArc + 50 +179.9910830705999 + 51 +185.6635578775997 + 0 +ARC + 5 +3630E +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +4.844499797900042 + 20 +-4.929460369659964 + 30 +0.0 + 40 +2.19432486966 +100 +AcDbArc + 50 +191.7336029998999 + 51 +197.3214436626001 + 0 +ARC + 5 +3630F +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +4.849999992640008 + 20 +-4.928035104539973 + 30 +0.0 + 40 +2.19999999928 +100 +AcDbArc + 50 +197.3142307355 + 51 +208.8480527978 + 0 +ARC + 5 +36310 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +4.849999997720005 + 20 +-4.928035101999981 + 30 +0.0 + 40 +2.19999999928 +100 +AcDbArc + 50 +185.6546409472998 + 51 +191.7408159056 + 0 +ARC + 5 +36311 +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbCircle + 10 +4.85000000026001 + 20 +-13.67999999819995 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36312 +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbCircle + 10 +4.85000000026001 + 20 +-17.08000000031996 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36313 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.85000000026001 + 20 +-13.67999999819995 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +0.0 + 51 +90.00000000010013 + 0 +ARC + 5 +36314 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +4.85000000026001 + 20 +-17.08000000031996 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36315 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +4.45000000016006 + 20 +-12.87999999799993 + 30 +0.0 + 40 +0.50000000076 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36316 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.300000001459992 + 20 +3.299999998920029 + 30 +0.0 + 40 +0.19869101994 +100 +AcDbArc + 50 +90.00000034250006 + 51 +180.0000001033997 + 0 +ARC + 5 +36317 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-3.300000001459992 + 20 +-3.300000001459992 + 30 +0.0 + 40 +0.19869101994 +100 +AcDbArc + 50 +180.0000001654996 + 51 +270.0000002316999 + 0 +ARC + 5 +36318 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.20000000079996 + 20 +3.19999999826004 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36319 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.20000000079996 + 20 +-3.200000000799974 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +3631A +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +-3.24999999985998 + 20 +-4.000000000999975 + 30 +0.0 + 40 +0.50000000076 +100 +AcDbArc + 50 +0.0 + 51 +89.99999999989986 + 0 +ARC + 5 +3631B +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +-0.1500005305800016 + 20 +-6.214052502019982 + 30 +0.0 + 40 +2.59999999938 +100 +AcDbArc + 50 +180.0001361038999 + 51 +208.8479231815005 + 0 +ARC + 5 +3631C +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +0.0499999990600202 + 20 +-6.606074070019972 + 30 +0.0 + 40 +2.59999999938 +100 +AcDbArc + 50 +202.9068592904998 + 51 +209.3022074776996 + 0 +ARC + 5 +3631D +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbCircle + 10 +-3.54999999929997 + 20 +-13.67999999819995 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +90.0 + 51 +180.0000000001002 + 0 +ARC + 5 +3631E +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbCircle + 10 +-3.54999999929997 + 20 +-17.08000000031996 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +3631F +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.54999999929997 + 20 +-17.08000000031996 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36320 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.54999999929997 + 20 +-13.67999999819995 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +90.0 + 51 +180.0000000001002 + 0 +ARC + 5 +36321 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +-2.449999999660008 + 20 +-12.37999999977993 + 30 +0.0 + 40 +0.9999999989799999 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36322 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +-4.450000000159974 + 20 +-10.03009974671997 + 30 +0.0 + 40 +2.99999999948 +100 +AcDbArc + 50 +0.0 + 51 +29.30220748560046 + 0 +ARC + 5 +36323 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbCircle + 10 +-0.0500000015999689 + 20 +-8.882696509399992 + 30 +0.0 + 40 +4.000000001 +100 +AcDbArc + 50 +0.0 + 51 +28.84805928539971 + 0 +LINE + 5 +36324 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +3.199999998260012 + 20 +3.50000000024005 + 30 +0.0 + 11 +-3.20000000079996 + 21 +3.50000000024005 + 31 +0.0 + 0 +LINE + 5 +36325 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.21155984306003 + 20 +3.498691018860029 + 30 +0.0 + 11 +3.299999998920001 + 21 +3.498691018860029 + 31 +0.0 + 0 +LINE + 5 +36326 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.300000001459992 + 20 +3.498691018860029 + 30 +0.0 + 11 +-3.211559843059987 + 21 +3.498691018860029 + 31 +0.0 + 0 +LINE + 5 +36327 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.480843724099969 + 20 +3.299999998920029 + 30 +0.0 + 11 +-3.498691021399992 + 21 +3.299999998920029 + 31 +0.0 + 0 +LINE + 5 +36328 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.498691018860029 + 20 +3.300000217360008 + 30 +0.0 + 11 +3.480843645360054 + 21 +3.300000217360008 + 31 +0.0 + 0 +LINE + 5 +36329 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.498691021399992 + 20 +-3.300000001459992 + 30 +0.0 + 11 +-3.480843724099969 + 21 +-3.300000001459992 + 31 +0.0 + 0 +LINE + 5 +3632A +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.480843652980056 + 20 +-3.300000199579969 + 30 +0.0 + 11 +3.498691018860029 + 21 +-3.300000199579969 + 31 +0.0 + 0 +LINE + 5 +3632B +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.24999999985998 + 20 +-3.498691021399992 + 30 +0.0 + 11 +-3.299999998919986 + 21 +-3.498691021399992 + 31 +0.0 + 0 +LINE + 5 +3632C +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.300000019240045 + 20 +-3.498691021399992 + 30 +0.0 + 11 +3.21155984306003 + 21 +-3.498691021399992 + 31 +0.0 + 0 +LINE + 5 +3632D +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +3.199999998260012 + 20 +-3.500000000239964 + 30 +0.0 + 11 +-3.24999999985998 + 21 +-3.500000000239964 + 31 +0.0 + 0 +LINE + 5 +3632E +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +5.149999999700043 + 20 +-17.08000000031996 + 30 +0.0 + 11 +5.149999999700043 + 21 +-13.67999999819995 + 31 +0.0 + 0 +LINE + 5 +3632F +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbLine + 10 +5.049999999039969 + 20 +-17.08000000031996 + 30 +0.0 + 11 +5.049999999039969 + 21 +-13.67999999819995 + 31 +0.0 + 0 +LINE + 5 +36330 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +3.453609120200056 + 20 +-6.952742332739959 + 30 +0.0 + 11 +2.923014862620008 + 21 +-5.989509679579982 + 31 +0.0 + 0 +LINE + 5 +36331 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +3.949999999400049 + 20 +-12.87999999799993 + 30 +0.0 + 11 +3.949999999400049 + 21 +-8.882696509399992 + 31 +0.0 + 0 +LINE + 5 +36332 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +3.50000000024005 + 20 +-3.200000000799974 + 30 +0.0 + 11 +3.50000000024005 + 21 +3.19999999826004 + 31 +0.0 + 0 +LINE + 5 +36333 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.498691018860029 + 20 +-3.211559843059987 + 30 +0.0 + 11 +3.498691018860029 + 21 +-3.300000199579969 + 31 +0.0 + 0 +LINE + 5 +36334 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.498691018860029 + 20 +3.300000217360008 + 30 +0.0 + 11 +3.498691018860029 + 21 +3.211559840520025 + 31 +0.0 + 0 +LINE + 5 +36335 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.299999998920001 + 20 +3.480843721560007 + 30 +0.0 + 11 +3.299999998920001 + 21 +3.498691018860029 + 31 +0.0 + 0 +LINE + 5 +36336 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +3.300000019240045 + 20 +-3.498691021399992 + 30 +0.0 + 11 +3.300000019240045 + 21 +-3.480843716479967 + 31 +0.0 + 0 +LINE + 5 +36337 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +2.649999998440023 + 20 +-4.928035101999981 + 30 +0.0 + 11 +2.649999998440023 + 21 +-3.85000000127998 + 31 +0.0 + 0 +LINE + 5 +36338 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +-1.450000000679978 + 20 +-12.37999999977993 + 30 +0.0 + 11 +-1.450000000679978 + 21 +-10.03009974671997 + 31 +0.0 + 0 +LINE + 5 +36339 +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +-2.427348975619978 + 20 +-7.46851705175996 + 30 +0.0 + 11 +-2.344960918399991 + 21 +-7.61808306453996 + 31 +0.0 + 0 +LINE + 5 +3633A +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +-1.83384875038 + 20 +-8.56185159609997 + 30 +0.0 + 11 +-2.217331084759977 + 21 +-7.87855579987999 + 31 +0.0 + 0 +LINE + 5 +3633B +330 +36304 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbLine + 10 +-2.750000001639961 + 20 +-4.000000000999975 + 30 +0.0 + 11 +-2.750000001639961 + 21 +-6.214052367399972 + 31 +0.0 + 0 +LINE + 5 +3633C +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +4.85000000026001 + 20 +-13.37999999875993 + 30 +0.0 + 11 +-3.54999999929997 + 21 +-13.37999999875993 + 31 +0.0 + 0 +LINE + 5 +3633D +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbLine + 10 +4.85000000026001 + 20 +-13.47999999941996 + 30 +0.0 + 11 +-3.54999999929997 + 21 +-13.47999999941996 + 31 +0.0 + 0 +LINE + 5 +3633E +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.299999998919986 + 20 +-3.480843724099969 + 30 +0.0 + 11 +-3.299999998919986 + 21 +-3.498691021399992 + 31 +0.0 + 0 +LINE + 5 +3633F +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.300000001459992 + 20 +3.498691018860029 + 30 +0.0 + 11 +-3.300000001459992 + 21 +3.480843721560007 + 31 +0.0 + 0 +LINE + 5 +36340 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.498691021399992 + 20 +3.211559840520025 + 30 +0.0 + 11 +-3.498691021399992 + 21 +3.299999998920029 + 31 +0.0 + 0 +LINE + 5 +36341 +330 +36304 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbLine + 10 +-3.498691021399992 + 20 +-3.300000001459992 + 30 +0.0 + 11 +-3.498691021399992 + 21 +-3.211559843059987 + 31 +0.0 + 0 +LINE + 5 +36342 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.500000000240007 + 20 +-3.200000000799974 + 30 +0.0 + 11 +-3.500000000240007 + 21 +3.19999999826004 + 31 +0.0 + 0 +LINE + 5 +36343 +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbLine + 10 +-3.750000000619991 + 20 +-13.67999999819995 + 30 +0.0 + 11 +-3.750000000619991 + 21 +-17.08000000031996 + 31 +0.0 + 0 +LINE + 5 +36344 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.85000000127998 + 20 +-13.67999999819995 + 30 +0.0 + 11 +-3.85000000127998 + 21 +-17.08000000031996 + 31 +0.0 + 0 +LINE + 5 +36345 +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbLine + 10 +-3.54999999929997 + 20 +-17.27999999909994 + 30 +0.0 + 11 +4.85000000026001 + 21 +-17.27999999909994 + 31 +0.0 + 0 +LINE + 5 +36346 +330 +36304 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbLine + 10 +-3.54999999929997 + 20 +-17.37999999975995 + 30 +0.0 + 11 +4.85000000026001 + 21 +-17.37999999975995 + 31 +0.0 + 0 +HATCH + 5 +36347 +330 +36304 +100 +AcDbEntity + 8 +0 + 62 + 252 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI32 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +-3.549999997934066 + 20 +-17.27999999909994 + 42 +-0.414213568093189 + 10 +-3.750000000619991 + 20 +-17.08000000031996 + 42 +0.0 + 10 +-3.750000000619991 + 20 +-13.67999999819995 + 42 +-0.4142135660928181 + 10 +-3.54999999929997 + 20 +-13.47999999941996 + 42 +0.0 + 10 +4.85000000026001 + 20 +-13.47999999941996 + 42 +-0.414213562372991 + 10 +5.049999999039969 + 20 +-13.67999999819995 + 42 +0.0 + 10 +5.049999999039969 + 20 +-17.08000000031996 + 42 +-0.4142135623730326 + 10 +4.85000000026001 + 20 +-17.27999999909994 + 42 +0.0 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.5 + 77 + 0 + 78 + 2 + 53 +45.0 + 43 +-78.43087602653567 + 44 +73.64160619090086 + 45 +-0.397747564417433 + 46 +0.397747564417433 + 79 + 0 + 53 +45.0 + 43 +-78.16571098403567 + 44 +73.64160619090086 + 45 +-0.397747564417433 + 46 +0.397747564417433 + 79 + 0 + 47 +0.0197043706608504 + 98 + 1 + 10 +0.7026203665732282 + 20 +-16.12481125860967 + 0 +LINE + 5 +36348 +330 +36304 +100 +AcDbEntity + 8 +Outline + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +2.500000000240064 + 20 +-2.500000000239964 + 30 +0.0 + 11 +-2.500000000240021 + 21 +-2.500000000239964 + 31 +0.0 + 0 +LINE + 5 +36349 +330 +36304 +100 +AcDbEntity + 8 +Outline + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +2.500000000240064 + 20 +-2.500000000239964 + 30 +0.0 + 11 +2.50000000024005 + 21 +2.50000000024005 + 31 +0.0 + 0 +LINE + 5 +3634A +330 +36304 +100 +AcDbEntity + 8 +Outline + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +2.50000000024005 + 20 +2.50000000024005 + 30 +0.0 + 11 +-2.500000000239993 + 21 +2.50000000024005 + 31 +0.0 + 0 +LINE + 5 +3634B +330 +36304 +100 +AcDbEntity + 8 +Outline + 62 + 2 +370 + -1 +100 +AcDbLine + 10 +-2.500000000240021 + 20 +-2.500000000239964 + 30 +0.0 + 11 +-2.500000000239993 + 21 +2.50000000024005 + 31 +0.0 + 0 +HATCH + 5 +3634C +330 +36304 +100 +AcDbEntity + 8 +Outline + 62 + 2 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +AR-CONC + 70 + 0 + 71 + 0 + 91 + 4 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.500000000240064 + 20 +2.50000000024005 + 10 +-0.0002355164200054 + 20 +2.50000000024005 + 10 +-0.0002355164200054 + 20 +-0.0000662940000211 + 10 +2.50000000024005 + 20 +-0.0000662939999927 + 97 + 0 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +-0.0002355164200054 + 20 +2.50000000024005 + 10 +-2.500000000239993 + 20 +2.50000000024005 + 10 +-2.500000000240007 + 20 +-0.0000662940000211 + 10 +-0.0002355164199912 + 20 +-0.0000662939999927 + 97 + 0 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +-0.000235516419977 + 20 +-0.0000662940000211 + 10 +-2.500000000240007 + 20 +-0.0000662939999927 + 10 +-2.500000000240021 + 20 +-2.500000000239972 + 10 +-0.0002355164199912 + 20 +-2.500000000239972 + 97 + 0 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +2.500000000240064 + 20 +-0.0000662939999927 + 10 +-0.0002355164199912 + 20 +-0.0000662939999927 + 10 +-0.0002355164199912 + 20 +-2.500000000239972 + 10 +2.500000000240064 + 20 +-2.500000000239972 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +0.1 + 77 + 0 + 78 + 13 + 53 +49.99999999999999 + 43 +-76.98767228363785 + 44 +-91.83777590778891 + 45 +0.7172601826007535 + 46 +-0.0627521349825951 + 79 + 2 + 49 +0.075 + 49 +-0.8250000000000001 + 53 +355.0 + 43 +-76.98767228363785 + 44 +-91.83777590778891 + 45 +-0.138751333613 + 46 +0.7521921337000119 + 79 + 2 + 49 +0.06 + 49 +-0.66 + 53 +100.4514 + 43 +-76.92790060363785 + 44 +-91.84300524778891 + 45 +0.5785093817140216 + 46 +0.6894395420609536 + 79 + 2 + 49 +0.06374019 + 49 +-0.7011421119999999 + 53 +46.1842 + 43 +-76.98767228363785 + 44 +-91.63777590778892 + 45 +1.067241048625645 + 46 +-0.1655190143290181 + 79 + 2 + 49 +0.1125 + 49 +-1.2375 + 53 +96.63559999999998 + 43 +-76.89873553863785 + 44 +-91.65156921478892 + 45 +0.9346627055487033 + 46 +0.9741178709004418 + 79 + 2 + 49 +0.095610288 + 49 +-1.051713 + 53 +351.1842 + 43 +-76.98767228363785 + 44 +-91.63777590778892 + 45 +0.9346619451336272 + 46 +0.9741186009253247 + 79 + 2 + 49 +0.09 + 49 +-0.9900000000000001 + 53 +21.0 + 43 +-76.88767228363784 + 44 +-91.68777590778892 + 45 +0.5969070521184617 + 46 +-0.4026188906653388 + 79 + 2 + 49 +0.075 + 49 +-0.8250000000000001 + 53 +326.0 + 43 +-76.88767228363784 + 44 +-91.68777590778892 + 45 +0.2433153319215817 + 46 +0.7251500450468531 + 79 + 2 + 49 +0.06 + 49 +-0.66 + 53 +71.4514 + 43 +-76.83793005063785 + 44 +-91.72132751378892 + 45 +0.84022262858149 + 46 +0.3225304967099524 + 79 + 2 + 49 +0.06374019 + 49 +-0.701142112 + 53 +37.5 + 43 +-76.98767228363785 + 44 +-91.83777590778891 + 45 +0.0121598553172907 + 46 +0.3328938538313115 + 79 + 6 + 49 +0.0 + 49 +-0.652 + 49 +0.0 + 49 +-0.67 + 49 +0.0 + 49 +-0.6625000000000001 + 53 +7.499999999999999 + 43 +-76.98767228363785 + 44 +-91.83777590778891 + 45 +0.2630695374421486 + 46 +0.3944117118823602 + 79 + 6 + 49 +0.0 + 49 +-0.382 + 49 +0.0 + 49 +-0.637 + 49 +0.0 + 49 +-0.2525 + 53 +327.5 + 43 +-77.21067228363785 + 44 +-91.83777590778891 + 45 +0.5338224361724091 + 46 +-0.0225548717343798 + 79 + 6 + 49 +0.0 + 49 +-0.25 + 49 +0.0 + 49 +-0.78 + 49 +0.0 + 49 +-1.035 + 53 +317.5 + 43 +-77.31067228363784 + 44 +-91.83777590778891 + 45 +0.5831861693423862 + 46 +0.1001049823323176 + 79 + 6 + 49 +0.0 + 49 +-0.325 + 49 +0.0 + 49 +-0.518 + 49 +0.0 + 49 +-0.735 + 47 +0.0308191507351212 + 98 + 4 + 10 +1.000345946767482 + 20 +1.021920559901048 + 10 +-1.034791877197847 + 20 +0.9294632409327619 + 10 +-1.589829752133483 + 20 +-1.1354200282072 + 10 +1.123687946943335 + 20 +-1.720983695945684 + 0 +ENDBLK + 5 +3634D +330 +36304 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36592 +330 +36591 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +ftsdyer + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ftsdyer + 1 + + 0 +LINE + 5 +36594 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-222.9308822416585 + 20 +-7.430738782009314 + 30 +0.0 + 11 +-221.8308822420186 + 21 +-7.430738782009314 + 31 +0.0 + 0 +LINE + 5 +36595 +330 +36591 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-228.8808822415585 + 20 +5.949261215480647 + 30 +0.0 + 11 +-221.8808822410786 + 21 +5.949261215480675 + 31 +0.0 + 0 +ARC + 5 +36596 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-222.2808822396786 + 20 +2.099261216510641 + 30 +0.0 + 40 +0.35 +100 +AcDbArc + 50 +90.00000000000325 + 51 +180.0 + 0 +ARC + 5 +36597 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-222.1808822410785 + 20 +2.749261216510646 + 30 +0.0 + 40 +0.3 +100 +AcDbArc + 50 +270.0000000000032 + 51 +0.0 + 0 +LINE + 5 +36598 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-222.2808822396786 + 20 +2.449261216510649 + 30 +0.0 + 11 +-222.1808822410785 + 21 +2.449261216510649 + 31 +0.0 + 0 +LINE + 5 +36599 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-221.8308822420186 + 20 +-11.43073878300933 + 30 +0.0 + 11 +-230.2308822415785 + 21 +-11.43073878300933 + 31 +0.0 + 0 +LINE + 5 +3659A +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-221.5308822400386 + 20 +-7.730738781449332 + 30 +0.0 + 11 +-221.5308822400386 + 21 +-11.13073878356934 + 31 +0.0 + 0 +LINE + 5 +3659B +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-221.8808822410785 + 20 +2.749261216510646 + 30 +0.0 + 11 +-221.8808822410786 + 21 +9.149261215010654 + 31 +0.0 + 0 +LINE + 5 +3659C +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-230.2308822415785 + 20 +-7.430738782009314 + 30 +0.0 + 11 +-229.8308822414785 + 21 +-7.430738782009314 + 31 +0.0 + 0 +LINE + 5 +3659D +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-222.6308822396786 + 20 +2.099261216510641 + 30 +0.0 + 11 +-222.6308822396786 + 21 +-0.2647911506493585 + 31 +0.0 + 0 +LINE + 5 +3659E +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-223.5470334909386 + 20 +-2.612590379349356 + 30 +0.0 + 11 +-223.1635511565586 + 21 +-1.929294583129376 + 31 +0.0 + 0 +LINE + 5 +3659F +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-222.9535332656986 + 20 +-1.519255835009346 + 30 +0.0 + 11 +-223.0359213229186 + 21 +-1.668821847789346 + 31 +0.0 + 0 +LINE + 5 +365A0 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-223.9308822406386 + 20 +-6.430738783029312 + 30 +0.0 + 11 +-223.9308822406386 + 21 +-4.080838529969355 + 31 +0.0 + 0 +LINE + 5 +365A1 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-228.0308822397585 + 20 +1.021226114750633 + 30 +0.0 + 11 +-228.0308822397585 + 21 +2.099261215470634 + 31 +0.0 + 0 +LINE + 5 +365A2 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-228.8808822415585 + 20 +2.749261215950639 + 30 +0.0 + 11 +-228.8808822415585 + 21 +9.149261215010654 + 31 +0.0 + 0 +LINE + 5 +365A3 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-229.3308822407186 + 20 +-6.930738781249318 + 30 +0.0 + 11 +-229.3308822407186 + 21 +-2.933435292649378 + 31 +0.0 + 0 +LINE + 5 +365A4 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-228.8344913615186 + 20 +-1.003481115989345 + 30 +0.0 + 11 +-228.3038971039385 + 21 +-0.0402484628293678 + 31 +0.0 + 0 +LINE + 5 +365A5 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-230.5308822410186 + 20 +-11.13073878356934 + 30 +0.0 + 11 +-230.5308822410186 + 21 +-7.730738781449332 + 31 +0.0 + 0 +LINE + 5 +365A6 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-228.5808822395785 + 20 +2.449261216510649 + 30 +0.0 + 11 +-228.3808822407985 + 21 +2.449261216510649 + 31 +0.0 + 0 +LINE + 5 +365A7 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-228.5808822395785 + 20 +9.449261216990664 + 30 +0.0 + 11 +-222.1808822405186 + 21 +9.449261216990664 + 31 +0.0 + 0 +ARC + 5 +365A8 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-225.3308822397186 + 20 +-2.933435292649378 + 30 +0.0 + 40 +4.000000001 +100 +AcDbArc + 50 +151.1519407146014 + 51 +180.0 + 0 +ARC + 5 +365A9 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-220.9308822411585 + 20 +-4.080838529969355 + 30 +0.0 + 40 +2.999999999479998 +100 +AcDbArc + 50 +150.6977925143995 + 51 +180.0 + 0 +ARC + 5 +365AA +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-222.9308822416585 + 20 +-6.430738783029312 + 30 +0.0 + 40 +0.99999999898 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +365AB +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-221.8308822420186 + 20 +-7.730738781449332 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +359.9999999998998 + 51 +90.0 + 0 +ARC + 5 +365AC +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-221.8308822420186 + 20 +-11.13073878356934 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +365AD +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-225.4308822403786 + 20 +-0.6568128532693578 + 30 +0.0 + 40 +2.59999999938 +100 +AcDbArc + 50 +330.6977925222993 + 51 +337.0931407095002 + 0 +ARC + 5 +365AE +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-225.2308817107386 + 20 +-0.2647912852693679 + 30 +0.0 + 40 +2.59999999938 +100 +AcDbArc + 50 +331.1520768185006 + 51 +359.9998638961001 + 0 +ARC + 5 +365AF +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-222.1808822405186 + 20 +9.149261215010654 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +365B0 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-229.8308822414785 + 20 +-6.930738781249318 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +365B1 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2308822415785 + 20 +-11.13073878356934 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +365B2 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2308822415785 + 20 +-7.730738781449332 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +89.99999999989903 + 51 +180.0 + 0 +ARC + 5 +365B3 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2308822390386 + 20 +1.021226114750633 + 30 +0.0 + 40 +2.19999999928 +100 +AcDbArc + 50 +348.2591840943998 + 51 +354.3453590527001 + 0 +ARC + 5 +365B4 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2308822339585 + 20 +1.021226112210641 + 30 +0.0 + 40 +2.19999999928 +100 +AcDbArc + 50 +331.1519472022 + 51 +342.6857692644998 + 0 +ARC + 5 +365B5 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2253820392186 + 20 +1.01980084709065 + 30 +0.0 + 40 +2.194324869659999 +100 +AcDbArc + 50 +342.6785563373999 + 51 +348.2663970001001 + 0 +ARC + 5 +365B6 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-230.2239711936786 + 20 +1.02088480479064 + 30 +0.0 + 40 +2.193088979319999 +100 +AcDbArc + 50 +354.3364421224003 + 51 +0.0089169294001173 + 0 +ARC + 5 +365B7 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-228.3808822407985 + 20 +2.099261215470634 + 30 +0.0 + 40 +0.35000000104 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +365B8 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-228.5808822395785 + 20 +2.749261215950639 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +365B9 +330 +36591 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-228.5808822395785 + 20 +9.149261215010654 + 30 +0.0 + 40 +0.29999999944 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +365BA +330 +36591 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-225.3808822413185 + 20 +2.449261215480661 + 30 +0.0 + 11 +-225.3808822413185 + 21 +9.44926121548066 + 31 +0.0 + 0 +LWPOLYLINE + 5 +368FD +330 +36591 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-228.5808822413186 + 20 +9.44926121548066 + 10 +-222.1808822413185 + 20 +9.44926121548066 + 42 +-0.414213562373095 + 10 +-221.8808822413185 + 20 +9.14926121548065 + 10 +-221.8808822413185 + 20 +2.749261215480644 + 42 +-0.414213562373095 + 10 +-222.1808822413185 + 20 +2.449261215480647 + 10 +-228.5808822413186 + 20 +2.449261215480647 + 42 +-0.4142135623730945 + 10 +-228.8808822413185 + 20 +2.749261215480644 + 10 +-228.8808822413185 + 20 +9.14926121548065 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +369B2 +330 +36591 +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-230.2308822417986 + 20 +-7.430738783009318 + 10 +-221.8308822417985 + 20 +-7.430738783009332 + 42 +-0.4142135623730945 + 10 +-221.5308822417986 + 20 +-7.730738783009329 + 10 +-221.5308822417986 + 20 +-11.13073878300933 + 42 +-0.414213562373095 + 10 +-221.8308822417985 + 20 +-11.43073878300933 + 10 +-230.2308822417986 + 20 +-11.43073878300932 + 42 +-0.414213562373095 + 10 +-230.5308822417986 + 20 +-11.13073878300932 + 10 +-230.5308822417986 + 20 +-7.730738783009315 + 42 +-0.414213562373095 + 0 +ENDBLK + 5 +36593 +330 +36591 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3681F +330 +36816 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C78AD1BA8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C78AD1BA8 + 1 + + 0 +INSERT + 5 +36817 +330 +36816 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C050476C0 + 10 +0.0 + 20 +-0.0000000000000568 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +36818 +330 +36816 +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C704D0EF1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +36820 +330 +36816 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36886 +330 +3686F +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4DCB55A9 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4DCB55A9 + 1 + + 0 +LINE + 5 +36870 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.0 + 20 +1.050000000000011 + 30 +0.0 + 11 +0.9999999999999432 + 21 +1.050000000000011 + 31 +0.0 + 0 +LINE + 5 +36871 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.9999999999999432 + 20 +-1.050000000000011 + 30 +0.0 + 11 +-1.0 + 21 +-1.050000000000011 + 31 +0.0 + 0 +LINE + 5 +36872 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.0 + 20 +2.25 + 30 +0.0 + 11 +0.9999999999999432 + 21 +2.25 + 31 +0.0 + 0 +LINE + 5 +36873 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.9999999999999432 + 20 +-2.25 + 30 +0.0 + 11 +-1.0 + 21 +-2.25 + 31 +0.0 + 0 +LINE + 5 +36874 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +2.75 + 30 +0.0 + 11 +-1.5 + 21 +2.75 + 31 +0.0 + 0 +LINE + 5 +36875 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +0.25 + 30 +0.0 + 11 +-1.5 + 21 +0.25 + 31 +0.0 + 0 +LINE + 5 +36876 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +1.499999999999943 + 20 +2.75 + 30 +0.0 + 11 +1.5 + 21 +2.75 + 31 +0.0 + 0 +LINE + 5 +36877 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +1.499999999999943 + 20 +0.25 + 30 +0.0 + 11 +1.5 + 21 +0.25 + 31 +0.0 + 0 +LINE + 5 +36878 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +-0.25 + 30 +0.0 + 11 +-1.5 + 21 +-0.25 + 31 +0.0 + 0 +LINE + 5 +36879 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +-2.75 + 30 +0.0 + 11 +-1.5 + 21 +-2.75 + 31 +0.0 + 0 +LINE + 5 +3687A +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +1.499999999999943 + 20 +-0.25 + 30 +0.0 + 11 +1.5 + 21 +-0.25 + 31 +0.0 + 0 +LINE + 5 +3687B +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +1.499999999999943 + 20 +-2.75 + 30 +0.0 + 11 +1.5 + 21 +-2.75 + 31 +0.0 + 0 +ARC + 5 +3687C +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.0 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +3687D +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.9999999999999432 + 20 +2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +3687E +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.0 + 20 +0.5500000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +3687F +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.9999999999999432 + 20 +0.5500000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36880 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.0 + 20 +-0.5500000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36881 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.9999999999999432 + 20 +-0.5500000000000114 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36882 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-1.0 + 20 +-2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36883 +330 +3686F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.9999999999999432 + 20 +-2.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +HATCH + 5 +44163 +330 +3686F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-0.6499999998400199 + 20 +-15.37999999799001 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +44164 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-2.774999999840304 + 20 +-20.12999999798996 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +44164 +102 +{ACAD_REACTORS +330 +44163 +102 +} +330 +3686F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-0.6499999998400199 + 20 +-15.37999999799001 + 30 +0.0 + 40 +0.3 + 0 +ENDBLK + 5 +36887 +330 +3686F +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36A25 +330 +36A1A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C22D74584 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C22D74584 + 1 + + 0 +LINE + 5 +36A1B +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +1.25 + 30 +0.0 + 11 +-0.5 + 21 +1.25 + 31 +0.0 + 0 +LINE + 5 +36A1C +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.5 + 20 +1.25 + 30 +0.0 + 11 +0.5 + 21 +1.25 + 31 +0.0 + 0 +LINE + 5 +36A1D +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +-1.25 + 30 +0.0 + 11 +-0.5 + 21 +-1.25 + 31 +0.0 + 0 +LINE + 5 +36A1E +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.5 + 20 +-1.25 + 30 +0.0 + 11 +0.5 + 21 +-1.25 + 31 +0.0 + 0 +ARC + 5 +36A1F +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36A20 +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36A21 +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +-1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36A22 +330 +36A1A +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +-1.25 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +36A26 +330 +36A1A +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36B34 +330 +36B1D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C22C954A2 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C22C954A2 + 1 + + 0 +LINE + 5 +36B1E +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.14999999999992 + 20 +-1.700000000000003 + 30 +0.0 + 11 +-0.5 + 21 +-1.700000000000003 + 31 +0.0 + 0 +LINE + 5 +36B1F +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +-3.799999999999997 + 30 +0.0 + 11 +-2.14999999999992 + 21 +-3.799999999999997 + 31 +0.0 + 0 +LINE + 5 +36B20 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.14999999999992 + 20 +-0.5 + 30 +0.0 + 11 +-0.5 + 21 +-0.5 + 31 +0.0 + 0 +LINE + 5 +36B21 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5 + 20 +-5.0 + 30 +0.0 + 11 +-2.14999999999992 + 21 +-5.0 + 31 +0.0 + 0 +LINE + 5 +36B22 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.64999999999992 + 20 +0.0 + 30 +0.0 + 11 +-2.64999999999992 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36B23 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.64999999999992 + 20 +-2.5 + 30 +0.0 + 11 +-2.64999999999992 + 21 +-2.5 + 31 +0.0 + 0 +LINE + 5 +36B24 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0000000000000568 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36B25 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.3500000000000227 + 20 +-2.5 + 30 +0.0 + 11 +0.3500000000000796 + 21 +-2.5 + 31 +0.0 + 0 +LINE + 5 +36B26 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.64999999999992 + 20 +-3.0 + 30 +0.0 + 11 +-2.64999999999992 + 21 +-3.0 + 31 +0.0 + 0 +LINE + 5 +36B27 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-2.64999999999992 + 20 +-5.5 + 30 +0.0 + 11 +-2.64999999999992 + 21 +-5.5 + 31 +0.0 + 0 +LINE + 5 +36B28 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +-3.0 + 30 +0.0 + 11 +0.0000000000000568 + 21 +-3.0 + 31 +0.0 + 0 +LINE + 5 +36B29 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +-5.5 + 30 +0.0 + 11 +0.0000000000000568 + 21 +-5.5 + 31 +0.0 + 0 +ARC + 5 +36B2A +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.14999999999992 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36B2B +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36B2C +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.14999999999992 + 20 +-2.200000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36B2D +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5 + 20 +-2.200000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36B2E +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.14999999999992 + 20 +-3.299999999999997 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36B2F +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5 + 20 +-3.299999999999997 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36B30 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-2.14999999999992 + 20 +-5.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36B31 +330 +36B1D +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5 + 20 +-5.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +36B35 +330 +36B1D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36BA6 +330 +36B8F +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3BD15C35 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3BD15C35 + 1 + + 0 +LINE + 5 +36B90 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.8500000000000227 + 20 +-1.699999999999989 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +-1.699999999999989 + 31 +0.0 + 0 +LINE + 5 +36B91 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5000000000000568 + 20 +-3.799999999999983 + 30 +0.0 + 11 +-0.8500000000000227 + 21 +-3.799999999999983 + 31 +0.0 + 0 +LINE + 5 +36B92 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.8500000000000227 + 20 +-0.4999999999999858 + 30 +0.0 + 11 +-0.5000000000000568 + 21 +-0.4999999999999858 + 31 +0.0 + 0 +LINE + 5 +36B93 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.5000000000000568 + 20 +-4.999999999999986 + 30 +0.0 + 11 +-0.8500000000000227 + 21 +-4.999999999999986 + 31 +0.0 + 0 +LINE + 5 +36B94 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.350000000000023 + 20 +0.0000000000000142 + 30 +0.0 + 11 +-1.350000000000023 + 21 +0.0000000000000142 + 31 +0.0 + 0 +LINE + 5 +36B95 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.350000000000023 + 20 +-2.499999999999986 + 30 +0.0 + 11 +-1.350000000000023 + 21 +-2.499999999999986 + 31 +0.0 + 0 +LINE + 5 +36B96 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.0000000000000568 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +36B97 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +1.64999999999992 + 20 +-2.499999999999986 + 30 +0.0 + 11 +1.649999999999977 + 21 +-2.499999999999986 + 31 +0.0 + 0 +LINE + 5 +36B98 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.350000000000023 + 20 +-2.999999999999986 + 30 +0.0 + 11 +-1.350000000000023 + 21 +-2.999999999999986 + 31 +0.0 + 0 +LINE + 5 +36B99 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-1.350000000000023 + 20 +-5.499999999999986 + 30 +0.0 + 11 +-1.350000000000023 + 21 +-5.499999999999986 + 31 +0.0 + 0 +LINE + 5 +36B9A +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.0000000000000568 + 20 +-3.0 + 30 +0.0 + 11 +0.0 + 21 +-3.0 + 31 +0.0 + 0 +LINE + 5 +36B9B +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.0000000000000568 + 20 +-5.5 + 30 +0.0 + 11 +0.0 + 21 +-5.5 + 31 +0.0 + 0 +ARC + 5 +36B9C +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.8500000000000227 + 20 +0.0000000000000142 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36B9D +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36B9E +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.8500000000000227 + 20 +-2.199999999999989 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36B9F +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +-2.200000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36BA0 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.8500000000000227 + 20 +-3.299999999999983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36BA1 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +-3.299999999999997 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36BA2 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.8500000000000227 + 20 +-5.499999999999986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36BA3 +330 +36B8F +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-0.5000000000000568 + 20 +-5.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +36BA7 +330 +36B8F +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36BC5 +330 +36BC2 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C019D3CDB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C019D3CDB + 1 + + 0 +HATCH + 5 +36BC6 +330 +36BC2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +5.422355840182547 + 20 +1.5 + 11 +4.422355840182547 + 21 +3.5 + 72 + 1 + 10 +4.422355840182547 + 20 +3.5 + 11 +3.422355840182547 + 21 +1.5 + 72 + 1 + 10 +3.422355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +1.5 + 72 + 1 + 10 +3.922355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +3.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +4.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +1.5 + 72 + 1 + 10 +4.922355840182547 + 20 +1.5 + 11 +5.422355840182547 + 21 +1.5 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-66.53202397489753 + 20 +-7.821941095581337 + 0 +ENDBLK + 5 +36BC7 +330 +36BC2 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36BCB +330 +36BC8 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C6704505C + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C6704505C + 1 + + 0 +CIRCLE + 5 +36BCC +330 +36BC8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999889 + 0 +CIRCLE + 5 +36BCD +330 +36BC8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +HATCH + 5 +36BCE +330 +36BC8 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-0.5 + 20 +0.0 + 42 +1.0 + 10 +0.5 + 20 +0.0 + 42 +1.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0130908917423903 + 98 + 1 + 10 +0.1357356229973448 + 20 +0.3037699466973436 + 0 +ARC + 5 +36BCF +330 +36BC8 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999858 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +36BD0 +330 +36BC8 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +36BD1 +330 +36BC8 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999929 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +36BD2 +330 +36BC8 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +36BD3 +330 +36BC8 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36BFB +330 +36BF8 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C2DC843BC + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C2DC843BC + 1 + + 0 +MTEXT + 5 +36BFC +102 +{ACAD_XDICTIONARY +360 +36BFD +102 +} +330 +36BF8 +100 +AcDbEntity + 8 +0 @ 1 +370 + -1 +100 +AcDbMText + 10 +-6.100000000000023 + 20 +0.0 + 30 +0.0 + 40 +0.8 + 41 +2.768179475897838 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +094A + 7 +STYLE1 + 11 +-1.836909530733566E-16 + 21 +-1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 +1001 +AcadAnnotative +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 0 +1002 +} + 0 +LWPOLYLINE + 5 +36BFF +330 +36BF8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.15 + 10 +-5.050000000000011 + 20 +2.949999999999989 + 10 +-5.050000000000011 + 20 +-2.949999999999989 + 0 +MTEXT + 5 +36C00 +102 +{ACAD_XDICTIONARY +360 +36C01 +102 +} +330 +36BF8 +100 +AcDbEntity + 8 +0 @ 1 +370 + -1 +100 +AcDbMText + 10 +-7.600000000000023 + 20 +0.0 + 30 +0.0 + 40 +0.8 + 41 +2.768179475897838 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +DMD444 + 7 +STYLE1 + 11 +-1.836909530733566E-16 + 21 +-1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 +1001 +AcadAnnotative +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 0 +1002 +} + 0 +LWPOLYLINE + 5 +36C03 +330 +36BF8 +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 22 + 70 + 1 + 43 +0.0 + 10 +4.050000000000011 + 20 +-4.25 + 42 +0.4142135623730898 + 10 +4.25 + 20 +-4.050000000000011 + 10 +4.25 + 20 +4.050000000000011 + 42 +0.4142135623730898 + 10 +4.050000000000011 + 20 +4.25 + 10 +-4.050000000000011 + 20 +4.25 + 42 +0.4142135623730898 + 10 +-4.25 + 20 +4.050000000000011 + 10 +-4.25 + 20 +3.75 + 42 +-0.414213562373095 + 10 +-4.75 + 20 +3.25 + 10 +-9.631754163448136 + 20 +3.25 + 42 +-0.3419987131196456 + 10 +-10.11587708172408 + 20 +3.625 + 42 +0.3419987131196467 + 10 +-10.60000000000002 + 20 +4.0 + 10 +-13.60000000000002 + 20 +4.0 + 42 +0.414213562373095 + 10 +-14.10000000000002 + 20 +3.5 + 10 +-14.10000000000002 + 20 +-3.5 + 42 +0.414213562373095 + 10 +-13.60000000000002 + 20 +-4.0 + 10 +-10.60000000000002 + 20 +-4.0 + 42 +0.3419987131196467 + 10 +-10.11587708172408 + 20 +-3.625 + 42 +-0.3419987131196456 + 10 +-9.631754163448136 + 20 +-3.25 + 10 +-4.75 + 20 +-3.25 + 42 +-0.414213562373095 + 10 +-4.25 + 20 +-3.75 + 10 +-4.25 + 20 +-4.050000000000011 + 42 +0.4142135623730898 + 10 +-4.050000000000011 + 20 +-4.25 + 0 +LWPOLYLINE + 5 +36C04 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.050000000000011 + 20 +4.25 + 42 +-0.414213562373095 + 10 +4.25 + 20 +4.050000000000011 + 10 +4.25 + 20 +-4.050000000000011 + 42 +-0.414213562373095 + 10 +4.050000000000011 + 20 +-4.25 + 10 +-4.050000000000011 + 20 +-4.25 + 42 +-0.414213562373095 + 10 +-4.25 + 20 +-4.050000000000011 + 10 +-4.25 + 20 +4.050000000000011 + 42 +-0.414213562373095 + 10 +-4.050000000000011 + 20 +4.25 + 0 +LWPOLYLINE + 5 +36C05 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-10.60000000000002 + 20 +4.0 + 42 +-0.414213562373095 + 10 +-10.10000000000002 + 20 +3.5 + 10 +-10.10000000000002 + 20 +-3.5 + 42 +-0.414213562373095 + 10 +-10.60000000000002 + 20 +-4.0 + 10 +-13.60000000000002 + 20 +-4.0 + 42 +-0.414213562373095 + 10 +-14.10000000000002 + 20 +-3.5 + 10 +-14.10000000000002 + 20 +3.5 + 42 +-0.414213562373095 + 10 +-13.60000000000002 + 20 +4.0 + 0 +HATCH + 5 +36C06 +330 +36BF8 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 2 + 10 +-10.6 + 20 +3.49999999999997 + 40 +0.400000000000007 + 50 +269.9999999999962 + 51 +359.9999999999957 + 73 + 0 + 72 + 1 + 10 +-10.19999999999999 + 20 +3.5 + 11 +-10.19999999999999 + 21 +-3.5 + 72 + 2 + 10 +-10.6 + 20 +-3.49999999999997 + 40 +0.4000000000000075 + 50 +0.0000000000042747 + 51 +90.00000000000382 + 73 + 0 + 72 + 1 + 10 +-10.60000000000002 + 20 +-3.899999999999977 + 11 +-13.60000000000002 + 21 +-3.899999999999977 + 72 + 2 + 10 +-13.60000000000002 + 20 +-3.499999999999999 + 40 +0.3999999999999786 + 50 +90.00000000000026 + 51 +179.9999999999998 + 73 + 0 + 72 + 1 + 10 +-14.0 + 20 +-3.5 + 11 +-14.0 + 21 +3.5 + 72 + 2 + 10 +-13.60000000000002 + 20 +3.499999999999999 + 40 +0.399999999999979 + 50 +180.0000000000002 + 51 +269.9999999999998 + 73 + 0 + 72 + 1 + 10 +-13.60000000000002 + 20 +3.899999999999977 + 11 +-10.60000000000002 + 21 +3.899999999999977 + 97 + 1 +330 +36C07 + 75 + 0 + 76 + 1 + 52 +-90.00000000000001 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +315.0 + 43 +-54.78998727522759 + 44 +-21.86391655651022 + 45 +0.2651650429449554 + 46 +0.2651650429449552 + 79 + 0 + 53 +44.99999999999999 + 43 +-54.78998727522759 + 44 +-21.86391655651022 + 45 +-0.2651650429449552 + 46 +0.2651650429449554 + 79 + 0 + 98 + 1 + 10 +-54.78998727522759 + 20 +-21.86391655651022 +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +36C07 +102 +{ACAD_REACTORS +330 +36C06 +102 +} +330 +36BF8 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-10.60000000000002 + 20 +3.899999999999977 + 42 +-0.4142135623730929 + 10 +-10.19999999999999 + 20 +3.5 + 10 +-10.19999999999999 + 20 +-3.5 + 42 +-0.4142135623730929 + 10 +-10.60000000000002 + 20 +-3.899999999999977 + 10 +-13.60000000000002 + 20 +-3.899999999999977 + 42 +-0.4142135623730929 + 10 +-14.0 + 20 +-3.5 + 10 +-14.0 + 20 +3.5 + 42 +-0.4142135623730929 + 10 +-13.60000000000002 + 20 +3.899999999999977 + 0 +LINE + 5 +36C08 +330 +36BF8 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +4.75 + 30 +0.0 + 11 +0.0 + 21 +-4.75 + 31 +0.0 + 0 +LINE + 5 +36C09 +330 +36BF8 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +4.75 + 20 +0.0 + 30 +0.0 + 11 +-4.75 + 21 +0.0 + 31 +0.0 + 0 +ARC + 5 +36C0A +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000205 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C0B +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000205 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C0C +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000091 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C0D +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000091 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C0E +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.225000000000023 + 20 +4.749999999999901 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C0F +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.225000000000023 + 20 +4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C10 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.224999999999909 + 20 +4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C11 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000205 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C12 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000205 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C13 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000091 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C14 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000091 + 20 +4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +36C15 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.225000000000023 + 20 +4.749999999999901 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C16 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.225000000000023 + 20 +4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C17 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.224999999999909 + 20 +4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C18 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000205 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C19 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000205 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C1A +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000091 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C1B +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +1.025000000000091 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C1C +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.225000000000023 + 20 +-4.749999999999901 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C1D +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.225000000000023 + 20 +-4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C1E +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +3.224999999999909 + 20 +-4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C1F +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000205 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C20 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000205 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C21 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000091 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C22 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-1.025000000000091 + 20 +-4.75 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +36C23 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.225000000000023 + 20 +-4.749999999999901 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C24 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.225000000000023 + 20 +-4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C25 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-3.224999999999909 + 20 +-4.750000000000014 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C26 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-13.20000000000005 + 20 +4.499999999999986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +36C27 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-11.00000000000023 + 20 +4.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +36C28 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-12.70000000000005 + 20 +4.499999999999986 + 30 +0.0 + 11 +-12.70000000000005 + 21 +4.749999999999901 + 31 +0.0 + 0 +LINE + 5 +36C29 +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-11.50000000000023 + 20 +4.5 + 30 +0.0 + 11 +-11.50000000000023 + 21 +4.749999999999901 + 31 +0.0 + 0 +ARC + 5 +36C2A +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-13.20000000000005 + 20 +-4.499999999999986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +36C2B +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbCircle + 10 +-11.00000000000023 + 20 +-4.5 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +36C2C +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-12.70000000000005 + 20 +-4.499999999999986 + 30 +0.0 + 11 +-12.70000000000005 + 21 +-4.749999999999901 + 31 +0.0 + 0 +LINE + 5 +36C2D +330 +36BF8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-11.50000000000023 + 20 +-4.5 + 30 +0.0 + 11 +-11.50000000000023 + 21 +-4.749999999999901 + 31 +0.0 + 0 +HATCH + 5 +36C2E +330 +36BF8 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-12.10000000000002 + 20 +-4.749999999999901 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +36C2F + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-14.22500000000031 + 20 +-9.49999999999983 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +36C2F +102 +{ACAD_REACTORS +330 +36C2E +102 +} +330 +36BF8 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-12.10000000000002 + 20 +-4.749999999999901 + 30 +0.0 + 40 +0.3 + 0 +ENDBLK + 5 +36C30 +330 +36BF8 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36C9A +330 +36C99 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +SQUARE_3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +SQUARE_3 + 1 + + 0 +SOLID + 5 +36C9B +330 +36C99 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +0.1 + 20 +0.1 + 30 +0.0 + 11 +0.1 + 21 +-0.1 + 31 +0.0 + 12 +-0.1 + 22 +0.1 + 32 +0.0 + 13 +-0.1 + 23 +-0.1 + 33 +0.0 + 0 +ENDBLK + 5 +36C9C +330 +36C99 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36C9E +330 +36C9D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +SQUARE_4 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +SQUARE_4 + 1 + + 0 +SOLID + 5 +36C9F +330 +36C9D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +0.1375 + 20 +0.1375 + 30 +0.0 + 11 +0.1375 + 21 +-0.1375 + 31 +0.0 + 12 +-0.1375 + 22 +0.1375 + 32 +0.0 + 13 +-0.1375 + 23 +-0.1375 + 33 +0.0 + 0 +ENDBLK + 5 +36CA0 +330 +36C9D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CA2 +330 +36CA1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +ROUND_6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ROUND_6 + 1 + + 0 +LWPOLYLINE + 5 +36CA3 +330 +36CA1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.005 + 10 +-0.0025 + 20 +0.0 + 42 +1.0 + 10 +0.0025 + 20 +0.0 + 42 +1.0 + 0 +ENDBLK + 5 +36CA4 +330 +36CA1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CA6 +330 +36CA5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +ROUND_8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ROUND_8 + 1 + + 0 +LWPOLYLINE + 5 +36CA7 +330 +36CA5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 1 + 43 +0.1 + 10 +-0.05 + 20 +0.0 + 42 +1.0 + 10 +0.05 + 20 +0.0 + 42 +1.0 + 0 +ENDBLK + 5 +36CA8 +330 +36CA5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CAA +330 +36CA9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +SQUARE_37 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +SQUARE_37 + 1 + + 0 +SOLID + 5 +36CAB +330 +36CA9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +0.15 + 20 +0.15 + 30 +0.0 + 11 +0.15 + 21 +-0.15 + 31 +0.0 + 12 +-0.15 + 22 +0.15 + 32 +0.0 + 13 +-0.15 + 23 +-0.15 + 33 +0.0 + 0 +ENDBLK + 5 +36CAC +330 +36CA9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CAE +330 +36CAD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +SQUARE_47 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +SQUARE_47 + 1 + + 0 +SOLID + 5 +36CAF +330 +36CAD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +0.075 + 20 +0.075 + 30 +0.0 + 11 +0.075 + 21 +-0.075 + 31 +0.0 + 12 +-0.075 + 22 +0.075 + 32 +0.0 + 13 +-0.075 + 23 +-0.075 + 33 +0.0 + 0 +ENDBLK + 5 +36CB0 +330 +36CAD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CB2 +330 +36CB1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +SQUARE_48 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +SQUARE_48 + 1 + + 0 +SOLID + 5 +36CB3 +330 +36CB1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +0.06 + 20 +0.06 + 30 +0.0 + 11 +0.06 + 21 +-0.06 + 31 +0.0 + 12 +-0.06 + 22 +0.06 + 32 +0.0 + 13 +-0.06 + 23 +-0.06 + 33 +0.0 + 0 +ENDBLK + 5 +36CB4 +330 +36CB1 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CB8 +330 +36CB5 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C218D5DF8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C218D5DF8 + 1 + + 0 +HATCH + 5 +36CB9 +330 +36CB5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +0.0 + 20 +0.0 + 40 +1.0 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +87.0000000000019 + 20 +20.19999999999996 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +CIRCLE + 5 +36CBA +330 +36CB5 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +1.0 + 0 +ENDBLK + 5 +36CBB +330 +36CB5 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CBF +330 +36CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3E133D25 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3E133D25 + 1 + + 0 +INSERT + 5 +36CC0 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U104 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36CC1 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U105 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36CC2 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U106 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +36CC3 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U107 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +HATCH + 5 +36CC4 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 3 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.466611381298076 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 92 + 16 + 93 + 2 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.293811381298067 + 50 +318.8290296183745 + 51 +131.1709703816255 + 73 + 1 + 72 + 1 + 10 +-9.038547454026002 + 20 +6.077385167753105 + 11 +-7.212906234959971 + 21 +4.251743948687078 + 97 + 0 + 92 + 16 + 93 + 2 + 72 + 1 + 10 +-7.335094286748983 + 20 +4.129555896897983 + 11 +-9.16073550581501 + 21 +5.95519711596401 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.293811381298075 + 50 +138.8290296183741 + 51 +311.1709703816259 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-75.09848754182313 + 20 +-72.2763994834498 + 0 +INSERT + 5 +36CC5 +330 +36CBC +100 +AcDbEntity + 8 +TIE-BAR + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U109 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 147 +1040 +0.3 +1070 + 77 +1070 + 0 +1002 +} + 0 +INSERT + 5 +36CC6 +330 +36CBC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U110 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 147 +1040 +0.3 +1070 + 77 +1070 + 0 +1002 +} + 0 +ENDBLK + 5 +36CC7 +330 +36CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CC9 +330 +36CC8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U104 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U104 + 1 + + 0 +TEXT + 5 +36CCA +330 +36CC8 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.4713402820251811 + 20 +-2.364329823509862 + 30 +0.0 + 40 +1.0 + 1 +Lead-free code +100 +AcDbText + 0 +ENDBLK + 5 +36CCB +330 +36CC8 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CCD +330 +36CCC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U105 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U105 + 1 + + 0 +TEXT + 5 +36CCE +330 +36CCC +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.3388220538814421 + 20 +-0.5367848439423596 + 30 +0.0 + 40 +1.000199999999999 + 1 +Flex-Rigid PCB supplier code +100 +AcDbText + 0 +ENDBLK + 5 +36CCF +330 +36CCC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CD1 +330 +36CD0 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U106 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U106 + 1 + + 0 +TEXT + 5 +36CD2 +330 +36CD0 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-5.276082657392193 + 20 +4.583764497308465 + 30 +0.0 + 40 +1.036799999999999 + 1 +TRULY-* +100 +AcDbText + 0 +ENDBLK + 5 +36CD3 +330 +36CD0 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36CD5 +330 +36CD4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U107 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U107 + 1 + + 0 +TEXT + 5 +36CD6 +330 +36CD4 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-9.177367779996832 + 20 +4.540790212822594 + 30 +0.0 + 40 +1.2096 + 1 +Pb +100 +AcDbText + 0 +ENDBLK + 5 +36CD7 +330 +36CD4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D7C +330 +36D7B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U109 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U109 + 1 + + 0 +SOLID + 5 +36D7D +330 +36D7B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-2.083528000882461 + 20 +3.355917289695391 + 30 +0.0 + 11 +-2.635811514521265 + 21 +5.041904349256412 + 31 +0.0 + 12 +-1.566574549870173 + 22 +3.626170702743706 + 32 +0.0 + 13 +-1.566574549870173 + 23 +3.626170702743706 + 33 +0.0 + 0 +LWPOLYLINE + 5 +36D7E +330 +36D7B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-1.825051275376317 + 20 +3.491043996219548 + 10 +0.0 + 20 +0.0 + 0 +ENDBLK + 5 +36D7F +330 +36D7B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +36D81 +330 +36D80 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U110 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U110 + 1 + + 0 +SOLID + 5 +36D82 +330 +36D80 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-6.691607045107036 + 20 +3.27366957969832 + 30 +0.0 + 11 +-7.830374642497077 + 21 +4.634102526807055 + 31 +0.0 + 12 +-6.311940554011773 + 22 +3.716536527344211 + 32 +0.0 + 13 +-6.311940554011773 + 23 +3.716536527344211 + 33 +0.0 + 0 +LWPOLYLINE + 5 +36D83 +330 +36D80 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-6.501773799559404 + 20 +3.495103053521265 + 10 +-0.0997552242706661 + 20 +-1.993299143406886 + 0 +ENDBLK + 5 +36D84 +330 +36D80 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +443A9 +330 +443A4 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7D75011B + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7D75011B + 1 + + 0 +CIRCLE + 5 +443A5 +330 +443A4 +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +443A6 +330 +443A4 +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +-0.7846968207452032 + 20 +-1.17118928469434 + 30 +0.0 + 40 +2.342378569388679 + 1 +2 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-0.0351356785408257 + 21 +0.0 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +ENDBLK + 5 +443AA +330 +443A4 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +443EA +330 +443E9 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +123dfgsdrg + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +123dfgsdrg + 1 + + 0 +LWPOLYLINE + 5 +443EC +330 +443E9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 33 + 70 + 0 + 43 +0.0 + 10 +-244.2795856179409 + 20 +-5.632362529481327 + 42 +-0.4142135623725852 + 10 +-243.9795856185015 + 20 +-5.932362528921317 + 10 +-243.9795856185015 + 20 +-9.332362528501307 + 42 +-0.4142135623730987 + 10 +-244.2795856179415 + 20 +-9.632362527941297 + 10 +-252.6795856175016 + 20 +-9.632362527941297 + 42 +-0.4142135623730917 + 10 +-252.9795856169416 + 20 +-9.332362528501307 + 10 +-252.9795856169415 + 20 +-5.932362526941304 + 42 +-0.4142135623730951 + 10 +-252.6795856169415 + 20 +-5.632362526941307 + 10 +-252.3795856173015 + 20 +-5.632362526941321 + 42 +0.4142135623730951 + 10 +-251.8795856173015 + 20 +-5.132362526941321 + 10 +-251.8795856173015 + 20 +-2.215239468236376 + 42 +-0.1316524975591018 + 10 +-251.3436872326618 + 20 +-0.2152394686217463 + 10 +-250.3805475130214 + 20 +1.452967461011596 + 42 +0.1316524975591017 + 10 +-250.1795856187815 + 20 +2.202967460867086 + 10 +-250.1795856187815 + 20 +3.067637474118683 + 42 +0.4142135623730929 + 10 +-250.6795856187816 + 20 +3.567637474118683 + 10 +-250.8295856187016 + 20 +3.567637474118698 + 42 +-0.4142135623730859 + 10 +-251.1295856187015 + 20 +3.867637474118681 + 10 +-251.1295856187015 + 20 +10.26763747205871 + 42 +-0.4142135623730956 + 10 +-250.8295856187016 + 20 +10.56763747205872 + 10 +-244.4295856182216 + 20 +10.56763747205869 + 42 +-0.4142135623730951 + 10 +-244.1295856182215 + 20 +10.26763747205868 + 10 +-244.1295856182215 + 20 +3.867637474118709 + 42 +-0.4142135623730951 + 10 +-244.4295856182216 + 20 +3.567637474118698 + 10 +-244.4295856168216 + 20 +3.567637474118726 + 42 +0.4142135623731001 + 10 +-244.8795856168215 + 20 +3.117637474118709 + 10 +-244.8795856168215 + 20 +1.077580855468113 + 42 +-0.1316524974700695 + 10 +-245.2279195663823 + 20 +-0.2224191434931697 + 10 +-245.9776618286069 + 20 +-1.521010835631159 + 42 +0.1316524974700702 + 10 +-246.3795856165616 + 20 +-3.021010834432644 + 10 +-246.3795856165616 + 20 +-4.73236252694133 + 42 +0.4142135623730951 + 10 +-245.4795856165616 + 20 +-5.632362526941336 + 10 +-244.2795856179415 + 20 +-5.632362526941321 + 0 +LINE + 5 +443ED +330 +443E9 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-245.4795856165616 + 20 +-5.63236252694135 + 30 +0.0 + 11 +-252.5295856171215 + 21 +-5.632362526941307 + 31 +0.0 + 0 +LINE + 5 +443EE +330 +443E9 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-250.6795856187815 + 20 +3.567637474118655 + 30 +0.0 + 11 +-244.4295856182215 + 21 +3.567637474118655 + 31 +0.0 + 0 +ENDBLK + 5 +443EB +330 +443E9 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +443FE +330 +443FD +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +678gfd + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +678gfd + 1 + + 0 +LINE + 5 +44400 +330 +443FD +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-247.6295856159216 + 20 +10.56763747205869 + 30 +0.0 + 11 +-247.6295856159216 + 21 +3.567637471578678 + 31 +0.0 + 0 +LINE + 5 +44401 +330 +443FD +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-244.1295856156815 + 20 +7.067637471818699 + 30 +0.0 + 11 +-251.1295856161615 + 21 +7.067637471818699 + 31 +0.0 + 0 +LINE + 5 +444E1 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-243.6295856182215 + 20 +8.11763747181871 + 30 +0.0 + 11 +-241.6295856182216 + 21 +8.11763747181871 + 31 +0.0 + 0 +LINE + 5 +444E2 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.6295856182216 + 20 +6.017637471818688 + 30 +0.0 + 11 +-243.6295856182215 + 21 +6.017637471818688 + 31 +0.0 + 0 +LINE + 5 +444E3 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-243.6295856182215 + 20 +9.3176374718187 + 30 +0.0 + 11 +-241.6295856182216 + 21 +9.3176374718187 + 31 +0.0 + 0 +LINE + 5 +444E4 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.6295856182216 + 20 +4.817637471818699 + 30 +0.0 + 11 +-243.6295856182215 + 21 +4.817637471818699 + 31 +0.0 + 0 +LINE + 5 +444E5 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-244.3295856182215 + 20 +9.8176374718187 + 30 +0.0 + 11 +-244.3295856182215 + 21 +9.8176374718187 + 31 +0.0 + 0 +LINE + 5 +444E6 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-244.3295856182215 + 20 +7.317637471818699 + 30 +0.0 + 11 +-244.3295856182215 + 21 +7.317637471818699 + 31 +0.0 + 0 +LINE + 5 +444E7 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.1295856182216 + 20 +9.8176374718187 + 30 +0.0 + 11 +-241.1295856182215 + 21 +9.8176374718187 + 31 +0.0 + 0 +LINE + 5 +444E8 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.1295856182216 + 20 +7.317637471818699 + 30 +0.0 + 11 +-241.1295856182215 + 21 +7.317637471818699 + 31 +0.0 + 0 +LINE + 5 +444E9 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-244.3295856182215 + 20 +6.817637471818699 + 30 +0.0 + 11 +-244.3295856182215 + 21 +6.817637471818699 + 31 +0.0 + 0 +LINE + 5 +444EA +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-244.3295856182215 + 20 +4.317637471818699 + 30 +0.0 + 11 +-244.3295856182215 + 21 +4.317637471818699 + 31 +0.0 + 0 +LINE + 5 +444EB +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.1295856182216 + 20 +6.817637471818699 + 30 +0.0 + 11 +-241.1295856182215 + 21 +6.817637471818699 + 31 +0.0 + 0 +LINE + 5 +444EC +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-241.1295856182216 + 20 +4.317637471818699 + 30 +0.0 + 11 +-241.1295856182215 + 21 +4.317637471818699 + 31 +0.0 + 0 +ARC + 5 +444ED +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.6295856182215 + 20 +9.8176374718187 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +444EE +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-241.6295856182216 + 20 +9.8176374718187 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +444EF +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.6295856182215 + 20 +7.617637471818711 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +444F0 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-241.6295856182216 + 20 +7.617637471818711 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +444F1 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.6295856182215 + 20 +6.517637471818688 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +444F2 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-241.6295856182216 + 20 +6.517637471818688 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +444F3 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.6295856182215 + 20 +4.317637471818699 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +444F4 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-241.6295856182216 + 20 +4.317637471818699 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +HATCH + 5 +444F5 +330 +443FD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-243.4795856180615 + 20 +-7.632362528711326 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +444F6 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-245.6045856180618 + 20 +-12.38236252871127 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +444F6 +102 +{ACAD_REACTORS +330 +444F5 +102 +} +330 +443FD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-243.4795856180615 + 20 +-7.632362528711326 + 30 +0.0 + 40 +0.3 + 0 +INSERT + 5 +44542 +330 +443FD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C22D74584 + 10 +-243.4795856176216 + 20 +-7.632362528461329 + 30 +0.0 + 0 +LINE + 5 +44B0C +330 +443FD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-252.3795856122217 + 20 +-5.632362527181328 + 30 +0.0 + 11 +-245.4795856114816 + 21 +-5.632362527181357 + 31 +0.0 + 0 +LINE + 5 +44B0D +330 +443FD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-250.6795856137016 + 20 +3.567637473878676 + 30 +0.0 + 11 +-244.3989919718541 + 21 +3.567637473878676 + 31 +0.0 + 0 +LWPOLYLINE + 5 +44B0E +330 +443FD +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 32 + 70 + 0 + 43 +0.0 + 10 +-244.279585615401 + 20 +-5.632362529481327 + 42 +-0.414213562372585 + 10 +-243.9795856159616 + 20 +-5.932362528921317 + 10 +-243.9795856159616 + 20 +-9.332362528501335 + 42 +-0.4142135623730984 + 10 +-244.2795856154016 + 20 +-9.632362527941325 + 10 +-252.6795856149616 + 20 +-9.632362527941325 + 42 +-0.4142135623730908 + 10 +-252.9795856144016 + 20 +-9.332362528501335 + 10 +-252.9795856144016 + 20 +-5.932362526941318 + 42 +-0.4142135623730951 + 10 +-252.6795856144016 + 20 +-5.632362526941307 + 10 +-252.3795856147617 + 20 +-5.632362526941336 + 42 +0.4142135623730951 + 10 +-251.8795856147617 + 20 +-5.132362526941336 + 10 +-251.8795856147617 + 20 +-2.215239468236405 + 42 +-0.1316524975591018 + 10 +-251.3436872301218 + 20 +-0.2152394686217463 + 10 +-250.3805475104814 + 20 +1.452967461011582 + 42 +0.1316524975591017 + 10 +-250.1795856162416 + 20 +2.202967460867058 + 10 +-250.1795856162416 + 20 +3.067637474118669 + 42 +0.4142135623730927 + 10 +-250.6795856162416 + 20 +3.567637474118669 + 10 +-250.8295856161616 + 20 +3.567637474118669 + 42 +-0.4142135623730861 + 10 +-251.1295856161616 + 20 +3.867637474118681 + 10 +-251.1295856161616 + 20 +10.26763747205871 + 42 +-0.4142135623730955 + 10 +-250.8295856161616 + 20 +10.56763747205872 + 10 +-244.4295856156816 + 20 +10.56763747205866 + 42 +-0.4142135623730956 + 10 +-244.1295856156816 + 20 +10.26763747205865 + 10 +-244.1295856156816 + 20 +3.866073445164545 + 42 +-0.396012191328589 + 10 +-244.4108356151566 + 20 +3.566659956022363 + 42 +0.3960121913285877 + 10 +-244.8795856142816 + 20 +3.067637474118669 + 10 +-244.8795856142816 + 20 +1.077580855468113 + 42 +-0.1316524974700695 + 10 +-245.2279195638424 + 20 +-0.2224191434931981 + 10 +-245.9776618260669 + 20 +-1.521010835631159 + 42 +0.1316524974700703 + 10 +-246.3795856140217 + 20 +-3.021010834432673 + 10 +-246.3795856140217 + 20 +-4.732362526941358 + 42 +0.4142135623730951 + 10 +-245.4795856140217 + 20 +-5.632362526941336 + 10 +-244.2795856154016 + 20 +-5.632362526941336 + 0 +ENDBLK + 5 +443FF +330 +443FD +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4456F +330 +4456E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +999fgxdgxf + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +999fgxdgxf + 1 + + 0 +LINE + 5 +44571 +330 +4456E +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-213.5464209905053 + 20 +32.33525227307138 + 30 +0.0 + 11 +-213.5464209905053 + 21 +25.33525227259136 + 31 +0.0 + 0 +LINE + 5 +44572 +330 +4456E +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-210.0464209902653 + 20 +28.83525227283138 + 30 +0.0 + 11 +-217.0464209907453 + 21 +28.83525227283138 + 31 +0.0 + 0 +LINE + 5 +44576 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-209.5464209928053 + 20 +29.88525227283139 + 30 +0.0 + 11 +-209.3964209902654 + 21 +29.88525227283137 + 31 +0.0 + 0 +LINE + 5 +44577 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-209.3964209902654 + 20 +27.78525227283134 + 30 +0.0 + 11 +-209.5464209928053 + 21 +27.78525227283137 + 31 +0.0 + 0 +LINE + 5 +44578 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-209.5464209928053 + 20 +31.08525227283138 + 30 +0.0 + 11 +-209.3964209902654 + 21 +31.08525227283135 + 31 +0.0 + 0 +LINE + 5 +44579 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-209.3964209902654 + 20 +26.58525227283141 + 30 +0.0 + 11 +-209.5464209928053 + 21 +26.58525227283138 + 31 +0.0 + 0 +LINE + 5 +4457A +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-210.2464209928053 + 20 +31.58525227283138 + 30 +0.0 + 11 +-210.2464209928053 + 21 +31.58525227283138 + 31 +0.0 + 0 +LINE + 5 +4457B +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-210.2464209928053 + 20 +29.08525227283138 + 30 +0.0 + 11 +-210.2464209928053 + 21 +29.08525227283138 + 31 +0.0 + 0 +LINE + 5 +4457C +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-208.8964209902654 + 20 +31.58525227283138 + 30 +0.0 + 11 +-208.8964209902653 + 21 +31.58525227283138 + 31 +0.0 + 0 +LINE + 5 +4457D +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-208.8964209902654 + 20 +29.08525227283138 + 30 +0.0 + 11 +-208.8964209902653 + 21 +29.08525227283138 + 31 +0.0 + 0 +LINE + 5 +4457E +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-210.2464209928053 + 20 +28.58525227283138 + 30 +0.0 + 11 +-210.2464209928053 + 21 +28.58525227283138 + 31 +0.0 + 0 +LINE + 5 +4457F +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-210.2464209928053 + 20 +26.08525227283138 + 30 +0.0 + 11 +-210.2464209928053 + 21 +26.08525227283138 + 31 +0.0 + 0 +LINE + 5 +44580 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-208.8964209902654 + 20 +28.58525227283138 + 30 +0.0 + 11 +-208.8964209902653 + 21 +28.58525227283138 + 31 +0.0 + 0 +LINE + 5 +44581 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-208.8964209902654 + 20 +26.08525227283138 + 30 +0.0 + 11 +-208.8964209902653 + 21 +26.08525227283138 + 31 +0.0 + 0 +ARC + 5 +44582 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.5464209928053 + 20 +31.58525227283138 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +44583 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.3964209902654 + 20 +31.58525227283138 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +44584 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.5464209928053 + 20 +29.38525227283139 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +44585 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.3964209902654 + 20 +29.38525227283139 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +44586 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.5464209928053 + 20 +28.28525227283137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +44587 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.3964209902654 + 20 +28.28525227283137 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +44588 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.5464209928053 + 20 +26.08525227283138 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +44589 +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-209.3964209902654 + 20 +26.08525227283138 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +HATCH + 5 +4458A +330 +4456E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-209.3964209926453 + 20 +14.13525227230136 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +4458B + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-211.5214209926456 + 20 +9.385252272301443 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +4458B +102 +{ACAD_REACTORS +330 +4458A +102 +} +330 +4456E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-209.3964209926453 + 20 +14.13525227230136 + 30 +0.0 + 40 +0.3 + 0 +INSERT + 5 +4458C +330 +4456E +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C22D74584 + 10 +-209.3964209922053 + 20 +14.13525227255136 + 30 +0.0 + 0 +LINE + 5 +44B54 +330 +4456E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-218.2964209868053 + 20 +16.13525227383133 + 30 +0.0 + 11 +-211.3964209860654 + 21 +16.13525227383133 + 31 +0.0 + 0 +LINE + 5 +44B55 +330 +4456E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-216.5964209882853 + 20 +25.33525227489136 + 30 +0.0 + 11 +-210.3158273464377 + 21 +25.33525227489136 + 31 +0.0 + 0 +LWPOLYLINE + 5 +44B56 +330 +4456E +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 32 + 70 + 0 + 43 +0.0 + 10 +-210.1964209899847 + 20 +16.13525227153136 + 42 +-0.414213562372585 + 10 +-209.8964209905453 + 20 +15.83525227209137 + 10 +-209.8964209905453 + 20 +12.43525227251138 + 42 +-0.4142135623730984 + 10 +-210.1964209899853 + 20 +12.13525227307139 + 10 +-218.5964209895454 + 20 +12.13525227307139 + 42 +-0.4142135623730908 + 10 +-218.8964209889854 + 20 +12.43525227251138 + 10 +-218.8964209889853 + 20 +15.83525227407137 + 42 +-0.4142135623730951 + 10 +-218.5964209889853 + 20 +16.13525227407138 + 10 +-218.2964209893453 + 20 +16.13525227407135 + 42 +0.4142135623730951 + 10 +-217.7964209893453 + 20 +16.63525227407135 + 10 +-217.7964209893453 + 20 +19.55237533277631 + 42 +-0.1316524975591018 + 10 +-217.2605226047056 + 20 +21.55237533239091 + 10 +-216.2973828850652 + 20 +23.22058226202427 + 42 +0.1316524975591017 + 10 +-216.0964209908253 + 20 +23.97058226187977 + 10 +-216.0964209908253 + 20 +24.83525227513135 + 42 +0.4142135623730927 + 10 +-216.5964209908253 + 20 +25.33525227513135 + 10 +-216.7464209907454 + 20 +25.33525227513138 + 42 +-0.4142135623730861 + 10 +-217.0464209907453 + 20 +25.63525227513134 + 10 +-217.0464209907453 + 20 +32.03525227307136 + 42 +-0.4142135623730955 + 10 +-216.7464209907453 + 20 +32.33525227307138 + 10 +-210.3464209902654 + 20 +32.33525227307138 + 42 +-0.4142135623730956 + 10 +-210.0464209902653 + 20 +32.03525227307136 + 10 +-210.0464209902653 + 20 +25.63368824617726 + 42 +-0.396012191328589 + 10 +-210.3276709897403 + 20 +25.33427475703502 + 42 +0.3960121913285877 + 10 +-210.7964209888653 + 20 +24.83525227513135 + 10 +-210.7964209888653 + 20 +22.84519565648077 + 42 +-0.1316524974700695 + 10 +-211.1447549384261 + 20 +21.54519565751951 + 10 +-211.8944972006507 + 20 +20.2466039653815 + 42 +0.1316524974700703 + 10 +-212.2964209886053 + 20 +18.74660396658004 + 10 +-212.2964209886053 + 20 +17.03525227407135 + 42 +0.4142135623730951 + 10 +-211.3964209886054 + 20 +16.13525227407135 + 10 +-210.1964209899853 + 20 +16.13525227407135 + 0 +ENDBLK + 5 +44570 +330 +4456E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +445CE +330 +445CD +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +456yuftyfvh + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +456yuftyfvh + 1 + + 0 +LINE + 5 +445D0 +330 +445CD +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-447.2872069989806 + 20 +4.013960403359022 + 30 +0.0 + 11 +-447.2872069989806 + 21 +-2.986039597121021 + 31 +0.0 + 0 +LINE + 5 +445D1 +330 +445CD +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbLine + 10 +-443.7872069987405 + 20 +0.5139604031190288 + 30 +0.0 + 11 +-450.7872069992205 + 21 +0.5139604031190288 + 31 +0.0 + 0 +LINE + 5 +445D3 +330 +445CD +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-445.1372069996206 + 20 +-12.18603959564103 + 30 +0.0 + 11 +-452.1872070001805 + 21 +-12.18603959564098 + 31 +0.0 + 0 +LINE + 5 +445D4 +330 +445CD +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-450.3372070018405 + 20 +-2.98603959458103 + 30 +0.0 + 11 +-444.0566133525727 + 21 +-2.98603959458103 + 31 +0.0 + 0 +LINE + 5 +445D5 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.2872070012805 + 20 +1.56396040311904 + 30 +0.0 + 11 +-441.2872070012807 + 21 +1.56396040311904 + 31 +0.0 + 0 +LINE + 5 +445D6 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-441.2872070012807 + 20 +-0.5360395968809826 + 30 +0.0 + 11 +-443.2872070012805 + 21 +-0.5360395968809826 + 31 +0.0 + 0 +LINE + 5 +445D7 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.2872070012805 + 20 +2.763960403119029 + 30 +0.0 + 11 +-441.2872070012807 + 21 +2.763960403119029 + 31 +0.0 + 0 +LINE + 5 +445D8 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-441.2872070012807 + 20 +-1.736039596880971 + 30 +0.0 + 11 +-443.2872070012805 + 21 +-1.736039596880971 + 31 +0.0 + 0 +LINE + 5 +445D9 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.9872070012805 + 20 +3.263960403119029 + 30 +0.0 + 11 +-443.9872070012805 + 21 +3.263960403119029 + 31 +0.0 + 0 +LINE + 5 +445DA +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.9872070012805 + 20 +0.7639604031190288 + 30 +0.0 + 11 +-443.9872070012805 + 21 +0.7639604031190288 + 31 +0.0 + 0 +LINE + 5 +445DB +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-440.7872070012807 + 20 +3.263960403119029 + 30 +0.0 + 11 +-440.7872070012805 + 21 +3.263960403119029 + 31 +0.0 + 0 +LINE + 5 +445DC +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-440.7872070012807 + 20 +0.7639604031190288 + 30 +0.0 + 11 +-440.7872070012805 + 21 +0.7639604031190288 + 31 +0.0 + 0 +LINE + 5 +445DD +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.9872070012805 + 20 +0.2639604031190288 + 30 +0.0 + 11 +-443.9872070012805 + 21 +0.2639604031190288 + 31 +0.0 + 0 +LINE + 5 +445DE +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-443.9872070012805 + 20 +-2.236039596880971 + 30 +0.0 + 11 +-443.9872070012805 + 21 +-2.236039596880971 + 31 +0.0 + 0 +LINE + 5 +445DF +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-440.7872070012807 + 20 +0.2639604031190288 + 30 +0.0 + 11 +-440.7872070012805 + 21 +0.2639604031190288 + 31 +0.0 + 0 +LINE + 5 +445E0 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-440.7872070012807 + 20 +-2.236039596880971 + 30 +0.0 + 11 +-440.7872070012805 + 21 +-2.236039596880971 + 31 +0.0 + 0 +ARC + 5 +445E1 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-443.2872070012805 + 20 +3.263960403119029 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +445E2 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-441.2872070012807 + 20 +3.263960403119029 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +445E3 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-443.2872070012805 + 20 +1.06396040311904 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +445E4 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-441.2872070012807 + 20 +1.06396040311904 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +445E5 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-443.2872070012805 + 20 +-0.0360395968809826 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +445E6 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-441.2872070012807 + 20 +-0.0360395968809826 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +445E7 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-443.2872070012805 + 20 +-2.236039596880971 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +445E8 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-441.2872070012807 + 20 +-2.236039596880971 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +HATCH + 5 +445E9 +330 +445CD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-443.1372070011205 + 20 +-14.186039597411 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +445EA + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-445.2622070011208 + 20 +-18.93603959741094 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +445EA +102 +{ACAD_REACTORS +330 +445E9 +102 +} +330 +445CD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-443.1372070011205 + 20 +-14.186039597411 + 30 +0.0 + 40 +0.3 + 0 +INSERT + 5 +445EB +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C22D74584 + 10 +-443.1372070006806 + 20 +-14.186039597161 + 30 +0.0 + 0 +INSERT + 5 +445EC +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C22D74584 + 10 +-453.1325517764092 + 20 +-14.17444058801129 + 30 +0.0 + 41 +-1.0 + 50 +359.8670233018647 + 0 +LINE + 5 +445ED +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-451.2872069966807 + 20 +1.56396040311904 + 30 +0.0 + 11 +-453.2872069966805 + 21 +1.56396040311904 + 31 +0.0 + 0 +LINE + 5 +445EE +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.1372069992206 + 20 +-0.5360395968809826 + 30 +0.0 + 11 +-451.2872069966807 + 21 +-0.5360395968809826 + 31 +0.0 + 0 +LINE + 5 +445EF +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-451.2872069966807 + 20 +2.763960403119029 + 30 +0.0 + 11 +-453.1372069992206 + 21 +2.763960403119029 + 31 +0.0 + 0 +LINE + 5 +445F0 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.1372069992206 + 20 +-1.736039596880971 + 30 +0.0 + 11 +-451.2872069966807 + 21 +-1.736039596880971 + 31 +0.0 + 0 +LINE + 5 +445F1 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.6372069992206 + 20 +3.263960403119 + 30 +0.0 + 11 +-453.6372069992206 + 21 +3.263960403119 + 31 +0.0 + 0 +LINE + 5 +445F2 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.6372069992206 + 20 +0.7639604031190004 + 30 +0.0 + 11 +-453.6372069992206 + 21 +0.7639604031190004 + 31 +0.0 + 0 +LINE + 5 +445F3 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.6372069992206 + 20 +0.2639604031190004 + 30 +0.0 + 11 +-453.6372069992206 + 21 +0.2639604031190004 + 31 +0.0 + 0 +LINE + 5 +445F4 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-453.6372069992206 + 20 +-2.236039596881 + 30 +0.0 + 11 +-453.6372069992206 + 21 +-2.236039596881 + 31 +0.0 + 0 +ARC + 5 +445F5 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-451.2872069966807 + 20 +3.263960403119029 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +445F6 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-453.1372069992206 + 20 +3.263960403119 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +445F7 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-451.2872069966807 + 20 +1.06396040311904 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +445F8 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-453.1372069992206 + 20 +1.063960403119012 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +445F9 +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-451.2872069966807 + 20 +-0.0360395968809826 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +445FA +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-453.1372069992206 + 20 +-0.036039596881011 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +445FB +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-451.2872069966807 + 20 +-2.236039596880971 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +445FC +330 +445CD +100 +AcDbEntity + 8 +BOM + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-453.1372069992206 + 20 +-2.236039596881 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LWPOLYLINE + 5 +44AC5 +330 +445CD +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 32 + 70 + 0 + 43 +0.0 + 10 +-443.93720699846 + 20 +-12.186039598181 + 42 +-0.414213562372585 + 10 +-443.6372069990206 + 20 +-12.48603959762099 + 10 +-443.6372069990206 + 20 +-15.88603959720098 + 42 +-0.4142135623730984 + 10 +-443.9372069984606 + 20 +-16.18603959664097 + 10 +-452.3372069980206 + 20 +-16.18603959664097 + 42 +-0.4142135623730908 + 10 +-452.6372069974606 + 20 +-15.88603959720098 + 10 +-452.6372069974606 + 20 +-12.48603959564099 + 42 +-0.4142135623730951 + 10 +-452.3372069974606 + 20 +-12.18603959564098 + 10 +-452.0372069978206 + 20 +-12.18603959564101 + 42 +0.4142135623730951 + 10 +-451.5372069978206 + 20 +-11.68603959564101 + 10 +-451.5372069978206 + 20 +-8.768916536936047 + 42 +-0.1316524975591018 + 10 +-451.0013086131808 + 20 +-6.768916537321445 + 10 +-450.0381688935404 + 20 +-5.100709607688088 + 42 +0.1316524975591017 + 10 +-449.8372069993006 + 20 +-4.350709607832584 + 10 +-449.8372069993006 + 20 +-3.486039594581001 + 42 +0.4142135623730927 + 10 +-450.3372069993006 + 20 +-2.986039594581001 + 10 +-450.4872069992206 + 20 +-2.986039594580973 + 42 +-0.4142135623730861 + 10 +-450.7872069992206 + 20 +-2.686039594581018 + 10 +-450.7872069992206 + 20 +3.71396040335901 + 42 +-0.4142135623730955 + 10 +-450.4872069992206 + 20 +4.013960403359022 + 10 +-444.0872069987406 + 20 +4.013960403359022 + 42 +-0.4142135623730956 + 10 +-443.7872069987406 + 20 +3.71396040335901 + 10 +-443.7872069987406 + 20 +-2.687603623535097 + 42 +-0.396012191328589 + 10 +-444.0684569982156 + 20 +-2.987017112677336 + 42 +0.3960121913285877 + 10 +-444.5372069973405 + 20 +-3.486039594581001 + 10 +-444.5372069973405 + 20 +-5.476096213231585 + 42 +-0.1316524974700695 + 10 +-444.8855409469014 + 20 +-6.77609621219284 + 10 +-445.6352832091259 + 20 +-8.074687904330858 + 42 +0.1316524974700703 + 10 +-446.0372069970807 + 20 +-9.574687903132315 + 10 +-446.0372069970807 + 20 +-11.286039595641 + 42 +0.4142135623730951 + 10 +-445.1372069970807 + 20 +-12.18603959564101 + 10 +-443.9372069984606 + 20 +-12.18603959564101 + 0 +ENDBLK + 5 +445CF +330 +445CD +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4461B +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +ghcftfc + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ghcftfc + 1 + + 0 +INSERT + 5 +4461D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-10.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4461E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-10.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +4461F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-10.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44620 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-10.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44621 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-10.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44622 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-20.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44623 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-20.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44624 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-20.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44625 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-20.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44626 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-20.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44627 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-30.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44628 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-30.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44629 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-30.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +4462A +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-30.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +4462B +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-30.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +4462C +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-40.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4462D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-40.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +4462E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-40.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +4462F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-40.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44630 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-40.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44631 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-50.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44632 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-50.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44633 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-50.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44634 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-50.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44635 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-50.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44636 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-60.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44637 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-60.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44638 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-60.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44639 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-60.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +4463A +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-60.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +4463B +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-70.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4463C +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-70.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +4463D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-70.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +4463E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-70.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +4463F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-70.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44640 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-80.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44641 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-80.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44642 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-80.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44643 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-80.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44644 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-80.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44645 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-90.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44646 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-90.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44647 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-90.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44648 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-90.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44649 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-90.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +4464A +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-100.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4464B +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-100.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +4464C +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-100.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +4464D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-100.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +4464E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-100.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +4464F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-110.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44650 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-110.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44651 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-110.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44652 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-110.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44653 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-110.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44654 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-120.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44655 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-120.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44656 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-120.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44657 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-120.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44658 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-120.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44659 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-130.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4465A +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-130.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +4465B +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-130.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +4465C +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-130.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +4465D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-130.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +4465E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-140.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +4465F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-140.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44660 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-140.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44661 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-140.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44662 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-140.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +INSERT + 5 +44663 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-150.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +44664 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-150.0 + 20 +-21.19999999999999 + 30 +0.0 + 0 +INSERT + 5 +44665 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-150.0 + 20 +-42.40000000000001 + 30 +0.0 + 0 +INSERT + 5 +44666 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-150.0 + 20 +-63.59999999999999 + 30 +0.0 + 0 +INSERT + 5 +44667 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +678gfd + 10 +-150.0 + 20 +-84.79999999999998 + 30 +0.0 + 0 +LINE + 5 +44668 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-413.9795856169416 + 20 +-94.43236252794128 + 30 +0.0 + 11 +-413.9795856169416 + 21 +10.56763747205866 + 31 +0.0 + 0 +LINE + 5 +44669 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-243.9795856182216 + 20 +-95.43236252794128 + 30 +0.0 + 11 +-412.9795856169416 + 21 +-95.43236252794128 + 31 +0.0 + 0 +LINE + 5 +4466A +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-243.9795856182216 + 20 +11.56763747205869 + 30 +0.0 + 11 +-412.9795856169416 + 21 +11.56763747205866 + 31 +0.0 + 0 +LINE + 5 +4466B +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-242.9795856182216 + 20 +-94.43236252794128 + 30 +0.0 + 11 +-242.9795856182216 + 21 +10.56763747205869 + 31 +0.0 + 0 +INSERT + 5 +4466C +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +999fgxdgxf + 10 +-34.0831646254162 + 20 +-21.76761480101266 + 30 +0.0 + 0 +INSERT + 5 +4466D +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +999fgxdgxf + 10 +-34.0831646254162 + 20 +-42.96761480101267 + 30 +0.0 + 0 +INSERT + 5 +4466E +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +999fgxdgxf + 10 +-34.0831646254162 + 20 +-64.16761480101266 + 30 +0.0 + 0 +INSERT + 5 +4466F +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +999fgxdgxf + 10 +-34.0831646254162 + 20 +-85.36761480101266 + 30 +0.0 + 0 +INSERT + 5 +44670 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +999fgxdgxf + 10 +-34.0831646254162 + 20 +-106.5676148010127 + 30 +0.0 + 0 +INSERT + 5 +44671 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +456yuftyfvh + 10 +39.65762138305899 + 20 +6.553677068699699 + 30 +0.0 + 0 +INSERT + 5 +44672 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +456yuftyfvh + 10 +39.65762138305899 + 20 +-14.64632293130032 + 30 +0.0 + 0 +INSERT + 5 +44673 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +456yuftyfvh + 10 +39.65762138305899 + 20 +-35.84632293130031 + 30 +0.0 + 0 +INSERT + 5 +44674 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +456yuftyfvh + 10 +39.65762138305899 + 20 +-57.04632293130031 + 30 +0.0 + 0 +INSERT + 5 +44675 +330 +4461A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +456yuftyfvh + 10 +39.65762138305899 + 20 +-78.24632293130031 + 30 +0.0 + 0 +ARC + 5 +44676 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.9795856182216 + 20 +-94.43236252794128 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +44677 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-412.9795856169416 + 20 +-94.43236252794128 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +44678 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-412.9795856169416 + 20 +10.56763747205866 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +44679 +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +-243.9795856182216 + 20 +10.56763747205869 + 30 +0.0 + 40 +1.0 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ENDBLK + 5 +4461C +330 +4461A +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44A5A +330 +44A51 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C29E31674 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C29E31674 + 1 + + 0 +LINE + 5 +44A52 +330 +44A51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-92.96126449801534 + 20 +-0.0000000000027285 + 30 +0.0 + 11 +92.5 + 21 +-0.0000000000027285 + 31 +0.0 + 0 +LINE + 5 +44A53 +330 +44A51 +100 +AcDbEntity + 8 +BOM + 6 +CENTER2 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +59.0 + 30 +0.0 + 11 +0.0 + 21 +-59.0 + 31 +0.0 + 0 +INSERT + 5 +44A54 +330 +44A51 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +ghcftfc + 10 +328.248953368574 + 20 +41.93236252793855 + 30 +0.0 + 0 +ENDBLK + 5 +44A5B +330 +44A51 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44C12 +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C2F884FB3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C2F884FB3 + 1 + + 0 +LWPOLYLINE + 5 +44C13 +330 +44C0F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +0.2000001067245734 + 20 +13.94999998881545 + 10 +8.00000010672457 + 20 +13.94999998881545 + 42 +-0.414213562373095 + 10 +8.200000106724573 + 20 +13.74999998881543 + 10 +8.200000106724573 + 20 +6.849999988815455 + 42 +-0.414213562373095 + 10 +8.00000010672457 + 20 +6.649999988815452 + 10 +0.2000001067245734 + 20 +6.649999988815438 + 42 +-0.4142135623730953 + 10 +0.0000001067245705 + 20 +6.849999988815455 + 10 +0.0000001067245705 + 20 +13.74999998881546 + 42 +-0.4142135623730953 + 0 +LWPOLYLINE + 5 +44C14 +330 +44C0F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +0.4250001067245677 + 20 +3.599999988815455 + 10 +7.775000106724562 + 20 +3.599999988815455 + 42 +-0.414213562373095 + 10 +7.975000106724565 + 20 +3.399999988815452 + 10 +7.975000106724565 + 20 +0.1999999888154491 + 42 +-0.414213562373095 + 10 +7.775000106724562 + 20 +-0.0000000111845395 + 10 +0.4250001067245677 + 20 +-0.0000000111845537 + 42 +-0.414213562373095 + 10 +0.2250001067245648 + 20 +0.1999999888154491 + 10 +0.2250001067245648 + 20 +3.399999988815452 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +44C15 +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +7.775000106724576 + 20 +-0.0000000111845395 + 10 +0.4250001067245677 + 20 +-0.0000000111845537 + 42 +-0.4142135623730949 + 10 +0.225000106724579 + 20 +0.1999999888154491 + 10 +0.225000106724579 + 20 +3.399999988815452 + 42 +-0.4142135623730951 + 10 +0.4250001067245819 + 20 +3.599999988815455 + 10 +0.600000106724579 + 20 +3.599999988815455 + 42 +0.4142135623730951 + 10 +1.100000106724579 + 20 +4.099999988815455 + 10 +1.100000106724579 + 20 +6.149999988815438 + 42 +0.4142135623730951 + 10 +0.600000106724579 + 20 +6.649999988815438 + 10 +0.2000001067245734 + 20 +6.649999988815438 + 42 +-0.4142135623730951 + 10 +0.0000001067245705 + 20 +6.849999988815455 + 10 +0.0000001067245705 + 20 +13.74999998881545 + 42 +-0.4142135623730951 + 10 +0.2000001067245734 + 20 +13.94999998881546 + 10 +8.00000010672457 + 20 +13.94999998881543 + 42 +-0.4142135623730951 + 10 +8.200000106724573 + 20 +13.74999998881545 + 10 +8.200000106724573 + 20 +6.849999988815455 + 42 +-0.4142135623730951 + 10 +8.00000010672457 + 20 +6.649999988815452 + 10 +7.600000106724579 + 20 +6.649999988815452 + 42 +0.4142135623730951 + 10 +7.100000106724579 + 20 +6.149999988815452 + 10 +7.100000106724579 + 20 +4.099999988815455 + 42 +0.4142135623730951 + 10 +7.600000106724579 + 20 +3.599999988815455 + 10 +7.775000106724562 + 20 +3.599999988815455 + 42 +-0.4142135623731054 + 10 +7.975000106724579 + 20 +3.399999988815452 + 10 +7.975000106724565 + 20 +0.1999999888154491 + 42 +-0.4142135623731054 + 0 +INSERT + 5 +44CED +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +126.0064578741798 + 20 +154.2999986938469 + 30 +0.0 + 50 +270.0 + 0 +INSERT + 5 +44CEE +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +126.0064578741798 + 20 +-133.6999987162159 + 30 +0.0 + 41 +-1.0 + 50 +270.0 + 0 +INSERT + 5 +44CF1 +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +-117.8064576607307 + 20 +154.2999986938468 + 30 +0.0 + 41 +-1.0 + 50 +90.0 + 0 +INSERT + 5 +44CF2 +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +-117.8064576607307 + 20 +-133.699998716216 + 30 +0.0 + 50 +90.0 + 0 +HATCH + 5 +4501E +330 +44C0F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-0.4999998932754295 + 20 +1.799999988815443 + 40 +0.3 + 50 +270.0 + 51 +630.0 + 73 + 1 + 97 + 1 +330 +4501F + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-5.249999893275373 + 20 +3.924999988815671 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +4501F +102 +{ACAD_REACTORS +330 +4501E +102 +} +330 +44C0F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-0.4999998932754295 + 20 +1.799999988815443 + 30 +0.0 + 40 +0.3 + 0 +ARC + 5 +4504A +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-0.5001028932754537 + 20 +0.5750769888154821 + 30 +0.0 + 40 +0.725 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +4504B +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-0.5001028932754537 + 20 +3.025076988815414 + 30 +0.0 + 40 +0.725 +100 +AcDbArc + 50 +180.0 + 51 +0.0 + 0 +ENDBLK + 5 +44C16 +330 +44C0F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +44CAE +330 +44CAB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C74366CC6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C74366CC6 + 1 + + 0 +ARC + 5 +44CAF +330 +44CAB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +142.9999987050314 + 20 +-117.3064577674552 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ARC + 5 +44CB0 +330 +44CAB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +140.9999987050313 + 20 +-117.3064577674552 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ENDBLK + 5 +44CB1 +330 +44CAB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +450F5 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +VBNJFGYJGYU + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +VBNJFGYJGYU + 1 + + 0 +LWPOLYLINE + 5 +450F7 +330 +450F4 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +187.2281730020328 + 20 +-130.7338926697736 + 10 +187.2281730020328 + 20 +-122.9338926697737 + 42 +-0.414213562373095 + 10 +187.4281730020328 + 20 +-122.7338926697737 + 10 +194.3281730020328 + 20 +-122.7338926697737 + 42 +-0.414213562373095 + 10 +194.5281730020328 + 20 +-122.9338926697737 + 10 +194.5281730020328 + 20 +-130.7338926697736 + 42 +-0.4142135623730953 + 10 +194.3281730020328 + 20 +-130.9338926697737 + 10 +187.4281730020328 + 20 +-130.9338926697737 + 42 +-0.4142135623730953 + 0 +LWPOLYLINE + 5 +450F8 +330 +450F4 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +197.5781730020328 + 20 +-130.5088926697737 + 10 +197.5781730020328 + 20 +-123.1588926697737 + 42 +-0.414213562373095 + 10 +197.7781730020328 + 20 +-122.9588926697737 + 10 +200.9781730020328 + 20 +-122.9588926697737 + 42 +-0.414213562373095 + 10 +201.1781730020328 + 20 +-123.1588926697737 + 10 +201.1781730020328 + 20 +-130.5088926697737 + 42 +-0.414213562373095 + 10 +200.9781730020328 + 20 +-130.7088926697737 + 10 +197.7781730020328 + 20 +-130.7088926697737 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +450F9 +330 +450F4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +201.1781730020328 + 20 +-123.1588926697736 + 10 +201.1781730020328 + 20 +-130.5088926697737 + 42 +-0.4142135623730949 + 10 +200.9781730020328 + 20 +-130.7088926697737 + 10 +197.7781730020328 + 20 +-130.7088926697737 + 42 +-0.4142135623730951 + 10 +197.5781730020328 + 20 +-130.5088926697736 + 10 +197.5781730020328 + 20 +-130.3338926697737 + 42 +0.4142135623730951 + 10 +197.0781730020328 + 20 +-129.8338926697737 + 10 +195.0281730020328 + 20 +-129.8338926697737 + 42 +0.4142135623730951 + 10 +194.5281730020328 + 20 +-130.3338926697737 + 10 +194.5281730020328 + 20 +-130.7338926697736 + 42 +-0.4142135623730951 + 10 +194.3281730020328 + 20 +-130.9338926697737 + 10 +187.4281730020328 + 20 +-130.9338926697737 + 42 +-0.4142135623730951 + 10 +187.2281730020327 + 20 +-130.7338926697736 + 10 +187.2281730020328 + 20 +-122.9338926697737 + 42 +-0.4142135623730951 + 10 +187.4281730020328 + 20 +-122.7338926697737 + 10 +194.3281730020328 + 20 +-122.7338926697737 + 42 +-0.4142135623730951 + 10 +194.5281730020328 + 20 +-122.9338926697737 + 10 +194.5281730020328 + 20 +-123.3338926697736 + 42 +0.4142135623730951 + 10 +195.0281730020328 + 20 +-123.8338926697736 + 10 +197.0781730020328 + 20 +-123.8338926697736 + 42 +0.4142135623730951 + 10 +197.5781730020328 + 20 +-123.3338926697736 + 10 +197.5781730020328 + 20 +-123.1588926697737 + 42 +-0.4142135623731054 + 10 +197.7781730020328 + 20 +-122.9588926697736 + 10 +200.9781730020328 + 20 +-122.9588926697737 + 42 +-0.4142135623731054 + 0 +INSERT + 5 +450FA +330 +450F4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +46.87817429700132 + 20 +-4.927434902318453 + 30 +0.0 + 0 +INSERT + 5 +450FB +330 +450F4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +334.8781717070641 + 20 +-4.927434902318396 + 30 +0.0 + 41 +-1.0 + 0 +INSERT + 5 +450FC +330 +450F4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +46.87817429700138 + 20 +-248.740350437229 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +450FD +330 +450F4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +334.8781717070642 + 20 +-248.7403504372289 + 30 +0.0 + 50 +180.0 + 0 +HATCH + 5 +450FE +330 +450F4 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +199.3781730020328 + 20 +-131.4338926697737 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +450FF + 75 + 0 + 76 + 1 + 98 + 1 + 10 +197.2531730020326 + 20 +-136.1838926697736 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +450FF +102 +{ACAD_REACTORS +330 +450FE +102 +} +330 +450F4 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +199.3781730020328 + 20 +-131.4338926697737 + 30 +0.0 + 40 +0.3 + 0 +ARC + 5 +45100 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +198.3781730020328 + 20 +-131.2088926697737 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45101 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +200.3781730020328 + 20 +-131.2088926697737 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45102 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +198.3781730020328 + 20 +-131.4338926697737 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45103 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +200.3781730020328 + 20 +-131.4338926697737 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45104 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +198.8781730020328 + 20 +-131.4338926697737 + 30 +0.0 + 11 +198.8781730020328 + 21 +-131.2088926697737 + 31 +0.0 + 0 +LINE + 5 +45105 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +199.8781730020328 + 20 +-131.4338926697737 + 30 +0.0 + 11 +199.8781730020328 + 21 +-131.2088926697737 + 31 +0.0 + 0 +LINE + 5 +45106 +330 +450F4 +100 +AcDbEntity + 8 +2 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +190.4281730020327 + 20 +-131.4338926697737 + 30 +0.0 + 11 +190.4281730020327 + 21 +-122.2338926697738 + 31 +0.0 + 0 +LINE + 5 +45107 +330 +450F4 +100 +AcDbEntity + 8 +2 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +186.5781730020328 + 20 +-126.8338926697737 + 30 +0.0 + 11 +201.6781730020327 + 21 +-126.8338926697737 + 31 +0.0 + 0 +ENDBLK + 5 +450F6 +330 +450F4 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45110 +330 +4510B +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C127B04C8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C127B04C8 + 1 + + 0 +INSERT + 5 +4510C +330 +4510B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +VBNJFGYJGYU + 10 +-201.6781730020327 + 20 +126.8338926697737 + 30 +0.0 + 0 +ENDBLK + 5 +45111 +330 +4510B +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45181 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +FHCFGJHCVGJHFGU + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +FHCFGJHCVGJHFGU + 1 + + 0 +LWPOLYLINE + 5 +45183 +330 +45180 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +240.8202129479026 + 20 +21.17310027043152 + 10 +240.8202129479026 + 20 +28.9731002704315 + 42 +-0.414213562373095 + 10 +241.0202129479026 + 20 +29.17310027043149 + 10 +247.9202129479026 + 20 +29.17310027043149 + 42 +-0.414213562373095 + 10 +248.1202129479026 + 20 +28.9731002704315 + 10 +248.1202129479026 + 20 +21.17310027043152 + 42 +-0.4142135623730953 + 10 +247.9202129479026 + 20 +20.9731002704315 + 10 +241.0202129479026 + 20 +20.9731002704315 + 42 +-0.4142135623730953 + 0 +LWPOLYLINE + 5 +45184 +330 +45180 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +251.1702129479026 + 20 +21.39810027043151 + 10 +251.1702129479026 + 20 +28.74810027043148 + 42 +-0.414213562373095 + 10 +251.3702129479026 + 20 +28.9481002704315 + 10 +254.5702129479026 + 20 +28.9481002704315 + 42 +-0.414213562373095 + 10 +254.7702129479026 + 20 +28.74810027043148 + 10 +254.7702129479026 + 20 +21.39810027043151 + 42 +-0.414213562373095 + 10 +254.5702129479026 + 20 +21.1981002704315 + 10 +251.3702129479026 + 20 +21.1981002704315 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +45185 +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +254.7702129479026 + 20 +28.74810027043151 + 10 +254.7702129479026 + 20 +21.39810027043151 + 42 +-0.4142135623730949 + 10 +254.5702129479026 + 20 +21.19810027043152 + 10 +251.3702129479026 + 20 +21.19810027043152 + 42 +-0.4142135623730951 + 10 +251.1702129479026 + 20 +21.39810027043151 + 10 +251.1702129479026 + 20 +21.57310027043152 + 42 +0.4142135623730951 + 10 +250.6702129479026 + 20 +22.07310027043152 + 10 +248.6202129479026 + 20 +22.07310027043152 + 42 +0.4142135623730951 + 10 +248.1202129479026 + 20 +21.57310027043152 + 10 +248.1202129479026 + 20 +21.17310027043152 + 42 +-0.4142135623730951 + 10 +247.9202129479026 + 20 +20.9731002704315 + 10 +241.0202129479026 + 20 +20.9731002704315 + 42 +-0.4142135623730951 + 10 +240.8202129479026 + 20 +21.17310027043152 + 10 +240.8202129479026 + 20 +28.9731002704315 + 42 +-0.4142135623730951 + 10 +241.0202129479026 + 20 +29.17310027043149 + 10 +247.9202129479026 + 20 +29.17310027043149 + 42 +-0.4142135623730951 + 10 +248.1202129479026 + 20 +28.9731002704315 + 10 +248.1202129479026 + 20 +28.57310027043152 + 42 +0.4142135623730951 + 10 +248.6202129479026 + 20 +28.07310027043152 + 10 +250.6702129479026 + 20 +28.07310027043152 + 42 +0.4142135623730951 + 10 +251.1702129479026 + 20 +28.57310027043152 + 10 +251.1702129479026 + 20 +28.74810027043148 + 42 +-0.4142135623731054 + 10 +251.3702129479026 + 20 +28.94810027043152 + 10 +254.5702129479026 + 20 +28.9481002704315 + 42 +-0.4142135623731054 + 0 +INSERT + 5 +45186 +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +100.4702142428712 + 20 +146.9795580378867 + 30 +0.0 + 0 +INSERT + 5 +45187 +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +388.4702116529339 + 20 +146.9795580378868 + 30 +0.0 + 41 +-1.0 + 0 +INSERT + 5 +45188 +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +100.4702142428712 + 20 +-96.83335749702378 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +45189 +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +388.470211652934 + 20 +-96.83335749702375 + 30 +0.0 + 50 +180.0 + 0 +HATCH + 5 +4518A +330 +45180 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +252.9702129479026 + 20 +20.4731002704315 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +4518B + 75 + 0 + 76 + 1 + 98 + 1 + 10 +250.8452129479024 + 20 +15.72310027043156 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +4518B +102 +{ACAD_REACTORS +330 +4518A +102 +} +330 +45180 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +252.9702129479026 + 20 +20.4731002704315 + 30 +0.0 + 40 +0.3 + 0 +ARC + 5 +4518C +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +254.1951359479026 + 20 +20.47299727043148 + 30 +0.0 + 40 +0.725 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +ARC + 5 +4518D +330 +45180 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +251.7451359479026 + 20 +20.47299727043148 + 30 +0.0 + 40 +0.725 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +4518E +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +251.9702129479026 + 20 +29.67310027043149 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +4518F +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +253.9702129479026 + 20 +29.67310027043149 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45190 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +251.9702129479026 + 20 +29.44810027043147 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45191 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +253.9702129479026 + 20 +29.44810027043147 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45192 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +252.4702129479026 + 20 +29.44810027043147 + 30 +0.0 + 11 +252.4702129479026 + 21 +29.67310027043149 + 31 +0.0 + 0 +LINE + 5 +45193 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +253.4702129479026 + 20 +29.44810027043147 + 30 +0.0 + 11 +253.4702129479026 + 21 +29.67310027043149 + 31 +0.0 + 0 +LINE + 5 +45194 +330 +45180 +100 +AcDbEntity + 8 +2 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +244.0202129479026 + 20 +20.47310027043144 + 30 +0.0 + 11 +244.0202129479026 + 21 +29.67310027043138 + 31 +0.0 + 0 +LINE + 5 +45195 +330 +45180 +100 +AcDbEntity + 8 +2 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +240.1702129479027 + 20 +25.07310027043147 + 30 +0.0 + 11 +255.2702129479026 + 21 +25.07310027043147 + 31 +0.0 + 0 +ENDBLK + 5 +45182 +330 +45180 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4548F +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +987fgsdrtgse + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +987fgsdrtgse + 1 + + 0 +LWPOLYLINE + 5 +45491 +330 +4548E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 25 + 70 + 0 + 43 +0.0 + 10 +228.6108153448356 + 20 +13.96712803829564 + 42 +0.4142135623730951 + 10 +228.1108153448356 + 20 +13.46712803829564 + 10 +228.1108153448356 + 20 +13.41712803829566 + 42 +-0.4142135623730949 + 10 +227.9108153448356 + 20 +13.21712803829564 + 10 +221.8108153448356 + 20 +13.21712803829564 + 42 +-0.414213562373095 + 10 +221.6108153448356 + 20 +13.41712803829563 + 10 +221.6108153448356 + 20 +19.51712803829562 + 42 +-0.414213562373095 + 10 +221.8108153448356 + 20 +19.71712803829564 + 10 +227.9108153448356 + 20 +19.71712803829564 + 42 +-0.4142135623730867 + 10 +228.1108153448357 + 20 +19.51712803829565 + 10 +228.1108153448356 + 20 +19.46712803829564 + 42 +0.414213562373095 + 10 +228.6108153448356 + 20 +18.96712803829564 + 10 +232.7708153448356 + 20 +18.96712803829564 + 42 +0.414213562373095 + 10 +233.2708153448356 + 20 +19.46712803829564 + 10 +233.2708153448356 + 20 +20.26712803829562 + 42 +-0.414213562373095 + 10 +233.4708153448356 + 20 +20.46712803829564 + 10 +237.0708153448356 + 20 +20.46712803829564 + 42 +-0.414213562373095 + 10 +237.2708153448356 + 20 +20.26712803829562 + 10 +237.2708153448356 + 20 +12.66712803829563 + 42 +-0.414213562373095 + 10 +237.0708153448356 + 20 +12.46712803829564 + 10 +233.4708153448356 + 20 +12.46712803829564 + 42 +-0.414213562373095 + 10 +233.2708153448356 + 20 +12.66712803829566 + 10 +233.2708153448356 + 20 +13.46712803829564 + 42 +0.414213562373095 + 10 +232.7708153448356 + 20 +13.96712803829564 + 10 +228.6108153448356 + 20 +13.96712803829564 + 0 +LWPOLYLINE + 5 +45492 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +221.6108153448356 + 20 +13.41712803829566 + 10 +221.6108153448356 + 20 +19.51712803829562 + 42 +-0.4142135623730944 + 10 +221.8108153448356 + 20 +19.71712803829564 + 10 +227.9108153448356 + 20 +19.71712803829564 + 42 +-0.414213562373095 + 10 +228.1108153448356 + 20 +19.51712803829562 + 10 +228.1108153448356 + 20 +13.41712803829563 + 42 +-0.414213562373095 + 10 +227.9108153448356 + 20 +13.21712803829564 + 10 +221.8108153448356 + 20 +13.21712803829564 + 42 +-0.4142135623730949 + 0 +LWPOLYLINE + 5 +45493 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +233.2708153448356 + 20 +12.66712803829566 + 10 +233.2708153448356 + 20 +20.26712803829562 + 42 +-0.4142135623730948 + 10 +233.4708153448356 + 20 +20.46712803829564 + 10 +237.0708153448356 + 20 +20.46712803829564 + 42 +-0.414213562373095 + 10 +237.2708153448356 + 20 +20.26712803829562 + 10 +237.2708153448356 + 20 +12.66712803829566 + 42 +-0.414213562373095 + 10 +237.0708153448356 + 20 +12.46712803829564 + 10 +233.4708153448356 + 20 +12.46712803829564 + 42 +-0.4142135623730949 + 0 +LINE + 5 +45494 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +229.1108153448356 + 20 +18.96712803829564 + 30 +0.0 + 11 +229.1108153448356 + 21 +13.96712803829564 + 31 +0.0 + 0 +LINE + 5 +45495 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +232.7708153448356 + 20 +13.96712803829564 + 30 +0.0 + 11 +232.7708153448356 + 21 +18.96712803829564 + 31 +0.0 + 0 +HATCH + 5 +45496 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +229.1108153448357 + 20 +13.96712803829564 + 10 +232.7708153448356 + 20 +13.96712803829564 + 10 +232.7708153448356 + 20 +18.96712803829564 + 10 +229.1108153448357 + 20 +18.96712803829564 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +90.0 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +135.0 + 43 +283.0159007599999 + 44 +55.31941790147508 + 45 +-0.2651650429449554 + 46 +-0.2651650429449553 + 79 + 0 + 53 +225.0 + 43 +283.0159007599999 + 44 +55.31941790147508 + 45 +0.2651650429449553 + 46 +-0.2651650429449554 + 79 + 0 + 47 +0.076321225406334 + 98 + 1 + 10 +230.5086574265049 + 20 +16.03614344735212 + 0 +INSERT + 5 +45497 +330 +4548E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +377.2708140498669 + 20 +-105.3393297291597 + 30 +0.0 + 50 +180.0 + 0 +HATCH + 5 +45498 +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +235.2708153448356 + 20 +11.9671280382955 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +45499 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +233.1458153448354 + 20 +7.217128038295556 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +CIRCLE + 5 +45499 +102 +{ACAD_REACTORS +330 +45498 +102 +} +330 +4548E +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +235.2708153448356 + 20 +11.9671280382955 + 30 +0.0 + 40 +0.3 + 0 +LWPOLYLINE + 5 +4549A +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +222.6608153448356 + 20 +13.21712803829564 + 10 +223.6608153448356 + 20 +13.21712803829564 + 10 +223.6608153448356 + 20 +11.46712803829564 + 10 +222.6608153448356 + 20 +11.46712803829564 + 0 +LWPOLYLINE + 5 +4549B +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +226.0608153448356 + 20 +13.21712803829564 + 10 +227.0608153448356 + 20 +13.21712803829564 + 10 +227.0608153448356 + 20 +11.46712803829564 + 10 +226.0608153448356 + 20 +11.46712803829564 + 0 +LWPOLYLINE + 5 +4549C +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +222.6608153448356 + 20 +19.71712803829564 + 10 +223.6608153448356 + 20 +19.71712803829564 + 10 +223.6608153448356 + 20 +21.46712803829564 + 10 +222.6608153448356 + 20 +21.46712803829564 + 0 +LWPOLYLINE + 5 +4549D +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +226.0608153448356 + 20 +19.71712803829564 + 10 +227.0608153448356 + 20 +19.71712803829564 + 10 +227.0608153448356 + 20 +21.46712803829564 + 10 +226.0608153448356 + 20 +21.46712803829564 + 0 +INSERT + 5 +4549E +330 +4548E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C74366CC6 + 10 +377.2708140498669 + 20 +138.273585805751 + 30 +0.0 + 41 +-1.0 + 0 +ENDBLK + 5 +45490 +330 +4548E +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +455F5 +330 +45576 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7C6044F2 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7C6044F2 + 1 + + 0 +INSERT + 5 +45577 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45578 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45579 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557A +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557B +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557C +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557D +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557E +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4557F +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45580 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +33.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45581 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45582 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45583 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45584 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45585 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45586 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45587 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45588 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45589 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558A +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +24.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558B +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558C +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558D +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558E +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +4558F +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45590 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45591 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45592 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45593 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45594 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +15.03287196170442 + 30 +0.0 + 0 +INSERT + 5 +45595 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +45596 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +45597 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +45598 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +45599 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559A +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559B +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559C +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559D +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559E +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +6.032871961704416 + 30 +0.0 + 0 +INSERT + 5 +4559F +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A0 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A1 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A2 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A3 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A4 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A5 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A6 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A7 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A8 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-2.967128038295584 + 30 +0.0 + 0 +INSERT + 5 +455A9 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AA +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AB +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AC +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AD +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AE +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455AF +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B0 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B1 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B2 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-11.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B3 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B4 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B5 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B6 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B7 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B8 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455B9 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BA +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BB +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BC +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-20.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BD +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BE +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455BF +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C0 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448357 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C1 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C2 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C3 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C4 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C5 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C6 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-29.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C7 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C8 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455C9 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CA +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448357 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CB +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CC +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CD +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CE +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455CF +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D0 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-38.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D1 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D2 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D3 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D4 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448357 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D5 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D6 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D7 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D8 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455D9 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DA +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-47.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DB +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DC +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DD +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DE +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448357 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455DF +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E0 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E1 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E2 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E3 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E4 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-56.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E5 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-304.4108153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E6 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-287.7508153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E7 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-271.0908153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E8 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-254.4308153448357 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455E9 +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-237.7708153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455EA +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-221.1108153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455EB +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-204.4508153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455EC +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-187.7908153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455ED +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-171.1308153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +INSERT + 5 +455EE +330 +45576 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +987fgsdrtgse + 10 +-154.4708153448356 + 20 +-65.96712803829558 + 30 +0.0 + 0 +LWPOLYLINE + 5 +455EF +330 +45576 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +82.60000000000008 + 20 +-54.50000000000007 + 10 +-82.6 + 20 +-54.50000000000007 + 42 +-0.414213562373095 + 10 +-83.80000000000001 + 20 +-53.30000000000007 + 10 +-83.79999999999998 + 20 +53.30000000000007 + 42 +-0.414213562373095 + 10 +-82.59999999999997 + 20 +54.50000000000006 + 10 +82.60000000000002 + 20 +54.50000000000006 + 42 +-0.414213562373095 + 10 +83.80000000000001 + 20 +53.30000000000007 + 10 +83.80000000000007 + 20 +-53.30000000000007 + 42 +-0.414213562373095 + 0 +ENDBLK + 5 +455F6 +330 +45576 +100 +AcDbEntity + 8 +0 + 62 + 6 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45A47 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +236656 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +236656 + 1 + + 0 +LWPOLYLINE + 5 +45A49 +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +176.6232665222628 + 20 +9.396992537611652 + 10 +176.6232665222628 + 20 +15.49699253761165 + 42 +-0.4142135623730944 + 10 +176.8232665222629 + 20 +15.69699253761164 + 10 +182.9232665222628 + 20 +15.69699253761164 + 42 +-0.414213562373095 + 10 +183.1232665222628 + 20 +15.49699253761165 + 10 +183.1232665222628 + 20 +9.396992537611652 + 42 +-0.414213562373095 + 10 +182.9232665222628 + 20 +9.196992537611635 + 10 +176.8232665222628 + 20 +9.196992537611635 + 42 +-0.4142135623730949 + 0 +LWPOLYLINE + 5 +45A4A +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +188.5832665222628 + 20 +8.646992537611652 + 10 +188.5832665222628 + 20 +16.24699253761165 + 42 +-0.4142135623730948 + 10 +188.7832665222628 + 20 +16.44699253761164 + 10 +192.3832665222628 + 20 +16.44699253761164 + 42 +-0.414213562373095 + 10 +192.5832665222628 + 20 +16.24699253761165 + 10 +192.5832665222628 + 20 +8.646992537611652 + 42 +-0.414213562373095 + 10 +192.3832665222628 + 20 +8.446992537611635 + 10 +188.7832665222628 + 20 +8.446992537611635 + 42 +-0.4142135623730949 + 0 +LINE + 5 +45A4B +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +184.1232665222628 + 20 +14.94699253761164 + 30 +0.0 + 11 +184.1232665222628 + 21 +9.946992537611635 + 31 +0.0 + 0 +LINE + 5 +45A4C +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +188.0832665222628 + 20 +9.946992537611635 + 30 +0.0 + 11 +188.0832665222628 + 21 +14.94699253761164 + 31 +0.0 + 0 +HATCH + 5 +45A4D +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +184.3119647621739 + 20 +9.946992537611635 + 10 +187.9719647621739 + 20 +9.946992537611635 + 10 +187.9719647621739 + 20 +14.94699253761164 + 10 +184.3119647621739 + 20 +14.94699253761164 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +90.0 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +135.0 + 43 +238.2170501773381 + 44 +51.2992824007911 + 45 +-0.2651650429449554 + 46 +-0.2651650429449553 + 79 + 0 + 53 +225.0 + 43 +238.2170501773381 + 44 +51.2992824007911 + 45 +0.2651650429449553 + 46 +-0.2651650429449554 + 79 + 0 + 47 +0.076321225406334 + 98 + 1 + 10 +185.7098068438432 + 20 +12.01600794666811 + 0 +ARC + 5 +45A4E +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +183.6232665222628 + 20 +9.446992537611663 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +45A4F +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +183.1232665222628 + 20 +9.446992537611635 + 30 +0.0 + 11 +183.1232665222628 + 21 +9.396992537611652 + 31 +0.0 + 0 +ARC + 5 +45A50 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.9232665222628 + 20 +9.396992537611652 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +45A51 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +182.9232665222628 + 20 +9.196992537611635 + 30 +0.0 + 11 +176.8232665222628 + 21 +9.196992537611635 + 31 +0.0 + 0 +ARC + 5 +45A52 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +176.8232665222628 + 20 +9.396992537611652 + 30 +0.0 + 40 +0.1999999999999993 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45A53 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +176.6232665222628 + 20 +9.396992537611652 + 30 +0.0 + 11 +176.6232665222628 + 21 +15.49699253761165 + 31 +0.0 + 0 +ARC + 5 +45A54 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +176.8232665222628 + 20 +15.49699253761165 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +45A55 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +176.8232665222628 + 20 +15.69699253761164 + 30 +0.0 + 11 +182.9232665222628 + 21 +15.69699253761164 + 31 +0.0 + 0 +ARC + 5 +45A56 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.9232665222628 + 20 +15.49699253761165 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +LINE + 5 +45A57 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +183.1232665222629 + 20 +15.49699253761165 + 30 +0.0 + 11 +183.1232665222628 + 21 +15.44699253761164 + 31 +0.0 + 0 +ARC + 5 +45A58 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +183.6232665222628 + 20 +15.44699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45A59 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +183.6232665222628 + 20 +14.94699253761164 + 30 +0.0 + 11 +188.0832665222628 + 21 +14.94699253761164 + 31 +0.0 + 0 +ARC + 5 +45A5A +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +188.0832665222628 + 20 +15.44699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +45A5B +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +188.5832665222628 + 20 +15.44699253761164 + 30 +0.0 + 11 +188.5832665222628 + 21 +16.24699253761165 + 31 +0.0 + 0 +ARC + 5 +45A5C +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +188.7832665222628 + 20 +16.24699253761165 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +45A5D +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +188.7832665222628 + 20 +16.44699253761164 + 30 +0.0 + 11 +192.3832665222628 + 21 +16.44699253761164 + 31 +0.0 + 0 +ARC + 5 +45A5E +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +192.3832665222628 + 20 +16.24699253761165 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +45A5F +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +192.5832665222628 + 20 +16.24699253761165 + 30 +0.0 + 11 +192.5832665222628 + 21 +8.646992537611652 + 31 +0.0 + 0 +ARC + 5 +45A60 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +192.3832665222628 + 20 +8.646992537611652 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +269.9999999999968 + 51 +359.9999999999984 + 0 +LINE + 5 +45A61 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +192.3832665222628 + 20 +8.446992537611635 + 30 +0.0 + 11 +188.7832665222628 + 21 +8.446992537611635 + 31 +0.0 + 0 +ARC + 5 +45A62 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +188.7832665222628 + 20 +8.646992537611652 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45A63 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +188.5832665222628 + 20 +8.646992537611652 + 30 +0.0 + 11 +188.5832665222628 + 21 +9.446992537611635 + 31 +0.0 + 0 +ARC + 5 +45A64 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +188.0832665222628 + 20 +9.446992537611663 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +45A65 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +188.0832665222628 + 20 +9.946992537611635 + 30 +0.0 + 11 +183.6232665222628 + 21 +9.946992537611635 + 31 +0.0 + 0 +LWPOLYLINE + 5 +45FB1 +330 +45A46 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +176.6232665222628 + 20 +12.44699253761164 + 10 +192.5832665222628 + 20 +12.44699253761166 + 0 +LWPOLYLINE + 5 +45FB2 +330 +45A46 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +179.8732665222628 + 20 +15.69699253761164 + 10 +179.8732665222628 + 20 +9.196992537611635 + 0 +ARC + 5 +45FF6 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +191.5832665222628 + 20 +16.94699253761166 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45FF7 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +189.5832665222628 + 20 +16.94699253761172 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45FF8 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +189.5832665222628 + 20 +16.94699253761172 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45FF9 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +191.5832665222628 + 20 +16.94699253761166 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +46019 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +191.5832665222628 + 20 +7.946992537611663 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +4601A +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +189.5832665222628 + 20 +7.946992537611607 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +4601B +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +189.5832665222628 + 20 +7.946992537611607 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +4601C +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +191.5832665222628 + 20 +7.946992537611663 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +4601D +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +189.5832665222628 + 20 +8.446992537611607 + 30 +0.0 + 11 +191.5832665222628 + 21 +8.446992537611663 + 31 +0.0 + 0 +ARC + 5 +46099 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.4232665222628 + 20 +8.696992537611692 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +4609A +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +180.4232665222629 + 20 +8.696992537611635 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +4609B +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +180.4232665222628 + 20 +7.196992537611635 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +4609C +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.4232665222628 + 20 +7.196992537611692 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +4609D +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +180.9232665222628 + 20 +7.196992537611635 + 30 +0.0 + 11 +180.9232665222629 + 21 +8.696992537611635 + 31 +0.0 + 0 +LINE + 5 +4609E +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +181.9232665222628 + 20 +7.196992537611692 + 30 +0.0 + 11 +181.9232665222628 + 21 +8.696992537611692 + 31 +0.0 + 0 +ARC + 5 +4609F +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +177.3232665222628 + 20 +8.696992537611692 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +460A0 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +179.3232665222628 + 20 +8.696992537611635 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +460A1 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +179.3232665222628 + 20 +7.196992537611635 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +460A2 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +177.3232665222629 + 20 +7.196992537611692 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +460A3 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +178.8232665222628 + 20 +7.196992537611635 + 30 +0.0 + 11 +178.8232665222628 + 21 +8.696992537611635 + 31 +0.0 + 0 +LINE + 5 +460A4 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +177.8232665222629 + 20 +7.196992537611692 + 30 +0.0 + 11 +177.8232665222628 + 21 +8.696992537611692 + 31 +0.0 + 0 +ARC + 5 +460A5 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.4232665222628 + 20 +16.19699253761158 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +460A6 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +180.4232665222629 + 20 +16.19699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +460A7 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +180.4232665222628 + 20 +17.69699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +460A8 +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +182.4232665222628 + 20 +17.69699253761158 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +460A9 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +180.9232665222628 + 20 +17.69699253761164 + 30 +0.0 + 11 +180.9232665222629 + 21 +16.19699253761164 + 31 +0.0 + 0 +LINE + 5 +460AA +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +181.9232665222628 + 20 +17.69699253761158 + 30 +0.0 + 11 +181.9232665222628 + 21 +16.19699253761158 + 31 +0.0 + 0 +ARC + 5 +460AB +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +177.3232665222628 + 20 +16.19699253761158 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +460AC +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +179.3232665222628 + 20 +16.19699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +460AD +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +179.3232665222628 + 20 +17.69699253761164 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +460AE +330 +45A46 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +177.3232665222629 + 20 +17.69699253761158 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +460AF +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +178.8232665222628 + 20 +17.69699253761164 + 30 +0.0 + 11 +178.8232665222628 + 21 +16.19699253761164 + 31 +0.0 + 0 +LINE + 5 +460B0 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +177.8232665222629 + 20 +17.69699253761158 + 30 +0.0 + 11 +177.8232665222628 + 21 +16.19699253761158 + 31 +0.0 + 0 +HATCH + 5 +46140 +330 +45A46 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +190.5832665222628 + 20 +7.946992537611607 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +188.4582665222626 + 20 +3.196992537611663 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ENDBLK + 5 +45A48 +330 +45A46 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45BD8 +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D126 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D126 + 1 + + 0 +LINE + 5 +467FA +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-56.5699999999993 + 20 +41.60645821190845 + 30 +0.0 + 11 +-56.56999999999931 + 21 +20.47456408369334 + 31 +0.0 + 0 +LINE + 5 +467FB +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +128.4300000000007 + 20 +41.60645821190845 + 30 +0.0 + 11 +128.4300000000007 + 21 +20.47456408369332 + 31 +0.0 + 0 +LINE + 5 +467FC +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-56.06999999999931 + 20 +20.67456408369334 + 30 +0.0 + 11 +23.49870882814579 + 21 +20.67456408369333 + 31 +0.0 + 0 +LINE + 5 +467FD +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +127.9300000000007 + 20 +20.67456408369332 + 30 +0.0 + 11 +39.69870882814578 + 21 +20.67456408369333 + 31 +0.0 + 0 +SOLID + 5 +467FE +330 +45BCD +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-56.06999999999931 + 20 +20.75789741702667 + 30 +0.0 + 11 +-56.06999999999931 + 21 +20.59123075036 + 31 +0.0 + 12 +-56.56999999999931 + 22 +20.67456408369334 + 32 +0.0 + 13 +-56.56999999999931 + 23 +20.67456408369334 + 33 +0.0 + 0 +SOLID + 5 +467FF +330 +45BCD +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +127.9300000000007 + 20 +20.59123075035998 + 30 +0.0 + 11 +127.9300000000007 + 21 +20.75789741702665 + 31 +0.0 + 12 +128.4300000000007 + 22 +20.67456408369332 + 32 +0.0 + 13 +128.4300000000007 + 23 +20.67456408369332 + 33 +0.0 + 0 +MTEXT + 5 +46800 +330 +45BCD +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +31.59870882814579 + 20 +20.67456408369333 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;185.00%%p0.50 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46801 +330 +45BCD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-56.5699999999993 + 20 +41.80645821190845 + 30 +0.0 + 0 +POINT + 5 +46802 +330 +45BCD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +128.4300000000007 + 20 +41.80645821190845 + 30 +0.0 + 0 +POINT + 5 +46803 +330 +45BCD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +128.4300000000007 + 20 +20.67456408369332 + 30 +0.0 + 0 +ENDBLK + 5 +45BD9 +330 +45BCD +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45BE5 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D127 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D127 + 1 + + 0 +LINE + 5 +46804 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +125.6300000000007 + 20 +38.80645821190842 + 30 +0.0 + 11 +162.0942859376943 + 21 +38.80645821190842 + 31 +0.0 + 0 +LINE + 5 +46805 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +125.6300000000007 + 20 +156.8064582119084 + 30 +0.0 + 11 +162.0942859376943 + 21 +156.8064582119084 + 31 +0.0 + 0 +LINE + 5 +46806 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +161.8942859376943 + 20 +39.30645821190842 + 30 +0.0 + 11 +161.8942859376943 + 21 +101.3658601164261 + 31 +0.0 + 0 +LINE + 5 +46807 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +161.8942859376943 + 20 +156.3064582119084 + 30 +0.0 + 11 +161.8942859376943 + 21 +116.965860116426 + 31 +0.0 + 0 +SOLID + 5 +46808 +330 +45BDA +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +161.8109526043609 + 20 +39.30645821190842 + 30 +0.0 + 11 +161.9776192710276 + 21 +39.30645821190842 + 31 +0.0 + 12 +161.8942859376943 + 22 +38.80645821190842 + 32 +0.0 + 13 +161.8942859376943 + 23 +38.80645821190842 + 33 +0.0 + 0 +SOLID + 5 +46809 +330 +45BDA +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +161.9776192710276 + 20 +156.3064582119084 + 30 +0.0 + 11 +161.8109526043609 + 21 +156.3064582119084 + 31 +0.0 + 12 +161.8942859376943 + 22 +156.8064582119084 + 32 +0.0 + 13 +161.8942859376943 + 23 +156.8064582119084 + 33 +0.0 + 0 +MTEXT + 5 +4680A +330 +45BDA +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +161.8942859376943 + 20 +109.165860116426 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%p0.50 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +4680B +330 +45BDA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +125.4300000000007 + 20 +38.80645821190842 + 30 +0.0 + 0 +POINT + 5 +4680C +330 +45BDA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +125.4300000000007 + 20 +156.8064582119084 + 30 +0.0 + 0 +POINT + 5 +4680D +330 +45BDA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +161.8942859376943 + 20 +156.8064582119084 + 30 +0.0 + 0 +ENDBLK + 5 +45BE6 +330 +45BDA +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45CBF +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C39296DF6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C39296DF6 + 1 + + 0 +HATCH + 5 +45CC0 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 1 + 10 +-6.607290536453888 + 20 +-0.75 + 11 +-6.163600744849646 + 21 +-0.75 + 72 + 1 + 10 +-6.163600744849646 + 20 +-0.75 + 11 +-5.847803482341476 + 21 +0.4285714285713382 + 72 + 1 + 10 +-5.847803482341476 + 20 +0.4285714285713382 + 11 +-5.404113690737233 + 21 +0.4285714285713382 + 72 + 1 + 10 +-5.404113690737233 + 20 +0.4285714285713382 + 11 +-5.317987164598605 + 21 +0.75 + 72 + 1 + 10 +-5.317987164598605 + 20 +0.75 + 11 +-6.649056539411617 + 21 +0.75 + 72 + 1 + 10 +-6.649056539411617 + 20 +0.75 + 11 +-6.735183065549904 + 21 +0.4285714285713382 + 72 + 1 + 10 +-6.735183065549904 + 20 +0.4285714285713382 + 11 +-6.291493273945662 + 21 +0.4285714285713382 + 72 + 1 + 10 +-6.291493273945662 + 20 +0.4285714285713382 + 11 +-6.607290536453888 + 21 +-0.75 + 97 + 1 +330 +45CC6 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.371500627582861 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +45CC1 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 1 + 10 +4.102037983667458 + 20 +-0.75 + 11 +4.545727775271587 + 21 +-0.75 + 72 + 1 + 10 +4.545727775271587 + 20 +-0.75 + 11 +4.86152503777987 + 21 +0.4285714285713489 + 72 + 1 + 10 +4.86152503777987 + 20 +0.4285714285713489 + 11 +5.305214829384113 + 21 +0.4285714285713489 + 72 + 1 + 10 +5.305214829384113 + 20 +0.4285714285713489 + 11 +5.391341355522684 + 21 +0.7500000000000036 + 72 + 1 + 10 +5.391341355522684 + 20 +0.7500000000000036 + 11 +4.060271980709729 + 21 +0.7500000000000036 + 72 + 1 + 10 +4.060271980709729 + 20 +0.7500000000000036 + 11 +3.974145454571385 + 21 +0.4285714285713489 + 72 + 1 + 10 +3.974145454571385 + 20 +0.4285714285713489 + 11 +4.417835246175628 + 21 +0.4285714285713489 + 72 + 1 + 10 +4.417835246175628 + 20 +0.4285714285713489 + 11 +4.102037983667458 + 21 +-0.75 + 97 + 1 +330 +45CD1 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.97565691937757 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +45CC2 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 9 + 72 + 1 + 10 +-0.5059988773611508 + 20 +-0.2142857142857686 + 11 +-0.6417467756733686 + 21 +-0.75 + 72 + 1 + 10 +-0.6417467756733686 + 20 +-0.75 + 11 +-0.1996302025830232 + 21 +-0.75 + 72 + 1 + 10 +-0.1996302025830232 + 20 +-0.75 + 11 +-0.0638823042705781 + 21 +-0.2142857142857686 + 72 + 1 + 10 +-0.0638823042705781 + 20 +-0.2142857142857686 + 11 +0.7331096290545247 + 21 +0.7500000000000036 + 72 + 1 + 10 +0.7331096290545247 + 20 +0.7500000000000036 + 11 +0.3161040228358161 + 21 +0.7500000000000036 + 72 + 1 + 10 +0.3161040228358161 + 20 +0.7500000000000036 + 11 +-0.2676299379711509 + 21 +0.0437364911570413 + 72 + 1 + 10 +-0.2676299379711509 + 20 +0.0437364911570413 + 11 +-0.5743890057416934 + 21 +0.7500000000000036 + 72 + 1 + 10 +-0.5743890057416934 + 20 +0.7500000000000036 + 11 +-0.9248275200347393 + 21 +0.7500000000000036 + 72 + 1 + 10 +-0.9248275200347393 + 20 +0.7500000000000036 + 11 +-0.5059988773611508 + 21 +-0.2142857142857686 + 97 + 1 +330 +45CCA + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.742912801658292 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +45CC3 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 6 + 72 + 1 + 10 +-0.9802714998962188 + 20 +-0.75 + 11 +-2.085562932622622 + 21 +-0.75 + 72 + 1 + 10 +-2.085562932622622 + 20 +-0.75 + 11 +-1.705468817347935 + 21 +0.7500000000000036 + 72 + 1 + 10 +-1.705468817347935 + 20 +0.7500000000000036 + 11 +-1.263352244257646 + 21 +0.7500000000000036 + 72 + 1 + 10 +-1.263352244257646 + 20 +0.7500000000000036 + 11 +-1.56199762054473 + 21 +-0.4285714285715017 + 72 + 1 + 10 +-1.56199762054473 + 20 +-0.4285714285715017 + 11 +-0.8988227609089563 + 21 +-0.4285714285715017 + 72 + 1 + 10 +-0.8988227609089563 + 20 +-0.4285714285715017 + 11 +-0.9802714998962188 + 21 +-0.75 + 97 + 1 +330 +45CC9 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.570516842619554 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +45CC4 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 12 + 72 + 1 + 10 +-3.41191265189417 + 20 +0.7584646415887981 + 11 +-3.656733142657345 + 21 +-0.2076927425624504 + 72 + 2 + 10 +-3.241291875428203 + 20 +-0.3129639298397713 + 40 +0.428571428571423 + 50 +165.7807684394565 + 51 +269.999999999997 + 73 + 1 + 72 + 1 + 10 +-3.241291875428203 + 20 +-0.7415353584111948 + 11 +-2.96593442955816 + 21 +-0.7415353584112481 + 72 + 2 + 10 +-2.965934429558104 + 20 +-0.0986782155540453 + 40 +0.6428571428572022 + 50 +269.9999999999959 + 51 +345.7807684394554 + 73 + 1 + 72 + 1 + 10 +-2.342772528714306 + 20 +-0.2565849964700568 + 11 +-2.085562932622622 + 21 +0.7584646415887981 + 72 + 1 + 10 +-2.085562932622622 + 20 +0.7584646415887981 + 11 +-2.527679505713252 + 21 +0.7584646415887981 + 72 + 1 + 10 +-2.527679505713252 + 20 +0.7584646415887981 + 11 +-2.777171074327043 + 21 +-0.2261266422062036 + 72 + 2 + 10 +-3.026435834664483 + 20 +-0.1629639298398775 + 40 +0.2571428571427549 + 50 +14.2192315605337 + 51 +89.99999999999318 + 73 + 0 + 72 + 1 + 10 +-3.026435834664426 + 20 +-0.4201067869826325 + 11 +-3.08486982451069 + 21 +-0.4201067869826964 + 72 + 2 + 10 +-3.08486982451069 + 20 +-0.2772496441255328 + 40 +0.1428571428571641 + 50 +90.00000000001013 + 51 +194.2192315605507 + 73 + 0 + 72 + 1 + 10 +-3.223350246920404 + 20 +-0.2421592483664021 + 11 +-2.96979607880354 + 21 +0.7584646415887981 + 72 + 1 + 10 +-2.96979607880354 + 20 +0.7584646415887981 + 11 +-3.41191265189417 + 21 +0.7584646415887981 + 97 + 1 +330 +45CC8 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.570516842619554 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +HATCH + 5 +45CC5 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 17 + 72 + 1 + 10 +-4.493277287250294 + 20 +-0.75 + 11 +-4.05036852245081 + 21 +-0.7500000000000071 + 72 + 2 + 10 +-4.050368522450867 + 20 +-0.7071428571428289 + 40 +0.0428571428571779 + 50 +89.99999999993588 + 51 +194.2192315604771 + 73 + 0 + 72 + 1 + 10 +-4.091912649173821 + 20 +-0.6966157384151366 + 11 +-3.991222067522244 + 21 +-0.2992513320538208 + 72 + 2 + 10 +-4.157398574413889 + 20 +-0.2571428571428207 + 40 +0.1714285714285577 + 50 +345.7807684394307 + 51 +81.9688431902832 + 73 + 1 + 72 + 2 + 10 +-4.262041382767279 + 20 +0.3214285714285783 + 40 +0.4285714285714214 + 50 +287.4606773594163 + 51 +89.99999999999964 + 73 + 1 + 72 + 1 + 10 +-4.262041382767279 + 20 +0.75 + 11 +-5.034585597791249 + 21 +0.75 + 72 + 1 + 10 +-5.034585597791249 + 20 +0.75 + 11 +-5.436509386437763 + 21 +-0.75 + 72 + 1 + 10 +-5.436509386437763 + 20 +-0.75 + 11 +-4.99281959483352 + 21 +-0.75 + 72 + 1 + 10 +-4.99281959483352 + 20 +-0.75 + 11 +-4.67702233232535 + 21 +0.4285714285713382 + 72 + 1 + 10 +-4.67702233232535 + 20 +0.4285714285713382 + 11 +-4.442779475641942 + 21 +0.4285714285713382 + 72 + 2 + 10 +-4.442779475641942 + 20 +0.2678571428570731 + 40 +0.1607142857142652 + 50 +270.0 + 51 +90.0 + 73 + 0 + 72 + 1 + 10 +-4.442779475641942 + 20 +0.1071428571428079 + 11 +-4.585672941822224 + 21 +0.1071428571428434 + 72 + 1 + 10 +-4.585672941822224 + 20 +0.1071428571428434 + 11 +-4.660315931142406 + 21 +-0.1714285714286099 + 72 + 1 + 10 +-4.660315931142406 + 20 +-0.1714285714286099 + 11 +-4.589585862105935 + 21 +-0.1714285714286099 + 72 + 2 + 10 +-4.589585862105935 + 20 +-0.3214285714286085 + 40 +0.1499999999999994 + 50 +269.9999999999919 + 51 +14.99999999999138 + 73 + 0 + 72 + 1 + 10 +-4.444696988162548 + 20 +-0.3602514281939655 + 11 +-4.534674108377089 + 21 +-0.6960506123528098 + 72 + 2 + 10 +-4.493277287250351 + 20 +-0.7071428571428413 + 40 +0.0428571428571587 + 50 +165.0000000001117 + 51 +270.0000000001128 + 73 + 1 + 97 + 1 +330 +45CC7 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.689039064458655 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +45CC6 +102 +{ACAD_REACTORS +330 +45CC0 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-6.607290536453888 + 20 +-0.75 + 10 +-6.163600744849646 + 20 +-0.75 + 10 +-5.847803482341476 + 20 +0.4285714285713382 + 10 +-5.404113690737233 + 20 +0.4285714285713382 + 10 +-5.317987164598605 + 20 +0.75 + 10 +-6.649056539411617 + 20 +0.75 + 10 +-6.735183065549904 + 20 +0.4285714285713382 + 10 +-6.291493273945662 + 20 +0.4285714285713382 + 0 +LWPOLYLINE + 5 +45CC7 +102 +{ACAD_REACTORS +330 +45CC5 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 17 + 70 + 1 + 43 +0.0 + 10 +-4.493277287250294 + 20 +-0.75 + 10 +-4.05036852245081 + 20 +-0.7500000000000071 + 42 +-0.4889172735380292 + 10 +-4.091912649173821 + 20 +-0.6966157384151366 + 10 +-3.991222067522244 + 20 +-0.2992513320538208 + 42 +0.4462123483412442 + 10 +-4.133448018330341 + 20 +-0.087395615735705 + 42 +0.8581587073163973 + 10 +-4.262041382767279 + 20 +0.75 + 10 +-5.034585597791249 + 20 +0.75 + 10 +-5.436509386437763 + 20 +-0.75 + 10 +-4.99281959483352 + 20 +-0.75 + 10 +-4.67702233232535 + 20 +0.4285714285713382 + 10 +-4.442779475641942 + 20 +0.4285714285713382 + 42 +-0.9999999999999998 + 10 +-4.442779475641942 + 20 +0.1071428571428079 + 10 +-4.585672941822224 + 20 +0.1071428571428434 + 10 +-4.660315931142406 + 20 +-0.1714285714286099 + 10 +-4.589585862105935 + 20 +-0.1714285714286099 + 42 +-0.4931454260313018 + 10 +-4.444696988162548 + 20 +-0.3602514281939655 + 10 +-4.534674108377089 + 20 +-0.6960506123528098 + 42 +0.4931454260313103 + 0 +LWPOLYLINE + 5 +45CC8 +102 +{ACAD_REACTORS +330 +45CC4 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 12 + 70 + 1 + 43 +0.0 + 10 +-3.41191265189417 + 20 +0.7584646415887981 + 10 +-3.656733142657345 + 20 +-0.2076927425624504 + 42 +0.4889172735380292 + 10 +-3.241291875428203 + 20 +-0.7415353584111948 + 10 +-2.96593442955816 + 20 +-0.7415353584112481 + 42 +0.3432579737942821 + 10 +-2.342772528714306 + 20 +-0.2565849964700568 + 10 +-2.085562932622622 + 20 +0.7584646415887981 + 10 +-2.527679505713252 + 20 +0.7584646415887981 + 10 +-2.777171074327043 + 20 +-0.2261266422062036 + 42 +-0.3432579737942821 + 10 +-3.026435834664426 + 20 +-0.4201067869826325 + 10 +-3.08486982451069 + 20 +-0.4201067869826964 + 42 +-0.4889172735380292 + 10 +-3.223350246920404 + 20 +-0.2421592483664021 + 10 +-2.96979607880354 + 20 +0.7584646415887981 + 0 +LWPOLYLINE + 5 +45CC9 +102 +{ACAD_REACTORS +330 +45CC3 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 1 + 43 +0.0 + 10 +-0.9802714998962188 + 20 +-0.75 + 10 +-2.085562932622622 + 20 +-0.75 + 10 +-1.705468817347935 + 20 +0.7500000000000036 + 10 +-1.263352244257646 + 20 +0.7500000000000036 + 10 +-1.56199762054473 + 20 +-0.4285714285715017 + 10 +-0.8988227609089563 + 20 +-0.4285714285715017 + 0 +LWPOLYLINE + 5 +45CCA +102 +{ACAD_REACTORS +330 +45CC2 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 9 + 70 + 1 + 43 +0.0 + 10 +-0.5059988773611508 + 20 +-0.2142857142857686 + 10 +-0.6417467756733686 + 20 +-0.75 + 10 +-0.1996302025830232 + 20 +-0.75 + 10 +-0.0638823042705781 + 20 +-0.2142857142857686 + 10 +0.7331096290545247 + 20 +0.7500000000000036 + 10 +0.3161040228358161 + 20 +0.7500000000000036 + 10 +-0.2676299379711509 + 20 +0.0437364911570413 + 10 +-0.5743890057416934 + 20 +0.7500000000000036 + 10 +-0.9248275200347393 + 20 +0.7500000000000036 + 0 +HATCH + 5 +45CCB +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 16 + 93 + 1 + 72 + 3 + 10 +1.423450090464996 + 20 +0.0463382609707175 + 11 +0.1460264594887954 + 21 +0.4559431698986088 + 40 +0.5840248966443714 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +45CCC + 92 + 1 + 93 + 1 + 72 + 3 + 10 +1.434097854701918 + 20 +0.023486581086555 + 11 +-0.4943604695431759 + 21 +-0.6823949529461898 + 40 +0.7238985945326134 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +45CCD + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-7.984570756647429 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ELLIPSE + 5 +45CCC +102 +{ACAD_REACTORS +330 +45CCB +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbEllipse + 10 +1.423450090464996 + 20 +0.0463382609707175 + 30 +0.0 + 11 +0.1460264594887954 + 21 +0.4559431698986088 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.5840248966443714 + 41 +0.0 + 42 +6.283185307179586 + 0 +ELLIPSE + 5 +45CCD +102 +{ACAD_REACTORS +330 +45CCB +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbEllipse + 10 +1.434097854701918 + 20 +0.023486581086555 + 30 +0.0 + 11 +-0.4943604695431756 + 21 +-0.6823949529461893 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.7238985945326134 + 41 +0.0 + 42 +6.283185307179586 + 0 +HATCH + 5 +45CCE +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 16 + 93 + 7 + 72 + 2 + 10 +3.142908788119257 + 20 +0.1782716930502701 + 40 +0.2645629607002352 + 50 +56.87534388037177 + 51 +86.40822169352877 + 73 + 1 + 72 + 1 + 10 +3.159482944984859 + 20 +0.4423149802186224 + 11 +2.977075005890072 + 21 +0.4423149802186224 + 72 + 1 + 10 +2.977075005890072 + 20 +0.4423149802186224 + 11 +2.879720204705961 + 21 +0.0863993151615006 + 72 + 2 + 10 +2.941312083299351 + 20 +0.974267435736305 + 40 +0.8900018871000762 + 50 +266.0317189659976 + 51 +283.7306133465793 + 73 + 1 + 72 + 2 + 10 +3.09348612389357 + 20 +0.351241771959474 + 40 +0.2486611775085489 + 50 +283.7431385048097 + 51 +314.0431238812516 + 73 + 1 + 72 + 2 + 10 +3.130186627594014 + 20 +0.313294486579899 + 40 +0.1958698577718045 + 50 +314.0431238812562 + 51 +9.057573905737847 + 73 + 1 + 72 + 2 + 10 +3.24271716152316 + 20 +0.3312335040897345 + 40 +0.0819184233113326 + 50 +9.057573905764185 + 51 +56.87534388040318 + 73 + 1 + 97 + 1 +330 +45CD0 + 92 + 1 + 93 + 10 + 72 + 1 + 10 +2.627069418971814 + 20 +0.7504794616639003 + 11 +2.221342478711506 + 21 +-0.75 + 72 + 1 + 10 +2.221342478711506 + 20 +-0.75 + 11 +2.653724696312281 + 21 +-0.75 + 72 + 1 + 10 +2.653724696312281 + 20 +-0.75 + 11 +2.798283144529705 + 21 +-0.2212102368802071 + 72 + 1 + 10 +2.798283144529705 + 20 +-0.2212102368802071 + 11 +3.060726965539516 + 21 +-0.2214313130130741 + 72 + 2 + 10 +3.061431261487769 + 20 +0.6146522450631196 + 40 +0.8360838547168163 + 50 +269.9517354749692 + 51 +300.1434776980142 + 73 + 1 + 72 + 2 + 10 +3.202690231952715 + 20 +0.3713933628267991 + 40 +0.5547851157866764 + 50 +300.1434776980167 + 51 +331.9180495295729 + 73 + 1 + 72 + 2 + 10 +3.100175587616945 + 20 +0.426089590355712 + 40 +0.6709786165050264 + 50 +331.9180495295637 + 51 +3.630354446122109 + 73 + 1 + 72 + 2 + 10 +3.547258886665702 + 20 +0.4544554908809477 + 40 +0.2229963617215101 + 50 +3.630354446141239 + 51 +52.57145036559345 + 73 + 1 + 72 + 2 + 10 +3.333306737003625 + 20 +0.1782644247117808 + 40 +0.5723606481338194 + 50 +52.36715159965943 + 51 +88.7075631930612 + 73 + 1 + 72 + 1 + 10 +3.346216540179853 + 20 +0.7504794616639003 + 11 +2.627069418971814 + 21 +0.7504794616639003 + 97 + 1 +330 +45CCF + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-8.112247779249458 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +LWPOLYLINE + 5 +45CCF +102 +{ACAD_REACTORS +330 +45CCE +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 10 + 70 + 1 + 43 +0.0 + 10 +2.627069418971814 + 20 +0.7504794616639003 + 10 +2.221342478711506 + 20 +-0.75 + 10 +2.653724696312281 + 20 +-0.75 + 10 +2.798283144529705 + 20 +-0.2212102368802071 + 10 +3.060726965539516 + 20 +-0.2214313130130741 + 42 +0.132503725667184 + 10 +3.481285061717642 + 20 +-0.1083685005248896 + 42 +0.1395379289645411 + 10 +3.692163382138119 + 20 +0.1102371644588338 + 42 +0.1392609587437038 + 10 +3.769807766693305 + 20 +0.4685754533272011 + 42 +0.2168521647898301 + 10 +3.682789744294951 + 20 +0.6315395499356988 + 42 +0.1599073858347572 + 10 +3.346216540179853 + 20 +0.7504794616639003 + 0 +LWPOLYLINE + 5 +45CD0 +102 +{ACAD_REACTORS +330 +45CCE +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 7 + 70 + 1 + 43 +0.0 + 10 +3.287482500248302 + 20 +0.3998388429974327 + 42 +0.1295795189821438 + 10 +3.159482944984859 + 20 +0.4423149802186224 + 10 +2.977075005890072 + 20 +0.4423149802186224 + 10 +2.879720204705961 + 20 +0.0863993151615006 + 42 +0.0773798838730818 + 10 +3.15256045213647 + 20 +0.1096996328975983 + 42 +0.1329843479164933 + 10 +3.266355271905525 + 20 +0.1724999501450064 + 42 +0.2447652696592742 + 10 +3.323614115190367 + 20 +0.3441296649597163 + 42 +0.2117256493055502 + 0 +LWPOLYLINE + 5 +45CD1 +102 +{ACAD_REACTORS +330 +45CC1 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +4.102037983667458 + 20 +-0.75 + 10 +4.545727775271587 + 20 +-0.75 + 10 +4.86152503777987 + 20 +0.4285714285713489 + 10 +5.305214829384113 + 20 +0.4285714285713489 + 10 +5.391341355522684 + 20 +0.7500000000000036 + 10 +4.060271980709729 + 20 +0.7500000000000036 + 10 +3.974145454571385 + 20 +0.4285714285713489 + 10 +4.417835246175628 + 20 +0.4285714285713489 + 0 +HATCH + 5 +45CD2 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 1 + 93 + 1 + 72 + 3 + 10 +6.036449051179659 + 20 +0.023486581086555 + 11 +-0.4943604695431759 + 21 +-0.6823949529461898 + 40 +0.7238985945326134 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +45CD4 + 92 + 16 + 93 + 1 + 72 + 3 + 10 +6.025801286942794 + 20 +0.046338260970721 + 11 +0.1460264594887954 + 21 +0.4559431698986088 + 40 +0.5840248966443714 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 1 +330 +45CD3 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-8.230855908133663 + 20 +-11.00910280605471 +450 + 1 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +0.5099999904632568 +453 + 2 +463 +0.0 + 63 + 1 +421 + 16711680 +463 +1.0 + 63 + 1 +421 + 16712965 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ELLIPSE + 5 +45CD3 +102 +{ACAD_REACTORS +330 +45CD2 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbEllipse + 10 +6.025801286942794 + 20 +0.046338260970721 + 30 +0.0 + 11 +0.1460264594887954 + 21 +0.4559431698986088 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.5840248966443714 + 41 +0.0 + 42 +6.283185307179586 + 0 +ELLIPSE + 5 +45CD4 +102 +{ACAD_REACTORS +330 +45CD2 +102 +} +330 +45CBC +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbEllipse + 10 +6.036449051179659 + 20 +0.023486581086555 + 30 +0.0 + 11 +-0.4943604695431756 + 21 +-0.6823949529461893 + 31 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 40 +0.7238985945326134 + 41 +0.0 + 42 +6.283185307179586 + 0 +ENDBLK + 5 +45CD5 +330 +45CBC +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45D5D +330 +45D56 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C4EFA4BC1 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C4EFA4BC1 + 1 + + 0 +DIMENSION + 5 +45D57 +330 +45D56 +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 6 +370 + -1 +100 +AcDbDimension + 2 +*D157 + 10 +-101.7246130302245 + 20 +-4.0 + 30 +0.0 + 11 +-101.7246130302245 + 21 +-57.75000000000004 + 31 +0.0 + 12 +141.0 + 22 +-175.3064582119144 + 32 +0.0 + 70 + 160 + 1 +<>%%p0.10 + 71 + 5 + 42 +107.0 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +-89.0 + 23 +-111.0 + 33 +0.0 + 14 +-89.00000000000011 + 24 +-4.0 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +CIRCLE + 5 +45D58 +330 +45D56 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-89.0 + 20 +-111.0 + 30 +0.0 + 40 +1.6 + 0 +CIRCLE + 5 +45D59 +330 +45D56 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +89.0 + 20 +-111.0 + 30 +0.0 + 40 +1.6 + 0 +CIRCLE + 5 +45D5A +330 +45D56 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-89.00000000000011 + 20 +-4.0 + 30 +0.0 + 40 +1.6 + 0 +ENDBLK + 5 +45D5E +330 +45D56 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45D7E +330 +45D7B +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C01CC1A43 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C01CC1A43 + 1 + + 0 +HATCH + 5 +45D7F +330 +45D7B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +2.488484281304522 + 20 +1.5 + 11 +1.488484281304522 + 21 +3.5 + 72 + 1 + 10 +1.488484281304522 + 20 +3.5 + 11 +0.4884842813045225 + 21 +1.5 + 72 + 1 + 10 +0.4884842813045225 + 20 +1.5 + 11 +0.9884842813045225 + 21 +1.5 + 72 + 1 + 10 +0.9884842813045225 + 20 +1.5 + 11 +0.9884842813045225 + 21 +-3.5 + 72 + 1 + 10 +0.9884842813045225 + 20 +-3.5 + 11 +1.988484281304522 + 21 +-3.5 + 72 + 1 + 10 +1.988484281304522 + 20 +-3.5 + 11 +1.988484281304522 + 21 +1.5 + 72 + 1 + 10 +1.988484281304522 + 20 +1.5 + 11 +2.488484281304522 + 21 +1.5 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-69.46589553377555 + 20 +-7.821941095581337 + 0 +ENDBLK + 5 +45D80 +330 +45D7B +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45D84 +330 +45D81 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C5B8B49D5 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C5B8B49D5 + 1 + + 0 +CIRCLE + 5 +45D85 +330 +45D81 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999889 + 0 +CIRCLE + 5 +45D86 +330 +45D81 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 + 0 +HATCH + 5 +45D87 +330 +45D81 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-0.5 + 20 +0.0 + 42 +1.0 + 10 +0.5 + 20 +0.0 + 42 +1.0 + 97 + 0 + 75 + 0 + 76 + 1 + 47 +0.0130908917423903 + 98 + 1 + 10 +0.1357356229973448 + 20 +0.3037699466973436 + 0 +ARC + 5 +45D88 +330 +45D81 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999858 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +45D89 +330 +45D81 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +45D8A +330 +45D81 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.9999999999999929 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ARC + 5 +45D8B +330 +45D81 +100 +AcDbEntity + 8 +dim + 62 + 7 +370 + 0 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +ENDBLK + 5 +45D8C +330 +45D81 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E27 +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D133 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D133 + 1 + + 0 +LINE + 5 +4680E +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +124.4300000000005 + 20 +62.60645821190842 + 30 +0.0 + 11 +124.4300000000005 + 21 +26.97572860804843 + 31 +0.0 + 0 +LINE + 5 +4680F +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-52.56999999999964 + 20 +107.6064582119114 + 30 +0.0 + 11 +-52.56999999999965 + 21 +26.97572860804846 + 31 +0.0 + 0 +LINE + 5 +46810 +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +123.9300000000005 + 20 +27.17572860804843 + 30 +0.0 + 11 +41.4800000000007 + 21 +27.17572860804844 + 31 +0.0 + 0 +LINE + 5 +46811 +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-52.06999999999965 + 20 +27.17572860804846 + 30 +0.0 + 11 +25.88000000000071 + 21 +27.17572860804844 + 31 +0.0 + 0 +SOLID + 5 +46812 +330 +45E1C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +123.9300000000005 + 20 +27.0923952747151 + 30 +0.0 + 11 +123.9300000000005 + 21 +27.25906194138177 + 31 +0.0 + 12 +124.4300000000005 + 22 +27.17572860804843 + 32 +0.0 + 13 +124.4300000000005 + 23 +27.17572860804843 + 33 +0.0 + 0 +SOLID + 5 +46813 +330 +45E1C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-52.06999999999965 + 20 +27.25906194138179 + 30 +0.0 + 11 +-52.06999999999965 + 21 +27.09239527471512 + 31 +0.0 + 12 +-52.56999999999965 + 22 +27.17572860804846 + 32 +0.0 + 13 +-52.56999999999965 + 23 +27.17572860804846 + 33 +0.0 + 0 +MTEXT + 5 +46814 +330 +45E1C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +33.68000000000069 + 20 +27.17572860804844 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\Ftxt.shx|c0;\A1;177.00%%p0.10} + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46815 +330 +45E1C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +62.80645821190842 + 30 +0.0 + 0 +POINT + 5 +46816 +330 +45E1C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999964 + 20 +107.8064582119114 + 30 +0.0 + 0 +POINT + 5 +46817 +330 +45E1C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999965 + 20 +27.17572860804846 + 30 +0.0 + 0 +ENDBLK + 5 +45E28 +330 +45E1C +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E34 +330 +45E29 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D134 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D134 + 1 + + 0 +LINE + 5 +46818 +330 +45E29 +100 +AcDbEntity + 8 +PCB + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.56999999999964 + 20 +107.8064582119114 + 30 +0.0 + 11 +138.6421178147193 + 21 +107.8064582119114 + 31 +0.0 + 0 +LINE + 5 +46819 +330 +45E29 +100 +AcDbEntity + 8 +PCB + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.4300000000005 + 20 +62.80645821190842 + 30 +0.0 + 11 +138.6421178147193 + 21 +62.80645821190842 + 31 +0.0 + 0 +LINE + 5 +4681A +330 +45E29 +100 +AcDbEntity + 8 +PCB + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +138.3421178147193 + 20 +106.0564582119114 + 30 +0.0 + 11 +138.3421178147193 + 21 +92.02312487857657 + 31 +0.0 + 0 +LINE + 5 +4681B +330 +45E29 +100 +AcDbEntity + 8 +PCB + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +138.3421178147193 + 20 +64.55645821190842 + 30 +0.0 + 11 +138.3421178147193 + 21 +78.58979154524323 + 31 +0.0 + 0 +SOLID + 5 +4681C +330 +45E29 +100 +AcDbEntity + 8 +PCB +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +138.633784481386 + 20 +106.0564582119114 + 30 +0.0 + 11 +138.0504511480526 + 21 +106.0564582119114 + 31 +0.0 + 12 +138.3421178147193 + 22 +107.8064582119114 + 32 +0.0 + 13 +138.3421178147193 + 23 +107.8064582119114 + 33 +0.0 + 0 +SOLID + 5 +4681D +330 +45E29 +100 +AcDbEntity + 8 +PCB +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +138.0504511480526 + 20 +64.55645821190842 + 30 +0.0 + 11 +138.633784481386 + 21 +64.55645821190842 + 31 +0.0 + 12 +138.3421178147193 + 22 +62.80645821190842 + 32 +0.0 + 13 +138.3421178147193 + 23 +62.80645821190842 + 33 +0.0 + 0 +MTEXT + 5 +4681E +330 +45E29 +100 +AcDbEntity + 8 +PCB +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +138.3421178147193 + 20 +85.3064582119099 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\Ftxt.shx|c1;\A1;45.00%%p0.10} + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +4681F +330 +45E29 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999964 + 20 +107.8064582119114 + 30 +0.0 + 0 +POINT + 5 +46820 +330 +45E29 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +62.80645821190842 + 30 +0.0 + 0 +POINT + 5 +46821 +330 +45E29 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +138.3421178147193 + 20 +62.80645821190842 + 30 +0.0 + 0 +ENDBLK + 5 +45E35 +330 +45E29 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E42 +330 +45E36 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D135 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D135 + 1 + + 0 +LINE + 5 +46822 +330 +45E36 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 11 +124.9300000000004 + 21 +142.2993796557983 + 31 +0.0 + 0 +LINE + 5 +46823 +330 +45E36 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +128.4300000000007 + 20 +143.1873378695507 + 30 +0.0 + 11 +128.4300000000007 + 21 +141.6993796557983 + 31 +0.0 + 0 +LINE + 5 +46824 +330 +45E36 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +130.1800000000007 + 20 +141.9993796557983 + 30 +0.0 + 11 +132.6175000000007 + 21 +141.9993796557983 + 31 +0.0 + 0 +LINE + 5 +46825 +330 +45E36 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.9300000000004 + 20 +141.9993796557983 + 30 +0.0 + 11 +128.4300000000007 + 21 +141.9993796557983 + 31 +0.0 + 0 +LINE + 5 +46826 +330 +45E36 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +123.1800000000004 + 20 +141.9993796557983 + 30 +0.0 + 11 +121.4300000000004 + 21 +141.9993796557983 + 31 +0.0 + 0 +SOLID + 5 +46827 +330 +45E36 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +123.1800000000004 + 20 +141.7077129891316 + 30 +0.0 + 11 +123.1800000000004 + 21 +142.2910463224649 + 31 +0.0 + 12 +124.9300000000004 + 22 +141.9993796557983 + 32 +0.0 + 13 +124.9300000000004 + 23 +141.9993796557983 + 33 +0.0 + 0 +SOLID + 5 +46828 +330 +45E36 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +130.1800000000007 + 20 +142.2910463224649 + 30 +0.0 + 11 +130.1800000000007 + 21 +141.7077129891316 + 31 +0.0 + 12 +128.4300000000007 + 22 +141.9993796557983 + 32 +0.0 + 13 +128.4300000000007 + 23 +141.9993796557983 + 33 +0.0 + 0 +MTEXT + 5 +46829 +330 +45E36 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +138.8966666666674 + 20 +141.9993796557983 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\Ftxt.shx|c1;\A1;3.50%%p0.30} + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +4682A +330 +45E36 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 0 +POINT + 5 +4682B +330 +45E36 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +128.4300000000007 + 20 +143.1873378695507 + 30 +0.0 + 0 +POINT + 5 +4682C +330 +45E36 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +128.4300000000007 + 20 +141.9993796557983 + 30 +0.0 + 0 +ENDBLK + 5 +45E43 +330 +45E36 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E4F +330 +45E44 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D136 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D136 + 1 + + 0 +LINE + 5 +4682D +330 +45E44 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.4300000000005 + 20 +152.8064416368895 + 30 +0.0 + 11 +147.8348071716452 + 21 +152.8064416368895 + 31 +0.0 + 0 +LINE + 5 +4682E +330 +45E44 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 11 +147.8348071716452 + 21 +140.3064582119084 + 31 +0.0 + 0 +LINE + 5 +4682F +330 +45E44 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +147.5348071716452 + 20 +140.3064582119084 + 30 +0.0 + 11 +147.5348071716452 + 21 +137.7856248785751 + 31 +0.0 + 0 +LINE + 5 +46830 +330 +45E44 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +147.5348071716452 + 20 +151.0564416368895 + 30 +0.0 + 11 +147.5348071716452 + 21 +142.0564582119084 + 31 +0.0 + 0 +SOLID + 5 +46831 +330 +45E44 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +147.8264738383118 + 20 +151.0564416368895 + 30 +0.0 + 11 +147.2431405049785 + 21 +151.0564416368895 + 31 +0.0 + 12 +147.5348071716452 + 22 +152.8064416368895 + 32 +0.0 + 13 +147.5348071716452 + 23 +152.8064416368895 + 33 +0.0 + 0 +SOLID + 5 +46832 +330 +45E44 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +147.2431405049785 + 20 +142.0564582119084 + 30 +0.0 + 11 +147.8264738383118 + 21 +142.0564582119084 + 31 +0.0 + 12 +147.5348071716452 + 22 +140.3064582119084 + 32 +0.0 + 13 +147.5348071716452 + 23 +140.3064582119084 + 33 +0.0 + 0 +MTEXT + 5 +46833 +330 +45E44 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +147.5348071716452 + 20 +130.9231248785751 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\Ftxt.shx|c0;\A1;12.50%%p0.30} + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46834 +330 +45E44 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +152.8064416368895 + 30 +0.0 + 0 +POINT + 5 +46835 +330 +45E44 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 0 +POINT + 5 +46836 +330 +45E44 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +147.5348071716452 + 20 +140.3064582119084 + 30 +0.0 + 0 +ENDBLK + 5 +45E50 +330 +45E44 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E5C +330 +45E51 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D137 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D137 + 1 + + 0 +LINE + 5 +46837 +330 +45E51 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.56999999999918 + 20 +152.8064416368925 + 30 +0.0 + 11 +-65.00639585155778 + 21 +152.8064416368925 + 31 +0.0 + 0 +LINE + 5 +46838 +330 +45E51 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-53.06999999999918 + 20 +87.80645821190845 + 30 +0.0 + 11 +-65.00639585155778 + 21 +87.80645821190845 + 31 +0.0 + 0 +LINE + 5 +46839 +330 +45E51 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.70639585155779 + 20 +151.0564416368925 + 30 +0.0 + 11 +-64.70639585155779 + 21 +129.8147915452386 + 31 +0.0 + 0 +LINE + 5 +4683A +330 +45E51 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.70639585155779 + 20 +89.55645821190845 + 30 +0.0 + 11 +-64.70639585155779 + 21 +115.7981248785719 + 31 +0.0 + 0 +SOLID + 5 +4683B +330 +45E51 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-64.41472918489112 + 20 +151.0564416368925 + 30 +0.0 + 11 +-64.99806251822446 + 21 +151.0564416368925 + 31 +0.0 + 12 +-64.70639585155779 + 22 +152.8064416368925 + 32 +0.0 + 13 +-64.70639585155779 + 23 +152.8064416368925 + 33 +0.0 + 0 +SOLID + 5 +4683C +330 +45E51 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-64.99806251822446 + 20 +89.55645821190845 + 30 +0.0 + 11 +-64.41472918489112 + 21 +89.55645821190845 + 31 +0.0 + 12 +-64.70639585155779 + 22 +87.80645821190845 + 32 +0.0 + 13 +-64.70639585155779 + 23 +87.80645821190845 + 33 +0.0 + 0 +MTEXT + 5 +4683D +330 +45E51 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +-64.70639585155779 + 20 +122.8064582119053 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\Ftxt.shx|c0;\A1;65.00%%p0.30} + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +4683E +330 +45E51 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999918 + 20 +152.8064416368925 + 30 +0.0 + 0 +POINT + 5 +4683F +330 +45E51 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.06999999999918 + 20 +87.80645821190845 + 30 +0.0 + 0 +POINT + 5 +46840 +330 +45E51 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-64.70639585155779 + 20 +87.80645821190845 + 30 +0.0 + 0 +ENDBLK + 5 +45E5D +330 +45E51 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E69 +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D138 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D138 + 1 + + 0 +LINE + 5 +46841 +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +124.4300000000005 + 20 +153.0064416368895 + 30 +0.0 + 11 +124.4300000000005 + 21 +163.6209474236985 + 31 +0.0 + 0 +LINE + 5 +46842 +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-52.56999999999918 + 20 +153.0064416368924 + 30 +0.0 + 11 +-52.56999999999917 + 21 +163.6209474236985 + 31 +0.0 + 0 +LINE + 5 +46843 +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +123.9300000000005 + 20 +163.4209474236985 + 30 +0.0 + 11 +41.29803710428637 + 21 +163.4209474236985 + 31 +0.0 + 0 +LINE + 5 +46844 +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-52.06999999999917 + 20 +163.4209474236985 + 30 +0.0 + 11 +25.9980371042864 + 21 +163.4209474236985 + 31 +0.0 + 0 +SOLID + 5 +46845 +330 +45E5E +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +123.9300000000005 + 20 +163.3376140903651 + 30 +0.0 + 11 +123.9300000000005 + 21 +163.5042807570318 + 31 +0.0 + 12 +124.4300000000005 + 22 +163.4209474236985 + 32 +0.0 + 13 +124.4300000000005 + 23 +163.4209474236985 + 33 +0.0 + 0 +SOLID + 5 +46846 +330 +45E5E +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-52.06999999999917 + 20 +163.5042807570318 + 30 +0.0 + 11 +-52.06999999999917 + 21 +163.3376140903651 + 31 +0.0 + 12 +-52.56999999999917 + 22 +163.4209474236985 + 32 +0.0 + 13 +-52.56999999999917 + 23 +163.4209474236985 + 33 +0.0 + 0 +MTEXT + 5 +46847 +330 +45E5E +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +33.64803710428637 + 20 +163.4209474236985 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;177.00%%p0.11 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46848 +330 +45E5E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +152.8064416368895 + 30 +0.0 + 0 +POINT + 5 +46849 +330 +45E5E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999918 + 20 +152.8064416368925 + 30 +0.0 + 0 +POINT + 5 +4684A +330 +45E5E +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.56999999999917 + 20 +163.4209474236985 + 30 +0.0 + 0 +ENDBLK + 5 +45E6A +330 +45E5E +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E76 +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D139 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D139 + 1 + + 0 +LINE + 5 +4684B +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +124.6300000000005 + 20 +152.8064416368895 + 30 +0.0 + 11 +151.3141327247279 + 21 +152.8064416368895 + 31 +0.0 + 0 +LINE + 5 +4684C +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +124.6300000000005 + 20 +42.80647478692748 + 30 +0.0 + 11 +151.3141327247279 + 21 +42.80647478692747 + 31 +0.0 + 0 +LINE + 5 +4684D +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +151.1141327247279 + 20 +152.3064416368895 + 30 +0.0 + 11 +151.1141327247279 + 21 +106.6564582119085 + 31 +0.0 + 0 +LINE + 5 +4684E +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +151.1141327247279 + 20 +43.30647478692747 + 30 +0.0 + 11 +151.1141327247279 + 21 +91.9564582119085 + 31 +0.0 + 0 +SOLID + 5 +4684F +330 +45E6B +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +151.1974660580613 + 20 +152.3064416368895 + 30 +0.0 + 11 +151.0307993913946 + 21 +152.3064416368895 + 31 +0.0 + 12 +151.1141327247279 + 22 +152.8064416368895 + 32 +0.0 + 13 +151.1141327247279 + 23 +152.8064416368895 + 33 +0.0 + 0 +SOLID + 5 +46850 +330 +45E6B +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +151.0307993913946 + 20 +43.30647478692747 + 30 +0.0 + 11 +151.1974660580613 + 21 +43.30647478692747 + 31 +0.0 + 12 +151.1141327247279 + 22 +42.80647478692747 + 32 +0.0 + 13 +151.1141327247279 + 23 +42.80647478692747 + 33 +0.0 + 0 +MTEXT + 5 +46851 +330 +45E6B +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +151.1141327247279 + 20 +99.30645821190849 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;110.00%%p0.10 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46852 +330 +45E6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +152.8064416368895 + 30 +0.0 + 0 +POINT + 5 +46853 +330 +45E6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.4300000000005 + 20 +42.80647478692748 + 30 +0.0 + 0 +POINT + 5 +46854 +330 +45E6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +151.1141327247279 + 20 +42.80647478692747 + 30 +0.0 + 0 +ENDBLK + 5 +45E77 +330 +45E6B +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45E7F +330 +45E78 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D140 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D140 + 1 + + 0 +LINE + 5 +46855 +330 +45E78 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +132.3862261037449 + 20 +157.6981429058028 + 30 +0.0 + 11 +130.6362261037449 + 21 +157.6981429058028 + 31 +0.0 + 0 +LINE + 5 +46856 +330 +45E78 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +129.2345498450446 + 20 +156.650381642062 + 30 +0.0 + 11 +130.6362261037449 + 21 +157.6981429058028 + 31 +0.0 + 0 +MTEXT + 5 +46857 +330 +45E78 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 4 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +137.6445594370783 + 20 +157.6981429058028 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +4-\A1;R3.00 + 73 + 1 + 44 +1.0 + 0 +SOLID + 5 +46858 +330 +45E78 +100 +AcDbEntity + 8 +dim +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +129.0599229677544 + 20 +156.8839943518454 + 30 +0.0 + 11 +129.4091767223347 + 21 +156.4167689322786 + 31 +0.0 + 12 +127.8328735863442 + 22 +155.6026203783212 + 32 +0.0 + 13 +127.8328735863442 + 23 +155.6026203783212 + 33 +0.0 + 0 +POINT + 5 +46859 +330 +45E78 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +127.8328735863442 + 20 +155.6026203783212 + 30 +0.0 + 0 +POINT + 5 +4685A +330 +45E78 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +125.4300000000007 + 20 +153.8064582119084 + 30 +0.0 + 0 +ENDBLK + 5 +45E80 +330 +45E78 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45F01 +330 +45EFE +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbBlockBegin + 2 +rgeger + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +rgeger + 1 + + 0 +LWPOLYLINE + 5 +45F02 +330 +45EFE +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-4.049999999999965 + 20 +4.249999999999999 + 10 +4.050000000000001 + 20 +4.25 + 42 +-0.4142135623730955 + 10 +4.249999999999989 + 20 +4.049999999999997 + 10 +4.250000000000048 + 20 +-4.049999999999997 + 42 +-0.414213562373095 + 10 +4.050000000000059 + 20 +-4.25 + 10 +-4.049999999999963 + 20 +-4.249999999999987 + 42 +-0.414213562373095 + 10 +-4.249999999999952 + 20 +-4.049999999999984 + 10 +-4.249999999999954 + 20 +4.049999999999996 + 42 +-0.414213562373095 + 0 +LWPOLYLINE + 5 +45F03 +330 +45EFE +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-0.0000000000000103 + 20 +4.25 + 10 +0.0000000000000719 + 20 +-14.04499999999999 + 0 +LWPOLYLINE + 5 +45F04 +330 +45EFE +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +4.249999999999997 + 20 +0.0000000000000004 + 10 +-4.250000000000003 + 20 +-0.0000000000000011 + 0 +ARC + 5 +45F05 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000019 + 20 +2.899999999999992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45F06 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000019 + 20 +0.7000000000000601 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45F07 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000069 + 20 +-2.899999999999963 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45F08 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000027 + 20 +-0.7000000000000308 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45F09 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000071 + 20 +-10.63000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45F0A +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000072 + 20 +-12.83000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45F0B +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000019 + 20 +2.90000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45F0C +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000019 + 20 +0.7000000000000886 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45F0D +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000027 + 20 +-0.7000000000000024 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45F0E +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000069 + 20 +-2.899999999999934 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45F0F +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000071 + 20 +-10.63000000000002 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +45F10 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +4.750000000000071 + 20 +-12.33000000000001 + 30 +0.0 + 11 +4.750000000000071 + 21 +-12.33000000000001 + 31 +0.0 + 0 +ARC + 5 +45F11 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +4.750000000000072 + 20 +-12.83000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +11.29379387508543 + 51 +90.0 + 0 +LINE + 5 +45F12 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +4.750000000000071 + 20 +-11.13000000000002 + 30 +0.0 + 11 +4.750000000000071 + 21 +-11.13000000000002 + 31 +0.0 + 0 +ARC + 5 +45F13 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999996 + 20 +2.89999999999999 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45F14 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999996 + 20 +0.7000000000000585 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45F15 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999945 + 20 +-2.899999999999964 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45F16 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999988 + 20 +-0.7000000000000325 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45F17 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999915 + 20 +-10.63000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45F18 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999914 + 20 +-12.83000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45F19 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999996 + 20 +2.900000000000019 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45F1A +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999996 + 20 +0.7000000000000869 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45F1B +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999988 + 20 +-0.7000000000000041 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +45F1C +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999945 + 20 +-2.899999999999936 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45F1D +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999915 + 20 +-10.63000000000003 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45F1E +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-4.749999999999915 + 20 +-12.33000000000001 + 30 +0.0 + 11 +-4.749999999999915 + 21 +-12.33000000000001 + 31 +0.0 + 0 +ARC + 5 +45F1F +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999914 + 20 +-12.83000000000001 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +168.7062061249146 + 0 +LINE + 5 +45F20 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbLine + 10 +-4.749999999999915 + 20 +-11.13000000000003 + 30 +0.0 + 11 +-4.749999999999915 + 21 +-11.13000000000003 + 31 +0.0 + 0 +LWPOLYLINE + 5 +45F21 +330 +45EFE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.2 + 10 +-2.699999999999947 + 20 +-4.749999999999987 + 10 +2.700000000000051 + 20 +-4.75 + 0 +LWPOLYLINE + 5 +45F22 +102 +{ACAD_REACTORS +330 +45F25 +102 +} +330 +45EFE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +3.750000000000078 + 20 +-10.18000000000001 + 10 +-0.0499999999999261 + 20 +-10.18000000000001 + 42 +0.4142135623730981 + 10 +-0.2499999999999289 + 20 +-10.38000000000001 + 10 +-0.2499999999999283 + 20 +-13.08000000000001 + 42 +0.4142135623731033 + 10 +-0.0499999999999255 + 20 +-13.28 + 10 +3.750000000000079 + 20 +-13.28000000000002 + 42 +0.4142135623730981 + 10 +3.950000000000081 + 20 +-13.08000000000001 + 10 +3.950000000000081 + 20 +-10.38000000000001 + 42 +0.4142135623730981 + 0 +LWPOLYLINE + 5 +45F23 +330 +45EFE +100 +AcDbEntity + 8 +FPC +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +-3.599999999999952 + 20 +-9.880000000000011 + 42 +0.414213562373095 + 10 +-2.999999999999929 + 20 +-9.280000000000017 + 10 +-2.999999999999944 + 20 +-4.849999999999995 + 42 +0.414213562373095 + 10 +-3.599999999999953 + 20 +-4.249999999999987 + 10 +-4.049999999999956 + 20 +-4.249999999999987 + 42 +-0.414213562373095 + 10 +-4.249999999999945 + 20 +-4.049999999999984 + 10 +-4.249999999999954 + 20 +4.049999999999996 + 42 +-0.414213562373095 + 10 +-4.049999999999965 + 20 +4.249999999999999 + 10 +4.050000000000001 + 20 +4.25 + 42 +-0.414213562373095 + 10 +4.249999999999989 + 20 +4.049999999999997 + 10 +4.250000000000048 + 20 +-4.049999999999997 + 42 +-0.414213562373095 + 10 +4.050000000000059 + 20 +-4.25 + 10 +3.600000000000071 + 20 +-4.25 + 42 +0.414213562373095 + 10 +3.000000000000048 + 20 +-4.849999999999994 + 10 +3.000000000000071 + 20 +-9.280000000000015 + 42 +0.414213562373095 + 10 +3.60000000000008 + 20 +-9.88000000000001 + 10 +3.750000000000071 + 20 +-9.88000000000001 + 42 +-0.414213562373095 + 10 +4.250000000000071 + 20 +-10.38000000000001 + 10 +4.250000000000072 + 20 +-13.08000000000001 + 42 +-0.414213562373095 + 10 +3.750000000000072 + 20 +-13.58 + 10 +-3.749999999999928 + 20 +-13.58000000000001 + 42 +-0.414213562373095 + 10 +-4.249999999999928 + 20 +-13.08000000000001 + 10 +-4.249999999999929 + 20 +-10.38000000000001 + 42 +-0.414213562373095 + 10 +-3.749999999999929 + 20 +-9.880000000000011 + 0 +LWPOLYLINE + 5 +45F24 +330 +45EFE +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-3.749999999999929 + 20 +-9.880000000000011 + 10 +3.750000000000071 + 20 +-9.88000000000001 + 42 +-0.4142135623730953 + 10 +4.250000000000071 + 20 +-10.38000000000001 + 10 +4.250000000000072 + 20 +-13.08000000000001 + 42 +-0.4142135623730948 + 10 +3.750000000000072 + 20 +-13.58 + 10 +-3.749999999999928 + 20 +-13.58000000000001 + 42 +-0.414213562373095 + 10 +-4.249999999999928 + 20 +-13.08000000000001 + 10 +-4.249999999999929 + 20 +-10.38000000000001 + 42 +-0.4142135623730948 + 0 +HATCH + 5 +45F25 +330 +45EFE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 8 + 72 + 1 + 10 +3.750000000000078 + 20 +-10.18000000000001 + 11 +-0.0499999999999261 + 21 +-10.18000000000001 + 72 + 2 + 10 +-0.0499999999999261 + 20 +-10.38 + 40 +0.1999999999999886 + 50 +90.00000000000001 + 51 +180.0000000000041 + 73 + 1 + 72 + 1 + 10 +-0.2499999999999289 + 20 +-10.38000000000001 + 11 +-0.2499999999999283 + 21 +-13.08000000000001 + 72 + 2 + 10 +-0.0499999999999326 + 20 +-13.08000000000001 + 40 +0.1999999999999957 + 50 +180.0 + 51 +270.000000000002 + 73 + 1 + 72 + 1 + 10 +-0.0499999999999255 + 20 +-13.28 + 11 +3.750000000000079 + 21 +-13.28000000000002 + 72 + 2 + 10 +3.750000000000079 + 20 +-13.08000000000001 + 40 +0.2000000000000028 + 50 +270.0 + 51 +0.0 + 73 + 1 + 72 + 1 + 10 +3.950000000000081 + 20 +-13.08000000000001 + 11 +3.950000000000081 + 21 +-10.38000000000001 + 72 + 2 + 10 +3.750000000000078 + 20 +-10.38 + 40 +0.2000000000000028 + 50 +359.9999999999959 + 51 +90.0 + 73 + 1 + 97 + 1 +330 +45F22 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-47.49999999999999 + 20 +-82.10000000000001 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +INSERT + 5 +45F26 +330 +45EFE +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C3B02768B + 10 +0.0000000000000181 + 20 +4.25 + 30 +0.0 + 0 +CIRCLE + 5 +45F27 +102 +{ACAD_REACTORS +330 +45F28 +102 +} +330 +45EFE +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbCircle + 10 +-4.749999999999929 + 20 +-11.73000000000002 + 30 +0.0 + 40 +0.2 + 0 +HATCH + 5 +45F28 +330 +45EFE +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-4.749999999999929 + 20 +-11.73000000000002 + 40 +0.2 + 50 +270.0 + 51 +630.0 + 73 + 1 + 97 + 1 +330 +45F27 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-37.99999999999999 + 20 +-42.34000000000001 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +45F29 +330 +45EFE +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45F2D +330 +45F2A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +ERERWE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ERERWE + 1 + + 0 +LWPOLYLINE + 5 +45F2E +102 +{ACAD_REACTORS +330 +45F30 +102 +} +330 +45F2A +100 +AcDbEntity + 8 +T + 6 +Continuous +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 1 + 43 +0.0 + 10 +-0.5750000000000028 + 20 +-4.099999999999966 + 10 +-0.1749999999999972 + 20 +-4.099999999999966 + 42 +0.414213562373095 + 10 +-0.0749999999999886 + 20 +-3.999999999999972 + 10 +-0.0749999999999886 + 20 +-3.099999999999966 + 10 +-0.4749999999999943 + 20 +-3.099999999999966 + 42 +0.414213562373095 + 10 +-0.5750000000000028 + 20 +-3.199999999999989 + 0 +LWPOLYLINE + 5 +45F2F +102 +{ACAD_REACTORS +330 +45F30 +102 +} +330 +45F2A +100 +AcDbEntity + 8 +T + 6 +Continuous +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 1 + 43 +0.0 + 10 +-0.575000000000017 + 20 +4.100000000000023 + 10 +-0.1750000000000114 + 20 +4.100000000000023 + 42 +-0.414213562373095 + 10 +-0.0750000000000028 + 20 +4.000000000000028 + 10 +-0.0750000000000028 + 20 +3.100000000000023 + 10 +-0.4750000000000085 + 20 +3.100000000000023 + 42 +-0.414213562373095 + 10 +-0.575000000000017 + 20 +3.200000000000045 + 0 +HATCH + 5 +45F30 +330 +45F2A +100 +AcDbEntity + 8 +T + 6 +Continuous +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 2 + 92 + 1 + 93 + 6 + 72 + 1 + 10 +-0.5750000000000028 + 20 +-4.099999999999966 + 11 +-0.1749999999999972 + 21 +-4.099999999999966 + 72 + 2 + 10 +-0.1749999999999972 + 20 +-3.999999999999964 + 40 +0.1000000000000014 + 50 +270.0 + 51 +359.9999999999959 + 73 + 1 + 72 + 1 + 10 +-0.0749999999999886 + 20 +-3.999999999999972 + 11 +-0.074999999999989 + 21 +-3.099999999999966 + 72 + 1 + 10 +-0.0749999999999886 + 20 +-3.099999999999966 + 11 +-0.4749999999999943 + 21 +-3.099999999999966 + 72 + 2 + 10 +-0.4749999999999943 + 20 +-3.199999999999982 + 40 +0.1000000000000156 + 50 +90.00000000000003 + 51 +180.0000000000041 + 73 + 1 + 72 + 1 + 10 +-0.5750000000000028 + 20 +-3.199999999999989 + 11 +-0.5750000000000024 + 21 +-4.099999999999966 + 97 + 1 +330 +45F2E + 92 + 1 + 93 + 6 + 72 + 1 + 10 +-0.575000000000017 + 20 +4.100000000000023 + 11 +-0.1750000000000114 + 21 +4.100000000000023 + 72 + 2 + 10 +-0.1750000000000114 + 20 +4.000000000000021 + 40 +0.1000000000000014 + 50 +270.0 + 51 +359.9999999999959 + 73 + 0 + 72 + 1 + 10 +-0.0750000000000028 + 20 +4.000000000000028 + 11 +-0.0750000000000024 + 21 +3.100000000000023 + 72 + 1 + 10 +-0.0750000000000028 + 20 +3.100000000000023 + 11 +-0.4750000000000085 + 21 +3.100000000000023 + 72 + 2 + 10 +-0.4750000000000085 + 20 +3.200000000000038 + 40 +0.1000000000000156 + 50 +90.0 + 51 +180.0000000000041 + 73 + 0 + 72 + 1 + 10 +-0.575000000000017 + 20 +3.200000000000045 + 11 +-0.5750000000000175 + 21 +4.100000000000023 + 97 + 1 +330 +45F2F + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-84.22500000000002 + 20 +47.49999999999999 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +ENDBLK + 5 +45F31 +330 +45F2A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45F35 +330 +45F32 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C3B02768B + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3B02768B + 1 + + 0 +INSERT + 5 +45F36 +330 +45F32 +100 +AcDbEntity + 8 +T + 6 +Continuous +370 + -1 +100 +AcDbBlockReference + 2 +ERERWE + 10 +0.0 + 20 +-0.0249999999999915 + 30 +0.0 + 50 +90.0 + 0 +ENDBLK + 5 +45F37 +330 +45F32 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +45FF0 +330 +45FE8 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C07524055 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C07524055 + 1 + + 0 +ARC + 5 +45FE9 +330 +45FE8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +0.9999999999999716 + 20 +-0.4999999999999716 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +45FEA +330 +45FE8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-0.9999999999999716 + 20 +-0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +45FEB +330 +45FE8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +-1.000000000000028 + 20 +-0.5000000000000284 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +45FEC +330 +45FE8 +100 +AcDbEntity + 8 +PCB +370 + 30 +100 +AcDbCircle + 10 +0.9999999999999432 + 20 +-0.4999999999999716 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +45FED +330 +45FE8 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-0.9999999999999716 + 20 +-0.0000000000000284 + 30 +0.0 + 11 +0.9999999999999716 + 21 +0.0000000000000284 + 31 +0.0 + 0 +ENDBLK + 5 +45FF1 +330 +45FE8 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4618E +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +esrfsaease45 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +esrfsaease45 + 1 + + 0 +LWPOLYLINE + 5 +46190 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-73.9586225440089 + 20 +-69.49183018999452 + 10 +-73.9586225440089 + 20 +-63.39183018999452 + 42 +-0.4142135623730944 + 10 +-73.75862254400889 + 20 +-63.19183018999453 + 10 +-67.65862254400889 + 20 +-63.19183018999453 + 42 +-0.414213562373095 + 10 +-67.4586225440089 + 20 +-63.39183018999452 + 10 +-67.4586225440089 + 20 +-69.49183018999452 + 42 +-0.414213562373095 + 10 +-67.65862254400889 + 20 +-69.69183018999453 + 10 +-73.75862254400892 + 20 +-69.69183018999453 + 42 +-0.4142135623730949 + 0 +LWPOLYLINE + 5 +46191 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-61.99862254400892 + 20 +-70.24183018999452 + 10 +-61.99862254400892 + 20 +-62.64183018999452 + 42 +-0.4142135623730948 + 10 +-61.79862254400891 + 20 +-62.44183018999453 + 10 +-58.19862254400891 + 20 +-62.44183018999453 + 42 +-0.414213562373095 + 10 +-57.9986225440089 + 20 +-62.64183018999452 + 10 +-57.99862254400892 + 20 +-70.24183018999452 + 42 +-0.414213562373095 + 10 +-58.19862254400891 + 20 +-70.44183018999453 + 10 +-61.79862254400891 + 20 +-70.44183018999453 + 42 +-0.4142135623730949 + 0 +LINE + 5 +46192 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-66.4586225440089 + 20 +-63.94183018999453 + 30 +0.0 + 11 +-66.4586225440089 + 21 +-68.94183018999453 + 31 +0.0 + 0 +LINE + 5 +46193 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-62.4986225440089 + 20 +-68.94183018999453 + 30 +0.0 + 11 +-62.4986225440089 + 21 +-63.94183018999453 + 31 +0.0 + 0 +HATCH + 5 +46194 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +-66.26992430409783 + 20 +-68.94183018999453 + 10 +-62.60992430409786 + 20 +-68.94183018999453 + 10 +-62.60992430409786 + 20 +-63.94183018999453 + 10 +-66.26992430409783 + 20 +-63.94183018999453 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +90.0 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +135.0 + 43 +-12.3648388889336 + 44 +-27.58954032681507 + 45 +-0.2651650429449554 + 46 +-0.2651650429449553 + 79 + 0 + 53 +225.0 + 43 +-12.3648388889336 + 44 +-27.58954032681507 + 45 +0.2651650429449553 + 46 +-0.2651650429449554 + 79 + 0 + 47 +0.076321225406334 + 98 + 1 + 10 +-64.87208222242859 + 20 +-66.87281478093806 + 0 +ARC + 5 +46195 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-66.9586225440089 + 20 +-69.4418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +46196 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-67.4586225440089 + 20 +-69.44183018999453 + 30 +0.0 + 11 +-67.4586225440089 + 21 +-69.49183018999452 + 31 +0.0 + 0 +ARC + 5 +46197 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-67.65862254400889 + 20 +-69.49183018999452 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +46198 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-67.65862254400889 + 20 +-69.69183018999453 + 30 +0.0 + 11 +-73.75862254400892 + 21 +-69.69183018999453 + 31 +0.0 + 0 +ARC + 5 +46199 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.75862254400892 + 20 +-69.49183018999452 + 30 +0.0 + 40 +0.1999999999999993 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +4619A +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-73.9586225440089 + 20 +-69.49183018999452 + 30 +0.0 + 11 +-73.9586225440089 + 21 +-63.39183018999452 + 31 +0.0 + 0 +ARC + 5 +4619B +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.75862254400892 + 20 +-63.39183018999452 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +4619C +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-73.75862254400892 + 20 +-63.19183018999453 + 30 +0.0 + 11 +-67.65862254400889 + 21 +-63.19183018999453 + 31 +0.0 + 0 +ARC + 5 +4619D +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-67.65862254400889 + 20 +-63.39183018999452 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +LINE + 5 +4619E +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-67.45862254400888 + 20 +-63.39183018999452 + 30 +0.0 + 11 +-67.4586225440089 + 21 +-63.44183018999453 + 31 +0.0 + 0 +ARC + 5 +4619F +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-66.9586225440089 + 20 +-63.44183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +461A0 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-66.9586225440089 + 20 +-63.94183018999453 + 30 +0.0 + 11 +-62.49862254400892 + 21 +-63.94183018999453 + 31 +0.0 + 0 +ARC + 5 +461A1 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-62.49862254400892 + 20 +-63.44183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +461A2 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-61.99862254400892 + 20 +-63.44183018999453 + 30 +0.0 + 11 +-61.99862254400892 + 21 +-62.64183018999452 + 31 +0.0 + 0 +ARC + 5 +461A3 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-61.79862254400891 + 20 +-62.64183018999452 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +461A4 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-61.79862254400891 + 20 +-62.44183018999453 + 30 +0.0 + 11 +-58.19862254400891 + 21 +-62.44183018999453 + 31 +0.0 + 0 +ARC + 5 +461A5 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.19862254400891 + 20 +-62.64183018999452 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +461A6 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-57.99862254400892 + 20 +-62.64183018999452 + 30 +0.0 + 11 +-57.99862254400892 + 21 +-70.24183018999452 + 31 +0.0 + 0 +ARC + 5 +461A7 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.19862254400891 + 20 +-70.24183018999452 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +269.9999999999968 + 51 +359.9999999999984 + 0 +LINE + 5 +461A8 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-58.19862254400891 + 20 +-70.44183018999453 + 30 +0.0 + 11 +-61.79862254400891 + 21 +-70.44183018999453 + 31 +0.0 + 0 +ARC + 5 +461A9 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-61.79862254400891 + 20 +-70.24183018999452 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +461AA +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-61.99862254400892 + 20 +-70.24183018999452 + 30 +0.0 + 11 +-61.99862254400892 + 21 +-69.44183018999453 + 31 +0.0 + 0 +ARC + 5 +461AB +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-62.49862254400892 + 20 +-69.4418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +461AC +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-62.49862254400892 + 20 +-68.94183018999453 + 30 +0.0 + 11 +-66.9586225440089 + 21 +-68.94183018999453 + 31 +0.0 + 0 +LWPOLYLINE + 5 +461AD +330 +4618D +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-73.9586225440089 + 20 +-66.44183018999453 + 10 +-57.99862254400892 + 20 +-66.4418301899945 + 0 +LWPOLYLINE + 5 +461AE +330 +4618D +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.7086225440089 + 20 +-63.19183018999453 + 10 +-70.7086225440089 + 20 +-69.69183018999453 + 0 +ARC + 5 +461AF +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.99862254400895 + 20 +-61.9418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +461B0 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-60.9986225440089 + 20 +-61.94183018999445 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +461B1 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-60.99862254400895 + 20 +-61.94183018999445 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +461B2 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.99862254400898 + 20 +-61.9418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +461B3 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.99862254400895 + 20 +-70.9418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +461B4 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-60.9986225440089 + 20 +-70.94183018999456 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +461B5 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-60.99862254400895 + 20 +-70.94183018999456 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +461B6 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-58.99862254400898 + 20 +-70.9418301899945 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +461B7 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-60.9986225440089 + 20 +-70.44183018999456 + 30 +0.0 + 11 +-58.99862254400895 + 21 +-70.4418301899945 + 31 +0.0 + 0 +ARC + 5 +461B8 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-68.15862254400892 + 20 +-70.19183018999448 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +461B9 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-70.15862254400886 + 20 +-70.19183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +461BA +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-70.15862254400892 + 20 +-70.94183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +461BB +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-68.15862254400895 + 20 +-70.94183018999448 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +461BC +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-69.65862254400889 + 20 +-70.94183018999456 + 30 +0.0 + 11 +-69.65862254400886 + 21 +-70.19183018999453 + 31 +0.0 + 0 +LINE + 5 +461BD +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-68.65862254400895 + 20 +-70.94183018999448 + 30 +0.0 + 11 +-68.65862254400892 + 21 +-70.19183018999448 + 31 +0.0 + 0 +ARC + 5 +461BE +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.25862254400892 + 20 +-70.19183018999448 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +461BF +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-71.25862254400897 + 20 +-70.19183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +461C0 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-71.25862254400892 + 20 +-70.94183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +461C1 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.25862254400889 + 20 +-70.94183018999448 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +461C2 +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-71.75862254400894 + 20 +-70.94183018999456 + 30 +0.0 + 11 +-71.75862254400897 + 21 +-70.19183018999453 + 31 +0.0 + 0 +LINE + 5 +461C3 +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.75862254400889 + 20 +-70.94183018999448 + 30 +0.0 + 11 +-72.75862254400892 + 21 +-70.19183018999448 + 31 +0.0 + 0 +ARC + 5 +461C4 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-68.15862254400892 + 20 +-62.69183018999459 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +461C5 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-70.15862254400886 + 20 +-62.69183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +461C6 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-70.15862254400892 + 20 +-61.19183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +461C7 +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-68.15862254400895 + 20 +-61.19183018999459 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +461C8 +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-69.65862254400892 + 20 +-61.19183018999453 + 30 +0.0 + 11 +-69.65862254400886 + 21 +-62.69183018999453 + 31 +0.0 + 0 +LINE + 5 +461C9 +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-68.65862254400895 + 20 +-61.19183018999459 + 30 +0.0 + 11 +-68.65862254400892 + 21 +-62.69183018999459 + 31 +0.0 + 0 +ARC + 5 +461CA +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.25862254400892 + 20 +-62.69183018999459 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +461CB +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-71.25862254400897 + 20 +-62.69183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +461CC +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-71.25862254400892 + 20 +-61.19183018999453 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +461CD +330 +4618D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-73.25862254400889 + 20 +-61.19183018999459 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +461CE +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-71.75862254400892 + 20 +-61.19183018999453 + 30 +0.0 + 11 +-71.75862254400897 + 21 +-62.69183018999453 + 31 +0.0 + 0 +LINE + 5 +461CF +330 +4618D +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-72.75862254400889 + 20 +-61.19183018999459 + 30 +0.0 + 11 +-72.75862254400892 + 21 +-62.69183018999459 + 31 +0.0 + 0 +HATCH + 5 +461D0 +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-59.99862254400892 + 20 +-70.94183018999456 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-62.12362254400915 + 20 +-75.6918301899945 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ENDBLK + 5 +4618F +330 +4618D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +46274 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +efaserfsaerqa + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +efaserfsaerqa + 1 + + 0 +LWPOLYLINE + 5 +46276 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-148.5448464128085 + 20 +60.82811350227985 + 10 +-148.5448464128085 + 20 +66.92811350227984 + 42 +-0.4142135623730944 + 10 +-148.3448464128085 + 20 +67.12811350227983 + 10 +-142.2448464128085 + 20 +67.12811350227983 + 42 +-0.414213562373095 + 10 +-142.0448464128085 + 20 +66.92811350227984 + 10 +-142.0448464128085 + 20 +60.82811350227985 + 42 +-0.414213562373095 + 10 +-142.2448464128085 + 20 +60.62811350227983 + 10 +-148.3448464128085 + 20 +60.62811350227983 + 42 +-0.4142135623730949 + 0 +LWPOLYLINE + 5 +46277 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-136.5848464128085 + 20 +60.07811350227985 + 10 +-136.5848464128085 + 20 +67.67811350227984 + 42 +-0.4142135623730948 + 10 +-136.3848464128085 + 20 +67.87811350227983 + 10 +-132.7848464128085 + 20 +67.87811350227983 + 42 +-0.414213562373095 + 10 +-132.5848464128085 + 20 +67.67811350227984 + 10 +-132.5848464128085 + 20 +60.07811350227985 + 42 +-0.414213562373095 + 10 +-132.7848464128085 + 20 +59.87811350227983 + 10 +-136.3848464128085 + 20 +59.87811350227983 + 42 +-0.4142135623730949 + 0 +LINE + 5 +46278 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-141.0448464128085 + 20 +66.37811350227983 + 30 +0.0 + 11 +-141.0448464128085 + 21 +61.37811350227983 + 31 +0.0 + 0 +LINE + 5 +46279 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbLine + 10 +-137.0848464128085 + 20 +61.37811350227983 + 30 +0.0 + 11 +-137.0848464128085 + 21 +66.37811350227983 + 31 +0.0 + 0 +HATCH + 5 +4627A +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 5 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI37 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 7 + 72 + 0 + 73 + 1 + 93 + 4 + 10 +-140.8561481728974 + 20 +61.37811350227983 + 10 +-137.1961481728974 + 20 +61.37811350227983 + 10 +-137.1961481728974 + 20 +66.37811350227983 + 10 +-140.8561481728974 + 20 +66.37811350227983 + 97 + 0 + 75 + 0 + 76 + 1 + 52 +90.0 + 41 +3.0 + 77 + 0 + 78 + 2 + 53 +135.0 + 43 +-86.95106275773321 + 44 +102.7304033654593 + 45 +-0.2651650429449554 + 46 +-0.2651650429449553 + 79 + 0 + 53 +225.0 + 43 +-86.95106275773321 + 44 +102.7304033654593 + 45 +0.2651650429449553 + 46 +-0.2651650429449554 + 79 + 0 + 47 +0.076321225406334 + 98 + 1 + 10 +-139.4583060912282 + 20 +63.44712891133631 + 0 +ARC + 5 +4627B +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-141.5448464128085 + 20 +60.87811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +4627C +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-142.0448464128085 + 20 +60.87811350227983 + 30 +0.0 + 11 +-142.0448464128085 + 21 +60.82811350227985 + 31 +0.0 + 0 +ARC + 5 +4627D +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.2448464128085 + 20 +60.82811350227985 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +4627E +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-142.2448464128085 + 20 +60.62811350227983 + 30 +0.0 + 11 +-148.3448464128085 + 21 +60.62811350227983 + 31 +0.0 + 0 +ARC + 5 +4627F +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-148.3448464128085 + 20 +60.82811350227985 + 30 +0.0 + 40 +0.1999999999999993 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +46280 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-148.5448464128085 + 20 +60.82811350227985 + 30 +0.0 + 11 +-148.5448464128085 + 21 +66.92811350227984 + 31 +0.0 + 0 +ARC + 5 +46281 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-148.3448464128085 + 20 +66.92811350227984 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +46282 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-148.3448464128085 + 20 +67.12811350227983 + 30 +0.0 + 11 +-142.2448464128085 + 21 +67.12811350227983 + 31 +0.0 + 0 +ARC + 5 +46283 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.2448464128085 + 20 +66.92811350227984 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +0.0000000000016284 + 51 +90.0 + 0 +LINE + 5 +46284 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-142.0448464128085 + 20 +66.92811350227984 + 30 +0.0 + 11 +-142.0448464128085 + 21 +66.87811350227983 + 31 +0.0 + 0 +ARC + 5 +46285 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-141.5448464128085 + 20 +66.87811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +46286 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-141.5448464128085 + 20 +66.37811350227983 + 30 +0.0 + 11 +-137.0848464128085 + 21 +66.37811350227983 + 31 +0.0 + 0 +ARC + 5 +46287 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-137.0848464128085 + 20 +66.87811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +46288 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-136.5848464128085 + 20 +66.87811350227983 + 30 +0.0 + 11 +-136.5848464128085 + 21 +67.67811350227984 + 31 +0.0 + 0 +ARC + 5 +46289 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-136.3848464128085 + 20 +67.67811350227984 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +4628A +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-136.3848464128085 + 20 +67.87811350227983 + 30 +0.0 + 11 +-132.7848464128085 + 21 +67.87811350227983 + 31 +0.0 + 0 +ARC + 5 +4628B +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-132.7848464128085 + 20 +67.67811350227984 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +4628C +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-132.5848464128085 + 20 +67.67811350227984 + 30 +0.0 + 11 +-132.5848464128085 + 21 +60.07811350227985 + 31 +0.0 + 0 +ARC + 5 +4628D +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-132.7848464128085 + 20 +60.07811350227985 + 30 +0.0 + 40 +0.1999999999999957 +100 +AcDbArc + 50 +269.9999999999968 + 51 +359.9999999999984 + 0 +LINE + 5 +4628E +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-132.7848464128085 + 20 +59.87811350227983 + 30 +0.0 + 11 +-136.3848464128085 + 21 +59.87811350227983 + 31 +0.0 + 0 +ARC + 5 +4628F +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-136.3848464128085 + 20 +60.07811350227985 + 30 +0.0 + 40 +0.2000000000000028 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +46290 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-136.5848464128085 + 20 +60.07811350227985 + 30 +0.0 + 11 +-136.5848464128085 + 21 +60.87811350227983 + 31 +0.0 + 0 +ARC + 5 +46291 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-137.0848464128085 + 20 +60.87811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +46292 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-137.0848464128085 + 20 +61.37811350227983 + 30 +0.0 + 11 +-141.5448464128085 + 21 +61.37811350227983 + 31 +0.0 + 0 +LWPOLYLINE + 5 +46293 +330 +46273 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-148.5448464128085 + 20 +63.87811350227983 + 10 +-132.5848464128085 + 20 +63.87811350227986 + 0 +LWPOLYLINE + 5 +46294 +330 +46273 +100 +AcDbEntity + 8 +Center + 48 +0.05 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-145.2948464128085 + 20 +67.12811350227983 + 10 +-145.2948464128085 + 20 +60.62811350227983 + 0 +ARC + 5 +46295 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-133.5848464128086 + 20 +68.37811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +46296 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-135.5848464128085 + 20 +68.37811350227992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +46297 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-135.5848464128086 + 20 +68.37811350227992 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +46298 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-133.5848464128086 + 20 +68.37811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +46299 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-133.5848464128086 + 20 +59.37811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +4629A +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-135.5848464128085 + 20 +59.3781135022798 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +4629B +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-135.5848464128086 + 20 +59.3781135022798 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +4629C +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-133.5848464128086 + 20 +59.37811350227986 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +4629D +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-135.5848464128085 + 20 +59.8781135022798 + 30 +0.0 + 11 +-133.5848464128086 + 21 +59.87811350227986 + 31 +0.0 + 0 +ARC + 5 +4629E +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.7448464128086 + 20 +60.12811350227989 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +4629F +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-144.7448464128084 + 20 +60.12811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +462A0 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-144.7448464128086 + 20 +58.62811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +462A1 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.7448464128086 + 20 +58.62811350227989 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +LINE + 5 +462A2 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-144.2448464128086 + 20 +58.62811350227983 + 30 +0.0 + 11 +-144.2448464128084 + 21 +60.12811350227983 + 31 +0.0 + 0 +LINE + 5 +462A3 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-143.2448464128086 + 20 +58.62811350227989 + 30 +0.0 + 11 +-143.2448464128086 + 21 +60.12811350227989 + 31 +0.0 + 0 +ARC + 5 +462A4 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-147.8448464128085 + 20 +60.12811350227989 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +462A5 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-145.8448464128086 + 20 +60.12811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +462A6 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-145.8448464128085 + 20 +58.62811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +462A7 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-147.8448464128085 + 20 +58.62811350227989 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LINE + 5 +462A8 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-146.3448464128085 + 20 +58.62811350227983 + 30 +0.0 + 11 +-146.3448464128086 + 21 +60.12811350227983 + 31 +0.0 + 0 +LINE + 5 +462A9 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-147.3448464128085 + 20 +58.62811350227989 + 30 +0.0 + 11 +-147.3448464128085 + 21 +60.12811350227989 + 31 +0.0 + 0 +ARC + 5 +462AA +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.7448464128086 + 20 +67.62811350227977 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +462AB +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-144.7448464128084 + 20 +67.62811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +462AC +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-144.7448464128086 + 20 +68.37811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +462AD +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-142.7448464128086 + 20 +68.37811350227977 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +LINE + 5 +462AE +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-144.2448464128085 + 20 +68.37811350227986 + 30 +0.0 + 11 +-144.2448464128084 + 21 +67.62811350227983 + 31 +0.0 + 0 +LINE + 5 +462AF +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-143.2448464128086 + 20 +68.37811350227977 + 30 +0.0 + 11 +-143.2448464128086 + 21 +67.62811350227977 + 31 +0.0 + 0 +ARC + 5 +462B0 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-147.8448464128085 + 20 +67.62811350227977 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +462B1 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-145.8448464128086 + 20 +67.62811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +462B2 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-145.8448464128085 + 20 +68.37811350227983 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +462B3 +330 +46273 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-147.8448464128085 + 20 +68.37811350227977 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +LINE + 5 +462B4 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-146.3448464128086 + 20 +68.37811350227986 + 30 +0.0 + 11 +-146.3448464128086 + 21 +67.62811350227983 + 31 +0.0 + 0 +LINE + 5 +462B5 +330 +46273 +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +-147.3448464128085 + 20 +68.37811350227977 + 30 +0.0 + 11 +-147.3448464128085 + 21 +67.62811350227977 + 31 +0.0 + 0 +HATCH + 5 +462B6 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + 30 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-134.5848464128085 + 20 +59.3781135022798 + 40 +0.3 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-136.7098464128088 + 20 +54.62811350227986 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR +1001 +ACAD +1010 +0.0 +1020 +0.0 +1030 +0.0 + 0 +ENDBLK + 5 +46275 +330 +46273 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +46627 +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D149 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D149 + 1 + + 0 +LINE + 5 +4686F +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.9300000000007 + 20 +111.8164582119086 + 30 +0.0 + 11 +124.9300000000007 + 21 +167.8778699177497 + 31 +0.0 + 0 +LINE + 5 +46870 +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-53.06999999999936 + 20 +69.51903908404617 + 30 +0.0 + 11 +-53.06999999999937 + 21 +167.8778699177497 + 31 +0.0 + 0 +LINE + 5 +46871 +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +123.1800000000007 + 20 +167.5778699177497 + 30 +0.0 + 11 +41.08416666666716 + 21 +167.5778699177497 + 31 +0.0 + 0 +LINE + 5 +46872 +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.31999999999937 + 20 +167.5778699177497 + 30 +0.0 + 11 +26.77583333333382 + 21 +167.5778699177497 + 31 +0.0 + 0 +SOLID + 5 +46873 +330 +4661C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +123.1800000000007 + 20 +167.286203251083 + 30 +0.0 + 11 +123.1800000000007 + 21 +167.8695365844164 + 31 +0.0 + 12 +124.9300000000007 + 22 +167.5778699177497 + 32 +0.0 + 13 +124.9300000000007 + 23 +167.5778699177497 + 33 +0.0 + 0 +SOLID + 5 +46874 +330 +4661C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-51.31999999999937 + 20 +167.8695365844164 + 30 +0.0 + 11 +-51.31999999999937 + 21 +167.286203251083 + 31 +0.0 + 12 +-53.06999999999937 + 22 +167.5778699177497 + 32 +0.0 + 13 +-53.06999999999937 + 23 +167.5778699177497 + 33 +0.0 + 0 +MTEXT + 5 +46875 +330 +4661C +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +33.93000000000049 + 20 +167.5778699177497 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;178.00%%P0.11 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46876 +330 +4661C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.9300000000007 + 20 +111.8164582119086 + 30 +0.0 + 0 +POINT + 5 +46877 +330 +4661C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.06999999999936 + 20 +69.51903908404617 + 30 +0.0 + 0 +POINT + 5 +46878 +330 +4661C +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.06999999999937 + 20 +167.5778699177497 + 30 +0.0 + 0 +ENDBLK + 5 +46628 +330 +4661C +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +4669B +330 +46692 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D150 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D150 + 1 + + 0 +LINE + 5 +46879 +330 +46692 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-50.81959921307458 + 20 +70.60793591029197 + 30 +0.0 + 11 +-49.24431866222718 + 21 +71.37016368866398 + 31 +0.0 + 0 +LINE + 5 +4687A +330 +46692 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-61.84833018218924 + 20 +65.2714864122462 + 30 +0.0 + 11 +-55.32040078692423 + 21 +68.43014225780054 + 31 +0.0 + 0 +MTEXT + 5 +4687B +330 +46692 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +-69.07149159688831 + 20 +61.77643007133804 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +{\fSimSun|b0|i0|c134|p2;\C2;2-锣型孔\Ftxt.shx,gbcbig.shx|c134;\A1;%%c1.50} + 11 +0.9001603147699399 + 21 +0.4355587304982909 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +4687C +330 +46692 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-52.39487976392197 + 20 +69.84570813191996 + 30 +0.0 + 11 +-53.74512023607684 + 21 +69.19237003617255 + 31 +0.0 + 0 +SOLID + 5 +4687D +330 +46692 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-50.94663717613658 + 20 +70.87048266876654 + 30 +0.0 + 11 +-50.69256125001257 + 21 +70.3453891518174 + 31 +0.0 + 12 +-52.39487976392197 + 22 +69.84570813191996 + 32 +0.0 + 13 +-52.39487976392197 + 23 +69.84570813191996 + 33 +0.0 + 0 +SOLID + 5 +4687E +330 +46692 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-55.19336282386223 + 20 +68.16759549932597 + 30 +0.0 + 11 +-55.44743874998623 + 21 +68.69268901627511 + 31 +0.0 + 12 +-53.74512023607684 + 22 +69.19237003617255 + 32 +0.0 + 13 +-53.74512023607684 + 23 +69.19237003617255 + 33 +0.0 + 0 +POINT + 5 +4687F +330 +46692 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.74512023607684 + 20 +69.19237003617255 + 30 +0.0 + 0 +POINT + 5 +46880 +330 +46692 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-52.39487976392197 + 20 +69.84570813191996 + 30 +0.0 + 0 +ENDBLK + 5 +4669C +330 +46692 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +466A9 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D151 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D151 + 1 + + 0 +LINE + 5 +46881 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-53.06999999999936 + 20 +69.51903908404617 + 30 +0.0 + 11 +-53.06999999999936 + 21 +77.01407994120167 + 31 +0.0 + 0 +LINE + 5 +46882 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-56.56999999999941 + 20 +76.71407994120167 + 30 +0.0 + 11 +-56.56999999999941 + 21 +76.41407994120168 + 31 +0.0 + 0 +LINE + 5 +46883 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-58.31999999999941 + 20 +76.71407994120167 + 30 +0.0 + 11 +-62.04997868801119 + 21 +76.71407994120167 + 31 +0.0 + 0 +LINE + 5 +46884 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-53.06999999999936 + 20 +76.71407994120167 + 30 +0.0 + 11 +-56.56999999999941 + 21 +76.71407994120167 + 31 +0.0 + 0 +LINE + 5 +46885 +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.31999999999936 + 20 +76.71407994120167 + 30 +0.0 + 11 +-49.56999999999936 + 21 +76.71407994120167 + 31 +0.0 + 0 +SOLID + 5 +46886 +330 +4669D +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-51.31999999999936 + 20 +77.00574660786835 + 30 +0.0 + 11 +-51.31999999999936 + 21 +76.422413274535 + 31 +0.0 + 12 +-53.06999999999936 + 22 +76.71407994120167 + 32 +0.0 + 13 +-53.06999999999936 + 23 +76.71407994120167 + 33 +0.0 + 0 +SOLID + 5 +46887 +330 +4669D +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-58.31999999999941 + 20 +76.422413274535 + 30 +0.0 + 11 +-58.31999999999941 + 21 +77.00574660786835 + 31 +0.0 + 12 +-56.56999999999941 + 22 +76.71407994120167 + 32 +0.0 + 13 +-56.56999999999941 + 23 +76.71407994120167 + 33 +0.0 + 0 +MTEXT + 5 +46888 +330 +4669D +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +-68.18331202134452 + 20 +76.71407994120167 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;3.50%%p0.15 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46889 +330 +4669D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.06999999999936 + 20 +69.51903908404617 + 30 +0.0 + 0 +POINT + 5 +4688A +330 +4669D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-56.56999999999941 + 20 +76.71407994120167 + 30 +0.0 + 0 +POINT + 5 +4688B +330 +4669D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-56.56999999999941 + 20 +76.71407994120167 + 30 +0.0 + 0 +ENDBLK + 5 +466AA +330 +4669D +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +466DE +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D152 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D152 + 1 + + 0 +LINE + 5 +4688C +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-53.06999999999953 + 20 +69.5190390840462 + 30 +0.0 + 11 +-79.66019948269755 + 21 +69.5190390840462 + 31 +0.0 + 0 +LINE + 5 +4688D +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +124.9300000000007 + 20 +111.8164582119086 + 30 +0.0 + 11 +-79.66019948269755 + 21 +111.8164582119086 + 31 +0.0 + 0 +LINE + 5 +4688E +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-79.36019948269755 + 20 +71.2690390840462 + 30 +0.0 + 11 +-79.36019948269755 + 21 +83.80524864797744 + 31 +0.0 + 0 +LINE + 5 +4688F +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-79.36019948269755 + 20 +110.0664582119086 + 30 +0.0 + 11 +-79.36019948269755 + 21 +97.53024864797743 + 31 +0.0 + 0 +SOLID + 5 +46890 +330 +466D3 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-79.65186614936422 + 20 +71.2690390840462 + 30 +0.0 + 11 +-79.06853281603088 + 21 +71.2690390840462 + 31 +0.0 + 12 +-79.36019948269755 + 22 +69.5190390840462 + 32 +0.0 + 13 +-79.36019948269755 + 23 +69.5190390840462 + 33 +0.0 + 0 +SOLID + 5 +46891 +330 +466D3 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 1 + 48 +5.0 +370 + -1 +100 +AcDbTrace + 10 +-79.06853281603088 + 20 +110.0664582119086 + 30 +0.0 + 11 +-79.65186614936422 + 21 +110.0664582119086 + 31 +0.0 + 12 +-79.36019948269755 + 22 +111.8164582119086 + 32 +0.0 + 13 +-79.36019948269755 + 23 +111.8164582119086 + 33 +0.0 + 0 +MTEXT + 5 +46892 +330 +466D3 +100 +AcDbEntity + 8 +0 +347 +0 + 62 + 2 + 48 +5.0 +370 + -1 +100 +AcDbMText + 10 +-79.36019948269755 + 20 +90.66774864797742 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;42.30%%p0.10 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +46893 +330 +466D3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-53.06999999999953 + 20 +69.5190390840462 + 30 +0.0 + 0 +POINT + 5 +46894 +330 +466D3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +124.9300000000007 + 20 +111.8164582119086 + 30 +0.0 + 0 +POINT + 5 +46895 +330 +466D3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-79.36019948269755 + 20 +111.8164582119086 + 30 +0.0 + 0 +ENDBLK + 5 +466DF +330 +466D3 +100 +AcDbEntity + 8 +0 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +467C3 +330 +467B7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D153 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D153 + 1 + + 0 +LINE + 5 +467B8 +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8000000000017451 + 20 +10.99999999999997 + 30 +0.0 + 11 +-0.8000000000017453 + 21 +8.00707855610558 + 31 +0.0 + 0 +LINE + 5 +467B9 +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-3.799999999999841 + 20 +10.99999999999997 + 30 +0.0 + 11 +-3.799999999999841 + 21 +8.00707855610558 + 31 +0.0 + 0 +LINE + 5 +467BA +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.9499999999982548 + 20 +8.30707855610558 + 30 +0.0 + 11 +2.699999999998255 + 21 +8.30707855610558 + 31 +0.0 + 0 +LINE + 5 +467BB +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-5.549999999999841 + 20 +8.30707855610558 + 30 +0.0 + 11 +-7.299999999999841 + 21 +8.30707855610558 + 31 +0.0 + 0 +LINE + 5 +467BC +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8000000000017452 + 20 +8.30707855610558 + 30 +0.0 + 11 +-3.799999999999841 + 21 +8.30707855610558 + 31 +0.0 + 0 +SOLID + 5 +467BD +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +0.9499999999982548 + 20 +8.598745222772246 + 30 +0.0 + 11 +0.9499999999982548 + 21 +8.015411889438914 + 31 +0.0 + 12 +-0.8000000000017452 + 22 +8.30707855610558 + 32 +0.0 + 13 +-0.8000000000017452 + 23 +8.30707855610558 + 33 +0.0 + 0 +SOLID + 5 +467BE +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-5.549999999999841 + 20 +8.598745222772246 + 30 +0.0 + 11 +-5.549999999999841 + 21 +8.015411889438914 + 31 +0.0 + 12 +-3.799999999999841 + 22 +8.30707855610558 + 32 +0.0 + 13 +-3.799999999999841 + 23 +8.30707855610558 + 33 +0.0 + 0 +MTEXT + 5 +467BF +330 +467B7 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-13.43333333333317 + 20 +8.30707855610558 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;{\Ftxt.shx|c1;3.00%%p0.30} + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +467C0 +330 +467B7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-0.8000000000017451 + 20 +10.99999999999997 + 30 +0.0 + 0 +POINT + 5 +467C1 +330 +467B7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-3.799999999999841 + 20 +10.99999999999997 + 30 +0.0 + 0 +POINT + 5 +467C2 +330 +467B7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-3.799999999999841 + 20 +8.30707855610558 + 30 +0.0 + 0 +ENDBLK + 5 +467C4 +330 +467B7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +467D0 +330 +467C5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D154 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D154 + 1 + + 0 +LINE + 5 +467C6 +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-20.00008577599117 + 21 +0.0000000000000057 + 31 +0.0 + 0 +LINE + 5 +467C7 +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-0.8000000000017451 + 20 +10.99999999999997 + 30 +0.0 + 11 +-20.00008577599117 + 21 +10.99999999999998 + 31 +0.0 + 0 +LINE + 5 +467C8 +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.70008577599117 + 20 +9.249999999999977 + 30 +0.0 + 11 +-19.70008577599117 + 21 +1.750000000000006 + 31 +0.0 + 0 +LINE + 5 +467C9 +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.70008577599117 + 20 +0.0000000000000056 + 30 +0.0 + 11 +-19.70008577599117 + 21 +-1.750000000000024 + 31 +0.0 + 0 +SOLID + 5 +467CA +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-19.99175244265783 + 20 +9.249999999999977 + 30 +0.0 + 11 +-19.4084191093245 + 21 +9.249999999999977 + 31 +0.0 + 12 +-19.70008577599117 + 22 +10.99999999999998 + 32 +0.0 + 13 +-19.70008577599117 + 23 +10.99999999999998 + 33 +0.0 + 0 +SOLID + 5 +467CB +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-19.99175244265784 + 20 +1.750000000000006 + 30 +0.0 + 11 +-19.4084191093245 + 21 +1.750000000000005 + 31 +0.0 + 12 +-19.70008577599117 + 22 +0.0000000000000056 + 32 +0.0 + 13 +-19.70008577599117 + 23 +0.0000000000000056 + 33 +0.0 + 0 +MTEXT + 5 +467CC +330 +467C5 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-19.70008577599117 + 20 +-8.175000000000026 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;{\Ftxt.shx|c0;11.00%%p0.30} + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +467CD +330 +467C5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +467CE +330 +467C5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-0.8000000000017451 + 20 +10.99999999999997 + 30 +0.0 + 0 +POINT + 5 +467CF +330 +467C5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-19.70008577599117 + 20 +10.99999999999998 + 30 +0.0 + 0 +ENDBLK + 5 +467D1 +330 +467C5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +467DD +330 +467D2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D155 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D155 + 1 + + 0 +LINE + 5 +467D3 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +147.4000000000001 + 20 +0.0 + 30 +0.0 + 11 +163.6184373834098 + 21 +-0.0000000000000046 + 31 +0.0 + 0 +LINE + 5 +467D4 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +148.2000000000021 + 20 +48.5 + 30 +0.0 + 11 +163.6184373834098 + 21 +48.5 + 31 +0.0 + 0 +LINE + 5 +467D5 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +163.3184373834098 + 20 +1.749999999999996 + 30 +0.0 + 11 +163.3184373834098 + 21 +17.09583333333333 + 31 +0.0 + 0 +LINE + 5 +467D6 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +163.3184373834098 + 20 +46.75 + 30 +0.0 + 11 +163.3184373834098 + 21 +31.40416666666666 + 31 +0.0 + 0 +SOLID + 5 +467D7 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +163.0267707167431 + 20 +1.749999999999996 + 30 +0.0 + 11 +163.6101040500764 + 21 +1.749999999999995 + 31 +0.0 + 12 +163.3184373834098 + 22 +-0.0000000000000045 + 32 +0.0 + 13 +163.3184373834098 + 23 +-0.0000000000000045 + 33 +0.0 + 0 +SOLID + 5 +467D8 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +163.0267707167431 + 20 +46.75 + 30 +0.0 + 11 +163.6101040500764 + 21 +46.75 + 31 +0.0 + 12 +163.3184373834098 + 22 +48.5 + 32 +0.0 + 13 +163.3184373834098 + 23 +48.5 + 33 +0.0 + 0 +MTEXT + 5 +467D9 +330 +467D2 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +163.3184373834098 + 20 +24.25000000000002 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;{\Ftxt.shx|c0;48.50%%p0.30} + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +467DA +330 +467D2 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +147.4000000000001 + 20 +0.0 + 30 +0.0 + 0 +POINT + 5 +467DB +330 +467D2 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +148.2000000000021 + 20 +48.5 + 30 +0.0 + 0 +POINT + 5 +467DC +330 +467D2 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +163.3184373834098 + 20 +48.5 + 30 +0.0 + 0 +ENDBLK + 5 +467DE +330 +467D2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +467EB +330 +467DF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D156 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D156 + 1 + + 0 +LINE + 5 +467E0 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +148.2000000000021 + 20 +48.5 + 30 +0.0 + 11 +148.2000000000021 + 21 +51.60834336316263 + 31 +0.0 + 0 +LINE + 5 +467E1 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +151.2000000000002 + 20 +48.5 + 30 +0.0 + 11 +151.2000000000002 + 21 +51.60834336316263 + 31 +0.0 + 0 +LINE + 5 +467E2 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +146.4500000000021 + 20 +51.30834336316263 + 30 +0.0 + 11 +144.7000000000021 + 21 +51.30834336316263 + 31 +0.0 + 0 +LINE + 5 +467E3 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +152.9500000000002 + 20 +51.30834336316263 + 30 +0.0 + 11 +154.7000000000002 + 21 +51.30834336316263 + 31 +0.0 + 0 +LINE + 5 +467E4 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +148.2000000000021 + 20 +51.30834336316263 + 30 +0.0 + 11 +151.2000000000002 + 21 +51.30834336316263 + 31 +0.0 + 0 +SOLID + 5 +467E5 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +146.4500000000021 + 20 +51.6000100298293 + 30 +0.0 + 11 +146.4500000000021 + 21 +51.01667669649597 + 31 +0.0 + 12 +148.2000000000021 + 22 +51.30834336316263 + 32 +0.0 + 13 +148.2000000000021 + 23 +51.30834336316263 + 33 +0.0 + 0 +SOLID + 5 +467E6 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +152.9500000000002 + 20 +51.6000100298293 + 30 +0.0 + 11 +152.9500000000002 + 21 +51.01667669649597 + 31 +0.0 + 12 +151.2000000000002 + 22 +51.30834336316263 + 32 +0.0 + 13 +151.2000000000002 + 23 +51.30834336316263 + 33 +0.0 + 0 +MTEXT + 5 +467E7 +330 +467DF +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +160.8333333333335 + 20 +51.30834336316263 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;{\Ftxt.shx|c1;3.00%%p0.30} + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +467E8 +330 +467DF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +148.2000000000021 + 20 +48.5 + 30 +0.0 + 0 +POINT + 5 +467E9 +330 +467DF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +151.2000000000002 + 20 +48.5 + 30 +0.0 + 0 +POINT + 5 +467EA +330 +467DF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +151.2000000000002 + 20 +51.30834336316263 + 30 +0.0 + 0 +ENDBLK + 5 +467EC +330 +467DF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +467F8 +330 +467ED +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D157 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D157 + 1 + + 0 +LINE + 5 +467EE +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.0 + 20 +64.30645821191436 + 30 +0.0 + 11 +-243.0246130302245 + 21 +64.30645821191436 + 31 +0.0 + 0 +LINE + 5 +467EF +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.0000000000001 + 20 +171.3064582119144 + 30 +0.0 + 11 +-243.0246130302245 + 21 +171.3064582119144 + 31 +0.0 + 0 +LINE + 5 +467F0 +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-242.7246130302245 + 20 +66.05645821191436 + 30 +0.0 + 11 +-242.7246130302245 + 21 +110.4022915452477 + 31 +0.0 + 0 +LINE + 5 +467F1 +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-242.7246130302245 + 20 +169.5564582119144 + 30 +0.0 + 11 +-242.7246130302245 + 21 +124.710624878581 + 31 +0.0 + 0 +SOLID + 5 +467F2 +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-243.0162796968912 + 20 +66.05645821191436 + 30 +0.0 + 11 +-242.4329463635578 + 21 +66.05645821191436 + 31 +0.0 + 12 +-242.7246130302245 + 22 +64.30645821191436 + 32 +0.0 + 13 +-242.7246130302245 + 23 +64.30645821191436 + 33 +0.0 + 0 +SOLID + 5 +467F3 +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-243.0162796968912 + 20 +169.5564582119144 + 30 +0.0 + 11 +-242.4329463635578 + 21 +169.5564582119144 + 31 +0.0 + 12 +-242.7246130302245 + 22 +171.3064582119144 + 32 +0.0 + 13 +-242.7246130302245 + 23 +171.3064582119144 + 33 +0.0 + 0 +MTEXT + 5 +467F4 +330 +467ED +100 +AcDbEntity + 8 +0 + 6 +CENTER2 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-242.7246130302245 + 20 +117.5564582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;107.00%%p0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +467F5 +330 +467ED +100 +AcDbEntity + 8 +DEFPOINTS + 6 +CENTER2 + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-230.0 + 20 +64.30645821191436 + 30 +0.0 + 0 +POINT + 5 +467F6 +330 +467ED +100 +AcDbEntity + 8 +DEFPOINTS + 6 +CENTER2 + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-230.0000000000001 + 20 +171.3064582119144 + 30 +0.0 + 0 +POINT + 5 +467F7 +330 +467ED +100 +AcDbEntity + 8 +DEFPOINTS + 6 +CENTER2 + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-242.7246130302245 + 20 +171.3064582119144 + 30 +0.0 + 0 +ENDBLK + 5 +467F9 +330 +467ED +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 5 +19A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_INFO + 10 +289.0253894472404 + 20 +70.76773749452383 + 30 +0.0 + 0 +ATTRIB + 5 +19B +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +216.2673869347651 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMWIDTH + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19C +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +232.7910288444278 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMHEIGHT + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19D +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +251.6751919063559 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-218,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS2 + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19E +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +271.0314579674988 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-327,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS3 + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19F +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +269.8511958523183 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSECONDLINE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A0 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +215.4478006522287 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMTHIRDLINE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A1 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +234.6794439193824 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +PDMUPDATE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A2 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +251.4391388677005 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS + 70 + 1 +280 + 0 + 0 +SEQEND + 5 +1A3 +330 +19A +100 +AcDbEntity + 8 +0 +370 + -1 + 0 +INSERT + 5 +20F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_TITLE + 10 +-127.9256000000007 + 20 +227.2824839072241 + 30 +0.0 + 41 +1.1616 + 42 +1.1616 + 43 +1.1616 + 50 +180.0 + 0 +ATTRIB + 5 +211 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-29.49707976500135 + 20 +195.8291800745207 + 30 +0.0 + 40 +3.410806080000001 + 1 +拼版图 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-36.04582743860135 + 21 +195.8291800745207 + 31 +0.0 +100 +AcDbAttribute + 2 +名称 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +212 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-52.12314714067764 + 20 +208.2218419858094 + 30 +0.0 + 40 +3.410806080000001 + 1 +E341R-A2-E + 50 +180.0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +规格 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +213 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-107.2950411350842 + 20 +208.2218419858094 + 30 +0.0 + 40 +2.85 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-107.2950411350842 + 21 +208.2218419858094 + 31 +0.0 +100 +AcDbAttribute + 2 +图号 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +214 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-122.6135234526795 + 20 +208.2218674948892 + 30 +0.0 + 40 +3.410806080000001 + 1 +A + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-123.7049813982795 + 21 +208.2218674948892 + 31 +0.0 +100 +AcDbAttribute + 2 +版本 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +215 +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +169.7115858226925 + 20 +0.7747347930408353 + 30 +0.0 + 40 +3.484800000000001 + 1 +CME341-B5BF-E + 50 +180.0 + 7 +STYLE1 +100 +AcDbAttribute + 2 +模块型号: + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +216 +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-59.54115314816681 + 20 +213.7504697644721 + 30 +0.0 + 40 +2.323200000000001 + 1 +王俊逸 20200106 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +出图人 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +217 +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-97.61591075717101 + 20 +213.7504697644721 + 30 +0.0 + 40 +2.323200000000001 + 1 +王俊逸 20200106 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +设计人 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +218 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-59.54115314816681 + 20 +219.579627215948 + 30 +0.0 + 40 +2.323200000000001 + 1 +陈华亮 20200106 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +校对人 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +219 +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-97.61591075717101 + 20 +219.579627215948 + 30 +0.0 + 40 +2.323200000000001 + 1 +刘铁楠 20200106 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +批准人 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21A +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-116.1136917394439 + 20 +225.1586629407253 + 30 +0.0 + 40 +1.88574144 + 1 + + 50 +180.0 + 7 +STYLE1 +100 +AcDbAttribute + 2 +分页号 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21B +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +36.25560108898603 + 20 +220.7024530317717 + 30 +0.0 + 40 +2.25 + 1 +A + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +35.53560108898603 + 21 +220.7024530317717 + 31 +0.0 +100 +AcDbAttribute + 2 +NO1 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21C +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +17.36786550954487 + 20 +219.9290729013031 + 30 +0.0 + 40 +2.25 + 1 +初始版本 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +11.60786550954487 + 21 +219.9290729013031 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT1 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21D +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-12.92995881903259 + 20 +219.9246371782475 + 30 +0.0 + 40 +2.25 + 1 +20200106 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-18.6899588190326 + 21 +219.9246371782475 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE1 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21E +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +35.35218207580064 + 20 +214.8944530317718 + 30 +0.0 + 40 +2.25 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +35.35218207580064 + 21 +214.8944530317718 + 31 +0.0 +100 +AcDbAttribute + 2 +NO2 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +21F +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +11.66526112109821 + 20 +213.802219459084 + 30 +0.0 + 40 +2.25 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +11.66526112109821 + 21 +213.802219459084 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT2 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +220 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-18.6496989451668 + 20 +213.7100693369686 + 30 +0.0 + 40 +2.25 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-18.6496989451668 + 21 +213.7100693369686 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE2 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +221 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +35.6128803873101 + 20 +209.0092497600276 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +35.6128803873101 + 21 +209.0092497600276 + 31 +0.0 +100 +AcDbAttribute + 2 +NO3 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +222 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +11.59359658682116 + 20 +207.8767155605981 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +11.59359658682116 + 21 +207.8767155605981 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT3 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +223 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-18.6496989451668 + 20 +208.0938951770243 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-18.6496989451668 + 21 +208.0938951770243 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE3 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +224 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +35.45907108905681 + 20 +203.3060315205344 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +35.45907108905681 + 21 +203.3060315205344 + 31 +0.0 +100 +AcDbAttribute + 2 +NO4 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +225 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +11.59359658682116 + 20 +202.2888042228611 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +11.59359658682116 + 21 +202.2888042228611 + 31 +0.0 +100 +AcDbAttribute + 2 +CONTENT4 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +226 +330 +20F +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-18.50603095276304 + 20 +202.4426728400324 + 30 +0.0 + 40 +2.323200000000001 + 1 + + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-18.50603095276304 + 21 +202.4426728400324 + 31 +0.0 +100 +AcDbAttribute + 2 +DATE4 + 70 + 0 +280 + 0 + 0 +SEQEND + 5 +210 +330 +20F +100 +AcDbEntity + 8 +0 +370 + -1 + 0 +INSERT + 5 +2A3 +330 +1F +100 +AcDbEntity + 8 +BOM +370 + -1 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_BOM + 10 +-1.256055140631304 + 20 +190.111283907224 + 30 +0.0 + 41 +1.1616 + 42 +1.1616 + 43 +1.1616 + 50 +180.0 + 0 +ATTRIB + 5 +2A5 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-3.542683698878051 + 20 +187.5660663588506 + 30 +0.0 + 40 +2.090880000000001 + 1 +NO. + 50 +180.0 + 72 + 4 + 11 +-5.633563698878049 + 21 +186.5206263588506 + 31 +0.0 +100 +AcDbAttribute + 2 +序号 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +2A6 +330 +2A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-13.2183810355333 + 20 +187.4311964043171 + 30 +0.0 + 40 +2.090880000000001 + 1 +NAME + 50 +180.0 +100 +AcDbAttribute + 2 +名称 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +2A7 +330 +2A3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-40.32813951479896 + 20 +187.6193166783497 + 30 +0.0 + 40 +2.090880000000001 + 1 +QTY + 50 +180.0 + 72 + 1 + 11 +-43.11597951479897 + 21 +187.6193166783497 + 31 +0.0 +100 +AcDbAttribute + 2 +数量 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +2A8 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-50.74511762205441 + 20 +187.6439576856692 + 30 +0.0 + 40 +2.090880000000001 + 1 +Part No. + 50 +180.0 + 41 +0.7 +100 +AcDbAttribute + 2 +规格 + 70 + 0 +280 + 0 + 0 +ATTRIB + 5 +2A9 +330 +2A3 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-102.2177865494967 + 20 +187.8583777092626 + 30 +0.0 + 40 +2.090880000000001 + 1 +VENDER + 50 +180.0 + 41 +0.5 +100 +AcDbAttribute + 2 +BOM描述 + 70 + 0 +280 + 0 + 0 +SEQEND + 5 +2A4 +330 +2A3 +100 +AcDbEntity + 8 +BOM +370 + -1 + 0 +INSERT + 5 +1907 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +tolerance + 10 +51.95934801109141 + 20 +99.7726630192707 + 30 +0.0 + 41 +1.1616 + 42 +1.1616 + 43 +1.1616 + 50 +180.0 + 0 +INSERT + 5 +2093F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C4A4D7E8D + 10 +-127.9256000000007 + 20 +-5.037516092775888 + 30 +0.0 + 41 +1.875 + 42 +1.875 + 43 +1.875 + 50 +180.0 + 0 +INSERT + 5 +23227 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C138073A3 + 10 +199.6455999999994 + 20 +227.2824839072241 + 30 +0.0 + 41 +1.17711225940414 + 42 +1.17711225940414 + 43 +1.177112259404135 + 50 +180.0 + 0 +INSERT + 5 +24093 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +ARROW MARK + 10 +2.857035801831529 + 20 +115.5212362220183 + 30 +0.0 + 41 +1.2 + 42 +1.2 + 43 +1.2 + 50 +180.0 + 0 +INSERT + 5 +29849 +330 +1F +100 +AcDbEntity + 8 +PAD +370 + -1 +100 +AcDbBlockReference + 2 +A$C4B9F04D9-2 + 10 +-415.9579742084517 + 20 +177.9848610408463 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +29B52 +330 +1F +100 +AcDbEntity + 8 +PAD +370 + -1 +100 +AcDbBlockReference + 2 +A$C4B9F04D9-2 + 10 +-301.0836791121864 + 20 +170.2680143601991 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +29F9D +330 +1F +100 +AcDbEntity + 8 +PAD +370 + -1 +100 +AcDbBlockReference + 2 +A$C4B9F04D9-2 + 10 +-362.0405111195576 + 20 +135.7319339439479 + 30 +0.0 + 50 +180.0 + 0 +MTEXT + 5 +2D5CB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +142.2453725902948 + 20 +207.3790812397727 + 30 +0.0 + 40 +3.329999999999988 + 41 +273.0169655389631 + 46 +0.0 + 71 + 4 + 72 + 5 + 3 +{\fArial|b0|i0|c0|p34;\H0.7027x; NOTE\P1.Both of front and bottom sides need markpoint.\P Add the arrow marks on front & bottom side.\P\C6;\P\C2;2.The dimensions in yellow rectangle can be ignored in manufacture.\P + 1 +\P\C1;3. \C2; \C1;Silkscreen mark(white),diameter %%c2.0mm.\C256;\P \C1;applied on the same side as the \C3;QR code area\C256;(Silkscreen Block)\C1;.} + 11 +-1.0 + 21 +1.224606353822377E-16 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +2D5CC +102 +{ACAD_REACTORS +330 +2D5CD +102 +} +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +136.9640803571304 + 20 +217.9027530641157 + 30 +0.0 + 40 +1.799999999999993 + 0 +HATCH + 5 +2D5CD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +136.9640803571304 + 20 +217.9027530641157 + 40 +1.799999999999993 + 50 +180.0 + 51 +540.0 + 73 + 1 + 97 + 1 +330 +2D5CC + 75 + 0 + 76 + 1 + 98 + 1 + 10 +34.35642685173971 + 20 +38.07799641560322 +450 + 0 +451 + 0 +460 +0.0 +461 +0.0 +452 + 1 +462 +1.0 +453 + 2 +463 +0.0 + 63 + 5 +421 + 255 +463 +1.0 + 63 + 7 +421 + 16777215 +470 +LINEAR + 0 +INSERT + 5 +45A8A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +69.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A8B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +69.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A8C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +69.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A8D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +69.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A8E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A8F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A90 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A91 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A92 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A93 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222635 + 20 +69.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A94 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +78.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A95 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +78.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A96 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +78.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A97 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +78.75345074952003 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A98 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A99 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9C +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9D +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222635 + 20 +78.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9E +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45A9F +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +87.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +87.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +87.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222635 + 20 +87.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AA9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +96.75345074952004 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AAF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +96.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +96.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222635 + 20 +96.75345074952006 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +105.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AB9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +105.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +105.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +105.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ABF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +114.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +114.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +114.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +114.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AC9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +123.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +123.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +123.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ACF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +123.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD4 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +132.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +132.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD8 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +132.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AD9 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +132.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADA +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADB +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADC +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADD +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADE +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45ADF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AE0 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +141.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AE1 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +141.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AE2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +141.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AE3 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +141.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45AFF +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +296.7832665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B00 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +279.8232665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B01 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +262.8632665222635 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B02 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +245.9032665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B03 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +228.9432665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B04 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +211.9832665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B05 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +195.0232665222636 + 20 +150.75345074952 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B06 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +178.0632665222636 + 20 +150.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B07 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +161.1032665222636 + 20 +150.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45B08 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +236656 + 10 +144.1432665222636 + 20 +150.7534507495201 + 30 +0.0 + 50 +180.0 + 0 +LWPOLYLINE + 5 +45B1B +330 +1F +100 +AcDbEntity + 8 +0 + 48 +5.0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-48.23999999999929 + 20 +152.3064582119084 + 10 +119.9600000000007 + 20 +152.3064582119084 + 42 +-0.414213562373095 + 10 +121.1600000000007 + 20 +151.1064582119084 + 10 +121.1600000000007 + 20 +44.50645821190841 + 42 +-0.414213562373095 + 10 +119.9600000000007 + 20 +43.30645821190842 + 10 +-48.23999999999931 + 20 +43.30645821190845 + 42 +-0.414213562373095 + 10 +-49.43999999999932 + 20 +44.50645821190844 + 10 +-49.43999999999929 + 20 +151.1064582119085 + 42 +-0.414213562373095 + 0 +CIRCLE + 5 +45BA5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +124.4300000000005 + 20 +42.80647478692748 + 30 +0.0 + 40 +1.6 + 0 +CIRCLE + 5 +45BA6 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +-52.56999999999918 + 20 +152.8064416368925 + 30 +0.0 + 40 +1.6 + 0 +LWPOLYLINE + 5 +45BA7 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +128.4300000000007 + 20 +41.80645821190842 + 42 +-0.414213562373095 + 10 +125.4300000000007 + 20 +38.80645821190842 + 10 +-53.5699999999993 + 20 +38.80645821190845 + 42 +-0.414213562373095 + 10 +-56.5699999999993 + 20 +41.80645821190845 + 10 +-56.56999999999929 + 20 +153.8064582119084 + 42 +-0.414213562373095 + 10 +-53.56999999999929 + 20 +156.8064582119084 + 10 +125.4300000000007 + 20 +156.8064582119084 + 42 +-0.414213562373095 + 10 +128.4300000000007 + 20 +153.8064582119084 + 0 +DIMENSION + 5 +45BCB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbDimension + 2 +*D126 + 10 +128.4300000000007 + 20 +20.67456408369332 + 30 +0.0 + 11 +31.59870882814579 + 21 +20.67456408369333 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.50 + 71 + 5 + 42 +185.0 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +1 +100 +AcDbAlignedDimension + 13 +-56.5699999999993 + 23 +41.80645821190845 + 33 +0.0 + 14 +128.4300000000007 + 24 +41.80645821190845 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45BCC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbDimension + 2 +*D127 + 10 +161.8942859376943 + 20 +156.8064582119084 + 30 +0.0 + 11 +161.8942859376943 + 21 +109.165860116426 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.50 + 71 + 5 + 42 +118.0 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +1 +100 +AcDbAlignedDimension + 13 +125.4300000000007 + 23 +38.80645821190842 + 33 +0.0 + 14 +125.4300000000007 + 24 +156.8064582119084 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension + 0 +INSERT + 5 +45E0B +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C01CC1A43 + 10 +35.93000000000072 + 20 +153.0526978757143 + 30 +0.0 + 50 +89.99999999999999 + 0 +INSERT + 5 +45E0C +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C019D3CDB + 10 +-48.70619083182474 + 20 +97.80645821190845 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45E0D +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C218D5DF8 + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45E0E +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C218D5DF8 + 10 +-53.06999999999918 + 20 +87.80645821190845 + 30 +0.0 + 50 +180.0 + 0 +CIRCLE + 5 +45E0F +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +124.9300000000004 + 20 +140.3064582119084 + 30 +0.0 + 40 +1.0 + 0 +INSERT + 5 +45E10 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C5B8B49D5 + 10 +124.4300000000005 + 20 +62.80645821190842 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +45E11 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockReference + 2 +A$C5B8B49D5 + 10 +-52.56999999999964 + 20 +107.8064582119114 + 30 +0.0 + 50 +-0.000000000000014 + 0 +DIMENSION + 5 +45E12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbDimension + 2 +*D133 + 10 +-52.56999999999965 + 20 +27.17572860804846 + 30 +0.0 + 11 +33.68000000000069 + 21 +27.17572860804844 + 31 +0.0 + 70 + 160 + 1 +{\Ftxt.shx|c0;<>%%p0.10} + 71 + 5 + 42 +177.0000000000001 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +1 +100 +AcDbAlignedDimension + 13 +124.4300000000005 + 23 +62.80645821190842 + 33 +0.0 + 14 +-52.56999999999964 + 24 +107.8064582119114 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E13 +330 +1F +100 +AcDbEntity + 8 +PCB +370 + -1 +100 +AcDbDimension + 2 +*D134 + 10 +138.3421178147193 + 20 +62.80645821190842 + 30 +0.0 + 11 +138.3421178147193 + 21 +85.3064582119099 + 31 +0.0 + 70 + 32 + 1 +{\Ftxt.shx|c1;<>%%p0.10} + 71 + 5 + 42 +45.00000000000298 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-52.56999999999964 + 23 +107.8064582119114 + 33 +0.0 + 14 +124.4300000000005 + 24 +62.80645821190842 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension + 0 +CIRCLE + 5 +45E14 +330 +1F +100 +AcDbEntity + 8 +dim + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +134.8685414499025 + 20 +80.66145605130674 + 30 +0.0 + 40 +1.868656694583201 + 0 +MTEXT + 5 +45E15 +330 +1F +100 +AcDbEntity + 8 +dim + 62 + 6 +370 + -1 +100 +AcDbMText + 10 +134.8685414499025 + 20 +80.66145605130674 + 30 +0.0 + 40 +1.5 + 41 +2.558937642170491 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\Ftxt.shx|c0;2} + 11 +-1.0 + 21 +1.224606353822377E-16 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +DIMENSION + 5 +45E16 +330 +1F +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D135 + 10 +128.4300000000007 + 20 +141.9993796557983 + 30 +0.0 + 11 +138.8966666666674 + 21 +141.9993796557983 + 31 +0.0 + 70 + 160 + 1 +{\Ftxt.shx|c1;<>%%p0.30} + 71 + 5 + 42 +3.500000000000284 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +124.9300000000004 + 23 +140.3064582119084 + 33 +0.0 + 14 +128.4300000000007 + 24 +143.1873378695507 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E17 +330 +1F +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D136 + 10 +147.5348071716452 + 20 +140.3064582119084 + 30 +0.0 + 11 +147.5348071716452 + 21 +130.9231248785751 + 31 +0.0 + 70 + 160 + 1 +{\Ftxt.shx|c0;<>%%p0.30} + 71 + 5 + 42 +12.49998342498103 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +124.4300000000005 + 23 +152.8064416368895 + 33 +0.0 + 14 +124.9300000000004 + 24 +140.3064582119084 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E18 +330 +1F +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D137 + 10 +-64.70639585155779 + 20 +87.80645821190845 + 30 +0.0 + 11 +-64.70639585155779 + 21 +122.8064582119053 + 31 +0.0 + 70 + 160 + 1 +{\Ftxt.shx|c0;<>%%p0.30} + 71 + 5 + 42 +64.99998342498401 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +-52.56999999999918 + 23 +152.8064416368925 + 33 +0.0 + 14 +-53.06999999999918 + 24 +87.80645821190845 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbDimension + 2 +*D138 + 10 +-52.56999999999917 + 20 +163.4209474236985 + 30 +0.0 + 11 +33.64803710428637 + 21 +163.4209474236985 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.11 + 71 + 5 + 42 +176.9999999999996 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +1 +100 +AcDbAlignedDimension + 13 +124.4300000000005 + 23 +152.8064416368895 + 33 +0.0 + 14 +-52.56999999999918 + 24 +152.8064416368925 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbDimension + 2 +*D139 + 10 +151.1141327247279 + 20 +42.80647478692747 + 30 +0.0 + 11 +151.1141327247279 + 21 +99.30645821190849 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.10 + 71 + 5 + 42 +109.999966849962 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +1 +100 +AcDbAlignedDimension + 13 +124.4300000000005 + 23 +152.8064416368895 + 33 +0.0 + 14 +124.4300000000005 + 24 +42.80647478692748 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension + 0 +DIMENSION + 5 +45E1B +330 +1F +100 +AcDbEntity + 8 +dim +370 + -1 +100 +AcDbDimension + 2 +*D140 + 10 +125.4300000000007 + 20 +153.8064582119084 + 30 +0.0 + 11 +137.6445594370783 + 21 +157.6981429058028 + 31 +0.0 + 70 + 36 + 1 +4-<> + 71 + 5 + 42 +2.99999999999997 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard$4 +100 +AcDbRadialDimension + 15 +127.8328735863442 + 25 +155.6026203783212 + 35 +0.0 + 40 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 288 +1070 + 1 +1002 +} + 0 +CIRCLE + 5 +45ED5 +330 +1F +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbCircle + 10 +124.4300000000005 + 20 +152.8064416368895 + 30 +0.0 + 40 +1.6 + 0 +INSERT + 5 +461DB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +46.2013774559918 + 20 +80.86462802191389 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461DC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +29.2413774559918 + 20 +80.86462802191389 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461DD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +12.28137745599182 + 20 +80.86462802191389 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461DE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-4.678622544008178 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461DF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-21.63862254400819 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461E0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-38.59862254400819 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461E1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-55.55862254400819 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461E2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-72.51862254400818 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461E3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-89.47862254400819 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +461E4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +esrfsaease45 + 10 +-106.4386225440082 + 20 +80.86462802191392 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-45.34484641280779 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-62.30484641280779 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-79.2648464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-96.22484641280779 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-113.1848464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-130.1448464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-147.1048464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462C9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-164.0648464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +INSERT + 5 +462CA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbBlockReference + 2 +efaserfsaerqa + 10 +-181.0248464128078 + 20 +112.1845717141883 + 30 +0.0 + 50 +180.0 + 0 +CIRCLE + 5 +46523 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbCircle + 10 +-53.06999999999936 + 20 +69.51903908404617 + 30 +0.0 + 40 +0.75 + 0 +CIRCLE + 5 +4652B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbCircle + 10 +124.9300000000007 + 20 +111.8164582119086 + 30 +0.0 + 40 +0.75 + 0 +CIRCLE + 5 +46619 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +32.01547557027581 + 20 +171.9898758988688 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +4661A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +32.80017239102102 + 20 +173.1610651835631 + 30 +0.0 + 40 +2.342378569388679 + 1 +6 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +32.05061124881664 + 21 +171.9898758988688 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +DIMENSION + 5 +4661B +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbDimension + 2 +*D149 + 10 +-53.06999999999937 + 20 +167.5778699177497 + 30 +0.0 + 11 +33.93000000000049 + 21 +167.5778699177497 + 31 +0.0 + 70 + 160 + 1 +<>%%P0.11 + 71 + 5 + 42 +178.0000000000001 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbAlignedDimension + 13 +124.9300000000007 + 23 +111.8164582119086 + 33 +0.0 + 14 +-53.06999999999936 + 24 +69.51903908404617 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 178 +1070 + 2 +1002 +} + 0 +CIRCLE + 5 +46659 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +22.43940704123133 + 20 +27.01603819670109 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +4665A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +23.22410386197654 + 20 +28.18722748139544 + 30 +0.0 + 40 +2.342378569388679 + 1 +1 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +22.47454271977216 + 21 +27.01603819670109 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +CIRCLE + 5 +46663 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +42.58403816004511 + 20 +36.38957887543089 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +46664 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +43.36873498079032 + 20 +37.56076816012524 + 30 +0.0 + 40 +2.342378569388679 + 1 +3 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +42.61917383858594 + 21 +36.38957887543089 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +CIRCLE + 5 +4666D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-90.42396163154493 + 20 +94.95271844917562 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +4666E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +-89.63926481079972 + 20 +96.12390773386996 + 30 +0.0 + 40 +2.342378569388679 + 1 +4 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-90.3888259530041 + 21 +94.95271844917562 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +DIMENSION + 5 +46690 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbDimension + 2 +*D150 + 10 +-52.39487976392197 + 20 +69.84570813191996 + 30 +0.0 + 11 +-69.07149159688831 + 21 +61.77643007133804 + 31 +0.0 + 70 + 163 + 1 +{\fSimSun|b0|i0|c134|p2;\C2;2-锣型孔\Ftxt.shx,gbcbig.shx|c134;<>} + 71 + 5 + 42 +1.499999999999951 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard$3 +100 +AcDbDiametricDimension + 15 +-53.74512023607684 + 25 +69.19237003617255 + 35 +0.0 + 40 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 44 +1040 +0.3 +1070 + 73 +1070 + 0 +1070 + 74 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 147 +1040 +0.3 +1070 + 178 +1070 + 2 +1070 + 179 +1070 + 0 +1002 +} + 0 +DIMENSION + 5 +46691 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbDimension + 2 +*D151 + 10 +-56.56999999999941 + 20 +76.71407994120167 + 30 +0.0 + 11 +-68.18331202134452 + 21 +76.71407994120167 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.15 + 71 + 5 + 42 +3.500000000000051 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +-53.06999999999936 + 23 +69.51903908404617 + 33 +0.0 + 14 +-56.56999999999941 + 24 +76.71407994120167 + 34 +0.0 + 50 +180.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 178 +1070 + 2 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +DIMENSION + 5 +466D2 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbDimension + 2 +*D152 + 10 +-79.36019948269755 + 20 +111.8164582119086 + 30 +0.0 + 11 +-79.36019948269755 + 21 +90.66774864797742 + 31 +0.0 + 70 + 160 + 1 +<>%%p0.10 + 71 + 5 + 42 +42.29741912786242 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +STANDARD$0 +100 +AcDbAlignedDimension + 13 +-53.06999999999953 + 23 +69.5190390840462 + 33 +0.0 + 14 +124.9300000000007 + 24 +111.8164582119086 + 34 +0.0 + 50 +-90.00000000000001 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 41 +1040 +1.75 +1070 + 42 +1040 +0.0 +1070 + 43 +1040 +1.0 +1070 + 44 +1040 +0.3 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +1.75 +1070 + 141 +1040 +0.0 +1070 + 146 +1040 +1.0 +1070 + 147 +1040 +0.3 +1070 + 178 +1070 + 2 +1070 + 179 +1070 + 0 +1070 + 289 +1070 + 3 +1070 + 341 +1005 +0 +1070 + 371 +1070 + -1 +1070 + 372 +1070 + -1 +1002 +} + 0 +CIRCLE + 5 +46710 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +-75.48208783555222 + 20 +93.6793953195517 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +46711 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +-74.69739101480701 + 20 +94.85058460424604 + 30 +0.0 + 40 +2.342378569388679 + 1 +5 + 50 +180.0 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-75.4469521570114 + 21 +93.6793953195517 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +LINE + 5 +468BB +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +151.3363983420351 + 30 +0.0 + 11 +108.3780000000008 + 21 +151.3363983420351 + 31 +0.0 + 0 +LINE + 5 +468BC +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +150.5863983420351 + 30 +0.0 + 11 +120.2650000000008 + 21 +150.5863983420351 + 31 +0.0 + 0 +LINE + 5 +468BD +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +143.2765023466294 + 30 +0.0 + 11 +108.3780000000008 + 21 +143.2765023466294 + 31 +0.0 + 0 +LINE + 5 +468BE +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +144.0265023466294 + 30 +0.0 + 11 +120.2650000000007 + 21 +144.0265023466294 + 31 +0.0 + 0 +LINE + 5 +468E3 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +142.3363983420351 + 30 +0.0 + 11 +108.3780000000008 + 21 +142.3363983420351 + 31 +0.0 + 0 +LINE + 5 +468E4 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +141.5863983420351 + 30 +0.0 + 11 +120.2650000000008 + 21 +141.5863983420351 + 31 +0.0 + 0 +LINE + 5 +468E5 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +134.2765023466294 + 30 +0.0 + 11 +108.3780000000008 + 21 +134.2765023466294 + 31 +0.0 + 0 +LINE + 5 +468E6 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +135.0265023466294 + 30 +0.0 + 11 +120.2650000000007 + 21 +135.0265023466294 + 31 +0.0 + 0 +LINE + 5 +4690B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +133.3363983420351 + 30 +0.0 + 11 +108.3780000000008 + 21 +133.3363983420351 + 31 +0.0 + 0 +LINE + 5 +4690C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +132.5863983420351 + 30 +0.0 + 11 +120.2650000000008 + 21 +132.5863983420351 + 31 +0.0 + 0 +LINE + 5 +4690D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +125.2765023466295 + 30 +0.0 + 11 +108.3780000000008 + 21 +125.2765023466295 + 31 +0.0 + 0 +LINE + 5 +4690E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +126.0265023466295 + 30 +0.0 + 11 +120.2650000000007 + 21 +126.0265023466295 + 31 +0.0 + 0 +LINE + 5 +46933 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +124.3363983420352 + 30 +0.0 + 11 +108.3780000000008 + 21 +124.3363983420352 + 31 +0.0 + 0 +LINE + 5 +46934 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +123.5863983420352 + 30 +0.0 + 11 +120.2650000000008 + 21 +123.5863983420352 + 31 +0.0 + 0 +LINE + 5 +46935 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +116.2765023466295 + 30 +0.0 + 11 +108.3780000000008 + 21 +116.2765023466295 + 31 +0.0 + 0 +LINE + 5 +46936 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +117.0265023466295 + 30 +0.0 + 11 +120.2650000000007 + 21 +117.0265023466295 + 31 +0.0 + 0 +LINE + 5 +4695B +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +115.3363983420352 + 30 +0.0 + 11 +108.3780000000008 + 21 +115.3363983420352 + 31 +0.0 + 0 +LINE + 5 +4695C +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +114.5863983420352 + 30 +0.0 + 11 +120.2650000000008 + 21 +114.5863983420352 + 31 +0.0 + 0 +LINE + 5 +4695D +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +104.0220000000008 + 20 +107.2765023466295 + 30 +0.0 + 11 +108.3780000000008 + 21 +107.2765023466295 + 31 +0.0 + 0 +LINE + 5 +4695E +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbLine + 10 +113.5550000000007 + 20 +108.0265023466295 + 30 +0.0 + 11 +120.2650000000007 + 21 +108.0265023466295 + 31 +0.0 + 0 +CIRCLE + 5 +46A83 +330 +1F +100 +AcDbEntity + 8 +图层2 + 62 + 3 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +106.186094893072 + 20 +151.8261748079301 + 30 +0.0 + 40 +0.2 + 0 +CIRCLE + 5 +46A84 +330 +1F +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +106.186094893072 + 20 +151.8261748079301 + 30 +0.0 + 40 +0.2 + 0 +CIRCLE + 5 +46A85 +330 +1F +100 +AcDbEntity + 8 +图层2 + 48 +5.0 +370 + -1 +100 +AcDbCircle + 10 +106.1974116917339 + 20 +124.8247275198521 + 30 +0.0 + 40 +0.2 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +73 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +72 + 3 +ACAD_MLEADERSTYLE +350 +13E37 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +13E15 + 3 +ACAD_TABLESTYLE +350 +86 + 3 +ACAD_VISUALSTYLE +350 +13E01 + 3 +ACDB_RECOMPOSE_DATA +350 +1AAE8 + 3 +AcDbVariableDictionary +350 +66 + 3 +AEC_PROPERTY_SET_DEFS +350 +1A12B + 3 +ASE_INDEX_DICTIONARY +350 +13FDD + 0 +DICTIONARY + 5 +B0 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERFILTERS +360 +126F + 3 +ACAD_LAYERSTATES +360 +B1 + 0 +DICTIONARY + 5 +14018 +330 +10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14019 + 0 +DICTIONARY + 5 +1401A +330 +AE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +1401B + 0 +DICTIONARY + 5 +14020 +330 +9522 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14021 + 0 +DICTIONARY + 5 +28E84 +330 +28E83 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +28E85 + 0 +DICTIONARY + 5 +2E1C0 +330 +2E1BF +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +2E1C1 + 0 +DICTIONARY + 5 +2E1C3 +330 +2E1C2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +2E1C4 + 0 +DICTIONARY + 5 +2E1C6 +330 +2E1C5 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +2E1C7 + 0 +DICTIONARY + 5 +36D86 +330 +36D85 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ASDK_XREC_ANNO_SCALE_INFO +360 +36D88 + 0 +DICTIONARY + 5 +36D8A +330 +36D89 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +44C25 +330 +44C24 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +227 +330 +1F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +295AB + 0 +DICTIONARY + 5 +418 +330 +1AD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45D39 + 0 +DICTIONARY + 5 +14AE8 +330 +18F3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +14AE9 + 0 +DICTIONARY + 5 +20928 +330 +20927 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +20929 + 0 +DICTIONARY + 5 +231FF +330 +231FE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +46739 + 0 +DICTIONARY + 5 +23216 +330 +23215 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +23217 + 0 +DICTIONARY + 5 +23798 +330 +23797 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2D5BE + 0 +DICTIONARY + 5 +24070 +330 +2406F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2408E + 0 +DICTIONARY + 5 +28E24 +330 +28E23 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +29B06 + 0 +DICTIONARY + 5 +2A97F +330 +2A972 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B441 + 0 +DICTIONARY + 5 +2A9B2 +330 +2A9A9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2BB18 + 0 +DICTIONARY + 5 +2AC3B +330 +2AC39 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2ACC6 + 0 +DICTIONARY + 5 +2AF08 +330 +2AF05 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B0B0 + 0 +DICTIONARY + 5 +2B44C +330 +2B443 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B59C + 0 +DICTIONARY + 5 +2BCA3 +330 +2BC9F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DAFF + 0 +DICTIONARY + 5 +2C0DB +330 +2C0D9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2C0DD + 0 +DICTIONARY + 5 +2C351 +330 +2C34D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2C352 + 0 +DICTIONARY + 5 +2C35B +330 +2C357 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB00 + 0 +DICTIONARY + 5 +2C464 +330 +2C461 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB01 + 0 +DICTIONARY + 5 +2C8A8 +330 +2C897 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB02 + 0 +DICTIONARY + 5 +2C8ED +330 +2C8DA +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB03 + 0 +DICTIONARY + 5 +2C9C1 +330 +2C9BA +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB04 + 0 +DICTIONARY + 5 +2CA62 +330 +2CA52 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2CA64 + 0 +DICTIONARY + 5 +2CB31 +330 +2CB2E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2CB32 + 0 +DICTIONARY + 5 +2CB4A +330 +2CB47 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3681C + 0 +DICTIONARY + 5 +2CB7B +330 +2CB79 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2CB7D + 0 +DICTIONARY + 5 +2CC56 +330 +2CC51 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DB06 + 0 +DICTIONARY + 5 +2CDB9 +330 +2CDB4 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2CDC9 + 0 +DICTIONARY + 5 +2D040 +330 +2D03E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2DAFE + 0 +DICTIONARY + 5 +2D359 +330 +2D358 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2D440 + 0 +DICTIONARY + 5 +2D5BD +330 +2D5BB +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2D5BF + 0 +DICTIONARY + 5 +2E011 +330 +2E010 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2EB63 + 0 +DICTIONARY + 5 +2E0B2 +330 +2E0B1 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2EB66 + 0 +DICTIONARY + 5 +2E0F1 +330 +2E0F0 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2EB64 + 0 +DICTIONARY + 5 +2E118 +330 +2E117 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2EB65 + 0 +DICTIONARY + 5 +2E33C +330 +2E317 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2E6DD + 0 +DICTIONARY + 5 +2E67A +330 +2E678 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2E680 + 0 +DICTIONARY + 5 +2E804 +330 +2E7E7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2E809 + 0 +DICTIONARY + 5 +2EB62 +330 +2EB45 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2EB67 + 0 +DICTIONARY + 5 +2F196 +330 +2F181 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2F197 + 0 +DICTIONARY + 5 +2F1C4 +330 +2F1B0 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3165A + 0 +DICTIONARY + 5 +2F2CB +330 +2F2B8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3165B + 0 +DICTIONARY + 5 +30627 +330 +30615 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +30628 + 0 +DICTIONARY + 5 +3064F +330 +30642 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3165D + 0 +DICTIONARY + 5 +3065C +330 +30655 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +306BE + 0 +DICTIONARY + 5 +3069B +330 +30686 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3165E + 0 +DICTIONARY + 5 +306AF +330 +306AC +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +306BC + 0 +DICTIONARY + 5 +307E0 +330 +307D3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3165F + 0 +DICTIONARY + 5 +3080E +330 +30807 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31660 + 0 +DICTIONARY + 5 +30951 +330 +3094A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31661 + 0 +DICTIONARY + 5 +30FA0 +330 +30F9F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +30FA1 + 0 +DICTIONARY + 5 +310E3 +330 +310E2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +310E4 + 0 +DICTIONARY + 5 +31153 +330 +31152 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31154 + 0 +DICTIONARY + 5 +3119B +330 +31191 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3681A + 0 +DICTIONARY + 5 +31D20 +330 +31D13 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31D21 + 0 +DICTIONARY + 5 +31D8B +330 +31D6A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31D8C + 0 +DICTIONARY + 5 +31DB6 +330 +31DB3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31E45 + 0 +DICTIONARY + 5 +31DC3 +330 +31DBC +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31FA8 + 0 +DICTIONARY + 5 +31DD8 +330 +31DC9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31F99 + 0 +DICTIONARY + 5 +31EAB +330 +31EA9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31EAD + 0 +DICTIONARY + 5 +31EE0 +330 +31ED1 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31F6D + 0 +DICTIONARY + 5 +31EEF +330 +31EE8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31FB7 + 0 +DICTIONARY + 5 +31EF9 +330 +31EF7 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +31EFB + 0 +DICTIONARY + 5 +33172 +330 +3315D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +33173 + 0 +DICTIONARY + 5 +33534 +330 +334BA +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +33592 + 0 +DICTIONARY + 5 +33716 +330 +33701 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +362CA + 0 +DICTIONARY + 5 +33799 +330 +3378A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3681D + 0 +DICTIONARY + 5 +33810 +330 +3380D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +34B0F + 0 +DICTIONARY + 5 +33840 +330 +3383D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +35179 + 0 +DICTIONARY + 5 +3384E +330 +3384C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3681B + 0 +DICTIONARY + 5 +33BD6 +330 +33BD4 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +33BD7 + 0 +DICTIONARY + 5 +353A2 +330 +350A3 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3595B + 0 +DICTIONARY + 5 +3543D +330 +3543A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +35440 + 0 +DICTIONARY + 5 +35F61 +330 +35F5E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +35F62 + 0 +DICTIONARY + 5 +36305 +330 +36304 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +36306 + 0 +DICTIONARY + 5 +368FE +330 +36591 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +443D4 + 0 +DICTIONARY + 5 +36819 +330 +36816 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3681E + 0 +DICTIONARY + 5 +36884 +330 +3686F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44478 + 0 +DICTIONARY + 5 +36A23 +330 +36A1A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44F71 + 0 +DICTIONARY + 5 +36B32 +330 +36B1D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +36B33 + 0 +DICTIONARY + 5 +36BA4 +330 +36B8F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +36BA5 + 0 +DICTIONARY + 5 +36BC3 +330 +36BC2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45E05 + 0 +DICTIONARY + 5 +36BC9 +330 +36BC8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +4528B + 0 +DICTIONARY + 5 +36BF9 +330 +36BF8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +36BFA + 0 +DICTIONARY + 5 +36CB6 +330 +36CB5 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45E06 + 0 +DICTIONARY + 5 +36CBD +330 +36CBC +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +36CBE + 0 +DICTIONARY + 5 +443A7 +330 +443A4 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +443A8 + 0 +DICTIONARY + 5 +44484 +330 +443FD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44F70 + 0 +DICTIONARY + 5 +44B57 +330 +4456E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44F6D + 0 +DICTIONARY + 5 +44AC6 +330 +445CD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44F6E + 0 +DICTIONARY + 5 +44750 +330 +4461A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44F6F + 0 +DICTIONARY + 5 +44A55 +330 +44A51 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +44A59 + 0 +DICTIONARY + 5 +44C10 +330 +44C0F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45138 + 0 +DICTIONARY + 5 +44CAC +330 +44CAB +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +455F3 + 0 +DICTIONARY + 5 +4510D +330 +4510B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +4512D + 0 +DICTIONARY + 5 +455F2 +330 +45576 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +458CA + 0 +DICTIONARY + 5 +45FB3 +330 +45A46 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +463D5 + 0 +DICTIONARY + 5 +45CBD +330 +45CBC +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45CBE + 0 +DICTIONARY + 5 +45D5B +330 +45D56 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45D5C + 0 +DICTIONARY + 5 +45D7C +330 +45D7B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45D7D + 0 +DICTIONARY + 5 +45D82 +330 +45D81 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45D83 + 0 +DICTIONARY + 5 +45EFF +330 +45EFE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45F00 + 0 +DICTIONARY + 5 +45F2B +330 +45F2A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45F2C + 0 +DICTIONARY + 5 +45F33 +330 +45F32 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45F34 + 0 +DICTIONARY + 5 +45FEE +330 +45FE8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +45FEF + 0 +DICTIONARY + 5 +4634F +330 +4618D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +46350 + 0 +DICTIONARY + 5 +4645A +330 +46273 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +4645B + 0 +DICTIONARY + 5 +36BFD +330 +36BFC +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +AcDbContextDataManager +360 +36BFE + 0 +DICTIONARY + 5 +36C01 +330 +36C00 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +AcDbContextDataManager +360 +36C02 + 0 +DICTIONARY + 5 +73 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +59 + 3 +布局2 +350 +5E + 0 +DICTIONARY + 5 +72 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +13DF9 + 3 +ByLayer +350 +13DF1 + 3 +Global +350 +A192 + 0 +DICTIONARY + 5 +13E37 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +13E38 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +13E15 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +13E16 + 3 +A1 +350 +13E17 + 3 +A2 +350 +13E18 + 3 +A3 +350 +13E19 + 3 +A4 +350 +13E1A + 3 +A5 +350 +13E1B + 3 +A6 +350 +13E1C + 3 +A7 +350 +13E1D + 3 +A8 +350 +13E1E + 3 +A9 +350 +13E1F + 3 +B0 +350 +13E20 + 3 +B1 +350 +13E21 + 3 +B2 +350 +13E22 + 3 +B3 +350 +13E23 + 3 +B4 +350 +13E24 + 3 +B5 +350 +13E25 + 3 +B6 +350 +13E26 + 3 +B7 +350 +13E27 + 3 +B8 +350 +13E28 + 3 +B9 +350 +13E29 + 3 +C0 +350 +13E2A + 3 +C1 +350 +13E2B + 3 +C2 +350 +13E2C + 3 +C3 +350 +13E2D + 3 +C4 +350 +13E2E + 3 +C5 +350 +13E2F + 3 +C6 +350 +13E30 + 3 +C7 +350 +13E31 + 3 +C8 +350 +13E32 + 3 +C9 +350 +13E33 + 3 +D0 +350 +13E34 + 3 +D1 +350 +13E35 + 3 +D2 +350 +13E36 + 0 +DICTIONARY + 5 +86 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +87 + 0 +DICTIONARY + 5 +13E01 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +13E07 + 3 +3D Hidden +350 +13E09 + 3 +3dWireframe +350 +13E08 + 3 +Basic +350 +13E06 + 3 +Brighten +350 +13E0D + 3 +ColorChange +350 +13E11 + 3 +Conceptual +350 +13E0A + 3 +Dim +350 +13E0C + 3 +EdgeColorOff +350 +13E14 + 3 +Facepattern +350 +13E10 + 3 +Flat +350 +13E02 + 3 +FlatWithEdges +350 +13E03 + 3 +Gouraud +350 +13E04 + 3 +GouraudWithEdges +350 +13E05 + 3 +JitterOff +350 +13E12 + 3 +Linepattern +350 +13E0F + 3 +OverhangOff +350 +13E13 + 3 +Realistic +350 +13E0B + 3 +Thicken +350 +13E0E + 0 +XRECORD + 5 +1AAE8 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 + 90 + 1 +330 +87 + 0 +DICTIONARY + 5 +66 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +1405F + 3 +CMLEADERSTYLE +350 +1405E + 3 +CTABLESTYLE +350 +8B + 3 +DIMASSOC +350 +67 + 3 +HIDETEXT +350 +6B + 3 +PROJECTNAME +350 +42E + 0 +DICTIONARY + 5 +1A12B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +13FDD +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ASEBlockHierarchyIndexRecord +350 +13FDE +1001 +DCO15 +1040 +1734450996.817 + 0 +DICTIONARY + 5 +126F +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +B1 +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +14019 +102 +{ACAD_REACTORS +330 +14018 +102 +} +330 +14018 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +1401B +102 +{ACAD_REACTORS +330 +1401A +102 +} +330 +1401A +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +14021 +102 +{ACAD_REACTORS +330 +14020 +102 +} +330 +14020 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +28E85 +102 +{ACAD_REACTORS +330 +28E84 +102 +} +330 +28E84 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +2E1C1 +102 +{ACAD_REACTORS +330 +2E1C0 +102 +} +330 +2E1C0 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +2E1C4 +102 +{ACAD_REACTORS +330 +2E1C3 +102 +} +330 +2E1C3 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +2E1C7 +102 +{ACAD_REACTORS +330 +2E1C6 +102 +} +330 +2E1C6 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +36D88 +102 +{ACAD_REACTORS +330 +36D86 +102 +} +330 +36D86 +100 +AcDbXrecord +280 + 1 + 70 + 1 +340 +0 +340 +10 + 70 + -1 + 0 +SORTENTSTABLE + 5 +295AB +102 +{ACAD_REACTORS +330 +227 +102 +} +330 +227 +100 +AcDbSortentsTable +330 +1F +331 +19A + 5 +1A133 +331 +20F + 5 +1EE4C +331 +2A3 + 5 +1EE4D +331 +1907 + 5 +1EE4E +331 +2093F + 5 +2D321 +331 +23227 + 5 +2D322 +331 +24093 + 5 +2D323 +331 +29849 + 5 +2D324 +331 +29B52 + 5 +2D326 +331 +29F9D + 5 +2D327 +331 +2D5CB + 5 +2DB35 +331 +2D5CC + 5 +2DB36 +331 +2D5CD + 5 +2DB37 + 0 +SORTENTSTABLE + 5 +45D39 +102 +{ACAD_REACTORS +330 +418 +102 +} +330 +418 +100 +AcDbSortentsTable +330 +1AD + 0 +SORTENTSTABLE + 5 +14AE9 +102 +{ACAD_REACTORS +330 +14AE8 +102 +} +330 +14AE8 +100 +AcDbSortentsTable +330 +18F3 + 0 +SORTENTSTABLE + 5 +20929 +102 +{ACAD_REACTORS +330 +20928 +102 +} +330 +20928 +100 +AcDbSortentsTable +330 +20927 + 0 +SORTENTSTABLE + 5 +46739 +102 +{ACAD_REACTORS +330 +231FF +102 +} +330 +231FF +100 +AcDbSortentsTable +330 +231FE + 0 +SORTENTSTABLE + 5 +23217 +102 +{ACAD_REACTORS +330 +23216 +102 +} +330 +23216 +100 +AcDbSortentsTable +330 +23215 + 0 +SORTENTSTABLE + 5 +2D5BE +102 +{ACAD_REACTORS +330 +23798 +102 +} +330 +23798 +100 +AcDbSortentsTable +330 +23797 + 0 +SORTENTSTABLE + 5 +2408E +102 +{ACAD_REACTORS +330 +24070 +102 +} +330 +24070 +100 +AcDbSortentsTable +330 +2406F + 0 +SORTENTSTABLE + 5 +29B06 +102 +{ACAD_REACTORS +330 +28E24 +102 +} +330 +28E24 +100 +AcDbSortentsTable +330 +28E23 + 0 +SORTENTSTABLE + 5 +2B441 +102 +{ACAD_REACTORS +330 +2A97F +102 +} +330 +2A97F +100 +AcDbSortentsTable +330 +2A972 + 0 +SORTENTSTABLE + 5 +2BB18 +102 +{ACAD_REACTORS +330 +2A9B2 +102 +} +330 +2A9B2 +100 +AcDbSortentsTable +330 +2A9A9 + 0 +SORTENTSTABLE + 5 +2ACC6 +102 +{ACAD_REACTORS +330 +2AC3B +102 +} +330 +2AC3B +100 +AcDbSortentsTable +330 +2AC39 + 0 +SORTENTSTABLE + 5 +2B0B0 +102 +{ACAD_REACTORS +330 +2AF08 +102 +} +330 +2AF08 +100 +AcDbSortentsTable +330 +2AF05 + 0 +SORTENTSTABLE + 5 +2B59C +102 +{ACAD_REACTORS +330 +2B44C +102 +} +330 +2B44C +100 +AcDbSortentsTable +330 +2B443 + 0 +SORTENTSTABLE + 5 +2DAFF +102 +{ACAD_REACTORS +330 +2BCA3 +102 +} +330 +2BCA3 +100 +AcDbSortentsTable +330 +2BC9F + 0 +SORTENTSTABLE + 5 +2C0DD +102 +{ACAD_REACTORS +330 +2C0DB +102 +} +330 +2C0DB +100 +AcDbSortentsTable +330 +2C0D9 + 0 +SORTENTSTABLE + 5 +2C352 +102 +{ACAD_REACTORS +330 +2C351 +102 +} +330 +2C351 +100 +AcDbSortentsTable +330 +2C34D + 0 +SORTENTSTABLE + 5 +2DB00 +102 +{ACAD_REACTORS +330 +2C35B +102 +} +330 +2C35B +100 +AcDbSortentsTable +330 +2C357 + 0 +SORTENTSTABLE + 5 +2DB01 +102 +{ACAD_REACTORS +330 +2C464 +102 +} +330 +2C464 +100 +AcDbSortentsTable +330 +2C461 + 0 +SORTENTSTABLE + 5 +2DB02 +102 +{ACAD_REACTORS +330 +2C8A8 +102 +} +330 +2C8A8 +100 +AcDbSortentsTable +330 +2C897 + 0 +SORTENTSTABLE + 5 +2DB03 +102 +{ACAD_REACTORS +330 +2C8ED +102 +} +330 +2C8ED +100 +AcDbSortentsTable +330 +2C8DA + 0 +SORTENTSTABLE + 5 +2DB04 +102 +{ACAD_REACTORS +330 +2C9C1 +102 +} +330 +2C9C1 +100 +AcDbSortentsTable +330 +2C9BA + 0 +SORTENTSTABLE + 5 +2CA64 +102 +{ACAD_REACTORS +330 +2CA62 +102 +} +330 +2CA62 +100 +AcDbSortentsTable +330 +2CA52 + 0 +SORTENTSTABLE + 5 +2CB32 +102 +{ACAD_REACTORS +330 +2CB31 +102 +} +330 +2CB31 +100 +AcDbSortentsTable +330 +2CB2E + 0 +SORTENTSTABLE + 5 +3681C +102 +{ACAD_REACTORS +330 +2CB4A +102 +} +330 +2CB4A +100 +AcDbSortentsTable +330 +2CB47 + 0 +SORTENTSTABLE + 5 +2CB7D +102 +{ACAD_REACTORS +330 +2CB7B +102 +} +330 +2CB7B +100 +AcDbSortentsTable +330 +2CB79 + 0 +SORTENTSTABLE + 5 +2DB06 +102 +{ACAD_REACTORS +330 +2CC56 +102 +} +330 +2CC56 +100 +AcDbSortentsTable +330 +2CC51 + 0 +SORTENTSTABLE + 5 +2CDC9 +102 +{ACAD_REACTORS +330 +2CDB9 +102 +} +330 +2CDB9 +100 +AcDbSortentsTable +330 +2CDB4 + 0 +SORTENTSTABLE + 5 +2DAFE +102 +{ACAD_REACTORS +330 +2D040 +102 +} +330 +2D040 +100 +AcDbSortentsTable +330 +2D03E + 0 +SORTENTSTABLE + 5 +2D440 +102 +{ACAD_REACTORS +330 +2D359 +102 +} +330 +2D359 +100 +AcDbSortentsTable +330 +2D358 + 0 +SORTENTSTABLE + 5 +2D5BF +102 +{ACAD_REACTORS +330 +2D5BD +102 +} +330 +2D5BD +100 +AcDbSortentsTable +330 +2D5BB + 0 +SORTENTSTABLE + 5 +2EB63 +102 +{ACAD_REACTORS +330 +2E011 +102 +} +330 +2E011 +100 +AcDbSortentsTable +330 +2E010 + 0 +SORTENTSTABLE + 5 +2EB66 +102 +{ACAD_REACTORS +330 +2E0B2 +102 +} +330 +2E0B2 +100 +AcDbSortentsTable +330 +2E0B1 + 0 +SORTENTSTABLE + 5 +2EB64 +102 +{ACAD_REACTORS +330 +2E0F1 +102 +} +330 +2E0F1 +100 +AcDbSortentsTable +330 +2E0F0 + 0 +SORTENTSTABLE + 5 +2EB65 +102 +{ACAD_REACTORS +330 +2E118 +102 +} +330 +2E118 +100 +AcDbSortentsTable +330 +2E117 + 0 +SORTENTSTABLE + 5 +2E6DD +102 +{ACAD_REACTORS +330 +2E33C +102 +} +330 +2E33C +100 +AcDbSortentsTable +330 +2E317 + 0 +SORTENTSTABLE + 5 +2E680 +102 +{ACAD_REACTORS +330 +2E67A +102 +} +330 +2E67A +100 +AcDbSortentsTable +330 +2E678 + 0 +SORTENTSTABLE + 5 +2E809 +102 +{ACAD_REACTORS +330 +2E804 +102 +} +330 +2E804 +100 +AcDbSortentsTable +330 +2E7E7 + 0 +SORTENTSTABLE + 5 +2EB67 +102 +{ACAD_REACTORS +330 +2EB62 +102 +} +330 +2EB62 +100 +AcDbSortentsTable +330 +2EB45 + 0 +SORTENTSTABLE + 5 +2F197 +102 +{ACAD_REACTORS +330 +2F196 +102 +} +330 +2F196 +100 +AcDbSortentsTable +330 +2F181 + 0 +SORTENTSTABLE + 5 +3165A +102 +{ACAD_REACTORS +330 +2F1C4 +102 +} +330 +2F1C4 +100 +AcDbSortentsTable +330 +2F1B0 + 0 +SORTENTSTABLE + 5 +3165B +102 +{ACAD_REACTORS +330 +2F2CB +102 +} +330 +2F2CB +100 +AcDbSortentsTable +330 +2F2B8 + 0 +SORTENTSTABLE + 5 +30628 +102 +{ACAD_REACTORS +330 +30627 +102 +} +330 +30627 +100 +AcDbSortentsTable +330 +30615 + 0 +SORTENTSTABLE + 5 +3165D +102 +{ACAD_REACTORS +330 +3064F +102 +} +330 +3064F +100 +AcDbSortentsTable +330 +30642 + 0 +SORTENTSTABLE + 5 +306BE +102 +{ACAD_REACTORS +330 +3065C +102 +} +330 +3065C +100 +AcDbSortentsTable +330 +30655 + 0 +SORTENTSTABLE + 5 +3165E +102 +{ACAD_REACTORS +330 +3069B +102 +} +330 +3069B +100 +AcDbSortentsTable +330 +30686 + 0 +SORTENTSTABLE + 5 +306BC +102 +{ACAD_REACTORS +330 +306AF +102 +} +330 +306AF +100 +AcDbSortentsTable +330 +306AC + 0 +SORTENTSTABLE + 5 +3165F +102 +{ACAD_REACTORS +330 +307E0 +102 +} +330 +307E0 +100 +AcDbSortentsTable +330 +307D3 + 0 +SORTENTSTABLE + 5 +31660 +102 +{ACAD_REACTORS +330 +3080E +102 +} +330 +3080E +100 +AcDbSortentsTable +330 +30807 + 0 +SORTENTSTABLE + 5 +31661 +102 +{ACAD_REACTORS +330 +30951 +102 +} +330 +30951 +100 +AcDbSortentsTable +330 +3094A + 0 +SORTENTSTABLE + 5 +30FA1 +102 +{ACAD_REACTORS +330 +30FA0 +102 +} +330 +30FA0 +100 +AcDbSortentsTable +330 +30F9F + 0 +SORTENTSTABLE + 5 +310E4 +102 +{ACAD_REACTORS +330 +310E3 +102 +} +330 +310E3 +100 +AcDbSortentsTable +330 +310E2 + 0 +SORTENTSTABLE + 5 +31154 +102 +{ACAD_REACTORS +330 +31153 +102 +} +330 +31153 +100 +AcDbSortentsTable +330 +31152 + 0 +SORTENTSTABLE + 5 +3681A +102 +{ACAD_REACTORS +330 +3119B +102 +} +330 +3119B +100 +AcDbSortentsTable +330 +31191 + 0 +SORTENTSTABLE + 5 +31D21 +102 +{ACAD_REACTORS +330 +31D20 +102 +} +330 +31D20 +100 +AcDbSortentsTable +330 +31D13 + 0 +SORTENTSTABLE + 5 +31D8C +102 +{ACAD_REACTORS +330 +31D8B +102 +} +330 +31D8B +100 +AcDbSortentsTable +330 +31D6A + 0 +SORTENTSTABLE + 5 +31E45 +102 +{ACAD_REACTORS +330 +31DB6 +102 +} +330 +31DB6 +100 +AcDbSortentsTable +330 +31DB3 + 0 +SORTENTSTABLE + 5 +31FA8 +102 +{ACAD_REACTORS +330 +31DC3 +102 +} +330 +31DC3 +100 +AcDbSortentsTable +330 +31DBC + 0 +SORTENTSTABLE + 5 +31F99 +102 +{ACAD_REACTORS +330 +31DD8 +102 +} +330 +31DD8 +100 +AcDbSortentsTable +330 +31DC9 + 0 +SORTENTSTABLE + 5 +31EAD +102 +{ACAD_REACTORS +330 +31EAB +102 +} +330 +31EAB +100 +AcDbSortentsTable +330 +31EA9 + 0 +SORTENTSTABLE + 5 +31F6D +102 +{ACAD_REACTORS +330 +31EE0 +102 +} +330 +31EE0 +100 +AcDbSortentsTable +330 +31ED1 + 0 +SORTENTSTABLE + 5 +31FB7 +102 +{ACAD_REACTORS +330 +31EEF +102 +} +330 +31EEF +100 +AcDbSortentsTable +330 +31EE8 + 0 +SORTENTSTABLE + 5 +31EFB +102 +{ACAD_REACTORS +330 +31EF9 +102 +} +330 +31EF9 +100 +AcDbSortentsTable +330 +31EF7 + 0 +SORTENTSTABLE + 5 +33173 +102 +{ACAD_REACTORS +330 +33172 +102 +} +330 +33172 +100 +AcDbSortentsTable +330 +3315D + 0 +SORTENTSTABLE + 5 +33592 +102 +{ACAD_REACTORS +330 +33534 +102 +} +330 +33534 +100 +AcDbSortentsTable +330 +334BA + 0 +SORTENTSTABLE + 5 +362CA +102 +{ACAD_REACTORS +330 +33716 +102 +} +330 +33716 +100 +AcDbSortentsTable +330 +33701 + 0 +SORTENTSTABLE + 5 +3681D +102 +{ACAD_REACTORS +330 +33799 +102 +} +330 +33799 +100 +AcDbSortentsTable +330 +3378A + 0 +SORTENTSTABLE + 5 +34B0F +102 +{ACAD_REACTORS +330 +33810 +102 +} +330 +33810 +100 +AcDbSortentsTable +330 +3380D + 0 +SORTENTSTABLE + 5 +35179 +102 +{ACAD_REACTORS +330 +33840 +102 +} +330 +33840 +100 +AcDbSortentsTable +330 +3383D + 0 +SORTENTSTABLE + 5 +3681B +102 +{ACAD_REACTORS +330 +3384E +102 +} +330 +3384E +100 +AcDbSortentsTable +330 +3384C + 0 +SORTENTSTABLE + 5 +33BD7 +102 +{ACAD_REACTORS +330 +33BD6 +102 +} +330 +33BD6 +100 +AcDbSortentsTable +330 +33BD4 + 0 +SORTENTSTABLE + 5 +3595B +102 +{ACAD_REACTORS +330 +353A2 +102 +} +330 +353A2 +100 +AcDbSortentsTable +330 +350A3 + 0 +SORTENTSTABLE + 5 +35440 +102 +{ACAD_REACTORS +330 +3543D +102 +} +330 +3543D +100 +AcDbSortentsTable +330 +3543A + 0 +SORTENTSTABLE + 5 +35F62 +102 +{ACAD_REACTORS +330 +35F61 +102 +} +330 +35F61 +100 +AcDbSortentsTable +330 +35F5E + 0 +SORTENTSTABLE + 5 +36306 +102 +{ACAD_REACTORS +330 +36305 +102 +} +330 +36305 +100 +AcDbSortentsTable +330 +36304 + 0 +SORTENTSTABLE + 5 +443D4 +102 +{ACAD_REACTORS +330 +368FE +102 +} +330 +368FE +100 +AcDbSortentsTable +330 +36591 + 0 +SORTENTSTABLE + 5 +3681E +102 +{ACAD_REACTORS +330 +36819 +102 +} +330 +36819 +100 +AcDbSortentsTable +330 +36816 + 0 +SORTENTSTABLE + 5 +44478 +102 +{ACAD_REACTORS +330 +36884 +102 +} +330 +36884 +100 +AcDbSortentsTable +330 +3686F + 0 +SORTENTSTABLE + 5 +44F71 +102 +{ACAD_REACTORS +330 +36A23 +102 +} +330 +36A23 +100 +AcDbSortentsTable +330 +36A1A + 0 +SORTENTSTABLE + 5 +36B33 +102 +{ACAD_REACTORS +330 +36B32 +102 +} +330 +36B32 +100 +AcDbSortentsTable +330 +36B1D + 0 +SORTENTSTABLE + 5 +36BA5 +102 +{ACAD_REACTORS +330 +36BA4 +102 +} +330 +36BA4 +100 +AcDbSortentsTable +330 +36B8F + 0 +SORTENTSTABLE + 5 +45E05 +102 +{ACAD_REACTORS +330 +36BC3 +102 +} +330 +36BC3 +100 +AcDbSortentsTable +330 +36BC2 + 0 +SORTENTSTABLE + 5 +4528B +102 +{ACAD_REACTORS +330 +36BC9 +102 +} +330 +36BC9 +100 +AcDbSortentsTable +330 +36BC8 + 0 +SORTENTSTABLE + 5 +36BFA +102 +{ACAD_REACTORS +330 +36BF9 +102 +} +330 +36BF9 +100 +AcDbSortentsTable +330 +36BF8 + 0 +SORTENTSTABLE + 5 +45E06 +102 +{ACAD_REACTORS +330 +36CB6 +102 +} +330 +36CB6 +100 +AcDbSortentsTable +330 +36CB5 + 0 +SORTENTSTABLE + 5 +36CBE +102 +{ACAD_REACTORS +330 +36CBD +102 +} +330 +36CBD +100 +AcDbSortentsTable +330 +36CBC + 0 +SORTENTSTABLE + 5 +443A8 +102 +{ACAD_REACTORS +330 +443A7 +102 +} +330 +443A7 +100 +AcDbSortentsTable +330 +443A4 + 0 +SORTENTSTABLE + 5 +44F70 +102 +{ACAD_REACTORS +330 +44484 +102 +} +330 +44484 +100 +AcDbSortentsTable +330 +443FD + 0 +SORTENTSTABLE + 5 +44F6D +102 +{ACAD_REACTORS +330 +44B57 +102 +} +330 +44B57 +100 +AcDbSortentsTable +330 +4456E + 0 +SORTENTSTABLE + 5 +44F6E +102 +{ACAD_REACTORS +330 +44AC6 +102 +} +330 +44AC6 +100 +AcDbSortentsTable +330 +445CD + 0 +SORTENTSTABLE + 5 +44F6F +102 +{ACAD_REACTORS +330 +44750 +102 +} +330 +44750 +100 +AcDbSortentsTable +330 +4461A + 0 +SORTENTSTABLE + 5 +44A59 +102 +{ACAD_REACTORS +330 +44A55 +102 +} +330 +44A55 +100 +AcDbSortentsTable +330 +44A51 + 0 +SORTENTSTABLE + 5 +45138 +102 +{ACAD_REACTORS +330 +44C10 +102 +} +330 +44C10 +100 +AcDbSortentsTable +330 +44C0F + 0 +SORTENTSTABLE + 5 +455F3 +102 +{ACAD_REACTORS +330 +44CAC +102 +} +330 +44CAC +100 +AcDbSortentsTable +330 +44CAB + 0 +SORTENTSTABLE + 5 +4512D +102 +{ACAD_REACTORS +330 +4510D +102 +} +330 +4510D +100 +AcDbSortentsTable +330 +4510B + 0 +SORTENTSTABLE + 5 +458CA +102 +{ACAD_REACTORS +330 +455F2 +102 +} +330 +455F2 +100 +AcDbSortentsTable +330 +45576 + 0 +SORTENTSTABLE + 5 +463D5 +102 +{ACAD_REACTORS +330 +45FB3 +102 +} +330 +45FB3 +100 +AcDbSortentsTable +330 +45A46 + 0 +SORTENTSTABLE + 5 +45CBE +102 +{ACAD_REACTORS +330 +45CBD +102 +} +330 +45CBD +100 +AcDbSortentsTable +330 +45CBC + 0 +SORTENTSTABLE + 5 +45D5C +102 +{ACAD_REACTORS +330 +45D5B +102 +} +330 +45D5B +100 +AcDbSortentsTable +330 +45D56 + 0 +SORTENTSTABLE + 5 +45D7D +102 +{ACAD_REACTORS +330 +45D7C +102 +} +330 +45D7C +100 +AcDbSortentsTable +330 +45D7B + 0 +SORTENTSTABLE + 5 +45D83 +102 +{ACAD_REACTORS +330 +45D82 +102 +} +330 +45D82 +100 +AcDbSortentsTable +330 +45D81 + 0 +SORTENTSTABLE + 5 +45F00 +102 +{ACAD_REACTORS +330 +45EFF +102 +} +330 +45EFF +100 +AcDbSortentsTable +330 +45EFE + 0 +SORTENTSTABLE + 5 +45F2C +102 +{ACAD_REACTORS +330 +45F2B +102 +} +330 +45F2B +100 +AcDbSortentsTable +330 +45F2A + 0 +SORTENTSTABLE + 5 +45F34 +102 +{ACAD_REACTORS +330 +45F33 +102 +} +330 +45F33 +100 +AcDbSortentsTable +330 +45F32 + 0 +SORTENTSTABLE + 5 +45FEF +102 +{ACAD_REACTORS +330 +45FEE +102 +} +330 +45FEE +100 +AcDbSortentsTable +330 +45FE8 + 0 +SORTENTSTABLE + 5 +46350 +102 +{ACAD_REACTORS +330 +4634F +102 +} +330 +4634F +100 +AcDbSortentsTable +330 +4618D + 0 +SORTENTSTABLE + 5 +4645B +102 +{ACAD_REACTORS +330 +4645A +102 +} +330 +4645A +100 +AcDbSortentsTable +330 +46273 + 0 +DICTIONARY + 5 +36BFE +102 +{ACAD_REACTORS +330 +36BFD +102 +} +330 +36BFD +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +36C02 +102 +{ACAD_REACTORS +330 +36C01 +102 +} +330 +36C01 +100 +AcDbDictionary +281 + 1 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +1402B +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +ANSI_A_(8.50_x_11.00_Inches) + 6 + + 40 +6.349999904632567 + 41 +19.04999923706055 + 42 +6.350006103515625 + 43 +19.04998779296875 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +2.584895464708373 + 70 + 11952 + 72 + 0 + 73 + 1 + 74 + 0 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.3868628397755418 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +467B6 + 0 +LAYOUT + 5 +59 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +58 + 0 +LAYOUT + 5 +5E +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 70 + 1 + 71 + 2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +5D + 0 +MATERIAL + 5 +13DF9 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +13DFA +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByBlock + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 + 94 + 127 + 0 +MATERIAL + 5 +13DF1 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +13DF2 +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByLayer + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 + 94 + 127 + 0 +MATERIAL + 5 +A192 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAED +102 +} +330 +72 +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLEADERSTYLE + 5 +13E38 +102 +{ACAD_REACTORS +330 +13E37 +102 +} +330 +13E37 +100 +AcDbMLeaderStyle +170 + 2 +171 + 1 +172 + 0 + 90 + 2 + 40 +0.0 + 41 +0.0 +173 + 1 + 91 +-1056964608 +340 +14 + 92 + -2 +290 + 1 + 42 +0.09 +291 + 1 + 43 +0.36 + 3 +Standard +341 +0 + 44 +0.18 +300 + +342 +11 +174 + 1 +178 + 6 +175 + 1 +176 + 0 + 93 +-1056964608 + 45 +0.18 +292 + 0 +297 + 0 + 46 +0.18 +343 +0 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +293 + 1 +141 +0.0 +294 + 1 +177 + 0 +142 +1.0 +295 + 0 +296 + 0 +143 +0.125 +1001 +ACAD_MLEADERVER +1070 + 2 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +13E16 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +13E17 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +13E18 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +13E19 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +13E1A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +13E1B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +13E1C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +13E1D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +13E1E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +13E1F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +13E20 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +13E21 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +13E22 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E23 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E24 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E25 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E26 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E27 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E28 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E29 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E30 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E31 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E32 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E33 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E34 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E35 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E36 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +87 +102 +{ACAD_REACTORS +330 +86 +102 +} +102 +{ACAD_XDICTIONARY +360 +1402D +102 +} +330 +86 +100 +AcDbTableStyle + 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 + 4 + 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 + 4 + 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 + 4 + 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 +1001 +ACAD +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE +1000 +AcRTDxfName +1000 +TABLESTYLE + 0 +VISUALSTYLE + 5 +13E07 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAFB +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E09 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAFF +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +179.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E08 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAFD +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E06 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAF9 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0D +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB07 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E11 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB0F +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 +421 + 8421504 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 8421504 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0A +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB01 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +179.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0C +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB05 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E14 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB15 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +EdgeColorOff + 70 + 22 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E10 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB0D +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E02 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAF1 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E03 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAF3 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E04 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAF5 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E05 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AAF7 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E12 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB11 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +JitterOff + 70 + 20 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 10 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0F +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB0B +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E13 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB13 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +OverhangOff + 70 + 21 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 9 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0B +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB03 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0E +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1AB09 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +1405F +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +1405E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +8B +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +67 +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +6B +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +42E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +XRECORD + 5 +13FDE +102 +{ACAD_REACTORS +330 +13FDD +102 +} +330 +13FDD +100 +AcDbXrecord +280 + 1 +330 +19A +330 +20F +330 +2A3 +330 +0 +330 +1907 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 + 0 +DICTIONARY + 5 +1402B +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYOUTTHUMBNAIL +360 +1402C + 0 +DICTIONARY + 5 +13DFA +330 +13DF9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +13DFC + 3 +DIFFUSETILE +360 +13DFB + 3 +OPACITYTILE +360 +13DFF + 3 +REFLECTIONTILE +360 +13DFE + 3 +REFRACTIONTILE +360 +13E00 + 3 +SPECULARTILE +360 +13DFD + 0 +DICTIONARY + 5 +13DF2 +330 +13DF1 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +13DF4 + 3 +DIFFUSETILE +360 +13DF3 + 3 +OPACITYTILE +360 +13DF7 + 3 +REFLECTIONTILE +360 +13DF6 + 3 +REFRACTIONTILE +360 +13DF8 + 3 +SPECULARTILE +360 +13DF5 + 0 +DICTIONARY + 5 +1AAED +330 +A192 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +1402D +330 +87 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_ROUNDTRIP_2008_TABLESTYLE_CELLSTYLEMAP +360 +1AAE7 + 0 +DICTIONARY + 5 +1AAFB +330 +13E07 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAFC + 0 +DICTIONARY + 5 +1AAFF +330 +13E09 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB00 + 0 +DICTIONARY + 5 +1AAFD +330 +13E08 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAFE + 0 +DICTIONARY + 5 +1AAF9 +330 +13E06 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAFA + 0 +DICTIONARY + 5 +1AB07 +330 +13E0D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB08 + 0 +DICTIONARY + 5 +1AB0F +330 +13E11 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB10 + 0 +DICTIONARY + 5 +1AB01 +330 +13E0A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB02 + 0 +DICTIONARY + 5 +1AB05 +330 +13E0C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB06 + 0 +DICTIONARY + 5 +1AB15 +330 +13E14 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB16 + 0 +DICTIONARY + 5 +1AB0D +330 +13E10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB0E + 0 +DICTIONARY + 5 +1AAF1 +330 +13E02 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAF2 + 0 +DICTIONARY + 5 +1AAF3 +330 +13E03 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAF4 + 0 +DICTIONARY + 5 +1AAF5 +330 +13E04 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAF6 + 0 +DICTIONARY + 5 +1AAF7 +330 +13E05 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AAF8 + 0 +DICTIONARY + 5 +1AB11 +330 +13E12 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB12 + 0 +DICTIONARY + 5 +1AB0B +330 +13E0F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB0C + 0 +DICTIONARY + 5 +1AB13 +330 +13E13 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB14 + 0 +DICTIONARY + 5 +1AB03 +330 +13E0B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB04 + 0 +DICTIONARY + 5 +1AB09 +330 +13E0E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1AB0A + 0 +XRECORD + 5 +1402C +102 +{ACAD_REACTORS +330 +1402B +102 +} +330 +1402B +100 +AcDbXrecord +280 + 1 +310 +280000000001000076000000010008000000000000760000000000000000000000010000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000330000006600000099000000CC000000FF00000000330000333300006633000099330000CC330000FF3300 +310 +0000660000336600006666000099660000CC660000FF66000000990000339900006699000099990000CC990000FF99000000CC000033CC000066CC000099CC0000CCCC0000FFCC000000FF000033FF000066FF000099FF0000CCFF0000FFFF000000003300330033006600330099003300CC003300FF003300003333003333 +310 +33006633330099333300CC333300FF33330000663300336633006666330099663300CC663300FF66330000993300339933006699330099993300CC993300FF99330000CC330033CC330066CC330099CC3300CCCC3300FFCC330000FF330033FF330066FF330099FF3300CCFF3300FFFF330000006600330066006600660099 +310 +006600CC006600FF00660000336600333366006633660099336600CC336600FF33660000666600336666006666660099666600CC666600FF66660000996600339966006699660099996600CC996600FF99660000CC660033CC660066CC660099CC6600CCCC6600FFCC660000FF660033FF660066FF660099FF6600CCFF6600 +310 +FFFF660000009900330099006600990099009900CC009900FF00990000339900333399006633990099339900CC339900FF33990000669900336699006666990099669900CC669900FF66990000999900339999006699990099999900CC999900FF99990000CC990033CC990066CC990099CC9900CCCC9900FFCC990000FF99 +310 +0033FF990066FF990099FF9900CCFF9900FFFF99000000CC003300CC006600CC009900CC00CC00CC00FF00CC000033CC003333CC006633CC009933CC00CC33CC00FF33CC000066CC003366CC006666CC009966CC00CC66CC00FF66CC000099CC003399CC006699CC009999CC00CC99CC00FF99CC0000CCCC0033CCCC0066CC +310 +CC0099CCCC00CCCCCC00FFCCCC0000FFCC0033FFCC0066FFCC0099FFCC00CCFFCC00FFFFCC000000FF003300FF006600FF009900FF00CC00FF00FF00FF000033FF003333FF006633FF009933FF00CC33FF00FF33FF000066FF003366FF006666FF009966FF00CC66FF00FF66FF000099FF003399FF006699FF009999FF00CC +310 +99FF00FF99FF0000CCFF0033CCFF0066CCFF0099CCFF00CCCCFF00FFCCFF0000FFFF0033FFFF0066FFFF0099FFFF00CCFFFF00FFFFFF00000000000D0D0D001A1A1A00282828003535350043434300505050005D5D5D006B6B6B00787878008686860093939300A1A1A100AEAEAE00BBBBBB00C9C9C900D6D6D600E4E4E400 +310 +F1F1F100FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2F5E2E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2F5F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2F5E2E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2F5F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5E2E2E2F5F5F5 +310 +F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2 +310 +E2E2E2E2E2E2F5E2E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5E2E2E2E2E2E2E2F5E2E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5E2E2E2E2E2F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5E2F5F5F5E2E2E2E2E2E2E2E2E2F5 +310 +F5F5F5E2E2E2E2E2E2E2F5E2E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2F5F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F52828282828282828282828F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2F5F5E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5E2F5F5F5F5E2E2F5F5F5F5F5F5F5F5F5E2E2E2E2E2F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5E2E2F5F5F5F5E2E2F5F5F5F5F5F5F5F5F5E2E2E2E2E2F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5BEBEF5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2F5F5E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5E2E2F5E2E2BEBEBEBEBEBEBEBEBEBEBEE2E2E2 +310 +E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2BEBEF5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2F5BEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5E2E2F5E2F5F5F5E2E2F5E2E2BEBEBEBEBEBEBEBEBEBEBEE2 +310 +E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2BEBEF5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E22828F5 +310 +E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F52828282828F5F5F5282828E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2BEBEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5F5F5F5F5F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5E2F5F5F5E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2 +310 +E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5 +310 +F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2 +310 +E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEE2E2F5E2BEBEBE +310 +BEBEBEBEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEE2E2F5E2BE +310 +BEBEBEBEBEBEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2F5E2E2E2E2F5E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5 +310 +E2BEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5 +310 +F5F5F5F5E2F5F5F5E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5F5F5F5F5F5E2E2E2E2E2E2E2 +310 +E2F5F5F5F5F5E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5F5F5F5F5F5E2E2E2E2E2 +310 +E2E2E2F5E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2D2D2D2D2D2D2D2D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DE2E2E2E2E2E2E2BEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEE2E2E2E2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DF52DF52DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F52DE2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2F52D2DF52DF52DF52DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E2E2E2BEE2BEE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DE22D2D2DF5BEBEBEBEF528282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +28282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828BEBEBEBEBEBEBEBEBEBEBEBEF5E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E22828E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5C3F5F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2BEE2BEBE2828E2E2E2E2E2E2E2E2E2E2BEBEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5C3 +310 +F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2BEBEBEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2BEBEBEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E228E2F5BEF52828282828282828E2E2E22828282828282828E2E2E228282828282828E2E2E22828282828282828E2E2E22828282828 +310 +2828E2C3E22828282828282828E2E2E228282828282828E2E2E22828282828282828E2E2E22828282828282828E2E22828282828282828E2BEBEBEE228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DF5BEBEBEBEBEF5F528282828BE28282828E2282828282828282828E2E228282828BE28282828E2E22828282828282828E2E228282828 +310 +BE28282828C3E2282828282828282828E228282828BE28282828E2E2282828282828282828E228282828BE28282828E2E228282828BE28282828BEF5BEBEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2F5F5E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828 +310 +E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828BEF5BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E2 +310 +2828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F528282828282828E22828F528282828F528E2E228F52828282828F528E2E228F528282828F528 +310 +E2E228F52828282828F528C3E228F528282828F52828E228282828282828F528E2E228F528282828282828E228282828282828F528E2E228F528282828282828BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F5E2E2BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2 +310 +F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F5E2E2BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BE +310 +E2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2BEF5BEE228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F5E2E2BEE2E22828E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5 +310 +E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E22828E2E2BEE2E2F528E2E228F5E2E2BEE2E22828E22828E2E2BEE2E2F528E2E228F5E2E2BEE2E22828BEDCF5BEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2282828282828BE2828E22828282828282828BEE2E2282828282828282828E2E2 +310 +28F5282828282828E2E2282828282828282828C3E2282828282828282828E2282828282828282828E2E2282828282828282828E2282828282828282828E2E2282828282828BE2828BEE2F5E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828 +310 +E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828BEE2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E228E2E2E2E22828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E2 +310 +2828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F52828E2E2BEE2E22828F5F5E2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DE22D2D2DF5BEBEBEBEBEBEBEBEBEBEBEF5BEBE282828F528BEBEBEBEBEBE28F5F52828BEBEBE +310 +BEBE2828F5F528BEBEBEBEBEBE28F5F5F528BEBEBEBEBE2828F5F528BEBEBEBEBEBE28F5F52828BEBEBEBEBE2828F5F528BEBEBEBEBEBE2828282828BEBEBEBEBEBE28F5F528BEBEBEBEBEBE2828F5BEBEBEBEBEBEBEF5E22DE22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DDCE2BEBEBEF5F5E22828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2 +310 +E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F52828E2E2BEE2E22828F5F5E2E228E2E2E22D2D2D2D2DE2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2BE28F5F5E2E22828E2E2BEE2E22828E2282828E2BEE2E2E228E2E228 +310 +28E2E2BEE2E22828E2E22828E2BEE2E2E228E2E22828E2E2BEE2E22828C3E2BE28E2E2BEE2E22828E22828BEE2BEE2E22828E2E2BE28E2E2BEE2E22828E2282828E2BEE2E22828E2E22828E2E2BEE2E22828E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBE28E2E2E2E228BE2828BE28282828E228BE2828BE28282828E2 +310 +E228BE2828BE28282828E2E228BE28BE28282828E2E228BE2828BE28282828C3E228BE2828BE28282828E228BE2828BE28282828E2E228BE2828BE28282828E228BE2828BE28282828E2E228BE2828BE28282828E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DE2E2E228E2E2E2E2282828282828282828E2E228282828282828 +310 +28E2E2282828282828282828E2E22828282828282828E2E2282828282828282828C3E22828282828282828E2E2282828282828282828E2E22828282828282828E2E2E22828282828282828E2E22828282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228282828BE28282828E228282828 +310 +2828282828E2E228282828BE28282828E2E22828282828282828E2E228282828BE28282828C3E22828282828282828E2E228282828BE28282828E2E2282828282828282828E228282828BE28282828E2E228282828BE28282828E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E22828E2E2BEE2E22828E22828 +310 +E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E22828E2E2BEE2E22828E2 +310 +2828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2E2E2E228E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E22828282828282828 +310 +28E2282828282828282828E2E2282828282828282828E2E22828282828282828E2E2282828282828282828C3E2282828282828282828E2282828282828282828E2E2282828282828282828E2282828282828282828E2E2282828282828282828E2E2E2E228E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2F5F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F5E2E2BEE2 +310 +E22828E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E22828E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E22828E2E2E2E228E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2 +310 +F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228F5E2E2 +310 +BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2F5F5E228E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2 +310 +E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2DE2E2E228E2E2E2E228F5 +310 +E2E2BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2F5F5E228E2E2E22D2D2D2DE2E2E22D2DE2E2E2E2E2E2E2E2 +310 +E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2DF5BEBEF5C3C3C3C3 +310 +282828282828BE2828C32828F52828282828BEC3C3282828282828282828C3C328F5282828282828C3C3282828282828282828F5C3282828282828282828C3282828282828282828C3C3282828282828282828C3282828282828282828C3C3282828282828BE2828C3C3C3C3F5BEBEBEF52D2D2DE2E2E22D2DE2E2E2E2E2E2 +310 +E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E228E2E2 +310 +E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2E228E2E2BEE2E22828E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2282828E22828E2E2BEE2E22828E2E228E2E2E2BEE2282828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2F5F5F528E2E2E22D2D2D2DE2E2E22D2DE2E2E2E2 +310 +E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDCDCDCDCDCE228 +310 +E2E2E2E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2E2F5F528E2E2E2E2E2E2E2E2E2E22D2DE2E2 +310 +E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DC2D2D2D2DF5BE +310 +BEBEBEBEBEBEBEBEBEBEF5BEBE2828F5F528BEBEBEBEBEBE28F5F52828BEBEBEBEBE2828F5F528BEBEBEBEBEBE28F5F5F528BEBEBEBEBE2828F5F528BEBEBEBEBEBE2828F52828BEBEBEBEBE2828F5F528BEBEBEBEBEBE2828F52828BEBEBEBEBE2828F5F52828BEBEBEBEBE2828F5BEBEBEBEBEBEBEF52D2D2D2DE2E22D2D +310 +E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DC2D2D2D2D +310 +2DDCE228E2E2E2E22828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F52828E2E2BEE2E22828F5F5E2E228E2E2E2E22D2D2D2DE2E2 +310 +2D2DE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDC +310 +DCDCDCDCE228E2E2E2E228BEE2E2BEE2E22828E228BEE2E2BEE2E2E228E2E228BEE2E2BEE2E22828E2E228BEE2BEE2E2E228E2E228BEE2E2BEE2E22828C3E228BEE2E2BEE2E22828E228BEE2E2BEE2E22828E2E228BEE2E2BEE2E22828E228BEE2E2BEE2E22828E2E228BEE2E2BEE2E22828E2E2E2E228E2E2E2E2E2E2E2E2 +310 +E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E228E2E2E2E228282828BE28282828E228282828BE28282828E2E228282828BE28282828E2E2282828BE28282828E2E228282828BE28282828C3E2BE282828BE28282828E22828BE28BE28282828E2E2BE282828BE28282828E228282828BE28282828E2E228282828BE28282828E2E2E2E228E2E2E2E2E2E2 +310 +E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E228E2E2E2E228282828BE28282828E228282828BE28282828E2E228282828BE28282828E2E2282828BE28282828E2E228282828BE28282828C3E228282828BE28282828E228282828BE28282828E2E228282828BE28282828E228282828BE28282828E2E228282828BE28282828E2E2E2E228E2E2E2E2 +310 +E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2 +310 +E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E228282828BE282828E2E2E22828282828282828E2E228282828BE28282828E2E22828282828282828E2E228282828BE28282828C3E22828282828282828E2E2E2282828BE28282828E2E22828282828282828E2E2E2282828BE28282828E2E228282828BE282828E2E2E2E2E228 +310 +E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E22D2D2D2D2DF5BEBEBEBEF5F5E228282828BE28282828E2282828282828282828E2E228282828BE28282828E2E22828282828282828E2E228282828BE28282828C3E2282828282828282828E228282828BE28282828E2E2282828282828282828E228282828BE28282828E2E228282828BE28282828E2E2E2 +310 +E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E228F5BEF5E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2 +310 +E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E22828E22828E2E2BEE2E22828E2E22828E2E2BEE2E228 +310 +28E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E228F528282828282828E2E228F528282828F528E2E228F52828282828F528E2E228F528282828F528E2E228F52828282828F528C3E228F528282828F528E2E228282828282828F528E2E228F528282828282828E228282828282828F528E2E228F528282828 +310 +282828E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E228F5E2E2BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5E2E2 +310 +BEE2E228E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E228F5E2E2BEE2E228E2E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F528E2E2E228E2E2BEE2E2F528E2E228F5E2E2BEE2E228E2E2E228E2E2BEE2E2F528E2E228F5 +310 +E2E2BEE2E228E2E2DCDCE228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E228F5E2E2BEE2E22828E22828F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528E2E228F5E2BEE2E2F528E2E228F5E2E2BEE2E2F528C3E228F5E2E2BEE2F52828E22828E2E2BEE2E2F528E2E228F5E2E2BEE2E22828E22828E2E2BEE2E2F528E2E2 +310 +28F5E2E2BEE2E22828E2DCF5BEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEE2E2282828282828BE2828E22828282828282828BEE2E2282828282828282828E2E22828282828282828E2E2282828282828282828C3E2282828282828282828E2282828282828282828E2E2282828282828282828E2282828282828282828 +310 +E2E2282828282828BE2828E2E2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDCDCDCDCE2E228E2BEE2E22828E2E2BEE2E22828E22828E2E2BEE2E2E228E2E22828E2E2BEE2E22828E2E228E2E2BEE2E2E228E2E22828E2E2BEE2E22828C3E228E2E2E2BEE2E22828E22828E2E2BEE2E22828E2E228E2E2E2BEE2E22828E22828E2E2BEE2E2 +310 +2828E2E22828E2E2BEE2E22828E2E2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E228E2BEE2E22828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2BEE2E2E228F5F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BEE2E22828F5F528E2E2E2BEE2E22828F52828E2E2BE +310 +E2E22828F5F52828E2E2BEE2E22828F5F5BEE228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DF5BEBEBEBEBEBEBEBEBEBEBEF5BEBE2828F5F528BEBEBEBEBEBE28F5F52828BEBEBEBEBE2828F5F528BEBEBEBEBEBE28F5F5F528BEBEBEBEBE2828F5F528BEBEBEBEBEBE2828F52828BEBEBEBEBE2828F5F528BEBEBEBEBEBE2828F52828BE +310 +BEBEBEBE2828F5F52828BEBEBEBEBE2828F5BEBEBEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDCDCDCDCE2E228E2BEE2E22828E2E2BEE2E22828BE2828E2E2BEE2E2E228E2BE2828E2E2BEE2E22828BEE228E2E2BEE2E2E228E2BE2828E2E2BEE2E22828C3E228E2E2E2BEE2E22828BE2828E2E2BEE2E22828BEE228E2E2E2BEE2E22828BE28 +310 +28E2E2BEE2E22828E2BE2828E2E2BEE2E22828BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEF5E22828E2E2BEE2E22828BE282828E2BEE2E2E228E2BE2828E2E2BEE2E22828BEE22828E2BEE2E2E228E2BE2828E2E2BEE2E22828C3E2BE28E2E2BEE2E22828BE2828BEE2BEE2E22828BEE2BE28E2E2BEE2E22828 +310 +BE282828E2BEE2E22828E2BE2828E2E2BEE2E22828BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBEBEBEBEF5F528282828BE28282828BE28282828BE28282828E2BE28282828BE28282828BEE2282828BE28282828E2BE28282828BE28282828C3E228282828BE28282828BE28282828BE28282828BEE228282828BE2828 +310 +2828BE28282828BE28282828E2BE28282828BE28282828BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2D2DE2E228F5BEBEF5E228282828282828E2BEE22828282828282828E2BEE228282828282828E2BEE22828282828282828E2BEE228282828282828E2C3E22828282828282828E2BEE228282828282828E2BEE22828282828 +310 +282828E2BEE22828282828282828E2BEE228282828282828E2BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEBEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2C3E2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2 +310 +E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2BEBEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2C3E2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2 +310 +E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BEE228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E228E2BEBEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2C3E2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2BE +310 +E2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BE2828E2E2E2E2E2E2E2E2E2E2BEBEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DE22D2D2DF5BEBEBEBEF52828282828282828282828BE28282828282828282828BE282828282828282828BE28282828282828282828BE2828282828282828282828282828282828282828BE2828282828282828 +310 +28BE28282828282828282828BE28282828282828282828BE282828282828282828BE282828BEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2BEE2BEE2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2 +310 +E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2 +310 +DCE2E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2BEE2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2 +310 +E2E2DCE2E2E2E2BEE2E2E2E2E2DCE2E2E2E2BEE2E2E2E2DCE2E2E2E2E2BEE2E2E2E2DCE2E2E2E2BEE2BEE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2DF52DF5E2E2E2E2F5E2E2E22DF52DE2E2E2F528E2E2E2E2F5E2E2E228F528E2E2E2F52DE2E2E2F528E2E2E22DF5E2E2E228F528E2E2E2F52DE2E2E228F5E2E2E22DF5 +310 +2DE2E228F528E2E2E2F52DE2E2E228F5E2E2E2E2F5E2E2E2E2F5E2E2E2E22DF5E2E2E2E2F5E2E2E22DF52DF5E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2D2D2D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E22828E2E2E2E22DE2E2E2282828E2E2E22D2DE2E2E22828E2E2E2 +310 +E22D2DE2E2282828E2E2E22D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E22828E2E2E22D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2D2D2D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E22828E2 +310 +E2E22D2D2DE2E2282828E2E2E22D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E22828E2E2E22D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2D2D2D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E228 +310 +28E2E2E22D2D2DE2E2282828E2E2E22D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E22828E2E2E22D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2D2D2D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E22828E2E2E22D2DE2E2E2E228E2E2E2E2E2E2E2E2 +310 +E22828E2E2E22D2D2DE2E2282828E2E2E22D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E22828E2E2E22D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BE2D2D2D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E2282828E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E22828E2E2E22D2D2DE2E2E22828E2E2E22D2DE2E2E22828E2E2E2E22D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D +310 +2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2D2D2D +310 +2D2D2D2D2D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E228282828282828282828282828282828E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E228282828282828282828282828282828E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 + 0 +XRECORD + 5 +13DFC +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFB +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFF +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFE +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13E00 +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFD +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF4 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF3 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF7 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF6 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF8 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF5 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +CELLSTYLEMAP + 5 +1AAE7 +102 +{ACAD_REACTORS +330 +1402D +102 +} +330 +1402D +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 + 4 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 5 + 62 + 0 +340 +11 +144 +0.25 +309 +CONTENTFORMAT_END +171 + 1 +301 +MARGIN + 1 +CELLMARGIN_BEGIN + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.18 + 40 +0.18 +309 +CELLMARGIN_END + 94 + 6 + 95 + 1 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 2 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 4 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 8 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 16 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 32 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END +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 + 4 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 5 + 62 + 0 +340 +11 +144 +0.18 +309 +CONTENTFORMAT_END +171 + 1 +301 +MARGIN + 1 +CELLMARGIN_BEGIN + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.18 + 40 +0.18 +309 +CELLMARGIN_END + 94 + 6 + 95 + 1 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 2 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 4 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 8 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 16 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 32 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END +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 + 4 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 2 + 62 + 0 +340 +11 +144 +0.18 +309 +CONTENTFORMAT_END +171 + 1 +301 +MARGIN + 1 +CELLMARGIN_BEGIN + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.06 + 40 +0.18 + 40 +0.18 +309 +CELLMARGIN_END + 94 + 6 + 95 + 1 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 2 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 4 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 8 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 16 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END + 95 + 32 +302 +GRIDFORMAT + 1 +GRIDFORMAT_BEGIN + 90 + 0 + 91 + 1 + 62 + 0 + 92 + -2 +340 +0 + 93 + 0 + 40 +0.045 +309 +GRIDFORMAT_END +309 +TABLEFORMAT_END + 1 +CELLSTYLE_BEGIN + 90 + 3 + 91 + 2 +300 +_DATA +309 +CELLSTYLE_END + 0 +XRECORD + 5 +1AAFC +102 +{ACAD_REACTORS +330 +1AAFB +102 +} +330 +1AAFB +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB00 +102 +{ACAD_REACTORS +330 +1AAFF +102 +} +330 +1AAFF +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAFE +102 +{ACAD_REACTORS +330 +1AAFD +102 +} +330 +1AAFD +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAFA +102 +{ACAD_REACTORS +330 +1AAF9 +102 +} +330 +1AAF9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB08 +102 +{ACAD_REACTORS +330 +1AB07 +102 +} +330 +1AB07 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB10 +102 +{ACAD_REACTORS +330 +1AB0F +102 +} +330 +1AB0F +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB02 +102 +{ACAD_REACTORS +330 +1AB01 +102 +} +330 +1AB01 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB06 +102 +{ACAD_REACTORS +330 +1AB05 +102 +} +330 +1AB05 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB16 +102 +{ACAD_REACTORS +330 +1AB15 +102 +} +330 +1AB15 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1AB0E +102 +{ACAD_REACTORS +330 +1AB0D +102 +} +330 +1AB0D +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAF2 +102 +{ACAD_REACTORS +330 +1AAF1 +102 +} +330 +1AAF1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAF4 +102 +{ACAD_REACTORS +330 +1AAF3 +102 +} +330 +1AAF3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAF6 +102 +{ACAD_REACTORS +330 +1AAF5 +102 +} +330 +1AAF5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AAF8 +102 +{ACAD_REACTORS +330 +1AAF7 +102 +} +330 +1AAF7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB12 +102 +{ACAD_REACTORS +330 +1AB11 +102 +} +330 +1AB11 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1AB0C +102 +{ACAD_REACTORS +330 +1AB0B +102 +} +330 +1AB0B +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB14 +102 +{ACAD_REACTORS +330 +1AB13 +102 +} +330 +1AB13 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1AB04 +102 +{ACAD_REACTORS +330 +1AB03 +102 +} +330 +1AB03 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1AB0A +102 +{ACAD_REACTORS +330 +1AB09 +102 +} +330 +1AB09 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/tt01.are b/LaiPuLaser/TempMarkData/tt01.are new file mode 100644 index 0000000..440b295 Binary files /dev/null and b/LaiPuLaser/TempMarkData/tt01.are differ diff --git a/LaiPuLaser/TempMarkData/tt01.dxf b/LaiPuLaser/TempMarkData/tt01.dxf new file mode 100644 index 0000000..a4af321 --- /dev/null +++ b/LaiPuLaser/TempMarkData/tt01.dxf @@ -0,0 +1,127300 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1021 + 9 +$ACADMAINTVER + 70 + 25 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$LASTSAVEDBY + 1 +jay + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-305.0759999999965 + 20 +-275.6080414295259 + 30 +0.0 + 9 +$EXTMAX + 10 +1328.441483625424 + 20 +230.2104612211067 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 1 + 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 +1.75 + 9 +$DIMEXO + 40 +0.0 + 9 +$DIMDLI + 40 +1.0 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.3 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +1.75 + 9 +$DIMCEN + 40 +0.0 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 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 + 1 + 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 + 1 + 9 +$DIMCLRE + 70 + 1 + 9 +$DIMCLRT + 70 + 4 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.3 + 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 + 2 + 9 +$DIMTDEC + 70 + 2 + 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 + -1 + 9 +$DIMLWE + 70 + -1 + 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 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.45 + 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 +2453735.43711478 + 9 +$TDUCREATE + 40 +2453735.103781447 + 9 +$TDUPDATE + 40 +2458856.603249132 + 9 +$TDUUPDATE + 40 +2458856.269915799 + 9 +$TDINDWG + 40 +12.3386043634 + 9 +$TDUSRTIMER + 40 +12.3386043634 + 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 +3EEAD + 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 +-141.0 + 20 +117.8064582119144 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PEXTMAX + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 1 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{B16A767A-1353-46BE-898A-4D2085E8C8E7} + 9 +$VERSIONGUID + 2 +{34B3F2B2-56D2-4115-B0F8-689F8AE10251} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 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.570796326794897 + 9 +$LOFTANG2 + 40 +1.570796326794897 + 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 +$SOLIDHIST +280 + 1 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 2 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 256 + 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 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DIMASSOC + 2 +AcDbDimAssoc + 3 +"AcDbDimAssoc|Product Desc: AcDim ARX App For Dimension|Company: Autodesk, Inc.|WEB Address: www.autodesk.com" + 90 + 0 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 7 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 23 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 37 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 + 4095 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 + 1152 + 91 + 4 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACAD_EVALUATION_GRAPH + 2 +AcDbEvalGraph + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +ACAECUSTOBJ + 2 +AcAeEditorObj + 3 +AcAeEditorObj + 90 + 1024 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION + 2 +AcDbDynamicBlockPurgePreventer + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +AEC_REFEDIT_STATUS_TRACKER + 2 +AecDbRefEditStatusTracker + 3 +AecArchBase60|Product Desc: Autodesk Architectural Desktop 2007 |Company: Autodesk,Inc. |WEB Address: www.autodesk.com + 90 + 129 + 91 + 1 +280 + 1 +281 + 0 + 0 +CLASS + 1 +NPOCOLLECTION + 2 +AcDbImpNonPersistentObjectsCollection + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 1 +280 + 1 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VPORT + 5 +3AEFE +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-86.8037943069798 + 22 +188.3932123020458 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +146.1917258550574 + 41 +3.305914511270986 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 16 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +-141.0 +120 +117.8064582119144 +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 +348 +13E07 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 256 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 +gbcbig.shx + 0 +STYLE + 5 +AF +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STYLE1 + 70 + 0 + 40 +0.0 + 41 +0.9 + 50 +0.0 + 71 + 0 + 42 +2.0 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +STYLE + 5 +1E179 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +1 + 70 + 0 + 40 +0.0 + 41 +0.8 + 50 +0.0 + 71 + 0 + 42 +1.2 + 3 +SimSun.ttf + 4 + +1001 +ACAD +1000 +SimSun +1071 + 34306 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +221AF +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ACAD_ISO07W100 + 70 + 0 + 3 +ISO dot . . . . . . . . . . . . . . . . . . . . + 72 + 65 + 73 + 2 + 40 +3.0 + 49 +0.0 + 74 + 0 + 49 +-3.0 + 74 + 0 + 0 +LTYPE + 5 +2B30E +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 + 0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 + 65 + 73 + 4 + 40 +1.125 + 49 +0.75 + 74 + 0 + 49 +-0.125 + 74 + 0 + 49 +0.125 + 74 + 0 + 49 +-0.125 + 74 + 0 + 0 +LTYPE + 5 +395EF +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 + 0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 + 65 + 73 + 4 + 40 +4.0 + 49 +2.5 + 74 + 0 + 49 +-0.5 + 74 + 0 + 49 +0.5 + 74 + 0 + 49 +-0.5 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +102 +{ACAD_XDICTIONARY +360 +B0 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 10 + 0 +LAYER + 5 +10 +102 +{ACAD_XDICTIONARY +360 +14018 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +AE +102 +{ACAD_XDICTIONARY +360 +1401A +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +BOM + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +5B7 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DEFPOINTS + 70 + 0 + 62 + 7 + 6 +Continuous +290 + 0 +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +9522 +102 +{ACAD_XDICTIONARY +360 +14020 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Outline + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 30 +390 +F +347 +A192 + 0 +LAYER + 5 +221B0 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Bhatch + 70 + 0 + 62 + 50 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +2B310 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +dim + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +2B313 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TIE-BAR + 70 + 0 + 62 + 170 + 6 +Continuous +370 + -3 +390 +F +347 +A192 + 0 +LAYER + 5 +2BDD7 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +2 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +AcAecLayerStandard +1000 + +1000 + + 0 +LAYER + 5 +2DF4F +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +hatch + 70 + 0 + 62 + 4 + 6 +Continuous +370 + 9 +390 +F +347 +A192 + 0 +LAYER + 5 +34974 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +PCB + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +F +347 +A192 +1001 +AcAecLayerStandard +1000 + +1000 + + 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 + 14 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +14A9 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +DCO15 + 70 + 0 + 0 +APPID + 5 +13E43 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_EXEMPT_FROM_CAD_STANDARDS + 70 + 0 + 0 +APPID + 5 +13E97 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockGUID + 70 + 0 + 0 +APPID + 5 +1405D +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_MLEADERVER + 70 + 0 + 0 +APPID + 5 +14105 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcAecLayerStandard + 70 + 0 + 0 +APPID + 5 +1426B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAUTHENVIRON + 70 + 0 + 0 +APPID + 5 +1426E +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcDbDynamicBlockTrueName + 70 + 0 + 0 +APPID + 5 +1A455 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJOGGED_JOGANGLE_SYMBOL + 70 + 0 + 0 +APPID + 5 +1D0DC +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMJAG + 70 + 0 + 0 +APPID + 5 +1D0DD +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMTALN + 70 + 0 + 0 +APPID + 5 +1D0DE +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_PSEXT + 70 + 0 + 0 +APPID + 5 +1DA21 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMBREAK + 70 + 0 + 0 +APPID + 5 +372FF +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +RAK + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 41 +1.75 + 42 +0.0 + 43 +1.0 + 44 +0.3 + 73 + 0 + 74 + 0 +140 +1.75 +141 +0.0 +147 +0.3 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +271 + 2 +272 + 2 +340 +11 +371 + -1 +372 + -1 + 0 +DIMSTYLE +105 +3491D +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +1 + 70 + 0 + 41 +0.5 + 42 +0.2 + 43 +0.5 + 44 +0.2 + 73 + 0 + 74 + 0 + 78 + 1 +140 +1.8 +141 +2.0 +146 +0.6 +147 +0.6 +172 + 1 +176 + 1 +177 + 1 +178 + 4 +179 + 1 +271 + 2 +272 + 2 +289 + 0 +340 +11 +341 +2DC0C + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 100 + 0 +BLOCK_RECORD + 5 +1F +102 +{ACAD_XDICTIONARY +360 +227 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +58 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +59 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +5D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +5E + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +98 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_INFO +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF00FFFFFF +310 +FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF000000FFFFFFFFFF00FFFFFF +310 +FFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +19A +102 +} + 70 + 4 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +1AD +102 +{ACAD_XDICTIONARY +360 +418 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +CAD_TITLE +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFAFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000000000000000000000 +310 +0000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000 +310 +000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF000000000000000000 +310 +00000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF0000000000000000 +310 +0000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FF00000000000000000000000000000000000000000000000000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +241CD +102 +} + 70 + 4 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 4 +1002 +} + 0 +BLOCK_RECORD + 5 +1D520 +102 +{ACAD_XDICTIONARY +360 +1D521 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C2AC965FD +340 +0 +102 +{BLKREFS +331 +241E5 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +1E162 +102 +{ACAD_XDICTIONARY +360 +1E163 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +注释 +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000FF00FF000000FFFFFF00FF00FFFFFF0000000000000000000000000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FF00FF00FFFFFFFFFFFFFFFF +310 +FF00FFFFFFFFFFFFFFFFFFFF0000000000000000000000FF0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFF000000FFFFFF +310 +FFFFFFFFFFFF0000000000000000000000000000000000FF000000FFFFFF000000FF000000FF00000000FF00FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFF +310 +FFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000FFFFFFFFFBFFFFFFFFFF +310 +FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF000000000000FFFF00FFFBFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00000000000000000000FF000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF +310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFF000000 +310 +00000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +241E8 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2219A +102 +{ACAD_XDICTIONARY +360 +2219B +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +ARROW MARK +340 +0 +310 +2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0 +310 +000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0 +310 +A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040 +310 +40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000 +310 +40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080 +310 +008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0 +310 +800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0 +310 +408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000 +310 +C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FBFBFBFBFBFBFBFBFBFBFBFB +310 +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB00FA00000000FFFFFF00000000FAFA00000000FFFFFF00000000FFFAFB0000FB00FA000000FFFFFFFFFF0000FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FFFFFFFFFFFF +310 +0000FFFAFAFF00FFFFFFFFFFFFFFFF0000FAFB0000FB00FA0000FFFFFFFFFFFFFF00FFFAFAFF00FFFFFFFFFFFFFF000000FAFB0000FB00FA0000FF0000FFFFFF000000FAFA000000000000000000000000FAFB0000FB00FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0000FB000000000000000000 +310 +00000000000000000000F9F900000000000000FB0000FB000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FB00000000000000F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9000000000000FB0000FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +310 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +102 +{BLKREFS +331 +241EA +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +22602 +102 +{ACAD_XDICTIONARY +360 +22603 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7B2656CB +340 +0 +102 +{BLKREFS +331 +241E9 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2AE73 +102 +{ACAD_XDICTIONARY +360 +2AE74 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C01CC1A43 +340 +0 +102 +{BLKREFS +331 +2B68D +331 +3B346 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2AE79 +102 +{ACAD_XDICTIONARY +360 +2AE7A +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C019D3CDB +340 +0 +102 +{BLKREFS +331 +2B68E +331 +3B347 +102 +} + 70 + 1 +280 + 1 +281 + 0 +1001 +ACAD +1000 +DesignCenter Data +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +BLOCK_RECORD + 5 +2B09E +102 +{ACAD_XDICTIONARY +360 +2B09F +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C3E133D25 +340 +0 +102 +{BLKREFS +331 +2B989 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B0AA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U10 +340 +0 +102 +{BLKREFS +331 +2B0A2 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B0AE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U11 +340 +0 +102 +{BLKREFS +331 +2B0A3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B0B2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U12 +340 +0 +102 +{BLKREFS +331 +2B0A4 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B0B6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U13 +340 +0 +102 +{BLKREFS +331 +2B0A5 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B15D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U14 +340 +0 +102 +{BLKREFS +331 +2B0A7 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2B162 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U15 +340 +0 +102 +{BLKREFS +331 +2B0A8 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +2DC0C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +_ClosedBlank +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +348E6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D17 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34929 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D18 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34A58 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D19 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34A90 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D20 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34ABF +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D21 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34AF7 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D22 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34B2F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D23 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34B85 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D24 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +34BB3 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D25 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +39995 +102 +{ACAD_XDICTIONARY +360 +3999D +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C023E2B9B +340 +0 +102 +{BLKREFS +331 +39E23 +331 +39E27 +331 +39E2B +331 +39E2F +331 +39E33 +331 +39E37 +331 +39E3B +331 +39E3F +331 +39E43 +331 +39E47 +331 +39E4B +331 +39E4F +331 +39E51 +331 +39E55 +331 +39E59 +331 +39E5D +331 +39E61 +331 +39E65 +331 +39E69 +331 +39E6D +331 +39E71 +331 +39E75 +331 +39E79 +331 +39E7D +331 +39E7F +331 +39E83 +331 +39E87 +331 +39E8B +331 +39E8F +331 +39E93 +331 +39E97 +331 +39E9B +331 +39E9F +331 +39EA3 +331 +39EA7 +331 +39EAB +331 +39EAD +331 +39EB1 +331 +39EB5 +331 +39EB9 +331 +39EBD +331 +39EC1 +331 +39EC5 +331 +39EC9 +331 +39ECD +331 +39ED1 +331 +39ED5 +331 +39ED9 +331 +39EDB +331 +39EDF +331 +39EE3 +331 +39EE7 +331 +39EEB +331 +39EEF +331 +39EF3 +331 +39EF7 +331 +39EFB +331 +39EFF +331 +39F03 +331 +39F07 +331 +39F09 +331 +39F0D +331 +39F11 +331 +39F15 +331 +39F19 +331 +39F1D +331 +39F21 +331 +39F25 +331 +39F29 +331 +39F2D +331 +39F31 +331 +39F35 +331 +39F37 +331 +39F3B +331 +39F3F +331 +39F43 +331 +39F47 +331 +39F4B +331 +39F4F +331 +39F53 +331 +39F57 +331 +39F5B +331 +39F5F +331 +39F63 +331 +39F65 +331 +39F69 +331 +39F6D +331 +39F71 +331 +39F75 +331 +39F79 +331 +39F7D +331 +39F81 +331 +39F85 +331 +39F89 +331 +39F8D +331 +39F91 +331 +39F93 +331 +39F97 +331 +39F9B +331 +39F9F +331 +39FA3 +331 +39FA7 +331 +39FAB +331 +39FAF +331 +39FB3 +331 +39FB7 +331 +39FBB +331 +39FBF +331 +39FC1 +331 +39FC5 +331 +39FC9 +331 +39FCD +331 +39FD1 +331 +39FD5 +331 +39FD9 +331 +39FDD +331 +39FE1 +331 +39FE5 +331 +39FE9 +331 +39FED +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +39A49 +102 +{ACAD_XDICTIONARY +360 +39A4E +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C7D582647 +340 +0 +102 +{BLKREFS +331 +39E24 +331 +39E28 +331 +39E2C +331 +39E30 +331 +39E34 +331 +39E38 +331 +39E3C +331 +39E40 +331 +39E44 +331 +39E48 +331 +39E4C +331 +39E50 +331 +39E52 +331 +39E56 +331 +39E5A +331 +39E5E +331 +39E62 +331 +39E66 +331 +39E6A +331 +39E6E +331 +39E72 +331 +39E76 +331 +39E7A +331 +39E7E +331 +39E80 +331 +39E84 +331 +39E88 +331 +39E8C +331 +39E90 +331 +39E94 +331 +39E98 +331 +39E9C +331 +39EA0 +331 +39EA4 +331 +39EA8 +331 +39EAC +331 +39EAE +331 +39EB2 +331 +39EB6 +331 +39EBA +331 +39EBE +331 +39EC2 +331 +39EC6 +331 +39ECA +331 +39ECE +331 +39ED2 +331 +39ED6 +331 +39EDA +331 +39EDC +331 +39EE0 +331 +39EE4 +331 +39EE8 +331 +39EEC +331 +39EF0 +331 +39EF4 +331 +39EF8 +331 +39EFC +331 +39F00 +331 +39F04 +331 +39F08 +331 +39F0A +331 +39F0E +331 +39F12 +331 +39F16 +331 +39F1A +331 +39F1E +331 +39F22 +331 +39F26 +331 +39F2A +331 +39F2E +331 +39F32 +331 +39F36 +331 +39F38 +331 +39F3C +331 +39F40 +331 +39F44 +331 +39F48 +331 +39F4C +331 +39F50 +331 +39F54 +331 +39F58 +331 +39F5C +331 +39F60 +331 +39F64 +331 +39F66 +331 +39F6A +331 +39F6E +331 +39F72 +331 +39F76 +331 +39F7A +331 +39F7E +331 +39F82 +331 +39F86 +331 +39F8A +331 +39F8E +331 +39F92 +331 +39F94 +331 +39F98 +331 +39F9C +331 +39FA0 +331 +39FA4 +331 +39FA8 +331 +39FAC +331 +39FB0 +331 +39FB4 +331 +39FB8 +331 +39FBC +331 +39FC0 +331 +39FC2 +331 +39FC6 +331 +39FCA +331 +39FCE +331 +39FD2 +331 +39FD6 +331 +39FDA +331 +39FDE +331 +39FE2 +331 +39FE6 +331 +39FEA +331 +39FEE +331 +39FEF +331 +39FF2 +331 +39FF5 +331 +39FF8 +331 +39FFB +331 +39FFE +331 +3A001 +331 +3A004 +331 +3A007 +331 +3A00A +331 +3AEA2 +331 +3AEC7 +331 +3AEC8 +331 +3AEC9 +331 +3AECA +331 +3AECB +331 +3AECC +331 +3AECD +331 +3AECE +331 +3AECF +331 +3AEE5 +331 +3B3D8 +331 +3B3D9 +331 +3B3DA +331 +3B3DB +331 +3B3DC +331 +3B3DD +331 +3B3DE +331 +3B3DF +331 +3B3E0 +331 +3B3E1 +331 +3B3E2 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +39A68 +102 +{ACAD_XDICTIONARY +360 +39A76 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C09F9734C +340 +0 +102 +{BLKREFS +331 +39E25 +331 +39E26 +331 +39E29 +331 +39E2A +331 +39E2D +331 +39E2E +331 +39E31 +331 +39E32 +331 +39E35 +331 +39E36 +331 +39E39 +331 +39E3A +331 +39E3D +331 +39E3E +331 +39E41 +331 +39E42 +331 +39E45 +331 +39E46 +331 +39E49 +331 +39E4A +331 +39E4D +331 +39E4E +331 +39E53 +331 +39E54 +331 +39E57 +331 +39E58 +331 +39E5B +331 +39E5C +331 +39E5F +331 +39E60 +331 +39E63 +331 +39E64 +331 +39E67 +331 +39E68 +331 +39E6B +331 +39E6C +331 +39E6F +331 +39E70 +331 +39E73 +331 +39E74 +331 +39E77 +331 +39E78 +331 +39E7B +331 +39E7C +331 +39E81 +331 +39E82 +331 +39E85 +331 +39E86 +331 +39E89 +331 +39E8A +331 +39E8D +331 +39E8E +331 +39E91 +331 +39E92 +331 +39E95 +331 +39E96 +331 +39E99 +331 +39E9A +331 +39E9D +331 +39E9E +331 +39EA1 +331 +39EA2 +331 +39EA5 +331 +39EA6 +331 +39EA9 +331 +39EAA +331 +39EAF +331 +39EB0 +331 +39EB3 +331 +39EB4 +331 +39EB7 +331 +39EB8 +331 +39EBB +331 +39EBC +331 +39EBF +331 +39EC0 +331 +39EC3 +331 +39EC4 +331 +39EC7 +331 +39EC8 +331 +39ECB +331 +39ECC +331 +39ECF +331 +39ED0 +331 +39ED3 +331 +39ED4 +331 +39ED7 +331 +39ED8 +331 +39EDD +331 +39EDE +331 +39EE1 +331 +39EE2 +331 +39EE5 +331 +39EE6 +331 +39EE9 +331 +39EEA +331 +39EED +331 +39EEE +331 +39EF1 +331 +39EF2 +331 +39EF5 +331 +39EF6 +331 +39EF9 +331 +39EFA +331 +39EFD +331 +39EFE +331 +39F01 +331 +39F02 +331 +39F05 +331 +39F06 +331 +39F0B +331 +39F0C +331 +39F0F +331 +39F10 +331 +39F13 +331 +39F14 +331 +39F17 +331 +39F18 +331 +39F1B +331 +39F1C +331 +39F1F +331 +39F20 +331 +39F23 +331 +39F24 +331 +39F27 +331 +39F28 +331 +39F2B +331 +39F2C +331 +39F2F +331 +39F30 +331 +39F33 +331 +39F34 +331 +39F39 +331 +39F3A +331 +39F3D +331 +39F3E +331 +39F41 +331 +39F42 +331 +39F45 +331 +39F46 +331 +39F49 +331 +39F4A +331 +39F4D +331 +39F4E +331 +39F51 +331 +39F52 +331 +39F55 +331 +39F56 +331 +39F59 +331 +39F5A +331 +39F5D +331 +39F5E +331 +39F61 +331 +39F62 +331 +39F67 +331 +39F68 +331 +39F6B +331 +39F6C +331 +39F6F +331 +39F70 +331 +39F73 +331 +39F74 +331 +39F77 +331 +39F78 +331 +39F7B +331 +39F7C +331 +39F7F +331 +39F80 +331 +39F83 +331 +39F84 +331 +39F87 +331 +39F88 +331 +39F8B +331 +39F8C +331 +39F8F +331 +39F90 +331 +39F95 +331 +39F96 +331 +39F99 +331 +39F9A +331 +39F9D +331 +39F9E +331 +39FA1 +331 +39FA2 +331 +39FA5 +331 +39FA6 +331 +39FA9 +331 +39FAA +331 +39FAD +331 +39FAE +331 +39FB1 +331 +39FB2 +331 +39FB5 +331 +39FB6 +331 +39FB9 +331 +39FBA +331 +39FBD +331 +39FBE +331 +39FC3 +331 +39FC4 +331 +39FC7 +331 +39FC8 +331 +39FCB +331 +39FCC +331 +39FCF +331 +39FD0 +331 +39FD3 +331 +39FD4 +331 +39FD7 +331 +39FD8 +331 +39FDB +331 +39FDC +331 +39FDF +331 +39FE0 +331 +39FE3 +331 +39FE4 +331 +39FE7 +331 +39FE8 +331 +39FEB +331 +39FEC +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +39CCB +102 +{ACAD_XDICTIONARY +360 +39CD9 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C35E41998 +340 +0 +102 +{BLKREFS +331 +39FF0 +331 +39FF1 +331 +39FF3 +331 +39FF4 +331 +39FF6 +331 +39FF7 +331 +39FF9 +331 +39FFA +331 +39FFC +331 +39FFD +331 +39FFF +331 +3A000 +331 +3A002 +331 +3A003 +331 +3A005 +331 +3A006 +331 +3A008 +331 +3A009 +331 +3A00B +331 +3A00C +331 +3A00D +331 +3A00E +331 +3A00F +331 +3A010 +331 +3A011 +331 +3A012 +331 +3A013 +331 +3A014 +331 +3A015 +331 +3A016 +331 +3A017 +331 +3A018 +331 +3A019 +331 +3A01A +331 +3A01B +331 +3A01C +331 +3A01D +331 +3A01E +331 +3A01F +331 +3A020 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +39E22 +102 +{ACAD_XDICTIONARY +360 +3A112 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C2D54543D +340 +0 +102 +{BLKREFS +331 +3A11A +331 +3B37C +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3A9AD +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D31 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3A9DB +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D32 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3A9E6 +102 +{ACAD_XDICTIONARY +360 +3A9EE +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C59200462 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3A9FA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D34 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AA3F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D35 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AA77 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D36 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AA9B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D37 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AB42 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D38 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AB76 +102 +{ACAD_XDICTIONARY +360 +3AB79 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +A$C0BC441EF +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AEFF +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D40 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF21 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U41 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF27 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U42 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF2C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U43 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF31 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U44 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF3A +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U45 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF40 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U46 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3AF6B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D47 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B2C2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D48 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B2D5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D49 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B2E5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D50 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B2F5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D51 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B306 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D52 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B360 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D53 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B383 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D54 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B396 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D55 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B3A6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D56 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B3B6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D57 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B3C7 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D58 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B3E5 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D59 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B3F3 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D60 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B40C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D61 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B433 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U62 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B439 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U63 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B43E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U64 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B443 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U65 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B44C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U66 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B452 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U67 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B47D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D68 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B7D4 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D69 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B7E7 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D70 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B7F7 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D71 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B807 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D72 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B818 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D73 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B86F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U74 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B875 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U75 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B87A +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U76 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B87F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U77 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B888 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U78 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B88E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*U79 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3B8B9 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D80 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BC10 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D81 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BC23 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D82 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BC33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D83 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BC43 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D84 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BC54 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D85 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BE6E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D86 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BE7D +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D87 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BE90 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D88 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BE9F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D89 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BEAE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D90 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BF56 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D91 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BF66 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D92 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3BF76 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D93 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3C310 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D94 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3C321 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D95 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3C396 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D96 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3C3A6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D97 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +3D4BB +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D98 +340 +0 + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5A +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +5B +330 +58 +100 +AcDbEntity + 67 + 1 + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +5F +330 +5D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +60 +330 +5D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +99 +330 +98 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +CAD_INFO + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_INFO + 1 + + 0 +ATTDEF + 5 +9A +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-72.75800251247529 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMWIDTH + 2 +BOMWIDTH + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9B +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-56.23436060281256 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMHEIGHT + 2 +BOMHEIGHT + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9C +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-37.35019754088444 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-172,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS2 + 2 +BOMSTARTPOS2 + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9D +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-17.9939314797416 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +-258,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS3 + 2 +BOMSTARTPOS3 + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9E +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-19.17419359492214 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSECONDLINE + 2 +BOMSECONDLINE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +9F +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-73.5775887950117 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMTHIRDLINE + 2 +BOMTHIRDLINE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +A0 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-54.34594552785802 + 20 +0.2247222850817252 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +PDMUPDATE + 2 +PDMUPDATE + 70 + 9 +280 + 0 + 0 +ATTDEF + 5 +A1 +330 +98 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-37.58625057953986 + 20 +8.950025373770586 + 30 +0.0 + 40 +2.0 + 1 +0 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +BOMSTARTPOS + 2 +BOMSTARTPOS + 70 + 9 +280 + 0 + 0 +ENDBLK + 5 +A2 +330 +98 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1AE +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +CAD_TITLE + 70 + 2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +CAD_TITLE + 1 + + 0 +LWPOLYLINE + 5 +1B0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.4999999999999999 + 10 +-281.9999999999999 + 20 +-0.0000000000000142 + 10 +0.0 + 20 +-0.0000000000000142 + 10 +0.0 + 20 +199.9999999999999 + 10 +-281.9999999999999 + 20 +199.9999999999999 + 0 +LWPOLYLINE + 5 +1B1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.3 + 10 +-70.0 + 20 +-0.0000000000000142 + 10 +-70.0 + 20 +31.99999999999999 + 10 +0.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1B2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +5.0 + 10 +-0.0000000000001066 + 20 +5.0 + 0 +TEXT + 5 +1B3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-34.0903112182391 + 20 +1.896916662222395 + 30 +0.0 + 40 +1.61704790018511 + 1 +UNIT mm +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +5.0 + 10 +-143.0 + 20 +5.0 + 0 +TEXT + 5 +1B5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-53.39200540086568 + 20 +1.867236129095367 + 30 +0.0 + 40 +1.61704790018511 + 1 +NOT IN SCALE +100 +AcDbText + 0 +TEXT + 5 +1B6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbText + 10 +-68.60340283292325 + 20 +6.640564444717022 + 30 +0.0 + 40 +1.623435805721156 + 1 +CHKD +100 +AcDbText + 0 +TEXT + 5 +1B7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-68.56441300901326 + 20 +11.66131768742559 + 30 +0.0 + 40 +1.623435805721156 + 1 +DWN +100 +AcDbText + 0 +TEXT + 5 +1B8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-68.18041322794497 + 20 +21.86656214288637 + 30 +0.0 + 40 +1.623435805721156 + 1 +PRODUCT NO. +100 +AcDbText + 0 +LWPOLYLINE + 5 +1B9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-34.99999999999999 + 20 +-0.0000000000000142 + 10 +-34.99999999999986 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1BA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-62.69660611920495 + 20 +2.559348690284409 + 10 +-61.47902926491404 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1BB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-69.78747883220069 + 20 +2.559348690284409 + 10 +-68.78449039065902 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1BC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-63.5083240220655 + 20 +2.559348690284409 + 10 +-63.10246507063538 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1BD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-68.37863143922891 + 20 +2.559348690284409 + 10 +-67.97277248779847 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1BE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-67.56691353636825 + 20 +2.559348690284409 + 10 +-66.34933668207745 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1BF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.94347773064715 + 20 +2.559348690284409 + 10 +-65.5376187792169 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1C0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-65.13175982778648 + 20 +2.559348690284409 + 10 +-63.91418297349569 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1C1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-61.07317031348384 + 20 +2.559348690284409 + 10 +-60.66731136205338 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1C2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-60.26145241062338 + 20 +2.559348690284409 + 10 +-59.04387555633252 + 20 +2.559348690284409 + 0 +TEXT + 5 +1C3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-33.54913836335891 + 20 +6.732596412797811 + 30 +0.0 + 40 +1.623435805721156 + 1 +APPD +100 +AcDbText + 0 +TEXT + 5 +1C4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-33.52225570579925 + 20 +11.63142803396278 + 30 +0.0 + 40 +1.623435805721156 + 1 +DSN +100 +AcDbText + 0 +LWPOLYLINE + 5 +1C5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-67.50250254803439 + 20 +0.7021746622700675 + 10 +-67.50250254803439 + 20 +4.342154156640788 + 10 +-61.59694451279004 + 20 +3.75180541582408 + 10 +-61.59694451279004 + 20 +1.366891964744624 + 0 +LWPOLYLINE + 5 +1C6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +3.557088282541145 + 10 +-57.58361782520203 + 20 +4.774665136831956 + 0 +CIRCLE + 5 +1C7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-57.58361782520203 + 20 +2.559348690284409 + 30 +0.0 + 40 +1.857174028014293 + 0 +CIRCLE + 5 +1C8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-57.58361782520203 + 20 +2.559348690284409 + 30 +0.0 + 40 +1.192456725539657 + 0 +LWPOLYLINE + 5 +1C9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.82629870204186 + 20 +2.559348690284409 + 10 +-56.60872184775075 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1CA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-58.63801660490197 + 20 +2.559348690284409 + 10 +-58.23215765347198 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1CB +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +1.121934573959429 + 10 +-57.58361782520203 + 20 +2.339511428250312 + 0 +LWPOLYLINE + 5 +1CC +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.29020620340859 + 20 +0.3102166710988783 + 10 +-57.29020620340859 + 20 +0.7160756225291536 + 0 +LWPOLYLINE + 5 +1CD +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-55.39114499345997 + 20 +2.559348690284409 + 10 +-54.17356813916911 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1CE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-56.2028628963204 + 20 +2.559348690284409 + 10 +-55.79700394489009 + 20 +2.559348690284409 + 0 +LWPOLYLINE + 5 +1CF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-57.58361782520203 + 20 +2.745370379680637 + 10 +-57.58361782520203 + 20 +3.151229331110748 + 0 +TEXT + 5 +1D0 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-25.03367366006568 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +DRAW NO. +100 +AcDbText + 0 +TEXT + 5 +1D1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-6.306361925780259 + 20 +21.87734606222727 + 30 +0.0 + 40 +1.623435805721156 + 1 +REV +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-8.000000000000007 + 20 +14.99999999999998 + 10 +-8.000000000000007 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1D3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +9.999999999999993 + 10 +-0.0000000000001066 + 20 +9.999999999999993 + 0 +LWPOLYLINE + 5 +1D4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +14.99999999999998 + 10 +-0.0000000000001066 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1D6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-53.76082454905008 + 20 +0.0000000000001066 + 10 +-53.76082454905008 + 20 +5.0 + 0 +LWPOLYLINE + 5 +1D7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-20.79384049806639 + 20 +0.0000000000001066 + 10 +-20.79384049806639 + 20 +5.0 + 0 +TEXT + 5 +1D8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-20.09406221364952 + 20 +1.750249288090743 + 30 +0.0 + 40 +1.623435805721156 + 1 +SHEET: +100 +AcDbText + 0 +LWPOLYLINE + 5 +1D9 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-281.9999999999999 + 20 +199.9999999999999 + 10 +-208.8975883652207 + 20 +199.9999999999999 + 10 +-208.8975883652207 + 20 +191.9999999999999 + 10 +-281.9999999999999 + 20 +191.9999999999999 + 0 +TEXT + 5 +1DA +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-277.4171300080511 + 20 +195.107579051916 + 30 +0.0 + 40 +2.999999999999999 + 1 +模块型号: + 7 +STYLE1 +100 +AcDbText + 0 +LWPOLYLINE + 5 +1DB +102 +{ACAD_REACTORS +330 +1E0 +102 +} +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +-66.14646223328839 + 20 +26.10423200617986 + 10 +-64.78581353903544 + 20 +26.10423200617986 + 10 +-63.81736860067688 + 20 +29.71851772046539 + 10 +-62.45671990642399 + 20 +29.71851772046539 + 10 +-62.19259855959891 + 20 +30.7042320061799 + 10 +-66.27454464235862 + 20 +30.7042320061799 + 10 +-66.53866598918276 + 20 +29.71851772046539 + 10 +-65.17801729492987 + 20 +29.71851772046539 + 0 +LWPOLYLINE + 5 +1DC +102 +{ACAD_REACTORS +330 +1E0 +102 +} +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 17 + 70 + 1 + 43 +0.0 + 10 +-59.85226206014659 + 20 +26.10423200617986 + 10 +-58.49400851476138 + 20 +26.10423200617979 + 42 +-0.4889172735380292 + 10 +-58.62141050337868 + 20 +26.26794374170672 + 10 +-58.31262605298047 + 20 +27.48652792121481 + 42 +0.4462123483412442 + 10 +-58.7487856354587 + 20 +28.13621878459038 + 42 +0.8581587073163974 + 10 +-59.14313861973202 + 20 +30.7042320061799 + 10 +-61.51227421247204 + 20 +30.7042320061799 + 10 +-62.7448404976547 + 20 +26.10423200617986 + 10 +-61.38419180340177 + 20 +26.10423200617986 + 10 +-60.41574686504318 + 20 +29.71851772046539 + 10 +-59.69740210454757 + 20 +29.71851772046539 + 42 +-0.9999999999999999 + 10 +-59.69740210454757 + 20 +28.73280343475118 + 10 +-60.13560873416714 + 20 +28.7328034347513 + 10 +-60.36451390141571 + 20 +27.87851772046553 + 10 +-60.14760835637036 + 20 +27.87851772046553 + 42 +-0.4931454260313018 + 10 +-59.7032824762774 + 20 +27.29946095971841 + 10 +-59.97921231160206 + 20 +26.26967679496457 + 42 +0.4931454260313103 + 0 +LWPOLYLINE + 5 +1DD +102 +{ACAD_REACTORS +330 +1E0 +102 +} +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 12 + 70 + 1 + 43 +0.0 + 10 +-56.81936038264848 + 20 +30.7042320061799 + 10 +-57.57014322098893 + 20 +27.74134936144934 + 42 +0.4889172735380292 + 10 +-56.29612333481945 + 20 +26.10423200617986 + 10 +-55.45169383415132 + 20 +26.10423200617968 + 42 +0.3432579737942821 + 10 +-53.5406640048968 + 20 +27.59141311613272 + 10 +-52.75188791021571 + 20 +30.7042320061799 + 10 +-54.10771206769355 + 20 +30.7042320061799 + 10 +-54.87281954477611 + 20 +27.68481873587523 + 42 +-0.3432579737942821 + 10 +-55.63723147647736 + 20 +27.08994629189413 + 10 +-55.81642904533918 + 20 +27.08994629189394 + 42 +-0.4889172735380292 + 10 +-56.24110234072895 + 20 +27.63565207698388 + 10 +-55.46353622517056 + 20 +30.7042320061799 + 0 +LWPOLYLINE + 5 +1DE +102 +{ACAD_REACTORS +330 +1E0 +102 +} +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 6 + 70 + 1 + 43 +0.0 + 10 +-49.85003739129105 + 20 +26.10423200617986 + 10 +-53.23959778498533 + 20 +26.10423200617986 + 10 +-52.07397583147631 + 20 +30.7042320061799 + 10 +-50.71815167399932 + 20 +30.7042320061799 + 10 +-51.63399749461303 + 20 +27.08994629189394 + 10 +-49.60026125839668 + 20 +27.08994629189394 + 0 +LWPOLYLINE + 5 +1DF +102 +{ACAD_REACTORS +330 +1E0 +102 +} +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 9 + 70 + 1 + 43 +0.0 + 10 +-48.75583175772767 + 20 +27.74708914903679 + 10 +-49.17212531255165 + 20 +26.10423200617986 + 10 +-47.8163011550747 + 20 +26.10423200617986 + 10 +-47.40000760024976 + 20 +27.74708914903679 + 10 +-44.95589900471946 + 20 +30.7042320061799 + 10 +-46.2347161971237 + 20 +30.7042320061799 + 10 +-48.02483367693174 + 20 +28.53835724572816 + 10 +-48.96556148476132 + 20 +30.7042320061799 + 10 +-50.04023959525993 + 20 +30.7042320061799 + 0 +HATCH + 5 +1E0 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 1 + 91 + 5 + 92 + 1 + 93 + 9 + 72 + 1 + 10 +-48.75583175772767 + 20 +27.74708914903679 + 11 +-49.17212531255166 + 21 +26.10423200617985 + 72 + 1 + 10 +-49.17212531255165 + 20 +26.10423200617986 + 11 +-47.8163011550747 + 21 +26.10423200617986 + 72 + 1 + 10 +-47.8163011550747 + 20 +26.10423200617986 + 11 +-47.40000760024974 + 21 +27.7470891490368 + 72 + 1 + 10 +-47.40000760024976 + 20 +27.74708914903679 + 11 +-44.95589900471948 + 21 +30.70423200617987 + 72 + 1 + 10 +-44.95589900471946 + 20 +30.7042320061799 + 11 +-46.2347161971237 + 21 +30.7042320061799 + 72 + 1 + 10 +-46.2347161971237 + 20 +30.7042320061799 + 11 +-48.02483367693173 + 21 +28.53835724572816 + 72 + 1 + 10 +-48.02483367693174 + 20 +28.53835724572816 + 11 +-48.96556148476134 + 21 +30.7042320061799 + 72 + 1 + 10 +-48.96556148476132 + 20 +30.7042320061799 + 11 +-50.04023959525993 + 21 +30.7042320061799 + 72 + 1 + 10 +-50.04023959525993 + 20 +30.7042320061799 + 11 +-48.75583175772764 + 21 +27.74708914903682 + 97 + 1 +330 +1DF + 92 + 1 + 93 + 6 + 72 + 1 + 10 +-49.85003739129105 + 20 +26.10423200617986 + 11 +-53.23959778498534 + 21 +26.10423200617986 + 72 + 1 + 10 +-53.23959778498533 + 20 +26.10423200617986 + 11 +-52.07397583147633 + 21 +30.70423200617989 + 72 + 1 + 10 +-52.07397583147631 + 20 +30.7042320061799 + 11 +-50.71815167399931 + 21 +30.7042320061799 + 72 + 1 + 10 +-50.71815167399932 + 20 +30.7042320061799 + 11 +-51.63399749461302 + 21 +27.08994629189397 + 72 + 1 + 10 +-51.63399749461303 + 20 +27.08994629189394 + 11 +-49.60026125839671 + 21 +27.08994629189394 + 72 + 1 + 10 +-49.60026125839668 + 20 +27.08994629189394 + 11 +-49.85003739129102 + 21 +26.10423200617985 + 97 + 1 +330 +1DE + 92 + 1 + 93 + 12 + 72 + 1 + 10 +-56.81936038264848 + 20 +30.7042320061799 + 11 +-57.57014322098893 + 21 +27.74134936144936 + 72 + 2 + 10 +-56.29612333481945 + 20 +27.41851772046559 + 40 +1.314285714285733 + 50 +165.7807684394588 + 51 +269.9999999999994 + 73 + 1 + 72 + 1 + 10 +-56.29612333481945 + 20 +26.10423200617986 + 11 +-55.45169383415132 + 21 +26.10423200617969 + 72 + 2 + 10 +-55.45169383415121 + 20 +28.0756605776085 + 40 +1.971428571428803 + 50 +269.9999999999965 + 51 +345.7807684394559 + 73 + 1 + 72 + 1 + 10 +-53.5406640048968 + 20 +27.59141311613272 + 11 +-52.75188791021569 + 21 +30.70423200617987 + 72 + 1 + 10 +-52.75188791021571 + 20 +30.7042320061799 + 11 +-54.10771206769356 + 21 +30.7042320061799 + 72 + 1 + 10 +-54.10771206769355 + 20 +30.7042320061799 + 11 +-54.8728195447761 + 21 +27.68481873587525 + 72 + 2 + 10 +-55.63723147647752 + 20 +27.87851772046525 + 40 +0.7885714285711103 + 50 +14.21923156052937 + 51 +89.99999999998916 + 73 + 0 + 72 + 1 + 10 +-55.63723147647736 + 20 +27.08994629189413 + 11 +-55.81642904533917 + 21 +27.08994629189396 + 72 + 2 + 10 +-55.8164290453391 + 20 +27.52804152998923 + 40 +0.4380952380952721 + 50 +90.00000000000927 + 51 +194.2192315605496 + 73 + 0 + 72 + 1 + 10 +-56.24110234072895 + 20 +27.63565207698388 + 11 +-55.46353622517056 + 21 +30.70423200617989 + 72 + 1 + 10 +-55.46353622517056 + 20 +30.7042320061799 + 11 +-56.81936038264848 + 21 +30.7042320061799 + 97 + 1 +330 +1DD + 92 + 1 + 93 + 17 + 72 + 1 + 10 +-59.85226206014659 + 20 +26.10423200617986 + 11 +-58.4940085147614 + 21 +26.10423200617981 + 72 + 2 + 10 +-58.49400851476154 + 20 +26.23566057760849 + 40 +0.1314285714286996 + 50 +89.99999999992255 + 51 +194.2192315604629 + 73 + 0 + 72 + 1 + 10 +-58.62141050337868 + 20 +26.26794374170672 + 11 +-58.31262605298047 + 21 +27.48652792121479 + 72 + 2 + 10 +-58.82223400744819 + 20 +27.6156605776085 + 40 +0.5257142857142703 + 50 +345.7807684394353 + 51 +81.96884319028797 + 73 + 1 + 72 + 2 + 10 +-59.14313861973202 + 20 +29.38994629189416 + 40 +1.314285714285712 + 50 +287.4606773594172 + 51 +90.00000000000061 + 73 + 1 + 72 + 1 + 10 +-59.14313861973202 + 20 +30.7042320061799 + 11 +-61.51227421247203 + 21 +30.7042320061799 + 72 + 1 + 10 +-61.51227421247204 + 20 +30.7042320061799 + 11 +-62.7448404976547 + 21 +26.10423200617988 + 72 + 1 + 10 +-62.7448404976547 + 20 +26.10423200617986 + 11 +-61.38419180340178 + 21 +26.10423200617986 + 72 + 1 + 10 +-61.38419180340177 + 20 +26.10423200617986 + 11 +-60.4157468650432 + 21 +29.71851772046539 + 72 + 1 + 10 +-60.41574686504318 + 20 +29.71851772046539 + 11 +-59.69740210454753 + 21 +29.71851772046539 + 72 + 2 + 10 +-59.69740210454757 + 20 +29.22566057760829 + 40 +0.4928571428571046 + 50 +270.0 + 51 +90.0 + 73 + 0 + 72 + 1 + 10 +-59.69740210454757 + 20 +28.73280343475118 + 11 +-60.13560873416714 + 21 +28.7328034347513 + 72 + 1 + 10 +-60.13560873416714 + 20 +28.7328034347513 + 11 +-60.36451390141571 + 21 +27.87851772046553 + 72 + 1 + 10 +-60.36451390141571 + 20 +27.87851772046553 + 11 +-60.14760835637038 + 21 +27.87851772046553 + 72 + 2 + 10 +-60.14760835637036 + 20 +27.41851772046557 + 40 +0.4599999999999653 + 50 +269.9999999999991 + 51 +14.99999999999891 + 73 + 0 + 72 + 1 + 10 +-59.7032824762774 + 20 +27.29946095971841 + 11 +-59.97921231160203 + 21 +26.26967679496457 + 72 + 2 + 10 +-59.85226206014679 + 20 +26.23566057760846 + 40 +0.1314285714286116 + 50 +165.0000000001025 + 51 +270.0000000001023 + 73 + 1 + 97 + 1 +330 +1DC + 92 + 1 + 93 + 8 + 72 + 1 + 10 +-66.14646223328839 + 20 +26.10423200617986 + 11 +-64.78581353903547 + 21 +26.10423200617986 + 72 + 1 + 10 +-64.78581353903544 + 20 +26.10423200617986 + 11 +-63.81736860067687 + 21 +29.71851772046539 + 72 + 1 + 10 +-63.81736860067688 + 20 +29.71851772046539 + 11 +-62.45671990642396 + 21 +29.71851772046539 + 72 + 1 + 10 +-62.45671990642399 + 20 +29.71851772046539 + 11 +-62.19259855959894 + 21 +30.70423200617989 + 72 + 1 + 10 +-62.19259855959891 + 20 +30.7042320061799 + 11 +-66.27454464235862 + 21 +30.7042320061799 + 72 + 1 + 10 +-66.27454464235862 + 20 +30.7042320061799 + 11 +-66.53866598918276 + 21 +29.71851772046541 + 72 + 1 + 10 +-66.53866598918276 + 20 +29.71851772046539 + 11 +-65.17801729492984 + 21 +29.71851772046539 + 72 + 1 + 10 +-65.17801729492987 + 20 +29.71851772046539 + 11 +-66.14646223328839 + 21 +26.10423200617986 + 97 + 1 +330 +1DB + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +0.7999999999999999 + 77 + 0 + 78 + 1 + 53 +44.99999999999999 + 43 +-482.334719709742 + 44 +-296.9620516141961 + 45 +-0.0707106781186548 + 46 +0.0707106781186548 + 79 + 0 + 98 + 1 + 10 +-482.334719709742 + 20 +-296.9620516141961 + 0 +LWPOLYLINE + 5 +1E1 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +24.99999999999998 + 10 +-0.0000000000001066 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1E2 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-70.0 + 20 +24.69999999999997 + 10 +-0.0000000000001066 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E3 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-27.99999999999999 + 20 +14.99999999999998 + 10 +-27.99999999999999 + 20 +24.69999999999997 + 0 +LWPOLYLINE + 5 +1E4 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +-0.0000000000000142 + 10 +-86.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1E5 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +9.999999999999993 + 10 +-143.0 + 20 +9.999999999999993 + 0 +LWPOLYLINE + 5 +1E6 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +14.99999999999998 + 10 +-143.0 + 20 +14.99999999999998 + 0 +LWPOLYLINE + 5 +1E7 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +19.99999999999999 + 10 +-143.0 + 20 +19.99999999999999 + 0 +LWPOLYLINE + 5 +1E8 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +24.99999999999998 + 10 +-143.0 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1E9 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +31.99999999999999 + 10 +-143.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1EA +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +31.99999999999999 + 10 +-70.0 + 20 +31.99999999999999 + 0 +LWPOLYLINE + 5 +1EB +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-86.0 + 20 +24.99999999999998 + 10 +-70.0 + 20 +24.99999999999998 + 0 +LWPOLYLINE + 5 +1EC +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-143.0 + 20 +-0.0000000000000142 + 10 +-143.0 + 20 +31.99999999999999 + 0 +TEXT + 5 +1ED +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-142.6904661770419 + 20 +1.808681101476388 + 30 +0.0 + 40 +1.808288085995909 + 1 +NO. +100 +AcDbText + 0 +TEXT + 5 +1EE +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-125.5555864158865 + 20 +1.530428388184298 + 30 +0.0 + 40 +1.808288085995909 + 1 +CONTENT +100 +AcDbText + 0 +TEXT + 5 +1EF +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-97.46423430685104 + 20 +1.556588360975979 + 30 +0.0 + 40 +1.808288085995909 + 1 +DATE +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F0 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6548477006348 + 20 +20.49288531911981 + 10 +-138.6548477006348 + 20 +20.49288531911981 + 10 +-140.6548477006349 + 20 +24.19288531911982 + 0 +LWPOLYLINE + 5 +1F1 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.7072592865967 + 20 +15.73109000275175 + 10 +-138.7072592865967 + 20 +15.73109000275175 + 10 +-140.7072592865967 + 20 +19.43109000275174 + 0 +LWPOLYLINE + 5 +1F2 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +10.66462713107123 + 10 +-138.6407309650367 + 20 +10.66462713107123 + 10 +-140.6407309650367 + 20 +14.36462713107121 + 0 +LWPOLYLINE + 5 +1F3 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 1 + 43 +0.0 + 10 +-142.6407309650367 + 20 +5.664627131071221 + 10 +-138.6407309650367 + 20 +5.664627131071221 + 10 +-140.6407309650367 + 20 +9.364627131071217 + 0 +TEXT + 5 +1F4 +330 +1AD +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.6946939983357 + 20 +27.05146599035766 + 30 +0.0 + 40 +2.644621325769017 + 1 +AMEND +100 +AcDbText + 0 +LWPOLYLINE + 5 +1F5 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-101.9999987885299 + 20 +0.0000004531573978 + 10 +-101.9999987885299 + 20 +25.0000004531574 + 0 +LINE + 5 +1F6 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-138.0 + 20 +24.99999999999998 + 30 +0.0 + 11 +-138.0 + 21 +-0.0000000000000142 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-86.0 + 20 +19.99999999999999 + 30 +0.0 + 11 +-70.0 + 21 +19.99999999999999 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +-86.0 + 20 +9.999999999999993 + 30 +0.0 + 11 +-70.0 + 21 +9.999999999999993 + 31 +0.0 + 0 +ATTDEF + 5 +1F9 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-79.09760034555723 + 20 +27.07756872650082 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-79.09760034555723 + 21 +27.07756872650082 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +名称 + 2 +名称 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FA +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-65.25693255795716 + 20 +16.40895482215455 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +型号 + 2 +规格 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FB +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-17.76046734238673 + 20 +16.40895482215455 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-17.76046734238673 + 21 +16.40895482215455 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +图号 + 2 +图号 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FC +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbText + 10 +-3.63345265299688 + 20 +16.40893286185854 + 30 +0.0 + 40 +2.936299999999999 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-3.63345265299688 + 21 +16.40893286185854 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +版本 + 2 +版本 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FD +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-44.88583129692758 + 20 +194.9963404908602 + 30 +0.0 + 40 +2.999999999999999 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +模块型号: + 2 +模块型号: + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FE +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-56.66573838400621 + 20 +11.64946121104678 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +出图人 + 2 +出图人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +1FF +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-22.68851554197283 + 20 +11.64946121104678 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +设计人 + 2 +设计人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +200 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-56.52107004136551 + 20 +6.631247151580673 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +校对人 + 2 +校对人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +201 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-22.55630823361582 + 20 +6.631247151580673 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +批准人 + 2 +批准人 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +202 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbText + 10 +-10.16865380557565 + 20 +1.828358270057549 + 30 +0.0 + 40 +1.6234 + 1 + + 7 +STYLE1 +100 +AcDbAttributeDefinition + 3 +分页号 + 2 +分页号 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +203 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7207309650367 + 20 +5.664627131071221 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +5.664627131071221 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO1 + 2 +NO1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +204 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1217850460963 + 20 +6.330415810882414 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1217850460963 + 21 +6.330415810882414 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT1 + 2 +CONTENT1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +205 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.03894729766529 + 20 +6.334234442989484 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.03894729766529 + 21 +6.334234442989484 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE1 + 2 +DATE1 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +206 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7207309650367 + 20 +10.66462713107123 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7207309650367 + 21 +10.66462713107123 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO2 + 2 +NO2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +207 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1355565871456 + 20 +11.60491085411508 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1355565871456 + 21 +11.60491085411508 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT2 + 2 +CONTENT2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +208 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.07360627998781 + 20 +11.68424119340175 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998781 + 21 +11.68424119340175 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE2 + 2 +DATE2 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +209 +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.7872592865967 + 20 +15.73109000275175 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.7872592865967 + 21 +15.73109000275175 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO3 + 2 +NO3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20A +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1095011938893 + 20 +16.70606779151688 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +16.70606779151688 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT3 + 2 +CONTENT3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20B +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.07360627998781 + 20 +16.5191018682849 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.07360627998781 + 21 +16.5191018682849 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE3 + 2 +DATE3 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20C +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-140.6548477006349 + 20 +20.6408853191199 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-140.6548477006349 + 21 +20.6408853191199 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +NO4 + 2 +NO4 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20D +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-120.1095011938893 + 20 +21.51659752441713 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-120.1095011938893 + 21 +21.51659752441713 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +CONTENT4 + 2 +CONTENT4 + 70 + 0 +280 + 0 + 0 +ATTDEF + 5 +20E +330 +1AD +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +-94.19728740292493 + 20 +21.38413487189364 + 30 +0.0 + 40 +2.0 + 1 + + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +-94.19728740292493 + 21 +21.38413487189364 + 31 +0.0 +100 +AcDbAttributeDefinition + 3 +DATE4 + 2 +DATE4 + 70 + 0 +280 + 0 + 0 +MTEXT + 5 +3DF9 +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-45.84464905724212 + 20 +29.14494635408101 + 30 +0.0 + 40 +0.9999999999999998 + 41 +67.64692843849093 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;\H2.5x;OPTO-ELECTRONICS LTD.} + 73 + 1 + 44 +1.0 + 0 +ENDBLK + 5 +1AF +330 +1AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1D523 +330 +1D520 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C2AC965FD + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C2AC965FD + 1 + + 0 +MTEXT + 5 +1D524 +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-45.72951682433927 + 20 +-10.58361825664045 + 30 +0.0 + 40 +1.44 + 41 +46.75066786909162 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +Truly level A management standard(SVHC+I+II+III) + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +MTEXT + 5 +1D525 +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-45.72951682433927 + 20 +-7.33432199377441 + 30 +0.0 + 40 +1.44 + 41 +42.79564328458429 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +Truly level B management standard(SVHC+I+II) + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LWPOLYLINE + 5 +1D526 +330 +1D520 +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-10.07600261225406 + 10 +-48.82122156757873 + 20 +-12.23150981225413 + 10 +-46.66571436757859 + 20 +-12.23150981225413 + 10 +-46.66571436757859 + 20 +-10.07600261225406 + 0 +LWPOLYLINE + 5 +1D527 +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-49.32392143476115 + 20 +0.0 + 10 +0.0 + 20 +0.0 + 10 +0.0 + 20 +-12.95999999999995 + 10 +-49.32392143476115 + 20 +-12.95999999999995 + 0 +LINE + 5 +1D528 +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-49.32392143476108 + 20 +-9.710703737133969 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-9.710703737133969 + 31 +0.0 + 0 +LINE + 5 +1D529 +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-49.32392143476108 + 20 +-6.830703737133945 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-6.830703737133945 + 31 +0.0 + 0 +LINE + 5 +1D52A +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-49.32392143476108 + 20 +-3.950703737133978 + 30 +0.0 + 11 +-0.0000000000000568 + 21 +-3.950703737133978 + 31 +0.0 + 0 +LWPOLYLINE + 5 +1D52B +330 +1D520 +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-7.20199301225415 + 10 +-48.82122156757873 + 20 +-9.357500212254195 + 10 +-46.66571436757859 + 20 +-9.357500212254195 + 10 +-46.66571436757859 + 20 +-7.20199301225415 + 0 +LWPOLYLINE + 5 +1D52C +330 +1D520 +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-48.82122156757873 + 20 +-4.327983412254241 + 10 +-48.82122156757873 + 20 +-6.483490612254315 + 10 +-46.66571436757859 + 20 +-6.483490612254315 + 10 +-46.66571436757859 + 20 +-4.327983412254241 + 0 +HATCH + 5 +1D52D +330 +1D520 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 4 + 72 + 1 + 10 +-48.82122156757873 + 20 +-10.07600261225406 + 11 +-48.82122156757873 + 21 +-12.2315098122541 + 72 + 1 + 10 +-48.82122156757873 + 20 +-12.23150981225413 + 11 +-46.66571436757857 + 21 +-12.23150981225413 + 72 + 1 + 10 +-46.66571436757859 + 20 +-12.23150981225413 + 11 +-46.66571436757859 + 21 +-10.07600261225409 + 72 + 1 + 10 +-46.66571436757859 + 20 +-10.07600261225406 + 11 +-48.82122156757875 + 21 +-10.07600261225406 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-19.19193555033189 + 20 +-141.9458648705848 + 0 +MTEXT + 5 +1D52E +330 +1D520 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbMText + 10 +-48.27716666122309 + 20 +-1.122032805524725 + 30 +0.0 + 40 +1.6 + 41 +47.67915549554863 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\C3;Truly Hazardous Substance Management Standards} + 7 +STYLE1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +1D52F +330 +1D520 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbMText + 10 +-45.72951682433921 + 20 +-4.454321993774386 + 30 +0.0 + 40 +1.44 + 41 +40.0434669051204 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +Truly level C management standard(SVHC+I) + 7 +STYLE1 + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +0.0 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +ENDBLK + 5 +1D530 +330 +1D520 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1E165 +330 +1E162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +注释 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +注释 + 1 + + 0 +MTEXT + 5 +1E166 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.90197900399889 + 20 +-16.46167674102626 + 30 +0.0 + 40 +1.26 + 41 +28.46255999999999 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;\H1.157x;NOTE\fSimSun|b0|i0|c134|p2;:}\P{\fArial|b0|i0|c0|p32;1.}Unlabeled chamfering {\fArial|b0|i0|c0|p32;is} {\fArial|b0|i0|c0|p32;R0.2mm;} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +1E167 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.25970721803233 + 20 +-22.32664030328154 + 30 +0.0 + 40 +0.5000000000000004 + 0 +CIRCLE + 5 +1E168 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.05446478100583 + 20 +-27.77128214209258 + 30 +0.0 + 40 +1.000000000000001 + 0 +CIRCLE + 5 +1E169 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.05446478100583 + 20 +-27.77128214209258 + 30 +0.0 + 40 +0.5000000000000004 + 0 +HATCH + 5 +1E16A +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-23.25970721803233 + 20 +-22.3266403032815 + 40 +0.5000000000000004 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.8876054010539 + 20 +211.5170679085524 + 0 +HATCH + 5 +1E16B +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-23.05446478100583 + 20 +-27.77128214209258 + 40 +0.5000000000000004 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.7563044136898 + 20 +211.5466640814294 + 0 +MTEXT + 5 +1E16C +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171182 + 20 +-21.64640975578497 + 30 +0.0 + 40 +1.26 + 41 +31.37751662423548 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18;2. The sheet markpoint},{\fTimes New Roman|b0|i0|c0|p18;central PAD diameter %%c1.0mm},{\fTimes New Roman|b0|i0|c0|p18;Periphery diameter %%C2.0mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +1E16D +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-26.18885040313262 + 20 +-30.20831259305551 + 30 +0.0 + 40 +1.26 + 41 +34.49279999999995 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fTimes New Roman|b0|i0|c0|p18; diameter %%c0.6mm,Periphery diameter %%C2.0mm.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +1E16E +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.84777894466455 + 20 +-27.17013067877599 + 30 +0.0 + 40 +1.26 + 41 +39.49679999999999 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p32;3. \fTimes New Roman|b0|i0|c0|p18; The single Sheet markpoint central PAD} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +1E16F +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171182 + 20 +-44.65174780806186 + 30 +0.0 + 40 +1.26 + 41 +34.92720000000001 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +6. SMT positioning hole,diameter%%c3.2mm. + 7 +1 + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +1E170 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 0 + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-22.52815926695973 + 20 +-45.83643199122692 + 30 +0.0 + 40 +1.600000000000001 + 0 +CIRCLE + 5 +1E171 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-23.25970721803233 + 20 +-22.32664030328154 + 30 +0.0 + 40 +1.000552500000001 + 0 +MTEXT + 5 +1E172 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171182 + 20 +-33.5570722490841 + 30 +0.0 + 40 +1.26 + 41 +31.66269759890395 + 46 +0.0 + 71 + 1 + 72 + 5 + 3 +{\fArial|b0|i0|c0|p32;4.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c0|p18; \C1;the centre of the sheet markpoint as a starting point\fSimSun|b0|i0|c134|p32;,\fTimes New Roman|b0|i0|c0|p18;the region of diameter 5mm forbit circular marked p + 1 +oints.} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +1E173 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-22.87437309398427 + 20 +-34.34597993907212 + 40 +0.5000000000000004 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-775.502271277006 + 20 +199.4977282727621 + 0 +CIRCLE + 5 +1E174 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-22.87437309398427 + 20 +-34.34597993907212 + 30 +0.0 + 40 +1.000552500000001 + 0 +MTEXT + 5 +1E175 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbMText + 10 +-25.92904125171182 + 20 +-40.05930461425831 + 30 +0.0 + 40 +1.26 + 41 +33.06542084597073 + 46 +0.0 + 71 + 1 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p32;5.\fSimSun|b0|i0|c134|p32; \fTimes New Roman|b0|i0|c134|p18;Both of front and bot\fTimes New Roman|b0|i0|c0|p18;t\fTimes New Roman|b0|i0|c134|p18;om sides need markpoint} + 7 +1 + 73 + 1 + 44 +1.0 + 0 +HATCH + 5 +1E176 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 + 48 +0.3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-17.91607493700431 + 20 +-42.91798189660275 + 40 +0.5000000000000004 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-770.5439731200267 + 20 +190.9257263152315 + 0 +CIRCLE + 5 +1E177 +330 +1E162 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +-17.91607493700431 + 20 +-42.91798189660275 + 30 +0.0 + 40 +1.000552500000001 + 0 +ENDBLK + 5 +1E178 +330 +1E162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2219D +330 +2219A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +ARROW MARK + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +ARROW MARK + 1 + + 0 +CIRCLE + 5 +2219E +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +2219F +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +90.10104366884406 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +221A0 +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +75.86104366884405 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +221A1 +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +90.03104366884406 + 20 +-50.44631132326356 + 11 +89.73104366884408 + 21 +-49.84631132326359 + 72 + 1 + 10 +89.73104366884405 + 20 +-49.84631132326348 + 11 +89.43104366884407 + 21 +-50.44631132326344 + 72 + 1 + 10 +89.43104366884404 + 20 +-50.44631132326356 + 11 +89.58104366884403 + 21 +-50.44631132326356 + 72 + 1 + 10 +89.58104366884407 + 20 +-50.44631132326356 + 11 +89.58104366884407 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.58104366884407 + 20 +-51.94631132326356 + 11 +89.88104366884406 + 21 +-51.94631132326356 + 72 + 1 + 10 +89.88104366884403 + 20 +-51.94631132326356 + 11 +89.88104366884403 + 21 +-50.44631132326356 + 72 + 1 + 10 +89.88104366884403 + 20 +-50.44631132326356 + 11 +90.03104366884402 + 21 +-50.44631132326356 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +68.44472972432004 + 20 +-53.24289365193789 + 0 +LWPOLYLINE + 5 +221A2 +330 +2219A +100 +AcDbEntity + 8 +BOM + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +75.78104366884406 + 20 +-47.14631132326352 + 10 +90.18104366884404 + 20 +-47.14631132326352 + 42 +-0.414213562373095 + 10 +90.48104366884405 + 20 +-47.4463113232635 + 10 +90.48104366884405 + 20 +-54.34631132326351 + 42 +-0.414213562373095 + 10 +90.18104366884404 + 20 +-54.64631132326352 + 10 +75.78104366884406 + 20 +-54.64631132326352 + 42 +-0.414213562373095 + 10 +75.48104366884405 + 20 +-54.34631132326351 + 10 +75.48104366884405 + 20 +-47.4463113232635 + 42 +-0.414213562373095 + 0 +HATCH + 5 +221A3 +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +83.43104366884401 + 20 +-54.1963113232635 + 11 +84.03104366884398 + 21 +-53.89631132326352 + 72 + 1 + 10 +84.03104366884409 + 20 +-53.89631132326352 + 11 +83.43104366884413 + 21 +-53.59631132326354 + 72 + 1 + 10 +83.43104366884401 + 20 +-53.59631132326351 + 11 +83.43104366884401 + 21 +-53.74631132326348 + 72 + 1 + 10 +83.43104366884401 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-53.74631132326354 + 72 + 1 + 10 +81.93104366884401 + 20 +-53.74631132326354 + 11 +81.93104366884401 + 21 +-54.04631132326352 + 72 + 1 + 10 +81.93104366884401 + 20 +-54.0463113232635 + 11 +83.43104366884401 + 21 +-54.0463113232635 + 72 + 1 + 10 +83.43104366884401 + 20 +-54.0463113232635 + 11 +83.43104366884401 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +80.63446134016968 + 20 +-32.60999737873951 + 0 +MTEXT + 5 +221A4 +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbMText + 10 +82.9107544468302 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PTop View} + 73 + 1 + 44 +1.0 + 0 +CIRCLE + 5 +221A5 +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +221A6 +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +92.08010551550512 + 20 +-54.01631132326349 + 30 +0.0 + 40 +0.16 + 0 +CIRCLE + 5 +221A7 +330 +2219A +100 +AcDbEntity + 8 +Outline + 48 +0.3 +370 + -1 +100 +AcDbCircle + 10 +106.3201055155051 + 20 +-47.77631132326351 + 30 +0.0 + 40 +0.16 + 0 +HATCH + 5 +221A8 +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +92.15010551550512 + 20 +-50.44631132326356 + 11 +92.4501055155051 + 21 +-49.84631132326359 + 72 + 1 + 10 +92.45010551550513 + 20 +-49.84631132326348 + 11 +92.75010551550511 + 21 +-50.44631132326344 + 72 + 1 + 10 +92.75010551550514 + 20 +-50.44631132326356 + 11 +92.60010551550515 + 21 +-50.44631132326356 + 72 + 1 + 10 +92.6001055155051 + 20 +-50.44631132326356 + 11 +92.6001055155051 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.6001055155051 + 20 +-51.94631132326356 + 11 +92.30010551550512 + 21 +-51.94631132326356 + 72 + 1 + 10 +92.30010551550515 + 20 +-51.94631132326356 + 11 +92.30010551550515 + 21 +-50.44631132326356 + 72 + 1 + 10 +92.30010551550515 + 20 +-50.44631132326356 + 11 +92.15010551550516 + 21 +-50.44631132326356 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +113.7364194600292 + 20 +-53.24289365193789 + 0 +LWPOLYLINE + 5 +221A9 +330 +2219A +100 +AcDbEntity + 8 +BOM + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +106.4001055155051 + 20 +-47.14631132326352 + 10 +92.00010551550514 + 20 +-47.14631132326352 + 42 +0.414213562373095 + 10 +91.70010551550513 + 20 +-47.4463113232635 + 10 +91.70010551550513 + 20 +-54.34631132326351 + 42 +0.414213562373095 + 10 +92.00010551550514 + 20 +-54.64631132326352 + 10 +106.4001055155051 + 20 +-54.64631132326352 + 42 +0.414213562373095 + 10 +106.7001055155051 + 20 +-54.34631132326351 + 10 +106.7001055155051 + 20 +-47.4463113232635 + 42 +0.414213562373095 + 0 +HATCH + 5 +221AA +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +98.75010551550517 + 20 +-54.1963113232635 + 11 +98.1501055155052 + 21 +-53.89631132326352 + 72 + 1 + 10 +98.15010551550509 + 20 +-53.89631132326352 + 11 +98.75010551550506 + 21 +-53.59631132326354 + 72 + 1 + 10 +98.75010551550517 + 20 +-53.59631132326351 + 11 +98.75010551550517 + 21 +-53.74631132326348 + 72 + 1 + 10 +98.75010551550517 + 20 +-53.74631132326354 + 11 +100.2501055155052 + 21 +-53.74631132326354 + 72 + 1 + 10 +100.2501055155052 + 20 +-53.74631132326354 + 11 +100.2501055155052 + 21 +-54.04631132326352 + 72 + 1 + 10 +100.2501055155052 + 20 +-54.0463113232635 + 11 +98.75010551550517 + 21 +-54.0463113232635 + 72 + 1 + 10 +98.75010551550517 + 20 +-54.0463113232635 + 11 +98.75010551550517 + 21 +-54.19631132326347 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +101.5466878441795 + 20 +-32.60999737873951 + 0 +MTEXT + 5 +221AB +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbMText + 10 +99.25754528421453 + 20 +-50.89631132326352 + 30 +0.0 + 40 +1.0 + 41 +10.03865465378298 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;Arrow Mark\PBottom View} + 73 + 1 + 44 +1.0 + 0 +LWPOLYLINE + 5 +221AC +330 +2219A +100 +AcDbEntity + 8 +Bhatch + 6 +ACAD_ISO07W100 + 48 +0.1 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +74.09321687268675 + 20 +-43.33089462095055 + 10 +108.0105727107277 + 20 +-43.33089462095055 + 10 +108.0105727107277 + 20 +-56.04821289094221 + 10 +74.09321687268675 + 20 +-56.04821289094221 + 0 +MTEXT + 5 +221AD +330 +2219A +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +91.36301880784649 + 20 +-45.05723351073044 + 30 +0.0 + 40 +1.5 + 41 +18.77113865339908 + 46 +0.0 + 71 + 5 + 72 + 5 + 1 +{\fArial|b0|i0|c0|p34;\C1;Arrow Mark Design} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +4.178155625066155 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +ENDBLK + 5 +221AE +330 +2219A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +22605 +330 +22602 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7B2656CB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7B2656CB + 1 + + 0 +MTEXT + 5 +22606 +330 +22602 +100 +AcDbEntity + 8 +BOM + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +4.71438453245824 + 20 +20.33828871688361 + 30 +0.0 + 40 +1.48 + 41 +44.84718910217411 + 46 +0.0 + 71 + 4 + 72 + 5 + 3 +{\fTimes New Roman|b0|i0|c0|p18;NOTE:\PBoth of front and bottom sides need markpoint;\PIncrease the direction mark on front side.\P\fSimSun|b0|i0|c134|p2;\C6;\P\C2;The dimensions in yellow rectangle can be ignored in manufacture.\P\P\C1;Silkscreen ma + 1 +rk(white),diameter %%c2.0mm.\C256;\P \C1;applied on the same side as the \C3;QR code area\C256;(Silkscreen Block)\C1;.} + 73 + 1 + 44 +1.0 + 0 +ENDBLK + 5 +22607 +330 +22602 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2AE76 +330 +2AE73 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C01CC1A43 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C01CC1A43 + 1 + + 0 +HATCH + 5 +2AE77 +330 +2AE73 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +2.488484281304522 + 20 +1.5 + 11 +1.488484281304522 + 21 +3.5 + 72 + 1 + 10 +1.488484281304522 + 20 +3.5 + 11 +0.4884842813045225 + 21 +1.5 + 72 + 1 + 10 +0.4884842813045225 + 20 +1.5 + 11 +0.9884842813045225 + 21 +1.5 + 72 + 1 + 10 +0.9884842813045225 + 20 +1.5 + 11 +0.9884842813045225 + 21 +-3.5 + 72 + 1 + 10 +0.9884842813045225 + 20 +-3.5 + 11 +1.988484281304522 + 21 +-3.5 + 72 + 1 + 10 +1.988484281304522 + 20 +-3.5 + 11 +1.988484281304522 + 21 +1.5 + 72 + 1 + 10 +1.988484281304522 + 20 +1.5 + 11 +2.488484281304522 + 21 +1.5 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-69.46589553377555 + 20 +-7.821941095581337 + 0 +ENDBLK + 5 +2AE78 +330 +2AE73 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2AE7C +330 +2AE79 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +A$C019D3CDB + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C019D3CDB + 1 + + 0 +HATCH + 5 +2AE7D +330 +2AE79 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 7 + 72 + 1 + 10 +5.422355840182547 + 20 +1.5 + 11 +4.422355840182547 + 21 +3.5 + 72 + 1 + 10 +4.422355840182547 + 20 +3.5 + 11 +3.422355840182547 + 21 +1.5 + 72 + 1 + 10 +3.422355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +1.5 + 72 + 1 + 10 +3.922355840182547 + 20 +1.5 + 11 +3.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +3.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +-3.5 + 72 + 1 + 10 +4.922355840182547 + 20 +-3.5 + 11 +4.922355840182547 + 21 +1.5 + 72 + 1 + 10 +4.922355840182547 + 20 +1.5 + 11 +5.422355840182547 + 21 +1.5 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-66.53202397489753 + 20 +-7.821941095581337 + 0 +ENDBLK + 5 +2AE7E +330 +2AE79 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B0A1 +330 +2B09E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C3E133D25 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C3E133D25 + 1 + + 0 +INSERT + 5 +2B0A2 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U10 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2B0A3 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U11 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2B0A4 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U12 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +2B0A5 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U13 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +HATCH + 5 +2B0A6 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +Continuous +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 3 + 92 + 1 + 93 + 1 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.466611381298076 + 50 +0.0 + 51 +360.0 + 73 + 1 + 97 + 0 + 92 + 16 + 93 + 2 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.293811381298067 + 50 +318.8290296183745 + 51 +131.1709703816255 + 73 + 1 + 72 + 1 + 10 +-9.038547454026002 + 20 +6.077385167753105 + 11 +-7.212906234959971 + 21 +4.251743948687078 + 97 + 0 + 92 + 16 + 93 + 2 + 72 + 1 + 10 +-7.335094286748983 + 20 +4.129555896897983 + 11 +-9.16073550581501 + 21 +5.95519711596401 + 72 + 2 + 10 +-8.186820870387576 + 20 +5.10347053232556 + 40 +1.293811381298075 + 50 +138.8290296183741 + 51 +311.1709703816259 + 73 + 1 + 97 + 0 + 75 + 0 + 76 + 1 + 98 + 1 + 10 +-75.09848754182313 + 20 +-72.2763994834498 + 0 +INSERT + 5 +2B0A7 +330 +2B09E +100 +AcDbEntity + 8 +TIE-BAR + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U14 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 147 +1040 +0.3 +1070 + 77 +1070 + 0 +1002 +} + 0 +INSERT + 5 +2B0A8 +330 +2B09E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbBlockReference + 2 +*U15 + 10 +0.0 + 20 +0.0 + 30 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 147 +1040 +0.3 +1070 + 77 +1070 + 0 +1002 +} + 0 +ENDBLK + 5 +2B0A9 +330 +2B09E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B0AB +330 +2B0AA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U10 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U10 + 1 + + 0 +TEXT + 5 +2B0AC +330 +2B0AA +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.4713402820251811 + 20 +-2.364329823509862 + 30 +0.0 + 40 +1.0 + 1 +Lead-free code +100 +AcDbText + 0 +ENDBLK + 5 +2B0AD +330 +2B0AA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B0AF +330 +2B0AE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U11 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U11 + 1 + + 0 +TEXT + 5 +2B0B0 +330 +2B0AE +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.3388220538814421 + 20 +-0.5367848439423596 + 30 +0.0 + 40 +1.000199999999999 + 1 +Flex-Rigid PCB supplier code +100 +AcDbText + 0 +ENDBLK + 5 +2B0B1 +330 +2B0AE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B0B3 +330 +2B0B2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U12 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U12 + 1 + + 0 +TEXT + 5 +2B0B4 +330 +2B0B2 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-5.276082657392193 + 20 +4.583764497308465 + 30 +0.0 + 40 +1.036799999999999 + 1 +TRULY-* +100 +AcDbText + 0 +ENDBLK + 5 +2B0B5 +330 +2B0B2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B0B7 +330 +2B0B6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U13 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U13 + 1 + + 0 +TEXT + 5 +2B0B8 +330 +2B0B6 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-9.177367779996832 + 20 +4.540790212822594 + 30 +0.0 + 40 +1.2096 + 1 +Pb +100 +AcDbText + 0 +ENDBLK + 5 +2B0B9 +330 +2B0B6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B15E +330 +2B15D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U14 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U14 + 1 + + 0 +SOLID + 5 +2B15F +330 +2B15D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-2.083528000882461 + 20 +3.355917289695391 + 30 +0.0 + 11 +-2.635811514521265 + 21 +5.041904349256412 + 31 +0.0 + 12 +-1.566574549870173 + 22 +3.626170702743706 + 32 +0.0 + 13 +-1.566574549870173 + 23 +3.626170702743706 + 33 +0.0 + 0 +LWPOLYLINE + 5 +2B160 +330 +2B15D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-1.825051275376317 + 20 +3.491043996219548 + 10 +0.0 + 20 +0.0 + 0 +ENDBLK + 5 +2B161 +330 +2B15D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2B163 +330 +2B162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U15 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U15 + 1 + + 0 +SOLID + 5 +2B164 +330 +2B162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-6.691607045107036 + 20 +3.27366957969832 + 30 +0.0 + 11 +-7.830374642497077 + 21 +4.634102526807055 + 31 +0.0 + 12 +-6.311940554011773 + 22 +3.716536527344211 + 32 +0.0 + 13 +-6.311940554011773 + 23 +3.716536527344211 + 33 +0.0 + 0 +LWPOLYLINE + 5 +2B165 +330 +2B162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-6.501773799559404 + 20 +3.495103053521265 + 10 +-0.0997552242706661 + 20 +-1.993299143406886 + 0 +ENDBLK + 5 +2B166 +330 +2B162 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +2DC0E +330 +2DC0C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +_ClosedBlank + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +_ClosedBlank + 1 + + 0 +LINE + 5 +2DC0F +330 +2DC0C +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666667 + 30 +0.0 + 11 +0.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +2DC10 +330 +2DC0C +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666667 + 31 +0.0 + 0 +LINE + 5 +2DC11 +330 +2DC0C +100 +AcDbEntity + 8 +hatch + 62 + 0 +370 + -2 +100 +AcDbLine + 10 +-1.0 + 20 +0.1666666666666667 + 30 +0.0 + 11 +-1.0 + 21 +-0.1666666666666667 + 31 +0.0 + 0 +ENDBLK + 5 +2DC12 +330 +2DC0C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +348F1 +330 +348E6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D17 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D17 + 1 + + 0 +LINE + 5 +3606D +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-235.9999999999999 + 20 +174.5064582119143 + 30 +0.0 + 11 +-235.9999999999999 + 21 +200.5044002352037 + 31 +0.0 + 0 +LINE + 5 +3606E +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-45.99999999999994 + 20 +174.5064582119144 + 30 +0.0 + 11 +-45.99999999999994 + 21 +200.5044002352037 + 31 +0.0 + 0 +LINE + 5 +3606F +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-235.4999999999999 + 20 +200.3044002352037 + 30 +0.0 + 11 +-148.95 + 21 +200.3044002352037 + 31 +0.0 + 0 +LINE + 5 +36070 +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-46.49999999999994 + 20 +200.3044002352037 + 30 +0.0 + 11 +-133.05 + 21 +200.3044002352037 + 31 +0.0 + 0 +SOLID + 5 +36071 +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.4999999999999 + 20 +200.387733568537 + 30 +0.0 + 11 +-235.4999999999999 + 21 +200.2210669018703 + 31 +0.0 + 12 +-235.9999999999999 + 22 +200.3044002352037 + 32 +0.0 + 13 +-235.9999999999999 + 23 +200.3044002352037 + 33 +0.0 + 0 +SOLID + 5 +36072 +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.49999999999994 + 20 +200.387733568537 + 30 +0.0 + 11 +-46.49999999999994 + 21 +200.2210669018703 + 31 +0.0 + 12 +-45.99999999999994 + 22 +200.3044002352037 + 32 +0.0 + 13 +-45.99999999999994 + 23 +200.3044002352037 + 33 +0.0 + 0 +MTEXT + 5 +36073 +330 +348E6 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-141.0 + 20 +200.3044002352037 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;190.00%%P0.50 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +36074 +330 +348E6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-235.9999999999999 + 20 +174.3064582119143 + 30 +0.0 + 0 +POINT + 5 +36075 +330 +348E6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-45.99999999999994 + 20 +174.3064582119144 + 30 +0.0 + 0 +POINT + 5 +36076 +330 +348E6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-45.99999999999994 + 20 +200.3044002352037 + 30 +0.0 + 0 +ENDBLK + 5 +348F2 +330 +348E6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34934 +330 +34929 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D18 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D18 + 1 + + 0 +LINE + 5 +37344 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +158.0064582119116 + 30 +0.0 + 11 +-232.9999999999999 + 21 +194.1612403119483 + 31 +0.0 + 0 +LINE + 5 +37345 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-50.0 + 20 +93.00645821191698 + 30 +0.0 + 11 +-49.99999999999999 + 21 +194.1612403119483 + 31 +0.0 + 0 +LINE + 5 +37346 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-232.4999999999999 + 20 +193.9612403119483 + 30 +0.0 + 11 +-148.8 + 21 +193.9612403119483 + 31 +0.0 + 0 +LINE + 5 +37347 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-50.49999999999999 + 20 +193.9612403119483 + 30 +0.0 + 11 +-133.2 + 21 +193.9612403119483 + 31 +0.0 + 0 +SOLID + 5 +37348 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-232.4999999999999 + 20 +194.0445736452816 + 30 +0.0 + 11 +-232.4999999999999 + 21 +193.877906978615 + 31 +0.0 + 12 +-232.9999999999999 + 22 +193.9612403119483 + 32 +0.0 + 13 +-232.9999999999999 + 23 +193.9612403119483 + 33 +0.0 + 0 +SOLID + 5 +37349 +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-50.49999999999999 + 20 +194.0445736452816 + 30 +0.0 + 11 +-50.49999999999999 + 21 +193.877906978615 + 31 +0.0 + 12 +-49.99999999999999 + 22 +193.9612403119483 + 32 +0.0 + 13 +-49.99999999999999 + 23 +193.9612403119483 + 33 +0.0 + 0 +MTEXT + 5 +3734A +330 +34929 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-141.0 + 20 +193.9612403119483 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;183.00%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3734B +330 +34929 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +157.8064582119116 + 30 +0.0 + 0 +POINT + 5 +3734C +330 +34929 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-50.0 + 20 +92.80645821191698 + 30 +0.0 + 0 +POINT + 5 +3734D +330 +34929 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.99999999999999 + 20 +193.9612403119483 + 30 +0.0 + 0 +ENDBLK + 5 +34935 +330 +34929 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34A63 +330 +34A58 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D19 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D19 + 1 + + 0 +LINE + 5 +3A935 +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.6124999999999 + 20 +172.0064582119142 + 30 +0.0 + 11 +-226.6124999999999 + 21 +185.6895571352251 + 31 +0.0 + 0 +LINE + 5 +3A936 +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-67.9874999999999 + 20 +172.0064582119142 + 30 +0.0 + 11 +-67.9874999999999 + 21 +185.6895571352251 + 31 +0.0 + 0 +LINE + 5 +3A937 +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.1124999999999 + 20 +185.4895571352251 + 30 +0.0 + 11 +-154.74375 + 21 +185.4895571352251 + 31 +0.0 + 0 +LINE + 5 +3A938 +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-68.4874999999999 + 20 +185.4895571352251 + 30 +0.0 + 11 +-136.74375 + 21 +185.4895571352251 + 31 +0.0 + 0 +SOLID + 5 +3A939 +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-226.1124999999999 + 20 +185.5728904685585 + 30 +0.0 + 11 +-226.1124999999999 + 21 +185.4062238018918 + 31 +0.0 + 12 +-226.6124999999999 + 22 +185.4895571352251 + 32 +0.0 + 13 +-226.6124999999999 + 23 +185.4895571352251 + 33 +0.0 + 0 +SOLID + 5 +3A93A +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-68.4874999999999 + 20 +185.5728904685585 + 30 +0.0 + 11 +-68.4874999999999 + 21 +185.4062238018918 + 31 +0.0 + 12 +-67.9874999999999 + 22 +185.4895571352251 + 32 +0.0 + 13 +-67.9874999999999 + 23 +185.4895571352251 + 33 +0.0 + 0 +MTEXT + 5 +3A93B +330 +34A58 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-145.74375 + 20 +185.4895571352251 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;158.625%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3A93C +330 +34A58 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-226.6124999999999 + 20 +171.8064582119142 + 30 +0.0 + 0 +POINT + 5 +3A93D +330 +34A58 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-67.9874999999999 + 20 +171.8064582119142 + 30 +0.0 + 0 +POINT + 5 +3A93E +330 +34A58 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-67.9874999999999 + 20 +185.4895571352251 + 30 +0.0 + 0 +ENDBLK + 5 +34A64 +330 +34A58 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34A9B +330 +34A90 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D20 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D20 + 1 + + 0 +LINE + 5 +3A916 +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.6124999999999 + 20 +172.0064582119142 + 30 +0.0 + 11 +-226.6124999999999 + 21 +188.8353134272383 + 31 +0.0 + 0 +LINE + 5 +3A917 +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-208.9874999999999 + 20 +172.0314582119143 + 30 +0.0 + 11 +-208.9874999999999 + 21 +188.8353134272383 + 31 +0.0 + 0 +LINE + 5 +3A918 +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-227.1124999999999 + 20 +188.6353134272383 + 30 +0.0 + 11 +-227.6124999999999 + 21 +188.6353134272383 + 31 +0.0 + 0 +LINE + 5 +3A919 +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-208.4874999999999 + 20 +188.6353134272383 + 30 +0.0 + 11 +-207.9874999999999 + 21 +188.6353134272383 + 31 +0.0 + 0 +LINE + 5 +3A91A +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.6124999999999 + 20 +188.6353134272383 + 30 +0.0 + 11 +-208.9874999999999 + 21 +188.6353134272383 + 31 +0.0 + 0 +SOLID + 5 +3A91B +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-227.1124999999999 + 20 +188.7186467605717 + 30 +0.0 + 11 +-227.1124999999999 + 21 +188.551980093905 + 31 +0.0 + 12 +-226.6124999999999 + 22 +188.6353134272383 + 32 +0.0 + 13 +-226.6124999999999 + 23 +188.6353134272383 + 33 +0.0 + 0 +SOLID + 5 +3A91C +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-208.4874999999999 + 20 +188.7186467605717 + 30 +0.0 + 11 +-208.4874999999999 + 21 +188.551980093905 + 31 +0.0 + 12 +-208.9874999999999 + 22 +188.6353134272383 + 32 +0.0 + 13 +-208.9874999999999 + 23 +188.6353134272383 + 33 +0.0 + 0 +MTEXT + 5 +3A91D +330 +34A90 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-200.7874999999999 + 20 +188.6353134272383 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;17.63%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3A91E +330 +34A90 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-226.6124999999999 + 20 +171.8064582119142 + 30 +0.0 + 0 +POINT + 5 +3A91F +330 +34A90 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-208.9874999999999 + 20 +171.8314582119143 + 30 +0.0 + 0 +POINT + 5 +3A920 +330 +34A90 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-208.9874999999999 + 20 +188.6353134272383 + 30 +0.0 + 0 +ENDBLK + 5 +34A9C +330 +34A90 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34ACA +330 +34ABF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D21 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D21 + 1 + + 0 +LINE + 5 +37358 +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-232.1999999999999 + 20 +172.3064582119144 + 30 +0.0 + 11 +-257.7972173086204 + 21 +172.3064582119144 + 31 +0.0 + 0 +LINE + 5 +37359 +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-232.1999999999999 + 20 +63.30645821191436 + 30 +0.0 + 11 +-257.7972173086204 + 21 +63.30645821191437 + 31 +0.0 + 0 +LINE + 5 +3735A +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-257.5972173086204 + 20 +171.8064582119144 + 30 +0.0 + 11 +-257.5972173086204 + 21 +125.4564582119142 + 31 +0.0 + 0 +LINE + 5 +3735B +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-257.5972173086204 + 20 +63.80645821191437 + 30 +0.0 + 11 +-257.5972173086204 + 21 +110.1564582119142 + 31 +0.0 + 0 +SOLID + 5 +3735C +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-257.6805506419537 + 20 +171.8064582119144 + 30 +0.0 + 11 +-257.5138839752871 + 21 +171.8064582119144 + 31 +0.0 + 12 +-257.5972173086204 + 22 +172.3064582119144 + 32 +0.0 + 13 +-257.5972173086204 + 23 +172.3064582119144 + 33 +0.0 + 0 +SOLID + 5 +3735D +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-257.6805506419537 + 20 +63.80645821191437 + 30 +0.0 + 11 +-257.5138839752871 + 21 +63.80645821191437 + 31 +0.0 + 12 +-257.5972173086204 + 22 +63.30645821191437 + 32 +0.0 + 13 +-257.5972173086204 + 23 +63.30645821191437 + 33 +0.0 + 0 +MTEXT + 5 +3735E +330 +34ABF +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-257.5972173086204 + 20 +117.8064582119142 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;109.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3735F +330 +34ABF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-231.9999999999999 + 20 +172.3064582119144 + 30 +0.0 + 0 +POINT + 5 +37360 +330 +34ABF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-231.9999999999999 + 20 +63.30645821191436 + 30 +0.0 + 0 +POINT + 5 +37361 +330 +34ABF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-257.5972173086204 + 20 +63.30645821191437 + 30 +0.0 + 0 +ENDBLK + 5 +34ACB +330 +34ABF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34B02 +330 +34AF7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D22 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D22 + 1 + + 0 +LINE + 5 +3AAC8 +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.8124999999999 + 20 +171.8064582119142 + 30 +0.0 + 11 +-253.7405731072253 + 21 +171.8064582119142 + 31 +0.0 + 0 +LINE + 5 +3AAC9 +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-226.8124999999999 + 20 +72.80645821191422 + 30 +0.0 + 11 +-253.7405731072253 + 21 +72.80645821191422 + 31 +0.0 + 0 +LINE + 5 +3AACA +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-253.5405731072253 + 20 +171.3064582119142 + 30 +0.0 + 11 +-253.5405731072253 + 21 +120.8064582119145 + 31 +0.0 + 0 +LINE + 5 +3AACB +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-253.5405731072253 + 20 +73.30645821191422 + 30 +0.0 + 11 +-253.5405731072253 + 21 +106.4064582119145 + 31 +0.0 + 0 +SOLID + 5 +3AACC +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-253.6239064405586 + 20 +171.3064582119142 + 30 +0.0 + 11 +-253.457239773892 + 21 +171.3064582119142 + 31 +0.0 + 12 +-253.5405731072253 + 22 +171.8064582119142 + 32 +0.0 + 13 +-253.5405731072253 + 23 +171.8064582119142 + 33 +0.0 + 0 +SOLID + 5 +3AACD +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-253.6239064405586 + 20 +73.30645821191422 + 30 +0.0 + 11 +-253.457239773892 + 21 +73.30645821191422 + 31 +0.0 + 12 +-253.5405731072253 + 22 +72.80645821191422 + 32 +0.0 + 13 +-253.5405731072253 + 23 +72.80645821191422 + 33 +0.0 + 0 +MTEXT + 5 +3AACE +330 +34AF7 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-253.5405731072253 + 20 +113.6064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;99.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AACF +330 +34AF7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-226.6124999999999 + 20 +171.8064582119142 + 30 +0.0 + 0 +POINT + 5 +3AAD0 +330 +34AF7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-226.6124999999999 + 20 +72.80645821191422 + 30 +0.0 + 0 +POINT + 5 +3AAD1 +330 +34AF7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-253.5405731072253 + 20 +72.80645821191422 + 30 +0.0 + 0 +ENDBLK + 5 +34B03 +330 +34AF7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34B3A +330 +34B2F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D23 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D23 + 1 + + 0 +LINE + 5 +3AB57 +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-233.1999999999999 + 20 +157.8064582119116 + 30 +0.0 + 11 +-249.8210793437621 + 21 +157.8064582119116 + 31 +0.0 + 0 +LINE + 5 +3AB58 +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-50.2 + 20 +92.80645821191698 + 30 +0.0 + 11 +-249.8210793437621 + 21 +92.80645821191703 + 31 +0.0 + 0 +LINE + 5 +3AB59 +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-249.6210793437621 + 20 +157.3064582119116 + 30 +0.0 + 11 +-249.6210793437621 + 21 +119.0064582119144 + 31 +0.0 + 0 +LINE + 5 +3AB5A +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-249.6210793437621 + 20 +93.30645821191703 + 30 +0.0 + 11 +-249.6210793437621 + 21 +104.6064582119144 + 31 +0.0 + 0 +SOLID + 5 +3AB5B +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-249.7044126770955 + 20 +157.3064582119116 + 30 +0.0 + 11 +-249.5377460104288 + 21 +157.3064582119116 + 31 +0.0 + 12 +-249.6210793437621 + 22 +157.8064582119116 + 32 +0.0 + 13 +-249.6210793437621 + 23 +157.8064582119116 + 33 +0.0 + 0 +SOLID + 5 +3AB5C +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-249.7044126770955 + 20 +93.30645821191703 + 30 +0.0 + 11 +-249.5377460104288 + 21 +93.30645821191703 + 31 +0.0 + 12 +-249.6210793437621 + 22 +92.80645821191703 + 32 +0.0 + 13 +-249.6210793437621 + 23 +92.80645821191703 + 33 +0.0 + 0 +MTEXT + 5 +3AB5D +330 +34B2F +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-249.6210793437622 + 20 +111.8064582119143 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;65.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AB5E +330 +34B2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +157.8064582119116 + 30 +0.0 + 0 +POINT + 5 +3AB5F +330 +34B2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-50.0 + 20 +92.80645821191698 + 30 +0.0 + 0 +POINT + 5 +3AB60 +330 +34B2F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-249.6210793437621 + 20 +92.80645821191703 + 30 +0.0 + 0 +ENDBLK + 5 +34B3B +330 +34B2F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34B90 +330 +34B85 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D24 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D24 + 1 + + 0 +LINE + 5 +3A17A +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-231.9999999999999 + 20 +63.10645821191436 + 30 +0.0 + 11 +-231.9999999999999 + 21 +51.92074173141509 + 31 +0.0 + 0 +LINE + 5 +3A17B +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-49.8 + 20 +63.10645821191436 + 30 +0.0 + 11 +-49.8 + 21 +51.92074173141509 + 31 +0.0 + 0 +LINE + 5 +3A17C +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-231.4999999999999 + 20 +52.12074173141509 + 30 +0.0 + 11 +-148.85 + 21 +52.12074173141509 + 31 +0.0 + 0 +LINE + 5 +3A17D +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-50.3 + 20 +52.12074173141509 + 30 +0.0 + 11 +-132.95 + 21 +52.12074173141509 + 31 +0.0 + 0 +SOLID + 5 +3A17E +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-231.4999999999999 + 20 +52.20407506474843 + 30 +0.0 + 11 +-231.4999999999999 + 21 +52.03740839808176 + 31 +0.0 + 12 +-231.9999999999999 + 22 +52.12074173141509 + 32 +0.0 + 13 +-231.9999999999999 + 23 +52.12074173141509 + 33 +0.0 + 0 +SOLID + 5 +3A17F +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-50.3 + 20 +52.20407506474843 + 30 +0.0 + 11 +-50.3 + 21 +52.03740839808176 + 31 +0.0 + 12 +-49.8 + 22 +52.12074173141509 + 32 +0.0 + 13 +-49.8 + 23 +52.12074173141509 + 33 +0.0 + 0 +MTEXT + 5 +3A180 +330 +34B85 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-140.9 + 20 +52.12074173141509 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;182.20%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3A181 +330 +34B85 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-231.9999999999999 + 20 +63.30645821191436 + 30 +0.0 + 0 +POINT + 5 +3A182 +330 +34B85 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.8 + 20 +63.30645821191436 + 30 +0.0 + 0 +POINT + 5 +3A183 +330 +34B85 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.8 + 20 +52.12074173141509 + 30 +0.0 + 0 +ENDBLK + 5 +34B91 +330 +34B85 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +34BBE +330 +34BB3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D25 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D25 + 1 + + 0 +LINE + 5 +3AA90 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +176.8064582119144 + 30 +0.0 + 11 +-26.66210739626401 + 21 +176.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3AA91 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +58.80645821191439 + 30 +0.0 + 11 +-26.66210739626403 + 21 +58.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3AA92 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.862107396264 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.86210739626402 + 21 +125.6064582119144 + 31 +0.0 + 0 +LINE + 5 +3AA93 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.86210739626403 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.86210739626402 + 21 +110.0064582119144 + 31 +0.0 + 0 +SOLID + 5 +3AA94 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959734 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.77877406293067 + 21 +176.3064582119144 + 31 +0.0 + 12 +-26.862107396264 + 22 +176.8064582119144 + 32 +0.0 + 13 +-26.862107396264 + 23 +176.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3AA95 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959736 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.7787740629307 + 21 +59.30645821191438 + 31 +0.0 + 12 +-26.86210739626403 + 22 +58.80645821191438 + 32 +0.0 + 13 +-26.86210739626403 + 23 +58.80645821191438 + 33 +0.0 + 0 +MTEXT + 5 +3AA96 +330 +34BB3 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-26.86210739626404 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AA97 +330 +34BB3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +176.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3AA98 +330 +34BB3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +58.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3AA99 +330 +34BB3 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-26.86210739626403 + 20 +58.80645821191438 + 30 +0.0 + 0 +ENDBLK + 5 +34BBF +330 +34BB3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3999F +330 +39995 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C023E2B9B + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C023E2B9B + 1 + + 0 +LWPOLYLINE + 5 +39996 +102 +{ACAD_REACTORS +330 +39997 +102 +} +330 +39995 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +141.7749998260466 + 20 +-113.80645825576 + 10 +149.1749998260466 + 20 +-113.80645825576 + 42 +-0.4142135623730943 + 10 +149.3749998260466 + 20 +-114.00645825576 + 10 +149.3749998260466 + 20 +-117.00645825576 + 42 +-0.414213562373095 + 10 +149.1749998260466 + 20 +-117.20645825576 + 10 +141.7749998260466 + 20 +-117.20645825576 + 42 +-0.414213562373095 + 10 +141.5749998260466 + 20 +-117.00645825576 + 10 +141.5749998260466 + 20 +-114.00645825576 + 42 +-0.414213562373095 + 0 +HATCH + 5 +39997 +330 +39995 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 8 + 10 +141.7749998260466 + 20 +-113.80645825576 + 42 +0.4142135623730951 + 10 +141.5749998260466 + 20 +-114.00645825576 + 42 +0.0 + 10 +141.5749998260466 + 20 +-117.00645825576 + 42 +0.4142135623730951 + 10 +141.7749998260466 + 20 +-117.20645825576 + 42 +0.0 + 10 +149.1749998260466 + 20 +-117.20645825576 + 42 +0.4142135623730951 + 10 +149.3749998260466 + 20 +-117.00645825576 + 42 +0.0 + 10 +149.3749998260466 + 20 +-114.00645825576 + 42 +0.4142135623730941 + 10 +149.1749998260466 + 20 +-113.80645825576 + 42 +0.0 + 97 + 1 +330 +39996 + 75 + 0 + 76 + 1 + 52 +0.0 + 41 +1.0 + 77 + 0 + 78 + 1 + 53 +45.0 + 43 +199.2494213250592 + 44 +-148.639032750684 + 45 +-0.0883883476483184 + 46 +0.0883883476483184 + 79 + 0 + 47 +0.0389058228680789 + 98 + 1 + 10 +148.8328296122412 + 20 +-115.2463498541414 + 0 +LWPOLYLINE + 5 +39998 +330 +39995 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 24 + 70 + 1 + 43 +0.0 + 10 +141.4999998260466 + 20 +-108.43145825576 + 10 +141.4999998260466 + 20 +-100.88145825576 + 42 +-0.4142135623731004 + 10 +141.6999998260466 + 20 +-100.68145825576 + 10 +149.2499998260466 + 20 +-100.68145825576 + 42 +-0.41421356237309 + 10 +149.4499998260466 + 20 +-100.88145825576 + 10 +149.4499998260466 + 20 +-108.43145825576 + 42 +-0.4142135623731001 + 10 +149.2499998260466 + 20 +-108.63145825576 + 10 +148.9749998260466 + 20 +-108.63145825576 + 42 +0.4142135623730951 + 10 +148.4749998260466 + 20 +-109.13145825576 + 10 +148.4749998260466 + 20 +-113.20645825576 + 42 +0.4142135623730951 + 10 +148.9749998260466 + 20 +-113.70645825576 + 10 +149.1749998260466 + 20 +-113.70645825576 + 42 +-0.4142135623730959 + 10 +149.4749998260466 + 20 +-114.00645825576 + 10 +149.4749998260466 + 20 +-117.00645825576 + 42 +-0.4142135623730949 + 10 +149.1749998260466 + 20 +-117.30645825576 + 10 +141.7749998260466 + 20 +-117.30645825576 + 42 +-0.4142135623730949 + 10 +141.4749998260466 + 20 +-117.00645825576 + 10 +141.4749998260466 + 20 +-114.00645825576 + 42 +-0.414213562373095 + 10 +141.7749998260466 + 20 +-113.70645825576 + 10 +141.9749998260466 + 20 +-113.70645825576 + 42 +0.4142135623730951 + 10 +142.4749998260466 + 20 +-113.20645825576 + 10 +142.4749998260466 + 20 +-109.13145825576 + 42 +0.414213562373095 + 10 +141.9749998260466 + 20 +-108.63145825576 + 10 +141.6999998260466 + 20 +-108.63145825576 + 42 +-0.4142135623730953 + 0 +LINE + 5 +39999 +330 +39995 +100 +AcDbEntity + 8 +0 + 6 +CENTERX2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +140.9999998260466 + 20 +-104.65645825576 + 30 +0.0 + 11 +149.9499998260466 + 21 +-104.65645825576 + 31 +0.0 + 0 +LINE + 5 +3999A +330 +39995 +100 +AcDbEntity + 8 +0 + 6 +CENTERX2 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +145.4749998260466 + 20 +-100.18145825576 + 30 +0.0 + 11 +145.4749998260466 + 21 +-117.80645825576 + 31 +0.0 + 0 +LINE + 5 +3999B +330 +39995 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +141.9749998260466 + 20 +-108.63145825576 + 30 +0.0 + 11 +148.9749998260466 + 21 +-108.63145825576 + 31 +0.0 + 0 +LINE + 5 +3999C +330 +39995 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbLine + 10 +141.9749998260466 + 20 +-113.70645825576 + 30 +0.0 + 11 +148.9749998260466 + 21 +-113.70645825576 + 31 +0.0 + 0 +ENDBLK + 5 +399A0 +330 +39995 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +39A50 +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C7D582647 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C7D582647 + 1 + + 0 +ARC + 5 +39A4A +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +-1.5 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +90.0 + 0 +ARC + 5 +39A4B +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbCircle + 10 +0.5 + 20 +0.0 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +270.0 + 0 +LINE + 5 +39A4C +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +0.5 + 30 +0.0 + 11 +0.5 + 21 +0.5 + 31 +0.0 + 0 +LINE + 5 +39A4D +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-1.5 + 20 +-0.5 + 30 +0.0 + 11 +0.5 + 21 +-0.5 + 31 +0.0 + 0 +ENDBLK + 5 +39A51 +330 +39A49 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +39A78 +330 +39A68 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C09F9734C + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C09F9734C + 1 + + 0 +LWPOLYLINE + 5 +39A69 +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0 + 10 +-1.083042547501805 + 20 +0.5234263099045222 + 10 +-1.083042547501805 + 20 +0.5234263099045222 + 10 +0.9169574524981954 + 20 +0.5234263099045222 + 0 +ARC + 5 +39A6A +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9169574524981954 + 20 +-0.0265736900953613 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +39A6B +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9169574524981954 + 20 +0.0234263099045222 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +39A6C +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.083042547501805 + 20 +0.0234263099045222 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +39A6D +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.083042547501805 + 20 +-0.0265736900953613 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LWPOLYLINE + 5 +39A6E +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0 + 10 +-1.083042547501805 + 20 +0.5234263099046359 + 10 +-1.083042547501805 + 20 +0.5234263099046359 + 10 +0.9169574524981954 + 20 +0.5234263099046359 + 0 +ARC + 5 +39A6F +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9169574524981954 + 20 +-0.0265736900953613 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +39A70 +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9169574524981954 + 20 +0.0234263099046359 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +39A71 +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.083042547501805 + 20 +0.0234263099046359 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +39A72 +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.083042547501805 + 20 +-0.0265736900953613 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LWPOLYLINE + 5 +39A73 +330 +39A68 +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +0.9169574524981954 + 20 +-0.5265736900953613 + 10 +-1.083042547501805 + 20 +-0.5265736900953613 + 0 +LINE + 5 +39A74 +330 +39A68 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-0.5830425475018046 + 20 +0.0234263099045222 + 30 +0.0 + 11 +-0.5830425475018046 + 21 +-0.0265736900953613 + 31 +0.0 + 0 +LINE + 5 +39A75 +330 +39A68 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +0.4169574524981954 + 20 +0.0234263099046359 + 30 +0.0 + 11 +0.4169574524981954 + 21 +-0.0265736900953613 + 31 +0.0 + 0 +ENDBLK + 5 +39A79 +330 +39A68 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +39CDB +330 +39CCB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C35E41998 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C35E41998 + 1 + + 0 +LWPOLYLINE + 5 +39CCC +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0 + 10 +-1.082191088149955 + 20 +0.5266836305859783 + 10 +-1.082191088149955 + 20 +0.5266836305859783 + 10 +0.9178089118500452 + 20 +0.5266836305859783 + 0 +ARC + 5 +39CCD +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9178089118500452 + 20 +0.0016836305861005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +39CCE +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9178089118500452 + 20 +0.0266836305859783 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +39CCF +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.082191088149955 + 20 +0.0266836305859783 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +39CD0 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.082191088149955 + 20 +0.0016836305861005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LWPOLYLINE + 5 +39CD1 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 3 + 70 + 0 + 43 +0.0 + 10 +-1.082191088149955 + 20 +0.526683630586092 + 10 +-1.082191088149955 + 20 +0.526683630586092 + 10 +0.9178089118500452 + 20 +0.526683630586092 + 0 +ARC + 5 +39CD2 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9178089118500452 + 20 +0.0016836305861005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +39CD3 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +0.9178089118500452 + 20 +0.026683630586092 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +39CD4 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.082191088149955 + 20 +0.026683630586092 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +39CD5 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbCircle + 10 +-1.082191088149955 + 20 +0.0016836305861005 + 30 +0.0 + 40 +0.5 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +LWPOLYLINE + 5 +39CD6 +330 +39CCB +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +0.9178089118500452 + 20 +-0.4983163694138995 + 10 +-1.082191088149955 + 20 +-0.4983163694138995 + 0 +LINE + 5 +39CD7 +330 +39CCB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +-0.5821910881499548 + 20 +0.026683630586092 + 30 +0.0 + 11 +-0.5821910881499548 + 21 +0.0016836305861005 + 31 +0.0 + 0 +LINE + 5 +39CD8 +330 +39CCB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbLine + 10 +0.4178089118500452 + 20 +0.026683630586092 + 30 +0.0 + 11 +0.4178089118500452 + 21 +0.0016836305861005 + 31 +0.0 + 0 +ENDBLK + 5 +39CDC +330 +39CCB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3A118 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C2D54543D + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C2D54543D + 1 + + 0 +INSERT + 5 +39E23 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E24 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E25 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E26 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E27 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E28 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E29 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E2A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E2B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E2C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E2D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E2E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E2F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E30 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E31 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E32 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E33 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E34 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E35 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E36 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E37 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E38 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E39 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E3A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E3B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E3C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39E3D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E3E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E3F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E40 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39E41 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E42 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E43 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E44 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39E45 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39E46 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39E47 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E48 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E49 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E4A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E4B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E4C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E4D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-46.4794574524982 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E4E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-42.55445745249818 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E4F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-149.25645825576 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E50 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25000000000006 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E51 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E52 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E53 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E54 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E55 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E56 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E57 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E58 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E59 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E5A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E5B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E5C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E5D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E5E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E5F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E60 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E61 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E62 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E63 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E64 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E65 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E66 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E67 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E68 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E69 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E6A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39E6B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E6C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E6D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E6E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39E6F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E70 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E71 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E72 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39E73 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39E74 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39E75 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E76 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E77 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E78 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E79 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E7A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E7B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-28.8544574524982 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E7C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-24.92945745249818 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39E7D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-131.63145825576 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E7E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.62500000000006 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39E7F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E80 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E81 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E82 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E83 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E84 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E85 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E86 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E87 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E88 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E89 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E8A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E8B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E8C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E8D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E8E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E8F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E90 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E91 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E92 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E93 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E94 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39E95 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E96 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39E97 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E98 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39E99 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E9A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39E9B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39E9C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39E9D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E9E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39E9F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EA0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39EA1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39EA2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39EA3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EA4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39EA5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39EA6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39EA7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EA8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39EA9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-11.2294574524982 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39EAA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +-7.304457452498184 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39EAB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-114.00645825576 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EAC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +1.999999999999943 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39EAD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EAE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EAF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EB2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EB3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EB6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EB7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EB9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EBA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EBB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EBC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EBD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EBE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EBF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EC0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EC1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EC2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EC3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EC4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EC5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EC6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39EC7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39EC8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39EC9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39ECA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39ECB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39ECC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39ECD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39ECE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39ECF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39ED0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39ED1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39ED2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39ED3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39ED4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39ED5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39ED6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39ED7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +6.395542547501805 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39ED8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +10.32054254750182 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39ED9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-96.38145825576004 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EDA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.62499999999994 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39EDB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EDC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EDD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EDE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EDF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EE0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EE1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EE2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EE3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EE4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EE5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EE6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EE7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EE8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EE9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EEA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EEB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EEC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EED +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EEE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EEF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EF0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39EF1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EF2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39EF3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EF4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39EF5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39EF6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39EF7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EF8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39EF9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39EFA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39EFB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39EFC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39EFD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39EFE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39EFF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F00 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F01 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F02 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F03 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F04 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F05 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +24.0205425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F06 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +27.94554254750182 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F07 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-78.75645825576004 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F08 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.24999999999994 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F09 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F0A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F0B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F0C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F0D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F0E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F0F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F10 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F11 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F12 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F13 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F14 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F15 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F16 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F17 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F18 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F19 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F1A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F1B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F1C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F1D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F1E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F1F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F20 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F21 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F22 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39F23 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F24 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F25 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F26 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39F27 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F28 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F29 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F2A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39F2B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F2C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F2D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F2E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F2F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F30 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F31 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F32 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F33 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +41.6455425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F34 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +45.57054254750182 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F35 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-61.13145825576004 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F36 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.87499999999994 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F37 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F38 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F39 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F3A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F3B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F3C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F3D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F3E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F3F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F40 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F41 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F42 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F43 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F44 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F45 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F46 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F47 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F48 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F49 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F4A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F4B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F4C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F4D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F4E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F4F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F50 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39F51 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F52 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F53 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F54 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39F55 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F56 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F57 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F58 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39F59 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F5A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F5B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F5C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F5D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F5E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F5F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F60 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F61 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +59.2705425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F62 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +63.19554254750182 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F63 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-43.50645825576004 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F64 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.49999999999994 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F65 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F66 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F67 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F68 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F69 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F6A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F6B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F6C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F6D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F6E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F6F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F70 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F71 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F72 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F73 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F74 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F75 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F76 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F77 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F78 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F79 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F7A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F7B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F7C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F7D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F7E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39F7F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F80 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39F81 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F82 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39F83 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F84 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39F85 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F86 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39F87 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F88 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39F89 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F8A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F8B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F8C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F8D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F8E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F8F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +76.8955425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F90 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +80.82054254750182 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39F91 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-25.88145825576004 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F92 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.12499999999994 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39F93 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F94 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F95 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F96 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F97 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F98 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F99 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F9A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F9B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39F9C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39F9D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F9E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39F9F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FA0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FA1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FA2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FA3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FA4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FA5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FA6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FA7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FA8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FA9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FAA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FAB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FAC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39FAD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39FAE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39FAF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FB0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39FB1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39FB2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39FB3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FB4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39FB5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39FB6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39FB7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FB8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FB9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FBA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FBB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FBC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FBD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +94.5205425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FBE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +98.44554254750187 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FBF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +-8.256458255760037 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FC0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FC1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-213.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FC2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-63.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FC3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FC4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-63.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FC5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-204.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FC6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-54.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FC7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FC8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-54.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FC9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-195.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FCA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-45.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FCB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FCC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-45.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FCD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-186.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FCE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-36.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FCF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-36.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-177.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FD2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-27.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FD3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-27.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-168.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FD6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-18.80000000000003 + 30 +0.0 + 0 +INSERT + 5 +39FD7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-18.79842630990466 + 30 +0.0 + 0 +INSERT + 5 +39FD9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-159.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FDA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-9.800000000000026 + 30 +0.0 + 0 +INSERT + 5 +39FDB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39FDC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-9.798426309904656 + 30 +0.0 + 0 +INSERT + 5 +39FDD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-150.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FDE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-0.8000000000000256 + 30 +0.0 + 0 +INSERT + 5 +39FDF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39FE0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +-0.7984263099046558 + 30 +0.0 + 0 +INSERT + 5 +39FE1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-141.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FE2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +8.199999999999974 + 30 +0.0 + 0 +INSERT + 5 +39FE3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39FE4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +8.201573690095344 + 30 +0.0 + 0 +INSERT + 5 +39FE5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-132.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FE6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +17.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FE7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FE8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +17.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FE9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-123.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FEA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +26.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FEB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +112.1455425475018 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FEC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C09F9734C + 10 +116.0705425475019 + 20 +26.20157369009533 + 30 +0.0 + 0 +INSERT + 5 +39FED +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C023E2B9B + 10 +9.368541744239963 + 20 +-114.7749998260466 + 30 +0.0 + 50 +90.0 + 0 +INSERT + 5 +39FEE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +35.19999999999996 + 30 +0.0 + 0 +INSERT + 5 +39FEF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-33.25 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FF0 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-46.4803089118501 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +39FF1 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-42.55530891185009 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +39FF2 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +-15.625 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FF3 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-28.8553089118501 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +39FF4 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-24.93030891185009 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +39FF5 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +2.0 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FF6 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-11.2303089118501 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +39FF7 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-7.305308911850091 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +39FF8 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +19.625 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FF9 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +6.394691088149898 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +39FFA +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +10.31969108814991 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +39FFB +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +37.25 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FFC +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +24.0196910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +39FFD +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +27.94469108814991 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +39FFE +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +54.875 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +39FFF +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +41.6446910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +3A000 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +45.56969108814991 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +3A001 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +72.5 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +3A002 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +59.2696910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +3A003 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +63.19469108814991 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +3A004 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +90.125 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +3A005 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +76.8946910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +3A006 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +80.81969108814991 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +3A007 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +107.75 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +3A008 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +94.5196910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +3A009 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +98.44469108814997 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +3A00A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C7D582647 + 10 +125.375 + 20 +-72.80000000000004 + 30 +0.0 + 41 +-1.0 + 50 +180.0 + 0 +INSERT + 5 +3A00B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +112.1446910881499 + 20 +-72.80168363058614 + 30 +0.0 + 0 +INSERT + 5 +3A00C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +116.06969108815 + 20 +-72.80168363058603 + 30 +0.0 + 0 +INSERT + 5 +3A00D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-46.48030891185005 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A00E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-42.55530891185003 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A00F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-28.85530891185005 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A010 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-24.93030891185003 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A011 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-11.23030891185005 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A012 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +-7.305308911850034 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A013 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +6.394691088149955 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A014 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +10.31969108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A015 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +24.01969108814995 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A016 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +27.94469108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A017 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +41.64469108814995 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A018 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +45.56969108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A019 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +59.26969108814995 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A01A +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +63.19469108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A01B +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +76.89469108814995 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A01C +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +80.81969108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A01D +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +94.51969108814995 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A01E +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +98.44469108814997 + 20 +35.17331636941398 + 30 +0.0 + 0 +INSERT + 5 +3A01F +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +112.14469108815 + 20 +35.17331636941387 + 30 +0.0 + 0 +INSERT + 5 +3A020 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 2 +A$C35E41998 + 10 +116.06969108815 + 20 +35.17331636941398 + 30 +0.0 + 0 +LWPOLYLINE + 5 +3A021 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +-49.57499999999999 + 20 +35.69999999999996 + 10 +127.675 + 20 +35.69999999999996 + 10 +127.675 + 20 +-73.30000000000004 + 10 +-49.57499999999999 + 20 +-73.30000000000004 + 0 +CIRCLE + 5 +3A6AB +102 +{ACAD_REACTORS +330 +3A6AC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6AC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-63.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6AB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A6AD +102 +{ACAD_REACTORS +330 +3A6AE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6AE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-54.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6AD + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A6AF +102 +{ACAD_REACTORS +330 +3A6B0 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6B0 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-45.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6AF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A6B1 +102 +{ACAD_REACTORS +330 +3A6B2 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6B2 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-36.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6B1 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A6B3 +102 +{ACAD_REACTORS +330 +3A6B4 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6B4 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-27.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6B3 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A6B5 +102 +{ACAD_REACTORS +330 +3A6B6 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6B6 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-18.80000000000007 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6B5 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A6B7 +102 +{ACAD_REACTORS +330 +3A6B8 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6B8 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-9.800000000000068 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A6B7 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A6B9 +102 +{ACAD_REACTORS +330 +3A6BA +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6BA +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +-46.78750000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A6B9 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A6BB +102 +{ACAD_REACTORS +330 +3A6BC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6BC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +8.199999999999932 + 42 +1.0 + 10 +-46.78750000000002 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A6BB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A6BD +102 +{ACAD_REACTORS +330 +3A6BE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6BE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +17.19999999999993 + 42 +1.0 + 10 +-46.78750000000002 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6BD + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A6BF +102 +{ACAD_REACTORS +330 +3A6C0 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6C0 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +26.19999999999993 + 42 +1.0 + 10 +-46.78750000000002 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6BF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A6C1 +102 +{ACAD_REACTORS +330 +3A6C2 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-46.5625 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6C2 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-46.33749999999998 + 20 +35.19999999999993 + 42 +1.0 + 10 +-46.78750000000002 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6C1 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-46.43104682254238 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A6C3 +102 +{ACAD_REACTORS +330 +3A6C4 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6C4 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-63.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6C3 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A6C5 +102 +{ACAD_REACTORS +330 +3A6C6 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6C6 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-54.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6C5 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A6C7 +102 +{ACAD_REACTORS +330 +3A6C8 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6C8 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-45.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6C7 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A6C9 +102 +{ACAD_REACTORS +330 +3A6CA +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6CA +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-36.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6C9 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A6CB +102 +{ACAD_REACTORS +330 +3A6CC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6CC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-27.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6CB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A6CD +102 +{ACAD_REACTORS +330 +3A6CE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6CE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-18.80000000000007 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6CD + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A6CF +102 +{ACAD_REACTORS +330 +3A6D0 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6D0 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-9.800000000000068 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A6CF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A6D1 +102 +{ACAD_REACTORS +330 +3A6D2 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6D2 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +-29.16250000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A6D1 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A6D3 +102 +{ACAD_REACTORS +330 +3A6D4 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6D4 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +8.199999999999932 + 42 +1.0 + 10 +-29.16250000000002 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A6D3 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A6D5 +102 +{ACAD_REACTORS +330 +3A6D6 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6D6 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +17.19999999999993 + 42 +1.0 + 10 +-29.16250000000002 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6D5 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A6D7 +102 +{ACAD_REACTORS +330 +3A6D8 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6D8 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +26.19999999999993 + 42 +1.0 + 10 +-29.16250000000002 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6D7 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A6D9 +102 +{ACAD_REACTORS +330 +3A6DA +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-28.9375 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6DA +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-28.71249999999998 + 20 +35.19999999999993 + 42 +1.0 + 10 +-29.16250000000002 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6D9 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-28.80604682254238 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A6DB +102 +{ACAD_REACTORS +330 +3A6DC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6DC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-63.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6DB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A6DD +102 +{ACAD_REACTORS +330 +3A6DE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6DE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-54.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6DD + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A6DF +102 +{ACAD_REACTORS +330 +3A6E0 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6E0 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-45.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6DF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A6E1 +102 +{ACAD_REACTORS +330 +3A6E2 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6E2 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-36.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6E1 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A6E3 +102 +{ACAD_REACTORS +330 +3A6E4 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6E4 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-27.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6E3 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A6E5 +102 +{ACAD_REACTORS +330 +3A6E6 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6E6 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-18.80000000000007 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6E5 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A6E7 +102 +{ACAD_REACTORS +330 +3A6E8 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6E8 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-9.800000000000068 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A6E7 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A6E9 +102 +{ACAD_REACTORS +330 +3A6EA +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6EA +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +-11.53750000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A6E9 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A6EB +102 +{ACAD_REACTORS +330 +3A6EC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6EC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +8.199999999999932 + 42 +1.0 + 10 +-11.53750000000002 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A6EB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A6ED +102 +{ACAD_REACTORS +330 +3A6EE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6EE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +17.19999999999993 + 42 +1.0 + 10 +-11.53750000000002 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6ED + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A6EF +102 +{ACAD_REACTORS +330 +3A6F0 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6F0 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +26.19999999999993 + 42 +1.0 + 10 +-11.53750000000002 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6EF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A6F1 +102 +{ACAD_REACTORS +330 +3A6F2 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +-11.3125 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6F2 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +-11.08749999999998 + 20 +35.19999999999993 + 42 +1.0 + 10 +-11.53750000000002 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A6F1 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +-11.18104682254238 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A6F3 +102 +{ACAD_REACTORS +330 +3A6F4 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6F4 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-63.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6F3 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A6F5 +102 +{ACAD_REACTORS +330 +3A6F6 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6F6 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-54.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6F5 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A6F7 +102 +{ACAD_REACTORS +330 +3A6F8 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6F8 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-45.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6F7 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A6F9 +102 +{ACAD_REACTORS +330 +3A6FA +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6FA +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-36.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6F9 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A6FB +102 +{ACAD_REACTORS +330 +3A6FC +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6FC +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-27.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6FB + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A6FD +102 +{ACAD_REACTORS +330 +3A6FE +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A6FE +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-18.80000000000007 + 42 +1.0 + 10 +6.087499999999977 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A6FD + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A6FF +102 +{ACAD_REACTORS +330 +3A700 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A700 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-9.800000000000068 + 42 +1.0 + 10 +6.087499999999977 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A6FF + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A701 +102 +{ACAD_REACTORS +330 +3A702 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A702 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +6.087499999999977 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A701 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A703 +102 +{ACAD_REACTORS +330 +3A704 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A704 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +8.199999999999932 + 42 +1.0 + 10 +6.087499999999977 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A703 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A705 +102 +{ACAD_REACTORS +330 +3A706 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A706 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +17.19999999999993 + 42 +1.0 + 10 +6.087499999999977 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A705 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A707 +102 +{ACAD_REACTORS +330 +3A708 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A708 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +26.19999999999993 + 42 +1.0 + 10 +6.087499999999977 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A707 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A709 +102 +{ACAD_REACTORS +330 +3A70A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +6.3125 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A70A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +6.537500000000023 + 20 +35.19999999999993 + 42 +1.0 + 10 +6.087499999999977 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A709 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +6.443953177457615 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A70B +102 +{ACAD_REACTORS +330 +3A70C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A70C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-63.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A70B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A70D +102 +{ACAD_REACTORS +330 +3A70E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A70E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-54.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A70D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A70F +102 +{ACAD_REACTORS +330 +3A710 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A710 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-45.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A70F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A711 +102 +{ACAD_REACTORS +330 +3A712 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A712 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-36.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A711 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A713 +102 +{ACAD_REACTORS +330 +3A714 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A714 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-27.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A713 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A715 +102 +{ACAD_REACTORS +330 +3A716 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A716 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-18.80000000000007 + 42 +1.0 + 10 +23.71249999999998 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A715 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A717 +102 +{ACAD_REACTORS +330 +3A718 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A718 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-9.800000000000068 + 42 +1.0 + 10 +23.71249999999998 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A717 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A719 +102 +{ACAD_REACTORS +330 +3A71A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A71A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +23.71249999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A719 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A71B +102 +{ACAD_REACTORS +330 +3A71C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A71C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +8.199999999999932 + 42 +1.0 + 10 +23.71249999999998 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A71B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A71D +102 +{ACAD_REACTORS +330 +3A71E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A71E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +17.19999999999993 + 42 +1.0 + 10 +23.71249999999998 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A71D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A71F +102 +{ACAD_REACTORS +330 +3A720 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A720 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +26.19999999999993 + 42 +1.0 + 10 +23.71249999999998 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A71F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A721 +102 +{ACAD_REACTORS +330 +3A722 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +23.9375 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A722 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +24.16250000000002 + 20 +35.19999999999993 + 42 +1.0 + 10 +23.71249999999998 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A721 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +24.06895317745762 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A723 +102 +{ACAD_REACTORS +330 +3A724 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A724 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-63.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A723 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A725 +102 +{ACAD_REACTORS +330 +3A726 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A726 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-54.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A725 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A727 +102 +{ACAD_REACTORS +330 +3A728 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A728 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-45.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A727 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A729 +102 +{ACAD_REACTORS +330 +3A72A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A72A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-36.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A729 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A72B +102 +{ACAD_REACTORS +330 +3A72C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A72C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-27.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A72B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A72D +102 +{ACAD_REACTORS +330 +3A72E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A72E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-18.80000000000007 + 42 +1.0 + 10 +41.33749999999998 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A72D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A72F +102 +{ACAD_REACTORS +330 +3A730 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A730 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-9.800000000000068 + 42 +1.0 + 10 +41.33749999999998 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A72F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A731 +102 +{ACAD_REACTORS +330 +3A732 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A732 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +41.33749999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A731 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A733 +102 +{ACAD_REACTORS +330 +3A734 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A734 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +8.199999999999932 + 42 +1.0 + 10 +41.33749999999998 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A733 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A735 +102 +{ACAD_REACTORS +330 +3A736 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A736 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +17.19999999999993 + 42 +1.0 + 10 +41.33749999999998 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A735 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A737 +102 +{ACAD_REACTORS +330 +3A738 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A738 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +26.19999999999993 + 42 +1.0 + 10 +41.33749999999998 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A737 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A739 +102 +{ACAD_REACTORS +330 +3A73A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +41.5625 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A73A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +41.78750000000002 + 20 +35.19999999999993 + 42 +1.0 + 10 +41.33749999999998 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A739 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +41.69395317745762 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A73B +102 +{ACAD_REACTORS +330 +3A73C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A73C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-63.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A73B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A73D +102 +{ACAD_REACTORS +330 +3A73E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A73E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-54.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A73D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A73F +102 +{ACAD_REACTORS +330 +3A740 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A740 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-45.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A73F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A741 +102 +{ACAD_REACTORS +330 +3A742 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A742 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-36.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A741 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A743 +102 +{ACAD_REACTORS +330 +3A744 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A744 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-27.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A743 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A745 +102 +{ACAD_REACTORS +330 +3A746 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A746 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-18.80000000000007 + 42 +1.0 + 10 +58.96249999999998 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A745 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A747 +102 +{ACAD_REACTORS +330 +3A748 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A748 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-9.800000000000068 + 42 +1.0 + 10 +58.96249999999998 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A747 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A749 +102 +{ACAD_REACTORS +330 +3A74A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A74A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +58.96249999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A749 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A74B +102 +{ACAD_REACTORS +330 +3A74C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A74C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +8.199999999999932 + 42 +1.0 + 10 +58.96249999999998 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A74B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A74D +102 +{ACAD_REACTORS +330 +3A74E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A74E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +17.19999999999993 + 42 +1.0 + 10 +58.96249999999998 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A74D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A74F +102 +{ACAD_REACTORS +330 +3A750 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A750 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +26.19999999999993 + 42 +1.0 + 10 +58.96249999999998 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A74F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A751 +102 +{ACAD_REACTORS +330 +3A752 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +59.1875 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A752 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +59.41250000000002 + 20 +35.19999999999993 + 42 +1.0 + 10 +58.96249999999998 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A751 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +59.31895317745762 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A753 +102 +{ACAD_REACTORS +330 +3A754 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A754 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-63.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A753 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A755 +102 +{ACAD_REACTORS +330 +3A756 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A756 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-54.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A755 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A757 +102 +{ACAD_REACTORS +330 +3A758 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A758 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-45.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A757 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A759 +102 +{ACAD_REACTORS +330 +3A75A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A75A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-36.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A759 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A75B +102 +{ACAD_REACTORS +330 +3A75C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A75C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-27.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A75B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A75D +102 +{ACAD_REACTORS +330 +3A75E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A75E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-18.80000000000007 + 42 +1.0 + 10 +76.58749999999998 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A75D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A75F +102 +{ACAD_REACTORS +330 +3A760 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A760 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-9.800000000000068 + 42 +1.0 + 10 +76.58749999999998 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A75F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A761 +102 +{ACAD_REACTORS +330 +3A762 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A762 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +76.58749999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A761 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A763 +102 +{ACAD_REACTORS +330 +3A764 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A764 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +8.199999999999932 + 42 +1.0 + 10 +76.58749999999998 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A763 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A765 +102 +{ACAD_REACTORS +330 +3A766 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A766 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +17.19999999999993 + 42 +1.0 + 10 +76.58749999999998 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A765 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A767 +102 +{ACAD_REACTORS +330 +3A768 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A768 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +26.19999999999993 + 42 +1.0 + 10 +76.58749999999998 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A767 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A769 +102 +{ACAD_REACTORS +330 +3A76A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +76.8125 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A76A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +77.03750000000002 + 20 +35.19999999999993 + 42 +1.0 + 10 +76.58749999999998 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A769 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +76.94395317745762 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A76B +102 +{ACAD_REACTORS +330 +3A76C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A76C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-63.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A76B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A76D +102 +{ACAD_REACTORS +330 +3A76E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A76E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-54.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A76D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A76F +102 +{ACAD_REACTORS +330 +3A770 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A770 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-45.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A76F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A771 +102 +{ACAD_REACTORS +330 +3A772 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A772 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-36.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A771 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A773 +102 +{ACAD_REACTORS +330 +3A774 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A774 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-27.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A773 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A775 +102 +{ACAD_REACTORS +330 +3A776 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A776 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-18.80000000000007 + 42 +1.0 + 10 +94.21249999999998 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A775 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A777 +102 +{ACAD_REACTORS +330 +3A778 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A778 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-9.800000000000068 + 42 +1.0 + 10 +94.21249999999998 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A777 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A779 +102 +{ACAD_REACTORS +330 +3A77A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A77A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +94.21249999999998 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A779 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A77B +102 +{ACAD_REACTORS +330 +3A77C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A77C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +8.199999999999932 + 42 +1.0 + 10 +94.21249999999998 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A77B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A77D +102 +{ACAD_REACTORS +330 +3A77E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A77E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +17.19999999999993 + 42 +1.0 + 10 +94.21249999999998 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A77D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A77F +102 +{ACAD_REACTORS +330 +3A780 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A780 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +26.19999999999993 + 42 +1.0 + 10 +94.21249999999998 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A77F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A781 +102 +{ACAD_REACTORS +330 +3A782 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +94.4375 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A782 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +94.66250000000002 + 20 +35.19999999999993 + 42 +1.0 + 10 +94.21249999999998 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A781 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +94.56895317745762 + 20 +35.21243958656618 + 0 +CIRCLE + 5 +3A783 +102 +{ACAD_REACTORS +330 +3A784 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-63.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A784 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-63.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-63.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A783 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-63.78756041343382 + 0 +CIRCLE + 5 +3A785 +102 +{ACAD_REACTORS +330 +3A786 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-54.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A786 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-54.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-54.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A785 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-54.78756041343382 + 0 +CIRCLE + 5 +3A787 +102 +{ACAD_REACTORS +330 +3A788 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-45.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A788 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-45.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-45.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A787 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-45.78756041343382 + 0 +CIRCLE + 5 +3A789 +102 +{ACAD_REACTORS +330 +3A78A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-36.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A78A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-36.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-36.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A789 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-36.78756041343382 + 0 +CIRCLE + 5 +3A78B +102 +{ACAD_REACTORS +330 +3A78C +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-27.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A78C +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-27.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-27.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A78B + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-27.78756041343382 + 0 +CIRCLE + 5 +3A78D +102 +{ACAD_REACTORS +330 +3A78E +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-18.80000000000007 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A78E +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-18.80000000000007 + 42 +1.0 + 10 +111.8375 + 20 +-18.80000000000007 + 42 +1.0 + 97 + 1 +330 +3A78D + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-18.78756041343382 + 0 +CIRCLE + 5 +3A78F +102 +{ACAD_REACTORS +330 +3A790 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-9.800000000000068 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A790 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-9.800000000000068 + 42 +1.0 + 10 +111.8375 + 20 +-9.800000000000068 + 42 +1.0 + 97 + 1 +330 +3A78F + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-9.787560413433823 + 0 +CIRCLE + 5 +3A791 +102 +{ACAD_REACTORS +330 +3A792 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +-0.8000000000000682 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A792 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +-0.8000000000000682 + 42 +1.0 + 10 +111.8375 + 20 +-0.8000000000000682 + 42 +1.0 + 97 + 1 +330 +3A791 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +-0.7875604134338232 + 0 +CIRCLE + 5 +3A793 +102 +{ACAD_REACTORS +330 +3A794 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +8.199999999999932 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A794 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +8.199999999999932 + 42 +1.0 + 10 +111.8375 + 20 +8.199999999999932 + 42 +1.0 + 97 + 1 +330 +3A793 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +8.212439586566177 + 0 +CIRCLE + 5 +3A795 +102 +{ACAD_REACTORS +330 +3A796 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +17.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A796 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +17.19999999999993 + 42 +1.0 + 10 +111.8375 + 20 +17.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A795 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +17.21243958656618 + 0 +CIRCLE + 5 +3A797 +102 +{ACAD_REACTORS +330 +3A798 +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +26.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A798 +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +26.19999999999993 + 42 +1.0 + 10 +111.8375 + 20 +26.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A797 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +26.21243958656618 + 0 +CIRCLE + 5 +3A799 +102 +{ACAD_REACTORS +330 +3A79A +102 +} +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbCircle + 10 +112.0625 + 20 +35.19999999999993 + 30 +0.0 + 40 +0.225 + 0 +HATCH + 5 +3A79A +330 +39E22 +100 +AcDbEntity + 8 +0 + 62 + 3 +370 + -1 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 1 + 91 + 1 + 92 + 7 + 72 + 1 + 73 + 1 + 93 + 2 + 10 +112.2875 + 20 +35.19999999999993 + 42 +1.0 + 10 +111.8375 + 20 +35.19999999999993 + 42 +1.0 + 97 + 1 +330 +3A799 + 75 + 0 + 76 + 1 + 47 +0.0234636446418224 + 98 + 1 + 10 +112.1939531774576 + 20 +35.21243958656618 + 0 +ENDBLK + 5 +3A119 +330 +39E22 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3A9B6 +330 +3A9AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D31 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D31 + 1 + + 0 +LINE + 5 +3A9D3 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-45.0948231477614 + 20 +147.1295283526956 + 30 +0.0 + 11 +-46.70283714574202 + 21 +147.8200288829622 + 31 +0.0 + 0 +LINE + 5 +3A9D4 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.29716285425801 + 20 +149.7928875408666 + 30 +0.0 + 11 +-52.90517685223863 + 21 +150.4833880711331 + 31 +0.0 + 0 +MTEXT + 5 +3A9D5 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-42.00513910878433 + 20 +145.8027809052549 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9188651417032108 + 21 +-0.3945717315808856 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3A9D6 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 11 +-48.31085114372262 + 21 +148.5105294132287 + 31 +0.0 + 0 +SOLID + 5 +3A9D7 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-51.18207943254692 + 20 +150.0608898738633 + 30 +0.0 + 11 +-51.4122462759691 + 21 +149.5248852078698 + 31 +0.0 + 12 +-49.68914885627739 + 22 +149.1023870106 + 32 +0.0 + 13 +-49.68914885627739 + 23 +149.1023870106 + 33 +0.0 + 0 +SOLID + 5 +3A9D8 +330 +3A9AD +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.58775372403093 + 20 +148.0880312159589 + 30 +0.0 + 11 +-46.81792056745311 + 21 +147.5520265499654 + 31 +0.0 + 12 +-48.31085114372262 + 22 +148.5105294132287 + 32 +0.0 + 13 +-48.31085114372262 + 23 +148.5105294132287 + 33 +0.0 + 0 +POINT + 5 +3A9D9 +330 +3A9AD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.31085114372262 + 20 +148.5105294132287 + 30 +0.0 + 0 +POINT + 5 +3A9DA +330 +3A9AD +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 0 +ENDBLK + 5 +3A9B7 +330 +3A9AD +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3A9DC +330 +3A9DB +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockBegin + 2 +*D32 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D32 + 1 + + 0 +LINE + 5 +3A9DD +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-234.6148047129287 + 20 +100.977632590131 + 30 +0.0 + 11 +-232.2621408776945 + 21 +99.87075077012533 + 31 +0.0 + 0 +LINE + 5 +3A9DE +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-227.7378591223054 + 20 +97.74216565370342 + 30 +0.0 + 11 +-226.1543605079192 + 21 +96.99716086295575 + 31 +0.0 + 0 +MTEXT + 5 +3A9DF +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-238.8450081542175 + 20 +102.9678596739854 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9048563510778306 + 21 +-0.4257170232843806 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3A9E0 +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-229.3213577366916 + 20 +98.48717044445108 + 30 +0.0 + 11 +-230.6786422633083 + 21 +99.12574597937765 + 31 +0.0 + 0 +SOLID + 5 +3A9E1 +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + 30 +100 +AcDbTrace + 10 +-227.6136916571808 + 20 +98.00608208943446 + 30 +0.0 + 11 +-227.86202658743 + 21 +97.47824921797239 + 31 +0.0 + 12 +-229.3213577366916 + 22 +98.48717044445108 + 32 +0.0 + 13 +-229.3213577366916 + 23 +98.48717044445108 + 33 +0.0 + 0 +SOLID + 5 +3A9E2 +330 +3A9DB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + 30 +100 +AcDbTrace + 10 +-232.1379734125699 + 20 +100.1346672058564 + 30 +0.0 + 11 +-232.3863083428192 + 21 +99.60683433439429 + 31 +0.0 + 12 +-230.6786422633083 + 22 +99.12574597937765 + 32 +0.0 + 13 +-230.6786422633083 + 23 +99.12574597937765 + 33 +0.0 + 0 +POINT + 5 +3A9E3 +330 +3A9DB +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + 30 +100 +AcDbPoint + 10 +-230.6786422633083 + 20 +99.12574597937765 + 30 +0.0 + 0 +POINT + 5 +3A9E4 +330 +3A9DB +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + 30 +100 +AcDbPoint + 10 +-229.3213577366916 + 20 +98.48717044445108 + 30 +0.0 + 0 +ENDBLK + 5 +3A9E5 +330 +3A9DB +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3A9F0 +330 +3A9E6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C59200462 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C59200462 + 1 + + 0 +CIRCLE + 5 +3A9E7 +102 +{ACAD_REACTORS +330 +3A9EA +102 +} +330 +3A9E6 +100 +AcDbEntity + 8 +0 + 62 + 2 +370 + -1 +100 +AcDbCircle + 10 +160.6187230393653 + 20 +-115.997161171474 + 30 +0.0 + 40 +0.75 + 0 +DIMENSION + 5 +3A9E8 +102 +{ACAD_REACTORS +330 +3A9EA +102 +} +102 +{ACAD_XDICTIONARY +360 +3A9E9 +102 +} +330 +3A9E6 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbDimension + 2 +*D40 + 10 +161.2973653026737 + 20 +-116.3164489389373 + 30 +0.0 + 11 +151.7737148851477 + 21 +-111.8357597094029 + 31 +0.0 + 12 +390.6187230393652 + 22 +-214.8036193833883 + 32 +0.0 + 70 + 163 + 71 + 5 + 42 +1.5 + 73 + 0 + 74 + 0 + 75 + 0 + 3 +Standard +100 +AcDbDiametricDimension + 15 +159.9400807760569 + 25 +-115.6778734040107 + 35 +0.0 + 40 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 288 +1070 + 1 +1002 +} + 0 +MTEXT + 5 +3A9EB +330 +3A9E6 +100 +AcDbEntity + 8 +0 + 62 + 0 +370 + -1 +100 +AcDbMText + 10 +145.5607000868594 + 20 +-116.1897705184036 + 30 +0.0 + 40 +0.2000000000000001 + 41 +409.5254483084424 + 46 +0.0 + 71 + 4 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\H10x;\C2;锣型孔} + 73 + 1 + 44 +1.0 + 0 +LEADER + 5 +3A9EC +330 +3A9E6 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLeader + 3 +Standard + 76 + 2 + 10 +160.6187230393653 + 20 +-115.997161171474 + 30 +0.0 + 10 +153.4966204832881 + 20 +-116.2186431037761 + 30 +0.0 +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 147 +1040 +0.3 +1070 + 77 +1070 + 0 +1002 +} + 0 +LINE + 5 +3A9ED +330 +3A9E6 +100 +AcDbEntity + 8 +0 +370 + 30 +100 +AcDbLine + 10 +157.6187230393653 + 20 +-97.00022758408531 + 30 +0.0 + 11 +141.0 + 21 +-97.00022758408531 + 31 +0.0 + 0 +ENDBLK + 5 +3A9F1 +330 +3A9E6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AA03 +330 +3A9FA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D34 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D34 + 1 + + 0 +LINE + 5 +3AB1F +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.914461595829 + 20 +95.47897761011113 + 30 +0.0 + 11 +-235.1788450248242 + 21 +97.58063834023731 + 31 +0.0 + 0 +LINE + 5 +3AB20 +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751756 + 20 +100.0322780835916 + 30 +0.0 + 11 +-229.2959634577986 + 21 +100.8903519937656 + 31 +0.0 + 0 +MTEXT + 5 +3AB21 +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542177 + 20 +93.8302498827054 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297109 + 21 +0.4903279486708455 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3AB22 +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 11 +-233.6536535074472 + 21 +98.43871225041129 + 31 +0.0 + 0 +SOLID + 5 +3AB23 +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.9641672935379 + 20 +100.2864766698211 + 30 +0.0 + 11 +-230.6781426568132 + 21 +99.77807949736209 + 31 +0.0 + 12 +-232.3463464925526 + 22 +99.1742041734176 + 32 +0.0 + 13 +-232.3463464925526 + 23 +99.1742041734176 + 33 +0.0 + 0 +SOLID + 5 +3AB24 +330 +3A9FA +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.3218573431866 + 20 +97.83483692646679 + 30 +0.0 + 11 +-235.0358327064619 + 21 +97.32643975400781 + 31 +0.0 + 12 +-233.6536535074472 + 22 +98.43871225041129 + 32 +0.0 + 13 +-233.6536535074472 + 23 +98.43871225041129 + 33 +0.0 + 0 +POINT + 5 +3AB25 +330 +3A9FA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +98.43871225041129 + 30 +0.0 + 0 +POINT + 5 +3AB26 +330 +3A9FA +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 0 +ENDBLK + 5 +3AA04 +330 +3A9FA +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AA4A +330 +3AA3F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D35 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D35 + 1 + + 0 +LINE + 5 +3AB32 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191445 + 30 +0.0 + 11 +-232.9999999999999 + 21 +48.31926844392252 + 31 +0.0 + 0 +LINE + 5 +3AB33 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-49.00000000000003 + 21 +48.31926844392252 + 31 +0.0 + 0 +LINE + 5 +3AB34 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-231.2499999999999 + 20 +48.61926844392252 + 30 +0.0 + 11 +-148.2999999999999 + 21 +48.61926844392252 + 31 +0.0 + 0 +LINE + 5 +3AB35 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-50.75000000000003 + 20 +48.61926844392252 + 30 +0.0 + 11 +-133.6999999999999 + 21 +48.61926844392252 + 31 +0.0 + 0 +SOLID + 5 +3AB36 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-231.2499999999999 + 20 +48.91093511058919 + 30 +0.0 + 11 +-231.2499999999999 + 21 +48.32760177725586 + 31 +0.0 + 12 +-232.9999999999999 + 22 +48.61926844392252 + 32 +0.0 + 13 +-232.9999999999999 + 23 +48.61926844392252 + 33 +0.0 + 0 +SOLID + 5 +3AB37 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-50.75000000000003 + 20 +48.91093511058919 + 30 +0.0 + 11 +-50.75000000000003 + 21 +48.32760177725586 + 31 +0.0 + 12 +-49.00000000000003 + 22 +48.61926844392252 + 32 +0.0 + 13 +-49.00000000000003 + 23 +48.61926844392252 + 33 +0.0 + 0 +MTEXT + 5 +3AB38 +330 +3AA3F +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-140.9999999999999 + 20 +48.61926844392252 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;184.00%%P0.10 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AB39 +330 +3AA3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191445 + 30 +0.0 + 0 +POINT + 5 +3AB3A +330 +3AA3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3AB3B +330 +3AA3F +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +48.61926844392252 + 30 +0.0 + 0 +ENDBLK + 5 +3AA4B +330 +3AA3F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AA82 +330 +3AA77 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D36 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D36 + 1 + + 0 +LINE + 5 +3AB6B +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 11 +-31.9368595329824 + 21 +148.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3AB6C +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-31.93685953298241 + 21 +86.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3AB6D +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298239 + 20 +147.0564582119144 + 30 +0.0 + 11 +-32.2368595329824 + 21 +124.5231248785811 + 31 +0.0 + 0 +LINE + 5 +3AB6E +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298241 + 20 +88.55645821191439 + 30 +0.0 + 11 +-32.23685953298241 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3AB6F +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964906 + 20 +147.0564582119144 + 30 +0.0 + 11 +-31.94519286631573 + 21 +147.0564582119144 + 31 +0.0 + 12 +-32.23685953298239 + 22 +148.8064582119144 + 32 +0.0 + 13 +-32.23685953298239 + 23 +148.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3AB70 +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964907 + 20 +88.55645821191439 + 30 +0.0 + 11 +-31.94519286631574 + 21 +88.55645821191438 + 31 +0.0 + 12 +-32.23685953298241 + 22 +86.80645821191439 + 32 +0.0 + 13 +-32.23685953298241 + 23 +86.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3AB71 +330 +3AA77 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-32.23685953298242 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AB72 +330 +3AA77 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3AB73 +330 +3AA77 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3AB74 +330 +3AA77 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-32.23685953298241 + 20 +86.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3AA83 +330 +3AA77 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AAA6 +330 +3AA9B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D37 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D37 + 1 + + 0 +LINE + 5 +3AB61 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 11 +-238.3457226094723 + 21 +136.8064582119143 + 31 +0.0 + 0 +LINE + 5 +3AB62 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 11 +-238.3457226094723 + 21 +98.80645821191439 + 31 +0.0 + 0 +LINE + 5 +3AB63 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +135.0564582119143 + 30 +0.0 + 11 +-238.0457226094723 + 21 +124.523124878581 + 31 +0.0 + 0 +LINE + 5 +3AB64 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +100.5564582119144 + 30 +0.0 + 11 +-238.0457226094723 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3AB65 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +135.0564582119143 + 30 +0.0 + 11 +-237.7540559428056 + 21 +135.0564582119143 + 31 +0.0 + 12 +-238.0457226094723 + 22 +136.8064582119143 + 32 +0.0 + 13 +-238.0457226094723 + 23 +136.8064582119143 + 33 +0.0 + 0 +SOLID + 5 +3AB66 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +100.5564582119144 + 30 +0.0 + 11 +-237.7540559428056 + 21 +100.5564582119144 + 31 +0.0 + 12 +-238.0457226094723 + 22 +98.80645821191439 + 32 +0.0 + 13 +-238.0457226094723 + 23 +98.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3AB67 +330 +3AA9B +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-238.0457226094723 + 20 +117.8064582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;38.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AB68 +330 +3AA9B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 0 +POINT + 5 +3AB69 +330 +3AA9B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3AB6A +330 +3AA9B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-238.0457226094723 + 20 +98.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3AAA7 +330 +3AA9B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AB4B +330 +3AB42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D38 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D38 + 1 + + 0 +LINE + 5 +3AB43 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.9144615958291 + 20 +140.1339388137175 + 30 +0.0 + 11 +-235.1788450248242 + 21 +138.0322780835914 + 31 +0.0 + 0 +LINE + 5 +3AB44 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751755 + 20 +135.5806383402372 + 30 +0.0 + 11 +-229.2959634577985 + 21 +134.7225644300632 + 31 +0.0 + 0 +MTEXT + 5 +3AB45 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542178 + 20 +141.7826665411232 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297189 + 21 +-0.4903279486708312 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3AB46 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 11 +-233.6536535074472 + 21 +137.1742041734174 + 31 +0.0 + 0 +SOLID + 5 +3AB47 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.6781426568132 + 20 +135.8348369264667 + 30 +0.0 + 11 +-230.9641672935379 + 21 +135.3264397540077 + 31 +0.0 + 12 +-232.3463464925525 + 22 +136.4387122504111 + 32 +0.0 + 13 +-232.3463464925525 + 23 +136.4387122504111 + 33 +0.0 + 0 +SOLID + 5 +3AB48 +330 +3AB42 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.0358327064619 + 20 +138.2864766698209 + 30 +0.0 + 11 +-235.3218573431865 + 21 +137.7780794973619 + 31 +0.0 + 12 +-233.6536535074472 + 22 +137.1742041734174 + 32 +0.0 + 13 +-233.6536535074472 + 23 +137.1742041734174 + 33 +0.0 + 0 +POINT + 5 +3AB49 +330 +3AB42 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +137.1742041734174 + 30 +0.0 + 0 +POINT + 5 +3AB4A +330 +3AB42 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 0 +ENDBLK + 5 +3AB4C +330 +3AB42 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AB7B +330 +3AB76 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +A$C0BC441EF + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +A$C0BC441EF + 1 + + 0 +CIRCLE + 5 +3AB77 +330 +3AB76 +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbCircle + 10 +143.2423881851878 + 20 +-115.5640702556635 + 30 +0.0 + 40 +2.242388033499841 + 0 +TEXT + 5 +3AB78 +330 +3AB76 +100 +AcDbEntity + 8 +0 + 62 + 6 +370 + -1 +100 +AcDbText + 10 +142.4576913644426 + 20 +-116.7352595403579 + 30 +0.0 + 40 +2.342378569388679 + 1 +2 + 41 +0.9 + 7 +STYLE1 + 72 + 1 + 11 +143.207252506647 + 21 +-115.5640702556635 + 31 +0.0 +100 +AcDbText + 73 + 2 + 0 +ENDBLK + 5 +3AB7C +330 +3AB76 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF08 +330 +3AEFF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D40 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D40 + 1 + + 0 +LINE + 5 +3AF00 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-234.6148047129287 + 20 +100.977632590131 + 30 +0.0 + 11 +-232.2621408776945 + 21 +99.87075077012533 + 31 +0.0 + 0 +LINE + 5 +3AF01 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-227.7378591223054 + 20 +97.74216565370342 + 30 +0.0 + 11 +-226.1543605079192 + 21 +96.99716086295575 + 31 +0.0 + 0 +MTEXT + 5 +3AF02 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-238.8450081542175 + 20 +102.9678596739854 + 30 +0.0 + 40 +2.5 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9048563510778306 + 21 +-0.4257170232843806 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3AF03 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-229.3213577366916 + 20 +98.48717044445108 + 30 +0.0 + 11 +-230.6786422633083 + 21 +99.12574597937765 + 31 +0.0 + 0 +SOLID + 5 +3AF04 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + 30 +100 +AcDbTrace + 10 +-227.6136916571808 + 20 +98.00608208943446 + 30 +0.0 + 11 +-227.86202658743 + 21 +97.47824921797239 + 31 +0.0 + 12 +-229.3213577366916 + 22 +98.48717044445108 + 32 +0.0 + 13 +-229.3213577366916 + 23 +98.48717044445108 + 33 +0.0 + 0 +SOLID + 5 +3AF05 +330 +3AEFF +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + 30 +100 +AcDbTrace + 10 +-232.1379734125699 + 20 +100.1346672058564 + 30 +0.0 + 11 +-232.3863083428192 + 21 +99.60683433439429 + 31 +0.0 + 12 +-230.6786422633083 + 22 +99.12574597937765 + 32 +0.0 + 13 +-230.6786422633083 + 23 +99.12574597937765 + 33 +0.0 + 0 +POINT + 5 +3AF06 +330 +3AEFF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + 30 +100 +AcDbPoint + 10 +-230.6786422633083 + 20 +99.12574597937765 + 30 +0.0 + 0 +POINT + 5 +3AF07 +330 +3AEFF +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + 30 +100 +AcDbPoint + 10 +-229.3213577366916 + 20 +98.48717044445108 + 30 +0.0 + 0 +ENDBLK + 5 +3AF09 +330 +3AEFF +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF22 +330 +3AF21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U41 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U41 + 1 + + 0 +TEXT + 5 +3AF23 +330 +3AF21 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.4713402820251811 + 20 +-2.364329823509862 + 30 +0.0 + 40 +1.0 + 1 +Lead-free code +100 +AcDbText + 0 +ENDBLK + 5 +3AF25 +330 +3AF21 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF28 +330 +3AF27 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U42 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U42 + 1 + + 0 +TEXT + 5 +3AF29 +330 +3AF27 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.3388220538814421 + 20 +-0.5367848439423596 + 30 +0.0 + 40 +1.000199999999999 + 1 +Flex-Rigid PCB supplier code +100 +AcDbText + 0 +ENDBLK + 5 +3AF2A +330 +3AF27 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF2D +330 +3AF2C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U43 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U43 + 1 + + 0 +TEXT + 5 +3AF2E +330 +3AF2C +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-5.276082657392193 + 20 +4.583764497308465 + 30 +0.0 + 40 +1.036799999999999 + 1 +TRULY-* +100 +AcDbText + 0 +ENDBLK + 5 +3AF2F +330 +3AF2C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF32 +330 +3AF31 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U44 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U44 + 1 + + 0 +TEXT + 5 +3AF33 +330 +3AF31 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-9.177367779996832 + 20 +4.540790212822594 + 30 +0.0 + 40 +1.2096 + 1 +Pb +100 +AcDbText + 0 +ENDBLK + 5 +3AF34 +330 +3AF31 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF3B +330 +3AF3A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U45 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U45 + 1 + + 0 +SOLID + 5 +3AF3C +330 +3AF3A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-2.083528000882461 + 20 +3.355917289695391 + 30 +0.0 + 11 +-2.635811514521265 + 21 +5.041904349256412 + 31 +0.0 + 12 +-1.566574549870173 + 22 +3.626170702743706 + 32 +0.0 + 13 +-1.566574549870173 + 23 +3.626170702743706 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3AF3D +330 +3AF3A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-1.825051275376317 + 20 +3.491043996219548 + 10 +0.0 + 20 +0.0 + 0 +ENDBLK + 5 +3AF3E +330 +3AF3A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF41 +330 +3AF40 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U46 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U46 + 1 + + 0 +SOLID + 5 +3AF42 +330 +3AF40 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-6.691607045107036 + 20 +3.27366957969832 + 30 +0.0 + 11 +-7.830374642497077 + 21 +4.634102526807055 + 31 +0.0 + 12 +-6.311940554011773 + 22 +3.716536527344211 + 32 +0.0 + 13 +-6.311940554011773 + 23 +3.716536527344211 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3AF43 +330 +3AF40 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-6.501773799559404 + 20 +3.495103053521265 + 10 +-0.0997552242706661 + 20 +-1.993299143406886 + 0 +ENDBLK + 5 +3AF44 +330 +3AF40 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3AF6C +330 +3AF6B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D47 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D47 + 1 + + 0 +LINE + 5 +3AF6D +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +176.8064582119144 + 30 +0.0 + 11 +-26.66210739626401 + 21 +176.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3AF6E +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +58.80645821191439 + 30 +0.0 + 11 +-26.66210739626403 + 21 +58.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3AF6F +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.862107396264 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.86210739626402 + 21 +125.6064582119144 + 31 +0.0 + 0 +LINE + 5 +3AF70 +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.86210739626403 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.86210739626402 + 21 +110.0064582119144 + 31 +0.0 + 0 +SOLID + 5 +3AF71 +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959734 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.77877406293067 + 21 +176.3064582119144 + 31 +0.0 + 12 +-26.862107396264 + 22 +176.8064582119144 + 32 +0.0 + 13 +-26.862107396264 + 23 +176.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3AF72 +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959736 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.7787740629307 + 21 +59.30645821191438 + 31 +0.0 + 12 +-26.86210739626403 + 22 +58.80645821191438 + 32 +0.0 + 13 +-26.86210739626403 + 23 +58.80645821191438 + 33 +0.0 + 0 +MTEXT + 5 +3AF73 +330 +3AF6B +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-26.86210739626404 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3AF74 +330 +3AF6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +176.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3AF76 +330 +3AF6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +58.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3AF77 +330 +3AF6B +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-26.86210739626403 + 20 +58.80645821191438 + 30 +0.0 + 0 +ENDBLK + 5 +3AF78 +330 +3AF6B +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B2C3 +330 +3B2C2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D48 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D48 + 1 + + 0 +LINE + 5 +3B2C4 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-45.0948231477614 + 20 +147.1295283526956 + 30 +0.0 + 11 +-46.70283714574202 + 21 +147.8200288829622 + 31 +0.0 + 0 +LINE + 5 +3B2C5 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.29716285425801 + 20 +149.7928875408666 + 30 +0.0 + 11 +-52.90517685223863 + 21 +150.4833880711331 + 31 +0.0 + 0 +MTEXT + 5 +3B2C6 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-42.00513910878433 + 20 +145.8027809052549 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9188651417032108 + 21 +-0.3945717315808856 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B2C7 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 11 +-48.31085114372262 + 21 +148.5105294132287 + 31 +0.0 + 0 +SOLID + 5 +3B2C8 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-51.18207943254692 + 20 +150.0608898738633 + 30 +0.0 + 11 +-51.4122462759691 + 21 +149.5248852078698 + 31 +0.0 + 12 +-49.68914885627739 + 22 +149.1023870106 + 32 +0.0 + 13 +-49.68914885627739 + 23 +149.1023870106 + 33 +0.0 + 0 +SOLID + 5 +3B2C9 +330 +3B2C2 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.58775372403093 + 20 +148.0880312159589 + 30 +0.0 + 11 +-46.81792056745311 + 21 +147.5520265499654 + 31 +0.0 + 12 +-48.31085114372262 + 22 +148.5105294132287 + 32 +0.0 + 13 +-48.31085114372262 + 23 +148.5105294132287 + 33 +0.0 + 0 +POINT + 5 +3B2CA +330 +3B2C2 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.31085114372262 + 20 +148.5105294132287 + 30 +0.0 + 0 +POINT + 5 +3B2CB +330 +3B2C2 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 0 +ENDBLK + 5 +3B2CC +330 +3B2C2 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B2D6 +330 +3B2D5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D49 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D49 + 1 + + 0 +LINE + 5 +3B2D7 +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.914461595829 + 20 +95.47897761011113 + 30 +0.0 + 11 +-235.1788450248242 + 21 +97.58063834023731 + 31 +0.0 + 0 +LINE + 5 +3B2D8 +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751756 + 20 +100.0322780835916 + 30 +0.0 + 11 +-229.2959634577986 + 21 +100.8903519937656 + 31 +0.0 + 0 +MTEXT + 5 +3B2D9 +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542177 + 20 +93.8302498827054 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297109 + 21 +0.4903279486708455 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B2DA +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 11 +-233.6536535074472 + 21 +98.43871225041129 + 31 +0.0 + 0 +SOLID + 5 +3B2DB +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.9641672935379 + 20 +100.2864766698211 + 30 +0.0 + 11 +-230.6781426568132 + 21 +99.77807949736209 + 31 +0.0 + 12 +-232.3463464925526 + 22 +99.1742041734176 + 32 +0.0 + 13 +-232.3463464925526 + 23 +99.1742041734176 + 33 +0.0 + 0 +SOLID + 5 +3B2DC +330 +3B2D5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.3218573431866 + 20 +97.83483692646679 + 30 +0.0 + 11 +-235.0358327064619 + 21 +97.32643975400781 + 31 +0.0 + 12 +-233.6536535074472 + 22 +98.43871225041129 + 32 +0.0 + 13 +-233.6536535074472 + 23 +98.43871225041129 + 33 +0.0 + 0 +POINT + 5 +3B2DD +330 +3B2D5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +98.43871225041129 + 30 +0.0 + 0 +POINT + 5 +3B2DE +330 +3B2D5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 0 +ENDBLK + 5 +3B2DF +330 +3B2D5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B2E6 +330 +3B2E5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D50 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D50 + 1 + + 0 +LINE + 5 +3B2E7 +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 11 +-31.9368595329824 + 21 +148.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B2E8 +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-31.93685953298241 + 21 +86.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B2E9 +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298239 + 20 +147.0564582119144 + 30 +0.0 + 11 +-32.2368595329824 + 21 +124.5231248785811 + 31 +0.0 + 0 +LINE + 5 +3B2EA +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298241 + 20 +88.55645821191439 + 30 +0.0 + 11 +-32.23685953298241 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B2EB +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964906 + 20 +147.0564582119144 + 30 +0.0 + 11 +-31.94519286631573 + 21 +147.0564582119144 + 31 +0.0 + 12 +-32.23685953298239 + 22 +148.8064582119144 + 32 +0.0 + 13 +-32.23685953298239 + 23 +148.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B2EC +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964907 + 20 +88.55645821191439 + 30 +0.0 + 11 +-31.94519286631574 + 21 +88.55645821191438 + 31 +0.0 + 12 +-32.23685953298241 + 22 +86.80645821191439 + 32 +0.0 + 13 +-32.23685953298241 + 23 +86.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B2ED +330 +3B2E5 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-32.23685953298242 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B2EE +330 +3B2E5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B2EF +330 +3B2E5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B2F0 +330 +3B2E5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-32.23685953298241 + 20 +86.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B2F1 +330 +3B2E5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B2F6 +330 +3B2F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D51 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D51 + 1 + + 0 +LINE + 5 +3B2F7 +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 11 +-238.3457226094723 + 21 +136.8064582119143 + 31 +0.0 + 0 +LINE + 5 +3B2F8 +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 11 +-238.3457226094723 + 21 +98.80645821191439 + 31 +0.0 + 0 +LINE + 5 +3B2F9 +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +135.0564582119143 + 30 +0.0 + 11 +-238.0457226094723 + 21 +124.523124878581 + 31 +0.0 + 0 +LINE + 5 +3B2FA +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +100.5564582119144 + 30 +0.0 + 11 +-238.0457226094723 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B2FB +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +135.0564582119143 + 30 +0.0 + 11 +-237.7540559428056 + 21 +135.0564582119143 + 31 +0.0 + 12 +-238.0457226094723 + 22 +136.8064582119143 + 32 +0.0 + 13 +-238.0457226094723 + 23 +136.8064582119143 + 33 +0.0 + 0 +SOLID + 5 +3B2FC +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +100.5564582119144 + 30 +0.0 + 11 +-237.7540559428056 + 21 +100.5564582119144 + 31 +0.0 + 12 +-238.0457226094723 + 22 +98.80645821191439 + 32 +0.0 + 13 +-238.0457226094723 + 23 +98.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B2FD +330 +3B2F5 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-238.0457226094723 + 20 +117.8064582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;38.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B2FE +330 +3B2F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 0 +POINT + 5 +3B2FF +330 +3B2F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B300 +330 +3B2F5 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-238.0457226094723 + 20 +98.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B301 +330 +3B2F5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B307 +330 +3B306 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D52 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D52 + 1 + + 0 +LINE + 5 +3B308 +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.9144615958291 + 20 +140.1339388137175 + 30 +0.0 + 11 +-235.1788450248242 + 21 +138.0322780835914 + 31 +0.0 + 0 +LINE + 5 +3B309 +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751755 + 20 +135.5806383402372 + 30 +0.0 + 11 +-229.2959634577985 + 21 +134.7225644300632 + 31 +0.0 + 0 +MTEXT + 5 +3B30A +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542178 + 20 +141.7826665411232 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297189 + 21 +-0.4903279486708312 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B30B +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 11 +-233.6536535074472 + 21 +137.1742041734174 + 31 +0.0 + 0 +SOLID + 5 +3B30C +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.6781426568132 + 20 +135.8348369264667 + 30 +0.0 + 11 +-230.9641672935379 + 21 +135.3264397540077 + 31 +0.0 + 12 +-232.3463464925525 + 22 +136.4387122504111 + 32 +0.0 + 13 +-232.3463464925525 + 23 +136.4387122504111 + 33 +0.0 + 0 +SOLID + 5 +3B30D +330 +3B306 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.0358327064619 + 20 +138.2864766698209 + 30 +0.0 + 11 +-235.3218573431865 + 21 +137.7780794973619 + 31 +0.0 + 12 +-233.6536535074472 + 22 +137.1742041734174 + 32 +0.0 + 13 +-233.6536535074472 + 23 +137.1742041734174 + 33 +0.0 + 0 +POINT + 5 +3B30E +330 +3B306 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +137.1742041734174 + 30 +0.0 + 0 +POINT + 5 +3B30F +330 +3B306 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 0 +ENDBLK + 5 +3B310 +330 +3B306 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B361 +330 +3B360 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D53 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D53 + 1 + + 0 +LINE + 5 +3B362 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +176.8064582119144 + 30 +0.0 + 11 +-26.66210739626401 + 21 +176.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B363 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +58.80645821191439 + 30 +0.0 + 11 +-26.66210739626403 + 21 +58.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B364 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.862107396264 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.86210739626402 + 21 +125.6064582119144 + 31 +0.0 + 0 +LINE + 5 +3B365 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.86210739626403 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.86210739626402 + 21 +110.0064582119144 + 31 +0.0 + 0 +SOLID + 5 +3B366 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959734 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.77877406293067 + 21 +176.3064582119144 + 31 +0.0 + 12 +-26.862107396264 + 22 +176.8064582119144 + 32 +0.0 + 13 +-26.862107396264 + 23 +176.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B367 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959736 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.7787740629307 + 21 +59.30645821191438 + 31 +0.0 + 12 +-26.86210739626403 + 22 +58.80645821191438 + 32 +0.0 + 13 +-26.86210739626403 + 23 +58.80645821191438 + 33 +0.0 + 0 +MTEXT + 5 +3B368 +330 +3B360 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-26.86210739626404 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B369 +330 +3B360 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +176.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B36A +330 +3B360 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +58.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B36B +330 +3B360 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-26.86210739626403 + 20 +58.80645821191438 + 30 +0.0 + 0 +ENDBLK + 5 +3B36C +330 +3B360 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B384 +330 +3B383 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D54 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D54 + 1 + + 0 +LINE + 5 +3B385 +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-45.0948231477614 + 20 +147.1295283526956 + 30 +0.0 + 11 +-46.70283714574202 + 21 +147.8200288829622 + 31 +0.0 + 0 +LINE + 5 +3B386 +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.29716285425801 + 20 +149.7928875408666 + 30 +0.0 + 11 +-52.90517685223863 + 21 +150.4833880711331 + 31 +0.0 + 0 +MTEXT + 5 +3B387 +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-42.00513910878433 + 20 +145.8027809052549 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9188651417032108 + 21 +-0.3945717315808856 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B388 +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 11 +-48.31085114372262 + 21 +148.5105294132287 + 31 +0.0 + 0 +SOLID + 5 +3B389 +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-51.18207943254692 + 20 +150.0608898738633 + 30 +0.0 + 11 +-51.4122462759691 + 21 +149.5248852078698 + 31 +0.0 + 12 +-49.68914885627739 + 22 +149.1023870106 + 32 +0.0 + 13 +-49.68914885627739 + 23 +149.1023870106 + 33 +0.0 + 0 +SOLID + 5 +3B38A +330 +3B383 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.58775372403093 + 20 +148.0880312159589 + 30 +0.0 + 11 +-46.81792056745311 + 21 +147.5520265499654 + 31 +0.0 + 12 +-48.31085114372262 + 22 +148.5105294132287 + 32 +0.0 + 13 +-48.31085114372262 + 23 +148.5105294132287 + 33 +0.0 + 0 +POINT + 5 +3B38B +330 +3B383 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.31085114372262 + 20 +148.5105294132287 + 30 +0.0 + 0 +POINT + 5 +3B38C +330 +3B383 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 0 +ENDBLK + 5 +3B38D +330 +3B383 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B397 +330 +3B396 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D55 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D55 + 1 + + 0 +LINE + 5 +3B398 +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.914461595829 + 20 +95.47897761011113 + 30 +0.0 + 11 +-235.1788450248242 + 21 +97.58063834023731 + 31 +0.0 + 0 +LINE + 5 +3B399 +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751756 + 20 +100.0322780835916 + 30 +0.0 + 11 +-229.2959634577986 + 21 +100.8903519937656 + 31 +0.0 + 0 +MTEXT + 5 +3B39A +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542177 + 20 +93.8302498827054 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297109 + 21 +0.4903279486708455 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B39B +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 11 +-233.6536535074472 + 21 +98.43871225041129 + 31 +0.0 + 0 +SOLID + 5 +3B39C +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.9641672935379 + 20 +100.2864766698211 + 30 +0.0 + 11 +-230.6781426568132 + 21 +99.77807949736209 + 31 +0.0 + 12 +-232.3463464925526 + 22 +99.1742041734176 + 32 +0.0 + 13 +-232.3463464925526 + 23 +99.1742041734176 + 33 +0.0 + 0 +SOLID + 5 +3B39D +330 +3B396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.3218573431866 + 20 +97.83483692646679 + 30 +0.0 + 11 +-235.0358327064619 + 21 +97.32643975400781 + 31 +0.0 + 12 +-233.6536535074472 + 22 +98.43871225041129 + 32 +0.0 + 13 +-233.6536535074472 + 23 +98.43871225041129 + 33 +0.0 + 0 +POINT + 5 +3B39E +330 +3B396 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +98.43871225041129 + 30 +0.0 + 0 +POINT + 5 +3B39F +330 +3B396 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 0 +ENDBLK + 5 +3B3A0 +330 +3B396 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B3A7 +330 +3B3A6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D56 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D56 + 1 + + 0 +LINE + 5 +3B3A8 +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 11 +-31.9368595329824 + 21 +148.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B3A9 +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-31.93685953298241 + 21 +86.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B3AA +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298239 + 20 +147.0564582119144 + 30 +0.0 + 11 +-32.2368595329824 + 21 +124.5231248785811 + 31 +0.0 + 0 +LINE + 5 +3B3AB +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298241 + 20 +88.55645821191439 + 30 +0.0 + 11 +-32.23685953298241 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B3AC +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964906 + 20 +147.0564582119144 + 30 +0.0 + 11 +-31.94519286631573 + 21 +147.0564582119144 + 31 +0.0 + 12 +-32.23685953298239 + 22 +148.8064582119144 + 32 +0.0 + 13 +-32.23685953298239 + 23 +148.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B3AD +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964907 + 20 +88.55645821191439 + 30 +0.0 + 11 +-31.94519286631574 + 21 +88.55645821191438 + 31 +0.0 + 12 +-32.23685953298241 + 22 +86.80645821191439 + 32 +0.0 + 13 +-32.23685953298241 + 23 +86.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B3AE +330 +3B3A6 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-32.23685953298242 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B3AF +330 +3B3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B3B0 +330 +3B3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B3B1 +330 +3B3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-32.23685953298241 + 20 +86.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B3B2 +330 +3B3A6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B3B7 +330 +3B3B6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D57 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D57 + 1 + + 0 +LINE + 5 +3B3B8 +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 11 +-238.3457226094723 + 21 +136.8064582119143 + 31 +0.0 + 0 +LINE + 5 +3B3B9 +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 11 +-238.3457226094723 + 21 +98.80645821191439 + 31 +0.0 + 0 +LINE + 5 +3B3BA +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +135.0564582119143 + 30 +0.0 + 11 +-238.0457226094723 + 21 +124.523124878581 + 31 +0.0 + 0 +LINE + 5 +3B3BB +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +100.5564582119144 + 30 +0.0 + 11 +-238.0457226094723 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B3BC +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +135.0564582119143 + 30 +0.0 + 11 +-237.7540559428056 + 21 +135.0564582119143 + 31 +0.0 + 12 +-238.0457226094723 + 22 +136.8064582119143 + 32 +0.0 + 13 +-238.0457226094723 + 23 +136.8064582119143 + 33 +0.0 + 0 +SOLID + 5 +3B3BD +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +100.5564582119144 + 30 +0.0 + 11 +-237.7540559428056 + 21 +100.5564582119144 + 31 +0.0 + 12 +-238.0457226094723 + 22 +98.80645821191439 + 32 +0.0 + 13 +-238.0457226094723 + 23 +98.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B3BE +330 +3B3B6 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-238.0457226094723 + 20 +117.8064582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;38.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B3BF +330 +3B3B6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 0 +POINT + 5 +3B3C0 +330 +3B3B6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B3C1 +330 +3B3B6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-238.0457226094723 + 20 +98.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B3C2 +330 +3B3B6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B3C8 +330 +3B3C7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D58 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D58 + 1 + + 0 +LINE + 5 +3B3C9 +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.9144615958291 + 20 +140.1339388137175 + 30 +0.0 + 11 +-235.1788450248242 + 21 +138.0322780835914 + 31 +0.0 + 0 +LINE + 5 +3B3CA +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751755 + 20 +135.5806383402372 + 30 +0.0 + 11 +-229.2959634577985 + 21 +134.7225644300632 + 31 +0.0 + 0 +MTEXT + 5 +3B3CB +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542178 + 20 +141.7826665411232 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297189 + 21 +-0.4903279486708312 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B3CC +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 11 +-233.6536535074472 + 21 +137.1742041734174 + 31 +0.0 + 0 +SOLID + 5 +3B3CD +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.6781426568132 + 20 +135.8348369264667 + 30 +0.0 + 11 +-230.9641672935379 + 21 +135.3264397540077 + 31 +0.0 + 12 +-232.3463464925525 + 22 +136.4387122504111 + 32 +0.0 + 13 +-232.3463464925525 + 23 +136.4387122504111 + 33 +0.0 + 0 +SOLID + 5 +3B3CE +330 +3B3C7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.0358327064619 + 20 +138.2864766698209 + 30 +0.0 + 11 +-235.3218573431865 + 21 +137.7780794973619 + 31 +0.0 + 12 +-233.6536535074472 + 22 +137.1742041734174 + 32 +0.0 + 13 +-233.6536535074472 + 23 +137.1742041734174 + 33 +0.0 + 0 +POINT + 5 +3B3CF +330 +3B3C7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +137.1742041734174 + 30 +0.0 + 0 +POINT + 5 +3B3D0 +330 +3B3C7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 0 +ENDBLK + 5 +3B3D1 +330 +3B3C7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B3F0 +330 +3B3E5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D59 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D59 + 1 + + 0 +ENDBLK + 5 +3B3F1 +330 +3B3E5 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B3FE +330 +3B3F3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D60 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D60 + 1 + + 0 +ENDBLK + 5 +3B3FF +330 +3B3F3 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B418 +330 +3B40C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D61 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D61 + 1 + + 0 +ENDBLK + 5 +3B419 +330 +3B40C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B434 +330 +3B433 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U62 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U62 + 1 + + 0 +TEXT + 5 +3B435 +330 +3B433 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.4713402820251811 + 20 +-2.364329823509862 + 30 +0.0 + 40 +1.0 + 1 +Lead-free code +100 +AcDbText + 0 +ENDBLK + 5 +3B437 +330 +3B433 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B43A +330 +3B439 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U63 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U63 + 1 + + 0 +TEXT + 5 +3B43B +330 +3B439 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.3388220538814421 + 20 +-0.5367848439423596 + 30 +0.0 + 40 +1.000199999999999 + 1 +Flex-Rigid PCB supplier code +100 +AcDbText + 0 +ENDBLK + 5 +3B43C +330 +3B439 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B43F +330 +3B43E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U64 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U64 + 1 + + 0 +TEXT + 5 +3B440 +330 +3B43E +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-5.276082657392193 + 20 +4.583764497308465 + 30 +0.0 + 40 +1.036799999999999 + 1 +TRULY-* +100 +AcDbText + 0 +ENDBLK + 5 +3B441 +330 +3B43E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B444 +330 +3B443 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U65 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U65 + 1 + + 0 +TEXT + 5 +3B445 +330 +3B443 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-9.177367779996832 + 20 +4.540790212822594 + 30 +0.0 + 40 +1.2096 + 1 +Pb +100 +AcDbText + 0 +ENDBLK + 5 +3B446 +330 +3B443 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B44D +330 +3B44C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U66 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U66 + 1 + + 0 +SOLID + 5 +3B44E +330 +3B44C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-2.083528000882461 + 20 +3.355917289695391 + 30 +0.0 + 11 +-2.635811514521265 + 21 +5.041904349256412 + 31 +0.0 + 12 +-1.566574549870173 + 22 +3.626170702743706 + 32 +0.0 + 13 +-1.566574549870173 + 23 +3.626170702743706 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3B44F +330 +3B44C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-1.825051275376317 + 20 +3.491043996219548 + 10 +0.0 + 20 +0.0 + 0 +ENDBLK + 5 +3B450 +330 +3B44C +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B453 +330 +3B452 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U67 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U67 + 1 + + 0 +SOLID + 5 +3B454 +330 +3B452 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-6.691607045107036 + 20 +3.27366957969832 + 30 +0.0 + 11 +-7.830374642497077 + 21 +4.634102526807055 + 31 +0.0 + 12 +-6.311940554011773 + 22 +3.716536527344211 + 32 +0.0 + 13 +-6.311940554011773 + 23 +3.716536527344211 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3B455 +330 +3B452 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-6.501773799559404 + 20 +3.495103053521265 + 10 +-0.0997552242706661 + 20 +-1.993299143406886 + 0 +ENDBLK + 5 +3B456 +330 +3B452 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B47E +330 +3B47D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D68 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D68 + 1 + + 0 +LINE + 5 +3B47F +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +176.8064582119144 + 30 +0.0 + 11 +-26.66210739626401 + 21 +176.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B480 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +58.80645821191439 + 30 +0.0 + 11 +-26.66210739626403 + 21 +58.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B481 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.862107396264 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.86210739626402 + 21 +125.6064582119144 + 31 +0.0 + 0 +LINE + 5 +3B482 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.86210739626403 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.86210739626402 + 21 +110.0064582119144 + 31 +0.0 + 0 +SOLID + 5 +3B483 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959734 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.77877406293067 + 21 +176.3064582119144 + 31 +0.0 + 12 +-26.862107396264 + 22 +176.8064582119144 + 32 +0.0 + 13 +-26.862107396264 + 23 +176.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B484 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959736 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.7787740629307 + 21 +59.30645821191438 + 31 +0.0 + 12 +-26.86210739626403 + 22 +58.80645821191438 + 32 +0.0 + 13 +-26.86210739626403 + 23 +58.80645821191438 + 33 +0.0 + 0 +MTEXT + 5 +3B485 +330 +3B47D +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-26.86210739626404 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B486 +330 +3B47D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +176.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B488 +330 +3B47D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +58.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B489 +330 +3B47D +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-26.86210739626403 + 20 +58.80645821191438 + 30 +0.0 + 0 +ENDBLK + 5 +3B48A +330 +3B47D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B7D5 +330 +3B7D4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D69 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D69 + 1 + + 0 +LINE + 5 +3B7D6 +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-45.0948231477614 + 20 +147.1295283526956 + 30 +0.0 + 11 +-46.70283714574202 + 21 +147.8200288829622 + 31 +0.0 + 0 +LINE + 5 +3B7D7 +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.29716285425801 + 20 +149.7928875408666 + 30 +0.0 + 11 +-52.90517685223863 + 21 +150.4833880711331 + 31 +0.0 + 0 +MTEXT + 5 +3B7D8 +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-42.00513910878433 + 20 +145.8027809052549 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9188651417032108 + 21 +-0.3945717315808856 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B7D9 +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 11 +-48.31085114372262 + 21 +148.5105294132287 + 31 +0.0 + 0 +SOLID + 5 +3B7DA +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-51.18207943254692 + 20 +150.0608898738633 + 30 +0.0 + 11 +-51.4122462759691 + 21 +149.5248852078698 + 31 +0.0 + 12 +-49.68914885627739 + 22 +149.1023870106 + 32 +0.0 + 13 +-49.68914885627739 + 23 +149.1023870106 + 33 +0.0 + 0 +SOLID + 5 +3B7DB +330 +3B7D4 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.58775372403093 + 20 +148.0880312159589 + 30 +0.0 + 11 +-46.81792056745311 + 21 +147.5520265499654 + 31 +0.0 + 12 +-48.31085114372262 + 22 +148.5105294132287 + 32 +0.0 + 13 +-48.31085114372262 + 23 +148.5105294132287 + 33 +0.0 + 0 +POINT + 5 +3B7DC +330 +3B7D4 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.31085114372262 + 20 +148.5105294132287 + 30 +0.0 + 0 +POINT + 5 +3B7DD +330 +3B7D4 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 0 +ENDBLK + 5 +3B7DE +330 +3B7D4 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B7E8 +330 +3B7E7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D70 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D70 + 1 + + 0 +LINE + 5 +3B7E9 +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.914461595829 + 20 +95.47897761011113 + 30 +0.0 + 11 +-235.1788450248242 + 21 +97.58063834023731 + 31 +0.0 + 0 +LINE + 5 +3B7EA +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751756 + 20 +100.0322780835916 + 30 +0.0 + 11 +-229.2959634577986 + 21 +100.8903519937656 + 31 +0.0 + 0 +MTEXT + 5 +3B7EB +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542177 + 20 +93.8302498827054 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297109 + 21 +0.4903279486708455 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B7EC +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 11 +-233.6536535074472 + 21 +98.43871225041129 + 31 +0.0 + 0 +SOLID + 5 +3B7ED +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.9641672935379 + 20 +100.2864766698211 + 30 +0.0 + 11 +-230.6781426568132 + 21 +99.77807949736209 + 31 +0.0 + 12 +-232.3463464925526 + 22 +99.1742041734176 + 32 +0.0 + 13 +-232.3463464925526 + 23 +99.1742041734176 + 33 +0.0 + 0 +SOLID + 5 +3B7EE +330 +3B7E7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.3218573431866 + 20 +97.83483692646679 + 30 +0.0 + 11 +-235.0358327064619 + 21 +97.32643975400781 + 31 +0.0 + 12 +-233.6536535074472 + 22 +98.43871225041129 + 32 +0.0 + 13 +-233.6536535074472 + 23 +98.43871225041129 + 33 +0.0 + 0 +POINT + 5 +3B7EF +330 +3B7E7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +98.43871225041129 + 30 +0.0 + 0 +POINT + 5 +3B7F0 +330 +3B7E7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 0 +ENDBLK + 5 +3B7F1 +330 +3B7E7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B7F8 +330 +3B7F7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D71 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D71 + 1 + + 0 +LINE + 5 +3B7F9 +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 11 +-31.9368595329824 + 21 +148.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B7FA +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-31.93685953298241 + 21 +86.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B7FB +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298239 + 20 +147.0564582119144 + 30 +0.0 + 11 +-32.2368595329824 + 21 +124.5231248785811 + 31 +0.0 + 0 +LINE + 5 +3B7FC +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298241 + 20 +88.55645821191439 + 30 +0.0 + 11 +-32.23685953298241 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B7FD +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964906 + 20 +147.0564582119144 + 30 +0.0 + 11 +-31.94519286631573 + 21 +147.0564582119144 + 31 +0.0 + 12 +-32.23685953298239 + 22 +148.8064582119144 + 32 +0.0 + 13 +-32.23685953298239 + 23 +148.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B7FE +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964907 + 20 +88.55645821191439 + 30 +0.0 + 11 +-31.94519286631574 + 21 +88.55645821191438 + 31 +0.0 + 12 +-32.23685953298241 + 22 +86.80645821191439 + 32 +0.0 + 13 +-32.23685953298241 + 23 +86.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B7FF +330 +3B7F7 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-32.23685953298242 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B800 +330 +3B7F7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B801 +330 +3B7F7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B802 +330 +3B7F7 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-32.23685953298241 + 20 +86.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B803 +330 +3B7F7 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B808 +330 +3B807 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D72 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D72 + 1 + + 0 +LINE + 5 +3B809 +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 11 +-238.3457226094723 + 21 +136.8064582119143 + 31 +0.0 + 0 +LINE + 5 +3B80A +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 11 +-238.3457226094723 + 21 +98.80645821191439 + 31 +0.0 + 0 +LINE + 5 +3B80B +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +135.0564582119143 + 30 +0.0 + 11 +-238.0457226094723 + 21 +124.523124878581 + 31 +0.0 + 0 +LINE + 5 +3B80C +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +100.5564582119144 + 30 +0.0 + 11 +-238.0457226094723 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3B80D +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +135.0564582119143 + 30 +0.0 + 11 +-237.7540559428056 + 21 +135.0564582119143 + 31 +0.0 + 12 +-238.0457226094723 + 22 +136.8064582119143 + 32 +0.0 + 13 +-238.0457226094723 + 23 +136.8064582119143 + 33 +0.0 + 0 +SOLID + 5 +3B80E +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +100.5564582119144 + 30 +0.0 + 11 +-237.7540559428056 + 21 +100.5564582119144 + 31 +0.0 + 12 +-238.0457226094723 + 22 +98.80645821191439 + 32 +0.0 + 13 +-238.0457226094723 + 23 +98.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3B80F +330 +3B807 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-238.0457226094723 + 20 +117.8064582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;38.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B810 +330 +3B807 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 0 +POINT + 5 +3B811 +330 +3B807 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B812 +330 +3B807 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-238.0457226094723 + 20 +98.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3B813 +330 +3B807 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B819 +330 +3B818 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D73 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D73 + 1 + + 0 +LINE + 5 +3B81A +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.9144615958291 + 20 +140.1339388137175 + 30 +0.0 + 11 +-235.1788450248242 + 21 +138.0322780835914 + 31 +0.0 + 0 +LINE + 5 +3B81B +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751755 + 20 +135.5806383402372 + 30 +0.0 + 11 +-229.2959634577985 + 21 +134.7225644300632 + 31 +0.0 + 0 +MTEXT + 5 +3B81C +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542178 + 20 +141.7826665411232 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297189 + 21 +-0.4903279486708312 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3B81D +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 11 +-233.6536535074472 + 21 +137.1742041734174 + 31 +0.0 + 0 +SOLID + 5 +3B81E +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.6781426568132 + 20 +135.8348369264667 + 30 +0.0 + 11 +-230.9641672935379 + 21 +135.3264397540077 + 31 +0.0 + 12 +-232.3463464925525 + 22 +136.4387122504111 + 32 +0.0 + 13 +-232.3463464925525 + 23 +136.4387122504111 + 33 +0.0 + 0 +SOLID + 5 +3B81F +330 +3B818 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.0358327064619 + 20 +138.2864766698209 + 30 +0.0 + 11 +-235.3218573431865 + 21 +137.7780794973619 + 31 +0.0 + 12 +-233.6536535074472 + 22 +137.1742041734174 + 32 +0.0 + 13 +-233.6536535074472 + 23 +137.1742041734174 + 33 +0.0 + 0 +POINT + 5 +3B820 +330 +3B818 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +137.1742041734174 + 30 +0.0 + 0 +POINT + 5 +3B821 +330 +3B818 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 0 +ENDBLK + 5 +3B822 +330 +3B818 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B870 +330 +3B86F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U74 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U74 + 1 + + 0 +TEXT + 5 +3B871 +330 +3B86F +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.4713402820251811 + 20 +-2.364329823509862 + 30 +0.0 + 40 +1.0 + 1 +Lead-free code +100 +AcDbText + 0 +ENDBLK + 5 +3B873 +330 +3B86F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B876 +330 +3B875 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U75 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U75 + 1 + + 0 +TEXT + 5 +3B877 +330 +3B875 +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +0.3388220538814421 + 20 +-0.5367848439423596 + 30 +0.0 + 40 +1.000199999999999 + 1 +Flex-Rigid PCB supplier code +100 +AcDbText + 0 +ENDBLK + 5 +3B878 +330 +3B875 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B87B +330 +3B87A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U76 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U76 + 1 + + 0 +TEXT + 5 +3B87C +330 +3B87A +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-5.276082657392193 + 20 +4.583764497308465 + 30 +0.0 + 40 +1.036799999999999 + 1 +TRULY-* +100 +AcDbText + 0 +ENDBLK + 5 +3B87D +330 +3B87A +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B880 +330 +3B87F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U77 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U77 + 1 + + 0 +TEXT + 5 +3B881 +330 +3B87F +100 +AcDbEntity + 8 +0 + 6 +ByBlock +370 + -1 +100 +AcDbText + 10 +-9.177367779996832 + 20 +4.540790212822594 + 30 +0.0 + 40 +1.2096 + 1 +Pb +100 +AcDbText + 0 +ENDBLK + 5 +3B882 +330 +3B87F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B889 +330 +3B888 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U78 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U78 + 1 + + 0 +SOLID + 5 +3B88A +330 +3B888 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-2.083528000882461 + 20 +3.355917289695391 + 30 +0.0 + 11 +-2.635811514521265 + 21 +5.041904349256412 + 31 +0.0 + 12 +-1.566574549870173 + 22 +3.626170702743706 + 32 +0.0 + 13 +-1.566574549870173 + 23 +3.626170702743706 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3B88B +330 +3B888 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-1.825051275376317 + 20 +3.491043996219548 + 10 +0.0 + 20 +0.0 + 0 +ENDBLK + 5 +3B88C +330 +3B888 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B88F +330 +3B88E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*U79 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*U79 + 1 + + 0 +SOLID + 5 +3B890 +330 +3B88E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbTrace + 10 +-6.691607045107036 + 20 +3.27366957969832 + 30 +0.0 + 11 +-7.830374642497077 + 21 +4.634102526807055 + 31 +0.0 + 12 +-6.311940554011773 + 22 +3.716536527344211 + 32 +0.0 + 13 +-6.311940554011773 + 23 +3.716536527344211 + 33 +0.0 + 0 +LWPOLYLINE + 5 +3B891 +330 +3B88E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbPolyline + 90 + 2 + 70 + 0 + 43 +0.0 + 10 +-6.501773799559404 + 20 +3.495103053521265 + 10 +-0.0997552242706661 + 20 +-1.993299143406886 + 0 +ENDBLK + 5 +3B892 +330 +3B88E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3B8BA +330 +3B8B9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D80 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D80 + 1 + + 0 +LINE + 5 +3B8BB +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +176.8064582119144 + 30 +0.0 + 11 +-26.66210739626401 + 21 +176.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3B8BC +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-48.79999999999994 + 20 +58.80645821191439 + 30 +0.0 + 11 +-26.66210739626403 + 21 +58.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3B8BD +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.862107396264 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.86210739626402 + 21 +125.6064582119144 + 31 +0.0 + 0 +LINE + 5 +3B8BE +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-26.86210739626403 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.86210739626402 + 21 +110.0064582119144 + 31 +0.0 + 0 +SOLID + 5 +3B8BF +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959734 + 20 +176.3064582119144 + 30 +0.0 + 11 +-26.77877406293067 + 21 +176.3064582119144 + 31 +0.0 + 12 +-26.862107396264 + 22 +176.8064582119144 + 32 +0.0 + 13 +-26.862107396264 + 23 +176.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3B8C0 +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-26.94544072959736 + 20 +59.30645821191438 + 30 +0.0 + 11 +-26.7787740629307 + 21 +59.30645821191438 + 31 +0.0 + 12 +-26.86210739626403 + 22 +58.80645821191438 + 32 +0.0 + 13 +-26.86210739626403 + 23 +58.80645821191438 + 33 +0.0 + 0 +MTEXT + 5 +3B8C1 +330 +3B8B9 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-26.86210739626404 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.8 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;118.00%%P0.50 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3B8C2 +330 +3B8B9 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +176.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3B8C4 +330 +3B8B9 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.99999999999994 + 20 +58.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3B8C5 +330 +3B8B9 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-26.86210739626403 + 20 +58.80645821191438 + 30 +0.0 + 0 +ENDBLK + 5 +3B8C6 +330 +3B8B9 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BC11 +330 +3BC10 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D81 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D81 + 1 + + 0 +LINE + 5 +3BC12 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-45.0948231477614 + 20 +147.1295283526956 + 30 +0.0 + 11 +-46.70283714574202 + 21 +147.8200288829622 + 31 +0.0 + 0 +LINE + 5 +3BC13 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.29716285425801 + 20 +149.7928875408666 + 30 +0.0 + 11 +-52.90517685223863 + 21 +150.4833880711331 + 31 +0.0 + 0 +MTEXT + 5 +3BC14 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-42.00513910878433 + 20 +145.8027809052549 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.9188651417032108 + 21 +-0.3945717315808856 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3BC15 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 11 +-48.31085114372262 + 21 +148.5105294132287 + 31 +0.0 + 0 +SOLID + 5 +3BC16 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-51.18207943254692 + 20 +150.0608898738633 + 30 +0.0 + 11 +-51.4122462759691 + 21 +149.5248852078698 + 31 +0.0 + 12 +-49.68914885627739 + 22 +149.1023870106 + 32 +0.0 + 13 +-49.68914885627739 + 23 +149.1023870106 + 33 +0.0 + 0 +SOLID + 5 +3BC17 +330 +3BC10 +100 +AcDbEntity + 8 +dim + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-46.58775372403093 + 20 +148.0880312159589 + 30 +0.0 + 11 +-46.81792056745311 + 21 +147.5520265499654 + 31 +0.0 + 12 +-48.31085114372262 + 22 +148.5105294132287 + 32 +0.0 + 13 +-48.31085114372262 + 23 +148.5105294132287 + 33 +0.0 + 0 +POINT + 5 +3BC18 +330 +3BC10 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-48.31085114372262 + 20 +148.5105294132287 + 30 +0.0 + 0 +POINT + 5 +3BC19 +330 +3BC10 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.68914885627739 + 20 +149.1023870106 + 30 +0.0 + 0 +ENDBLK + 5 +3BC1A +330 +3BC10 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BC24 +330 +3BC23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D82 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D82 + 1 + + 0 +LINE + 5 +3BC25 +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.914461595829 + 20 +95.47897761011113 + 30 +0.0 + 11 +-235.1788450248242 + 21 +97.58063834023731 + 31 +0.0 + 0 +LINE + 5 +3BC26 +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751756 + 20 +100.0322780835916 + 30 +0.0 + 11 +-229.2959634577986 + 21 +100.8903519937656 + 31 +0.0 + 0 +MTEXT + 5 +3BC27 +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542177 + 20 +93.8302498827054 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297109 + 21 +0.4903279486708455 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3BC28 +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 11 +-233.6536535074472 + 21 +98.43871225041129 + 31 +0.0 + 0 +SOLID + 5 +3BC29 +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.9641672935379 + 20 +100.2864766698211 + 30 +0.0 + 11 +-230.6781426568132 + 21 +99.77807949736209 + 31 +0.0 + 12 +-232.3463464925526 + 22 +99.1742041734176 + 32 +0.0 + 13 +-232.3463464925526 + 23 +99.1742041734176 + 33 +0.0 + 0 +SOLID + 5 +3BC2A +330 +3BC23 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.3218573431866 + 20 +97.83483692646679 + 30 +0.0 + 11 +-235.0358327064619 + 21 +97.32643975400781 + 31 +0.0 + 12 +-233.6536535074472 + 22 +98.43871225041129 + 32 +0.0 + 13 +-233.6536535074472 + 23 +98.43871225041129 + 33 +0.0 + 0 +POINT + 5 +3BC2B +330 +3BC23 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +98.43871225041129 + 30 +0.0 + 0 +POINT + 5 +3BC2C +330 +3BC23 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925526 + 20 +99.1742041734176 + 30 +0.0 + 0 +ENDBLK + 5 +3BC2D +330 +3BC23 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BC34 +330 +3BC33 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D83 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D83 + 1 + + 0 +LINE + 5 +3BC35 +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 11 +-31.9368595329824 + 21 +148.8064582119144 + 31 +0.0 + 0 +LINE + 5 +3BC36 +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 11 +-31.93685953298241 + 21 +86.80645821191438 + 31 +0.0 + 0 +LINE + 5 +3BC37 +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298239 + 20 +147.0564582119144 + 30 +0.0 + 11 +-32.2368595329824 + 21 +124.5231248785811 + 31 +0.0 + 0 +LINE + 5 +3BC38 +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-32.23685953298241 + 20 +88.55645821191439 + 30 +0.0 + 11 +-32.23685953298241 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3BC39 +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964906 + 20 +147.0564582119144 + 30 +0.0 + 11 +-31.94519286631573 + 21 +147.0564582119144 + 31 +0.0 + 12 +-32.23685953298239 + 22 +148.8064582119144 + 32 +0.0 + 13 +-32.23685953298239 + 23 +148.8064582119144 + 33 +0.0 + 0 +SOLID + 5 +3BC3A +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-32.52852619964907 + 20 +88.55645821191439 + 30 +0.0 + 11 +-31.94519286631574 + 21 +88.55645821191438 + 31 +0.0 + 12 +-32.23685953298241 + 22 +86.80645821191439 + 32 +0.0 + 13 +-32.23685953298241 + 23 +86.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3BC3B +330 +3BC33 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-32.23685953298242 + 20 +117.8064582119144 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;62.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3BC3C +330 +3BC33 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +148.8064582119144 + 30 +0.0 + 0 +POINT + 5 +3BC3D +330 +3BC33 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-49.00000000000003 + 20 +86.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3BC3E +330 +3BC33 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-32.23685953298241 + 20 +86.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3BC3F +330 +3BC33 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BC44 +330 +3BC43 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D84 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D84 + 1 + + 0 +LINE + 5 +3BC45 +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 11 +-238.3457226094723 + 21 +136.8064582119143 + 31 +0.0 + 0 +LINE + 5 +3BC46 +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 11 +-238.3457226094723 + 21 +98.80645821191439 + 31 +0.0 + 0 +LINE + 5 +3BC47 +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +135.0564582119143 + 30 +0.0 + 11 +-238.0457226094723 + 21 +124.523124878581 + 31 +0.0 + 0 +LINE + 5 +3BC48 +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.0457226094723 + 20 +100.5564582119144 + 30 +0.0 + 11 +-238.0457226094723 + 21 +111.0897915452477 + 31 +0.0 + 0 +SOLID + 5 +3BC49 +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +135.0564582119143 + 30 +0.0 + 11 +-237.7540559428056 + 21 +135.0564582119143 + 31 +0.0 + 12 +-238.0457226094723 + 22 +136.8064582119143 + 32 +0.0 + 13 +-238.0457226094723 + 23 +136.8064582119143 + 33 +0.0 + 0 +SOLID + 5 +3BC4A +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-238.337389276139 + 20 +100.5564582119144 + 30 +0.0 + 11 +-237.7540559428056 + 21 +100.5564582119144 + 31 +0.0 + 12 +-238.0457226094723 + 22 +98.80645821191439 + 32 +0.0 + 13 +-238.0457226094723 + 23 +98.80645821191439 + 33 +0.0 + 0 +MTEXT + 5 +3BC4B +330 +3BC43 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-238.0457226094723 + 20 +117.8064582119143 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;38.00%%P0.10 + 11 +6.123031769111886E-17 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3BC4C +330 +3BC43 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +136.8064582119143 + 30 +0.0 + 0 +POINT + 5 +3BC4D +330 +3BC43 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.9999999999999 + 20 +98.80645821191439 + 30 +0.0 + 0 +POINT + 5 +3BC4E +330 +3BC43 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-238.0457226094723 + 20 +98.80645821191439 + 30 +0.0 + 0 +ENDBLK + 5 +3BC4F +330 +3BC43 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BC55 +330 +3BC54 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D85 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D85 + 1 + + 0 +LINE + 5 +3BC56 +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-238.9144615958291 + 20 +140.1339388137175 + 30 +0.0 + 11 +-235.1788450248242 + 21 +138.0322780835914 + 31 +0.0 + 0 +LINE + 5 +3BC57 +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-230.8211549751755 + 20 +135.5806383402372 + 30 +0.0 + 11 +-229.2959634577985 + 21 +134.7225644300632 + 31 +0.0 + 0 +MTEXT + 5 +3BC58 +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + 30 +100 +AcDbMText + 10 +-241.8450081542178 + 20 +141.7826665411232 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;∅1.50 + 11 +0.8715380099297189 + 21 +-0.4903279486708312 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +3BC59 +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 11 +-233.6536535074472 + 21 +137.1742041734174 + 31 +0.0 + 0 +SOLID + 5 +3BC5A +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-230.6781426568132 + 20 +135.8348369264667 + 30 +0.0 + 11 +-230.9641672935379 + 21 +135.3264397540077 + 31 +0.0 + 12 +-232.3463464925525 + 22 +136.4387122504111 + 32 +0.0 + 13 +-232.3463464925525 + 23 +136.4387122504111 + 33 +0.0 + 0 +SOLID + 5 +3BC5B +330 +3BC54 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-235.0358327064619 + 20 +138.2864766698209 + 30 +0.0 + 11 +-235.3218573431865 + 21 +137.7780794973619 + 31 +0.0 + 12 +-233.6536535074472 + 22 +137.1742041734174 + 32 +0.0 + 13 +-233.6536535074472 + 23 +137.1742041734174 + 33 +0.0 + 0 +POINT + 5 +3BC5C +330 +3BC54 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-233.6536535074472 + 20 +137.1742041734174 + 30 +0.0 + 0 +POINT + 5 +3BC5D +330 +3BC54 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-232.3463464925525 + 20 +136.4387122504111 + 30 +0.0 + 0 +ENDBLK + 5 +3BC5E +330 +3BC54 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BE7A +330 +3BE6E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D86 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D86 + 1 + + 0 +ENDBLK + 5 +3BE7B +330 +3BE6E +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BE89 +330 +3BE7D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D87 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D87 + 1 + + 0 +ENDBLK + 5 +3BE8A +330 +3BE7D +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BE9C +330 +3BE90 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D88 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D88 + 1 + + 0 +ENDBLK + 5 +3BE9D +330 +3BE90 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BEAB +330 +3BE9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D89 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D89 + 1 + + 0 +ENDBLK + 5 +3BEAC +330 +3BE9F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BEBA +330 +3BEAE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D90 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D90 + 1 + + 0 +ENDBLK + 5 +3BEBB +330 +3BEAE +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BF63 +330 +3BF56 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D91 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D91 + 1 + + 0 +LINE + 5 +3BF57 +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-163.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3BF58 +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-172.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3BF59 +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-164.9747080961923 + 31 +0.0 + 0 +LINE + 5 +3BF5A +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-170.241374762859 + 31 +0.0 + 0 +LINE + 5 +3BF5B +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-159.6080414295256 + 31 +0.0 + 0 +LINE + 5 +3BF5C +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-175.6080414295256 + 31 +0.0 + 0 +SOLID + 5 +3BF5D +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.1021513677028 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.6854847010362 + 21 +-161.3580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-163.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-163.1080414295256 + 33 +0.0 + 0 +SOLID + 5 +3BF5E +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.6854847010362 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.1021513677028 + 21 +-173.8580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-172.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-172.1080414295256 + 33 +0.0 + 0 +MTEXT + 5 +3BF5F +330 +3BF56 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +339.3938180343695 + 20 +-167.6080414295256 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;9.00 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3BF60 +330 +3BF56 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3BF61 +330 +3BF56 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3BF62 +330 +3BF56 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 0 +ENDBLK + 5 +3BF64 +330 +3BF56 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BF73 +330 +3BF66 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D92 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D92 + 1 + + 0 +ENDBLK + 5 +3BF74 +330 +3BF66 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3BF81 +330 +3BF76 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D93 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D93 + 1 + + 0 +LINE + 5 +3BF77 +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +339.4943062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3BF78 +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +357.1193062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3BF79 +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +341.2443062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +344.798472939556 + 21 +-162.7576988547833 + 31 +0.0 + 0 +LINE + 5 +3BF7A +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +355.3693062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +351.8151396062227 + 21 +-162.7576988547833 + 31 +0.0 + 0 +SOLID + 5 +3BF7B +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +341.2443062728893 + 20 +-162.4660321881167 + 30 +0.0 + 11 +341.2443062728893 + 21 +-163.04936552145 + 31 +0.0 + 12 +339.4943062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +339.4943062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +SOLID + 5 +3BF7C +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +355.3693062728893 + 20 +-163.04936552145 + 30 +0.0 + 11 +355.3693062728893 + 21 +-162.4660321881167 + 31 +0.0 + 12 +357.1193062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +357.1193062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +MTEXT + 5 +3BF7D +330 +3BF76 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +348.3068062728893 + 20 +-162.7576988547833 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;17.62 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3BF7E +330 +3BF76 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3BF7F +330 +3BF76 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3BF80 +330 +3BF76 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-162.7576988547833 + 30 +0.0 + 0 +ENDBLK + 5 +3BF82 +330 +3BF76 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C311 +330 +3C310 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D94 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D94 + 1 + + 0 +LINE + 5 +3C312 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-163.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3C313 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-172.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3C314 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-164.9747080961923 + 31 +0.0 + 0 +LINE + 5 +3C315 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-170.241374762859 + 31 +0.0 + 0 +LINE + 5 +3C316 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-159.6080414295256 + 31 +0.0 + 0 +LINE + 5 +3C317 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-175.6080414295256 + 31 +0.0 + 0 +SOLID + 5 +3C318 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.1021513677028 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.6854847010362 + 21 +-161.3580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-163.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-163.1080414295256 + 33 +0.0 + 0 +SOLID + 5 +3C319 +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.6854847010362 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.1021513677028 + 21 +-173.8580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-172.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-172.1080414295256 + 33 +0.0 + 0 +MTEXT + 5 +3C31A +330 +3C310 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +339.3938180343695 + 20 +-167.6080414295256 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;9.00 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3C31B +330 +3C310 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3C31D +330 +3C310 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3C31E +330 +3C310 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 0 +ENDBLK + 5 +3C31F +330 +3C310 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C322 +330 +3C321 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D95 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D95 + 1 + + 0 +LINE + 5 +3C323 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +339.4943062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3C324 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +357.1193062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3C325 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +341.2443062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +344.798472939556 + 21 +-162.7576988547833 + 31 +0.0 + 0 +LINE + 5 +3C326 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +355.3693062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +351.8151396062227 + 21 +-162.7576988547833 + 31 +0.0 + 0 +SOLID + 5 +3C327 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +341.2443062728893 + 20 +-162.4660321881167 + 30 +0.0 + 11 +341.2443062728893 + 21 +-163.04936552145 + 31 +0.0 + 12 +339.4943062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +339.4943062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +SOLID + 5 +3C328 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +355.3693062728893 + 20 +-163.04936552145 + 30 +0.0 + 11 +355.3693062728893 + 21 +-162.4660321881167 + 31 +0.0 + 12 +357.1193062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +357.1193062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +MTEXT + 5 +3C329 +330 +3C321 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +348.3068062728893 + 20 +-162.7576988547833 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;17.62 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3C32A +330 +3C321 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3C32B +330 +3C321 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3C32C +330 +3C321 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-162.7576988547833 + 30 +0.0 + 0 +ENDBLK + 5 +3C32D +330 +3C321 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C397 +330 +3C396 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D96 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D96 + 1 + + 0 +LINE + 5 +3C398 +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-163.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3C399 +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.0938180343695 + 21 +-172.1080414295256 + 31 +0.0 + 0 +LINE + 5 +3C39A +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-163.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-164.9747080961923 + 31 +0.0 + 0 +LINE + 5 +3C39B +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-170.241374762859 + 31 +0.0 + 0 +LINE + 5 +3C39C +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-159.6080414295256 + 31 +0.0 + 0 +LINE + 5 +3C39D +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.3938180343695 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.3938180343695 + 21 +-175.6080414295256 + 31 +0.0 + 0 +SOLID + 5 +3C39E +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.1021513677028 + 20 +-161.3580414295256 + 30 +0.0 + 11 +339.6854847010362 + 21 +-161.3580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-163.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-163.1080414295256 + 33 +0.0 + 0 +SOLID + 5 +3C39F +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +339.6854847010362 + 20 +-173.8580414295256 + 30 +0.0 + 11 +339.1021513677028 + 21 +-173.8580414295256 + 31 +0.0 + 12 +339.3938180343695 + 22 +-172.1080414295256 + 32 +0.0 + 13 +339.3938180343695 + 23 +-172.1080414295256 + 33 +0.0 + 0 +MTEXT + 5 +3C3A0 +330 +3C396 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +339.3938180343695 + 20 +-167.6080414295256 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;9.00 + 11 +0.0 + 21 +1.0 + 31 +0.0 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3C3A1 +330 +3C396 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-163.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3C3A2 +330 +3C396 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.7943062728893 + 20 +-172.1080414295256 + 30 +0.0 + 0 +POINT + 5 +3C3A3 +330 +3C396 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.3938180343695 + 20 +-172.1080414295256 + 30 +0.0 + 0 +ENDBLK + 5 +3C3A4 +330 +3C396 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3C3A7 +330 +3C3A6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D97 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D97 + 1 + + 0 +LINE + 5 +3C3A8 +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +339.4943062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3C3A9 +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 11 +357.1193062728893 + 21 +-162.4576988547833 + 31 +0.0 + 0 +LINE + 5 +3C3AA +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +341.2443062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +344.798472939556 + 21 +-162.7576988547833 + 31 +0.0 + 0 +LINE + 5 +3C3AB +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +355.3693062728893 + 20 +-162.7576988547833 + 30 +0.0 + 11 +351.8151396062227 + 21 +-162.7576988547833 + 31 +0.0 + 0 +SOLID + 5 +3C3AC +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +341.2443062728893 + 20 +-162.4660321881167 + 30 +0.0 + 11 +341.2443062728893 + 21 +-163.04936552145 + 31 +0.0 + 12 +339.4943062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +339.4943062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +SOLID + 5 +3C3AD +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +355.3693062728893 + 20 +-163.04936552145 + 30 +0.0 + 11 +355.3693062728893 + 21 +-162.4660321881167 + 31 +0.0 + 12 +357.1193062728893 + 22 +-162.7576988547833 + 32 +0.0 + 13 +357.1193062728893 + 23 +-162.7576988547833 + 33 +0.0 + 0 +MTEXT + 5 +3C3AE +330 +3C3A6 +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +348.3068062728893 + 20 +-162.7576988547833 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;17.62 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3C3AF +330 +3C3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +339.4943062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3C3B0 +330 +3C3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-163.4080414295257 + 30 +0.0 + 0 +POINT + 5 +3C3B1 +330 +3C3A6 +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +357.1193062728893 + 20 +-162.7576988547833 + 30 +0.0 + 0 +ENDBLK + 5 +3C3B2 +330 +3C3A6 +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3D4C6 +330 +3D4BB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockBegin + 2 +*D98 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D98 + 1 + + 0 +LINE + 5 +3D4BC +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-228.6249999999999 + 20 +171.0814582119143 + 30 +0.0 + 11 +-228.6249999999999 + 21 +174.4965453073673 + 31 +0.0 + 0 +LINE + 5 +3D4BD +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-210.9999999999999 + 20 +171.0814582119143 + 30 +0.0 + 11 +-210.9999999999999 + 21 +174.4965453073673 + 31 +0.0 + 0 +LINE + 5 +3D4BE +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-226.8749999999999 + 20 +174.1965453073672 + 30 +0.0 + 11 +-223.3208333333332 + 21 +174.1965453073672 + 31 +0.0 + 0 +LINE + 5 +3D4BF +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-212.7499999999999 + 20 +174.1965453073672 + 30 +0.0 + 11 +-216.3041666666665 + 21 +174.1965453073672 + 31 +0.0 + 0 +SOLID + 5 +3D4C0 +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-226.8749999999999 + 20 +174.4882119740339 + 30 +0.0 + 11 +-226.8749999999999 + 21 +173.9048786407006 + 31 +0.0 + 12 +-228.6249999999999 + 22 +174.1965453073672 + 32 +0.0 + 13 +-228.6249999999999 + 23 +174.1965453073672 + 33 +0.0 + 0 +SOLID + 5 +3D4C1 +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbTrace + 10 +-212.7499999999999 + 20 +173.9048786407006 + 30 +0.0 + 11 +-212.7499999999999 + 21 +174.4882119740339 + 31 +0.0 + 12 +-210.9999999999999 + 22 +174.1965453073672 + 32 +0.0 + 13 +-210.9999999999999 + 23 +174.1965453073672 + 33 +0.0 + 0 +MTEXT + 5 +3D4C2 +330 +3D4BB +100 +AcDbEntity + 8 +0 + 62 + 4 +370 + -1 +100 +AcDbMText + 10 +-219.8124999999999 + 20 +174.1965453073672 + 30 +0.0 + 40 +1.75 + 41 +0.0 + 46 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;17.62 + 73 + 1 + 44 +1.0 + 0 +POINT + 5 +3D4C3 +330 +3D4BB +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-228.6249999999999 + 20 +171.0814582119143 + 30 +0.0 + 0 +POINT + 5 +3D4C4 +330 +3D4BB +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-210.9999999999999 + 20 +171.0814582119143 + 30 +0.0 + 0 +POINT + 5 +3D4C5 +330 +3D4BB +100 +AcDbEntity + 8 +DEFPOINTS + 62 + 0 +370 + -1 +100 +AcDbPoint + 10 +-210.9999999999999 + 20 +174.1965453073672 + 30 +0.0 + 0 +ENDBLK + 5 +3D4C7 +330 +3D4BB +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 5 +19A +330 +1F +100 +AcDbEntity + 8 +0 +370 + -1 +100 +AcDbBlockReference + 66 + 1 + 2 +CAD_INFO + 10 +289.0253894472404 + 20 +70.76773749452383 + 30 +0.0 + 0 +ATTRIB + 5 +19B +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +216.2673869347651 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +86 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMWIDTH + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19C +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +232.7910288444278 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +6 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMHEIGHT + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19D +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +251.6751919063559 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-218,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS2 + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19E +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +271.0314579674988 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +-327,32 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS3 + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +19F +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +269.8511958523183 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +15 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSECONDLINE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A0 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +215.4478006522287 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +30 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMTHIRDLINE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A1 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +234.6794439193824 + 20 +70.99245977960555 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +PDMUPDATE + 70 + 1 +280 + 0 + 0 +ATTRIB + 5 +1A2 +330 +19A +100 +AcDbEntity + 8 +0 + 62 + 7 +370 + -1 +100 +AcDbText + 10 +251.4391388677005 + 20 +79.71776286829441 + 30 +0.0 + 40 +2.0 + 1 +1 + 41 +0.9 + 7 +STYLE1 +100 +AcDbAttribute + 2 +BOMSTARTPOS + 70 + 1 +280 + 0 + 0 +SEQEND + 5 +1A3 +330 +19A +100 +AcDbEntity + 8 +0 +370 + -1 + 0 +CIRCLE + 5 +3E638 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbCircle + 10 +-138.1609587598718 + 20 +201.6304612211039 + 30 +0.0 + 40 +1.5 + 0 +CIRCLE + 5 +3E639 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbCircle + 10 +44.83904124012733 + 20 +136.6304612211092 + 30 +0.0 + 40 +1.5 + 0 +LINE + 5 +3E63A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E63B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E63C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E63D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +230.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E63E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +230.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E63F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +230.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E640 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +230.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E641 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +230.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E642 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +230.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E643 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +222.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E644 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +222.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E645 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +222.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E646 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +222.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E647 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +222.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E648 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +222.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E649 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +222.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E64A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +222.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E64B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +222.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E64C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +230.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E64D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +230.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E64E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +230.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E64F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +230.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E650 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +230.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E651 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +230.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E652 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +230.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E653 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +230.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E654 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +230.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E655 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +222.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E656 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +222.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E657 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +222.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E658 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E659 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E65A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +222.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E65B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +222.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E65C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +222.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E65D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +222.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E65E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E65F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E660 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E661 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +230.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E662 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +230.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E663 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +230.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E664 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +230.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E665 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +230.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E666 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +230.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E667 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +222.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E668 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +222.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E669 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +222.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E66A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +222.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E66B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +222.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E66C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +222.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E66D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +222.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E66E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +222.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E66F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +222.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E670 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +230.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E671 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +230.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E672 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +230.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E673 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +230.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E674 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +230.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E675 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +230.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E676 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +230.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E677 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +230.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E678 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +230.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E679 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +222.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E67A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +222.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E67B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +222.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E67C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E67D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E67E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +222.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E67F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +222.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E680 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +222.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E681 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +222.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E682 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E683 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E684 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +230.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E685 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +230.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E686 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +230.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E687 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +230.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E688 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +230.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E689 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +230.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E68A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +230.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E68B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +222.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E68C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +222.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E68D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +222.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E68E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +222.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E68F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +222.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E690 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +222.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E691 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +222.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E692 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +222.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E693 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +222.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E694 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +230.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E695 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +230.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E696 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +230.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E697 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +230.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E698 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +230.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E699 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +230.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E69A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +230.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E69B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +230.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E69C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +230.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E69D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +222.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E69E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +222.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E69F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +222.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6A0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6A1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +222.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6A2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +222.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6A3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +222.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6A4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +222.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6A5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +222.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E6A6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +230.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E6A7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +230.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6A8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +230.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6A9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +230.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6AA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +230.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E6AB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +230.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6AC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +230.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6AD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +230.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E6AE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +230.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6AF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +222.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E6B0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +222.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E6B1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +222.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6B2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +222.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6B3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +222.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6B4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +222.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6B5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +222.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6B6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +222.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6B7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +222.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E6B8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +230.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E6B9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +230.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6BA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +230.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6BB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +230.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6BC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +230.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E6BD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +230.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6BE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +230.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6BF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +230.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E6C0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +230.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6C1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +222.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E6C2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +222.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E6C3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +222.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6C4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +222.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6C5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +222.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6C6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +222.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6C7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +222.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6C8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +222.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6C9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +222.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E6CA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +230.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E6CB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +230.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6CC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +230.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6CD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +230.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6CE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +230.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E6CF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +230.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6D0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +230.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6D1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +230.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E6D2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +230.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6D3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +222.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E6D4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +222.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E6D5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +222.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6D6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +222.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6D7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +222.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6D8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +222.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6D9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +222.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6DA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +222.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6DB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +222.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E6DC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +230.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +230.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E6DD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +230.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6DE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +230.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +230.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6DF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +230.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6E0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +230.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +230.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E6E1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +230.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +230.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6E2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +230.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6E3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +230.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +230.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E6E4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +230.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +230.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6E5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +222.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +222.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E6E6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +222.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +222.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E6E7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +222.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +222.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6E8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +222.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +222.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6E9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +222.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +222.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6EA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +222.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +222.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6EB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +222.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +222.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6EC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +222.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +222.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6ED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +222.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +222.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E6EE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E6EF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6F0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E6F1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +221.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6F2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +221.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E6F3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +221.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E6F4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +221.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6F5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +221.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E6F6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +221.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E6F7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +213.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E6F8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +213.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E6F9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +213.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E6FA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +213.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E6FB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +213.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E6FC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +213.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E6FD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +213.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E6FE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +213.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E6FF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +213.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E700 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +221.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E701 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +221.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E702 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +221.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E703 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +221.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E704 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +221.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E705 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +221.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E706 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +221.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E707 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +221.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E708 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +221.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E709 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +213.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E70A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +213.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E70B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +213.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E70C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E70D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E70E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +213.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E70F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +213.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E710 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +213.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E711 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +213.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E712 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E713 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E714 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E715 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +221.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E716 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +221.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E717 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +221.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E718 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +221.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E719 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +221.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E71A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +221.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E71B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +213.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E71C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +213.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E71D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +213.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E71E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +213.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E71F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +213.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E720 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +213.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E721 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +213.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E722 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +213.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E723 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +213.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E724 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +221.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E725 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +221.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E726 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +221.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E727 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +221.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E728 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +221.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E729 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +221.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E72A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +221.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E72B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +221.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E72C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +221.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E72D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +213.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E72E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +213.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E72F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +213.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E730 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E731 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E732 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +213.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E733 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +213.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E734 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +213.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E735 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +213.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E736 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E737 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E738 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +221.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E739 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +221.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E73A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +221.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E73B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +221.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E73C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +221.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E73D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +221.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E73E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +221.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E73F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +213.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E740 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +213.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E741 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +213.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E742 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +213.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E743 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +213.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E744 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +213.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E745 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +213.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E746 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +213.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E747 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +213.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E748 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +221.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E749 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +221.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E74A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +221.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E74B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +221.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E74C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +221.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E74D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +221.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E74E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +221.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E74F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +221.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E750 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +221.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E751 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +213.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E752 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +213.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E753 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +213.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E754 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E755 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +213.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E756 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +213.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E757 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +213.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E758 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +213.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E759 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +213.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E75A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +221.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E75B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +221.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E75C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +221.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E75D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +221.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E75E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +221.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E75F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +221.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E760 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +221.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E761 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +221.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E762 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +221.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E763 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +213.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E764 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +213.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E765 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +213.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E766 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +213.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E767 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +213.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E768 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +213.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E769 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +213.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E76A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +213.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E76B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +213.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E76C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +221.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E76D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +221.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E76E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +221.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E76F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +221.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E770 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +221.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E771 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +221.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E772 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +221.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E773 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +221.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E774 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +221.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E775 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +213.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E776 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +213.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E777 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +213.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E778 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +213.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E779 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +213.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E77A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +213.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E77B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +213.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E77C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +213.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E77D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +213.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E77E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +221.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E77F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +221.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E780 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +221.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E781 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +221.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E782 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +221.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E783 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +221.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E784 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +221.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E785 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +221.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E786 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +221.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E787 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +213.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E788 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +213.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E789 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +213.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E78A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +213.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E78B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +213.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E78C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +213.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E78D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +213.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E78E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +213.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E78F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +213.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E790 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +221.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +221.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E791 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +221.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E792 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +221.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +221.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E793 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +221.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E794 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +221.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +221.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E795 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +221.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +221.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E796 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +221.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E797 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +221.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +221.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E798 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +221.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +221.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E799 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +213.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +213.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E79A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +213.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +213.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E79B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +213.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +213.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E79C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +213.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +213.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E79D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +213.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +213.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E79E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +213.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +213.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E79F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +213.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +213.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7A0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +213.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +213.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7A1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +213.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +213.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7A2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7A3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7A4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7A5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +212.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7A6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +212.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E7A7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +212.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7A8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +212.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7A9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +212.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E7AA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +212.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7AB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +204.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E7AC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +204.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E7AD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +204.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E7AE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +204.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E7AF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +204.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E7B0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +204.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E7B1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +204.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7B2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +204.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7B3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +204.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7B4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +212.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7B5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +212.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7B6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +212.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7B7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +212.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7B8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +212.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E7B9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +212.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7BA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +212.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7BB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +212.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E7BC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +212.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7BD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +204.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E7BE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +204.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E7BF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +204.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E7C0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E7C1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E7C2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +204.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E7C3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +204.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7C4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +204.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7C5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +204.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7C6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7C7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7C8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7C9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +212.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7CA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +212.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E7CB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +212.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7CC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +212.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7CD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +212.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E7CE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +212.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7CF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +204.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E7D0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +204.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E7D1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +204.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E7D2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +204.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E7D3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +204.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E7D4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +204.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E7D5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +204.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7D6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +204.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7D7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +204.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7D8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +212.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7D9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +212.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7DA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +212.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7DB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +212.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7DC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +212.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E7DD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +212.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7DE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +212.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7DF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +212.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E7E0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +212.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7E1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +204.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E7E2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +204.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E7E3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +204.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E7E4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E7E5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E7E6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +204.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E7E7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +204.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7E8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +204.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7E9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +204.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7EA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7EB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7EC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +212.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7ED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +212.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7EE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +212.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E7EF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +212.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E7F0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +212.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7F1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +212.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E7F2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +212.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E7F3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +204.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E7F4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +204.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E7F5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +204.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E7F6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +204.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E7F7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +204.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E7F8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +204.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E7F9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +204.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E7FA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +204.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E7FB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +204.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E7FC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +212.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E7FD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +212.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7FE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +212.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E7FF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +212.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E800 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +212.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E801 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +212.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E802 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +212.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E803 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +212.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E804 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +212.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E805 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +204.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E806 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +204.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E807 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +204.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E808 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E809 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +204.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E80A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +204.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E80B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +204.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E80C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +204.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E80D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +204.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E80E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +212.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E80F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +212.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E810 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +212.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E811 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +212.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E812 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +212.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E813 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +212.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E814 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +212.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E815 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +212.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E816 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +212.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E817 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +204.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E818 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +204.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E819 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +204.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E81A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +204.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E81B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +204.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E81C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +204.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E81D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +204.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E81E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +204.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E81F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +204.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E820 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +212.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E821 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +212.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E822 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +212.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E823 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +212.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E824 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +212.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E825 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +212.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E826 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +212.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E827 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +212.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E828 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +212.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E829 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +204.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E82A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +204.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E82B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +204.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E82C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +204.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E82D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +204.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E82E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +204.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E82F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +204.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E830 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +204.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E831 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +204.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E832 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +212.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E833 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +212.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E834 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +212.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E835 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +212.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E836 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +212.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E837 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +212.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E838 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +212.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E839 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +212.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E83A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +212.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E83B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +204.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E83C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +204.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E83D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +204.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E83E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +204.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E83F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +204.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E840 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +204.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E841 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +204.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E842 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +204.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E843 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +204.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E844 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +212.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +212.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E845 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +212.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E846 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +212.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +212.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E847 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +212.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E848 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +212.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +212.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E849 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +212.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +212.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E84A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +212.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E84B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +212.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +212.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E84C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +212.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +212.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E84D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +204.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +204.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E84E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +204.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +204.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E84F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +204.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +204.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E850 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +204.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +204.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E851 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +204.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +204.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E852 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +204.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +204.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E853 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +204.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +204.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E854 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +204.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +204.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E855 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +204.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +204.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E856 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E857 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E858 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E859 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +203.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E85A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +203.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E85B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +203.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E85C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +203.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E85D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +203.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E85E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +203.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E85F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +195.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E860 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +195.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E861 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +195.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E862 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +195.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E863 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +195.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E864 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +195.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E865 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +195.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E866 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +195.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E867 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +195.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E868 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +203.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E869 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +203.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E86A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +203.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E86B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +203.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E86C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +203.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E86D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +203.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E86E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +203.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E86F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +203.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E870 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +203.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E871 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +195.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E872 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +195.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E873 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +195.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E874 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E875 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E876 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +195.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E877 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +195.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E878 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +195.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E879 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +195.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E87A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E87B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E87C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E87D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +203.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E87E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +203.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E87F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +203.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E880 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +203.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E881 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +203.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E882 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +203.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E883 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +195.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E884 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +195.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E885 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +195.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E886 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +195.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E887 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +195.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E888 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +195.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E889 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +195.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E88A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +195.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E88B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +195.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E88C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +203.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E88D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +203.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E88E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +203.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E88F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +203.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E890 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +203.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E891 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +203.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E892 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +203.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E893 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +203.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E894 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +203.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E895 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +195.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E896 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +195.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E897 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +195.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E898 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E899 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E89A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +195.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E89B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +195.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E89C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +195.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E89D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +195.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E89E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E89F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8A0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +203.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8A1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +203.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8A2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +203.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8A3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +203.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8A4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +203.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8A5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +203.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E8A6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +203.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8A7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +195.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E8A8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +195.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E8A9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +195.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E8AA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +195.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E8AB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +195.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E8AC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +195.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E8AD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +195.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E8AE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +195.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E8AF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +195.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E8B0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +203.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E8B1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +203.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8B2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +203.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8B3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +203.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8B4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +203.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8B5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +203.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8B6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +203.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8B7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +203.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E8B8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +203.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8B9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +195.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E8BA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +195.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E8BB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +195.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E8BC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E8BD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +195.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E8BE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +195.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E8BF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +195.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E8C0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +195.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E8C1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +195.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E8C2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +203.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E8C3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +203.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8C4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +203.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8C5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +203.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8C6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +203.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8C7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +203.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8C8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +203.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8C9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +203.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E8CA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +203.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8CB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +195.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E8CC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +195.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E8CD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +195.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E8CE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +195.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E8CF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +195.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E8D0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +195.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E8D1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +195.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E8D2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +195.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E8D3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +195.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E8D4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +203.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E8D5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +203.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8D6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +203.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8D7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +203.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8D8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +203.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8D9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +203.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8DA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +203.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8DB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +203.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E8DC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +203.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8DD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +195.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E8DE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +195.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E8DF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +195.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E8E0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +195.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E8E1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +195.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E8E2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +195.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E8E3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +195.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E8E4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +195.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E8E5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +195.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E8E6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +203.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E8E7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +203.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8E8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +203.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8E9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +203.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8EA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +203.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8EB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +203.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8EC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +203.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8ED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +203.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E8EE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +203.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8EF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +195.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E8F0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +195.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E8F1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +195.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E8F2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +195.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E8F3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +195.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E8F4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +195.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E8F5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +195.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E8F6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +195.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E8F7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +195.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E8F8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +203.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +203.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E8F9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +203.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8FA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +203.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +203.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E8FB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +203.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8FC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +203.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +203.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E8FD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +203.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +203.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E8FE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +203.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E8FF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +203.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +203.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E900 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +203.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +203.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3E901 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +195.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +195.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E902 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +195.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +195.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E903 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +195.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +195.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E904 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +195.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +195.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E905 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +195.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +195.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E906 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +195.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +195.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E907 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +195.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +195.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E908 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +195.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +195.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E909 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +195.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +195.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E90A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E90B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E90C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E90D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +194.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E90E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +194.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E90F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +194.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E910 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +194.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E911 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +194.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E912 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +194.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E913 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +186.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E914 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +186.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E915 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +186.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E916 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +186.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E917 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +186.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E918 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +186.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E919 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +186.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E91A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +186.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E91B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +186.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E91C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +194.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E91D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +194.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E91E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +194.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E91F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +194.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E920 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +194.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E921 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +194.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E922 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +194.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E923 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +194.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E924 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +194.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E925 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +186.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E926 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +186.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E927 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +186.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E928 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E929 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E92A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +186.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E92B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +186.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E92C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +186.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E92D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +186.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E92E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E92F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E930 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E931 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +194.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E932 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +194.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E933 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +194.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E934 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +194.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E935 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +194.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E936 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +194.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E937 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +186.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E938 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +186.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E939 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +186.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E93A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +186.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E93B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +186.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E93C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +186.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E93D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +186.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E93E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +186.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E93F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +186.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E940 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +194.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E941 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +194.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E942 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +194.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E943 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +194.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E944 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +194.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E945 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +194.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E946 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +194.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E947 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +194.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E948 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +194.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E949 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +186.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E94A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +186.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E94B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +186.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E94C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E94D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E94E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +186.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E94F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +186.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E950 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +186.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E951 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +186.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E952 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E953 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E954 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +194.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E955 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +194.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E956 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +194.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E957 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +194.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E958 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +194.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E959 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +194.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E95A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +194.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E95B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +186.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E95C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +186.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E95D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +186.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E95E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +186.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E95F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +186.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E960 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +186.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E961 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +186.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E962 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +186.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E963 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +186.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E964 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +194.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E965 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +194.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E966 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +194.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E967 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +194.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E968 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +194.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E969 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +194.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E96A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +194.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E96B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +194.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E96C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +194.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E96D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +186.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E96E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +186.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E96F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +186.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E970 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E971 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +186.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E972 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +186.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E973 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +186.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E974 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +186.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E975 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +186.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E976 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +194.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E977 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +194.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E978 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +194.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E979 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +194.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E97A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +194.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E97B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +194.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E97C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +194.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E97D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +194.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E97E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +194.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E97F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +186.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E980 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +186.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E981 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +186.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E982 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +186.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E983 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +186.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E984 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +186.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E985 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +186.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E986 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +186.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E987 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +186.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E988 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +194.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E989 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +194.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E98A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +194.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E98B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +194.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E98C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +194.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E98D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +194.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E98E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +194.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E98F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +194.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E990 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +194.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E991 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +186.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E992 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +186.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E993 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +186.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E994 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +186.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E995 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +186.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E996 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +186.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E997 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +186.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E998 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +186.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E999 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +186.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E99A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +194.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E99B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +194.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E99C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +194.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E99D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +194.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E99E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +194.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E99F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +194.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9A0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +194.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9A1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +194.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9A2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +194.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9A3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +186.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9A4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +186.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9A5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +186.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E9A6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +186.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E9A7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +186.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E9A8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +186.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E9A9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +186.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E9AA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +186.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E9AB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +186.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E9AC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +194.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +194.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E9AD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +194.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9AE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +194.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +194.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9AF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +194.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9B0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +194.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +194.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E9B1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +194.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9B2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +194.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9B3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +194.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +194.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9B4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +194.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +194.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9B5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +186.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +186.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9B6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +186.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +186.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9B7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +186.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +186.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E9B8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +186.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +186.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E9B9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +186.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +186.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E9BA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +186.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +186.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E9BB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +186.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +186.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E9BC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +186.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +186.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E9BD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +186.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +186.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E9BE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E9BF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9C0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9C1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +185.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9C2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +185.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E9C3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +185.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9C4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +185.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9C5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +185.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9C6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +185.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9C7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +177.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9C8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +177.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9C9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +177.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E9CA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +177.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E9CB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +177.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E9CC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +177.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E9CD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +177.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E9CE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +177.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E9CF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +177.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E9D0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +185.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E9D1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +185.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9D2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +185.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9D3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +185.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9D4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +185.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E9D5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +185.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9D6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +185.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9D7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +185.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9D8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +185.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9D9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +177.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9DA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +177.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9DB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +177.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E9DC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E9DD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E9DE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +177.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E9DF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +177.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E9E0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +177.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E9E1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +177.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E9E2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E9E3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9E4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9E5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +185.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9E6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +185.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E9E7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +185.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9E8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +185.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9E9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +185.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9EA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +185.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9EB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +177.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9EC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +177.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9ED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +177.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3E9EE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +177.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3E9EF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +177.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3E9F0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +177.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3E9F1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +177.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3E9F2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +177.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3E9F3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +177.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3E9F4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +185.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3E9F5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +185.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9F6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +185.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3E9F7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +185.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9F8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +185.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3E9F9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +185.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9FA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +185.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9FB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +185.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3E9FC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +185.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3E9FD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +177.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3E9FE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +177.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3E9FF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +177.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA00 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA02 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +177.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA03 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +177.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA04 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +177.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA05 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +177.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA06 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA07 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA08 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +185.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA09 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +185.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA0A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +185.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA0B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +185.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA0C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +185.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA0D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +185.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA0E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +185.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA0F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +177.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA10 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +177.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA11 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +177.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +177.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA13 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +177.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA14 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +177.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA15 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +177.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +177.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +177.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +185.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +185.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +185.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA1B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +185.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA1C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +185.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA1D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +185.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA1E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +185.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA1F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +185.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA20 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +185.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA21 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +177.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA22 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +177.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA23 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +177.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA24 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA25 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +177.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA26 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +177.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA27 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +177.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA28 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +177.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA29 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +177.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA2A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +185.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA2B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +185.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA2C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +185.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA2D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +185.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA2E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +185.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA2F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +185.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA30 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +185.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA31 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +185.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA32 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +185.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA33 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +177.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA34 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +177.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA35 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +177.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA36 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +177.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA37 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +177.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA38 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +177.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA39 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +177.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA3A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +177.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA3B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +177.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA3C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +185.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA3D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +185.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA3E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +185.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA3F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +185.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA40 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +185.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA41 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +185.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA42 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +185.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA43 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +185.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA44 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +185.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA45 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +177.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA46 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +177.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA47 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +177.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA48 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +177.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA49 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +177.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA4A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +177.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA4B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +177.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA4C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +177.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA4D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +177.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA4E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +185.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA4F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +185.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA50 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +185.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA51 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +185.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA52 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +185.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA53 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +185.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA54 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +185.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA55 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +185.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA56 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +185.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA57 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +177.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA58 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +177.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA59 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +177.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA5A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +177.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA5B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +177.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA5C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +177.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA5D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +177.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA5E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +177.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA5F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +177.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA60 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +185.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +185.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA61 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +185.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA62 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +185.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +185.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA63 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +185.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA64 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +185.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +185.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +185.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA66 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +185.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA67 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +185.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +185.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA68 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +185.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +185.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA69 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +177.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +177.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA6A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +177.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +177.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA6B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +177.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +177.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA6C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +177.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +177.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA6D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +177.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +177.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA6E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +177.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +177.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA6F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +177.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +177.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA70 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +177.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +177.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA71 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +177.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +177.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA72 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA73 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA74 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA75 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +176.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA76 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +176.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA77 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +176.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA78 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +176.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA79 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +176.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA7A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +176.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA7B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +168.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA7C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +168.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA7D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +168.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA7E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +168.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA7F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +168.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA80 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +168.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA81 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +168.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA82 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +168.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA83 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +168.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA84 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +176.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA85 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +176.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA86 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +176.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA87 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +176.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA88 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +176.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA89 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +176.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA8A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +176.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA8B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +176.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA8C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +176.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA8D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +168.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EA8E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +168.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EA8F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +168.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EA90 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EA91 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EA92 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +168.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EA93 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +168.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EA94 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +168.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EA95 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +168.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EA96 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EA97 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA98 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EA99 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +176.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA9A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +176.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EA9B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +176.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA9C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +176.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA9D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +176.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EA9E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +176.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EA9F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +168.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAA0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +168.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAA1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +168.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAA2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +168.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAA3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +168.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EAA4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +168.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EAA5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +168.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EAA6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +168.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EAA7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +168.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EAA8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +176.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EAA9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +176.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAAA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +176.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAAB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +176.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAAC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +176.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EAAD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +176.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAAE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +176.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAAF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +176.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EAB0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +176.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAB1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +168.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAB2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +168.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAB3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +168.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAB4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAB5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EAB6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +168.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EAB7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +168.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EAB8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +168.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EAB9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +168.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EABA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EABB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EABC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +176.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EABD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +176.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EABE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +176.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EABF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +176.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAC0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +176.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAC1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +176.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EAC2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +176.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAC3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +168.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAC4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +168.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAC5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +168.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAC6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +168.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAC7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +168.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EAC8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +168.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EAC9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +168.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EACA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +168.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EACB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +168.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EACC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +176.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EACD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +176.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EACE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +176.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EACF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +176.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAD0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +176.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EAD1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +176.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAD2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +176.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAD3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +176.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EAD4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +176.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAD5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +168.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAD6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +168.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAD7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +168.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAD8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAD9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +168.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EADA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +168.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EADB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +168.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EADC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +168.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EADD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +168.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EADE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +176.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EADF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +176.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAE0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +176.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAE1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +176.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAE2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +176.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EAE3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +176.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAE4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +176.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAE5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +176.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EAE6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +176.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAE7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +168.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAE8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +168.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAE9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +168.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAEA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +168.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAEB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +168.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EAEC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +168.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EAED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +168.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EAEE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +168.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EAEF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +168.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EAF0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +176.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EAF1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +176.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAF2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +176.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EAF3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +176.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAF4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +176.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EAF5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +176.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAF6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +176.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAF7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +176.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EAF8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +176.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EAF9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +168.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EAFA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +168.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EAFB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +168.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EAFC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +168.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EAFD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +168.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EAFE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +168.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EAFF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +168.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB00 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +168.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EB01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +168.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EB02 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +176.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB03 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +176.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB04 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +176.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB05 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +176.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB06 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +176.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB07 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +176.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB08 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +176.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB09 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +176.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB0A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +176.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB0B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +168.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB0C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +168.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB0D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +168.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB0E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +168.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB0F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +168.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB10 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +168.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB11 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +168.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +168.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EB13 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +168.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EB14 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +176.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +176.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB15 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +176.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +176.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +176.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +176.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +176.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +176.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +176.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +176.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB1B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +176.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +176.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB1C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +176.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +176.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB1D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +168.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +168.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB1E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +168.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +168.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB1F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +168.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +168.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB20 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +168.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +168.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB21 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +168.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +168.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB22 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +168.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +168.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB23 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +168.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +168.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB24 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +168.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +168.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EB25 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +168.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +168.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EB26 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-131.4859587598727 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB27 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-134.6359587598728 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB28 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-131.3359587598729 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB29 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +167.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB2A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +167.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB2B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +167.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB2C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +167.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB2D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +167.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB2E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +167.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB2F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +159.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB30 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +159.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB31 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +159.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB32 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +159.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB33 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +159.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB34 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +159.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB35 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +159.1254646156526 + 30 +0.0 + 11 +-121.8481620166998 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB36 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +159.1254646156526 + 30 +0.0 + 11 +-118.7288944304159 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB37 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +159.1254646156526 + 30 +0.0 + 11 +-118.5889472415799 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB38 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +167.1604612211067 + 30 +0.0 + 11 +-113.8659587598728 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB39 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +167.1604612211067 + 30 +0.0 + 11 +-117.0159587598727 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB3A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +167.1604612211067 + 30 +0.0 + 11 +-113.7159587598727 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB3B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +167.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB3C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +167.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB3D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +167.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB3E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +167.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB3F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +167.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB40 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +167.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB41 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +159.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB42 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +159.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB43 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +159.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB44 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB45 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB46 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +159.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB47 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +159.1254646156526 + 30 +0.0 + 11 +-104.2281620166997 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB48 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +159.1254646156526 + 30 +0.0 + 11 +-101.1088944304157 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB49 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +159.1254646156526 + 30 +0.0 + 11 +-100.9689472415797 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB4A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-96.2459587598727 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB4B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-99.3959587598728 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB4C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-96.09595875987284 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB4D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +167.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB4E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +167.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB4F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +167.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB50 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +167.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB51 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +167.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB52 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +167.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB53 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +159.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB54 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +159.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB55 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +159.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB56 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +159.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB57 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +159.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB58 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +159.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB59 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +159.1254646156526 + 30 +0.0 + 11 +-86.60816201669982 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB5A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +159.1254646156526 + 30 +0.0 + 11 +-83.48889443041585 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB5B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +159.1254646156526 + 30 +0.0 + 11 +-83.34894724157985 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB5C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +167.1604612211067 + 30 +0.0 + 11 +-78.62595875987282 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB5D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +167.1604612211067 + 30 +0.0 + 11 +-81.77595875987268 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB5E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +167.1604612211067 + 30 +0.0 + 11 +-78.47595875987273 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB5F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +167.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB60 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +167.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB61 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +167.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB62 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +167.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB63 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +167.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB64 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +167.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +159.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB66 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +159.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB67 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +159.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB68 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB69 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB6A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +159.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB6B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +159.1254646156526 + 30 +0.0 + 11 +-68.9881620166997 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB6C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +159.1254646156526 + 30 +0.0 + 11 +-65.86889443041574 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB6D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +159.1254646156526 + 30 +0.0 + 11 +-65.72894724157973 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB6E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-61.0059587598727 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB6F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-64.15595875987279 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB70 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +167.1604612211067 + 30 +0.0 + 11 +-60.85595875987283 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB71 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +167.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB72 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +167.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB73 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +167.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB74 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +167.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB75 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +167.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB76 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +167.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB77 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +159.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB78 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +159.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB79 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +159.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB7A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +159.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB7B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +159.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB7C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +159.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB7D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +159.1254646156526 + 30 +0.0 + 11 +-51.36816201669981 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB7E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +159.1254646156526 + 30 +0.0 + 11 +-48.24889443041585 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB7F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +159.1254646156526 + 30 +0.0 + 11 +-48.10894724157984 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB80 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +167.1604612211067 + 30 +0.0 + 11 +-43.38595875987281 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB81 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +167.1604612211067 + 30 +0.0 + 11 +-46.53595875987267 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB82 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +167.1604612211067 + 30 +0.0 + 11 +-43.23595875987272 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB83 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +167.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB84 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +167.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB85 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +167.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB86 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +167.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB87 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +167.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB88 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +167.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB89 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +159.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB8A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +159.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB8B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +159.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB8C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB8D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +159.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EB8E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +159.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EB8F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +159.1254646156526 + 30 +0.0 + 11 +-33.74816201669969 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EB90 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +159.1254646156526 + 30 +0.0 + 11 +-30.62889443041573 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EB91 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +159.1254646156526 + 30 +0.0 + 11 +-30.48894724157972 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EB92 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +167.1604612211067 + 30 +0.0 + 11 +-25.76595875987269 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EB93 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +167.1604612211067 + 30 +0.0 + 11 +-28.91595875987278 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB94 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +167.1604612211067 + 30 +0.0 + 11 +-25.61595875987283 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EB95 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +167.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB96 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +167.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EB97 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +167.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB98 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +167.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB99 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +167.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EB9A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +167.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EB9B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +159.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EB9C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +159.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EB9D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +159.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EB9E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +159.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EB9F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +159.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBA0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +159.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBA1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +159.1254646156526 + 30 +0.0 + 11 +-16.1281620166998 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBA2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +159.1254646156526 + 30 +0.0 + 11 +-13.00889443041584 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBA3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +159.1254646156526 + 30 +0.0 + 11 +-12.86894724157983 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBA4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +167.1604612211067 + 30 +0.0 + 11 +-8.145958759872798 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EBA5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +167.1604612211067 + 30 +0.0 + 11 +-11.29595875987266 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBA6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +167.1604612211067 + 30 +0.0 + 11 +-7.995958759872707 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBA7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +167.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBA8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +167.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EBA9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +167.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBAA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +167.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBAB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +167.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBAC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +167.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBAD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +159.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EBAE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +159.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EBAF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +159.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EBB0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +159.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EBB1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +159.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBB2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +159.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBB3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +159.1254646156526 + 30 +0.0 + 11 +1.491837983300314 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBB4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +159.1254646156526 + 30 +0.0 + 11 +4.611105569584282 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBB5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +159.1254646156526 + 30 +0.0 + 11 +4.751052758420286 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBB6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +167.1604612211067 + 30 +0.0 + 11 +9.47404124012732 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EBB7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +167.1604612211067 + 30 +0.0 + 11 +6.324041240127229 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBB8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +167.1604612211067 + 30 +0.0 + 11 +9.624041240127184 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBB9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +167.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBBA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +167.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EBBB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +167.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBBC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +167.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBBD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +167.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBBE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +167.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBBF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +159.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EBC0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +159.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EBC1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +159.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EBC2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +159.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EBC3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +159.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBC4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +159.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBC5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +159.1254646156526 + 30 +0.0 + 11 +19.11183798330021 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBC6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +159.1254646156526 + 30 +0.0 + 11 +22.23110556958417 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBC7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +159.1254646156526 + 30 +0.0 + 11 +22.37105275842018 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBC8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +167.1604612211067 + 30 +0.0 + 11 +27.09404124012721 + 21 +167.1604612211067 + 31 +0.0 + 0 +LINE + 5 +3EBC9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +167.1604612211067 + 30 +0.0 + 11 +23.94404124012712 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBCA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +167.1604612211067 + 30 +0.0 + 11 +27.2440412401273 + 21 +167.2104612211067 + 31 +0.0 + 0 +LINE + 5 +3EBCB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +167.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBCC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +167.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +167.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EBCD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +167.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBCE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +167.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBCF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +167.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +167.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBD0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +167.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +167.1839217200482 + 31 +0.0 + 0 +LINE + 5 +3EBD1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +159.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +159.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EBD2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +159.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +159.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EBD3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +159.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +159.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EBD4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +159.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +159.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EBD5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +159.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +159.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBD6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +159.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +159.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBD7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +159.1254646156526 + 30 +0.0 + 11 +36.73183798330032 + 21 +159.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBD8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +159.1254646156526 + 30 +0.0 + 11 +39.85110556958429 + 21 +159.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBD9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +159.1254646156526 + 30 +0.0 + 11 +39.9910527584203 + 21 +159.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBDA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-131.4859587598727 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EBDB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-134.6359587598728 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EBDC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-131.3359587598729 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EBDD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +158.1354612211067 + 30 +0.0 + 11 +-125.9014719268918 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EBDE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +158.1354612211067 + 30 +0.0 + 11 +-122.7658270896779 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBDF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +158.1354612211067 + 30 +0.0 + 11 +-122.6204455928527 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EBE0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +158.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EBE1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +158.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBE2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +158.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EBE3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +150.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EBE4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +150.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EBE5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +150.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EBE6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +150.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EBE7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +150.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBE8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +150.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBE9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +150.1254646156526 + 30 +0.0 + 11 +-121.8481620166998 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBEA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +150.1254646156526 + 30 +0.0 + 11 +-118.7288944304159 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBEB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +150.1254646156526 + 30 +0.0 + 11 +-118.5889472415799 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBEC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +158.1604612211066 + 30 +0.0 + 11 +-113.8659587598728 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EBED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +158.1604612211066 + 30 +0.0 + 11 +-117.0159587598727 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EBEE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +158.1604612211066 + 30 +0.0 + 11 +-113.7159587598727 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EBEF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +158.1354612211067 + 30 +0.0 + 11 +-108.2814719268917 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EBF0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +158.1354612211067 + 30 +0.0 + 11 +-105.1458270896777 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBF1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +158.1354612211067 + 30 +0.0 + 11 +-105.0004455928528 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EBF2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +158.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EBF3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +158.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EBF4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +158.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EBF5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +150.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EBF6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +150.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EBF7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +150.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EBF8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EBF9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EBFA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +150.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EBFB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +150.1254646156526 + 30 +0.0 + 11 +-104.2281620166997 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EBFC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +150.1254646156526 + 30 +0.0 + 11 +-101.1088944304157 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EBFD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +150.1254646156526 + 30 +0.0 + 11 +-100.9689472415797 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EBFE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-96.2459587598727 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EBFF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-99.3959587598728 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC00 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-96.09595875987284 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +158.1354612211067 + 30 +0.0 + 11 +-90.66147192689178 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC02 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +158.1354612211067 + 30 +0.0 + 11 +-87.52582708967785 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC03 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +158.1354612211067 + 30 +0.0 + 11 +-87.38044559285268 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC04 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +158.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC05 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +158.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC06 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +158.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC07 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +150.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC08 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +150.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC09 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +150.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC0A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +150.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC0B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +150.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC0C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +150.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC0D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +150.1254646156526 + 30 +0.0 + 11 +-86.60816201669982 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC0E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +150.1254646156526 + 30 +0.0 + 11 +-83.48889443041585 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC0F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +150.1254646156526 + 30 +0.0 + 11 +-83.34894724157985 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC10 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +158.1604612211066 + 30 +0.0 + 11 +-78.62595875987282 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC11 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +158.1604612211066 + 30 +0.0 + 11 +-81.77595875987268 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +158.1604612211066 + 30 +0.0 + 11 +-78.47595875987273 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC13 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +158.1354612211067 + 30 +0.0 + 11 +-73.04147192689166 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC14 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +158.1354612211067 + 30 +0.0 + 11 +-69.90582708967773 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC15 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +158.1354612211067 + 30 +0.0 + 11 +-69.76044559285279 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +158.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +158.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +158.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +150.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +150.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC1B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +150.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC1C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC1D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC1E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +150.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC1F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +150.1254646156526 + 30 +0.0 + 11 +-68.9881620166997 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC20 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +150.1254646156526 + 30 +0.0 + 11 +-65.86889443041574 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC21 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +150.1254646156526 + 30 +0.0 + 11 +-65.72894724157973 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC22 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-61.0059587598727 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC23 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-64.15595875987279 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC24 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +158.1604612211066 + 30 +0.0 + 11 +-60.85595875987283 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC25 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +158.1354612211067 + 30 +0.0 + 11 +-55.42147192689177 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC26 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +158.1354612211067 + 30 +0.0 + 11 +-52.28582708967784 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC27 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +158.1354612211067 + 30 +0.0 + 11 +-52.14044559285267 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC28 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +158.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC29 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +158.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC2A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +158.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC2B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +150.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC2C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +150.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC2D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +150.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC2E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +150.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC2F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +150.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC30 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +150.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC31 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +150.1254646156526 + 30 +0.0 + 11 +-51.36816201669981 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC32 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +150.1254646156526 + 30 +0.0 + 11 +-48.24889443041585 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC33 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +150.1254646156526 + 30 +0.0 + 11 +-48.10894724157984 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC34 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +158.1604612211066 + 30 +0.0 + 11 +-43.38595875987281 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC35 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +158.1604612211066 + 30 +0.0 + 11 +-46.53595875987267 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC36 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +158.1604612211066 + 30 +0.0 + 11 +-43.23595875987272 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC37 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +158.1354612211067 + 30 +0.0 + 11 +-37.80147192689188 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC38 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +158.1354612211067 + 30 +0.0 + 11 +-34.66582708967772 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC39 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +158.1354612211067 + 30 +0.0 + 11 +-34.52044559285278 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC3A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +158.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC3B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +158.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC3C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +158.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC3D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +150.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC3E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +150.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC3F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +150.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC40 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC41 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +150.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC42 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +150.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC43 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +150.1254646156526 + 30 +0.0 + 11 +-33.74816201669969 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC44 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +150.1254646156526 + 30 +0.0 + 11 +-30.62889443041573 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC45 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +150.1254646156526 + 30 +0.0 + 11 +-30.48894724157972 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC46 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +158.1604612211066 + 30 +0.0 + 11 +-25.76595875987269 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC47 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +158.1604612211066 + 30 +0.0 + 11 +-28.91595875987278 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC48 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +158.1604612211066 + 30 +0.0 + 11 +-25.61595875987283 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC49 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +158.1354612211067 + 30 +0.0 + 11 +-20.18147192689176 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC4A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +158.1354612211067 + 30 +0.0 + 11 +-17.04582708967783 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC4B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +158.1354612211067 + 30 +0.0 + 11 +-16.90044559285266 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC4C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +158.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC4D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +158.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC4E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +158.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC4F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +150.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC50 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +150.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC51 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +150.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC52 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +150.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC53 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +150.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC54 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +150.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC55 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +150.1254646156526 + 30 +0.0 + 11 +-16.1281620166998 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC56 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +150.1254646156526 + 30 +0.0 + 11 +-13.00889443041584 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC57 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +150.1254646156526 + 30 +0.0 + 11 +-12.86894724157983 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC58 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +158.1604612211066 + 30 +0.0 + 11 +-8.145958759872798 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC59 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +158.1604612211066 + 30 +0.0 + 11 +-11.29595875987266 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC5A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +158.1604612211066 + 30 +0.0 + 11 +-7.995958759872707 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC5B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +158.1354612211067 + 30 +0.0 + 11 +-2.561471926891869 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC5C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +158.1354612211067 + 30 +0.0 + 11 +0.5741729103222895 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC5D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +158.1354612211067 + 30 +0.0 + 11 +0.7195544071472284 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC5E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +158.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC5F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +158.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC60 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +158.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC61 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +150.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC62 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +150.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC63 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +150.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC64 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +150.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +150.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC66 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +150.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC67 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +150.1254646156526 + 30 +0.0 + 11 +1.491837983300314 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC68 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +150.1254646156526 + 30 +0.0 + 11 +4.611105569584282 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC69 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +150.1254646156526 + 30 +0.0 + 11 +4.751052758420286 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC6A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +158.1604612211066 + 30 +0.0 + 11 +9.47404124012732 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC6B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +158.1604612211066 + 30 +0.0 + 11 +6.324041240127229 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC6C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +158.1604612211066 + 30 +0.0 + 11 +9.624041240127184 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC6D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +158.1354612211067 + 30 +0.0 + 11 +15.05852807310825 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC6E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +158.1354612211067 + 30 +0.0 + 11 +18.19417291032218 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC6F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +158.1354612211067 + 30 +0.0 + 11 +18.33955440714712 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC70 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +158.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC71 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +158.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC72 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +158.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC73 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +150.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC74 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +150.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC75 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +150.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC76 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +150.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC77 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +150.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC78 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +150.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC79 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +150.1254646156526 + 30 +0.0 + 11 +19.11183798330021 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC7A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +150.1254646156526 + 30 +0.0 + 11 +22.23110556958417 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC7B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +150.1254646156526 + 30 +0.0 + 11 +22.37105275842018 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC7C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +158.1604612211066 + 30 +0.0 + 11 +27.09404124012721 + 21 +158.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC7D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +158.1604612211066 + 30 +0.0 + 11 +23.94404124012712 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC7E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +158.1604612211066 + 30 +0.0 + 11 +27.2440412401273 + 21 +158.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC7F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +158.1354612211067 + 30 +0.0 + 11 +32.67852807310814 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC80 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +158.1354612211067 + 30 +0.0 + 11 +35.8141729103223 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC81 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +158.1354612211067 + 30 +0.0 + 11 +35.95955440714724 + 21 +158.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC82 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +158.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC83 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +158.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +158.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC84 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +158.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +158.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC85 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +150.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +150.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC86 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +150.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +150.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC87 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +150.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +150.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC88 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +150.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +150.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC89 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +150.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +150.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC8A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +150.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +150.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC8B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +150.1254646156526 + 30 +0.0 + 11 +36.73183798330032 + 21 +150.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC8C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +150.1254646156526 + 30 +0.0 + 11 +39.85110556958429 + 21 +150.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC8D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +150.1254646156526 + 30 +0.0 + 11 +39.9910527584203 + 21 +150.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EC8E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-131.4859587598727 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EC8F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-134.6359587598728 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC90 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-131.3359587598729 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EC91 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +149.1354612211067 + 30 +0.0 + 11 +-125.9014719268918 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC92 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +149.1354612211067 + 30 +0.0 + 11 +-122.7658270896779 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC93 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +149.1354612211067 + 30 +0.0 + 11 +-122.6204455928527 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EC94 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +149.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC95 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +149.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EC96 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +149.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EC97 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +141.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EC98 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +141.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EC99 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +141.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EC9A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +141.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EC9B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +141.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EC9C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +141.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EC9D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +141.1254646156526 + 30 +0.0 + 11 +-121.8481620166998 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EC9E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +141.1254646156526 + 30 +0.0 + 11 +-118.7288944304159 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3EC9F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +141.1254646156526 + 30 +0.0 + 11 +-118.5889472415799 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECA0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +149.1604612211066 + 30 +0.0 + 11 +-113.8659587598728 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECA1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +149.1604612211066 + 30 +0.0 + 11 +-117.0159587598727 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECA2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +149.1604612211066 + 30 +0.0 + 11 +-113.7159587598727 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECA3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +149.1354612211067 + 30 +0.0 + 11 +-108.2814719268917 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECA4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +149.1354612211067 + 30 +0.0 + 11 +-105.1458270896777 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECA5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +149.1354612211067 + 30 +0.0 + 11 +-105.0004455928528 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECA6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +149.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECA7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +149.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECA8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +149.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECA9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +141.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ECAA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +141.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ECAB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +141.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ECAC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ECAD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ECAE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +141.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ECAF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +141.1254646156526 + 30 +0.0 + 11 +-104.2281620166997 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ECB0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +141.1254646156526 + 30 +0.0 + 11 +-101.1088944304157 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ECB1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +141.1254646156526 + 30 +0.0 + 11 +-100.9689472415797 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECB2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-96.2459587598727 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECB3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-99.3959587598728 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECB4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-96.09595875987284 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECB5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +149.1354612211067 + 30 +0.0 + 11 +-90.66147192689178 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECB6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +149.1354612211067 + 30 +0.0 + 11 +-87.52582708967785 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECB7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +149.1354612211067 + 30 +0.0 + 11 +-87.38044559285268 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECB8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +149.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECB9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +149.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECBA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +149.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECBB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +141.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ECBC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +141.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ECBD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +141.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ECBE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +141.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ECBF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +141.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ECC0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +141.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ECC1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +141.1254646156526 + 30 +0.0 + 11 +-86.60816201669982 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ECC2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +141.1254646156526 + 30 +0.0 + 11 +-83.48889443041585 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ECC3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +141.1254646156526 + 30 +0.0 + 11 +-83.34894724157985 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECC4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +149.1604612211066 + 30 +0.0 + 11 +-78.62595875987282 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECC5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +149.1604612211066 + 30 +0.0 + 11 +-81.77595875987268 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECC6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +149.1604612211066 + 30 +0.0 + 11 +-78.47595875987273 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECC7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +149.1354612211067 + 30 +0.0 + 11 +-73.04147192689166 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECC8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +149.1354612211067 + 30 +0.0 + 11 +-69.90582708967773 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECC9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +149.1354612211067 + 30 +0.0 + 11 +-69.76044559285279 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECCA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +149.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECCB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +149.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECCC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +149.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECCD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +141.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ECCE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +141.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ECCF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +141.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ECD0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ECD1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ECD2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +141.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ECD3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +141.1254646156526 + 30 +0.0 + 11 +-68.9881620166997 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ECD4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +141.1254646156526 + 30 +0.0 + 11 +-65.86889443041574 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ECD5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +141.1254646156526 + 30 +0.0 + 11 +-65.72894724157973 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECD6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-61.0059587598727 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECD7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-64.15595875987279 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECD8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +149.1604612211066 + 30 +0.0 + 11 +-60.85595875987283 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECD9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +149.1354612211067 + 30 +0.0 + 11 +-55.42147192689177 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECDA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +149.1354612211067 + 30 +0.0 + 11 +-52.28582708967784 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECDB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +149.1354612211067 + 30 +0.0 + 11 +-52.14044559285267 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECDC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +149.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECDD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +149.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECDE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +149.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECDF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +141.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ECE0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +141.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ECE1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +141.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ECE2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +141.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ECE3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +141.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ECE4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +141.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ECE5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +141.1254646156526 + 30 +0.0 + 11 +-51.36816201669981 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ECE6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +141.1254646156526 + 30 +0.0 + 11 +-48.24889443041585 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ECE7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +141.1254646156526 + 30 +0.0 + 11 +-48.10894724157984 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECE8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +149.1604612211066 + 30 +0.0 + 11 +-43.38595875987281 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECE9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +149.1604612211066 + 30 +0.0 + 11 +-46.53595875987267 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECEA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +149.1604612211066 + 30 +0.0 + 11 +-43.23595875987272 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECEB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +149.1354612211067 + 30 +0.0 + 11 +-37.80147192689188 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECEC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +149.1354612211067 + 30 +0.0 + 11 +-34.66582708967772 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +149.1354612211067 + 30 +0.0 + 11 +-34.52044559285278 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECEE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +149.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECEF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +149.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECF0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +149.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ECF1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +141.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ECF2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +141.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ECF3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +141.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ECF4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ECF5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +141.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ECF6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +141.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ECF7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +141.1254646156526 + 30 +0.0 + 11 +-33.74816201669969 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ECF8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +141.1254646156526 + 30 +0.0 + 11 +-30.62889443041573 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ECF9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +141.1254646156526 + 30 +0.0 + 11 +-30.48894724157972 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ECFA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +149.1604612211066 + 30 +0.0 + 11 +-25.76595875987269 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ECFB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +149.1604612211066 + 30 +0.0 + 11 +-28.91595875987278 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECFC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +149.1604612211066 + 30 +0.0 + 11 +-25.61595875987283 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ECFD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +149.1354612211067 + 30 +0.0 + 11 +-20.18147192689176 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ECFE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +149.1354612211067 + 30 +0.0 + 11 +-17.04582708967783 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ECFF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +149.1354612211067 + 30 +0.0 + 11 +-16.90044559285266 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED00 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +149.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +149.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED02 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +149.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED03 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +141.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED04 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +141.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED05 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +141.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED06 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +141.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED07 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +141.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED08 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +141.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED09 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +141.1254646156526 + 30 +0.0 + 11 +-16.1281620166998 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED0A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +141.1254646156526 + 30 +0.0 + 11 +-13.00889443041584 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ED0B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +141.1254646156526 + 30 +0.0 + 11 +-12.86894724157983 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED0C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +149.1604612211066 + 30 +0.0 + 11 +-8.145958759872798 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED0D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +149.1604612211066 + 30 +0.0 + 11 +-11.29595875987266 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED0E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +149.1604612211066 + 30 +0.0 + 11 +-7.995958759872707 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED0F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +149.1354612211067 + 30 +0.0 + 11 +-2.561471926891869 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED10 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +149.1354612211067 + 30 +0.0 + 11 +0.5741729103222895 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED11 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +149.1354612211067 + 30 +0.0 + 11 +0.7195544071472284 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +149.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED13 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +149.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED14 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +149.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED15 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +141.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +141.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +141.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +141.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +141.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +141.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED1B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +141.1254646156526 + 30 +0.0 + 11 +1.491837983300314 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED1C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +141.1254646156526 + 30 +0.0 + 11 +4.611105569584282 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ED1D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +141.1254646156526 + 30 +0.0 + 11 +4.751052758420286 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED1E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +149.1604612211066 + 30 +0.0 + 11 +9.47404124012732 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED1F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +149.1604612211066 + 30 +0.0 + 11 +6.324041240127229 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED20 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +149.1604612211066 + 30 +0.0 + 11 +9.624041240127184 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED21 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +149.1354612211067 + 30 +0.0 + 11 +15.05852807310825 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED22 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +149.1354612211067 + 30 +0.0 + 11 +18.19417291032218 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED23 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +149.1354612211067 + 30 +0.0 + 11 +18.33955440714712 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED24 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +149.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED25 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +149.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED26 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +149.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED27 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +141.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED28 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +141.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED29 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +141.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED2A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +141.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED2B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +141.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED2C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +141.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED2D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +141.1254646156526 + 30 +0.0 + 11 +19.11183798330021 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED2E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +141.1254646156526 + 30 +0.0 + 11 +22.23110556958417 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ED2F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +141.1254646156526 + 30 +0.0 + 11 +22.37105275842018 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED30 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +149.1604612211066 + 30 +0.0 + 11 +27.09404124012721 + 21 +149.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED31 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +149.1604612211066 + 30 +0.0 + 11 +23.94404124012712 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED32 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +149.1604612211066 + 30 +0.0 + 11 +27.2440412401273 + 21 +149.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED33 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +149.1354612211067 + 30 +0.0 + 11 +32.67852807310814 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED34 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +149.1354612211067 + 30 +0.0 + 11 +35.8141729103223 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED35 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +149.1354612211067 + 30 +0.0 + 11 +35.95955440714724 + 21 +149.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED36 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +149.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED37 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +149.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +149.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED38 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +149.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +149.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED39 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +141.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +141.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED3A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +141.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +141.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED3B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +141.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +141.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED3C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +141.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +141.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED3D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +141.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +141.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED3E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +141.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +141.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED3F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +141.1254646156526 + 30 +0.0 + 11 +36.73183798330032 + 21 +141.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED40 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +141.1254646156526 + 30 +0.0 + 11 +39.85110556958429 + 21 +141.1254646156526 + 31 +0.0 + 0 +LINE + 5 +3ED41 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +141.1254646156526 + 30 +0.0 + 11 +39.9910527584203 + 21 +141.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED42 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-131.4859587598727 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED43 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-134.6359587598728 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED44 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-131.3359587598729 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED45 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +140.1354612211067 + 30 +0.0 + 11 +-125.9014719268918 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED46 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +140.1354612211067 + 30 +0.0 + 11 +-122.7658270896779 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED47 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +140.1354612211067 + 30 +0.0 + 11 +-122.6204455928527 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED48 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +140.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED49 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +140.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED4A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +140.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED4B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +132.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED4C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +132.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED4D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +132.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED4E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +132.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED4F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +132.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED50 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +132.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED51 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +132.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED52 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +132.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3ED53 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +132.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED54 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +140.1604612211066 + 30 +0.0 + 11 +-113.8659587598728 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED55 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +140.1604612211066 + 30 +0.0 + 11 +-117.0159587598727 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED56 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +140.1604612211066 + 30 +0.0 + 11 +-113.7159587598727 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED57 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +140.1354612211067 + 30 +0.0 + 11 +-108.2814719268917 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED58 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +140.1354612211067 + 30 +0.0 + 11 +-105.1458270896777 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED59 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +140.1354612211067 + 30 +0.0 + 11 +-105.0004455928528 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED5A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +140.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED5B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +140.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED5C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +140.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED5D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +132.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED5E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +132.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED5F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +132.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED60 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED61 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED62 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +132.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED63 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +132.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED64 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +132.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3ED65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +132.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED66 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-96.2459587598727 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED67 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-99.3959587598728 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED68 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-96.09595875987284 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED69 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +140.1354612211067 + 30 +0.0 + 11 +-90.66147192689178 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED6A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +140.1354612211067 + 30 +0.0 + 11 +-87.52582708967785 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED6B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +140.1354612211067 + 30 +0.0 + 11 +-87.38044559285268 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED6C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +140.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED6D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +140.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED6E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +140.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED6F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +132.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED70 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +132.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED71 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +132.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED72 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +132.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED73 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +132.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED74 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +132.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED75 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +132.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED76 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +132.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3ED77 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +132.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED78 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +140.1604612211066 + 30 +0.0 + 11 +-78.62595875987282 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED79 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +140.1604612211066 + 30 +0.0 + 11 +-81.77595875987268 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED7A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +140.1604612211066 + 30 +0.0 + 11 +-78.47595875987273 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED7B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +140.1354612211067 + 30 +0.0 + 11 +-73.04147192689166 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED7C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +140.1354612211067 + 30 +0.0 + 11 +-69.90582708967773 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED7D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +140.1354612211067 + 30 +0.0 + 11 +-69.76044559285279 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED7E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +140.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED7F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +140.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED80 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +140.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED81 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +132.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED82 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +132.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED83 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +132.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED84 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED85 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED86 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +132.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED87 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +132.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED88 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +132.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3ED89 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +132.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED8A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-61.0059587598727 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED8B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-64.15595875987279 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED8C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +140.1604612211066 + 30 +0.0 + 11 +-60.85595875987283 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED8D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +140.1354612211067 + 30 +0.0 + 11 +-55.42147192689177 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED8E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +140.1354612211067 + 30 +0.0 + 11 +-52.28582708967784 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED8F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +140.1354612211067 + 30 +0.0 + 11 +-52.14044559285267 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3ED90 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +140.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED91 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +140.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3ED92 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +140.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3ED93 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +132.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3ED94 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +132.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3ED95 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +132.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3ED96 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +132.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3ED97 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +132.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3ED98 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +132.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3ED99 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +132.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3ED9A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +132.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3ED9B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +132.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3ED9C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +140.1604612211066 + 30 +0.0 + 11 +-43.38595875987281 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3ED9D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +140.1604612211066 + 30 +0.0 + 11 +-46.53595875987267 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED9E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +140.1604612211066 + 30 +0.0 + 11 +-43.23595875987272 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3ED9F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +140.1354612211067 + 30 +0.0 + 11 +-37.80147192689188 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDA0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +140.1354612211067 + 30 +0.0 + 11 +-34.66582708967772 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDA1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +140.1354612211067 + 30 +0.0 + 11 +-34.52044559285278 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDA2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +140.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDA3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +140.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDA4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +140.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDA5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +132.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EDA6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +132.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EDA7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +132.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EDA8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EDA9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +132.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EDAA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +132.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EDAB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +132.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EDAC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +132.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EDAD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +132.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EDAE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +140.1604612211066 + 30 +0.0 + 11 +-25.76595875987269 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EDAF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +140.1604612211066 + 30 +0.0 + 11 +-28.91595875987278 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDB0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +140.1604612211066 + 30 +0.0 + 11 +-25.61595875987283 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDB1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +140.1354612211067 + 30 +0.0 + 11 +-20.18147192689176 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDB2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +140.1354612211067 + 30 +0.0 + 11 +-17.04582708967783 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDB3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +140.1354612211067 + 30 +0.0 + 11 +-16.90044559285266 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDB4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +140.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDB5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +140.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDB6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +140.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDB7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +132.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EDB8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +132.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EDB9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +132.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EDBA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +132.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EDBB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +132.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EDBC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +132.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EDBD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +132.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EDBE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +132.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EDBF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +132.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EDC0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +140.1604612211066 + 30 +0.0 + 11 +-8.145958759872798 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EDC1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +140.1604612211066 + 30 +0.0 + 11 +-11.29595875987266 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDC2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +140.1604612211066 + 30 +0.0 + 11 +-7.995958759872707 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDC3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +140.1354612211067 + 30 +0.0 + 11 +-2.561471926891869 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDC4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +140.1354612211067 + 30 +0.0 + 11 +0.5741729103222895 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDC5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +140.1354612211067 + 30 +0.0 + 11 +0.7195544071472284 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDC6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +140.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDC7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +140.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDC8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +140.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDC9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +132.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EDCA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +132.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EDCB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +132.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EDCC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +132.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EDCD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +132.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EDCE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +132.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EDCF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +132.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EDD0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +132.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EDD1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +132.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EDD2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +140.1604612211066 + 30 +0.0 + 11 +9.47404124012732 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EDD3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +140.1604612211066 + 30 +0.0 + 11 +6.324041240127229 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDD4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +140.1604612211066 + 30 +0.0 + 11 +9.624041240127184 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDD5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +140.1354612211067 + 30 +0.0 + 11 +15.05852807310825 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDD6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +140.1354612211067 + 30 +0.0 + 11 +18.19417291032218 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDD7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +140.1354612211067 + 30 +0.0 + 11 +18.33955440714712 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDD8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +140.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDD9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +140.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDDA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +140.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDDB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +132.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EDDC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +132.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EDDD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +132.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EDDE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +132.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EDDF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +132.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EDE0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +132.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EDE1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +132.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EDE2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +132.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EDE3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +132.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EDE4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +140.1604612211066 + 30 +0.0 + 11 +27.09404124012721 + 21 +140.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EDE5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +140.1604612211066 + 30 +0.0 + 11 +23.94404124012712 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDE6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +140.1604612211066 + 30 +0.0 + 11 +27.2440412401273 + 21 +140.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDE7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +140.1354612211067 + 30 +0.0 + 11 +32.67852807310814 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDE8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +140.1354612211067 + 30 +0.0 + 11 +35.8141729103223 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDE9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +140.1354612211067 + 30 +0.0 + 11 +35.95955440714724 + 21 +140.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDEA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +140.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDEB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +140.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +140.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDEC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +140.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +140.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDED +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +132.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +132.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EDEE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +132.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +132.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EDEF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +132.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +132.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EDF0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +132.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +132.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EDF1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +132.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +132.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EDF2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +132.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +132.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EDF3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +132.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +132.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EDF4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +132.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +132.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EDF5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +132.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +132.0781798682627 + 31 +0.0 + 0 +LINE + 5 +3EDF6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-131.4859587598727 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EDF7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4859587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-134.6359587598728 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDF8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4859587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-131.3359587598729 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EDF9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +131.1354612211066 + 30 +0.0 + 11 +-125.9014719268918 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDFA +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.7560904300678 + 20 +131.1354612211066 + 30 +0.0 + 11 +-122.7658270896779 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EDFB +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7658270896779 + 20 +131.1354612211066 + 30 +0.0 + 11 +-122.6204455928527 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EDFC +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +131.1354612211067 + 30 +0.0 + 11 +-121.8055651131519 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDFD +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.6601836163267 + 20 +131.1354612211067 + 30 +0.0 + 11 +-118.6699202759368 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EDFE +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.6699202759368 + 20 +131.1354612211067 + 30 +0.0 + 11 +-118.5245387791128 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EDFF +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +123.0964681264683 + 30 +0.0 + 11 +-131.4861636384568 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE00 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-134.4751309987368 + 20 +123.0964681264683 + 30 +0.0 + 11 +-134.6198977582198 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE01 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-131.4861636384568 + 20 +123.0964681264683 + 30 +0.0 + 11 +-131.3413968789747 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE02 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +123.1253959839779 + 30 +0.0 + 11 +-122.7004601572948 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE03 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-125.6796689407148 + 20 +123.1253959839779 + 30 +0.0 + 11 +-125.8192543122458 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE04 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-122.7004601572948 + 20 +123.1253959839779 + 30 +0.0 + 11 +-122.5598749268828 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE05 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +123.1254646156525 + 30 +0.0 + 11 +-121.8481620166998 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE06 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-121.7080360142458 + 20 +123.1254646156525 + 30 +0.0 + 11 +-118.7288944304159 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE07 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-118.7288944304159 + 20 +123.1254646156525 + 30 +0.0 + 11 +-118.5889472415799 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE08 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +131.1604612211066 + 30 +0.0 + 11 +-113.8659587598728 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE09 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8659587598728 + 20 +131.1604612211066 + 30 +0.0 + 11 +-117.0159587598727 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE0A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8659587598728 + 20 +131.1604612211066 + 30 +0.0 + 11 +-113.7159587598727 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE0B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +131.1354612211066 + 30 +0.0 + 11 +-108.2814719268917 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE0C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.1360904300679 + 20 +131.1354612211066 + 30 +0.0 + 11 +-105.1458270896777 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE0D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.1458270896777 + 20 +131.1354612211066 + 30 +0.0 + 11 +-105.0004455928528 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE0E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +131.1354612211067 + 30 +0.0 + 11 +-104.1855651131517 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE0F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0401836163268 + 20 +131.1354612211067 + 30 +0.0 + 11 +-101.0499202759378 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE10 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.0499202759378 + 20 +131.1354612211067 + 30 +0.0 + 11 +-100.9045387791129 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE11 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +123.0964681264683 + 30 +0.0 + 11 +-113.8661636384567 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE12 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-116.8551309987367 + 20 +123.0964681264683 + 30 +0.0 + 11 +-116.9998977582199 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE13 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-113.8661636384567 + 20 +123.0964681264683 + 30 +0.0 + 11 +-113.7213968789748 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE14 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-105.0804601572949 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE15 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-108.0596689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-108.1992543122457 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE16 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-105.0804601572949 + 20 +123.1253959839779 + 30 +0.0 + 11 +-104.9398749268827 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE17 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +123.1254646156525 + 30 +0.0 + 11 +-104.2281620166997 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE18 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-104.0880360142457 + 20 +123.1254646156525 + 30 +0.0 + 11 +-101.1088944304157 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE19 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-101.1088944304157 + 20 +123.1254646156525 + 30 +0.0 + 11 +-100.9689472415797 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE1A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-96.2459587598727 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE1B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.2459587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-99.3959587598728 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE1C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2459587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-96.09595875987284 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE1D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +131.1354612211066 + 30 +0.0 + 11 +-90.66147192689178 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE1E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.51609043006775 + 20 +131.1354612211066 + 30 +0.0 + 11 +-87.52582708967785 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE1F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.52582708967785 + 20 +131.1354612211066 + 30 +0.0 + 11 +-87.38044559285268 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE20 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +131.1354612211067 + 30 +0.0 + 11 +-86.56556511315185 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE21 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.42018361632668 + 20 +131.1354612211067 + 30 +0.0 + 11 +-83.42992027593678 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE22 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.42992027593678 + 20 +131.1354612211067 + 30 +0.0 + 11 +-83.28453877911275 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE23 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +123.0964681264683 + 30 +0.0 + 11 +-96.2461636384568 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE24 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-99.23513099873676 + 20 +123.0964681264683 + 30 +0.0 + 11 +-99.37989775821976 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE25 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-96.2461636384568 + 20 +123.0964681264683 + 30 +0.0 + 11 +-96.10139687897473 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE26 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +123.1253959839779 + 30 +0.0 + 11 +-87.46046015729476 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE27 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-90.43966894071482 + 20 +123.1253959839779 + 30 +0.0 + 11 +-90.57925431224581 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE28 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-87.46046015729476 + 20 +123.1253959839779 + 30 +0.0 + 11 +-87.31987492688282 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE29 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +123.1254646156525 + 30 +0.0 + 11 +-86.60816201669982 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE2A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-86.46803601424577 + 20 +123.1254646156525 + 30 +0.0 + 11 +-83.48889443041585 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE2B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-83.48889443041585 + 20 +123.1254646156525 + 30 +0.0 + 11 +-83.34894724157985 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE2C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +131.1604612211066 + 30 +0.0 + 11 +-78.62595875987282 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE2D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.62595875987282 + 20 +131.1604612211066 + 30 +0.0 + 11 +-81.77595875987268 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE2E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62595875987282 + 20 +131.1604612211066 + 30 +0.0 + 11 +-78.47595875987273 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE2F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +131.1354612211066 + 30 +0.0 + 11 +-73.04147192689166 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE30 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.89609043006786 + 20 +131.1354612211066 + 30 +0.0 + 11 +-69.90582708967773 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE31 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.90582708967773 + 20 +131.1354612211066 + 30 +0.0 + 11 +-69.76044559285279 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE32 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +131.1354612211067 + 30 +0.0 + 11 +-68.94556511315173 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE33 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.80018361632679 + 20 +131.1354612211067 + 30 +0.0 + 11 +-65.8099202759378 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE34 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.8099202759378 + 20 +131.1354612211067 + 30 +0.0 + 11 +-65.66453877911286 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE35 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +123.0964681264683 + 30 +0.0 + 11 +-78.62616363845669 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE36 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-81.61513099873687 + 20 +123.0964681264683 + 30 +0.0 + 11 +-81.75989775821986 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE37 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-78.62616363845669 + 20 +123.0964681264683 + 30 +0.0 + 11 +-78.48139687897483 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE38 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-69.84046015729487 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE39 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-72.8196689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-72.95925431224569 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE3A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-69.84046015729487 + 20 +123.1253959839779 + 30 +0.0 + 11 +-69.6998749268827 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE3B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +123.1254646156525 + 30 +0.0 + 11 +-68.9881620166997 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE3C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-68.84803601424588 + 20 +123.1254646156525 + 30 +0.0 + 11 +-65.86889443041574 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE3D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-65.86889443041574 + 20 +123.1254646156525 + 30 +0.0 + 11 +-65.72894724157973 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE3E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-61.0059587598727 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE3F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-64.0059587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-64.15595875987279 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE40 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0059587598727 + 20 +131.1604612211066 + 30 +0.0 + 11 +-60.85595875987283 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE41 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +131.1354612211066 + 30 +0.0 + 11 +-55.42147192689177 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE42 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.27609043006774 + 20 +131.1354612211066 + 30 +0.0 + 11 +-52.28582708967784 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE43 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.28582708967784 + 20 +131.1354612211066 + 30 +0.0 + 11 +-52.14044559285267 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE44 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +131.1354612211067 + 30 +0.0 + 11 +-51.32556511315184 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE45 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.18018361632667 + 20 +131.1354612211067 + 30 +0.0 + 11 +-48.18992027593677 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE46 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.18992027593677 + 20 +131.1354612211067 + 30 +0.0 + 11 +-48.04453877911274 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE47 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +123.0964681264683 + 30 +0.0 + 11 +-61.0061636384568 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE48 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-63.99513099873676 + 20 +123.0964681264683 + 30 +0.0 + 11 +-64.13989775821975 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE49 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-61.0061636384568 + 20 +123.0964681264683 + 30 +0.0 + 11 +-60.86139687897472 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE4A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +123.1253959839779 + 30 +0.0 + 11 +-52.22046015729475 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE4B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-55.19966894071482 + 20 +123.1253959839779 + 30 +0.0 + 11 +-55.3392543122458 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE4C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-52.22046015729475 + 20 +123.1253959839779 + 30 +0.0 + 11 +-52.07987492688281 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE4D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +123.1254646156525 + 30 +0.0 + 11 +-51.36816201669981 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE4E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-51.22803601424576 + 20 +123.1254646156525 + 30 +0.0 + 11 +-48.24889443041585 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE4F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-48.24889443041585 + 20 +123.1254646156525 + 30 +0.0 + 11 +-48.10894724157984 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE50 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +131.1604612211066 + 30 +0.0 + 11 +-43.38595875987281 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE51 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.38595875987281 + 20 +131.1604612211066 + 30 +0.0 + 11 +-46.53595875987267 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE52 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38595875987281 + 20 +131.1604612211066 + 30 +0.0 + 11 +-43.23595875987272 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE53 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +131.1354612211066 + 30 +0.0 + 11 +-37.80147192689188 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE54 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.65609043006785 + 20 +131.1354612211066 + 30 +0.0 + 11 +-34.66582708967772 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE55 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.66582708967772 + 20 +131.1354612211066 + 30 +0.0 + 11 +-34.52044559285278 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE56 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +131.1354612211067 + 30 +0.0 + 11 +-33.70556511315172 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE57 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.56018361632678 + 20 +131.1354612211067 + 30 +0.0 + 11 +-30.56992027593779 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE58 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.56992027593779 + 20 +131.1354612211067 + 30 +0.0 + 11 +-30.42453877911285 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE59 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +123.0964681264683 + 30 +0.0 + 11 +-43.38616363845668 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE5A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-46.37513099873686 + 20 +123.0964681264683 + 30 +0.0 + 11 +-46.51989775821986 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE5B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-43.38616363845668 + 20 +123.0964681264683 + 30 +0.0 + 11 +-43.24139687897483 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE5C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-34.60046015729486 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE5D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-37.5796689407147 + 20 +123.1253959839779 + 30 +0.0 + 11 +-37.71925431224568 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE5E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-34.60046015729486 + 20 +123.1253959839779 + 30 +0.0 + 11 +-34.45987492688269 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE5F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +123.1254646156525 + 30 +0.0 + 11 +-33.74816201669969 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE60 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-33.60803601424587 + 20 +123.1254646156525 + 30 +0.0 + 11 +-30.62889443041573 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE61 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-30.62889443041573 + 20 +123.1254646156525 + 30 +0.0 + 11 +-30.48894724157972 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE62 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +131.1604612211066 + 30 +0.0 + 11 +-25.76595875987269 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE63 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.76595875987269 + 20 +131.1604612211066 + 30 +0.0 + 11 +-28.91595875987278 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE64 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76595875987269 + 20 +131.1604612211066 + 30 +0.0 + 11 +-25.61595875987283 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE65 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +131.1354612211066 + 30 +0.0 + 11 +-20.18147192689176 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE66 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-20.03609043006773 + 20 +131.1354612211066 + 30 +0.0 + 11 +-17.04582708967783 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE67 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-17.04582708967783 + 20 +131.1354612211066 + 30 +0.0 + 11 +-16.90044559285266 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE68 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +131.1354612211067 + 30 +0.0 + 11 +-16.08556511315183 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE69 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.94018361632666 + 20 +131.1354612211067 + 30 +0.0 + 11 +-12.94992027593676 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE6A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-12.94992027593676 + 20 +131.1354612211067 + 30 +0.0 + 11 +-12.80453877911273 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE6B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +123.0964681264683 + 30 +0.0 + 11 +-25.76616363845679 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE6C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-28.75513099873675 + 20 +123.0964681264683 + 30 +0.0 + 11 +-28.89989775821974 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE6D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-25.76616363845679 + 20 +123.0964681264683 + 30 +0.0 + 11 +-25.62139687897471 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE6E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +123.1253959839779 + 30 +0.0 + 11 +-16.98046015729474 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE6F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-19.95966894071481 + 20 +123.1253959839779 + 30 +0.0 + 11 +-20.09925431224579 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE70 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-16.98046015729474 + 20 +123.1253959839779 + 30 +0.0 + 11 +-16.8398749268828 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE71 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +123.1254646156525 + 30 +0.0 + 11 +-16.1281620166998 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE72 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-15.98803601424575 + 20 +123.1254646156525 + 30 +0.0 + 11 +-13.00889443041584 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE73 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-13.00889443041584 + 20 +123.1254646156525 + 30 +0.0 + 11 +-12.86894724157983 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE74 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +131.1604612211066 + 30 +0.0 + 11 +-8.145958759872798 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE75 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.1459587598728 + 20 +131.1604612211066 + 30 +0.0 + 11 +-11.29595875987266 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE76 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.145958759872798 + 20 +131.1604612211066 + 30 +0.0 + 11 +-7.995958759872707 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE77 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +131.1354612211066 + 30 +0.0 + 11 +-2.561471926891869 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE78 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.41609043006784 + 20 +131.1354612211066 + 30 +0.0 + 11 +0.5741729103222895 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE79 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.5741729103222895 + 20 +131.1354612211066 + 30 +0.0 + 11 +0.7195544071472284 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE7A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +131.1354612211067 + 30 +0.0 + 11 +1.534434886848288 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE7B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.679816383673227 + 20 +131.1354612211067 + 30 +0.0 + 11 +4.670079724062219 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE7C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.670079724062219 + 20 +131.1354612211067 + 30 +0.0 + 11 +4.815461220887158 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE7D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +123.0964681264683 + 30 +0.0 + 11 +-8.14616363845667 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE7E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-11.13513099873686 + 20 +123.0964681264683 + 30 +0.0 + 11 +-11.27989775821985 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE7F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-8.14616363845667 + 20 +123.0964681264683 + 30 +0.0 + 11 +-8.001396878974816 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE80 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +123.1253959839779 + 30 +0.0 + 11 +0.6395398427051475 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE81 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +-2.339668940714688 + 20 +123.1253959839779 + 30 +0.0 + 11 +-2.479254312245672 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE82 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +0.6395398427051475 + 20 +123.1253959839779 + 30 +0.0 + 11 +0.7801250731173184 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE83 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +123.1254646156525 + 30 +0.0 + 11 +1.491837983300314 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE84 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +1.63196398575414 + 20 +123.1254646156525 + 30 +0.0 + 11 +4.611105569584282 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE85 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +4.611105569584282 + 20 +123.1254646156525 + 30 +0.0 + 11 +4.751052758420286 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE86 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +131.1604612211066 + 30 +0.0 + 11 +9.47404124012732 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE87 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.47404124012732 + 20 +131.1604612211066 + 30 +0.0 + 11 +6.324041240127229 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE88 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47404124012732 + 20 +131.1604612211066 + 30 +0.0 + 11 +9.624041240127184 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE89 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +131.1354612211066 + 30 +0.0 + 11 +15.05852807310825 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE8A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.20390956993228 + 20 +131.1354612211066 + 30 +0.0 + 11 +18.19417291032218 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE8B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.19417291032218 + 20 +131.1354612211066 + 30 +0.0 + 11 +18.33955440714712 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE8C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +131.1354612211067 + 30 +0.0 + 11 +19.15443488684818 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE8D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.29981638367312 + 20 +131.1354612211067 + 30 +0.0 + 11 +22.29007972406325 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EE8E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.29007972406325 + 20 +131.1354612211067 + 30 +0.0 + 11 +22.43546122088728 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE8F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +123.0964681264683 + 30 +0.0 + 11 +9.47383636154322 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EE90 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +6.484869001263263 + 20 +123.0964681264683 + 30 +0.0 + 11 +6.340102241780272 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EE91 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +9.47383636154322 + 20 +123.0964681264683 + 30 +0.0 + 11 +9.618603121025302 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EE92 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +123.1253959839779 + 30 +0.0 + 11 +18.25953984270527 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EE93 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +15.2803310592852 + 20 +123.1253959839779 + 30 +0.0 + 11 +15.14074568775422 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EE94 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +18.25953984270527 + 20 +123.1253959839779 + 30 +0.0 + 11 +18.40012507311721 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EE95 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +123.1254646156525 + 30 +0.0 + 11 +19.11183798330021 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EE96 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +19.25196398575426 + 20 +123.1254646156525 + 30 +0.0 + 11 +22.23110556958417 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EE97 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +22.23110556958417 + 20 +123.1254646156525 + 30 +0.0 + 11 +22.37105275842018 + 21 +123.0781798682628 + 31 +0.0 + 0 +LINE + 5 +3EE98 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +131.1604612211066 + 30 +0.0 + 11 +27.09404124012721 + 21 +131.1604612211066 + 31 +0.0 + 0 +LINE + 5 +3EE99 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.09404124012721 + 20 +131.1604612211066 + 30 +0.0 + 11 +23.94404124012712 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE9A +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09404124012721 + 20 +131.1604612211066 + 30 +0.0 + 11 +27.2440412401273 + 21 +131.2104612211066 + 31 +0.0 + 0 +LINE + 5 +3EE9B +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +131.1354612211066 + 30 +0.0 + 11 +32.67852807310814 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE9C +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.82390956993217 + 20 +131.1354612211066 + 30 +0.0 + 11 +35.8141729103223 + 21 +131.1354612211066 + 31 +0.0 + 0 +LINE + 5 +3EE9D +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.8141729103223 + 20 +131.1354612211066 + 30 +0.0 + 11 +35.95955440714724 + 21 +131.1839217200481 + 31 +0.0 + 0 +LINE + 5 +3EE9E +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +131.1354612211067 + 30 +0.0 + 11 +36.7744348868483 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EE9F +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.91981638367324 + 20 +131.1354612211067 + 30 +0.0 + 11 +39.91007972406223 + 21 +131.1354612211067 + 31 +0.0 + 0 +LINE + 5 +3EEA0 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.91007972406223 + 20 +131.1354612211067 + 30 +0.0 + 11 +40.05546122088717 + 21 +131.1839217200483 + 31 +0.0 + 0 +LINE + 5 +3EEA1 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +123.0964681264683 + 30 +0.0 + 11 +27.09383636154334 + 21 +123.0964681264683 + 31 +0.0 + 0 +LINE + 5 +3EEA2 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +24.10486900126315 + 20 +123.0964681264683 + 30 +0.0 + 11 +23.96010224178016 + 21 +123.0482125399741 + 31 +0.0 + 0 +LINE + 5 +3EEA3 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +27.09383636154334 + 20 +123.0964681264683 + 30 +0.0 + 11 +27.23860312102519 + 21 +123.0482125399742 + 31 +0.0 + 0 +LINE + 5 +3EEA4 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +123.1253959839779 + 30 +0.0 + 11 +35.87953984270516 + 21 +123.1253959839779 + 31 +0.0 + 0 +LINE + 5 +3EEA5 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +32.90033105928532 + 20 +123.1253959839779 + 30 +0.0 + 11 +32.76074568775434 + 21 +123.0788675268008 + 31 +0.0 + 0 +LINE + 5 +3EEA6 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +35.87953984270516 + 20 +123.1253959839779 + 30 +0.0 + 11 +36.02012507311733 + 21 +123.0785342405071 + 31 +0.0 + 0 +LINE + 5 +3EEA7 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +123.1254646156525 + 30 +0.0 + 11 +36.73183798330032 + 21 +123.0784904000014 + 31 +0.0 + 0 +LINE + 5 +3EEA8 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +36.87196398575415 + 20 +123.1254646156525 + 30 +0.0 + 11 +39.85110556958429 + 21 +123.1254646156525 + 31 +0.0 + 0 +LINE + 5 +3EEA9 +330 +1F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -1 +100 +AcDbLine + 10 +39.85110556958429 + 20 +123.1254646156525 + 30 +0.0 + 11 +39.9910527584203 + 21 +123.0781798682628 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +73 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MATERIAL +350 +72 + 3 +ACAD_MLEADERSTYLE +350 +13E37 + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +13E15 + 3 +ACAD_TABLESTYLE +350 +86 + 3 +ACAD_VISUALSTYLE +350 +13E01 + 3 +AcadDim +350 +1FB32 + 3 +ACDB_RECOMPOSE_DATA +350 +1B4B6 + 3 +AcDbVariableDictionary +350 +66 + 3 +AEC_PROPERTY_SET_DEFS +350 +1A12B + 3 +ASE_INDEX_DICTIONARY +350 +1AF08 + 0 +DICTIONARY + 5 +B0 +330 +2 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_LAYERFILTERS +360 +126F + 3 +ACAD_LAYERSTATES +360 +B1 + 0 +DICTIONARY + 5 +14018 +330 +10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14019 + 0 +DICTIONARY + 5 +1401A +330 +AE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +1401B + 0 +DICTIONARY + 5 +14020 +330 +9522 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYER_RECONCILED +360 +14021 + 0 +DICTIONARY + 5 +227 +330 +1F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +228 + 0 +DICTIONARY + 5 +418 +330 +1AD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +30688 + 0 +DICTIONARY + 5 +1D521 +330 +1D520 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +241C4 + 0 +DICTIONARY + 5 +1E163 +330 +1E162 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +391C4 + 0 +DICTIONARY + 5 +2219B +330 +2219A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +241C7 + 0 +DICTIONARY + 5 +22603 +330 +22602 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +32825 + 0 +DICTIONARY + 5 +2AE74 +330 +2AE73 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2AE75 + 0 +DICTIONARY + 5 +2AE7A +330 +2AE79 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2AE7B + 0 +DICTIONARY + 5 +2B09F +330 +2B09E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +2B0A0 + 0 +DICTIONARY + 5 +3999D +330 +39995 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3ABA2 + 0 +DICTIONARY + 5 +39A4E +330 +39A49 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3AEE0 + 0 +DICTIONARY + 5 +39A76 +330 +39A68 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3ABA4 + 0 +DICTIONARY + 5 +39CD9 +330 +39CCB +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3ABA0 + 0 +DICTIONARY + 5 +3A112 +330 +39E22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3ABA1 + 0 +DICTIONARY + 5 +3A9EE +330 +3A9E6 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3A9EF + 0 +DICTIONARY + 5 +3AB79 +330 +3AB76 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_SORTENTS +360 +3AB7A + 0 +DICTIONARY + 5 +3A9E9 +330 +3A9E8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +3A9EA + 0 +DICTIONARY + 5 +73 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +布局1 +350 +59 + 3 +布局2 +350 +5E + 0 +DICTIONARY + 5 +72 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +13DF9 + 3 +ByLayer +350 +13DF1 + 3 +Global +350 +A192 + 0 +DICTIONARY + 5 +13E37 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +13E38 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +13E15 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +13E16 + 3 +A1 +350 +13E17 + 3 +A2 +350 +13E18 + 3 +A3 +350 +13E19 + 3 +A4 +350 +13E1A + 3 +A5 +350 +13E1B + 3 +A6 +350 +13E1C + 3 +A7 +350 +13E1D + 3 +A8 +350 +13E1E + 3 +A9 +350 +13E1F + 3 +B0 +350 +13E20 + 3 +B1 +350 +13E21 + 3 +B2 +350 +13E22 + 3 +B3 +350 +13E23 + 3 +B4 +350 +13E24 + 3 +B5 +350 +13E25 + 3 +B6 +350 +13E26 + 3 +B7 +350 +13E27 + 3 +B8 +350 +13E28 + 3 +B9 +350 +13E29 + 3 +C0 +350 +13E2A + 3 +C1 +350 +13E2B + 3 +C2 +350 +13E2C + 3 +C3 +350 +13E2D + 3 +C4 +350 +13E2E + 3 +C5 +350 +13E2F + 3 +C6 +350 +13E30 + 3 +C7 +350 +13E31 + 3 +C8 +350 +13E32 + 3 +C9 +350 +13E33 + 3 +D0 +350 +13E34 + 3 +D1 +350 +13E35 + 3 +D2 +350 +13E36 + 0 +DICTIONARY + 5 +86 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +13E01 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +13E07 + 3 +3D Hidden +350 +13E09 + 3 +3dWireframe +350 +13E08 + 3 +Basic +350 +13E06 + 3 +Brighten +350 +13E0D + 3 +ColorChange +350 +13E11 + 3 +Conceptual +350 +13E0A + 3 +Dim +350 +13E0C + 3 +EdgeColorOff +350 +13E14 + 3 +Facepattern +350 +13E10 + 3 +Flat +350 +13E02 + 3 +FlatWithEdges +350 +13E03 + 3 +Gouraud +350 +13E04 + 3 +GouraudWithEdges +350 +13E05 + 3 +JitterOff +350 +13E12 + 3 +Linepattern +350 +13E0F + 3 +OverhangOff +350 +13E13 + 3 +Realistic +350 +13E0B + 3 +Thicken +350 +13E0E + 0 +XRECORD + 5 +1FB32 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 + 90 + 990106 + 3 + + 60 + 0 + 61 + 0 + 62 + 1 + 63 + 3 + 64 + 0 + 65 + 0 + 66 + 0 + 67 + 3 + 68 + 1 + 69 + 0 + 70 + 0 + 71 + 0 + 72 + 0 + 40 +0.0 +170 + 0 + 0 +XRECORD + 5 +1B4B6 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 + 90 + 1 +330 +87 + 0 +DICTIONARY + 5 +66 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +3EEAB + 3 +CMLEADERSTYLE +350 +1405E + 3 +DIMASSOC +350 +67 + 3 +HIDETEXT +350 +6B + 3 +PROJECTNAME +350 +42E + 0 +DICTIONARY + 5 +1A12B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1AF08 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ASEBlockHierarchyIndexRecord +350 +1AF09 +1001 +DCO15 +1040 +1757926864.531 + 0 +DICTIONARY + 5 +126F +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +B1 +102 +{ACAD_REACTORS +330 +B0 +102 +} +330 +B0 +100 +AcDbDictionary +281 + 1 + 0 +XRECORD + 5 +14019 +102 +{ACAD_REACTORS +330 +14018 +102 +} +330 +14018 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +1401B +102 +{ACAD_REACTORS +330 +1401A +102 +} +330 +1401A +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +XRECORD + 5 +14021 +102 +{ACAD_REACTORS +330 +14020 +102 +} +330 +14020 +100 +AcDbXrecord +280 + 1 +290 + 1 + 0 +SORTENTSTABLE + 5 +228 +102 +{ACAD_REACTORS +330 +227 +102 +} +330 +227 +100 +AcDbSortentsTable +330 +1F +331 +19A + 5 +20F + 0 +SORTENTSTABLE + 5 +30688 +102 +{ACAD_REACTORS +330 +418 +102 +} +330 +418 +100 +AcDbSortentsTable +330 +1AD + 0 +SORTENTSTABLE + 5 +241C4 +102 +{ACAD_REACTORS +330 +1D521 +102 +} +330 +1D521 +100 +AcDbSortentsTable +330 +1D520 + 0 +SORTENTSTABLE + 5 +391C4 +102 +{ACAD_REACTORS +330 +1E163 +102 +} +330 +1E163 +100 +AcDbSortentsTable +330 +1E162 + 0 +SORTENTSTABLE + 5 +241C7 +102 +{ACAD_REACTORS +330 +2219B +102 +} +330 +2219B +100 +AcDbSortentsTable +330 +2219A + 0 +SORTENTSTABLE + 5 +32825 +102 +{ACAD_REACTORS +330 +22603 +102 +} +330 +22603 +100 +AcDbSortentsTable +330 +22602 + 0 +SORTENTSTABLE + 5 +2AE75 +102 +{ACAD_REACTORS +330 +2AE74 +102 +} +330 +2AE74 +100 +AcDbSortentsTable +330 +2AE73 + 0 +SORTENTSTABLE + 5 +2AE7B +102 +{ACAD_REACTORS +330 +2AE7A +102 +} +330 +2AE7A +100 +AcDbSortentsTable +330 +2AE79 + 0 +SORTENTSTABLE + 5 +2B0A0 +102 +{ACAD_REACTORS +330 +2B09F +102 +} +330 +2B09F +100 +AcDbSortentsTable +330 +2B09E + 0 +SORTENTSTABLE + 5 +3ABA2 +102 +{ACAD_REACTORS +330 +3999D +102 +} +330 +3999D +100 +AcDbSortentsTable +330 +39995 + 0 +SORTENTSTABLE + 5 +3AEE0 +102 +{ACAD_REACTORS +330 +39A4E +102 +} +330 +39A4E +100 +AcDbSortentsTable +330 +39A49 + 0 +SORTENTSTABLE + 5 +3ABA4 +102 +{ACAD_REACTORS +330 +39A76 +102 +} +330 +39A76 +100 +AcDbSortentsTable +330 +39A68 + 0 +SORTENTSTABLE + 5 +3ABA0 +102 +{ACAD_REACTORS +330 +39CD9 +102 +} +330 +39CD9 +100 +AcDbSortentsTable +330 +39CCB + 0 +SORTENTSTABLE + 5 +3ABA1 +102 +{ACAD_REACTORS +330 +3A112 +102 +} +330 +3A112 +100 +AcDbSortentsTable +330 +39E22 + 0 +SORTENTSTABLE + 5 +3A9EF +102 +{ACAD_REACTORS +330 +3A9EE +102 +} +330 +3A9EE +100 +AcDbSortentsTable +330 +3A9E6 + 0 +SORTENTSTABLE + 5 +3AB7A +102 +{ACAD_REACTORS +330 +3AB79 +102 +} +330 +3AB79 +100 +AcDbSortentsTable +330 +3AB76 + 0 +DIMASSOC + 5 +3A9EA +102 +{ACAD_REACTORS +330 +3A9E9 +102 +} +330 +3A9E9 +100 +AcDbDimAssoc +330 +3A9E8 + 90 + 2 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 3 +331 +3A9E7 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 75 + 0 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +102 +{ACAD_XDICTIONARY +360 +1402B +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +\\Ccmkfgy\HP LaserJet P1007 + 4 +Letter + 6 + + 40 +4.519083499908447 + 41 +4.349743366241455 + 42 +4.5614013671875 + 43 +4.349761962890625 + 44 +215.8999938964844 + 45 +279.3999938964844 + 46 +0.0 + 47 +0.0 + 48 +-250.1903999999991 + 49 +31.48910774837056 +140 +-31.80959999999908 +141 +186.3691077483706 +142 +1.0 +143 +20.49081015463295 + 70 + 11952 + 72 + 0 + 73 + 1 + 74 + 4 + 7 + + 75 + 0 + 76 + 0 + 77 + 2 + 78 + 300 +147 +0.0488023651799781 +148 +6354.836159999977 +149 +-799.8233368086121 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +3AEFE + 0 +LAYOUT + 5 +59 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +58 + 0 +LAYOUT + 5 +5E +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +None + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 + 76 + 0 + 77 + 2 + 78 + 300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +布局2 + 70 + 1 + 71 + 2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +5D + 0 +MATERIAL + 5 +13DF9 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +13DFA +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByBlock + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 + 94 + 127 + 0 +MATERIAL + 5 +13DF1 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +13DF2 +102 +} +330 +72 +100 +AcDbMaterial + 1 +ByLayer + 72 + 0 + 73 + 2 + 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 + 78 + 2 + 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 +172 + 2 + 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 +176 + 2 +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 +270 + 2 +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 +274 + 2 +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 + 94 + 127 + 0 +MATERIAL + 5 +A192 +102 +{ACAD_REACTORS +330 +72 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4BB +102 +} +330 +72 +100 +AcDbMaterial + 1 +Global + 72 + 1 + 94 + 63 + 0 +MLEADERSTYLE + 5 +13E38 +102 +{ACAD_REACTORS +330 +13E37 +102 +} +330 +13E37 +100 +AcDbMLeaderStyle +170 + 2 +171 + 1 +172 + 0 + 90 + 2 + 40 +0.0 + 41 +0.0 +173 + 1 + 91 +-1056964608 +340 +14 + 92 + -2 +290 + 1 + 42 +0.09 +291 + 1 + 43 +0.36 + 3 +Standard +341 +0 + 44 +0.18 +300 + +342 +11 +174 + 1 +178 + 6 +175 + 1 +176 + 0 + 93 +-1056964608 + 45 +0.18 +292 + 0 +297 + 0 + 46 +0.18 +343 +0 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +293 + 1 +141 +0.0 +294 + 1 +177 + 0 +142 +1.0 +295 + 0 +296 + 0 +143 +0.125 +1001 +ACAD_MLEADERVER +1070 + 2 + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +13E16 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +13E17 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +13E18 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +13E19 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +13E1A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +13E1B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +13E1C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +13E1D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +13E1E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +13E1F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +13E20 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +13E21 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +13E22 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E23 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E24 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E25 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E26 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +13E27 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E28 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E29 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2A +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2B +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2C +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2D +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2E +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E2F +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E30 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E31 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E32 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E33 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E34 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E35 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +13E36 +102 +{ACAD_REACTORS +330 +13E15 +102 +} +330 +13E15 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +VISUALSTYLE + 5 +13E07 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4C9 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E09 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4CD +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +179.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E08 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4CB +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E06 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4C7 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0D +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4D5 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E11 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4DD +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0A +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4CF +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +179.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0C +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4D3 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E14 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4E3 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +EdgeColorOff + 70 + 22 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E10 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4DB +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E02 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4BF +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E03 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4C1 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E04 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4C3 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E05 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4C5 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E12 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4DF +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +JitterOff + 70 + 20 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 10 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0F +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4D9 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E13 +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4E1 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +OverhangOff + 70 + 21 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 9 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0B +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4D1 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 + 0 +VISUALSTYLE + 5 +13E0E +102 +{ACAD_REACTORS +330 +13E01 +102 +} +102 +{ACAD_XDICTIONARY +360 +1B4D7 +102 +} +330 +13E01 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 + 0 +DICTIONARYVAR + 5 +3EEAB +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +1405E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +Standard + 0 +DICTIONARYVAR + 5 +67 +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +2 + 0 +DICTIONARYVAR + 5 +6B +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 +1 + 0 +DICTIONARYVAR + 5 +42E +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +DictionaryVariables +280 + 0 + 1 + + 0 +XRECORD + 5 +1AF09 +102 +{ACAD_REACTORS +330 +1AF08 +102 +} +330 +1AF08 +100 +AcDbXrecord +280 + 1 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 +330 +19A +330 +0 +330 +0 +330 +0 +330 +0 +330 +0 + 0 +DICTIONARY + 5 +1402B +330 +22 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ADSK_XREC_LAYOUTTHUMBNAIL +360 +1402C + 0 +DICTIONARY + 5 +13DFA +330 +13DF9 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +13DFC + 3 +DIFFUSETILE +360 +13DFB + 3 +OPACITYTILE +360 +13DFF + 3 +REFLECTIONTILE +360 +13DFE + 3 +REFRACTIONTILE +360 +13E00 + 3 +SPECULARTILE +360 +13DFD + 0 +DICTIONARY + 5 +13DF2 +330 +13DF1 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +13DF4 + 3 +DIFFUSETILE +360 +13DF3 + 3 +OPACITYTILE +360 +13DF7 + 3 +REFLECTIONTILE +360 +13DF6 + 3 +REFRACTIONTILE +360 +13DF8 + 3 +SPECULARTILE +360 +13DF5 + 0 +DICTIONARY + 5 +1B4BB +330 +A192 +100 +AcDbDictionary +280 + 1 +281 + 1 + 0 +DICTIONARY + 5 +1B4C9 +330 +13E07 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4CA + 0 +DICTIONARY + 5 +1B4CD +330 +13E09 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4CE + 0 +DICTIONARY + 5 +1B4CB +330 +13E08 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4CC + 0 +DICTIONARY + 5 +1B4C7 +330 +13E06 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4C8 + 0 +DICTIONARY + 5 +1B4D5 +330 +13E0D +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4D6 + 0 +DICTIONARY + 5 +1B4DD +330 +13E11 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4DE + 0 +DICTIONARY + 5 +1B4CF +330 +13E0A +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4D0 + 0 +DICTIONARY + 5 +1B4D3 +330 +13E0C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4D4 + 0 +DICTIONARY + 5 +1B4E3 +330 +13E14 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4E4 + 0 +DICTIONARY + 5 +1B4DB +330 +13E10 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4DC + 0 +DICTIONARY + 5 +1B4BF +330 +13E02 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4C0 + 0 +DICTIONARY + 5 +1B4C1 +330 +13E03 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4C2 + 0 +DICTIONARY + 5 +1B4C3 +330 +13E04 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4C4 + 0 +DICTIONARY + 5 +1B4C5 +330 +13E05 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4C6 + 0 +DICTIONARY + 5 +1B4DF +330 +13E12 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4E0 + 0 +DICTIONARY + 5 +1B4D9 +330 +13E0F +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4DA + 0 +DICTIONARY + 5 +1B4E1 +330 +13E13 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4E2 + 0 +DICTIONARY + 5 +1B4D1 +330 +13E0B +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4D2 + 0 +DICTIONARY + 5 +1B4D7 +330 +13E0E +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +1B4D8 + 0 +XRECORD + 5 +1402C +102 +{ACAD_REACTORS +330 +1402B +102 +} +330 +1402B +100 +AcDbXrecord +280 + 1 +310 +28000000000100007C0000000100080000000000007C0000000000000000000000010000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000330000006600000099000000CC000000FF00000000330000333300006633000099330000CC330000FF3300 +310 +0000660000336600006666000099660000CC660000FF66000000990000339900006699000099990000CC990000FF99000000CC000033CC000066CC000099CC0000CCCC0000FFCC000000FF000033FF000066FF000099FF0000CCFF0000FFFF000000003300330033006600330099003300CC003300FF003300003333003333 +310 +33006633330099333300CC333300FF33330000663300336633006666330099663300CC663300FF66330000993300339933006699330099993300CC993300FF99330000CC330033CC330066CC330099CC3300CCCC3300FFCC330000FF330033FF330066FF330099FF3300CCFF3300FFFF330000006600330066006600660099 +310 +006600CC006600FF00660000336600333366006633660099336600CC336600FF33660000666600336666006666660099666600CC666600FF66660000996600339966006699660099996600CC996600FF99660000CC660033CC660066CC660099CC6600CCCC6600FFCC660000FF660033FF660066FF660099FF6600CCFF6600 +310 +FFFF660000009900330099006600990099009900CC009900FF00990000339900333399006633990099339900CC339900FF33990000669900336699006666990099669900CC669900FF66990000999900339999006699990099999900CC999900FF99990000CC990033CC990066CC990099CC9900CCCC9900FFCC990000FF99 +310 +0033FF990066FF990099FF9900CCFF9900FFFF99000000CC003300CC006600CC009900CC00CC00CC00FF00CC000033CC003333CC006633CC009933CC00CC33CC00FF33CC000066CC003366CC006666CC009966CC00CC66CC00FF66CC000099CC003399CC006699CC009999CC00CC99CC00FF99CC0000CCCC0033CCCC0066CC +310 +CC0099CCCC00CCCCCC00FFCCCC0000FFCC0033FFCC0066FFCC0099FFCC00CCFFCC00FFFFCC000000FF003300FF006600FF009900FF00CC00FF00FF00FF000033FF003333FF006633FF009933FF00CC33FF00FF33FF000066FF003366FF006666FF009966FF00CC66FF00FF66FF000099FF003399FF006699FF009999FF00CC +310 +99FF00FF99FF0000CCFF0033CCFF0066CCFF0099CCFF00CCCCFF00FFCCFF0000FFFF0033FFFF0066FFFF0099FFFF00CCFFFF00FFFFFF00000000000D0D0D001A1A1A00282828003535350043434300505050005D5D5D006B6B6B00787878008686860093939300A1A1A100AEAEAE00BBBBBB00C9C9C900D6D6D600E4E4E400 +310 +F1F1F100FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2F5F5F5F5F5E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5E2F5F5F5F5F5F5F5F5F5E2F5F5E2F5 +310 +F5F5F5F5F5F5F5F5E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2F5E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2F5F5F5F5F5E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5E2F5F5 +310 +E2F5F5F5F5F5F5E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2 +310 +E2E2E2E2F5E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2 +310 +E2E2E2E2E2E2F5E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2F5F5F5F5F5F5F5F5F5F5E2E2E2E2F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +E2E2E2E2E2E2E2E2F5E2E2DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCE2E2E2E2E2E2E2E2E2E2E2F5E2BEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2 +310 +F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F52828F5F5F5F5F5F5F52828F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5E2E2E2E2E2F5F5F5F5F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5E2E2F5F5F5F5F5E2E2F5F5F5F5F5F5F5F5F5F5E2E2 +310 +E2E2F5F5F5F5F5E2F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2BEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2F5F5F5E2F5F5E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5F5E2E2F5F5F5BEBEBEBEBEBEBEBEBEBEBEF5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5BEBEF5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2BEE2BEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2F5F5E2E2F5F5E2E2F5E2E2BEBEBEBEBEBEBEBEBEBE +310 +BEE2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2BEBEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2F5BEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5E2F5F5E2F5F5F5E2E2F5E2E2BEBEBEBEBEBEBEBE +310 +BEBEBEE2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2BEBEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F528F5E2E2 +310 +E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F528F5F5F5F5F52828282828E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2F5BEE2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2F5F5F5F5F5F5F5 +310 +F5E2F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5E2F5F5F5E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5E2E22D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2F5E2BEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5E2F5F5F5F5F5 +310 +F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5E2E2F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2 +310 +E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2 +310 +E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEE2E2F5 +310 +E2BEBEBEBEBEBEBEBEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2 +310 +E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEE2 +310 +E2F5E2E2BEBEBEBEBEBEBEBEBEBEBEBEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2 +310 +E2E2E2F5E2BEBEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2F5E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2F5F5F5F5F5E2F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2F5E2E2E2E2F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5F5F5F5F5F5E2E2E2E2 +310 +E2E2E2E2E2F5F5F5F5F5E2F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5E2F5F5F5F5F5F5E2E2 +310 +E2E2E2E2E2E2E2F5F5F5F5F5E2F5F5E2F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2D2D2D2D2D2D2D2D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DE22DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22D2DE22DE22DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22D2DE22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22D2DE22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22D2DE22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22D2DE22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22DF52DE2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F52DE2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E22DF5E22DF52DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2E2E2E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DF5BEBEBEBEF5BE2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828BE2828BEBEBEBEBEBEBEBEBEBEBEBEF5E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2E22828E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5 +310 +F5C3F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE228BEE2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2F5F5C3F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E228E2F5BEF5E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2F5BEF5E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBEBEBEBEF5F5E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2F5F5BEBEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DE2E2E228E2F5F5F5E2282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E2F5F5F5E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE228 +310 +282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BE +310 +E2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E228282828E2 +310 +E2BEE228282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828 +310 +282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE28282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2E228E2BEE2F528E2E228F5E2BEE228E2E228F5E2BEE2F528E22828E2BEE2F528 +310 +E2E228F5E2BEE228E2E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE228E2E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE228E2E228F5E2BEE2F528E22828E2BEE2F528E2E2F5DCF5E228E2E2E22D2D2D2D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2F528282828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2 +310 +F528282828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528282828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528282828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F52828E2DCF5BEBEBEBEBEBEF52D2D2D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228282828282828282828282828282828282828282828282828282828 +310 +2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E2E2F5E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDCDCDCDCDCE2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E2282828 +310 +28E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DC2D2D2D2D2DDCE2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228 +310 +282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2E2E2E228E2E2E22D2DE22D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DC2D2D2D2D2DF5BEBEBEBEBEBEBEBEBEBEBEF5BEBE28282828BEBEBEBE28282828BEBEBEBE +310 +BE28282828BEBEBEBE28282828BEBEBEBE28282828BEBEBEBEBE28282828BEBEBEBE28282828BEBEBEBE28282828BEBEBEBEBE28282828BEBEBEBE28282828BEBEBEBE28282828BEBEBEBEBE28282828BEF5BEBEBEBEBEBEBEBEBEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DCDCDCDCDCDCDCE2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2 +310 +BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828282828282828282828282828282828 +310 +282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBE28E2E2E2E2E228282828282828282828282828282828 +310 +E228282828282828E228282828282828282828282828282828E228282828282828E2282828F5282828282828282828282828E228282828282828E228282828282828282828282828282828E228282828282828E22828282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E2BEBEE2F5E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2 +310 +E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBEBEBEBEBEBEBEBEBEBEF5F5E2E2E2E2E2E2F5 +310 +F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2F5F5BEBEBEBEBEBEBEBEBEBEBEBEBEF52DE22D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DE2E2E228E2F5DCE2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828282828282828 +310 +282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828F5282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828BE2828 +310 +28282828282828282828282828282828282828282828BE282828282828282828282828282828282828282828282828F5282828282828282828282828282828282828282828282828BE282828282828282828282828282828282828282828282828BE28282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E22DBE2DE2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228E2E2BE +310 +E2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2F5E2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228E2 +310 +E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2F5E2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E22D2D2DE2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2 +310 +282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828F52828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE28282828E2E2F5F5E228E2E2E2E2E2E2E2E2E2E2E22D2D +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2 +310 +E2E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2F5E2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E2E2F5F5E228E2E2E2E2E2E2E2E2E2E22D +310 +2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2DF5BEBEF5C3 +310 +C3C3C3C32828C3BEC3F528C3C328F5C3BEC32828C328F5C3BEC3F528C32828C3BEC3F528C3C328F5C3BEC32828C328F5C3BEC3F528C32828C3F5C3F528C32828F5C3BEC32828C328F5C3BEC3F528C32828C3BEC3F528C32828F5C3BEC32828C328F5C3BEC3F528C32828C3BEC3F528C3C3C3C3C3C3F5BEBEBEF52D2D2D2DE2 +310 +E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2DE2E2E2 +310 +28E2E2E2E2E22828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828F5282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E2E2F5F5E228E2E2E22D2D2D2D +310 +2DE2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2F5E2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2F5F5E228E2E2E2E2E2 +310 +E2E2E2E2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2DC2D2D2D +310 +2DDCDCE228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2F5E2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2E2F5E228E2E2E2 +310 +E22D2D2D2DE2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D +310 +2D2D2DF5BEBEBEBEBEBEBEBEBEBEBEF5BEBE28282828BEBEBEBE28282828BEBEBEBEBE28282828BEBEBEBE28282828BEBEBEBE28282828BEBEBEBEBE282828BEBEF5BEBE28282828BEBEBEBE28282828BEBEBEBEBE282828BEBEBEBEBE28282828BEBEBEBE28282828BEBEBEBEBE28E228BEBEF5BEBEBEBEBEBEBEBEBEBEBE +310 +BEBEF52D2D2D2DE2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +DCDCDCDCDCDCDCE228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2F5E2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2E2E2E2 +310 +28E2E2E2E2E2E2E2E2E2E22D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2F5E2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E22828E2E2E2 +310 +E2E228E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E22D2D2D2DE2E2E228E2F5F5E2E22828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828F5282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828E22828282828282828E2 +310 +E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E22D2D2D2DF5BEBEBEBEBEF5F5E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2 +310 +E2E2E2E2E2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E22DE22D2DE2E2E228BEBEBEBEBEBEBEBEF5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F528F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F528F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F528F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F528F5E2E2E2E2E2F5F5BE +310 +BEBEBEBEBEBEBEBEBEBEBEBEF52D2DE22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E22D2D2DE22DF5BEBEBEE2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2 +310 +F5F5E2E2E2E2E2E2E2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E228E2E2E2E2E228282828282828282828282828282828E228282828282828E228282828282828282828282828282828E228282828282828E2282828F5282828282828282828282828E228282828282828E228282828282828282828282828282828E228282828282828E228 +310 +28282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +282828282828282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2 +310 +E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E228E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2BEE2E2282828E2E2BEE2E228282828E2E2BEE2E2282828E2E2 +310 +BEE2E2282828E2E2BEE2E22828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE2828282828 +310 +2828BE28282828282828BE28282828E2E2E2E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2F528E22828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E22828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E22828F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E22828F5E2BEE22828 +310 +E228F5E2BEE2F528E22828E2BEE2F528E2E2E2F5E2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE22828E228F5E2BEE2F528E22828E2BEE2F528E2E228F5E2BEE2 +310 +2828E228F5E2BEE2F528E22828E2BEE2F528E2E2DCF5BEBEBEBEBEBEF52D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E2282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +282828282828282828282828282828282828282828E2F5BEF5E228E2E2E22D2D2DE22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE22828282828E2BEE2E228282828E2E2BEE228282828E2E2BEE22828282828E2BEE2E228282828E2E2BEE228282828E2E2BEE22828282828E2BEE2E228282828 +310 +E2E2BEE228282828E2E2BEE22828282828E2BEE2E22828E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DDCE2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828 +310 +2828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2BEE2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DF5BEBEBEBEBEBEBEBEBEBEBEF5BEBE28282828BEBEBEBEBE28E228BEBEBEBEBE28E228BEBEBEBEBE28282828BEBEBEBEBE28E228BEBEBEBEBE28E228BEBEBEBEBE28282828BEBEBEBEBE28E228BEBEBEBEBE28E228BEBEBEBEBE +310 +28282828BEBEBEBEBE28E228BEBEBEBEBE28E228BEBEF5BEBEBEBEBEBEBEBEBEBEBEBEBEF52D2D2D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2DDC2D2DDCE2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BE +310 +E2E228282828E2E2BEE228282828E2E2BEE2E228282828E2BEE2E22828E2E2BEE2E228E2E2E22D2D2DE22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E228E2E2E2E2E22828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828 +310 +E2BEE2E228282828E2E2BEE22828282828E2BEE2E228282828E2BEE2E22828E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DE2E2E228E2F5F5F5E2282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 +310 +282828282828282828282828282828282828282828282828282828282828282828E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2DF5BEBEBEBEBEF5F5E2282828F5F52828E2E22828F5F5282828E2282828F5282828E2282828F5F52828E2E22828F5F5282828E2282828F5282828E2282828F5F52828E2E22828F5F5282828E2282828F52828 +310 +28E2282828F5F52828E2E22828F5F52828E2E22828F5F5282828E2282828F5F52828E2E2E2BEE2E228E2E2E22D2D2D2D2D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE22D2DE2E2E228BEBEBEBEBEBEBEBEF5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5 +310 +F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5F5F5E2E2E2E2E2F5F5BEBEBEBEBEBEBEBEBEBEBEBEBEF52D2D2D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DF5BEBEBEE2E2BEE2E2E2E2E2BEF5E2E2E2E2E2E2F5BEE2E2E2E2E2E2F5BEF5E2E2E2E2E2E2BEF5E2E2E2E2E2E2F5BEE2E2E2E2E2E2F5BEF5E2E2E2E2E2E2F5F5E2E2E2E2E2E2F5BEE2E2E2E2E2E2 +310 +F5BEF5E2E2E2E2E2E2BEF5E2E2E2E2E2E2F5BEE2E2E2E2E2E2F5BEF5E2E2E2E2E2E2BEF5E2E2E2E2E2BEE2E228E2E2E22D2D2D2D2D2D2DE2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2E228E2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2BEE2E2E2E2 +310 +E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E228E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2E22828E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2C3E2E2E2E2E2E2E2E2BEE2E2 +310 +E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE228BEE2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DF5BEBEBEBEF5BE2828282828BE2828282828282828BE28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828282828282828282828BE +310 +28282828282828BE28282828282828BE2828282828282828BE28282828282828BE28282828282828BE282828282828BE2828BEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2D2D2D2D2DE2E2E2BEE2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2 +310 +E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2 +310 +E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2BEE2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2 +310 +E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2E2BEE2E2E2E2E2E2BEE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22DF52DE2E2E2E2F52DE2E2E2E2E2E22DF5E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2F52DE2E2E2E2E2E22DF5E2E2E2E2E2E22DF52DE2E2E2E2E2E2F52D +310 +E2E2E2E2E2E22DF5E2E2E2E2E2E22DF52DE2E2E2E2E2E2F52DE2E2E2E2E2E2E2F5E2E2E2E2E2E22DF52DE2E2E2E2E2E2F52DE2E2E2E22DF5E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2DE2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E2 +310 +2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2DE2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E2E22D2DE2E2E2E2 +310 +E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2DE2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2 +310 +E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2DE2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2D +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE22D2D2DE2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E2E2 +310 +2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E22D2DE2E2E2E2E2E2E22DE2E2E2E2E2E2E22D2DE2E2E2E2E2E22D2DE2E2E2E2E2E22D2D2DE2E2E2E2E2E22D2DE2E2E2E22D2DE2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E22D2D2D2D2D2D2D2D2D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2BEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +310 +BEBEBEBEBEBEBE2D2D2D2D2D2D2D2D2D2D2D2DBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E22D2D2DE22D2D2DE22D2D2D2DE2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E22828282828282828282828282828282828E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2E2E2E2E2E2E2E2E2E22828282828282828282828282828282828E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +310 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +310 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 + 0 +XRECORD + 5 +13DFC +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFB +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFF +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFE +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13E00 +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DFD +102 +{ACAD_REACTORS +330 +13DFA +102 +} +330 +13DFA +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF4 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF3 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF7 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF6 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF8 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13DF5 +102 +{ACAD_REACTORS +330 +13DF2 +102 +} +330 +13DF2 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1B4CA +102 +{ACAD_REACTORS +330 +1B4C9 +102 +} +330 +1B4C9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4CE +102 +{ACAD_REACTORS +330 +1B4CD +102 +} +330 +1B4CD +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4CC +102 +{ACAD_REACTORS +330 +1B4CB +102 +} +330 +1B4CB +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4C8 +102 +{ACAD_REACTORS +330 +1B4C7 +102 +} +330 +1B4C7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4D6 +102 +{ACAD_REACTORS +330 +1B4D5 +102 +} +330 +1B4D5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4DE +102 +{ACAD_REACTORS +330 +1B4DD +102 +} +330 +1B4DD +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4D0 +102 +{ACAD_REACTORS +330 +1B4CF +102 +} +330 +1B4CF +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4D4 +102 +{ACAD_REACTORS +330 +1B4D3 +102 +} +330 +1B4D3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4E4 +102 +{ACAD_REACTORS +330 +1B4E3 +102 +} +330 +1B4E3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1B4DC +102 +{ACAD_REACTORS +330 +1B4DB +102 +} +330 +1B4DB +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4C0 +102 +{ACAD_REACTORS +330 +1B4BF +102 +} +330 +1B4BF +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4C2 +102 +{ACAD_REACTORS +330 +1B4C1 +102 +} +330 +1B4C1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4C4 +102 +{ACAD_REACTORS +330 +1B4C3 +102 +} +330 +1B4C3 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4C6 +102 +{ACAD_REACTORS +330 +1B4C5 +102 +} +330 +1B4C5 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4E0 +102 +{ACAD_REACTORS +330 +1B4DF +102 +} +330 +1B4DF +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1B4DA +102 +{ACAD_REACTORS +330 +1B4D9 +102 +} +330 +1B4D9 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4E2 +102 +{ACAD_REACTORS +330 +1B4E1 +102 +} +330 +1B4E1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 0 +102 +RTVSPropertyOp1 + 70 + 0 +102 +RTVSPropertyOp2 + 70 + 0 +102 +RTVSPropertyOp3 + 70 + 0 +102 +RTVSPropertyOp4 + 70 + 0 +102 +RTVSPropertyOp5 + 70 + 0 +102 +RTVSPropertyOp6 + 70 + 0 +102 +RTVSPropertyOp7 + 70 + 0 +102 +RTVSPropertyOp8 + 70 + 0 +102 +RTVSPropertyOp9 + 70 + 0 +102 +RTVSPropertyOp10 + 70 + 0 +102 +RTVSPropertyOp11 + 70 + 0 +102 +RTVSPropertyOp12 + 70 + 0 +102 +RTVSPropertyOp13 + 70 + 0 +102 +RTVSPropertyOp14 + 70 + 2 +102 +RTVSPropertyOp15 + 70 + 0 +102 +RTVSPropertyOp16 + 70 + 0 +102 +RTVSPropertyOp17 + 70 + 0 +102 +RTVSPropertyOp18 + 70 + 0 +102 +RTVSPropertyOp19 + 70 + 0 +102 +RTVSPropertyOp20 + 70 + 0 +102 +RTVSPropertyOp21 + 70 + 0 +102 +RTVSPropertyOp22 + 70 + 0 +102 +RTVSPropertyOp23 + 70 + 0 +102 +RTVSPropertyOp24 + 70 + 0 +102 +RTVSPropertyOp25 + 70 + 0 +102 +RTVSPropertyOp26 + 70 + 0 +102 +RTVSPropertyOp27 + 70 + 0 + 0 +XRECORD + 5 +1B4D2 +102 +{ACAD_REACTORS +330 +1B4D1 +102 +} +330 +1B4D1 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +XRECORD + 5 +1B4D8 +102 +{ACAD_REACTORS +330 +1B4D7 +102 +} +330 +1B4D7 +100 +AcDbXrecord +280 + 1 +102 +RTVSPropertyOp0 + 70 + 1 +102 +RTVSPropertyOp1 + 70 + 1 +102 +RTVSPropertyOp2 + 70 + 1 +102 +RTVSPropertyOp3 + 70 + 1 +102 +RTVSPropertyOp4 + 70 + 1 +102 +RTVSPropertyOp5 + 70 + 1 +102 +RTVSPropertyOp6 + 70 + 1 +102 +RTVSPropertyOp7 + 70 + 1 +102 +RTVSPropertyOp8 + 70 + 1 +102 +RTVSPropertyOp9 + 70 + 1 +102 +RTVSPropertyOp10 + 70 + 1 +102 +RTVSPropertyOp11 + 70 + 1 +102 +RTVSPropertyOp12 + 70 + 1 +102 +RTVSPropertyOp13 + 70 + 1 +102 +RTVSPropertyOp14 + 70 + 1 +102 +RTVSPropertyOp15 + 70 + 1 +102 +RTVSPropertyOp16 + 70 + 1 +102 +RTVSPropertyOp17 + 70 + 1 +102 +RTVSPropertyOp18 + 70 + 1 +102 +RTVSPropertyOp19 + 70 + 1 +102 +RTVSPropertyOp20 + 70 + 1 +102 +RTVSPropertyOp21 + 70 + 1 +102 +RTVSPropertyOp22 + 70 + 1 +102 +RTVSPropertyOp23 + 70 + 1 +102 +RTVSPropertyOp24 + 70 + 1 +102 +RTVSPropertyOp25 + 70 + 1 +102 +RTVSPropertyOp26 + 70 + 1 +102 +RTVSPropertyOp27 + 70 + 1 + 0 +ENDSEC + 0 +EOF diff --git a/LaiPuLaser/TempMarkData/tt01.par b/LaiPuLaser/TempMarkData/tt01.par new file mode 100644 index 0000000..c912e7e Binary files /dev/null and b/LaiPuLaser/TempMarkData/tt01.par differ diff --git a/LaiPuLaser/Template.cpp b/LaiPuLaser/Template.cpp new file mode 100644 index 0000000..686db49 --- /dev/null +++ b/LaiPuLaser/Template.cpp @@ -0,0 +1,36 @@ +#include "StdAfx.h" +#include "Template.h" +#include "WorkFileLable.h" +#include "DrawSimpleShape.h" + +CTemplate::CTemplate(void) +{ +} +CTemplate::~CTemplate(void) +{ +} +void CTemplate::WriteWorkFile(vector &LabVec) +{ + m_ObjContainer.WriteWorkFile(LabVec); +} +void CTemplate::ReadWorkFile(CLabVecRang &LabVecRang) +{ + m_ObjContainer.ReadWorkFile(LabVecRang); +} +void CTemplate::Draw(CDC* pDC,CPen&Pen) +{ + if(m_bCircle) + DrawCircle(pDC,Pen,m_Rect.GetCenterPt(),m_Rect.Width()/2,30); + else + DrawRect(pDC,Pen,m_Rect,false); +} +//ռ +void CTemplate::CollectWorkData(vector> &vec) +{ + m_ObjContainer.GetObjPtData(vec,false); +} +void CTemplate::SetRect(DbRect &rect,bool bCircle) +{ + m_Rect = rect; + m_bCircle = bCircle; +} \ No newline at end of file diff --git a/LaiPuLaser/Template.h b/LaiPuLaser/Template.h new file mode 100644 index 0000000..41845c5 --- /dev/null +++ b/LaiPuLaser/Template.h @@ -0,0 +1,23 @@ +#pragma once + +#include "ObjContainer.h" +#include "LabVecRang.h" +//ÿģԼobj Խobj layer ༭ +class CTemplate +{ +public: + CTemplate(void); + ~CTemplate(void); + CObjContainer &GetObjContainer(){return m_ObjContainer;}; + void WriteWorkFile(vector &LabVec); + void ReadWorkFile(CLabVecRang &LabVecRang); + void ClearObj(){m_ObjContainer.Clear();}; + void SetRect(DbRect &rect,bool bCircle); + void Draw(CDC* pDC,CPen&Pen); + void CollectWorkData(vector> &vec); +private: + CObjContainer m_ObjContainer;//ģobj + DbRect m_Rect;//ģı߽緶Χ + bool m_bCircle; +}; + diff --git a/LaiPuLaser/TemplateMgr.cpp b/LaiPuLaser/TemplateMgr.cpp new file mode 100644 index 0000000..f49d843 --- /dev/null +++ b/LaiPuLaser/TemplateMgr.cpp @@ -0,0 +1,196 @@ +#include "StdAfx.h" +#include "TemplateMgr.h" +#include "Layer.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "WorkFileLable.h" +#include "WorkFileMgr.h" +#include "LogMgr.h" +#include "GlobalDrawMgr.h" + +#define MaxTempCnt 200 //ɱ༭ģ +#define NULL_IDX -1//жްģֵ +CTemplateMgr *gTemplateMgr = new CTemplateMgr; +CTemplateMgr::CTemplateMgr(void) +{ + m_bUseObjList = false;//Ƿʹöб +} +CTemplateMgr::~CTemplateMgr(void) +{ +} +#if 1//дmodule ĺ +CMFCPropertyGridProperty *CTemplateMgr::CreatGridProperty() +{ + CPropertieMgr &PropertieMgr = gDrawPropertieMgr; + + CString PropertyName;// + CString Description;// + CString Path = _T("Template");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ģ趨"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + { + PropertyName = _T("б"); + if(gAuthorityMgr->CheckAuthority(_USER)) + { + //Աӳ + Name = _T("m_bUseObjList");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bUseObjList); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("б"); + Description = _T("ǷʹöбʹúӰˢٶ"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseObjList, Description); + pGroup->AddSubItem(p); + + PropertieMgr.Insert(p, pPropertie); + } + } + return pGroup; +} +void CTemplateMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CTemplateMgr]------------------------------------------------"< &LabVec); + virtual void ReadWorkFile(CLabVecRang &LabVecRang); + virtual void Draw(CDC* pDC); + + + void BindCurTemp(); + bool IsUseObjList(){return m_bUseObjList;}; + void EditTemp(int idx); + void SetTempRect(int idx,DbRect &rect,bool bCircle); + void ClearTempNull(); + void BindNullTemp(); + void CollectWorkData(int idx,vector> &vec); + CObjContainer &GetTemplateZeroObjContainer(); +private: + vector m_TempVec;//ɱ༭ģ + CTemplate m_TempNull;//һյģ + int m_CurTempIdx;//ǰ༭ģֵ(-1ʾûҪ༭ģ) + bool m_bUseObjList;//Ƿʹöб +}; + +extern CTemplateMgr *gTemplateMgr; \ No newline at end of file diff --git a/LaiPuLaser/ValStrBase.cpp b/LaiPuLaser/ValStrBase.cpp new file mode 100644 index 0000000..06b393b --- /dev/null +++ b/LaiPuLaser/ValStrBase.cpp @@ -0,0 +1,47 @@ +#include "StdAfx.h" +#include "ValStrBase.h" + + +CValStrBase::CValStrBase(void) +{ + m_str = "TEXT"; + m_ValStrType = _STR_ERROR; +} +CValStrBase::~CValStrBase(void) +{ +} +CString CValStrBase::GetValStr() +{ + CString str = GetStr(); + return str; +} +//ֻһλ߲0 +void CValStrBase::AddLeftZreo(CString &str) +{ + if(str.GetLength()==1) + { + str = "0"+str; + } +} +CString CValStrBase::GetValTypeStr() +{ + CString str; + switch(m_ValStrType) + { + case _STR_FIXED: + str = "̶ı"; + break; + case _STR_SN: + str = "к"; + break; + case _STR_DATE: + str = ""; + break; + case _STR_TIME: + str = "ʱ"; + break; + default: + break; + } + return str; +} \ No newline at end of file diff --git a/LaiPuLaser/ValStrBase.h b/LaiPuLaser/ValStrBase.h new file mode 100644 index 0000000..db08933 --- /dev/null +++ b/LaiPuLaser/ValStrBase.h @@ -0,0 +1,26 @@ +#pragma once +#include "GlobalDefine.h" +#include "EnumValStrType.h" + +class CValStrBase +{ +public: + CValStrBase(void); + virtual ~CValStrBase(void); + virtual CValStrBase * Clone(){return NULL;}; + virtual CString GetTypeStr(){return "";}; + virtual void SetValStr(CString str){m_str = str;}; + virtual void UpdateValStr(){}; +public: + CString GetValStr(); + CString GetValTypeStr(); + void SetValStrType(VAL_STR_TYPR t){m_ValStrType = t;}; + VAL_STR_TYPR GetValStrType(){return m_ValStrType;}; +protected: + virtual CString GetStr(){return m_str;}; + void AddLeftZreo(CString &str); +protected: + CString m_str;//ı + VAL_STR_TYPR m_ValStrType;//ɱı +}; + diff --git a/LaiPuLaser/ValStrDate.cpp b/LaiPuLaser/ValStrDate.cpp new file mode 100644 index 0000000..d629cea --- /dev/null +++ b/LaiPuLaser/ValStrDate.cpp @@ -0,0 +1,81 @@ +#include "StdAfx.h" +#include "ValStrDate.h" + + +CValStrDate::CValStrDate(void) +{ + m_DateType = _DATE_YEAR_FOUR; + m_ValStrType = _STR_DATE; +} +CValStrDate::~CValStrDate(void) +{ +} +CString CValStrDate::GetTypeStr() +{ + return "Date"; +} +CString CValStrDate::GetStr() +{ + //ȡǰϵͳʱ + CTime tm; tm=CTime::GetCurrentTime(); + + CString str; + switch(m_DateType) + { + case _DATE_YEAR_FOUR: + str = tm.Format("20%y"); + break; + case _DATE_YEAR_TWO: + str = tm.Format("%y"); + break; + case _DATE_MONTH: + str = tm.Format("%m"); + break; + case _DATE_DAY: + str = tm.Format("%d"); + break; + case _DATE_DAY_IN_YEAR: + + break; + case _DATE_WEEK: + str = tm.Format("%w"); + break; + case _DATE_WEEK_IN_YEAR: + + break; + default: + break; + } + //߲0 + AddLeftZreo(str); + return str; +} +CString CValStrDate::GetDateTypeStr() +{ + CString str; + switch(m_DateType) + { + case _DATE_YEAR_FOUR: + case _DATE_YEAR_TWO: + str = ""; + break; + case _DATE_MONTH: + str = ""; + break; + case _DATE_DAY: + str = ""; + break; + case _DATE_DAY_IN_YEAR: + str = ""; + break; + case _DATE_WEEK: + str = ""; + break; + case _DATE_WEEK_IN_YEAR: + str = ""; + break; + default: + break; + } + return str; +} \ No newline at end of file diff --git a/LaiPuLaser/ValStrDate.h b/LaiPuLaser/ValStrDate.h new file mode 100644 index 0000000..a549fab --- /dev/null +++ b/LaiPuLaser/ValStrDate.h @@ -0,0 +1,20 @@ +#pragma once +#include "valstrbase.h" +#include "GlobalDefine.h" +#include "EnumValStrType.h" + +class CValStrDate :public CValStrBase +{ +public: + CValStrDate(void); + ~CValStrDate(void); + virtual CValStrDate * Clone(){return new CValStrDate(*this);}; + virtual CString GetTypeStr(); + virtual CString GetStr(); + CString GetDateTypeStr(); + void SetDateType(VAL_DATE_TYPR t){m_DateType = t;}; + VAL_DATE_TYPR GetDateType(){return m_DateType;}; +private: + VAL_DATE_TYPR m_DateType;// +}; + diff --git a/LaiPuLaser/ValStrFixed.cpp b/LaiPuLaser/ValStrFixed.cpp new file mode 100644 index 0000000..6032611 --- /dev/null +++ b/LaiPuLaser/ValStrFixed.cpp @@ -0,0 +1,15 @@ +#include "StdAfx.h" +#include "ValStrFixed.h" + + +CValStrFixed::CValStrFixed(void) +{ + m_ValStrType = _STR_FIXED; +} +CValStrFixed::~CValStrFixed(void) +{ +} +CString CValStrFixed::GetTypeStr() +{ + return "Text"; +} \ No newline at end of file diff --git a/LaiPuLaser/ValStrFixed.h b/LaiPuLaser/ValStrFixed.h new file mode 100644 index 0000000..361181f --- /dev/null +++ b/LaiPuLaser/ValStrFixed.h @@ -0,0 +1,12 @@ +#pragma once +#include "valstrbase.h" +//̶ı +class CValStrFixed :public CValStrBase +{ +public: + CValStrFixed(void); + ~CValStrFixed(void); + virtual CValStrFixed * Clone(){return new CValStrFixed(*this);}; + virtual CString GetTypeStr(); +}; + diff --git a/LaiPuLaser/ValStrSN.cpp b/LaiPuLaser/ValStrSN.cpp new file mode 100644 index 0000000..64bc38f --- /dev/null +++ b/LaiPuLaser/ValStrSN.cpp @@ -0,0 +1,43 @@ +#include "StdAfx.h" +#include "ValStrSN.h" +#include "GlobalFunction.h" + +CValStrSN::CValStrSN(void) +{ + m_ValStrType = _STR_SN; + + m_SnMin = 0;//С + m_SnMax = 9999;// + m_SnCur = 1;//ǰ + m_SnInc = 1;// + m_EachMarkTimes = 1;//ÿ̴ + m_CurMarkTimes = 0;//ǰ̴ +} +CValStrSN::~CValStrSN(void) +{ +} +CString CValStrSN::GetTypeStr() +{ + return "SN"; +} +//㵱ǰк +void CValStrSN::UpdateValStr() +{ + //ǰֵ + m_SnCur += m_SnInc; +} +CString CValStrSN::GetStr() +{ + CString str; + //ȷǰҪ0 + int Cnt1 = GetNumDigit(m_SnMax); + int Cnt2 = GetNumDigit(m_SnCur); + for(int i=0;i<(Cnt1-Cnt2);i++) + { + str += "0"; + } + CString SnCurStr; + SnCurStr.Format("%ld",m_SnCur); + str += SnCurStr; + return str; +} \ No newline at end of file diff --git a/LaiPuLaser/ValStrSN.h b/LaiPuLaser/ValStrSN.h new file mode 100644 index 0000000..626ed0d --- /dev/null +++ b/LaiPuLaser/ValStrSN.h @@ -0,0 +1,27 @@ +#pragma once +#include "valstrbase.h" +#include "GlobalDefine.h" + + +class CValStrSN :public CValStrBase +{ + friend class CDlgValStrSN; +public: + CValStrSN(void); + ~CValStrSN(void); + virtual CValStrSN * Clone(){return new CValStrSN(*this);}; + virtual CString GetTypeStr(); + virtual CString GetStr(); + virtual void UpdateValStr(); + CString GetDateTypeStr(); +private: + +private: + int m_SnMin;//ʼ + int m_SnMax;// + int m_SnCur;//ǰ + int m_SnInc;// + int m_EachMarkTimes;//ÿ̴ + int m_CurMarkTimes;//ǰ̴ +}; + diff --git a/LaiPuLaser/ValStrTime.h b/LaiPuLaser/ValStrTime.h new file mode 100644 index 0000000..cf64e33 --- /dev/null +++ b/LaiPuLaser/ValStrTime.h @@ -0,0 +1,21 @@ +#pragma once +#include "valstrbase.h" +#include "GlobalDefine.h" +#include "EnumValStrType.h" + + +class CValStrTime :public CValStrBase +{ +public: + CValStrTime(void); + ~CValStrTime(void); + virtual CValStrTime * Clone(){return new CValStrTime(*this);}; + virtual CString GetTypeStr(); + virtual CString GetStr(); + CString GetTimeTypeStr(); + void SetTimeType(VAL_TIME_TYPR t){m_TimeType = t;}; + VAL_TIME_TYPR GetTimeType(){return m_TimeType;}; +private: + VAL_TIME_TYPR m_TimeType;// +}; + diff --git a/LaiPuLaser/ValString.cpp b/LaiPuLaser/ValString.cpp new file mode 100644 index 0000000..65cf00f --- /dev/null +++ b/LaiPuLaser/ValString.cpp @@ -0,0 +1,144 @@ +#include "StdAfx.h" +#include "ValString.h" + + +CValString::CValString(void) +{ + m_bValStr = false;//Ƿɱ +} +CValString::~CValString(void) +{ + m_ValStrVec.clear(); +} +// +void CValString::Copy(CValString &rhs) +{ + m_ValStrVec.clear(); + + m_bValStr = rhs.m_bValStr;//Ƿɱ + m_String = rhs.m_String; + //ɱıб + vector>::iterator iter = rhs.m_ValStrVec.begin(); + vector>::iterator iter_end = rhs.m_ValStrVec.end(); + for(;iter!=iter_end;iter++) + { + CValStrBase *p = (*iter)->Clone(); + AddValStr(p); + } +} +void CValString::AddValStr(CValStrBase *p) +{ + //浽ָ + Sptr sPtr(p); + m_ValStrVec.push_back(sPtr); +} + +void CValString::InsertList(CListCtrl &List) +{ + int size = m_ValStrVec.size(); + for(int i=0;iGetTypeStr());//һ + List.SetItemText(i,1,m_ValStrVec[i]->GetValStr());//ڶ + } +} +//idx ǷЧ +bool CValString::IdxValid(int idx) +{ + int size = m_ValStrVec.size(); + if(idx<0 || idx>= size) + return false; + return true; +} +void CValString::DelSelValStr(int &idx) +{ + if(!IdxValid(idx)) + return; + vector>::iterator iter = m_ValStrVec.begin(); + vector>::iterator iter_end = m_ValStrVec.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx) + { + m_ValStrVec.erase(iter); + idx = -1; + break; + } + i++; + } +} +//ȡidx Ӧɱı +VAL_STR_TYPR CValString::GetSelValStrType(int idx) +{ + if(!IdxValid(idx)) + return _STR_ERROR; + vector>::iterator iter = m_ValStrVec.begin(); + vector>::iterator iter_end = m_ValStrVec.end(); + int i=0; + for(;iter!=iter_end;iter++) + { + if(i==idx) + { + return m_ValStrVec[i]->GetValStrType(); + break; + } + i++; + } + return _STR_ERROR; +} +// +void CValString::SwapValStr(int idx1,int idx2) +{ + if(!IdxValid(idx1) || !IdxValid(idx2)) + return; + Sptr p = m_ValStrVec[idx1]; + m_ValStrVec[idx1] = m_ValStrVec[idx2]; + m_ValStrVec[idx2] = p; +} +//ȡidx ӦĿɱַָ +CValStrBase *CValString::GetValStrPtr(int idx) +{ + if(!IdxValid(idx)) + return NULL; + return m_ValStrVec[idx].GetPtr(); +} +//ȡɱıǰַ +CString CValString::GetString() +{ + if(m_bValStr)//ɱı + { + m_String = ""; + vector>::iterator iter = m_ValStrVec.begin(); + vector>::iterator iter_end = m_ValStrVec.end(); + for(;iter!=iter_end;iter++) + { + m_String += (*iter)->GetValStr(); + } + } + if(m_String == "")//ַֹ + { + //m_String = "TEXT"; + m_String = "Text"; + } + return m_String; +} +void CValString::SetString(CString str) +{ + //ǿɱı + if(!m_bValStr) + { + m_String = str; + } +} +//¿ɱı +void CValString::UpdateValStr() +{ + vector>::iterator iter = m_ValStrVec.begin(); + vector>::iterator iter_end = m_ValStrVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->UpdateValStr(); + } +} \ No newline at end of file diff --git a/LaiPuLaser/ValString.h b/LaiPuLaser/ValString.h new file mode 100644 index 0000000..8fd8cd7 --- /dev/null +++ b/LaiPuLaser/ValString.h @@ -0,0 +1,32 @@ +#pragma once +#include "valstrbase.h" +#include "GlobalDefine.h" +#include "SmartPtr.h" +#include "EnumValStrType.h" + +//ɱı +class CValString +{ +public: + CValString(void); + ~CValString(void); + void Copy(CValString &rhs); + void SetString(CString str); + CString GetString(); + void AddValStr(CValStrBase *p); + void InsertList(CListCtrl &List); + void DelSelValStr(int &idx); + void SwapValStr(int idx1,int idx2); + CValStrBase *GetValStrPtr(int idx); + VAL_STR_TYPR GetSelValStrType(int idx); + void SetbValStr(bool b){m_bValStr = b;}; + bool GetbValStr(){return m_bValStr;}; + void UpdateValStr(); +private: + bool IdxValid(int idx); +private: + bool m_bValStr;//Ƿɱ + CString m_String;//ַ + vector> m_ValStrVec;//ɱıб +}; + diff --git a/LaiPuLaser/ValStrtime.cpp b/LaiPuLaser/ValStrtime.cpp new file mode 100644 index 0000000..d5d4f9c --- /dev/null +++ b/LaiPuLaser/ValStrtime.cpp @@ -0,0 +1,98 @@ +#include "StdAfx.h" +#include "ValStrTime.h" + + +CValStrTime::CValStrTime(void) +{ + m_TimeType = _TIME_HOUR_24; + m_ValStrType = _STR_TIME; +} +CValStrTime::~CValStrTime(void) +{ +} +CString CValStrTime::GetTypeStr() +{ + return "Time"; +} +CString CValStrTime::GetStr() +{ + //ȡǰϵͳʱ + CTime tm; tm=CTime::GetCurrentTime(); + + int time; + CString str; + switch(m_TimeType) + { + case _TIME_HOUR_24: + time = tm.GetHour(); + str.Format("%ld",time); + break; + case _TIME_HOUR_12: + time = tm.GetHour(); + str.Format("%ld",time%12); + break; + case _TIME_MINUTE: + time = tm.GetMinute(); + str.Format("%ld",time); + break; + case _TIME_SECOND: + time = tm.GetSecond(); + str.Format("%ld",time); + break; + case _TIME_AM_OR_PM_1: + time = tm.GetHour(); + if(time>=12) + { + str = "PM"; + } + else + { + str = "AM"; + } + break; + case _TIME_AM_OR_PM_2: + time = tm.GetHour(); + if(time>=12) + { + str = "pm"; + } + else + { + str = "am"; + } + break; + default: + break; + } + //߲0 + AddLeftZreo(str); + return str; +} +CString CValStrTime::GetTimeTypeStr() +{ + CString str; + switch(m_TimeType) + { + case _TIME_HOUR_24: + str = "Сʱ- 24"; + break; + case _TIME_HOUR_12: + str = "Сʱ- 12"; + break; + case _TIME_MINUTE: + str = ""; + break; + case _TIME_SECOND: + str = ""; + break; + case _TIME_AM_OR_PM_1: + str = "ʱ(AM,PM)"; + break; + case _TIME_AM_OR_PM_2: + str = "ʱ(am,pm)"; + break; + default: + break; + } + return str; +} \ No newline at end of file diff --git a/LaiPuLaser/WorkAreaMgr.cpp b/LaiPuLaser/WorkAreaMgr.cpp new file mode 100644 index 0000000..b568227 --- /dev/null +++ b/LaiPuLaser/WorkAreaMgr.cpp @@ -0,0 +1,232 @@ +#include "StdAfx.h" +#include "WorkAreaMgr.h" +#include "GlobalFunction.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "DrawSimpleShape.h" +#include "AuthorityMgr.h" +#include "MsgBox.h" +#include "LogMgr.h" + + +CWorkAreaMgr *gWorkAreaMgr = new CWorkAreaMgr; +CWorkAreaMgr::CWorkAreaMgr(void) +{ + m_bDrawWorkArea = true;//Ƿƹ + m_WorkRectColor = RGB_RED; //򷽿ɫ + m_WorkRectSize.w = 100;//򷽿ߴ(mm) + m_WorkRectSize.h = 100;//򷽿ߴ(mm) + RefrashWorkArea(); +} +CWorkAreaMgr::~CWorkAreaMgr(void) +{ +} +#if 1 +CMFCPropertyGridProperty *CWorkAreaMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("WorkArea");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("Χ"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_bDrawWorkArea");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_bDrawWorkArea); + pPropertie->SetType(_PROP_TYPE_BOOL); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("ʾΧ"); + Description = _T("ǷʾΧ,ҪڹΧ֮"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bDrawWorkArea, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_WorkRectColor");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkRectColor); + pPropertie->SetType(_PROP_TYPE_COLOR); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("Χ߿ɫ"); + Description = _T("Χ߿ɫ"); + CMFCPropertyGridColorProperty* p1 = new CMFCPropertyGridColorProperty(PropertyName,m_WorkRectColor, NULL, Description); + p1->EnableOtherButton(_T("...")); + p1->EnableAutomaticButton(_T("Ĭ"),RGB_BLACK); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_WorkRectSize_w");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkRectSize.w); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T(""); + Description = _T("ΧĿ(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_WorkRectSize.w, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_WorkRectSize_h");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_WorkRectSize.h); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("߶"); + Description = _T("Χĸ߶(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_WorkRectSize.h, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_CenterPt_x");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CenterPt.x); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ĵx"); + Description = _T("Χĵx(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_CenterPt.x, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + //-------------------------------------------------------------------------------// + { + //Աӳ + Name = _T("m_CenterPt_y");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_CenterPt.y); + pPropertie->SetType(_PROP_TYPE_DOUBLE); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + //ʾ + PropertyName = _T("ĵy"); + Description = _T("Χĵx(λ:mm)"); + CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_CenterPt.y, Description); + pGroup->AddSubItem(p1); + gDevicePropertieMgr.Insert(p1, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} +void CWorkAreaMgr::Ini() +{ + RefrashWorkArea(); +} +void CWorkAreaMgr::ExportPar(ofstream *pFile) +{ + (*pFile)<<"[ģ] [CWorkAreaMgr]------------------------------------------------"<WriteDebugLog("ݼOK"); + return true; +} +#endif + diff --git a/LaiPuLaser/WorkAreaMgr.h b/LaiPuLaser/WorkAreaMgr.h new file mode 100644 index 0000000..e254ac5 --- /dev/null +++ b/LaiPuLaser/WorkAreaMgr.h @@ -0,0 +1,34 @@ +#pragma once +#include "module.h" +#include "EnumPropertieType.h" + +//ĹΧ +class CWorkAreaMgr :public CModule +{ +public: + CWorkAreaMgr(void); + ~CWorkAreaMgr(void); + virtual MODULE GetModuleType(){return _WORK_AREA_PROP;}; + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual void Ini(); + + virtual void ExportPar(ofstream *pFile); + //ӦԵĸı + virtual void OnPropertyChanged(); + virtual void Draw(CDC* pDC); + + DbRect GetWorkArea(); + bool CheckWorkDataInSafeArea(vector> &vec); +private: + void RefrashWorkArea(); + void DrawWorkArea(CDC* pDC); +private: + bool m_bDrawWorkArea;//Ƿƹ + COLORREF m_WorkRectColor; //򷽿ɫ + + Dbxy m_CenterPt;//Χĵ + DbSize m_WorkRectSize;//򷽿ߴ + DbRect m_DbWorkRect;//豸İȫӹΧ,obj ݲܳΧ +}; + +extern CWorkAreaMgr *gWorkAreaMgr; \ No newline at end of file diff --git a/LaiPuLaser/WorkCmd.cpp b/LaiPuLaser/WorkCmd.cpp new file mode 100644 index 0000000..d87d81d --- /dev/null +++ b/LaiPuLaser/WorkCmd.cpp @@ -0,0 +1,25 @@ +#include "StdAfx.h" +#include "WorkCmd.h" +CWorkCmd::CWorkCmd(void) +{ + m_FrontDelay = 0;//ִָ֮ǰʱ(λ: ) + m_AfterDelay = 0;//ִָ֮ʱ(λ: ) + m_bCancel = true; +} +CWorkCmd::~CWorkCmd(void) +{ +} +bool CWorkCmd::Work(bool Cancel) +{ + if(Cancel && m_bCancel)//ָȡ + return true; + + Sleep(m_FrontDelay); + WirteLog(); + bool ret = true; + + Excute(); + Sleep(m_AfterDelay); + + return ret; +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmd.h b/LaiPuLaser/WorkCmd.h new file mode 100644 index 0000000..bd38870 --- /dev/null +++ b/LaiPuLaser/WorkCmd.h @@ -0,0 +1,25 @@ +#pragma once +#include "GlobalDefine.h" +#include "LogMgr.h" + + +//ÿƽ̨ƶĵ,洢ʵʵĹ +//command ģʽ +class CWorkCmd +{ +public: + CWorkCmd(void); + virtual ~CWorkCmd(void);//BUG 2015-12-21 + virtual bool Excute()=0; + virtual void WirteLog(){}; +public: + void CanNotCancel(){m_bCancel = false;};//ܱȡ + bool Work(bool Cancel); + void SetFrontDelay(int t){m_FrontDelay = t;}; + void SetAfterDelay(int t){m_AfterDelay = t;}; +private: + int m_FrontDelay;//ִָ֮ǰʱ(λ: ) + int m_AfterDelay;//ִָ֮ʱ(λ: ) + bool m_bCancel;//ָǷȡ(;ִָֹͣкеָҪִ) +}; + diff --git a/LaiPuLaser/WorkCmdCameraCatch.cpp b/LaiPuLaser/WorkCmdCameraCatch.cpp new file mode 100644 index 0000000..474cb82 --- /dev/null +++ b/LaiPuLaser/WorkCmdCameraCatch.cpp @@ -0,0 +1,63 @@ +#include "StdAfx.h" +#include "WorkCmdCameraCatch.h" +#include "ExceptionMsg.h" +#include "Program_SZ_XL_TrackWorkFlow.h" +#include "CommonFlowMgr.h" +CWorkCmdCameraCatch::CWorkCmdCameraCatch(CCamera &Camera) +:m_Camera(Camera) +{ + m_pResultVec = NULL;// + m_pProduct = NULL; + m_bCatchMark3 = false;//Ƿץȡmark3 + m_bAlam = true;//Ƿ񱨾ʾ +} +CWorkCmdCameraCatch::~CWorkCmdCameraCatch(void) +{ +} +//ץȡλ +bool CWorkCmdCameraCatch::Excute() +{ + Dbxy pt;// + if(m_Camera.CatchPtToPlatformcoord(pt)==false) + { + //if(m_pProduct != NULL)//ץȡʧֱӱ + { + if(m_bAlam) + { + gTrackWorkFlow1.RadAlamOnOff(true);//ʾ + } + CString str = _T("λץȡʧ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + } + //ʵʶλֵ + if(m_pProduct != NULL) + { + if (m_pProduct->IsbNewAddProduct()) + { + Dbxy NPoffset = gCommonFlowMgr->GetNPOffset(); + pt.x -= NPoffset.x; + pt.y -= NPoffset.y; + } + if(m_bCatchMark3)//ץȡmark3 + { + m_pProduct->SetRealMark3Pt(pt); + } + else + { + m_pProduct->SetRealMarkPt(pt); + } + } + //˳㱣 + if(m_pResultVec != NULL) + { + m_pResultVec->push_back(pt); + } + return true; +} +void CWorkCmdCameraCatch::WirteLog() +{ + gLogMgr->WriteDebugLog("[WorkCmd][Camera ץȡmark]"); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdCameraCatch.h b/LaiPuLaser/WorkCmdCameraCatch.h new file mode 100644 index 0000000..68223dc --- /dev/null +++ b/LaiPuLaser/WorkCmdCameraCatch.h @@ -0,0 +1,26 @@ +#pragma once +#include "workcmd.h" +#include "Camera.h" +#include "Product.h" + + +//CCD ץȡλָ +class CWorkCmdCameraCatch :public CWorkCmd +{ +public: + CWorkCmdCameraCatch(CCamera &Camera); + ~CWorkCmdCameraCatch(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetProduct(CProduct &p){m_pProduct = &p;}; + void SetResultVec(vector &vec){m_pResultVec = &vec;}; + void SetbCatchMark3(bool b){m_bCatchMark3 = b;}; + void SetbAlam(bool b){m_bAlam = b;}; +private: + CCamera &m_Camera; + bool m_bCatchMark3;//Ƿץȡmark3 + bool m_bAlam;//Ƿ񱨾ʾ + CProduct *m_pProduct; + vector *m_pResultVec;// +}; + diff --git a/LaiPuLaser/WorkCmdContainer.cpp b/LaiPuLaser/WorkCmdContainer.cpp new file mode 100644 index 0000000..f3d245a --- /dev/null +++ b/LaiPuLaser/WorkCmdContainer.cpp @@ -0,0 +1,16 @@ +#include "StdAfx.h" +#include "WorkCmdContainer.h" + +CWorkCmdContainer CWorkCmdContainer::m_Instance; +CWorkCmdContainer::CWorkCmdContainer(void) +{ +} +CWorkCmdContainer::~CWorkCmdContainer(void) +{ +} +void CWorkCmdContainer::AddCmd(CWorkCmd *p) +{ + //浽ָ + Sptr sPtr(p); + m_WorkCmdVec.push_back(sPtr); +} diff --git a/LaiPuLaser/WorkCmdContainer.h b/LaiPuLaser/WorkCmdContainer.h new file mode 100644 index 0000000..104ac1a --- /dev/null +++ b/LaiPuLaser/WorkCmdContainer.h @@ -0,0 +1,21 @@ +#pragma once +#include "SmartPtr.h" +#include "WorkCmd.h" + +//浱ǰҪִеָ +class CWorkCmdContainer +{ +public: + CWorkCmdContainer(void); + ~CWorkCmdContainer(void); + static CWorkCmdContainer &GetInstance(){return m_Instance;}; + void AddCmd(CWorkCmd *p); + int GetCmdCnt(){return m_WorkCmdVec.size();};//ָ + vector> &GetContainer(){return m_WorkCmdVec;}; + void Clear(){m_WorkCmdVec.clear();}; +private: + + static CWorkCmdContainer m_Instance; + vector> m_WorkCmdVec;//ָ +}; + diff --git a/LaiPuLaser/WorkCmdDeviceParReset.cpp b/LaiPuLaser/WorkCmdDeviceParReset.cpp new file mode 100644 index 0000000..a5c49e7 --- /dev/null +++ b/LaiPuLaser/WorkCmdDeviceParReset.cpp @@ -0,0 +1,26 @@ +#include "StdAfx.h" +#include "WorkCmdDeviceParReset.h" +#include "PlatformXY.h" +#include "DeviceState.h" + +#include "MotionCard_PCI1245.h" +CWorkCmdDeviceParReset::CWorkCmdDeviceParReset(void) +{ +} +CWorkCmdDeviceParReset::~CWorkCmdDeviceParReset(void) +{ +} +bool CWorkCmdDeviceParReset::Excute() +{ + // + gMotionCard_PCI1245->ResetAllAsixCoord(); + + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(true); + return true; +} +void CWorkCmdDeviceParReset::WirteLog() +{ + CString str1 = _T("[WorkCmd][豸λ]"); + gLogMgr->WriteDebugLog(str1); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdDeviceParReset.h b/LaiPuLaser/WorkCmdDeviceParReset.h new file mode 100644 index 0000000..60007b5 --- /dev/null +++ b/LaiPuLaser/WorkCmdDeviceParReset.h @@ -0,0 +1,13 @@ +#pragma once +#include "workcmd.h" + +//豸λ +class CWorkCmdDeviceParReset :public CWorkCmd +{ +public: + CWorkCmdDeviceParReset(void); + ~CWorkCmdDeviceParReset(void); + virtual bool Excute(); + virtual void WirteLog(); +}; + diff --git a/LaiPuLaser/WorkCmdFactory.cpp b/LaiPuLaser/WorkCmdFactory.cpp new file mode 100644 index 0000000..0d2ad39 --- /dev/null +++ b/LaiPuLaser/WorkCmdFactory.cpp @@ -0,0 +1,134 @@ +#include "StdAfx.h" +#include "WorkCmdFactory.h" +#include +#include "CreaterMotorToMachineOrigin.h" +#include "CreaterMotorToOffsetPos.h" +#include "CreaterMotorCheckLimit.h" +#include "CreaterPciPortCheck.h" +#include "CreaterPciPortSwitch.h" +#include "CreaterDeviceParReset.h" +#include "CreaterCutFlow.h" +#include "CreaterPlatformMove.h" +#include "CreaterMarkFlow.h" +#include "CreaterCatchMarkFlow.h" +#include "CreaterCatchMark.h" +#include "CreaterMsg.h" +#include "CreaterWorkEnd.h" +#include "CreaterWorkStart.h" + + +//ƶеԭ(PAR1 (X/Y/Z)) +#define CMD_MOTOR_TO_MACHINE_ORIGIN _T("CMD_MOTOR_TO_MACHINE_ORIGIN") +//ƶָƫƵ(PAR1 (X/Y/Z)) +#define CMD_MOTOR_TO_OFFSET_POS _T("CMD_MOTOR_TO_OFFSET_POS") +//豸λ +#define CMD_DEVICE_PAR_RESET _T("CMD_DEVICE_PAR_RESET") +//λ +#define CMD_MOTOR_CHECK_LIMIT _T("CMD_MOTOR_CHECK_LIMIT") +//PCI ˿״̬(PAR1 (˿ڿ)) (PAR2 (Ҫ󿪻ǹTRUE/FALSE))(PAR3 (ʱ(ms))) +#define CMD_PCI_PORT_CHECK _T("CMD_PCI_PORT_CHECK") +//лPCI ˿״̬(PAR1 (˿ڿ)) (PAR2 (Ҫ󿪻ǹTRUE/FALSE)) +#define CMD_PCI_PORT_SWITCH _T("CMD_PCI_PORT_SWITCH") +//ƽ̨ƶ(PAR1 (ƶķʽ)) +#define CMD_PLATFORM_MOVE _T("CMD_PLATFORM_MOVE") +//и(ⲻƽ̨ƶĹʽ) +#define CMD_CUT_FLOW _T("CMD_CUT_FLOW") +// +#define CMD_MARK_FLOW _T("CMD_MARK_FLOW") +//Զץȡλ +#define CMD_AUTO_CATCH_MARK_FLOW _T("CMD_AUTO_CATCH_MARK_FLOW") +//ץȡλ +#define CMD_CATCH_MARK _T("CMD_CATCH_MARK") +//ʾϢ PAR1 (ʾ) +#define CMD_MSG _T("CMD_MSG") +//ӹɺһЩ +#define CMD_WORK_END _T("CMD_WORK_END") +//ӹʼǰһЩ +#define CMD_WORK_START _T("CMD_WORK_START") +//Z ό +#define CMD_ADJUST_FOCUS _T("CMD_ADJUST_FOCUS") + +CWorkCmdFactory::CWorkCmdFactory(void) +{ +} +CWorkCmdFactory::~CWorkCmdFactory(void) +{ +} +//str Уָ浽WorkCmdVec +void CWorkCmdFactory::Creat(const CString &str) +{ + if(str.Find(_T("//")) != -1)//ע͵ָ + { + return; + } + else if(str.Find(CMD_MOTOR_TO_MACHINE_ORIGIN) != -1) + { + auto_ptr pCreater(new CCreaterMotorToMachineOrigin(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_MOTOR_TO_OFFSET_POS) != -1) + { + auto_ptr pCreater(new CCreaterMotorToOffsetPos(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_MOTOR_CHECK_LIMIT) != -1) + { + auto_ptr pCreater(new CCreaterMotorCheckLimit(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_PCI_PORT_CHECK) != -1) + { + auto_ptr pCreater(new CCreaterPciPortCheck(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_PCI_PORT_SWITCH) != -1) + { + auto_ptr pCreater(new CCreaterPciPortSwitch(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_DEVICE_PAR_RESET) != -1) + { + auto_ptr pCreater(new CCreaterDeviceParReset(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_PLATFORM_MOVE) != -1) + { + auto_ptr pCreater(new CCreaterPlatformMove(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_CUT_FLOW) != -1) + { + auto_ptr pCreater(new CCreaterCutFlow(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_MARK_FLOW) != -1) + { + auto_ptr pCreater(new CCreaterMarkFlow(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_AUTO_CATCH_MARK_FLOW) != -1) + { + auto_ptr pCreater(new CCreaterCatchMarkFlow(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_CATCH_MARK) != -1) + { + auto_ptr pCreater(new CCreaterCatchMark(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_MSG) != -1) + { + auto_ptr pCreater(new CCreaterMsg(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_WORK_END) != -1) + { + auto_ptr pCreater(new CCreaterWorkEnd(str)); + pCreater->Creat(); + } + else if(str.Find(CMD_WORK_START) != -1) + { + auto_ptr pCreater(new CCreaterWorkStart(str)); + pCreater->Creat(); + } +} diff --git a/LaiPuLaser/WorkCmdFactory.h b/LaiPuLaser/WorkCmdFactory.h new file mode 100644 index 0000000..2f6a4f4 --- /dev/null +++ b/LaiPuLaser/WorkCmdFactory.h @@ -0,0 +1,14 @@ +#pragma once +#include "WorkCmd.h" +#include "SmartPtr.h" +#include "WorkCmdContainer.h" + +//ָļ򵥹 +class CWorkCmdFactory +{ +public: + CWorkCmdFactory(void); + ~CWorkCmdFactory(void); + void Creat(const CString &str); +}; + diff --git a/LaiPuLaser/WorkCmdInvoker.cpp b/LaiPuLaser/WorkCmdInvoker.cpp new file mode 100644 index 0000000..873a10e --- /dev/null +++ b/LaiPuLaser/WorkCmdInvoker.cpp @@ -0,0 +1,230 @@ +#include "StdAfx.h" +#include "WorkCmdInvoker.h" +#include "GlobalFunction.h" +#include "MsgBox.h" +#include "FileMgr.h" +#include "WorkCmdFactory.h" +#include "WorkCmdContainer.h" +#include "ExceptionMsg.h" +#include "DeviceState.h" +#include "PciCh365Mgr.h" +#include "PciPortMgr.h" +#include "ProgressMgr.h" +#include "DlgProgress.h" +#include "CommonFlowMgr.h" + + +CWorkCmdInvoker::CWorkCmdInvoker(void) +{ +} +CWorkCmdInvoker::~CWorkCmdInvoker(void) +{ +} +#if 1 +//ȡFileName · +CString CWorkCmdInvoker::GetFullFilePath(const CString &FileName) +{ + CString FilePath = _T("\\Parameter\\WorkFlow\\")+FileName+_T(".flw"); + CString FullFilePath; + + CFileMgr FileMgr; + FileMgr.GetFullFilePath(FullFilePath,FilePath); + + return FullFilePath; +} +//ָWorkCmdVec +void CWorkCmdInvoker::CreatCmd(const CString &FilePath) +{ + //ȡָļCmdVec ------------------------------------- + vector CmdVec; + CFileMgr FileMgr; + FileMgr.ReadFileToStringVec(FilePath,CmdVec); + CreatCmd(CmdVec); +} +void CWorkCmdInvoker::CreatCmd(vector &CmdVec) +{ + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + CmdContainer.Clear(); + //ݶȡıָ------------------------------ + CWorkCmdFactory CmdFactory; + vector::iterator iter = CmdVec.begin(); + vector::iterator iter_end = CmdVec.end(); + for(;iter!=iter_end;iter++) + { + try + { + CmdFactory.Creat(*iter); + } + catch(CExceptionMsg &Msg) + { + CMsgBox MsgBox; + MsgBox.Show(Msg.GetMsgStr(), true); + break; + } + } +} +#endif +#if 1 +//ֱִָ +void CWorkCmdInvoker::Excute() +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.CheckState(_STATE_WORKING,false))//ǹ״̬ + return; + DeviceState.SetState(_STATE_WORKING); + + //ִָ + ExcuteAllCmd(); +} +//ִһڲָ +void CWorkCmdInvoker::ExcuteOneCmd(CWorkCmd *pCmd) +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.CheckState(_STATE_WORKING,false))//ǹ״̬ + { + return; + } + DeviceState.SetState(_STATE_WORKING); + //ӵָ + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + CmdContainer.Clear(); + CmdContainer.AddCmd(pCmd); + //ִָ + ExcuteAllCmd(); +} +void CWorkCmdInvoker::Excute(CWorkCmdContainer &CmdContainer) +{ + vector> &WorkCmdVec = CmdContainer.GetContainer(); + vector>::iterator iter = WorkCmdVec.begin(); + vector>::iterator iter_end = WorkCmdVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter)->Work(false); + } +} +//ִһָ +void CWorkCmdInvoker::ExcuteCmd(vector &CmdVec) +{ + if(CmdVec.empty()) + return; + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.CheckState(_STATE_WORKING,false))//ǹ״̬ + return; + DeviceState.SetState(_STATE_WORKING); + + try//ָ + { + CreatCmd(CmdVec); + } + catch(CExceptionMsg &Msg) + { + CMsgBox MsgBox; + MsgBox.Show(Msg.GetMsgStr(), true); + DeviceState.SetState(_STATE_WAIT); + return;// + } + ExcuteAllCmd(); +} +//ִָ߳к +UINT ExcuteAllCmdThread(LPVOID pParam) +{ + CWorkCmdInvoker *p = (CWorkCmdInvoker *)pParam; + p->ExcuteAllCmdExt(); + return 0; +} +//ִָеָ------------------------------------------------- +void CWorkCmdInvoker::ExcuteAllCmd(bool bNewThread) +{ + if(bNewThread)//µִ߳ + { + CDlgProgress dlg; + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + int CmdCnt = CmdContainer.GetCmdCnt(); + if(CmdCnt>1)//ֻһָʱҪʾ + { + //󶨽 + #ifdef __PROGRESS_DLG__ + gProgressMgr.SetWorkProgress(&dlg.GetProgress()); + #endif + } + CWinThread* pThread = AfxBeginThread(ExcuteAllCmdThread,this); + if(CmdCnt>1)//ֻһָʱҪʾ + { + #ifdef __PROGRESS_DLG__ + dlg.DoModal();//ʾԻ + #endif + } + WaitForThreadExit(pThread);//ȴ߳̽ + #ifdef __PROGRESS_DLG__ + gProgressMgr.SetWorkProgress(NULL); + #endif + } + else + { + ExcuteAllCmdExt(); + } +} +void CWorkCmdInvoker::ExcuteAllCmdExt() +{ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + gLogMgr->WriteDebugLog(_T("func : ExcuteAllCmd ---------->Start")); + CWorkCmdContainer &CmdContainer = CWorkCmdContainer::GetInstance(); + vector> &WorkCmdVec = CmdContainer.GetContainer(); + + m_bCancel = false;//ָǷֹ + int size = WorkCmdVec.size();// + vector>::iterator iter = WorkCmdVec.begin(); + vector>::iterator iter_end = WorkCmdVec.end(); + CString ErrMsg; + + for(double k = 1;iter!=iter_end;iter++,k += 1) + { + //if((IsShiftKeyDown() || DeviceState.IsWorking()==false)&&m_bCancel==false) + if((IsShiftKeyDown())&&m_bCancel==false) + { + CMsgBox MsgBox; + if(MsgBox.ConfirmOkCancel(_T("ִֹͣ?"))) + { + gLogMgr->WriteDebugLog(_T("func : ExcuteAllCmd---->ִֹͣ")); + m_bCancel = true; + gCommonFlowMgr->SetbWorkStop(true); + } + else + { + DeviceState.SetState(_STATE_WORKING);//ָ״̬ + } + } + try + { + (*iter)->Work(m_bCancel);//ִָʧ,ǿֹ + // + #ifdef __PROGRESS_DLG__ + gProgressMgr.SetCurProgress(static_cast(k),size); + #endif + //ʱ + GetFrame()->m_DlgCutDeviceCtrl.Update(); + } + catch(CExceptionMsg &Msg) + { + ErrMsg = Msg.GetMsgStr(); + CString str("Func : ExcuteAllCmd---->"); + str += ErrMsg; + + gLogMgr->WriteDebugLog(str,_LOG_ERROR); + m_bCancel = true; + gCommonFlowMgr->SetbWorkStop(true); + //ǿƽ + #ifdef __PROGRESS_DLG__ + gProgressMgr.SetCurProgress(100,100); + #endif + } + } + DeviceState.SetState(_STATE_WAIT); + if(ErrMsg != "") + { + CMsgBox MsgBox; + MsgBox.Show(ErrMsg); + } + gLogMgr->WriteDebugLog(_T("func : ExcuteAllCmd ---------->End")); +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdInvoker.h b/LaiPuLaser/WorkCmdInvoker.h new file mode 100644 index 0000000..dd62d07 --- /dev/null +++ b/LaiPuLaser/WorkCmdInvoker.h @@ -0,0 +1,41 @@ +#pragma once +#include "SmartPtr.h" +#include "WorkCmd.h" +#include "WorkCmdContainer.h" + +#define START_WORK_FILE _T("StartWork") +#define CATCH_CCD_FLOW_FILE _T("AutoCatchMark") +#define OPEN_VACUUM_FILE _T("VacuumOpen") +#define CLOSE_VACUUM_FILE _T("VacuumClose") +#define OPEN_AIR_FILE _T("AirOpen") +#define CLOSE_AIR_FILE _T("AirClose") +#define DEVICE_INI_FILE _T("IniDevice") +#define MOVE_TO_ORIGIN_FILE _T("PlatformMoveToOrigin") +#define MOVE_TO_PRODUCT_PT_FILE _T("PlatformMoveToProductPt") +#define MARK_SEL_FLOW_FILE _T("MarkSel") +#define MARK_ALL_FLOW_FILE _T("MarkAll") + + +class CWorkCmdInvoker +{ +public: + CWorkCmdInvoker(void); + virtual ~CWorkCmdInvoker(void); + + void ExcuteOneCmd(CWorkCmd *pCmd); + void ExcuteCmd(vector &CmdVec); + void ExcuteAllCmd(bool bNewThread = true); + void ExcuteAllCmdExt(); + void Excute(); + void Excute(CWorkCmdContainer &CmdContainer); + void UpdateInfo(); + bool IsCancel(){return m_bCancel;}; +private: + CString GetFullFilePath(const CString &FileName); + void CreatCmd(const CString &FilePath); + void CreatCmd(vector &CmdVec); + +private: + bool m_bCancel;//ִָǷж +}; + diff --git a/LaiPuLaser/WorkCmdMarkArea.cpp b/LaiPuLaser/WorkCmdMarkArea.cpp new file mode 100644 index 0000000..aef694b --- /dev/null +++ b/LaiPuLaser/WorkCmdMarkArea.cpp @@ -0,0 +1,108 @@ +#include "StdAfx.h" +#include "WorkCmdMarkArea.h" +#include "MarkCtrl.h" +#include "MarkAreaMgr.h" +#include "CStringFuc.h" +#include "GlobalFunction.h" +#include "ObjComponentMgr.h" +#include "ExceptionMsg.h" +#include "Mirror.h" +#include "WorkTime.h" +#include "CommonFlowMgr.h" +#include "ClientMgr.h" + + +CWorkCmdMarkArea::CWorkCmdMarkArea(CMarkArea &m) +:m_MarkArea(m) +{ + m_bSelMark = false;//ǷΪѡӹ +} +CWorkCmdMarkArea::CWorkCmdMarkArea(CMarkArea & m, int AreaIndex) +: m_MarkArea(m) +{ + m_bSelMark = false;//ǷΪѡӹ + m_AreaIndex = AreaIndex; +} +CWorkCmdMarkArea::~CWorkCmdMarkArea(void) +{ +} +bool CWorkCmdMarkArea::Excute() +{ + if(!gLogMgr->IsDebuging()) + { + //ȡǰϵͳʱ + CTime StartTime,CurTime; + CTimeSpan TimeSpan;//ʱ + StartTime=CTime::GetCurrentTime(); + CMarkCtrl MarkCtrl; + + CWorkTime WorkTime; + WorkTime.StartExactTime(); + + vector> &DataVec = m_MarkArea.GetDataVec();// + vector> &SpecialDataVec = m_MarkArea.GetSpecialDataVec();// + int AreaCycleCnt = gCommonFlowMgr->GetAreaCycleCnt();//һѭӹ + + if (m_AreaIndex!=-1) + { + gClientMgr->SendCmd_StartLaserMark(m_AreaIndex); + } + MarkCtrl.StartMarkPci(DataVec,SpecialDataVec,AreaCycleCnt); + CurTime=CTime::GetCurrentTime(); + TimeSpan = CurTime - StartTime; + CString Time = Time2Str(TimeSpan.GetHours())+":"+Time2Str(TimeSpan.GetMinutes())+":"+Time2Str(TimeSpan.GetSeconds()); + gLogMgr->WriteDebugLog(Time); + + if (m_AreaIndex != -1) + { + gClientMgr->CheckServerDoneCmd(); + } + + int ExactSpanTime = WorkTime.GetExactTime(); + CString LogStr; + LogStr.Format(_T("[ExactSpanTime] = [%d]"),ExactSpanTime); + gLogMgr->WriteDebugLog(LogStr); + } + + //Ƶǰӹ----------------------------------------------- + { + //area ѡ״̬ + gMarkAreaMgr->ResetAllAreaSelState(); + m_MarkArea.SetSelState(true);//ѡǰӹarea + + //markarea ڵobj ΪѼӹ״̬ + gObjComponentMgr->SetMarkedStateRect(m_MarkArea.GetRect(),m_bSelMark); + //ܻ𱨴? + //m_pView->MoveViewCenter(); + //m_pView->RefreshView(); + } + return true; +} +//ӹ +void CWorkCmdMarkArea::CreatWorkDataByTimes(int times) +{ + if(times>1) + { + vector> &DataVec = m_MarkArea.GetDataVec();// + vector>::iterator iter = DataVec.begin(); + vector>::iterator iter_end = DataVec.end(); + for(;iter!=iter_end;iter++) + { + vector VecTmp = *iter; + for(int i=1;i::iterator iter1 = VecTmp.begin(); + vector::iterator iter1_end = VecTmp.end(); + for(;iter1!=iter1_end;iter1++) + { + (*iter).push_back(*iter1); + } + } + } + } +} +void CWorkCmdMarkArea::WirteLog() +{ + CString str1 = "[WorkCmd][MarkArea]"; + gLogMgr->WriteDebugLog(str1); +} diff --git a/LaiPuLaser/WorkCmdMarkArea.h b/LaiPuLaser/WorkCmdMarkArea.h new file mode 100644 index 0000000..8ccc8e8 --- /dev/null +++ b/LaiPuLaser/WorkCmdMarkArea.h @@ -0,0 +1,23 @@ +#pragma once +#include "workcmd.h" +#include "Motor.h" +#include "MarkArea.h" + + +//񾵱һ(pci ) +class CWorkCmdMarkArea :public CWorkCmd +{ +public: + CWorkCmdMarkArea(CMarkArea &m); + CWorkCmdMarkArea(CMarkArea &m,int AreaIndex); + ~CWorkCmdMarkArea(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetbSelMark(bool b){m_bSelMark = b;}; + void CreatWorkDataByTimes(int times); +private: + CMarkArea &m_MarkArea; + bool m_bSelMark;//ǷΪѡӹ + int m_AreaIndex=-1; +}; + diff --git a/LaiPuLaser/WorkCmdMotorToMachineOrigin.cpp b/LaiPuLaser/WorkCmdMotorToMachineOrigin.cpp new file mode 100644 index 0000000..b0d781d --- /dev/null +++ b/LaiPuLaser/WorkCmdMotorToMachineOrigin.cpp @@ -0,0 +1,35 @@ +#include "StdAfx.h" +#include "WorkCmdMotorToMachineOrigin.h" +#include "MotionCard_PCI1245.h" + +CWorkCmdMotorToMachineOrigin::CWorkCmdMotorToMachineOrigin(CMotor &m) +:m_Motor(m) +{ + m_bSaveOffsetDis = false;//Ƿ¼ƫƾ +} +CWorkCmdMotorToMachineOrigin::~CWorkCmdMotorToMachineOrigin(void) +{ +} +bool CWorkCmdMotorToMachineOrigin::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + bool ret=false; + if(gMotionCard_PCI1245->IsbUsed()) + { + ret = gMotionCard_PCI1245->FindOrigin(m_Motor); + } + return ret; +} +void CWorkCmdMotorToMachineOrigin::WirteLog() +{ + CString str1 = "[WorkCmd]["+m_Motor.Name()+"][ػеԭ]"; + gLogMgr->WriteDebugLog(str1); +} +void CWorkCmdMotorToMachineOrigin::SetPar(bool b) +{ + m_bSaveOffsetDis = b; +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdMotorToMachineOrigin.h b/LaiPuLaser/WorkCmdMotorToMachineOrigin.h new file mode 100644 index 0000000..4248508 --- /dev/null +++ b/LaiPuLaser/WorkCmdMotorToMachineOrigin.h @@ -0,0 +1,18 @@ +#pragma once +#include "workcmd.h" +#include "Motor.h" + +//λԭ +class CWorkCmdMotorToMachineOrigin :public CWorkCmd +{ +public: + CWorkCmdMotorToMachineOrigin(CMotor &m); + ~CWorkCmdMotorToMachineOrigin(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetPar(bool b); +private: + CMotor &m_Motor; + bool m_bSaveOffsetDis;//Ƿ¼ƫƾ +}; + diff --git a/LaiPuLaser/WorkCmdMotorToOffsetPos.cpp b/LaiPuLaser/WorkCmdMotorToOffsetPos.cpp new file mode 100644 index 0000000..d91fbda --- /dev/null +++ b/LaiPuLaser/WorkCmdMotorToOffsetPos.cpp @@ -0,0 +1,32 @@ +#include "StdAfx.h" +#include "WorkCmdMotorToOffsetPos.h" +#include "MotionCard_PCI1245.h" + + +CWorkCmdMotorToOffsetPos::CWorkCmdMotorToOffsetPos(CMotor &m) +:m_Motor(m) +{ + m_AdjustVal = 0;//(Z ) +} +CWorkCmdMotorToOffsetPos::~CWorkCmdMotorToOffsetPos(void) +{ +} +bool CWorkCmdMotorToOffsetPos::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + if(gMotionCard_PCI1245->IsbUsed()) + { + double OffsetDis = m_Motor.GetOriginOffsetDis(); + m_Motor.MoveDis(OffsetDis); + } + return true; +} +void CWorkCmdMotorToOffsetPos::WirteLog() +{ + CString str1 = "[WorkCmd]["+m_Motor.Name()+"][ƶָλ]"; + gLogMgr->WriteDebugLog(str1); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdMotorToOffsetPos.h b/LaiPuLaser/WorkCmdMotorToOffsetPos.h new file mode 100644 index 0000000..c7fefa3 --- /dev/null +++ b/LaiPuLaser/WorkCmdMotorToOffsetPos.h @@ -0,0 +1,18 @@ +#pragma once +#include "workcmd.h" +#include "Motor.h" + +//ƶԭƫλ +class CWorkCmdMotorToOffsetPos :public CWorkCmd +{ +public: + CWorkCmdMotorToOffsetPos(CMotor &m); + ~CWorkCmdMotorToOffsetPos(void); + virtual bool Excute(); + virtual void WirteLog(); + void setAdjustVal(double val){m_AdjustVal = val;}; +private: + CMotor &m_Motor; + double m_AdjustVal;//(Z ) +}; + diff --git a/LaiPuLaser/WorkCmdMoveMotor.cpp b/LaiPuLaser/WorkCmdMoveMotor.cpp new file mode 100644 index 0000000..fee7c55 --- /dev/null +++ b/LaiPuLaser/WorkCmdMoveMotor.cpp @@ -0,0 +1,35 @@ +#include "StdAfx.h" +#include "WorkCmdMoveMotor.h" +#include "MotionCard_PCI1245.h" + + +CWorkCmdMoveMotor::CWorkCmdMoveMotor(CMotor &Motor,double val) + :m_Motor(Motor),m_Val(val) +{ + m_bMoveByDis = true;//Ĭϰƶ +} +CWorkCmdMoveMotor::~CWorkCmdMoveMotor(void) +{ +} +bool CWorkCmdMoveMotor::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + + if(m_bMoveByDis)//ƶ + { + double Coord = gMotionCard_PCI1245->GetMotorCoord(m_Motor); + m_Motor.MoveToCoord(Coord+m_Val); + } + else//ƶijֵ + m_Motor.MoveToCoord(m_Val); + + return true; +} +void CWorkCmdMoveMotor::WirteLog() +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdMoveMotor.h b/LaiPuLaser/WorkCmdMoveMotor.h new file mode 100644 index 0000000..02980ed --- /dev/null +++ b/LaiPuLaser/WorkCmdMoveMotor.h @@ -0,0 +1,21 @@ +#pragma once +#include "workcmd.h" +#include "Motor.h" + + + +//ƶ +class CWorkCmdMoveMotor :public CWorkCmd +{ +public: + CWorkCmdMoveMotor(CMotor &Motor,double val); + virtual ~CWorkCmdMoveMotor(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetMoveFlg(bool b){m_bMoveByDis = b;}; +private: + CMotor &m_Motor; + bool m_bMoveByDis;//ƶƶijֵ + double m_Val; +}; + diff --git a/LaiPuLaser/WorkCmdMovePlatformXY.cpp b/LaiPuLaser/WorkCmdMovePlatformXY.cpp new file mode 100644 index 0000000..e50d1c7 --- /dev/null +++ b/LaiPuLaser/WorkCmdMovePlatformXY.cpp @@ -0,0 +1,96 @@ +#include "StdAfx.h" +#include "WorkCmdMovePlatformXY.h" +#include "ExceptionMsg.h" +#include "DeviceState.h" +#include "ClientMgr.h" +CWorkCmdMovePlatformXY::CWorkCmdMovePlatformXY() +{ + m_bMoveByDir = false;//Ƿͨƶƽ̨ + m_bMoveByPulse = false;//Ƿͨƶƽ̨ + m_MoveDis = 0;//ƶ + m_Work = false;//Ƿڹ(false ʾ),ҪǵٶȲһ + m_MoveOrder = 0; + m_bCheckIniState = false;//Ƿʼ״̬ +} +CWorkCmdMovePlatformXY::~CWorkCmdMovePlatformXY(void) +{ +} +//ƽ̨ƶָ +bool CWorkCmdMovePlatformXY::Excute() +{ + if(gLogMgr->IsDebuging())//״̬ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + } + if (!gClientMgr->CheckServerDoneCmd()) + { + AfxMessageBox("ִָʱ."); + return false; + } + + CPlatformXY &PlatformXY = *gPlatformXY; + if(m_bMoveByDir)//ƶ + { + PlatformXY.MoveDistance(m_MoveDis,m_MoveDir); + } + else if(m_bMoveByPulse)//ƶ + { + PlatformXY.MovePulseCnt(m_PulseCnt,m_MoveDir); + } + else//㵽ƶ + { + if(m_bCheckIniState) + { + CDeviceState &DeviceState = CDeviceState::GetInstance(); + if(!DeviceState.IsDeviceIni()) + { + CString str = _T("쳣ƽ̨δʼ!"); + CExceptionMsg Msg; + Msg.SetMsg(str); + throw Msg; + } + } + PlatformXY.SetMoveOrder(m_MoveOrder); + PlatformXY.Move(m_Work,m_MovePt,m_TargetPt); + } + SetAfterDelay(PlatformXY.GetMoveDelay()); + return true; +} +void CWorkCmdMovePlatformXY::WirteLog() +{ + if(m_bMoveByDir) + { + gLogMgr->WriteDebugLog(_T("[WorkCmd][ƽ̨ƶ] "),_T("mm"),m_MoveDis); + } + else if(m_bMoveByPulse) + { + gLogMgr->WriteDebugLog(_T("[WorkCmd][ƽ̨ƶ] "),_T(""),m_PulseCnt); + } + else + { + gLogMgr->WriteDebugLog(_T("[WorkCmd][MovePlatformXY] "),_T("MovePt.x"),_T("MovePt.y"),m_MovePt.x,m_MovePt.y); + gLogMgr->WriteDebugLog(_T("[WorkCmd][MovePlatformXY] "),_T("m_TargetPt.x"),_T("m_TargetPt.y"),m_TargetPt.x,m_TargetPt.y); + } +} +/*MovePt ƽ̨ӳʵ, +TargetPt ǽMovePt ƶTargetPt λ +*/ +void CWorkCmdMovePlatformXY::MoveToTargetPt(Dbxy MovePt,Dbxy TargetPt) +{ + m_MovePt = MovePt; + m_TargetPt = TargetPt; +} +//ƶͷַʽƶ +void CWorkCmdMovePlatformXY::MoveByDis(double MoveDis,DIRECTION MoveDir) +{ + m_bMoveByDir = true; + m_MoveDis = MoveDis; + m_MoveDir = MoveDir; +} +//ƶ +void CWorkCmdMovePlatformXY::MoveByPulseCnt(int PulseCnt,DIRECTION MoveDir) +{ + m_bMoveByPulse = true; + m_PulseCnt = PulseCnt; + m_MoveDir = MoveDir; +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdMovePlatformXY.h b/LaiPuLaser/WorkCmdMovePlatformXY.h new file mode 100644 index 0000000..32f0a41 --- /dev/null +++ b/LaiPuLaser/WorkCmdMovePlatformXY.h @@ -0,0 +1,37 @@ +#pragma once +#include "workcmd.h" +#include "PlatformXY.h" +#include "EnumDirection.h" + +//ƶXY ƽ̨ +class CWorkCmdMovePlatformXY :public CWorkCmd +{ +public: + CWorkCmdMovePlatformXY(); + virtual ~CWorkCmdMovePlatformXY(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetMoveOrder(int n){m_MoveOrder = n;}; + void MoveToTargetPt(Dbxy MovePt,Dbxy TargetPt); + void MoveByDis(double MoveDis,DIRECTION MoveDir); + void MoveByPulseCnt(int PulseCnt,DIRECTION MoveDir); + void InWorkState(bool b = true){m_Work = b;};//ǰڹ״̬ + void NotCheckIniState(){m_bCheckIniState = false;}; +private: + bool m_Work;//Ƿڹ(false ʾ),ҪǵٶȲһ + //Եƶʽ + Dbxy m_MovePt;//ƽ̨۵(PLATFORM_COORD) + Dbxy m_TargetPt;//۵ƶĿ(PLATFORM_COORD) + int m_MoveOrder;//ƶ˳ 0:Ⱦ(Ĭ) 1:X ƶ 2:Y ƶ (ҪΪ˱е豸ײƽ̨) + //ͷƶʽ + bool m_bMoveByDir;//Ƿͨƶƽ̨ + double m_MoveDis;//ƶ + DIRECTION m_MoveDir;//ƶ + + //ƶ + bool m_bMoveByPulse;//Ƿͨƶƽ̨ + int m_PulseCnt; + + bool m_bCheckIniState;//Ƿʼ״̬ +}; + diff --git a/LaiPuLaser/WorkCmdMsg.cpp b/LaiPuLaser/WorkCmdMsg.cpp new file mode 100644 index 0000000..708e191 --- /dev/null +++ b/LaiPuLaser/WorkCmdMsg.cpp @@ -0,0 +1,24 @@ +#include "StdAfx.h" +#include "WorkCmdMsg.h" +#include "LogMgr.h" +#include "MsgBox.h" + +CWorkCmdMsg::CWorkCmdMsg(CString s) +:m_msg(s) +{ +} +CWorkCmdMsg::~CWorkCmdMsg(void) +{ +} +bool CWorkCmdMsg::Excute() +{ + CMsgBox MsgBox; + MsgBox.Show(m_msg); + return true; +} +void CWorkCmdMsg::WirteLog() +{ + CString str = "[WorkCmd]"; + str += m_msg; + gLogMgr->WriteDebugLog(str); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdMsg.h b/LaiPuLaser/WorkCmdMsg.h new file mode 100644 index 0000000..f2b70ca --- /dev/null +++ b/LaiPuLaser/WorkCmdMsg.h @@ -0,0 +1,15 @@ +#pragma once +#include "workcmd.h" + +//Ϣʾָ +class CWorkCmdMsg :public CWorkCmd +{ +public: + CWorkCmdMsg(CString s); + ~CWorkCmdMsg(void); + virtual bool Excute(); + virtual void WirteLog(); +private: + CString m_msg;//ʾ +}; + diff --git a/LaiPuLaser/WorkCmdPciPortCheck.cpp b/LaiPuLaser/WorkCmdPciPortCheck.cpp new file mode 100644 index 0000000..c95155c --- /dev/null +++ b/LaiPuLaser/WorkCmdPciPortCheck.cpp @@ -0,0 +1,65 @@ +#include "StdAfx.h" +#include "WorkCmdPciPortCheck.h" +#include "ExceptionMsg.h" +#include "LogMgr.h" +#include "PciPortMgr.h" +#include "PciCh365Mgr.h" + + +#define PER_CHECK_DELAY 50 //ÿʱһ(ms) + +CWorkCmdPciPortCheck::CWorkCmdPciPortCheck(CString &CtrlContent,bool NeedState) +:m_CtrlContent(CtrlContent),m_NeedState(NeedState) +{ + m_MaxCheckDelay = 0; +} +CWorkCmdPciPortCheck::~CWorkCmdPciPortCheck(void) +{ +} +//ָpci ˿,Ҫ״̬׳쳣 +bool CWorkCmdPciPortCheck::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + //Sleep(gLogMgr->GetDebugCmdDelay()); + //return true; + } + bool ret; + if(m_MaxCheckDelay>0)// + { + int CurDelay = 0;//ǰʱʱ + while(CurDelayWriteDebugLog(str); +} + +bool CWorkCmdPciPortCheck::ReadPortState() +{ + bool ret; + ret = gPciCh365Mgr->ReadPortState(gPciPortMgr->GetCtrlPort(m_CtrlContent)); + return ret; +} diff --git a/LaiPuLaser/WorkCmdPciPortCheck.h b/LaiPuLaser/WorkCmdPciPortCheck.h new file mode 100644 index 0000000..b563031 --- /dev/null +++ b/LaiPuLaser/WorkCmdPciPortCheck.h @@ -0,0 +1,21 @@ +#pragma once +#include "workcmd.h" + +//pci ˿״̬ +class CWorkCmdPciPortCheck :public CWorkCmd +{ +public: + CWorkCmdPciPortCheck(CString &CtrlContent,bool NeedState); + ~CWorkCmdPciPortCheck(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetMaxCheckDelay(int t){m_MaxCheckDelay = t;}; +private: + bool ReadPortState(); +private: + CString m_CtrlContent;//Ƶ + bool m_NeedState;//Ҫ˿ǿǹ + int m_MaxCheckDelay;//ʱ,ʾʱڷ,ֱҪΪֹ + //0ʾֱӼ +}; + diff --git a/LaiPuLaser/WorkCmdPciPortSwitch.cpp b/LaiPuLaser/WorkCmdPciPortSwitch.cpp new file mode 100644 index 0000000..bc23fcf --- /dev/null +++ b/LaiPuLaser/WorkCmdPciPortSwitch.cpp @@ -0,0 +1,57 @@ +#include "StdAfx.h" +#include "WorkCmdPciPortSwitch.h" +#include "LogMgr.h" +#include "PciPortMgr.h" +#include "PciCh365Mgr.h" +#include "Laser.h" + +CWorkCmdPciPortSwitch::CWorkCmdPciPortSwitch(CString CtrlContent,bool bOpen) +:m_CtrlContent(CtrlContent),m_bOpen(bOpen) +{ +} +CWorkCmdPciPortSwitch::~CWorkCmdPciPortSwitch(void) +{ +} +void CWorkCmdPciPortSwitch::SetPar(CString CtrlContent,bool b) +{ + m_CtrlContent = CtrlContent; + m_bOpen = b; +} +bool CWorkCmdPciPortSwitch::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + + //laipu pci + gPciCh365Mgr->WritePortState(gPciPortMgr->GetCtrlPort(m_CtrlContent),m_bOpen); + + // + if(PCI_PORT_LASER == m_CtrlContent) + { + if(m_bOpen) + { + gLaser->OnOpen(); + } + else + { + gLaser->OnClose(); + } + } + return true; +} +void CWorkCmdPciPortSwitch::WirteLog() +{ + CString str = "[WorkCmd]"; + if(m_bOpen) + { + str += "["+m_CtrlContent+"]"; + } + else + { + str += "["+m_CtrlContent+"]"; + } + gLogMgr->WriteDebugLog(str); +} diff --git a/LaiPuLaser/WorkCmdPciPortSwitch.h b/LaiPuLaser/WorkCmdPciPortSwitch.h new file mode 100644 index 0000000..60f6803 --- /dev/null +++ b/LaiPuLaser/WorkCmdPciPortSwitch.h @@ -0,0 +1,17 @@ +#pragma once +#include "workcmd.h" + +//pci ˿ڵĿָ +class CWorkCmdPciPortSwitch :public CWorkCmd +{ +public: + CWorkCmdPciPortSwitch(CString CtrlContent,bool bOpen); + ~CWorkCmdPciPortSwitch(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetPar(CString CtrlContent,bool b); +private: + bool m_bOpen;//򿪻߹ر + CString m_CtrlContent;//Ƶ +}; + diff --git a/LaiPuLaser/WorkCmdResetAllMotorErr.cpp b/LaiPuLaser/WorkCmdResetAllMotorErr.cpp new file mode 100644 index 0000000..d33fab0 --- /dev/null +++ b/LaiPuLaser/WorkCmdResetAllMotorErr.cpp @@ -0,0 +1,32 @@ +#include "StdAfx.h" +#include "WorkCmdResetAllMotorErr.h" +#include "MotionCard_PCI1245.h" +#include "GlobalFunction.h" + +CWorkCmdResetAllMotorErr::CWorkCmdResetAllMotorErr() +{ + +} +CWorkCmdResetAllMotorErr::~CWorkCmdResetAllMotorErr(void) +{ +} + + +bool CWorkCmdResetAllMotorErr::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + Sleep(500); + GetFrame()->m_DlgPlatformCtrl.ResetAllMotorErr(); + //ȴִн + Sleep(500); + return true; +} + +void CWorkCmdResetAllMotorErr::WirteLog() +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdResetAllMotorErr.h b/LaiPuLaser/WorkCmdResetAllMotorErr.h new file mode 100644 index 0000000..b4d1df4 --- /dev/null +++ b/LaiPuLaser/WorkCmdResetAllMotorErr.h @@ -0,0 +1,14 @@ +#pragma once +#include "workcmd.h" + +class CWorkCmdResetAllMotorErr :public CWorkCmd +{ +public: + CWorkCmdResetAllMotorErr(); + ~CWorkCmdResetAllMotorErr(void); + virtual bool Excute(); + virtual void WirteLog(); +private: + +}; + diff --git a/LaiPuLaser/WorkCmdSetMotorSpeed.cpp b/LaiPuLaser/WorkCmdSetMotorSpeed.cpp new file mode 100644 index 0000000..47f8bdf --- /dev/null +++ b/LaiPuLaser/WorkCmdSetMotorSpeed.cpp @@ -0,0 +1,54 @@ +#include "StdAfx.h" +#include "WorkCmdSetMotorSpeed.h" +#include "GlobalFunction.h" +#include "Motor.h" + +CWorkCmdSetMotorSpeed::CWorkCmdSetMotorSpeed() +{ + m_bSetMotorX = false;// + m_bSetMotorX2 = false;// + m_bSetMotorY = false;// + m_bSetMotorZ = false;// +} +CWorkCmdSetMotorSpeed::~CWorkCmdSetMotorSpeed(void) +{ +} +bool CWorkCmdSetMotorSpeed::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + + if(m_bSetMotorX) + { + CMotor &Motor = *(CMotor::GetMotor(MOTOR_X)); + gMotionCard_PCI1245->SetMotorSpeed(Motor,m_SpeedType); + } + if(m_bSetMotorX2) + { + CMotor &Motor = *(CMotor::GetMotor(MOTOR_X2)); + gMotionCard_PCI1245->SetMotorSpeed(Motor,m_SpeedType); + } + if(m_bSetMotorY) + { + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Y)); + gMotionCard_PCI1245->SetMotorSpeed(Motor,m_SpeedType); + } + if(m_bSetMotorZ) + { + CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z)); + gMotionCard_PCI1245->SetMotorSpeed(Motor,m_SpeedType); + } + + + + return true; +} + +void CWorkCmdSetMotorSpeed::WirteLog() +{ + CString str1 = "[WorkCmd][MotorSpeed]"; + gLogMgr->WriteDebugLog(str1); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdSetMotorSpeed.h b/LaiPuLaser/WorkCmdSetMotorSpeed.h new file mode 100644 index 0000000..84e4f6b --- /dev/null +++ b/LaiPuLaser/WorkCmdSetMotorSpeed.h @@ -0,0 +1,24 @@ +#pragma once +#include "workcmd.h" +#include "MotionCard_PCI1245.h" + +class CWorkCmdSetMotorSpeed :public CWorkCmd +{ +public: + CWorkCmdSetMotorSpeed(); + ~CWorkCmdSetMotorSpeed(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetSpeedType(ESpeedType t){m_SpeedType = t;}; + void SetbSetMotorX(){m_bSetMotorX = true;}; + void SetbSetMotorX2(){m_bSetMotorX2 = true;}; + void SetbSetMotorY(){m_bSetMotorY = true;}; + void SetbSetMotorZ(){m_bSetMotorZ = true;}; +private: + ESpeedType m_SpeedType;//ٶȵ + bool m_bSetMotorX;// + bool m_bSetMotorX2;// + bool m_bSetMotorY;// + bool m_bSetMotorZ;// +}; + diff --git a/LaiPuLaser/WorkCmdWaitMotorStop.cpp b/LaiPuLaser/WorkCmdWaitMotorStop.cpp new file mode 100644 index 0000000..276553a --- /dev/null +++ b/LaiPuLaser/WorkCmdWaitMotorStop.cpp @@ -0,0 +1,129 @@ +#include "StdAfx.h" +#include "WorkCmdWaitMotorStop.h" +#include "MotionCard_PCI1245.h" +#include "GlobalFunction.h" +#include "PlatformXY.h" +#include "DeviceState.h" +#include "Program_SZ_XL.h" +#include "ExceptionMsg.h" + +CWorkCmdWaitMotorStop::CWorkCmdWaitMotorStop() +{ + m_bWaitMotorX = false;//Ƿ˶ֹͣ + m_bWaitMotorX2 = false;// + m_bWaitMotorY = false;// + m_bWaitMotorZ = false;// + m_bCheckActCoord = false;//Ƿʵʹդߵ +} +CWorkCmdWaitMotorStop::~CWorkCmdWaitMotorStop(void) +{ +} +bool CWorkCmdWaitMotorStop::Excute() +{ + if(gLogMgr->IsDebuging())//״ֻ̬ʱ + { + Sleep(gLogMgr->GetDebugCmdDelay()); + return true; + } + + Sleep(300); + + bool bMotorXMoveStop = true;//Ƿ˶ֹͣ + bool bMotorX2MoveStop = true; + bool bMotorYMoveStop = true; + bool bMotorZMoveStop = true; + + while(1) + { + if(m_bWaitMotorX) + { + bMotorXMoveStop = gMotionCard_PCI1245->IsbMotorXMoveStop(); + } + if(m_bWaitMotorX2) + { + bMotorX2MoveStop = gMotionCard_PCI1245->IsbMotorX2MoveStop(); + } + if(m_bWaitMotorY) + { + bMotorYMoveStop = gMotionCard_PCI1245->IsbMotorYMoveStop(); + } + if(m_bWaitMotorZ) + { + bMotorZMoveStop = gMotionCard_PCI1245->IsbMotorZMoveStop(); + } + //ȫʱ˳ + if(bMotorXMoveStop && bMotorX2MoveStop && bMotorYMoveStop && bMotorZMoveStop) + break; + Sleep(100); + } + + + //µ + if(m_bWaitMotorX) + { + CMotor &MotorX = *(CMotor::GetMotor(MOTOR_X)); + MotorX.SetCoord(gMotionCard_PCI1245->GetMotorCoord(MotorX)); + } + if(m_bWaitMotorX2) + { + CMotor &MotorX2 = *(CMotor::GetMotor(MOTOR_X2)); + MotorX2.SetCoord(gMotionCard_PCI1245->GetMotorCoord(MotorX2)); + } + if(m_bWaitMotorY) + { + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + MotorY.SetCoord(gMotionCard_PCI1245->GetMotorCoord(MotorY)); + } + if(m_bWaitMotorZ) + { + CMotor &MotorZ = *(CMotor::GetMotor(MOTOR_Z)); + MotorZ.SetCoord(gMotionCard_PCI1245->GetMotorCoord(MotorZ)); + } + + CPlatformXY &PlatformXY = *gPlatformXY; + PlatformXY.NotifyObservers(); + + Sleep(300); + #if 1 + if(gMotionCard_PCI1245->m_bCheckActCoord)//դǷƥ + { + bool bRet = true; + if(m_bWaitMotorX) + { + CMotor &MotorX = *(CMotor::GetMotor(MOTOR_X)); + bRet = gMotionCard_PCI1245->CheckMotorActCoord(MotorX); + } + if(m_bWaitMotorX2) + { + CMotor &MotorX2 = *(CMotor::GetMotor(MOTOR_X2)); + bRet = gMotionCard_PCI1245->CheckMotorActCoord(MotorX2); + } + if(m_bWaitMotorY) + { + CMotor &MotorY = *(CMotor::GetMotor(MOTOR_Y)); + bRet = gMotionCard_PCI1245->CheckMotorActCoord(MotorY); + } + if(!bRet) + { + //ֹͣӹ + gProgram_SZ_XL->StopAutoWork(); + //ȡʼ״̬ + CDeviceState &DeviceState = CDeviceState::GetInstance(); + DeviceState.SetIniState(false); + + CString str = _T("դ귴쳣!"); + AfxMessageBox(str); + // CExceptionMsg Msg; + //Msg.SetMsg(str); + //throw Msg; + } + } + #endif + return true; +} + +void CWorkCmdWaitMotorStop::WirteLog() +{ + CString str1 = "[WorkCmd][WaitMotorStop]"; + gLogMgr->WriteDebugLog(str1); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdWaitMotorStop.h b/LaiPuLaser/WorkCmdWaitMotorStop.h new file mode 100644 index 0000000..7a930d5 --- /dev/null +++ b/LaiPuLaser/WorkCmdWaitMotorStop.h @@ -0,0 +1,24 @@ +#pragma once +#include "workcmd.h" + +//ȴƶ +class CWorkCmdWaitMotorStop :public CWorkCmd +{ +public: + CWorkCmdWaitMotorStop(); + ~CWorkCmdWaitMotorStop(void); + virtual bool Excute(); + virtual void WirteLog(); + void SetbWaitMotorX(){m_bWaitMotorX = true;}; + void SetbWaitMotorX2(){m_bWaitMotorX2 = true;}; + void SetbWaitMotorY(){m_bWaitMotorY = true;}; + void SetbWaitMotorZ(){m_bWaitMotorZ = true;}; + void SetbCheckActCoord(){m_bCheckActCoord = true;}; +private: + bool m_bWaitMotorX;//Ƿ˶ֹͣ + bool m_bWaitMotorX2;// + bool m_bWaitMotorY;// + bool m_bWaitMotorZ;// + bool m_bCheckActCoord;//Ƿʵʹդߵ +}; + diff --git a/LaiPuLaser/WorkCmdWorkEnd.cpp b/LaiPuLaser/WorkCmdWorkEnd.cpp new file mode 100644 index 0000000..ca0d923 --- /dev/null +++ b/LaiPuLaser/WorkCmdWorkEnd.cpp @@ -0,0 +1,23 @@ +#include "StdAfx.h" +#include "WorkCmdWorkEnd.h" +#include "LogMgr.h" +#include "WorkCmdInvoker.h" +#include "ModuleDeviceMgr.h" + +CWorkCmdWorkEnd::CWorkCmdWorkEnd() +{ +} +CWorkCmdWorkEnd::~CWorkCmdWorkEnd(void) +{ +} +bool CWorkCmdWorkEnd::Excute() +{ + gModuleDeviceMgr.OnWorkEnd(); + return true; +} +void CWorkCmdWorkEnd::WirteLog() +{ + CString str = "[WorkCmd]"; + str += _T("CWorkCmdWorkEnd"); + gLogMgr->WriteDebugLog(str); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdWorkEnd.h b/LaiPuLaser/WorkCmdWorkEnd.h new file mode 100644 index 0000000..68ca6fe --- /dev/null +++ b/LaiPuLaser/WorkCmdWorkEnd.h @@ -0,0 +1,13 @@ +#pragma once +#include "workcmd.h" + +//ӹ֮һЩ +class CWorkCmdWorkEnd :public CWorkCmd +{ +public: + CWorkCmdWorkEnd(); + ~CWorkCmdWorkEnd(void); + virtual bool Excute(); + virtual void WirteLog(); +}; + diff --git a/LaiPuLaser/WorkCmdWorkStart.cpp b/LaiPuLaser/WorkCmdWorkStart.cpp new file mode 100644 index 0000000..6a44523 --- /dev/null +++ b/LaiPuLaser/WorkCmdWorkStart.cpp @@ -0,0 +1,24 @@ +#include "StdAfx.h" +#include "WorkCmdWorkStart.h" +#include "LogMgr.h" +#include "WorkCmdInvoker.h" +#include "ModuleDeviceMgr.h" + + +CWorkCmdWorkStart::CWorkCmdWorkStart() +{ +} +CWorkCmdWorkStart::~CWorkCmdWorkStart(void) +{ +} +bool CWorkCmdWorkStart::Excute() +{ + gModuleDeviceMgr.OnWorkStart(); + return true; +} +void CWorkCmdWorkStart::WirteLog() +{ + CString str = "[WorkCmd]"; + str += _T("CWorkCmdWorkStart"); + gLogMgr->WriteDebugLog(str); +} \ No newline at end of file diff --git a/LaiPuLaser/WorkCmdWorkStart.h b/LaiPuLaser/WorkCmdWorkStart.h new file mode 100644 index 0000000..03a7589 --- /dev/null +++ b/LaiPuLaser/WorkCmdWorkStart.h @@ -0,0 +1,13 @@ +#pragma once +#include "workcmd.h" + +//ʼӹ֮ǰһЩ +class CWorkCmdWorkStart :public CWorkCmd +{ +public: + CWorkCmdWorkStart(); + ~CWorkCmdWorkStart(void); + virtual bool Excute(); + virtual void WirteLog(); +}; + diff --git a/LaiPuLaser/WorkData.cpp b/LaiPuLaser/WorkData.cpp new file mode 100644 index 0000000..a94178e --- /dev/null +++ b/LaiPuLaser/WorkData.cpp @@ -0,0 +1,26 @@ +#include "StdAfx.h" +#include "WorkData.h" + + +CWorkData::CWorkData(void) +{ +} +CWorkData::~CWorkData(void) +{ +} +//BasePt Ϊĵת +void CWorkData::ConvertData(Dbxy Offset) +{ + vector>::iterator iter = m_vec.begin(); + vector>::iterator iter_end = m_vec.end(); + for(;iter!=iter_end;iter++) + { + vector::iterator iter1 = (*iter).begin(); + vector::iterator iter1_end = (*iter).end(); + for(;iter1!=iter1_end;iter1++) + { + (*iter1).x += Offset.x; + (*iter1).y += Offset.y; + } + } +} \ No newline at end of file diff --git a/LaiPuLaser/WorkData.h b/LaiPuLaser/WorkData.h new file mode 100644 index 0000000..1f0e52a --- /dev/null +++ b/LaiPuLaser/WorkData.h @@ -0,0 +1,19 @@ +#pragma once +#include "GlobalDefine.h" + + +//ʹõĹ +class CWorkData +{ +public: + CWorkData(void); + ~CWorkData(void); + vector> &GetDataVec(){return m_vec;}; + void Clear(){m_vec.clear();}; + bool Empty(){return m_vec.empty();}; + void ConvertData(Dbxy BasePt); + void Resize(int size){m_vec.resize(size);}; +private: + vector> m_vec;//߶εķʽ(ÿvector һ߶) +}; + diff --git a/LaiPuLaser/WorkDataMgr.cpp b/LaiPuLaser/WorkDataMgr.cpp new file mode 100644 index 0000000..67a86ae --- /dev/null +++ b/LaiPuLaser/WorkDataMgr.cpp @@ -0,0 +1,55 @@ +#include "StdAfx.h" +#include "WorkDataMgr.h" +#include "GlobalFunction.h" +#include "MsgBox.h" +#include "GlobalDrawMgr.h" + + +CWorkDataMgr *gWorkDataMgr = new CWorkDataMgr; +CWorkDataMgr::CWorkDataMgr(void) +{ + m_bDrawRealWorkData = false;//Ƿʵ +} +CWorkDataMgr::~CWorkDataMgr(void) +{ +} +//ȡlayer еobj ݵvec +//ľ߼ԭ +bool CWorkDataMgr::GetAllWorkData(vector> &vec) +{ + //ȡǰlayer еobj + CLayer &layer = GetLayerInstance(); + layer.GetObjContainer().GetObjPtData(vec,false); + + if(vec.empty()) + { + CMsgBox MsgBox; + MsgBox.Show("޹ݣ",true); + return false; + } + return true; +} +//ʵ +bool CWorkDataMgr::DrawRealWorkData(CDC* pDC) +{ + if(!m_bDrawRealWorkData) + return false; + + vector> vec; + if(GetAllWorkData(vec)== false) + return false; + + CPen *pOldPen; + CPen &Pen = gDraw->GetObjectPen(); + pOldPen = pDC->SelectObject(&Pen); + Dbxy Offset; + gDraw->DrawDbxyVec(pDC,vec,Offset); + pDC->SelectObject(pOldPen); + + return true; +} +//layer еobj תΪӲ +void CWorkDataMgr::CollectWorkData() +{ + +} \ No newline at end of file diff --git a/LaiPuLaser/WorkDataMgr.h b/LaiPuLaser/WorkDataMgr.h new file mode 100644 index 0000000..cf75360 --- /dev/null +++ b/LaiPuLaser/WorkDataMgr.h @@ -0,0 +1,23 @@ +#pragma once +#include "GlobalDefine.h" +#include "WorkData.h" + + +//ݹ() +class CWorkDataMgr +{ +public: + CWorkDataMgr(void); + ~CWorkDataMgr(void); + static CWorkDataMgr& GetInstance(){return m_Instance;}; + + void CollectWorkData(); + bool GetAllWorkData(vector> &vec); + void SetDrawRealWorkData(bool b){m_bDrawRealWorkData = b;}; + bool DrawRealWorkData(CDC* pDC); +private: + static CWorkDataMgr m_Instance; + bool m_bDrawRealWorkData;//Ƿʵ + CWorkData m_WorkData;//浱ǰĹ +}; +extern CWorkDataMgr *gWorkDataMgr; \ No newline at end of file diff --git a/LaiPuLaser/WorkFileLable.h b/LaiPuLaser/WorkFileLable.h new file mode 100644 index 0000000..f5c8ab6 --- /dev/null +++ b/LaiPuLaser/WorkFileLable.h @@ -0,0 +1,148 @@ +#pragma once + +//дļıǩĿдmak ļʱɾҲӰ֮ǰmak ļ + + +//¼ͱں棬ǰĵܶȡ +enum LAB_TYPE +{ + LAB_NULL = 0,//ҲԲָκαǩģԼ + LAB_MODULE_START,//ģ鿪ʼ,ģֵ + LAB_MODULE_END,//ģ + LAB_MODULE_TYPE,//ģ + //ģݵıǩ----------------------------------- + LAB_TEMPLATE_START,//ģ忪ʼ + LAB_TEMPLATE_END,//ģ + LAB_OBJ_START,//ʼ + LAB_OBJ_END,// + LAB_OBJ_TYPE,//obj + LAB_PEN_NUM,//obj ıʺ + LAB_POINT_START,//obj ݵ㿪ʼ + LAB_POINT_END,//obj ݵ + LAB_POINT_X,//ݵX + LAB_POINT_Y,//ݵY + LAB_POINT_IS_NODE,//ݵǷΪڵ + LAB_SIZE_W,//ߴ + LAB_SIZE_H,//ߴ߶ + LAB_MARK_PAR_START,//񾵲 + LAB_MARK_PAR_END,//񾵲 + LAB_MARK_AREA_START,// + LAB_MARK_AREA_END,// + LAB_PRODUCT_START,//Ʒ + LAB_PRODUCT_END,//Ʒ + LAB_OBJ_IS_CIRCLE,//ԭǷΪԲ + LAB_CIRCLE_R,//Բ뾶 + LAB_CIRCLE_D,//Բֱ + LAB_CIRCLE_EDGE_CNT,//Բ + //ʿ˻豸----------------------------------------------- + LAB_TH_START,//˻ + LAB_TH_END,//˻ + LAB_TH_SCAN_OVERLAP,//ɨص + LAB_TH_SCAN_LINE_START,//ɨSTART + LAB_TH_SCAN_LINE_END,//ɨEND + LAB_TH_SCAN_LINE_SPT_X,//ʼX + LAB_TH_SCAN_LINE_SPT_Y,//ʼY + LAB_TH_SCAN_LINE_EPT_X,//X + LAB_TH_SCAN_LINE_EPT_Y,//Y + LAB_TH_SCAN_LINE_SPOT_DIA,//ֱ + LAB_TH_SCAN_LINE_BSCAN,//Ƿɨ + LAB_TH_M_PT_START,//START + LAB_TH_M_PT_END,//END + LAB_TH_M_PT_X,//X + LAB_TH_M_PT_Y,//Y + LAB_TH_M_PT_TMP,//¶ + LAB_TH_M_PT_POWER,// + LAB_TH_M_PT_OBJ_IDX,//OBJ ֵ + LAB_TH_LOT_ID,//lot ID + LAB_TH_WAFER_ID,//ԲID + LAB_TH_LASER_808_V,//808 ĵѹ + //ɿCO2 豸-------------------------------------------------------- + LAB_UPK_PRODUCT_THICKNESS,//Ʒ + LAB_UPK_PRODUCT_DIA,//Ʒֱ + LAB_UPK_HOLE_WIDTH,//׿ + LAB_UPK_HOLE_DIA,//ֱ + LAB_UPK_LASER_POWER,//⹦ + + LAB_ADJUST_OFFSET_X, + LAB_ADJUST_OFFSET_Y, + LAB_ADJUST_SIZE_X, + LAB_ADJUST_SIZE_Y, + LAB_ROTATO_ADJUST, + + LAB_ONE_OBJ_CUT_TIMES,//и + LAB_SPECIAL_ONE_OBJ_CUT_TIMES,//ⵥи + LAB_ONE_AREA_CUT_TIMES,//ѭи + LAB_ONE_CUT_SPEED,//иٶ + + LAB_OBJ_RECT_OFFSET_X,//ζƫX + LAB_OBJ_RECT_OFFSET_Y,//ζƫY + LAB_OBJ_IS_OFFSET_RECT, +}; + +//дɿɶtxt ļҪ +inline CString GetLabTypeStr(LAB_TYPE type) +{ + CString str; + switch(type) + { + case LAB_MODULE_START: + str = "LAB_MODULE_START"; + break; + case LAB_MODULE_END: + str = "LAB_MODULE_END"; + break; + case LAB_TEMPLATE_START: + str = "LAB_TEMPLATE_START"; + break; + case LAB_TEMPLATE_END: + str = "LAB_TEMPLATE_END"; + break; + case LAB_MARK_PAR_START: + str = "LAB_MARK_PAR_START"; + break; + case LAB_MARK_PAR_END: + str = "LAB_MARK_PAR_END"; + break; + case LAB_MARK_AREA_START: + str = "LAB_MARK_AREA_START"; + break; + case LAB_MARK_AREA_END: + str = "LAB_MARK_AREA_END"; + break; + case LAB_OBJ_START: + str = "LAB_OBJ_START"; + break; + case LAB_OBJ_END: + str = "LAB_OBJ_END"; + break; + case LAB_OBJ_TYPE: + str = "LAB_OBJ_TYPE"; + break; + case LAB_PEN_NUM: + str = "LAB_PEN_NUM"; + break; + case LAB_POINT_START: + str = "LAB_POINT_START"; + break; + case LAB_POINT_END: + str = "LAB_POINT_END"; + break; + case LAB_POINT_X: + str = "LAB_POINT_X"; + break; + case LAB_POINT_Y: + str = "LAB_POINT_Y"; + break; + case LAB_POINT_IS_NODE: + str = "LAB_POINT_IS_NODE"; + break; + default: + str = "LAB_NULL"; + break; + } + + return str; +} + + + diff --git a/LaiPuLaser/WorkFileMgr.cpp b/LaiPuLaser/WorkFileMgr.cpp new file mode 100644 index 0000000..4e6b671 --- /dev/null +++ b/LaiPuLaser/WorkFileMgr.cpp @@ -0,0 +1,284 @@ +#include "StdAfx.h" +#include "WorkFileMgr.h" +#include "GlobalDefine.h" +#include "TemplateMgr.h" +#include "WorkFileLable.h" +#include "LogMgr.h" +#include "ModuleDeviceMgr.h" +#include "ModuleDrawMgr.h" +#include "ObjComponentMgr.h" +#include "MsgBox.h" +#include "ProductMgr.h" +#include "GlobalFunction.h" +#include "LaserDeviceMgr.h" +#include "MarkAreaMgr.h" +#include "FileMgr.h" +#include "OptoWaveLaserMgr.h" +#include "Laser.h" +#include "PlatformXY.h" +#include "CommonFlowMgr.h" +#include "GlobalDrawMgr.h" +#include "ProgramCutMgr.h" + + + +CString CWorkFileMgr::m_CurOpenFile; +CWorkFileMgr::CWorkFileMgr(void) +{ +} +CWorkFileMgr::~CWorkFileMgr(void) +{ +} +#if 1 +//Ƿļ +bool CWorkFileMgr::IsOpenFile() +{ + if(m_CurOpenFile == "") + { + CMsgBox MsgBox; + MsgBox.Show("δļ!"); + return false; + } + return true; +} +#include "ClientMgr.h" +void CWorkFileMgr::OnOpenFile() +{ + TCHAR szFilters[]=("MAK ļ(*.mak)|*.mak"); + CFileDialog dlg(TRUE,("mak"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + + /*CFileMgr fg; + CString exeDir = fg.GetWorkPath(); + dlg.m_ofn.lpstrInitialDir = exeDir; //ָļ*/ + + if(dlg.DoModal()==IDOK) + { + CString FilePath = dlg.GetPathName(); + gClientMgr->SendCmd_OpenFile(FilePath); + ReadWorkFile(FilePath); + //¼ǰ򿪵ļ------------------------------------------ + SaveFileName(FilePath); + //¼ǰļ + CFileMgr FileMgr; + gProgramCutMgr->SetCurOpenFileName(FileMgr.GetFileNameFromPath(FilePath,true)); + gProgramCutMgr->SetCurOpenFileFullName(FilePath); + } +} + +//¼ļ֣ʾ +void CWorkFileMgr::SaveFileName(CString FileName) +{ + m_CurOpenFile = FileName; + GetCurDocPtr()->SetTitle(m_CurOpenFile); +} +//浱ǰ򿪵ĵ +void CWorkFileMgr::OnSaveFile() +{ + if(m_CurOpenFile == "")//µļ + { + //Ϊ + OnSaveFileAs(); + } + else//浱ǰ򿪵ļ + { + SaveFile(m_CurOpenFile); + CMsgBox MsgBox; + MsgBox.Show(m_CurOpenFile+" ɹ!"); + } +} +//Ϊ +void CWorkFileMgr::OnSaveFileAs() +{ + TCHAR szFilters[]=("MAK ļ(*.mak)|*.mak"); + CFileDialog dlg(FALSE,("mak"),("MarkFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + SaveFile(dlg.GetPathName()); + } +} +void CWorkFileMgr::SaveFile(CString FileName) +{ + SaveWorkFile(FileName); + SaveFileName(FileName); +} +#endif +#if 1 + +void CWorkFileMgr::SaveWorkFile(CString FilePath) +{ + vector LabVec;//洢бǩ + //ָҪ洢ģ + //Ѽбǩ + gTemplateMgr->SaveWorkFile(LabVec); + //gCommonFlowMgr->SaveWorkFile(LabVec); + SaveWorkFileExt(FilePath,LabVec); +} +//и +void CWorkFileMgr::SaveCutParFile(CString FilePath) +{ + vector LabVec;//洢бǩ + //ָҪ洢ģ + //Ѽбǩ + gCommonFlowMgr->SaveWorkFile(LabVec); + SaveWorkFileExt(FilePath,LabVec); +} +//бǩдļ +void CWorkFileMgr::SaveWorkFileExt(CString FilePath,vector &LabVec) +{ + CFile file(FilePath,CFile::modeReadWrite|CFile::modeCreate); + CArchive ar(&file,CArchive::store); + + size_t LabCnt = LabVec.size(); + ar<::iterator iter = LabVec.begin(); + vector::iterator iter_end = LabVec.end(); + for(;iter!=iter_end;iter++) + { + (*iter).Serialize(ar); + } +} +#endif +#if 1 +//obj ļ +void CWorkFileMgr::OpenObjFile() +{ + TCHAR szFilters[]=("OBJ ļ(*.obj)|*.obj"); + CFileDialog dlg(TRUE,("obj"),("ObjFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + gDraw->SetbDelOldObj(false);//Ҫɾԭobj + ReadObjTemplateFile(dlg.GetPathName()); + GetCurViewPtr()->RefreshView(); + gDraw->SetbDelOldObj(true); + } +} +//obj ļ +void CWorkFileMgr::SaveObjFile() +{ + TCHAR szFilters[]=("OBJ ļ(*.obj)|*.obj"); + CFileDialog dlg(FALSE,("obj"),("ObjFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters); + if(dlg.DoModal()==IDOK) + { + SaveObjTemplateFile(dlg.GetPathName()); + } +} +//ͨļobj ļ(·) +void CWorkFileMgr::ReadObjFileByName(CString FileName) +{ + CFileMgr FileMgr; + CString FilePath;//· + FileMgr.GetFullFilePath(FilePath,FileName); + ReadObjTemplateFile(FilePath); +} +//ͨļobj ļ(·) +void CWorkFileMgr::ReadObjTemplateFile(CString FilePath) +{ + ReadWorkFile(FilePath); +} +//ֻobj ģ +void CWorkFileMgr::SaveObjTemplateFile(CString FilePath) +{ + vector LabVec;//洢бǩ + //Ѽбǩ + gTemplateMgr->SaveWorkFile(LabVec); + //бǩдļ + SaveWorkFileExt(FilePath,LabVec); +} + +#endif +#if 1 +void CWorkFileMgr::ReadWorkFile(CString FilePath) +{ + //ȡ---------------------------------------------------------- + vector LabVec; + ReadWorkFileExt(FilePath,LabVec); + if(LabVec.empty()) + return; + //ÿģ------------------------------------------------------------ + CLabVecRang LabVecRang(LabVec,0,LabVec.size()-1); + vector LabVecRangVec; + + SeparateStrVec(LabVecRang,LabVecRangVec,LAB_MODULE_START,LAB_MODULE_END); + + //δÿģ--------------------------------------------------- + vector::iterator iter = LabVecRangVec.begin(); + vector::iterator iter_end = LabVecRangVec.end(); + for(;iter!=iter_end;iter++) + { + if(gModuleDrawMgr.ReadWorkFile(*iter)) + continue;//ظȡ + gModuleDeviceMgr.ReadWorkFile(*iter); + } +} +void CWorkFileMgr::ReadWorkFileExt(CString FilePath,vector &LabVec) +{ + CFile file; + if(file.Open(FilePath,CFile::modeRead)) + { + CArchive ar(&file,CArchive::load); + size_t LabCnt; + ar>>LabCnt;//ȶȡǩĸ + for(size_t i=0;iWriteDebugLog("ļȡʧ", _LOG_ERROR); + } +} +//LabVecRang иStrLabStart StrLabEnd ǩȡstr 浽LabVecRangVec +void CWorkFileMgr::SeparateStrVec(CLabVecRang &LabVecRang,vector &LabVecRangVec,LAB_TYPE StrLabStart,LAB_TYPE StrLabEnd) +{ + size_t StartCnt = 0;//Ƕ׵ + size_t StartIdx = 0; + size_t EndIdx = 0; + + size_t Start = LabVecRang.GetStart(); + size_t End = LabVecRang.GetEnd()+1; + for(size_t i=Start;iStartIdx)//ҪѼյķΧ + { + CLabVecRang Rang(LabVecRang.GetVec(),StartIdx,EndIdx); + LabVecRangVec.push_back(Rang); + } + } + StartCnt--; + } + } +} +//StrVec ҺͱǩLabStr ƥַȡǩֵ,ûֵ"" +CLab CWorkFileMgr::FindLab(CLabVecRang &LabVecRang,LAB_TYPE LabStr) +{ + CLab ret; + size_t Start = LabVecRang.GetStart(); + size_t End = LabVecRang.GetEnd()+1; + for(size_t i=Start;i &LabVecRangVec,LAB_TYPE StrLabStart,LAB_TYPE StrLabEnd); + CLab FindLab(CLabVecRang &LabVecRang,LAB_TYPE LabStr); + + void OnOpenFile(); + void OnSaveFile(); + void OnSaveFileAs(); + void OpenObjFile(); + void SaveObjFile(); + void SaveCutParFile(CString FilePath); + static CString GetCurOpenFilePath(){return m_CurOpenFile;}; + bool IsOpenFile(); + void ReadObjFileByName(CString FileName); + void SaveObjTemplateFile(CString FilePath); + void ReadObjTemplateFile(CString FileName); + void SaveWorkFileExt(CString FilePath,vector &LabVec); + void SaveFileName(CString FileName); +private: + + void ReadWorkFileExt(CString FilePath,vector &LabVec); + + void SaveFile(CString FileName); + +private: + static CString m_CurOpenFile;//ǰ򿪵ļ +}; + diff --git a/LaiPuLaser/WorkPar/11.txt b/LaiPuLaser/WorkPar/11.txt new file mode 100644 index 0000000..a02b5e5 --- /dev/null +++ b/LaiPuLaser/WorkPar/11.txt @@ -0,0 +1,8 @@ +1 +18 +-20.56 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/111.txt b/LaiPuLaser/WorkPar/111.txt new file mode 100644 index 0000000..d0b6026 --- /dev/null +++ b/LaiPuLaser/WorkPar/111.txt @@ -0,0 +1,8 @@ +1 +24.87 +-24.62 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/1234.txt b/LaiPuLaser/WorkPar/1234.txt new file mode 100644 index 0000000..239cc7f --- /dev/null +++ b/LaiPuLaser/WorkPar/1234.txt @@ -0,0 +1,8 @@ +1 +82.7138 +5.3004 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/341-3dd.txt b/LaiPuLaser/WorkPar/341-3dd.txt new file mode 100644 index 0000000..b9d4d12 --- /dev/null +++ b/LaiPuLaser/WorkPar/341-3dd.txt @@ -0,0 +1,8 @@ +1 +76.9996 +0.419818 +80 +50 +600 +30 +1 diff --git a/LaiPuLaser/WorkPar/3BA804P1-1-12-06035-00A-K.txt b/LaiPuLaser/WorkPar/3BA804P1-1-12-06035-00A-K.txt new file mode 100644 index 0000000..c145d0e --- /dev/null +++ b/LaiPuLaser/WorkPar/3BA804P1-1-12-06035-00A-K.txt @@ -0,0 +1,14 @@ +4 +-200 +0 +-23.8393 +0 +132.75 +0 +200 +0 +5 +80000 +100 +5 +6 diff --git a/LaiPuLaser/WorkPar/3BA817P1D-1-12-06178-00BD-M.txt b/LaiPuLaser/WorkPar/3BA817P1D-1-12-06178-00BD-M.txt new file mode 100644 index 0000000..9061dce --- /dev/null +++ b/LaiPuLaser/WorkPar/3BA817P1D-1-12-06178-00BD-M.txt @@ -0,0 +1,14 @@ +4 +-200 +0 +-23.8393 +0 +132.75 +0 +200 +0 +4 +50000 +4 +23 +1 diff --git a/LaiPuLaser/WorkPar/3ba804p1-6-Y.txt b/LaiPuLaser/WorkPar/3ba804p1-6-Y.txt new file mode 100644 index 0000000..cd8617e --- /dev/null +++ b/LaiPuLaser/WorkPar/3ba804p1-6-Y.txt @@ -0,0 +1,14 @@ +4 +-200 +1 +-23.8393 +2 +132.75 +3 +200 +4 +7 +50000 +600 +4 +3 diff --git a/LaiPuLaser/WorkPar/8-12-08342-00BD-6BAC05H8D-Panel-VC-20170301.txt b/LaiPuLaser/WorkPar/8-12-08342-00BD-6BAC05H8D-Panel-VC-20170301.txt new file mode 100644 index 0000000..f34c47e --- /dev/null +++ b/LaiPuLaser/WorkPar/8-12-08342-00BD-6BAC05H8D-Panel-VC-20170301.txt @@ -0,0 +1,14 @@ +4 +-76.9986 +-47.6142 +5.21693 +-48.6158 +99.4664 +-49.0642 +181.966 +-49.0642 +7.5 +50000 +400 +6 +7 diff --git a/LaiPuLaser/WorkPar/8-12-08734-00B_6BF005X8-RF-panel-VC-1111.txt b/LaiPuLaser/WorkPar/8-12-08734-00B_6BF005X8-RF-panel-VC-1111.txt new file mode 100644 index 0000000..cb88816 --- /dev/null +++ b/LaiPuLaser/WorkPar/8-12-08734-00B_6BF005X8-RF-panel-VC-1111.txt @@ -0,0 +1,14 @@ +4 +47.32 +-88.655 +-2.67999 +-188.655 +99.4664 +-49.0642 +181.966 +-49.0642 +7.5 +50000 +400 +6 +7 diff --git a/LaiPuLaser/WorkPar/D147.dwg用这个.dwg用这个——旋转90.txt b/LaiPuLaser/WorkPar/D147.dwg用这个.dwg用这个——旋转90.txt new file mode 100644 index 0000000..0d03f4f --- /dev/null +++ b/LaiPuLaser/WorkPar/D147.dwg用这个.dwg用这个——旋转90.txt @@ -0,0 +1,8 @@ +1 +0 +0 +60 +50 +600 +1 +22 diff --git a/LaiPuLaser/WorkPar/D714 3D.txt b/LaiPuLaser/WorkPar/D714 3D.txt new file mode 100644 index 0000000..bf24788 --- /dev/null +++ b/LaiPuLaser/WorkPar/D714 3D.txt @@ -0,0 +1,8 @@ +1 +76.6997 +-0.280251 +80 +50 +600 +35 +1 diff --git a/LaiPuLaser/WorkPar/D714.txt b/LaiPuLaser/WorkPar/D714.txt new file mode 100644 index 0000000..18d3ec9 --- /dev/null +++ b/LaiPuLaser/WorkPar/D714.txt @@ -0,0 +1,8 @@ +1 +60.171 +-7.872 +60 +50 +600 +24 +1 diff --git a/LaiPuLaser/WorkPar/D979.E219 原图.E219 原图.dxfxin.txt b/LaiPuLaser/WorkPar/D979.E219 原图.E219 原图.dxfxin.txt new file mode 100644 index 0000000..76d1830 --- /dev/null +++ b/LaiPuLaser/WorkPar/D979.E219 原图.E219 原图.dxfxin.txt @@ -0,0 +1,8 @@ +1 +60.9 +-11.96 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/Debug.txt b/LaiPuLaser/WorkPar/Debug.txt new file mode 100644 index 0000000..2f17983 --- /dev/null +++ b/LaiPuLaser/WorkPar/Debug.txt @@ -0,0 +1,8 @@ +1 +190.8 +1.82 +80 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/Drawing1.txt b/LaiPuLaser/WorkPar/Drawing1.txt new file mode 100644 index 0000000..a91ccd1 --- /dev/null +++ b/LaiPuLaser/WorkPar/Drawing1.txt @@ -0,0 +1,8 @@ +1 +18.5 +138.32 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/E006 原图.txt b/LaiPuLaser/WorkPar/E006 原图.txt new file mode 100644 index 0000000..ea3a280 --- /dev/null +++ b/LaiPuLaser/WorkPar/E006 原图.txt @@ -0,0 +1,8 @@ +1 +62.8 +-26.96 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/WorkPar/E114 原图.txt b/LaiPuLaser/WorkPar/E114 原图.txt new file mode 100644 index 0000000..1b9e6f6 --- /dev/null +++ b/LaiPuLaser/WorkPar/E114 原图.txt @@ -0,0 +1,8 @@ +1 +63.32 +-11.621 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/WorkPar/E114YT.txt b/LaiPuLaser/WorkPar/E114YT.txt new file mode 100644 index 0000000..6363890 --- /dev/null +++ b/LaiPuLaser/WorkPar/E114YT.txt @@ -0,0 +1,8 @@ +1 +60.9 +-26.96 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/E129.txt b/LaiPuLaser/WorkPar/E129.txt new file mode 100644 index 0000000..dc7e11a --- /dev/null +++ b/LaiPuLaser/WorkPar/E129.txt @@ -0,0 +1,8 @@ +1 +62.1 +-11.6604 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/WorkPar/E192 两点定位.txt b/LaiPuLaser/WorkPar/E192 两点定位.txt new file mode 100644 index 0000000..9181239 --- /dev/null +++ b/LaiPuLaser/WorkPar/E192 两点定位.txt @@ -0,0 +1,8 @@ +1 +60.971 +-7.972 +60 +50 +600 +15 +1 diff --git a/LaiPuLaser/WorkPar/E192-3点.txt b/LaiPuLaser/WorkPar/E192-3点.txt new file mode 100644 index 0000000..01e0d74 --- /dev/null +++ b/LaiPuLaser/WorkPar/E192-3点.txt @@ -0,0 +1,8 @@ +1 +60.4705 +-7.5725 +60 +50 +600 +5 +1 diff --git a/LaiPuLaser/WorkPar/E219 5-29.txt b/LaiPuLaser/WorkPar/E219 5-29.txt new file mode 100644 index 0000000..d071a99 --- /dev/null +++ b/LaiPuLaser/WorkPar/E219 5-29.txt @@ -0,0 +1,8 @@ +1 +76.7 +0.419943 +80 +50 +600 +1 +24 diff --git a/LaiPuLaser/WorkPar/E219.txt b/LaiPuLaser/WorkPar/E219.txt new file mode 100644 index 0000000..53f9aa8 --- /dev/null +++ b/LaiPuLaser/WorkPar/E219.txt @@ -0,0 +1,8 @@ +1 +67.6 +-1.66006 +80 +50 +600 +20 +1 diff --git a/LaiPuLaser/WorkPar/E219R-二供.txt b/LaiPuLaser/WorkPar/E219R-二供.txt new file mode 100644 index 0000000..6961921 --- /dev/null +++ b/LaiPuLaser/WorkPar/E219R-二供.txt @@ -0,0 +1,8 @@ +1 +62.4 +-11.9601 +80 +50 +300 +1 +1 diff --git a/LaiPuLaser/WorkPar/E219yt-3.txt b/LaiPuLaser/WorkPar/E219yt-3.txt new file mode 100644 index 0000000..9a48aab --- /dev/null +++ b/LaiPuLaser/WorkPar/E219yt-3.txt @@ -0,0 +1,8 @@ +1 +62.4 +-11.9601 +60 +50 +600 +25 +1 diff --git a/LaiPuLaser/WorkPar/E279.txt b/LaiPuLaser/WorkPar/E279.txt new file mode 100644 index 0000000..7149e60 --- /dev/null +++ b/LaiPuLaser/WorkPar/E279.txt @@ -0,0 +1,8 @@ +1 +62.02 +-11.621 +80 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/E279微连点切割.txt b/LaiPuLaser/WorkPar/E279微连点切割.txt new file mode 100644 index 0000000..0caba34 --- /dev/null +++ b/LaiPuLaser/WorkPar/E279微连点切割.txt @@ -0,0 +1,8 @@ +1 +60.271 +-7.57171 +60 +50 +600 +15 +1 diff --git a/LaiPuLaser/WorkPar/E341 原图.txt b/LaiPuLaser/WorkPar/E341 原图.txt new file mode 100644 index 0000000..fc43b7f --- /dev/null +++ b/LaiPuLaser/WorkPar/E341 原图.txt @@ -0,0 +1,8 @@ +1 +60.271 +3.5281 +60 +50 +600 +35 +1 diff --git a/LaiPuLaser/WorkPar/E407.txt b/LaiPuLaser/WorkPar/E407.txt new file mode 100644 index 0000000..2e16680 --- /dev/null +++ b/LaiPuLaser/WorkPar/E407.txt @@ -0,0 +1,8 @@ +1 +58.32 +-11.621 +80 +50 +600 +22 +1 diff --git a/LaiPuLaser/WorkPar/LANB.txt b/LaiPuLaser/WorkPar/LANB.txt new file mode 100644 index 0000000..efc7162 --- /dev/null +++ b/LaiPuLaser/WorkPar/LANB.txt @@ -0,0 +1,8 @@ +1 +53.8204 +4.87917 +80 +50 +600 +35 +1 diff --git a/LaiPuLaser/WorkPar/MarkFile.txt b/LaiPuLaser/WorkPar/MarkFile.txt new file mode 100644 index 0000000..b2436da --- /dev/null +++ b/LaiPuLaser/WorkPar/MarkFile.txt @@ -0,0 +1,8 @@ +1 +29 +-15.07 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/jiaozhuntu.txt b/LaiPuLaser/WorkPar/jiaozhuntu.txt new file mode 100644 index 0000000..249cd9a --- /dev/null +++ b/LaiPuLaser/WorkPar/jiaozhuntu.txt @@ -0,0 +1,8 @@ +1 +28.7 +-18 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkPar/tt01.txt b/LaiPuLaser/WorkPar/tt01.txt new file mode 100644 index 0000000..dec09b6 --- /dev/null +++ b/LaiPuLaser/WorkPar/tt01.txt @@ -0,0 +1,8 @@ +1 +60.47 +-7.57204 +60 +50 +600 +1 +1 diff --git a/LaiPuLaser/WorkRecord.cpp b/LaiPuLaser/WorkRecord.cpp new file mode 100644 index 0000000..4e838da --- /dev/null +++ b/LaiPuLaser/WorkRecord.cpp @@ -0,0 +1,91 @@ +#include "StdAfx.h" +#include "WorkRecord.h" +#include "Propertie.h" +#include "PropertieMgr.h" +#include "AuthorityMgr.h" +#include "WorkTime.h" +#include "FileMgr.h" +#include "LogMgr.h" + + + +CWorkRecordMgr *gWorkRecordMgr = new CWorkRecordMgr; +CWorkRecordMgr::CWorkRecordMgr(void) +{ +} +CWorkRecordMgr::~CWorkRecordMgr(void) +{ +} +CMFCPropertyGridProperty *CWorkRecordMgr::CreatGridProperty() +{ + CString PropertyName;// + CString Description;// + CString Path = _T("WorkRecordMgr");//洢· + CString Name; +//-------------------------------------------------------------------------------// + PropertyName = _T("ӹ¼"); + CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName); +//-------------------------------------------------------------------------------// + if(gAuthorityMgr->CheckAuthority(_FACTORY)) + { + { + //Աӳ + Name = _T("m_RecordFilePath");// + CPropertie *pPropertie = new CPropertie; + pPropertie->SetpVal((void*)&m_RecordFilePath); + pPropertie->SetType(_PROP_TYPE_STRING); + pPropertie->SetpModule(this); + pPropertie->SetPath(Path); + pPropertie->SetName(Name); + pPropertie->WriteRead(true);//ȡ + + //ʾ + PropertyName = _T("洢·"); + Description = _T("¼ļı·"); + CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_RecordFilePath, Description); + pGroup->AddSubItem(p); + + gDevicePropertieMgr.Insert(p, pPropertie); + } + } +//-------------------------------------------------------------------------------// + return pGroup; +} + + +//ӹ¼дļ +void CWorkRecordMgr::WriteRecordToFile() +{ + CFileMgr FileMgr; + //־Ŀ¼Ƿ + if(!FileMgr.IsDirectoryExists(m_RecordFilePath)) + { + gLogMgr->WriteDebugLog("Error---->־Ŀ¼"); + return; + } + + //鵱ļǷ + CString CurFilePath = m_RecordFilePath+"\\"+gWorkTime.GetCurDate("_")+".rcd"; + if(!FileMgr.IsFileExist(CurFilePath)) + { + //µļ + ofstream File; + File.open(CurFilePath); + File.close(); + } + ofstream File(CurFilePath,ios::app); + File<WriteDebugLog("func:WriteRecordToFile--->OK"); +} +CString CWorkRecordMgr::GetRecordStr() +{ + CString str; + str += "[û] "+ gAuthorityMgr->GetCurUserName(); + str += " [Ʒͺ] "+ m_ProductType; + str += " [ʼʱ] "+ gWorkTime.GetCurDate("/")+ " "+m_StartWorkTime; + str += " [ʱ] "+ gWorkTime.GetCurDate("/")+ " "+m_EndWorkTime; + str += " [ӹʱ] "+ m_WorkTime; + return str; +} diff --git a/LaiPuLaser/WorkRecord.h b/LaiPuLaser/WorkRecord.h new file mode 100644 index 0000000..707d49a --- /dev/null +++ b/LaiPuLaser/WorkRecord.h @@ -0,0 +1,30 @@ +#pragma once +#include "Module.h" + +//¼ +class CWorkRecordMgr :public CModule +{ +public: + CWorkRecordMgr(void); + ~CWorkRecordMgr(void); + virtual CMFCPropertyGridProperty *CreatGridProperty(); + virtual MODULE GetModuleType(){return _WORK_RECORD_PROP;}; + + + void SetStartWorkTime(CString s){m_StartWorkTime = s;}; + void SetEndWorkTime(CString s){m_EndWorkTime = s;}; + void SetWorkTime(CString s){m_WorkTime = s;}; + void SetProductType(CString s){m_ProductType = s;}; + void WriteRecordToFile(); +private: + CString CWorkRecordMgr::GetRecordStr(); +private: + CString m_StartWorkTime;//ʼӹʱ + CString m_EndWorkTime;//ʼӹʱ + CString m_WorkTime;//ӹʱ + CString m_ProductType;//Ʒͺ + + CString m_RecordFilePath;//ӹļ· +}; + +extern CWorkRecordMgr *gWorkRecordMgr; \ No newline at end of file diff --git a/LaiPuLaser/WorkTime.cpp b/LaiPuLaser/WorkTime.cpp new file mode 100644 index 0000000..3c3b1fa --- /dev/null +++ b/LaiPuLaser/WorkTime.cpp @@ -0,0 +1,163 @@ +#include "StdAfx.h" +#include "WorkTime.h" +#include "PciCh365Mgr.h" + +CWorkTime gWorkTime; +CWorkTime::CWorkTime(void) +{ + m_bRecordTime = false;//Ƿڼʱ + m_LastWorkTime = "ϴʱ:"; +} +CWorkTime::~CWorkTime(void) +{ +} +CString CWorkTime::Time2Str(int n) +{ + CString s; + if(n<10) + s.Format("0%ld",n);//߲0 + else + s.Format("%ld",n); + return s; +} +#if 1//Լʱ +//ʼʱ +void CWorkTime::StartRecordTime() +{ + m_bRecordTime = true; + m_StartTime=CTime::GetCurrentTime(); +} +void CWorkTime::StopRecordTime() +{ + m_bRecordTime = false; +} +CString CWorkTime::GetTimeSpanStr() +{ + if(!m_bRecordTime) + return "00:00:00"; + + //ȡǰϵͳʱ + CTime CurTime; + CTimeSpan TimeSpan;//ʱ + CurTime=CTime::GetCurrentTime(); + TimeSpan = CurTime - m_StartTime; + return GetTimeSpanStr(TimeSpan); +} +CTimeSpan CWorkTime::GetTimeSpan() +{ + //ȡǰϵͳʱ + CTime CurTime; + CTimeSpan TimeSpan;//ʱ + CurTime=CTime::GetCurrentTime(); + TimeSpan = CurTime - m_StartTime; + return TimeSpan; +} +//ȡǰʱ +CString CWorkTime::GetTimeSpanStr(CTimeSpan &TimeSpan) +{ + return Time2Str(TimeSpan.GetHours())+":"+Time2Str(TimeSpan.GetMinutes())+":"+Time2Str(TimeSpan.GetSeconds()); +} +CString CWorkTime::GetCurDate(CString Separator) +{ + CString str; + CTime CurTime; + CurTime=CTime::GetCurrentTime(); + + str += Time2Str(CurTime.GetYear())+Separator; + str += Time2Str(CurTime.GetMonth())+Separator; + str += Time2Str(CurTime.GetDay()); + + return str; +} +//ȡǰʱSeparator Ϊָ +CString CWorkTime::GetCurTime(CString Separator) +{ + CString str; + CTime CurTime; + CurTime=CTime::GetCurrentTime(); + + str += Time2Str(CurTime.GetHour())+Separator; + str += Time2Str(CurTime.GetMinute())+Separator; + str += Time2Str(CurTime.GetSecond()); + + return str; +} +//ǰ˶ٷ +int CWorkTime::GetTimeSpanMin(CTimeSpan &TimeSpan) +{ + int m = 0; + m += TimeSpan.GetHours() * 60; + m += TimeSpan.GetMinutes(); + return m; +} +//¼һʱ +void CWorkTime::SaveLastWorkTime() +{ + m_LastWorkTime = "ϴʱ:" + GetTimeSpanStr(); +} +#endif +#if 1//ȷʱ +//ʼȷʱ +void CWorkTime::StartExactTime() +{ + QueryPerformanceCounter(&m_ExactStart); +} +//ȡȷʱ,λms +int CWorkTime::GetExactTime() +{ + LARGE_INTEGER EndTime; + QueryPerformanceCounter(&EndTime); + + int ret = ((EndTime.QuadPart - m_ExactStart.QuadPart)*1000)/(gPciCh365Mgr->GetClockFre().QuadPart); + return ret; +} +#endif +#if 1//ʱ +//ǰ˶ +double CWorkTime::GetTimeSpanSecond() +{ + CTimeSpan TimeSpan = GetTimeSpan(); + int s = 0; + s += TimeSpan.GetHours() * 60 * 60; + s += TimeSpan.GetMinutes() * 60; + s += TimeSpan.GetSeconds(); + return s; +} +//ʼʱ +void CWorkTime::StartBackTime(double s) +{ + m_BackTimeSeconds = s; + StartRecordTime(); +} +//ȡʣʱ +CString CWorkTime::GetLeftTimes() +{ + double CurSeconds = GetTimeSpanSecond();//ǰ + int LeftSeconds = (int)(m_BackTimeSeconds-CurSeconds); + CString str = "00:00:00"; + if(LeftSeconds>0) + { + int Seconds = LeftSeconds % 60; + LeftSeconds -= Seconds; + int Minutes = (LeftSeconds%3600)/60; + LeftSeconds -= Minutes*60; + int Hours = LeftSeconds/3600; + str = Time2Str(Hours)+":"+Time2Str(Minutes)+":"+Time2Str(Seconds); + } + return str; +} +//ʱǷ +bool CWorkTime::IsBackTimeEnd() +{ + if(!m_bRecordTime)//Ѿ + return true; + + double CurSeconds = GetTimeSpanSecond();//ǰ + if(CurSeconds > m_BackTimeSeconds) + { + m_bRecordTime = false; + return true; + } + return false; +} +#endif \ No newline at end of file diff --git a/LaiPuLaser/WorkTime.h b/LaiPuLaser/WorkTime.h new file mode 100644 index 0000000..81ca600 --- /dev/null +++ b/LaiPuLaser/WorkTime.h @@ -0,0 +1,37 @@ +#pragma once + +//ʱ +class CWorkTime +{ +public: + CWorkTime(void); + ~CWorkTime(void); + CString GetTimeSpanStr(CTimeSpan &TimeSpan); + void StartRecordTime(); + int GetTimeSpanMin(CTimeSpan &TimeSpan); + void StartExactTime(); + void StopRecordTime(); + int GetExactTime(); + CTimeSpan GetTimeSpan(); + CString GetCurTime(CString Separator); + CString GetCurDate(CString Separator); + CString GetTimeSpanStr(); + void StartBackTime(double s); + CString GetLeftTimes(); + bool IsBackTimeEnd(); + double GetTimeSpanSecond(); + void SaveLastWorkTime(); + CString GetLastWorkTime(){return m_LastWorkTime;}; +private: + CString Time2Str(int n); +private: + CTime m_StartTime;//ʼʱʱ + LARGE_INTEGER m_ExactStart;//ȷʱʼ + + bool m_bRecordTime;//Ƿڼʱ + double m_BackTimeSeconds;//ʱ + + CString m_LastWorkTime;//һӹʱ +}; + +extern CWorkTime gWorkTime; \ No newline at end of file diff --git a/LaiPuLaser/camera.lib b/LaiPuLaser/camera.lib new file mode 100644 index 0000000..d17c475 Binary files /dev/null and b/LaiPuLaser/camera.lib differ diff --git a/LaiPuLaser/customer.h b/LaiPuLaser/customer.h new file mode 100644 index 0000000..2deb55d --- /dev/null +++ b/LaiPuLaser/customer.h @@ -0,0 +1,21 @@ +#ifndef __circle_core_shape_h__ +#define __circle_core_shape_h__ + +#ifdef __cplusplus +extern "C" { +#endif +#include +//camera +bool grab(unsigned char *buf, int &w, int &h, int &Cross1x,int &Cross1y,int &Cross2x,int &Cross2y,int &byte_width); +bool initialize(); +void destruct(); +void showCrossBar(bool show); +int findFeatures(unsigned char *buf, int w, int h, int byte_width, + int gray2bw_thresh, + int findCircles, double *cx, double *cy, double *r, int nCircle, + int findCorners, double *lx, double *ly, int nCorners); +#ifdef __cplusplus +} +#endif + +#endif /* __circle_core_shape_h__ */ diff --git a/LaiPuLaser/dog_api.h b/LaiPuLaser/dog_api.h new file mode 100644 index 0000000..bfdf191 --- /dev/null +++ b/LaiPuLaser/dog_api.h @@ -0,0 +1,424 @@ +/** + * \mainpage SuperDog Licensing API + * \file dog_api.h SuperDog Licensing API declarations + * + * Copyright (C) 2016 SafeNet, Inc. All rights reserved. + * + */ + + +#ifndef __DOG_API_H__ +#define __DOG_API_H__ + +#if !defined(WITH_AKSTYPES) && !defined(WITH_OEFTYPES) +# if defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__) +typedef unsigned __int64 dog_u64_t; +typedef signed __int64 dog_s64_t; +# else +typedef unsigned long long dog_u64_t; +typedef signed long long dog_s64_t; +# endif +# if defined(_MSC_VER) +typedef unsigned long dog_u32_t; +typedef signed long dog_s32_t; +# else +typedef unsigned int dog_u32_t; +typedef signed int dog_s32_t; +# endif +typedef unsigned short dog_u16_t; +typedef signed short dog_s16_t; +typedef signed char dog_s8_t; +typedef unsigned char dog_u8_t; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(_MSC_VER) || defined(__BORLANDC__) +# define DOG_CALLCONV __stdcall +#else +# define DOG_CALLCONV +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup dog_feature_ids Feature ID defines + * + * @{ + */ + +/** + * \brief The SuperDog default Feature ID + * + * Available in every SuperDog + */ +#define DOG_DEFAULT_FID 0 + +/** + * @} + */ + + + +/** + * @defgroup dog_file_ids Data File ID defines + * + * @{ + */ + +/** + * \brief File ID for default read-write data file + * + * File ID for default read-write data file. + */ + +#define DOG_FILEID_RW 0xfff4 + +/** + * @} + */ + + + +/** + * @defgroup dog_error_codes Licensing API Status Codes + * + * @{ + */ + +enum dog_error_codes +{ + /** Request successfully completed */ + DOG_STATUS_OK = 0, + + /** Request exceeds data file range */ + DOG_MEM_RANGE = 1, + + /** System is out of memory */ + DOG_INSUF_MEM = 3, + + /** Too many open login sessions */ + DOG_TMOF = 4, + + /** Access denied */ + DOG_ACCESS_DENIED = 5, + + /** Required SuperDog not found */ + DOG_NOT_FOUND = 7, + + /** Encryption/decryption data length is too short */ + DOG_TOO_SHORT = 8, + + /** Invalid input handle */ + DOG_INV_HND = 9, + + /** Specified File ID not recognized by API */ + DOG_INV_FILEID = 10, + + /** Invalid XML format */ + DOG_INV_FORMAT = 15, + + /** Unable to execute function in this context */ + DOG_REQ_NOT_SUPP = 16, + + /** Binary data passed to function does not contain valid update */ + DOG_INV_UPDATE_OBJ = 17, + + /** SuperDog to be updated not found */ + DOG_KEYID_NOT_FOUND = 18, + + /** Required XML tags not found; Contents in binary data are missing + * or invalid */ + DOG_INV_UPDATE_DATA = 19, + + /** Update not supported by SuperDog */ + DOG_INV_UPDATE_NOTSUPP = 20, + + /** Update counter is set incorrectly */ + DOG_INV_UPDATE_CNTR = 21, + + /** Invalid Vendor Code passed */ + DOG_INV_VCODE = 22, + + /** Passed time value is outside supported value range */ + DOG_INV_TIME = 24, + + /** Acknowledge data requested by the update, however the ack_data + * input parameter is NULL */ + DOG_NO_ACK_SPACE = 26, + + /** Program running on a terminal server */ + DOG_TS_DETECTED = 27, + + /** Unknown algorithm used in V2C file */ + DOG_UNKNOWN_ALG = 29, + + /** Signature verification failed */ + DOG_INV_SIG = 30, + + /** Requested Feature not available */ + DOG_FEATURE_NOT_FOUND = 31, + + /** Communication error between API and local SuperDog License Manager */ + DOG_LOCAL_COMM_ERR = 33, + + /** Vendor Code not recognized by API */ + DOG_UNKNOWN_VCODE = 34, + + /** Invalid XML specification */ + DOG_INV_SPEC = 35, + + /** Invalid XML scope */ + DOG_INV_SCOPE = 36, + + /** Too many SuperDog currently connected */ + DOG_TOO_MANY_KEYS = 37, + + /** Session was interrupted */ + DOG_BROKEN_SESSION = 39, + + /** Feature has expired */ + DOG_FEATURE_EXPIRED = 41, + + /** SuperDog License Manager version too old */ + DOG_OLD_LM = 42, + + /** USB error occurred when communicating with a SuperDog */ + DOG_DEVICE_ERR = 43, + + /** System time has been tampered with */ + DOG_TIME_ERR = 45, + + /** Communication error occurred in secure channel */ + DOG_SCHAN_ERR = 46, + + /** Corrupt data exists in secure storage area of SuperDog SL */ + DOG_STORAGE_CORRUPT = 47, + + /** Unable to locate a Feature matching the scope */ + DOG_SCOPE_RESULTS_EMPTY = 50, + + /** SuperDog SL incompatible with machine hardware; SuperDog SL is locked + * to different hardware. OR: + * In the case of a V2C file, conflict between SuperDog SL data and machine + * hardware data; SuperDog SL locked to different hardware */ + DOG_HARDWARE_MODIFIED = 52, + + /** Trying to install a V2C file with an update counter that is out + * of sequence with the update counter in the SuperDog. + * The values of the update counter in the file are lower than + * those in the SuperDog. */ + DOG_UPDATE_TOO_OLD = 54, + + /** Trying to install a V2C file with an update counter that is out + * of sequence with the update counter in the SuperDog. + * The first value of the update counter in the file is greater than + * the value in the SuperDog. */ + DOG_UPDATE_TOO_NEW = 55, + + /** Cloned SuperDog SL secure storage detected */ + DOG_CLONE_DETECTED = 64, + + /** Specified V2C update already installed */ + DOG_UPDATE_ALREADY_ADDED = 65, + + /** Secure storage ID mismatch */ + DOG_SECURE_STORE_ID_MISMATCH = 78, + + /** Unable to locate dynamic library for API */ + DOG_NO_API_DYLIB = 400, + + /** Dynamic library for API is invalid */ + DOG_INV_API_DYLIB = 401, + + /** Object incorrectly initialized */ + DOG_INVALID_OBJECT = 500, + + /** Invalid function parameter */ + DOG_INVALID_PARAMETER = 501, + + /** Logging in twice to the same object */ + DOG_ALREADY_LOGGED_IN = 502, + + /** Logging out twice of the same object */ + DOG_ALREADY_LOGGED_OUT = 503, + + /** Incorrect use of system or platform */ + DOG_OPERATION_FAILED = 525, + + /** Requested function not implemented */ + DOG_NOT_IMPL = 698, + + /** Internal error occurred in API */ + DOG_INT_ERR = 699, + + DOG_NEXT_FREE_VALUES = 7001, +}; + +/** + * @} + */ + + + +/** + * @defgroup dog_general SuperDog typedefs and macros + * + * @{ + */ + +/** A SuperDog status code */ +typedef enum dog_error_codes dog_status_t; + +/** SuperDog size type */ +typedef dog_u32_t dog_size_t; + +/** SuperDog connection handle */ +typedef dog_u32_t dog_handle_t; + +/** SuperDog Feature ID */ +typedef dog_u32_t dog_feature_t; + +/** SuperDog File ID */ +typedef dog_u32_t dog_fileid_t; + +/** SuperDog timestamp, representing elapsed seconds since + * Jan-01-1970 0:00:00 GMT */ +typedef dog_u64_t dog_time_t; + +/** SuperDog Vendor Code buffer */ +typedef const void *dog_vendor_code_t; + +/** format to retrieve update info (C2V) */ +#define DOG_UPDATEINFO "" + +/** format to retrieve session info */ +#define DOG_SESSIONINFO "" + +/** format to retrieve hardware info */ +#define DOG_KEYINFO "" + +/** format to retrieve host fingerprint info */ +#define DOG_FINGERPRINT "" + +/** + * Invalid handle value for dog_login() and dog_login_scope() functions. + */ +#define DOG_INVALID_HANDLE_VALUE 0 + +/** + * \brief Minimum block size for dog_encrypt() and dog_decrypt() functions. + */ +#define DOG_MIN_BLOCK_SIZE 16 + +/** + * @} + */ + + + +/** + * @defgroup dog_basic The Basic SuperDog Licensing API + * + * @{ + */ + + +dog_status_t DOG_CALLCONV dog_login(dog_feature_t feature_id, + dog_vendor_code_t vendor_code, + dog_handle_t *handle); + + +dog_status_t DOG_CALLCONV dog_login_scope(dog_feature_t feature_id, + const char *scope, + dog_vendor_code_t vendor_code, + dog_handle_t *handle); + + +dog_status_t DOG_CALLCONV dog_logout(dog_handle_t handle); + + +dog_status_t DOG_CALLCONV dog_encrypt(dog_handle_t handle, + void *buffer, + dog_size_t length); + + +dog_status_t DOG_CALLCONV dog_decrypt(dog_handle_t handle, + void *buffer, + dog_size_t length); + + +dog_status_t DOG_CALLCONV dog_read(dog_handle_t handle, + dog_fileid_t fileid, + dog_size_t offset, + dog_size_t length, + void *buffer); + + +dog_status_t DOG_CALLCONV dog_write(dog_handle_t handle, + dog_fileid_t fileid, + dog_size_t offset, + dog_size_t length, + const void *buffer); + + +dog_status_t DOG_CALLCONV dog_get_size(dog_handle_t handle, + dog_fileid_t fileid, + dog_size_t *size); + + +dog_status_t DOG_CALLCONV dog_get_time(dog_handle_t handle, + dog_time_t *time); + + +dog_status_t DOG_CALLCONV dog_get_info(const char *scope, + const char *format, + dog_vendor_code_t vendor_code, + char **info); + + +dog_status_t DOG_CALLCONV dog_get_sessioninfo(dog_handle_t handle, + const char *format, + char **info); + + +void DOG_CALLCONV dog_free(char *info); + + +dog_status_t DOG_CALLCONV dog_update(const char *update_data, + char **ack_data); + + +dog_status_t DOG_CALLCONV dog_get_version(unsigned int *major_version, + unsigned int *minor_version, + unsigned int *build_server, + unsigned int *build_number, + dog_vendor_code_t vendor_code); + + +dog_status_t DOG_CALLCONV dog_datetime_to_dogtime(unsigned int day, + unsigned int month, + unsigned int year, + unsigned int hour, + unsigned int minute, + unsigned int second, + dog_time_t *time); + + +dog_status_t DOG_CALLCONV dog_dogtime_to_datetime(dog_time_t time, + unsigned int *day, + unsigned int *month, + unsigned int *year, + unsigned int *hour, + unsigned int *minute, + unsigned int *second); + +/** + * @} + */ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif /* __DOG_API_H__ */ diff --git a/LaiPuLaser/find_circles.lib b/LaiPuLaser/find_circles.lib new file mode 100644 index 0000000..eb82bcd Binary files /dev/null and b/LaiPuLaser/find_circles.lib differ diff --git a/LaiPuLaser/font/ARIAL.sl b/LaiPuLaser/font/ARIAL.sl new file mode 100644 index 0000000..ae9185e Binary files /dev/null and b/LaiPuLaser/font/ARIAL.sl differ diff --git a/LaiPuLaser/font/COMPLEX.SL b/LaiPuLaser/font/COMPLEX.SL new file mode 100644 index 0000000..038b709 Binary files /dev/null and b/LaiPuLaser/font/COMPLEX.SL differ diff --git a/LaiPuLaser/font/GOTHICE.SL b/LaiPuLaser/font/GOTHICE.SL new file mode 100644 index 0000000..ed64c3a Binary files /dev/null and b/LaiPuLaser/font/GOTHICE.SL differ diff --git a/LaiPuLaser/font/GOTHICG.SL b/LaiPuLaser/font/GOTHICG.SL new file mode 100644 index 0000000..0a65797 Binary files /dev/null and b/LaiPuLaser/font/GOTHICG.SL differ diff --git a/LaiPuLaser/font/GOTHICI.SL b/LaiPuLaser/font/GOTHICI.SL new file mode 100644 index 0000000..3bb8bb2 Binary files /dev/null and b/LaiPuLaser/font/GOTHICI.SL differ diff --git a/LaiPuLaser/font/GREEKC.SL b/LaiPuLaser/font/GREEKC.SL new file mode 100644 index 0000000..bb460e2 Binary files /dev/null and b/LaiPuLaser/font/GREEKC.SL differ diff --git a/LaiPuLaser/font/GREEKS.SL b/LaiPuLaser/font/GREEKS.SL new file mode 100644 index 0000000..8ad7795 Binary files /dev/null and b/LaiPuLaser/font/GREEKS.SL differ diff --git a/LaiPuLaser/font/ITALIC.SL b/LaiPuLaser/font/ITALIC.SL new file mode 100644 index 0000000..892e483 Binary files /dev/null and b/LaiPuLaser/font/ITALIC.SL differ diff --git a/LaiPuLaser/font/ITALICC.SL b/LaiPuLaser/font/ITALICC.SL new file mode 100644 index 0000000..61c9171 Binary files /dev/null and b/LaiPuLaser/font/ITALICC.SL differ diff --git a/LaiPuLaser/font/ITALICT.SL b/LaiPuLaser/font/ITALICT.SL new file mode 100644 index 0000000..c2f5470 Binary files /dev/null and b/LaiPuLaser/font/ITALICT.SL differ diff --git a/LaiPuLaser/font/MONOTXT.SL b/LaiPuLaser/font/MONOTXT.SL new file mode 100644 index 0000000..07814fa Binary files /dev/null and b/LaiPuLaser/font/MONOTXT.SL differ diff --git a/LaiPuLaser/font/README.TXT b/LaiPuLaser/font/README.TXT new file mode 100644 index 0000000..fed9b96 --- /dev/null +++ b/LaiPuLaser/font/README.TXT @@ -0,0 +1,7 @@ +ֿΪUCDOS16ʽֿ +չΪSLֿACADֿתΪʸʽֿ +֮ACADֿCTXT.SHXתΪHZ16S.SL(ֻк,д,ʼΪ״̬) +֮ACADֿHZTXT.SHXתΪHZ128F.SL(ֻк) +ܶACADֿXC01.SHXתΪHZ16.SL(ֻк) +ܶACADֿXC13.SHXתΪHZ128WB.SL(ֻк) +ܶACADֿXC15.SHXתΪHZ128LB.SL(ֻк) diff --git a/LaiPuLaser/font/ROMANC.SL b/LaiPuLaser/font/ROMANC.SL new file mode 100644 index 0000000..83629b8 Binary files /dev/null and b/LaiPuLaser/font/ROMANC.SL differ diff --git a/LaiPuLaser/font/ROMANS.SL b/LaiPuLaser/font/ROMANS.SL new file mode 100644 index 0000000..eeedb64 Binary files /dev/null and b/LaiPuLaser/font/ROMANS.SL differ diff --git a/LaiPuLaser/font/ROMANT.SL b/LaiPuLaser/font/ROMANT.SL new file mode 100644 index 0000000..0521817 Binary files /dev/null and b/LaiPuLaser/font/ROMANT.SL differ diff --git a/LaiPuLaser/font/RomanD.sl b/LaiPuLaser/font/RomanD.sl new file mode 100644 index 0000000..756d08f Binary files /dev/null and b/LaiPuLaser/font/RomanD.sl differ diff --git a/LaiPuLaser/font/RomanD0.sl b/LaiPuLaser/font/RomanD0.sl new file mode 100644 index 0000000..4b12677 Binary files /dev/null and b/LaiPuLaser/font/RomanD0.sl differ diff --git a/LaiPuLaser/font/RomanD1.sl b/LaiPuLaser/font/RomanD1.sl new file mode 100644 index 0000000..3c56bcc Binary files /dev/null and b/LaiPuLaser/font/RomanD1.sl differ diff --git a/LaiPuLaser/font/SCRIPTC.SL b/LaiPuLaser/font/SCRIPTC.SL new file mode 100644 index 0000000..4965ea8 Binary files /dev/null and b/LaiPuLaser/font/SCRIPTC.SL differ diff --git a/LaiPuLaser/font/SCRIPTS.SL b/LaiPuLaser/font/SCRIPTS.SL new file mode 100644 index 0000000..a4c712c Binary files /dev/null and b/LaiPuLaser/font/SCRIPTS.SL differ diff --git a/LaiPuLaser/font/Simplex1.sl b/LaiPuLaser/font/Simplex1.sl new file mode 100644 index 0000000..e2d60fa Binary files /dev/null and b/LaiPuLaser/font/Simplex1.sl differ diff --git a/LaiPuLaser/font/Simplex1_2MEIGUO.sl b/LaiPuLaser/font/Simplex1_2MEIGUO.sl new file mode 100644 index 0000000..16f4636 Binary files /dev/null and b/LaiPuLaser/font/Simplex1_2MEIGUO.sl differ diff --git a/LaiPuLaser/font/XC01.SL b/LaiPuLaser/font/XC01.SL new file mode 100644 index 0000000..41e6cdb Binary files /dev/null and b/LaiPuLaser/font/XC01.SL differ diff --git a/LaiPuLaser/font/XC02.SL b/LaiPuLaser/font/XC02.SL new file mode 100644 index 0000000..751c1f5 Binary files /dev/null and b/LaiPuLaser/font/XC02.SL differ diff --git a/LaiPuLaser/font/hand.jsf b/LaiPuLaser/font/hand.jsf new file mode 100644 index 0000000..4ef469d Binary files /dev/null and b/LaiPuLaser/font/hand.jsf differ diff --git a/LaiPuLaser/font/huashan.SL b/LaiPuLaser/font/huashan.SL new file mode 100644 index 0000000..6b9f02f Binary files /dev/null and b/LaiPuLaser/font/huashan.SL differ diff --git a/LaiPuLaser/font/huashan2.SL b/LaiPuLaser/font/huashan2.SL new file mode 100644 index 0000000..6b80e7b Binary files /dev/null and b/LaiPuLaser/font/huashan2.SL differ diff --git a/LaiPuLaser/font/huashan2_0ld.SL b/LaiPuLaser/font/huashan2_0ld.SL new file mode 100644 index 0000000..29c8b22 Binary files /dev/null and b/LaiPuLaser/font/huashan2_0ld.SL differ diff --git a/LaiPuLaser/font/huashan_BAK.SL b/LaiPuLaser/font/huashan_BAK.SL new file mode 100644 index 0000000..ea8e5d0 Binary files /dev/null and b/LaiPuLaser/font/huashan_BAK.SL differ diff --git a/LaiPuLaser/font/huashan_old.SL b/LaiPuLaser/font/huashan_old.SL new file mode 100644 index 0000000..6c01bf0 Binary files /dev/null and b/LaiPuLaser/font/huashan_old.SL differ diff --git a/LaiPuLaser/hawkvis.dll b/LaiPuLaser/hawkvis.dll new file mode 100644 index 0000000..f10956a Binary files /dev/null and b/LaiPuLaser/hawkvis.dll differ diff --git a/LaiPuLaser/hawkvisctrlctrl1.cpp b/LaiPuLaser/hawkvisctrlctrl1.cpp new file mode 100644 index 0000000..0ba6843 --- /dev/null +++ b/LaiPuLaser/hawkvisctrlctrl1.cpp @@ -0,0 +1,19 @@ +// Microsoft Visual C++ IDispatch װ + +// ע: Ҫ޸Ĵļݡ +// Microsoft Visual C++ ɣ޸Ľǡ + + +#include "stdafx.h" +#include "hawkvisctrlctrl1.h" + +///////////////////////////////////////////////////////////////////////////// +// CHawkvisctrlctrl1 + +IMPLEMENT_DYNCREATE(CHawkvisctrlctrl1, CWnd) + +///////////////////////////////////////////////////////////////////////////// +// CHawkvisctrlctrl1 + +///////////////////////////////////////////////////////////////////////////// +// CHawkvisctrlctrl1 diff --git a/LaiPuLaser/hawkvisctrlctrl1.h b/LaiPuLaser/hawkvisctrlctrl1.h new file mode 100644 index 0000000..372e786 --- /dev/null +++ b/LaiPuLaser/hawkvisctrlctrl1.h @@ -0,0 +1,856 @@ +#pragma once + +// Microsoft Visual C++ IDispatch װ + +// ע: Ҫ޸Ĵļݡ +// Microsoft Visual C++ ɣ޸Ľǡ + +///////////////////////////////////////////////////////////////////////////// +// CHawkvisctrlctrl1 װ + +class CHawkvisctrlctrl1 : public CWnd +{ +protected: + DECLARE_DYNCREATE(CHawkvisctrlctrl1) +public: + CLSID const& GetClsid() + { + static CLSID const clsid + = { 0x14751459, 0x7465, 0x4401, { 0x80, 0x26, 0x7F, 0xDB, 0x68, 0x6D, 0xA0, 0x4F } }; + return clsid; + } + virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, + const RECT& rect, CWnd* pParentWnd, UINT nID, + CCreateContext* pContext = NULL) + { + return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); + } + + BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, + UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE, + BSTR bstrLicKey = NULL) + { + return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID, + pPersist, bStorage, bstrLicKey); + } + +// +public: + + +// +public: + +// _DHawkvisCtrl + +// Functions +// + + void AboutBox() + { + InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void ReadImage() + { + InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + BOOL CreateShapeModel(unsigned char nShapeModelID) + { + BOOL result; + static BYTE parms[] = VTS_UI1 ; + InvokeHelper(0x3, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nShapeModelID); + return result; + } + BOOL SaveShapeModel(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x4, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL LoadShapeModel(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL ZoomFitWindow() + { + BOOL result; + InvokeHelper(0x6, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL ZoomIn() + { + BOOL result; + InvokeHelper(0x7, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL ZoomOut() + { + BOOL result; + InvokeHelper(0x8, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL ZoomImageSize() + { + BOOL result; + InvokeHelper(0x9, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + void Rotate180() + { + InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void AffineTransPoint2d(float fInputX, float fInputY, float fTheta, float fScaleX, float fScaleY, float fOrgX, float fOrgY, float * pOutputX, float * pOutputY) + { + static BYTE parms[] = VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_R4 VTS_PR4 VTS_PR4 ; + InvokeHelper(0x15, DISPATCH_METHOD, VT_EMPTY, NULL, parms, fInputX, fInputY, fTheta, fScaleX, fScaleY, fOrgX, fOrgY, pOutputX, pOutputY); + } + BOOL CreateNCCModel(unsigned char nNCCModelID) + { + BOOL result; + static BYTE parms[] = VTS_UI1 ; + InvokeHelper(0x1b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nNCCModelID); + return result; + } + BOOL SaveNCCModel(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x1c, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL LoadNCCModel(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x1d, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL WriteImage(LPCTSTR pFilePath, LPCTSTR pFileName) + { + BOOL result; + static BYTE parms[] = VTS_BSTR VTS_BSTR ; + InvokeHelper(0x25, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath, pFileName); + return result; + } + BOOL SetCrossShow(unsigned char btType, long lWidth, long lHeight, long lOrgX, long lOrgY, unsigned char btShow) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_UI1 ; + InvokeHelper(0x29, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, btType, lWidth, lHeight, lOrgX, lOrgY, btShow); + return result; + } + BOOL CalibCoorSys(double * pArrPixX, double * pArrPixY, double * pArrWorldX, double * pArrWorldY, long lNumsOfArray, double * pdbTheta, double * pdbScaleX, double * pdbScaleY, double * pdbOrgX, double * pdbOrgY) + { + BOOL result; + static BYTE parms[] = VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8 VTS_I4 VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8 ; + InvokeHelper(0x2a, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pArrPixX, pArrPixY, pArrWorldX, pArrWorldY, lNumsOfArray, pdbTheta, pdbScaleX, pdbScaleY, pdbOrgX, pdbOrgY); + return result; + } + unsigned long DisplayRectangle(long nTopLeftX, long nTopLeftY, long nRightBottomX, long nRightBottomY, long nLineColor, BOOL bFillUp, long nFillColor) + { + unsigned long result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_BOOL VTS_I4 ; + InvokeHelper(0x2f, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, nTopLeftX, nTopLeftY, nRightBottomX, nRightBottomY, nLineColor, bFillUp, nFillColor); + return result; + } + unsigned long DisplayStaticRectangle(long nTopLeftX, long nTopLeftY, long nRightBottomX, long nRightBottomY, long nLineColor, BOOL bFillUp, long nFillColor) + { + unsigned long result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_BOOL VTS_I4 ; + InvokeHelper(0x30, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, nTopLeftX, nTopLeftY, nRightBottomX, nRightBottomY, nLineColor, bFillUp, nFillColor); + return result; + } + unsigned long DisplayText(LPCTSTR pStrText, long nTopLeftX, long nTopLeftY, long nRightBottomX, long nRightBottomY, long nColor) + { + unsigned long result; + static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x34, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, pStrText, nTopLeftX, nTopLeftY, nRightBottomX, nRightBottomY, nColor); + return result; + } + unsigned long DisplayStaticText(LPCTSTR pStrText, long nTopLeftX, long nTopLeftY, long nRightBottomX, long nRightBottomY, long nColor) + { + unsigned long result; + static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x35, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, pStrText, nTopLeftX, nTopLeftY, nRightBottomX, nRightBottomY, nColor); + return result; + } + BOOL GetCurrentLocation(long lMouseX, long lMouseY, long * X, long * Y) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_PI4 VTS_PI4 ; + InvokeHelper(0x37, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, lMouseX, lMouseY, X, Y); + return result; + } + BOOL GetPixelValue(long X, long Y, unsigned char * Value) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_PUI1 ; + InvokeHelper(0x38, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, X, Y, Value); + return result; + } + BOOL FindShapeModel(long lShapeModelID, VARIANT * pdbRow, VARIANT * pdbCol, VARIANT * pdbAngle, VARIANT * pdbScale, VARIANT * pdbScore, long * plNumMatches) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PI4 ; + InvokeHelper(0x3b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, lShapeModelID, pdbRow, pdbCol, pdbAngle, pdbScale, pdbScore, plNumMatches); + return result; + } + BOOL FindNCCModel(unsigned char nShapeModelID, VARIANT * pdbRow, VARIANT * pdbCol, VARIANT * pdbAngle, VARIANT * pdbScore, unsigned char * pCount) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PUI1 ; + InvokeHelper(0x3c, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nShapeModelID, pdbRow, pdbCol, pdbAngle, pdbScore, pCount); + return result; + } + BOOL Binaryzation(signed char threshold) + { + BOOL result; + static BYTE parms[] = VTS_I1 ; + InvokeHelper(0x3d, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, threshold); + return result; + } + BOOL RecoverOriginImage() + { + BOOL result; + InvokeHelper(0x3e, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL GenGrayImage(VARIANT pPixArray, unsigned long ulHeight, unsigned long ulWidth) + { + BOOL result; + static BYTE parms[] = VTS_VARIANT VTS_UI4 VTS_UI4 ; + InvokeHelper(0x3f, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, &pPixArray, ulHeight, ulWidth); + return result; + } + BOOL GenColorImage(VARIANT pPixArray, unsigned long ulHeight, unsigned long ulWidth) + { + BOOL result; + static BYTE parms[] = VTS_VARIANT VTS_UI4 VTS_UI4 ; + InvokeHelper(0x40, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, &pPixArray, ulHeight, ulWidth); + return result; + } + BOOL MeasureEdge(long centre_x, long centre_y, long width, long height, double angle, float sigma, long roiWidth, long threshold, unsigned char direction, unsigned char darkAndbright, long gap, double * pos_begin_x, double * pos_begin_y, double * pos_end_x, double * pos_end_y) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_R8 VTS_R4 VTS_I4 VTS_I4 VTS_UI1 VTS_UI1 VTS_I4 VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8 ; + InvokeHelper(0x41, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, centre_x, centre_y, width, height, angle, sigma, roiWidth, threshold, direction, darkAndbright, gap, pos_begin_x, pos_begin_y, pos_end_x, pos_end_y); + return result; + } + BOOL MeasureCircle(long in_center_x, long in_center_y, long in_radius, long interval, double startAngle, double endAngle, long measurePosCount, long fit_position, double sigma, long threshold, long riowidth, double * out_center_x, double * out_enter_y, double * out_radius) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_R8 VTS_R8 VTS_I4 VTS_I4 VTS_R8 VTS_I4 VTS_I4 VTS_PR8 VTS_PR8 VTS_PR8 ; + InvokeHelper(0x42, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, in_center_x, in_center_y, in_radius, interval, startAngle, endAngle, measurePosCount, fit_position, sigma, threshold, riowidth, out_center_x, out_enter_y, out_radius); + return result; + } + BOOL CrossLineLine(long l1_point1_x, long l1_point1_y, long l1_point2_x, long l1_point2_y, long l2_point1_x, long l2_point1_y, long l2_point2_x, long l2_point2_y, double * cross_x, double * cross_y) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_PR8 VTS_PR8 ; + InvokeHelper(0x49, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, l1_point1_x, l1_point1_y, l1_point2_x, l1_point2_y, l2_point1_x, l2_point1_y, l2_point2_x, l2_point2_y, cross_x, cross_y); + return result; + } + unsigned long DisplayLine(long start_x, long start_y, long end_x, long end_y, unsigned long nLineColor) + { + unsigned long result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_UI4 ; + InvokeHelper(0x4a, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, start_x, start_y, end_x, end_y, nLineColor); + return result; + } + BOOL DisplayCross(long CenterX, long CenterY, long Thickness, long Length, long LineColor, BOOL bFill, long nFillColor) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_BOOL VTS_I4 ; + InvokeHelper(0x4b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, CenterX, CenterY, Thickness, Length, LineColor, bFill, nFillColor); + return result; + } + BOOL InvalidateAndUpdateControl() + { + BOOL result; + InvokeHelper(0x4c, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Basler_OpenCamera() + { + BOOL result; + InvokeHelper(0x4d, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Basler_CloseCamera() + { + BOOL result; + InvokeHelper(0x4e, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Basler_GetOneFrame() + { + BOOL result; + InvokeHelper(0x4f, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Basler_GetExposureRange(long * min, long * max) + { + BOOL result; + static BYTE parms[] = VTS_PI4 VTS_PI4 ; + InvokeHelper(0x50, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, min, max); + return result; + } + BOOL Basler_GetExposureTime(long * exposureTime) + { + BOOL result; + static BYTE parms[] = VTS_PI4 ; + InvokeHelper(0x51, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, exposureTime); + return result; + } + BOOL Basler_SetExposureTime(long exposureTime) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x52, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, exposureTime); + return result; + } + BOOL Basler_SetGain(long gain) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x53, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, gain); + return result; + } + void ClearAllObject() + { + InvokeHelper(0x54, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void ClearGraphicObject() + { + InvokeHelper(0x55, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + BOOL SaveShapeModelByID(unsigned char ID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x56, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, ID, pFilePath); + return result; + } + BOOL SaveNCCModelByID(unsigned char ID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x57, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, ID, pFilePath); + return result; + } + BOOL LoadShapeModelByID(unsigned char ID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x58, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, ID, pFilePath); + return result; + } + BOOL LoadNCCModelByID(unsigned char ID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x59, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, ID, pFilePath); + return result; + } + BOOL CreateCodeReader(unsigned char nCodeReaderID) + { + BOOL result; + static BYTE parms[] = VTS_UI1 ; + InvokeHelper(0x5a, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeReaderID); + return result; + } + BOOL LoadCodeReader(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL SaveCodeReader(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5c, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL ReadCode(unsigned char codeReaderID, BSTR * codeString, long speed) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_PBSTR VTS_I4 ; + InvokeHelper(0x5d, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, codeReaderID, codeString, speed); + return result; + } + BOOL GradeCode(unsigned char codeReaderID, VARIANT * codeResultScore, VARIANT * codeResultGrade, long speed) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_PVARIANT VTS_PVARIANT VTS_I4 ; + InvokeHelper(0x5e, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, codeReaderID, codeResultScore, codeResultGrade, speed); + return result; + } + BOOL Contrast(float modulus) + { + BOOL result; + static BYTE parms[] = VTS_R4 ; + InvokeHelper(0x5f, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, modulus); + return result; + } + BOOL Sharpen(unsigned char elem_width, unsigned char elem_height, float modulus) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_UI1 VTS_R4 ; + InvokeHelper(0x60, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, elem_width, elem_height, modulus); + return result; + } + void RotateLeft() + { + InvokeHelper(0x65, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void RotateRight() + { + InvokeHelper(0x66, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + BOOL Baumer_OpenCamera() + { + BOOL result; + InvokeHelper(0x67, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + long Baumer_InitDevices() + { + long result; + InvokeHelper(0x68, DISPATCH_METHOD, VT_I4, (void*)&result, NULL); + return result; + } + BOOL Baumer_GetOneFrame() + { + BOOL result; + InvokeHelper(0x69, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Baumer_GetContinueFrame() + { + BOOL result; + InvokeHelper(0x6a, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Baumer_SetExporeTime(long exporeTime) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x6b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, exporeTime); + return result; + } + BOOL Baumer_CloseCamera() + { + BOOL result; + InvokeHelper(0x6d, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL Baumer_SetGain(double gain) + { + BOOL result; + static BYTE parms[] = VTS_R8 ; + InvokeHelper(0x6e, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, gain); + return result; + } + BOOL Baumer_ReleaseDevices() + { + BOOL result; + InvokeHelper(0x6f, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL DLIB_CreateCodeReader(unsigned char nCodeReaderID) + { + BOOL result; + static BYTE parms[] = VTS_UI1 ; + InvokeHelper(0x70, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeReaderID); + return result; + } + BOOL DLIB_SaveCodeReader(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x71, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL DLIB_LoadCodeReader(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x72, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL DLIB_ReadCode(unsigned char nCodeReaderID, VARIANT * codeStrResult, long * codeCnt) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_PVARIANT VTS_PI4 ; + InvokeHelper(0x73, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeReaderID, codeStrResult, codeCnt); + return result; + } + BOOL OpenImage(LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x75, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pFilePath); + return result; + } + BOOL DLIB_SaveCodeReaderByID(unsigned char nCodeReaderID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x76, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeReaderID, pFilePath); + return result; + } + BOOL DLIB_LoadCodeReaderByID(unsigned char nCodeReaderID, LPCTSTR pFilePath) + { + BOOL result; + static BYTE parms[] = VTS_UI1 VTS_BSTR ; + InvokeHelper(0x77, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeReaderID, pFilePath); + return result; + } + BOOL DLIB_GetSelCodeLocation(long nCodeSel, long * nLeft, long * nRight, long * nTop, long * nBottom) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PI4 VTS_PI4 VTS_PI4 VTS_PI4 ; + InvokeHelper(0x78, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCodeSel, nLeft, nRight, nTop, nBottom); + return result; + } + BOOL SetControlLanguage(long nLanguage) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x79, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nLanguage); + return result; + } + BOOL MV_EnumCameras(long * camerasCount) + { + BOOL result; + static BYTE parms[] = VTS_PI4 ; + InvokeHelper(0x7a, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, camerasCount); + return result; + } + BOOL MV_QueryCameraDescribeByIdx(long cameraIdx, BSTR * describe) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PBSTR ; + InvokeHelper(0x7b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, cameraIdx, describe); + return result; + } + BOOL MV_SelectAdapterByIdx(long index) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x7c, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, index); + return result; + } + BOOL MV_SelectAdapterByDescribe(LPCTSTR describe) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x7d, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, describe); + return result; + } + BOOL MV_GetOneFrame() + { + BOOL result; + InvokeHelper(0x7e, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL MV_GetContinueFrame() + { + BOOL result; + InvokeHelper(0x7f, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL MV_OpenCamera() + { + BOOL result; + InvokeHelper(0x80, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL MV_CloseCamera() + { + BOOL result; + InvokeHelper(0x81, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL MV_SetCameraExpTime(long nExpTime) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x82, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nExpTime); + return result; + } + BOOL MV_GetCameraExpTimeRange(long * pnMin, long * pnMax) + { + BOOL result; + static BYTE parms[] = VTS_PI4 VTS_PI4 ; + InvokeHelper(0x83, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, pnMin, pnMax); + return result; + } + BOOL MV_GetReversal(long direction, BOOL * enable) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PBOOL ; + InvokeHelper(0x84, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, direction, enable); + return result; + } + BOOL MV_SetReversal(long direction, BOOL * enable) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PBOOL ; + InvokeHelper(0x85, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, direction, enable); + return result; + } + BOOL MV_ShowSettingDialog(long nPage) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x86, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nPage); + return result; + } + BOOL MV_SetGain(long gain) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x87, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, gain); + return result; + } + BOOL MV_GetGain(long * gain) + { + BOOL result; + static BYTE parms[] = VTS_PI4 ; + InvokeHelper(0x88, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, gain); + return result; + } + BOOL MV_GetGainRange(long * nMin, long * nMax) + { + BOOL result; + static BYTE parms[] = VTS_PI4 VTS_PI4 ; + InvokeHelper(0x89, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nMin, nMax); + return result; + } + BOOL Measure1D(long StartX, long StartY, long EndX, long EndY, long threshold, double sigma, long ROI, long Transition, long * Count, VARIANT * ResultX, VARIANT * ResultY, VARIANT * ResultAmplitude, VARIANT * ResultDistance) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_R8 VTS_I4 VTS_I4 VTS_PI4 VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT ; + InvokeHelper(0x8a, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, StartX, StartY, EndX, EndY, threshold, sigma, ROI, Transition, Count, ResultX, ResultY, ResultAmplitude, ResultDistance); + return result; + } + BOOL MeasureExtremum(long CenterX, long CenterY, long LongEdge, long ShortEdge, float angle, long threshold, long ROI, float sigma, long Transition, long StartEdge, long gap, float * ResultNearestX, float * ResultNearestY, float * ResultFarthestX, float * ResultFarthestY) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_R4 VTS_I4 VTS_I4 VTS_R4 VTS_I4 VTS_I4 VTS_I4 VTS_PR4 VTS_PR4 VTS_PR4 VTS_PR4 ; + InvokeHelper(0x8b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, CenterX, CenterY, LongEdge, ShortEdge, angle, threshold, ROI, sigma, Transition, StartEdge, gap, ResultNearestX, ResultNearestY, ResultFarthestX, ResultFarthestY); + return result; + } + void DisplayRotateRectangle(long CenterX, long CenterY, long LongEdge, long ShortEdge, float angle, long Thickness, unsigned long LineColor) + { + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_R4 VTS_I4 VTS_UI4 ; + InvokeHelper(0x8c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, CenterX, CenterY, LongEdge, ShortEdge, angle, Thickness, LineColor); + } + unsigned long DisplayRotateLine(long CenterX, long CenterY, float angle, long Length, long Thickness, unsigned long LineColor) + { + unsigned long result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_R4 VTS_I4 VTS_I4 VTS_UI4 ; + InvokeHelper(0x8d, DISPATCH_METHOD, VT_UI4, (void*)&result, parms, CenterX, CenterY, angle, Length, Thickness, LineColor); + return result; + } + void DisplayArrow(long StartX, long StartY, long EndX, long EndY, unsigned long Thickness, unsigned long LineColor, float ArrowHeadRate) + { + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_UI4 VTS_UI4 VTS_R4 ; + InvokeHelper(0x8e, DISPATCH_METHOD, VT_EMPTY, NULL, parms, StartX, StartY, EndX, EndY, Thickness, LineColor, ArrowHeadRate); + } + void SetZoomParams(long OrgX, long OrgY, float Scale) + { + static BYTE parms[] = VTS_I4 VTS_I4 VTS_R4 ; + InvokeHelper(0x8f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, OrgX, OrgY, Scale); + } + BOOL EditDataFilter(unsigned long FilterID, unsigned short FilterType, unsigned long width, float sigma) + { + BOOL result; + static BYTE parms[] = VTS_UI4 VTS_UI2 VTS_UI4 VTS_R4 ; + InvokeHelper(0x90, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, FilterID, FilterType, width, sigma); + return result; + } + BOOL DataFiltering(unsigned long FilterID, double inData, double * outData) + { + BOOL result; + static BYTE parms[] = VTS_UI4 VTS_R8 VTS_PR8 ; + InvokeHelper(0x91, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, FilterID, inData, outData); + return result; + } + void DeleteFilter(unsigned long FilterID) + { + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(0x92, DISPATCH_METHOD, VT_EMPTY, NULL, parms, FilterID); + } + void ResetFilter(unsigned long FilterID) + { + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(0x93, DISPATCH_METHOD, VT_EMPTY, NULL, parms, FilterID); + } + void GetZoomParams(long * OrgX, long * OrgY, float * Scale) + { + static BYTE parms[] = VTS_PI4 VTS_PI4 VTS_PR4 ; + InvokeHelper(0x94, DISPATCH_METHOD, VT_EMPTY, NULL, parms, OrgX, OrgY, Scale); + } + BOOL AVT_APISystemStartUp() + { + BOOL result; + InvokeHelper(0x95, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_APISystemShutDown() + { + BOOL result; + InvokeHelper(0x96, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_EnumCameras(long * nCamerasCount) + { + BOOL result; + static BYTE parms[] = VTS_PI4 ; + InvokeHelper(0x97, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nCamerasCount); + return result; + } + BOOL AVT_QueryCameraIDByIdx(long nIndex, BSTR * CameraID) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_PBSTR ; + InvokeHelper(0x98, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nIndex, CameraID); + return result; + } + BOOL AVT_SelectCameraDeviceByIdx(long nIndex) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x99, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nIndex); + return result; + } + BOOL AVT_SelectCameraDeviceByCameraID(LPCTSTR CameraID) + { + BOOL result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x9a, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, CameraID); + return result; + } + BOOL AVT_OpenCamera() + { + BOOL result; + InvokeHelper(0x9b, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_CloseCamera() + { + BOOL result; + InvokeHelper(0x9c, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_GetOneFrame() + { + BOOL result; + InvokeHelper(0x9d, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_GetContinueFrames() + { + BOOL result; + InvokeHelper(0x9e, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL); + return result; + } + BOOL AVT_SetImageReverse(BOOL bReverseXStatus, BOOL bReverseYStatus) + { + BOOL result; + static BYTE parms[] = VTS_BOOL VTS_BOOL ; + InvokeHelper(0x9f, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, bReverseXStatus, bReverseYStatus); + return result; + } + BOOL AVT_SetExposureTime(long nExpTime) + { + BOOL result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0xa0, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nExpTime); + return result; + } + BOOL AVT_GetExposureTime(long * nExpTime) + { + BOOL result; + static BYTE parms[] = VTS_PI4 ; + InvokeHelper(0xa1, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nExpTime); + return result; + } + BOOL AVT_GetExposureTimeRange(long * nExpTimeMin, long * nExpTimeMax) + { + BOOL result; + static BYTE parms[] = VTS_PI4 VTS_PI4 ; + InvokeHelper(0xa2, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nExpTimeMin, nExpTimeMax); + return result; + } + BOOL AVT_SetGain(double dbGain) + { + BOOL result; + static BYTE parms[] = VTS_R8 ; + InvokeHelper(0xa3, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, dbGain); + return result; + } + BOOL AVT_GetGain(double * dbGain) + { + BOOL result; + static BYTE parms[] = VTS_PR8 ; + InvokeHelper(0xa4, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, dbGain); + return result; + } + BOOL AVT_GetGainRange(double * dbGainMin, double * dbGainMax) + { + BOOL result; + static BYTE parms[] = VTS_PR8 VTS_PR8 ; + InvokeHelper(0xa5, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, dbGainMin, dbGainMax); + return result; + } + BOOL AVT_SetGainAutoStatus(BOOL bStatus) + { + BOOL result; + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0xa6, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, bStatus); + return result; + } + BOOL AVT_GetGainAutoStatus(BOOL * bStatus) + { + BOOL result; + static BYTE parms[] = VTS_PBOOL ; + InvokeHelper(0xa7, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, bStatus); + return result; + } + BOOL AVT_SetGainAutoRange(double dbGainAutoMin, double dbGainAutoMax) + { + BOOL result; + static BYTE parms[] = VTS_R8 VTS_R8 ; + InvokeHelper(0xa8, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, dbGainAutoMin, dbGainAutoMax); + return result; + } + BOOL AVT_SetDSPSubregion(long nRectTop, long nRectBottom, long nRectLeft, long nRectRight) + { + BOOL result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0xa9, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, nRectTop, nRectBottom, nRectLeft, nRectRight); + return result; + } + BOOL RemoveGraphicObject(unsigned long ObjID) + { + BOOL result; + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(0xaa, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, ObjID); + return result; + } + +// Properties +// + + + +}; diff --git a/LaiPuLaser/hlp/HTMLDefines.h b/LaiPuLaser/hlp/HTMLDefines.h new file mode 100644 index 0000000..a79aaf4 --- /dev/null +++ b/LaiPuLaser/hlp/HTMLDefines.h @@ -0,0 +1,443 @@ + +// (ID_* IDM_*) +#define HID_WAFER_1 0x10004 +#define HID_WAFER_2 0x10005 +#define HID_OPEN_CUT_FILE2 0x10005 +#define HID_STATUSBAR_PANE1 0x10078 +#define HID_STATUSBAR_PANE2 0x10079 +#define HID_VIEW_CUSTOMIZE 0x1007E +#define HID_WINDOW_MANAGER 0x10083 +#define HID_VIEW_OUTPUTWND 0x10084 +#define HID_VIEW_PROPERTIESWND 0x10085 +#define HID_SORTPROPERTIES 0x10086 +#define HID_PROPERTIES1 0x10087 +#define HID_PROPERTIES2 0x10088 +#define HID_EXPAND_ALL 0x10089 +#define HID_VIEW_NAVIGATION 0x10093 +#define HID_SET_STYLE 0x1009B +#define HID_VIEW_APPLOOK_WIN_2000 0x1009C +#define HID_VIEW_APPLOOK_OFF_XP 0x1009D +#define HID_VIEW_APPLOOK_WIN_XP 0x1009E +#define HID_VIEW_APPLOOK_OFF_2003 0x1009F +#define HID_VIEW_APPLOOK_VS_2005 0x100A0 +#define HID_VIEW_APPLOOK_VS_2008 0x100A1 +#define HID_VIEW_APPLOOK_OFF_2007_BLUE 0x100A2 +#define HID_VIEW_APPLOOK_OFF_2007_BLACK 0x100A3 +#define HID_VIEW_APPLOOK_OFF_2007_SILVER 0x100A4 +#define HID_VIEW_APPLOOK_OFF_2007_AQUA 0x100A5 +#define HID_VIEW_APPLOOK_WINDOWS_7 0x100A6 +#define HID_TOOLS_OPTIONS 0x100A7 +#define HID_VIEW_CAPTION_BAR 0x100A8 +#define HID_OK 0x10418 +#define HID_CONTINUOUS_MARK 0x1043C +#define HID_SEL_MARK 0x1043D +#define HID_PROPERTY_COMB 0x18002 +#define HID_MOUSE_POINT 0x18003 +#define HID_MOUSE_RECT 0x18004 +#define HID_MOUSE_LINE 0x18005 +#define HID_BUTTON32774 0x18006 +#define HID_SLE_ALL 0x18007 +#define HID_REV_SEL_OBJ 0x18008 +#define HID_DEL_SEL_OBJ 0x18009 +#define HID_ZOOM_IN 0x1800B +#define HID_ZOOM_OUT 0x1800C +#define HID_UNDO 0x1800D +#define HID_REDO 0x1800E +#define HID_MOUSE_CIRLE 0x1800F +#define HID_ 0x18010 +#define HID_MOUSE_ARC 0x18010 +#define HID_MORROR_H 0x18011 +#define HID_MIRROR_V 0x18012 +#define HID_ROTATO 0x18013 +#define HID_DIS_MEASURE 0x18014 +#define HID_MOUSE_CIRCLE 0x18015 +#define HID_MOVE_TO_CENTER 0x18016 +#define HID_CUT 0x18017 +#define HID_EXTEND 0x18018 +#define HID_BREAK 0x18019 +#define HID_CHAMFER 0x1801A +#define HID_FILLET 0x1801B +#define HID_EXPLODE 0x1801C +#define HID_ARRAY 0x1801D +#define HID_TXT 0x1801E +#define HID_DELETE 0x18021 +#define HID_MIRROR_H 0x18022 +#define HID_ROTATO_90_L 0x18023 +#define HID_ROTATO_90_R 0x18024 +#define HID_JOIN 0x18025 +#define HID_BREAK_AT_POINT 0x18026 +#define HID_SEL_VIEW 0x18028 +#define HID_WORK_SPACE_VIEW 0x18029 +#define HID_MOVE 0x1802A +#define HID_COPY 0x1802B +#define HID_POLYGON 0x1802C +#define HID_CONSTRUCT_LIN 0x1802D +#define HID_PLINE 0x1802E +#define HID_XLINE 0x1802F +#define HID_ELLIPSE 0x18030 +#define HID_ELLIPSE_ARC 0x18031 +#define HID_TOOL_POINT 0x18032 +#define HID_REVERSE 0x18033 +#define HID_ADD_NODE 0x18034 +#define HID_BUTTON32821 0x18035 +#define HID_DEL_NODE 0x18035 +#define HID_MOUSE_TXT 0x18036 +#define HID_Menu 0x18037 +#define HID_MENU_PLT 0x18038 +#define HID_32825 0x18039 +#define HID_OPEN_PLT 0x1803A +#define HID_32827 0x1803B +#define HID_32828 0x1803C +#define HID_WRITE_DEVICE_PAR 0x1803D +#define HID_EXPORT_DEVICE_PAR 0x1803E +#define HID_Menu32831 0x1803F +#define HID_PLATFORM_CTRL 0x18040 +#define HID_32833 0x18041 +#define HID_DEVICE_TEST 0x18042 +#define HID_Menu32835 0x18043 +#define HID_32836 0x18044 +#define HID_AREA_COMPENSET 0x18045 +#define HID_AREA_COMPENSATE 0x18046 +#define HID_OUTPUT_CMD 0x18047 +#define HID_OUTPUT_LOG 0x18048 +#define HID_PANE_DRAW_PROP 0x18049 +#define HID_PANE_DEVICE_PROP 0x1804A +#define HID_FILL 0x1804B +#define HID_BARCODE 0x1804C +#define HID_FILE_SAVE1 0x1804D +#define HID_FILE_OPEN1 0x1804E +#define HID_32847 0x1804F +#define HID_AUTHORITY 0x18050 +#define HID_32849 0x18051 +#define HID_OBJ_COMPONENT 0x18052 +#define HID_32851 0x18053 +#define HID_32852 0x18054 +#define HID_MARK_AREA 0x18055 +#define HID_OPEN_FILE 0x18056 +#define HID_SAVE_FILE_AS 0x18057 +#define HID_SAVE_FILE 0x18058 +#define HID_SET_POINT 0x18059 +#define HID_SET_MARK 0x1805A +#define HID_PT_MOVE_TO_CCD 0x1805B +#define HID_Menu32860 0x1805C +#define HID_CTRL_DLG 0x1805D +#define HID_32862 0x1805E +#define HID_USER_MGR 0x1805F +#define HID_DEVICE_PAR 0x18060 +#define HID_32865 0x18061 +#define HID_TH_TEST_DLG 0x18062 +#define HID_32867 0x18063 +#define HID_SAVE_FILE_AS2 0x18064 + +// ʾ(IDP_*) +#define HIDP_OLE_INIT_FAILED 0x30064 +#define HIDP_SOCKETS_INIT_FAILED 0x30068 + +// Դ(IDR_*) +#define HIDR_HELP_MENU 0x20076 +#define HIDR_POPUP_EDIT 0x20077 +#define HIDR_MAINFRAME 0x2007F +#define HIDR_MAINFRAME_256 0x20080 +#define HIDR_LaiPuLaserTYPE 0x20081 +#define HIDR_LAIPU_LASER_MENU 0x20082 +#define HIDR_OUTPUT_POPUP 0x20090 +#define HIDR_PROPERTIES 0x20091 +#define HIDR_THEME_MENU 0x2009A + +// Ի(IDD_*) +#define HIDD_ABOUTBOX 0x20064 +#define HIDD_VARIABLE_STRING_DLG 0x200B8 +#define HIDD_STD_MARK_CTR 0x200B9 +#define HIDD_VAL_STR_FIXED_DLG 0x200BA +#define HIDD_VAL_STR_DATE_DLG 0x200C4 +#define HIDD_TEST_DLG 0x200C6 +#define HIDD_ARRAY_DLG 0x200C7 +#define HIDD_VAL_STR_TIME_DLG 0x200C8 +#define HIDD_VAL_STR_SN_DLG 0x200C9 +#define HIDD_FONT_DLG 0x200CA +#define HIDD_PLATFORM_DLG 0x200CC +#define HIDD_BYD_CTRL_DLG 0x200D0 +#define HIDD_SIMULATE_TRACE 0x200D3 +#define HIDD_FILL_DLG 0x200DA +#define HIDD_AUTHORITY_MGR 0x20142 +#define HIDD_CREAT_ACCOUNT 0x20143 +#define HIDD_OBJ_COMPONENT_A_DLG 0x20144 +#define HIDD_MARK_AREA 0x20145 +#define HIDD_MARK_PAR 0x20146 +#define HIDD_WORK_TIME 0x20147 +#define HIDD_CCD_CTRL_DLG 0x20148 +#define HIDD_OBJ_LIST 0x20149 +#define HIDD_OBJ_COMPONENT__DLG 0x2014A +#define HIDD_USER_MGR 0x2014C +#define HIDD_PROGRESS_DLG 0x20157 +#define HIDD_IS3000_INFO_DLG 0x20159 +#define HIDD_DN_CUT_CTRL_DLG 0x20159 +#define HIDD_CAMERA_DLG 0x20159 +#define HIDD_IS3000_SLOT_DLG 0x2015A +#define HIDD_IS3000_CTRL_DLG 0x2015A +#define HIDD_DEVICE_CTRL_DLG 0x2015A +#define HIDD_CREAT_ACCOUNT2 0x2015B +#define HIDD_SW_XL_FLOW_DLG 0x2015C +#define HIDD_ARRAY_DLG1 0x2015D +#define HIDD_ADJUST_OBJ_POS_DLG 0x2015D + +// ܿؼ(IDW_*) +// This is a part of the Microsoft Foundation Classes C++ library. +// Copyright (C) Microsoft Corporation +// All rights reserved. +// +// This source code is only intended as a supplement to the +// Microsoft Foundation Classes Reference and related +// electronic documentation provided with the library. +// See these sources for detailed information regarding the +// Microsoft Foundation Classes product. + +#ifndef __AFX_HH_H__ +#define __AFX_HH_H__ + +#pragma once + +#ifdef _AFX_MINREBUILD +#pragma component(minrebuild, off) +#endif + +// Non-Client HitTest help IDs +#define HID_HT_NOWHERE 0x40000 +#define HID_HT_CAPTION 0x40002 +#define HID_HT_HSCROLL 0x40006 +#define HID_HT_VSCROLL 0x40007 +#define HID_HT_MINBUTTON 0x40008 +#define HID_HT_MAXBUTTON 0x40009 +#define HID_HT_SIZE 0x40012 // alias: ID_HT_BORDER +#define HID_HT_OBJECT 0x40013 +#define HID_HT_CLOSE 0x40014 +#define HID_HT_HELP 0x40015 + +// WM_SYSCOMMAND help IDs +#define HID_SC_SIZE 0x1EF00 +#define HID_SC_MOVE 0x1EF01 +#define HID_SC_MINIMIZE 0x1EF02 +#define HID_SC_MAXIMIZE 0x1EF03 +#define HID_SC_NEXTWINDOW 0x1EF04 +#define HID_SC_PREVWINDOW 0x1EF05 +#define HID_SC_CLOSE 0x1EF06 +#define HID_SC_RESTORE 0x1EF12 +#define HID_SC_TASKLIST 0x1EF13 + +// File MRU and aliases +#define HID_FILE_MRU_FILE1 0x1E11F + +// Window menu list +#define HID_WINDOW_ALL 0x1EF1F + +// OLE menu and aliases +#define HID_OLE_VERB_1 0x1E21F + +// Commands (HID_*) +#define HID_FILE_NEW 0x1E100 +#define HID_FILE_OPEN 0x1E101 +#define HID_FILE_CLOSE 0x1E102 +#define HID_FILE_SAVE 0x1E103 +#define HID_FILE_SAVE_AS 0x1E104 +#define HID_FILE_PAGE_SETUP 0x1E105 +#define HID_FILE_PRINT_SETUP 0x1E106 +#define HID_FILE_PRINT 0x1E107 +#define HID_FILE_PRINT_DIRECT 0x1E108 +#define HID_FILE_PRINT_PREVIEW 0x1E109 +#define HID_FILE_UPDATE 0x1E10A +#define HID_FILE_SAVE_COPY_AS 0x1E10B +#define HID_FILE_SEND_MAIL 0x1E10C +#define HID_EDIT_CLEAR 0x1E120 +#define HID_EDIT_CLEAR_ALL 0x1E121 +#define HID_EDIT_COPY 0x1E122 +#define HID_EDIT_CUT 0x1E123 +#define HID_EDIT_FIND 0x1E124 +#define HID_EDIT_PASTE 0x1E125 +#define HID_EDIT_PASTE_LINK 0x1E126 +#define HID_EDIT_PASTE_SPECIAL 0x1E127 +#define HID_EDIT_REPEAT 0x1E128 +#define HID_EDIT_REPLACE 0x1E129 +#define HID_EDIT_SELECT_ALL 0x1E12A +#define HID_EDIT_UNDO 0x1E12B +#define HID_EDIT_REDO 0x1E12C +#define HID_WINDOW_NEW 0x1E130 +#define HID_WINDOW_ARRANGE 0x1E131 +#define HID_WINDOW_CASCADE 0x1E132 +#define HID_WINDOW_TILE_HORZ 0x1E133 +#define HID_WINDOW_TILE_VERT 0x1E134 +#define HID_WINDOW_SPLIT 0x1E135 +#define HID_APP_ABOUT 0x1E140 +#define HID_APP_EXIT 0x1E141 +#define HID_HELP_INDEX 0x1E142 +#define HID_HELP_FINDER 0x1E143 +#define HID_HELP_USING 0x1E144 +#define HID_CONTEXT_HELP 0x1E145 +#define HID_NEXT_PANE 0x1E150 +#define HID_PREV_PANE 0x1E151 +#define HID_FORMAT_FONT 0x1E160 +#define HID_OLE_INSERT_NEW 0x1E200 +#define HID_OLE_EDIT_LINKS 0x1E201 +#define HID_OLE_EDIT_CONVERT 0x1E202 +#define HID_OLE_EDIT_CHANGE_ICON 0x1E203 +#define HID_OLE_EDIT_PROPERTIES 0x1E204 +#define HID_VIEW_TOOLBAR 0x1E800 +#define HID_VIEW_STATUS_BAR 0x1E801 +#define HID_RECORD_FIRST 0x1E900 +#define HID_RECORD_LAST 0x1E901 +#define HID_RECORD_NEXT 0x1E902 +#define HID_RECORD_PREV 0x1E903 +#define HID_WIZBACK 0x13023 +#define HID_WIZNEXT 0x13024 +#define HID_WIZFINISH 0x13025 + +// Dialogs (AFX_HIDD_*) +#define AFX_HIDD_FILEOPEN 0x27004 +#define AFX_HIDD_FILESAVE 0x27005 +#define AFX_HIDD_FONT 0x27006 +#define AFX_HIDD_COLOR 0x27007 +#define AFX_HIDD_PRINT 0x27008 +#define AFX_HIDD_PRINTSETUP 0x27009 +#define AFX_HIDD_FIND 0x2700A +#define AFX_HIDD_REPLACE 0x2700B +#define AFX_HIDD_NEWTYPEDLG 0x27801 +#define AFX_HIDD_PRINTDLG 0x27802 +#define AFX_HIDD_PREVIEW_TOOLBAR 0x27803 +#define AFX_HIDD_PREVIEW_SHORTTOOLBAR 0x2780B +#define AFX_HIDD_INSERTOBJECT 0x27804 +#define AFX_HIDD_CHANGEICON 0x27805 +#define AFX_HIDD_CONVERT 0x27806 +#define AFX_HIDD_PASTESPECIAL 0x27807 +#define AFX_HIDD_EDITLINKS 0x27808 +#define AFX_HIDD_FILEBROWSE 0x27809 +#define AFX_HIDD_BUSY 0x2780A +#define AFX_HIDD_OBJECTPROPERTIES 0x2780C +#define AFX_HIDD_CHANGESOURCE 0x2780D + +// Prompts/Errors (AFX_HIDP_*) +#define AFX_HIDP_NO_ERROR_AVAILABLE 0x3F020 +#define AFX_HIDP_INVALID_FILENAME 0x3F100 +#define AFX_HIDP_FAILED_TO_OPEN_DOC 0x3F101 +#define AFX_HIDP_FAILED_TO_SAVE_DOC 0x3F102 +#define AFX_HIDP_ASK_TO_SAVE 0x3F103 +#define AFX_HIDP_FAILED_TO_CREATE_DOC 0x3F104 +#define AFX_HIDP_FILE_TOO_LARGE 0x3F105 +#define AFX_HIDP_FAILED_TO_START_PRINT 0x3F106 +#define AFX_HIDP_FAILED_TO_LAUNCH_HELP 0x3F107 +#define AFX_HIDP_INTERNAL_FAILURE 0x3F108 +#define AFX_HIDP_COMMAND_FAILURE 0x3F109 +#define AFX_HIDP_FAILED_MEMORY_ALLOC 0x3F10A +#define AFX_HIDP_UNREG_DONE 0x3F10B +#define AFX_HIDP_UNREG_FAILURE 0x3F10C +#define AFX_HIDP_DLL_LOAD_FAILED 0x3F10D +#define AFX_HIDP_DLL_BAD_VERSION 0x3F10E +#define AFX_HIDP_PARSE_INT 0x3F110 +#define AFX_HIDP_PARSE_REAL 0x3F111 +#define AFX_HIDP_PARSE_INT_RANGE 0x3F112 +#define AFX_HIDP_PARSE_REAL_RANGE 0x3F113 +#define AFX_HIDP_PARSE_STRING_SIZE 0x3F114 +#define AFX_HIDP_PARSE_RADIO_BUTTON 0x3F115 +#define AFX_HIDP_PARSE_BYTE 0x3F116 +#define AFX_HIDP_PARSE_UINT 0x3F117 +#define AFX_HIDP_PARSE_DATETIME 0x3F118 +#define AFX_HIDP_PARSE_CURRENCY 0x3F119 +#define AFX_HIDP_FAILED_INVALID_FORMAT 0x3F120 +#define AFX_HIDP_FAILED_INVALID_PATH 0x3F121 +#define AFX_HIDP_FAILED_DISK_FULL 0x3F122 +#define AFX_HIDP_FAILED_ACCESS_READ 0x3F123 +#define AFX_HIDP_FAILED_ACCESS_WRITE 0x3F124 +#define AFX_HIDP_FAILED_IO_ERROR_READ 0x3F125 +#define AFX_HIDP_FAILED_IO_ERROR_WRITE 0x3F126 +#define AFX_HIDP_STATIC_OBJECT 0x3F180 +#define AFX_HIDP_FAILED_TO_CONNECT 0x3F181 +#define AFX_HIDP_SERVER_BUSY 0x3F182 +#define AFX_HIDP_BAD_VERB 0x3F183 +#define AFX_HIDP_FAILED_TO_NOTIFY 0x3F185 +#define AFX_HIDP_FAILED_TO_LAUNCH 0x3F186 +#define AFX_HIDP_ASK_TO_UPDATE 0x3F187 +#define AFX_HIDP_FAILED_TO_UPDATE 0x3F188 +#define AFX_HIDP_FAILED_TO_REGISTER 0x3F189 +#define AFX_HIDP_FAILED_TO_AUTO_REGISTER 0x3F18A +#define AFX_HIDP_FAILED_TO_CONVERT 0x3F18B +#define AFX_HIDP_GET_NOT_SUPPORTED 0x3F18C +#define AFX_HIDP_SET_NOT_SUPPORTED 0x3F18D +#define AFX_HIDP_ASK_TO_DISCARD 0x3F18E +#define AFX_HIDP_FAILED_TO_CREATE 0x3F18F +#define AFX_HIDP_FAILED_MAPI_LOAD 0x3F190 +#define AFX_HIDP_INVALID_MAPI_DLL 0x3F191 +#define AFX_HIDP_FAILED_MAPI_SEND 0x3F192 +#define AFX_HIDP_FILE_NONE 0x3F1A0 +#define AFX_HIDP_FILE_GENERIC 0x3F1A1 +#define AFX_HIDP_FILE_NOT_FOUND 0x3F1A2 +#define AFX_HIDP_FILE_BAD_PATH 0x3F1A3 +#define AFX_HIDP_FILE_TOO_MANY_OPEN 0x3F1A4 +#define AFX_HIDP_FILE_ACCESS_DENIED 0x3F1A5 +#define AFX_HIDP_FILE_INVALID_FILE 0x3F1A6 +#define AFX_HIDP_FILE_REMOVE_CURRENT 0x3F1A7 +#define AFX_HIDP_FILE_DIR_FULL 0x3F1A8 +#define AFX_HIDP_FILE_BAD_SEEK 0x3F1A9 +#define AFX_HIDP_FILE_HARD_IO 0x3F1AA +#define AFX_HIDP_FILE_SHARING 0x3F1AB +#define AFX_HIDP_FILE_LOCKING 0x3F1AC +#define AFX_HIDP_FILE_DISKFULL 0x3F1AD +#define AFX_HIDP_FILE_EOF 0x3F1AE +#define AFX_HIDP_ARCH_NONE 0x3F1B0 +#define AFX_HIDP_ARCH_GENERIC 0x3F1B1 +#define AFX_HIDP_ARCH_READONLY 0x3F1B2 +#define AFX_HIDP_ARCH_ENDOFFILE 0x3F1B3 +#define AFX_HIDP_ARCH_WRITEONLY 0x3F1B4 +#define AFX_HIDP_ARCH_BADINDEX 0x3F1B5 +#define AFX_HIDP_ARCH_BADCLASS 0x3F1B6 +#define AFX_HIDP_ARCH_BADSCHEMA 0x3F1B7 +#define AFX_HIDP_SQL_CONNECT_FAIL 0x3F281 +#define AFX_HIDP_SQL_RECORDSET_FORWARD_ONLY 0x3F282 +#define AFX_HIDP_SQL_EMPTY_COLUMN_LIST 0x3F283 +#define AFX_HIDP_SQL_FIELD_SCHEMA_MISMATCH 0x3F284 +#define AFX_HIDP_SQL_ILLEGAL_MODE 0x3F285 +#define AFX_HIDP_SQL_MULTIPLE_ROWS_AFFECTED 0x3F286 +#define AFX_HIDP_SQL_NO_CURRENT_RECORD 0x3F287 +#define AFX_HIDP_SQL_NO_ROWS_AFFECTED 0x3F288 +#define AFX_HIDP_SQL_RECORDSET_READONLY 0x3F289 +#define AFX_HIDP_SQL_SQL_NO_TOTAL 0x3F28A +#define AFX_HIDP_SQL_ODBC_LOAD_FAILED 0x3F28B +#define AFX_HIDP_SQL_DYNASET_NOT_SUPPORTED 0x3F28C +#define AFX_HIDP_SQL_SNAPSHOT_NOT_SUPPORTED 0x3F28D +#define AFX_HIDP_SQL_API_CONFORMANCE 0x3F28E +#define AFX_HIDP_SQL_SQL_CONFORMANCE 0x3F28F +#define AFX_HIDP_SQL_NO_DATA_FOUND 0x3F290 +#define AFX_HIDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0x3F291 +#define AFX_HIDP_SQL_ODBC_V2_REQUIRED 0x3F292 +#define AFX_HIDP_SQL_NO_POSITIONED_UPDATES 0x3F293 +#define AFX_HIDP_SQL_LOCK_MODE_NOT_SUPPORTED 0x3F294 +#define AFX_HIDP_SQL_DATA_TRUNCATED 0x3F295 +#define AFX_HIDP_SQL_ROW_FETCH 0x3F296 +#define AFX_HIDP_SQL_INCORRECT_ODBC 0x3F297 +#define AFX_HIDP_SQL_UPDATE_DELETE_FAILED 0x3F298 +#define AFX_HIDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0x3F299 +#define AFX_HIDP_SQL_FIELD_NOT_FOUND 0x3F29A +#define AFX_HIDP_SQL_BOOKMARKS_NOT_SUPPORTED 0x3F29B +#define AFX_HIDP_SQL_BOOKMARKS_NOT_ENABLED 0x3F29C +#define AFX_HIDP_DAO_ENGINE_INITIALIZATION 0x3F2B0 +#define AFX_HIDP_DAO_DFX_BIND 0x3F2B1 +#define AFX_HIDP_DAO_OBJECT_NOT_OPEN 0x3F2B2 +#define AFX_HIDP_DAO_ROWTOOSHORT 0x3F2B3 +#define AFX_HIDP_DAO_BADBINDINFO 0x3F2B4 +#define AFX_HIDP_DAO_COLUMNUNAVAILABLE 0x3F2B5 + +// Frame Controls (AFX_HIDW_*) +#define AFX_HIDW_TOOLBAR 0x5E800 +#define AFX_HIDW_STATUS_BAR 0x5E801 +#define AFX_HIDW_PREVIEW_BAR 0x5E802 +#define AFX_HIDW_RESIZE_BAR 0x5E803 +#define AFX_HIDW_DOCKBAR_TOP 0x5E81B +#define AFX_HIDW_DOCKBAR_LEFT 0x5E81C +#define AFX_HIDW_DOCKBAR_RIGHT 0x5E81D +#define AFX_HIDW_DOCKBAR_BOTTOM 0x5E81E +#define AFX_HIDW_DOCKBAR_FLOAT 0x5E81F + +///////////////////////////////////////////////////////////////////////////// + +#ifdef _AFX_MINREBUILD +#pragma component(minrebuild, on) +#endif + +#endif // __AFX_HH_H__ diff --git a/LaiPuLaser/hlp/Images/Bullet.gif b/LaiPuLaser/hlp/Images/Bullet.gif new file mode 100644 index 0000000..090f96c Binary files /dev/null and b/LaiPuLaser/hlp/Images/Bullet.gif differ diff --git a/LaiPuLaser/hlp/LaiPuLaser.chm b/LaiPuLaser/hlp/LaiPuLaser.chm new file mode 100644 index 0000000..3746b78 Binary files /dev/null and b/LaiPuLaser/hlp/LaiPuLaser.chm differ diff --git a/LaiPuLaser/hlp/LaiPuLaser.hhc b/LaiPuLaser/hlp/LaiPuLaser.hhc new file mode 100644 index 0000000..5589537 --- /dev/null +++ b/LaiPuLaser/hlp/LaiPuLaser.hhc @@ -0,0 +1,46 @@ + + + + + + +

    +
  • + + + +
  • + + +
      +
    • + + + +
    • + + + +
    • + + + +
    • + + + +
    • + + + +
    +
  • + + + +
  • + + + +
+ diff --git a/LaiPuLaser/hlp/LaiPuLaser.hhk b/LaiPuLaser/hlp/LaiPuLaser.hhk new file mode 100644 index 0000000..c0ba08a --- /dev/null +++ b/LaiPuLaser/hlp/LaiPuLaser.hhk @@ -0,0 +1,9 @@ + + + + + + +
    +
+ diff --git a/LaiPuLaser/hlp/LaiPuLaser.hhp b/LaiPuLaser/hlp/LaiPuLaser.hhp new file mode 100644 index 0000000..4df1d2e --- /dev/null +++ b/LaiPuLaser/hlp/LaiPuLaser.hhp @@ -0,0 +1,214 @@ +[OPTIONS] +Auto Index=Yes +Compatibility=1.1 or later +Compiled file=LaiPuLaser.chm +Contents file=LaiPuLaser.hhc +Index file=LaiPuLaser.hhk +Default topic=main_index.htm +Display compile progress=No +Full-text search=Yes +Language=0x0804 (壬й) + + +[FILES] +afx_hidd_color.htm +afx_hidd_fileopen.htm +afx_hidd_filesave.htm +afx_hidd_find.htm +afx_hidd_font.htm +afx_hidd_newtypedlg.htm +afx_hidd_replace.htm +afx_hidp_default.htm +afx_hidw_dockbar_top.htm +afx_hidw_status_bar.htm +afx_hidw_toolbar.htm +hidr_doc1type.htm +hid_app_about.htm +hid_app_exit.htm +hid_context_help.htm +hid_edit_clear.htm +hid_edit_clear_all.htm +hid_edit_copy.htm +hid_edit_cut.htm +hid_edit_find.htm +hid_edit_paste.htm +hid_edit_redo.htm +hid_edit_repeat.htm +hid_edit_replace.htm +hid_edit_undo.htm +hid_file_close.htm +hid_file_mru_file1.htm +hid_file_new.htm +hid_file_open.htm +hid_file_save.htm +hid_file_save_as.htm +hid_file_send_mail.htm +hid_help_index.htm +hid_help_using.htm +hid_ht_caption.htm +hid_ht_nowhere.htm +hid_next_pane.htm +hid_prev_pane.htm +hid_sc_close.htm +hid_sc_maximize.htm +hid_sc_minimize.htm +hid_sc_move.htm +hid_sc_nextwindow.htm +hid_sc_prevwindow.htm +hid_sc_restore.htm +hid_sc_size.htm +hid_sc_tasklist.htm +hid_view_ruler.htm +hid_view_status_bar.htm +hid_view_toolbar.htm +hid_window_all.htm +hid_window_arrange.htm +hid_window_cascade.htm +hid_window_new.htm +hid_window_split.htm +hid_window_tile.htm +hid_window_tile_horz.htm +hid_window_tile_vert.htm +main_index.htm +menu_edit.htm +menu_file.htm +menu_help.htm +menu_view.htm +menu_window.htm +scrollbars.htm +afx_hidd_print.htm +afx_hidd_printdlg.htm +afx_hidd_printsetup.htm +afx_hidw_preview_bar.htm +hid_file_page_setup.htm +hid_file_print.htm +hid_file_print_preview.htm +hid_file_print_setup.htm + +[ALIAS] +HIDR_MAINFRAME = main_index.htm +HIDR_LaiPuLaserTYPE = HIDR_DOC1TYPE.htm + +main_index = main_index.htm +afx_hidd_color = afx_hidd_color.htm +afx_hidd_fileopen = afx_hidd_fileopen.htm +afx_hidd_filesave = afx_hidd_filesave.htm +afx_hidd_find = afx_hidd_find.htm +afx_hidd_font = afx_hidd_font.htm +afx_hidd_newtypedlg = afx_hidd_newtypedlg.htm +afx_hidd_replace = afx_hidd_replace.htm +AFX_HIDP_DEFAULT = AFX_HIDP_DEFAULT.htm +afx_hidw_dockbar_top = afx_hidw_dockbar_top.htm +afx_hidw_status_bar = afx_hidw_status_bar.htm +afx_hidw_toolbar = afx_hidw_toolbar.htm +hid_app_about = hid_app_about.htm +hid_app_exit = hid_app_exit.htm +hid_context_help = hid_context_help.htm +hid_edit_clear = hid_edit_clear.htm +hid_edit_clear_all = hid_edit_clear_all.htm +hid_edit_copy = hid_edit_copy.htm +hid_edit_cut = hid_edit_cut.htm +hid_edit_find = hid_edit_find.htm +hid_edit_paste = hid_edit_paste.htm +hid_edit_redo = hid_edit_redo.htm +hid_edit_repeat = hid_edit_repeat.htm +hid_edit_replace = hid_edit_replace.htm +hid_edit_undo = hid_edit_undo.htm +hid_file_close = hid_file_close.htm +hid_file_mru_file1 = hid_file_mru_file1.htm +hid_file_new = hid_file_new.htm +hid_file_open = hid_file_open.htm +hid_file_save = hid_file_save.htm +hid_file_save_as = hid_file_save_as.htm +hid_file_send_mail = hid_file_send_mail.htm +hid_help_index = hid_help_index.htm +hid_help_using = hid_help_using.htm +hid_ht_caption = hid_ht_caption.htm +hid_ht_nowhere = hid_ht_nowhere.htm +hid_next_pane = hid_next_pane.htm +hid_prev_pane = hid_prev_pane.htm +hid_sc_close = hid_sc_close.htm +hid_sc_maximize = hid_sc_maximize.htm +hid_sc_minimize = hid_sc_minimize.htm +hid_sc_move = hid_sc_move.htm +hid_sc_nextwindow = hid_sc_nextwindow.htm +hid_sc_prevwindow = hid_sc_prevwindow.htm +hid_sc_restore = hid_sc_restore.htm +hid_sc_size = hid_sc_size.htm +hid_sc_tasklist = hid_sc_tasklist.htm +hid_view_ruler = hid_view_ruler.htm +hid_view_status_bar = hid_view_status_bar.htm +hid_view_toolbar = hid_view_toolbar.htm +hid_window_all = hid_window_all.htm +hid_window_arrange = hid_window_arrange.htm +hid_window_cascade = hid_window_cascade.htm +hid_window_new = hid_window_new.htm +hid_window_split = hid_window_split.htm +hid_window_tile = hid_window_tile.htm +hid_window_tile_horz = hid_window_tile_horz.htm +hid_window_tile_vert = hid_window_tile_vert.htm +hidr_doc1type = hidr_doc1type.htm +menu_edit = menu_edit.htm +menu_file = menu_file.htm +menu_help = menu_help.htm +menu_view = menu_view.htm +menu_window = menu_window.htm +scrollbars = scrollbars.htm +afx_hidd_print = afx_hidd_print.htm +afx_hidd_printdlg = afx_hidd_printdlg.htm +afx_hidd_printsetup = afx_hidd_printsetup.htm +afx_hidw_preview_bar = afx_hidw_preview_bar.htm +hid_file_page_setup = hid_file_page_setup.htm +hid_file_print = hid_file_print.htm +hid_file_print_preview = hid_file_print_preview.htm +hid_file_print_setup = hid_file_print_setup.htm +HIDD_ABOUTBOX = HID_APP_ABOUT.htm +HID_HT_SIZE = HID_SC_SIZE.htm +HID_HT_HSCROLL = scrollbars.htm +HID_HT_VSCROLL = scrollbars.htm +HID_HT_MINBUTTON = HID_SC_MINIMIZE.htm +HID_HT_MAXBUTTON = HID_SC_MAXIMIZE.htm +AFX_HIDP_INVALID_FILENAME = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_OPEN_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_SAVE_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_ASK_TO_SAVE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_CREATE_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FILE_TOO_LARGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_START_PRINT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_LAUNCH_HELP = AFX_HIDP_DEFAULT.htm +AFX_HIDP_INTERNAL_FAILURE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_COMMAND_FAILURE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_INT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_REAL = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_INT_RANGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_REAL_RANGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_STRING_SIZE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_INVALID_FORMAT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_INVALID_PATH = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_DISK_FULL = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_ACCESS_READ = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_ACCESS_WRITE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_IO_ERROR_READ = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_IO_ERROR_WRITE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_STATIC_OBJECT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_CONNECT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_SERVER_BUSY = AFX_HIDP_DEFAULT.htm +AFX_HIDP_BAD_VERB = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_MEMORY_ALLOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_NOTIFY = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_LAUNCH = AFX_HIDP_DEFAULT.htm +AFX_HIDP_ASK_TO_UPDATE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_UPDATE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_REGISTER = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_AUTO_REGISTER = AFX_HIDP_DEFAULT.htm +AFX_HIDW_DOCKBAR_BOTTOM = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests +AFX_HIDW_DOCKBAR_LEFT = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests +AFX_HIDW_DOCKBAR_RIGHT = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests + +[MAP] +#include HTMLDefines.h + +[TEXT POPUPS] +HTMLDefines.h + +[INFOTYPES] diff --git a/LaiPuLaser/lib/DaHenCCD_need/HVAPI.dll b/LaiPuLaser/lib/DaHenCCD_need/HVAPI.dll new file mode 100644 index 0000000..76a4cc4 Binary files /dev/null and b/LaiPuLaser/lib/DaHenCCD_need/HVAPI.dll differ diff --git a/LaiPuLaser/lib/DaHenCCD_need/HVDAILT.dll b/LaiPuLaser/lib/DaHenCCD_need/HVDAILT.dll new file mode 100644 index 0000000..ff5c279 Binary files /dev/null and b/LaiPuLaser/lib/DaHenCCD_need/HVDAILT.dll differ diff --git a/LaiPuLaser/lib/DaHenCCD_need/Raw2Rgb.dll b/LaiPuLaser/lib/DaHenCCD_need/Raw2Rgb.dll new file mode 100644 index 0000000..02191b3 Binary files /dev/null and b/LaiPuLaser/lib/DaHenCCD_need/Raw2Rgb.dll differ diff --git a/LaiPuLaser/lib/Mfc_dll/mfc100d.dll b/LaiPuLaser/lib/Mfc_dll/mfc100d.dll new file mode 100644 index 0000000..3e66b2f Binary files /dev/null and b/LaiPuLaser/lib/Mfc_dll/mfc100d.dll differ diff --git a/LaiPuLaser/lib/Mfc_dll/msvcp100d.dll b/LaiPuLaser/lib/Mfc_dll/msvcp100d.dll new file mode 100644 index 0000000..3251ecc Binary files /dev/null and b/LaiPuLaser/lib/Mfc_dll/msvcp100d.dll differ diff --git a/LaiPuLaser/lib/Mfc_dll/msvcr100d.dll b/LaiPuLaser/lib/Mfc_dll/msvcr100d.dll new file mode 100644 index 0000000..395da79 Binary files /dev/null and b/LaiPuLaser/lib/Mfc_dll/msvcr100d.dll differ diff --git a/LaiPuLaser/lib/Tbarcode5/TBarCode5.ocx b/LaiPuLaser/lib/Tbarcode5/TBarCode5.ocx new file mode 100644 index 0000000..191ff70 Binary files /dev/null and b/LaiPuLaser/lib/Tbarcode5/TBarCode5.ocx differ diff --git a/LaiPuLaser/lib/Tbarcode5/TBarCode5.reg b/LaiPuLaser/lib/Tbarcode5/TBarCode5.reg new file mode 100644 index 0000000..639de84 Binary files /dev/null and b/LaiPuLaser/lib/Tbarcode5/TBarCode5.reg differ diff --git a/LaiPuLaser/lib/marking_scan.dll b/LaiPuLaser/lib/marking_scan.dll new file mode 100644 index 0000000..49ad246 Binary files /dev/null and b/LaiPuLaser/lib/marking_scan.dll differ diff --git a/LaiPuLaser/lib/pci_card/CH365DLL.DLL b/LaiPuLaser/lib/pci_card/CH365DLL.DLL new file mode 100644 index 0000000..60a6e26 Binary files /dev/null and b/LaiPuLaser/lib/pci_card/CH365DLL.DLL differ diff --git a/LaiPuLaser/libdog_windows_3152033.lib b/LaiPuLaser/libdog_windows_3152033.lib new file mode 100644 index 0000000..ad8054e Binary files /dev/null and b/LaiPuLaser/libdog_windows_3152033.lib differ diff --git a/LaiPuLaser/marking_scan.dll b/LaiPuLaser/marking_scan.dll new file mode 100644 index 0000000..8f1b264 Binary files /dev/null and b/LaiPuLaser/marking_scan.dll differ diff --git a/LaiPuLaser/res/BtnImg1.bmp b/LaiPuLaser/res/BtnImg1.bmp new file mode 100644 index 0000000..801b679 Binary files /dev/null and b/LaiPuLaser/res/BtnImg1.bmp differ diff --git a/LaiPuLaser/res/BtnImg2.bmp b/LaiPuLaser/res/BtnImg2.bmp new file mode 100644 index 0000000..1f51ebc Binary files /dev/null and b/LaiPuLaser/res/BtnImg2.bmp differ diff --git a/LaiPuLaser/res/BtnImg3.bmp b/LaiPuLaser/res/BtnImg3.bmp new file mode 100644 index 0000000..fda246f Binary files /dev/null and b/LaiPuLaser/res/BtnImg3.bmp differ diff --git a/LaiPuLaser/res/BtnImg4.bmp b/LaiPuLaser/res/BtnImg4.bmp new file mode 100644 index 0000000..bdbe717 Binary files /dev/null and b/LaiPuLaser/res/BtnImg4.bmp differ diff --git a/LaiPuLaser/res/BtnImg5.bmp b/LaiPuLaser/res/BtnImg5.bmp new file mode 100644 index 0000000..bcb9a5a Binary files /dev/null and b/LaiPuLaser/res/BtnImg5.bmp differ diff --git a/LaiPuLaser/res/CheckLaser.bmp b/LaiPuLaser/res/CheckLaser.bmp new file mode 100644 index 0000000..0116db5 Binary files /dev/null and b/LaiPuLaser/res/CheckLaser.bmp differ diff --git a/LaiPuLaser/res/CheckLaserDown.bmp b/LaiPuLaser/res/CheckLaserDown.bmp new file mode 100644 index 0000000..9980990 Binary files /dev/null and b/LaiPuLaser/res/CheckLaserDown.bmp differ diff --git a/LaiPuLaser/res/Down_Botton.bmp b/LaiPuLaser/res/Down_Botton.bmp new file mode 100644 index 0000000..e35cc0b Binary files /dev/null and b/LaiPuLaser/res/Down_Botton.bmp differ diff --git a/LaiPuLaser/res/Down_BottonDown.bmp b/LaiPuLaser/res/Down_BottonDown.bmp new file mode 100644 index 0000000..060bb61 Binary files /dev/null and b/LaiPuLaser/res/Down_BottonDown.bmp differ diff --git a/LaiPuLaser/res/IniDevice.bmp b/LaiPuLaser/res/IniDevice.bmp new file mode 100644 index 0000000..153cdf6 Binary files /dev/null and b/LaiPuLaser/res/IniDevice.bmp differ diff --git a/LaiPuLaser/res/IniDeviceDown.bmp b/LaiPuLaser/res/IniDeviceDown.bmp new file mode 100644 index 0000000..8da4c69 Binary files /dev/null and b/LaiPuLaser/res/IniDeviceDown.bmp differ diff --git a/LaiPuLaser/res/LaiPuLaser.ico b/LaiPuLaser/res/LaiPuLaser.ico new file mode 100644 index 0000000..e6200f1 Binary files /dev/null and b/LaiPuLaser/res/LaiPuLaser.ico differ diff --git a/LaiPuLaser/res/LaiPuLaser.rc2 b/LaiPuLaser/res/LaiPuLaser.rc2 new file mode 100644 index 0000000..35ef057 Binary files /dev/null and b/LaiPuLaser/res/LaiPuLaser.rc2 differ diff --git a/LaiPuLaser/res/LaiPuLaserDoc.ico b/LaiPuLaser/res/LaiPuLaserDoc.ico new file mode 100644 index 0000000..96365d4 Binary files /dev/null and b/LaiPuLaser/res/LaiPuLaserDoc.ico differ diff --git a/LaiPuLaser/res/LaiPuLasser.ico b/LaiPuLaser/res/LaiPuLasser.ico new file mode 100644 index 0000000..d56fbcd Binary files /dev/null and b/LaiPuLaser/res/LaiPuLasser.ico differ diff --git a/LaiPuLaser/res/Left_Botton.bmp b/LaiPuLaser/res/Left_Botton.bmp new file mode 100644 index 0000000..1fb716a Binary files /dev/null and b/LaiPuLaser/res/Left_Botton.bmp differ diff --git a/LaiPuLaser/res/Left_BottonDown.bmp b/LaiPuLaser/res/Left_BottonDown.bmp new file mode 100644 index 0000000..2841245 Binary files /dev/null and b/LaiPuLaser/res/Left_BottonDown.bmp differ diff --git a/LaiPuLaser/res/Lock.bmp b/LaiPuLaser/res/Lock.bmp new file mode 100644 index 0000000..bd16e01 Binary files /dev/null and b/LaiPuLaser/res/Lock.bmp differ diff --git a/LaiPuLaser/res/ModifPar.bmp b/LaiPuLaser/res/ModifPar.bmp new file mode 100644 index 0000000..afe37f6 Binary files /dev/null and b/LaiPuLaser/res/ModifPar.bmp differ diff --git a/LaiPuLaser/res/ModifParDown.bmp b/LaiPuLaser/res/ModifParDown.bmp new file mode 100644 index 0000000..d168c85 Binary files /dev/null and b/LaiPuLaser/res/ModifParDown.bmp differ diff --git a/LaiPuLaser/res/OpenFile.bmp b/LaiPuLaser/res/OpenFile.bmp new file mode 100644 index 0000000..c0dcf75 Binary files /dev/null and b/LaiPuLaser/res/OpenFile.bmp differ diff --git a/LaiPuLaser/res/OpenFileDown.bmp b/LaiPuLaser/res/OpenFileDown.bmp new file mode 100644 index 0000000..89904e6 Binary files /dev/null and b/LaiPuLaser/res/OpenFileDown.bmp differ diff --git a/LaiPuLaser/res/OriginPt.bmp b/LaiPuLaser/res/OriginPt.bmp new file mode 100644 index 0000000..469db67 Binary files /dev/null and b/LaiPuLaser/res/OriginPt.bmp differ diff --git a/LaiPuLaser/res/OriginPtDown.bmp b/LaiPuLaser/res/OriginPtDown.bmp new file mode 100644 index 0000000..9c0e9e7 Binary files /dev/null and b/LaiPuLaser/res/OriginPtDown.bmp differ diff --git a/LaiPuLaser/res/Point2.cur b/LaiPuLaser/res/Point2.cur new file mode 100644 index 0000000..a1c950f Binary files /dev/null and b/LaiPuLaser/res/Point2.cur differ diff --git a/LaiPuLaser/res/ProductPt.bmp b/LaiPuLaser/res/ProductPt.bmp new file mode 100644 index 0000000..10b7d4e Binary files /dev/null and b/LaiPuLaser/res/ProductPt.bmp differ diff --git a/LaiPuLaser/res/ProductPtDown.bmp b/LaiPuLaser/res/ProductPtDown.bmp new file mode 100644 index 0000000..8169975 Binary files /dev/null and b/LaiPuLaser/res/ProductPtDown.bmp differ diff --git a/LaiPuLaser/res/Right_Botton.bmp b/LaiPuLaser/res/Right_Botton.bmp new file mode 100644 index 0000000..44ea631 Binary files /dev/null and b/LaiPuLaser/res/Right_Botton.bmp differ diff --git a/LaiPuLaser/res/Right_BottonDown.bmp b/LaiPuLaser/res/Right_BottonDown.bmp new file mode 100644 index 0000000..fe69df3 Binary files /dev/null and b/LaiPuLaser/res/Right_BottonDown.bmp differ diff --git a/LaiPuLaser/res/SaveFile.bmp b/LaiPuLaser/res/SaveFile.bmp new file mode 100644 index 0000000..c36e678 Binary files /dev/null and b/LaiPuLaser/res/SaveFile.bmp differ diff --git a/LaiPuLaser/res/SaveFileDown.bmp b/LaiPuLaser/res/SaveFileDown.bmp new file mode 100644 index 0000000..8f9ae82 Binary files /dev/null and b/LaiPuLaser/res/SaveFileDown.bmp differ diff --git a/LaiPuLaser/res/Start.bmp b/LaiPuLaser/res/Start.bmp new file mode 100644 index 0000000..376547b Binary files /dev/null and b/LaiPuLaser/res/Start.bmp differ diff --git a/LaiPuLaser/res/Start_Down.bmp b/LaiPuLaser/res/Start_Down.bmp new file mode 100644 index 0000000..42dda9e Binary files /dev/null and b/LaiPuLaser/res/Start_Down.bmp differ diff --git a/LaiPuLaser/res/Stop.bmp b/LaiPuLaser/res/Stop.bmp new file mode 100644 index 0000000..669ca50 Binary files /dev/null and b/LaiPuLaser/res/Stop.bmp differ diff --git a/LaiPuLaser/res/Stop_Down.bmp b/LaiPuLaser/res/Stop_Down.bmp new file mode 100644 index 0000000..c4785fd Binary files /dev/null and b/LaiPuLaser/res/Stop_Down.bmp differ diff --git a/LaiPuLaser/res/SursorMove.cur b/LaiPuLaser/res/SursorMove.cur new file mode 100644 index 0000000..1fe6705 Binary files /dev/null and b/LaiPuLaser/res/SursorMove.cur differ diff --git a/LaiPuLaser/res/Toolbar.bmp b/LaiPuLaser/res/Toolbar.bmp new file mode 100644 index 0000000..0556e00 Binary files /dev/null and b/LaiPuLaser/res/Toolbar.bmp differ diff --git a/LaiPuLaser/res/Toolbar256.bmp b/LaiPuLaser/res/Toolbar256.bmp new file mode 100644 index 0000000..d06d0e0 Binary files /dev/null and b/LaiPuLaser/res/Toolbar256.bmp differ diff --git a/LaiPuLaser/res/Top_Botton.bmp b/LaiPuLaser/res/Top_Botton.bmp new file mode 100644 index 0000000..aa959ee Binary files /dev/null and b/LaiPuLaser/res/Top_Botton.bmp differ diff --git a/LaiPuLaser/res/Top_BottonDown.bmp b/LaiPuLaser/res/Top_BottonDown.bmp new file mode 100644 index 0000000..2121057 Binary files /dev/null and b/LaiPuLaser/res/Top_BottonDown.bmp differ diff --git a/LaiPuLaser/res/Vacuum.bmp b/LaiPuLaser/res/Vacuum.bmp new file mode 100644 index 0000000..6796a61 Binary files /dev/null and b/LaiPuLaser/res/Vacuum.bmp differ diff --git a/LaiPuLaser/res/VacuumClose.bmp b/LaiPuLaser/res/VacuumClose.bmp new file mode 100644 index 0000000..df0b686 Binary files /dev/null and b/LaiPuLaser/res/VacuumClose.bmp differ diff --git a/LaiPuLaser/res/VacuumCloseDown.bmp b/LaiPuLaser/res/VacuumCloseDown.bmp new file mode 100644 index 0000000..08b1247 Binary files /dev/null and b/LaiPuLaser/res/VacuumCloseDown.bmp differ diff --git a/LaiPuLaser/res/VacuumDown.bmp b/LaiPuLaser/res/VacuumDown.bmp new file mode 100644 index 0000000..9b78a37 Binary files /dev/null and b/LaiPuLaser/res/VacuumDown.bmp differ diff --git a/LaiPuLaser/res/aero_arrow.cur b/LaiPuLaser/res/aero_arrow.cur new file mode 100644 index 0000000..d37f2f1 Binary files /dev/null and b/LaiPuLaser/res/aero_arrow.cur differ diff --git a/LaiPuLaser/res/aero_link.cur b/LaiPuLaser/res/aero_link.cur new file mode 100644 index 0000000..ac10a54 Binary files /dev/null and b/LaiPuLaser/res/aero_link.cur differ diff --git a/LaiPuLaser/res/aero_move.cur b/LaiPuLaser/res/aero_move.cur new file mode 100644 index 0000000..98b2a3f Binary files /dev/null and b/LaiPuLaser/res/aero_move.cur differ diff --git a/LaiPuLaser/res/beam_im.cur b/LaiPuLaser/res/beam_im.cur new file mode 100644 index 0000000..9fc62ef Binary files /dev/null and b/LaiPuLaser/res/beam_im.cur differ diff --git a/LaiPuLaser/res/bitmap1.bmp b/LaiPuLaser/res/bitmap1.bmp new file mode 100644 index 0000000..d442868 Binary files /dev/null and b/LaiPuLaser/res/bitmap1.bmp differ diff --git a/LaiPuLaser/res/bmp00001.bmp b/LaiPuLaser/res/bmp00001.bmp new file mode 100644 index 0000000..6a21551 Binary files /dev/null and b/LaiPuLaser/res/bmp00001.bmp differ diff --git a/LaiPuLaser/res/bmp00002.bmp b/LaiPuLaser/res/bmp00002.bmp new file mode 100644 index 0000000..6e8e840 Binary files /dev/null and b/LaiPuLaser/res/bmp00002.bmp differ diff --git a/LaiPuLaser/res/center/IniDevice.bmp b/LaiPuLaser/res/center/IniDevice.bmp new file mode 100644 index 0000000..7de25c6 Binary files /dev/null and b/LaiPuLaser/res/center/IniDevice.bmp differ diff --git a/LaiPuLaser/res/center/IniDeviceDown.bmp b/LaiPuLaser/res/center/IniDeviceDown.bmp new file mode 100644 index 0000000..8da4c69 Binary files /dev/null and b/LaiPuLaser/res/center/IniDeviceDown.bmp differ diff --git a/LaiPuLaser/res/center/OpenFile.bmp b/LaiPuLaser/res/center/OpenFile.bmp new file mode 100644 index 0000000..fc5e827 Binary files /dev/null and b/LaiPuLaser/res/center/OpenFile.bmp differ diff --git a/LaiPuLaser/res/center/OpenFileDown.bmp b/LaiPuLaser/res/center/OpenFileDown.bmp new file mode 100644 index 0000000..d54d41b Binary files /dev/null and b/LaiPuLaser/res/center/OpenFileDown.bmp differ diff --git a/LaiPuLaser/res/center/OriginPt.bmp b/LaiPuLaser/res/center/OriginPt.bmp new file mode 100644 index 0000000..35633ef Binary files /dev/null and b/LaiPuLaser/res/center/OriginPt.bmp differ diff --git a/LaiPuLaser/res/center/OriginPtDown.bmp b/LaiPuLaser/res/center/OriginPtDown.bmp new file mode 100644 index 0000000..9c0e9e7 Binary files /dev/null and b/LaiPuLaser/res/center/OriginPtDown.bmp differ diff --git a/LaiPuLaser/res/center/ProductPt.bmp b/LaiPuLaser/res/center/ProductPt.bmp new file mode 100644 index 0000000..c866c33 Binary files /dev/null and b/LaiPuLaser/res/center/ProductPt.bmp differ diff --git a/LaiPuLaser/res/center/ProductPtDown.bmp b/LaiPuLaser/res/center/ProductPtDown.bmp new file mode 100644 index 0000000..8169975 Binary files /dev/null and b/LaiPuLaser/res/center/ProductPtDown.bmp differ diff --git a/LaiPuLaser/res/center/Start.bmp b/LaiPuLaser/res/center/Start.bmp new file mode 100644 index 0000000..376547b Binary files /dev/null and b/LaiPuLaser/res/center/Start.bmp differ diff --git a/LaiPuLaser/res/center/Start_Down.bmp b/LaiPuLaser/res/center/Start_Down.bmp new file mode 100644 index 0000000..42dda9e Binary files /dev/null and b/LaiPuLaser/res/center/Start_Down.bmp differ diff --git a/LaiPuLaser/res/center/Stop.bmp b/LaiPuLaser/res/center/Stop.bmp new file mode 100644 index 0000000..669ca50 Binary files /dev/null and b/LaiPuLaser/res/center/Stop.bmp differ diff --git a/LaiPuLaser/res/center/Stop_Down.bmp b/LaiPuLaser/res/center/Stop_Down.bmp new file mode 100644 index 0000000..c4785fd Binary files /dev/null and b/LaiPuLaser/res/center/Stop_Down.bmp differ diff --git a/LaiPuLaser/res/center/Vacuum.bmp b/LaiPuLaser/res/center/Vacuum.bmp new file mode 100644 index 0000000..6796a61 Binary files /dev/null and b/LaiPuLaser/res/center/Vacuum.bmp differ diff --git a/LaiPuLaser/res/center/VacuumClose.bmp b/LaiPuLaser/res/center/VacuumClose.bmp new file mode 100644 index 0000000..df0b686 Binary files /dev/null and b/LaiPuLaser/res/center/VacuumClose.bmp differ diff --git a/LaiPuLaser/res/center/VacuumCloseDown.bmp b/LaiPuLaser/res/center/VacuumCloseDown.bmp new file mode 100644 index 0000000..08b1247 Binary files /dev/null and b/LaiPuLaser/res/center/VacuumCloseDown.bmp differ diff --git a/LaiPuLaser/res/center/VacuumDown.bmp b/LaiPuLaser/res/center/VacuumDown.bmp new file mode 100644 index 0000000..9b78a37 Binary files /dev/null and b/LaiPuLaser/res/center/VacuumDown.bmp differ diff --git a/LaiPuLaser/res/center/exit.bmp b/LaiPuLaser/res/center/exit.bmp new file mode 100644 index 0000000..12bbb31 Binary files /dev/null and b/LaiPuLaser/res/center/exit.bmp differ diff --git a/LaiPuLaser/res/center/exit_down.bmp b/LaiPuLaser/res/center/exit_down.bmp new file mode 100644 index 0000000..0b08f75 Binary files /dev/null and b/LaiPuLaser/res/center/exit_down.bmp differ diff --git a/LaiPuLaser/res/center/login.bmp b/LaiPuLaser/res/center/login.bmp new file mode 100644 index 0000000..04aaa28 Binary files /dev/null and b/LaiPuLaser/res/center/login.bmp differ diff --git a/LaiPuLaser/res/center/login_Down.bmp b/LaiPuLaser/res/center/login_Down.bmp new file mode 100644 index 0000000..8670733 Binary files /dev/null and b/LaiPuLaser/res/center/login_Down.bmp differ diff --git a/LaiPuLaser/res/cur00001.cur b/LaiPuLaser/res/cur00001.cur new file mode 100644 index 0000000..34c01ef Binary files /dev/null and b/LaiPuLaser/res/cur00001.cur differ diff --git a/LaiPuLaser/res/cur00002.cur b/LaiPuLaser/res/cur00002.cur new file mode 100644 index 0000000..589b32b Binary files /dev/null and b/LaiPuLaser/res/cur00002.cur differ diff --git a/LaiPuLaser/res/cur00003.cur b/LaiPuLaser/res/cur00003.cur new file mode 100644 index 0000000..1a91efe Binary files /dev/null and b/LaiPuLaser/res/cur00003.cur differ diff --git a/LaiPuLaser/res/cursor0.cur b/LaiPuLaser/res/cursor0.cur new file mode 100644 index 0000000..2289c30 Binary files /dev/null and b/LaiPuLaser/res/cursor0.cur differ diff --git a/LaiPuLaser/res/cursor1.cur b/LaiPuLaser/res/cursor1.cur new file mode 100644 index 0000000..39171fb Binary files /dev/null and b/LaiPuLaser/res/cursor1.cur differ diff --git a/LaiPuLaser/res/cursor2.cur b/LaiPuLaser/res/cursor2.cur new file mode 100644 index 0000000..850ce01 Binary files /dev/null and b/LaiPuLaser/res/cursor2.cur differ diff --git a/LaiPuLaser/res/exit.bmp b/LaiPuLaser/res/exit.bmp new file mode 100644 index 0000000..36d4533 Binary files /dev/null and b/LaiPuLaser/res/exit.bmp differ diff --git a/LaiPuLaser/res/exit_down.bmp b/LaiPuLaser/res/exit_down.bmp new file mode 100644 index 0000000..0b08f75 Binary files /dev/null and b/LaiPuLaser/res/exit_down.bmp differ diff --git a/LaiPuLaser/res/green.bmp b/LaiPuLaser/res/green.bmp new file mode 100644 index 0000000..e143f6c Binary files /dev/null and b/LaiPuLaser/res/green.bmp differ diff --git a/LaiPuLaser/res/info.bmp b/LaiPuLaser/res/info.bmp new file mode 100644 index 0000000..08b705b Binary files /dev/null and b/LaiPuLaser/res/info.bmp differ diff --git a/LaiPuLaser/res/left/IniDevice.bmp b/LaiPuLaser/res/left/IniDevice.bmp new file mode 100644 index 0000000..0845629 Binary files /dev/null and b/LaiPuLaser/res/left/IniDevice.bmp differ diff --git a/LaiPuLaser/res/left/IniDeviceDown.bmp b/LaiPuLaser/res/left/IniDeviceDown.bmp new file mode 100644 index 0000000..29545d8 Binary files /dev/null and b/LaiPuLaser/res/left/IniDeviceDown.bmp differ diff --git a/LaiPuLaser/res/left/OpenFile.bmp b/LaiPuLaser/res/left/OpenFile.bmp new file mode 100644 index 0000000..74cba3a Binary files /dev/null and b/LaiPuLaser/res/left/OpenFile.bmp differ diff --git a/LaiPuLaser/res/left/OpenFileDown.bmp b/LaiPuLaser/res/left/OpenFileDown.bmp new file mode 100644 index 0000000..6d83593 Binary files /dev/null and b/LaiPuLaser/res/left/OpenFileDown.bmp differ diff --git a/LaiPuLaser/res/left/OriginPt.bmp b/LaiPuLaser/res/left/OriginPt.bmp new file mode 100644 index 0000000..4fb7c09 Binary files /dev/null and b/LaiPuLaser/res/left/OriginPt.bmp differ diff --git a/LaiPuLaser/res/left/OriginPtDown.bmp b/LaiPuLaser/res/left/OriginPtDown.bmp new file mode 100644 index 0000000..2c1242c Binary files /dev/null and b/LaiPuLaser/res/left/OriginPtDown.bmp differ diff --git a/LaiPuLaser/res/left/ProductPt.bmp b/LaiPuLaser/res/left/ProductPt.bmp new file mode 100644 index 0000000..2ef4327 Binary files /dev/null and b/LaiPuLaser/res/left/ProductPt.bmp differ diff --git a/LaiPuLaser/res/left/ProductPtDown.bmp b/LaiPuLaser/res/left/ProductPtDown.bmp new file mode 100644 index 0000000..24658f5 Binary files /dev/null and b/LaiPuLaser/res/left/ProductPtDown.bmp differ diff --git a/LaiPuLaser/res/left/Start.bmp b/LaiPuLaser/res/left/Start.bmp new file mode 100644 index 0000000..2a6af6d Binary files /dev/null and b/LaiPuLaser/res/left/Start.bmp differ diff --git a/LaiPuLaser/res/left/Start_Down.bmp b/LaiPuLaser/res/left/Start_Down.bmp new file mode 100644 index 0000000..4c211b9 Binary files /dev/null and b/LaiPuLaser/res/left/Start_Down.bmp differ diff --git a/LaiPuLaser/res/left/Stop.bmp b/LaiPuLaser/res/left/Stop.bmp new file mode 100644 index 0000000..227bfb9 Binary files /dev/null and b/LaiPuLaser/res/left/Stop.bmp differ diff --git a/LaiPuLaser/res/left/Stop_Down.bmp b/LaiPuLaser/res/left/Stop_Down.bmp new file mode 100644 index 0000000..a100a0d Binary files /dev/null and b/LaiPuLaser/res/left/Stop_Down.bmp differ diff --git a/LaiPuLaser/res/left/Vacuum.bmp b/LaiPuLaser/res/left/Vacuum.bmp new file mode 100644 index 0000000..b926d20 Binary files /dev/null and b/LaiPuLaser/res/left/Vacuum.bmp differ diff --git a/LaiPuLaser/res/left/VacuumClose.bmp b/LaiPuLaser/res/left/VacuumClose.bmp new file mode 100644 index 0000000..5c65411 Binary files /dev/null and b/LaiPuLaser/res/left/VacuumClose.bmp differ diff --git a/LaiPuLaser/res/left/VacuumCloseDown.bmp b/LaiPuLaser/res/left/VacuumCloseDown.bmp new file mode 100644 index 0000000..738a42c Binary files /dev/null and b/LaiPuLaser/res/left/VacuumCloseDown.bmp differ diff --git a/LaiPuLaser/res/left/VacuumDown.bmp b/LaiPuLaser/res/left/VacuumDown.bmp new file mode 100644 index 0000000..f8d99b1 Binary files /dev/null and b/LaiPuLaser/res/left/VacuumDown.bmp differ diff --git a/LaiPuLaser/res/left/exit.bmp b/LaiPuLaser/res/left/exit.bmp new file mode 100644 index 0000000..128e972 Binary files /dev/null and b/LaiPuLaser/res/left/exit.bmp differ diff --git a/LaiPuLaser/res/left/exit_down.bmp b/LaiPuLaser/res/left/exit_down.bmp new file mode 100644 index 0000000..fa5f4ff Binary files /dev/null and b/LaiPuLaser/res/left/exit_down.bmp differ diff --git a/LaiPuLaser/res/left/login.bmp b/LaiPuLaser/res/left/login.bmp new file mode 100644 index 0000000..6d94ae4 Binary files /dev/null and b/LaiPuLaser/res/left/login.bmp differ diff --git a/LaiPuLaser/res/left/login_Down.bmp b/LaiPuLaser/res/left/login_Down.bmp new file mode 100644 index 0000000..e8ec951 Binary files /dev/null and b/LaiPuLaser/res/left/login_Down.bmp differ diff --git a/LaiPuLaser/res/login.bmp b/LaiPuLaser/res/login.bmp new file mode 100644 index 0000000..4ebd5da Binary files /dev/null and b/LaiPuLaser/res/login.bmp differ diff --git a/LaiPuLaser/res/login_Down.bmp b/LaiPuLaser/res/login_Down.bmp new file mode 100644 index 0000000..8670733 Binary files /dev/null and b/LaiPuLaser/res/login_Down.bmp differ diff --git a/LaiPuLaser/res/logo.bmp b/LaiPuLaser/res/logo.bmp new file mode 100644 index 0000000..2a02dbd Binary files /dev/null and b/LaiPuLaser/res/logo.bmp differ diff --git a/LaiPuLaser/res/logo111.bmp b/LaiPuLaser/res/logo111.bmp new file mode 100644 index 0000000..a733de8 Binary files /dev/null and b/LaiPuLaser/res/logo111.bmp differ diff --git a/LaiPuLaser/res/mainfram.bmp b/LaiPuLaser/res/mainfram.bmp new file mode 100644 index 0000000..5a91597 Binary files /dev/null and b/LaiPuLaser/res/mainfram.bmp differ diff --git a/LaiPuLaser/res/mouse_dr.cur b/LaiPuLaser/res/mouse_dr.cur new file mode 100644 index 0000000..69de8de Binary files /dev/null and b/LaiPuLaser/res/mouse_dr.cur differ diff --git a/LaiPuLaser/res/mouse_ha.cur b/LaiPuLaser/res/mouse_ha.cur new file mode 100644 index 0000000..c50d0c9 Binary files /dev/null and b/LaiPuLaser/res/mouse_ha.cur differ diff --git a/LaiPuLaser/res/mouse_mo.cur b/LaiPuLaser/res/mouse_mo.cur new file mode 100644 index 0000000..d8efc38 Binary files /dev/null and b/LaiPuLaser/res/mouse_mo.cur differ diff --git a/LaiPuLaser/res/mouse_no.cur b/LaiPuLaser/res/mouse_no.cur new file mode 100644 index 0000000..2d49305 Binary files /dev/null and b/LaiPuLaser/res/mouse_no.cur differ diff --git a/LaiPuLaser/res/mouse_po.cur b/LaiPuLaser/res/mouse_po.cur new file mode 100644 index 0000000..73454e7 Binary files /dev/null and b/LaiPuLaser/res/mouse_po.cur differ diff --git a/LaiPuLaser/res/nav_large.bmp b/LaiPuLaser/res/nav_large.bmp new file mode 100644 index 0000000..a081e17 Binary files /dev/null and b/LaiPuLaser/res/nav_large.bmp differ diff --git a/LaiPuLaser/res/nav_large_hc.bmp b/LaiPuLaser/res/nav_large_hc.bmp new file mode 100644 index 0000000..6607b55 Binary files /dev/null and b/LaiPuLaser/res/nav_large_hc.bmp differ diff --git a/LaiPuLaser/res/output_wnd.ico b/LaiPuLaser/res/output_wnd.ico new file mode 100644 index 0000000..d14f991 Binary files /dev/null and b/LaiPuLaser/res/output_wnd.ico differ diff --git a/LaiPuLaser/res/output_wnd_hc.ico b/LaiPuLaser/res/output_wnd_hc.ico new file mode 100644 index 0000000..fdd27e8 Binary files /dev/null and b/LaiPuLaser/res/output_wnd_hc.ico differ diff --git a/LaiPuLaser/res/pages.bmp b/LaiPuLaser/res/pages.bmp new file mode 100644 index 0000000..28c7202 Binary files /dev/null and b/LaiPuLaser/res/pages.bmp differ diff --git a/LaiPuLaser/res/pages_hc.bmp b/LaiPuLaser/res/pages_hc.bmp new file mode 100644 index 0000000..d5850bc Binary files /dev/null and b/LaiPuLaser/res/pages_hc.bmp differ diff --git a/LaiPuLaser/res/pages_small.bmp b/LaiPuLaser/res/pages_small.bmp new file mode 100644 index 0000000..f48e621 Binary files /dev/null and b/LaiPuLaser/res/pages_small.bmp differ diff --git a/LaiPuLaser/res/pages_small_hc.bmp b/LaiPuLaser/res/pages_small_hc.bmp new file mode 100644 index 0000000..b6fd7c2 Binary files /dev/null and b/LaiPuLaser/res/pages_small_hc.bmp differ diff --git a/LaiPuLaser/res/properties.bmp b/LaiPuLaser/res/properties.bmp new file mode 100644 index 0000000..9906cc8 Binary files /dev/null and b/LaiPuLaser/res/properties.bmp differ diff --git a/LaiPuLaser/res/properties_hc.bmp b/LaiPuLaser/res/properties_hc.bmp new file mode 100644 index 0000000..6e90ff4 Binary files /dev/null and b/LaiPuLaser/res/properties_hc.bmp differ diff --git a/LaiPuLaser/res/properties_wnd.ico b/LaiPuLaser/res/properties_wnd.ico new file mode 100644 index 0000000..3611766 Binary files /dev/null and b/LaiPuLaser/res/properties_wnd.ico differ diff --git a/LaiPuLaser/res/properties_wnd_hc.ico b/LaiPuLaser/res/properties_wnd_hc.ico new file mode 100644 index 0000000..1e06b64 Binary files /dev/null and b/LaiPuLaser/res/properties_wnd_hc.ico differ diff --git a/LaiPuLaser/res/red.bmp b/LaiPuLaser/res/red.bmp new file mode 100644 index 0000000..ed07ddf Binary files /dev/null and b/LaiPuLaser/res/red.bmp differ diff --git a/LaiPuLaser/res/toolbar1.bmp b/LaiPuLaser/res/toolbar1.bmp new file mode 100644 index 0000000..6a12354 Binary files /dev/null and b/LaiPuLaser/res/toolbar1.bmp differ diff --git a/LaiPuLaser/res/yellow.bmp b/LaiPuLaser/res/yellow.bmp new file mode 100644 index 0000000..8ba08b5 Binary files /dev/null and b/LaiPuLaser/res/yellow.bmp differ diff --git a/LaiPuLaser/res/zoom1.cur b/LaiPuLaser/res/zoom1.cur new file mode 100644 index 0000000..a6acd8f Binary files /dev/null and b/LaiPuLaser/res/zoom1.cur differ diff --git a/LaiPuLaser/res/zoom2.cur b/LaiPuLaser/res/zoom2.cur new file mode 100644 index 0000000..ed4a478 Binary files /dev/null and b/LaiPuLaser/res/zoom2.cur differ diff --git a/LaiPuLaser/resource.h b/LaiPuLaser/resource.h new file mode 100644 index 0000000..eb653ad Binary files /dev/null and b/LaiPuLaser/resource.h differ diff --git a/LaiPuLaser/stdafx.cpp b/LaiPuLaser/stdafx.cpp new file mode 100644 index 0000000..6698e41 --- /dev/null +++ b/LaiPuLaser/stdafx.cpp @@ -0,0 +1,9 @@ + +// stdafx.cpp : ֻ׼ļԴļ +// LaiPuLaser.pch ΪԤͷ +// stdafx.obj ԤϢ + +#include "stdafx.h" + +bool gExitApp = false;//Ƿ˳ + diff --git a/LaiPuLaser/stdafx.h b/LaiPuLaser/stdafx.h new file mode 100644 index 0000000..3c5f8b4 --- /dev/null +++ b/LaiPuLaser/stdafx.h @@ -0,0 +1,90 @@ + +// stdafx.h : ׼ϵͳļİļ +// Ǿʹõĵ +// ضĿİļ + +#pragma once + +#ifdef _DEBUG +//#include +#endif + +#pragma warning(disable:4477) + +#ifndef _SECURE_ATL +#define _SECURE_ATL 1 +#endif + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // Windows ͷųʹõ +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // ijЩ CString 캯ʽ + +// ر MFC ijЩɷĺԵľϢ +#define _AFX_ALL_WARNINGS + +#include // MFC ͱ׼ +#include // MFC չ +#include // MFC Զ + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC Internet Explorer 4 ؼ֧ +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC Windows ؼ֧ +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // Ϳؼ MFC ֧ +#include // MFC ׽չ +#include "resource.h" +#include "EncryptionMgr.h" + +//#define __PROGRAM_SHILAN_TUIHUO__ //ʿ˻ +//#define __PROGRAM_GUIYANG_ZIWAI__ //и + +//һЩƵĿ +//#define __DLG_PANE_OBJ_LIST__ //б +//#define __DLG_PANE_WORK_TIME__//ʱ +//#define __DLG_PANE_SIMULATE_TRACE__//켣ģ +//#define __DLG_PANE_STD_MARK_CTRL__//׼̿ +//#define __DLG_PANE_CMD__// +#define __DLG_PANE_MARK_PAR__//񾵲 +//#define __DLG_PANE_VAR_STRING__//ַ +//#define __CAPTION_BAR__ // +#define __DLG_PANE_PLATFORM__//ƽ̨ +#define __DLG_PANE_TEST__//Դ +//#define __TBAR_CODE__//tbarcode άؼ(ҪʹҪtest dlg tbarcode5 ؼ) + + +#define __LPS_IS3000__ //ɽLPS IS 3000 +#define __RUN_AT_DEVICE__ //豸 + + +#define __FINGER_PRINT_CUT__ //ָоƬи + +#define __HAWKVIS_MINDVISION_CCD__ //ʹmindvision +//#define __READ_LASER_DEVICE_INFO__ //ǷʵʱȡϢ +#define __USE_SUPER_DOG__ //Ƿʹ ܹ +//#define __PROGRESS_DLG__ //ǷʾԻ +#define __CUSTOM_SW_XL__ //ͻ:β + +//#define USE_Virtual_CCD_DATA //ʹ(Զ)CCD +#define _USE_LAIPU_SUPERDOG //ʹռܹ +//#define Create_MarkPos_MarkData //ÿļӹλıļһĴӡıļ + +extern bool gExitApp; + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/LaiPuLaser/targetver.h b/LaiPuLaser/targetver.h new file mode 100644 index 0000000..0afac5b --- /dev/null +++ b/LaiPuLaser/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// SDKDDKVer.h ߰汾Ŀ Windows ƽ̨ + +// ҪΪǰ Windows ƽ̨Ӧó WinSDKVer.h +// WIN32_WINNT ΪҪֵ֧ƽ̨Ȼٰ SDKDDKVer.h + +#include diff --git a/LaiPuLaser/tbarcode51.cpp b/LaiPuLaser/tbarcode51.cpp new file mode 100644 index 0000000..357acd5 --- /dev/null +++ b/LaiPuLaser/tbarcode51.cpp @@ -0,0 +1,19 @@ +// Microsoft Visual C++ IDispatch װ + +// ע: Ҫ޸Ĵļݡ +// Microsoft Visual C++ ɣ޸Ľǡ + + +#include "stdafx.h" +#include "tbarcode51.h" + +///////////////////////////////////////////////////////////////////////////// +// CTbarcode51 + +IMPLEMENT_DYNCREATE(CTbarcode51, CWnd) + +///////////////////////////////////////////////////////////////////////////// +// CTbarcode51 + +///////////////////////////////////////////////////////////////////////////// +// CTbarcode51 diff --git a/LaiPuLaser/tbarcode51.h b/LaiPuLaser/tbarcode51.h new file mode 100644 index 0000000..45f65ca --- /dev/null +++ b/LaiPuLaser/tbarcode51.h @@ -0,0 +1,1367 @@ +#pragma once + +// Microsoft Visual C++ IDispatch װ + +// ע: Ҫ޸Ĵļݡ +// Microsoft Visual C++ ɣ޸Ľǡ + +///////////////////////////////////////////////////////////////////////////// +// CTbarcode51 װ + +class CTbarcode51 : public CWnd +{ +protected: + DECLARE_DYNCREATE(CTbarcode51) +public: + CLSID const& GetClsid() + { + static CLSID const clsid + = { 0x10ED9AE3, 0xDA1A, 0x461C, { 0x82, 0x6A, 0xCD, 0x9C, 0x85, 0xC, 0x58, 0xE2 } }; + return clsid; + } + virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, + const RECT& rect, CWnd* pParentWnd, UINT nID, + CCreateContext* pContext = NULL) + { + return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); + } + + BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, + UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE, + BSTR bstrLicKey = NULL) + { + return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID, + pPersist, bStorage, bstrLicKey); + } + +// +public: +enum +{ + BKS_Transparent = 0, + BKS_Opaque = 1 +}tagBKStyle; +enum +{ + eDST_Ok = 0, + eDST_Cancel = 1, + eDST_Retry = 2 +}tag_DrawStatus; +enum +{ + eInt_Default = 0, + eInt_ANSI = 1, + eInt_ByteStream = 2, + eInt_BYTE_HILO = 3, + eInt_Korean = 4, + eInt_Japanese_Shift_JIS = 5, + eInt_Simplified_Chinese = 6, + eInt_Trad_Chinese_Big5 = 7 +}tag_Interpretation; +enum +{ + eBC_None = 0, + eBC_Code11 = 1, + eBC_2OF5 = 2, + eBC_2OF5IL = 3, + eBC_2OF5IATA = 4, + eBC_2OF5M = 5, + eBC_2OF5DL = 6, + eBC_2OF5IND = 7, + eBC_3OF9 = 8, + eBC_3OF9A = 9, + eBC_EAN8 = 10, + eBC_EAN8P2 = 11, + eBC_EAN8P5 = 12, + eBC_EAN13 = 13, + eBC_EAN13P2 = 14, + eBC_EAN13P5 = 15, + eBC_EAN128 = 16, + eBC_UPC12 = 17, + eBC_CodaBar2 = 18, + eBC_CodaBar18 = 19, + eBC_Code128 = 20, + eBC_DPLeit = 21, + eBC_DPIdent = 22, + eBC_Code16K = 23, + eBC_49 = 24, + eBC_9OF3 = 25, + eBC_UPC25 = 26, + eBC_UPCD1 = 27, + eBC_Flattermarken = 28, + eBC_RSS14 = 29, + eBC_RSSLtd = 30, + eBC_RSSExp = 31, + eBC_UPCSCC = 32, + eBC_UCC128 = 33, + eBC_UPCA = 34, + eBC_UPCAP2 = 35, + eBC_UPCAP5 = 36, + eBC_UPCE = 37, + eBC_UPCEP2 = 38, + eBC_UPCEP5 = 39, + eBC_PostNet5 = 40, + eBC_PostNet6 = 41, + eBC_PostNet8 = 42, + eBC_PostNet10 = 43, + eBC_PostNet11 = 44, + eBC_PostNet12 = 45, + eBC_Plessey = 46, + eBC_MSI = 47, + eBC_SSCC18 = 48, + eBC_FIM = 49, + eBC_LOGMARS = 50, + eBC_Pharma1 = 51, + eBC_PZN = 52, + eBC_Pharma2 = 53, + eBC_GP = 54, + eBC_PDF417 = 55, + eBC_PDF417Trunc = 56, + eBC_MAXICODE = 57, + eBC_QRCode = 58, + eBC_Code128A = 59, + eBC_Code128B = 60, + eBC_Code128C = 61, + eBC_9OF3A = 62, + eBC_AusPostCustom = 63, + eBC_AusPostCustom2 = 64, + eBC_AusPostCustom3 = 65, + eBC_AusPostReplyPaid = 66, + eBC_AusPostRouting = 67, + eBC_AusPostRedirect = 68, + eBC_ISBN = 69, + eBC_RM4SCC = 70, + eBC_DataMatrix = 71, + eBC_EAN14 = 72, + eBC_CODABLOCK_E = 73, + eBC_CODABLOCK_F = 74, + eBC_NVE18 = 75 +}tag_BarCType; +enum +{ + eCDNone = 0, + eCDStandard = 1, + eCDMod10 = 2, + eCDMod43 = 3, + eCD2Mod47 = 4, + eCDDPLeit = 5, + eCDDPIdent = 6, + eCD1Code11 = 7, + eCD2Code11 = 8, + eCDPostnet = 9, + eCDMSI1 = 10, + eCDMSI2 = 11, + eCDPlessey = 12, + eCDEAN8 = 13, + eCDEAN13 = 14, + eCDUPCA = 15, + eCDUPCE = 16, + eCDEAN128 = 17, + eCDCode128 = 18, + eCDRM4SCC = 19, + eCDPZN = 20, + eCDMod11W7 = 21, + eCDEAN14 = 22 +}tag_CDMethod; +enum +{ + deg0 = 0, + deg90 = 1, + deg180 = 2, + deg270 = 3 +}tag_Degree; +enum +{ + eMUDefault = 0, + eMUPixel = 1, + eMUMM = 2 +}tag_MUnit; +enum +{ + eQZMUNone = 0, + eQZMUModules = 1, + eQZMUMM = 2, + eQZMUMils = 3, + eQZMUPixel = 4 +}tag_QZMUnit; +enum +{ + eIMBmp = 0, + eIMEmf = 1, + eIMEps = 2, + eIMGif = 3, + eIMJpg = 4, + eIMPcx = 5, + eIMPng = 6, + eIMTif = 7, + eIMPsVector = 8 +}tag_ImageType; +enum +{ + eAlDefault = 0, + eAlLeft = 1, + eAlRight = 2, + eAlCenter = 3 +}tag_Align; +enum +{ + eLicInvalid = -1, + eLicProd1D = 13, + eLicProd2D = 14 +}tag_licProduct; +enum +{ + eLicKindSingle = 1, + eLicKindSite = 2, + eLicKindDeveloper = 3 +}tag_licKind; +enum +{ + eDMSz_Default = 0, + eDMSz_10x10 = 1, + eDMSz_12x12 = 2, + eDMSz_14x14 = 3, + eDMSz_16x16 = 4, + eDMSz_18x18 = 5, + eDMSz_20x20 = 6, + eDMSz_22x22 = 7, + eDMSz_24x24 = 8, + eDMSz_26x26 = 9, + eDMSz_32x32 = 10, + eDMSz_36x36 = 11, + eDMSz_40x40 = 12, + eDMSz_44x44 = 13, + eDMSz_48x48 = 14, + eDMSz_52x52 = 15, + eDMSz_64x64 = 16, + eDMSz_72x72 = 17, + eDMSz_80x80 = 18, + eDMSz_88x88 = 19, + eDMSz_96x96 = 20, + eDMSz_104x104 = 21, + eDMSz_120x120 = 22, + eDMSz_132x132 = 23, + eDMSz_144x144 = 24, + eDMSz_8x18 = 25, + eDMSz_8x32 = 26, + eDMSz_12x26 = 27, + eDMSz_12x36 = 28, + eDMSz_16x36 = 29, + eDMSz_16x48 = 30 +}tagE_DMSizes; +enum +{ + eDMPr_Default = 0, + eDMPr_UCCEAN = 1, + eDMPr_Industry = 2, + eDMPr_Macro05 = 3, + eDMPr_Macro06 = 4 +}tagE_DMFormat; +enum +{ + eQRVers_Default = 0, + eQRVers_1 = 1, + eQRVers_2 = 2, + eQRVers_3 = 3, + eQRVers_4 = 4, + eQRVers_5 = 5, + eQRVers_6 = 6, + eQRVers_7 = 7, + eQRVers_8 = 8, + eQRVers_9 = 9, + eQRVers_10 = 10, + eQRVers_11 = 11, + eQRVers_12 = 12, + eQRVers_13 = 13, + eQRVers_14 = 14, + eQRVers_15 = 15, + eQRVers_16 = 16, + eQRVers_17 = 17, + eQRVers_18 = 18, + eQRVers_19 = 19, + eQRVers_20 = 20, + eQRVers_21 = 21, + eQRVers_22 = 22, + eQRVers_23 = 23, + eQRVers_24 = 24, + eQRVers_25 = 25, + eQRVers_26 = 26, + eQRVers_27 = 27, + eQRVers_28 = 28, + eQRVers_29 = 29, + eQRVers_30 = 30, + eQRVers_31 = 31, + eQRVers_32 = 32, + eQRVers_33 = 33, + eQRVers_34 = 34, + eQRVers_35 = 35, + eQRVers_36 = 36, + eQRVers_37 = 37, + eQRVers_38 = 38, + eQRVers_39 = 39, + eQRVers_40 = 40 +}tagE_QRVersion; +enum +{ + eQRPr_Default = 0, + eQRPr_UCCEAN = 1, + eQRPr_Industry = 2 +}tagE_QRFormat; +enum +{ + eQREC_Low = 0, + eQREC_Medium = 1, + eQREC_Quartil = 2, + eQREC_High = 3 +}tagE_QRECLevel; +enum +{ + eQRMsk_Default = -1, + eQRMsk_0 = 0, + eQRMsk_1 = 1, + eQRMsk_2 = 2, + eQRMsk_3 = 3, + eQRMsk_4 = 4, + eQRMsk_5 = 5, + eQRMsk_6 = 6, + eQRMsk_7 = 7 +}tagE_QRMask; +enum +{ + eCBFPr_Default = 0, + eCBFPr_UCCEAN = 1 +}tagE_CBFFormat; + + +// +public: + +// _ITBarCode + +// Functions +// + + void put_BackColor(unsigned long newValue) + { + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(DISPID_BACKCOLOR, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + void put_BackStyle(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(DISPID_BACKSTYLE, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + void putref_Font(LPDISPATCH newValue) + { + static BYTE parms[] = VTS_DISPATCH ; + InvokeHelper(DISPID_FONT, DISPATCH_PROPERTYPUTREF, VT_EMPTY, NULL, parms, newValue); + } + void put_Font(LPDISPATCH newValue) + { + static BYTE parms[] = VTS_DISPATCH ; + InvokeHelper(DISPID_FONT, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + void put_ForeColor(unsigned long newValue) + { + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(DISPID_FORECOLOR, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + void put_Enabled(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(DISPID_ENABLED, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + void put_Text(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(DISPID_TEXT, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + unsigned long get_BackColor() + { + unsigned long result; + InvokeHelper(DISPID_BACKCOLOR, DISPATCH_PROPERTYGET, VT_UI4, (void*)&result, NULL); + return result; + } + long get_BackStyle() + { + long result; + InvokeHelper(DISPID_BACKSTYLE, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + LPDISPATCH get_Font() + { + LPDISPATCH result; + InvokeHelper(DISPID_FONT, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL); + return result; + } + unsigned long get_ForeColor() + { + unsigned long result; + InvokeHelper(DISPID_FORECOLOR, DISPATCH_PROPERTYGET, VT_UI4, (void*)&result, NULL); + return result; + } + BOOL get_Enabled() + { + BOOL result; + InvokeHelper(DISPID_ENABLED, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + long get_Window() + { + long result; + InvokeHelper(DISPID_HWND, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + CString get_Text() + { + CString result; + InvokeHelper(DISPID_TEXT, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void AboutBox() + { + InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void Refresh() + { + InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void BCDraw(long hDC, long nLeft, long nTop, long nWidth, long nHeight) + { + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x10, DISPATCH_METHOD, VT_EMPTY, NULL, parms, hDC, nLeft, nTop, nWidth, nHeight); + } + void LicenseMe(LPCTSTR sLicensee, long eKind, long nLicenses, LPCTSTR sLicenseKey, long eProductID) + { + static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_BSTR VTS_I4 ; + InvokeHelper(0x11, DISPATCH_METHOD, VT_EMPTY, NULL, parms, sLicensee, eKind, nLicenses, sLicenseKey, eProductID); + } + void CopyToClipboard() + { + InvokeHelper(0x12, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + void CopyToClipboardEx(long hDC, long nWidth, long nHeight, LPCTSTR sFileName) + { + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_BSTR ; + InvokeHelper(0x33, DISPATCH_METHOD, VT_EMPTY, NULL, parms, hDC, nWidth, nHeight, sFileName); + } + void SaveImage(LPCTSTR sFileName, long eImageType, long nXSize, long nYSize, long nXRes, long nYRes) + { + static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms, sFileName, eImageType, nXSize, nYSize, nXRes, nYRes); + } + void SaveImageEx(long hDC, LPCTSTR sFileName, long eImageType, long nQuality, long nXSize, long nYSize, long nXRes, long nYRes) + { + static BYTE parms[] = VTS_I4 VTS_BSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x31, DISPATCH_METHOD, VT_EMPTY, NULL, parms, hDC, sFileName, eImageType, nQuality, nXSize, nYSize, nXRes, nYRes); + } + void Licencing() + { + InvokeHelper(0x1d, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + VARIANT ConvertToStream(long eImageType, long nXSize, long nYSize, long nXRes, long nYRes) + { + VARIANT result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x27, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms, eImageType, nXSize, nYSize, nXRes, nYRes); + return result; + } + VARIANT ConvertToStreamEx(long hDC, long eImageType, long nQuality, long nXSize, long nYSize, long nXRes, long nYRes) + { + VARIANT result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x32, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms, hDC, eImageType, nQuality, nXSize, nYSize, nXRes, nYRes); + return result; + } + long get_BarCode() + { + long result; + InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_BarCode(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CDMethod() + { + long result; + InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CDMethod(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x2, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CountCheckDigits() + { + long result; + InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CountCheckDigits(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_EscapeSequences() + { + BOOL result; + InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_EscapeSequences(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_Format() + { + CString result; + InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_Format(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_GuardWidth() + { + long result; + InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_GuardWidth(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_LastError() + { + CString result; + InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_LastError(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_LastErrorNo() + { + long result; + InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_LastErrorNo(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_ModulWidth() + { + CString result; + InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_ModulWidth(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_Orientation() + { + long result; + InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_Orientation(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_PrintDataText() + { + BOOL result; + InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_PrintDataText(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_PrintTextAbove() + { + BOOL result; + InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_PrintTextAbove(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_Ratio() + { + CString result; + InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_Ratio(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_RatioHint() + { + CString result; + InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_RatioHint(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + unsigned long get_TextColor() + { + unsigned long result; + InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_UI4, (void*)&result, NULL); + return result; + } + void put_TextColor(unsigned long newValue) + { + static BYTE parms[] = VTS_UI4 ; + InvokeHelper(0xf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_Columns() + { + long result; + InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_Columns(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x15, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_Rows() + { + long result; + InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_Rows(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_ECLevel() + { + long result; + InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_ECLevel(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x16, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_RowHeight() + { + long result; + InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_RowHeight(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_MustFit() + { + BOOL result; + InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_MustFit(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_TextDistance() + { + long result; + InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_TextDistance(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_NotchHeight() + { + long result; + InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_NotchHeight(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x1a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_RatioDefault() + { + CString result; + InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_RatioDefault(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x1b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_CheckDigits() + { + CString result; + InvokeHelper(0x1c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_CheckDigits(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x1c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_MAXI_Mode() + { + long result; + InvokeHelper(0x1e, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_MAXI_Mode(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x1e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_MAXI_AppendIndex() + { + long result; + InvokeHelper(0x1f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_MAXI_AppendIndex(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x1f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_MAXI_AppendCount() + { + long result; + InvokeHelper(0x20, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_MAXI_AppendCount(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x20, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_MAXI_Undercut() + { + long result; + InvokeHelper(0x21, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_MAXI_Undercut(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x21, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + double get_CountModules() + { + double result; + InvokeHelper(0x28, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL); + return result; + } + void put_CountModules(double newValue) + { + static BYTE parms[] = VTS_R8 ; + InvokeHelper(0x28, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + double get_BCWidthAct(long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x29, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, eUnit); + return result; + } + double get_BCHeightAct(long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x2a, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, eUnit); + return result; + } + double get_ModWidthAct(long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x2b, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, eUnit); + return result; + } + double get_BCWidthHdc(long hDC, long nWidth, long nHeight, long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x2c, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, hDC, nWidth, nHeight, eUnit); + return result; + } + double get_BCHeightHdc(long hDC, long nWidth, long nHeight, long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x2d, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, hDC, nWidth, nHeight, eUnit); + return result; + } + double get_ModWidthHdc(long hDC, long nWidth, long nHeight, long eUnit) + { + double result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x2e, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, parms, hDC, nWidth, nHeight, eUnit); + return result; + } + BOOL get_MAXI_Preamble() + { + BOOL result; + InvokeHelper(0x22, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_MAXI_Preamble(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x22, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_MAXI_PostalCode() + { + CString result; + InvokeHelper(0x23, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_MAXI_PostalCode(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x23, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_MAXI_CountryCode() + { + CString result; + InvokeHelper(0x24, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_MAXI_CountryCode(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x24, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_MAXI_ServiceClass() + { + CString result; + InvokeHelper(0x25, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_MAXI_ServiceClass(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x25, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_MAXI_Date() + { + CString result; + InvokeHelper(0x26, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_MAXI_Date(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x26, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DrawStatus() + { + long result; + InvokeHelper(0x2f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DrawStatus(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x2f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_SuppressErrorMsg() + { + BOOL result; + InvokeHelper(0x30, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_SuppressErrorMsg(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x30, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + double get_CountRows() + { + double result; + InvokeHelper(0x50, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL); + return result; + } + void put_CountRows(double newValue) + { + static BYTE parms[] = VTS_R8 ; + InvokeHelper(0x50, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DM_Size() + { + long result; + InvokeHelper(0x51, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DM_Size(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x51, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_DM_Rectangular() + { + BOOL result; + InvokeHelper(0x52, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_DM_Rectangular(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x52, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DM_Format() + { + long result; + InvokeHelper(0x53, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DM_Format(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x53, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DM_AppendIndex() + { + long result; + InvokeHelper(0x54, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DM_AppendIndex(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x54, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DM_AppendCount() + { + long result; + InvokeHelper(0x55, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DM_AppendCount(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x55, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_DM_AppendFileID() + { + long result; + InvokeHelper(0x56, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_DM_AppendFileID(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x56, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_SegmentIndex() + { + long result; + InvokeHelper(0x57, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_SegmentIndex(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x57, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_PDF417_FileID() + { + CString result; + InvokeHelper(0x58, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_PDF417_FileID(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x58, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_PDF417_LastSegment() + { + BOOL result; + InvokeHelper(0x59, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_PDF417_LastSegment(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x59, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_PDF417_FileName() + { + CString result; + InvokeHelper(0x5a, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_PDF417_FileName(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_SegmentCount() + { + long result; + InvokeHelper(0x5b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_SegmentCount(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x5b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_TimeStamp() + { + long result; + InvokeHelper(0x5c, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_TimeStamp(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x5c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_PDF417_Sender() + { + CString result; + InvokeHelper(0x5d, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_PDF417_Sender(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_PDF417_Addressee() + { + CString result; + InvokeHelper(0x5e, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_PDF417_Addressee(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x5e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_FileSize() + { + long result; + InvokeHelper(0x5f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_FileSize(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x5f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_PDF417_CheckSum() + { + long result; + InvokeHelper(0x60, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_PDF417_CheckSum(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x60, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_Version() + { + long result; + InvokeHelper(0x61, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_Version(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x61, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_Format() + { + long result; + InvokeHelper(0x62, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_Format(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x62, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_ECLevel() + { + long result; + InvokeHelper(0x63, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_ECLevel(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x63, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_Mask() + { + long result; + InvokeHelper(0x65, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_Mask(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x65, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_AppendIndex() + { + long result; + InvokeHelper(0x66, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_AppendIndex(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x66, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QR_AppendCount() + { + long result; + InvokeHelper(0x67, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_QR_AppendCount(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x67, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + short get_QR_AppendParity() + { + short result; + InvokeHelper(0x68, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); + return result; + } + void put_QR_AppendParity(short newValue) + { + static BYTE parms[] = VTS_I2 ; + InvokeHelper(0x68, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_QR_FmtAppIndicator() + { + CString result; + InvokeHelper(0x69, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_QR_FmtAppIndicator(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x69, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + short get_QR_StructAppParity(LPCTSTR sText) + { + short result; + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x6a, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, parms, sText); + return result; + } + CString get_PDF417_RatioRowCol() + { + CString result; + InvokeHelper(0x6b, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_PDF417_RatioRowCol(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x6b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_InterpretInputAs() + { + long result; + InvokeHelper(0x6c, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_InterpretInputAs(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x6c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + BOOL get_OptResolution() + { + BOOL result; + InvokeHelper(0x6d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; + } + void put_OptResolution(BOOL newValue) + { + static BYTE parms[] = VTS_BOOL ; + InvokeHelper(0x6d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_FontName() + { + CString result; + InvokeHelper(0x6e, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_FontName(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x6e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_FontSize() + { + long result; + InvokeHelper(0x6f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_FontSize(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x6f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CBF_Rows() + { + long result; + InvokeHelper(0x70, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CBF_Rows(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x70, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CBF_Columns() + { + long result; + InvokeHelper(0x71, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CBF_Columns(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x71, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CBF_RowHeight() + { + long result; + InvokeHelper(0x72, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CBF_RowHeight(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x72, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CBF_RowSeparatorHeight() + { + long result; + InvokeHelper(0x73, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CBF_RowSeparatorHeight(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x73, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_CBF_Format() + { + long result; + InvokeHelper(0x74, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_CBF_Format(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x74, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + CString get_DisplayText() + { + CString result; + InvokeHelper(0x75, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; + } + void put_DisplayText(LPCTSTR newValue) + { + static BYTE parms[] = VTS_BSTR ; + InvokeHelper(0x75, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_BarWidthReduction() + { + long result; + InvokeHelper(0x76, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_BarWidthReduction(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x76, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_TextAlignment() + { + long result; + InvokeHelper(0x77, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_TextAlignment(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x77, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_Quality() + { + long result; + InvokeHelper(0x78, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; + } + void put_Quality(long newValue) + { + static BYTE parms[] = VTS_I4 ; + InvokeHelper(0x78, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); + } + long get_QualityHdc(long hDC, long nWidth, long nHeight) + { + long result; + static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 ; + InvokeHelper(0x79, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms, hDC, nWidth, nHeight); + return result; + } + void PropertyDialog() + { + InvokeHelper(0x64, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); + } + +// Properties +// + + + +}; diff --git a/LaiPuLaser/temp/1_1方框/ShapeMatch0.dat b/LaiPuLaser/temp/1_1方框/ShapeMatch0.dat new file mode 100644 index 0000000..91594be Binary files /dev/null and b/LaiPuLaser/temp/1_1方框/ShapeMatch0.dat differ diff --git a/LaiPuLaser/temp/1_1方框/ShapeMatch_Mod0.dat b/LaiPuLaser/temp/1_1方框/ShapeMatch_Mod0.dat new file mode 100644 index 0000000..983a95d Binary files /dev/null and b/LaiPuLaser/temp/1_1方框/ShapeMatch_Mod0.dat differ diff --git a/LaiPuLaser/temp/1_1方框/ShapeModelStandardPic0.bmp b/LaiPuLaser/temp/1_1方框/ShapeModelStandardPic0.bmp new file mode 100644 index 0000000..8eb36d2 Binary files /dev/null and b/LaiPuLaser/temp/1_1方框/ShapeModelStandardPic0.bmp differ diff --git a/LaiPuLaser/temp/mark圆大/ShapeMatch0.dat b/LaiPuLaser/temp/mark圆大/ShapeMatch0.dat new file mode 100644 index 0000000..697d77f Binary files /dev/null and b/LaiPuLaser/temp/mark圆大/ShapeMatch0.dat differ diff --git a/LaiPuLaser/temp/mark圆大/ShapeMatch_Mod0.dat b/LaiPuLaser/temp/mark圆大/ShapeMatch_Mod0.dat new file mode 100644 index 0000000..1f88be8 Binary files /dev/null and b/LaiPuLaser/temp/mark圆大/ShapeMatch_Mod0.dat differ diff --git a/LaiPuLaser/temp/mark圆大/ShapeModelStandardPic0.bmp b/LaiPuLaser/temp/mark圆大/ShapeModelStandardPic0.bmp new file mode 100644 index 0000000..c807fe9 Binary files /dev/null and b/LaiPuLaser/temp/mark圆大/ShapeModelStandardPic0.bmp differ diff --git a/LaiPuLaser/vision_data.dat b/LaiPuLaser/vision_data.dat new file mode 100644 index 0000000..3245afd --- /dev/null +++ b/LaiPuLaser/vision_data.dat @@ -0,0 +1,122 @@ +72,72,7.2,7.2 +103.173,-47.445 +110.368,-47.434 +117.607,-47.4367 +124.818,-47.4284 +132.02,-47.4229 +139.245,-47.4367 +146.459,-47.4257 +153.667,-47.4284 +160.864,-47.4395 +168.1,-47.4367 +175.286,-47.4505 +103.168,-40.2615 +110.362,-40.2477 +117.598,-40.2477 +124.818,-40.2477 +132.02,-40.2422 +139.24,-40.256 +146.453,-40.2533 +153.664,-40.256 +160.875,-40.2588 +168.111,-40.2588 +175.306,-40.267 +103.204,-33.0367 +110.401,-33.0229 +117.634,-33.0229 +124.84,-33.0257 +132.034,-33.034 +139.251,-33.0422 +146.459,-33.034 +153.648,-33.0395 +160.867,-33.045 +168.092,-33.0477 +175.284,-33.056 +103.198,-25.834 +110.398,-25.8284 +117.626,-25.8202 +124.834,-25.8257 +132.029,-25.8284 +139.24,-25.8422 +146.445,-25.8367 +153.653,-25.8422 +160.862,-25.8505 +168.084,-25.8422 +175.286,-25.845 +103.193,-18.6367 +110.398,-18.634 +117.623,-18.6284 +124.84,-18.6367 +132.029,-18.6422 +139.251,-18.645 +146.456,-18.6533 +153.653,-18.6477 +160.856,-18.6477 +168.1,-18.6505 +175.286,-18.645 +103.237,-11.4312 +110.431,-11.4284 +117.656,-11.4284 +124.851,-11.4312 +132.042,-11.4422 +139.237,-11.4422 +146.434,-11.4395 +153.634,-11.4395 +160.831,-11.4395 +168.056,-11.4422 +175.248,-11.4422 +103.198,-4.23396 +110.398,-4.23121 +117.637,-4.23672 +124.834,-4.23672 +132.037,-4.24223 +139.237,-4.23396 +146.459,-4.23948 +153.662,-4.24223 +160.873,-4.24223 +168.103,-4.23672 +175.292,-4.23396 +103.204,2.96328 +110.404,2.96052 +117.637,2.96052 +124.837,2.96052 +132.031,2.95777 +139.245,2.96328 +146.451,2.96328 +153.662,2.96328 +160.867,2.95225 +168.089,2.96328 +175.278,2.96328 +103.218,10.1688 +110.415,10.1578 +117.645,10.155 +124.845,10.155 +132.045,10.1523 +139.248,10.1688 +146.459,10.1605 +153.656,10.155 +160.867,10.1605 +168.089,10.1578 +175.281,10.1605 +103.176,17.3688 +110.379,17.355 +117.618,17.366 +124.826,17.3688 +132.029,17.3688 +139.245,17.3771 +146.462,17.3688 +153.664,17.3716 +160.884,17.3798 +168.111,17.3771 +175.309,17.3771 +103.215,24.5412 +110.401,24.533 +117.629,24.5385 +124.837,24.5412 +132.037,24.5385 +139.248,24.5578 +146.456,24.5467 +153.653,24.555 +160.864,24.5605 +168.092,24.5495 +175.286,24.5633 diff --git a/LaiPuLaser/信利合力泰双轨(2019-08-08)V1/Laipu.exe b/LaiPuLaser/信利合力泰双轨(2019-08-08)V1/Laipu.exe new file mode 100644 index 0000000..c7d1629 Binary files /dev/null and b/LaiPuLaser/信利合力泰双轨(2019-08-08)V1/Laipu.exe differ diff --git a/source/SW_XL.IAB b/source/SW_XL.IAB new file mode 100644 index 0000000..20e88f0 Binary files /dev/null and b/source/SW_XL.IAB differ diff --git a/source/SW_XL.IAD b/source/SW_XL.IAD new file mode 100644 index 0000000..ff64390 Binary files /dev/null and b/source/SW_XL.IAD differ diff --git a/source/SW_XL.IMB b/source/SW_XL.IMB new file mode 100644 index 0000000..0ac24ee Binary files /dev/null and b/source/SW_XL.IMB differ diff --git a/source/SW_XL.IMD b/source/SW_XL.IMD new file mode 100644 index 0000000..293e259 Binary files /dev/null and b/source/SW_XL.IMD differ diff --git a/source/SW_XL.PFI b/source/SW_XL.PFI new file mode 100644 index 0000000..d5dcc64 Binary files /dev/null and b/source/SW_XL.PFI differ diff --git a/source/SW_XL.PO b/source/SW_XL.PO new file mode 100644 index 0000000..f7bbcd8 Binary files /dev/null and b/source/SW_XL.PO differ diff --git a/source/SW_XL.PR b/source/SW_XL.PR new file mode 100644 index 0000000..9455ee0 Binary files /dev/null and b/source/SW_XL.PR differ diff --git a/source/SW_XL.PRI b/source/SW_XL.PRI new file mode 100644 index 0000000..1c3db48 Binary files /dev/null and b/source/SW_XL.PRI differ diff --git a/source/SW_XL.PS b/source/SW_XL.PS new file mode 100644 index 0000000..1f4d2ca Binary files /dev/null and b/source/SW_XL.PS differ diff --git a/source/SW_XL.SearchResults b/source/SW_XL.SearchResults new file mode 100644 index 0000000..cd9fb6e --- /dev/null +++ b/source/SW_XL.SearchResults @@ -0,0 +1,192 @@ +---- gAuthorityMgr ƥ (191 in 40 ļ) ---- +ApplicationPriority.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +AuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser):CAuthorityMgr *gAuthorityMgr = new CAuthorityMgr; +AuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +AuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +AuthorityMgr.h (d:\program\sw_xl_auto\laipulaser\laipulaser):extern CAuthorityMgr *gAuthorityMgr; +Camera.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CameraHawkvis.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CameraKeyence.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CommonFlowMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CommonFlowMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CommonFlowMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CommonFlowMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +CommonFlowMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +DlgAuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->Login(m_Name,m_PassWord)) +DlgAuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_CurAuthority = gAuthorityMgr->GetAccountName(gAuthorityMgr->GetCurAuthority()); +DlgAuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_CurUser = gAuthorityMgr->GetCurUserName(); +DlgAuthorityMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->Lock(); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): AUTHORITY_TYPE CurAuthority = gAuthorityMgr->GetCurAuthority(); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_USER)); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_ADMIN)); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_AuthorityComb.InsertString(idx++,gAuthorityMgr->GetAccountName(_FACTORY)); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): AUTHORITY_TYPE CurAuthority = gAuthorityMgr->GetCurAuthority(); +DlgCreatAccount.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->AddAccount(Account); +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgCutDeviceCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +DlgMarkPar.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +DlgMarkPar.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,false)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgPlatformCtrl.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgSW_XL_Flow.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->IsLogin()) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgTest.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) +DlgUserMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->InsertToList(m_UserList); +DlgUserMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->DelUser(m_CurSelIdx); +DlgUserMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +GlobalDrawMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +GratingRuler.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GratingRuler.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GratingRuler.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GratingRuler.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +GratingRuler.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LaiPuLaser.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->SetAuthority(_FACTORY);//²ҪȨ +LaiPuLaser.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->IsAutoFactory()==false) +LaiPuLaser.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): gAuthorityMgr->Lock(); +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +LaiPuLaserView.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +Laser.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LaserDeviceMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LogMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LogMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LogMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LogMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +LogMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +MainFrm.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false) +Mirror.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +ModuleDeviceMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): m_ModuleVec.push_back((CModule*)gAuthorityMgr); +MotionCard_PCI1245.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +MotionCard_PCI1245.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +MotionCard_PCI1245.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Motor.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +ObjComponentMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +OptoWaveLaserMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PciPortMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PlatformXY.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,false)==false) +PlcIOMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PltReader.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +PltReader.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +ProductMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_ADMIN)) +Program_SZ_XL.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false)//ֶҪȨ +SimulateTrace.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +SinglechipCardMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +TemplateMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_USER)) +WorkAreaMgr.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +WorkRecord.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): if(gAuthorityMgr->CheckAuthority(_FACTORY)) +WorkRecord.cpp (d:\program\sw_xl_auto\laipulaser\laipulaser): str += "[û] "+ gAuthorityMgr->GetCurUserName(); diff --git a/source/SW_XL.WK3 b/source/SW_XL.WK3 new file mode 100644 index 0000000..0c4c526 Binary files /dev/null and b/source/SW_XL.WK3 differ diff --git a/发布时加上加密狗!!!!!!!!.txt b/发布时加上加密狗!!!!!!!!.txt new file mode 100644 index 0000000..e69de29 diff --git a/工程更新说明.txt b/工程更新说明.txt new file mode 100644 index 0000000..60e6a7b --- /dev/null +++ b/工程更新说明.txt @@ -0,0 +1,10 @@ +1.ʱμܹ,ʽʱҪ + + +2.ʼʱ12ʵ,ǰ߳. + + +3.ͨSelectDEVByIndexл(20191204) + + +4.ÿӹAreaץλ,. ÿAreaм¼ݵתƫ. diff --git a/软件更新日志.txt b/软件更新日志.txt new file mode 100644 index 0000000..8778191 --- /dev/null +++ b/软件更新日志.txt @@ -0,0 +1,36 @@ +2017-07-21 +ҪʵʱȡϢܻ__READ_LASER_DEVICE_INFO__ +2017-08-19 +޸ռḶ́ڴļʱͰռareaУӹʱֻǼתƫƣƵvectorpush_back߼Ч +2017-09-29 +superdogܹܣCSuperDogMgr +2017-11-07 +ʼʱҪƽ̨ΧOldbUseMoveRange +ܹIJʹùͨKernelMode.dll +2018-04-10 +滻°ocx +2018-04-11 +ֹOnBnClickedPciMark +Ŀ_LASER_SPECTRA_PHYSICS +2018-04-12 +m_HawkvisCtrl->FindShapeModelķؽ +2018-04-20 +ȫʱֱȫѡ,ѡӹȫӹһDlgCutDeviceCtrl::AutoWork() +2018-05-23 +BUGλ4ȫʱ򲻴bug +2018-07-09 +޸˵ƷƫƵļ㷽SetProductCenterPt +2018-08-11 +պͼн̷ֿ +2018-08-15 +bug---ʱɺûӦǰ״̬_ETrack_Step_Unload_End +2018-08-23 +XYԭ㷽ʽлѡm_XYFindOriginByLimit + + + + + + + +